2009-11-13 Jonathan Chambers <joncham@gmail.com>
[mono.git] / mono / mini / ChangeLog
1 2009-11-13 Jonathan Chambers <joncham@gmail.com>
2
3         * debugger-agent.c: Implementation for Windows platform.
4
5         * mini-x86.c: Add support for Windows. Use mono-* synchronization
6         primitives. Use SEH to implement breakpoints and single stepping.
7
8         * mini-x86.h: Enable soft debugger on Windows.
9
10         Code contributed under MIT/X11 license.
11
12 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
13
14         * mini-amd64.c (emit_call_body): Disable usage of near calls when running
15         under XEN. Fixes #522894.
16
17         * patch-info.h: Add LLVM_IMT_TRAMPOLINE.
18
19         * mini-llvm.c aot-compiler.c aot-runtime.c mini.c: Add support for making
20         interface calls in LLVM AOT code.
21
22         * aot-compiler.c mini-llvm.c: Abort llvm compilation if a non-encodable patch
23         is found.
24
25         * mini-llvm.c: Add support for OP_VPHI.
26
27         * objects.cs: Add a test.
28
29 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
30
31         * debugger-agent.c (mono_debugger_agent_single_step_event): Avoid a crash if
32         this is called on the debugger thread.
33
34 2009-11-12  Zoltan Varga  <vargaz@gmail.com>
35
36         * mini-llvm.c: Add soft-float support.
37
38         * method-to-ir.c (mono_decompose_soft_float): Restart after decomposing an
39         FCALL which returns an R4.
40
41         * driver.c (mono_main): Add a missing '\n'.
42
43         * mini-trampolines.c (mono_create_llvm_imt_trampoline): Fix the build on
44         platforms which doesn't support the LLVM IMT trampoline.
45
46 2009-11-11  Zoltan Varga  <vargaz@gmail.com>
47
48         * mini-llvm.c (mono_llvm_emit_method): Fix LOCALLOC.
49
50         * mini-llvm-cpp.cpp: Update to latest LLVM SVN.
51
52         * mini-llvm.c (mono_llvm_emit_method): Avoid creating plt entries for
53         virtual calls.
54
55         * aot-runtime.c: Don't define HAVE_DL_ITERATE_PHDR, configure now does that.
56
57 2009-11-10  Zoltan Varga  <vargaz@gmail.com>
58
59         * aot-compiler.c aot-runtime.c: Change how mono_arch_find_jit_info () works.
60         Instead of emitting a method_order table, sort the contents of the code_offsets
61         table and do a binary search in the sorted table. The previous approach doesn't
62         work with LLVM which emits methods in a arbitrary order.
63
64         * aot-runtime.c: Add support for creating MonoJitInfo structures by searching
65         in the .eh_frame section in ELF files.
66
67         * mini.h: Bump corlib file format version.
68
69         * mini-llvm.c aot-compiler.c: Add support for AOT to the LLVM back end.
70
71         * exceptions-arm.c (mono_arch_get_call_filter_full): Update after the
72         LDMIA->LDM macro name change.
73
74 2009-11-09  Zoltan Varga  <vargaz@gmail.com>
75
76         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Fix and enable this for
77         x86.
78
79         * mini-llvm-cpp.cpp (JITMemoryManager): Fix compilation with LLVM 2.7
80         SVN.
81
82         * aot-compiler.c: Ditto.
83
84         * mini-arm.c (mono_arch_allocate_vars): Fix the previous change by passing
85         &align to mini_type_stack_size_full ().
86
87         * mini-arm.c (mono_arch_emit_prolog): Implement support for varargs.
88
89         * mini-ops.h: Add documentation for the OP_ARGLIST opcode.
90
91 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
92
93         * mini-arm.c: Compute the stack space used by arguments using
94         mini_type_stack_size_full ().
95
96 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
97
98         * optflags-def.h: Remove dead TREEPROP optimization.
99
100 2009-11-08  Rodrigo Kumpera  <rkumpera@novell.com>
101
102         * mini-ppc.h: Make mono compiler under FreeBSD/ppc64. 
103
104         Patch by Justin Hibbits <chmeeedalf@gmail.com>.
105
106 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
107
108         * driver.c (mono_jit_parse_options): New public API function to parse options
109         as done by the runtime executable.
110
111         * debugger-agent.c (buffer_add_cattrs): Fix reading an uninitialized variable
112         when handling named arguments.
113
114 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
115
116         * mini-arm.c: Implement support for returning vtypes in registers, fix support
117         for passing small vtypes in registers, make the CallInfo structures more
118         similar to the code on the other platforms.
119
120         * mini-arm.c (mono_arch_allocate_vars): Align small vtypes to 4 bytes too since
121         the code in the prolog requires it.
122
123 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
124
125         * mini-arm.c debugger-agent.c: Android changes from Koushik K. Dutta
126         (koush@koushikdutta.com).
127
128         * mini-arm.c (handle_thunk): Add a domain argument to control the domain
129         where the thunk memory should be allocated from. Fixes appdomain unloading
130         on arm.
131
132 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
133
134         * mini-arm.c exceptions-arm.c: Make ctx->regs map directly to the 16 hardware
135         registers, instead of r4..r11,ip,lr. Make restore_context () restore r0..r3 too.
136
137 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
138
139         * mini-amd64.c (mono_arch_output_basic_block): Don't allow OP_SEQ_POINT in
140         AOT, as it is not implemented yet.
141
142         * mini-x86.c (mono_arch_output_basic_block): Ditto.
143
144 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
145
146         * debugger-agent.c: Fix windows build.
147
148 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
149
150         * debugger-agent.c (debugger_thread): Call mono_set_is_debugger_attached ()
151         after the client connects/disconnects.
152
153         * debugger-agent.c: Add an 'onthrow' option to start the debugger agent
154         when an exception of a given type is thrown.
155
156         * debugger-agent.c: Add a 'onuncaught' option to start the debugger agent
157         only on an uncaught exception.
158
159         * mini-exceptions.c: Notify the debugger agent on an uncaught exception.
160
161         * debugger-agent.c: Add a 'launch' option.
162
163 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
164
165         * debugger-agent.c: Add a 'timeout' option.
166
167 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
168
169         * debugger-agent.c: Implement the 'server' and 'suspend' options supported by
170         the JDWP agent.
171
172 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
173
174         * debugger-agent.c (set_breakpoint): Emit a log message.
175
176 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
177
178         * mini-arm.c: Fix the arm build.
179
180 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
181
182         * aot-compiler.c: don't leak the value returned from
183         mono_type_full_name().
184
185 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
186
187         * debugger-agent.c: defer including mono-mutex.h until we know the
188         agent is supported.
189
190 2009-11-04 Jonathan Chambers <joncham@gmail.com>
191
192         * debugger-agent.c: Changes to build on windows. Use mono-mutex instead
193         of pthreads directly.
194
195         * mini.c (mono_sigfpe_signal_handler): Changed signature of Windows
196         exception handlers. Pass info argument.
197
198         * mini.h: Adjust signatures of soft debugger functions to pass void*
199         instead of siginfo_t. Adjust SIG_HANDLER_SIGNATURE on Windows.
200
201         * mini-amd64.c (mono_arch_is_single_step_event): Adjust signature to pass void*
202         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
203         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
204         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
205
206         * mini-amd64.h: Adjust MonoW32ExceptionHandler signature.
207
208         * mini-x86.c (mono_arch_is_single_step_event): Adjust signature to pass void*
209         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
210         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
211         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
212
213         * mini-x86.h: Adjust MonoW32ExceptionHandler signature.
214
215         * exceptions-x86.c: Adjust W32_SEH_HANDLE_EX for new signature.
216
217         * exceptions-amd64.c: Adjust W32_SEH_HANDLE_EX for new signature.
218
219         * mono-semaphore.h: Skeleton implementation for Windows.
220
221         Code contributed under MIT/X11 license.
222
223 2009-11-04 Jonathan Chambers <joncham@gmail.com>
224
225         * simd-intrinsics.c (simd_intrinsic_emit_setter): Unfix my fix.
226
227         Code contributed under MIT/X11 license.
228
229 2009-11-04 Jonathan Chambers <joncham@gmail.com>
230
231         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix windows build.
232
233         Code contributed under MIT/X11 license.
234
235 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
236
237         * aot-compiler.c (mono_save_xdebug_info): Bump the threshold for flushing
238         debug info to 100 because 10 still slows down gdb too much.
239
240         * method-to-ir.c (mono_method_to_ir): Avoid rethrowing thread abort exceptions
241         inside runtime invoke wrappers. This avoids the need to call ResetAbort () on
242         them in the wrappers.
243
244 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
245
246         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
247
248         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix a warning.
249
250         * aot-runtime.c (mono_aot_get_method): Refactor some code into a new helper
251         function mono_aot_get_array_helper_from_wrapper ().
252
253         * aot-compiler.c (add_generic_class): Refactor the code a bit, really emit
254         array helper methods.
255
256 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
257
258         * simd-intrinsics.c (load_simd_vreg): Add extra argument to signal if
259         the value was loaded from memory.
260
261         * simd-intrinsics.c (simd_intrinsic_emit_setter): Store back to memory if
262         the value was loader from there.
263
264         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Fail correctly for Shuffle
265         without constant swizzle.
266
267 2009-11-02 Jonathan Chambers <joncham@gmail.com>
268
269         * mini-amd64.c: Put soft debugger functions behind a
270         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
271
272         * mini-amd64.h: disable the soft debugger in windows.
273
274         Code contributed under MIT/X11 license.
275
276 2009-11-02 Jonathan Chambers <joncham@gmail.com>
277
278         * mini-x86.c: Put soft debugger functions behind a
279         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
280
281         Code contributed under MIT/X11 license.
282
283 2009-11-02 Jonathan Chambers <joncham@gmail.com>
284
285         * exceptions-x86.c (win32_handle_stack_overflow): Fix parameters
286         to mono_arch_find_jit_info_ext.
287
288         Code contributed under MIT/X11 license.
289
290 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
291
292         * debugger-agent.c: Include netinet/in.h to fix the bsd build.
293
294         * debugger-agent.c: Add support for filtering events by assemblies.
295
296         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Return false if
297         the agent is not enabled.
298
299 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
300
301         * exceptions-x86.c: hopefully last change to fix the windows build.
302         This one courtesy of Jonathan Chambers.
303
304 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
305
306         * debugger-agent.c: remove unused function.
307
308 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
309
310         * debugger-agent.c: add #ifdefs for a few header files.
311         * mini-x86.h: disable the soft debugger in windows.
312         Step 1 of 2 to make this compile on windows with gcc.
313
314 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
315
316         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Comment this out for now
317         as it breaks the build.
318
319 2009-07-01  Zoltan Varga  <vargaz@gmail.com>
320
321         Merge the soft debugger branch.
322
323         * debugger-agent.h debugger-agent.c: New files containing the soft
324         mode debugger module.
325
326         * method-to-ir.c (mono_method_to_ir): Generate OP_SEQ_POINT opcodes
327         at the appropriate locations.
328
329         * mini-<ARCH>.c (mono_arch_output_basic_block): Handle OP_SEQ_POINT
330         opcode.
331
332         * mini-<ARCH>.c: Add new arch-specific functions to set/clear breakpoints,
333         enable/disable single stepping.
334
335         * exceptions-<ARCH>.c (mono_arch_find_jit_info_ext): New stack unwinding api
336         which returns all information in a StackFrameInfo structure, and can handle the
337         LMF frames added by the debugger.
338
339         * mini-<ARCH>.h (MonoLMFExt): New structure containing additional information
340         about an LMF frame.
341
342         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): New stack
343         walker function which works on a specific thread and passes a StackFrameInfo
344         structure to its callback.
345
346         * mini.c (mini_init): Initialize the debugger agent.
347
348         * aot-compiler.c aot-runtime.c: Add soft-debug support.
349
350         * mini-ops.h: Add OP_SEQ_POINT opcode.
351
352         * driver.c (mono_main): Add new '--debugger-agent' option for passing
353         arguments to the debugger agent.
354
355 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
356
357         * mini.c (mini_method_compile): Disable llvm for methods with an lmf here to
358         speed things up.
359
360         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOCALLOC.
361
362         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Implement this for x86.
363
364         * mini.c (mini_init): Avoid using the IMT trampoline in the LLVM case.
365
366         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add a static rgctx trampoline
367         if needed.
368         (mono_create_llvm_imt_trampoline): New function to create a trampoline which
369         sets the IMT argument and makes a virtual call.
370
371         * mini-llvm.c: Enable interface calls using the llvm imt trampoline.
372
373 2009-11-01  Zoltan Varga  <vargaz@gmail.com>
374
375         * Makefile.am (llvm_sources): Enable the llvm option since it no longer breaks
376         the windows build.
377
378 2009-10-30  Zoltan Varga  <vargaz@gmail.com>
379
380         * mini.c (mini_cleanup): Call profiler shutdown before shutting down the
381         runtime. Fixes #551228.
382
383 2009-10-29  Zoltan Varga  <vargaz@gmail.com>
384
385         * mini-x86.c (mono_arch_output_basic_block): Fix % 1. Fixes #550970.
386
387         * basic.cs: Add a test.
388
389         * method-to-ir.c (mono_method_to_ir): Use EMIT_NEW_LOAD_MEMBASE_TYPE to
390         load vtypes instead if OP_LOADV_MEMBASE in the implementation of
391         CONSTRAINED. Fixes #550964.
392
393         * generics.cs: Add a test.
394
395 2009-10-28  Mark Probst  <mark.probst@gmail.com>
396
397         * mini-posix.c (add_signal_handler): Use
398         mono_gc_get_suspend_signal() instead of GC_get_suspend_signal().
399
400 2009-10-28 Jerry Maine <crashfourit@gmail.com>
401
402         Contributed under the terms of the MIT/X11 license by
403         Jerry Maine <crashfourit@gail.com>.
404
405         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
406         sse4a for simd intrinsics.
407
408         * mini-amd64.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
409         sse4a for simd intrinsics.
410
411 2009-10-27  Zoltan Varga  <vargaz@gmail.com>
412
413         * ir-emit.h method-to-ir.c: Change a few _IMM macros to assign to inst_imm
414         instead of inst_p1 which is not the same on ILP32 platforms.
415
416 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
417
418         * mini-ppc.c (mono_arch_emit_prolog): Load the current got address,
419         not the mscorlib one before calling mono_get_lmf_addr.
420
421         * tramp-ppc.c (mono_arch_create_trampoline_code_full): Fix the storing
422         of the ip to the LMF.
423
424         * method-to-ir.c (mono_method_to_ir): Fix the handling of the
425         immediate in the op->op_imm optimization.
426
427         * mini-ppc.c: Add a 'vtregs' field to ArgInfo to make the code easier to
428         understand. VTypes now work, but are not abi compliant, as they are
429         split into 4 byte parts instead of 8.
430         (emit_memcpy): Fix the unrolled case to work on the PS3.
431
432         * mini-ppc.c (get_delegate_invoke_impl): Fix this for the PS3.
433
434         * aot-compiler.c (mono_compile_assembly): Make the autoreg option
435         the default when static linking.
436
437         * mini-ppc.c (mono_arch_emit_prolog): Fix handling of I8 arguments.
438
439         * aot-compiler.c: Add an autoreg option to automatically register
440         statically linked aot modules using ELF .ctors.
441
442         * genmdesc.pl: Add __ppc64__ to allowed defines.
443
444 2009-10-25  Zoltan Varga  <vargaz@gmail.com>
445
446         * mini-posix.c (add_signal_handler): Delay the GC suspend signal while
447         executing a SIGSEGV handler on an altstack, since libgc can't handle that.
448
449 2009-10-24  Mark Probst  <mark.probst@gmail.com>
450
451         * exceptions-x86.c (mono_arch_find_jit_info): Fix build.
452
453 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
454
455         * mini-exceptions.c (mini_jit_info_table_find): Add an 'out_domain' argument
456         which will contain the domain where the method was found.
457
458         * exceptions-<ARCH>.c mini-exceptions.c: Update callers of
459         mini_jit_info_table_find ().
460
461         * aot-compiler.c (xdebug_end_emit): Remove so stray debug code.
462
463         * branch-opts.c (mono_if_conversion): Avoid running deadce if it is disabled.
464
465 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
466
467         * mini-x86.c (mono_arch_emit_prolog): Disable aot for methods with save_lmf
468         set, its not supported yet.
469
470 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
471
472         * aot-runtime.c (mono_aot_get_method): Avoid asserting if a array generic
473         iface wrapper is not found.
474         (mono_aot_get_method): Ditto for GetGenericValueImpl.
475
476 2009-10-21  Zoltan Varga  <vargaz@gmail.com>
477
478         * aot-runtime.c (mono_aot_get_method): Fix support for the IList<T> wrappers,
479         which have a different name.
480
481         * aot-runtime.c (mono_aot_get_method): Special case the array generic iface
482         wrappers and Array.GetGenericValueImpl ().
483
484         * aot-compiler.c: Avoid emitting some wrappers which are not needed anymore
485         because of the change above.
486
487         * generics.cs: Add a test for full aot + generic array ifaces.
488
489 2009-10-19  Sebastien Pouliot  <sebastien@ximian.com>
490
491         * aot-compiler.c (emit_plt): Remove duplicate 'debug_sym' variable 
492         that hides the previous one.
493
494 2009-10-18  Zoltan Varga  <vargaz@gmail.com>
495
496         * aot-compiler.c (can_marshal_struct): Allow some System.dll structs to be
497         marshalled. Fixes #541623.
498
499 2009-10-16  Zoltan Varga  <vargaz@gmail.com>
500
501         * aot-compiler.c (emit_extra_methods): Remove some asserts which are not needed.
502
503 2009-10-15  Zoltan Varga  <vargaz@gmail.com>
504
505         * mini.c (mono_op_imm_to_op): Handle OP_AND/OR/XOR_IMM.
506
507 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
508
509         * mini-posix.c (sigprof_signal_handler):
510         Implemented support for building stat call chans in different ways.
511
512 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
513
514         * mini-exceptions.c (mono_find_jit_info):
515         Also check that a jit info has been found (fixes a profiler crash).
516
517 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
518
519         * mini.c (mono_codegen):
520         Call mono_profiler_code_buffer_new with correct code address.
521
522 2009-10-14  Zoltan Varga  <vargaz@gmail.com>
523
524         * driver.c (mono_main): Change the date in the copyright.
525
526 2009-10-14  Mark Probst  <mark.probst@gmail.com>
527
528         * method-to-ir.c (mono_method_to_ir): Don't use a managed array
529         allocator in shared generic code for open classes, because we
530         can't get those classes' vtables.  We need to make managed
531         allocators not depend on the vtable at compile-time to solve this.
532
533 2009-10-13  Martin Baulig  <martin@ximian.com>
534
535         * debug-mini.c (mono_debugger_trampoline_compiled): Add
536         `const guint8 *trampoline' argument; send both the old and the new
537         notification.
538
539 2009-09-30  Zoltan Varga  <vargaz@gmail.com>
540
541         * aot-compiler.c (add_wrappers): Add a runtime invoke wrapper which is used by
542         mono_runtime_capture_context () without calling mono_runtime_invoke ().
543         (can_marshal_struct): Skip structures with auto layout.
544
545         * tramp-arm.c (GEN_TRAMP_SIZE): Increase this by 4.
546
547 2009-10-02  Zoltan Varga  <vargaz@gmail.com>
548
549         * mini-sparc.c (mono_arch_emit_setret): Emit long return values using OP_LMOVE.
550         (mono_arch_create_vars): Instead of allocating a stack slot by hand, allocate
551         a variable to hold the stack slot used by the int<->float conversion opcodes.
552
553         * mini-sparc.c (mono_arch_build_imt_thunk): Implement support for fail_tramp.
554
555 2009-10-04  Zoltan Varga  <vargaz@gmail.com>
556
557         * aot-compiler.c (add_generic_class): Only add GetGenericValueImpl wrappers
558         when using full-aot.
559
560 2009-10-06  Zoltan Varga  <vargaz@gmail.com>
561
562         * aot-compiler.c (add_generic_class): Add an instance of GenericComparer<T> for
563         each instance of Comparer<T>.
564
565         * generics.cs: Add a new test.
566
567 2009-10-09  Zoltan Varga  <vargaz@gmail.com>
568
569         * driver.c (parse_debug_options): Add a 'gdb' option.
570
571         * mini.c (mini_parse_debug_options): Add a 'gdb' option.
572
573         * image-writer.c: Add support for emitting the image into a memory buffer.
574
575         * dwarfwriter.c: Add support for sharing one IL file between multiple images.
576
577         * aot-compiler.c: Add support for registering debug info with GDB using the
578         new JIT debugging interface in GDB 7.0. It can be turned on by setting
579         MONO_XDEBUG to 'gdb'.
580
581 2009-10-10  Zoltan Varga  <vargaz@gmail.com>
582
583         * aot-compiler.c (mono_save_trampoline_xdebug_info): Implement this for the
584         gdb mode.
585
586 2009-10-11  Zoltan Varga  <vargaz@gmail.com>
587
588         * aot-compiler.c (mono_save_xdebug_info): Emit a symbol for the method which
589         can be used to set breakpoints in gdb.
590
591         * image-writer.c (bin_writer_emit_writeout): Add support for setting the text
592         segment to an absolute address.
593
594 2009-10-13  Mark Probst  <mark.probst@gmail.com>
595
596         * method-to-ir.c: Use the managed array allocator method if
597         available.
598
599 2009-10-13  Bill Holmes  <billholmes54@gmail.com>
600
601         * aot-compiler.c : Fix the MSVC builds
602
603         Code is contributed under MIT/X11 license.
604
605 2009-10-13  Zoltan Varga  <vargaz@gmail.com>
606
607         * aot-compiler.c (mono_save_xdebug_info): Group methods into groups of 10 to
608         avoid registering 1 symbol file per method with gdb.
609
610 2009-09-29  Zoltan Varga  <vargaz@gmail.com>
611
612         * mini-sparc.c: Fix the handling of enums with base type long.
613
614         * mini-sparc.c (mono_arch_output_basic_block): Fix IREM_UN_IMM.
615
616         * mini-sparc.c (mono_arch_allocate_vars): Use mono_class_from_mono_type ()
617         instead of using type->data.klass as the later doesn't work with generics.
618
619 2009-09-25  Mark Probst  <mark.probst@gmail.com>
620
621         * method-to-ir.c, mini.h, mini-alpha.c, mini-amd64.c, mini-arm.c,
622         mini-hppa.c, mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c,
623         mini-s390x.c, mini-sparc.c, mini-x86.c: Thread.get_CurrentThread
624         works differently now and we don't handle it in the JIT anymore.
625
626         * mini.c, mini-exceptions.c, mini-posix.c, debug-debugger.c,
627         debug-mini.c, tramp-amd64.c, tramp-x86.c: Changes resulting from
628         the Thread class split.
629
630 2009-09-25  Zoltan Varga  <vargaz@gmail.com>
631
632         * driver.c: Don't run tests with the obsolete treeprop optimization.
633
634         * mini-sparc.c (mono_arch_create_vars): Make the component vars of a long ret
635         variable volatile. Fixes #541577.
636
637         * basic-calls.cs: Add a new test.
638
639         * basic-long.cs: Remove tests which are now in basic-calls.cs.
640
641 2009-09-24  Zoltan Varga  <vargaz@gmail.com>
642
643         * dwarfwriter.c (emit_debug_info_end): Disable this as it doesn't seem to
644         work/required with recent iphone sdk versions.
645
646         * aot-compiler.c (add_wrappers): Generate PtrToStructure wrappers for more
647         structures.
648
649         * decompose.c (mono_decompose_vtype_opts): Avoid reading uninitialized memory
650         in the VCALL decomposition code.
651
652 2009-09-22  Zoltan Varga  <vargaz@gmail.com>
653
654         * mini-ia64.c (mono_arch_output_basic_block): Fix ISHR/ISHR_IMM.
655
656         * basic.cs: Add a test.
657
658         * mini-ia64.c (mono_arch_build_imt_thunk): Implement support the virtual
659         generic invokes.
660
661         * mini-exceptions.c (mini_jit_info_table_find): New helper function which
662         searches all the domains of the current thread.
663
664         * exceptions-<ARCH>.c: Use it. Fixes #539394.
665
666 2009-09-21  Zoltan Varga  <vargaz@gmail.com>
667
668         * exceptions-arm.c (mono_arm_throw_exception): Set ctx->ebp to fp instead of sp
669         so catching exceptions thrown in the same method works. Fixes exception17.exe.
670
671         * tramp-arm.c (mono_arch_create_trampoline_code_full): Store NULL into lmf->method
672         for non-jit trampolines.
673
674         * mini.c (mono_jit_runtime_invoke): Allow string ctors with dyn runtime invoke.
675
676         * aot-compiler.c (add_wrappers): Ditto.
677
678         * mini-arm.c: Implement support for passing vtypes and floats, and increase
679         the size of the param area used by dyn_call to 6 which covers the majority of
680         methods.
681
682         * mini.c aot-compiler.c: Allow dyn_call for string methods except ctors.
683
684         * mini-arm.c: Implement support for passing/receiving
685         longs and receiving floats in the dyn_call code.
686
687         * mini-amd64.c: Implement support for receiving vtypes in registers in
688         the dyn_call code.
689
690         * mini.c mini-amd64.c: Implement partial support for passing vtypes in
691         the dyn_call code.
692
693 2009-09-20  Zoltan Varga  <vargaz@gmail.com>
694
695         * mini-arm.c (get_call_info): Return more precise information in
696         ArgInfo->regtype.
697         (dyn_call_supported): Use the information in CallInfo.
698
699         * mini-arm.c: Enable support for returning vtypes in the dyn_call code.
700
701         * mini.c mini-amd64.c: Enable support for returning vtypes in the dyn_call
702         code.
703
704         * mini-arm.c: Update after the dyn_call api changes.
705
706         * mini.c (mini_create_jit_domain_info): Register a destructor function
707         for the runtime_invoke_hash.
708
709         * mini-amd64.c (mono_arch_get_dyn_call_args): Rename this to
710         'mono_arch_dyn_call_start'. Pass the pointer to the return value buffer to
711         this function.
712         (mono_arch_get_dyn_call_ret): Rename this to 'mono_arch_dyn_call_finish'.
713         (dyn_call_supported): Simplify this by using get_call_info ().
714         (mono_arch_dyn_call_free): New destructor function.
715
716         * generics.cs: Remove a printf.
717
718         * method-to-ir.c (mono_method_to_ir): Allocate some param area for DYN_CALL.
719
720         * mini-arm.c: Add support for enum return values and passing a few arguments
721         on the stack.
722         
723         * mini.c (mono_jit_runtime_invoke): Add support for enum return values to
724         dyn invoke.
725
726         * mini-amd64.c (mono_arch_get_dyn_call_ret): Ditto.
727
728         * aot-compiler.c (add_wrappers): Add a few restrictions for the use of
729         the dynamic invoke wrappers.
730
731         * mini-arm.c: Implement OP_DYN_CALL for arm.
732
733         * aot-compiler.c (add_wrappers): Avoid aot-ing runtime invoke wrappers
734         supported by the dynamic runtime invoke wrapper.
735
736         * aot-compiler.c aot-runtime.c: Add support for encoding the dynamic
737         runtime invoke wrapper.
738
739         * mini.c (mono_jit_runtime_invoke): Use the dynamic runtime invoke wrappers
740         if possible when running with full-aot.
741
742         * mini-ops.h: Add OP_DYN_CALL opcode.
743
744         * mini-amd64.c method-to-ir.c: Add infrastructure for making method calls
745         with dynamic arguments lists similar to libffi.
746
747 2009-09-19  Zoltan Varga  <vargaz@gmail.com>
748
749         * method-to-ir.c: Fix the previous change on 64 bit platforms.
750         
751         * method-to-ir.c: Applied patch from Rodrigo Kumpera. Allow an i8 argument
752         to NEWARR.
753
754         * iltests.il.in: Add a new test.
755         
756 2009-09-18  Zoltan Varga  <vargaz@gmail.com>
757
758         * aot-compiler.c (add_generic_instances): Add more instances of
759         GenericEqualityComparer.
760
761 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
762
763         * mini.c: Add asserts for mono_class_vtable calls that are not meant to fail.
764
765 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
766
767         * method-to-ir.c: Handle failures from mono_class_vtable. Added some
768         comments on some functions that now can fail.
769
770 2009-09-17  Andrew Jorgensen  <ajorgensen@novell.com>
771
772         * Makefile.am: Add Info.plist to EXTRA_DIST
773
774 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
775
776         * method-to-ir.c (mono_method_to_ir): Allow AOT for CEE_LDTOKEN in
777         static synchronized wrappers. Fixes #539500.
778
779 2009-09-14  Rodrigo Kumpera  <rkumpera@novell.com>
780
781         * jit-icalls.c (mono_class_static_field_address): handle vtable failure
782         properly.
783
784 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
785
786         * mini-exceptions.c (mono_handle_exception_internal): Store the computed
787         lmf before calling filter clauses as well. Fixes #539550.
788
789         * exceptions.cs: Add a test.
790         
791 2009-09-14  Zoltan Varga  <vargaz@gmail.com>
792
793         * aot-compiler.c (add_generic_class): Add instances of
794         Array.GetGenericValueImpl as well.
795
796         * Makefile.am (fullaotcheck): Copy and aot more assemblies so linq
797         can be tested too.
798
799         * generics.cs: Add a fullaot linq test.
800
801 2009-09-10  Zoltan Varga  <vargaz@gmail.com>
802
803         * aot-compiler.c (arch_emit_static_rgctx_trampoline): Don't clobber argument
804         reg r1 on arm.
805
806 2009-09-10  Bill Holmes  <billholmes54@gmail.com>
807
808         * mini-trampolines.c (mono_delegate_trampoline) : Call
809           mono_cominterop_get_invoke if the delegate target object
810           is a COM object.
811
812         Code is contributed under MIT/X11 license.
813
814 2009-09-09  Sebastien Pouliot  <sebastien@ximian.com>
815
816         * method-to-ir.c: For CoreCLR throw a SecurityException if an 
817         internal call is defined outside platform code. Reduce code 
818         duplication with existing [Method|Field]AccessException
819
820 2009-09-08  Rodrigo Kumpera  <rkumpera@novell.com>
821
822         * mini-x86.c (mono_arch_emit_call): Don't reduce stack usage by 4
823         if the return value is a small struct passed on regs.
824
825 2009-09-09  Zoltan Varga  <vargaz@gmail.com>
826
827         * cpu-arm.md mini-arm.c: Remove unused opcodes.
828
829         * mini-codegen.c: Enable the cpu description validation for arm.
830
831 2009-09-08  Zoltan Varga  <vargaz@gmail.com>
832
833         * basic-calls.cs: Move the test_0_float_load_and_store_with_big_offset ()
834         test which depends on structs to objects.cs.
835         
836         * basic-calls.cs: Remove calls to Console.WriteLine and throws, since those
837         require object model related stuff working.
838
839         * cpu-x86.md mini-x86.c: Remove more unused opcodes.
840
841         * mini-ops.h: Fix OP_BIGMUL instruction descriptions.
842
843         * mini-codegen.c (mono_local_regalloc): Validate the cpu description 
844         against the instruction metadata in mini-ops.h. amd64 only for now.
845
846         * mini-ops.h: Fix some instruction descriptions.
847
848         * mini-ops.h mini-x86.c mini-amd64.c cpu-<ARCH>.md: Remove some
849         unused instructions.
850
851 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
852
853         * exceptions.cs: Add a new test.
854
855 2009-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
856
857         * mini-x86.c (needs_stack_frame): OSX requires full frames to keep proper alignment.
858
859 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
860
861         * mini-llvm.c (mono_llvm_emit_method): Add a few more missing casts,
862         skip empty phi opcodes.
863         
864         * mini-llvm.c (mono_llvm_emit_method): Handle unsigned volatile variables
865         correctly by zero extending after loads. Skip methods containing calls
866         to the monitor enter/exit trampolines.
867
868         * tramp-x86.c (mono_arch_create_trampoline_code): Align the stack
869         when calling mono_thread_force_interruption_checkpoint ().
870
871         * mini.c (mini_method_compile): Disable llvm when AOT compiling.
872
873         * tramp-amd64.c (mono_arch_patch_callsite): Add support for 32 bit ->
874         64 bit thunks.
875         (mono_arch_nullify_class_init_trampoline): Read 'buf' instead of 'code'.
876
877         * mini-llvm.c (mono_llvm_emit_method): Add a few missing conversions so a 
878         bootstrap could run.
879
880 2009-09-04  Zoltan Varga  <vargaz@gmail.com>
881
882         * mini.c (mini_init): Set callbacks.get_runtime_build_info ().
883
884 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
885
886         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass the start
887         of the method to
888         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
889         LLVM might be very short.
890
891         * mini-x86.c (mono_arch_output_basic_block): Maintain stack alignment
892         in OP_THROW/RETHROW.
893
894         * exceptions-x86.c: Rewrite the throw trampolines so they maintain stack
895         alignment on osx.
896
897 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
898
899         * mini-amd64.c (mono_arch_get_vcall_slot): Pass the start of the method to
900         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
901         LLVM might be very short.
902
903 2009-09-01  Zoltan Varga  <vargaz@gmail.com>
904
905         * exceptions-x86.c (throw_exception): Fix the previous change by substracting
906         the alignment for the value of sp.
907
908 2009-09-01  Geoff Norton  <gnorton@novell.com>
909
910         * mini.c (mono_get_lmf_addr): Fix jit_thread_attach for native to 
911         managed wrappers in full aot.
912
913 2009-08-31  Zoltan Varga  <vargaz@gmail.com>
914
915         * exceptions-x86.c (get_throw_exception): Align the stack on osx.
916
917 2009-08-28  Zoltan Varga  <vargaz@gmail.com>
918
919         * mini-llvm-cpp.cpp mini-llvm.c: Update to latest llvm api.
920
921 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
922
923         * aot-compiler.c (emit_exception_debug_info): Emit ei->flags too.
924
925         * aot-runtime.c (decode_exception_debug_info): Decode ei->flags from the
926         saved info.
927
928         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
929
930         * aot-runtime.c aot-compiler.c: Emit exception causes fully so we don't
931         depend on the info MonoMethodHeader which could be missing in IL stripped
932         assemblies.
933
934 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
935
936         * mini-arm.c (add_general): Fix the passing of 64 bit values on darwin, where
937         they are only 4 byte aligned.
938
939 2009-08-21  Zoltan Varga  <vargaz@gmail.com>
940
941         * mini-arm.c (mono_arch_allocate_vars): Use FP as the frame pointer as
942         was done previously, since using SP causes too many problems.
943
944         * exceptions-arm.c: Fix the handling of sp/fp so unwinding through
945         frames without a frame pointer works.
946
947         * mini-arm.c (mono_arch_get_global_int_regs): Avoid using V5 as a
948         global register in methods with calls, since the calls can go through
949         a static rgctx trampoline which doesn't save it.
950
951 2009-08-19  Zoltan Varga  <vargaz@gmail.com>
952
953         * mini-arm.c (mono_arch_context_get_int_reg): Handle SP as well.
954
955 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
956
957         * aot-compiler.c (add_generic_instances): Fix the net 1.1 build.
958
959 2009-08-18  Christian Hergert  <chris@dronelabs.com>
960
961         * method-to-ir.c: Fix warnings for uninitialized variables.
962
963 2009-08-18  Christian Hergert  <chris@dronelabs.com>
964
965         * mini-exceptions.c:
966         * aot-compiler.c: Fix printf warnings.
967
968 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
969
970         * aot-compiler.c (add_generic_instances): Add string[] wrapper methods.
971         Add GetGenericValueImpl<string>.
972         
973         * aot-compiler.c (add_generic_instances): Add instances of
974         GenericEqualityComparer<T> for primitive types. Only emit the array
975         wrappers into the mscorlib image.
976
977 2009-08-15  Zoltan Varga  <vargaz@gmail.com>
978
979         * aot-runtime.c (load_method): Rename 'aot_module' -> 'amodule'. Allocate
980         the methods_loaded array using amodule->info->nmethods.
981
982         * mini.h (MonoAotFileInfo): Add an 'nmethods' field.
983         (MONO_AOT_FILE_VERSION): Bump this.
984
985         * aot-compiler.c: Emit more generic instances allowing some parts of linq
986         to work.
987
988         * aot-runtime.c (mono_aot_get_unwind_info): Handle the case when the
989         MonoJitInfo doesn't belong to its methods aot image.
990
991 2009-08-14  Zoltan Varga  <vargaz@gmail.com>
992
993         * mini-arm.c (mono_arch_allocate_vars): Use SP as the default frame reg.
994
995         * mini-arm.c: Fix warnings.
996         
997         * mini-arm.c (mono_arm_emit_load_imm): Only emit a movt if needed.
998
999         * mini-arm.c (mono_arm_emit_load_imm): Use movt/movw if the cpu
1000         supports it.
1001
1002 2009-08-12  Zoltan Varga  <vargaz@gmail.com>
1003
1004         * aot-compiler.c (arch_emit_imt_thunk): Rework the arm code to
1005         avoid clobbering IP.
1006
1007         * mini-trampolines.c (mono_magic_trampoline): Allocate a local to
1008         hold the trampoline argument, so its initial value is available during
1009         debugging.
1010
1011 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
1012
1013         * exceptions-arm.c:
1014         * exceptions-hppa.c:
1015         * mini.c:
1016         * exceptions-s390x.c:
1017         * exceptions-mips.c:
1018         * exceptions-ppc.c:
1019         * exceptions-sparc.c:
1020         * exceptions-alpha.c:
1021         * aot-runtime.c:
1022         * mini-trampolines.c:
1023         * exceptions-x86.c:
1024         * exceptions-s390.c: add and use #define's instead of sizeof()
1025         for MonoJitInfo and MonoJitInfoTable.
1026
1027 2009-08-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
1028
1029         * tramp-arm.c:
1030         * tramp-amd64.c:
1031         * tramp-ppc.c:
1032         * tramp-x86.c: use a #define instead of sizeof() for a few
1033         structures that use a zero-length array.
1034
1035 2009-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
1036
1037         * method-to-ir.c (mono_method_to_ir/CEE_CONSTRAINED_): Handle the
1038         case when the method is dynamic. Fixes #529238.
1039
1040 2009-08-06  Zoltan Varga  <vargaz@gmail.com>
1041
1042         * mini.c (mono_jit_compile_method_inner): Throw an exception instead
1043         of asserting when a method is JIT compiled in full-aot mode.
1044
1045 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
1046         
1047         Contributed under the terms of the MIT/X11 license by
1048         Jerry Maine <crashfourit@gail.com>.
1049         
1050         * fixed wrong dates in changelog.
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         * basic-simd.cs: added test for packed double square root.
1058         * cpu-amd64.md: added opcode info for packed double square root.
1059         * cpu-x86.md: added opcode info for packed double square root.
1060         * mini-ops.h: added IR opcode for packed double square root.
1061         * mini-x86.c: added IR to native translation code for packed double square root.
1062         * mini-amd64.c: removed todo for packed double square root.
1063         * simd-intrinsics.c: added method to IR opcode converstion for
1064         packed double square root.
1065
1066 2009-08-03 Jerry Maine <crashfourit@gmail.com>
1067
1068         Contributed under the terms of the MIT/X11 license by
1069         Jerry Maine <crashfourit@gail.com>.
1070
1071         * mini-amd64.c: Added a change to help tell the difference as 
1072         to what perpose the xmm register is being used--mainly to help
1073         with debuging.
1074         * mini-amd64.h: Changed callee regs to use 15 out of 16 
1075         (one used for special cases) xmm registers for both fp
1076         and simd ops. Added define to turn on new feature in the regalloc
1077         that allows fp and simd ops to share the xmm regs happily.
1078         * codegen.c: Added code to detect for which perpose an xmm reg is
1079         being used (fp or simd) and to translate back and forth to the
1080         correct logical reg bank (fp or simd) for 'spill load's.
1081
1082 2009-08-03 Jerry Maine <crashfourit@gmail.com>
1083
1084         Contributed under the terms of the MIT/X11 license by
1085         Jerry Maine <crashfourit@gail.com>.
1086
1087         * basic-simd.cs: Added tests for stressing the regalloc when running with
1088         16 simd regs and when simd and fp ops share the same reg bank.
1089
1090 2009-08-01  Mark Probst  <mark.probst@gmail.com>
1091
1092         * method-to-ir.c (mini_emit_stobj): If we call mono_value_copy()
1093         in shared generic code, we might have to look up the class in the
1094         RGCTX.  If we use the class directly, compute its GC descriptor.
1095
1096 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
1097
1098         * mini.c (mono_jit_runtime_invoke): Fix a warning.
1099
1100 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
1101
1102         * mini.c (mono_jit_runtime_invoke): Initialize the class and
1103         check for errors. Fixed the case when the class with the Main
1104         method is broken.
1105
1106 2009-07-31 Jerry Maine <crashfourit@gmail.com>
1107
1108         Contributed under the terms of the MIT/X11 license by
1109         Jerry Maine <crashfourit@gail.com>.
1110
1111         * cpu-amd64.md: Fixed simple bug in machine discrition file.
1112
1113 2009-07-31  Zoltan Varga  <vargaz@gmail.com>
1114
1115         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_IREM_UN_IMM.
1116
1117 2009-08-30  Rodrigo Kumpera  <rkumpera@novell.com>
1118
1119         * method-to-ir.c: Fix naming of stelem and ldelem.
1120
1121 2009-07-30  Zoltan Varga  <vargaz@gmail.com>
1122
1123         * driver.c (main_thread_handler): Check that the assembly loaded
1124         matches the filename when doing AOT.
1125
1126 2009-07-30  Mark Probst  <mark.probst@gmail.com>
1127
1128         * mini.c: get_ip_from_sigctx installer has been removed, so don't
1129         call it anymore.
1130
1131         * mini-x86.h, mini-amd64.h, mini-ppc.h: UCONTEXT macros moved (to
1132         utils/mono-sigcontext.h).
1133
1134         * exceptions-amd64.c: Use the UCONTEXT_GREGS macro instead of an
1135         #ifdef.
1136
1137 2009-07-29  Massimiliano Mantione  <massi@ximian.com>
1138
1139         * mini.c (mono_codegen):
1140         Call profiler hook to keep track of method code buffers.
1141
1142 2009-07-27  Mark Probst  <mark.probst@gmail.com>
1143
1144         * method-to-ir.c: Invoke write barriers for the
1145         Interlocked.(Compare)Exchange JIT intrinsics.
1146
1147 2009-07-26  Raja R Harinath  <harinath@hurrynot.org>
1148
1149         * Makefile.am (version.h): Fix issues when built out of tree.
1150         Remove some redundant 'grep's piped through 'sed's.
1151
1152 Fri Jul 24 17:28:37 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
1153
1154         This patch is contributed under the terms of the MIT/X11 license
1155
1156         * mini-ppc.c (mono_arch_output_basic_block):
1157         (OP_STOREI1_MEMBASE_REG): Handle 32-bit offsets combining addis
1158         for bits 32-47 with signed load/store diplacements for bits
1159         48-63.  Use prefered base/offset order for indexed form.
1160         (OP_STOREI2_MEMBASE_REG, OP_STORE_MEMBASE_REG): Same.
1161         (OP_LOAD_MEMBASE, OP_LOADI4_MEMBASE, OP_LOADU4_MEMBASE,
1162         OP_LOADI1_MEMBASE, OP_LOADU1_MEMBASE, OP_LOADU2_MEMBASE,
1163         OP_LOADI2_MEMBASE): Same.
1164         (OP_STORER8_MEMBASE_REG, OP_LOADR8_MEMBASE,
1165         OP_STORER4_MEMBASE_REG, OP_LOADR4_MEMBASE): Same.
1166         (OP_STOREI1_MEMINDEX): Use prefered base/offset order for
1167         indexed form.
1168         (OP_STOREI2_MEMINDEX, OP_STORE_MEMINDEX): Same.
1169         (OP_LOAD_MEMINDEX, OP_LOADI4_MEMINDEX, OP_LOADU4_MEMINDEX,
1170         OP_LOADU2_MEMINDEX, OP_LOADI2_MEMINDEX, OP_LOADU1_MEMINDEX,
1171         OP_LOADI1_MEMINDEX): Same
1172         (OP_LOADR4_MEMINDEX, OP_LOADR8_MEMINDEX, OP_STORER4_MEMINDEX,
1173         OP_STORER8_MEMINDEX): Same
1174         (OP_JMP): Use addis/addi sequence for int cfg->stack_usage
1175         computations.
1176         (mono_arch_emit_prolog): Handle 32-bit offsets combining addis
1177         for bits 32-47 with signed load/store diplacements for bits
1178         48-63.  Use prefered base/offset order for indexed form.
1179
1180 Fri Jul 24 16:57:12 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
1181
1182 This patch is contributed under the terms of the MIT/X11 license
1183
1184         * mini-ppc.c: Define PPC_MOVE_FPR_GPR and PPC_ISA_64.
1185         (mono_arch_get_vcall_slot): Fx pointer to int cast warning.
1186         (mono_arch_decompose_opts): Make OP_ICONV_TO_R4 and
1187         OP_ICONV_TO_R8 decompose conditional on !PPC_ISA_64.
1188         (mono_arch_output_basic_block) [OP_JMP]: Use ppc_load32 for
1189         cfg->stack_usage to avoid size warnings.
1190         (mono_arch_output_basic_block) [__mono_ppc64__]: Replace
1191         store/load sequence with mffgpr if PPC_MOVE_FPR_GPR is true.
1192         (mono_arch_output_basic_block) [!__mono_ppc64__]: For
1193         OP_ICONV_TO_R4 or OP_ICONV_TO_R8 and PPC_ISA_64 use fcfid
1194         to convert.
1195         (mono_arch_emit_prolog): Move mono_emit_unwind_op_def_cfa 
1196         after code varible is initialized.
1197         Add g_assert ppc_is_imm16 for ainfo->offset. Handle
1198         ainfo->size == 8 when ainfo->offset !ppc_is_imm16.
1199         (mono_arch_emit_epilog): 
1200         Move Use ppc_load32 for cfg->stack_usage to avoid size
1201         warnings.
1202
1203 2009-07-24  Mark Probst  <mark.probst@gmail.com>
1204
1205         * method-to-ir.c: The write barrier doesn't do the store anymore,
1206         so we have always to emit it.  Also, emit the wbarrier after the
1207         store.
1208
1209 2009-07-24  Zoltan Varga  <vargaz@gmail.com>
1210
1211         * mini-arm.c (mono_arch_get_delegate_invoke_impls): Add a trampoline
1212         for argument count 3 too.
1213
1214 2009-07-23  Zoltan Varga  <vargaz@gmail.com>
1215
1216         * mini.c (mono_jit_compile_method_with_opt): Add an 'ex' argument to let
1217         the caller handle the exceptions.
1218         (mono_jit_runtime_invoke): Handle exceptions thrown while compiling the
1219         method. Fixes #524498.
1220
1221 2009-07-22  Geoff Norton  <gnorton@novell.com>
1222
1223         * mini-exceptions.c: Fix build on ia64.
1224
1225 2009-07-22  Mark Probst  <mark.probst@gmail.com>
1226
1227         * mini-exceptions.c (ves_icall_get_frame_info): Use write
1228         barriers.
1229
1230 2009-07-21  Zoltan Varga  <vargaz@gmail.com>
1231
1232         * mini-arm.c (mono_arch_emit_prolog): Fix thread attaching in aot
1233         code.
1234
1235 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
1236
1237         * basic-simd.cs (Main): Pass args to the test driver.
1238
1239 2009-07-20  Geoff Norton  <gnorton@novell.com>
1240
1241         * mini-x86.h: Fix the x86 version guards to use Apple's
1242         properly defined macros.
1243
1244 2009-07-20  Geoff Norton  <gnorton@novell.com>
1245
1246         * mini-x86.c: Fix --trace on darwin-x86 and other systems which require
1247         aligned access.
1248
1249 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
1250
1251         * mini.c (mono_jit_runtime_invoke): Speed this up by adding a hash to
1252         MonoJitDomainInfo which maps MonoMethod's to a structure containing all
1253         the information which is needed for invokes, so only one locking+hash table
1254         lookup is needed.
1255
1256         * aot-compiler.c: Add a 'tool-prefix' option to be used when cross-compiling.
1257         
1258         * aot-compiler.c (add_generic_instances): Emit instances of 
1259         GenericComparer<T> for primitive types.
1260
1261 2009-07-19 Rodrigo Kumpera  <rkumpera@novell.com>
1262
1263         * mini-posix.c: Fix linux build.
1264
1265 2009-07-19  Geoff Norton  <gnorton@novell.com>
1266
1267         * mini.h: Add prototypes for mono_runtime_syscall_fork and
1268         mono_gdb_render_native_backtraces
1269         * mini-darwin.c: Apple's syscall(SYS_fork) is very weird on x86,
1270         so we implement the sane semantics to the runtime here
1271         (mono_gdb_render_native_backtraces).  Apple also uses an ancient gdb
1272         so we need to call it differently (mono_gdb_render_native_backtraces)
1273         * mini-posix.c: Move the old semantics from mini.c to the prototypes
1274         here for default implementations.
1275         * mini.c: Refactor mono_handle_native_sigsegv so that we can properly
1276         support Apple's weird syscall (SYS_fork) implementation and not busy
1277         loop in abort() on native crashes on OSX anymore.
1278
1279 2009-07-18  Zoltan Varga  <vargaz@gmail.com>
1280
1281         * aot-runtime.c (load_method): Change the handling of the
1282         MONO_LASTAOT env variable so MONO_LASTAOT=0 means that no aot methods
1283         are used.
1284
1285         * mini.c (mono_patch_info_equal): Really fix the handling of RGCTX_FETCH.
1286
1287 2009-07-17  Zoltan Varga  <vargaz@gmail.com>
1288
1289         * mini.c (mono_patch_info_equal): Revert the last change for now as it
1290         seems to break the aot tests.
1291         
1292         * mini.c (mono_patch_info_equal): Fix the handling of 
1293         MONO_PATCH_INFO_RGCTX_FETCH.
1294
1295 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
1296
1297         * unwind.c: Use TARGET_AMD64 instead of __x86_64__.
1298
1299         * mini.c (mono_patch_info_hash): Fix the handling of 
1300         MONO_PATCH_INFO_INTERNAL_METHOD.
1301         (mono_patch_info_equal): Ditto.
1302
1303 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
1304
1305         * mini-llvm.c (mono_llvm_emit_method): Use module instead of ctx->module
1306         in a few places.
1307         
1308         * mini-llvm.c: Add some infrastructure for AOT support.
1309
1310 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
1311
1312         * mini-llvm-cpp.c: Update to the latest llvm api.
1313         
1314         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Set the EnablePrettyStackTrace
1315         option to false to prevent llvm from installing signal handlers which
1316         trip up the gc.
1317         
1318 2009-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
1319
1320         * cpu-x86.md:
1321         * cpu-amd64.md: Revert previous change as those instructions
1322         take 2 separate arguments. Remember to read the arch docs more
1323         carefully next time.
1324
1325 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
1326
1327         * mini-llvm-cpp.cpp (mono_llvm_build_alloca): Update to latest llvm api.
1328
1329 Wed Jul 15 17:20:27 CEST 2009 Paolo Molaro <lupus@ximian.com>
1330
1331         * mini-ppc.c: exploit multiple load/store units if available (rest of
1332         the change from Steven Munroe (<munroesj@us.ibm.com>) first patch at 
1333         http://bugzilla.novell.com/show_bug.cgi?id=487846).
1334
1335 Wed Jul 15 16:24:57 CEST 2009 Paolo Molaro <lupus@ximian.com>
1336
1337         * mini-ppc.c: integrate most of Steven Munroe (<munroesj@us.ibm.com>)
1338         first patch at http://bugzilla.novell.com/show_bug.cgi?id=487846.
1339
1340 2009-07-14 Rodrigo Kumpera  <rkumpera@novell.com>
1341
1342         * cpu-x86.md: Fix missing clobbering from trancendental simd
1343         ops.
1344
1345         * cpu-amd64.md: Same.
1346
1347 2009-07-14 Jerry Maine <crashfourit@gmail.com>
1348
1349         Contributed under the terms of the MIT/X11 license by
1350         Jerry Maine <crashfourit@gail.com>.
1351
1352         * basic-simd.cs: Added tests for single and doulble indexers.
1353
1354         * cpu-amd64.md: Added simd opcode information.
1355
1356         * mini-amd64.c: Added IR to native simd generation code.
1357         Added simd register names and function that returns them.
1358
1359         * mini-amd64.h: Added marcos to turn on simd code compilation in
1360         amd64. Added max simd register count marco. Added caller/callee
1361         register mask marcos. Added marcos to use simd register bank.
1362
1363         * mini.h: Added helper marco for shufling dwords and simple
1364         floats.
1365
1366 2009-07-14  Zoltan Varga  <vargaz@gmail.com>
1367
1368         * mini-llvm-cpp.cpp: Update to latest llvm SVN api.
1369
1370         * Makefile.am (mono_LDADD): Pass LLVM_LDFLAGS to the linked.
1371
1372         * unwind.c (mono_unwind_get_ops_from_fde): Make this return
1373         the length of the native code as well.
1374
1375         * basic-simd.cs: Add a test for #521662.
1376
1377 Mon Jul 13 17:58:50 CEST 2009 Paolo Molaro <lupus@ximian.com>
1378
1379         * mini-ppc.c: fixed bug introduced by Steven's TLS changes.
1380
1381 2009-07-13  Mark Probst  <mark.probst@gmail.com>
1382
1383         * mini.c: Register function for getting the IP from a signal
1384         context with metadata.
1385
1386 2009-07-13  Zoltan Varga  <vargaz@gmail.com>
1387
1388         * method-to-ir.c (mono_method_to_ir): When calling a gshared method,
1389         call a generic class init trampoline if needed. Fixes #519336.
1390
1391         * generics.cs: Add a test.
1392         
1393 2009-07-09  Mark Probst  <mark.probst@gmail.com>
1394
1395         * method-to-ir.c: When doing a call which might be remote from
1396         shared generic code to other shared code with open type arguments,
1397         get the remoting invoke wrapper from the RGCTX and do an indirect
1398         call to it.
1399
1400 2009-07-03  Zoltan Varga  <vargaz@gmail.com>
1401
1402         * mini-trampolines.c (get_unbox_trampoline): Add an rgctx trampoline
1403         after the unbox trampoline in the full-aot case.
1404
1405 2009-07-02  jonas echterhoff <jonas@unity3d.com>
1406         
1407         * mini.c: Move initialization of jit_mutex before debugger initialization
1408         
1409         to avoid crashes.
1410         
1411         
1412         * Info.plist: added Info.plist and link flag to enable the mono executable
1413         to access other processes. Requires codesigning of the executable to work.
1414         
1415         * mdb-debug-info32-darwin.s: The same as mdb-debug-info32.s, changed to 
1416         
1417         compile on OS X.
1418         
1419
1420 2009-06-30  Zoltan Varga  <vargaz@gmail.com>
1421
1422         * driver.c (mini_regression): Handle loading errors. Fixes #508869.
1423
1424 2009-06-29  Zoltan Varga  <vargaz@gmail.com>
1425
1426         * mini-exceptions.c (get_generic_context_from_stack_frame): Fix the case
1427         when the generic instance is an instantiation of a subclass of the
1428         methods class. Fixes #517166.
1429
1430 2009-06-26  Zoltan Varga  <vargaz@gmail.com>
1431
1432         * mini-amd64.c (mono_arch_emit_prolog): Fix thread attaching in AOTed
1433         code.
1434
1435         * mini.c (mono_jit_thread_attach): Allow domain to be NULL for calls from
1436         AOTed code.
1437
1438         * CMakeLists.txt: Add minimal support for installation.
1439
1440 2009-06-25  Zoltan Varga  <vargaz@gmail.com>
1441
1442         * aot-compiler.c (emit_and_reloc_code): Factor out the code to
1443         determine whenever a method is directly callable to a separate function.
1444
1445         * mini-<ARCH>.c tramp-<ARCH>.c: Remove needless casts and add new
1446         needed ones as a result of the previous change.
1447
1448         * mini-<ARCH>.c tramp-<ARCH>.c: Use mgreg_t* as the
1449         type of register arrays.
1450
1451         * mini-trampolines.c tramp-<ARCH>.c aot-runtime.c: Use mgreg_t* as the
1452         type of register arrays.
1453
1454 2009-06-24  Jerry Maine  <crashfourit@gmail.com>
1455         
1456         Contributed under the terms of the MIT/X11 license by
1457         Jerry Maine <crashfourit@gail.com>.
1458
1459         * mini-amd64.c: Added code to convert simd IR to native amd64 sse.
1460
1461 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
1462
1463         * aot-compiler.c (emit_plt): Define debug labels for most plt entries.
1464
1465 2009-06-24  Neale Ferguson <neale@sinenomine.net>
1466
1467         * mini-s390x.c: Correct LCONV_TO_Ix and ICONV_TO_Ix routines. Fix leave_method
1468         dump of structure return value. Fix some formatting.
1469         * cpu-s390x.md: Fix lengths of instruction sequences.
1470         * mini-s390.c: Minor formatting changes.
1471
1472 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
1473
1474         * mini-x86.h: Applied patch from Romain Tartiere (romain@blogreen.org).
1475         Use sigaction on freebsd as well.
1476
1477 2009-06-23  Zoltan Varga  <vargaz@gmail.com>
1478
1479         * mini.h: Don't define MONO_ARCH_HAVE_TLS_GET to 0, as some code
1480         uses #ifdef on it.
1481         
1482         * mini.c (mini_init): Revert a change which breaks cross-compilation.
1483
1484 2009-06-22  Mark Probst  <mark.probst@gmail.com>
1485
1486         * mini-ppc.c, cpu-ppc.md: Enable TLS on Darwin/G4.
1487
1488 2009-06-22  Mark Probst  <mark.probst@gmail.com>
1489
1490         * mini.c, mini.h: Tell the runtime whether we support MONO_TLS.
1491
1492 2009-06-20  Martin Baulig  <martin@ximian.com>
1493
1494         * debug-mini.c
1495         (MonoDebuggerThreadFlags): New enum typedef.
1496         (MonoDebuggerThreadInfo): Added `guint32 thread_flags'.
1497         (mono_debugger_thread_created): Added `gpointer func' argument;
1498         initialize the new `thread_flags' field.
1499
1500 2009-06-18  Martin Baulig  <martin@ximian.com>
1501
1502         * debug-debugger.h (MonoDebuggerRuntimeFlags): New enum typedef.
1503         (MonoDebuggerInfo): Renamed the `dummy' field info `runtime_info'.
1504
1505         * debug-debugger.c
1506         (mini_debugger_set_attach_ok): New function; sets the attach-ok
1507         flag in `MONO_DEBUGGER__info.runtime_info'.
1508
1509         * driver.c
1510         (mono_main): Call mini_debugger_set_attach_ok() if generics
1511         sharing is disabled.
1512
1513 2009-06-22  Zoltan Varga  <vargaz@gmail.com>
1514
1515         * aot-compiler.c (add_wrappers): Fix a warning.
1516
1517         * mini-ppc.c tramp-ppc.c exceptions-ppc.c aot-compiler.c: Update after
1518         the ppc load/store macro changes.
1519
1520 2009-06-21  Zoltan Varga  <vargaz@gmail.com>
1521
1522         * tramp-ppc.c (mono_arch_patch_plt_entry): Implement this.
1523
1524         * aot-compiler.c (mono_compile_assembly): Sanitize the plt symbol too,
1525         not just the got symbol.
1526
1527         * mini-ppc.c aot-compiler.c unwind.c: Implement generation of unwind info
1528         on ppc.
1529
1530         * aot-compiler.c unwind.c: Add infrastructure for unwind support on
1531         ppc.
1532         
1533         * aot-compiler.c: Remove some fixmes.
1534
1535         * driver.c (mono_main): Print a helpful message when cross-compiling.
1536
1537         * mini.c (mini_init): Disable signal handlers when cross-compiling.
1538
1539         * method-to-ir.c (initialize_array_data): Do the optimization if the
1540         target byte order is little endian, instead of the host byte order.
1541
1542         * aot-compiler.c: Emit sizes for most symbols, only emit runtime-invoke
1543         wrappers into the mscorlib image, Emit a unique plt symbol for each
1544         image, emit symbols for plt entries.
1545
1546         * image-writer.c (img_writer_emit_symbol_size): New function to emit
1547         a .size directive.
1548         
1549 2009-06-20  Zoltan Varga  <vargaz@gmail.com>
1550
1551         * aot-compiler.c (add_wrappers): Avoid calling 
1552         mono_marshal_get_type_info () since it can assert for some types.
1553
1554         * method-to-ir.c (mono_method_to_ir): Disable aot when some forms of 
1555         ldtoken are used inside wrappers.
1556
1557         * helpers.c: Add support for prefixing tools with the arch name.
1558
1559         * mini.h (OP_LOADR_MEMBASE): New opcodes to load/store pointer sized
1560         quantities when using ilp32.
1561
1562         * mini-codegen.c: Use OP_LOADR_MEMBASE/OP_STORER_MEMBASE for loading/storing
1563         spill slots. Use sizeof(mgreg_t) for the spill slot size.
1564
1565         * image-writer.c: Use .long on ilp32.
1566
1567         * aot-compiler.c: Use 32 bit loads on ilp32.
1568         
1569 2009-06-19  Zoltan Varga  <vargaz@gmail.com>
1570
1571         * tramp-ppc.c (mono_arch_create_trampoline_code): Fix the ppc build.
1572
1573         * mini-ops.h: Use TARGET_POWERPC define for consistency.
1574
1575         * patch-info.h: Add 'MSCORLIB_GOT_ADDR' patch type.
1576
1577         * aot-compiler.c aot-runtime.c: Put the mscorlib got address into the 
1578         second got slot of every aot image.
1579         
1580         * aot-compiler.c aot-runtime.c mini-trampolines.c: Add support for
1581         aot on platforms with function pointers.
1582
1583         * mini-ppc.h mini-ppp.c cpu-ppc.md exceptions-ppc.c tramp-ppc.c: Add
1584         support for aot/full aot on ppc/ppc64.
1585         
1586         * tramp-<ARCH>.c (mono_arch_patch_plt_entry): Add 'got' and 'regs'
1587         arguments which are needed on ppc.
1588
1589         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Add 'regs'
1590         argument.
1591
1592         * mini-trampolines.c aot-runtime.c: Update after the above changes.
1593         
1594         * liveness.c (BITS_PER_CHUNK): Use MONO_BITSET_BITS_PER_CHUNK.
1595
1596         * regalloc2.c (BITS_PER_CHUNK): Ditto.  
1597
1598         * aot-compiler.c (emit_got_info): Fix reading unused memory.
1599
1600         * ir-emit.h (alloc_dreg): Add a 'return -1' to quiet some compilers.
1601
1602 2009-06-17  Geoff Norton  <gnorton@novell.com>
1603
1604         * aot-compiler.c: Ensure we dont try to close a null dwarf writer.
1605
1606 2009-06-17  Zoltan Varga  <vargaz@gmail.com>
1607
1608         * dwarfwriter.c (mono_dwarf_writer_create): Add an 'appending' parameter
1609         to control whenever the dwarf writer is in xdebug or aot mode.
1610         (emit_class_dwarf_info): Use a separate abbrev for structures without
1611         children.
1612
1613         * aot-compiler.c: Pass the appending parameter to 
1614         mono_dwarf_writer_create ().
1615
1616         * branch-opts.c (mono_merge_basic_blocks): Fix the case when bbn
1617         falls through to its next bblock. Fixes #513931.
1618
1619         * iltests.il: Add a test.
1620
1621         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Emit some line number
1622         infor even if emit_line is FALSE, as the apple linker seems to require it.
1623
1624         * image-writer.c (asm_writer_emit_symbol_diff): Call get_label ().
1625
1626         * dwarfwriter.c (emit_cie): Emit a separate symbol for the cie start, as
1627         gcc does.
1628         (emit_fde): Ditto.
1629
1630 2009-06-15  Zoltan Varga  <vargaz@gmail.com>
1631
1632         * exceptions-mips.c (mono_arch_get_throw_exception_by_name): Fix the
1633         mips build.
1634
1635 2009-06-13  Zoltan Varga  <vargaz@gmail.com>
1636
1637         * mini.h (struct MonoBasicBlock): Add 'has_jump_table' and 
1638         'has_call_handler' fields.
1639
1640         * method-to-ir.c (mono_method_to_ir): Set them if needed.
1641
1642         * branch-opts.c (mono_merge_basic_blocks): Avoid iterating through the
1643         first bblock if not needed. Fixes #512790.
1644         
1645 2009-06-11  Zoltan Varga  <vargaz@gmail.com>
1646
1647         * aot-compiler.c (mono_compile_assembly): Fix a warning.
1648         
1649         * aot-compiler.c (add_wrappers): Don't emit remoting-invoke-with-check
1650         wrappers.
1651
1652         * aot-runtime.c (mono_aot_get_method): Use the original method's code for
1653         remoting-invoke-with-check wrappers, which are not needed when running with
1654         full-aot, since it doesn't support remoting.
1655         
1656 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
1657
1658         * aot-compiler.c (emit_got_info): Don't emit offsets for the plt got entries.
1659
1660         * aot-compiler.c aot-runtime.c: Don't emit the first got offset in the
1661         method info, it is not used anymore.
1662
1663         * mini.h: Bump AOT file format version.
1664         
1665         * aot-compiler.c (arch_emit_plt_entry): Make the arm plt entries one
1666         word smaller.
1667
1668         * aot-runtime.c (mono_aot_get_plt_info_offset): Update after the
1669         change above.
1670         
1671         * tramp-arm.c (mono_arch_patch_plt_entry): Ditto.
1672
1673         * mini.h: Bump AOT file format version.
1674         
1675 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
1676
1677         * image-writer.c (asm_writer_emit_symbol_diff): Disable the 
1678         TARGET_ASM_APPLE stuff for now, as it doesn't seem to work on the
1679         iphone.
1680
1681         * mini-arm.c (mono_arch_output_basic_block): Fix the implementation
1682         of CKFINITE and FBGE for VFP.
1683
1684 2009-06-09  Zoltan Varga  <vargaz@gmail.com>
1685
1686         * aot-compiler.c: Don't align code to 16 bytes on arm.
1687         
1688         * aot-compiler.c (emit_method_code): Emit the unbox trampolines right
1689         before the methods they belong to.
1690
1691         * aot-runtime.c (mono_aot_plt_resolve): Avoid creating trampolines in
1692         the full-aot case if possible, since the trampoline will be called right 
1693         away.
1694
1695         * aot-compiler.c (mono_compile_assembly): Decrease the number of full aot
1696         trampolines to 1024 after the change above.
1697
1698         * aot-compiler.c (arch_emit_specific_trampoline): Rework the arm
1699         trampoline to save 8 bytes per trampoline.
1700
1701         * tramp-arm.c (mono_arch_create_trampoline_code_full): Update after the
1702         change above.
1703
1704 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
1705
1706         * aot-compiler.c: Use acfg->temp_prefix instead of .L to prefix labels.
1707
1708 2009-06-08  Martin Baulig  <martin@ximian.com>
1709
1710         * debug-mini.c
1711         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
1712         (_mono_debugger_throw_exception): Don't make this static.
1713         (_mono_debugger_unhandled_exception): Likewise.
1714         (mono_debugger_handle_exception): Moved to mini-exceptions.c
1715
1716         * debug-mini.c
1717         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
1718         (_mono_debugger_throw_exception): Add function prototype.
1719         (_mono_debugger_unhandled_exception): Likewise.
1720
1721         * mini-exceptions.c
1722         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
1723         arg; return the first exception handler if the exception is caught
1724         and we're running inside the debugger.
1725         (mono_debugger_handle_exception): Moved here from debug-mini.c;
1726         improve exception handle inside runtime-invoke, check whether the
1727         exception is actually caught in the method being invoked and not
1728         by the runtime-invoke-wrapper.
1729
1730 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
1731
1732         * image-writer.c: Improve support for the osx assembler.
1733
1734         * dwarfwriter.c: Avoid the usage of subsections if the assembler doesn't
1735         support them.
1736
1737 2009-06-08  Martin Baulig  <martin@ximian.com>
1738
1739         * debug-mini.c
1740         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
1741         (_mono_debugger_throw_exception): Don't make this static.
1742         (_mono_debugger_unhandled_exception): Likewise.
1743         (mono_debugger_handle_exception): Moved to mini-exceptions.c
1744
1745         * debug-mini.c
1746         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
1747         (_mono_debugger_throw_exception): Add function prototype.
1748         (_mono_debugger_unhandled_exception): Likewise.
1749
1750         * mini-exceptions.c
1751         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
1752         arg; return the first exception handler if the exception is caught
1753         and we're running inside the debugger.
1754         (mono_debugger_handle_exception): Moved here from debug-mini.c;
1755         improve exception handle inside runtime-invoke, check whether the
1756         exception is actually caught in the method being invoked and not
1757         by the runtime-invoke-wrapper.
1758
1759 2009-06-07  Zoltan Varga  <vargaz@gmail.com>
1760
1761         * image-writer.c (append_subsection): Don't align subsections of the
1762         debug_line section as a workaround.
1763
1764         * dwarfwriter.c: Emit line number info in the AOT case as well.
1765
1766 2009-06-06  Steven Munroe  <munroesj@us.ibm.com>
1767
1768         This patch is contributed under the terms of the MIT/X11 license
1769
1770        * mini-ppc.c (mono_arch_emit_exceptions): Change assert to
1771        code_len <= code_size
1772
1773 2009-06-06  Zoltan Varga  <vargaz@gmail.com>
1774
1775         * mini-mips.c (mips_emit_exc_by_name): Fix the mips build.
1776
1777 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
1778
1779         * aot-compiler.c aot-runtime.c: Delete references to static rgctx
1780         invoke wrappers, we now use trampolines instead.
1781
1782 2009-06-04  Mark Probst  <mark.probst@gmail.com>
1783
1784         * mini-darwin.c: The exception thread must not be registered with
1785         the GC.
1786
1787 2009-06-04  Mark Probst  <mark.probst@gmail.com>
1788
1789         * mini-gc.c: Disable the code because it makes SGen crash.
1790
1791 2009-06-03  Zoltan Varga  <vargaz@gmail.com>
1792
1793         * aot-compiler.c (mono_compile_assembly): Handle file open errors gracefully
1794         instead of asserting.
1795
1796 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
1797
1798         * aot-compiler.c (mono_compile_assembly): Move the creation of the
1799         output file after the code has been compiled.
1800
1801 2009-05-30  Zoltan Varga  <vargaz@gmail.com>
1802
1803         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Fix 64 bit support.
1804
1805 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
1806
1807         * aot-compiler.c aot-runtime.c: Get rid of the shared/non-shared got
1808         entries distinction to simplify the code.
1809
1810         * mini.h: Bump AOT file format version.
1811         
1812 2009-05-28  Zoltan Varga  <vargaz@gmail.com>
1813
1814         * objects.cs: Fix the signature of one of the tests.
1815
1816         * mini.c (mini_create_ftnptr): New helper function, moved here from
1817         object.c.
1818         (mini_get_addr_from_ftnptr): Ditto.
1819         (mini_init): Install the new helpers.
1820
1821 2009-05-28  Martin Baulig  <martin@ximian.com>
1822
1823         Correctly initialize the debugger when embedding Mono.
1824
1825         * mdb-debug-info32.s, mdb-debug-info64.s: Add a global variable
1826         `MONO_DEBUGGER__using_debugger' to the `.mdb_debug_info' section;
1827         see documentation in mini_debug_running_inside_mdb().
1828
1829         * debug-debugger.c
1830         (mini_debug_running_inside_mdb): New function to check whether
1831         we're running inside mdb.
1832
1833         * mini.c (mini_init): Call mini_debugger_init() if we're running
1834         inside the debugger.
1835
1836         * driver.c (mono_main): Moved the call to mini_debugger_init()
1837         into mini_init() to make this work when embedding Mono.
1838
1839         * debug-debugger.c (mini_debugger_init): Warn about duplicate
1840         calls to mini_debugger_init().
1841
1842         * mini.h: Rename mono_debugger_init() -> mini_debugger_init(),
1843         mono_debugger_main() -> mini_debugger_main() and put them inside a
1844         `MONO_DEBUGGER_SUPPORTED' conditional.
1845
1846 2009-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
1847
1848         * mini-trampolines.c: Kill mono_find_delegate_trampoline_by_addr as
1849         this is no longer in use.
1850         * mini.h: Same.
1851
1852 2009-05-26  Zoltan Varga  <vargaz@gmail.com>
1853
1854         * mini-sparc.c (add_outarg_load): Fix the sparc build.
1855
1856         * aot-compiler.c (emit_method_code): Always write out C style symbols for
1857         methods.
1858
1859 2009-05-27  Martin Baulig  <martin@ximian.com>
1860
1861 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
1862
1863         * mini-x86.c (mono_arch_output_basic_block): Fix the precision of
1864         long_conv_to_r_un to 64 bits.
1865
1866         * cpu-x86.md: Increase the instruction size due to the changes.
1867
1868         * iltests.il.in: Add regression test.
1869
1870         Fixes #467201.
1871
1872 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
1873
1874         * objects.cs: Move the previous test from basic.cs to here.
1875
1876 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
1877
1878         * basic.cs: Add regression test for #506915.
1879
1880 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
1881
1882         * method-to-ir.c (mono_method_to_ir): When doing the ldobj+stobj
1883         optimization we must check the bb of the first byte of stobj as
1884         it's the only one set in cil_offset_to_bb.
1885
1886         Fixes #506915.  
1887
1888 2009-05-25  Zoltan Varga  <vargaz@gmail.com>
1889
1890         * image-writer.c: Fix pointer directive on ppc64.
1891
1892 2009-05-24  Zoltan Varga  <vargaz@gmail.com>
1893
1894         * image-writer.c (asm_writer_emit_section_change): Avoid using
1895         .bss subsections on ppc too.
1896
1897 2009-05-23  Zoltan Varga  <vargaz@gmail.com>
1898
1899         * image-writer.c: Fix the definition of TARGET_ASM_....
1900         
1901         * image-writer.c: Fix the emission of assembler directives in the last
1902         change.
1903
1904         * mini-ppc.c (mono_arch_emit_exceptions): Increase the size of the
1905         exception throwing code to accomodate ppc64.
1906
1907         * tramp-ppc.c (mono_arch_get_nullified_class_init_trampoline): Increase the
1908         size to work on ppc64 too.
1909
1910         * mini-ppc.h (MonoCompileArch): Enable static rgctx trampolines on ppc64
1911         too.
1912
1913         * image-writer.c: Clean up the #ifdef hell a bit by adding defines for
1914         the assembler dialect instead of using platform specific defines.
1915
1916 2009-05-22  Geoff Norton  <gnorton@novell.com>
1917
1918         * mini-arm.c (get_call_info): If a structure is split between the stack
1919         and argument registers, we should not advance the stack pointer by the entire
1920         native size, but just by the amount that spilled.
1921
1922 2009-05-22  Zoltan Varga  <vargaz@gmail.com>
1923
1924         * mini-arm.c (get_call_info): Handle structures with alignment requirements
1925         correctly.
1926
1927 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
1928
1929         * aot-compiler.c (emit_extra_methods): Encode direct runtime invoke
1930         wrappers normally.
1931         
1932         * aot-compiler.c (add_extra_method): Fix up the collection of extra
1933         methods so wrapper don't get added twice.
1934         (add_generic_instances): Don't add methods of arrays.
1935
1936         * generics.cs: Mark one test as !FULLAOT.
1937
1938 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
1939
1940         * mini-x86.c (emit_move_return_value): Remove unused vars.
1941
1942 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
1943
1944         * mini-x86.c (mono_arch_emit_call): The decompose code now supports
1945         decomposing 8 bytes structs into a LCALL.
1946
1947         * mini-x86.c (emit_move_return_value): We no longer push the vtype
1948         pointer for where to store the returned regs.
1949
1950         * decompose.c (mono_decompose_vtype_opts): Fix the comment to properly
1951         state the concern.
1952
1953         Fixes #471747, #471751 and #4734530 (in fact, it's a bunch of dups).
1954
1955 2009-05-20  Miguel de Icaza  <miguel@novell.com>
1956
1957         * aot-runtime.c (mono_aot_init): Use g_getenv to work on systems
1958         without getenv.
1959
1960 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
1961
1962         * aot-compiler.c (add_wrappers): Add StructureToPtr/PtrToStructure wrappers.
1963
1964         * basic.cs: Move the test_2_cprop_bug () test to generics.cs as it involves
1965         generics.
1966
1967 2009-05-20 Rodrigo Kumpera  <rkumpera@novell.com>
1968
1969         * local-propagation.c (mono_local_cprop): Avoid local propagation
1970         across paired add/sub if the first instruction dest reg is it's
1971         source reg. For example:
1972
1973         int_add_imm R12 <- R12 [1] clobbers: 1
1974         int_sub_imm R42 <- R12 [1] clobbers: 1
1975
1976         The cprop pass would wrongly const prop + 1 to int_sub_imm which doesn't
1977         maintain the math identify.
1978
1979         Fixes #505375.
1980
1981 2009-05-20  Andreia Gaita  <avidigal@novell.com>
1982
1983         * Makefile.am: avoid going on the network just to get the revision,
1984         use git log instead
1985
1986 2009-05-19  Massimiliano Mantione  <massi@ximian.com>
1987
1988         Fixed estimate for short branches on amd64 (they were off mark, and
1989         enabling call prolog-epilog instrumentations caused assertions).
1990         * mini.h (struct MonoBasicBlock): added max_length field to hold the
1991         estimate for the maximum length of this basic block.
1992         * mini-amd64.c:
1993         - mono_arch_emit_prolog: compute max_length for each basic block
1994           (instead of max_offset), and inflate size estimate also for entry bb
1995           in case of code instrumentation.
1996         - mono_arch_output_basic_block: get rid of "cpos" (the current
1997           estimated "position" in the code), and always use "offset" instead,
1998           which is accurate; at the beginning of the function quickly recompute
1999           max_offset for all the remaining blocks, starting from the current
2000           cfg->code_len (which is correct, and not estimated) and using the
2001           estimated block lengths computed previously.
2002
2003 2009-05-17  Zoltan Varga  <vargaz@gmail.com>
2004
2005         * exceptions-ppc.c: Remove the caching from the trampoline creation 
2006         functions, it is already done in the caller.
2007
2008         * mini-trampolines.c (mono_llvm_vcall_trampoline): Fix the llvm build.
2009
2010         * mini-ppc.h mini-arm.h mini-x86.h mini-amd64.h: Add 
2011         MONO_ARCH_GSHARED_SUPPORTED define.
2012
2013         * mini.c (mini_init): Use the MONO_ARCH_GSHARED_SUPPORTED define.
2014
2015         * mini-arm.c mini.c: Get rid of the unused mono_arch_fixup_jinfo ()
2016         function.
2017
2018 2009-05-16  Zoltan Varga  <vargaz@gmail.com>
2019
2020         * jit-icalls.c (mono_helper_compile_generic_method): Get rid of the 
2021         call to mono_marshal_get_rgctx_invoke ().
2022
2023         * mini.c method-to-ir.c mini-trampolines.c: Get rid of the usage of
2024         mono_marshal_get_static_rgctx_invoke (), all platforms which support
2025         gshared use the static rgctx trampolines now.
2026         
2027         * mini.c (mini_init): Call mono_set_generic_sharing_supported () if the
2028         platform supports it.
2029
2030 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
2031
2032         * mini-arm.c (mono_arch_allocate_vars): Correctly save R5 when using AOT.
2033
2034         * aot-compiler.c (emit_method_code): Avoid duplicate labels for methods.
2035
2036 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
2037
2038         * mini-ppc.c (mono_arch_emit_exceptions): Nullify the processed patches.
2039
2040         * tramp-ppc.c (mono_arch_nullify_class_init_trampoline): Implement this
2041         for ppc.
2042
2043 2009-05-15  Massimiliano Mantione  <massi@ximian.com>
2044
2045         Made it possible for mono_arch_instrument_epilog to preserve
2046         argument registers, otherwise instrumenting the "epilogue" before
2047         a tail call would clobber them.
2048         * mini.h: Added "mono_arch_instrument_epilog_full" prototype, which
2049         if like mono_arch_instrument_epilog but with an additional parameter
2050         that states if argument registers must be preserved.
2051         * mini.c: implemented mono_arch_instrument_epilog as a call to
2052         mono_arch_instrument_epilog_full without asking to preserve argument
2053         registers (this makes the existing code work as usual).
2054         * mini-amd64.c:
2055         - mono_arch_instrument_epilog: add parameter to transform it into
2056         mono_arch_instrument_epilog_full, and preserve argument registers
2057         when required.
2058         - mono_arch_output_basic_block, OP_TAILCALL case: call
2059         mono_arch_instrument_epilog_full.
2060         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
2061         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-x86.c:
2062         only transformed mono_arch_instrument_epilog into
2063         mono_arch_instrument_epilog_full.
2064
2065 2009-05-15  Geoff Norton  <gnorton@novell.com>
2066
2067         * mini-darwin.c: This works on arm now.
2068
2069 2009-05-14  Geoff Norton  <gnorton@novell.com>
2070
2071         * jit.h, driver.c: Allow full-aot to be decided programatically by the
2072         embedding api.
2073
2074 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
2075
2076         * aot-compiler.c (emit_method_code): Skip a few more characters in the debug
2077         label names.
2078
2079         * mini-trampolines.c (mono_magic_trampoline): Handle static rgctx invoke
2080         wrappers during full aot mode correctly.
2081
2082         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle shared generic
2083         methods correctly.
2084
2085         * aot-compiler.c (mono_aot_method_hash): Use our internal version of
2086         mono_metadata_type_hash ().
2087
2088 2009-05-14  Massimiliano Mantione  <massi@ximian.com>
2089
2090         * mini.h, mini-codegen.c, mini-alpha.c, mini-amd64.c, mini-arm.c,
2091         mini-hppa.h, mini-hppa.c, mini-ia64.c, mini-mips.h, mini-mips.c,
2092         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-886.c:
2093         Removed MONO_INST_BRLABEL from the instruction flags, and the
2094         remaining code that used it, because we do not support branches inside
2095         basic blocks (and branch target labels) anymore.
2096         * Makefile.am: As part of the above cleanup, remove reference to
2097         BURG files which don't exist anymore.
2098
2099 2009-05-14  Zoltan Varga  <vargaz@gmail.com>
2100
2101         * image-writer.c (asm_writer_emit_local_symbol): Make this a nop on
2102         osx.
2103
2104         * mini-mips.c mini-mips.h exceptions-mips.c: Transition the mips backend
2105         to use mono_arch_throw_corlib_exception.
2106
2107         * mini-ppc.c mini-ppc.h exceptions-ppc.c: Use 
2108         mono_arch_throw_corlib_exception for throwing corlib exceptions.
2109
2110         * aot-runtime.c (decode_patch): Allocate the data for R4/R8 from the
2111         domain mempool.
2112
2113         * mini.c (mono_patch_info_dup_mp): Copy the table of switch targets too.
2114
2115         * aot-compiler.c: Emit a local symbol prefixed with the assembly name 
2116         for the got to make debugging easier and to avoid confusing it with the
2117         system got.
2118         
2119         * aot-compiler.c (emit_method_code): Emit a C style symbol for each
2120         method so a breakpoint can be set when using gdb.
2121
2122 2009-05-13  Zoltan Varga  <vargaz@gmail.com>
2123
2124         * aot-compiler.c (mono_aot_method_hash): Implement this properly based
2125         on mono_method_get_imt_slot ().
2126
2127         * aot-runtime.c (find_extra_method_in_amodule): Get rid of the
2128         num_decodes variables.
2129
2130         * aot-compiler.c (mono_aot_method_hash): Revert part of the last
2131         change as it doesn't seem to work.
2132         
2133         * aot-compiler.c (mono_aot_method_hash): Improve the hashing of
2134         wrappers.
2135
2136 2009-05-12  Zoltan Varga  <vargaz@gmail.com>
2137
2138         * aot-compiler.c mini.c mini-amd64.h mini-arm.h: Kill 
2139         MONO_ARCH_FULL_AOT_IMT_SUPPORTED define, both platforms now support imt.
2140
2141         * mini.c (mini_init): Install mono_aot_get_imt_thunk as the IMT thunk
2142         builder when using full aot.
2143
2144         * mini-amd64.c (mono_arch_build_imt_thunk): Don't handle the full-aot case
2145         here, it is already handled.
2146         
2147         * mini-arm.c (mono_arch_emit_imt_argument): Pass the dynamic imt arg
2148         correctly for IMT.
2149
2150         * aot-compiler.c (arch_emit_imt_thunk): Implement this for ARM.
2151
2152         * mini-arm.h: Enable IMT for full aot.
2153         
2154         * aot-compiler.c (mono_compile_assembly): Don't emit imt thunk if the
2155         arch doesn't support it.
2156
2157         * mini.c (mini_init): Don't disable IMT for full aot if the
2158         architecture supports it.
2159
2160         * mini.h (MonoAotTrampoline): New enum containing the different types
2161         of 'numerous' trampolines.
2162         (MONO_AOT_FILE_VERSION): Bump this.
2163
2164         * aot-compiler.c aot-runtime.c: Unify the handling of specific and
2165         static rgctx trampolines. Add support for full-aot IMT thunks.
2166
2167         * mini-amd64.h: Enable IMT for full aot.
2168
2169         * TestDriver.cs: Add a CategoryAttribute class and an --exclude option
2170         to exclude tests belonging to a category.
2171
2172         * generics.cs: Mark some tests with a !FULLAOT category.
2173
2174         * Makefile.am (fullaotcheck): Run tests with --exclude !FULLAOT. Include
2175         generics tests.
2176
2177 2009-05-11  Zoltan Varga  <vargaz@gmail.com>
2178
2179         * aot-compiler.c (emit_and_reloc_code): Move the implementation of
2180         MONO_PATCH_INFO_GOT_OFFSET to a separate arch-specific function.
2181         (emit_plt): Fix a warning.
2182
2183 2009-05-10  Zoltan Varga  <vargaz@gmail.com>
2184
2185         * aot-compiler.c aot-runtime.c: Fix the build by moving is_shared_got_patch
2186         back into aot-compiler.c to a place where the other functions shared by
2187         the runtime and aot compiler are.
2188         
2189         * aot-compiler.c aot-runtime.c: Emit the got addr using a separate symbol,
2190         as done previously, instead of in MonoAotFileInfo, since pointers might have
2191         alignment requirements.
2192
2193         * mini.h: Bump AOT file format version.
2194
2195 2009-05-10  Miguel de Icaza  <miguel@novell.com>
2196
2197         * aot-runtime.c (mono_aot_is_shared_got_patch): Move this routine
2198         that is used at runtime from the aot-compiler.c, this makes it
2199         work on setups that remove the AOT compiler from the output
2200         image. 
2201
2202 2009-05-09  Zoltan Varga  <vargaz@gmail.com>
2203
2204         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Implement this for
2205         PPC.
2206
2207         * mini-ppc.h: Enable static rgctx trampolines for ppc.
2208
2209         * mini-<ARCH>.h: Kill the MONO_ARCH_ENABLE_EMIT_STATE_OPT define.
2210
2211         * decompose.c (mono_decompose_long_opts): Move the ppc/sparc specific 
2212         stuff to mono_arch_decompose_long_opts ().
2213         (mono_decompose_opcode): Remove some dead code.
2214
2215 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
2216
2217         * method-to-ir.c (mono_method_to_ir): Fix boostrap of non amd64 builds
2218         cmethod can be null for quite a some reasons.
2219
2220 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
2221
2222         * method-to-ir.c (mono_method_to_ir): Fix non amd64 builds.
2223
2224 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
2225
2226         * aot-compiler.c (arch_emit_got_access): Fix the aot-not-supported build.
2227
2228 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
2229
2230         * method-to-ir.c (mono_emit_call_args): Add a 'tail' flag argument.
2231         (mono_method_to_ir): Use MONO_ARCH_USE_OP_TAIL_CALL macro to determine
2232         whenever to make tail calls using OP_TAIL_CALL. Enable support for tail
2233         calls returning structures by addr on amd64.
2234
2235         * mini-amd64.h (MONO_ARCH_USE_OP_TAIL_CALL): New arch-specific macro.
2236
2237         * iltests.il.in: Restructure the tail call tests a bit.
2238         
2239 2009-05-07  Zoltan Varga  <vargaz@gmail.com>
2240
2241         * aot-compiler.c (add_wrappers): Add remoting-invoke-with-check wrappers
2242         for virtual methods too.
2243
2244 2009-05-06  Raja R Harinath  <harinath@hurrynot.org>
2245
2246         * method-to-ir.c (mono_method_to_ir): Revert change of 2009-05-02
2247         due to regression in verifying System.dll.
2248
2249 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
2250
2251         * debug-mini.c (mono_debugger_method_has_breakpoint): Allow breakpoints
2252         in dynamic methods.
2253
2254         * dwarfwriter.c (emit_class_dwarf_info): Add support for generic
2255         instances.
2256
2257         * aot-compiler.c aot-runtime.c: Use our own hash function instead of
2258         g_str_hash () which can change.
2259
2260         * driver.c (mini_regression): Disable optimizations not supported by
2261         the cpu. Fixes #500019.
2262
2263         * aot-runtime.c (mono_aot_get_unwind_info): Fix the --enable-minimal=aot
2264         build.
2265
2266 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
2267
2268         * mini-llvm.c (mono_llvm_emit_method): Update the OP_TLS_GET implementation
2269         to the latest LLVM code.
2270
2271 2009-05-05  Zoltan Varga  <vargaz@gmail.com>
2272
2273         * genmdesc.pl (load_opcodes): Fix this after the TARGET_... changes.
2274
2275 2009-05-04  Zoltan Varga  <vargaz@gmail.com>
2276
2277         * mini-llvm.c (mono_llvm_emit_method): Implement TLS support on 
2278         x86/amd64.
2279
2280         * aot-compiler.c (encode_patch_list): Simplify this considerably as we are
2281         no longer saving offsets, so just save the patch types along with the other
2282         info.
2283         * aot-runtime.c (load_patch_info): Update after the changes to 
2284         encode_patch_list ().
2285         (decode_got_entry): Removed, merged into load_patch_info ().
2286         (is_shared_got_patch): Removed, call the same function from
2287         aot-compiler.c.
2288
2289         * mini.h: Bump aot file format version.
2290         
2291         * aot-compiler.c aot-runtime.c: Resurrect static linking support. Kill the
2292         half-finished no-dlsym code.
2293
2294         * aot-runtime.c (load_method): Kill the old and bit-rotten use_loaded_code
2295         option.
2296
2297         * mini-<ARCH>.h mini-trampolines.c aot-runtime.c: Kill the 
2298         MONO_ARCH_HAVE_CREATE_TRAMPOLINE_FROM_TOKEN define.
2299
2300 2009-05-02  Zoltan Varga  <vargaz@gmail.com>
2301
2302         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Increase the
2303         buffer length to work with AOT code.
2304
2305         * method-to-ir.c (mono_method_to_ir): Handle loading errors in the
2306         ldfld/stfld opcodes.
2307
2308         * exceptions-x86.c (mono_arch_get_throw_exception_by_name): Simplify this
2309         as it is not used.
2310
2311         * mini-llvm.c mini-x86.c: Implement 32 bit and x86 support.
2312
2313         * ssa.c (mono_ssa_compute): Don't skip I8 values when using LLVM.
2314
2315         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Update to the latest
2316         LLVM API.
2317
2318         * mini.c (mini_method_compile): Set the from_llvm flag in MonoJitInfo
2319         if needed. Don't decompose long operations when using llvm.
2320
2321 2009-05-01  Zoltan Varga  <vargaz@gmail.com>
2322
2323         * aot-compiler.c aot-runtime.c: Use mono_pagesize () instead of the
2324         PAGESIZE constant.
2325
2326         * aot-runtime.c (load_aot_module): Get rid of another mprotect call.
2327
2328 2009-05-03  Martin Baulig  <martin@ximian.com>
2329
2330         * debug-debugger.c (debugger_insert_source_breakpoint): Don't call
2331         mono_debugger_insert_method_breakpoint() since the class init
2332         handler we're inserting at the top of the method already gives us
2333         a notification.
2334
2335 2009-04-30  Zoltan Varga  <vargaz@gmail.com>
2336
2337         * decompose.c (mono_decompose_long_opts): Move the implementation of LNEG
2338         to mono_arch_decompose_long_opts () for x86 and arm.
2339
2340 2009-04-29  Zoltan Varga  <vargaz@gmail.com>
2341
2342         * mini-codegen.c (mono_regstate_alloc_int): Use __x86_64__ instead of
2343         TARGET_AMD64 here.
2344
2345 2009-04-28  Zoltan Varga  <vargaz@gmail.com>
2346
2347         * *.h *.c: Use TARGET_<ARCH> defines instead of __<arch>__ defines in the
2348         JIT code.
2349
2350 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
2351
2352         * aot-runtime.c (mono_aot_create_specific_trampoline): Add a stat for the
2353         number of trampolines used in full-aot mode.
2354
2355         * aot-compiler.c: Add an ntrampolines option to set the number of 
2356         trampolines emitted in full-aot mode.
2357
2358 2009-04-27  Zoltan Varga  <vargaz@gmail.com>
2359
2360         * mini-llvm.c (mono_llvm_emit_method): Implement OP_CHECK_THIS using
2361         a volatile load. Get rid of get_tempname (), llvm assigns names
2362         automatically.
2363
2364         * mini-llvm-cpp.cpp (mono_llvm_build_volatile_load): New instruction
2365         builder function.
2366
2367         * mini-llvm.c (mono_llvm_emit_method): Don't call LLVMGetParam on
2368         a value.
2369
2370         * abcremoval.c (REPORT_ABC_REMOVAL): Don't output messages at verbose
2371         level 1.
2372
2373         * mini-codegen.c (mono_local_regalloc): Prevent sreg1/dreg to be allocated
2374         to the same register as a fixed sreg2. Fixes #497271.
2375
2376         * iltests.il.in: Add a new test.
2377
2378 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
2379
2380         * mini-amd64.c: Use moves instead of pushes for passing arguments on the
2381         stack, since pushes complicate exception handling.
2382
2383         * exceptions-amd64.c (mono_arch_find_jit_info): Don't pop the arguments of
2384         the stack if they are passed using moves.
2385
2386         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
2387
2388         * method-to-ir.c (mono_method_to_ir): Disable fast virtual generic methods
2389         when using llvm.
2390
2391         * mini-llvm.c (mono_llvm_emit_method): Call jit icall wrappers, not the 
2392         icalls themselves. Convert arguments of FCOMPARE. Convert the destination
2393         of FMOVE if it is an R4.
2394
2395 2009-04-25  Zoltan Varga  <vargaz@gmail.com>
2396
2397         * mini-ops.h: Add OP_LLVM_OUTARG_VT opcode.
2398
2399         * mini.h (LLVMCallInfo): New structure to store calling convention 
2400         information for the LLVM back end similar to the CallInfo structures in 
2401         the back-ends.
2402
2403         * mini-amd64.c (mono_arch_get_llvm_call_info): New arch function to return
2404         call information in a format usable by LLVM.
2405         (mono_arch_emit_call): Move the LLVM handling code to mono_llvm_emit_call ().
2406
2407         * method-to-ir.c (mono_emit_call_args): Emit calls using 
2408         mono_llvm_emit_call () when compiling using LLVM.
2409
2410         * mini-llvm.c: Implement support for passing/receiving valuetypes. Add
2411         comments to all functions. Fix memory leaks. Add a public init/cleanup
2412         function.
2413
2414         * mini.c: Call the llvm init/cleanup functions in mini_init()/cleanup().
2415
2416         * method-to-ir.c (handle_array_new): Disable llvm when calling the vararg
2417         mono_array_new_va () jit icall.
2418         
2419 Fri Apr 24 16:44:08 CEST 2009 Paolo Molaro <lupus@ximian.com>
2420
2421         * Makefile.am, genmdesc.c, genmdesc.pl: tiny refactor to allow
2422         multiple machine description files to be specified.
2423         * mini-ops.h: fixes for cross-compilation.
2424
2425 2009-04-22  Miguel de Icaza  <miguel@novell.com>
2426
2427         * aot-runtime.c (make_writable): Use mono_mprotect to simplify
2428         some porting work.
2429
2430 2009-04-22  Zoltan Varga  <vargaz@gmail.com>
2431
2432         * method-to-ir.c (mono_method_to_ir): Force init_locals to be TRUE
2433         to prevent asserts in various passes. Fixes #497220.
2434
2435 2009-04-21  Zoltan Varga  <vargaz@gmail.com>
2436
2437         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove
2438         a racy assert.
2439
2440         * aot-compiler.c aot-runtime.c: Emit the unwind info into a separate
2441         table to avoid duplicates.
2442
2443         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
2444         
2445         * aot-compiler.c (emit_method_code): Avoid writing symbols if the nodebug
2446         option is used.
2447
2448 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
2449
2450         * mini.c (mini_method_verify): Fail fulltrust code if the exception
2451         is for method or field access.
2452
2453 2009-04-20  Zoltan Varga  <vargaz@gmail.com>
2454
2455         * mini-llvm-cpp.cpp (mono_llvm_dump_value): New helper function to print
2456         a Value to stdout.
2457
2458         * mini-llvm.c (mono_llvm_emit_method): Use it.
2459         
2460         * mini-llvm.c (type_to_llvm_type): Fix the mapping of enums.
2461         (mono_llvm_emit_method): Add support for CAS. Fix handling of CSET opcodes
2462         on volatile values.
2463
2464         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add support for 
2465         synchronized methods.
2466
2467         * mini.c (mini_method_compile): Disable LLVM for dynamic methods.
2468
2469         * mini.c (mini_method_compile): Enable ABCREM when running with LLVM.
2470
2471         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOADI4_MEM/
2472         OP_LOADI8_MEM.
2473
2474         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add a MONO_LLVM env variable
2475         allowing some options to be set dynamically.
2476
2477 2009-04-19  Zoltan Varga  <vargaz@gmail.com>
2478
2479         * mini-llvm.c (mono_llvm_emit_method): Handle compares followed by an
2480         unconditional branch.
2481
2482         * mini.h (MonoTrampolineType): Add new trampoline type 
2483         'MONO_TRAMPOLINE_LLVM_VCALL' which handles virtual calls made from LLVM
2484         compiled code.
2485
2486         * mini-trampolines.c (mono_llvm_vcall_trampoline): New C trampoline 
2487         function.
2488
2489         * mini-trampolines.c (mono_create_llvm_vcall_trampoline): New trampoline
2490         creation function.
2491
2492         * mini.c (mini_init): Avoid using the common vtable trampoline when LLVM
2493         is enabled. Instead, use the llvm vcall trampoline.
2494         
2495         * mini-trampolines.c (mono_get_vcall_slot_addr): New helper function.
2496
2497         * mini-trampolines.c tramp-amd64.c tramp-x86.c: Use it.
2498         
2499         * mini-<ARCH>.c: Get rid of the identical mono_arch_get_vcall_slot_addr ()
2500         functions.
2501
2502         * mini-<ARCH>.h mini-trampolines.c mini.c: Get rid of 
2503         MONO_ARCH_COMMON_VTABLE_TRAMPOLINE, it is supported by all archs.
2504
2505         * mini-ia64.c (mono_arch_lowering_pass): Null out the sregs of the
2506         OP_IA64_CSET opcode.
2507
2508         * mini.c: Fix a warning.
2509
2510         * mini-llvm.c (mono_llvm_emit_method): Convert arguments of SWITCH and
2511         THROW to the appropriate llvm type.
2512
2513 2009-04-18  Zoltan Varga  <vargaz@gmail.com>
2514
2515         * mini.c (mini_method_compile): Add statistics for methods JITted
2516         with/without LLVM.
2517
2518 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
2519
2520         * method-to-ir.c: Fix the computation of ins_sreg_counts for ia64
2521         OP_IA64_CMP_<cond>_IMM opcodes.
2522
2523 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
2524
2525         * mini-llvm.c (emit_cond_system_exception): Implement throwing of
2526         corlib exceptions.
2527
2528         * dwarfwriter.c (mono_dwarf_writer_emit_method): Handle --regression
2529         correctly.
2530
2531         * mini-llvm.c (type_to_llvm_type): Avoid accessing t->data.klass for
2532         GENERICINST.
2533
2534 2009-04-17  Atsushi Enomoto  <atsushi@ximian.com>
2535
2536         * mini-exceptions.c : add thread id to EXCEPTION trace message.
2537
2538 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
2539
2540         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Fix AOT
2541         support.
2542
2543         * tramp-x86.c (mono_arch_get_unbox_trampoline): Implement static
2544         rgctx invoke trampolines for x86.
2545
2546         * mini-x86.c (mono_arch_output_basic_block): Add a few nops before
2547         indirect calls to simplify get_vcall_slot_addr (). Fixes #494567.
2548         (mono_arch_get_vcall_slot): Simplify this.
2549
2550 2009-04-16  Zoltan Varga  <vargaz@gmail.com>
2551
2552         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Move the calls to
2553         mono_debug_add_delegate_trampoline () to get_delegate_invoke_impl ().
2554
2555 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
2556
2557         * aot-compiler.c tramp-arm.c mini-arm.c: Implement static rgctx 
2558         trampolines for ARM. Add full-aot support for delegate invokes for ARM.
2559
2560         * mini-trampolines.c (mono_magic_trampoline): Fix the build.
2561
2562         * liveness.c (visit_bb): Remove a needless assert.
2563
2564 2009-04-13  Zoltan Varga  <vargaz@gmail.com>
2565
2566         * mini-trampolines.c (mono_create_delegate_trampoline): Delegate the
2567         full aot support to the arch specific code.
2568
2569         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Add full-aot support.
2570
2571         * aot-compiler.c (emit_trampolines): Emit delegate invoke impl trampolines.
2572
2573         * aot-compiler.c (emit_named_code): Rename this to 'emit_trampoline'.
2574         
2575         * mini-amd64.c (mono_arch_get_delegate_invoke_impls): New function to
2576         collect information about the delegate invoke impl trampolines.
2577
2578         * mini.h (MonoAotTrampInfo): New structure collecting the information needed
2579         to save trampolines during full-aot mode.
2580
2581         * mini-trampolines.c (mono_create_static_rgctx_trampoline): New trampoline
2582         creation function which returns a trampoline which sets the rgctx
2583         argument.
2584         (mono_magic_trampoline): Use the rgctx trampoline instead of an rgctx
2585         wrapper if possible.
2586         (mono_delegate_trampoline): Ditto.
2587
2588         * mini.c (mono_jit_runtime_invoke): Ditto.
2589
2590         * tramp-amd64.c: Add an implemention of static rgctx trampolines for AMD64.
2591         
2592         * aot-compiler.c aot-runtime.c: Add support for static rgctx trampolines.
2593
2594         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
2595         
2596 2009-04-12  Zoltan Varga  <vargaz@gmail.com>
2597
2598         * mini-ia64.c (mono_arch_lowering_pass): Use NULLIFY_INS instead of
2599         just setting the opcode to OP_NOP.
2600
2601 2009-04-11  Zoltan Varga  <vargaz@gmail.com>
2602
2603         * mini.c (mini_method_compile): Put the last change inside an 
2604         #ifdef MONO_ARCH_HAVE_LIVERANGE_OPS.
2605         
2606         * mini.c (mini_method_compile): Disable sharing of stack slots/registers
2607         and extend live ranges to cover the whole method when using xdb.
2608
2609         * jit-icalls.c (ldvirtfn_internal): Avoid creating rgctx wrappers here,
2610         do it in the trampolines.
2611
2612         * mini-trampolines.c (mono_magic_trampoline): Add an rgctx wrapper if
2613         needed.
2614
2615         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
2616         
2617         * method-to-ir.c (mono_method_to_ir): Avoid using the fast virtual method
2618         call code in full-aot mode since IMT is disabled there.
2619         (mono_method_to_ir): Inline ldfld wrappers which return structures too, the
2620         new JIT no longer has that restriction.
2621
2622         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
2623
2624         * aot-compiler.c (emit_extra_methods): Emit the wrapper method names in
2625         a more compact format.
2626         (mono_aot_wrapper_name): New function to return a unique name for a
2627         wrapper method, also used by the AOT runtime.
2628
2629         * aot-runtime.c (find_extra_method_in_amodule): Update after the changes to
2630         aot-compiler.c.
2631
2632         * aot-compiler.c (add_generic_class): Add the helper methods from T[]
2633         when a ICollection<T> etc is encountered.
2634         (add_generic_instances): Process method arguments/locals too.
2635         (emit_trampolines): Emit unbox trampolines for extra methods too. Shorten
2636         trampoline names.
2637
2638         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle extra methods too.
2639         
2640 2009-04-10  Zoltan Varga  <vargaz@gmail.com>
2641
2642         * aot-compiler.c: Disable the AOT compiler if the JIT is disabled.
2643
2644         * dwarfwriter.c (emit_type): Emit byref to reference types as 'int' for now.
2645
2646         * decompose.c (mono_decompose_opcode): Make this return a MonoInst*
2647         representing the result of the decomposition. Nullify instructions
2648         instead of setting them to OP_NOP since nops can't have registers
2649         set.
2650
2651 2009-04-09  Zoltan Varga  <vargaz@gmail.com>
2652
2653         * aot-compiler.c (mono_compile_assembly): Split this huge function into
2654         smaller parts. Add 'nodebug' option to prevent generation of DWARF debug
2655         info. Strip 'mapping symbols' on ARM.
2656
2657         * iltests.il.in (test_0_fconv_to_i): Disable this on ARM too.
2658         
2659         * genmdesc.pl: Applied patch by Martin Fuzzey (mfuzzey@parkeon.com). Sync
2660         this with the native genmdesc.
2661
2662 2009-04-08  Bill Holmes  <billholmes54@gmail.com>
2663
2664         * aot-runtime.c:  Fixing the MSVC build.
2665
2666         Code is contributed under MIT/X11 license.
2667
2668 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
2669
2670         * mini-llvm.c (mono_llvm_emit_method): Pass i1/i2 arguments as i4 since 
2671         JITted code depends on it.
2672
2673 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
2674
2675         * aot-compiler.c: Use new MonoGenericParam accessors.
2676
2677 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
2678
2679         Reduce memory usage and improve correctness wrt MonoGenericParam
2680         * aot-runtime.c (decode_klass_ref): Simplify generic parameter
2681         handing.  Avoid allocating MonoGenericParams, but use the ones in
2682         the container itself.
2683
2684 2009-04-07  Miguel de Icaza  <miguel@novell.com>
2685
2686         * tasklets.c: Return exceptions in the out argument.
2687
2688 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
2689
2690         * mini-llvm.c (mono_llvm_emit_method): Fix alignment in the LOCALLOC_IMM
2691         opcode. Use pointer types in more places instead of casting them to 
2692         integers.
2693
2694         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Create a pass manager to run
2695         optimizations.
2696         (mono_llvm_optimize_method): New helper function to optimize a method.
2697
2698         * method-to-ir.c (mono_emit_widen_call_res): Extract the call result 
2699         widening code so it could be called from more places.
2700         (mono_method_to_ir): Call mono_emit_widne_call_res () in several more
2701         code paths in the call opcodes.
2702
2703 Mon Apr 6 14:19:54 CEST 2009 Paolo Molaro <lupus@ximian.com>
2704
2705         * exceptions-amd64.c, mini-amd64.h: amd64 support code for continuations.
2706
2707 2009-04-06  Zoltan Varga  <vargaz@gmail.com>
2708
2709         * dwarfwriter.c: Use _ to separate class name 
2710         components as gdb can't handle '.'. Represent reference variables
2711         as 'class <NAME>&'.
2712         
2713         * mini.h (MonoCompile): Add locals_min_stack_offset/locals_max_stack_offset.
2714
2715         * mini-amd64.c (mono_arch_allocate_vars): Save min/max stack offset.
2716         
2717         * mini-gc.c: New file, contains the SGEN GC related parts of the JIT.
2718
2719         * gc-test.cs: New file with GC stack marking tests.
2720         
2721         * mini-arm.c (mono_arch_output_basic_block): Fix int->float conversion of
2722         negative numbers for vfp.
2723
2724         * basic-float.cs: Add a test.
2725         
2726 Mon Apr 6 14:12:10 CEST 2009 Paolo Molaro <lupus@ximian.com>
2727
2728         * exceptions-x86.c, mini-x86.h: x86 support code for continuations.
2729
2730 Mon Apr 6 14:09:53 CEST 2009 Paolo Molaro <lupus@ximian.com>
2731
2732         * tasklets.h, tasklets.c, mini.h, mini.c, Makefile.am: arch-indep
2733         part of tasklet/continuation support.
2734
2735 2009-04-05  Zoltan Varga  <vargaz@gmail.com>
2736
2737         * mini-llvm.c (mono_llvm_emit_method): Move the handling of
2738         amd64 opcodes inside an ifdef.
2739
2740         * dwarfwriter.c: Emit inheritance information for classes, emit fields
2741         of complex types.
2742         
2743         * dwarfwriter.c (emit_type): Emit the class info for classes.
2744
2745 2009-04-04  Zoltan Varga  <vargaz@gmail.com>
2746
2747         * Makefile.am (AM_CXXFLAGS): Add GLIB_CFLAGS to this.
2748
2749         * mini-llvm-cpp.h: New header file for mini-llvm-cpp.cpp.
2750
2751         * mini-llvm.c: Remove unused fields from EmitContext, fix memory leaks.
2752
2753         * ssa.c (mono_ssa_compute): Fix some memory leaks.
2754
2755 2009-04-03  Zoltan Varga  <vargaz@gmail.com>
2756
2757         * mini.c mini-amd64.c method-to-ir.c: Use COMPILE_LLVM in a few more places.
2758
2759         * mini-llvm.c: Update comments.
2760
2761         * mini.h (COMPILE_LLVM): New macro.
2762
2763         * decompose.c (mono_decompose_opcode): Use the COMPILE_LLVM macro.
2764
2765         * ssa.c (mono_ssa_compute): Ditto.
2766         
2767         * unwind.c (mono_unwind_get_ops_from_fde): New helper function to extract
2768         the unwind ops from a DWARF FDE.
2769
2770         * mini-llvm.c: Implement generation of unwind info for LLVM compiled
2771         methods by extracting the dwarf unwind ops from the unwind info generated
2772         by LLVM.
2773         
2774         * mini-llvm.c (mono_llvm_emit_method): Enable support for non-IMT virtual
2775         calls.
2776
2777         * mini-amd64.c (mono_arch_get_vcall_slot): Handle more kinds of the SIB
2778         addressing modes.
2779
2780 2009-04-02  Zoltan Varga  <vargaz@gmail.com>
2781
2782         * Makefile.am (llvm_sources): Enable this.
2783
2784         * mini.c (mini_method_compile): Add support for compiling with LLVM, 
2785         failing back to the JIT if something cannot be handled.
2786
2787         * mini-amd64.c (mono_arch_emit_call): Emit the arguments more simple when
2788         compiling with LLVM.
2789
2790         * decompose.c (mono_decompose_opcode): Avoid decomposing some opcodes when
2791         compiling with LLVM.
2792
2793         * method-to-ir.c (mono_method_to_ir): Avoid decomposing SWITCH when 
2794         compiling with LLVM.
2795
2796         * mini-ops.h: Add a few opcodes needed by LLVM.
2797
2798         * dwarfwriter.c (mono_dwarf_writer_emit_method): Avoid crashes if the method
2799         has no unwind info.
2800
2801         * mini-llvm.c mini-llvm-cpp.cpp: New files containing the experimental llvm
2802         backend.
2803
2804         * mini-arm.c (mono_arch_output_basic_block): Fix the ARM_FPU_NONE build.
2805
2806         * mini-arm.h mini-arm.c cpu-arm.md: Finish VFP support.
2807
2808 2009-04-01  Mark Probst  <mark.probst@gmail.com>
2809
2810         * regalloc.h, mini-codegen.c: Make vassign members gint32 to fix
2811         ridiculously large methods.
2812
2813 2009-03-31  Martin Baulig  <martin@ximian.com>
2814
2815         * debug-debugger.c (debugger_remove_breakpoint): Call
2816         mono_debugger_remove_class_init_callback ().
2817
2818 2009-03-31  Zoltan Varga  <vargaz@gmail.com>
2819
2820         * aot-compiler.c (mono_compile_assembly): Call img_writer_emit_start ()
2821         right before emitting code, not at the start.
2822
2823         * mini.c (mono_postprocess_patches): Extract this into a separate function
2824         from mono_codegen ().
2825
2826         * ssa.c (mono_ssa_compute): Set ins->klass for every PHI node, handle
2827         byref types correctly.
2828
2829 2009-03-30  Zoltan Varga  <vargaz@gmail.com>
2830
2831         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix a crash introduced
2832         by the last change.
2833
2834 2009-03-29  Zoltan Varga  <vargaz@gmail.com>
2835
2836         * mini-amd64.c (mono_arch_output_basic_block): Emit a few nops before 
2837         indirect calls, this avoids problems where get_vcall_slot () would get
2838         confused by the native code for the instruction preceeding the call.
2839         (mono_arch_get_vcall_slot): Simplify this.
2840         (mono_arch_emit_imt_argument): Remove this, it is no longer needed.
2841
2842         * mini-ops.h: Fix the definitions of the OP_IA64 opcodes, since the local
2843         register allocator now seems to depend on them instead of the data in
2844         cpu-<ARCH>.md.
2845
2846         * mini.c (mini_method_compile): Throw the correct type of exception if
2847         mono_method_get_header () fails because of a loading error.
2848
2849 2009-03-28  Zoltan Varga  <vargaz@gmail.com>
2850
2851         * mini.c (mini_method_compile): Clear the loader error if the method
2852         header cannot be decoded.
2853
2854         * mini-trampolines.c (mono_magic_trampoline): Handle generic virtual 
2855         interface methods on proxies correctly.
2856
2857         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix handling of the
2858         this argument for vtype methods. Add precise liveness info for arguments.
2859
2860         * mini-codegen.c (mono_print_ins_index): Print the vreg of the
2861         LIVERANGE_START/END opcodes.
2862
2863         * method-to-ir.c (mono_spill_global_vars): Fix liverange calculation
2864         for arguments and values in registers.
2865
2866 2009-03-27  Zoltan Varga  <vargaz@gmail.com>
2867
2868         * method-to-ir.c (mono_method_to_ir): Disable tail calls for calls which
2869         return a valuetype. Fixes #487518.
2870
2871         * iltests.il: Add a test.
2872         
2873         * aot-compiler.c: Use mono_thread_create () to create helper threads.
2874
2875         * mini-trampolines.c (mono_delegate_trampoline): Handle static delegates
2876         closed over a null reference correctly.
2877
2878 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
2879
2880         * method-to-ir.c (mono_handle_global_vregs): Fix support for ternary ops.
2881
2882 2009-03-25  Mark Probst  <mark.probst@gmail.com>
2883
2884         * mini-codegen.c (mono_local_regalloc): Don't let sregs get
2885         allocated to the same registers as fixed sregs.
2886
2887 2009-03-24  Mark Probst  <mark.probst@gmail.com>
2888
2889         * mini-ops.h: New ternary ATOMIC_CAS ops replace the old
2890         ATOMIC_CAS_IMM ops.
2891
2892         * method-to-ir.c: Handle more cases for
2893         Interlocked.CompareExchange.
2894
2895         * cpu-x86.md, mini-x86.c, mini-x86.h, cpu-amd64.md, mini-amd64.c,
2896         mini-amd64.h, cpu-ppc.md, cpu-ppc64.md, mini-ppc.c, mini-ppc.h:
2897         ATOMIC_CAS implementations for x86, AMD64, PPC and PPC64.
2898
2899 2009-03-23  Zoltan Varga  <vargaz@gmail.com>
2900
2901         * aot-runtime.c (decode_method_ref): Fix a warning.
2902
2903         * unwind.c (mono_unwind_frame): Ditto.  
2904
2905 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
2906
2907         * aot-compiler.c (arch_emit_unbox_trampoline): Fix the binary writer support.
2908         (mono_compile_assembly): Enable the binary writer for full-aot as well.
2909
2910         * image-writer.c (do_reloc): Add support for the JUMP24 relocation,
2911         fix the handling of large values in the ALU_PC_G0_NC relocation.
2912
2913 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
2914
2915         * local-propagation.c method-to-ir.c local-propagation.c: Fix warnings.
2916
2917 2009-03-22  Mark Probst  <mark.probst@gmail.com>
2918
2919         * method-to-ir.c (mono_spill_global_vars): Support for ternary
2920         ops.
2921
2922 2009-03-22  Mark Probst  <mark.probst@gmail.com>
2923
2924         * method-to-ir.c: MINI_OP3 needs a comma.
2925
2926         * method-to-ir.c, mini.h, mini.c: Remove
2927         mono_init_op_sreg_counts ().
2928
2929 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
2930
2931         * mini-arm.c (mono_arch_output_basic_block): Fix aot support in
2932         OP_JMP.
2933         
2934         * mini-arm.c (mono_arch_build_imt_thunk): Disable the !fail_tramp
2935         assertion.
2936
2937         * mini-ops.h: Fix arguments of the MEMINDEX opcodes.
2938
2939         * mini-amd64.c (mono_arch_build_imt_thunk): Simplify the fail handling
2940         code somewhat.
2941
2942 2009-03-21  Mark Probst  <mark.probst@gmail.com>
2943
2944         * cfold.c, cprop.c, decompose.c, genmdesc.c, helpers.c, ir-emit.h,
2945         liveness.c, local-propagation.c, method-to-ir.c, mini-codegen.c,
2946         mini.c, mini.h, simd-intrinsics.c, ssa.c: Support for ternary IR
2947         operations.
2948
2949 2009-03-20  Zoltan Varga  <vargaz@gmail.com>
2950
2951         * driver.c: Change location of gc_wrapper.h.
2952
2953         * method-to-ir.c (mono_find_block_region): Handle try clauses nested
2954         inside finally clauses correctly. Fixes #485721.
2955
2956         * mini.c (mono_find_spvar_for_region): This needs to handle try regions
2957         after the change above.
2958
2959         * exceptions.cs: Add a test.
2960         
2961 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
2962
2963         * unwind.c (mono_unwind_ops_encode): Increase the size of the encode buffer.
2964
2965         * mini-amd64.c (mono_arch_emit_epilog): Remove the encoding of stack size
2966         into cfg->used_int_regs, it is not needed with the dwarf unwinder.
2967         (mono_arch_compute_omit_fp): Remove the emit_epilog () workaround.
2968
2969         * mini-amd64.c (mono_arch_compute_omit_fp): Add another check to avoid hitting
2970         the stack_alloc_size < (1 << 16) assertion in emit_prolog ().
2971
2972 2009-03-19  Sebastien Pouliot  <sebastien@ximian.com>
2973
2974         * method-to-ir.c: Allow CoreCLR to throw FieldAccessException. 
2975         Simplify logic for ensure_method_is_allowed_to_call_method. 
2976         Handle wrappers on callers.
2977
2978 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
2979
2980         * Makefile.am (fullaotcheck): Don't run the generics tests, some of
2981         them don't run yet.
2982
2983         * basic-simd.cs: Fix the names of some test methods.
2984
2985 2009-03-18  Geoff Norton  <gnorton@novell.com>
2986
2987         * mini.c: Only chain sigfpe if it wasn't generated in mangaed code.
2988
2989 2009-03-18  Zoltan Varga  <vargaz@gmail.com>
2990
2991         * dwarfwriter.c (token_handler): Fix a crash caused by the last change.
2992
2993 2009-03-17  Jb Evain  <jbevain@novell.com>
2994
2995         * driver.c: remove now uneeded call to mono_gc_base_init before
2996         mono_profiler_load.
2997
2998 2009-03-17  Jb Evain  <jbevain@novell.com>
2999
3000         * dwarfwriter.c (token_handler): handle more cases.
3001
3002 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com> 
3003
3004         * method-to-ir.c: Remove more dead code (that was required only
3005         because of method_is_safe). Fix compiler warnings.
3006
3007 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com>
3008
3009         * method-to-ir.c: Remove unneeded/useless method_is_safe
3010         http://lists.ximian.com/archives/public/mono-devel-list/2009-March/031404.html
3011
3012 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
3013
3014         * mini.c (mini_method_compile): Print the method been compiled with
3015         verbose level 1 instead of 3 as this helps a lot debugging JIT crashes
3016         for people not familiar with the runtime.
3017
3018 2009-03-17  Zoltan Varga  <vargaz@gmail.com>
3019
3020         * mini-exceptions.c (get_generic_info_from_stack_frame): Avoid returning
3021         a managed object which is later put into a GList. Return its class instead.
3022
3023         * mini.c (mono_allocate_stack_slots_full): Avoid sharing ref and non-ref
3024         stack slots when using sgen.
3025
3026 2009-03-16  Zoltan Varga  <vargaz@gmail.com>
3027
3028         * dwarfwriter.c (emit_line_number_info): Really fix the eglib build.
3029
3030 2009-03-14  Zoltan Varga  <vargaz@gmail.com>
3031
3032         * local-propagation.c (reg_is_softreg_no_fpstack): Use >= instead of
3033         > so it works on the first vreg as well.
3034
3035 2009-03-13  Zoltan Varga  <vargaz@gmail.com>
3036
3037         * dwarfwriter.c (emit_line_number_info): Disable an assert which seems to
3038         trigger randomly.
3039
3040         * aot-compiler.c: Get rid of xdebug_lock (), use the loader lock instead.
3041         
3042         * dwarfwriter.c (emit_line_number_info): Fix eglib build as eglib doesn't
3043         implement GArray.
3044
3045 2009-03-12  Zoltan Varga  <vargaz@gmail.com>
3046
3047         * dwarfwriter.c (emit_line_number_info): Optimize the computation of the
3048         native->IL offset mapping.
3049
3050 2009-03-11  Zoltan Varga  <vargaz@gmail.com>
3051
3052         * mini-amd64.c (mono_arch_output_basic_block): Fix % 1. Fixes #484323.
3053
3054         * basic.cs: Add a test.
3055
3056 2009-03-11  Mark Probst  <mark.probst@gmail.com>
3057
3058         * mini-x86.c (mono_arch_output_basic_block): Use different
3059         registers in case the ones we want to overwrite are used by the
3060         other operand.  Fixes regression in #480807.
3061
3062 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
3063
3064         * aot-compiler.c (mono_compile_assembly): Make the output less verbose.
3065
3066         * dwarfwriter.c (emit_line_number_info): The line number info for
3067         IL code was off by one. Fix that.
3068
3069         * mini-s390x.c: Fix support for vtypes whose addresses are passed on the
3070         stack.
3071
3072 2009-03-09  Mark Probst  <mark.probst@gmail.com>
3073
3074         Contributed under the terms of the MIT/X11 license by Steven
3075         Munroe <munroesj@us.ibm.com>.
3076
3077         * mini-ppc.c: Correct handling of OP_LOADI4_MEMINDEX for ppc64.
3078         Fixes #483462.
3079
3080 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
3081
3082         * dwarfwriter.c (token_handler): Decode method references in non-wrappers
3083         as well.
3084
3085 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
3086
3087         * method-to-ir.c (mono_method_to_ir): Check for type load exceptions in
3088         the delegate ctor handling code. Fixes #482638.
3089         
3090         * method-to-ir.c (mini_emit_memset): Fix the handling of size '3'. Fixes
3091         #481458.
3092
3093         * iltests.il.in: Add a test.
3094         
3095         * mini-darwin.c (mono_chain_signal): Remove this, it is already in
3096         mini-posix.c.
3097
3098 2009-03-05  Mark Probst  <mark.probst@gmail.com>
3099
3100         * mini-trampolines.c (mono_create_jump_trampoline): If the method
3101         is shared generic code, return the trampoline, even if the method
3102         has already been compiled.  Fixes #479763.
3103
3104         * mini.c, mini.h: New function
3105         mono_jit_find_compiled_method_with_jit_info() which is the same as
3106         mono_jit_find_compiled_method() but also returns the jit info.
3107
3108 2009-03-05  Mark Probst  <mark.probst@gmail.com>
3109
3110         * method-to-ir.c (mono_method_to_ir): Only force the vtable var
3111         for methods which actually have one.  For all other methods, make
3112         sure the this argument var is live the whole method.
3113
3114         * mini.c (mini_method_compile): Every shared method has a
3115         this/vtable/mrgctx info.  Fixes #480807.
3116
3117 2009-03-05  Mark Probst  <mark.probst@gmail.com>
3118
3119         * mini-ppc.c (mono_arch_build_imt_thunk): Add support for mixed
3120         generic/imt thunks where some entries branch through the vtable,
3121         while other entries branch directly.
3122
3123 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
3124
3125         * mini-darwin.c (mono_chain_signal): Define this to fix the build.
3126
3127         * mini-windows.c: Ditto.
3128         
3129         * mini.c (mono_jit_runtime_invoke): Speed up the invoking of parameterless
3130         ctors.
3131
3132 2009-03-04  Zoltan Varga  <vargaz@gmail.com>
3133
3134         * dwarfwriter.c (emit_line_number_info): Add some debug code to help track
3135         down an assert.
3136
3137 2009-03-04  Mark Probst  <mark.probst@gmail.com>
3138
3139         * method-to-ir.c: Don't inline methods that use JMP.  Fixes
3140         #481403.
3141
3142 2009-03-04  Mark Probst  <mark.probst@gmail.com>
3143
3144         * exceptions-x86.c: Include debug-mini.h - fixes build.
3145
3146 2009-03-04  Martin Baulig  <martin@ximian.com>
3147
3148         * debug-mini.c: Clean up the exception API and add documentation.
3149         (mono_debugger_handle_exception): New public method; this is
3150         called when throwing an exception or encountering an unhandled one.
3151         (mono_debugger_call_exception_handler): Formerly known as
3152         mono_debugger_handle_exception(); this is used to tell the
3153         debugger that we're about to invoke an exception handler.
3154
3155 2009-03-04  Martin Baulig  <martin@ximian.com>
3156
3157         * debug-mini.c (mono_debugger_runtime_invoke): Moved here from
3158         ../metadata/mono-debug-debugger.c; save and reset exception state.
3159
3160 2009-03-02  Martin Baulig  <martin@ximian.com>
3161
3162         * debug-mini.c: Moved the debugger exception handling here from
3163         ../metadata/mono-debug-debugger.c.
3164
3165         * debug-mini.h
3166         (MonoDebuggerExceptionAction): New exception typedef.
3167
3168         * debug-mini.c
3169         (MonoDebuggerThreadInfo): Added `MonoObject *last_exception'.
3170
3171         * exceptions-amd64.c
3172         (mono_amd64_throw_exception): Use the new debugger exception
3173         handling code.
3174
3175         * mini-exceptions.c
3176         (mono_handle_exception_internal): Don't call
3177         mono_debugger_unhandled_exception() here.
3178
3179 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
3180
3181         * mini.c aot-compiler.c: Update after the changes to 
3182         mono_marshal_get_runtime_invoke ().
3183
3184         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): 
3185         Virtual generic methods might not have method->slot set, work around
3186         that.
3187
3188         * generics.cs: Add a test.
3189
3190 2009-03-02  Geoff Norton  <gnorton@novell.com>
3191
3192         * mini.c:
3193         * driver.c: Allow signal chaining of SIGFPE as well.
3194
3195 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
3196
3197         * mini-trampolines.c (mono_generic_virtual_remoting_trampoline): Update
3198         this since it now receives the method not its generic context in the
3199         IMT reg.
3200
3201         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for mixed
3202         generic/imt thunks where some entries branch through the vtable, while
3203         other entries branch directly.
3204
3205         * mini-x86.c (mono_arch_build_imt_thunk): Ditto.
3206
3207         * method-to-ir.c (mono_method_to_ir): Enable fast virtual generic call 
3208         support for interface methods as well.
3209
3210         * mini-trampolines.c: Add support for virtual generic methods in interfaces
3211         using the normal IMT thunks.
3212
3213         generics.cs: Add new tests.
3214         
3215         * method-to-ir.c (mono_method_to_ir): Pass the method instead of
3216         the generic inst to the generic imt thunks. This fixes AOT support, 
3217         improves consistency with the normal IMT thunks, and makes it easier to
3218         add support for interface generic virtual methods later.
3219
3220         * mini-trampolines.c (mono_magic_trampoline): Ditto.    
3221         
3222 2009-02-28  Zoltan Varga  <vargaz@gmail.com>
3223
3224         * driver.c (mono_set_signal_chaining): New public API function to enable
3225         signal chaining on POSIX platforms.
3226
3227         * mini-posix.c mini.c: Applied a variant of a patch by Simon Rowland 
3228         (si@lindenlab.com) to implement signal chaining. The original patch was
3229         contributed under the MIT X/11 license:
3230         https://bugzilla.novell.com/show_bug.cgi?id=318894
3231
3232 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
3233
3234         * iltests.il.in (test_0_implicit_float_to_double_conversion): Disable this
3235         too until it can be made to run on amd64.
3236
3237 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
3238
3239         * mini-x86.c (mono_arch_get_this_arg_from_call): Avoid expensive calls
3240         to  get_generic_context_from_code () + get_call_info () if possible.
3241
3242 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
3243
3244         * mini-exceptions.c (mono_handle_native_sigsegv): Implement the
3245         suspend-on-sigsegv functionality.
3246
3247         * mini.c (mini_parse_debug_options): Add a new 'suspend-on-sigsegv' option
3248         to suspend when a native SIGSEGV is received. This is useful for debugging
3249         crashes which don't happen under gdb, since a live process contains more
3250         information than a core file.
3251
3252         * mini-exceptions.c (mono_print_thread_dump): Use 
3253         MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX instead of platform defines.
3254
3255         * mini-x86.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): New define.
3256
3257         * mini-amd64.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): Ditto.
3258         
3259         * basic-float.cs: Disable the tests which currently fail on amd64.
3260
3261         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass a non-null 
3262         value to mono_arch_patch_callsite () to fix crashes.
3263         
3264         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix a warning.
3265
3266 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
3267
3268         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Replace the
3269         nop code by patching the call address to point to the nullified class init
3270         trampoline, as the former does not seem to be safe on SMP machines.
3271
3272 2009-02-23  Mark Probst  <mark.probst@gmail.com>
3273
3274         * mini-ops.h: Fix the argument types for a few x86 opcodes where
3275         they were wrong.
3276
3277 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
3278
3279         * basic-float.cs basic-calls.cs: Fix warnings.
3280
3281 2009-02-22  Mark Probst  <mark.probst@gmail.com>
3282
3283         * tramp-ppc.c (mono_arch_create_trampoline_code): Store the
3284         correct frame pointer in the LMF.  Should fix #478394.
3285
3286 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
3287
3288         * Makefile.am (fullaotcheck): Copy Mono.Simd.dll as well.
3289
3290         * image-writer.c: Make the binary writer less verbose.
3291
3292 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
3293
3294         * method-to-ir.c (mono_method_to_ir): Don't assert if string ctors
3295         are called from runtime invoke wrappers.
3296
3297 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
3298
3299         * cpu-ppc.md (store_memindex): Increase the size of this.
3300
3301 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
3302
3303         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
3304
3305         * cpu-x86.md: Fix the sizes for long_conv_to_r_un and long_conv_to_r_un_2.
3306
3307         * mini-x86.c (mono_arch_output_basic_block): Use only 64bits of precision for
3308         OP_LCONV_TO_R_UN.
3309
3310         Last fix for of #467201.
3311
3312
3313 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
3314
3315         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
3316
3317         * cpu-x86.md: Fix the sizes for fcall(_reg,_membase), long_conv_to_r4_2
3318         and long_conv_to_r8_2:
3319
3320         Fixed part of #467201.
3321
3322 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
3323
3324         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
3325
3326         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of int to float
3327         conversion to 32 bits.
3328
3329         * cpu-x86.md: Increase the size of int_conv_to_r4.
3330
3331         * basic-float.cs: Add a test for this.
3332
3333         Fixed part of #467201.
3334
3335 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
3336
3337         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
3338
3339         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of long to double
3340         conversion to 64 bits.
3341
3342         * basic-float.cs: Add a test for this.
3343
3344         Fixed part of #467201.
3345
3346 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
3347
3348         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
3349
3350         * mini-x86.c (emit_move_return_value): Don't reduce precision of functions returning float.
3351         This behavior is compatible with MS.
3352
3353         * iltest.il.in: Add a test for this.
3354
3355         Fixed part of #467201.
3356
3357 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
3358
3359         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
3360
3361         * mini-x86.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_R4, it must
3362         change the precision of the value.
3363
3364         * cpu-x86.md: Define len for float_conv_to_r4.
3365
3366         * basic-float.cs: Add a test for this.
3367
3368         Fixed part of #467201.
3369
3370 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
3371
3372         * mini.c: Adjust locking order to the new semantics where the loader lock
3373         comes first.
3374
3375 2009-02-18  Rodrigo Kumpera  <rkumpera@novell.com>
3376
3377         * aot-runtime.c:
3378         * mini-amd64.c:
3379         * mini-arm.c:
3380         * mini-ia64.c:
3381         * mini-mips.c:
3382         * mini-ppc.c:
3383         * mini-sparc.c:
3384         * mini-trampolines.c:
3385         * mini-x86.c:
3386         * mini.c:
3387         * tramp-alpha.c:
3388         * tramp-amd64.c:
3389         * tramp-arm.c:
3390         * tramp-hppa.c:
3391         * tramp-ia64.c:
3392         * tramp-mips.c:
3393         * tramp-ppc.c:
3394         * tramp-s390.c:
3395         * tramp-s390x.c:
3396         * tramp-sparc.c:
3397         * tramp-x86.c: Use mono_domain_code_* functions instead of using MonoDomain::code_mp directly.
3398
3399 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
3400
3401         * mini-codegen.c (mono_local_regalloc): Remove a ! from if (!dest_sreg1)
3402         as it is incorrect.
3403
3404 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
3405
3406         * aot-compiler.c (add_generic_class): Only add rgctx invoke wrappers
3407         for cctors if needed.
3408
3409 2009-02-17  Mark Probst  <mark.probst@gmail.com>
3410
3411         * mini-ppc.c: Fix build on Darwin.
3412
3413 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
3414
3415         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Use 2 as the DWARF
3416         version instead of 3 as valgrind doesn't like version 3.
3417
3418         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
3419
3420         * aot-compiler.c (mono_aot_method_hash): New function to return a hash
3421         usable for hashing methods.
3422         (emit_extra_methods): Use the new hash to avoid putting every method in the
3423         same hash bucket.
3424
3425         * aot-runtime.c (find_extra_method_in_amodule): Use the new hash.
3426
3427         * aot-runtime.c (can_method_ref_match_method): New function to quickly check
3428         whenever a method ref could match a method.
3429         
3430         * aot-runtime.c (load_image): Revert the previous change, it causes an AOT
3431         test to fail.
3432         
3433         * aot-runtime.c (find_extra_method_in_amodule): Add a cache for decoded 
3434         methods refs.
3435
3436         * aot-runtime.c (load_image): Pass our basedir to mono_assembly_load.
3437
3438         * aot-compiler.c (emit_exception_debug_info): Bump the maximum size of
3439         the encoding buffer.
3440
3441         * method-to-ir.c (mono_method_check_inlining): Avoid calling 
3442         mono_method_get_header () on inflated methods as an optimization.
3443
3444 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
3445
3446         * ssa.c (fold_ins): Fix another crash if the instruction following the
3447         switch was optimized away.
3448
3449 2009-02-16  Mark Probst  <mark.probst@gmail.com>
3450
3451         Contributed under the terms of the MIT/X11 license by Steven
3452         Munroe <munroesj@us.ibm.com>.
3453
3454         * mini-ppc.c, mini-ppc.h: Implement TLS for PPC64.
3455
3456 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
3457
3458         * mini.c method-to-ir.c mini-trampolines.c aot-runtime.c: Remove locking
3459         around the mono_domain_alloc calls, it is now done by the functions
3460         themselves.
3461
3462         * aot-compiler.c (compile_method): Only add wrappers referenced by
3463         the method if compiling with full AOT.
3464         (mono_compile_assembly): Error out if --aot=full is specified on
3465         a platform where it is not supported.
3466
3467         * aot-compiler.c (emit_trampolines): Emit generic class init trampolines
3468         on ARM too.
3469
3470         * tramp-arm.c (mono_arch_create_generic_class_init_trampoline_full): Add
3471         AOT support.
3472
3473         * aot-runtime.c (load_named_code): Handle 
3474         mono_arm_throw_exception_by_token.
3475
3476         * mini-arm.h: Add declaration of mono_arm_throw_exception_by_token.
3477
3478         * image-writer.c (asm_writer_emit_pointer_unaligned): Make this really
3479         unaligned.
3480
3481         * Makefile.am (fullaotcheck): Exit if a test fails.
3482
3483         * aot-compiler.c (mono_compile_assembly): Use the ASM writer for full aot
3484         on ARM.
3485         (mono_compile_assembly): Handle the assembler failing.
3486
3487         * image-writer.c (asm_writer_emit_section_change): Handle ARM gas not
3488         accepting subsections of .bss.
3489
3490         * ssa.c (visit_inst): Fix a crash if the instruction following a switch
3491         was optimized away.
3492
3493         * aot-compiler.c: Remove some unused includes.
3494         
3495         * aot-compiler.c (MonoAotCompile): Remove some unused fields which are
3496         now in MonoImageWriter.
3497
3498         * mini-x86.c (mono_arch_get_vcall_slot): Handle yet another
3499         code sequence which matches a non-virtual call. Fixes #472654.
3500
3501 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
3502
3503         * aot-compiler.c: Use xdebug_lock ()/unlock () macros for locking in the
3504         xdebug code.
3505         
3506         * aot-compiler.c: Make the xdebug code not depend on the AOT compiler,
3507         use the image/dwarf writers directly.
3508
3509         * image-writer.c (struct _MonoImageWriter): Remove the unused 'image'
3510         field.
3511
3512         * aot-compiler.c (MonoAotCompile): Remove fields which are now in
3513         MonoDwarfWriter.
3514
3515         * image-writer.h: Fix some typos.
3516
3517         * dwarfwriter.h dwarfwriter.c: New files.
3518         
3519         * aot-compiler.c: Extract the DWARF info writing functionality into a 
3520         separate module.
3521
3522         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add a 'out_unwind_ops'
3523         argument to return unwind info.
3524
3525         * tramp-arm.c (mono_arch_create_trampoline_code_full): Ditto.
3526
3527         * aot-compiler.c: Emit unwind info for trampolines in full-aot mode.
3528         
3529         * aot-runtime.c (decode_method_ref): Add a case for 
3530         MONO_AOT_METHODREF_WRAPPER_NAME.
3531
3532         * mini.h: Add constants for the magic numbers used in encode_method_ref ()
3533         for AOT.
3534
3535         * aot-compiler.c (encode_method_ref): Use the new constants.
3536
3537         * aot-runtime.c (decode_method_ref): Ditto.
3538
3539         * aot-compiler.c (compile_method): For generic icalls, queue the wrapper to
3540         be compiled, not the icall itself.
3541
3542 2009-02-14  Zoltan Varga  <vargaz@gmail.com>
3543
3544         * aot-runtime.c (find_extra_method_in_amodule): Avoid decoding wrapper names
3545         using decode_method_ref ().
3546
3547         * method-to-ir.c (mini_emit_ldelema_1_ins): If the array index is a long,
3548         convert it to an in32. Fixes #475859.
3549
3550         * arrays.cs: Add a test.
3551
3552 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
3553
3554         * mini-s390x.c (mono_arch_output_basic_block): Fix the shift amounts in 
3555         OP_LCONV_TO_U2.
3556
3557         * basic-long.cs: Add a test.
3558
3559 2009-02-12  Mark Probst  <mark.probst@gmail.com>
3560
3561         * mini-x86.c, mini-x86.h: Very simple frame pointer removal.  We
3562         remove the frame pointer in leaf methods which don't receive any
3563         arguments, don't throw exceptions and don't do dynamic stack
3564         allocations.
3565
3566 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
3567
3568         * mini-amd64.c (mono_arch_build_imt_thunk): Fix size calculation after
3569         the fail_tramp changes. Hopefully fixes #475132.
3570
3571 2009-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
3572
3573         * method-to-ir.c (mono_emit_method_call_full): Use mono_metadata_signature_dup_mempool
3574         instead of mono_metadata_signature_dup_full.
3575
3576 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
3577
3578         * ssa.c (fold_ins): Use MONO_IS_JUMP_TABLE () and MONO_JUMP_TABLE_FROM_INS ()
3579         for processing jump tables. Fixes #473787.
3580
3581 2009-02-11  Mark Probst  <mark.probst@gmail.com>
3582
3583         * mini-generic-sharing.c: mini_method_get_context() just calls
3584         mono_method_get_context_general() now.
3585
3586         * mini.c, mini.h: Moved get_object_generic_inst(),
3587         construct_object_context_for_method() and
3588         mono_domain_lookup_shared_generic() to metadata/generic-sharing.c.
3589
3590 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
3591
3592         * branch-opts.c (mono_if_conversion): Handle the case where the merged 
3593         basic block fell through to its successor bblock without a branch. Fixes
3594         #474718.
3595
3596         * iltests.il.in: Add a test.
3597         
3598         * aot-compiler.c (encode_method_ref): Encode methods of array types.
3599         (can_encode_patch): We can now handle arrays of generic parameters and
3600         array methods.
3601
3602         * aot-runtime.c (decode_method_ref_2): Handle methods of array types.
3603
3604         * aot-compiler.c aot-runtime.c: Emit the size of specific trampolines into
3605         the AOT file to avoid some #ifdefs in aot-runtime.c
3606
3607         * mini.h: Bump AOT file format version.
3608
3609 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
3610
3611         * Makefile.am (fullaotcheck): Make this run the tests.
3612
3613         * aot-compiler.c: Make the printing of skipped methods runtime configurable.
3614
3615 2009-02-10  Mark Probst  <mark.probst@gmail.com>
3616
3617         * mini-x86.c (mono_arch_context_get_int_reg): Handle all registers
3618         individually.  Fixes #473482.
3619
3620 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
3621
3622         * mini-arm.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
3623
3624 2009-02-09  Jeffrey Stedfast  <fejj@novell.com>
3625
3626         * aot-compiler.c (arch_emit_plt_entry): Fixed to compile.
3627         (mono_compile_assembly): Hush compile warnings about
3628         uninitialized [tmp_]outfile_name variables in the !use_bin_writer
3629         code path.
3630
3631 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
3632
3633         * exceptions-arm.c (mono_arch_find_jit_info): Fix aot support.
3634
3635         * mini-arm.c: Checkin unwind related changes missing from an earlier commit.
3636
3637         * aot-compiler.c: Fix arm support.
3638
3639         * image-writer.c: Move the R_ARM constants to image-writer.h. Export a
3640         img_writer_emit_unset_mode () function.
3641
3642         * unwind.c (mono_unwind_get_dwarf_data_align): New helper function.
3643         (mono_unwind_get_dwarf_pc_reg): Ditto.
3644
3645         * aot-compiler.c (emit_dwarf_abbrev): Another large reorganization.
3646         Move almost all platform specific code to a set of arch_ functions, 
3647         and document them to ease porting.
3648         
3649         * aot-compiler.c (mono_xdebug_init): Fix xdebug support.
3650
3651         * image-writer.h image-writer.c: New files, extracted from aot-compiler.c.
3652
3653         * aot-compiler.c: Extract the image writing functionality into a separate
3654         module to reduce the size of this file.
3655
3656 2009-02-09  Geoff Norton  <gnorton@novell.com>
3657
3658         * mini-s390.c: Fix the signature of emit_sig_cookie.
3659
3660 2009-02-09  Zoltan Varga  <vargaz@gmail.com>
3661
3662         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_IMAGE.
3663
3664         * aot-runtime.c (is_shared_got_patch): Ditto.
3665
3666         * aot-runtime.c (load_named_code): Cope with the fact that 
3667         decode_got_entry () won't decode the patch fully if its corresponding got
3668         entry is already filled.
3669         
3670         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): 
3671         Initialize *ji.
3672         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
3673
3674         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code'
3675         as the moving pointer instead of 'buf' for consistency with the rest of the
3676         codebase.
3677         (mono_arch_create_monitor_exit_trampoline): Ditto.
3678
3679         * aot-compiler.c (emit_trampolines): Add throw_pending_exception/
3680         generic_class_init trampolines.
3681         (add_generic_class): Extract some code from add_generic_instances () into a
3682         separate function so it can be called from other places too.
3683         (compile_method): Call add_generic_class () for the classes of inflated methods
3684         referenced by the method.
3685         (can_encode_patch): Allow references to generic parameters.
3686
3687         * aot-runtime.c: Add support the patches required by the new trampolines.
3688         
3689         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Add full-aot
3690         support.
3691
3692         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline_full): Add
3693         full-aot support.
3694
3695         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Rename
3696         this from get_throw_pending_exception, make the signature full aot compatible.
3697
3698         * Makefile.am (fullaotcheck): New target to run full-aot tests.
3699
3700         * method-to-ir.c (inline_method): Save/Restore cfg->ret_var_set too.
3701
3702         * exceptions.cs: Add a test.
3703
3704 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
3705
3706         * unwind.c (mono_unwind_frame): Eliminate the data_align_factor argument,
3707         use the DWARF_DATA_ALIGN constant instead.
3708
3709         * exception-<ARCH>.c: Update after the above change.
3710
3711         * exceptions-arm.c (mono_arch_find_jit_info): Transition this to use the
3712         dwarf unwinder.
3713
3714         * mini-arm.c: Enable the dwarf unwinder.
3715
3716         * mini-trampolines.c (mono_magic_trampoline): Use mono_class_get_vtable_entry ()
3717         instead of mono_class_setup_vtable ().
3718
3719 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
3720
3721         * exceptions-x86.c (mono_arch_find_jit_info): Transition this to use the
3722         dwarf unwinder.
3723
3724         * mini-x86.h: Enable the dwarf unwinder.
3725
3726 2009-02-06  Raja R Harinath  <harinath@hurrynot.org>
3727
3728         Fix mcs/tests/test-7.cs
3729         * mini-amd64.c (mono_arch_allocate_vars): Revert change from
3730         2009-02-03.
3731
3732 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
3733
3734         * mini.c (print_jit_stats): Remove some unused statistics.
3735
3736 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
3737
3738         * aot-compiler.c (emit_klass_info): Update after MonoClass changes.
3739
3740 2009-02-05  Mark Probst  <mark.probst@gmail.com>
3741
3742         * jit-icalls.c (mono_helper_compile_generic_method): Don't inflate
3743         the method we get from mono_object_get_virtual_method() because
3744         that function does it properly, now.
3745
3746 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
3747
3748         * unwind.c (mono_unwind_ops_encode): Handle offsets greater than 32 between
3749         opcodes. Fixes #472775.
3750
3751 2009-02-05  Mark Probst  <mark.probst@gmail.com>
3752
3753         * mini-exceptions.c (ves_icall_get_frame_info): Account for the
3754         fact that mono_find_jit_info() sometimes returns the context
3755         corresponding to the jit info in new_ctx.  Fixes #472600.
3756
3757 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
3758
3759         * method-to-ir.c mini-hppa.c mini.c trace.c mini-s390x.c aot-compiler.c
3760         mini-s390.c: Use mono_class_enum_basetype () instead of accessing
3761         klass->enum_basetype directly.
3762
3763         * aot-compiler.c (emit_class_dwarf_info): Add support for all possible
3764         enum subtypes.
3765
3766         * unwind.c: Avoid 0 sized arrays.
3767
3768 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
3769
3770         * mini-exceptions.c (mono_setup_altstack): Use a more reasonable altstack
3771         size on systems with 64k pages. Fixes #471389.
3772
3773 2009-02-04  Mark Probst  <mark.probst@gmail.com>
3774
3775         Contributed under the terms of the MIT/X11 license by Steven
3776         Munroe <munroesj@us.ibm.com>.
3777
3778         * mini-ppc.c (mono_arch_output_basic_block): Generate better code
3779         for LOADI4_MEMBASE.  Use addi instead of addic if it's not
3780         necessary.
3781
3782 2009-02-04  Mark Probst  <mark.probst@gmail.com>
3783
3784         Contributed under the terms of the MIT/X11 license by Steven
3785         Munroe <munroesj@us.ibm.com>.
3786
3787         * exceptions-ppc.c (mono_arch_get_restore_context): Code size
3788         comparison fix.
3789
3790         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline):
3791         The trampoline can be longer on PPC64.
3792
3793 2009-02-04  Mark Probst  <mark.probst@gmail.com>
3794
3795         Contributed under the terms of the MIT/X11 license by Steven
3796         Munroe <munroesj@us.ibm.com>.
3797
3798         * mini-ppc.c: Compiler warning fixes and trivial code
3799         simplifications.
3800
3801 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
3802
3803         * method-to-ir.c (mono_spill_global_vars): Fix problems caused by reading
3804         ins->dreg which could be a hardware register, not a vreg.
3805
3806         * aot-compiler.c (emit_method_dwarf_info): Ditto.
3807         
3808         * mini.h (MonoCompile): Remove vreg_to_var_num array, it is no longer used.
3809         (struct MonoMethodVar): Add a vreg field, holding the vreg of variable.
3810
3811         * mini.c (mono_compile_create_var_for_vreg): Set var->vreg.
3812         
3813         * mini-amd64.c (mono_arch_output_basic_block): Avoid reading cfg->varinfo[..]
3814         ->dreg, that is not the vreg we are looking for.
3815
3816         * mini-amd64.h mini-x86.h: Enable MONO_ARCH_LIVENESS_OPS again.
3817
3818         * mini-x86.c (mono_arch_output_basic_block): Add support for LIVERANGE_START/
3819         LIVERANGE_END.
3820
3821         * method-to-ir.c (mono_spill_global_vars): Add an assert to help track down
3822         strange crashes.
3823
3824 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
3825
3826         * mini-x86.c (mono_arch_emit_prolog): Emit unwind info.
3827
3828         * aot-compiler.c (emit_line_number_info): Fix line number emission when
3829         the line diff is 0.
3830
3831         * aot-compiler.c: Add xdebug support on x86.
3832
3833         * unwind.c: Add x86 support.
3834         
3835         * aot-compiler.c (emit_exception_debug_info): Control the emission of
3836         unwind info using a new MONO_ARCH_HAVE_XP_UNWIND define.
3837
3838         * mini.c (mini_method_compile): Ditto.
3839         
3840         * mini-amd64.c (mono_arch_allocate_vars): Avoid setting cfg->ret->dreg to
3841         the variable index.
3842
3843         * aot-compiler.c: Add emit_push_section ()/emit_pop_section () helper functions
3844         which mimic .push_section/.pop_section in GAS.
3845         
3846         * aot-compiler.c: Emit precise live range information for variables.
3847
3848         * mini-amd64.c (mono_arch_output_basic_block): Add OP_LIVERANGE_START/END.
3849
3850         * method-to-ir.c (mono_spill_global_vars): Compute the instructions marking
3851         the live ranges of variables, and emit OP_LIVERANGE_START/END opcodes for
3852         them.
3853
3854         * mini-ops.h: Add OP_LIVERANGE_START/END opcodes to mark
3855         the live ranges of variables.
3856
3857         * mini.h (struct MonoMethodVar): Add two fields containing the live range
3858         of the variable in terms of native offsets.
3859
3860 2009-02-03  Rodrigo Kumpera  <rkumpera@novell.com>
3861
3862         * arrays.cs: Test for Get/SetValue of array with negate lower bounds.
3863         
3864 2009-02-02  Mark Probst  <mark.probst@gmail.com>
3865
3866         Contributed under the terms of the MIT/X11 license by Steven
3867         Munroe <munroesj@us.ibm.com>.
3868
3869         * exceptions-ppc.c (restore_regs_from_context): Correct operand
3870         order (offset then base reg) for ppc_load_multiple_regs.
3871         (emit_save_saved_regs) Correct operand order for
3872         ppc_store_multiple_regs.
3873         (mono_arch_get_call_filter): Correct operand order for
3874         ppc_load_multiple_regs.
3875
3876         * mini-ppc.c (emit_memcpy): Fix operand order for
3877         ppc_load_reg_update and ppc_store_reg_update.
3878         (mono_arch_output_basic_block): Correct operand order for ppc_lha.
3879         (mono_arch_emit_epilog): Correct operand order for
3880         ppc_load_multiple_regs.
3881
3882         * tramp-ppc.c (mono_arch_create_trampoline_code): Correct operand
3883         order for ppc_store_multiple_regs and ppc_load_multiple_regs.
3884
3885 2009-02-02  Mark Probst  <mark.probst@gmail.com>
3886
3887         * cpu-ppc64.md: Fixed storer4_memindex length.
3888
3889 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
3890
3891         * aot-compiler.c (emit_line_number_info): Optimize the size of the emitted
3892         line number info.
3893         
3894         * aot-compiler.c (emit_line_number_info): Optimize this.
3895
3896 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
3897
3898         * aot-compiler.c: Disassemble tokens in the IL disassembly.
3899         
3900         * aot-compiler.c: Add debug info for methods without debug info by
3901         emitting an IL file and having the line number info referencing that file.
3902
3903         * aot-compiler.c: Optimize the size of the generated line number info.
3904
3905         * aot-compiler.c: Emit line number info in xdebug mode.
3906
3907         * aot-compiler.c (mono_save_xdebug_info): Receive a MonoCompile instead of a
3908         million arguments.
3909
3910 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
3911
3912         * aot-compiler.c (emit_method_dwarf_info): Emit names for local variables.
3913
3914         * driver.c (mono_main): Enable debugging support automatically if XDEBUG
3915         is used.
3916
3917 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
3918
3919         * basic-calls.cs: Test for the weird crash found on arm.
3920         
3921 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
3922
3923         * cpu-arm.md: Increase the size of storer8_membase_reg and
3924         loadr8_membase_reg to 24 bytes to accomodate the extra add.
3925
3926         * mini-arm.c (mono_arch_output_basic_block): Under FPA, when emitting
3927         OP_STORER8_MEMBASE_REG and OP_LOADR8_MEMBASE_REG, add the original
3928         reg to LR otherwise we'll be loading/storing from just the offset.
3929
3930 2009-01-30  Miguel de Icaza  <miguel@novell.com>
3931
3932         Question: if we are storing gint32's inside the "*native_offset",
3933         should we change the signature to "gint32 *native_offset" to
3934         ensure that we do not have type definition problems?
3935         
3936         * mini-exceptions.c (ves_icall_get_frame_info): Cast the gint32 to
3937         an int * as this is what the other function expects, causes
3938         problems with Freescale's compiler that defined int32_t to be a
3939         long and makes int incompatible 
3940
3941 2009-01-30  Miguel de Icaza  <miguel@novell.com>
3942
3943         * Rename generic-sharing.c to mini-generic-sharing.c to avoid the
3944         filename conflict with bjam.
3945
3946 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
3947
3948         * cpu-arm.md: Increase the size of storer8_membase_reg to 20 bytes
3949         as it might use decomposed ops.
3950
3951 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
3952
3953         * jit-icalls.c (mono_imul_ovf): Fix one of the literals.
3954
3955         * mini.c (mini_init): Emulate mul.ovf opcodes if MONO_ARCH_EMULATE_MUL_OVF
3956         is defined.
3957
3958         * mini-arm.h (MONO_ARCH_EMULATE_MUL_OVF): New define.
3959
3960         * mini-arm.c (mono_arch_build_imt_thunk): Rewrite this to allow large vtable
3961         offsets.
3962
3963         * mini-arm.c (mono_arch_context_get_int_reg): Adapt this to the "clever"
3964         way registers are stored in MonoContext on arm.
3965
3966         * unwind.c: Rewrite the handling of the cached_info array to use hazard pointers
3967         instead of locking so mono_get_cached_unwind_info () becomes signal safe.
3968
3969         * mini.c (mini_init): Emuate OP_FCONV_TO_I when using soft float.
3970
3971         * mini-arm.c (emit_load_volatile_arguments): Avoid an unneccesary assert.
3972
3973         * mini.c (mini_init): Register mono_isfinite.
3974
3975         * jit-icalls.c (mono_isfinite): New jit icall.
3976
3977         * method-to-ir.c (mono_decompose_soft_float): Add support for OP_CKFINITE.
3978         
3979         * exceptions-arm.c (mono_arch_find_jit_info): When unwinding using the LMF,
3980         set esp to ARMREG_FP instead of R12, since R12 stores the value of sp for
3981         the parent frame.
3982
3983 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
3984
3985         * exceptions-arm.c (mono_arch_find_jit_info): The frame layout on arm have
3986         separate frame and stack pointers, so we must use FP to find the register
3987         spill area.
3988         The FP reg is retrieved from the MonoContext::regs array.
3989
3990 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
3991
3992         * mini-arm.c (mono_arch_output_basic_block): Emit two cond ops for OP_FBGE
3993         as FPA requires it.
3994
3995 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
3996
3997         * mini-arm.c (mono_arch_emit_setret): Emit OP_FMOVE for methods that
3998         return R4 and R8 when not running under softfloat.
3999
4000         Fixes basic-calls.exe
4001
4002 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
4003
4004         * mini-arm.c: Implement some overflow opcodes.
4005
4006 2009-01-29  Miguel de Icaza  <miguel@novell.com>
4007
4008         * ssa.c: handle another alloca.h
4009
4010         * mini-exceptions.c (mono_handle_native_sigsegv): Do not use
4011         PLATFORM_WIN32 for detecting if we have sigaction.   Instead use
4012         MONO_ARCH_USE_SIGACTION. 
4013
4014         * aot-runtime.c, mini-exceptions.c: Replace platform define with
4015         capability defines.
4016
4017         * method-to-ir.c (mono_method_to_ir): Type cast fix on some platforms.
4018
4019         * mini-ppc.h (MONO_ARCH_USE_SIGACTION): Do not define this for all
4020         PPC targets as sigaction does not exist on all platforms, define
4021         this on a per-platform basis.
4022
4023         Instead of erroring out if the platform is not defined, include
4024         mini-ppc-os.h, and expect that the OS specific setting provides
4025         the required information.   
4026
4027 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
4028
4029         * aot-compiler.c: Fix --enable-minimal=aot.
4030
4031 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
4032
4033         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Fix the
4034         previous change.
4035
4036 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
4037
4038         * exceptions-arm.c: Fix warnings.
4039
4040         * tramp-arm.c aot-compiler.c unwind.h unwind.c: Implement xdebug support for
4041         ARM.
4042
4043         * mini-x86.c: Fix --enable-minimal=jit build.
4044
4045         * mini.c: Really fix --enable-minimal=jit build.
4046         
4047         * mini.c (construct_object_context_for_method): Move this outside
4048         the DISABLE_JIT block to fix the --enable-minimal=jit build.
4049
4050         "Backported" of r124984 from 2.0 branch.
4051         
4052         * aot-compiler.c aot-runtime.c: Add full-aot support delegate BeginInvoke/EndInvoke.
4053
4054         "Backport" of r124977 + r124978 from 2.0 branch.
4055         
4056         * exceptions-arm.c (mono_arm_throw_exception_by_token): New helper function
4057         to avoid calling mono_exception_from_token () from the throw trampoline.
4058         (mono_arch_get_throw_exception_generic): call throw_exception_by_token
4059         for throwing corlib exceptions, this fixes full-aot support for corlib
4060         exceptions.
4061
4062         * aot-compiler.c (compile_method): Make a copy of cfg->locals to fix the build.
4063
4064 2009-01-29  Miguel de Icaza  <miguel@novell.com>
4065
4066         * mini-darwin.c, mini-windows.c, mini-posix.c: Commit the first
4067         part of the changes to split the code in mini into operating
4068         system specific files.
4069
4070         This patch was done by copying mini.c to the respective files to
4071         preserve SVN history.
4072
4073 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
4074
4075         * aot-compiler.c (emit_method_dwarf_info): Add minimal support for locals.
4076
4077 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
4078
4079         * method-to-ir.c (mono_method_to_ir): Avoid generic sharing for calls made to
4080         remoting-invoke-with-check wrappers of shared methods.
4081
4082         * mini.c (print_jit_stats): Print out major gc count/time for libgc too.
4083
4084 2009-01-27  Mark Probst  <mark.probst@gmail.com>
4085
4086         * method-to-ir.c (emit_stloc_ir): Only apply the reg-reg move
4087         optimization if the top of stack is the last instruction in the
4088         bblock.  Otherwise it might have been used after its definition.
4089         Fixes #469742.
4090
4091 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
4092
4093         * mini-trampolines.c (mono_magic_trampoline): Print out the caller
4094         method as well when get_vcall_slot () fails to match a code sequence.
4095
4096         * mini-arm.c: Fix the android build, which doesn't have
4097         __aeabi_read_tp.
4098
4099 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
4100
4101         * mini-s390x.c: Remove a stray declaration of emit_sig_cookie () to fix
4102         the s390x build.
4103
4104 2009-01-26  Rodrigo Kumpera  <rkumpera@novell.com>
4105
4106         * unwind.c (mono_unwind_cleanup): Don't crash if cached_info is NULL.
4107
4108 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
4109
4110         * mini.c (mini_method_compile): Save the unwind info generated by the JIT
4111         and put its id into jinfo->used_regs. This is only used on amd64,
4112         which is currently the only platform generating unwind info.
4113
4114         * exceptions-amd64.c: Instead of unwinding based on a register mask, use
4115         the dwarf unwinder. This is required to correctly handle async exceptions
4116         like thread abort and stack overflows, which can happen while a method
4117         is in the middle of its prolog or epilog.
4118         
4119         * aot-runtime.c (mono_aot_get_unwind_info): New helper function to obtain
4120         the unwind info belonging to an AOTed method.
4121
4122         * aot-compiler.c aot-runtime.c: Save/Load the unwind info emitted by the JIT
4123         into cfg->unwind_ops.
4124         
4125         * unwind.c (mono_unwind_frame): Use <= instead of < for the loop exit check.
4126
4127         * mini.c (mini_init): Call mono_unwind_init ().
4128         (mini_cleanup): Call mono_unwind_cleanup ().
4129
4130         * unwind.c: Add functions for managing a set of unwind info entries, allowing
4131         unwind info to be shared between methods.
4132
4133         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info for the registers
4134         saved in the LMF.
4135
4136         * exceptions-amd64.c (mono_arch_exceptions_init): Call 
4137         get_throw_pending_exception () to avoid initialization races.
4138
4139         * mini-exceptions.c (mono_exceptions_init): Call an arch specific
4140         mono_arch_exceptions_init () function.
4141
4142         * mini.h (MONO_INST_NEW): Remove duplicate setting of cil_code.
4143
4144 2009-01-25  Zoltan Varga  <vargaz@gmail.com>
4145
4146         * mini.c (mono_get_domain_intrinsic): New helper function.
4147         (mono_get_thread_intrinsic): Ditto.
4148
4149         * mini-arm.c mini-ia64.c: Use the new helper functions.
4150         
4151         * method-to-ir.c (mono_method_to_ir): Fix the comment for
4152         the last constrained_call change, since it is needed in the non-AOT
4153         case as well.
4154
4155         * mini-arm.c: Implement OP_TLS_GET on arm eabi linux.
4156         
4157         * mini-arm.c (mono_arch_emit_prolog): Add an inlined version of 
4158         mono_get_lmf_addr () on arm eabi linux.
4159
4160 2009-01-24  Zoltan Varga  <vargaz@gmail.com>
4161
4162         * mini-amd64.c (mono_arch_get_vcall_slot): Handle yet another
4163         code sequence which matches a non-virtual call.
4164
4165 2009-01-23  Mark Probst  <mark.probst@gmail.com>
4166
4167         * mini-ppc.c (mono_arch_context_get_int_reg): Allow access to the
4168         stack pointer (r1).
4169
4170 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
4171
4172         * aot-compiler.c aot-runtime.c: Treat delegate-invoke wrappers similarly to
4173         runtime-invoke wrappers, since they are also shared based on signature.
4174
4175 2009-01-22  Mark Probst  <mark.probst@gmail.com>
4176
4177         * mini-exceptions.c (ves_icall_get_frame_info): Fetch the generic
4178         info from the (correct) context.
4179
4180 2009-01-22  Zoltan Varga  <vargaz@gmail.com>
4181
4182         * unwind.c (mono_unwind_frame): Remove a stray g_free ().
4183         
4184         * unwind.c (mono_unwind_frame): New function to unwind through a frame
4185         using dwarf unwinding info. Not yet used.
4186
4187         * mini.c (mini_init): When using xdebug, disable freeing of domains.
4188
4189 2009-01-21  Mark Probst  <mark.probst@gmail.com>
4190
4191         * mini-ppc.c (mono_arch_delegate_invoke_impl): Return function
4192         descriptors.
4193
4194         * mini-trampolines.c (mono_delegate_trampoline): Remove the PPC64
4195         special case and handle mono_arch_delegate_invoke_impl() returning
4196         function descriptors.
4197
4198         * tramp-ppc.c (mono_arch_create_trampoline_code): Delegate
4199         trampolines return function descriptors, too.
4200
4201 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
4202
4203         * method-to-ir.c (handle_alloc): Avoid generic instances in the
4204         out_of_line optimization.
4205
4206 2009-01-21  Martin Baulig  <martin@ximian.com>
4207
4208         * mini.h
4209         (MonoCompile): Added `disable_deadce_vars' to disable removing
4210         unused variables.
4211
4212         * mini.c
4213         (mini_method_compile): Set `cfg->disable_deadce_vars' when running
4214         inside the debugger.
4215
4216         * liveness.c (mono_analyze_liveness): Don't remove any unused
4217         variables if `cfg->disable_deadce_vars' is set.
4218
4219 2009-01-21  Mark Probst  <mark.probst@gmail.com>
4220
4221         * method-to-ir.c: Only apply exception constructor optimization if
4222         the the method actually belongs to an exception class.  Fixes
4223         #467456.
4224
4225 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
4226
4227         * mini-trampolines.c (mono_delegate_trampoline): Put back the previous
4228         change inside a #ifdef __mono_ppc64__.
4229
4230         * aot-compiler.c (compile_method): Remove the previous limitation.
4231
4232         * method-to-ir.c (method-to-ir.c): Add support for the constrained prefix
4233         on type variables in AOTed code.
4234         
4235         * aot-compiler.c (compile_method): Skip generic methods having type 
4236         constraints on their generic parameters.
4237
4238         * aot-compiler.c (compile_method): Check for methods which cannot be
4239         encoded inside RGCTX_FETCH patches as well.
4240
4241         * mini-exceptions.c (mono_print_thread_dump): Fix the windows
4242         build.
4243
4244 2009-01-20  Mark Probst  <mark.probst@gmail.com>
4245
4246         * method-to-ir.c: Force the vtable variable in shared generic code
4247         for the case that they might show up on a stack trace where they
4248         are needed.
4249
4250         * mini-exceptions.c: Save and use generic sharing info as well as
4251         IP in stack traces to resolve shared generic instantiations.
4252
4253 2009-01-20  Zoltan Varga  <vargaz@gmail.com>
4254
4255         * mini-trampolines.c (mono_delegate_trampoline): Revert the change which
4256         added a mono_get_addr_from_ftnptr () as it breaks the ia64 build.
4257
4258 2009-01-20  Mark Probst  <mark.probst@gmail.com>
4259
4260         * method-to-ir.c: Do generic sharing for array constructors.
4261
4262 2009-01-20  Rodrigo Kumpera  <rkumpera@novell.com>
4263
4264         * mini-exceptions.c (mono_print_thread_dump): Add information
4265         about the thread state using wapi_current_thread_desc.
4266
4267 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
4268
4269         * basic-simd.cs: Tests for the new constructors. 
4270
4271 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
4272
4273         * mini-ops.h: Added OP_EXPAND_*
4274
4275         * cpu-x86.md: Same.
4276
4277         * mini-x86.c (mono_arch_output_basic_block): Same.
4278         
4279         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for single element constructors.
4280
4281 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
4282
4283         * iltests.il.in: Add a test for #467385.
4284
4285 2009-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
4286
4287         * mini.c (mini_thread_cleanup): Don't cleanup TLS storage if the
4288         thread been cleaned up is not the same currently in execution.
4289
4290         Fixes appdomain-unload crashes on windows, osx and linux variants
4291         without the __thread keyword.
4292
4293 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
4294
4295         * mini-arm.c (mono_arch_flush_icache): Applied patch from Koushik Dutta
4296         (koush@koushikdutta.com). Implement this for android.
4297
4298         * helpers.c (mono_disassemble_code): Avoid assembler errors if the id
4299         begins with a digit.
4300
4301         * method-to-ir.c: Call mono_gc_get_write_barrier () instead of
4302         mono_marshal_get_write_barrier ().
4303
4304 2009-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
4305
4306         * decompose.c (mono_decompose_vtype_opts): Fix the decomposition
4307         of OP_VCALL_* ops for 8 bytes vtypes on 32 bits archs and platorms
4308         that pass them on a register pair.
4309
4310         This affects windows, OSX and FreeBSD. The mono/tests/handleref.exe
4311         test was crashing due to that.
4312
4313 Fri Jan 16 15:21:21 CET 2009 Paolo Molaro <lupus@ximian.com>
4314
4315         * exceptions-ppc.c: tweaks from malc (OV-Soft) to fix the size of the
4316         trampoline code. Include ucontext.h only if available.
4317
4318 2009-01-15  Mark Probst  <mark.probst@gmail.com>
4319
4320         * mini.c: mono_domain_lookup_shared_generic() takes an open method
4321         and doesn't check whether it's sharable, like it was before
4322         removing the shared generics hash.  This brings IronPython
4323         performance back to what it was before that change.
4324
4325 2009-01-14  Mark Probst  <mark.probst@gmail.com>
4326
4327         * method-to-ir.c: Handle delegate invocation optimization earlier,
4328         otherwise it would be handled (much more slowly) by the
4329         final/sealed optimization.
4330
4331 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
4332
4333         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes when the current thread or
4334         domain is not set. Fixes #465864.
4335
4336 2009-01-12  Mark Probst  <mark.probst@gmail.com>
4337
4338         * method-to-ir.c: Don't stop sharing of generic methods with catch
4339         clauses - we already handle those.
4340
4341 2009-01-12  Mark Probst  <mark.probst@gmail.com>
4342
4343         * mini.c, mini.h: lookup_generic_method() is now
4344         mono_domain_lookup_shared_generic() and uses the jit_code_hash,
4345         making the shared_generics_hash obsolete.
4346
4347 2009-01-12  Mark Probst  <mark.probst@gmail.com>
4348
4349         * mini-ppc.c, exceptions-ppc.c, cpu-ppc.md, cpu-ppc64.md: Don't
4350         use the red zone.  Make room on the stack first and then use it,
4351         not the other way around.
4352
4353 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
4354
4355         * mini.c (mini_init): Call mono_xdebug_init ().
4356
4357         * aot-compiler.c (mono_xdebug_init): Make this non-static.
4358
4359 2009-01-11  Zoltan Varga  <vargaz@gmail.com>
4360
4361         * TestDriver.cs: Add an --iter argument to run tests multiple times.
4362
4363         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Emit debug info for
4364         trampolines.
4365
4366         * aot-compiler.c (mono_save_trampoline_xdebug_info): New function to emit
4367         debug+unwind info for trampolines.
4368
4369         * mini.c (mono_create_unwind_op): New helper function.
4370
4371         * unwind.h: Add macros for emitting unwind ops without a MonoCompile.
4372
4373 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
4374
4375         * aot-compiler.c: Fix the build.
4376
4377 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
4378
4379         * Makefile.am: Update dtrace-prelink.sh location.
4380
4381 2009-01-08  Zoltan Varga  <vargaz@gmail.com>
4382
4383         * method-to-ir.c (mono_method_to_ir): Fix the check for the mscorlib ldstr 
4384         optimization. Fixes #464520.
4385
4386 2009-01-07  Bill Holmes  <billholmes54@gmail.com>
4387
4388         * mini-amd64.c : Adding code to save/restore non-volatile registers
4389            on Winx64.
4390
4391         * exceptions-amd64.c : Adding code to save/restore non-volatile 
4392           registers on Winx64.
4393
4394         Contributed under MIT/X11 license.
4395
4396 2009-01-07  Zoltan Varga  <vargaz@gmail.com>
4397
4398         * mini-arm.c (mono_arch_flush_icache): Use __GNUC_PREREQ instead of checking
4399         __GNUC_MINOR__ which can break when the major version changes.
4400
4401 2009-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
4402
4403         * basic-simd.cs: Add tests for usage of the sizeof opcode.
4404
4405 2009-01-07  Geoff Norton  <gnorton@novell.com>
4406
4407         * helpers.c:  Allow mono -v -v -v to work on darwin.
4408
4409 2009-01-05  Bill Holmes  <billholmes54@gmail.com>
4410
4411         * mini-amd64.c (mono_arch_get_vcall_slot) : Handle an additional instruction
4412           pattern. 
4413
4414         Contributed under MIT/X11 license.
4415
4416 2009-01-05  Zoltan Varga  <vargaz@gmail.com>
4417
4418         * mini.c (mono_allocate_stack_slots_full2): Use mono_class_from_mono_type
4419         instead of directly accessing type->data.klass. Fixes #462016.
4420         (mono_allocate_stack_slots_full): Ditto.
4421
4422         * mini-arm.c (mono_arch_flush_icache): Applied patch from Riku Voipio 
4423         <novell@kos.to>. Fix cache flush on kernels without OLDABI compat option.
4424
4425         * aot-compiler.c (emit_plt): Fix ARM build.
4426
4427 2009-01-04  Zoltan Varga  <vargaz@gmail.com>
4428
4429         * branch-opts.c (mono_if_conversion): Optimize this using ins->prev.
4430         
4431         * branch-opts.c (mono_if_conversion): Fix an assert introduced by the last
4432         change.
4433
4434         * branch-opts.c (mono_if_conversion): Use branch->inst_true_bb/inst_false_bb
4435         instead of bblock->out_bb [0]/[1], the two might not be the same. Fixes
4436         #463357.
4437
4438         * iltests.il.in: Add a regression test.
4439
4440 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
4441
4442         * mini-codegen.c (mono_print_ins_index): Pretty print XPHI and VPHI.
4443
4444 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
4445
4446         * basic-simd.cs: Add a regression test for #462457.
4447
4448 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
4449
4450         * mini-ops.h: Add a definition of XPHI.
4451
4452         * mini.h (MONO_IS_PHI): Make is aware of simd instrincs. 
4453
4454         * ssa.c (op_phi_to_move): Handle XPHI.
4455
4456         * ssa.c (mono_ssa_compute): Generate a XPHI for simd intrinsics instead of VPHI.
4457
4458         Fixes #462457
4459
4460 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
4461
4462         * method-to-ir.c (mono_emit_rgctx_calli): Fix a warning.
4463
4464 2008-12-31  Geoff Norton  <gnorton@novell.com>
4465
4466         * mini-ppc.c: The prolog size allocated can be too small for darwin
4467         ppc32 under certain circumstances.  Also fix a small logic bug.
4468
4469 2008-12-29  Zoltan Varga  <vargaz@gmail.com>
4470
4471         * mini.c (mono_jit_compile_method_inner): Avoid holding the domain lock
4472         while loading AOT methods.
4473
4474         * mini-exceptions.c: Check jit_tls->class_cast_from instead of class_cast_to
4475         since only the former is nulled out after a successful cast. This prevents
4476         crashes with rethrown exceptions when using --debug=casts.
4477
4478 2008-12-24  Mark Probst  <mark.probst@gmail.com>
4479
4480         * mini.h: New macro for checking whether a method is final,
4481         i.e. whether the method or its class is marked final.
4482
4483         * method-to-ir.c: Use the new macro for all final-checks
4484         consistently.  Fixes the crash in the System.ServiceModel tests.
4485
4486 2008-12-23  Mark Probst  <mark.probst@gmail.com>
4487
4488         * mini-exceptions.c (get_exception_catch_class): Corrected another
4489         overly strict assertion.
4490
4491 2008-12-23  Mark Probst  <mark.probst@gmail.com>
4492
4493         * mini-ppc.c (mono_arch_build_imt_thunk): Save and restore r11.
4494         Clobbering it is not allowed because the caller might use it as
4495         the vtable register in the interface call.
4496
4497 2008-12-19  Mark Probst  <mark.probst@gmail.com>
4498
4499         * mini-exceptions.c (get_exception_catch_class): Corrected an
4500         overly strict assertion.
4501
4502 2008-12-18  Mark Mason  <mmason@upwardaccess.com>
4503         
4504         * method-to-ir.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P or sizeof(gpointer) when appropriate.
4505
4506         * mini.h: Move typedef to mgreg_t up above include of mini-arch.h
4507
4508         * local-propogation.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P when appropriate
4509
4510         * cpu-mips.md: correct lengths for certain long_ opcodes.
4511
4512         * mini-mips.h: Only emulate long operations when SIZEOF_REGISTER==4. Add missing func decl.
4513
4514         * 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().
4515         
4516 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
4517
4518         * exceptions-mips.c (mono_arch_find_jit_info): decode sd instructions as well when looking for registers.
4519         
4520 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
4521         
4522         * mini-mips.c (mono_arch_output_basic_block): OP_JUMP_TABLE stores patch type in inst_c1, not inst_i1.
4523         
4524 2008-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
4525
4526         * branch-opts.c (remove_block_if_useless): Even if BB0 falls through, don't add a br to the
4527         next basic block.
4528         
4529 2008-12-16  Mark Mason  <mmason@upwardaccess.com>
4530
4531         * 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
4532
4533         * 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)
4534         
4535 2008-12-15  Mark Mason  <mmason@upwardaccess.com>
4536         
4537         * trace.c (mono_trace_enter_method): correctly handle arguments smaller than the stack slot size on big endian systems.
4538         
4539 2008-12-14  Zoltan Varga  <vargaz@gmail.com>
4540
4541         * liveness.c (mono_analyze_liveness): Avoid eliminating the 'this' var in
4542         gshared code. Fixes #458947.
4543
4544         * generics.cs: Add a test.
4545
4546 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
4547         
4548         * method-to-ir.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
4549         
4550         * mini-mips.c: first pass n32 code generation.
4551
4552         * mini-mips.h: datatypes and defines for n32 support.
4553
4554         * exceptions-mips.c: first pass n32 code generation.
4555         
4556         * tramp-mips.c: first pass n32 code generation.
4557         
4558         * cpu-mips.md: add long_ opcodes.
4559         
4560 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
4561
4562         * liveness.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
4563
4564         * cfold.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
4565         
4566         * local-propogation.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
4567         
4568         * regalloc2.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
4569
4570         * mini.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
4571
4572         * mini-codegen.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
4573
4574         * ssa.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
4575
4576         * decompose.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
4577
4578         * helpers.c: for mips/n32, don't pass -mips32 to objdump
4579
4580 2008-12-12  Zoltan Varga  <vargaz@gmail.com>
4581
4582         * mini-arm.c tramp-arm.c: Fix calls to mono_arch_flush_icache.
4583
4584 2008-12-12  Andres G. Aragoneses  <aaragoneses@novell.com>
4585
4586         * driver.c: Sync --help-trace with man page (EXPR,EXPR).
4587
4588 2008-12-12  Mark Probst  <mark.probst@gmail.com>
4589
4590         * mini-ppc.h, exceptions-ppc.c, tramp-ppc.c: Create function
4591         descriptors for helper functions directly in front of the code.
4592
4593 2008-12-11  Mark Probst  <mark.probst@gmail.com>
4594
4595         * method-to-ir.c: Removed an unnecessary assertion.
4596
4597 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
4598
4599         * method-to-ir.c: Merge SGEN changes from the old JIT.
4600
4601 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
4602
4603         * driver.c (compile_all_methods_thread_main): Handle failure of
4604         mono_get_method ().
4605
4606 2008-12-10  Mark Probst  <mark.probst@gmail.com>
4607
4608         * mini-ppc.c: Merged with mini-ppc64.c.
4609
4610         * mini-ppc.h: Define PPC_MINIMAL_PARAM_AREA_SIZE on all targets.
4611
4612         * Makefile.am: Use the same sources for PPC and PPC64.
4613
4614         * mini-ppc64.c: Removed.
4615
4616 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
4617
4618         * branch-opts.c (remove_block_if_useless): Extract fall through detection
4619         code to mono_bb_is_fall_through.
4620         
4621         * branch-opts.c (mono_remove_critical_edges): Same.
4622
4623 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
4624
4625         * ssa.c (fold_ins): branch opt can kill dummy switch ops so we can't
4626         expect that an OP_BR_REG will be there.
4627
4628 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
4629
4630         * branch-opts.c (remove_block_if_useless): Use MONO_IS_BRANCH_OP instead of checking
4631         for the many branch ops. The original check miss OP_BR_REG.
4632
4633         Fixes #457574.
4634         
4635 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
4636
4637         * mini-mips.h mini-mips.c exceptions-mips.c tramp-mips.c: first round of changes necessary to eventually support n32.
4638
4639 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
4640
4641         * aot-runtime.c (load_method): Avoid calling decode_exception_debug_info
4642         while holding the aot lock.
4643
4644 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
4645
4646         * mini-mips.c (mono_arch_output_basic_block): use mfc1/lwc1 instead of mfc1d/ldc1
4647         
4648 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
4649
4650         * mini.c (mini_cleanup) : Adding a call to cominterop_release_all_rcws 
4651           to release all runtime callable wrappers held by the runtime.
4652
4653         Contributed under MIT/X11 license.
4654
4655 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
4656
4657         * tramp-amd64.c (mono_arch_create_trampoline_code_full) : Increase the code size for
4658           for Winx64.
4659
4660         Contributed under MIT/X11 license.
4661
4662 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
4663
4664         * aot-runtime.c (decode_exception_debug_info): Acquire the domain
4665         lock when calling mono_domain_alloc (). Hopefully fixes #415608.
4666
4667 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
4668
4669         * cpu-mips.md: fix ckfinite length
4670
4671         * mini-mips.c: at least recognize n32 ABI when used (not yet supported)
4672         (mono_arch_lowering_pass): cleanup, rearrange for clarity
4673         (mono_arch_output_basic_block): implement OP_CKFINITE, add more asserts
4674         
4675 2008-12-08  Mark Mason   <mmason@upwardaccess.com>
4676
4677         * exceptions-mips.c (mono_arch_find_jit_info): init new_ctx with ctx, dont' call setup_context.
4678         
4679 2008-12-08  Geoff Norton  <gnorton@novell.com>
4680
4681         * tramp-amd64.c: r120895 stores RAX, so we need to increase the window
4682         size by 8 bytes as well.
4683
4684 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
4685
4686         * basic-simd.cs: Fix method names for Vector16b.
4687         
4688 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
4689
4690         * basic-simd.cs: Fix method names for Vector16sb.
4691
4692 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
4693
4694         * basic-simd.cs: Fix method names for Vector8us.
4695         
4696 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
4697
4698         * basic-simd.cs: Fix method names for Vector8s.
4699         
4700 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
4701
4702         * basic-simd.cs: Fix method names for Vector4ui.
4703
4704 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
4705
4706         * basic-simd.cs: Fix method names for Vector2l.
4707
4708 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
4709
4710         * basic-simd.cs: Fix method names for Vector2d.
4711
4712 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
4713
4714         * simd-intrinsics.c (mono_emit_simd_intrinsics): Add support for intrinsics
4715         that are extension methods.
4716
4717 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
4718
4719         * basic-simd.cs: Fix method names for Vector4f.
4720
4721 2008-12-08  Zoltan Varga  <vargaz@gmail.com>
4722
4723         * mini-exceptions.c (mono_print_thread_dump): Mark threadpool threads
4724         as such. Fixes #456669.
4725
4726 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
4727
4728         * mini-mips.c (mono_arch_emit_call): narrow float arguments when passing as args.
4729         
4730 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
4731
4732         * mini-mips.c (mono_arch_lowering_pass): don't handle OP_ICONV_TO_R* or OP_R*CONST
4733         (mono_arch_emit_setret): use OP_MIPS_CVTSD to return SP floats
4734         (mono_arch_output_basic_block): simplify FP load/store, handle OP_MIPS_FBLT_UN
4735         (mips_adjust_stackframe): handle FP spills
4736                 
4737         * mini-ops.h: add mips_mtc1_s2
4738         
4739         * cpu-mips.md: add mips_mtc1_s2
4740         
4741 2008-12-07  Zoltan Varga  <vargaz@gmail.com>
4742
4743         * unwind.c: New file, move the unwind info encoding functions here from
4744         aot-compiler.c, so they could be used at runtime too.
4745
4746 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
4747
4748         * mini-mips.c (mono_arch_lowering_pass): handle OP_IMUL_IMM as well
4749         (mono_arch_output_basic_block): fix OP_LOCALLOC code generation
4750         
4751 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
4752
4753         * mini-mips.c: cleanup warnings
4754         (mono_arch_lowering_pass): handle OP_LOCALLOC_IMM
4755         (mips_adjust_stackframe): handle case of taking the address of stack locals
4756         
4757 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
4758
4759         * aot-compiler.c: Implement a few functions missing from the asm writer.
4760         (emit_method_code): Only write symbols for methods when using the bin
4761         writer, since the assembler can't deal with the characters in our method
4762         names.
4763
4764         * aot-compiler.c (is_plt_patch): ICALL_ADDR is also a plt patch.
4765
4766         * method-to-ir.c (mono_method_to_ir): Transform aotconst+calli into a direct
4767         call.
4768
4769         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Rework the code
4770         a bit to also restore %rax.
4771
4772 2008-12-05  Mark Probst  <mark.probst@gmail.com>
4773
4774         * mini-ppc.c: Some simple merges from mini-ppc64.c.
4775
4776 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
4777
4778         * ssa.c (mono_ssa_compute): Only add an implicit reference at start for
4779         arguments.
4780
4781 2008-12-05  Mark Probst  <mark.probst@gmail.com>
4782
4783         * exceptions-ppc.c: Merged with exceptions-ppc64.c.
4784
4785         * mini-ppc.c, mini-ppc.h: Remove PPC_STACK_ALIGNMENT and use
4786         MONO_ARCH_FRAME_ALIGNMENT.  Struct for PPC64 function descriptors.
4787
4788         * exceptions-ppc64.c: Removed.
4789
4790         * Makefile.am: Use exceptions-ppc.c instead of exceptions-ppc64.c.
4791
4792 2008-12-05  Mark Probst  <mark.probst@gmail.com>
4793
4794         * tramp-ppc.c, mini-ppc.c, mini-ppc.h: Merged tramp-ppc.c with
4795         tramp-ppc64.c.
4796
4797         * Makefile.am: Use tramp-ppc.c instead of tramp-ppc64.c.
4798
4799         * tramp-ppc64.c: Removed.
4800
4801 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
4802
4803         * aot-compiler.c (add_generic_instances): Skip non-generic classes in
4804         the TYPESPEC table.
4805
4806 2008-12-05  Mark Probst  <mark.probst@gmail.com>
4807
4808         * mini-ppc.h: Merged mini-ppc64.h with mini-ppc.h.
4809
4810         * exceptions-ppc64.c, tramp-ppc64.c, mini-arch.h, Makefile.am: Use
4811         mini-ppc.h instead of mini-ppc64.h.
4812
4813         * mini-ppc64.h: Removed.
4814
4815 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
4816
4817         * mini-mips.c: introduce USE_LDC_SDC: use ldc1/sdc1 to load/store doubles, disabled by default
4818         
4819         * mini-mips.c (mono_arch_emit_outarg_vt): fix offset calculation for memcpy in structure passing.
4820         
4821 2008-12-05  Mark Probst  <mark.probst@gmail.com>
4822
4823         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c:
4824         Removed FIRST/LAST_[GF]REG macros, to make merging PPC64 with PPC
4825         code easier.
4826
4827 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
4828
4829         * basic-simd.cs: Tests for operator == and != on  Vector8us and Vector16b.
4830
4831 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
4832
4833         * simd-intrinsics.c: Add support for operator == and != to Vector8(u)s and Vector16(s)b.
4834
4835 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
4836
4837         * basic-simd.cs: Tests for operator == and != on Vector4f.
4838
4839 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
4840
4841         * simd-intrinsics.c (simd_intrinsic_emit_equality): Adapt to support Vector4f.
4842
4843         * simd-intrinsics.c: Kill useless enum.
4844
4845 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
4846
4847         * cpu-mips.md: add long_conv_to_ovf_i4_2
4848         * mini-mips.c: update/add various _OVF_ opcodes to fix test failures
4849
4850 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
4851
4852         * mini-mips.c: ifdef protect automatic promotions of R4 to R8.
4853         
4854         * mini-mips.c (mono_arch_emit_setret): handle R4 case with FCONV_TO_R4 instead of FMOVE
4855
4856 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
4857
4858         * mini-mips.c (mono_arch_output_basic_block): fix codegen for OP_OR_IMM/OP_IOR_IMM
4859         
4860 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
4861
4862         * basic-simd.cs: Add tests for new methods.
4863
4864 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
4865
4866         * simd-intrinsics.c: Add support for operator == and !=
4867         on Vector4(u)i.
4868
4869         * simd-methods.h: Add SN_op_Inequality and SN_op_Equality.
4870
4871 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
4872
4873         * simd-intrinsics.c: Remove ExtractByteMask intrinsics.
4874
4875 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
4876
4877         * aot-compiler.c (add_wrappers): Add pinvoke wrappers.
4878
4879         * mini.c (mono_resolve_patch_target): Allow pinvoke methods in 
4880         MONO_PATCH_INFO_ICALL_ADDR.
4881
4882         * aot-runtime.c (MonoAotFileInfo): Correct order of fields.
4883
4884         * aot-compiler.c: Resurrect full-aot support.
4885
4886 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
4887
4888         * mini-mips.c (mono_arch_lowering_pass): handle OP_COMPARE and OP_ICOMPARE
4889         
4890 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
4891
4892         * mini-mips.c (mono_arch_output_basic_block): fix OP_IREM_UN code generation
4893         
4894 2008-12-03  Rodrigo Kumpera  <rkumpera@novell.com>
4895
4896         * basic-simd.cs: Fix tests to work under ppc.
4897         Remove tests for methods that will be removed.
4898
4899 2008-12-03  Mark Probst  <mark.probst@gmail.com>
4900
4901         * method-to-ir.c (mono_method_to_ir): Handle ldtoken of an open
4902         generic type (via a typedef or typeref) correctly.
4903
4904 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
4905
4906         * mini-trampolines.c (mono_magic_trampoline): Add some debugging code to help
4907         diagnose an assertion failure.
4908
4909 2008-12-02  Mark Probst  <mark.probst@gmail.com>
4910
4911         * tramp-ppc64.c (mono_arch_create_rgctx_lazy_fetch_trampoline):
4912         Fix trampoline size.
4913
4914         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: A few floating point
4915         conversion opcodes are implemented natively instead via emulation.
4916
4917 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
4918
4919         * cpu-mips.md: remove mips_xori
4920
4921         * mini-ops.h:  remove mips_xori
4922
4923         * mini-mips.h: replace OP_MIPS_XORI with OP_IXOR
4924
4925         * mini-mips.c (mono_arch_decompose_long_opts): Add ladd_imm, lsub, lsub_imm, lneg, lsub_ovf, lsub_ovf_un.
4926         
4927         * mini-mips.c (mono_arch_lowering_pass, mono_arch_output_basic_block): fix IXOR handling
4928         
4929 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
4930
4931         * cpu-mips.md: fix instruction lengths.
4932
4933         * mini-mips.h: define MONO_ARCH_NO_IOV_CHECK
4934
4935         * mini-mips.c: move most instruction rewriting into decompose_ops. Implement conditional branches and exceptions. Fix jump table patch handling. Implement add/sub OVF.
4936
4937         * mini-ops.h: fix slti / sltiu op profiles.
4938         
4939 2008-12-02  Martin Baulig  <martin@ximian.com>
4940
4941         * method-to-ir.c (mono_method_to_ir): Disable debugging
4942         information for the init locals block to make the debugger stop
4943         after all locals have been initalized.
4944
4945 2008-12-02  Martin Baulig  <martin@ximian.com>
4946
4947         * mini.c (mini_method_compile): Disable MONO_OPT_DEADCE when
4948         running inside the debugger.
4949
4950 2008-12-01  Zoltan Varga  <vargaz@gmail.com>
4951
4952         * mini.c (mini_method_compile): Only run local deadce if MONO_OPT_DEADCE
4953         is enabled.
4954
4955         * method-to-ir.c (mono_method_to_ir): Fix invalid code generated by the 
4956         alu->alu imm optimization which only shows if deadce is disabled.
4957
4958         * aot-compiler.c: Rename the function names for the binary and asm writers
4959         so they can coexist in the same process. Rework the xdebug code to use the
4960         asm writer. This avoids the need to call into the runtime to dump the
4961         debugging info. Add more debugging info for types.
4962
4963         * mini-<ARCH>.h: Kill MONO_ARCH_HAVE_NORMALIZE_OPCODES define.
4964
4965         * genmdesc.c genmdesc.pl mini.h: Don't put the CEE_ opcodes into the
4966         cpu description tables, they can't occur in cpu-<ARCH>.md.
4967
4968         * method-to-ir.c (mono_method_to_ir): Set the type of the value pushed on
4969         the stack in CEE_LDFLDA. Fixes #450542.
4970
4971         * generics.cs: Add a new test.
4972
4973 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
4974
4975         * mini-ops.h: updated MIPS opcodes
4976         * mini-mips.c: decompose long opts
4977         * mini-mips.h: decompose long opts
4978         
4979 2008-11-29  Mark Mason   <mmason@upwardaccess.com>
4980
4981         * cpu-mips.md: fix length on int_rem_un
4982         * mini-mips.c (mips_stackframe_adjust): fix insertion of spillvars region in MIPS stackframes.
4983         
4984 2008-11-29  Zoltan Varga  <vargaz@gmail.com>
4985
4986         * mini.h aot-runtime.c: Fix building with DISABLE_AOT.
4987
4988         * mini-codegen.c (mono_print_ins_index): Handle OP_VOIDCALL_MEMBASE.
4989
4990 2008-11-29  Martin Baulig  <martin@ximian.com>
4991
4992         * mini-exceptions.c (mono_handle_native_sigsegv): Check
4993         mono_debug_using_mono_debugger() in addition to the
4994         `no_gdb_backtrace' flag in the `MonoDebugOptions'.
4995
4996 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
4997
4998         * mini-ops.h: updated more MIPS opcodes
4999         * mini-mips.c: FP compare/branch working again, clean up last of CEE_ -> OP_ mappings
5000         * cpu-mips.md: Added MIPS versions of new FP compare/branch opcodes.
5001         
5002 2008-11-28  Mark Probst  <mark.probst@gmail.com>
5003
5004         * mini-ppc64.c: Patch the RGCTX fetch trampoline correctly.
5005
5006 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
5007
5008         * mini-mips.c (mono_arch_emit_call): adding missing conversion to fp single when passing in integer arg register.
5009         * mini-mips.c (mips_adjust_stackframe): compensate for spill-down logic.
5010         * mini-ops.h: correct selected mips opcode entries
5011         
5012 2008-11-28  Mark Probst  <mark.probst@gmail.com>
5013
5014         * mini-ppc64.c, mini-ppc64.h: Enable generalized IMT thunks and
5015         make them work.
5016
5017 2008-11-28  Mark Probst  <mark.probst@gmail.com>
5018
5019         * mini-ppc64.h, tramp-ppc64.c: Make generic code sharing work.
5020
5021 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
5022
5023         * method-to-ir.c, mini-trampolines.c: protect IMG code with #ifdef MONO_ARCH_HAVE_IMT to fix compile errors.
5024         * mini-mips.c: Fixup stackframe assignments after allocation of spillvars.
5025         * mini-mips.h: disable IMT
5026         * tramp-mips.c (mono_arch_get_vcall_slot): fix offset extraction
5027         
5028 2008-11-28  Mark Probst  <mark.probst@gmail.com>
5029
5030         * mini-ppc64.c, mini-ppc64.h: Don't emulate long ops.
5031
5032 2008-11-28  Mark Probst  <mark.probst@gmail.com>
5033
5034         * mini-ppc64.c, exceptions-ppc64.c: Several fixes.
5035
5036 2008-11-28  Zoltan Varga  <vargaz@gmail.com>
5037
5038         * method-to-ir.c (handle_isinst): Use PCONST instead of ICONST for
5039         consistency.
5040
5041 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
5042
5043         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
5044         for Set/GetVector aligned versions.
5045
5046 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
5047
5048         * basic-simd.cs: Add tests for Get/SetVector.
5049
5050 2008-11-27  Mark Probst  <mark.probst@gmail.com>
5051
5052         * mini.c: Removed g_slist_append_mempool().  Now in
5053         metadata/mempool.c.
5054
5055 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
5056
5057         * simd-intrinsics.c (mono_emit_vector_ldelema): Extract the element
5058         size properly and make the bounds check optional.
5059
5060         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
5061         for SetVector and IsAligned.
5062
5063 2008-11-27  Zoltan Varga  <vargaz@gmail.com>
5064
5065         * mini.c: Remove unused mono_normalize_opcodes () function.
5066
5067 2008-11-26  Mark Probst  <mark.probst@gmail.com>
5068
5069         * method-to-ir.c (mini_emit_inst_for_method): Small fix: we're
5070         using the new atomic add ops now.
5071
5072         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Implemented atomic
5073         add.
5074
5075 2008-11-26  Mark Probst  <mark.probst@gmail.com>
5076
5077         * mini-ppc64.c: Several fixes.
5078
5079 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
5080
5081         * cpu-mips.md: added jump_table
5082         * mini-mips.c: added jump_table. Eliminate compare-imm when lowering. Remove dead function.             
5083
5084 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
5085
5086         * mini-mips.c, mini-mips.h, tramp-mips.c, cpu-mips.md: Initial upgrade of MIPS port to new IR.
5087
5088 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
5089
5090         * mini-ops.h: corrected a handful of MIPS opcodes.
5091
5092 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
5093
5094         * aot-compiler.c: MIPS to use ELF writer
5095
5096 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
5097
5098         * mini-codegen.c: remove MIPS specific assert.
5099
5100 2008-11-25  Mark Probst  <mark.probst@gmail.com>
5101
5102         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Several
5103         fixes.  PPC64 now passes most of the runtime regressions.
5104
5105 2008-11-24  Zoltan Varga  <vargaz@gmail.com>
5106
5107         * regalloc2.c: Distinguish between use/def positions. Optimize the creation of
5108         volatile intervals a bit.
5109
5110 2008-11-24  Mark Probst  <mark.probst@gmail.com>
5111
5112         * basic-long.cs: New test case.
5113
5114 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
5115
5116         * mini.c (mini_method_compile): Disable globalra for large methods for 
5117         now.
5118
5119         * regalloc2.c (order_moves): Add fp support.
5120
5121         * branch-opts.c (mono_remove_critical_edges): Split non-critical edges whose
5122         source bblock ends with an OP_BR_REG.
5123
5124         * ratests.cs: Add a new test.
5125
5126 2008-11-23  Mark Probst  <mark.probst@gmail.com>
5127
5128         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c: Disable generic code
5129         sharing.  PPC64 now passes generics.exe.
5130
5131 2008-11-23  Mark Probst  <mark.probst@gmail.com>
5132
5133         * mini-ppc64.c: Several fixes.  PPC64 now runs iltests.exe.
5134
5135 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
5136
5137         * exceptions-x86.c (mono_arch_find_jit_info): Avoid reading uninitialized
5138         memory when mono_jit_info_table_find () can't find the method in the
5139         LMF case.
5140
5141         * aot-compiler.c (mono_save_xdebug_info): Emit complete debug info for
5142         AOTed code too.
5143         
5144         * aot-compiler.c (mono_save_xdebug_info): Make this work with the assembly
5145         writer too.
5146
5147 2008-11-23  Mark Probst  <mark.probst@gmail.com>
5148
5149         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, cpu-ppc64.md:
5150         Several fixes.  PPC64 now runs exceptions.exe and
5151         devirtualization.exe.
5152
5153 2008-11-22  Mark Probst  <mark.probst@gmail.com>
5154
5155         * mini-ppc64.c, tramp-ppc64.c: Small fixes.  PPC64 now runs
5156         arrays.exe and basic-math.exe.
5157
5158 2008-11-22  Mark Probst  <mark.probst@gmail.com>
5159
5160         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c,
5161         cpu-ppc64.md: Several fixes.  PPC64 now runs objects.exe.
5162
5163 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
5164
5165         * simd-intrinsics.c: Add support ArrayExtension intrinsics.
5166
5167 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
5168
5169         * method-to-ir.c: Move bounds checking macros to ir-emit.h
5170
5171         * ir-emit.h: Move macros from method-to-ir.c to here.
5172
5173 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
5174
5175         * mini-ops.h: Correct the long simd ops to use LREG.
5176
5177 2008-11-21  Zoltan Varga  <vargaz@gmail.com>
5178
5179         * mini-ops.h: Correct the dreg type of OP_LOADI8_MEMBASE.
5180         
5181         * mini-ops.h: Correct the dreg type of a few long opcodes.
5182
5183         * mini-amd64.h: Applied patch from Mihai Chelaru <kefren@ngnetworks.ro>.
5184         Add netbsd support.
5185
5186 Fri Nov 21 12:52:23 CET 2008 Paolo Molaro <lupus@ximian.com>
5187
5188         * mini-ppc.c: remove negative stack references in epilog
5189         for platforms that don't support the red zone.
5190
5191 2008-11-21  Mark Probst  <mark.probst@gmail.com>
5192
5193         * mini-ppc64.h, cpu-ppc64.md: Fixed caller/callee saved floating
5194         point regs.  Now PPC64 passes basic-calls.exe.
5195
5196 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
5197
5198         * basic-simd.cs: Add tests for accessors of Vector2l.
5199
5200 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
5201
5202         * mini-ops.h: Added OP_INSERTX_I8_SLOW,.
5203
5204         * mini-x86.c (mono_arch_decompose_long_opts): Decompose OP_INSERTX_I8_SLOW.
5205         
5206         * simd-intrinsics.c: Add support for Vector2l and Vector2ul.
5207
5208 2008-11-21  Mark Probst  <mark.probst@gmail.com>
5209
5210         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Several fixes.  Now
5211         PPC64 passes basic-long.exe.
5212
5213 2008-11-20  Mark Probst  <mark.probst@gmail.com>
5214
5215         * decompose.c: Decompose carry and overflow add on PPC64 like on
5216         other 64 bit archs.  Don't decompose sub at all on PPC64.
5217
5218         * mini-ppc64.c, exceptions-ppc64.c, tramp-ppc64.c, cpu-ppc64.md:
5219         Several fixes and new opcodes.  Now PPC64 runs (but doesn't pass)
5220         basic-long.exe.
5221
5222 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
5223
5224         * basic-simd.cs: Add tests for accessors of Vector2d.
5225
5226 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
5227
5228         * mini-ops.h: Added OP_INSERTX_R8_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 Vector2d.
5235
5236 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
5237
5238         * basic-simd.cs: Add tests for accessors of Vector4f.
5239
5240 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
5241
5242         * mini-ops.h: Added OP_INSERTX_R4_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 Vector4f.
5249
5250 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
5251
5252         * basic-simd.cs: Add tests for accessors of Vector4i and Vector4ui.
5253
5254 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
5255
5256         * mini-ops.h: Added OP_INSERTX_I4_SLOW,.
5257
5258         * cpu-x86.md: Same.
5259
5260         * mini-x86.c (mono_arch_output_basic_block): Same.
5261         
5262         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4i and Vector4ui.
5263
5264 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
5265
5266         * cpu-x86.md: Use reasonable sizes for extractx_u2 and insertx_u1_slow.
5267
5268 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
5269
5270         * simd-intrinsics.c: Enable setters for Vector16sb.
5271
5272 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
5273
5274         * mini-ops.h: Added OP_EXTRACTX_U2, OP_INSERTX_U1_SLOW.
5275
5276         * cpu-x86.md: Same.
5277
5278         * mini-x86.c (mono_arch_output_basic_block): Same.
5279         
5280         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector16b.
5281
5282 2008-11-19  Rodrigo Kumpera  <rkumpera@novell.com>
5283
5284         * simd-intrinsics.c: Implement setter for Vector8us.
5285
5286 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
5287
5288         * aot-compiler.c (mono_save_xdebug_info): Emit correct location info
5289         for dead variables.
5290
5291 Wed Nov 19 18:27:41 CET 2008 Paolo Molaro <lupus@ximian.com>
5292
5293         * mini-ppc.c: remove references to the red zone in the prolog
5294         (for systems that don't support it).
5295
5296 2008-11-19  Mark Probst  <mark.probst@gmail.com>
5297
5298         * cpu-ppc64.md: Fixed a few instruction lengths.
5299
5300         * mini-ppc64.c: Don't emit SETLRET.  PPC64 passes basic-float.exe,
5301         now.
5302
5303 2008-11-19  Mark Probst  <mark.probst@gmail.com>
5304
5305         * mini-ppc64.c, cpu-ppc64.md: Fixed some opcodes.  PPC64 passes
5306         basic.exe now.
5307
5308 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
5309
5310         * aot-compiler.c (mono_save_xdebug_info): Add more parameter types.
5311
5312 2008-11-18  Rodrigo Kumpera  <rkumpera@novell.com>
5313
5314         * mini-ops.h: Added OP_INSERT_I2.
5315
5316         * cpu-x86.md: Same.
5317
5318         * mini-x86.c (mono_arch_output_basic_block): Same.
5319         
5320         * simd-intrinsics.c: Implement setter for Vector8s.
5321
5322         * simd-methods.h: Add the names of get setters of Vector8s.
5323
5324 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
5325
5326         * aot-compiler.c (mono_save_xdebug_info): Add support for parameters.
5327         
5328         * aot-compiler.c (mono_save_xdebug_info): Add preliminary support for
5329         parameters.
5330
5331         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
5332
5333 2008-11-18  Mark Probst  <mark.probst@gmail.com>
5334
5335         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Changes
5336         for PPC64.  An empty program runs now.
5337
5338 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
5339
5340         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
5341
5342         * aot-compiler.c mini.c mini.h: Add a JIT debugging mode modelled after
5343         a similar mode in Kaffe: When the the MONO_XDEBUG env var is set, debugging
5344         info for JITted code is emitted into a shared library, loadable into gdb.
5345
5346 2008-11-18  Mark Probst  <mark.probst@gmail.com>
5347
5348         * Makefile.am: Changes to build PPC64.
5349
5350         * mini-arch.h: Include mini-ppc64.h on PPC64.
5351
5352 2008-11-18  Mark Probst  <mark.probst@gmail.com>
5353
5354         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Updated with changes
5355         in PPC code up to r119147.
5356
5357 2008-11-18  Mark Probst  <mark.probst@gmail.com>
5358
5359         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
5360         cpu-ppc64.md: Changes for PPC64.
5361
5362         Based on code submitted by andreas.faerber@web.de at
5363         https://bugzilla.novell.com/show_bug.cgi?id=324134 under the
5364         X11/MIT license.
5365
5366 2008-11-18  Mark Probst  <mark.probst@gmail.com>
5367
5368         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
5369         cpu-ppc64.md: Copied from the corresponding PPC files from
5370         r118846.
5371
5372 2008-11-18  Scott Peterson  <lunchtimemama@novell.com>
5373
5374         * mini-ops.h: Added OP_ROUND.
5375
5376         * cpu-x86.md: Added round.
5377
5378         * mini-x86.c: Added support for intrinsicing Math.Round (double).
5379
5380         * basic-math.cs: Added test_0_round to test rounding.
5381
5382         Contributed under MIT/X11 license.
5383
5384 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
5385
5386         * aot-compiler.c : Fix the Winx64 build.
5387
5388         Contributed under MIT/X11 license.
5389
5390 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
5391
5392         * mini-x86.c (mono_arch_output_basic_block): Use movsd instead of monvups
5393         in OP_EXTRACT_R8 to avoid possible stack corruption.
5394
5395 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
5396
5397         * mini-ops.h: Added OP_EXTRACT_R8/I8.
5398
5399         * cpu-x86.md: Added extract_r8.
5400
5401         * mini-x86.c (mono_arch_output_basic_block): Emmit OP_EXTRACT_R8.
5402         
5403         * mini-x86.c: Added mono_arch_decompose_long_opts to break OP_EXTRACT_I8 into
5404         a couple of OP_EXTRACT_I4.
5405
5406         * mini-x86.h: Define MONO_ARCH_HAVE_DECOMPOSE_LONG_OPTS if simd is enabled.
5407
5408         * simd-intrinsics.c: Implement getters for Vector2l/2ul/2d.
5409
5410 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
5411
5412         * simd-intrinsics.c (vector2l_intrinsics): CompareGreaterThan requires sse 4.2
5413         and not 4.1. 
5414
5415 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
5416
5417         * method-to-ir.c (handle_delegate_ctor): Emit the address of the delegate
5418         trampoline as an AOT const of the proper type instead of MONO_PATCH_INFO_ABS.
5419
5420         * mini.c (mono_codegen): Remove the handling of delegate trampolines, they
5421         are not needed any more.
5422
5423         * mini.h: Remove the unused INS_LIST macros.
5424
5425         * mini.c (mini_method_compile): Remove a disable globalra case which is no
5426         longer needed.
5427
5428         * *.h *.c: Remove duplicate MonoInst emission macros, use the ones in
5429         ir-emit.h.
5430
5431         * regalloc.h *.c: Remove references to mono_regstate_next_int (), use
5432         mono_alloc_ireg () instead.
5433
5434         * mini-<ARCH>.c: Include ir-emit.h. Remove duplicate MonoInst emission
5435         macros.
5436
5437         * mini-amd64.c (emit_load_volatile_arguments): Removed, not needed
5438         on amd64.
5439
5440         * aot-runtime.c (load_aot_module): Disable AOT when running under
5441         CAS.
5442
5443         * mini-amd64.h: Change the monitor fastpath defines to check for
5444         !PLATFORM_WIN32 so they work on *bsd too.
5445
5446         * mini.h mini.c mini-hhpa.c: Remove more unused code.
5447
5448         * mini-s390.c mini-s390x.c: Remove !cfg->new_ir code.
5449
5450         * mini.h (MonoCompile): Remove new_ir flag.
5451
5452         * regalloc.h regalloc.c: Remove unused code.
5453
5454         * cpu-*.md: Remove more unused opcodes.
5455
5456         * simple-cee-ops.h simple-mini-ops.h: Removed.
5457
5458         * mini-ops.h *.c cpu-<ARCH>.md: Remove more unused opcodes.
5459         
5460 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
5461
5462         * aliasing.h: Removed.
5463
5464         * *.c: Remove references to aliasing.h and inssel.h.
5465
5466         * mini.c: Remove additional unused functions.
5467
5468         * mini-ops.h cpu-*.md: Remove unused opcodes.
5469
5470 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
5471
5472         Remove the old JIT code.
5473
5474         * inssel*.brg: Removed.
5475
5476         * ssa.c abcremoval.c aliasing.c: Removed.
5477
5478         * ssa2.c: Renamed to ssa.c.
5479
5480         * abcremoval2.c: Renamed to abcremoval.c.
5481
5482         * *.c: Removed all !cfg->new_ir code.
5483
5484         * mini-<ARCH>.c: Removed mono_arch_call_opcode (), 
5485         mono_arch_emit_this_vret_args (), and mono_arch_get_inst_for_method ().
5486
5487         * mini.c: Removed the old mono_method_to_ir () and all the code used by it.
5488         
5489 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
5490
5491         * aot-compiler.c aot-runtime.c: Emit most of the non-table data in a structure
5492         to simplify the code and cut back on the number of global symbols in the AOT
5493         file.
5494         
5495         * aot-compiler.c aot-runtime.c: Get rid of the unused plt_jump_table.
5496
5497 2008-11-15  Zoltan Varga  <vargaz@gmail.com>
5498
5499         * aot-runtime.c aot-compiler.c: Unify the plt_jump_table/plt_info tables
5500         with the got/got_info tables.
5501
5502         * mini.h: Bump AOT file format version.
5503         
5504         * unwind.h: New file, contains definitions for stack unwinding.
5505
5506         * mini.c (mono_emit_unwind_op): New helper function to append an unwind op
5507         to cfg->unwind_ops.
5508         
5509         * aot-compiler.c: Generalize the emitting of unwind information to use the
5510         information in cfg->unwind_ops.
5511
5512         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info.
5513
5514         * aot-compiler.c: Emit dwarf unwind information so gdb can unwind through
5515         AOT method frames. Enable writing symbols for methods by default.
5516
5517 2008-11-14  Rodrigo Kumpera  <rkumpera@novell.com>
5518
5519         * simd-intrinsics.c (simd_intrinsic_emit_getter): Generalize this code
5520         and make it work with vectors of element sizes 1, 2 and 4.
5521
5522         * simd-intrinsics.c: Enable getter for all vectors with element size
5523         1, 2 or 4.
5524
5525         * simd-methods.h: Add the names of other getters.
5526
5527         * mini-ops.h: Added OP_EXTRACT_I2/U2/I1/U1.
5528
5529         * cpu-x86.md: Same.
5530
5531         * mini-x86.c: Same.
5532
5533 Fri Nov 14 15:54:18 CET 2008 Paolo Molaro <lupus@ximian.com>
5534
5535         * mini-ppc.h: portability fix.
5536
5537 Fri Nov 14 15:39:50 CET 2008 Paolo Molaro <lupus@ximian.com>
5538
5539         * mini-ppc.h, mini-ppc.c: avoid using the red zone as some kernels are
5540         buggy and will overwrite it.
5541
5542 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
5543
5544         * aot-compiler.c: Add functionality to emit local symbols to the elf writer.
5545         Use it to emit local symbols for all methods so AOTed methods show up with
5546         their full name in gdb/valgrind output.
5547
5548 Fri Nov 14 12:56:27 CET 2008 Paolo Molaro <lupus@ximian.com>
5549
5550         * mini-ppc.c: portability fixes.
5551
5552 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
5553
5554         * mini-trampolines.c (mono_magic_trampoline): Move the patching of plt
5555         entries out of the if (!generic_shared...) code so it is always done.
5556         (mono_class_init_trampoline): Do the patching when running under valgrind
5557         too, newer versions of valgrind have no problems with it.
5558
5559 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
5560
5561         * aot-compiler.c (emit_writeout): Rework this to make it easier to add
5562         further sections.
5563
5564 2008-11-13  Mark Probst  <mark.probst@gmail.com>
5565
5566         * mini-ppc.c, cpu-ppc.md: Reserve space for the parameter area in
5567         filters.
5568
5569 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
5570
5571         * simd-intrinsics.c: Add getter support for Vector4i and Vector4ui. 
5572
5573 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
5574
5575         * mini-ops.h: Kill diplicated ops OP_SHUFLEPS.
5576
5577         * cpu-x86.md: Same.
5578
5579         * mini-x86.c: Same.
5580
5581         * simd-intrinsics.c: Same.
5582
5583 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
5584
5585         * simd-intrinsics.c: Enable constructor intrinsics for all types.
5586
5587 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
5588
5589         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Generalize this method
5590         to work with more Vector types.
5591
5592 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
5593
5594         * simd-intrinsics.c (simd_intrinsic_emit_ctor): If the target is already a pointer
5595         store the elemens directly instead of using and intermediate.
5596
5597 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
5598
5599         * mini-amd64.c (emit_call_body): Avoid aligning call sites in AOTed code.
5600
5601         * tramp-x86.c (mono_arch_create_trampoline_code): Rework the return sequence
5602         to preserve %eax for aot plt trampolines.
5603
5604         * aot-compiler.c (compile_method): Don't skip synchronized methods.
5605         (encode_method_ref): Flag synchronized methods so they won't go through
5606         the AOT trampoline.
5607
5608         * aot-compiler.c: Additional work to support AOTing synchronized methods/
5609         wrappers.
5610
5611         * cpu-ia64.md (jmp): Increase max length.
5612
5613 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
5614
5615         * aot-runtime.c (load_method): Avoid calling runtime_class_init () for
5616         open generic classes.
5617
5618         * aot-compiler.c: Enable the ELF writer on ELF platforms.
5619
5620         * method-to-ir.c (mono_method_to_ir2): Revert the last change to the
5621         box+brtrue optimization since it causes test failures on x86.
5622
5623 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
5624
5625         * mini-ops.h: Remove OP_PUSH_R4 and OP_LOADX_STACK.
5626
5627         * cpu-x86.md: Same.
5628
5629         * mini-x86.c: Same.
5630
5631         * mini.h (struct MonoCompile): Add simd_ctor_var to be used as storage
5632         for simd ctor values. 
5633
5634         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Use simd_ctor_var for the constructor
5635         instead of directly pushing the values on stack. This saves about 15 bytes of generated code.
5636
5637 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
5638
5639         * simd-methods.h: Rename SubWithSaturation, ArithmeticRightShift and
5640         LogicalRightShift.
5641
5642         * simd-instrincs.c: Same.
5643
5644         * basic-simd.cs: Same.
5645
5646 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
5647
5648         * ratests.cs: Add more tests.
5649
5650         * regalloc2.c (add_spill_code): Handle more corner cases.
5651
5652 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
5653
5654         * regalloc2.c (INS_POS_INTERVAL): Decrease this to 8 to avoid overflows.
5655         (update_liveness): Avoid holes in the liveness ranges of hregs if they are
5656         both the source an destination of an instruction.
5657
5658 Tue Nov 11 19:30:50 CET 2008 Paolo Molaro <lupus@ximian.com>
5659
5660         * jit-icalls.c, local-propagation.c, mini.c, ssa.c, ssapre.c, trace.c,
5661         wapihandles.c: more portability changes.
5662
5663 Tue Nov 11 18:56:33 CET 2008 Paolo Molaro <lupus@ximian.com>
5664
5665         * aot-compiler.c, aliasing.c, abcremoval.c: portability changes.
5666         * mini.c mini.h, aot-runtime.c: the aot segfault-handling code is not
5667         safe to execute in a signal handler and the kernel provides better
5668         the info in /proc/self/smaps. Avoid the assert on sigaction during
5669         cleanup.
5670
5671 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
5672
5673         * method-to-ir.c (mono_method_to_ir2): In the box+brtrue optimization, only
5674         do the bblock linking hack if it is actually needed.
5675
5676         * Makefile.am (patch-libtool): New helper target to patch libtool to speed
5677         up linking.
5678
5679         * liveness.c (ENABLE_LIVENESS2): Reenable this for 64 bit archs as the
5680         crash problem is fixed.
5681
5682         * branch-opts.c (mono_remove_critical_edges): Link up newly added
5683         bblocks.
5684
5685         * mini.c (mini_method_compile): Compute unreachable bblocks properly even
5686         for catch clauses.
5687         (mini_method_compile): Set the starting value of next_vreg to 
5688         MAX_IREGS + MAX_FREGS when using globalra.
5689
5690         * method-to-ir.c (mono_method_to_ir2): Mark bblocks starting
5691         filter clauses with BB_EXCEPTION_HANDLER.
5692
5693         * regalloc2.c (assign_spill_slots): Set cfg->rgctx_var.
5694
5695 2008-11-10  Mark Probst  <mark.probst@gmail.com>
5696
5697         * mini-x86.c (mono_arch_get_argument_info): Don't align argument
5698         space for stdcall.  Fixes regressions on Win32.
5699
5700 2008-11-10  Zoltan Varga  <vargaz@gmail.com>
5701
5702         * regalloc2.c (handle_reg_constraints): Avoid adding code to unreachable
5703         bblocks.
5704         (linear_scan): Remove an assert which doesn't seem to be needed.
5705
5706         * local-propagation.c (mono_local_deadce): Avoid a call to
5707         MONO_DELETE_INS which would screw up the instruction linking.
5708
5709         * mini.c (mono_decompose_op_imm): Make this work with globalra.
5710
5711         * regalloc2.c: Upgrade to work the current JIT code.
5712
5713 2008-11-09  Zoltan Varga  <vargaz@gmail.com>
5714
5715         * method-to-ir.c (inline_method): Merge more basic blocks to help the AOT
5716         case.
5717
5718         * aot-runtime.c: Remove some dead code.
5719
5720         * tramp-arm.c: Use 'code' as the runnning pointer in code generation for
5721         consistency.
5722         (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Implement aot support.
5723
5724         * aot-runtime.c (load_named_code): Decode the offset of lazy fetch
5725         trampolines using sscanf since atoi doesn't work on large unsigned values.
5726
5727         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): 
5728         Initialize code_size.
5729
5730 2008-11-08  Mark Probst  <mark.probst@gmail.com>
5731
5732         * method-to-ir.c (mini_emit_inst_for_method): Make
5733         Interlocked.CompareExchange work for Int arguments on 32 bit
5734         archs, as well.
5735
5736 2008-11-07  Mark Probst  <mark.probst@gmail.com>
5737
5738         * method-to-ir.c (mono_method_to_ir2): Fixed a funny commit error.
5739
5740 2008-11-06  Bill Holmes  <billholmes54@gmail.com>
5741
5742         * main.c Fix MSVC build.
5743
5744         Contributed under MIT/X11 license.
5745
5746 2008-11-06  Mark Probst  <mark.probst@gmail.com>
5747
5748         * mini-x86.c (mono_arch_allocate_vars): Make sure locals that need
5749         alignment larger than 8 bytes are aligned correctly, too.
5750
5751         * mini.c: Honor the min_align field of MonoClass when laying out
5752         the stack.
5753
5754 2008-11-06  Zoltan Varga  <vargaz@gmail.com>
5755
5756         * method-to-ir.c (mono_method_to_ir2): Fix AOT support for CEE_SWITCH on arm.
5757
5758         * aot-compiler.c (emit_plt): Fix a warning.
5759         
5760         * aot-compiler.c: Implement ARM support in the binary writer.
5761
5762 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
5763
5764         * basic-simd.cs: Add test for getter with byref arg.
5765         Fix the naming of a few tests.
5766         Add missing checks to a test.
5767
5768 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
5769
5770         * aot-compiler.c (emit_plt): Make the arm code work with the binary writer.
5771
5772         * aot-compiler.c aot-runtime.c mini-trampolines.c tramp-amd64.c: Implement
5773         most of the full-aot support for monitor enter/exit trampolines.
5774
5775         * tramp-x86.c tramp_amd64.c: Add AOT compatible variants of the monitor
5776         enter/exit trampoline creation functions.
5777
5778         * Makefile.am: Fix the generation of buildver.h so it is not invoked during
5779         make dist.
5780
5781 Wed Nov 5 16:28:53 CET 2008 Paolo Molaro <lupus@ximian.com>
5782
5783         * mini.h, aot-compiler.c, method-to-ir.c, aot-runtime.c: remove the
5784         incorrectly added MONO_WRAPPER_MONITOR_* (in r117651-r117652) and
5785         implement the needed functionality without adding crap to the runtime.
5786
5787 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
5788
5789         * mini-trampolines.c (mono_create_monitor_enter_trampoline): Fix the
5790         non-x86 builds.
5791
5792         * mini.c (mono_build_date): New global version holding the build date in
5793         string format.
5794         
5795         * Makefile.am (buildver.c): Generate a file containing the build date.
5796
5797         * main.c: Set the build date from the generated file.
5798
5799         * mini.c (mono_get_runtime_build_info): New helper function returning build
5800         information in a string format.
5801         
5802         * driver.c (mono_main): Print the build date in --version.
5803
5804         * aot-compiler.c aot-runtime.c: Embed the build information into the AOT
5805         file when the bind-to-runtime-version option is used.
5806
5807 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
5808
5809         * simd-intrinsics.c: Fix bug when using getters and byref args. 
5810
5811 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
5812
5813         * simd-methods.h: Rename prefetch methods.
5814
5815         * simd-intrinsics.c: Same.      
5816
5817 2008-11-05  Mark Probst  <mark.probst@gmail.com>
5818
5819         * tramp-amd64.c: Enlarge the Monitor.Enter/Exit trampoline code
5820         sizes.
5821
5822 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
5823
5824         * aot-compiler.c: Use the bundled elf header files instead of depending on
5825         the system one.
5826         
5827         * aot-compiler.c (emit_symbol_diff): Allocate memory from the acfg
5828         mempool.
5829
5830         * method-to-ir.c (mono_method_check_inlining): Avoid a getenv () call
5831         on every call.
5832
5833 2008-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
5834
5835         * cpu-x86.md: Add store nta ops.
5836
5837         * mini-ops.h: Same.
5838
5839         * mini-x86.c: Same.
5840
5841         * mini.h: Add an enum for simd prefetch modes.
5842
5843         * simd-methods.h: Refactor the store_aligned code to handle multiple kinds
5844         of store. Use the changed code to support store nta.
5845
5846         * simd-intrinsics.c: Add prefetch ops for all vector types.
5847
5848 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
5849
5850         * aot-compiler.c: Add an option for JIT compiling the methods by multiple 
5851         threads.
5852         
5853         * aot-compiler.c: Use statically allocated buffers for constructing symbol 
5854         names.
5855
5856         * aot-runtime.c aot-compiler.c: Add support for the MONITOR_ENTER/EXIT
5857         trampolines.
5858
5859 2008-11-04  Mark Probst  <mark.probst@gmail.com>
5860
5861         * mini-x86.c: Fixed commit.
5862
5863 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
5864
5865         * aot-compiler.c (emit_plt): Align the plt section only on x86.
5866
5867 2008-11-04  Mark Probst  <mark.probst@gmail.com>
5868
5869         * mini-trampolines.c, mini.h: Two new trampolines: MONITOR_ENTER
5870         and MONITOR_EXIT, for the ASM fastpaths.
5871
5872         * method-to-ir.c: Use the ASM fastpath for Monitor.Enter/Exit if
5873         available.
5874
5875         * mini.c, patch-info.h: Signature and patch infos for
5876         Monitor.Enter/Exit trampolines.
5877
5878         * mini-amd64.c, mini-x86.c: Make emit_tls_get() non-static.
5879
5880         * tramp-amd64.c, tramp-x86.c, mini-amd64.h, mini-amd64.h:
5881         Monitor.Enter/Exit ASM fastpath for Linux.
5882
5883 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
5884
5885         * mini.c (mono_method_to_ir): Fix soft-float support in Array.Get/Set.
5886
5887         * objects.cs: Add a new test.
5888         
5889         * aot-compiler.c: Use mono_100ns_ticks () for computing the profiling info.
5890
5891         * aot-runtime.c (load_method): Run class initialization in the PLT case even
5892         if MONO_LOG_LEVEL is set.
5893
5894         * debug-mini.c (serialize_variable): Fix the encoding of dead variables.
5895
5896         * aot-runtime.c (mono_aot_get_method): Skip out-of-date AOT modules.
5897
5898         * aot-compiler.c (emit_and_reloc_code): Speed this up a little.
5899         
5900         * aot-compiler.c: Change the relocation code to use virtual addresses instead
5901         of file offsets. Align the sections belonging to the data segment to 
5902         PAGESIZE.
5903
5904 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
5905
5906         * aot-compiler.c: Simplify the elf writer by depending on the definitions in
5907         elf.h. Port it to amd64.
5908
5909 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
5910
5911         * driver.c: Enable SIMD by default.
5912
5913 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
5914
5915         * cpu-x86.md: Add prefetch op.
5916
5917         * mini-ops.h: Same.
5918
5919         * mini-x86.c: Same.
5920
5921         * mini.h: Add an enum for simd prefetch modes.
5922
5923         * simd-methods.h: Add prefetch function names.
5924
5925         * simd-intrinsics.c: Add prefetch ops for all vector types.
5926
5927 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
5928
5929         * aot-compiler.c (emit_bytes): Speed this up a little.
5930
5931 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
5932
5933         * aot-compiler.c: Add JIT time etc. statistics.
5934         
5935         * aot-compiler.c (compile_method): Fix the copying of the cfgs array.
5936
5937         * mini.h (MonoCompile): Add 'got_offset' field.
5938
5939         * aot-compiler.c: Store the got offset in MonoCompile, get rid of the
5940         method_got_offsets array.
5941
5942         * aot-compiler.c aot-runtime.c: Add support for the monitor enter/exit
5943         wrappers.
5944
5945         * aot-compiler.c (compile_method): Add generic method instances referenced
5946         by the method to the list of methods to be compiled, this is required so if
5947         A<T> references B<T>, and another assembly references A<int>, then it will
5948         also get a copy of B<int>.
5949
5950         * method-to-ir.c (mini_emit_inst_for_method): Use the proper wrapper type
5951         when checking for monitor enter/exit.
5952
5953 2008-10-30  Mark Probst  <mark.probst@gmail.com>
5954
5955         * method-to-ir.c (mini_emit_inst_for_method): Use the IL fastpaths
5956         for Monitor.Enter and Monitor.Exit if enabled.
5957
5958         * mini-x86.h, mini-amd64.h: Enable the IL fastpaths for Linux and
5959         Solaris.
5960
5961 2008-10-30  Zoltan Varga  <vargaz@gmail.com>
5962
5963         * method-to-ir.c (type_from_op): Convert CEE_CONV_U on OP_ICONV_TO_U instead
5964         of an OP_MOVE. Fixes #440046.
5965
5966         * basic-long.cs: Add a new test.
5967
5968 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
5969
5970         * mini.h: Add synchronization note for the managed counter-part.
5971
5972         * simd-intrinsics.c: Add SimdRuntime.get_AccelMode intrinsic that
5973         returns the simd caps of the current cpu.
5974
5975 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
5976
5977         * basic-simd.cs: Remove Console.WriteLine.
5978
5979 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
5980
5981         * basic-simd.cs: New tests for Vector2ul.
5982
5983 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
5984
5985         * simd-intrinsics.c: Add new vector type Vector2ul.
5986
5987 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
5988
5989         * basic-simd.cs: New tests for Vector2l.
5990
5991 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
5992
5993         * cpu-x86.md: Add long version of most packed int ops.
5994
5995         * mini-ops.h: Same.
5996
5997         * mini-x86.h: Same.
5998
5999         * simd-intrinsics.c: Add new vector type Vector2l.
6000
6001 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
6002
6003         * simd-intrinsics.c: Replace SN_op_BitwiseXor with SN_op_ExclusiveOr.
6004
6005         * simd-methods.h: Remove SN_op_BitwiseXor.
6006
6007 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
6008
6009         * mini.c (mono_allocate_stack_slots_full): Align the size of vtypes to their
6010         alignment.
6011
6012 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
6013
6014         * basic-simd.cs: Test for Vector2d.
6015
6016         * basic-simd.cs (test_vector8s_pack_signed_sat): Fixed broken
6017         value.
6018
6019 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
6020
6021         * cpu-x86.md: Add double version of all packed float ops.
6022
6023         * mini-ops.h: Same.
6024
6025         * mini-x86.h: Same.
6026
6027         * simd-intrinsics.c: Add new vector type Vector2d.
6028
6029         * simd-intrinsics.c (vector4f_intrinsics): Fix ordering.
6030
6031         * simd-methods.h: Add Duplicate.
6032
6033 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
6034
6035         * basic-simd.cs: Test for packing with signed saturation.
6036
6037 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
6038
6039         * aot-compiler.c (add_generic_instances): Add all methods of generic instances
6040         found in the TYPESPEC table.
6041
6042 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
6043
6044         * aot-runtime.c (mono_aot_get_method): Log not found methods for extra methods
6045         too.
6046
6047         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
6048
6049         * mini.c (mono_method_to_ir): For MONO_PATCH_INFO_RVA, save field the token
6050         instead of the RVA, since the RVA can be changed by tools like the cil 
6051         stripper.
6052
6053         * method-to-ir.c (mono_method_to_ir2): Ditto.
6054
6055         * debug-mini.c (serialize_variable): Handle ADDRESS_MODE_DEAD.
6056         (deserialize_variable): Ditto.
6057
6058 2008-10-25  Martin Baulig  <martin@ximian.com>
6059
6060         * debug-mini.c (write_variable): Use
6061         `MONO_DEBUG_VAR_ADDRESS_MODE_DEAD' for dead variables.
6062
6063 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
6064
6065         * cpu-x86.md: Add unsigned variants of packd and packw.
6066
6067         * mini-ops.h: Same.
6068
6069         * mini-x86.h: Emit the right instruction for packd and packw.
6070         Add unsigned variants of packd and packw.
6071
6072         * simd-intrinsics.c: Packd and packw were used in place of their
6073         unsigned variants. Change that.
6074         Add intrinsics for (Signed)PackWithSignedSaturation.
6075
6076         * simd-methods.h: Add (Signed)PackWithSignedSaturation.
6077
6078 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
6079
6080         * simd-intrinsics.c (vector4i_intrinsics): New table of intrinsic type.
6081
6082 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
6083
6084         * mini-ops.h: Remove dword packed add/sub with saturation ops.
6085
6086         * cpu-x86.md: Remove dword packed add/sub with saturation ops.
6087
6088         * simd-intrinsics.c (vector4ui_intrinsics): Remove methods without
6089         sse instructions.
6090
6091         * simd-intrinsics.c (vector8s_intrinsics): Fix ordering.
6092
6093 2008-10-24  Mark Probst  <mark.probst@gmail.com>
6094
6095         * method-to-ir.c, mini.c: Special casing for the synchronized
6096         wrapper for the ldtoken+GetTypeFromHandle case.
6097
6098 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
6099
6100         * mini.c (mono_replace_ins): Move this to branch-opts.c.
6101
6102         * mini.c (mono_replace_ins): Propagate has_array_access flag to the newly
6103         created/split bblocks.
6104
6105 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
6106
6107         * mini-ops.h: Add packed signed mul high.
6108         
6109         * cpu-x86.md: Same.
6110
6111         * mini-x86.c (mono_arch_output_basic_block): Same.
6112
6113         * simd-methods.h: Add PackWithUnsignedSaturation and ShiftRightLogic.
6114
6115         * simd-intrinsics.c (vector8s_intrinsics): New table of intrinsic type.
6116
6117 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
6118
6119         * basic-simd.cs: Tests for Vector16sb.
6120
6121 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
6122
6123         * inssel.brg (stmt): Fix OP_HARD_NOP rule.
6124
6125 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
6126
6127         * mini-ops.h: Add packed signed min, max and compare greater.
6128         
6129         * cpu-x86.md: Same.
6130
6131         * mini-x86.c (mono_arch_output_basic_block): Same. Add packed add/sub with
6132         saturation.
6133
6134         * simd-methods.h: Add CompareGreaterThan.
6135
6136         * simd-methods.h: Remove CompareEquals.
6137
6138         * simd-intrinsics.c: Add new TODO entry and some cosmetic changes.
6139
6140         * simd-intrinsics.c (vector16sb_intrinsics): New table of intrinsic type.
6141
6142         * simd-intrinsics.c (vector4f_intrinsics): Rename CompareEquals to
6143         CompareEqual.
6144
6145 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
6146
6147         * basic-simd.cs: Fix tests due to change in the API.
6148
6149 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
6150
6151         * mini.c method-to-ir.c: Use mono_field_get_name () for accessing field->name.
6152
6153 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
6154
6155         * basic-simd.cs: Fix name change in Vector4f::CompareEqual.
6156
6157         * simd-intrinsics.c (simd_intrinsic_emit_store_aligned): Don't use
6158         inst_offset as this has invalid values for LDADDR.
6159
6160 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
6161
6162         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
6163
6164         * simd-intrinsics.c (vector4ui_intrinsics): Add SignedPackWithUnsignedSaturation.
6165
6166 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
6167
6168         * method-to-ir.c (initialize_array_data): Use mono_field_get_data ()
6169         for accessing field->data.
6170
6171 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
6172
6173         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
6174
6175 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
6176
6177         * simd-methods.h: Add SignedPackWithUnsignedSaturation.
6178
6179         * simd-intrinsics.c (vector8us_intrinsics): Add SignedPackWithUnsignedSaturation.
6180
6181 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
6182
6183         * dominators.c (mono_compute_natural_loops): Allocate GList enties
6184         from the cfg mempool.
6185
6186 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
6187
6188         * basic-simd.cs: Tests for new methods in Vector8us.
6189
6190 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
6191
6192         * mini-ops.h: Add multiply and store high.
6193         
6194         * cpu-x86.md: Same.
6195
6196         * mini-x86.c (mono_arch_output_basic_block): Same.
6197
6198         * simd-methods.h: Same.
6199
6200         * simd-intrinsics.c (vector8us_intrinsics): Add MultiplyStoreHigh
6201         and CompareEqual.
6202
6203 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
6204
6205         * method-to-ir.c (mono_emit_method_call_full): Remove a needless call to
6206         mono_class_setup_vtable ().
6207
6208         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Use
6209         mono_class_get_vtable_entry () for accessing klass->vtable.
6210
6211         * aot-runtime.c (load_method): Avoid a crash when using MONO_LOG_LEVEL.
6212
6213         * aot-compiler.c (add_generic_instances): Avoid a crash if a class is not
6214         found.
6215
6216         * method-to-ir.c (mono_save_token_info): Don't save references made from
6217         wrappers.
6218
6219         * aot-compiler.c (add_generic_instances): Add static rgctx wrappers for cctors
6220         of generic instances.
6221
6222         * aot-runtime.c (find_extra_method): Search in all loaded AOT images.
6223
6224 2008-10-19  Mark Probst  <mark.probst@gmail.com>
6225
6226         * cpu-ppc.md, mini-ppc.c: The length of the code generated for
6227         OP_JMP depends on the method signature.  Calculate it properly.
6228
6229 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
6230         
6231         * aot-runtime.c (mono_aot_find_jit_info): Handle extra methods which are
6232         called directly.
6233
6234         * aot-compiler.c (emit_and_reloc_code): Allow direct calling of generic
6235         instances.
6236         (emit_extra_methods): Add another table mapping method indexes to 
6237         offsets in the extra_method_info table.
6238
6239         * mini.h: Bump AOT file format version.
6240         
6241         * aot-runtime.c: Merge most of the code from mono_aot_get_method
6242         and mono_aot_get_method_from_token () into one function.
6243
6244 2008-10-19  Mark Probst  <mark.probst@gmail.com>
6245
6246         * mini-ppc.c (emit_load_volatile_arguments): Inner loop needs a
6247         separate counter.
6248
6249 2008-10-18  Zoltan Varga  <vargaz@gmail.com>
6250
6251         * aot-compiler.c aot-runtime.c: Fix the hash function used for the extra
6252         methods.
6253
6254         * method-to-ir.c (mono_method_to_ir2): Change a !compile_aot assert to
6255         disable_aot.
6256
6257         * mini.c (mono_patch_info_equal): Compare the generic context as well.
6258
6259         * mini.h: Bump aot file format version.
6260
6261         * aot-compiler.c aot-runtime.c: Generalize the wrapper handling code so the
6262         AOT file can contain native code for methods which are not in the METHOD
6263         table. Generate code for non-sharable generic instances of generic methods
6264         found in the METHODSPEC table.
6265         
6266         * method-to-ir.c (mono_method_to_ir2): Remove the aot restriction when
6267         encoding generic type handles.
6268
6269         * ir-emit.h (NEW_AOTCONST_TOKEN): Add a generic_context argument.
6270         (NEW_TYPE_FROM_HANDLE_CONST): Add a generic_context argument.
6271
6272         * ir-emit.h: Rewrite the EMIT_NEW_XXXCONST macros to use the NEW_XXXCONST
6273         macros + MONO_ADD_INS.
6274
6275         * mini.c (mono_jump_info_token_new2): New function which takes a generic
6276         context as well.
6277
6278         * mini.h (MonoJumpInfoToken): Include fields for a generic context.
6279
6280         * mini.h: Bump aot file format version.
6281
6282         * aot-compiler.c aot-runtime.c: Update after changes to MonoJumpInfoToken.
6283
6284 2008-10-17  Mark Probst  <mark.probst@gmail.com>
6285
6286         * mini-x86.h, mini-x86.c, exceptions-x86.c: Align stack on all
6287         platforms, with definable stack alignment value.  Set to 16 now
6288         for all platforms.
6289
6290         * mini.c, mini.h, driver.c: Command line option for disabling
6291         stack alignment.
6292
6293 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
6294
6295         * basic-simd.cs: Tests for new methods in Vector4ui.
6296
6297 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
6298
6299         * mini-ops.h: Add packed int shuffle.
6300         
6301         * cpu-x86.md: Same.
6302
6303         * mini-x86.c (mono_arch_output_basic_block): Same.
6304
6305         * simd-intrinsics.c (vector4ui_intrinsics): Add compare equal,
6306         extract mask, max, min, shuffle.
6307
6308         * simd-intrinsics.c (vector8us_intrinsics): Add max and min.
6309
6310 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
6311
6312         * basic-simd.cs: Tests for new methods in Vector8us.
6313
6314 2008-10-17  Mark Probst  <mark.probst@gmail.com>
6315
6316         * method-to-ir.c (mono_method_to_ir2): "refanytype" produces a
6317         RuntimeTypeHandle, not a TypedReference.
6318
6319 Fri Oct 17 14:40:50 CEST 2008 Paolo Molaro <lupus@ximian.com>
6320
6321         * simd-intrinsics.c: remove relocations.
6322
6323 2008-10-17  Zoltan Varga  <vargaz@gmail.com>
6324
6325         * mini-amd64.c (mono_arch_output_basic_block): Port the IREM_IMM 
6326         optimizations from the x86 backend.
6327
6328 Fri Oct 17 12:00:51 CEST 2008 Paolo Molaro <lupus@ximian.com>
6329
6330         * simd-methods.h, simd-intrinsics.c: debloat method names and
6331         prepare for no relocations.
6332
6333 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
6334
6335         * mini-ops.h: Add packed min/equal and sum of absolute differences.
6336         
6337         * cpu-x86.md: Same.
6338
6339         * mini-x86.c (mono_arch_output_basic_block): Same.
6340
6341         * simd-intrinsics.c (vector16b_intrinsics): Add average, compare equal,
6342         extract mask, max, min and sum of absolute differences.
6343
6344         * simd-intrinsics.c: Increase SIMD_INTRINSIC_NAME_MAX due to new huge
6345         method name.
6346
6347 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
6348
6349         * basic-simd.cs: Test for the other mono_simd_simplify_indirection bug.
6350         Renamed one test for consistency.
6351
6352 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
6353
6354         * simd-intrinsics.c (mono_simd_simplify_indirection): Apply the previous
6355         fix to the code that deal with other blocks.
6356
6357 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
6358
6359         * basic-simd.cs: Test for the mono_simd_simplify_indirection bug.
6360
6361 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
6362
6363         * simd-intrinsics.c (mono_simd_simplify_indirection): Simplify the code
6364         that deals with vreg interference. Explicitly check for OP_LDADDR to be
6365         able to process the source reg.
6366
6367 2008-10-16  Martin Baulig  <martin@ximian.com>
6368
6369         * mini-ops.h, cpu-amd64.md, cpu-x86.md: Added new `hard_nop' opcode.
6370
6371         * inssel.brg: Add `OP_HARD_NOP'.
6372
6373         * mini.h (MonoCompile): Added `keep_cil_nops' flag.
6374
6375         * mini.c (mono_method_to_ir): In `CEE_NOP': generate a
6376         `OP_HARD_NOP' instruction when running inside the debugger.
6377
6378         * method-to-ir.c (mono_method_to_ir2): In `CEE_NOP': generate a
6379         `OP_HARD_NOP' instruction when running inside the debugger.
6380
6381 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
6382
6383         * simd-intrinsics.c (get_simd_vreg): Using sreg1 of OP_XMOVE
6384         now works. The issue with the regalloc tripping up no longer
6385         happens.
6386
6387         * simd-intrinsics.c (load_simd_vreg): Same.
6388
6389 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
6390         
6391         * basic-simd.cs: Tests for new Vector8ui methods.
6392
6393 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
6394
6395         * simd-intrinsics.c (get_simd_vreg): Simplify code and test
6396         only for type. This fixes crashes where MonoInst::klass is checked
6397         for ops of type != VTYPE or OBJ.
6398
6399         * simd-intrinsics.c (load_simd_vreg): Same.
6400
6401 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
6402
6403         * mini-ops.h: Add ops for packed shuffle/max/avg and
6404         extract mask.
6405         
6406         * cpu-x86.md: Same.
6407
6408         * mini-x86.c (mono_arch_output_basic_block): Same.
6409
6410         * simd-intrinsics.c (vector8us_intrinsics): Add avg, shuffle and
6411         extract mask.
6412
6413         * simd-intrinsics.c (simd_intrinsic_emit_extract_mask): New function
6414         to emit extract mask op.
6415
6416         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Retrofic this function
6417         to emit word shuffles.
6418
6419 2008-10-15  Mark Probst  <mark.probst@gmail.com>
6420
6421         * mini.c (mono_allocate_stack_slots_full): Align stack frame to
6422         the largest alignment needed by a variable, but at least
6423         sizeof(gpointer).
6424
6425 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
6426
6427         * basic-simd.cs: Tests for the fixes in the last commit.
6428
6429 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
6430
6431         * simd-intrinsics.c (get_simd_vreg): Drop the is_this_ptr, this function
6432         no longer handles STACK_PTR input.
6433
6434         * simd-intrinsics.c (get_simd_vreg): Don't crash when MonoInst::klass == -1.
6435
6436         * simd-intrinsics.c (load_simd_vreg): New function that works like 
6437         get_simd_vreg   but handles STACK_PTR input.
6438
6439         * simd-intrinsics.c (simd_intrinsic_emit_getter): Use load_simd_vreg
6440         as the input can be an arbitrary pointer.
6441
6442         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Try the
6443         LDADDR local optimization directly otherwise use a store op.
6444
6445 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
6446
6447         * basic-simd.cs: Tests for dup low and dup high.
6448
6449 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
6450
6451         * mini-ops.h: Add dup low and dup high ops.
6452         
6453         * cpu-x86.md: Same.
6454
6455         * mini-x86.c (mono_arch_output_basic_block): Same.
6456
6457         * simd-intrinsics.c (vector4f_intrinsics): Same.
6458
6459 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
6460
6461         * basic-simd.cs: Tests for recently added functionality.
6462
6463 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
6464
6465         * mini-ops.h: Add remaining sse1 fp ops.
6466         
6467         * cpu-x86.md: Add remaining sse1 fp ops.
6468
6469         * mini-x86.c (mono_arch_output_basic_block): Same.
6470
6471         * mini.h: Add enum for simd FP compare conditions.
6472
6473         * simd-intrinsics.c (vector4f_intrinsics): Add all new ops.
6474
6475         * simd-intrinsics.c (simd_intrinsic_emit_binary): Set inst_c0 to flags
6476         so the backed can generate the appropriate op.
6477
6478 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
6479         This patch squeese one more byte from the SimdIntrinsc struct.
6480
6481         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions: Use the version number
6482         a a shift amount intead of simply or'ing it.
6483
6484         * mini.h: Change SIMD_VERSION_* values to be sequential intead of masks.
6485
6486         * simd-intrinsics.c (struct SimdIntrinsc): Squeese simd_version and simd_emit_mode into a single
6487         byte so we can have an aditional flags field without increasing struct size.
6488
6489         * simd-intrinsics.c (emit_intrinsics): Use the value of simd_version as a shift amount before checking
6490         against the simd_supported_versions bitmask.
6491
6492         * simd-intrinsics.c: Set SIMD_INTRINSIC_NAME_MAX to an appropriate value.
6493
6494 Mon Oct 13 10:58:10 CEST 2008 Paolo Molaro <lupus@ximian.com>
6495
6496         * mini.c: remove rawbuffer code (the only use here is unsafe because
6497         it takes locks during signal handling and the kernel now provides much
6498         better info in proc/pid/smaps these days).
6499
6500 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
6501
6502         * mini-amd64.c (mono_arch_output_basic_block): Fix the changes to
6503         OP_X86_PUSH_OBJ. Fixes #434620.
6504
6505         * objects.cs: Add a test.
6506         
6507 2008-10-12  Rodrigo Kumpera  <rkumpera@novell.com>
6508
6509         * basic-simd.cs: Remove PackWithUnsignedSaturation tests as it turns out
6510         that the packuswb/packusdw don't work with unsigned numbers for what
6511         would be negative numbers in signed format.
6512
6513         * cpu-x86.md: Add doubleword forms of many ops and packing ones.
6514         Fix the len of fconv_to_r8_x and xconv_r8_to_i4.
6515
6516         * mini-ops.h: Add doubleword forms of many ops and packing ones.
6517
6518         * mini-x86.c: Emit doubleword forms of many ops and packing ones.
6519
6520         * simd-intrinsics.c (SimdIntrinsc): Rename the flags field to simd_version.
6521
6522         * simd-intrinsics.c (vector4f_intrinsics): Use simd_version field for sse3 ops.
6523
6524         * simd-intrinsics.c (vector4u_intrinsics): Rename to vector4ui_intrinsics and
6525         add more ops.
6526
6527         * simd-intrinsics.c (simd_version_name): New function, returns the name of the
6528         version as the enum in mini.h.
6529
6530         * simd-intrinsics.c (emit_intrinsics): Instead of having a special emit mode
6531         for sse3 ops, check the simd_version field if present. This way the code
6532         works with all versions of sse.
6533
6534 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
6535
6536         * simd-intrinsics.c: Fixed intrinsic name typo.
6537
6538         * mini.h: Added missing simd exported function.
6539
6540         * basic-simd.cs: Added tests for Vector4ui.
6541         Fixed broken test for Vector16b.
6542
6543 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
6544
6545         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Increase
6546         the max length to 64.
6547
6548 2008-10-10  Mark Probst  <mark.probst@gmail.com>
6549
6550         * method-to-ir.c: Only do the fast virtual generic method call for
6551         non-wrapper methods.
6552
6553         * mini.h, mini-trampolines.c: The new generic virtual remoting
6554         trampoline handles virtual method calls via the vtable (as done by
6555         the fast virtual generic method calls) to remoting proxies.
6556
6557         * mini.c (mono_jit_create_remoting_trampoline): For generic
6558         methods reate a generic virtual remoting trampoline.
6559
6560         * mini-amd64.h: Enable fast virtual generic method calls again.
6561
6562 2008-10-10  Mark Probst  <mark.probst@gmail.com>
6563
6564         * mini-ppc.c: Use SP (r1), not frame_reg (which might be r31) to
6565         restore registers when doing tail calls.
6566
6567 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
6568
6569         * simd-intrinsics.c (emit_intrinsics): Vector4u was renamed to
6570         Vector4ui.
6571
6572 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
6573
6574         * basic-simd.cs: Add test for Vecto16b.PackWithUnsignedSaturation.
6575
6576 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
6577
6578         * simd-intrinsics.c (emit_intrinsics): Retrofit to new type names.
6579
6580 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
6581
6582         * basic-simd.cs: Retrofit for API changes.
6583
6584 2008-10-10  Mark Probst  <mark.probst@gmail.com>
6585
6586         * mini-ppc.c: Handle integer stack arguments for tail calls.
6587
6588 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
6589
6590         * optflags-def.h: Removed sse3 optimization.
6591
6592         * driver.c: Same.
6593
6594         * mini-x86.c (mono_arch_cpu_optimizazions): Remove detection of
6595         sse3.
6596
6597         * mini-x86.c: Added mono_arch_cpu_enumerate_simd_versions.
6598
6599         * mini.h: Added enumeration with simd versions.
6600
6601         * simd-intrinsics.c (emit_intrinsics): Use the new static var
6602         for detecting SSE3.
6603
6604         * simd-intrinsics.c: Added mono_simd_intrinsics_init.
6605
6606         * mini.c (mini_init): Call mono_simd_intrinsics_init.
6607
6608 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
6609
6610         * basic-simd.cs: Added tests for Vector8u and Vector16u.
6611
6612         * basic-simd.cs: Fixed test naming.
6613
6614 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
6615
6616         * mini-ops.h: Added ops for packed and saturated math, shifts
6617         and packing/unpacking.
6618
6619         * cpu-x86.md: Added descriptors for the above ops.
6620
6621         * mini-x86.c: Added code to emmit the above ops.
6622
6623         * simd-intrinsics.c: Added support for Vector16u and Vector8u.
6624
6625 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
6626
6627         * aot-compiler.c (compile_method): Enable AOT for generic code.
6628
6629         * ir-emit.h (NEW_DOMAINCONST): Use domainvars in AOT code as well.
6630
6631 Wed Oct 8 16:35:43 CEST 2008 Paolo Molaro <lupus@ximian.com>
6632
6633         * mini.c: add a workaround for a common screwup that ends up blamed
6634         to mono (other processes blocking signal delivery).
6635
6636 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
6637
6638         * method-to-ir.c (mono_method_to_ir2): Clear ins_flag on all code paths
6639         in the LDFLD/STFLD opcodes. Fixes #432673.
6640
6641         * iltests.il.in: Add a new test.
6642
6643 Tue Oct 7 19:59:07 CEST 2008 Paolo Molaro <lupus@ximian.com>
6644
6645         * mini-arm.c: attach the thread in unmanaged->managed transitions
6646         using delegates (bug #433148).
6647
6648 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
6649
6650        * basic-simd.cs: Use new ShuffleSel constants.
6651
6652 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
6653
6654         * driver.c (opt_sets): Added combinations of simd, sse2 and sse3.
6655
6656         * mini-x86.c (mono_arch_cpu_optimizazions): Detect sse3 and now
6657         only disable simd intrinsics if no sse2 is detected.
6658
6659         * optflags-def.h: Added sse3.
6660
6661         * simd-intrinsics.c: Avoid generated sse3 intrinsics if the optimization
6662         is disabled.
6663
6664 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
6665
6666         * aot-compiler.c (add_wrappers): Fix Delegate/MulticastDelegate classes
6667         when adding delegate-invoke wrappers.
6668
6669 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
6670
6671         * Makefile.am: Reenable the simd tests.
6672
6673 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
6674
6675         * mini-amd64.c (mono_arch_emit_outarg_vt) : In the ArgValuetypeAddrInIReg case,
6676           add a call to mono_call_inst_add_outarg_reg for the arg->dreg to make sure that no
6677           other vreg is allocated to that hreg.
6678
6679         Contributed under MIT/X11 license.
6680
6681 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
6682
6683         * Makefile.am: Disable the simd tests for now as Mono.Simd is not
6684         yet checked in.
6685
6686 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
6687
6688         * basic-simd.cs: New test suite for SIMD intrinsics.
6689
6690         * Makefile.am: Added new tests.
6691
6692 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
6693
6694         * cpu-x86.md: Added new instructions to handle float to int using SSE regs.
6695
6696         * mini-ops.h: Same.
6697
6698         * mini-x86.h: Enable mono_arch_decompose_opts if simd intrinsics are enabled.
6699
6700         * mini-x86.c (mono_arch_decompose_opts): Decompose float to int conversion
6701         using SSE2 aware opcodes.
6702
6703         * mini-x86.c (emit_float_to_int): Disable the SSE2 optimization if OPT_SIMD
6704         is enabled, this code path is only reachable if conversion ops are emmited after
6705         mono_method_to_ir.
6706
6707         * mini.h: Added MonoCompile::fconv_to_r8_x_var to hold the float to int var.
6708
6709         This optimization saves 6 bytes per conversion against the old version.
6710
6711 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
6712
6713         * aot-compiler.c (compile_method): Don't skip methods referencing 
6714         generic methods without a corresponding entry in token_info_hash, since
6715         encode_method_ref () can handle all generic methods now.
6716
6717         * method-to-ir.c (mono_save_token_info): Don't save the token info if a 
6718         generic context is set.
6719         
6720         * method-to-ir.c (mono_method_to_ir2): Put back a disable_aot for
6721         generic sharing of LDTOKEN.
6722
6723 2008-10-06  Mark Probst  <mark.probst@gmail.com>
6724
6725         * mini-amd64.h: Temporarily disabled fast virtual generic method
6726         calls because it breaks the System.Runtime.Remoting tests.
6727
6728 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
6729
6730         * aot-compiler.c (add_wrappers): Add delegate-invoke wrappers.
6731
6732         * method-to-ir.c (check_inline_called_method_name_limit): Return TRUE
6733         so inlining actually works.
6734         (check_inline_caller_method_name_limit): Ditto.
6735
6736 Mon Oct 6 11:04:38 CEST 2008 Paolo Molaro <lupus@ximian.com>
6737
6738         * mini-ppc.c: mono_arch_flush_icache () cast pointer using gsize for
6739         64 bit safety (from Olaf Hering and Andreas Farber).
6740
6741 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
6742         
6743         * mini-trampolines.c (mono_aot_trampoline): Delegate processing to
6744         mono_magic_trampoline () if aot_get_method_from_token () fails. Remove
6745         unused virtual call support code.
6746
6747         * aot-runtime.c (decode_method_ref): Add a 'no_aot_trampoline' out argument.
6748         
6749         * aot-runtime.c (mono_aot_get_method_from_vt_slot): Return NULL for methods
6750         which can't use aot trampolines.
6751         (decode_patch): Don't create aot trampolines for methods which can't use
6752         them.
6753
6754         * aot-compiler.c (encode_method_ref): Add a marker for methods which can't
6755         use aot trampolines.
6756
6757         * mini.h: Bump AOT image format version.
6758         
6759 2008-10-05  Zoltan Varga  <vargaz@gmail.com>
6760
6761         * method-to-ir.c (mono_method_to_ir2): Pass cil_method instead of cmethod
6762         to save_token_info () since cmethod is inflated for constrained calls.
6763
6764         * mini-<ARCH>.h mini-x86.c: Remove some unused defines.
6765
6766 2008-10-04  Andreas Farber  <andreas.faerber@web.de>
6767
6768         * Makefile.am: Add build rules for ppc64.
6769         This avoids the build failing at pedump with unresolved symbols
6770         due to lack of arch_sources. Instead it will now fail earlier
6771         due to lack of cpu-ppc64.md.
6772
6773         Contributed under MIT/X11 license.
6774
6775 2008-10-04  Mark Probst  <mark.probst@gmail.com>
6776
6777         * mini-amd64.c (mono_arch_emit_call): Support stack arguments for
6778         tail calls.
6779
6780         * iltests.il.in: Add test case for tail call with many arguments.
6781
6782 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
6783
6784         * method-to-ir.c (mono_method_to_ir2): Add an !cfg->compile_aot assert
6785         to the fast virtual generic method code until the aot case is fixed.
6786
6787 2008-10-03  Mark Probst  <mark.probst@gmail.com>
6788
6789         * mini-ppc.c, mini-ppc.h: Implement generic virtual method thunks.
6790
6791 2008-10-03  Mark Probst  <mark.probst@gmail.com>
6792
6793         * mini-amd64.c, mini-amd64.h: Implement generic virtual method
6794         thunks.
6795
6796 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
6797         
6798         * simd-intrinsics.c: Forgot to add this one.
6799
6800         * mini-codegen.c: Fix macro in case SIMD is not supported.
6801
6802 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
6803         
6804         This patch land initial JIT support for simd intrinsics.
6805
6806         * mini-x86.h: Added new define to make --enable_minimal work on x86.
6807
6808         * Makefile.am: Added simd-intrinsics.c
6809
6810         * simd-intrinsics.c: New file with simd instrinsic related
6811         code.
6812
6813         * cfold.c (mono_constant_fold_ins2): Fold XZERO.
6814
6815         * cpu-x86.md: Add simd related instructions.
6816
6817         * driver.c: Added MONO_OPT_SIMD to the default set of optimizations.
6818
6819         * driver.c: Added two new --regression variants.
6820
6821         * ir-emit.h (MONO_EMIT_NEW_VZERO): Emit XZERO if the type is a simd intrinsic.
6822
6823         * local-propagation.c (mono_local_cprop2): Eliminate useless XMOVE.
6824
6825         * local-propagation.c (mono_local_deadce): Use new macro MONO_IS_NON_FP_MOVE and
6826         extract some complicated logic to helper functions.
6827
6828         * method-to-ir.c (mono_type_to_regmove): Handle simd intrinsics.
6829
6830         * method-to-ir.c (mini_emit_inst_for_method): Emit simd intrinsics.
6831
6832         * method-to-ir.c (mono_handle_global_vregs): If a simd intrinsic was found, apply
6833         the specialized simplification pass.
6834
6835         * method-to-ir.c (mono_spill_global_vars): Use new macro.
6836
6837         * mini-codegen.c: Added SIMD constants to all regbanks arrays.
6838
6839         * mini-codegen.c: Added reg_bank_table_init to initialize the reg desc -> bank
6840         table.
6841
6842         * mini-codegen.c: Define a version of the reg_bank macro that uses desc_to_reg_type
6843         if MONO_ARCH_NEED_SIMD_BANK is defined.
6844
6845         * mini-ops.h: Added the new simd ops.
6846
6847         * mini-x86.c: Added mono_arch_xregname.
6848
6849         * mini-x86.c (mono_arch_cpu_optimizazions): Disable MONO_OPT_SIMD if SSE3 is not detected.
6850
6851         * mini-x86.c (mono_arch_output_basic_block): Add simd related opcodes.
6852
6853         * mini-x86.h: Define simd related MONO_ARCH macros.
6854
6855         * mini.c (mono_type_to_load_membase): Handle simd intrinsics.
6856
6857         * mini.c (mono_type_to_store_membase): Handle simd intrinsics.
6858
6859         * mini.h: Added new macros MONO_IS_NON_FP_MOVE, MONO_IS_REAL_MOVE, MONO_IS_ZERO and
6860         MONO_CLASS_IS_SIMD to deal with simd related IR.
6861
6862         * mini.h (MonoInst): Added spill_var to the backend union.
6863
6864         * mini.h (MonoCompile): Added uses_simd_intrinsics and iconv_raw_var.
6865
6866         * mini.h: Added forward declarations of the new simd fuctions.
6867
6868         * optflags-def.h: Added new optimization names SIMD.
6869
6870         * regalloc.c (mono_regstate_reset): Set next vreg to be the max value of the 3 reg banks.
6871
6872         * regalloc.h: Added support for working with 3 register banks.
6873
6874         * regalloc.h (MonoRegState): Added xsymbolic field if a third regbank is required.
6875
6876         * ssa2.c (mono_ssa_deadce2): Use new MONO_IS_ZERO macro.
6877
6878 Fri Oct 3 16:03:22 CEST 2008 Paolo Molaro <lupus@ximian.com>
6879
6880         * mini-exceptions.c: remove 64 bit related ifdef clutter.
6881
6882 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
6883
6884         * mini-exceptions.c (mono_handle_soft_stack_ovf): Unprotect two pages
6885         instead of one on 64 bit systems.
6886
6887         * method-to-ir.c: Remove unused includes.
6888
6889 2008-10-02  Zoltan Varga  <vargaz@gmail.com>
6890
6891         * aot-compiler.c (emit_exception_debug_info): Use jinfo->used_regs instead of
6892         cfg->used_int_regs, since the two are different on arm.
6893
6894 2008-10-02  Mark Probst  <mark.probst@gmail.com>
6895
6896         * method-to-ir.c, inssel.brg, mini-trampolines.c: Use
6897         mono_method_get_vtable_index() to get the vtable index.
6898
6899 2008-10-02  Mark Probst  <mark.probst@gmail.com>
6900
6901         * method-to-ir.c (mono_method_to_ir2): Don't create native
6902         wrappers for array methods, because they're never called (and if
6903         they were called they wouldn't work).
6904
6905 2008-10-02  Mark Probst  <mark.probst@gmail.com>
6906
6907         * method-to-ir.c (mono_method_to_ir2): Array methods are
6908         special-cased and must not be invoked indirectly via the (M)RGCTX
6909         when generic sharing is turned on.  Fixes #431413.
6910
6911 2008-10-01  Mark Probst  <mark.probst@gmail.com>
6912
6913         * method-to-ir.c: When generic sharing is active, call
6914         non-interface virtual generic methods via the standard trampoline.
6915
6916         * mini-trampolines.c: Handle virtual generic shared methods.
6917
6918         * mini.h, mini-x86.c, mini-x86.h: New argument for
6919         mono_arch_build_imt_thunk() which is non-NULL for virtual generic
6920         method thunks and which is the trampoline to call if the lookup
6921         fails.  Enable the virtual generic method thunk for x86.
6922
6923         * mini-amd64.c, mini-arm.c, mini-ia64.c, mini-sparc.c,
6924         mini-ppc.c (mono_arch_build_imt_thunk): Add the additional
6925         argument but assert that it's NULL, because these archs don't yet
6926         implement the virtual generic method thunk.  Changes in the IMT
6927         thunk data structures.
6928
6929 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
6930
6931         * aot-compiler.c (emit_globals): Avoid invalid characters in
6932         the static linking symbol.
6933
6934         * objects.cs: Add a test for the range check optimization. Fix warnings.
6935
6936         * branch-opts.c (mono_if_conversion): Add back the 'optimize range checks'
6937         optimization from the current JIT.
6938
6939         * method-to-ir.c (mini_emit_inst_for_method): Decompose String.Length
6940         later in decompose_array_access_opts () to allow more optimizations.
6941
6942         * method-to-ir.c (mono_handle_soft_float): Rename this to 
6943         mono_decompose_soft_float () for consistency.
6944
6945         * mini-ops.h: Fix arguments of OP_STRLEN.
6946
6947         * method-to-ir.c (save_cast_details): Extract the cast details saving code
6948         into a separate function.
6949         (reset_cast_details): Ditto.
6950         (handle_unbox): Save cast details. Fixes #431254.
6951
6952         * method-to-ir.c: Remove some obsolete FIXMEs.
6953
6954 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
6955
6956         * ir-emit.h (alloc_dreg): Write a warning before crashing.
6957
6958 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
6959
6960         * mini-codegen.c: More work on macros to make them
6961         ready for multiple regbanks.
6962
6963 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
6964
6965         * method-to.ir.c (mono_type_to_regmove): Remove static modifier.
6966
6967         * mini.h: Export mono_type_to_regmove. Fix signature of mono_regname_full.
6968
6969 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
6970
6971         * mini-codegen.c (mono_spillvar_offset): Proper support for
6972         multiple regbanks.
6973
6974 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
6975
6976         * mini-amd64.c (mono_arch_emit_epilog): Remove some duplicated code from
6977         the stack overflow changes.
6978
6979 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
6980
6981         * mini-codegen.c: Make all bank macros depend on reg_bank.
6982
6983         * mini-codegen.c (mono_local_regalloc): Make free mask
6984         initialization regbank aware.
6985
6986 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
6987
6988         * mini-codegen.c (mono_local_regalloc): Extract callee
6989         mask selection to a function and make it regbank aware.
6990
6991 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
6992
6993         * mini-codegen.c (mono_local_regalloc): Changed the cloberring
6994         code to deal with many regbanks.
6995
6996 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
6997
6998         * mini-codegen.c: More fp->regbank changes.
6999
7000 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
7001
7002         * mini-codegen.c: Change asserts to use MONO_NUM_REGBANKS instead
7003         of a hardcoded constant.
7004
7005 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
7006
7007         * method-to-ir.c (type_from_stack_type): Fix typo.
7008
7009 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
7010
7011         * mini-ia64.c (emit_move_return_value): Convert float return values to
7012         double.
7013
7014         * objects.cs: Add a new test.
7015         
7016         * mini-ia64.c (mono_arch_allocate_vars): Disable fp elimination for
7017         VARARG methods to fix an assert later.
7018
7019         * mini-mips.h mini-mips.c mini-ops.h cpu-mips.md: Update the mips back
7020         end so it at least compiles.
7021
7022 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
7023
7024         * method-to-ir.c (emit_optimized_ldloca_ir): Fix this.
7025
7026 2008-09-28  Rodrigo Kumpera  <rkumpera@novell.com>
7027
7028         * method-to-ir.c (mono_method_to_ir2): Extract the ldloca + initobj
7029         optimization to a new function (emit_optimized_ldloca_ir) and enable
7030         it for both ldloca and ldloca_s.
7031
7032 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
7033
7034         * method-to-ir.c (mono_method_to_ir2): Remove an unnecessary assert in the
7035         gshared CASTCLASS code.
7036
7037         * driver.c (mono_main): Add a workaround for shutdown crashes seen on
7038         amd64, where the libc stack unwinder encounters stack frames referring to
7039         native code in unmapped memory.
7040
7041         * method-to-ir.c (mini_emit_check_array_type): Add support for generic
7042         sharing.
7043
7044         * generics.cs: Add new test.
7045
7046 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
7047
7048         * mini-arm.h driver.c: Print the fp model when using --version on arm. Also,
7049         add a check that one of the ARM_FPU_ constants is defined.
7050
7051         * mini-exceptions.c (mono_handle_soft_stack_ovf): Really fix the build.
7052         
7053         * mini-exceptions.c: Fix build on non-altstack platforms.
7054
7055         * method-to-ir.c (mono_method_to_ir2): Fix aot support for the
7056         sharing of vtypes.
7057
7058         * ir-emit.h: Add a comment to NEW_PCONST.
7059
7060         * mini-exceptions.c (mono_altstack_restore_prot): Fix a warning.
7061
7062         * mini.h (MonoJitDomainInfo): Move some fields here from MonoDomain.
7063
7064         * mini.c aot-runtime.c method-to-ir.c driver.c mini-trampolines.c: Update
7065         after the changes to MonoJitDomainInfo.
7066
7067 2008-09-27  Mark Probst  <mark.probst@gmail.com>
7068
7069         * mini-ppc.c, tramp-ppc.c, mini-ppc.h: Implement generic code sharing.
7070
7071 2008-09-27  Mark Probst  <mark.probst@gmail.com>
7072
7073         * mini-ppc.c: Compiler warning fixes.
7074
7075 2008-09-27  Mark Probst  <mark.probst@gmail.com>
7076
7077         * mini-ppc.c: Special handling for 1/2 byte structs on Darwin only
7078         for pinvokes.
7079
7080 2008-09-27  Mark Probst  <mark.probst@gmail.com>
7081
7082         * exceptions-ppc.c, mini-ppc.h: Compile
7083         mono_arch_handle_altstack_exception() on Darwin, too.
7084
7085 2008-09-27  Mark Probst  <mark.probst@gmail.com>
7086
7087         * method-to-ir.c (mono_emit_rgctx_method_call_full): Must also
7088         work on archs which don't have generic sharing implemented, only
7089         without the vtable_arg.
7090
7091 2008-09-26  Mark Probst  <mark.probst@gmail.com>
7092
7093         * mini.c: Added comment explaining why delegate ctor icall
7094         wrappers are compiled.
7095
7096 2008-09-26  Mark Probst  <mark.probst@gmail.com>
7097
7098         * mini.c: Don't produce trampolines to delegate ctor icall
7099         wrappers but compile them upfront.
7100
7101 Fri Sep 26 17:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
7102
7103         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: amd64 support code for calling a
7104         runtime-set function when going back to managed code. Currently this
7105         is used to set back the protection on the soft ovf pages and/or to
7106         throw the stack overflow exception that happened in unmanaged code.
7107
7108 Fri Sep 26 16:46:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
7109
7110         * tramp-x86.c, mini-x86.h, mini-x86.c: x86 support code for calling a
7111         runtime-set function when going back to managed code. Currently this
7112         is used to set back the protection on the soft ovf pages and/or to
7113         throw the stack overflow exception that happened in unmanaged code.
7114
7115 Fri Sep 26 16:34:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
7116
7117         * mini.h, mini.c, mini-trampolines.c, mini-exceptions.c: added
7118         the support code for restoring stack protection after stack overflows
7119         that happen in unmanaged code. Don't set the exec permission on the
7120         soft overflow area.
7121
7122 2008-09-26  Zoltan Varga  <vargaz@gmail.com>
7123
7124         * mini-trampolines.c (mono_delegate_trampoline): Add wrappers even if
7125         delegate->method_ptr is set. Fixes #428054.
7126
7127 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
7128
7129         * tests.cs: Rename to ratests.cs.
7130
7131         * method-to-ir.c: Merge the emit_get_rgctx () calls into the 
7132         emit_get_rgctx_... functions.
7133
7134 2008-09-25  Mark Probst  <mark.probst@gmail.com>
7135
7136         * method-to-ir.c: Eliminated macro EMIT_GET_RGCTX.
7137
7138 2008-09-25  Mark Probst  <mark.probst@gmail.com>
7139
7140         * mini-trampolines.c (mono_magic_trampoline): Unwrap wrappers
7141         before asserting that method is sharable.
7142
7143 2008-09-25  Mark Probst  <mark.probst@gmail.com>
7144
7145         * method-to-ir.c, mini.c, jit-icalls.c: New function for checking
7146         whether method needs a static RGCTX wrapper used instead of
7147         complex conditions.
7148
7149         * generic-sharing.c, mini.h: A few functions moved to
7150         metadata/generic-sharing.c.
7151
7152 2008-09-25  Mark Probst  <mark.probst@gmail.com>
7153
7154         * method-to-ir.c, mini.c, mini-exceptions.c, mini-trampolines.c:
7155         Generic code sharing for value types, which essentially means
7156         treating value type methods like static methods.  The RGCTX is
7157         passed in the same way.
7158
7159 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
7160
7161         * method-to-ir.c (mono_method_to_ir2): Avoid an assert in the NEWOBJ
7162         opcode when creating multi-dimensional arrays of open types.
7163
7164         * generic-sharing.c (mono_method_check_context_used): Handle arrays of
7165         open generic types.
7166
7167         * generics.cs: Add a test.
7168
7169         * mini-codegen.c: Use macros everywhere for checking floats instead of == 'f'.
7170
7171 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
7172
7173         * mini.h (MonoCompile): Add 'disable_vreg_to_lvreg' flag.
7174
7175         * mini.c (mini_method_compile): Set it when running under the debugger. 
7176
7177         * method-to-ir.c (mono_handle_global_vregs): Disable global->local
7178         vreg optimization if the flag is set.
7179
7180         * driver.c (mono_main): Add --attach= option to pass options to
7181         the attach agent.
7182
7183         * mini.c (sigquit_signal_handler): Start the attach agent.
7184
7185         * ssapre.c: Disable this to save space since it is not yet ported to
7186         linear IR.
7187
7188         * regalloc2.c: Disable this to save space.
7189
7190         * mini.h (MonoJitStats): Remove unused analyze_stack_repeat.
7191
7192 Wed Sep 24 16:01:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
7193
7194         * decompose.c, method-to-ir.c, mini-codegen.c, regalloc2.c: make
7195         the -v option useful again.
7196
7197 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
7198
7199         * mini-amd64.c (mono_arch_output_basic_block): Add support for
7200         --break-at-bb.
7201
7202         * inssel.brg (mini_emit_castclass): Avoid the szarray!=array checks for
7203         arrays of arrays. Fixes #428406.
7204
7205         * method-to-ir.c (mini_emit_castclass): Ditto.
7206
7207         * objects.cs: Add new test.
7208         
7209 2008-09-23  Rodrigo Kumpera  <rkumpera@novell.com>
7210
7211         * method-to-ir.c (type_to_eval_stack_type): The code path for the new JIT
7212         was wrong at it choked against target_type_is_incompatible for byref types.
7213
7214 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
7215
7216         * mini-codegen.c: Use 'bank' macros instead of 'is_fp' macros in most 
7217         places.
7218
7219 Tue Sep 23 15:31:45 CEST 2008 Paolo Molaro <lupus@ximian.com>
7220
7221         * mini-exceptions.c: update a few more exceptions-related counters.
7222
7223 Tue Sep 23 15:28:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
7224
7225         * aot-runtime.c, method-to-ir.c, mini.c, mini-trampolines.c: use the
7226         new functions to allocate from persistent mempools.
7227
7228 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
7229
7230         * mini.h regalloc.h mini-codegen.c: Generalize the regalloc code to allow 
7231         multiple register banks in the future.
7232
7233         * mini-codegen.c (mono_local_regalloc): Fix a warning.
7234
7235 2008-09-22  Rodrigo Kumpera  <rkumpera@novell.com>
7236
7237         * mini.c (type_to_eval_stack_type): Remove duplicated function.
7238
7239         * method-to-ir.c (type_to_eval_stack_type): Make this version compatible with both JIT.
7240
7241         * mini.h: Export type_to_eval_stack_type.
7242
7243         This function was nearly duplicated in method-to-ir.c and mini.c. The difference
7244         is only ins->klass of byref types.
7245
7246 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
7247
7248         * method-to-ir.c (mini_emit_memset): Use a default alignment of 4.
7249         (mini_emit_memcpy2): Ditto.
7250
7251         * mini-amd64.c: Fix a warning.
7252
7253 2008-09-21  Mark Probst  <mark.probst@gmail.com>
7254
7255         * exceptions-ppc.c (mono_arch_get_call_filter): Fixed stack frame
7256         linking.
7257
7258 2008-09-19  Rodrigo Kumpera  <rkumpera@novell.com>
7259
7260         * method-to-ir.c: Extract stloc micro-optimization to a
7261         function and apply it to all cases.
7262
7263 2008-09-19  Mark Probst  <mark.probst@gmail.com>
7264
7265         * method-to-ir.c: Don't fail generic code sharing in cases we
7266         already support.
7267
7268 2008-09-18  Mark Probst  <mark.probst@gmail.com>
7269
7270         * mini-ppc.c: Handle structs in tailcalls on Darwin.
7271
7272 Tue Sep 16 21:07:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
7273
7274         * *.c, *.md, mini-ops.h: introduced relaxed_nop opcode for spin wait
7275         implementation.
7276
7277 Tue Sep 16 16:39:16 CEST 2008 Paolo Molaro <lupus@ximian.com>
7278
7279         * trace.c: make tracing more useful and correct, with per-thread
7280         id and indent info.
7281
7282 2008-09-15  Mark Probst  <mark.probst@gmail.com>
7283
7284         * mini-ppc.c (mono_arch_emit_call): Convert floats to R4 when
7285         doing a method call and the argument is an R4.
7286
7287 2008-09-14  Zoltan Varga  <vargaz@gmail.com>
7288
7289         * aot-compiler.c (add_wrappers): Do not generate runtime invoke wrappers for
7290         generic methods.
7291
7292 2008-09-13  Mark Probst  <mark.probst@gmail.com>
7293
7294         * mini-ppc.c: Convert result to single for OP_ICONV_TO_R4.
7295
7296 2008-09-12  Zoltan Varga  <vargaz@gmail.com>
7297
7298         * mini.h (MONO_IS_JUMP_TABLE): Handle GOT_ENTRY.
7299         (MONO_JUMP_TABLE_FROM_INS): Ditto.
7300
7301 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
7302
7303         * driver.c: Add a --agent argument (not supported yet) to load managed
7304         agent assemblies before loading the main assembly, similarly to how the
7305         Java VM handles agents.
7306
7307 2008-09-11  Mark Probst  <mark.probst@gmail.com>
7308
7309         * mini-ppc.c (mono_arch_allocate_vars): Use arch-independent
7310         function to do stack layout of local variables.
7311
7312 2008-09-11  Mark Probst  <mark.probst@gmail.com>
7313
7314         * mini-ppc.c (calculate_sizes): Bugfix in sigcookie position
7315         calculation.
7316
7317 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
7318
7319         * method-to-ir.c ssa2.c mini.c mini-amd64.c decompose.c ssa.c abcremoval.c
7320         abcremoval2.c branch-opts.c driver.c dominators.c: Disable parts of the
7321         JIT if DISABLE_JIT is defined.
7322
7323         * Makefile.am: Avoid compiling/linking in inssel.c if DISABLE_JIT is
7324         defined.
7325
7326 2008-09-10  Mark Probst  <mark.probst@gmail.com>
7327
7328         * iltests.il.in: Disable the fconv test on PPC (the result is
7329         undefined according to ECMA).
7330
7331 2008-09-10  Mark Probst  <mark.probst@gmail.com>
7332
7333         * iltests.il.in: Enable tail call tests for PPC.
7334
7335         * mini.h: Add variable for storing incoming valuetype argument
7336         addresses for tail calls.
7337
7338         * mini-ppc.c: Implement valuetype arguments and return values for
7339         tailcalls on Linux.
7340
7341 2008-09-09  Mark Probst  <mark.probst@gmail.com>
7342
7343         * mini-ppc.c: Partially implement tail calls (struct arguments and
7344         return values not supported).
7345
7346         * method-to-ir.c: Enable tail calls on PPC.
7347
7348 2008-09-08  Zoltan Varga  <vargaz@gmail.com>
7349
7350         * aot-compiler.c (emit_wrapper_info): Omit the klass name from
7351         runtime-invoke wrappers to work around the problem of them getting
7352         assigned to a random class.
7353
7354         * aot-runtime.c (mono_aot_get_method): Ditto.
7355         
7356 2008-09-07  Zoltan Varga  <vargaz@gmail.com>
7357
7358         * mini-exceptions.c mini-mips.h mini-s390.h exceptions-mips.c: Kill
7359         the CUSTOM_EXCEPTION_HANDLING and CUSTOM_STACK_WALK defines.
7360
7361 2008-09-07  Mark Probst  <mark.probst@gmail.com>
7362
7363         * method-to-ir.c (mono_method_to_ir2): Disable tail calls for PPC
7364         until they're implemented properly.
7365
7366         * exceptions-ppc.c: Use arch-independent exception-handling code
7367         instead of custom one.
7368
7369         * exceptions-ppc.c, mini-ppc.c, mini-ppc.h: Bug fixes and changes
7370         for Linear IR.
7371
7372         * tramp-ppc.c, mini-ppc.c: Fixed warnings.
7373
7374         * decompose.c, aot-runtime.c, aot-compiler.c: PPC code also
7375         applies when __powerpc__ is defined.
7376
7377 2008-09-06  Zoltan Varga  <vargaz@gmail.com>
7378
7379         * aot-runtime.c (mono_aot_get_method): Add another cache mapping wrapper
7380         methods to their code to avoid computing the full name of wrappers and
7381         doing a lookup in a string hash table.
7382
7383 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
7384
7385         * method-to-ir.c: Remove the CHECK_BBLOCK () stuff it is not needed since
7386         we identify bblocks before method_to_ir () is ran.
7387
7388         * branch-opts.c (mono_optimize_branches): Avoid nullifying the exit bblock.
7389         Also avoid optimizing branches pointing to themselves.
7390
7391         * mini.c (mini_method_compile): Ditto. Fixes #422947.
7392
7393 2008-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
7394
7395         * driver.c (mono_main): Enable the new verifier under core-clr and cas.
7396
7397 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
7398
7399         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Implement this.
7400         (mono_arch_patch_plt_entry): Fix the calculation of the jump_entry.
7401         (mono_arch_get_nullified_class_init_trampoline): Return 'code' instead of
7402         'buf'.
7403
7404         * aot-compiler.c (emit_plt): Fix the arm plt entries, previously they all 
7405         jumped to the same entry in plt_jump_table.
7406
7407 2008-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
7408
7409         * method-to-ir.c (initialize_array_data): Handle field with RVA from
7410         dynamic images.
7411
7412 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
7413
7414         * method-to-ir.c (handle_isinst): Do the assignment at the beginning, so the
7415         other assignment can be if converted. Saves 1.5% on corlib size and fixes
7416         #421807.
7417
7418 2008-08-29  Geoff Norton  <gnorton@novell.com>
7419
7420         * aot-compiler.c: The Mach/ARM compiler doesn't understand the bss
7421         segment, and doesn't properly handle .space as .text.  Fixes
7422         AOT Mach/ARM
7423
7424 2008-08-29  Geoff Norton  <gnorton@novell.com>
7425
7426         * mini.c: Disable the mach exception handler when running on 
7427         ARM
7428
7429 2008-08-29  Geoff Norton  <gnorton@novell.com>
7430
7431         * aot-compiler.c: Patch from Renaldas Zioma to properly register 
7432         globals on Darwin/ARM
7433
7434 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
7435
7436         * mini.c: Avoid not initializing the runtime when doing AOT compilation, 
7437         since too many things depend on it. Instead, call 
7438         mono_runtime_set_no_exec ().
7439         
7440         * mini.c (mono_create_tls_get): Call mono_alloc_preg (cfg) when running with
7441         the new JIT.
7442
7443         * aot-compiler.c: Add an 'asm-only' AOT option.
7444
7445         * mini.c: Avoid initializing the runtime when doing AOT compilation.
7446                 
7447         * aot-compiler.c (compile_method): Disable gshared support for now as it
7448         doesn't yet work.
7449
7450 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
7451
7452         * mini-amd64.h : Fix a compiler warning.
7453
7454         * exceptions-amd64.c (mono_arch_unwindinfo_install_unwind_info) :
7455           Changed to use a callback function to retrieve the unwind info.
7456           This avoids problems observed when code blocks were removed by
7457           unloading an app domain.
7458
7459         * mini-amd64.c (mono_arch_cpu_optimizazions) : Removing the peephole 
7460           and branch excludes for Winx64.  The fix in exceptions-amd64.c allows them
7461           to work properly.
7462
7463         Contributed under MIT/X11 license.
7464
7465 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
7466
7467         * mini-amd64.c (mono_arch_output_basic_block) : Fix the OP_X86_PUSH_OBJ
7468           case to keep the stack aligned to 8.
7469
7470         Contributed under MIT/X11 license.
7471
7472 2008-08-26  Zoltan Varga  <vargaz@gmail.com>
7473
7474         * aot-runtime.c (mono_aot_get_method): Add a cache for wrapper names to
7475         avoid repeated linear searches.
7476
7477 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
7478
7479         * aot-compiler.c (add_wrappers): Avoid calling get_runtime_invoke with
7480         methods it can't handle.
7481         
7482         * aot-compiler.c (add_method): Avoid adding a method twice.
7483         (add_wrappers): Add runtime invoke wrappers for all methods.
7484
7485         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): New
7486         function to create an aot-compatible version of this trampoline.
7487
7488         * aot-compiler.c aot-runtime.c: Add support for AOT rgctx fetch trampolines.
7489
7490 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
7491
7492         * aot-compiler.c (compile_method): Skip wrappers of generic icalls.
7493
7494         * method-to-ir.c (mono_method_to_ir2): Replace an assert in UNBOX_ANY
7495         with a generic sharing failure.
7496
7497         * aot-compiler.c (emit_klass_info): Call mono_class_get_nested_types ().
7498
7499         * method-to-ir.c (mono_method_to_ir2): Rethrow the correct exception in
7500         CEE_RETHROW. Fixes #419634.
7501
7502         * mini.c (mono_method_to_ir): Ditto.
7503
7504         * exceptions.cs: Add a new test.
7505         
7506         * generic-sharing.c (mini_type_stack_size): Always pass TRUE as allow_open
7507         to mono_type_stack_size_internal () since some callers might not pass in
7508         an rgctx.
7509
7510         * mini-x86.c (mono_arch_emit_prolog): Store the rgctx before calling
7511         instrument_prolog. Fixes #419878.
7512
7513         * mini.c (mono_compile_create_var_for_vreg): Make the lvars representing
7514         doubles in soft float mode volatile.
7515
7516 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
7517
7518         * ir-emit.h (NEW_ARGSTORE): Use cfg->args and cfg->arg_types to fix the build.
7519
7520         * method-to-ir.c (mono_save_args): Use ARGSTORE instead of TEMPSTORE
7521         to handle soft float correctly.
7522
7523         * tramp-arm.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Implement
7524         the fast path.
7525
7526         * mini.h (struct MonoCallInst): Add dynamic_imt_arg boolean field.
7527
7528         * exceptions-arm.c (mono_arch_find_jit_info): Set ctx->regs [ARMREG_R11]
7529         to sp, since the generics catch code requires it.
7530
7531         * mini-arm.h (MONO_ARCH_VTABLE_REG): Use R0 for this to avoid needless
7532         copying.
7533
7534         * method-to-ir.c (emit_imt_argument): Pass imt_arg to 
7535         mono_arch_emit_imt_argument ().
7536
7537         * mini-<ARCH>.c (mono_arch_emit_imt_argument): Add an 'imt_arg' argument.
7538
7539         * mini-arm.c tramp-arm.c: Generic sharing updates.
7540
7541 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
7542
7543         * mini-arm.c: Fix the arm build.
7544
7545         * generic-sharing.c (mini_type_get_underlying_type): New helper function
7546         handling enums, generic instances and generic sharing.
7547         (mini_type_stack_size_full): Ditto.
7548
7549         * mini-amd64.c mini-x86.c mini-arm.c: Use the new functions.
7550         
7551         * mini.h (struct): Add 'uses_rgctx_reg' and 'uses_vtable_reg' fields.
7552
7553         * method-to-ir.c: Set the new fields when using RGCTX_REG/VTABLE_REG.
7554
7555         * tramp-arm.c: Implement the rgctx fetch and the generic class init 
7556         trampolines.
7557
7558         * mini-arm.c: Various small generic sharing changes.
7559
7560         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline): Implement
7561         this for x86.
7562         (mono_arch_create_trampoline_code): Remove most of the GENERIC_CLASS_INIT
7563         custom code.
7564
7565         * mini-trampolines.c (mono_create_generic_class_init_trampoline): New
7566         helper function to return a generic class init trampoline.
7567
7568         * method-to-ir.c mini.c: Use it.
7569         
7570         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline): New
7571         arch-specfic function to return a generic class init trampoline.
7572
7573         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Remove most of
7574         the GENERIC_CLASS_INIT custom code.
7575
7576         * method-to-ir.c (mono_method_to_ir2): If RGCTX_REG is not defined, that is
7577         a fatal error, not a sharing failure.
7578
7579         * tramp-<ARCH>.c (mono_arch_get_rgctx_lazy_fetch_offset): Removed, no longer
7580         needed.
7581
7582         * mini-trampolines.c (mono_rgctx_lazy_fetch_trampoline): Get the additional
7583         trampoline argument from MONO_ARCH_VTABLE_REG.
7584
7585         * tramp-x86.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
7586         order of the arguments to the C trampoline: pass 'slot' as the trampoline
7587         argument, and pass the vtable in VTABLE_REG.
7588
7589         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
7590         order of the arguments to the C trampoline: pass 'slot' as the trampoline
7591         argument, and pass the vtable in VTABLE_REG.
7592         (mono_arch_create_trampoline_code_full): Remove some special casing for
7593         the rgctx fetch trampoline.
7594
7595         * mini.c (mono_method_to_ir): Fix the STELEM_ANY+null value optimization.
7596         Fixes #419273.
7597
7598         * iltests.il: Add a test for it.
7599
7600 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
7601
7602         * aot-compiler.c (compile_method): Enable AOT support for generics sharing.
7603
7604         * method-to-ir.c (mono_method_to_ir2): Remove an aot restriction which is
7605         no longer needed.
7606
7607         * mini-trampolines.c (mono_magic_trampoline): Add a sync wrapper here,
7608         use mono_jit_info_table_find () to avoid recursion.
7609         (mono_delegate_trampoline): Add a sync wrapper here.
7610
7611         * method-to-ir.c (mono_method_to_ir2): Don't call mono_ldftn_nosyc
7612         here.
7613
7614         * mini.c (mono_method_to_ir): Ditto.
7615         
7616         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Remove
7617         add_sync_wrapper argument. Don't add a sync wrapper here.
7618         (mono_create_jump_trampoline): Don't add a sync wrapper here.
7619
7620         * jit-icalls.c (mono_ldftn_nosync): Removed, no longer needed.
7621         
7622 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
7623
7624         * exceptions-amd64.c (seh_handler):  For Winx64 adding missing copy 
7625           of nonvolatile registers back from MonoContext to CONTEXT.
7626
7627         Contributed under MIT/X11 license.
7628
7629 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
7630
7631         * mini-amd64.c (mono_arch_get_delegate_invoke_impl):  When shifting the
7632           arguments on Winx64 there are only 4 argument registers.  For this
7633           logic to work the last argument must be pulled from the stack.  
7634
7635         Contributed under MIT/X11 license.
7636
7637 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
7638
7639         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
7640
7641         * aot-runtime.c aot-compiler.c patch-info.h mini.c: Get rid of
7642         MONO_PATCH_INFO_WRAPPER, encode/decode wrapper methods like the others in
7643         encode/decode_method_ref ().
7644
7645         * aot-compiler.c (encode_patch): Handle STATIC_RGCTX_INVOKE wrappers.
7646
7647         * aot-runtime.c (decode_patch): Ditto.  
7648
7649         * mini.c (mono_resolve_patch_target): Handle RGCTX_FETCH sub-patches of type
7650         MONO_PATCH_INFO_METHOD.
7651
7652         * aot-runtime.c (decode_exception_debug_info): Decode the contents of
7653         MonoGenericJitInfo.
7654
7655         * aot-compiler.c (emit_exception_debug_info): Emit the contents of
7656         MonoGenericJitInfo.
7657
7658         * method-to-ir.c (emit_imt_argument): Fix AOT+gshared support.
7659
7660         * mini-amd64.c (add_valuetype): Use a dummy gsctx if we didn't receive
7661         one from the caller.
7662
7663         * aot-runtime.c (decode_generic_inst): New function to decode and
7664         return a interned generic inst.
7665         (decode_klass_ref): Use it.
7666         (decode_method_ref): Ditto.
7667
7668         * aot-compiler.c (emit_exception_debug_info): Save 
7669         jinfo->has_generic_jit_info too.
7670
7671 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
7672
7673         * mini-ia64.c (mono_arch_output_basic_block): Add OP_FCONV_TO_I.
7674
7675         * iltests.il.in: Add a test for fconv_to_i.
7676
7677         * liveness.c: Disable the liveness2 pass for now to save space.
7678
7679         * regalloc2.c: Include mempool-internals.h to fix warnings.
7680
7681         * aot-compiler.c (encode_method_ref): Encode the context of generic
7682         instance methods.
7683
7684         * aot-runtime.c (decode_method_ref): Inflate generic methods using
7685         the context saved in the aot file.
7686
7687         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
7688
7689         * mini-x86.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
7690
7691         * method-to-ir.c (mono_method_to_ir2): When using CEE_JMP, make arguments
7692         volatile so they won't be optimized away.
7693
7694 2008-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
7695
7696         * ssa.c:
7697         * ssa2.c:
7698         * mini.c:
7699         * regalloc2.c:
7700         * dominators.c: Remove duplicated functions that now are in
7701         mempool-internals.h.
7702
7703 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
7704
7705         * aot-compiler.c: Fix warnings.
7706
7707         * aot-runtime.c (decode_klass_ref): Add support for VARs/MVARs.
7708
7709         * aot-compiler.c (encode_klass_ref): Encode is_method too for VARs/MVARs.
7710
7711         * method-to-ir.c (emit_get_rgctx_method): Use MONO_PATCH_INFO_METHODCONST
7712         as the patch type.
7713
7714         * mini.c (mono_resolve_patch_target): Ditto.
7715         
7716         * aot-compiler.c (encode_patch): Add support for RGCTX_FETCH.
7717         (encode_klass_ref): Add support for encoding VARs/MVARs.
7718
7719         * mini.c (mono_patch_info_dup_mp): Handle RGCTX_FETCH.
7720
7721         * aot-runtime.c (decode_patch_info): Rename to 'decode_patch'. Split out
7722         the handling of the got entries into a separate 'decode_got_entry' function.
7723         Add support for RGCTX_FETCH.
7724
7725         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RDI since RAX is
7726         clobbered by the trampoline code.
7727
7728         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RAX since that is
7729         not clobbered by the indirect calling code.
7730
7731 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
7732
7733         * mini-x86.c (mono_arch_patch_code): Handle RGCTX_FETCH/GENERIC_CLASS_INIT
7734         to fix the build.
7735
7736 2008-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
7737
7738         * method-to-ir.c (mono_emit_method_call_full): Alloc the constructor
7739         signature using the compilation mempool otherwise we would leak it.
7740
7741 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
7742
7743         * method-to-ir.c (mono_method_to_ir2): Emit the generic class inits using
7744         mono_emit_abs_call ().
7745
7746         * patch-info.h: Add GENERIC_CLASS_INIT.
7747
7748         * mini.c (mono_resolve_patch_target): Handle GENERIC_CLASS_INIT.
7749
7750         * mini-amd64.c (emit_call_body): Treat abs calls which have a patch info
7751         as their target as a near call.
7752
7753         * mini.c (mono_codegen): Handle patches stored in cfg->abs_patches in the
7754         ABS handling code.
7755         (mono_resolve_patch_target): Add support for MONO_PATCH_INFO_RGCTX_FETCH.
7756
7757         * method-to-ir.c (mono_emit_abs_call): New helper function which emits a
7758         call to a runtime function described by a patch.
7759
7760         * method-to-ir.c: Emit rgctx entry fetches and class init trampolines using
7761         mono_emit_abs_call, this has the advantage that the ABS handling code in
7762         mono_codegen () can handle them both, and can handle other stuff in the
7763         future without additional code.
7764
7765         * mini.h (struct MonoJumpInfoRgctxEntry): New structure describing an rgctx
7766         entry.
7767         (MonoCompile): Add 'abs_patches' hashtable, which contains patches describing
7768         abs addresses.
7769
7770         * mini.h: Add missing bblock related prototypes.
7771
7772         * mini.h (MonoCompile): Remove unused reverse_inst_list and
7773         reverse_inst_list_len fields.
7774
7775         * mini.c: Refactor this file a bit by moving branch optimizations to 
7776         branch-opts.c.
7777
7778         * method-to-ir.c: Merge generic sharing changes missed earlier.
7779
7780         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST.
7781
7782         * aot-runtime.c (decode_patch_info): Refactor the code dealing with the
7783         shared patches. Process METHODCONST as a shared patch.
7784
7785         * liveness.c (mono_analyze_liveness): Disable the liveness2 code for now
7786         as it crashes on the 2.0 mscorlib.
7787
7788         * aot-compiler.c (is_shared_got_patch): Revert the last change as it seems
7789         to cause crashes.
7790         
7791         * aot-compiler.c: Use is_plt_patch () in a few additional places.
7792         (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST, which is generated
7793         by IMT.
7794
7795         * aot-compiler.c: Reorganize the got handling code to be a bit more
7796         understandable.
7797
7798 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
7799
7800         * aot-compiler.c: Make the patch_to_plt_offset hash table use 
7801         mono_patch_info_equals/hash, and use it to massively simplify
7802         get_plt_index ().
7803
7804         * mini.c (mono_patch_info_hash): Simplify this and add support for
7805         more patch types.
7806
7807         * patch-info.h: Rename RGCTX_LAZY_FETCH_TRAMPOLINE to just RGCTX_FETCH.
7808
7809         * mini.c aot-compiler.c aot-runtime.c: Revert the LAZY_FETCH_TRAMPOLINE
7810         handling code, since an offset is not enough to identify a trampoline.
7811
7812         * method-to-ir.c: Remove some g_assert (!cfg->compile_aot) lines.
7813
7814 2008-08-17  Mark Probst  <mark.probst@gmail.com>
7815
7816         * mini.c (mono_op_imm_to_op): Add case for OP_IMUL_IMM.
7817
7818         * method-to-ir.c (mono_method_to_ir2): Decompose OP_CKFINITE.
7819
7820         * mini-ops.h: Argument and result types for OVF_CARRY ops.
7821
7822         * decompose.c: PPC decompositions for various ops.
7823
7824         * cpu-ppc.md, inssel-ppc.brg, mini-ppc.c: PPC changes for Linear IL.
7825
7826 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
7827
7828         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Make this
7829         call the generic trampoline code using a call, instead of a jump, to
7830         remove some special casing from the generic trampoline code.
7831
7832         * mini.c (mono_resolve_patch_target): Handle LAZY_FETCH_TRAMPOLINE.
7833         (mono_codegen): Ditto.
7834
7835         * aot-compiler.c aot-runtime.c: Ditto.
7836
7837         * patch-info.h: Add MONO_PATCH_INFO_RGCTX_LAZY_FETCH_TRAMPOLINE.
7838
7839         * mini-trampolines.c (mono_find_rgctx_lazy_fetch_trampoline_by_addr): New
7840         helper function to find the offset corresponding to a lazy fetch trampoline.
7841
7842         * mini.h (MonoCompile): Add 'orig_method' field to hold the original method
7843         when doing generic sharing.
7844
7845         * aot-compiler.c: Use cfg->orig_method instead of cfg->method in a lot of
7846         places.
7847         
7848         * mini.c (mono_create_rgctx_lazy_fetch_trampoline): Move this to
7849         mini-trampolines.c to be with the other trampoline creation functions.
7850
7851         * method-to-ir.c (mono_emit_method_call): Remove the 'signature' argument
7852         as it is equal to method->signature in most cases, add a 
7853         mono_emit_method_call_full variant which takes a signature and an imt
7854         argument as well.
7855
7856 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
7857
7858         * jit-icalls.c (mono_helper_compile_generic_method): Don't pass the context
7859         to this function, since it could be computed easily from the method 
7860         argument.
7861         (mono_helper_compile_generic_method_wo_context): Removed, not needed any
7862         more.
7863
7864         * method-to-ir.c mini.c: Remove references to 
7865         compile_generic_method_wo_context.
7866
7867         * method-to-ir.c (mono_method_to_ir2): Enable AOT for virtual
7868         generic method calls.
7869         
7870         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_1 for 1
7871         dimensional non-szarrays.
7872
7873         * mini.c (mini_init): Register mono_array_new_1.
7874
7875         * jit-icalls.c (mono_array_new_1): New jit icall.
7876
7877         * mini-trampolines.c (mono_magic_trampoline): For jumps, patch the GOT entries
7878         pointing to the method.
7879
7880         * aot-runtime.c (mono_aot_get_method_from_token): Register GOT slots holding
7881         method addresses belonging to METHOD_JUMP patches in the 
7882         jump_target_got_slot_hash.
7883         (mono_aot_load_method): Ditto.
7884
7885         * aot-compiler.c (compile_method): Allow AOT compilation of methods with
7886         METHOD_JUMP patches.
7887
7888         * mini.c (mini_create_jit_domain_info): New helper function which 
7889         initializes/frees domain->runtime_info.
7890         (mini_free_jit_domain_info): Ditto.
7891         (mini_init): Install the domain hook functions with the runtime.
7892
7893         * mini.h (MonoJitDomainInfo): New structure which stores the domain specific
7894         information maintained by the JIT.
7895
7896         * mini.c (mono_resolve_patch_target): For PATCH_INFO_METHOD_JUMP, move the
7897         insertion into jump_table_hash into mono_codegen (), also implement proper
7898         locking.
7899
7900         * method-to-ir.c (mono_method_to_ir2): Don't disable AOT for CEE_JMP and
7901         tail calls, it is already done by the aot code.
7902         
7903         * method-to-ir.c (mono_method_to_ir2): Handle CEE_JMP using the tail call
7904         mechanism on amd64.
7905
7906         * iltests.il.in: Make the jmp test a bit more complex.
7907
7908         * aot-compiler.c (encode_method_ref): Handle references to normal methods of
7909         generic instances which doesn't have a token.
7910
7911         * aot-runtime.c (decode_method_ref): Ditto.
7912         
7913         * method-to-ir.c (handle_unbox_nullable): Don't disable AOT, the aot code
7914         can handle this case now.
7915         (handle_box): Ditto.
7916
7917 2008-08-15  Geoff Norton  <gnorton@novell.com>
7918
7919         * mini-x86.c: Fix alignment on Apple x86, and re-disable the alignment
7920         debugging check.
7921
7922 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
7923
7924         * method-to-ir.c (mono_method_to_ir2): Allow AOT compilation of methods
7925         calling generic methods.
7926
7927         * aot-compiler.c (encode_patch): Handle MONO_PATCH_INFO_METHOD_RGCTX.
7928
7929         * aot-runtime.c (decode_patch_info): Ditto.
7930
7931         * mini.c (mono_resolve_patch_target): Ditto.
7932         
7933         * patch-info.h: Add METHOD_RGCTX.
7934
7935         * mini-amd64.c (mono_arch_output_basic_block): Optimize LOCALLOC_IMM.
7936
7937 2008-08-14  Zoltan Varga  <vargaz@gmail.com>
7938
7939         * mini-amd64.c (mono_arch_emit_call): Nullify call->vret_var if returning
7940         arguments in registers.
7941
7942         * decompose.c (mono_decompose_vtype_opts): Create a var for the vreg in
7943         OP_VCALL too, don't depend on OP_OUTARG_VTRETADDR doing it.
7944
7945         * mini.c (mini_method_compile): Abort aot compilation for generic
7946         methods if generic sharing is disabled.
7947         
7948         * mini.c (mono_method_to_ir): Disable AOT for virtual calls requiring
7949         an mrgctx.
7950
7951         * method-to-ir.c (mono_method_to_ir2): Disable AOT for virtual calls 
7952         requiring an mrgctx.
7953
7954         * decompose.c (mono_decompose_vtype_opts): Emit the correct sized
7955         store instructions when converting a vcall to a normal call.
7956
7957         * mini.c (sigprof_signal_handler): Call mono_find_jit_info instead of
7958         mono_arch_find_jit_info.
7959
7960 2008-08-13  Zoltan Varga  <vargaz@gmail.com>
7961
7962         * method-to-ir.c (check_inline_called_method_name_limit): Optimize this to
7963         avoid calling mono_method_full_name () for every method even if the
7964         env var is not set.
7965         (check_inline_caller_method_name_limit): Ditto.
7966
7967 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
7968
7969         * driver.c (main_thread_handler): Allow AOT compilation of multiple 
7970         assemblies in one run.
7971
7972         * aot-compiler.c (mono_compile_assembly): Only print out a count of
7973         skipped methods if it is not 0.
7974
7975         * Makefile.am (aotcheck): AOT compile all test assemblies in one run.
7976
7977 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
7978
7979         * mini.c (mono_codegen):  Changing a preprocessor check from WIN64 to
7980           MONO_ARCH_HAVE_UNWIND_TABLE.
7981
7982         Contributed under MIT/X11 license.
7983
7984 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
7985
7986         * mini-amd64.c (mono_arch_cpu_optimizazions):  Remove peephole and branch
7987           from default optimizaton list on Winx64.
7988
7989         * mini-amd64.c (emit_tls_get):  Added Winx64 specific implementation for GetTLS.
7990
7991         * mini-amd64.c (mono_arch_emit_prolog):  Adding an offset on Winx64 to get
7992           the LMF from the MonoJitTlsData structure.
7993
7994         * mini-amd64.c (mono_arch_setup_jit_tls_data):  Added Winx64 implementation.
7995
7996         Contributed under MIT/X11 license.
7997
7998 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
7999
8000         * mini.c (sigsegv_signal_handler): Fix the build.
8001
8002         * mini-amd64.c (emit_call_body): Use image->aot_module instead of 
8003         assembly->aot_module.
8004
8005         * aot-runtime.c: Use image->aot_module instead of searching in the aot_modules
8006         hash table. This simplifies and speeds up a lot of code, and fixes support
8007         for .netmodules.
8008
8009         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes if the thread is not registered
8010         with the runtime.
8011
8012         * mini-exceptions.c: Ditto.
8013         
8014         * exceptions-*c.c (mono_arch_find_jit_info): Remove unused 'trace' and
8015         'native_offset' argument, since these are computed in the 
8016         mono_find_jit_info () function.
8017
8018         * mini-exceptions.c (mono_find_jit_info): Make this non-static, as it
8019         is used by exceptions-ppc.c.
8020
8021         * exceptions-ppc.c: Call mono_find_jit_info () instead of 
8022         mono_arch_find_jit_info ().
8023         
8024         * mini-ppc.h exceptions-ppc.c mini-mips.h mini-mips.c exceptions-mips.c
8025         mini-exceptions.c: Get rid of the CUSTOM_STACK_WALK stuff, use the
8026         generic code in mini-exceptions.c.
8027
8028 2008-08-11  Zoltan Varga  <vargaz@gmail.com>
8029
8030         * mini-ppc.c (mono_arch_flush_register_windows): Add this for ppc.
8031
8032         * aot-runtime.c (mono_aot_get_plt_info_offset): Fix a warning.
8033         
8034         * aot-runtime.c (mono_aot_get_method): Avoid doing all the loading inside
8035         the aot lock, to avoid deadlocks when mono_aot_get_class_from_name () is
8036         called while holding the loader lock. Fixes #415608.
8037         (mono_aot_get_method_from_token_inner): Ditto.
8038
8039 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
8040
8041         * exceptions-ppc.c (mono_jit_walk_stack): Use MONO_INIT_CONTEXT_FROM_CURRENT
8042         to reduce differences between this and the generic implementation in
8043         mini-exceptions.c.
8044         (ves_icall_get_frame_info): Ditto.
8045
8046         * mini-ppc.h (MONO_INIT_CONTEXT_FROM_CURRENT): Define this for ppc too.
8047
8048         * mini-exceptions.c (mono_exceptions_init): Remove an #ifdef which is no
8049         longer neccesarry.
8050
8051         * exceptions-ppc.c (arch_get_call_filter): Rename this to 
8052         mono_arch_get_call_filter () and make it non-static, for consistency with the
8053         other architectures.
8054
8055 2008-08-09  Rodrigo Kumpera  <rkumpera@novell.com>
8056
8057         * mini.c:
8058         * local-propagation.c:
8059         * mini-x86.c: Correct the name of arch defines.
8060
8061 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
8062
8063         * method-to-ir.c (mono_op_to_op_imm_noemul): Correct name of
8064         NO_EMULATE_LONG_SHIFT_OPS define.
8065
8066 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
8067
8068         * method-to-ir.c (mono_method_to_ir2): Remove some code from CEE_MONO_LDPTR
8069         now that aot-ed icall wrappers use CEE_MONO_ICALL_ADDR.
8070
8071         * aot-compiler.c aot-runtime.c: Add support for static aot compilation.
8072         MACH fixes. Merged from the 2.0 branch.
8073
8074         * method-to-ir.c (mono_method_to_ir2): Handle CEE_MONO_ICALL_ADDR.
8075
8076         * mini.c (mono_resolve_patch_target): Error out if an icall is not found.
8077         (mono_method_to_ir): Handle CEE_MONO_ICALL_ADDR.
8078
8079         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Add AOT support.
8080
8081         * method-to-ir.c mini.c driver.c aot-compiler.c: Update after
8082         mono_marshal_get_native_wrapper () signature changes.
8083
8084 2008-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
8085
8086         * jit-icalls.c (mono_fconv_ovf_u8): Work around soft-float double to long
8087         conversion bug under arm.
8088
8089 2008-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
8090
8091         * cpu-arm.md: Increase long_conv_to_ovf_i4_2 max length to 36.
8092
8093         * mini-arm.c (mono_arch_output_basic_block): Implement long to int conversion
8094         with overflow checking.
8095
8096 2008-08-05  Marek Habersack  <mhabersack@novell.com>
8097
8098         * Makefile.am (GENMDESC_PRG): when cross-compiling use full path
8099         to the genmdesc.pl file
8100
8101 2008-08-05  Zoltan Varga  <vargaz@gmail.com>
8102
8103         * ir-emit.h (EMIT_NEW_ARGSTORE): Fix the usage of param_types and
8104         arg_array in the soft-float versions of the LOAD/STORE macros.
8105
8106         * method-to-ir.c (mono_method_to_ir2): Fix a warning in the arm switch
8107         implementation.
8108
8109         * ir-emit.h (NEW_VARLOADA): Handle SOFT_FLOAT correctly.
8110
8111 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
8112
8113         * mini-ia64.c (add_valuetype): Only reserve half parameter slot for each member of
8114         a float HFA. Fixes #413621.
8115
8116 2008-08-02  Gert Driesen  <drieseng@users.sourceforge.net>
8117
8118         * mini-x86.c (mono_arg_get_argument_info): Rename last occurrence of
8119         frame_size to args_size. Fixes build.
8120
8121 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
8122
8123         * mini-x86.c (mono_arch_get_argument_info): Rename frame_size to args_size,
8124         and don't align it to MONO_ARCH_FRAME_ALIGNMENT.
8125
8126         * mini-x86.h: Change MONO_ARCH_FRAME_ALIGNMENT to 8 so doubles stored on
8127         the stack are not unaligned. Fixes #413247.
8128         
8129 Fri Aug 1 18:46:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
8130
8131         * mini.c: update jitted methods performance counters.
8132
8133 Fri Aug 1 16:30:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
8134
8135         * mini-exceptions.c: increase the exceptions thrown performance
8136         counter in mono_handle_exception ().
8137
8138 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
8139
8140         * aot-runtime.c: Use MonoImage's as keys in the aot_modules hash so the aot
8141         can work with netmodules.
8142
8143 2008-07-28  Geoff Norton  <gnorton@novell.com>
8144
8145         * mini-x86.h: Correct the frame alignment on OSX.  Fixes the jit 
8146         regression tests.
8147
8148 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
8149
8150         * mini-x86.c (mono_arch_emit_call): Emi the osx stack alignment at the
8151         correct place.
8152
8153 2008-07-28  Bill Holmes  <billholmes54@gmail.com>
8154
8155         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
8156           The float param registers and other param registers must be the 
8157           same index on Windows x64.
8158
8159         * mini-amd64.c (mono_arch_allocate_vars) : Implementing the 
8160           ArgValuetypeAddrInIReg argument case.  Setting the argument
8161           op to OP_VTARG_ADDR (OP_REGOFFSET)).
8162
8163         * mini-amd64.c (mono_arch_call_opcode) : Winx64 fix.  Use the size
8164           variable computed above as the copy length for arguments of storage
8165           type ArgValuetypeAddrInIReg.
8166
8167         * mini-amd64.c (mono_arch_emit_call) :  Implementing the 
8168           ArgValuetypeAddrInIReg argument case.  This case will rely on
8169           mono_arch_emit_outarg_vt to emit the correct code later in the process.
8170
8171         * mini-amd64.c (mono_arch_emit_call) :  On Winx64 there always needs to be
8172           a 32 byte stack allocation for all calls.  We will omit the adjustment for
8173           jump and tail call instructoins as they do not follow the typical call behavior.
8174
8175         * mini-amd64.c (mono_arch_emit_outarg_vt) :  Implementing the case for
8176           ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
8177           local variable and pass the local variable by reference to the called method.
8178
8179         * mini-amd64.c (mono_arch_emit_prolog, emit_load_volatile_arguments) :
8180           Implementing the ArgValuetypeAddrInIReg argument case.  When the address
8181           of a struct is passed in a register it must be saved with the other
8182           volatile argument on the stack.
8183
8184         * mini-amd64.c (mono_arch_emit_prolog) : Winx64 fix.  When omitting the
8185           frame pointer the stack adjustment value must be saved to the unwind 
8186           info structure.
8187
8188         Contributed under MIT/X11 license.
8189
8190 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
8191
8192         * inssel-x86.brg (stmt): Add missing OP_X86_OUTARG_ALIGN_STACK rule
8193         which got lost in the merge.
8194
8195 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
8196
8197         * method-to-ir.c: Make the helper_sig variables extern to fix the ppc
8198         build.
8199
8200         * mini-amd64.c (emit_call_body): Add a no_patch case missed earlier.
8201         
8202         * mini-amd64.c (emit_call_body): Avoid aligning the call instruction on
8203         icalls, since they won't be patched.
8204
8205         * exceptions-amd64.c (mono_arch_get_restore_context_full): Use a slightly
8206         different code sequence when running under valgrind to prevent some valgrind
8207         errors.
8208
8209         * iltests.il.in: Add new regression test.
8210
8211         * method-to-ir.c (mono_method_to_ir2): Fix handling of inlined methods which
8212         end with a throw.
8213
8214         * method-to-ir.c (mono_method_to_ir2): Use get_vreg_to_inst () instead of
8215         accessing cfg->vreg_to_inst directly to prevent a crash in LDFLD.
8216
8217         * iltests.il.in: Add new test.
8218
8219         * aot-compiler.c: Fix some warnings.
8220
8221         * decompose.c (mono_decompose_long_opts): Implement OP_ICONV_TO_OVF_I8_UN.
8222         Fixes #412494.
8223
8224 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
8225
8226         * driver.c (mono_main): Fix the --gc=none build. Fixes #412482.
8227         (mini_usage_jitdeveloper): Add a missing --wapi option.
8228
8229 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
8230
8231         * mini-codegen.c: Simplify the is_fp macros.
8232         (free_up_ireg): Remove, use free_up_reg instead.
8233         (free_up_reg): Fix the fp case.
8234
8235 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
8236
8237         * cpu-arm.md (loadr8_membase): Increase the length of this as this is not
8238         lowered earlier.
8239
8240         * exceptions-x86.c: Merge some changes which seemed to have got lost
8241         in the linear-ir merge.
8242
8243         * liveness.c: Disable the liveness2 pass on 32 bit platforms.
8244
8245         * method-to-ir.c (mono_handle_global_vregs): Make the component vregs of a
8246         long vreg volatile even if the variable was already created.
8247
8248         * liveness.c (update_liveness2): Avoid eliminating dead definitions of
8249         volatile variables.
8250
8251 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
8252
8253         * cpu-x86.md (fcall_membase): Increase the size of the fcall opcodes.
8254
8255         * mini.c (mono_jit_compile_method_inner): Add support for 
8256         MONO_EXCEPTION_BAD_IMAGE.
8257
8258         * method-to-ir.c (mono_method_to_ir2): Avoid a crash if 
8259         mini_method_get_context () returns NULL. Fixes #356531.
8260
8261         * mini.c (mono_method_to_ir): Ditto.
8262         
8263         * method-to-ir.c (mono_method_to_ir2): Create a variable if needed when
8264         accessing a field of a valuetype in LDFLD/STFLD. Fixes #412399.
8265
8266 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
8267
8268         * method-to-ir.c (mono_method_to_ir2): Initialize an uninitialized variable
8269         in the LDFTN implementation.
8270
8271 2008-07-25  Mark Probst  <mark.probst@gmail.com>
8272
8273         * mini-trampolines.c (mono_magic_trampoline): When sharing generic
8274         code, patch calls to icalls, too, even if they're not in the
8275         shared generic code hash.  Fixes #411962.
8276
8277 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
8278
8279         * cpu-x86.md: Increase the length of the fcall opcodes.
8280
8281         * mini-x86.c (emit_move_return_value): Avoid some precision issues for
8282         calls returning floats.
8283
8284         * method-to-ir.c (mono_method_to_ir2): Remove the generic sharing restrictions
8285         on NEWARR.
8286         
8287         * method-to-ir.c (mono_method_to_ir2): Merge some LDFTN gsharing changes
8288         missed earlier.
8289
8290         * method-to-ir.c (handle_delegate_ctor): Avoid putting dynamic methods
8291         into the domain->method_code_hash.
8292
8293         * aot-compiler.c: Fix win32 build.
8294
8295         * method-to-ir.c (EMIT_GET_RGCTX): Call EMIT_NEW_LDARG in emit_get_rgctx ().
8296         
8297         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_specific in the
8298         gshared NEWARR implementation.
8299
8300         * cpu-sparc.md: Remove duplicate localloc_imm opcode.
8301
8302         * ir-emit.h (NEW_ARGLOAD): Use cfg->args and cfg->arg_types so this macro
8303         can be used outside of method_to_ir.
8304
8305         * mini.h (MonoCompile): Add arg_types field.
8306
8307         * method-to-ir.c (inline_method): Save/Restore cfg->args and cfg->arg_types.
8308         
8309         * method-to-ir.c (mono_method_to_ir2): Set cfg->args and cfg->arg_types to
8310         the values of the local arg_array and param_types array.
8311
8312 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
8313
8314         * method-to-ir.c (mono_method_to_ir2): Allocate a GOT var for NEWOBJ, since
8315         got accesses might only get generated later when NEWOBJ is decomposed.
8316         
8317         * method-to-ir.c (handle_delegate_ctor): Add an optimization to avoid
8318         looking up the native code of the target method when a delegate is called
8319         for the first time.
8320
8321         * mini-trampolines.c (mono_delegate_trampoline): Add the other half of the
8322         optimization.
8323
8324         * debug-debugger.c (MONO_DEBUGGER__debugger_info): Fix a warning.
8325
8326         * aot-runtime.c aot-compiler.c: Add a new option 'no-dlsym' which makes
8327         AOT work on platforms without a working dlsym implementation.
8328
8329         * mini.h: Bump AOT image format version.
8330         
8331 2008-07-24  Mark Probst  <mark.probst@gmail.com>
8332
8333         * mini-exceptions.c: Free a MonoType with
8334         mono_metadata_free_type() instead of g_free().
8335
8336         * aot-runtime.c: Free a MonoType.
8337
8338 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
8339
8340         * method-to-ir.c (mono_method_to_ir2): Add a comment for the box+brtrue
8341         optimization.
8342
8343         * mini-codegen.c (mono_local_regalloc): Remove the remaining items from the
8344         fp stack on x86.
8345
8346 2008-07-23  Massimiliano Mantione  <massi@ximian.com>
8347         * mini.c (sigprof_signal_handler): call the new "runtime initialized"
8348         profiler hook.
8349
8350 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
8351
8352         * method-to-ir.c (mono_method_to_ir2): Set the stack type properly for
8353         NEWOBJ calls on valuetypes.
8354
8355         * iltests.il.in: Add new test.
8356
8357         * mini-x86.c (mono_arch_emit_call): Use mini_type_stack_size ().
8358
8359 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
8360
8361         * mini-exceptions.c: Fix some warnings. Remove one ia64 special case as it
8362         is no longer needed.
8363
8364         * mini-ia64.c (mono_arch_emit_prolog): In native-to-managed wrappers, widen
8365         non register sized integer arguments.
8366         (mono_arch_call_opcode): Add support for ArgInFloatRegR4.
8367         (mono_arch_emit_outarg_vt): Pass a more reasonable alignment to 
8368         emit_memcpy2 ().
8369
8370         * method-to-ir.c (mono_method_to_ir2): Handle the ret_var_is_local case in
8371         CEE_MONO_RETOBJ.
8372         
8373         * method-to-ir.c (ADD_WIDEN_OP): New macro to insert a widening op when
8374         two a binop with different sized arguments is emitted.
8375
8376         * mini.c (mono_bblock_insert_after_ins): Properly link up with the next
8377         instruction in the ins==NULL case.
8378
8379 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
8380
8381         * mini-ops.h: Add OP_X86_OUTARG_ALIGN_STACK.
8382
8383         * mini-x86.c: Fix osx build.
8384
8385         * mini-amd64.c (mono_arch_output_basic_block): Handle varargs in the CALL_REG
8386         opcodes as well.
8387
8388         * method-to-ir.c (mono_spill_global_vars): Avoid fusing a load+store into the
8389         instruction for non int sized variables.
8390
8391         * method-to-ir.c (mono_method_to_ir2): Fix an assert in the LDFLD
8392         implementation.
8393
8394 2008-07-23  Robert Jordan  <robertj@gmx.net>
8395
8396         * method-to-ir.c: Fix MSVC build.
8397
8398 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
8399
8400         * method-to-ir.c (mono_method_to_ir2): When calling native code which returns
8401         a non int sized type, widen it to an int since newer versions of gcc seem to
8402         generate code which needs this.
8403
8404         * ssa2.c abcremoval2.c: Fix warnings.
8405
8406         * *: Merge the Linear IR branch.
8407
8408         The original branch is at trunk/branches/vargaz/mini-linear-il, and
8409         the ChangeLog file there describes all the changes done over the years. 
8410         Further documentation can be found at www.mono-project.com/Linear_IL.
8411
8412 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
8413
8414         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
8415           The float param registers and other param registers must be the 
8416           same index on Windows x64.
8417
8418         Contributed under MIT/X11 license.
8419
8420 2008-07-21  Rodrigo Kumpera  <rkumpera@novell.com>
8421
8422         * mini.c: Make the previous fix GC safe.
8423
8424 2008-07-21  Raja R Harinath  <harinath@hurrynot.org>
8425
8426         * Makefile.am (version.h): Allow a trailing '/' in the repository URL.
8427
8428 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
8429
8430         * mini-amd64.c (get_call_info): Correcting the case for MONO_TYPE_TYPEDBYREF
8431           on Winx64.  This type will not be passed on the stack (ArgOnStack), but 
8432           ArgValuetypeAddrInIReg instead.
8433
8434         Contributed under MIT/X11 license.
8435
8436 2008-07-21  Zoltan Varga  <vargaz@gmail.com>
8437
8438         * mini-codegen.c (get_register_spilling): Fix a warning.
8439
8440 2008-07-17  Rodrigo Kumpera  <rkumpera@novell.com>
8441
8442         * mini.c: Use mono_runtime_class_init_full to avoid leaking memory
8443         for types which the initialization fails. Raises the provided exception
8444         at the right stop after cleanup.
8445
8446 2008-07-16  Zoltan Varga  <vargaz@gmail.com>
8447
8448         * aot-compiler.c: Free most of the memory allocated during compilation.
8449
8450         * mini.c (mini_parse_debug_options): Fix a leak.
8451         
8452         * mini.c (mini_method_compile): Don't add the method to the jit info tables
8453         during aot compilation.
8454
8455 2008-07-14  Zoltan Varga  <vargaz@gmail.com>
8456
8457         * mini.c (mono_method_to_ir): Disable aot for code using CCASTCLASS on x86 as 
8458         it has too much register pressure.
8459
8460 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
8461
8462         * inssel.brg (CEE_CASTCLASS): Remove some dead code.
8463
8464 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
8465
8466         * mini-x86.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
8467         on x86.
8468
8469         * mini-amd64.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
8470         on amd64 similar to the way it is done on arm.
8471
8472         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
8473
8474         * aot-runtime.c (load_aot_module): Rename 'info' to 'amodule' for 
8475         consistency, normalize error messages, avoid loading aot-only modules in
8476         normal mode.
8477
8478         * driver.c (mono_main): Rename --aot-only command line option to --full-aot
8479         for consistency.
8480
8481         * aot-compiler.c aot-runtime.c tramp-arm.c: Implement aot-only support.
8482
8483 2008-07-11  Martin Baulig  <martin@ximian.com>
8484
8485         * debug-debugger.h
8486         (MonoDebuggerInfo): Add `interruption_request'.
8487
8488 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
8489
8490         * aot-compiler.c (emit_plt): Remove some dead code.
8491
8492         * exceptions-arm.c (mono_arch_get_call_filter_full): Initialize ji.
8493
8494         * aot-runtime.c (mono_aot_get_plt_info_offset): New helper function to
8495         return the plt info offset belonging to a given plt entry.
8496
8497         * mini-trampolines.c (mono_aot_plt_trampoline): Use 
8498         mono_aot_get_plt_info_offset.
8499         
8500         * aot-runtime.c aot-compiler.c tramp-arm.c: Change the arm plt code to be
8501         similar to the amd64 code by makeing jumps through a separate jump table 
8502         instead of embedding the jump addresses into the code.
8503
8504 2008-07-11  Zoltan Varga  <vargaz@gmail.com>
8505
8506         * mini.c (mono_method_to_ir): Disable aot for calling ldtoken in a generic
8507         method.
8508
8509 2008-07-10  Martin Baulig  <martin@ximian.com>
8510
8511         * mini.c (mini_method_compile): Disable generics sharing when
8512         running in the debugger.
8513
8514 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
8515
8516         * mini.c (mono_method_to_ir): Create the got var in CEE_REFANYVAL.
8517
8518         * inssel.brg (CEE_CASTCLASS): Avoid reusing temporary registers to prevent
8519         the local register allocator from running out of registers on x86 when 
8520         using aot.
8521
8522 2008-07-10  Bill Holmes  <billholmes54@gmail.com>
8523
8524         * inssel-long.brg For OP_LCONV_TO_OVF_I4 an int cast is needed when 
8525         expressing IntMin for the VS Compiler.  See Compiler Warning (level 2) 
8526         C4146.
8527
8528         Contributed under MIT/X11 license.
8529
8530 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
8531
8532         * aot-compiler.c: Get rid of whitespace in the generated assembly file to
8533         speed up the assembler.
8534
8535 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
8536
8537         * mini-arm.h tramp-arm.c exceptions-arm.c aot-compiler.c: Beginnings of aot-only
8538         support.
8539
8540         * mini.c: Move the soft float handling macros a bit earlier, add 
8541         NEW_TEMPSTORE_SOFT_FLOAT macro, fix warnings, add soft-float support in one
8542         place.
8543
8544         * mini.h: Add prototype for mono_arch_fixup_jinfo.
8545
8546         * mini.c (mini_init): In aot-only mode, set the root domain code manager to
8547         read-only to help catch code allocation requests.
8548         
8549         * mini.c inssel.brg aot-compiler.c: Make the use of IMT runtime configurable,
8550         and turn it off when using --aot-only or when compiling with --aot=full.
8551
8552         * mini.c (mono_resolve_patch_target): In aot-only mode, allocate the
8553         jump table for switches from the normal domain mempool, not the code
8554         manager.
8555
8556         * mini-trampolines.c (get_unbox_trampoline): New function to return an
8557         unbox trampoline which handles aot-only mode too.
8558
8559         * aot-runtime.c (mono_aot_get_unbox_trampoline): New function to lookup
8560         an AOTed unbox trampoline.
8561
8562         * aot-compiler.c (emit_trampolines): Emit unbox trampolines.
8563
8564 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
8565
8566         * wapihandles.c: Fixing MSVC builds.  Include statement changed from <> to
8567         ""
8568
8569         Contributed under MIT/X11 license.
8570
8571 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
8572
8573         * mini.c (mono_codegen):  Allocate space at the end of the code block and store
8574           the unwind information for the method at the end of the allocated block.
8575           
8576         * mini-amd64.h: Added declarations for the unwind routines and adding field to 
8577           MonoCompileArch to hold the unwind info for SEH on Winx64
8578         
8579         * mini-amd64.c (mono_arch_emit_prolog): Calls to the unwind routines added to store
8580           frame pointer info for the method being compiled.
8581           
8582         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception): Added a stack adjustment before
8583           the call to mono_exception_from_token.
8584           
8585         * exceptions-amd64.c: Added mono_arch_unwindinfo* implementations.  This code is responsible
8586           storing the method prolog information in a format that the Winx64 SEH can understand.  This
8587           information is stored a the end of the method block because it is all 32-bit offset based.
8588
8589         Contributed under MIT/X11 license.
8590
8591 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
8592
8593         * mini.h: Remove duplicate definitions of the mini_wapi_ functions.
8594
8595         * wapihandles.c: Fix warnings.
8596
8597         * aot-runtime.c (load_aot_module): Add a missing error message in aot-only
8598         mode.
8599
8600         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Avoid calling 
8601         mono_jit_compile_method in aot-only mode since that calls the type 
8602         initializer.
8603         
8604         * mini-trampolines.c (mono_create_delegate_trampoline): Avoid calling
8605         get_delegate_invoke_impl in aot-only mode.
8606
8607         * mini.c (mono_global_codeman_reserve): Reenable the aot-only check.
8608
8609 2008-07-08  Zoltan Varga  <vargaz@gmail.com>
8610
8611         * trace.c (mono_trace_enter_method): Fix printing of Type instances.
8612
8613         * aot-compiler.c (compile_method): Disable the check for GSHARED since it
8614         is on by default.
8615
8616         * inssel-long.brg (reg): Add a rule for LCALL_REG (OP_I8CONST).
8617
8618         * tramp-amd64.c (mono_arch_nullify_plt_entry): Read the nullified class
8619         init trampoline from the AOT file as well.
8620
8621         * mini-amd64.c (mono_arch_register_lowlevel_calls): Register
8622         mono_amd64_throw_exception as a jit icall since it is needed by the aot-only
8623         code.
8624
8625         * mini.c (mini_init): Move the call to mono_exceptions_init () after 
8626         mono_init.
8627
8628         * exceptions-amd64.c: Add _full variants for the remaining exception code
8629         creation functions as well, allow emission of relocatable code, remove
8630         caching since that is now done by the caller.
8631
8632         * mini-exceptions.c: Add _full variants for the remaining exception code
8633         creation functions as well, add aot-only support.
8634
8635         * aot-compiler.c (compile_method): Allow calls to methods of constructed types
8636         if we can determine a proper token for them.
8637         (add_wrappers): Add a few more wrappers.
8638         (emit_method_code): Remove some dead code.
8639         (emit_trampolines): Emit exception code too.
8640
8641         * mini.c (mono_method_to_ir): Call mono_array_new_2 if possible.
8642
8643         * jit-icalls.c (mono_array_new_2): New jit icall, specialized version of
8644         mono_array_new_va which avoids varargs.
8645
8646         * mini-exceptions.c (mono_exceptions_init): Fix the ppc build.
8647
8648         * mini-trampolines.c: Call mono_create_specific_trampoline () instead of
8649         mono_arch_create_specific_trampoline () in all places.
8650
8651         * aot-compiler.c aot-runtime.c: Refactor the trampoline emitting/loading code
8652         a bit so it can be used for other things as well.
8653         
8654         * mini-exceptions.c (mono_exceptions_init): Initialize throw_exception_by_name
8655         on demand as well.
8656
8657         * exceptions-amd64.c: Rename the caching from the exception code creation
8658         functions, it is done by the caller instead.
8659         
8660         * exceptions-amd64.c: Change the signature of the exception code creation 
8661         functions to allow the creation of relocatable code later.
8662
8663         * mini-exceptions.c: Add a set of functions to query the various 
8664         runtime-generated exception functions.
8665
8666         * mini.c mini-exceptions.c: Use the newly added functions instead of the
8667         mono_arch_.. () functions.
8668         
8669 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
8670
8671         * mini-trampolines.c (mono_aot_get_trampoline_code): Removed, no longer used.
8672
8673         * aot-runtime.c aot-compiler.c: AOT the generic trampolines in aot-only mode.
8674
8675         * mini.c (mini_get_imt_trampoline): Call mono_create_specific_trampoline ().
8676         (mini_get_vtable_trampoline): Ditto.
8677
8678         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Create relocatable
8679         code in the AOT case by returning the code size and a list of relocations to
8680         the caller.
8681
8682         * mini-trampolines.c (mono_create_specific_trampoline): New helper function.
8683
8684 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
8685
8686         * mini-amd64.c:  On Winx64 the calling convention always requires the caller to 
8687           clean the stack.
8688
8689         Contributed under MIT/X11 license.
8690
8691 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
8692
8693         * aot-compiler.c (emit_exception_debug_info): Serialize the debug info first
8694         so the buffer size can be computed correctly. Fixes #404735.
8695
8696         * debug-mini.c (mono_debug_serialize_debug_info): Lookup the debug info
8697         normally as cfg->debug_info is already freed.
8698
8699 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
8700
8701         * mini-amd64.c: For calls returning vtypes in registers, don't store
8702         the return address on the stack, instead allocate a separate local for
8703         it. Fixes #404729.
8704
8705 2008-07-05  Mark Probst  <mark.probst@gmail.com>
8706
8707         * mini-trampolines.c, mini.h: Add an argument to
8708         mono_create_jit_trampoline_in_domain() for turning off the adding
8709         of the sync wrapper.
8710
8711         * mini.c: Use the JIT trampoline without sync instead of
8712         ldftn_nosync in static RGCTX invoke wrappers so that the call can
8713         be patched.
8714
8715 2008-07-04  Mark Probst  <mark.probst@gmail.com>
8716
8717         * driver.c: Turn on GSHARED optimization by default.
8718
8719 2008-07-04  Zoltan Varga  <vargaz@gmail.com>
8720
8721         * mini-trampolines.c mini.c mini.h tramp-<ARCH>.c: Rename MONO_TRAMPOLINE_GENERIC
8722         to MONO_TRAMPOLINE_JIT since it better reflects what it does.
8723
8724         * mini-trampolines.c (mono_get_aot_trampoline_code): New internal function to
8725         create a variant of the generic trampoline code callable from AOTed trampolines.
8726
8727         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add support for generic
8728         trampoline code callable from AOTed trampolines.
8729
8730         * aot-compiler.c aot-runtime.c: Add support for AOTing trampolines.
8731
8732 2008-07-04  Mark Probst  <mark.probst@gmail.com>
8733
8734         * inssel.brg, mini-ops.h: New opcode for doing CHECK_THIS in a
8735         pass-through manner.
8736
8737         * mini.c: Generic method sharing.  Pass MRGCTX to generic methods
8738         and don't fail sharing for them anymore.
8739
8740         * mini-exceptions.c: Handle exceptions in shared generic methods.
8741
8742         * generic-sharing.c: When checking the context of a generic
8743         method, also check its class's context.  Don't treat wrappers as
8744         sharable.
8745
8746         * mini-trampolines.c: Some code factored out to
8747         metadata/generic-sharing.c.  Handle the MRGCTX case.
8748
8749         * jit-icalls.c, jit-icalls.h: ldvirtfn icall for generic sharing -
8750         we must deal with the method being of another instantiation of the
8751         class.  Add static rgctx invoke wrappers to generic methods.
8752
8753 2008-07-04  Mark Probst  <mark.probst@gmail.com>
8754
8755         * mini.c: Provide all jit infos of generic shared methods with a
8756         generic jit info.
8757
8758         * mini-exceptions.c: Handle the new situation that a generic info
8759         might be available, but not info about the this/vtable/mrgctx
8760         variable.
8761
8762 2008-07-03  Mark Probst  <mark.probst@gmail.com>
8763
8764         * mini.c: Don't accept ldftn and ldvirtftn with uninstantiated
8765         generic methods.
8766
8767 2008-07-03  Zoltan Varga  <vargaz@gmail.com>
8768
8769         * dominators.c (check_dominance_frontier): Fix a warning.
8770
8771         * mini.h: Add some missing prototypes.
8772
8773         * ssa.c local-propagation.c debug-debuger.c: Fix warnings.
8774
8775         * driver.c (mono_jit_init_version): Correct the comments since the first
8776         argument should be the name of the root domain, not a filename.
8777
8778         * aot-runtime.c (make_writable): Error out if this is called while running
8779         with --aot-only.
8780         (load_aot_module): Ditto.
8781
8782         * aot-compiler.c: Really fix the computation of method indexes.
8783
8784         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Remove the previous 
8785         optimizations as this is no longer called frequently.
8786
8787         * mini-trampolines.c (mono_create_delegate_trampoline): Precompute the invoke
8788         method and the invoke impl code and pass it to the delegate trampoline instead of
8789         just the delegate class.
8790
8791 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
8792
8793         * aot-compiler.c: Fixup the computation of method indexes.
8794         (add_wrappers): Create the base methods of the runtime invoke wrappers using
8795         the method builder infrastructure.
8796
8797         * aot-runtime.c (decode_exception_debug_info): Don't crash if the method
8798         has no header.
8799
8800         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): In aot-only
8801         mode, load the method right away instead of creating a trampoline.
8802
8803         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Eliminate locking.
8804
8805         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Eliminate locking, speed up
8806         some checks a bit.
8807
8808 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
8809
8810         * aot-runtime.c (decode_patch_info): Don't create trampolines in aot_only mode.
8811         (mono_aot_load_method): Use method_index instead of method->token.
8812
8813         * mini.c (mono_jit_compile_method_inner): Move the aot_only check down, so it
8814         can handle icalls etc. properly.
8815
8816         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
8817
8818         * aot-compiler.c aot-runtime.c: Allow AOTing many wrapper types.
8819
8820         * mini.c (mono_resolve_patch_target): Handle JIT_ICALL_ADDR.
8821         (mono_codegen): Convert calls made by JIT icall wrappers to the icalls into
8822         JIT_ICALL_ADDR patch type.
8823
8824         * patch-info.h: Add JIT_ICALL_ADDR patch type.
8825
8826         * mini.c (mono_method_to_ir): Allow AOTing methods which access the interruption
8827         request flag.
8828         (mono_resolve_patch_target): Handle INTERRUPTION_REQUEST_FLAG.
8829
8830         * patch-info.h: Add INTERRUPTION_REQUEST_FLAG.
8831
8832 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
8833
8834         * mini.c: Use domain->jit_code_hash_lock for controlling access to
8835         domain->jit_code_hash.
8836
8837 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
8838
8839         * mini.c (mini_parse_debug_options): Add 'dont-free-domains' option.
8840
8841 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
8842
8843         * mini-trampolines.c (mono_delegate_trampoline): Don't pass a gsctx to
8844         get_this_arg_from_call, let it compute it when needed.
8845
8846         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'code' argument, compute
8847         gsctx from code only when needed.
8848
8849         * mini-trampolines.c (get_generic_context): Rename this to 
8850         mono_get_generic_context_from_code (), and move it to generic-sharing.c, where
8851         it can be called by the arch backends.
8852
8853         * mini-exceptions.c (mono_print_thread_dump): Allow the argument to be NULL.
8854
8855 2008-06-26  Zoltan Varga  <vargaz@gmail.com>
8856
8857         * driver.c (mono_main): Add experimental --aot-only command line option.
8858
8859         * mini.c: Error out when creating trampolines or JIT compiling if --aot-only is
8860         set.
8861
8862 2008-06-26  Kornel Pal  <kornelpal@gmail.com>
8863
8864         * driver.c (DllMain): Remove mono_module_handle.
8865
8866         Contributed under MIT/X11 license.
8867
8868 2008-06-25  Zoltan Varga  <vargaz@gmail.com>
8869
8870         * aot-compiler.c: Add not-yet-usable 'full' option. Add some infrastructure code
8871         for emitting methods which are not in the source assembly. Detect and report
8872         failure of assembling+linking.
8873         
8874         * aot-compiler.c (emit_klass_info): Call mono_class_setup_vtable ().
8875
8876         * aot-compiler.c: Move the contents of the has_glot_slots array to MonoCompile.
8877
8878 2008-06-24  Rodrigo Kumpera  <rkumpera@novell.com>
8879
8880         * mini.c: Check if stats is enabled so we don't allocate memory when not needed.
8881
8882 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
8883
8884         * mini.h: Remove some obsolete prototypes.
8885
8886         * mini.c: Avoid storing MonoMethod pointers in the JIT stats, store their string format instead.
8887
8888 2008-06-24  Mark Probst  <mark.probst@gmail.com>
8889
8890         * mini.c (get_object_generic_inst): Variable-sized arrays are not
8891         supported by Visual Studio, so use alloca().
8892
8893 2008-06-23  Zoltan Varga  <vargaz@gmail.com>
8894
8895         * mini-ia64.c (add_valuetype): Increase *gr too when passing a HFA to be in sync with the ABi.
8896         Fixes #402585.
8897
8898 2008-06-23  Mark Probst  <mark.probst@gmail.com>
8899
8900         * mini.c: Fail sharing of a generic method if it contains an open
8901         catch clause (because we don't pass MRGCTXs yet).
8902
8903 2008-06-23  Mark Probst  <mark.probst@gmail.com>
8904
8905         * mini.c: When compiling a method with generic sharing, insert the
8906         method instantiated with an all-Object generic context into the
8907         jit info table, instead of the context of the first instantiation
8908         of the method we happen to compile.
8909
8910 2008-06-18  Martin Baulig  <martin@ximian.com>
8911
8912         * debug-debugger.h (MonoDebuggerInfo): Replaced `version' with
8913         `major_version' and `minor_version'.
8914
8915 2008-06-17  Mark Probst  <mark.probst@gmail.com>
8916
8917         * generic-sharing.c, mini.c, mini.h, aot-runtime.c:
8918         mono_method_is_generic_sharable_impl() takes an additional
8919         argument specifying whether to treat type variables as reference
8920         types.
8921
8922 2008-06-17  Mark Probst  <mark.probst@gmail.com>
8923
8924         * mini.h: Removed obsolete prototypes.
8925
8926 2008-06-17  Mark Probst  <mark.probst@gmail.com>
8927
8928         * mini.c: Don't fail generic sharing for initobj and sizeof - we
8929         already handle them.
8930
8931 2008-06-17  Mark Probst  <mark.probst@gmail.com>
8932
8933         * mini.h, mini-trampolines.c, tramp-alpha.c, tramp-amd64.c,
8934         tramp-arm.c, tramp-hppa.c, tramp-ia64.c, tramp-mips.c,
8935         tramp-ppc.c, tramp-s390.c, tramp-s390x.c, tramp-sparc.c,
8936         tramp-x86.c: Added a MonoGenericContext* argument to
8937         mono_arch_get_unbox_trampoline() so that it can call other
8938         functions which require it.
8939
8940 2008-06-17  Mark Probst  <mark.probst@gmail.com>
8941
8942         * mini.h, mini-trampolines.c, mini-amd64.c, mini-x86.c,
8943         mini-alpha.c, mini-arm.c, mini-ia64.c, mini-ppc.c:
8944         mono_arch_get_this_arg_from_call() takes a
8945         MonoGenericSharingContext* as well.
8946
8947 2008-06-17  Mark Probst  <mark.probst@gmail.com>
8948
8949         * mini.c: Factor out code for emitting unbox into emit_unbox() and
8950         implement generic sharing of unbox.
8951
8952 2008-06-17  Mark Probst  <mark.probst@gmail.com>
8953
8954         * mini.c: Don't compute the vtable to determine whether a field is
8955         special static, because it might not work for open types.
8956
8957 2008-06-17  Mark Probst  <mark.probst@gmail.com>
8958
8959         * mini.c: Removed the unused token_type and token_source arguments
8960         from get_runtime_generic_context_ptr().
8961
8962 2008-06-17  Marek Habersack  <mhabersack@novell.com>
8963
8964         * mini.c (ADD_BINOP): fix the build
8965
8966 2008-06-16  Zoltan Varga  <vargaz@gmail.com>
8967
8968         * mini.c (ADD_BINOP): When operating on a native int and an int32, insert
8969         a widening op.
8970
8971 2008-06-16  Mark Probst  <mark.probst@gmail.com>
8972
8973         * mini.h: Removed class relations enum that's not used anymore.
8974
8975 2008-06-16  Mark Probst  <mark.probst@gmail.com>
8976
8977         * tramp-x86.c, tramp-amd64.c: Slot access code for MRGCTXs.
8978
8979         * mini-trampolines.c: Distinguish between RGCTXs and MRGCTXs in
8980         the lazy fetch trampoline access code.
8981
8982 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
8983
8984         * mini-codegen.c (mono_local_regalloc): Add some micro optimizations.
8985
8986 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
8987
8988         * mini.c: Fix some soft-float bugs. Fixes #378735 and #398348.
8989
8990         * mini.h (MONO_INST_LIST_ENTRY): Fix warnings on arm.
8991
8992         * mini.c (mono_method_to_ir): Check call signature for NEWOBJ as well.
8993
8994 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
8995
8996         * mini-x86.c inssel-x86.brg cpu-x86.md: Implement unsigned min/max
8997         intrinsics.
8998
8999         * mini-ops.h: Add MIN/MAX_UN opcodes.
9000
9001         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Implement unsigned min/max
9002         intrinsics.
9003
9004         * basic-math.cs: Add more min/max tests.
9005
9006         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
9007
9008 2008-06-13  Mark Probst  <mark.probst@gmail.com>
9009
9010         * mini.c: Small fix in the prologue of emit_castclass.
9011
9012 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
9013
9014         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
9015
9016         * mini.c (mini_get_inst_for_method): Remove the Min/Max intrinsics, they
9017         do not work even for unsigned types. Fixes #400014.
9018
9019         * basic-math.cs: Add regression tests for unsigned Min/Max.
9020
9021 2008-06-13  Mark Probst  <mark.probst@gmail.com>
9022
9023         * mini.c: Added additional context_used argument to several
9024         functions, which will be needed for sharing generic methods.  Use
9025         GET_RGCTX macro wherever appropriate.  Declare only one
9026         context_used in mono_method_to_ir().
9027
9028 2008-06-13  Mark Probst  <mark.probst@gmail.com>
9029
9030         * mini.c, generic-sharing.c: Removed generic class relations.
9031
9032         * mini.c, tramp-amd64.c, tramp-x86.c: Additional arguments to
9033         functions due to MRGCTX changes.
9034
9035 2008-06-13  Mark Probst  <mark.probst@gmail.com>
9036
9037         * inssel.brg, inssel-long.brg, inssel-long32.brg, mini-ops.h,
9038         graph.c, local-propagation.c, aliasing.c: New opcodes for calls
9039         with calculated IMT.
9040
9041         * mini.c: Generic sharing of calls via generic interfaces.
9042
9043         * jit-icalls.c, jit-icalls.h: Helper function for compiling a
9044         generic method with non-constant MonoGenericContext*.  Instead,
9045         the context is taken out of the method itself.
9046
9047 2008-06-13  Mark Probst  <mark.probst@gmail.com>
9048
9049         * mini.c: Generic sharing of ldvirtftn.
9050
9051 2008-06-13  Mark Probst  <mark.probst@gmail.com>
9052
9053         * mini.c: Generic sharing of ldftn.
9054
9055 2008-06-13  Mark Probst  <mark.probst@gmail.com>
9056
9057         * mini.c: Do pass VTable/RGCTX argument to static generic methods.
9058
9059 2008-06-13  Mark Probst  <mark.probst@gmail.com>
9060
9061         * mini.c: Generic sharing of the special case of ldtoken followed
9062         by a call to GetTypeFromHandle.
9063
9064 2008-06-13  Mark Probst  <mark.probst@gmail.com>
9065
9066         * mini.c: Generic sharing of box for nullable types.
9067
9068 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
9069
9070         * mini-s390x.c (add_stackParm): Fix computation of offsets when arguments
9071         are passed on the stack. Fixes #324807.
9072
9073 2008-06-12  Bill Holmes  <billholmes54@gmail.com>
9074
9075         * mini-amd64.c:add_valuetype: Adding Winx64 code to fill the ArgInfo
9076         for the ArgValuetypeAddrInIReg case.
9077
9078         * mini-amd64.c:mono_arch_allocate_vars:  Adding a case for 
9079         ArgValuetypeAddrInIReg to avoid asserts.  Code needs to be added here.
9080
9081         * mini-amd64.c: mono_arch_call_opcode:  Adding Winx64 code for an ArgInfo of 
9082         type ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
9083         local variable and pass the local variable by reference to the called method.
9084           
9085         * mini-amd64.c: mono_arch_emit_prolog:  Adjust the stack for calls to
9086         mono_jit_thread_attach and mono_get_lmf_addr for Winx64.
9087
9088         Contributed under MIT/X11 license.
9089
9090 2008-06-10  Rodrigo Kumpera  <rkumpera@novell.com>
9091
9092         * debug-mini.c (mono_debug_free_method_jit_info): Moved to metadata/mono-debug.c.
9093
9094         * debug-mini.c (mono_debug_print_vars): Release memory after printing
9095         everything.
9096
9097 2008-06-10  Martin Baulig  <martin@ximian.com>
9098
9099         * debug-mini.c
9100         (mono_debug_close_method): Check whether `cfg->epilogue_begin != NULL'.
9101
9102 2008-06-09  Kornel Pal  <kornelpal@gmail.com>
9103
9104         * main.c: Add and set argv [argc] to NULL to match C specification that fixes
9105         possible error when no arguments are passed.
9106
9107         Contributed under MIT/X11 license.
9108
9109 2008-06-09  Rodrigo Kumpera  <rkumpera@novell.com>
9110
9111         * mini-exceptions.c (ves_icall_get_trace): Skip source locations
9112         where the file name is NULL.
9113
9114 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
9115
9116         * mini.c: Fix s390 build.
9117
9118 2008-06-08  Zoltan Varga  <vargaz@gmail.com>
9119
9120         * trace.c (mono_trace_parse_options): Fix warnings.
9121
9122         * mini-amd64.c: Revert most of the last patch for now as it breaks the build.
9123
9124 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
9125
9126         * mini.c (remove_block_if_useless): Avoid printing the method name.
9127         
9128         * mini.c: Remove needless setting of ins->cil_code which is now done by 
9129         MONO_INST_NEW.
9130
9131         * mini-amd64.c: Add some code to avoid saving callee saved registers in the
9132         LMF. Not yet used.
9133
9134         * tramp-amd64.c (mono_arch_patch_callsite): Tell valgrind to discard the
9135         translated code after it has been patched.
9136
9137 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
9138
9139         * mini-amd64.c (emit_call_body): Align the call displacement to 4 bytes to
9140         avoid problems during code patching on SMP systems.
9141         (emit_call): Avoid adding a patch info which is already added by 
9142         emit_call_body.
9143         (mono_arch_emit_exceptions): Ditto.
9144
9145 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
9146
9147         * tramp-*.c (mono_arch_get_unbox_trampoline): No need to check for ret->byref,
9148         MONO_TYPE_ISSTRUCT already checks for it.
9149
9150 2008-06-05  Bill Holmes  <billholmes54@gmail.com>
9151
9152         * mini-amd64.c:merge_argument_class_from_type: When marshaling 
9153           structs with floats on Winx64 the float registers are not used.  
9154           The integer registers are always used..
9155         * mini-amd64.c:add_valuetype:  When marshaling structs on Winx64 
9156           only one register will be used and only if the size of the struct 
9157           is 1,2,4, or 8 bytes.
9158
9159         * tramp-amd64.c :  Adjusting size used for mono_global_codeman_reserve
9160           to work for Winx64.
9161
9162         Contributed under MIT/X11 license.
9163
9164 2008-06-05  Martin Baulig  <martin@ximian.com>
9165
9166         * debug-debugger.c (debugger_lookup_class): Also call
9167         mono_class_setup_methods() here; we're only called from RTI.
9168
9169 2008-06-05  Andreas Farber  <andreas.faerber@web.de>
9170
9171         * mini.c (mini_init): Add DTrace probes ves-init-{begin,end}.
9172         (mini_method_compile) Add DTrace probes method-compile-{begin,end}.
9173         * Makefile.am (libmono_la_LIBADD,libmono_static_la_LIBADD,mono_LDADD):
9174         Post-process object files and add dtrace-generated object, if necessary.
9175
9176         Contributed under MIT/X11 license.
9177
9178 2008-06-04  Mark Probst  <mark.probst@gmail.com>
9179
9180         * inssel.brg, mini-ops.h: Added opcode for unboxcast with computed
9181         element class.
9182
9183         * mini.c: Generic sharing for unbox.any and castclass.
9184
9185 2008-06-04  Mark Probst  <mark.probst@gmail.com>
9186
9187         * mini.c: Ignore tailcall prefix in shared generic code and when
9188         doing calls which require a vtable/rgctx argument.
9189
9190 2008-06-04  Mark Probst  <mark.probst@gmail.com>
9191
9192         * mini.c: Don't free the JIT info.
9193
9194         * driver.c: Changes in the JIT info table testing code.
9195
9196 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
9197
9198         * tramp-arm.c (mono_arch_create_trampoline_code): Check for thread 
9199         interruption. Fix some warnings.
9200
9201         * tramp-*.c (mono_arch_create_trampoline_code): Call the _force_ variant of
9202         interruption_checkpoint.
9203
9204 Tue Jun 3 13:07:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
9205
9206         * jit.h, mini.h, trace.c, driver.c: introduce an API to enable tracing
9207         from embedding applications.
9208
9209 2008-06-02  William Holmes  <billholmes54@gmail.com>
9210
9211         * mini-amd64.c :  Correcting some of the issues for Winx64 dealing with
9212           reserving 32 bytes on the stack when making calls. 
9213
9214         Contributed under MIT/X11 license.
9215
9216 2008-06-01  Zoltan Varga  <vargaz@gmail.com>
9217
9218         * mini-arm.c (mono_arch_output_basic_block): Merge some small fixes from
9219         the linear IL branch.
9220
9221         * driver.c: Print out more information for --version on arm.
9222
9223 2008-05-30  Zoltan Varga  <vargaz@gmail.com>
9224
9225         * mini-amd64.c (mono_arch_emit_prolog): Increase max_offset when processing
9226         bb_exit instead, since out of line bblocks might not actually be emitted
9227         out-of-line.
9228         
9229         * mini-amd64.c (mono_arch_emit_prolog): Increase bb->max_offset by the
9230         maximum epilog size for out of line bblocks if tracing is enabled.
9231
9232         * iltests.il.in: Merge tests/long-shift.regalloc.il into this file.
9233
9234 2008-05-28  Rodrigo Kumpera  <rkumpera@novell.com>
9235
9236         * arrays.cs: Regression tests for allocating arrays with negative sizes.
9237
9238 2008-05-28  Zoltan Varga  <vargaz@gmail.com>
9239
9240         * mini-x86.h mini-x86.c inssel-x86.brg cpu-x86.md: Add support for
9241         CAS instrinsics. Optimize the implementation of the ATOMIC_EXCHANGE 
9242         opcodes.
9243
9244 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
9245
9246         * mini.c (mini_get_inst_for_method): Add support for CAS instrinsics when
9247         the 'value' to store is a constant.
9248
9249         * mini-ops.h: Add OP_ATOMIC_CAS_IMM opcodes.
9250
9251         * mini-amd64.c (mono_arch_output_basic_block): Optimize the the implementation
9252         of ATOMIC_EXCHANGE opcodes, add support for the CAS opcodes.
9253
9254 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
9255
9256         * mini.c generic-sharing.c jit-icalls.c aot-compiler.c: Use accessor functions
9257         for accessing method->generic_container.
9258
9259 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
9260
9261         * mini.c (mono_method_check_inlining): Avoid creating vtables if possible.
9262         
9263         * mini.c (SIG_HANDLER_SIGNATURE): Fix sparc build too.
9264
9265         * mini.c (SIG_HANDLER_SIGNATURE): Fix IA64 build.
9266
9267         * mini.c (mono_jit_compile_method_inner): Avoid a crash if mono_class_vtable ()
9268         fails.
9269
9270 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
9271
9272         * driver.c (mono_main): Set mono_setup_vtable_in_class_init to FALSE.
9273
9274         * mini.c: Handle the case when mono_class_vtable () fails.
9275
9276 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
9277         * mini.c (sigprof_signal_handler): Support call chains (backtrace) in
9278         the stat profiler.
9279
9280 2008-05-22  Mark Probst  <mark.probst@gmail.com>
9281
9282         * mini.c, jit-icalls.c, jit-icalls.h: Make generic sharing work
9283         together with domain sharing.
9284
9285 2008-05-22  Mark Probst  <mark.probst@gmail.com>
9286
9287         * mini.c: Treat callvirts to final methods like non-virtual calls
9288         when doing generic sharing, i.e. look them up in the runtime
9289         generic context.
9290
9291 2008-05-22  Mark Probst  <mark.probst@gmail.com>
9292
9293         * inssel.brg, mini-ops.h: Added opcodes for mkrefany and refanyval
9294         with computed types (for generic sharing).
9295
9296         * mini.c: Generic sharing for mkrefany and refanyval.
9297
9298 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
9299
9300         * inssel.brg (mini_emit_virtual_call): Avoid constructing a generic vtable if
9301         possible.
9302
9303         * mini-trampolines.c (mono_magic_trampoline): Avoid calling setup_methods () in
9304         the generic sharing code.
9305         
9306         * mini-trampolines.c (mono_magic_trampoline): Call mono_class_setup_methods ()
9307         when needed.
9308
9309 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
9310
9311         * mini.h: Remove the declaration of mono_aot_init_vtable ().
9312
9313 2008-05-21  C.J. Adams-collier <cjac@colliertech.org>
9314
9315         * driver.c: updated copyright date
9316
9317 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
9318
9319         * aot-runtime.c mini.c: Remove the AOT init_vtable stuff as it is no longer
9320         needed.
9321
9322 2008-05-19  Martin Baulig  <martin@ximian.com>
9323
9324         * debug-debugger.h (MonoDebuggerInfo): Add `using_mono_debugger'
9325         pointing to the new `_mono_debug_using_mono_debugger' variable.
9326
9327         * driver.c
9328         (mono_main): Check mono_debug_using_mono_debugger() rather than
9329         the `MONO_INSIDE_MDB' environment variable to check whether we're
9330         inside the debugger.
9331
9332 2008-05-19  Zoltan Varga  <vargaz@gmail.com>
9333
9334         * mini.c (mini_method_compile): Use cfg->args [0] for accessing the this
9335         argument.
9336
9337 2008-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
9338
9339         * declsec.h: Move MONO_SECMAN_FLAG to metadata/metadata-internals.h.
9340
9341         * mini.c: Added mini_assembly_can_skip_verification. This
9342         function checks if the assembly requested to skip verification. 
9343         Fixes part of #387274.
9344
9345 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
9346
9347         * mini.c (mini_get_method): Disable the check for open generic classes when
9348         using generic sharing.
9349
9350         * generics.cs: Add a test for #387034.
9351
9352         * mini.c (mini_get_method): Check whenever the method class is an open generic
9353         type, and return NULL in that case, causing a verification error. Fixes
9354         #384123.
9355
9356 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
9357
9358         * driver.c (mono_main): Revert r102623. The right
9359         thing to do is to enable the verifier under verifiable
9360         unless a --security flag was passed.
9361
9362         We need this non-trivial behavior for --verify-all otherwise
9363         mcs-compileall won't be able to use it. As it needs everything to
9364         be verified under validil.
9365
9366 2008-05-06  Martin Baulig  <martin@ximian.com>
9367
9368         Fix #383749.
9369
9370         * debug-mini.c (mono_debugger_thread_created): Add proper locking.
9371         (mono_debugger_thread_cleanup): Likewise.
9372         (mono_debugger_extended_notification): Likewise.
9373
9374 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
9375
9376         * mini.c (mono_method_to_ir): Verify visibility of call related opcodes
9377         against both inflated and non-inflated methods. We need to check against the
9378         generic definition for cases where the instantiated method is not visible.
9379         We need to check against the inflated types for cases where the instantiation
9380         changes any super type. This fixes #382986.
9381
9382         Note that this doesn't need to be applied to other parts of mono_method_to_ir
9383         that check for visibiliy as generic params only appears as the type subject
9384         of tokens on call opcodes. Field manipulation and ldftn must always
9385         target an exact type.
9386
9387 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
9388
9389         * driver.c (mono_main): Using --verify-all enables the verifier under validil mode
9390         if no related --security flag is passed.
9391
9392 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
9393
9394         * mini-arch.h: Prepare support for ppc64.
9395
9396         Contributed under MIT/X11 license.
9397
9398 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
9399
9400         * aot-runtime.c: Prepare support for ppc64.
9401
9402         Contributed under MIT/X11 license.
9403
9404 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
9405
9406         * mini-ops.h: Prepare support for ppc64.
9407
9408         Contributed under MIT/X11 license.
9409
9410 2008-05-04  Andreas Farber  <andreas.faerber@web.de>
9411
9412         * helpers.c: Add support for OSX/ppc64 and Linux/ppc64 (dis)assemblers.
9413
9414         Contributed under MIT/X11 license.
9415
9416 2008-05-03  Zoltan Varga  <vargaz@gmail.com>
9417
9418         * aot-runtime.c (load_aot_module): Avoid trying to load aot code for dynamic
9419         assemblies, since aot_name is not a full path, causing us to load MS.NET 
9420         assemblies on windows.
9421
9422 ?2008-04-28  Kornel Pal  <kornelpal@gmail.com>
9423
9424         * mini.c (mono_jit_compile_method_inner): Use g_warning instead of g_error
9425         for unsupported METHOD_IMPL_ATTRIBUTE_NATIVE.
9426         * main.c: Use UTF-8 encoded command line instead of Windows default code
9427         page on Windows to support Unicode.
9428         * driver.c (DllMain): New function for mixed-mode assembly support.
9429         * Makefile.am: Add -Wl,--kill-at to libmono_la_LDFLAGS on Windows to
9430         export __stdcall functions without decoration.
9431
9432         Contributed under MIT/X11 license.
9433
9434 2008-04-28  Mark Probst  <mark.probst@gmail.com>
9435
9436         * tramp-amd64.c, mini-amd64.c: Preserve R11 in the trampoline by
9437         saving it very early.
9438
9439 2008-04-28  Mark Probst  <mark.probst@gmail.com>
9440
9441         * mini.h, mini.c: Lots of code for accessing the old RGCTX
9442         deleted.  The only way to access the new RGCTX is via the
9443         trampline.
9444
9445         * mini.c, mini-amd64, mini-x86.c, mini-exceptions.c: Pass the
9446         vtable instead of the RGCTX to static methods.
9447
9448         * mini-tramplines.c, tramp-amd64.c, tramp-x86.c: Trampoline for
9449         accessing the new RGCTX.
9450
9451         * generic-sharing.c: There is no separation between self, type
9452         arguments and other types in the RGCTX anymore.
9453
9454 2008-04-25  Jonathan Chambers <joncham@gmail.com>
9455
9456         * mini-amd64.c (add_general): Remove previous stack adjustment.
9457         (mono_arch_call_opcode): Remove OP_OUTARG_MEMBASE and instead simply
9458         adjust stack pointer after pushing args. Adjust ARGS_OFFSET to account
9459         for 32 bytes of stack space reserved for all calls.
9460         
9461         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Remove.
9462         (OP_AMD64_OUTARG_ALIGN_STACK): Take argument to specify size of stack 
9463         adjustment.
9464         
9465         Code contributed under MIT/X11 license.
9466
9467 2008-04-23  Rodrigo Kumpera  <rkumpera@novell.com>
9468
9469         * mini.c (mini_method_verify): Only verify non-inflated methods, check
9470         against the root definition, peeling out method and type instantiations.
9471         Cache verify success results, code that fails verification is still
9472         checked multiple times.
9473
9474 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
9475
9476         * mini.c (mono_method_to_ir): Avoid inserting write barriers for stores of null.
9477
9478 2008-04-23  Jonathan Chambers <joncham@gmail.com>
9479
9480         * mini-amd64.c (add_general): Always increment stack on Win64.
9481         (mono_arch_call_opcode): Use OP_OUTARG_MEMBASE instead of OP_OUTARG
9482         on Win64.
9483         
9484         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Add OP_OUTARG_MEMBASE for 
9485         stack based argument handling on Win64.
9486         
9487         Code contributed under MIT/X11 license.
9488
9489 2008-04-23  Raja R Harinath  <harinath@hurrynot.org>
9490
9491         * Makefile.am (version.h): Add support for git-svn.
9492
9493 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
9494
9495         * mini-exceptions.c (mono_handle_native_sigsegv): Rework the gdb calling code
9496         so instead of calling g_spawn_command_line_sync, we do everything by hand, 
9497         avoiding allocations and libc functions which might deadlock.
9498         
9499         * mini-exceptions.c (mono_handle_native_sigsegv): Avoid calling gdb if the
9500         'no-gdb-backtrace' option is set.
9501
9502         * mini.c (mini_parse_debug_options): Parse 'no-gdb-backtrace' option.
9503
9504         * mini.h (MonoDebugOptions): Add 'no_gdb_backtrace' option.
9505
9506 2008-04-21  Martin Baulig  <martin@ximian.com>
9507
9508         * debug-debugger.h (MonoDebuggerInfo): Removed `attach', `detach'
9509         and `get_lmf_addr'; `notification_address' is no longer a pointer.
9510
9511 2008-04-21  Martin Baulig  <martin@ximian.com>
9512
9513         * debug-debugger.h (MonoDebuggerInfo): Added `thread_vtable_ptr',
9514         `thread_vtable', `event_handler_ptr' and `event_handler'.
9515
9516 2008-04-21  Martin Baulig  <martin@ximian.com>
9517
9518         * debug-debugger.h (MonoDebuggerInfo): Added `init_code_buffer';
9519         allows delayed initialization of the `executable_code_buffer' when
9520         attaching.
9521
9522 2008-04-21  Martin Baulig  <martin@ximian.com>
9523
9524         * mini.h (mono_debugger_create_notification_function): Removed.
9525         * tramp-*.c (mono_debugger_create_notification_function): Removed.
9526
9527         * mdb-debug-info64.s
9528         (MONO_DEBUGGER__notification_function): Added this in the .text section.
9529
9530         * mdb-debug-info32.s
9531         (MONO_DEBUGGER__notification_function): Added this in the .text section.
9532
9533         * Makefile.am: Fix the mdb-debug-info*.s logic; the debugger
9534         currently only works on x86 and x86_64, so don't create it on ppc.
9535
9536 2008-04-21  Martin Baulig  <martin@ximian.com>
9537
9538         * mini.h (MonoDebugOptions): Added `mdb_optimizations'.
9539
9540         * mini.c
9541         (mini_method_compile): In the fp elimination check, check
9542         `debug_options.mdb_optimizations' in addition to
9543         mono_debug_using_mono_debugger().       
9544
9545         * driver.c (mono_main): Added `--debug=mdb-optimizations' option to
9546         disable some JIT optimizations which are only disabled when
9547         running inside the debugger.
9548         Added `--help-debug' option to describe the debugging options.
9549         (parse_debug_options): New static function to parse the `--debug'
9550         options, so we can easily add more stuff in future.
9551
9552 2008-04-20  Zoltan Varga  <vargaz@gmail.com>
9553
9554         * mini.c (set_exception_type_from_invalid_il): Avoid reading invalid memory when
9555         the method has no body.
9556
9557 2008-04-19  Jonathan Chambers <joncham@gmail.com>
9558
9559         * mini-amd64.c (cpuid): Implement with MSVC intrinsic as inline
9560         assembly is not allowed in MSVC 64-bit compiler. 
9561         (mono_arch_cpu_init): Don't set floating point precision on MSVC build
9562         as we get floating point exceptions everywhere.
9563         
9564         * exceptions-amd64.c (get_throw_trampoline): Push empty args on stack to
9565         correctly align arguments for call to throw_exception.
9566         (prepare_for_guard_pages): Cast to guint64 instead of unsigned long.
9567         
9568         Code contributed under MIT/X11 license.
9569
9570 2008-04-19  Zoltan Varga  <vargaz@gmail.com>
9571
9572         * mini-amd64.c (amd64_patch): Make the check for (%rip) addressing more strict.
9573
9574 2008-04-17  Zoltan Varga  <vargaz@gmail.com>
9575
9576         * inssel.brg (OP_SWITCH): Use (gint64) instead of (long) to cast a large constant.
9577
9578         * mini-amd64.c (NEW_INS): Set cil_code.
9579
9580         * mini.c (mini_method_compile): Move the disabling of fp elimination to here
9581         from mini-amd64.c so all debugger related logic is in one place.
9582
9583         * mini.c: Set cfg->ip to NULL after passes which set it so instructions created
9584         later won't have a random ip assigned to them.
9585
9586 2008-04-16  Zoltan Varga  <vargaz@gmail.com>
9587
9588         * mini-trampolines.c (mono_create_jump_trampoline): Add an assert to check that
9589         the arch specific function initializes code_size.
9590         (mono_create_delegate_trampoline): Ditto.
9591
9592         * mini-mips.h mini-mips.c inssel-mips.brg inssel-long32-mips.brg cpu-mips.md
9593         tramp-mips.c: Resurrect MIPS port and also fix the issues on little-endian
9594         platforms.
9595
9596         * liveness.c (mono_analyze_liveness): Disable the initlocals optimization if 
9597         running under the debugger.
9598
9599         * linear-scan.c (mono_linear_scan): Avoid sharing registers if running under the
9600         debugger.
9601
9602         * mini.c (mini_method_compile): Set a few flags in cfg if running under the
9603         debugger. Also move the disabling of optimizations here from driver.c.
9604         (mono_allocate_stack_slots_full): Avoid sharing stack slots if running under the
9605         debugger.
9606
9607         * mini.h (MonoCompile): Add a few new flags.
9608
9609 2008-04-15  Zoltan Varga  <vargaz@gmail.com>
9610
9611         * mini.c (mono_method_to_ir): Set cfg->ip before processing an IL instruction
9612         so the cil_code field of created MonoInst's is properly set.
9613         (mini_select_instructions): Ditto.
9614
9615         * mini.h (MONO_INST_NEW): Initialize the cil_code field using cfg->ip.
9616         (MONO_INST_NEW_CALL): Ditto.
9617
9618         * mini.c inssel.brg inssel-x86.brg inssel-amd64.brg: Use MONO_INST_NEW ()
9619         in many places so the ins->cil_code field is properly initialized.
9620
9621         * mini.c (mono_bblock_add_inst): Call MONO_ADD_INS () so the logic is in one
9622         place.
9623
9624 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
9625
9626         * mini.c (mini_method_compile): Print a different message when compiling a 
9627         shared method.
9628         
9629         * mini.c (GENERIC_SHARING_FAILURE): Print a failure message when verbose_level
9630         > 1.
9631
9632 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
9633
9634         * mini-amd64.c (mono_arch_output_basic_block): Implement OP_ABS directly using
9635         SSE2 instructions.
9636
9637         * basic-math.cs: Fix warnings. Add a test for Math.Abs ().
9638         
9639 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
9640
9641         * mini.c (handle_stack_args): Make this return void since its return value was
9642         never used. Also set cfg->unverifiable for invalid IL instead of calling
9643         G_BREAKPOINT ().
9644
9645 2008-04-10  Mark Probst  <mark.probst@gmail.com>
9646
9647         * mini.c: Make sure "this" is live in catch clauses with type
9648         variables in shared generic code.
9649
9650 2008-04-08  Mark Probst  <mark.probst@gmail.com>
9651
9652         * mini.c: Replaced uses of MONO_TYPE_IS_REFERENCE with calls to
9653         generic_class_is_reference_type() to ensure the proper behaviour
9654         when sharing generic code and the type in question is a type
9655         argument.
9656
9657 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
9658
9659         * mini-exceptions.c: Applied patch from Mark Spruiell (mes@zeroc.com). Fix
9660         race conditions when printing thread dumps. Fixes #377738.
9661
9662 2008-04-08  Massimiliano Mantione  <massi@ximian.com>
9663         
9664         aliasing.c (update_aliasing_information_on_inst): Fixed a bug which
9665         shows up when both MonoInst arguments can cause aliasig.
9666         There is likely no way in the current JIT to trigger this problem, but
9667         it showed up in the development of generics sharing, when in a new
9668         opcode both args of an OP_GROUP can be aliases (addresses of a local).
9669         When the generics sharing code will be committed, its tests will be
9670         valid also for this bug.
9671
9672 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
9673
9674         * aot-runtime.c (decode_patch_info): Always transform PATCH_INFO_WRAPPER to
9675         PATCH_INFO_METHOD.
9676
9677         * mini.c (mono_resolve_patch_target): Fix a crash in the AOT case if method is
9678         NULL.
9679
9680 2008-04-07  Zoltan Varga  <vargaz@gmail.com>
9681
9682         * mini-exceptions.c (mono_handle_exception_internal): When --debug=casts is used,
9683         use a more detailed exception message for InvalidCastException.
9684
9685         * mini.h (MonoJitTlsData): Add 'class_cast_from' and 'class_cast_to' fields.
9686
9687         * driver.c (mono_main): Add --debug=casts option to turn on better 
9688         InvalidCastException message details.
9689
9690         * mini.c (mini_get_debug_options): New helper function to return the address of
9691         the debug_options variable.
9692
9693         * mini.c (mono_get_jit_tls_intrinsic): New helper function to create a load of
9694         the jit_tls TLS variable.
9695
9696         * mini.c (mono_jit_tls): New TLS variable.
9697
9698         * inssel.brg: Save the details of a cast to a TLS variable when the --debug=casts
9699         option is used.
9700
9701 2008-04-07  Rodrigo Kumpera  <rkumpera@novell.com>
9702
9703         * mini.h: Removed verifer related stuff. This code was moved to verify.c
9704
9705         * mini.c: Removed verifer related stuff, code moved to verify.c.
9706
9707         * driver.c: Using code from verify.c instead of mini.c.
9708
9709 2008-04-05  Zoltan Varga  <vargaz@gmail.com>
9710
9711         * mini.c (check_for_method_verify): Remove the mscorlib comment since it is no
9712         longer valid.
9713
9714 2008-04-04  Rodrigo Kumpera  <rkumpera@novell.com>
9715
9716         * mini.c (check_for_method_verify): Enabling verification of
9717         corlib if mono_verify_all is set. Bugs in the verifier preventing that
9718         have been fixed.
9719
9720 2008-04-04  Zoltan Varga  <vargaz@gmail.com>
9721
9722         * exceptions-amd64.c (throw_exception): Unify the win32/non-win32 cases, save
9723         caller saved registers as well.
9724         
9725         * exceptions-amd64.c (mono_arch_get_restore_context): Restore most caller
9726         saved registers as well.
9727
9728 2008-03-30  Zoltan Varga  <vargaz@gmail.com>
9729
9730         * mini-x86.c cpu-x86.md inssel-x86.brg: Add min/max intrinsics.
9731
9732         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of the non-SSE2 floating point
9733         code.
9734
9735 2008-03-27  Zoltan Varga  <vargaz@gmail.com>
9736
9737         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'gsctx' argument and pass it
9738         to get_call_info.
9739         (get_call_info): Take a gsctx argument instead of 'cfg'.
9740
9741 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
9742
9743         * mini.c (check_for_method_verify): Avoid verifying mscorlib methods even if
9744         mono_verify_all is set.
9745
9746         * driver.c (compile_all_methods_thread_main): Don't exit at the first error.
9747
9748         * mini.c mini.h: Remove the unused and incomplete stack merge verification code.
9749
9750 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
9751
9752         * driver.c (compile_all_methods_thread_main): Error out if compilation fails with
9753         an exception.
9754
9755         * driver.c mini.c mini.h: Add a --verify-all development option to test the
9756         verifier and the code generated by the compiler.
9757
9758 2008-03-25  Mark Probst  <mark.probst@gmail.com>
9759
9760         * mini.c: Generic sharing of the non-nullable case of the box
9761         instruction.
9762
9763 2008-03-24  Zoltan Varga  <vargaz@gmail.com>
9764
9765         * inssel.brg: Fix the build.
9766
9767         * iltests.il.in: Add a test for lconv.ovf.u8.un.
9768
9769 2008-03-24  Rodrigo Kumpera  <rkumpera@novell.com>
9770
9771         * mini.c (mono_method_to_ir): Implement readonly for ldelema and
9772         Array:Address. Fixes #372410.
9773
9774         * iltests.il.in: New tests for readonly prefix.
9775
9776 2008-03-23  Zoltan Varga  <vargaz@gmail.com>
9777
9778         * mini.h mini.c mini-trampolines.c: Move trampoline related code to 
9779         mini-trampolines.c.
9780
9781         * mini.h mini.c mini-exceptions.c: Move mini_init_exceptions () to 
9782         mini-exceptions.c.
9783
9784         * mini-amd64.c mini-s390.c (mono_arch_lowering_pass): Use mono_decompose_op_imm ().
9785         
9786         * mini.c (mono_decompose_op_imm): New helper function.
9787
9788         * mini-s390x.c (calculate_sizes): Rename this to get_call_info for consistency
9789         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
9790         return value.
9791
9792         * mini-s390x.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
9793         mono_arch_output_basic_block. Fix warnings.
9794
9795         * inssel-s390x.brg: Remove the unneccesary OP_LMUL_IMM rule to fix the s390x build
9796         for now.
9797
9798 2008-03-22  Zoltan Varga  <vargaz@gmail.com>
9799
9800         * mini-exceptions.c (ves_icall_get_frame_info): Remove the ia64/s390 workarounds
9801         since the extra frame is now detected automatically inside the loop.
9802
9803         * mini-s390.c (mono_arch_peephole_pass_2): Remove the arch independent peephole 
9804         opts which are now in mono_peephole_ins ().
9805         
9806         * mini-s390.c (mono_arch_output_basic_block): Fix OP_FCALL_MEMBASE.
9807
9808         * mini-exceptions.c (ves_icall_get_frame_info): Skip native-to-managed wrapper
9809         frames and skip duplicate managed-to-native frames. Fixes #367665.
9810
9811         * mini-x86.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
9812         opts which are now in mono_peephole_ins ().
9813         (mono_arch_peephole_pass_2): Ditto.
9814
9815         * mini-codegen.c (mono_peephole_ins): Fix a problem on 32 bit platforms.
9816
9817         * mini-codegen.c (mono_peephole_ins): New helper function containing the
9818         arch independent peephole optimizations.
9819
9820         * mini-amd64.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
9821         opts which are now in mono_peephole_ins ().
9822
9823         * mini-amd64.c (mono_arch_peephole_pass_2): Ditto.
9824         
9825         * mini-s390.c (mono_arch_output_basic_block): Fix build.
9826
9827         * tramp-s390.c (mono_arch_get_vcall_slot): Handle an additional instruction
9828         pattern.
9829
9830         * mini-s390.c (mono_arch_output_basic_block): Handle big offsets in the
9831         CALL_MEMBASE opcodes. Fix setting of the destination in the OP_LCONV_TO_OVF_I
9832         opcode. 
9833
9834 2008-03-21  Zoltan Varga  <vargaz@gmail.com>
9835
9836         * mini-s390.c (calculate_sizes): Rename this to get_call_info for consistency
9837         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
9838         return value.
9839
9840         * mini-s390.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
9841         mono_arch_output_basic_block. Fix warnings.
9842
9843 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
9844
9845         * inssel-long32.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
9846         conv.ovf.u.un.
9847
9848 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
9849
9850         * inssel-long.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
9851         conv.ovf.u.un.
9852
9853         * iltests.il: Add new tests.
9854
9855 2008-03-20  Kornel Pal  <kornelpal@gmail.com>
9856
9857         * mini.c: Removed Windows version macros.
9858
9859 2008-03-20  Mark Probst  <mark.probst@gmail.com>
9860
9861         * generic-sharing.c: Put reflection types in the extensible part
9862         of the runtime generic context.
9863
9864         * mini.c: Generic sharing of the GetTypeHandle special case of the
9865         ldtoken instruction.
9866
9867 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
9868
9869         * mini.h (MONO_BB_FOR_EACH_INS_SAFE): New helper macro.
9870
9871         * mini-<ARCH>.c: Use the new macro instead in the peephole/lowering passes.
9872         
9873         * mini.h (MONO_DEL_INS): Rename to MONO_DELETE_INS and Add a 'bb' argument for 
9874         consistency with the other version on the linear IR branch.
9875
9876         * mini-<ARCH>.c: Update callers of MONO_DEL_INS.
9877
9878         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i/conv.ovf.u.
9879
9880         * iltests.il.in: Add new tests.
9881
9882 2008-03-19  Zoltan Varga  <vargaz@gmail.com>
9883
9884         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i.un/conv.ovf.u.un.
9885
9886         * iltests.il.in: Add new tests.
9887
9888 2008-03-19  Mark Probst  <mark.probst@gmail.com>
9889
9890         * mini.c: Two variables with the same name were declared in
9891         nesting contexts and one wasn't initialized.  Fixed.
9892
9893 2008-03-19  Mark Probst  <mark.probst@gmail.com>
9894
9895         * mini.c: Generic sharing of the initobj instruction.
9896
9897 Tue Mar 18 20:18:02 CET 2008 Paolo Molaro <lupus@ximian.com>
9898
9899         * mini.c: make the test to optimize ldtoken from typeof() more
9900         precise.
9901
9902 2008-03-18  Mark Probst  <mark.probst@gmail.com>
9903
9904         * mini.c: Generic sharing of the initobj instruction for reference
9905         types.
9906
9907 Tue Mar 18 12:39:27 CET 2008 Paolo Molaro <lupus@ximian.com>
9908
9909         * mini.h, mini-amd64.c, mini-x86.c, tramp-amd64.c, tramp-x86.c: change
9910         the mono_breakpoint_clean_code() code to perform bound checks.
9911
9912 Tue Mar 18 11:50:14 CET 2008 Paolo Molaro <lupus@ximian.com>
9913
9914         * mini.h, mini-trampolines.c, tramp-*.c: change the signature of
9915         mono_arch_patch_callsite() to include the start of the managed method
9916         to be able to perform bound checks.
9917
9918 2008-03-17  Mark Probst  <mark.probst@gmail.com>
9919
9920         * mini.c: Generic sharing for the isinst instruction.
9921
9922 2008-03-17  Mark Probst  <mark.probst@gmail.com>
9923
9924         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
9925         inssel-long32-mips.brg: Added opcodes for doing indirect calls
9926         with the runtime generic context argument.
9927
9928         * mini.c: Share calls to several types of unsharable methods by
9929         putting the address of the method code in the runtime generic
9930         context and doing an indirect call.
9931
9932         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
9933         to switches.
9934
9935 2008-03-16  Mark Probst  <mark.probst@gmail.com>
9936
9937         * generic-sharing.c: Change due to a change in the runtime genric
9938         context API.
9939
9940 2008-03-15  Martin Baulig  <martin@ximian.com>
9941
9942         * tramp-x86.c
9943         (mono_arch_nullify_class_init_trampoline): Add call to
9944         mono_breakpoint_clean_code() to make things work when running
9945         inside the debugger.
9946
9947         * tramp-amd64.c
9948         (mono_arch_nullify_class_init_trampoline): Add call to
9949         mono_breakpoint_clean_code() to make things work when running
9950         inside the debugger.
9951
9952 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
9953
9954         * inssel-long.brg (reg): Fix 64 bit build.
9955
9956 2008-03-14  Mark Probst  <mark.probst@gmail.com>
9957
9958         * mini.c, mini.h: Share static generic code by passing it an
9959         implicit argument pointing to the runtime generic context.
9960
9961         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
9962         inssel-long32-mips.brg: New opcodes for calling shared static,
9963         which need to be passed the runtime generic context.
9964
9965         * mini-amd64.c, mini-x86.c: Save the runtime generic context
9966         argument on the stack in the prologue if needed.  New function for
9967         finding the runtime generic context argument from the registers
9968         saved by the trampoline.
9969
9970         * mini-amd64.h, mini-x86.h: Specify which register to use for the
9971         runtime generic context argument.
9972
9973         * tramp-amd64.c: Also restore the register used for the runtime
9974         generic context argument.
9975
9976         * mini-trampoline.c: Resolve shared static calls by consulting the
9977         runtime generic context via the new argument.
9978
9979         * generic-sharing.c: Add an argument to sharability-checking
9980         functions that specifies whether type variables should be treated
9981         as sharable type arguments.
9982
9983         * inssel-x86.brg: Removed a superfluous, buggy rule.
9984
9985         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
9986         to switches.
9987
9988 2008-03-14  Martin Baulig  <martin@ximian.com>
9989
9990         * debug-debugger.c (main_thread_handler): Call
9991         mono_runtime_run_main() without sending any notifications.
9992
9993         * debug-debugger.h (MonoDebuggerInfo): Added `get_method_signature.
9994
9995 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
9996
9997         * mini-trampolines.c (mono_magic_trampoline): Fix build on platforms without IMT.
9998
9999 2008-03-14  Mark Probst  <mark.probst@gmail.com>
10000
10001         * tramp-x86.c: Fixed register restore offsets in the trampoline
10002         code for ECX and EDX.
10003
10004 2008-03-12  Geoff Norton  <gnorton@novell.com>
10005
10006         * mini-arm.h: Add some #defines for locating sp, pc, r4 with
10007         different ucontext_t implementations.
10008         * exceptions-arm.c: Use the above defines to get exceptions working on 
10009         iPhone (based on a patch by Luke Howard lukeh@padl.com)
10010         * mini-arm.c: Implement iPhone icache support (based on a patch by
10011         Luke Howard lukeh@padl.com)
10012
10013 2008-03-12  Mark Probst  <mark.probst@gmail.com>
10014
10015         * mini.c: Enable generic sharing of calls to non-static
10016         non-interface non-generic non-value-type methods.
10017
10018         * mini-trampolines.c: Resolve calls from shared generic code.
10019
10020 2008-03-11  Zoltan Varga  <vargaz@gmail.com>
10021
10022         * Makefile.am il2tests.il iltests.il.in: Delete il2tests, merge it into iltests.
10023
10024         * tramp-amd64.c (mono_arch_create_trampoline_code): Correctly save RBP as well.
10025
10026 Mon Mar 10 11:59:34 CET 2008 Paolo Molaro <lupus@ximian.com>
10027
10028         * mini.c: some fixes for the AOT compiler.
10029
10030 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
10031
10032         * cpu-amd64.md: Add clob:1 to some float opcodes.
10033
10034 2008-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
10035
10036         * mini.h: Added MiniVerifierMode enumeration.
10037
10038         * mini.c: Added mini_verifier_set_mode to control
10039         the usage of the new verifier.
10040
10041         * mini.c (mono_method): Integrated the new verifier.
10042
10043         * driver.c: Extended --security option with validil and
10044         verifiable options to activate the new verifier.
10045
10046 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
10047
10048         * mini.c jit-icalls.h jit-icalls.c: Generalize the exception creation 
10049         optimization to ctors taking 0 or 2 arguments too.
10050
10051         * mini.c (mono_method_to_ir): Optimalize the size of the exception throwing code
10052         a bit.
10053
10054         * jit-icalls.h (mono_create_corlib_exception): New JIT icall.
10055
10056         * mini-amd64.c (mono_arch_emit_prolog): Improve the first_bb optimization a bit.
10057
10058 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
10059
10060         * mini.c (mono_method_to_ir): Apply one of the ldstr optimizations in the
10061         non-aot case as well.
10062
10063         * cpu-amd64.md: Reduce the max size of some frequently used opcodes.
10064
10065         * aot-runtime.c (decode_patch_info): Update this after the ldfld/stfld wrapper
10066         changes.
10067
10068         * aot-compiler.c (encode_patch): Ditto.
10069
10070         * mini.h (G_MININT32): Fix the definition of this.
10071
10072 2008-03-05  Zoltan Varga  <vargaz@gmail.com>
10073
10074         * mini.h: Define G_MININT32/G_MAXINT32 if using an older glib version.
10075
10076         * cfold.c: Remove definition of G_MININT32 which is now in mini.h.
10077
10078 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
10079
10080         * mini-amd64.c (mono_arch_compute_omit_fp): Don't disable fp elimination for 
10081         methods returning vtypes in registers.
10082         (mono_arch_allocate_vars): Ditto.
10083
10084         * mini-amd64.c (mono_arch_get_this_arg_reg): New arch specific helper function.
10085
10086         * tramp-amd64.c (mono_arch_get_unbox_trampoline): Use mono_arch_get_this_arg_reg ().    
10087
10088         * generics.cs: Add a test from the linear IR branch.
10089
10090         * mini-amd64.c (emit_load_volatile_arguments): Handle vtypes passed in regs too.
10091
10092         * mini.c (inline_method): Cache failed inline attempts.
10093
10094 2008-03-04  Mark Probst  <mark.probst@gmail.com>
10095
10096         * mini.c: For shared methods of generic classes put the location
10097         of "this" into the MonoGenericJitInfo.
10098
10099         * mini-x86.c, mini-amd64.c, mini.h: Added function for fetching a
10100         register out of a MonoContext by register number.  Add the generic
10101         sharing context as an argument to mono_arch_find_this_argument().
10102
10103         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
10104         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c: Added stub
10105         for new arch function.
10106
10107         * mini-exception.c: Handle open exception clauses in shared
10108         generic code.
10109
10110         * mini-trampolines.c: Supply additional argument to
10111         mono_arch_find_this_argument().
10112
10113 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
10114
10115         * Makefile.am (regtests): Run the bench.exe tests last.
10116
10117 2008-03-03  Zoltan Varga  <vargaz@gmail.com>
10118
10119         * mini-amd64.c (mono_arch_emit_prolog): Improve the first bblock optimization
10120         a bit.
10121
10122 2008-03-02  Zoltan Varga  <vargaz@gmail.com>
10123
10124         * mini.c (mono_method_to_ir): Allow callvirt on static methods for compatibility
10125         with MS.
10126
10127         * mini-amd64.c (mono_arch_emit_prolog): Fix tracing after the last change.
10128         
10129         * mini-amd64.c (mono_arch_emit_prolog): Avoid saving dead arguments.
10130
10131         * mini.c (mono_method_check_inlining): Avoid disabling inlining for methods
10132         whose class has no cctor.
10133
10134         * liveness.c (mono_analyze_liveness): Mark dead arguments with MONO_INST_IS_DEAD.
10135
10136 2008-03-01  Zoltan Varga  <vargaz@gmail.com>
10137
10138         * mini.c (mono_method_to_ir): Report calling a static method using callvirt as
10139         unverified.
10140
10141 2008-02-29  Zoltan Varga  <vargaz@gmail.com>
10142
10143         * mini-ops.h: Remove OP_SPARC_INARG_VT, add a new OP_VTARG_ADDR opcode instead
10144         to be in sync with the code on the linear IR branch.
10145
10146         * mini-sparc.c inssel-sparc.brg: Use OP_VTARG_ADDR.
10147
10148         * inssel-s390.brg (OP_SETRET (freg)): Set dreg correctly.
10149
10150 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
10151
10152         * mini-mips.c: Use cfg->vret_addr instead of cfg->ret.
10153
10154         * mini-s390x.c: Use cfg->vret_addr instead of cfg->ret.
10155
10156         * mini-s390.c: Use cfg->vret_addr instead of cfg->ret.
10157
10158         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_VARS define.
10159
10160         * mini-<ARCH>.c (mono_arch_create_vars): Define this for all architectures.
10161         
10162         * mini.c (mono_method_to_ir): Avoid invalid memory reads for methods without a
10163         body.
10164
10165 2007-11-14  Yoichi NAKAYAMA  <nakayama@pixela.co.jp>
10166
10167         * inssel-mips.brg (OP_OUTARG_MEMBASE (CEE_LDIND_R4 (base))): Add missing
10168         OP_LOADR4_MEMBASE emission.
10169
10170         * mini-codegen.c (mono_spillvar_offset_int): Remove assertion.
10171         (mono_spillvar_offset_float): Ditto.
10172
10173         * mini-mips.c (mono_arch_emit_prolog): Ditto.
10174
10175         * inssel-long32-mips.brg: Fix wrong branching, reduce redundant code
10176         emission.
10177
10178         * basic-long.cs: Add regression tests for them.
10179
10180         * mini-mips.c (add_float32_arg): Respect o32 calling convention in gr
10181         use.
10182         (mono_arch_allocate_vars): Fix representation of single-precision float
10183         argument.
10184         (mono_arch_output_basic_block): Ditto.
10185
10186         * inssel-mips.brg: Ditto, remove duplicate items.
10187
10188         * mini-mips.c (emit_load_volatile_arguments): New function to handle
10189         arguments of tail calls as on other platforms.
10190         (mono_arch_output_basic_block): Handle tail calls.
10191
10192         * inssel-mips.brg (OP_OUTARG_VT (CEE_LDOBJ (base))): Correct destination
10193         register.
10194
10195         * objects.cs (test_5_pass_static_struct): Add test for it.
10196
10197         Contributed under MIT/X11 license.
10198
10199 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
10200
10201         * Makefile.am: Use gmcs for compiling the regression tests.
10202
10203         * *.2.cs *.2.il: Rename to *.cs and *.il.
10204
10205 2008-02-24  Zoltan Varga  <vargaz@gmail.com>
10206
10207         * regalloc.h: Make the vassign array smaller.
10208
10209         * mini.c (mini_method_compile): Remove an unused field in cfg.
10210
10211         * mini-codegen.c: Add a bunch of micro optimizations.
10212
10213 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
10214
10215         * regalloc.h: Remove some unused fields.
10216
10217 2008-02-22  Zoltan Varga  <vargaz@gmail.com>
10218
10219         * mini-amd64.c (mono_arch_patch_code): Fix a warning.
10220
10221         * ssa.c (mono_ssa_remove): Avoid declaring volatile variables dead.
10222
10223 2008-02-22  Mark Probst  <mark.probst@gmail.com>
10224
10225         * mini.h: New trampoline type (RGCTX_LAZY_FETCH).
10226
10227         * mini-trampolines.c, tramp-amd64.c, tramp-x86.c: RGCTX lazy fetch
10228         trampoline: Fetch an entry from the runtime generic context.  If
10229         it's NULL, jump to the actual trampoline to fill the runtime
10230         generic context.  Otherwise, return it.
10231
10232         * mini.c: Call the lazy fetch trampoline to get entries out of the
10233         runtime generic context.
10234
10235         * tramp-ia64.c, tramp-arm.c, tramp-alpha.c, tramp-s390.c,
10236         tramp-s390x.c, tramp-ppc.c, tramp-hppa.c, tramp-mips.c,
10237         tramp-sparc.c: Stubs for the lazy fetch trampoline.
10238
10239 2008-02-21  Mark Probst  <mark.probst@gmail.com>
10240
10241         * mini.c: Fetch data out of the extensible part of the runtime
10242         generic context instead of calling a helper function.
10243
10244         * generic-sharing.c: Some functions moved into
10245         metadata/generic-sharing.c.  Helper function for fetching other
10246         types now checks and asserts against extensible rgctx (just for
10247         debugging purposes - the helper function isn't called anymore
10248         unless for debugging).
10249
10250 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
10251
10252         * mini-arm.c (mono_arch_output_basic_block): Implement proper argument passing
10253         for tail calls up to the point that the tests in iltests.exe run. Also add a
10254         dummy CKFINITE implementation.
10255         (mono_arch_emit_prolog): Avoid saving the method in the LMF since it is only
10256         needed for trampoline LMF frames.
10257
10258         * exceptions-arm.c (mono_arch_find_jit_info): Only read lmf->method for 
10259         trampoline LMF frames.
10260
10261 2008-02-21  Rodrigo Kumpera  <rkumpera@novell.com>
10262
10263         * mini.c (inline_method): clean any pending loader error when inlining fail.
10264         Otherwise loader errors in mono_method_to_ir leaks and cause spurious errors.
10265
10266 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
10267
10268         * aot-compiler.c (encode_patch): Handle ICALL_ADDR patch type.
10269
10270         * aot-runtime.c (decode_patch_info): Ditto.
10271
10272         * mini.c (mono_resolve_patch_target): Ditto.
10273         
10274         * aot-compiler.c (compile_method): Add some experimental code for AOT compiling
10275         icall wrappers.
10276
10277         * patch-info.h (PATCH_INFO): Add 'ICALL_ADDR' patch type.
10278         
10279         * mini.c (mono_method_to_ir): Convert a CEE_MONO_LDPTR opcode to an AOT constant
10280         if it references an icall address.
10281
10282 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
10283
10284         * cpu-s390x.md: Remove some more unused opcodes.
10285         
10286         * cpu-s390x.md: Remove some unused opcodes.
10287
10288         * mini-ia64.c (mono_arch_lowering_pass): Add some more opcodes. Use
10289         mono_op_imm_to_op ().
10290
10291         * mini-sparc.c (opcode_to_sparc_cond): Use the mono_opcode_to_cond () functions
10292         instead of a switch statement.
10293         
10294         * mini-sparc.c (mono_arch_allocate_vars): Allocate a stack slot for use by
10295         the int<->float conversion opcodes instead of using mono_spillvar_offset_float ().
10296
10297         * mini-codegen.c: Eliminate rassign macro which is no longer needed.
10298         
10299         * mini-codegen.c: Remove unused mono_regstate2_... functions.
10300
10301         * mini-codegen.c (mono_print_ins_index): Avoid printing an index when it is
10302         -1.
10303
10304 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
10305
10306         * driver.c (mono_main): Improve error reporting when an assembly cannot be
10307         opened. Fixes #362607.
10308
10309         * cpu-ia64.md cpu-s390x.md: Remove some unused opcodes.
10310
10311         * iltests.il.in: Add a test for static methods in interfaces.
10312
10313 2008-02-18  Zoltan Varga  <vargaz@gmail.com>
10314
10315         * genmdesc.c (build_table): Fix a crash on older glib versions.
10316
10317         * cpu-sparc.md: Remove some unused opcodes.
10318         
10319         * genmdesc.c: Error out if the .md contains CEE_ opcodes if 
10320         MONO_ARCH_ENABLE_NORMALIZE_OPCODES is defined.
10321
10322         * cpu-amd64.md: Remove some unused opcodes.
10323
10324         * mini.h mini-ops.h mini.c: Define the OP_Ccc opcodes in mini-ops.h normally
10325         like the other opcodes.
10326
10327 2008-02-17  Zoltan Varga  <vargaz@gmail.com>
10328
10329         * mini-ia64.c: Use cfg->vret_addr instead of cfg->ret.
10330
10331         * mini-arm.h mini-arm.c: Use cfg->vret_addr instead of cfg->ret.
10332
10333         * mini-sparc.c: Use cfg->vret_addr instead of cfg->ret. Name the MonoCompile
10334         variables 'cfg' instead of 'm' for consistency.
10335
10336         * mini-x86.c: Use cfg->vret_addr instead of cfg->ret.
10337
10338         * mini.h (MonoCompile): Add new 'vret_addr' field which represents the hidden
10339         argument holding the vtype return address, to avoid the ambigious use of
10340         cfg->ret for this purpose.
10341
10342         * mini.c (NEW_RETLOADA): Use vret_addr if set.
10343
10344         * mini-amd64.c: Use cfg->vret_addr instead of cfg->ret.
10345         
10346         * mini-codegen.c (mono_print_ins): Rename to mono_print_ins_index (), Add a
10347         new mono_print_ins () function which only takes one argument.
10348
10349 2008-02-15  Zoltan Varga  <vargaz@gmail.com>
10350
10351         * mini-s390.h (MONO_OUTPUT_VTR): Use cfg instead of s, avoid assignments to
10352         macro arguments.
10353
10354 2008-02-14  Zoltan Varga  <vargaz@gmail.com>
10355
10356         * mini-ops.h: Get rid of OP_SPARC_LOCALLOC_IMM.
10357
10358         * mini-sparc.c inssel-sparc.brg: Use OP_LOCALLOC_IMM instead of OP_SPARC_LOCALLOC_IMM.
10359
10360         * mini-x86.c: Sync with the version on the linear IR branch by adding new 
10361         opcodes and other small changes.
10362
10363         * mini-ops.h: Add some new opcodes from the linear IR branch.
10364
10365         * mini-ops.h: Get rid of the OP_X86_..._MEMBASE opcodes.
10366
10367         * mini-x86.c inssel-x86.brg cpu-x86.md: Get rid of the confusing _MEMBASE
10368         opcodes, use the REG_MEMBASE opcodes instead.
10369         
10370         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Get rid of the confusing _MEMBASE
10371         opcodes, use the REG_MEMBASE opcodes instead.
10372         
10373         * mini-amd64.c (mono_arch_output_basic_block): Sync with the version on the
10374         linear IR branch.
10375
10376         * mini.c (mono_op_imm_to_op): New helper function.
10377
10378         * mini-ops.h: Add some opcodes from linear IR branch.
10379
10380 2008-02-13  Zoltan Varga  <vargaz@gmail.com>
10381
10382         * mini-alpha.h mini-alpha.c tramp-alpha.c: Alpha port updates from Sergey Tikhonov 
10383         <tsv@solvo.ru>.
10384
10385 2008-02-12  Zoltan Varga  <vargaz@gmail.com>
10386
10387         * mini.c (mono_normalize_opcodes): Always convert CEE_CONV_R4/R8 to 
10388         OP_ICONV_TO_R4/R8.
10389
10390         * mini-ia64.c cpu-ia64.md: Add OP_ICONV_TO_R4/R8.
10391
10392 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
10393
10394         * aot-compiler.c (emit_method_code): Add an assert.
10395
10396         * mini-arm.h mini-arm.c exceptions-arm.c: Modify the exception throwing code and
10397         the IMT code so it is AOT friendly. Enable AOT for methods which call interface
10398         methods.
10399
10400 2008-02-08  Zoltan Varga  <vargaz@gmail.com>
10401
10402         * mini-arm.c (mono_arch_output_basic_block): Fix the ordering of arguments for 
10403         some load/store opcodes so they are consistent. 
10404         (mono_arch_emit_prolog): Simplify some code.
10405
10406         * aot-runtime.c (mono_aot_get_plt_entry): Fix a warning.
10407
10408         * objects.cs: Add tests for large argument offsets on ARM.
10409
10410         * mini-arm.c (mono_arch_emit_prolog): Fix handling of arguments with large 
10411         stack offsets. Fixes #359651.
10412
10413         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R4/R8 properly.
10414
10415         * cpu-s390x.md: Add OP_LCONV_TO_R4/R8.
10416
10417         * cpu-ia64.md mini-ia64.h mini-ia64.c: Get rid of CEE_ opcodes.
10418
10419         * mini-ops.h: Add OP_ICONV_TO_R_UN opcode.
10420
10421         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R_UN too.
10422
10423         * cpu-s390x.md cpu-s390.md mini-s390x.c mini-arm.c cpu-arm.md mini-s390.c: Get
10424         rid of CEE_CONV_R_UN.
10425
10426         * mini-s390x.c mini-s390x.h cpu-s390x.md inssel-s390x.brg: Get rid of CEE_ opcodes.
10427
10428 2008-02-07  Zoltan Varga  <vargaz@gmail.com>
10429
10430         * mini-s390.c mini-s390.h cpu-s390.md: Get rid of CEE_ opcodes.
10431
10432         * mini.c (mono_normalize_opcodes): Add some more opcodes.
10433
10434         * mini-arm.c mini-arm.h cpu-arm.md: Get rid of CEE_ opcodes.
10435
10436         * cpu-amd64.md: Remove some unused opcodes.
10437
10438         * mini-sparc.c mini-sparc.h cpu-sparc.md: Get rid of CEE_ opcodes.
10439
10440         * mini-x86.c mini-x86.h cpu-x86.md: Get rid of CEE_ opcodes.
10441
10442         * mini.c mini-<ARCH>.c: Remove mono_arch_local_regalloc (), instead make 
10443         arch specific functions for its parts. Call the peephole pass after local
10444         regalloc so the prolog can compute a more accurate max_offset.
10445         
10446         * mini.c (mono_normalize_opcodes): New mini pass to convert CEE_ opcodes to
10447         the corresponding OP_I/OP_L opcodes.
10448
10449         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of CEE_ opcodes.
10450
10451         * mini-sparc.c (mono_arch_output_basic_block): Fix the sparc build.
10452
10453 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
10454
10455         * mini-s390.c (mono_arch_get_inst_for_method): Remove the Interlocked cases
10456         as they are handled in mini.c.
10457
10458         * mini-s390x.c (mono_arch_get_inst_for_method): Ditto.
10459         
10460         * mini-<ARCH>.c (mono_arch_get_inst_for_method): Remove the MemoryBarrier
10461         case since it is handled in mini.c.
10462
10463         * cpu-sparc.md (sparc_setfreg_float): Fix the sparc build.
10464
10465         * mini-ops.h: Add new opcodes OP_CALL/OP_CALLVIRT.
10466
10467         * *.c: Use the new opcodes in the IR and back end code.
10468
10469         * mini-ops.h cpu-<ARCH>.md: Correct the name of the bgt_un opcodes.
10470
10471         * mini-amd64.c (emit_call_body): Use a far-call for calling dynamic methods.
10472
10473 2008-02-06  Mark Probst  <mark.probst@gmail.com>
10474
10475         * mini-trampolines.c (mono_generic_class_init_trampoline): Removed
10476         an assert because it has a race condition.
10477
10478 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
10479
10480         * tramp-amd64.c (mono_arch_patch_callsite): Add more diagnostics.
10481
10482         * inssel.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused CEE_RET opcode.
10483
10484         * mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused LDIND/STIND opcodes.
10485
10486         * *.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of OP_SETREG/OP_SETFREG/OP_SETREGIMM,
10487         use OP_MOVE/OP_FMOVE/OP_ICONST instead.
10488
10489 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
10490
10491         * cpu-amd64.md (move): Correct the maximum size of move.
10492
10493 2008-02-05  Mark Probst  <mark.probst@gmail.com>
10494
10495         * tramp-amd64.c, tramp-x86.c, mini-trampolines.c: Added a check in
10496         the generic class init trampoline to return quickly if the class
10497         is already inited.
10498
10499 2008-02-04  Zoltan Varga  <vargaz@gmail.com>
10500
10501         * tramp-amd64.c (mono_arch_patch_callsite): Add some diagnostics to help debug
10502         issues where an 32 bit callsite cannot be patched by a 64 bit address.
10503
10504 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
10505
10506         * generics.2.cs generics-variant-types.2.il: Merge some tests from the linear IR
10507         branch.
10508
10509 2008-01-31  Zoltan Varga  <vargaz@gmail.com>
10510
10511         * objects.cs: Add some soft-float tests.
10512
10513         * mini.c: Fix a couple more soft-float issues.
10514
10515         * helpers.c (mono_disassemble_code): Fix disassembly on ARM.
10516
10517         * mini-amd64.c (peephole_pass): Use IXOR instead of LXOR for zeroing a register to
10518         avoid a REX prefix.
10519
10520 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
10521
10522         * exceptions-x86.c (mono_arch_find_jit_info): Fix stack unwinding when an
10523         exception happens while compiling a virtual method.
10524
10525 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
10526
10527         * mini-sparc.c (mono_arch_emit_epilog): Fix folding of negative return values.
10528         
10529         * mini-sparc.c: Fix build.
10530
10531         * mini-sparc.c (get_call_info): Add support for generic sharing.
10532
10533         * mini-exceptions.c: Add a FIXME.
10534
10535 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
10536
10537         * mini-exceptions.c (mono_handle_exception_internal): Remove the old style
10538         altstack handling code.
10539
10540         * mini-s390.c (mono_arch_emit_exceptions): Really fix a warning.
10541         
10542         * mini-s390.c (mono_arch_emit_exceptions): Fix a warning.
10543
10544         * mini-s390.c: Add support for generic sharing.
10545
10546         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
10547         Fix CAS on s390.
10548         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
10549
10550         * mini-s390x.c (mono_arch_emit_exceptions): Fix a warning.
10551
10552         * mini-s390x.c: Add support for generic sharing.
10553         
10554         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
10555         Fix CAS on ia64.
10556         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
10557
10558         * mini-s390x.c: Use is_imm16 instead of is_uimm16 when checking whenever s390_aghi
10559         can be used since it takes a 16 bit signed immediate.
10560
10561         * inssel-s390x.brg: Fix OP_SETRET.
10562
10563         * mini-s390x.c (mono_arch_output_basic_block): Fix OP_BREAK.
10564
10565         * mini-codegen.c (mono_opcode_to_cond): Fix a warning.
10566
10567         * mini-s390x.c cpu-s390x.md: Implement sext.i4 properly by sign extension.
10568
10569         * mini.c (mono_create_delegate_trampoline): Don't use mono_create_ftpntr here.
10570
10571         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_addr_from_ftnptr
10572         in one place.
10573
10574         * mini-ia64.h mini-ia64.c: Add minimal support for the delegate trampoline 
10575         stuff.
10576
10577         * mini.h inssel-x86.brg inssel-amd64.brg tramp-alpha.c tramp-ia64.c: Get rid
10578         of the unused mono_arch_patch_delegate_trampoline stuff.
10579
10580 2008-01-26  Zoltan Varga  <vargaz@gmail.com>
10581
10582         * basic-long.cs: Move the fp related tests to basic-float.cs.
10583
10584         * mini-ops.h (OP_OUTARG_FREG_R4): New opcode.
10585
10586         * mini-ia64.c inssel-ia64.brg: Implement proper R4 argument passing.
10587
10588         * basic-calls.cs: Add a test for proper float argument passing.
10589
10590         * mini-ia64.h (mono_ia64_context_get_ip): Do not substract 1 from the ip
10591         if the context corresponds to an exception received through a signal.
10592
10593         * exceptions.cs: Add a test for nullref handling at the start of a try
10594         clause.
10595
10596         * mini-ia64.c (mono_arch_call_opcode): Fix ia64 argument passing.
10597
10598         * jit-icalls.c (mono_break): New JIT icall.
10599
10600         * mini-<ARCH>.c: Use mono_break instead of mono_arch_break.
10601
10602         * mini-arm.c (arm_patch): Add support for patching the blx calling sequence.
10603
10604 2008-01-25  Zoltan Varga  <vargaz@gmail.com>
10605
10606         * cpu-*.md: Get rid of unused opcodes.
10607
10608         * cpu-g4.md: Rename this to cpu-ppc.md for consistency with other archs.
10609
10610         * Makefile.am: Move mini-trampolines.c to $(common_sources) since it is now used
10611         by all platforms.
10612
10613         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_SPECIFIC_TRAMPOLINE
10614         define.
10615
10616         * mini-s390x.h tramp-s390x.c Makefile.am: Rework the s390x trampoline code to use
10617         the arch independent trampoline code in mini-trampolines.c.
10618
10619         * aot-runtime.c (mono_aot_init_vtable): Fix a warning.
10620
10621         * mini.c (get_runtime_generic_context_ptr): Fix a warning.
10622
10623         * mini-s390.h: Remove an unused define.
10624         
10625         * mini-s390.h tramp-s390.c Makefile.am: Rework the s390 trampoline code to use
10626         the arch independent trampoline code in mini-trampolines.c.
10627
10628         * mini-arm.c (mono_arch_emit_prolog): Fix build.
10629
10630 2008-01-24  Zoltan Varga  <vargaz@gmail.com>
10631
10632         * mini-sparc.c (mono_arch_output_basic_block): Remove some unecessary code.
10633
10634         * mini-s390.c (mono_arch_emit_prolog): Fix build.
10635
10636         * mini-s390x.c (mono_arch_emit_prolog): Fix build.
10637
10638         * mini-ppc.c (mono_arch_emit_prolog): Fix build.
10639
10640         * cpu-amd64.md: Use smaller sizes for int opcodes.
10641
10642         * *.c: Get rid of the NOT_IMPLEMENTED define which is now in mini.h.
10643
10644         * *.cs: Add some tests from the linear-ir branch. Move structs tests to 
10645         objects.cs.
10646
10647         * driver.c (mono_main): Add a --break-at-bb command line argument for JIT
10648         debugging.
10649
10650         * mini.h *.c: Change cfg->vars to contain the MonoMethodVar entries directly
10651         instead of though a pointer to save an indirection when accessing elements of
10652         the array.
10653
10654         * mini.h (MONO_IS_COND_BRANCH_OP): Move these macros here from mini.c. Fix
10655         some typos.
10656         (NOT_IMPLEMENTED): New helper macro.
10657         (MONO_BB_FOR_EACH_INS): New helper macro to iterate through the instructions
10658         of a bb.
10659
10660         * *.c: Use the new helper macro.
10661
10662 2008-01-21  Zoltan Varga  <vargaz@gmail.com>
10663
10664         * mini-x86.h (MONO_ARCH_AOT_SUPPORTED): Disable AOT for apple x86.
10665
10666 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
10667
10668         * mini-amd64.c (mono_arch_emit_prolog): Optimize the omit fp case to save two
10669         stack slots.
10670
10671 2008-01-18  Zoltan Varga  <vargaz@gmail.com>
10672
10673         * mini-amd64.c (mono_arch_emit_prolog): Disable the new optimization if
10674         profiling is enabled.
10675         
10676         * mini-amd64.c (mono_arch_call_opcode): Emit the save_sp_to_lmf instruction at
10677         the end.
10678         (mono_arch_emit_prolog): Add more first bblock optimizations.
10679
10680         * mini-amd64.c (mono_arch_call_opcode): Keep assignments to the arg registers
10681         in order if possible.
10682         (mono_arch_emit_prolog): Optimize assignments to arg registers in the first
10683         bblock, since the arguments are still in their original registers.
10684
10685         * mini.c (type_from_op): Calling add.ovf on floats is not valid IL code.
10686
10687 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
10688
10689         * mini.c (mono_method_to_ir): Use the no-spilling optimization for CEE_CALLI
10690         as well.
10691
10692         * mini-amd64.c (mono_arch_emit_prolog): Save an instruction if the LMF is at
10693         offset 0.
10694
10695         * mini-amd64.h (MONO_ARCH_HAVE_NOTIFY_PENDING_EXC): Turn on this for amd64.
10696
10697         * exceptions-amd64.c (mono_arch_notify_pending_exc): New function to 
10698         process async exceptions received while in unmanaged code.
10699
10700         * mini.c (mini_init): Install a callback with the runtime which will be called
10701         when a thread receives an async exception while in unmanaged code.
10702
10703         * mini.c driver.c: Update after mono_get_native_wrapper () signature change.
10704
10705         * mini-s390x.c (mono_arch_output_basic_block): Fix s390x build.
10706
10707 2008-01-16  Wade Berrier  <wberrier@novell.com>
10708
10709         * cpu-g4.md:
10710         * cpu-arm.md:
10711         * cpu-s390x.md:
10712         fix build
10713
10714 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
10715
10716         * mini-x86.c (mono_arch_output_basic_block): Remove some gccism which prevents
10717         compilation with sun cc.
10718
10719         * cpu-*.md: Fix the build.
10720
10721         * cpu-x86.md: Fix the length of some load membase opcodes. Fixes #354241.
10722
10723         * mini-amd64.h: Add some comments to the MonoLMF structure.
10724
10725         * mini-ops.h cpu-amd64.c: Add a OP_AMD64_SAVE_SP_TO_LMF opcode.
10726         
10727         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Avoid setting the rip field
10728         in the LMF structure if possible. This saves two instructions in the
10729         managed->native wrappers.
10730
10731         * mini-ops.h *.md: Make some opcodes names uniform by removing the op_ prefix.
10732
10733 2008-01-16  Mark Probst  <mark.probst@gmail.com>
10734
10735         * generic-sharing.c: New type argument lookup code which uses the
10736         runtime generic context template.
10737
10738 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
10739
10740         * mini.c (mono_method_to_ir): Avoid emitting a write barrier when storing NULL.
10741
10742         * mini-arm.c (add_general): Fix arm eabi parameter passing.
10743         (mono_arch_output_basic_block): Fix localloc implementation.
10744
10745         * mini-amd64.c (peephole_pass): Sync store+load optimizations with the x86 version.
10746
10747         * mini-ia64.c (peephole_pass): Fix ia64 build.
10748
10749         * mini-amd64.c (peephole_pass): Fix a warning.
10750         
10751         * mini-amd64.c (mono_arch_allocate_vars): Make sure the LMF is always stored
10752         at a constant offset from sp/fp.
10753
10754         * exceptions-amd64.c (mono_arch_find_jit_info): Compute the LMF address from fp/sp
10755         instead of obtaining it from *lmf in the managed method case.
10756
10757 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
10758
10759         * exceptions-amd64.c (mono_arch_find_jit_info): Remove some duplicate code.
10760
10761 Mon Jan 14 12:33:06 CET 2008  David S. Miller  <davem@davemloft.net>
10762
10763         * mini.h (MonoInstList): New type.
10764         (MONO_INST_LIST_INIT, MONO_INST_LIST_EMPTY,
10765         __MONO_INST_LIST_ADD, MONO_INST_LIST_ADD,
10766         MONO_INST_LIST_ADD_TAIL, __MONO_INST_LIST_DEL,
10767         __MONO_INST_LIST_SPLICE, MONO_INST_LIST_SPLICE,
10768         MONO_INST_LIST_SPLICE_TAIL, MONO_INST_LIST_SPLICE_INIST,
10769         MONO_INST_LIST_SPLICE_TAIL_INIT, mono_container_of,
10770         MONO_INST_LIST_ENTRY, MONO_INST_LIST_FIRST_ENTRY,
10771         MONO_INST_LIST_LAST_ENTRY, MONO_INST_LIST_FOR_EACH,
10772         MONO_INST_LIST_FOR_EACH_PREV, MONO_INST_LIST_FOR_EACH_SAFE,
10773         MONO_INST_LIST_FOR_EACH_PREV_SAFE,
10774         MONO_INST_LIST_FOR_EACH_ENTRY,
10775         MONO_INST_LIST_FOR_EACH_ENTRY_REVERSE,
10776         MONO_INST_LIST_FOR_EACH_ENTRY_SAFE,
10777         mono_inst_list_first, mono_inst_list_last,
10778         mono_inst_list_next, mono_inst_list_prev): New instruction
10779         list handling interfaces.
10780         (MonoBasicBlock): Remove 'last_ins' and 'code', replace with
10781         list head 'ins_list'.
10782         (MonoInst): Replace next pointer with list head 'node'.
10783         (MonoCallInst): Make 'out_args' a MonoInstList.
10784         (MONO_INST_NEW_CALL): Explicitly init ->out_args.
10785         (MonoCompile): Delete reverse_inst_list and
10786         reverse_inst_list_len.
10787         * mini-hppa.c (mono_arch_call_opcode, NEW_INS,
10788         mono_arch_lowering_pass, mono_arch_local_regalloc,
10789         mono_arch_output_basic_block, mono_arch_emit_prolog):
10790         Convert to new instruction lists.
10791         (insert_after_ins): Delete.
10792         * inssel.brg (MONO_EMIT_NEW_BRANCH_BLOCK): Convert to new
10793         instruction lists.
10794         * mini-hppa.h (MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Likewise.
10795         * mini.c (NEW_BBLOCK, ADD_BBLOCK, CHECK_BBLOCK,
10796         split_bblock, mono_add_ins_to_end, mono_emit_call_args,
10797         mono_emulate_opcode, mono_emit_load_got_addr,
10798         inline_method, mono_method_to_ir, mono_print_bb_code,
10799         print_dfn, decompose_pass, nullify_basic_block,
10800         replace_out_block_in_code, remove_block_if_useless,
10801         merge_basic_blocks, move_basic_block_to_end,
10802         try_unsigned_compare, optimize_branches, mono_print_code,
10803         mini_select_instructions, remove_critical_edges): Likewise.
10804         * mini-amd64.c (emit_sig_cookie, mono_arch_call_opcode,
10805         peephole_pass_1, peephole_pass, mono_arch_lowering_pass,
10806         mono_arch_output_basic_block, mono_arch_emit_prolog):
10807         Likewise.
10808         * mini-mips.c (mono_arch_call_opcode, peephole_pass,
10809         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
10810         mono_arch_output_basic_block): Likewise.
10811         (inst_list_prepend, insert_after_ins): Delete.
10812         * mini-mips.h (MONO_EMIT_NEW_BRANCH_NONZERO_LABEL,
10813         MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Convert to new
10814         instruction lists.
10815         * mini-x86.c (emit_sig_cookie, mono_arch_call_opcode,
10816         peephole_pass_1, peephole_pass, mono_arch_output_basic_block,
10817         mono_arch_emit_prolog): Likewise.
10818         * cfold.c (mono_constant_fold): Likewise.
10819         * liveness.c (visit_bb, mono_analyze_liveness,
10820         optimize_initlocals): Likewise.
10821         * ssapre.c (dump_code, process_bb, code_motion): Likewise.
10822         * graph.c (mono_draw_code_cfg): Likewise.
10823         * ssa.c (mono_ssa_rename_vars, mono_ssa_compute,
10824         mono_ssa_remove, mono_ssa_avoid_copies, mono_ssa_create_def_use,
10825         mono_ssa_cprop): Likewise.
10826         * abcremoval (get_relations_from_previous_bb, process_block):
10827         Likewise.
10828         * local-propagation (mono_cprop_invalidate_values,
10829         mono_local_cprop_bb): Likewise.
10830         * mini-s390x.c (mono_arch_call_opcode, emit_sig_cookie,
10831         peephole_pass, mono_arch_output_basic_block,
10832         mono_arch_emit_prolog): Likewise.
10833         * mini-arm.c (mono_arch_call_opcode, peephole_pass,
10834         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
10835         mono_arch_emit_prolog): Likewise.
10836         (insert_after_ins): Delete.
10837         * aliasing.c (print_code_with_aliasing_information,
10838         mono_build_aliasing_information, mono_aliasing_deadce):
10839         Convert to new instruction lists.
10840         * mini-ia64.c (emit_sig_cookie, mono_arch_call_opcode,
10841         peephole_pass, NEW_INS, mono_arch_lowering_pass,
10842         mono_arch_local_regalloc, mono_arch_output_basic_block):
10843         Likewise.
10844         (insert_after_ins): Delete.
10845         * mini-sparc.c (emit_sig_cookie, mono_arch_call_opcode,
10846         peephole_pass, mono_arch_output_basic_block): Convert to
10847         new instruction lists.
10848         * mini-codegen (InstList, inst_list_prepend,
10849         insert_after_ins): Delete.
10850         (insert_before_ins, get_register_force_spilling,
10851         get_register_spilling, free_up_ireg, free_up_reg,
10852         create_copy_ins, create_spilled_store, alloc_int_reg,
10853         alloc_float_reg, alloc_reg, mono_local_regalloc): Convert
10854         to new instruction lists.
10855         * mini-ppc.c (mono_arch_call_opcode, peephole_pass,
10856         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
10857         mono_arch_output_basic_block, mono_arch_emit_prolog): Likewise.
10858         (insert_after_ins): Delete.
10859         * mini-alpha.c (NEW_INS, peephole_pass, mono_arch_lowering_pass,
10860         mono_arch_local_regalloc, mono_arch_output_basic_block,
10861         mono_arch_call_opcode): Convert to new instruction lists.
10862         (insert_after_ins): Delete.
10863         * mini-s390.c (mono_arch_call_opcode, emit_sig_cookie,
10864         peephole_pass, mono_arch_output_basic_block,
10865         mono_arch_emit_prolog): Convert to new instruction lists.
10866
10867 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
10868
10869         * mini-amd64.c (mono_arch_output_basic_block): Use a 4 byte load in OP_CHECK_THIS.
10870
10871         * mini-sparc.c (mono_arch_output_basic_block): Use a byte load in CHECK_THIS.
10872         Fixes #353182.
10873
10874         * Makefile.am (version.h): Make this work with non-bash shells.
10875
10876 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
10877
10878         * mini.c (handle_delegate_ctor): Optimize away setting of NULL target.
10879
10880 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
10881
10882         * mini.c (mono_method_to_ir): Fix possible reading of invalid memory in 
10883         the InitializeArray optimization.
10884
10885 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
10886
10887         * mini.c driver.c: Don't include os/gc_wrapper.h.
10888
10889 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
10890
10891         * mini.c (print_jit_stats): Print GC statistics if available.
10892
10893 2008-01-04  Zoltan Varga  <vargaz@gmail.com>
10894
10895         * mini-amd64.c (mono_arch_allocate_vars): Align argument storage offsets to 8.
10896
10897 2007-12-29  Zoltan Varga  <vargaz@gmail.com>
10898
10899         * mini-ppc.c (mono_arch_get_delegate_invoke_impl): Fix flushing of icache.
10900
10901 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
10902
10903         * mini.c (mini_init): Move the setting of GC_stackbottom to mono_gc_base_init ().
10904         
10905         * mini.c (mini_init): Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
10906
10907         * driver.c (mono_main): Ditto.
10908
10909 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
10910
10911         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_delegate_invoke ().
10912
10913         * aot-compiler.c (emit_klass_info): Avoid emitting info if one of the methods
10914         in the vtable can't be encoded.
10915         (compile_method): Ditto.
10916
10917 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
10918
10919         * mini.c (setup_jit_tls_data): Use the MONO_ARCH_INIT_TOP_LMF_ENTRY macro if
10920         defined.
10921
10922         * mini-amd64.h mini-amd64.c exceptions-amd64.c tramp-amd64.c: Rename lmf->ebp to 
10923         lmf->rbp.
10924
10925         * exceptions-amd64.c (mono_arch_find_jit_info): Fix the detection of whenever
10926         the top LMF entry belongs to the current method.
10927
10928         * mini.c: Update after renaming of mono_thread_get_pending_exception ().
10929
10930 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
10931
10932         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix a warning.
10933         
10934         * tramp-ia64.c (mono_arch_create_trampoline_code): Ditto.
10935
10936         * tramp-sparc.c (mono_arch_create_trampoline_code): Check for thread interruption.
10937
10938         * tramp-amd64.c (mono_arch_create_trampoline_code): Ditto.
10939
10940         * tramp-x86.c (mono_arch_create_trampoline_code): Check for thread interruption.
10941
10942         * cpu-amd64.md mini-amd64.h mini-amd64.c inssel-amd64.brg: Add ulong->double 
10943         implementation.
10944
10945         * basic-float.cs: Add an ulong->double cast test.
10946
10947 2007-12-15  Zoltan Varga  <vargaz@gmail.com>
10948
10949         * mini.c (mono_method_to_ir): Fix a warning.
10950
10951 2007-12-14  Zoltan Varga  <vargaz@gmail.com>
10952
10953         * mini-ops.h: Add OP_SWITCH.
10954
10955         * mini.c graph.c ssa.c aliasing.c mini-<ARCH>.c inssel-<ARCH>.brg: Avoid using
10956         CEE_SWITCH in back-end code, use OP_SWITCH instead.
10957
10958 2007-12-11  Geoff Norton  <gnorton@novell.com>
10959
10960         * mini-s390x.c: Minor change to the MAX() define to allow
10961         it to compile with other gcc versions.
10962
10963 2007-12-11  Geoff Norton  <gnorton@novell.com>
10964
10965         * cpu-s390x.md:
10966         * mini-s390x.c: Implement sext_i4 to fix the build on s390x
10967
10968 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
10969
10970         exceptions-arm.c (mono_arch_get_restore_context): Restore
10971         the frame pointer.
10972
10973         exceptions-arm.c (throw_exception): Save the frame pointer.
10974         This is a partial fix for #323747. Only the client side is
10975         fixed.
10976
10977 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
10978
10979         * mini.c (mono_method_to_ir): Verbose message in CEE_NEWOBJ
10980         was using an unrelated variable to log the class which
10981         needed the cctor to be called. This was crashing on arm.
10982
10983 2007-12-09  Robert Jordan  <robertj@gmx.net>
10984
10985         * mini-x86.c (mono_arch_emit_epilog):
10986         Consider all kinds of 64-bit types. Fixes #323114.
10987
10988 2007-12-08  Zoltan Varga  <vargaz@gmail.com>
10989
10990         * tramp-amd64.c (mono_arch_create_trampoline_code): Clean up the code a bit.
10991
10992 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
10993
10994         * mini-amd64.c (peephole_pass): Add a missing instruction check.
10995
10996 Fri Dec 7 22:08:23 CET 2007 Paolo Molaro <lupus@ximian.com>
10997
10998         * mini.c: run type ctor before allocating an object, not only
10999         when running it's constructor method (fixes at least part of bug #342507).
11000
11001 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
11002         
11003         * mini-trampolines.c (mono_delegate_trampoline): Fix a warning.
11004         
11005         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove a debug printf.
11006         * mini.h mini-amd64.c mini-x86.c: Get rid of the mono_arch_find_vtable () 
11007         function.
11008
11009         * tramp-x86.c tramp-amd64.c mini-trampolines.c: Pass the vtable argument to
11010         mono_generic_class_init_trampoline () the same as it is done with the other
11011         trampolines.
11012
11013         * mini-arm.h mini-arm.c tramp-arm.c inssel-arm.brg cpu-arm.md 
11014         aot-runtime.c aot-compiler.c: Implement AOT support.    
11015
11016 2007-12-07  Mark Probst  <mark.probst@gmail.com>
11017
11018         * mini-trampolines.c (mono_generic_class_init_trampoline): Fixed
11019         build for archs which don't have the vtable trampoline defined
11020         yet.
11021
11022 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
11023
11024         * tramp-x86.c (mono_arch_create_trampoline_code): Fix the build.
11025
11026         * tramp-ppc.c (mono_arch_create_trampoline_code): Use the new helper function.
11027
11028         * mini-trampolines.c (mono_get_trampoline_func): New helper function.
11029
11030         * tramp-<ARCH>.c: Use the new helper function.
11031
11032 2007-12-07  Mark Probst  <mark.probst@gmail.com>
11033
11034         * inssel.brg: Added a pattern for the OP_TRAMPCALL_VTABLE
11035         trampoline call, which takes a vtable argument.
11036
11037         * graph.c, mini-ops.h, local-propagation.c, aliasing.c: Treat
11038         OP_TRAMPCALL_VTABLEs like other calls.
11039
11040         * mini-amd64.c, mini-amd64.h, mini-x86.c, mini-x86.h: Designated a
11041         register to hold the vtable argument to the OP_TRAMPCALL_VTABLE
11042         call.  Implemented a support function which fetches the vtable
11043         from a register set.
11044
11045         * mini.c, mini.h, tramp-amd64.c, tramp-x86.c, mini-trampolines.c:
11046         Implemented a generic class init trampoline, using the
11047         OP_TRAMPCALL_VTABLE opcode.
11048
11049         * mini.c: Implemented static field access when sharing generic
11050         code.  This implies initing the class using the new
11051         OP_TRAMPCALL_VTABLE call.
11052
11053 2007-12-07  Mark Probst  <mark.probst@gmail.com>
11054
11055         * mini.c: Don't compile methods with sharing enabled if their
11056         classes are disabled for sharing.
11057
11058 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
11059
11060         * inssel.brg: Add a missing sign extension to the GETCHR and array access
11061         opcodes. Fixes #346563.
11062
11063         * objects.cs: Add a new test.
11064
11065         * aot-compiler.c (emit_method_code): Put back an #ifdef which is needed.
11066
11067         * mini-<ARCH>.h mini.c aot-compiler.c aot-runtime.c: Get rid of the
11068         HAVE_PIC_AOT define and use AOT_SUPPORTED instead.
11069
11070 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
11071
11072         * mini-arm.h mini-arm.c: Add support for the common vtable trampoline.
11073
11074 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
11075
11076         * mini-arm.c (mono_arch_emit_exceptions): Avoid uninitialized memory in the
11077         code stream.
11078
11079 2007-12-02  Zoltan Varga  <vargaz@gmail.com>
11080
11081         * patch-info.h (PATCH_INFO): Add DELEGATE_TRAMPOLINE.
11082
11083         * mini.c aot-compiler.c aot-runtime.c: Implement the delegate creation 
11084         optimization in the AOT case.
11085         
11086 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
11087
11088         * aot-runtime (mono_aot_get_method_from_vt_slot): Add support for multi-byte method ref encodings.
11089         
11090         * aot-runtime.c (decode_klass_ref): Implement decoding of generic instances.
11091
11092         * aot-compiler.c (encode_klass_ref): Implement proper encoding of generic instances.
11093
11094         * mini.c (mono_method_to_ir): Optimize the common ldftn+create delegate combination.
11095
11096         * mini-trampolines.c (mono_delegate_trampoline): Add some code to handle the case when the delegate
11097         is created by the inlined delegate ctor.
11098
11099         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.  
11100
11101         * mini.c (mono_jit_compile_method_inner): Replace calls to delegate invoke with the trampoline here too.
11102
11103 2007-11-29  Zoltan Varga  <vargaz@gmail.com>
11104
11105         * cpu-x86.md: Fix the length of ckfinite.
11106
11107 2007-11-28  Zoltan Varga  <vargaz@gmail.com>
11108
11109         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.
11110         
11111         * mini-x86.c (mono_arch_output_basic_block): Clean up the fp stack properly in CKFINITE.
11112         (mono_arch_output_basic_block): Get rid of unused last_ins and last_offset.
11113
11114         * mini-x86.c (mono_arch_output_basic_block): Add some micro optimizations.
11115
11116         * mini-x86.c inssel-x86.brg cpu-x86.md: Move the implementation of the 
11117         OP_START_HANDLER/OP_ENDFINALLY/OP_ENDFILTER opcodes to mini-x86.c.
11118
11119 2007-11-28  Martin Baulig  <martin@ximian.com>
11120
11121         * mini-x86.c
11122         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline()
11123         after creating the trampoline.
11124
11125 2007-11-27  Zoltan Varga  <vargaz@gmail.com>
11126
11127         * aot-runtime.c (load_aot_module): Check runtime version if needed.
11128
11129         * aot-compiler.c: Add bind-to-runtime-version for producing AOT files which only load into a runtime with
11130         the same version.
11131
11132         * generic-sharing.c (mono_helper_get_rgctx_other_ptr): Change the signature to take the calling class
11133         instead of the calling method to help AOT.
11134
11135         * mini.c (get_runtime_generic_context_other_ptr): Update after the change.
11136
11137 2007-11-26  Zoltan Varga  <vargaz@gmail.com>
11138
11139         * aot-runtime.c (mono_aot_init_vtable): Simplify this if MONO_ARCH_COMMON_VTABLE_TRAMPOLINE
11140         is defined.
11141
11142 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
11143
11144         * aot-compiler.c (emit_class_name_table): Properly encode generic class names.
11145         
11146         * aot-compiler.c (compile_method): Correct check for generic method definitions.
11147         (encode_method_ref): No need to handle generic method definitions specially.
11148
11149         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
11150
11151         * aot-runtime.c (decode_klass_ref): Clean this up and rename from 
11152         decode_klass_info.
11153
11154         * aot-compiler.c (encode_klass_ref): Clean this up and rename from
11155         encode_klass_info.
11156         (compile_method): Enable generic sharing.
11157
11158 2007-11-22  Zoltan Varga  <vargaz@gmail.com>
11159
11160         * mini.c (get_runtime_generic_context_other_ptr): Disable AOT here.
11161         (mini_method_compile): Add preliminary support for AOTing shared generic code.
11162
11163         * aot-compiler.c (compile_method): Add preliminary support for AOTing shared
11164         generic code.
11165
11166         * mini-trampolines.c: Fix a warning.
11167
11168         * mini.c (get_runtime_generic_context_other_ptr): Use NEW_METHODCONST instead of
11169         NEW_PCONST.
11170         (mono_method_to_ir): Use NEW_DOMAINCONST in one place.
11171         (generic_class_is_reference_type): Remove unused function.
11172
11173         * mini-trampolines.c (mono_magic_trampoline): Avoid loading metadata if possible
11174         in the generic vtable trampoline case.
11175
11176         * aot-runtime.c (mono_aot_init_vtable): Use the generic vtable trampoline.
11177         
11178         * aot-runtime.c (mono_aot_get_method_from_vt_slot): New helper function to
11179         return an AOT method based on a vtable slot.
11180
11181         * aot-compiler.c (compile_method): Avoid AOTing synchronized methods for now.
11182
11183         * mini.c (mini_get_vtable_trampoline): Export this.
11184
11185 2007-11-22  Martin Baulig  <martin@ximian.com>
11186
11187         * debug-debugger.h
11188         (MonoDebuggerInfo): Move `debugger_version' up.
11189
11190 2007-11-22  Martin Baulig  <martin@ximian.com>
11191
11192         * mini-amd64.c
11193         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline().
11194
11195         * mini-trampolines.c
11196         (mono_delegate_trampoline): Call mono_debugger_trampoline_compiled()
11197         after compiling the method.
11198
11199 2007-11-20  Martin Baulig  <martin@ximian.com>
11200
11201         * debug-mini.c
11202         (mono_debugger_insert_method_breakpoint): Moved into mono-debug-debugger.c.
11203         (mono_debugger_remove_breakpoint): Likewise.
11204         (mono_debugger_check_breakpoints): Likewise.
11205
11206         * debug-debugger.c: Implement the new breakpoint interface here.
11207
11208 2007-11-18  Zoltan Varga  <vargaz@gmail.com>
11209
11210         * mini-amd64.c (mono_arch_output_basic_block): Unify the implementation of
11211         CEE_CONV_I1/SEXT_I1 and I2 since they are the same.
11212
11213         * mini-x86.c (mono_arch_output_basic_block): Ditto.     
11214
11215 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
11216
11217         * mini-amd64.c (mono_arch_output_basic_block): Fix a typo.
11218
11219         * mini-x86.c (mono_arch_get_inst_for_method): Remove code which is now in
11220         mini.c.
11221
11222         * mini-ia64.c (mono_arch_get_inst_for_method): Remove code which is now in
11223         mini.c.
11224
11225         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for methods
11226         returning a vtype in a register.
11227
11228         * mini.c (mini_get_inst_for_method): Move the handling of the atomic operations
11229         here from the arch specific code.
11230
11231         * mini-amd64.c (mono_arch_get_inst_for_method): Remove code which is now in
11232         mini.c.
11233
11234         * mini-amd64.c (mono_arch_output_basic_block): Add some micro optimizations.
11235         (mono_arch_emit_prolog): Increment maximum prolog size.
11236
11237         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Move the implementation of the
11238         START_HANDLER/ENDFINALLY/ENDFILTER opcodes to mini-amd64.c.
11239
11240         * mini-x86.c (get_call_info): Receive a MonoCompile instead of a 
11241         MonoGenericSharingContext.
11242
11243         * mini-ia64.c (get_call_info): Receive a MonoCompile instead of a 
11244         MonoGenericSharingContext. Allocate memory from the cfg mempool.
11245
11246 2007-11-15  Mark Probst  <mark.probst@gmail.com>
11247
11248         * mini.c, mini.h, generic-sharing.c: Functions for producing code
11249         which extract fields out of the runtime generic context.  Full
11250         sharing of the NEWARR opcode.
11251
11252 Thu Nov 15 14:20:21 CET 2007 Paolo Molaro <lupus@ximian.com>
11253
11254         * abcremoval.c, mini.c, ssa.c, ssapre.c: updated to implement
11255         --enable-minimal=ssa.
11256
11257 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
11258
11259         * mini-trampolines.c (mono_delegate_trampoline): Update after 
11260         mono_marshal_get_delegate_invoke () signature change.
11261
11262 2007-11-13  Mark Probst  <mark.probst@gmail.com>
11263
11264         * mini.c: Removed the shared context in favor of the generic
11265         sharing context.  Allocate the MonoJitInfo structure with room for
11266         the generic sharing context if it's needed.
11267
11268         * mini.h: Remove MonoGenericSharingContext declaration.  It's in
11269         domain-internals.h now.
11270
11271         * mini-x86.c: Pass the generic sharing context to get_call_info ().
11272
11273         * generic-sharing.c: Several changes for working without a shared
11274         context and instead operating on open types instead.
11275
11276 2007-11-12  David S. Miller  <davem@davemloft.net>
11277
11278        * inssel-sparc.brg: Fix double instruction emit.
11279
11280 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
11281
11282         * mini.c (mono_jit_runtime_invoke): Avoid trying to compile the Array 
11283         Get/Set/Address methods.
11284         
11285         * mini.c debug-debugger.c mini-trampolines.c: Update after 
11286         mono_marshal_get_delegate_invoke signature change.
11287
11288 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
11289
11290         * cpu-arm.md: Increase the max size of OP_THROW to 24 bytes.
11291         This can happens with dynamic methods. Fixes the other bug in #322722.
11292
11293 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
11294
11295         * tramp-arm.c (mono_arch_patch_callsite): Support patching
11296         BX call sequence.
11297
11298         * mini-arm.c (arm_patch): Implement patching of BX call
11299         sequence. Fixes one of the bugs in #322722.
11300
11301 2007-11-03  David S. Miller  <davem@huronp11.davemloft.net>
11302
11303        * mini-sparc.c (mono_arch_flush_icache): Make more efficient
11304        under Linux.  We only need to flush every 32-byte cache line.    
11305
11306 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
11307
11308         * mini.c:
11309         move_basic_block_to_end: Add branches when needed, eventually creating
11310         a new BB.
11311         optimize_branches: added a parameter that tells if it's ok to create
11312         new BBs (doing is "df_visit" has been called is (IMHO) a nightmare),
11313         and avoid calling move_basic_block_to_end when it's not ok.
11314         Fixes bug 318677.
11315
11316 2007-11-07  Mark Probst  <mark.probst@gmail.com>
11317
11318         * mini.c: Abort inlining call to InitializeArray if something
11319         looks wrong.  Let the icall handle it, which now has proper safety
11320         checks.
11321
11322 2007-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
11323
11324         * mini.c (mono_spill_call): add support for soft-float.
11325
11326         * mini.c (mono_method_to_ir): add support for soft-float
11327         to inlined functions that return float.
11328
11329         * mini.c (mono_method_to_ir): add support for soft-float
11330         to cee_stsfld opcode on float fields.
11331
11332 2007-11-05  Geoff Norton  <gnorton@novell.com>
11333
11334         * mini-x86.h: Fix the structure access for X86 Leopard.
11335
11336
11337 2007-11-05  Martin Baulig  <martin@ximian.com>
11338
11339         * mini-trampolines.c
11340         (mono_magic_trampoline): Call mono_debugger_trampoline_compiled()
11341         after compiling the method to notify the debugger.
11342
11343 2007-11-05  Martin Baulig  <martin@ximian.com>
11344
11345         * debug-debugger.h (MonoDebuggerInfo): Use the new breakpoint tables.
11346
11347 2007-11-02  Zoltan Varga  <vargaz@gmail.com>
11348
11349         * mini-sparc.c (EMIT_COND_SYSTEM_EXCEPTION_GENERAL): Applied patch from
11350         David Miller <davem@davemloft.net>. Allow larger offsets in branches.
11351
11352 2007-11-01  Zoltan Varga  <vargaz@gmail.com>
11353
11354         * mini-amd64.c (mono_arch_emit_prolog): Check the domain as well for
11355         native-to-managed wrappers.
11356         
11357 2007-11-01  Geoff Norton  <gnorton@novell.com>
11358
11359         * mini-ppc.h, mini-x86.h:  Handle Leopards renaming of some structure 
11360         members.
11361
11362 Wed Oct 31 20:23:14 CET 2007 Paolo Molaro <lupus@ximian.com>
11363
11364         * mini.c, mini-x86.c: when getting back from unmanaged code
11365         to managed via a marshaled delegate we also need to set the
11366         right domain.
11367
11368 Wed Oct 31 19:53:33 CET 2007 Paolo Molaro <lupus@ximian.com>
11369
11370         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: breakpoint table support
11371         for amd64.
11372
11373 Wed Oct 31 19:29:30 CET 2007 Paolo Molaro <lupus@ximian.com>
11374
11375         * mini.c, mini.h, mini-x86, tramp-x86.c, mini-x86.h: added API to
11376         let the debugger or other external agents to tell the JIT when
11377         a sw breakpoint has been inserted in the code that the JIT needs
11378         to be able to inspect.
11379
11380 2007-10-31  Martin Baulig  <martin@ximian.com>
11381
11382         * debug-debugger.h
11383         (MonoDebuggerInfo): Remove `runtime_class_init'.
11384
11385 2007-10-30  Martin Baulig  <martin@ximian.com>
11386
11387         * debug-mini.h
11388         (mono_debugger_thread_created): Added `MonoThread *' argument.
11389         (mono_debugger_extended_notification): New public method.
11390         (mono_debugger_trampoline_compiled): New public method.
11391
11392         * debug-mini.c
11393         (MonoDebuggerThreadInfo): Added `thread' and
11394         `extended_notifications' fields.
11395
11396         * debug-debugger.c
11397         (debugger_executable_code_buffer): New static variable.
11398
11399         * debug-debugger.h
11400         (MonoDebuggerInfo): Added `executable_code_buffer',
11401         `executable_code_buffer_size', `breakpoint_info_area',
11402         `breakpoint_table' and `breakpoint_table_size'.
11403
11404 2007-10-26  Rodrigo Kumpera  <rkumpera@novell.com>
11405
11406         * mini-arm.c (mono_arch_build_imt_thunk): Take the advantage
11407         that IP  either is an unused value or the vtable pointer. IMT 
11408         calls use vtable + offset now. Reduced by almost half the size
11409         of IMT entries.
11410
11411 2007-10-26  Jonathan Chambers <joncham@gmail.com>
11412
11413         * mini-amd64.c: Begin Win64 port. Use AMD64_ARG_REG#
11414         defines to access param registers. Replace long usage with
11415         gsize as sizeof(long) != sizeof(void*) on Win64.
11416
11417         * mini-amd64.h: Add %rdi and %rsi to MonoLMF structure
11418         on Win64. Fix intrinsic, use _AddressOfReturnAddress
11419         instead of non-existant _GetAddressOfReturnAddress.
11420
11421         * tramp-amd64.c: Use AMD64_ARG_REG#     defines to access 
11422         param registers. Save/restore %rdi and %rsi in MonoLMF.
11423
11424         * exceptions-amd64.c: Use AMD64_ARG_REG# defines to access 
11425         param registers. Modify (throw_exception) signature to take 
11426         %rdi and %rsi on Win64. 
11427
11428         Code is contributed under MIT/X11 license.
11429
11430 Thu Oct 25 23:06:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
11431
11432         * helpers.c: unlink debugging output files.
11433
11434 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
11435
11436         * mini.c: Move mono_create_ftnptr () to object.c.
11437
11438 2007-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
11439
11440         * helpers.c (mono_disassemble_code): MonoCompile parameter is now
11441         optional. This function can now be used to disassemble code generated
11442         outside the JIT such as trampolines and IMT thunks.
11443
11444         * mini-arm.h: defined MONO_ARCH_HAVE_IMT.
11445
11446         * mini-arm.c (decode_vcall_slot_from_ldr): added, extract the
11447         vtable pointer from a ldr instruction.
11448
11449         * mini-arm.c (mono_arch_get_vcall_slot_addr): support the
11450         new IMT call sequence.
11451
11452         * mini-arm.c (mono_arch_output_basic_block): emit the IMT
11453         call sequence for interface invocations.
11454
11455         * mini-arm.c (mono_arch_emit_imt_argument): added, required
11456         for imt support. This function is empty since IMT on ARM requires no
11457         special handling on the IR side.
11458
11459         * mini-arm.c (mono_arch_find_imt_method): added, required for
11460         imt support.
11461
11462         * mini-arm.c (mono_arch_find_this_argument): added, required
11463         for imt support.
11464
11465         * mini-arm.c (arm_emit_value_and_patch_ldr): added, patches
11466         a ldr instruction to load a value stored in the code stream.
11467
11468         * mini-arm.c (mono_arch_build_imt_thunk):added, required
11469         for imt support.
11470
11471
11472 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
11473
11474         * mini.c (mini_init): Install the jump trampoline callback.
11475
11476 Tue Oct 23 17:07:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
11477
11478         * mini-trampolines.c: handle synchronized methods with the common
11479         vtable trampoline (bug #335601).
11480
11481 2007-10-17  Zoltan Varga  <vargaz@gmail.com>
11482
11483         * mini-ia64.h mini-amd64.c: Add support for the common vtable trampoline.
11484
11485         * inssel.brg (mini_emit_virtual_call): Fix the computation of ins->inst_offset on
11486         64 bit platforms.
11487
11488         * mini-ia64.h mini-ia64.c: Add support for IMT.
11489
11490         * mini-x86.c (mono_arch_emit_prolog): Increase the size allocated for the
11491         prolog. Fixes #331958.
11492
11493 2007-10-15  Zoltan Varga  <vargaz@gmail.com>
11494
11495         * mini-sparc.h mini-sparc.c: Add support for the common vtable trampoline.
11496
11497 Mon Oct 15 11:18:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
11498
11499         * mini-ppc.c, mini-ppc.h: ppc support for the common vtable
11500         trampoline.
11501
11502 Mon Oct 15 10:41:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
11503
11504         * mini-amd64.c, mini-amd64.h: amd64 support for the common vtable
11505         trampoline.
11506
11507 Mon Oct 15 10:39:26 CEST 2007 Paolo Molaro <lupus@ximian.com>
11508
11509         * mini-x86.c, mini-x86.h: x86 support for the common vtable
11510         trampoline.
11511
11512 Mon Oct 15 10:37:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
11513
11514         * mini-trampolines.c: changed the magic rampoline to understand
11515         the common vtable trampoline method: the method to invoke is
11516         determined by the vtable displacement of the call.
11517
11518 Mon Oct 15 10:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
11519
11520         * mini.c, mini.h: register the common vtable trampoline if the
11521         architecture supports it.
11522
11523 Mon Oct 15 09:50:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
11524
11525         * cpu-amd64.md: use the correct max length for tls_get.
11526
11527 2007-10-14  Zoltan Varga  <vargaz@gmail.com>
11528
11529         * mini.c (mono_method_to_ir): Use mini_get_class in CEE_LDELEM_ANY and
11530         CEE_STELEM_ANY. Fixes #333696.
11531
11532 Thu Oct 11 18:04:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
11533
11534         * exceptions-x86.c: provide more graceful handling of the case where
11535         we followed a bogus function pointer from managed code (bug #332866).
11536
11537 2007-10-11  Mark Probst  <mark.probst@gmail.com>
11538
11539         * mini.h, mini.c: Introduced the MonoGenericSharingContext, which
11540         replaces the generic_shared flag and will carry more information
11541         in the future.
11542
11543         * generic-sharing.c: Added mini_type_stack_size() which allows
11544         allows open types if given a generic sharing context.
11545         mini_get_basic_type_from_generic() takes a
11546         MonoGenericSharingContext* instead of a MonoCompile* now.
11547
11548         * mini-alpha.c, mini-amd64.c, mini-arm.c, mini-hppa.c,
11549         mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c, mini-s390x.c,
11550         mini-sparc.c, mini-x86.c: Trivial changes required by the two
11551         changes above.  Just passing arguments through to the right
11552         places.
11553
11554 Wed Oct 10 19:44:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
11555
11556         * mini-arm.c: unify the call emission to emit_code_seq().
11557
11558 Wed Oct 10 13:05:46 CEST 2007 Paolo Molaro <lupus@ximian.com>
11559
11560         * tramp-arm.c: reduced the trampoline size.
11561
11562 2007-10-10  Mark Probst  <mark.probst@gmail.com>
11563
11564         * generic-sharing.c, mini.h, mini-amd64.c, mini-x86.c: Moved type
11565         variable handling out of arch-specific code.
11566
11567 Wed Oct 10 10:49:28 CEST 2007 Paolo Molaro <lupus@ximian.com>
11568
11569         * mini-arm.c: implemented fast delegate dispatch.
11570
11571 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
11572
11573         * mini-amd64.c (mono_arch_compute_omit_fp): Add more checks to ensure
11574         that fp elimination is turned off if the space required by locals is too
11575         big. Fixes #331958.
11576
11577 Tue Oct 9 21:01:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
11578
11579         * Makefile.am, mini-arm.c, mini-arm.h, tramp-arm.c: ported
11580         ARM to the new style trampoline.
11581
11582 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
11583
11584         * tramp-amd64.c: Rework the specific trampoline code to make it smaller.
11585
11586         * mini-amd64.h mini-amd64.c: Export amd64_patch as mono_amd64_patch.
11587
11588 2007-10-09  Martin Baulig  <martin@ximian.com>
11589
11590         * debug-debugger.h
11591         (MonoDebuggerMetadataInfo): Added `field_info_type_offset' and
11592         `field_info_offset_offset'.     
11593
11594 Tue Oct 9 09:47:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
11595
11596         * mini-ppc.c, mini-ppc.h, mini-ops.h, inssel-ppc.brg, cpu-g4.md:
11597         removed more internal usage of the r11 register and made it available
11598         to the register allocator.
11599
11600 2007-10-08  Mark Probst  <mark.probst@gmail.com>
11601
11602         * mini.c, mini-amd64.c, mini-x86.c: Allow open generic contexts
11603         when sharing generics and treat type variables as references.
11604
11605 Mon Oct 8 10:55:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
11606
11607         * mini-ppc.c: started removing the internal uses of register r11
11608         to eventually allow the register allocator to manage it as an
11609         additional available register.
11610
11611 Mon Oct 8 14:25:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
11612
11613         * tramp-amd64.c: fixed memory corruption in the trampoline generation.
11614
11615 Mon Oct 8 12:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
11616
11617         * tramp-ppc.c, tramp-x86.c: reduce the alignment requirements for
11618         specific trampolines as they are not performance critical as a jump
11619         target (maybe align as before only for AOT code?). This saves about
11620         200 KB of native code on x86 for monodevelop startup.
11621
11622 Mon Oct 8 10:04:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
11623
11624         * tramp-ppc.c: reduce the size of the trampolines, saves 160KB on
11625         monodevelop startup.
11626
11627 2007-10-06  Zoltan Varga  <vargaz@gmail.com>
11628
11629         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Allow signed displacements.
11630
11631         * mini-sparc.h mini-sparc.c: Implement IMT support.
11632
11633         * tramp-sparc.c (mono_arch_create_trampoline_code): Rework the trampoline code so
11634         its smaller and doesn't clobber sparc_g1.
11635
11636         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Update after trampoline changes.
11637
11638 Fri Oct 5 18:28:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
11639
11640         * mini-ppc.c: optimized the size of the IMT thunks a bit.
11641
11642 Fri Oct 5 18:08:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
11643
11644         * mini-ppc.c: implemented fast delegate invocation.
11645
11646 Fri Oct 5 00:01:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
11647
11648         * mini-ppc.h, mini-ppc.c: IMT support for the PPC architecture.
11649
11650 Thu Oct 4 22:04:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
11651
11652         * mini-ppc.c, mini-ppc.h, tramp-ppc.c, Makefile.am: port the PPC
11653         code to the new style trampoline in preparation for IMT support.
11654
11655 Thu Oct 4 19:01:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
11656
11657         * mini-ppc.c, tramp-ppc.c: don't use r13 as it's used by the PPC EABI
11658         systems already. This also reduces the specific trampiline sizes and
11659         prepares for the use of r12 as the IMT identifier register.
11660
11661 Thu Oct 4 16:38:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
11662
11663         * mini-mips.h: endianess fix (simplified from a patch by
11664         Thomas Kunze <thommy@tabao.de>, bug #323737).
11665
11666 Thu Oct 4 14:43:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
11667
11668         * exceptions-ppc.c, mini-ppc.h: refactor to use macros
11669         to access ucontext fields and enable netbsd support
11670         (partially from Magnus Henoch <mange@freemail.hu>).
11671
11672 Thu Oct 4 12:35:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
11673
11674         * genmdesc.pl: patch from Henryk Plotz <henryk@openmoko.org> to
11675         use the preprocessor from the CPP env var if it is set.
11676
11677 Wed Oct 3 17:11:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
11678
11679         * mini-trampolines.c: fixed an assertion and moved it earlier in the
11680         code, before interface_offset gets used.
11681
11682 2007-10-02  Zoltan Varga  <vargaz@gmail.com>
11683
11684         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call 
11685         mono_class_setup_vtable () before accessing klass->vtable.
11686
11687 2007-10-01  Zoltan Varga  <vargaz@gmail.com>
11688
11689         * aot-compiler.c (get_plt_index): Rework the handling of wrappers to be not so
11690         hackish.
11691
11692 Mon Oct 1 15:00:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
11693
11694         * mini.c, mini-trampolines.c, mini.h: enable the lazy filling of the
11695         IMT slots (this saves hundreds of KB of memory in programs like
11696         IronPython and Monodevelop).
11697
11698 Mon Oct 1 14:44:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
11699
11700         * mini.c: print the delegate counter.
11701
11702 Mon Oct 1 14:36:50 CEST 2007 Paolo Molaro <lupus@ximian.com>
11703
11704         * mini-x86.c: make it easier to enable the debugging code for IMT
11705         slots.
11706
11707 2007-09-28  Martin Baulig  <martin@ximian.com>
11708
11709         * debug-debugger.h
11710         (MonoDebuggerMetadataInfo): Add `klass_image_offset',
11711         `mono_method_klass_offset' and `mono_method_token_offset'.
11712
11713 2007-09-20  Mark Probst  <mark.probst@gmail.com>
11714
11715         * mini.c: First generics sharing implementation.  Can only share
11716         in very simple cases.  If sharing doesn't work it falls back to
11717         dedicated compilation.
11718
11719         * mini.h: Flag in MonoCompile to specify whether generic
11720         compilation is shared.  Flags enum for marking which generic inst
11721         of a context is used.  Prototypes for helper functions.
11722
11723         * generic-sharing.c: Helper functions for generic method sharing.
11724
11725         * optflags-def.h: Optimization flag (gshared) for enabling generic
11726         method sharing added.
11727
11728         * Makefile.am: generic-sharing.c added.
11729
11730 2007-09-19 Daniel Nauck <dna@mono-project.de>
11731
11732         * mini.c (mono_thread_abort): fixed typo in r86014. It should be '==' instead of '!='.
11733
11734 2007-09-19  Massimiliano Mantione  <massi@ximian.com>
11735         * mini.c (mono_thread_abort): Correctly handle ThreadAbortException,
11736         fixes bug 325507.
11737
11738 2007-09-19  Martin Baulig  <martin@ximian.com>
11739
11740         * mini.c (mini_cleanup): Only call mono_debugger_cleanup() here;
11741         mono_debug_cleanup() is now part of mono_cleanup().
11742
11743 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
11744
11745         * driver.c (mono_main): Fix a warning.
11746
11747 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
11748
11749         * aot-compiler.c: Optimize various parts when processing large assemblies.
11750         Fixes ##325568.
11751
11752         * mini.c (mono_patch_info_hash): Improve hash function.
11753
11754 2007-09-14  Jonathan Chambers <joncham@gmail.com>
11755
11756         * mini-exceptions.c: Add HAVE_UNISTD_H check around include.
11757         
11758         Code is contributed under MIT/X11 license.
11759
11760 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
11761
11762         * mini.c (mini_init): Fix a leak.
11763
11764         * debug-mini.c (mono_debug_free_method_jit_info): Fix a leak.
11765
11766 Fri Sep 14 12:53:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
11767
11768         * mini.c: redirect string.InternalAllocStr() to the managed allocator.
11769
11770 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
11771
11772         * mini-amd64.c (mono_arch_find_imt_method): Add support for AOT code.
11773
11774 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
11775
11776         * Makefile.am generics-variant-types.2.il generics.cs: Add some generics
11777         variance tests.
11778
11779         * inssel.brg: Reorganize the isinst/castclass code to reduce code duplication.
11780
11781         * mini.c (handle_alloc): Enable managed allocators in AOT code.
11782
11783         * aot-compiler.c (encode_patch): Add support for MONO_WRAPPER_ALLOC.
11784
11785         * aot-runtime.c (decode_patch_info): Ditto.
11786
11787 2007-09-12  Jonathan Chambers <joncham@gmail.com>
11788
11789         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement
11790         static case. Cache delegates in architecture specific code, 
11791         based on number of parameters.
11792         
11793         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Cache delegates
11794         in architecture specific code, based on number of parameters.
11795         
11796         * mini-trampolines.c (mono_delegate_trampoline): Architecture specific 
11797         caching happen in architecture specific code now.
11798         
11799         Code is contributed under MIT/X11 license.
11800
11801 2007-09-12  Jonathan Chambers <joncham@gmail.com>
11802
11803         * mini.h, mini.c, mini-x86.c, mini-amd64.c, mini-hppa.c, mini-mips.c,
11804         mini-s390x.c, mini-arm.c, mini-ia64.c, mini-sparc.c, mini-ppc.c, mini-alpha.c,
11805         mini-s390.c: Add mono_arch_init and mono_arch_cleanup methods.
11806
11807         Code is contributed under MIT/X11 license.
11808
11809 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
11810         * mini.c: (mono_thread_abort) Fixed bug #82416.
11811
11812 Tue Sep 11 16:15:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
11813
11814         * mini.: hook the new managed GC allocation feature into the JIT.
11815
11816 Tue Sep 11 16:14:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
11817
11818         * mini.c: implementation for the new runtime tls opcode.
11819
11820 2007-09-11  Martin Baulig  <martin@ximian.com>
11821
11822         * debug-debugger.h
11823         (MonoDebuggerMetadataInfo): Add `mono_method_flags_offset' and
11824         `mono_method_inflated_offset'.
11825
11826 2007-09-07  Zoltan Varga  <vargaz@gmail.com>
11827
11828         * driver.c mini.h mini.c: Add a new devel command line option for injecting
11829         async exceptions into a method.
11830
11831         * mini-amd64.h mini-amd64.c: Implement injecting of async exceptions for the
11832         purpose of testing whenever the unwinder works at every instruction.
11833
11834 Thu Sep 6 12:42:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
11835
11836         * mini.c: check accessibility of method used in ldftn (fixes
11837         bug #82635).
11838
11839 2007-09-04  Zoltan Varga  <vargaz@gmail.com>
11840
11841         * mini-amd64.c (mono_arch_output_basic_block): Fix a warning.
11842
11843         * inssel.brg: Fix a warning.
11844
11845 2007-09-03  Martin Baulig  <martin@ximian.com>
11846
11847         * debug-debugger.c: `MONO_DEBUGGER_EVENT_INITIALIZE_MANAGED_CODE'
11848         now takes the `main_method' as argument.
11849
11850 2007-09-02  Zoltan Varga  <vargaz@gmail.com>
11851
11852         * cpu-sparc.md (endfilter): Add missing src1:i argument.
11853
11854 2007-08-30  Jonathan Chambers <joncham@gmail.com>
11855
11856         * driver.c: include the cil-coff.h header on Windows.
11857         
11858         Code is contributed under MIT/X11 license.
11859
11860 Thu Aug 30 16:17:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
11861
11862         * mini.c, driver.c: don't include the cil-coff.h header.
11863
11864 Thu Aug 30 14:50:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
11865
11866         * mini.c: flag places that needs fixes fo soft-float support.
11867
11868 Wed Aug 29 18:26:20 CEST 2007 Paolo Molaro <lupus@ximian.com>
11869
11870         * mini.h, inssel-float.brg: fix soft-float constant loads on big
11871         endian systems (partially from Dean Jenkins, bug #81924).
11872
11873 2007-08-28  Mark Probst  <mark.probst@gmail.com>
11874
11875         * mini.c (check_linkdemand): Remove embedded reference object in
11876         call to LinkDemandSecurityException.
11877         (mono_jit_compile_method_inner): Call LinkDemandSecurityException
11878         with an IntPtr instead of a reference object.
11879
11880 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
11881
11882         * mini.c (handle_initobj): Handle alignment properly.
11883
11884         * inssel.brg (mini_emit_memset): Ditto. 
11885
11886         * inssel.brg (mini_emit_memcpy): Ditto. 
11887
11888         * inssel-sparc.brg: Ditto.              
11889
11890         * mini.h mini.c inssel-*.brg: Pass alignment information to OP_MEMCPY/MEMSET.
11891
11892 2007-08-26  Zoltan Varga  <vargaz@gmail.com>
11893
11894         * mini-exceptions.c (mono_handle_exception_internal): Skip the first frame for
11895         exceptions raised in unmanaged code. Fixes part of #82594.
11896
11897 2007-08-24  Mark Probst  <mark.probst@gmail.com>
11898
11899         * mini.c (mono_method_to_ir), declsec.c
11900         (mono_declsec_linkdemand_aptc): Fixed custom attr leaks.
11901
11902 2007-08-22  Martin Baulig  <martin@ximian.com>
11903
11904         * debug-mini.h
11905         (MonoDebuggerThreadInfo): New typedef.
11906         (mono_debugger_thread_table): New global variable.
11907         (mono_debugger_thread_created): New public function.
11908         (mono_debugger_thread_cleanup): New public function.
11909
11910         * debug-debugger.h
11911         (MonoDebuggerInfo):
11912         - removed `get_current_thread' and `lookup_assembly'.
11913         - removed `data_table'.
11914         - added `thread_table'.
11915
11916         * mini.c
11917         (mono_thread_start_cb): Call mono_debugger_thread_created().
11918         (mono_thread_attach_cb): Likewise.
11919         (mini_thread_cleanup): Call mono_debugger_thread_cleanup().
11920         (mini_cleanup): Move mono_debug_cleanup() down, after free'ing the
11921         initial domain.
11922
11923         * driver.c (mono_main): Move mono_debug_init() up, before calling
11924         mini_init(); mono_debug_init_1() and mono_debug_init_2() are gone.
11925
11926 Tue Aug 21 16:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
11927
11928         * mini-x86.c, inssel-x86.brg: group multiple stack adjustments
11929         together when passing several arguments of type double (gives a small
11930         speedup and saves a few bytes of generated code).
11931
11932 2007-08-20  Jb Evain  <jbevain@novell.com>
11933
11934         * mini.c (mono_method_to_ir): fix leak on InvalidProgramException.
11935
11936 2007-08-20  Jb Evain  <jbevain@novell.com>
11937
11938         * mini.c (mono_method_to_ir): throw MethodAccessException
11939         and FieldAccessException instead of InvalidProgramException.
11940
11941 2007-08-20  Mark Probst  <mark.probst@gmail.com>
11942
11943         * mini.c: CoreCLR security checks.
11944
11945         * mini.h: Removed MonoSecurityMode (moved to
11946         metadata/security-manager.h) and mono_security_mode global var
11947         (replaced by set/get functions in security-manager.h).
11948
11949         * driver.c: Added "core-clr-test" security mode for testing.  Used
11950         set-function for setting security mode.
11951
11952 2007-08-17  Mark Probst  <mark.probst@gmail.com>
11953
11954         * mini.c: MonoJitInfo's are freed hazardously now.  Statistics for
11955         the new jit_info_table.
11956
11957         * driver.c: Test code for the new jit_info_table (enabled by the
11958         define MONO_JIT_INFO_TABLE_TEST).
11959
11960 2007-08-14  Zoltan Varga  <vargaz@gmail.com>
11961
11962         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
11963         detection of call <REG> instruction sequence. Fixes build on freebsd.
11964
11965 2007-08-13  Zoltan Varga  <vargaz@gmail.com>
11966
11967         * mini-exceptions.c: Fix a warning.
11968
11969 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
11970
11971         * exceptions-amd64.c (mono_arch_handle_altstack_exception): Enable the new
11972         stack overflow handling code on amd64 too.
11973
11974         * mini-exceptions.c (mono_setup_altstack): Make this use 
11975         mono_thread_get_stack_bounds ().
11976
11977         * mini-x86.h: Disable sigaltstack on solaris x86.
11978
11979 2007-08-10  Zoltan Varga  <vargaz@gmail.com>
11980
11981         * mini-exceptions.c (mono_setup_altstack): Enable this to work on solaris x86.
11982
11983 2007-08-10  Geoff Norton  <gnorton@customerdna.com>
11984
11985         * tramp-x86.c: Remove some unneeded alignment changes on Apple.  Fixes #82387.
11986
11987 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
11988
11989         * mini-exceptions.c (mono_print_thread_dump): Enable this on amd64 too.
11990
11991         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Fix a warning.
11992
11993 2007-08-03  Neale Ferguson <neale@sinenomine.net>
11994
11995         * mini-s390.c (add_general): Adjust offset calculation to take into account of rounding up
11996         due to alignment.
11997
11998 Thu Aug 2 17:36:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
11999
12000         * mini-ppc.c: avoid an invalid encoding of unsigned right shift by 0
12001         to be emitted (bug #82281).
12002
12003 2007-08-01  Martin Baulig  <martin@ximian.com>
12004
12005         Merged the `debugger-dublin' branch.
12006
12007         * debug-debugger.h (MonoDebuggerInfo):
12008         Removed the `old_*' compatibility entries.
12009         Added `debugger_version' and `data_table'.
12010         Renamed `get_method_addr_or_bpt' -> `insert_breakpoint'.
12011         Renamed `remove_method_breakpoint' -> `remove_breakpoint'.
12012
12013         * debug-mini.c
12014         (MiniDebugMethodBreakpointInfo): Add `address_list'.
12015         (mono_debugger_check_breakpoints): Take a `MonoDebugMethodAddress *'
12016         instead of a `gconstpointer'.
12017         (mono_debugger_insert_method_breakpoint): Return a
12018         `MonoDebugMethodAddressList *'.
12019
12020 2007-06-28  Martin Baulig  <martin@ximian.com>
12021
12022         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
12023
12024 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
12025
12026         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Avoid using 
12027         __builtin_frame_address () since it is broken on older gcc versions.
12028
12029 Tue Jul 31 17:34:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
12030
12031         * mini.c, mini.h, mini-exceptions.c: added a bit of documentation
12032         on the stack overflow handling and made the managed stack overflows
12033         catchable in most cases using soft guard pages.
12034         * exceptions-x86.c: added code to restore the protection in the soft
12035         guard pages at the end of exception handling.
12036
12037 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
12038
12039         * mini.c (SIG_HANDLER_SIGNATURE): Fix a warning.
12040
12041 Mon Jul 30 17:43:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
12042
12043         * exceptions-ppc.c, mini-ppc.h: arch-specific stack overflow
12044         exception handling.
12045
12046 Mon Jul 30 17:38:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
12047
12048         * mini-alpha.h, mini-ia64.h, mini-sparc.h: disable the altstack
12049         signal handling support until it has been ported to the new mechanism.
12050         * mini.c: fixed stack overflow detection and use the new
12051         architecture code  to handle signals on the altstack.
12052
12053 Mon Jul 30 17:33:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
12054
12055         * exceptions-amd64.c, mini-amd64.h: amd64 code to handle
12056         stack overflows on the alt stack.
12057
12058 Mon Jul 30 17:29:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
12059
12060         * exceptions-x86.c, mini-x86.h, mini.h: new code to handle
12061         stack overflows on the alt stack.
12062
12063 Mon Jul 30 11:50:06 CEST 2007 Paolo Molaro <lupus@ximian.com>
12064
12065         * exceptions-ppc.c: cleanup preparing for altstack support.
12066
12067 Mon Jul 30 11:31:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
12068
12069         * exceptions-arm.c: cleanup preparing for altstack support.
12070
12071 2007-07-27  Mark Probst  <mark.probst@gmail.com>
12072
12073         * mini.c (print_jit_stats): Output hazard pointer stats.
12074
12075 2007-07-26  Mark Probst  <mark.probst@gmail.com>
12076
12077         * driver.c, mini.c: Replaced security mode flags with a single
12078         enum variable.
12079
12080 Thu Jul 26 20:12:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
12081
12082         * mini.c, mini-exceptions.c: cleanup the sigaltstack code.
12083
12084 2007-07-25  Mark Probst  <mark.probst@gmail.com>
12085
12086         * mini.c, mini.h, driver.c (mono_main): Added command-line flag
12087         (which doesn't do anything yet) for activating Core CLR
12088         (Silverlight) security.
12089
12090 Tue Jul 24 21:16:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
12091
12092         * mini-codegen.c: work around a possible gcc bug on arm.
12093
12094 Tue Jul 24 17:20:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
12095
12096         * driver.c, mini-x86.h, mini-amd64.h: print a nice error
12097         message for platforms that don't support AOT compilation.
12098
12099 Mon Jul 23 10:29:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
12100
12101         * mini.h, mini.c, driver.c: temporary smcs hack.
12102
12103 Mon Jul 23 09:29:34 CEST 2007 Paolo Molaro <lupus@ximian.com>
12104
12105         * mini-arm.h, mini-arm.c: arm EABI fixes.
12106
12107 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
12108
12109         * exceptions-x86.c (mono_arch_find_jit_info): Handle the lmf->method == NULL
12110         case.
12111
12112         * tramp-x86.c (mono_arch_create_trampoline_code): Only set lmf->method for
12113         trampolines taking a method argument.
12114
12115         * mini-x86.h (MonoLMF): Add an 'esp' field plus comments.
12116
12117         * mini-x86.c (mono_arch_emit_prolog): Update after changes to the LMF structure.
12118         * tramp-x86.c (mono_arch_create_trampoline_code): Ditto.
12119
12120         * exceptions-x86.c (mono_arch_get_jit_info): Properly clean up the stack after
12121         JIT compilation throws an exception. Fixes #82050.
12122
12123 2007-07-19  Mark Probst  <mark.probst@gmail.com>
12124
12125         * mini.c: Removed the MonoLoaderErrorKind enum and replaced it
12126         with the MONO_EXCEPTION_ defines.
12127
12128 2007-07-17  Zoltan Varga  <vargaz@gmail.com>
12129
12130         * mini-amd64.c (mono_arch_find_imt_method): Handle mov reg,IMM64 case. Fixes
12131         #82117.
12132         
12133         * mini-amd64.c (mono_arch_find_imt_method): Add some debug code to help find out
12134         the cause of an assertion.
12135
12136 Mon Jul 16 19:31:21 CEST 2007 Paolo Molaro <lupus@ximian.com>
12137
12138         * mini.c, jit-icalls.c: mono_get_inflated_method() is obsolete,
12139         removed.
12140
12141 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
12142
12143         * mini-amd64.c (mono_arch_build_imt_thunk): Remove the non-32bit MonoMethod
12144         assert. Should fix #82103.
12145
12146 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
12147
12148         * mini-exceptions.c (mono_jit_walk_stack_from_ctx): Use MONO_CONTEXT_GET_SP ()
12149         here too. Fixes #82095.
12150
12151         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for non-32bit MonoMethod
12152         addresses.
12153
12154         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a couple asserts.
12155
12156         * mini-amd64.h: Enable IMT for amd64.
12157         
12158         * mini-amd64.c (mono_arch_build_imt_thunk): Optimize IMT thunk size.
12159
12160 2007-07-12  Zoltan Varga  <vargaz@gmail.com>
12161
12162         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for IMT call sequences.
12163
12164 2007-07-12  Mark Probst  <mark.probst@gmail.com>
12165
12166         * mini.c (check_linkdemand, mono_method_to_ir): Abort compilation
12167         as soon as check_linkdemand sets an exception_type.
12168
12169 Thu Jul 12 12:18:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
12170
12171         * mini-x86.c: fixed offsets for IMT call sequence.
12172         * mini-x86.h: enable IMT again.
12173
12174 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
12175
12176         * trace.c (mono_trace_enter_method): Decode MonoType too.
12177
12178         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Handle signed displacements too.
12179
12180         * mini.h mini-x86.h mini-trampolines.c: Change the signature of mono_arch_find_imt_method () to pass the calling code address too.
12181
12182         * mini-amd64.c: Add preliminary IMT implementation.
12183         
12184 Wed Jul 11 18:21:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
12185
12186         * mini-x86.c: adjusted mono_arch_get_vcall_slot_addr () to
12187         understand the new IMT-base interface invocation (thanks to
12188         Daniel Nauck for the report and the remote debugging session).
12189
12190 Wed Jul 11 14:54:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
12191
12192         * mini-x86.c: size and speed optimizations for the IMT bsearch.
12193
12194 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
12195
12196         * Makefile.am (aotcheck): Make this actually use the AOTed code.
12197
12198 Wed Jul 11 12:41:32 CEST 2007 Paolo Molaro <lupus@ximian.com>
12199
12200         * mini-trampolines.c: implement AOT IMT support.
12201         * mini-x86.h: enable IMT support for wider testing.
12202
12203 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
12204
12205         * inssel.brg (emit_imt_argument): Add aot support here.
12206
12207         * aot-runtime.c (decode_patch_info): Fix reading of MONO_PATCH_INFO_METHOD.
12208
12209 Tue Jul 10 17:50:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
12210
12211         * mini-x86.c, mini-x86.h, tramp-x86.c: x86 arch-specific changes
12212         of the IMT implementation, partially from massi, with my
12213         implementation of the bsearch sequence. Disabled by default until
12214         the AOT code is implemented.
12215
12216 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
12217
12218         * cpu-x86.md: The source argument of sext_i1/i2 must by a byte reg.
12219
12220         * inssel-x86.brg: Add reg:ldind.i1(regvar) rules. Fixes #82056.
12221
12222 Tue Jul 10 17:33:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
12223
12224         * inssel.brg, mini.c, mini.h, mini-trampolines.c:
12225         arch-independent IMT JIT code from Massimiliano
12226         Mantione (massi@ximian.com) with small cleanups from me.
12227
12228 Tue Jul 10 13:07:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
12229
12230         * Makefile.am: fix svn invocation to get the svn revision to be
12231         independent of the local language (build fix).
12232
12233 2007-07-09  Mark Probst  <mark.probst@gmail.com>
12234
12235         * mini.c (inline_method): Reset cfg->exception_type if the
12236         inlining is aborted.  Fixes: 82049.
12237
12238 Mon Jul 9 17:26:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
12239
12240         * mini.c: remove assert from exception handling code when exception_ptr
12241         is not set.
12242
12243 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
12244
12245         * mini.c (mono_codegen): Add an assert.
12246
12247         * mini-x86.c (mono_arch_emit_prolog): Allocate space for the profiler method 
12248         enter and leave code.
12249         * mini-amd64.c (mono_arch_emit_prolog): Likewise.
12250
12251 Thu Jul 5 20:12:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
12252
12253         * mini-ppc.c: fixed memory corruption for localloc(0)
12254         (bug #81852).
12255
12256 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
12257         
12258         * mini.c: Fix warnings.
12259
12260 Wed Jul 4 15:30:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
12261
12262         * optflags-def.h, mini-x86.c: added sse2 optimization flag and use it
12263         to emit better double->int conversions.
12264
12265 Tue Jul 3 19:42:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
12266
12267         * mini.c: the provided Min/Max optimizations are valid for unisgned
12268         ints.
12269
12270 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
12271
12272         * 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
12273
12274 2007-06-28  Miguel de Icaza  <miguel@novell.com>
12275
12276         * mini.c (mono_running_on_valgrind): Add support for reporting the
12277         method and  its boundaries to valgrind.
12278
12279 2007-06-28  Martin Baulig  <martin@ximian.com>
12280
12281         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
12282
12283 2007-06-25  Zoltan Varga  <vargaz@gmail.com>
12284
12285         * ssa.c (visit_inst): Add support for OP_BR. Fixes #81946.
12286
12287         * generic.2.cs: Add new test case.
12288
12289 2007-06-25  Martin Baulig  <martin@ximian.com>
12290
12291         Merged the `debugger-dublin' branch.
12292
12293         * debug-mini.c
12294         (mono_debugger_insert_method_breakpoint): New public method.
12295         (mono_debugger_remove_method_breakpoint): Likewise.
12296         (mono_debugger_check_breakpoints): New static method.
12297         (mono_debug_close_method): Call mono_debugger_check_breakpoints().
12298
12299         * debug-debugger.h (MonoDebuggerInfo):
12300         Renamed (to keep backward compatibility in the vtable):
12301         `insert_breakpoint' -> `old_insert_breakpoint'.
12302         `remove_breakpoint' -> `old_remove_breakpoint'.
12303         `create_string' -> `old_create_string'.
12304         `lookup_class' -> `old_lookup_class'.
12305         `lookup_type' -> removed; changed into a dummy field.
12306         `lookup_assembly' -> `old_lookup_assembly'.
12307         Added (same functionality, but different signature):
12308         `create_string', `lookup_class', `lookup_assembly'
12309         Added new:
12310         `get_method_addr_or_bpt', `remove_method_breakpoint',
12311         `runtime_class_init'.
12312
12313         * debug-debugger.c: Merged the `debugger-dublin' branch.
12314
12315 2007-06-23  Zoltan Varga  <vargaz@gmail.com>
12316
12317         * mini-amd64.c (peephole_pass_1): Optimize away moves at the beginning of the bb as
12318         well.
12319         (peephole_pass): Likewise.
12320
12321 Fri Jun 22 09:17:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
12322
12323         * driver.c: hopefully make setaffinity work also for ancient
12324         versions of linux.
12325
12326 2007-06-22  Atsushi Enomoto  <atsushi@ximian.com>
12327
12328         * driver.c : win32 build fix.
12329
12330 Thu Jun 21 19:24:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
12331
12332         * driver.c: check for the MONO_NO_SMP env var and bind to a single
12333         processor if it is set.
12334
12335 2007-06-21  Martin Baulig  <martin@ximian.com>
12336
12337         * debug-mini.h: New file.
12338
12339         * debug-mini.c
12340         (mono_debugger_insert_breakpoint_full): Moved here from
12341         ../metadata/mono-debug-debugger.c.
12342         (mono_debugger_remove_breakpoint): Likewise.
12343         (mono_debugger_breakpoint_callback): Likewise.
12344
12345 2007-06-15  Raja R Harinath  <rharinath@novell.com>
12346
12347         * jit-icalls.c (mono_helper_compile_generic_method): Update to
12348         changes in MonoGenericClass.
12349
12350 2007-06-14  Zoltan Varga  <vargaz@gmail.com>
12351
12352         * mini-codegen.c (mono_opcode_to_type): Fix ia64 build.
12353
12354 2007-06-14  Raja R Harinath  <rharinath@novell.com>
12355
12356         * jit-icalls.c (mono_helper_compile_generic_method): Update to
12357         removal of MonoGenericMethod.
12358
12359 Thu Jun 14 12:42:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
12360
12361         * mini-exceptions.c: hooks for the exception events profiling API.
12362
12363 2007-06-14  Randolph Chung  <tausq@debian.org>
12364
12365         * Makefile.ma: Add hppa target.
12366         * mini-arch.h: Include mini-hppa.h
12367         * cpu-hppa.md, exceptions-hppa.c, inssel-hppa.brg, mini-hppa.c,
12368         mini-hppa.h, tramp-hppa.c: New files for 32-bit HPPA port.
12369         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
12370
12371 2007-06-14  Randolph Chung  <tausq@debian.org>
12372
12373         * inssel.brg: Add rules for "chained" compare-branch operations so that
12374         a single compare op can affect multiple branches.  Adjust cost for
12375         OP_CEQ/OP_CGT/OP_CGT_UN/OP_CLT/OP_CLT_UN.
12376         * inssel-long32.brg: Update rules to use compare-branch macros.  Adjust
12377         cost for some rules so that they can more easily be overridden by
12378         per-arch rules (with fixes from lupus).
12379         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
12380
12381 2007-06-13  Randolph Chung  <tausq@debian.org>
12382
12383         * mini-ops.h: Reorder branch ops so that they match the order of the
12384         corresponding CEE_* ops.  The code expects them this way.
12385         Add new ops for HPPA target.
12386         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
12387
12388 2007-06-13  Randolph Chung  <tausq@debian.org>
12389
12390         * mini-exceptions.c: Handle cases where the stack grows towards
12391         larger addresses.
12392         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
12393
12394 Wed Jun 13 19:13:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
12395
12396         * jit-icalls.c, mini.h, mini.c: added virtual generic invoke
12397         counter.
12398         * driver.c: explain where a non-matching corlib is found.
12399
12400 2007-06-13  Mark Probst  <mark.probst@gmail.com>
12401
12402         * mini.c (print_jit_stats): Output dynamic code allocation stats.
12403
12404 2007-06-10  Sanghyeon Seo <sanxiyn@gmail.com>
12405
12406         * mini-exceptions.c: Generate a method profile leave event during
12407         an exception to ensure that the profiler gets notified.
12408
12409 2007-06-07  Zoltan Varga  <vargaz@gmail.com>
12410
12411         * mini-amd64.c (peephole_pass): Merge some small changes from the linear-ir 
12412         branch.
12413
12414         * cpu-amd64.md: Add long_and/or/xor opcodes.
12415
12416 2007-06-06  Wade Berrier  <wberrier@novell.com>
12417
12418         * cpu-s390x.md (shr_imm): Correct the length of shr_imm instruction.
12419         (./class/lib/monolite/mcs.exe:25498): WARNING **: wrong maximal instruction 
12420         length of instruction shr_imm (expected 8, got 10)
12421
12422 2007-06-06  Zoltan Varga  <vargaz@gmail.com>
12423
12424         * mini-ia64.c (mono_arch_output_basic_block): Really fix the build.
12425
12426 2007-06-06  Mark Probst  <mark.probst@gmail.com>
12427
12428         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
12429         MonoInternalHashTable again (fixed bug in the internal hash table
12430         code).
12431
12432 2007-06-06  Mark Probst  <mark.probst@gmail.com>
12433
12434         * mini.c, driver.c: Reverted the MonoInternalHashTable changes.
12435         Have to figure out what makes it crash the SWF regression.
12436
12437 2007-06-05  Zoltan Varga  <vargaz@gmail.com>
12438
12439         * mini-ia64.c (mono_arch_lowering_pass): Fix ia64 build.
12440
12441 Tue Jun 5 17:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
12442
12443         * mini.c: optimize out the type check when storing null in a
12444         reference array.
12445
12446 2007-06-04  Mark Probst  <mark.probst@gmail.com>
12447
12448         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
12449         MonoInternalHashTable.
12450
12451 Mon Jun 4 11:29:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
12452
12453         * inssel.brg, mini.c, mini-ops.h: optimized Math.Mini/Max
12454         signed integer methods.
12455
12456 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
12457
12458         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case 
12459         permanently since the current approach doesn't work.
12460
12461 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
12462
12463         * inssel.brg (stmt): Only call delegate->invoke_impl if 
12464         MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE is defined.
12465
12466 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
12467
12468         * mini-amd64.c (mono_arch_output_basic_block): Unify div/rem opcodes and handle
12469         the sreg2==rdx case.
12470         
12471         * mini-amd64.c cpu-amd64.md: Correct length of r4const instruction and take into
12472         account if it contains a rex prefix.
12473         (peephole_pass): Handle OP_FMOVE as well.
12474
12475 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
12476
12477         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case for now
12478         as it causes regressions.
12479
12480 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
12481
12482         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement support for the
12483         static case as well.
12484
12485         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix ia64 build.
12486
12487         * mini-x86.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
12488         (mono_arch_get_this_arg_from_call): Ditto.
12489
12490         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Removed.
12491
12492         * inssel.brg (mini_emit_virtual_call): Call delegate->Invoke through the delegate's
12493         invoke_impl field.
12494
12495         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
12496         (mono_arch_get_this_arg_from_call): Ditto.
12497
12498         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Removed.
12499         
12500         * mini-trampolines.c (mono_delegate_trampoline): Complete rewrite. On first call,
12501         try to create optimized invoke code and use that for further invocations. 
12502         Otherwise, use the original mono_marshal_get_delegate_invoke () implementation.
12503
12504         * mini-x86.h mini-ia64.h: Remove MONO_ARCH_HAS_CREATE_DELEGATE_TRAMPOLINE for now.
12505
12506 2007-05-29  Rodrigo Kumpera  <kumpera@gmail.com>
12507
12508         * inssel.brg (mini_emit_virtual_call): Statically dispatch virtual calls to
12509         sealed classes or methods.
12510         *devirtualization.cs: tests for the new optimization
12511
12512 2007-05-29  Zoltan Varga  <vargaz@gmail.com>
12513
12514         * liveness.c (update_gen_kill_set): No need to set VOLATILE flags here, it is done
12515         by the update_volatile () function.
12516
12517 2007-05-27  Zoltan Varga  <vargaz@gmail.com>
12518
12519         * driver.c (mono_main): Call g_thread_init () early since newer glib versions
12520         require it.
12521
12522         * abcremoval.c (mono_perform_abc_removal): Avoid using alloca.
12523
12524 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
12525
12526         * mini.c: Add configure checks for header files.
12527         * mini-x86.c: Add configure checks for header files.
12528         * trace.c: Add configure checks for header files.
12529         * aot-runtime.c: Add configure checks for header files.
12530         * aot-compiler.c: Add configure checks for header files.
12531         * driver.c: Add configure checks for header files.
12532         * mini-codegen.c: Add configure checks for header files.
12533         
12534         Code is contributed under MIT/X11 license.
12535
12536 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
12537
12538         * mini-ia64.c (mono_arch_lowering_pass): Fix the handling of
12539         icompare_imm -128 + op_iclt. Fixes #81703.
12540
12541 2007-05-19  Zoltan Varga  <vargaz@gmail.com>
12542
12543         * mini-codegen.c (mono_local_regalloc): Fix long-shift-regalloc on amd64.
12544
12545 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
12546
12547         * inssel.brg: added "mini_emit_load_intf_bit_reg_vtable", and used it
12548         inside "mini_emit_isninst_iface_cast" and "mini_emit_castclass_iface"
12549         so that all isinst checks now use "interface_bitmap".
12550
12551 2007-05-15  Zoltan Varga  <vargaz@gmail.com>
12552
12553         * cpu-amd64.md (jmp): Fix a warning.
12554
12555         * inssel.brg (CEE_SWITCH): Hopefully fix #80738.
12556
12557         * basic.cs: Add new regression test.
12558
12559         * basic.cs: Remove test which is now in basic-long.cs.
12560
12561         * mini-ia64.c (mono_arch_output_basic_block): Sign extend in CEE_CONV_I8/CEE_CONV_I.
12562
12563         * basic-long.cs: Add new test.
12564         
12565 2007-05-13  Zoltan Varga  <vargaz@gmail.com>
12566
12567         * mini-sparc.c (mono_spillvar_offset_float): Fix sparc build.
12568
12569 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
12570
12571         * cpu-x86.md minix-86.c: Add a peephole_pass_1 () as on amd64.
12572
12573         * mini-x86.c (mono_arch_output_basic_block): Use mono_opcode_to_cond () in a few
12574         places.
12575         
12576         * mini-x86.c (mono_arch_emit_exceptions): Decrease the size of the exception 
12577         throwing code a bit.
12578
12579         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Decrease the size of 
12580         the exception throwing code a bit.
12581
12582         * mini-x86.c (get_call_info): Allocate result from a mempool.
12583
12584 2007-05-11  Zoltan Varga  <vargaz@gmail.com>
12585
12586         * aot-compiler.c (find_typespec_for_class): Fix the assert.
12587
12588         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
12589
12590         * mini.h (MonoCompile): Add 'token_info_hash' field.
12591
12592         * mini.c: Save token->method associations during compilation so the AOT 
12593         compiler can use it.
12594         
12595         * aot-compiler.c aot-runtime.c: Add support for compiling non-generic methods
12596         which reference generic classes and methods.
12597
12598 2007-05-10  Zoltan Varga  <vargaz@gmail.com>
12599
12600         * mini.h mini-<ARCH>.h: Get rid of MONO_ARCH_HAS_XP_LOCAL_REGALLOC.
12601
12602         * aot-compiler.c (compile_method): Fix a typo in a comment.
12603
12604         * aot-runtime.c (decode_cached_class_info): Skip generic types.
12605
12606         * aot-compiler.c: Add minimal support for AOTing generic code by skipping 
12607         everything generic.
12608
12609         * mini.c (mono_method_to_ir): Disable AOT when calling helper_compile_generic_method.
12610
12611 2007-05-09  Zoltan Varga  <vargaz@gmail.com>
12612
12613         * mini.h (MonoCompile): Add 'args' field.
12614
12615         * mini.c (mono_compile_create_vars): Store variables representing the arguments
12616         into cfg->args.
12617
12618         * mini-<ARCH>.c: Use cfg->args for accessing the method arguments.
12619
12620 2007-05-08  Zoltan Varga  <vargaz@gmail.com>
12621
12622         * mini.c (mono_compile_get_interface_var): Remove this unused function.
12623
12624         * mini-ops.h inssel.brg mini-<ARCH>.c: Add a new opcode for ckfinite as well.
12625
12626         * mini-ops.h: Introduce new opcodes used in the IR instead of the original CEE_
12627         opcodes for some opcodes.
12628
12629         * mini.h *.brg *.c: Use the new opcodes.
12630
12631 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
12632
12633         * mini.h: Bumped aot revision.
12634
12635         * inssel.brg: modified code generation of type checks for interfaces
12636         to use the new "MonoClass.interface_bitmap" instead of the old
12637         "MonoClass.interface_offsets".
12638
12639 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
12640
12641         * cpu-amd64.md (jmp): Increase the maximum size of the jmp opcode to 128.
12642
12643 2007-04-29  Zoltan Varga  <vargaz@gmail.com>
12644
12645         * abcremoval.c (summarize_integer_value): Handle OP_LCONV_TO_I4 to fix abcrem on
12646         64 bit platforms.
12647
12648 2007-04-27  Neale Ferguson <neale@sinenomine.net>
12649
12650         * mini-s390x.c: Fix MONO_TYPE_VALUETYPE processing.
12651
12652 2007-04-27  Wade Berrier  <wberrier@novell.com>
12653
12654         * mini-s390x.c: Remove redeclaration of CompRelation and CompType (defined in 
12655         mini.h) to fix build.
12656
12657 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
12658
12659         * mini-amd64.c (peephole_pass_1): Fix and reenable this pass.
12660         
12661         * mini-amd64.c (mono_arch_local_regalloc): Disable the new peephole_pass_1 as it
12662         causes the corlib unit tests to fail.
12663
12664 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
12665
12666         * mini-codegen.c (mono_opcode_to_type): Fix a bug in the previous patch.
12667
12668         * mini-amd64.c (peephole_pass_1): New pass to perform before local regalloc.
12669
12670         * mini-codegen.c (mono_opcode_to_cond): New helper function to convert conditional 
12671         opcodes to the comparison relations.
12672
12673         * mini-codegen.c (mono_opcode_to_type): New helper function to convert conditional 
12674         opcodes to their types.
12675         
12676         * mini-ia64.c mini-amd64.c: Use mono_opcode_to_cond and mono_opcode_to_type.
12677
12678         * mini-amd64.c (get_call_info): Allocate the result from the cfg mempool and cache 
12679         it in cfg->arch.cinfo.
12680
12681         * local-propagation.c (mono_local_cprop_bb): Fix a warning.
12682
12683         * mini.h mini.c branch-opts.c: Change bbhash to be an array and store it in 
12684         cfg->cil_offset_to_bb.
12685
12686 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
12687
12688         * liveness.c (optimize_initlocals): New mini-pass to optimize away dead assignments
12689         created becase of initlocals.
12690
12691 2007-04-23  Zoltan Varga  <vargaz@gmail.com>
12692
12693         * mini-alpha.c cpu-alpha.md: More alpha port work from 
12694         Sergey Tikhonov <tsv@solvo.ru>.
12695
12696 2007-04-21  Andreas Faerber  <andreas.faerber@web.de>
12697
12698         * Makefile.am (BUILT_SOURCES): Fix for automake 1.6.x. Fixes #81417.
12699
12700 2007-04-19  Zoltan Varga  <vargaz@gmail.com>
12701
12702         * cpu-s390.md (break): Correct the length of break instruction.
12703
12704 Thu Apr 19 16:28:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
12705
12706         * mini.c: fix a couple of soft-float issues and comments.
12707
12708 2007-04-15  Miguel de Icaza  <miguel@novell.com>
12709
12710         * trace.c (is_filenamechar): - is also a filename char.
12711
12712 2007-04-15  Neale Ferguson <neale@sinenomine.net>
12713
12714         * mini-s390.c: Correct checking for enum type in return value processing.
12715
12716 2007-04-14  Raja R Harinath  <rharinath@novell.com>
12717
12718         * Makefile.am (BUILT_SOURCES): Add 'version.h'.
12719         (version.h): Makefile is in the build directory.
12720
12721 2007-04-06  Andreas Faerber  <andreas.faerber@web.de>
12722
12723         * mini-amd64.h: fix for assertion failure on Solaris/amd64
12724
12725 2007-04-11  Martin Baulig  <martin@ximian.com>
12726
12727         * mini.c (can_access_member): Fix handling of generic classes;
12728         fixes #81259.
12729
12730 2007-04-10  Zoltan Varga  <vargaz@gmail.com>
12731
12732         * aot-runtime.c (mono_aot_plt_resolve): Fix disabling of AOT. Fixes #81316.
12733
12734 2007-04-05  Zoltan Varga  <vargaz@gmail.com>
12735
12736         * aot-runtime.c: Fix disabling of AOT. Fixes #81316.
12737
12738 Fri Mar 23 20:25:31 CET 2007 Paolo Molaro <lupus@ximian.com>
12739
12740         * mini-codegen.c: make sure the right spill amount is
12741         used for fp or integer registers (fixes the float_sub_spill() on ppc).
12742
12743 Fri Mar 23 19:43:35 CET 2007 Paolo Molaro <lupus@ximian.com>
12744
12745         * mini-ppc.c: fixes for the fp_branch_nan test.
12746
12747 2007-03-23  Zoltan Varga  <vargaz@gmail.com>
12748
12749         * basic.cs: Comment out new test which still fails on ia64.
12750
12751 Fri Mar 23 15:54:23 CET 2007 Paolo Molaro <lupus@ximian.com>
12752
12753         * mini.c: immediate shifted or fix (mono_metadata_user_string assert).
12754
12755 Fri Mar 23 12:53:28 CET 2007 Paolo Molaro <lupus@ximian.com>
12756
12757         * mini-ppc.c, mini-ppc.h: struct passing ABI fix (bug #77968).
12758
12759 2007-03-22  Zoltan Varga  <vargaz@gmail.com>
12760
12761         * cfold.c (FOLD_BINOP): Cast the result to gint32 to prevent overflow problems
12762         on 64 bit machines. Fixes part of #80738.
12763
12764         * basic.cs: Add regression test.
12765
12766 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
12767
12768         * inssel.brg basic.cs: Revert previous change to fix build.
12769
12770         * inssel.brg (SWITCH): Clean out the upper word of the switch value on 64 bit
12771         platforms.
12772         
12773         * inssel.brg (SWITCH): Use an integer comparison. Fixes #80738.
12774
12775         * basic.cs: Add new regression test.
12776
12777 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
12778
12779         * mini-ia64.c (mono_arch_emit_prolog): Fix an assert when a function has too
12780         many arguments.
12781
12782 2007-03-16  Neale Ferguson <neale@sinenomine.net>
12783
12784         * cpu-s390x.md: Correct length of break instruction.
12785
12786 2007-03-16  Neale Ferguson <neale@sinenomine.net>
12787
12788         * mini-s390x.c, cpu-s390x.md: Fix #80507 for s390x.
12789         * mini-s390.c, cpu-s390.md: Fix #80507 for s390.
12790
12791 2007-03-15  Jonathan Chambers  <joncham@gmail.com>
12792
12793         * *.c: Begin WIN64 port.
12794         * mini.c:  Use correct register in profiler.
12795         * mini-amd64.c: No inline assembly on Win64.
12796         * mini-amd64.h: Implement MONO_INIT_CONTEXT_FROM_FUNC for Win64.
12797         Only define MONO_ARCH_USE_SIGACTION on non-windows platforms.
12798         * exceptions-amd64.c: Only need gregs_from_ucontext if MONO_ARCH_USE_SIGACTION
12799         is defined. Implement mono_arch_sigctx_to_monoctx, mono_arch_monoctx_to_sigctx, and
12800         mono_arch_ip_from_context for Win64.
12801         
12802         Contributed under MIT/X11 license.
12803
12804 2007-03-15  Zoltan Varga  <vargaz@gmail.com>
12805
12806         * exceptions-amd64.c (seh_handler): Ditto.
12807
12808         * exceptions-x86.c (seh_handler): Fix a memory leak.
12809
12810 Thu Mar 15 13:47:59 CET 2007 Paolo Molaro <lupus@ximian.com>
12811
12812         * mini-arm.c, mini-mips.c, mini-ppc.c, mini-s390.c,
12813         mini-s390x.c: fixed peephole optimizations to deal
12814         correctly with 1 and 2 byte reload avoidance.
12815
12816 Thu Mar 15 10:17:54 CET 2007 Paolo Molaro <lupus@ximian.com>
12817
12818         * cpu-s390.md, cpu-s390x.md: update localloc length.
12819
12820 Wed Mar 14 21:00:19 CET 2007 Paolo Molaro <lupus@ximian.com>
12821
12822         * cpu-g4.md: added missing descriptions.
12823
12824 2007-03-14  Miguel de Icaza  <miguel@novell.com>
12825
12826         *  Makefile.am: Add support so the tail tests are not executed on
12827         PowerPC as that is a known limitation of the PowerPC port.
12828
12829 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
12830
12831         * runmdesc.bat:  Move to msvc directory.
12832         
12833 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
12834
12835         * runmdesc.bat:  Run executable that was produced by the current
12836         target and sent via an argument.
12837         
12838 2007-03-11  Zoltan Varga  <vargaz@gmail.com>
12839
12840         * mini.c (mono_method_to_ir): Fix box+brtrue optimization. Fixes
12841         #81102.
12842
12843         * generics.2.cs: Add regression test.
12844
12845 2007-03-09  Wade berrier  <wberrier@novell.com>
12846
12847         * mini-ppc.h: Undo typo of MONO_CONTEXT_SET_SP (ppc doesn't define this symbol)
12848
12849 2007-03-09  Zoltan Varga  <vargaz@gmail.com>
12850
12851         * aot-runtime.c (load_aot_module): Load all dependent assemblies eagerly since all
12852         AOT code depends on this.
12853
12854 Thu Mar 8 19:36:13 CET 2007 Paolo Molaro <lupus@ximian.com>
12855
12856         * mini.c: more precise tracking of types in the eval stack
12857         (part of fix for bug #81044).
12858
12859 2007-03-07  Zoltan Varga  <vargaz@gmail.com>
12860
12861         * aot-runtime.c (mono_aot_get_class_from_name): Add a cache.
12862
12863         * aot-compiler.c (encode_patch): Remove an obsolete comment.
12864
12865 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
12866
12867         * mini-exceptions.c (mono_handle_native_sigsegv): Fix a warning.
12868
12869         * mini.c (mono_method_to_ir): Add a workaround for bug #80733.
12870
12871 2007-02-22  Zoltan Varga  <vargaz@gmail.com>
12872
12873         * mini.c (type_from_op): Convert CEE_CONV_U to OP_LCONV_TO_U when the argument is
12874         a pointer on 64 bit systems. Fixes #80190.
12875
12876         * iltests.il: Add new regression test.
12877
12878 Tue Feb 20 11:33:28 CET 2007 Paolo Molaro <lupus@ximian.com>
12879
12880         * mini.c: inline a constant for Environment.IsRunningOnWindows.
12881
12882 2007-02-19  Geoff Norton  <gnorton@customerdna.com>
12883
12884         * trace.c: Remove an erroneous alignemnt check when tracing.
12885           Fixes --trace on OSX86.
12886
12887 Wed Feb 14 19:45:56 CET 2007 Paolo Molaro <lupus@ximian.com>
12888
12889         * mini-$(arch).h: initialize SP in context for all the archs.
12890
12891 2007-02-14  Sebastien Pouliot  <sebastien@ximian.com>
12892
12893         * mini-x86.h: Initialize SP in MONO_INIT_CONTEXT_FROM_FUNC. Fix CAS
12894         regressions in the thread tests.
12895
12896 2007-02-14  Zoltan Varga  <vargaz@gmail.com>
12897
12898         * *-alpha.*: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>:
12899         - fixed implementation of LOCALLOC opcode
12900         - implemented non-un compare for floats
12901         - code cleanup
12902         - implementation of FDIV and CKFINITE opcodes
12903         - fixes for latest mono updates
12904         - additional arch opcodes
12905
12906 Mon Feb 12 11:54:16 CET 2007 Paolo Molaro <lupus@ximian.com>
12907
12908         * Makefile.am: simplify and merge rules for cross-compilation.
12909
12910 2007-02-07  Massimiliano Mantione  <massi@ximian.com>
12911
12912         * local-propagation.c: Actually *apply* the fix for bug 80591...
12913
12914 Tue Feb 6 19:03:19 CET 2007 Paolo Molaro <lupus@ximian.com>
12915
12916         * mini-exceptions.c: backuot part of the last change
12917         (fixes cas tests on amd64 related to GetExecutingAssembly ()).
12918
12919 2007-02-06  Massimiliano Mantione  <massi@ximian.com>
12920         * inssel.brg: Fix bug 59286.
12921
12922
12923 Tue Feb 6 12:23:50 CET 2007 Paolo Molaro <lupus@ximian.com>
12924
12925         * mini-exceptions.c: patch from Zoltan to correctly check for
12926         stack boundaries (using the stack register, not the frame register),
12927         fixes bugs #80724, #79717.
12928
12929 2007-02-03  Zoltan Varga  <vargaz@gmail.com>
12930
12931         * mini-ia64.c inssel-sparc.brg mini-sparc.c cpu-sparc.md: Get rid of OP_SETREG/
12932         OP_SETREGIMM, use OP_MOVE/OP_ICONST instead.
12933
12934         * mini-amd64.c (mono_arch_output_basic_block): Fix ATOMIC_EXCHANGE in the
12935         presence of frame pointer elimination.
12936
12937 2007-02-01  Geoff Norton  <gnorton@customerdna.com>
12938         
12939         * mini-x86.h: NetBSD UCONTEX_REG defines.
12940
12941 2007-02-01  Zoltan Varga  <vargaz@gmail.com>
12942
12943         * inssel-amd64.brg: Fix amd64 build.
12944
12945 Thu Feb 1 14:02:09 CET 2007 Paolo Molaro <lupus@ximian.com>
12946
12947         * mini.h: remove extern to workaround what looks likes gcc bug 26905
12948         on amd64.
12949
12950 2007-01-31  Zoltan Varga  <vargaz@gmail.com>
12951
12952         * mini-codegen.c (mono_is_regsize_var): New helper function usable by the back
12953         ends.
12954
12955         * mini-<ARCH>.c: Use mono_is_regsize_var ().
12956
12957 2007-01-30 Mark Mason <mason@broadcom.com>
12958
12959            * exceptions-mips.c: Lots of exception handling fixes, LMFs now work, some cleanups.
12960            * mini-mips.h: Add LMF magic numbers, and fix context set/get macros.
12961            * mini-mips.c: Cleanups, LMF handling now works, optimize store of zero, implement localloc
12962            beginning support for CEE_JMP [not quite working yet]
12963            * tramp-mips.c: LMF handling now works
12964         
12965 2007-01-30  Zoltan Varga  <vargaz@gmail.com>
12966
12967         * mini-amd64.c (peephole_pass): Optimize code common in initlocals blocks.
12968
12969         * mini.h (NULLIFY_INS): New macro.
12970
12971 Tue Jan 30 16:33:33 CET 2007 Paolo Molaro <lupus@ximian.com>
12972
12973         * mini.c: statistical profiler fix for windows, patch
12974         from Tor Lillqvist (tml@novell.com).
12975
12976 2007-01-30  Massimiliano Mantione  <massi@ximian.com>
12977         * local-propagation.c: Fix bug 80591.
12978
12979 Mon Jan 29 12:14:34 CET 2007 Paolo Molaro <lupus@ximian.com>
12980
12981         * Makefile.am: put back the --export-dynamic option as with
12982         the previous gmodule flags (thanks to Robert Jordan).
12983
12984 2007-01-28  Zoltan Varga  <vargaz@gmail.com>
12985
12986         * mini-sparc.c (peephole_pass): Fix #80622 for sparc as well.
12987
12988         mini.h *.c: Allocate fp vregs from the same pool as the int vregs. Use this to
12989         simplify and speed up the local register allocator. Also rename some fields
12990         like iassign->vassign.
12991         
12992         * regalloc.c: Remove some functions which are no longer used since their
12993         inlined version is in mini-codegen.c.
12994         
12995         * mini-codegen.c: Rename mono_regstate2_ functions to mono_regstate_.
12996
12997         * basic.cs objects.cs iltests.il: Merge tests from the linear IL branch.
12998
12999 2007-01-27  Zoltan Varga  <vargaz@gmail.com>
13000
13001         * mini-amd64.c (peephole_pass): Remove optimizations which omit a 
13002         narrowing. Fixes #80622.
13003
13004         * iltests.il: Add new regresssion test. 
13005
13006 Fri Jan 26 18:31:45 CET 2007 Paolo Molaro <lupus@ximian.com>
13007
13008         * mini.h, mini-trampolines.c, aliasing.c, mini-codegen.c,
13009         debug-debugger.c, debug-debugger.h: warning fixes.
13010         * driver.c: updated copyright year and made it fit in one line.
13011
13012 Fri Jan 26 12:48:39 CET 2007 Paolo Molaro <lupus@ximian.com>
13013
13014         * aot-runtime.c: updated to use mono-dl instead of gmodule.
13015
13016 2007-01-25  Zoltan Varga  <vargaz@gmail.com>
13017
13018         * mini-x86.c (mono_arch_output_basic_block): Fix #80507 for x86.
13019
13020         * mini-amd64.c (mono_arch_output_basic_block): Fix #80507 for amd64.
13021
13022         * iltests.il: Add new test for bug #80507.
13023
13024 Wed Jan 24 19:10:28 CET 2007 Paolo Molaro <lupus@ximian.com>
13025
13026         * mini-arm.h: use soft-float also on vfp for now.
13027
13028 Wed Jan 24 14:54:40 CET 2007 Paolo Molaro <lupus@ximian.com>
13029
13030         * mini.c: fix some more soft-float issues.
13031
13032 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
13033
13034         * mini-sparc.h (MONO_ARCH_FRAME_ALIGNMENT): Fix sparc build.
13035
13036 2007-01-24  Massimiliano Mantione  <massi@ximian.com>
13037         * mini-arch.h, , inssel-amd64.brg, mini-x86.c, inssel-x86.brg,
13038         mini-ia64.c, mini-sparc.c, mini-alpha.c: Introduced
13039         MONO_ARCH_LOCALLOC_ALIGNMEENT to fix bug 80498.
13040
13041 Wed Jan 24 12:04:39 GMT 2007 Paolo Molaro <lupus@ximian.com>
13042
13043         * mini-arm.c: typo fix.
13044
13045 2007-01-23  Neale Ferguson <neale@sinenomine.net>
13046
13047         * mini-s390x.c: Use lgb instructions for I1 type variables instead of lb.
13048
13049 2007-01-21  Zoltan Varga  <vargaz@gmail.com>
13050
13051         * mini.c (mono_allocate_stack_slots_full): Allocate memory from the cfg mempool.
13052         Share stack slots for scalar types. Avoid expensive g_list_free () calls.
13053
13054         * mini-x86.c (mono_arch_allocate_vars): Don't free the result of allocate_stack_slots_full.
13055
13056         * mini-amd64.c mini-ia64.c mini-alpha.c: Ditto. 
13057
13058         * mini.h (MonoJitStats): Add a new JIT statistics: locals_stack_size.
13059         
13060         * inssel.brg: Fix a warning.
13061
13062         * mini.h (MonoBasicBlock): Make bb->dominated a GSList.
13063
13064         * abcremoval.c ssa.c ssapre.c: Update after this change.
13065         
13066         * dominators.c (compute_dominators): Allocate bb->dominated from the cfg mempool.
13067
13068         * dominators.c (df_set): Use mono_bitset_union_fast.    
13069
13070 Sat Jan 20 16:59:01 CET 2007 Paolo Molaro <lupus@ximian.com>
13071
13072         * mini.h, genmdesc.c, genmdesc.pl, mini-${arch}.c, cprop.c,
13073         mini-codegen.c: reduce relocations and memory usage for the cpu
13074         description.
13075
13076 2007-01-20  Zoltan Varga  <vargaz@gmail.com>
13077
13078         * mini-codegen.c (mono_regstate2_alloc_int): Optimize this using bsfq on amd64.
13079
13080         * genmdesc.c genmdesc.pl mini.h: Remove some unused fields from the mdesc tables
13081         to reduce their size.
13082
13083 2007-01-19 Mark Mason <mason@broadcom.com>
13084
13085         * exceptions-mips.c: fix mono_arch_ip_from_context(), increase exception debug support.
13086         * mini-mips.c: more configuration macros, support long conditional branches, additional
13087         asserts, fix epilog instrumentation.
13088         * mini-mips.h: use standard stack walk
13089         * cpu-mips.md: increase size of div, rem and conditional branches
13090         
13091 Fri Jan 19 17:23:32 CET 2007 Paolo Molaro <lupus@ximian.com>
13092
13093         * mini.h, mini-codegen.c, mini-$(arch).h: claenup references
13094         to cpu spec data.
13095
13096 2007-01-19  Zoltan Varga  <vargaz@gmail.com>
13097
13098         * aot-compiler.c (encode_klass_info): Allow classes of the form <Type>[][].
13099         (compile_method): Ditto.
13100
13101         * aot-runtime.c (decode_klass_info): Ditto.
13102
13103         * mini.c (mono_method_to_ir): Call mono_get_got_var () in a place where it is
13104         needed by the code generated by inssel.brg. Also fix a warning.
13105
13106 Thu Jan 18 17:55:22 CET 2007 Paolo Molaro <lupus@ximian.com>
13107
13108         * mini.c: deal with enums that become genericinsts by
13109         being nested in a generic class (bug #79956).
13110
13111 Thu Jan 18 16:52:56 CET 2007 Paolo Molaro <lupus@ximian.com>
13112
13113         * mini.c: match the generic definition to check for
13114         private access with generic types (bug #78431).
13115
13116 Thu Jan 18 11:50:13 CET 2007 Paolo Molaro <lupus@ximian.com>
13117
13118         * genmdesc.pl, Makefile.am: perl implementation of genmdesc,
13119         to make life easier for people cross-compiling that insist on not
13120         using scratchbox.
13121
13122 2007-01-17 Mark Mason <mason@broadcom.com>
13123
13124         * inssel-long.brg: patch to deal with mips missing flags
13125         * inssel-long32-mips.brg: implement overflow checks
13126         * insset-mips.brg: implement overflow checks
13127         * mini-mips.h: implement conditional exception handling
13128         * mini-mips.c: add mips_emit_exc_by_name(), implement conditional exception handling.
13129           Remove unused code, minor cleanups.
13130         * exceptions-mips.c: minor cleanups
13131         * mini-ops.h: add mips conditional exception ops
13132         * cpu-mips.md: add mips conditional exception ops
13133
13134         
13135 Wed Jan 17 19:22:34 CET 2007 Paolo Molaro <lupus@ximian.com>
13136
13137         * inssel.brg: patch from Mark Mason <mason@broadcom.com>
13138         to deal with mips missing of flags.
13139
13140 Tue Jan 16 20:01:01 CET 2007 Paolo Molaro <lupus@ximian.com>
13141
13142         * exceptions-ppc.c: execute fault handlers.
13143
13144 Tue Jan 16 19:54:44 CET 2007 Paolo Molaro <lupus@ximian.com>
13145
13146         * mini-ppc.c: handle missing call locationss with FORCE_INDIR_CALL.
13147
13148 Tue Jan 16 13:14:31 CET 2007 Paolo Molaro <lupus@ximian.com>
13149
13150         * mini.c: handle also floating point values in initialize_array.
13151
13152 Tue Jan 16 12:42:40 CET 2007 Paolo Molaro <lupus@ximian.com>
13153
13154         * mini.c, aot-runtime.c, aot-compiler.c: enable aot compilation of
13155         array initialization and make it conditional on the intrins option.
13156
13157 Tue Jan 16 11:28:45 CET 2007 Paolo Molaro <lupus@ximian.com>
13158
13159         * mini.h, patch-info.h, Makefile.am, aot-compiler.c: reduce
13160         relocations and put the patch info names close to the enum definition.
13161
13162 2007-01-15 Mark Mason <mason@broadcom.com>
13163
13164         * basic.cs, exceptions.cs: break up large tests to increase debugability.
13165
13166 Mon Jan 15 18:57:14 CET 2007 Paolo Molaro <lupus@ximian.com>
13167
13168         * mini.c: optimized RuntimeHelpers::InitializeArray () calls.
13169
13170 2007-01-12  Raja R Harinath  <rharinath@novell.com>
13171
13172         * mini.c (mono_method_to_ir): Use new MonoGenericContext accessor.
13173
13174 Thu Jan 11 11:16:42 CET 2007 Paolo Molaro <lupus@ximian.com>
13175
13176         * Makefile.am: distribute the mips sources.
13177
13178 Wed Jan 10 19:49:33 CET 2007 Paolo Molaro <lupus@ximian.com>
13179
13180         * mini-codegen.h: handle bug #80489 here, by excluding ecx
13181         directly.
13182
13183 Wed Jan 10 19:08:05 CET 2007 Paolo Molaro <lupus@ximian.com>
13184
13185         * cpu-x86.md: back out for now as this triggers other regressions.
13186
13187 Wed Jan 10 18:33:16 CET 2007 Paolo Molaro <lupus@ximian.com>
13188
13189         * cpu-x86.md: force src1 and dest regpair for long shift instructions
13190         to eax:edx, so ecx can't get allocated to them (bug #80489).
13191
13192 Tue Jan 9 12:36:11 CET 2007 Paolo Molaro <lupus@ximian.com>
13193
13194         * mini.c, mini-exceptions.c: enabled running fault handlers
13195         (bug #80469).
13196
13197 2007-01-03  Miguel de Icaza  <miguel@novell.com>
13198
13199         * driver.c: If nothing fail, do not use the string "failed",
13200         because it makes it very annoying to view test result logs on the
13201         web. 
13202
13203 2006-12-30  Miguel de Icaza  <miguel@novell.com>
13204
13205         * debug-debugger.c (mono_debugger_main): Rename "main" to
13206         "main_method" to prevent a warning.
13207
13208         Remove a warning for unused field.
13209
13210 2006-12-28  Martin Baulig  <martin@ximian.com>
13211
13212         * debug-debugger.c
13213         (MONO_DEBUGGER__debugger_info): Add `get_lmf_addr'.
13214
13215 2006-12-22  Martin Baulig  <martin@ximian.com>
13216
13217         * mdb-debug-info32.s, mdb-debug-info64.s: New files.
13218         Put a pointer to the `MONO_DEBUGGER__debugger_info' into a
13219         seperate `.mdb_debug_info' section, so we can access it from the
13220         debugger even if the binary is stripped.
13221
13222         * debug-debug.c: Reference the `MONO_DEBUGGER__debugger_info_ptr'
13223         from the `.mdb_debug_info' here to prevent the linker from
13224         removing that section.
13225
13226         * Makefile.am (mono_debugger_sources): Add mdb-debug-info32.s /
13227         mdb-debug-info64.s.
13228
13229 2006-12-19  Robert Jordan  <robertj@gmx.net>
13230
13231         * mini-x86: enable the code to return small structures in
13232         registers for FreeBSD as well. Fixes bug #80278.
13233         * aot-runtime.c: Include sys/wait.h for WEXITSTATUS/WIFEXITED.
13234
13235 Mon Dec 18 19:47:17 CET 2006 Paolo Molaro <lupus@ximian.com>
13236
13237         * mini-x86.c: align the stack when calling the profiler
13238         function instrumenting the prolog (on OSX).
13239
13240 Thu Dec 14 15:22:43 CET 2006 Paolo Molaro <lupus@ximian.com>
13241
13242         * mini.c: emit a break opcode where Debugger.Break () is called.
13243
13244 2006-12-13  Miguel de Icaza  <miguel@novell.com>
13245
13246         * mini.c (mono_method_to_ir): Provide useful information on this
13247         assert, to prevent others from debugging like I did.
13248
13249 Tue Dec 12 17:01:38 CET 2006 Paolo Molaro <lupus@ximian.com>
13250
13251         * mini.c: enable code which was incorrectly commented
13252         (bug #80235).
13253
13254 Tue Dec 12 16:28:15 CET 2006 Paolo Molaro <lupus@ximian.com>
13255
13256         * mini-x86.c: enable on OSX, too, the code to return small
13257         structures in registers.
13258
13259 Mon Dec 11 19:22:35 CET 2006 Paolo Molaro <lupus@ximian.com>
13260
13261         * mini-x86.c: remove the use of the dynamic code manager here, too.
13262
13263 Mon Dec 11 19:08:33 CET 2006 Paolo Molaro <lupus@ximian.com>
13264
13265         * mini.h, debug-debugger.c, tramp-*.c: fixed 
13266         mono_debugger_create_notification_function() to use
13267         mono_global_codeman_reserve () instead of a dynamic code manager.
13268
13269 Tue Dec 5 17:54:50 CET 2006 Paolo Molaro <lupus@ximian.com>
13270
13271         * mini.c, jit-icalls.h, jit-icalls.c: remove the 
13272         ves_array_element_address() jit icall and use a generated
13273         managed method instead (which is about 4 times faster for a rank 3
13274         array access).
13275
13276 2006-11-29  Mark Mason  <mason@broadcom.com>
13277
13278         * basic-calls.cs: additional tests for passing
13279         structures as function arguments.
13280
13281 2006-11-29  Mark Mason  <mason@broadcom.com>
13282
13283         * mini-mips.h: disable custom exception handling
13284         * mini-mips.c: throw/rethrow should use jalr to call
13285         exception stubs.  Fixed bug with passing structures
13286         by value. More support for tracing floating point
13287         functions.
13288
13289 Wed Nov 29 20:28:17 CET 2006 Paolo Molaro <lupus@ximian.com>
13290
13291         * mini.c: fixed typo in the soft-float ldind.r4 handling
13292         (bug #80086).
13293
13294 Wed Nov 29 11:33:03 CET 2006 Paolo Molaro <lupus@ximian.com>
13295
13296         * mini.c, mini.h, driver.c: added --runtime command line
13297         option to select a different runtime than the autodetected one.
13298         * jit.h: added API for embedders to initialize with a specific
13299         runtime version.
13300
13301 Tue Nov 28 21:24:55 CET 2006 Paolo Molaro <lupus@ximian.com>
13302
13303         * mini.c: handle also boxing of r4 values (bug #80024).
13304
13305 Tue Nov 28 19:45:44 CET 2006 Paolo Molaro <lupus@ximian.com>
13306
13307         * mini-ppc.c: force indirect calls until we reserve
13308         enough address space for all the generated code.
13309
13310 Tue Nov 28 20:04:34 GMT 2006 Paolo Molaro <lupus@ximian.com>
13311
13312         * exceptions-arm.c: workaround bugs in the libc definition
13313         of struct ucontext.
13314
13315 Mon Nov 27 15:13:41 CET 2006 Paolo Molaro <lupus@ximian.com>
13316
13317         * inssel.brg: fixes from me and Mark Mason.
13318
13319 2006-11-23  Dick Porter  <dick@ximian.com>
13320
13321         * wapihandles.c (mini_wapi_seminfo): No need to adjust the counter
13322         semaphore display now we've fixed the initial value
13323
13324 Wed Nov 22 11:04:37 CET 2006 Paolo Molaro <lupus@ximian.com>
13325
13326         * inssel.brg: partially revert the last change to fix the build.
13327
13328 2006-11-21  Mark Mason  <mason@broadcom.com>
13329
13330         * inssel.brg: Add and use compare-and-branch macros to support
13331         architectures that do not have condition code registers (ie. MIPS).
13332         * *-mips.{c,brg,md}: Fix copyright statements
13333
13334 2006-11-20  Mark Mason  <mason@broadcom.com>
13335
13336         * Makefile.am: remove mini-codegen.c from list of MIPS sources
13337         * mini.c: Allow GET_CONTEXT to be specified by the arch port
13338         * mini.h: Added declaration for mono_print_ins()
13339         * mini-codegen.c: added ins_spec initializer for MIPS
13340         * mini-codegen.c (mono_call_inst_add_outarg_reg): added asserts for
13341         vreg to be virtual and hreg to be non-virtual.
13342         * mini-codegen.c (mono_spillvar_offset): assert if MIPS - spilling
13343         is not yet working/implemented correctly.
13344         * mini-codegen.c (print_ins): rename to mono_print_ins(), make
13345         non-static, fixup calls to print_ins() from other parts in the file.
13346
13347 2006-11-20  Mark Mason  <mason@broadcom.com>
13348
13349         * basic-calls.cs: added tests for passing structures as arguments
13350         to calls.
13351
13352 Mon Nov 20 19:40:11 CET 2006 Paolo Molaro <lupus@ximian.com>
13353
13354         * inssel-long32.brg: optimize signed division by power of two.
13355
13356 Mon Nov 20 17:37:58 CET 2006 Paolo Molaro <lupus@ximian.com>
13357
13358         * mini-arm.c: added support for interworking with thumb code
13359         (mono must be still be built using the ARM instruction encoding).
13360
13361 2006-11-19  Miguel de Icaza  <miguel@novell.com>
13362
13363         * mini.c (type_from_op): Separate the conditions for OP_EQ as the
13364         verifier has different rules for it.   Fixes a few verifier issues
13365         in the test suite.
13366
13367         * mini-exceptions.c (mono_handle_native_sigsegv): Put the message
13368         at the end, so people know what happened.
13369
13370 Thu Nov 16 14:07:18 CET 2006 Paolo Molaro <lupus@ximian.com>
13371
13372         * brach-opts.c: in optimize_exception_target() make sure we
13373         are in a catch clause (fixes bug #79871).
13374
13375 Thu Nov 16 12:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
13376
13377         * jit-icalls.c, jit-icalls.h, mini-arm.c, mini.c:
13378         more soft-float support fixes.
13379
13380 Wed Nov 15 18:45:47 GMT 2006 Paolo Molaro <lupus@ximian.com>
13381
13382         * mini-arm.c, inssel-arm.brg: ABI fix for longs and doubles
13383         that are passed half on the stack and half in registers.
13384
13385 Wed Nov 15 17:00:27 CET 2006 Paolo Molaro <lupus@ximian.com>
13386
13387         * mini-ops.h, mini-arch.h, helpers.c, Makefile.am:
13388         more mips integration work from Mark E Mason 
13389         <mark.e.mason@broadcom.com>.
13390
13391 Wed Nov 15 16:34:03 CET 2006 Paolo Molaro <lupus@ximian.com>
13392
13393         * exceptions-mips.c, inssel-mips.brg, mini-mips.h,
13394         cpu-mips.md, inssel-long32-mips.brg, mini-mips.c,
13395         tramp-mips.c: added sources for the mips port, not
13396         integrated in the build yet. Contributed by
13397         Mark E Mason <mark.e.mason@broadcom.com>.
13398
13399 2006-11-14  Neale Ferguson <neale@sinenomine.net>
13400
13401         * mini-s390[x].c (is_regsize_var): Support PTR/FNPTR too.
13402
13403 Tue Nov 14 16:06:37 CET 2006 Paolo Molaro <lupus@ximian.com>
13404
13405         * Makefile.am, inssel-float.brg, inssel-softfloat.brg:
13406         put the soft-float rules in its own file since it seems to
13407         break s390 compilation.
13408
13409 Mon Nov 13 15:54:38 CET 2006 Paolo Molaro <lupus@ximian.com>
13410
13411         * mini-arm.c: fixed wrnings.
13412
13413 Fri Nov 10 19:18:32 CET 2006 Paolo Molaro <lupus@ximian.com>
13414
13415         * mini-arm.c, mini-arm.h, cpu-arm.md, inssel-float.brg,
13416         inssel-arm.brg: ARM support for soft-float.
13417
13418 Fri Nov 10 18:38:15 CET 2006 Paolo Molaro <lupus@ximian.com>
13419
13420         * mini.c, jit-icalls.c, jit-icalls.h: added first cut at handling
13421         loads and stores of 32 bit fp values.
13422
13423 2006-11-10  Zoltan Varga  <vargaz@gmail.com>
13424
13425         * mini-sparc.c (is_regsize_var): Support PTR/FNPTR too.
13426
13427         * tramp-sparc.c (mono_arch_patch_callsite): Fix this function so it actually
13428         works. Fixes #79852 and #79463.
13429
13430 Thu Nov 9 16:56:13 CET 2006 Paolo Molaro <lupus@ximian.com>
13431
13432         * mini.c, mini-codegen.c, jit-icalls.c, jit-icalls.h:
13433         more soft-float support WIP and fixes.
13434
13435 Wed Nov 8 16:40:02 CET 2006 Paolo Molaro <lupus@ximian.com>
13436
13437         * mini-arm.c: some VFP updates.
13438
13439 Tue Nov 7 19:45:51 CET 2006 Paolo Molaro <lupus@ximian.com>
13440
13441         * mini-exceptions.c: 0 is a valid local var offset in some
13442         architectures, don't assert (bug #78508).
13443
13444 Tue Nov 7 18:17:52 GMT 2006 Paolo Molaro <lupus@ximian.com>
13445
13446         * exceptions-arm.c: fixed off by one error in stack walk code.
13447
13448 Tue Nov 7 11:27:26 CET 2006 Paolo Molaro <lupus@ximian.com>
13449
13450         * mini.h, mini.c: more precise tracking of type load exceptions.
13451
13452 2006-11-03  Robert Jordan  <robertj@gmx.net>
13453
13454         * Makefile.am: [WIN32] Add monow.exe target.
13455         * driver.c: [WIN32] Don't detach the console when debugging.
13456         Fixes bug #79797.
13457         
13458 2006-10-30  Miguel de Icaza  <miguel@novell.com>
13459
13460         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Eliminate warning.
13461
13462 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
13463
13464         * aot-compiler.c (emit_method_info): Add a case missed earlier.
13465
13466         * driver.c (mini_regression): Fix --regression with AOT.
13467
13468         * aot-compiler.c (emit_method_info): Fix AOT on amd64.
13469
13470 2006-10-17  Zoltan Varga  <vargaz@gmail.com>
13471
13472         * mini.c (GET_CONTEXT): Correct the definition of this for sparc/linux.
13473
13474         * mini-sparc.h: Don't use sigaction on sparc/linux.
13475
13476         * exceptions-sparc.c: Call mono_arch_flush_icache () in a couple of places.
13477
13478         * mini-sparc.c (mono_sparc_flushw): Call mono_arch_flush_icache ().
13479
13480         * mini-exceptions.c: Add proper include files for getpid ().
13481
13482 2006-10-16  Zoltan Varga  <vargaz@gmail.com>
13483
13484         * aot-runtime.c (mono_aot_get_method): Change this to return the native code
13485         address instead of a MonoJitInfo* to avoid decoding the exception info for the
13486         method.
13487
13488         * aot-runtime.c aot-compiler.c: Use uint16 instead of uint32 entries in the
13489         name cache to reduce its size.
13490
13491         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
13492
13493 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
13494
13495         * mini-x86.c: Save/restore the current LMF structure more efficiently using
13496         the mono_lmf TLS variable.
13497
13498         * exceptions-x86.c (mono_arch_find_jit_info): Only access lmf->method in 
13499         trampoline lmf frames.  
13500
13501         * mini-sparc.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Define this on sparc as well.
13502
13503 2006-10-14  Zoltan Varga  <vargaz@gmail.com>
13504
13505         * mini-amd64.c: Save/restore the current LMF structure more efficiently using
13506         the mono_lmf TLS variable.
13507
13508         * mini-exceptions.c: Access the LMF structure through accessors.
13509
13510         * mini.c: Allow the backends the option for storing the lmf in a dedicated TLS 
13511         variable instead of in jit_tls->lmf.
13512
13513         * mini-x86.c mini-amd64.c: Update after lmf->lmf_addr name change.
13514         
13515         * exceptions-amd64.c (mono_arch_find_jit_info): Only access lmf->method in 
13516         trampoline lmf frames.
13517
13518         * mini-amd64.c (mono_arch_emit_prolog): Do not set lmf->method as it is not needed.
13519
13520 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
13521
13522        * mini.c trace.c mini-x86.c: Revert these too.
13523         
13524        * mini.c trace.c mini-x86.c: Remove warning workarounds after the mono_type_size ()
13525        signature change.
13526
13527 Tue Oct 10 11:35:20 CEST 2006 Paolo Molaro <lupus@ximian.com>
13528
13529         * genmdesc.c: removed now dead code.
13530
13531 2006-10-09  Robert Jordan <robertj@gmx.net>
13532
13533         * mini.c: Disable the CrashReporter on MacOS X; Fixes #74869
13534
13535 Mon Oct 9 17:06:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
13536
13537         * mini.h: do not leave gaps in the opcode values.
13538
13539 Mon Oct 9 16:08:51 CEST 2006 Paolo Molaro <lupus@ximian.com>
13540
13541         * jit-icalls.h: flag functions as internal here, too.
13542
13543 Mon Oct 9 15:58:18 CEST 2006 Paolo Molaro <lupus@ximian.com>
13544
13545         * mini.h, aliasing.h, declsec.h, regalloc.h, trace.h: mark internal
13546         functions with the internal attribute.
13547
13548 Mon Oct 9 15:52:45 CEST 2006 Paolo Molaro <lupus@ximian.com>
13549
13550         * aot-compiler.c: fclose the file descriptor in the profile read loop.
13551
13552 Fri Oct 6 16:01:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
13553
13554         * mini.c, jit-icalls.c, inssel-float.brg: beginnings of support
13555         for soft-float.
13556
13557 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
13558
13559         * mini-x86.c (emit_load_volatile_arguments): New function to handle arguments of
13560         tail calls as on other platforms.
13561
13562         * mini.c (mono_method_to_ir): Fix a few tailcall problems. Fixes #79557.
13563
13564         * iltests.il: Add a few tailcall tests.
13565
13566 Tue Oct 3 16:33:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
13567
13568         * driver.c: fix loop for old compilers (bug #79521).
13569
13570 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
13571
13572         * mini-exceptions.c (ves_icall_get_trace): Remove debug printf.
13573
13574         * aot-runtime.c (mono_aot_get_class_from_name): Avoid a memory allocation.
13575
13576         * aot-compiler.c: Add a new option 'metadata-only' to only emit the cached
13577         metadata without any code.
13578
13579         * mini-exceptions.c (mono_handle_native_sigsegv): Add some code to print out
13580         more precise debugging information using gdb.
13581
13582 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
13583
13584         * inssel-ia64.brg: Make the helper methods static.
13585
13586 Thu Sep 28 16:40:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
13587
13588         * inssel-x86.brg: make the helper methods static.
13589
13590 Thu Sep 28 16:31:32 CEST 2006 Paolo Molaro <lupus@ximian.com>
13591
13592         * inssel-amd64.brg, mini-amd64.c: small cleanup, use inst_call.
13593
13594 Thu Sep 28 15:36:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
13595
13596         * mini.c: updates for monoburg changes.
13597         * inssel.brg: make a few helper functions static as they should.
13598
13599 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
13600
13601         * Makefile.am: Move mini-codegen.c to common_sources.
13602
13603 Wed Sep 27 15:07:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
13604
13605         * mini.h: instroduce inst_call in MonoInst for use in OUTARG
13606         instructions.
13607         * Makefile.am, cpu-g4.md, inssel-ppc.brg, mini-codegen.c, mini-ppc.c,
13608         mini-ppc.h: port to use the common local register allocator.
13609
13610 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
13611
13612         * mini.h: Remove the comment too then.
13613
13614 Tue Sep 26 14:02:58 CEST 2006 Paolo Molaro <lupus@ximian.com>
13615
13616         * mini.h: put back backend.data which is to be used shortly and
13617         doesn't increase the size of MonoInst. If any 64 bit arch aligned
13618         pointers on 4 byte boundaries it'd have much bigger issues running
13619         and you can ifdef it out anyway.
13620
13621 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
13622
13623         * mini.h (MonoInst): Remove backend.data field since it is unused and increases
13624         MonoInst size by 4 bytes on 64 bit machines.
13625
13626 Tue Sep 26 11:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
13627
13628         * *.{c,h,brg}: long due removal of the unused field in MonoInst and
13629         replacement with more meaningful field names. Arch maintainers, please
13630         check the assigned names are good enough for your arch.
13631
13632 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
13633
13634         * cpu-ia64.md mini-ia64.c inssel-ia64.brg mini-ops.h: Get rid of the 
13635         OP_IA64_FETCHADD opcodes, use OP_ATOMIC_ADD_IMM_NEW opcodes instead.
13636
13637 Mon Sep 25 11:05:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
13638
13639         * mini.h, driver.c, optflags-def.h, Makefile.am: reduce runtime
13640         relocations and memory requirements, put the optimization flags
13641         definitions in their own file.
13642
13643 2006-09-24  Zoltan Varga  <vargaz@gmail.com>
13644
13645         * jit-icalls.c (mono_helper_stelem_ref): Remove this unused helper function.
13646
13647         * mini.c (mini_init): Remove reference to mono_helper_stelem_ref.
13648
13649 2006-09-22  Zoltan Varga  <vargaz@gmail.com>
13650
13651         * mini-amd64.c (add_valuetype): Fix an uninitialized memory issue.
13652
13653 Thu Sep 21 19:06:09 CEST 2006 Paolo Molaro <lupus@ximian.com>
13654
13655         * inssel.brg: use the correct function to get the size of an item
13656         in an array, given an element class.
13657         * aot-compiler.c: do not access class->class_size directly.
13658
13659 Thu Sep 21 12:10:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
13660
13661         * mini.h, debug-mini.c: added a debugging function to print
13662         info about local variables and arguments in a jitted method.
13663
13664 2006-09-20  Zoltan Varga  <vargaz@gmail.com>
13665
13666         * mini-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
13667
13668         * exceptions-ia64.c: Fix some problems reported by Bill Seurer <seurer@us.ibm.com>.
13669
13670 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
13671
13672         * mini-ia64.c (mono_arch_call_opcode): Avoid using the same loop index in the
13673         inner and outer loops when passing vtypes.
13674
13675 Tue Sep 19 17:53:40 CEST 2006 Paolo Molaro <lupus@ximian.com>
13676
13677         * mini-ppc.c: take into account the cpu errata for cache flushing
13678         which caused some random errors (bug #79381).
13679
13680 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
13681
13682         * mini-amd64.c (mono_arch_emit_exceptions): Emit the call to 
13683         mono_arch_throw_corlib_exception using emit_call () too. Fixes #79271.
13684
13685 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
13686
13687         * aot-runtime.c (load_aot_module): Return immeditely if the AOT module was already
13688         loaded.
13689
13690         * exceptions-amd64.c (gregs_from_ucontext): Apply another patch from the
13691         freebsd ports tree.
13692
13693         * mini-amd64.c (emit_call): Avoid near calls on freebsd.
13694         (mono_arch_patch_code): Remove the unused handling of MONO_PATCH_INFO_CLASS_INIT.
13695
13696         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix check for 32 bitness of
13697         displacement.
13698
13699 2006-09-13  Zoltan Varga  <vargaz@gmail.com>
13700
13701         * aot-runtime.c (load_aot_module_from_cache): Fix PPC build.
13702
13703 2006-09-12  Zoltan Varga  <vargaz@gmail.com>
13704
13705         * mini.c (UNVERIFIED): Add a 'break-on-unverified' MONO_DEBUG option so this 
13706         macro does not have to be changed during debugging.
13707
13708         * 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>.
13709
13710         * cpu-pentium.md: Rename this to cpu-x86.md for consistency with other platforms.
13711
13712         * Makefile.am mini-x86.c mini-codegen.c: Rename pentium_desc to x86_desc.
13713         
13714         * mini.c (mini_get_ldelema_ins): Allow ldelema2d optimization if 
13715         MONO_ARCH_NO_EMULATE_MUL is defined.
13716
13717         * mini-ia64.h (MONO_ARCH_CALLEE_FREGS): Reserve f33 for use by instructions.
13718
13719         * mini-ia64.h: Define MONO_ARCH_NO_EMULATE_MUL.
13720
13721         * mini-ia64.c: Implement CEE_MUL based on gcc emitted code.
13722
13723         * mini-ia64.c (mono_arch_lowering_pass): Optimize store_membase_imm with offset==0.
13724         
13725 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
13726
13727         * mini-x86.h mini-amd64.h mini-exceptions.c: Move the bsd specific MAP_ANON
13728         stuff to mini-exceptions.c where it is used.
13729
13730         * mini-sparc.c (mono_arch_setup_jit_tls_data): Remove the duplicate altstack
13731         setup code, the real one is in mini-exceptions.c.
13732
13733         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Move all dependencies on the
13734         layout of ucontext_t to helper functions in exceptions-amd64.c, as on x86. Add
13735         some changes from the freebsd ports tree.
13736
13737         * mini-amd64.h exceptions-amd64.c: Fix the amd64 build. Get rid of the SC_
13738         constants.
13739         
13740         * mini-amd64.h: Freebsd has MAP_ANON instead of MAP_ANONYMOUS.
13741
13742 Mon Sep 11 13:18:55 CEST 2006 Paolo Molaro <lupus@ximian.com>
13743
13744         * mini.c: on Linux, check for /proc to be mounted
13745         (bug# 79351, novell bug#201204).
13746
13747 Mon Sep 11 13:10:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
13748
13749         * mini.c: handle cases where pthread_attr_getstack() behaves
13750         incorrectly (bug #78096).
13751
13752 Mon Sep 11 11:31:10 BST 2006 Paolo Molaro <lupus@ximian.com>
13753
13754         * mini-arm.c: support larger stack frames (bug #79272).
13755
13756 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
13757
13758         * aot-runtime.c (mono_aot_get_class_from_name): Remove a debug printf.
13759
13760         * aot-compiler.c: Add a hash table to the AOT file mapping class names to typedef 
13761         tokens.
13762
13763         * aot-runtime.c (mono_aot_get_class_from_name): New function used by 
13764         mono_class_from_name () to find a class from its name.
13765
13766         * mini.c (mini_init): Register mono_aot_get_class_from_name () with the runtime.
13767
13768 2006-09-07  Zoltan Varga  <vargaz@gmail.com>
13769
13770         * mini-amd64.c (emit_call): Avoid strstr () call if possible.
13771
13772 2006-09-05  Kornel Pal  <kornelpal@gmail.com>
13773
13774         * Makefile.am: Renamed mono-1.dll to mono.dll. (-avoid-version)
13775
13776 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
13777
13778         * mini.c (mono_icall_get_wrapper): Fix a race condition on initializing
13779         callinfo->trampoline.
13780
13781         * mini-amd64.c (emit_call): Special case calls to the vararg array icalls. Hopefully
13782         fixes #79271.
13783         (mono_arch_patch_code): Add some debug code to help track down similar failures in the
13784         future.
13785
13786 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
13787
13788         * aot-runtime.c (mono_aot_plt_resolve): Add an assert.
13789
13790 2006-09-02  Zoltan Varga  <vargaz@gmail.com>
13791
13792         * tramp-x86.c (mono_arch_create_specific_trampoline): Don't increase
13793         stats.method_trampolines, it is already done by the generic trampoline code.
13794
13795         * tramp-amd64.c (mono_arch_create_specific_trampoline): Ditto.
13796         
13797 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
13798
13799         * mini.c: Remove some references to mono_compile_aot, and use cfg->compile_aot instead.
13800
13801         * aot-runtime.c: Add some tweaks to the MONO_AOT_CACHE functionality.
13802
13803         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix a FIXME.
13804
13805         * mini.c (print_jit_stats): Print mscorlib mempool size too.
13806         
13807         * mini.c (print_jit_stats): Print new stats.
13808
13809         * *-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
13810
13811 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
13812
13813         * mini.c (mini_get_ldelema_ins): Fix verifier error when calling
13814         Address on two dimensional arrays. Fixes #78729.
13815
13816         * mini.h (MonoCompile): Add a 'skip_visibility' field.
13817
13818         * mini.c (method_to_ir): Disable visibility checks if skip_visibility is set on
13819         a method.
13820
13821         * mini-amd64.c (mono_arch_emit_exceptions): Fix assertion introduced by the last change.
13822
13823         * mini.c (mono_runtime_cleanup_handlers): Clean up signal handlers on unix. Fixes
13824         #79130.
13825         
13826         * mini.c (handle_array_new): Applied patch from "briaeros007". Fix
13827         a race condition.
13828         (mini_get_ldelema_ins): Ditto.
13829
13830 2006-08-30  Zoltan Varga  <vargaz@gmail.com>
13831
13832         * mini-amd64.c (mono_arch_emit_exceptions): Align fp constants to 16 bytes.
13833         (mono_arch_output_basic_block): Avoid unaligned accesses in FNEG implementation. 
13834         Fixes #79213.
13835
13836 2006-08-29 Neale Ferguson <neale@sinenomine.net>
13837
13838         * mini-s390.c, mini-s390x.c: Fix VARARG case processing with 0 arguments. Add
13839         mono_arch_get_patch_offset as a dummy entry point to allow successful link. 
13840
13841         * exceptions-s390x.c: Cosmetic change.
13842
13843         * tramp-s390.c: Fix warning.
13844
13845         * cpu-s390.md: Correct length of mul_imm.
13846
13847 Wed Aug 23 19:24:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
13848
13849         * aot-compiler.c: added binary writer with ELF backend
13850         implementation (only on Linux/x86 for now).
13851
13852 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
13853
13854         * Makefile.am: Don't run net 2.0 AOT tests.
13855
13856         * aot-compiler.c (compile_method): Skip methods with tail calls as well.
13857         (mono_compile_assembly): Skip net 2.0 assemblies as well.
13858
13859         * aot-runtime.c (load_patch_info): Fix an uninitialized memory error.
13860
13861 Fri Aug 18 19:38:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
13862
13863         * aot-compiler.c: simplified and refactored the asm-writing code
13864         to allow different backends.
13865
13866 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
13867
13868         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
13869
13870         * aot-compiler.c aot-runtime.c: Reorg the GOT slot allocation code a 
13871         little. Share patches of type TYPE_FROM_HANDLE as well.
13872
13873         * mini.c (mono_patch_info_equal): New helper function.
13874         (mono_patch_info_hash): Ditto.
13875
13876         * aot-compiler.c (emit_method_code): Fix s390 build.
13877
13878         * mini.c (mono_allocate_stack_slots_full): Fix yet another place where byref
13879         is not handled because it is stored as a flag and not as a type ctor. Fixes
13880         #79016.
13881
13882 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
13883
13884         * aot-compiler.c: Fix computation of GOT slot statistics.
13885         
13886         * aot-compiler.c aot-runtime.c: Implement sharing of GOT slots for classes/fields.
13887         Also remove support for not PIC AOT.
13888
13889         * mini.h: Bump AOT file format version.
13890
13891         * objects.cs: Add a test for #78990.
13892
13893         * mini-x86.c (mono_arch_output_basic_block): Applied patch from Peter Dettman
13894         (peter.dettman@iinet.net.au). Fixes #79087.
13895
13896         * basic-long.cs: Add a test for the above.
13897
13898 2006-08-16  Zoltan Varga  <vargaz@gmail.com>
13899
13900         * aot-compiler.c (get_got_offset): Add a cache for GOT entries, not yet used.
13901         
13902         * aot-compiler.c (get_plt_index): Add a cache for wrappers too. Simplify the
13903         code somewhat.
13904
13905 2006-08-15  Zoltan Varga  <vargaz@gmail.com>
13906
13907         * mini.c (mini_init): Fix registration of idiv/imul opcodes which can throw
13908         exceptions.
13909
13910 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
13911
13912         * mini.c: Don't verify COM proxy invoke calls
13913         
13914
13915 2006-08-10  Dick Porter  <dick@ximian.com>
13916
13917         * wapihandles.c (mini_wapi_seminfo): More info, to help track down
13918         which process is holding semaphores locked.
13919
13920 2006-08-08  Zoltan Varga  <vargaz@gmail.com>
13921
13922         * mini-ia64.c mini-amd64.c: Fix #79027.
13923
13924         * mini-sparc.c (mono_arch_call_opcode): Fix the previous patch.
13925
13926         * mini-sparc.c (mono_arch_call_opcode): Fix #79027.
13927
13928         * mini-x86.c (mono_arch_call_opcode): Handle the case where there are no
13929         implicit arguments in a vararg call. Fixes #79027.
13930
13931 2006-08-07  Zoltan Varga  <vargaz@freemail.hu>
13932
13933         * mini.c (mono_get_element_address_signature): Use CDECL calling convention on windows. Fixes #78969.
13934         (mono_get_array_new_va_signature): Ditto.
13935
13936 2006-08-05  Zoltan Varga  <vargaz@gmail.com>
13937
13938         * aot-runtime.c: Call init_plt lazily.
13939
13940         * inssel-long.brg: Fix unsigned long->int conversion.
13941
13942         * aot-runtime.c (init_plt): Remove a redundant make_writable () call.
13943
13944         * aot-compiler.c aot-runtime.c: Reorganize the file structure in the amd64 case so
13945         that most data is now in the .rss/.data section.
13946
13947 2006-08-04  Zoltan Varga  <vargaz@gmail.com>
13948
13949         * aot-compiler.c: Correct the computation of the 'direct-calls' statistic.      
13950
13951         * aot-compiler.c: Print the number of methods without GOT slots as a statistics.
13952
13953         * aot-compiler.c aot-runtime.c tramp-amd64.c: Resurrect amd64 AOT support.
13954
13955         * tramp-amd64.c (mono_arch_patch_callsite): Fix a warning.
13956
13957         * jit-icalls.c (mono_helper_compile_generic_method): Unbox vtypes since this is a
13958         virtual call. Fixes #79010.
13959
13960         * mini.c (mono_method_to_ir): Pass an additional out arg to compile_generic_method 
13961         and use the result as the this argument in the real call.
13962
13963         * generics.2.cs: Add a new test for #79010.
13964         
13965 2006-08-03  Zoltan Varga  <vargaz@gmail.com>
13966
13967         * mini-x86.c: Fix a warning.
13968
13969         * aot-compiler.c: Add a bunch of statistics.
13970
13971         * mini.c (inline_method): Disable inlining in out-of-line bblocks.
13972
13973 2006-08-02  Zoltan Varga  <vargaz@gmail.com>
13974
13975         * mini-arch.h Makefile.am mini-ops.h mini-codegen.c: More alpha updates.
13976
13977 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
13978
13979         * 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>.
13980
13981 2006-07-13  Miguel de Icaza  <miguel@novell.com>
13982
13983         * mini.c (mono_method_to_ir): Obtain the original method in the
13984         CIL stream and use this to perform validation.
13985
13986         Fixed: #78816
13987
13988 2006-07-19  Zoltan Varga  <vargaz@gmail.com>
13989
13990         * mini-x86.c (mono_arch_get_argument_info): Fix a warning.
13991         (mono_arch_call_opcode): Ditto.
13992
13993         * mini.c (mono_method_to_ir): Clear ins_flag at the end of CEE_CALL. Fixes
13994         #78826.
13995
13996         * mini.c (mono_patch_info_dup_mp): New helper function.
13997         
13998         * aot-compiler.c (compile_method): Fix some of the memory allocated during
13999         compilation. Fixes #78827.
14000
14001 2006-07-18  Kornel Pal  <kornelpal@gmail.com>
14002
14003         * declsec.c: Use original security informations for
14004           MONO_WRAPPER_MANAGED_TO_MANAGED.
14005
14006 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
14007
14008         * mini.c: Allow Com Interop methods/classes and
14009         don't verify COM wrapper calls
14010         
14011
14012 2006-07-13  Zoltan Varga  <vargaz@gmail.com>
14013
14014         * inssel-long32.brg: Fix long->i4 checked conversion.
14015
14016         * exceptions.cs: Add a test for the above.
14017
14018 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
14019
14020         * mini-exceptions.c (mono_setup_altstack): Fix a memory leak.
14021
14022         * mini.c: Applied patch from Joachim Ante (joe@otee.dk). Fix some shutdown 
14023         leaks.
14024
14025         * helpers.c (mono_disassemble_code): Avoid using fixed temporary files. Fixes
14026         #78775.
14027
14028 2006-07-03  Zoltan Varga  <vargaz@gmail.com>
14029
14030         * mini.c: Fix solaris/x86 exception handling.
14031
14032         * Makefile.am: Get rid of $(ICU_LIBS).
14033
14034 2006-07-02  Zoltan Varga  <vargaz@gmail.com>
14035
14036         * mini-exceptions.c: Fix handling of unhandled SIGSEGV exceptions on ia64.
14037         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Use MONO_INIT_CONTEXT_FROM_CURRENT.
14038         (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): Ditto.
14039
14040         * mini-ia64.h (MONO_CONTEXT_SET_FUNC): New macro.
14041
14042         * mini-exceptions.c (mono_handle_native_sigsegv): Prevent infinite loops if
14043         this function causes a SIGSEGV.
14044
14045 2006-06-22  Zoltan Varga  <vargaz@gmail.com>
14046
14047         * mini.c: Remove unused solaris/x86 includes.
14048
14049 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
14050
14051         * jit.h: Add G_BEGIN_DECLS/G_END_DECLS.
14052
14053 2006-06-20  Jb Evain  <jbevain@gmail.com>
14054
14055         * cpu-g4.md: fix max length of start_handler instruction.
14056
14057 2006-06-20  Massimiliano Mantione  <massi@ximian.com>
14058         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78656.
14059
14060 2006-06-16  Massimiliano Mantione  <massi@ximian.com>
14061         * ssa.c: Fixed bug 78653 for SSA based deadce.
14062         * mini.h: added MONO_INST_DEFINITION_HAS_SIDE_EFFECTS flag go
14063         MonoInst.flags, used in SSA based deadce.
14064         * aliasing.c: Fixed bug 78653 for "fastpath" deadce.
14065         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78653.
14066
14067 Thu Jun 15 16:52:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
14068
14069         * tramp-ppc.c: don't use malloc () for trampoline code, sometimes
14070         it can end up using non executable memory on ppc64 systems
14071         running ppc32 userspace (fix from Johannes Berg).
14072
14073 2006-06-14  Dick Porter  <dick@ximian.com>
14074
14075         * wapihandles.c: Fix a bunch of signed/unsigned warnings from gcc
14076         4.1.1
14077
14078 2006-06-13  Massimiliano Mantione  <massi@ximian.com>
14079         * mini.c: Made so that inline is locally disabled if it would
14080         trigger a .cctor, because too many apps depend on this behavior
14081         (which seems to be also the one of the MS CLR).
14082
14083 2006-06-13  Zoltan Varga  <vargaz@gmail.com>
14084
14085         * mini-amd64.c (mono_emit_stack_alloc): Fix initialization of localloc'ed memory.
14086         No idea why this worked before.
14087
14088         * branch-opts.c (mono_branch_optimize_exception_target): Avoid branches
14089         which branch to outer exception clauses since they could skip the
14090         inner finally clauses. Fixes #78633.
14091
14092         * exceptions.cs: Add a test for the above.
14093
14094         * mini.c (merge_basic_blocks): Nullify the branch at the end of the first bb.
14095         Fixes #78629.
14096
14097         * iltests.il: Add a test for the above.
14098
14099 2006-06-12  Zoltan Varga  <vargaz@gmail.com>
14100
14101         * mini.c (remove_block_if_useless): Do not remove the bblock immediately
14102         after the end of a try bblock, to prevent asserts in mini_method_compile ().
14103
14104         * iltests.il: Add a test for the above.
14105
14106 2006-06-10  Zoltan Varga  <vargaz@gmail.com>
14107
14108         * mini-ia64.c (mono_arch_lowering_pass): Remove some code duplication.
14109         
14110         * mini-ia64.c inssel-ia64.brg: Implement the new net 2.0 Interlocked.Add
14111         methods as instrinsics.
14112
14113 2006-06-09  Wade Berrier <wberrier@novell.com>
14114
14115         * Makefile.am: Fix sources list for svn rename so that make dist succeeds
14116         (simple-cee-ops.h ssapre-mini-ops.h)
14117
14118 2006-06-09  Neale Ferguson <neale@sinenomine.net>
14119
14120         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on s390/s390x.
14121         * mini-s390x.c, mini-s390.c: Correct ATOMIC operations (incorrect register for CS
14122         instruction).
14123         * mini-s390x.h, mini-s390.h: Simplify MCONTEXT_GET_BP.
14124         * cpu-s390x.md: Fix max. length values for a couple of instructions.
14125
14126 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
14127
14128         * mini-exceptions.c: Minor fix for building mono in Visual Studio.
14129
14130 2006-06-08  Massimiliano Mantione  <massi@ximian.com>
14131
14132         * ssapre-cee-ops.h: Renamed as "simple-cee-ops.h"
14133         * simple-cee-ops.h: Was "ssapre-cee-ops.h" (renamed).
14134         * ssapre-mini-ops.h: Renamed as "simple-mini-ops.h"
14135         * simple-mini-ops.h: Was "ssapre-mini-ops.h" (renamed).
14136         * local-propagation.c: In mono_cprop_invalidate_values use a whitelist
14137         of opcodes, so that bug 78549 should not happen again.
14138         * ssapre.c: Updated to use the renamed files.
14139
14140 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
14141
14142         * mini-amd64.c (mono_arch_output_basic_block): Fix a wrong reg-reg move 
14143         in OP_ATOMIC_EXCHANGE_I4.
14144
14145 2006-06-07  Wade Berrier <wberrier@novell.com>
14146
14147         * tramp-s390.c: Fix s390 build (add missing pointer declarations 
14148         in mono_debugger_create_notification_function)
14149
14150 2006-06-06  Zoltan Varga  <vargaz@gmail.com>
14151
14152         * mini.c (NEW_AOTCONST_TOKEN): Fix amd64 build.
14153         
14154         * mini.c (type_from_stack_type): Disable some changes which do not
14155         seem to work.
14156
14157         * driver.c: Reenable opts.
14158
14159         * mini.h (MonoStackSlot): New structure to keep track of the verification state
14160         of the evaluation stack.
14161         
14162         * mini.h (MonoBasicBlock): Add a 'stack_state' field to keep track of the
14163         evaluation stack trace at entry to the bblock.
14164
14165         * mini.c (merge_stacks): New function to perform verification of stack merges.
14166         Turned off by default.
14167
14168         * mini.c: Fill up ins->klass for instructions whose type is STACK_OBJ or
14169         STACK_MP.
14170         
14171 2006-06-06  Massimiliano Mantione  <massi@ximian.com>
14172
14173         * local-propagation.c: Fixed bug 78549.
14174
14175 2006-06-04  Zoltan Varga  <vargaz@gmail.com>
14176
14177         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on ia64.
14178
14179 2006-06-02  Miguel de Icaza  <miguel@novell.com>
14180
14181         * tramp-sparc.c, tramp-ppc.c, tramp-s390.c, tramp-s390x.c,
14182         tramp-arm.c, tramp-ia64.c
14183         (mono_debugger_create_notification_function): Update signature to
14184         new signature and use new protocol for creating the notification
14185         function.  
14186
14187         Should fix the build.
14188
14189 2006-06-02  Geoff Norton  <gnorton@customerdna.com>
14190
14191         * exceptions-ppc.c (mono_jit_walk_stack)
14192         (ves_icall_get_frame_info): Fix the build
14193
14194 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
14195
14196         * mini.c (mono_set_defaults): Fix the handling of -O=-all.
14197
14198 2006-05-31  Raja R Harinath  <rharinath@novell.com>
14199
14200         * il2tests.2.il: New file for generics CIL tests.  Add test for
14201         #78019.
14202         * Makefile.am: Update.
14203
14204         Fix #78019
14205         * mini.c (mono_method_to_ir): Don't apply box+brtrue optimization
14206         to nullable types.
14207
14208 2006-05-30  Massimiliano Mantione  <massi@ximian.com>
14209
14210         * aliasing.c: Fixed bug 78311.
14211
14212 2006-05-29  Martin Baulig  <martin@ximian.com>
14213
14214         * mini-exceptions.c (mono_find_jit_info): When computing the
14215         native offset, check whether we're actually inside the method's
14216         code; call mono_debug_print_stack_frame() to format the frame.
14217         (ves_icall_System_Exception_get_trace): Call
14218         mono_debug_print_stack_frame() to format the stack frame.
14219         (ves_icall_get_trace): Update to the new debugging API.
14220         (mono_jit_walk_stack_from_ctx): Likewise.
14221         (ves_icall_get_frame_info): Likewise.
14222
14223         * mini.c (get_method_from_ip): Use the new debugging API.
14224         (mono_print_method_from_ip): Likewise.
14225
14226         * exceptions-ppc.c
14227         (mono_jit_walk_stack): Use the new debugging API.
14228         (ves_icall_get_frame_info): Likewise.   
14229
14230 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
14231
14232         * mini-amd64.c (mono_arch_output_basic_block): Fix MONO_PROFILE_COVERAGE.
14233
14234 2006-05-25  Massimiliano Mantione  <massi@ximian.com>
14235
14236         * mini.c: Added "limitator" to inline for debugging.
14237
14238 2006-05-24  Martin Baulig  <martin@ximian.com>
14239
14240         * debug-debugger.c (mono_debugger_init): Create a private,
14241         malloc()-based code manager for the notification function and
14242         intentionally leak it on exit.  This fixes the crash-on-exit race
14243         condition.
14244
14245         * tramp-amd64.c
14246         (mono_debugger_create_notification_function): Added
14247         `MonoCodeManager *' argument.
14248
14249         * tramp-x86.c
14250         (mono_debugger_create_notification_function): Added
14251         `MonoCodeManager *' argument.
14252
14253 2006-05-23  Massimiliano Mantione  <massi@ximian.com>
14254
14255         * aliasing.c: Fixed 64 bit issue.
14256         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
14257         default since all known bugs are fixed (one more time!).
14258
14259 Tue May 23 13:47:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
14260
14261         * mini.c: write barrier support.
14262
14263 2006-05-23  Martin Baulig  <martin@ximian.com>
14264
14265         * debug-debugger.c: Revert Paolo's change.  Add comment and #error
14266         check at the top of the file.
14267
14268 Sun May 21 12:22:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
14269
14270         * debug-debugger.c: fix the build. Again. Hopefully Martin will stop
14271         reverting changes without reason and without changelog entries.
14272
14273 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
14274
14275         * mini-sparc.c (mono_arch_output_basic_block): Add support for large stack offets
14276         to a few opcodes. Fixes #78439.
14277
14278         * mini-sparc.c: Rename mono_sparch_break () to mono_arch_break () to improve
14279         consistency with other archs.
14280
14281         * mini-ia64.c (mono_arch_emit_prolog): Remove debug stuff left in by mistake.
14282
14283 Wed May 17 18:07:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
14284
14285         * debug-debugger.c: fix the build.
14286
14287 2006-05-17  Martin Baulig  <martin@ximian.com>
14288
14289         * debug-debugger.c
14290         (debugger_thread_vtable): Moved here from ../metadata/threads.c.
14291         (debugger_init_threads): Formerly known as mono_debugger_init_threads().
14292         (debugger_finalize_threads): Formaly known as mono_debugger_finalize_threads().
14293         (debugger_attach): Call GC_mono_debugger_add_all_threads().
14294
14295 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
14296
14297         * mini.c (mini_init): Call pthread_attr_destroy () to fix a small memory leak.
14298
14299 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
14300
14301         * mini-x86.c (mono_arch_instrument_epilog): Fix handling of 
14302         MONO_TYPE_GENERICINST.
14303         
14304         * mini-amd64.c (mono_arch_instrument_epilog): Fix handling of 
14305         MONO_TYPE_GENERICINST.
14306
14307 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
14308
14309         * mini-x86.c (mono_arch_get_vcall_slot_addr): Add a missing call sequence. Fixes
14310         #78325.
14311
14312 2006-05-08  Zoltan Varga  <vargaz@gmail.com>
14313
14314         * mini.c (mono_create_jump_trampoline): Allocate MonoJitInfo from the domain
14315         mempool.
14316         (mono_jit_free_method): Remove the method from jump_trampoline_hash as well.
14317
14318 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
14319
14320         * mini.c (mini_cleanup): Applied patch from Joachim Ante (joe@otee.dk). Call
14321         mono_trace_cleanup ().
14322
14323         * iltests.il: Fix problem with the newly added test.
14324
14325         * mini-codegen.c (mono_local_regalloc): When changing the dreg of an instruction
14326         due to register constraints, free up the previous hreg. Fixes #78314.
14327
14328         * iltests.il: Add new test for #78314.  
14329
14330         * mini-x86.c (mono_arch_get_inst_for_method): Use OP_ATOMIC_ADD_NEW_I4 for
14331         Interlocked.Add. Fixes #78312.
14332
14333         * mini-amd64.c (mono_arch_get_inst_for_method): Ditto.
14334         
14335 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
14336
14337         * inssel.brg (mini_emit_virtual_call): Fix a warning.
14338
14339 2006-05-05  Martin Baulig  <martin@ximian.com>
14340
14341         * debug-mini.c (mono_debug_open_block): New method.
14342
14343         * mini-amd64.c
14344         (mono_arch_output_basic_block): Call mono_debug_open_block() at
14345         the beginning of each basic block.
14346
14347         * mini-x86.c
14348         (mono_arch_output_basic_block): Call mono_debug_open_block() at
14349         the beginning of each basic block.
14350
14351 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
14352
14353         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
14354         default until I understand why they break the build on amd64.
14355
14356 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
14357
14358         * mini.c (mini_cleanup): Call mono_cleanup ().
14359
14360         * mini.c (UNVERIFIED): New macro to make it easier to track down verification
14361         errors.
14362
14363 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
14364
14365         * aliasing.c: Fixed shameful cut&paste error that caused JIT crashes.
14366         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
14367         default since all known bugs are fixed, and I cannot reproduce bug
14368         77944... I'm asking Matt Hargett to test again after this commit.
14369
14370 2006-04-28  Massimiliano Mantione  <massi@ximian.com>
14371
14372         * mini-codegen.c: Fixed typo that thrashed inline.
14373
14374 2006-04-28  Zoltan Varga  <vargaz@gmail.com>
14375
14376         * dominators.c (compute_dominators): Avoid using a worklist since
14377         it is not correct in some cases. Instead, iterate over all bblocks as
14378         in the original paper. Fixes --compile-all -O=all System.Xml.dll.
14379
14380 2006-04-28  Miguel de Icaza  <miguel@novell.com>
14381
14382         * mini.c (mono_jit_compile_method_inner): Use
14383         mono_prepare_exception_from_error that resets the value
14384         internally.
14385
14386 2006-04-27  Miguel de Icaza  <miguel@novell.com>
14387
14388         * mini.c: Move the mini_loader_error_to_exception to metadata. 
14389         
14390 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
14391
14392         * aliasing.c: Fixed bug 78210.
14393
14394 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
14395
14396         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
14397         default until all their problems (or the ones they trigger) are fixed.
14398
14399 2006-04-26  Zoltan Varga  <vargaz@gmail.com>
14400
14401         * aot-runtime.c (mono_aot_get_method_from_token_inner): Fix the previous patch.
14402         
14403         * aot-runtime.c (mono_aot_get_method_from_token_inner): Mark the method
14404         as loaded only after resolving patches since that could invoke the same method.
14405
14406         * aot-runtime.c (mono_aot_plt_resolve): Fix ppc etc. builds.
14407
14408         * aot-compiler.c: Refactor mono_aot_compile_aot () into a bunch of smaller
14409         functions.
14410
14411         * aot-runtime.c (init_plt): Use a normal trampoline to transfer code to the
14412         AOT loader.
14413
14414         * aot-compiler.c (emit_plt): Pass the plt offset in %eax instead of on the
14415         stack.
14416
14417         * mini-trampolines.c (mono_aot_plt_trampoline): New trampoline to handle calls
14418         made from AOT code through the PLT table.
14419
14420         * mini-x86.h mini-amd64.h: Define MONO_ARCH_AOT_PLT_OFFSET_REG to the register
14421         holding the plt offset when a call is made to the aot plt trampoline.
14422         
14423 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
14424
14425         * aot-runtime.c aot-compiler.c cpu-amd64.md mini-amd64.c: Update parts of the 
14426         amd64 AOT support.
14427
14428         * Makefile.am (common_sources): Fix build breakage.
14429
14430         * aot-runtime.c aot-compiler.c: Reorganize the AOT code yet again: Make all
14431         calls through a jump table similar to the ELF PLT table. Avoid indirect calls for
14432         intra-assembly calls if possible.
14433         
14434         * tramp-*.c: Add new functions for patching/nullifying PLT entries.
14435
14436         * mini-trampolines.c: Handle PLT entries.
14437
14438         * mini.c: Avoid creating a GOT var for calls.
14439
14440         * jit-icalls.c (helper_ldstr_mscorlib): New helper function for loading strings
14441         from mscorlib code.
14442
14443         * jit-icalls.c (helper_newobj_mscorlib): New helper function to create objects
14444         from mscorlib code.
14445
14446         * mini.c (mono_method_to_ir): Use the new helper functions in throw bblocks in
14447         AOT code.       
14448
14449         * mini.h: Bump AOT file format version.
14450         
14451         * mini.c (get_basic_blocks): Fix the calculation of bb->out_of_line so it
14452         covers more cases.
14453
14454 2006-04-25  Martin Baulig  <martin@ximian.com>
14455
14456         * driver.c: Disable copyprop, consprop and inline when running
14457         inside the debugger.
14458
14459 2006-04-25  Martin Baulig  <martin@ximian.com>
14460
14461         * debug-debugger.h (MonoDebuggerInfo): Replaced `get_thread_id'
14462         with `get_current_thread' and added `detach'.
14463         (MonoDebuggerMetadataInfo): Added `thread_size',
14464         `thread_tid_offset', `thread_stack_ptr_offset' and
14465         `thread_end_stack_offset'.
14466
14467 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
14468
14469         * aot.c Makefile.am: Split aot.c into two new files aot-compiler.c and 
14470         aot-runtime.c.
14471
14472         * inssel.brg (mini_emit_load_intf_reg_vtable): Use a new kind of AOT constant
14473         ADJUSTED_IID to avoid the need for adjusting the IID at runtime.
14474
14475         * mini.h (MonoJumpInfoType): Add MONO_PATCH_INFO_ADJUSTED_IID.
14476
14477         * mini.c (mono_resolve_patch_target): Handle ADJUSTED_IID.
14478
14479         * aot.c: Add support for ADJUSTED_IID.  
14480
14481 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
14482
14483         * aot.c (emit_method_order): Don't align method_order_end.
14484
14485         * inssel.brg (stmt): Fix interface calls in AOT code which got broken by
14486         the interface ID changes.
14487
14488 2006-04-21  Dick Porter  <dick@ximian.com>
14489
14490         * mini.c (mini_thread_cleanup): Clear the JIT TLS data when
14491         cleaning up a thread.  Fixes the new part of bug 77470.
14492
14493 2006-04-20  Geoff Norton  <gnorton@customerdna.com>
14494
14495         * mini-ppc.c: Call mono_jit_thread_attach when transitioning a native
14496         to managed wrapper.
14497                      
14498 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
14499
14500         * mini.h mini.c: Remove mono_type_to_ldind/stind () which are now in marshal.c.
14501         
14502         * mini.c (mono_runtime_install_handlers): Handle SIGABRT similarly to
14503         SIGSEGV. Fixes #78072.
14504
14505         * mini-exceptions.c (mono_handle_native_sigsegv): Add a 'signal' argument,
14506         unregister our SIGABRT handler.
14507
14508 2006-04-19  Massimiliano Mantione  <massi@ximian.com>
14509
14510         * mini.c: Disabled inline where it can alter the call stack in a
14511         way visible from managed code.
14512         * driver.c: enabled inline,consprop,copyprop,treeprop,deadce by
14513         default.
14514
14515 2006-04-16  Zoltan Varga  <vargaz@gmail.com>
14516
14517         * mini-amd64.c (mono_arch_emit_prolog): Attach the thread to the runtime as it is done
14518         on other platforms. Fixes #78089.
14519
14520 2006-04-13  Martin Baulig  <martin@ximian.com>
14521
14522         * driver.c: Also check a `MONO_INSIDE_MDB' environment variable to
14523         determine whether we're inside the debugger.
14524
14525         * debug-debugger.h
14526         (MonoDebuggerMetadataInfo): Added all offsets from `MonoDefaults'.
14527
14528 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
14529
14530         * mini.c (mono_method_to_ir): Handle multiple LEAVE statements inside a single
14531         handler clauses. Fixes #78024.
14532
14533         * mini-sparc.c (mono_arch_output_basic_block): Handle large offsets
14534         in the CALL_MEMBASE opcodes. Fixes #78088.
14535         (mono_arch_get_vcall_slot_addr): Ditto.
14536
14537 2006-04-10  Martin Baulig  <martin@ximian.com>
14538
14539         * debug-debugger.c: The thread handling code has now been moved
14540         into ../metadata/threads.c.
14541
14542 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
14543
14544         * driver.c (mono_main): Fix --with-gc=none build.
14545
14546         * mini-codegen.c (mono_spillvar_offset): Improve alignment.
14547         (mono_spillvar_offset_float): Ditto.
14548         (mono_local_regalloc): Only do the OP_MOVE optimization if ins->dreg is a local
14549         hreg, not when its !global, since on ia64, there is a third category: stacked
14550         registers.      
14551
14552 Mon Apr 10 14:39:49 CEST 2006 Paolo Molaro <lupus@ximian.com>
14553
14554         * mini.c: set MonoInst->klass for load field address and a few other
14555         places.
14556
14557 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
14558
14559         * helpers.c (mono_disassemble_code): Emit debug info on amd64 as well.
14560
14561 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
14562
14563         * dominators.c (compute_dominators): Fix yet another bug which surfaced after
14564         the branch opt changes.
14565
14566 2006-04-06  Dick Porter  <dick@ximian.com>
14567
14568         * wapihandles.c (mini_wapi_semdel): Fix parameters in semctl () call.
14569         
14570         * wapihandles.c (mini_wapi_seminfo): 
14571         * driver.c (mono_main): Add semaphore info option
14572
14573 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
14574
14575         * dominators.c (compute_dominators): Fix a bug which surfaced after the recent
14576         branch optimization changes. Fixes #78009.
14577
14578 Wed Apr 5 16:40:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
14579
14580         * mini.c: ignore accessibility of methods in managed->native wrappers.
14581
14582 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
14583
14584         * mini.c (mini_cleanup): Call print_jit_stats () earlier since it accesses metadata.
14585         
14586         * mini.c (mini_cleanup): Free 'emul_opcode_map' as well.
14587
14588 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
14589
14590         * mini.c: Modify the branch optimizations to preserve the invariant that
14591         the entries inside the in_bb and out_bb arrays are unique.
14592         (mono_unlink_bblock): Avoid creation of new arrays.
14593
14594 2006-04-02  Zoltan Varga  <vargaz@gmail.com>
14595
14596         * mini.c (mono_unlink_bblock): Fix regression caused by previous
14597         change (#77992).
14598
14599 2006-04-01  Zoltan Varga  <vargaz@gmail.com>
14600
14601         * mini.c (optimize_branches): Remove the "optimizations" in
14602         the cbranch1/cbranch2 -> branch cases which were causing several
14603         problems in the past. Fixes #77986.
14604
14605 2006-03-31  Chris Toshok  <toshok@ximian.com>
14606
14607         * driver.c (DEFAULT_OPTIMIZATIONS): back out the new set of
14608         default optimizations :(
14609
14610 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
14611
14612         * inssel-x86.brg mini-codegen.c mini.c: Merge some changes/fixes from linear-il
14613         branch.
14614
14615 2006-03-31  Massimiliano Mantione  <massi@ximian.com>
14616
14617         * local-propagation.c: Added comments to structs and removed
14618         "Mono" prefixes from local tree mover types.
14619
14620 2006-03-30  Zoltan Varga  <vargaz@gmail.com>
14621
14622         * Makefile.am (arch_sources): Define this for each architecture so 
14623         libmono_la_SOURCES is defined in one place.
14624
14625 Wed Mar 29 20:51:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
14626
14627         * driver.c, wapihandles.c, Makefile.am: integrate the io-layer utils
14628         from handles/.
14629
14630 Wed Mar 29 17:16:57 CEST 2006 Paolo Molaro <lupus@ximian.com>
14631
14632         * driver.c: print the GC name supplied by configure.
14633
14634 2006-03-29  Massimiliano Mantione  <massi@ximian.com>
14635
14636         * local-propagation.c: Added tree mover, and moved here all the
14637         local propagation code from mini.c
14638         * mini.c: Added support for treeprop, and moved all the local
14639         propagation code to local-propagation.c
14640         * mini.h: Added support for treeprop
14641         * driver.c: Added support for treeprop, enabled consprop, copyprop,
14642         treeprop, inline and deadce by default
14643         * Makefile.am: Added local-propagation.c
14644
14645 2006-03-25  Zoltan Varga  <vargaz@gmail.com>
14646
14647         * exceptions-sparc.c: Applied patch from David S. Miller  <davem@sunset.davemloft.net>: Implement correct support for sparc/linux.
14648
14649 Fri Mar 24 20:07:19 CET 2006 Paolo Molaro <lupus@ximian.com>
14650
14651         * debug-debugger.c: make it compile without the Boehm GC.
14652
14653 Wed Mar 22 18:25:18 CET 2006 Paolo Molaro <lupus@ximian.com>
14654
14655         * mini.c: fixed issue with mismatch when an icall is registered
14656         with multiple names but same address.
14657
14658 Tue Mar 21 15:59:57 CET 2006 Paolo Molaro <lupus@ximian.com>
14659
14660         * declsec.c, mini-exceptions.c: use write barrier to set reference
14661         fields of managed objects.
14662
14663 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
14664
14665         * mini.c (mono_print_method_from_ip): Recognize JIT trampolines as well.
14666         (can_access_internals): Fix a warning.
14667
14668         * mini.c (print_method_from_ip): Rename this to 
14669         mono_print_method_from_ip so it gets exported.
14670
14671         * trace.c: Deal with strings inside StringBuilder's containing garbage
14672         and fix memory leaks. Fixes #77848.
14673
14674 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
14675
14676         * mini.c (mini_init): Disable the setting of GC_stackbottom on ia64. Hopefully
14677         fixes #77787.
14678
14679 2006-03-16 Neale Ferguson <neale@sinenomine.net>
14680         
14681         * mini-s390.c: Remove OP_X86_TEST_NULL.
14682
14683 Thu Mar 16 17:19:04 CET 2006 Paolo Molaro <lupus@ximian.com>
14684
14685         * mini.c: use the correct GetHashCode() for the moving collector.
14686
14687 2006-03-16  Massimiliano Mantione  <massi@ximian.com>
14688
14689         * liveness.c: Regalloc spill cost tuning.
14690
14691 2006-03-15 Neale Ferguson <neale@sinenomine.net>
14692         
14693         * mini-s390x.h: Correct S390_LONG macro.
14694
14695         * mini-s390x.c: Cleanup unused code.
14696
14697 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
14698
14699         * jit-icalls.h: New file.
14700
14701         * Makefile.am mini.c jit-icalls.c: Use a proper include file for the jit
14702         icalls and include that instead of including jit-icalls.c.
14703
14704         * mini-ppc.c (mono_arch_output_basic_block): Remove references to
14705         OP_X86 opcodes.
14706
14707 Tue Mar 14 20:23:53 CET 2006 Paolo Molaro <lupus@ximian.com>
14708
14709         * mini.c: when checking for member accessibility, also check for
14710         friend assemblies and for explicit interface implementations.
14711
14712 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
14713
14714         * mini-codegen.c (mono_local_regalloc): Remove incorrect g_free () calls.
14715
14716         * cpu-arm.md cpu-g4.md: Remove x86_ opcodes.
14717
14718         * mini-x86.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
14719         common cases are done first.    
14720
14721         * mini-ops.h: Only define platform specific opcodes on the given platform.
14722
14723         * mini.h regalloc.h mini-codegen.c: Merge optimizations from the linear-il
14724         branch.
14725         
14726 2006-03-14  Martin Baulig  <martin@ximian.com>
14727
14728         Revert Paolo's change from r57348:
14729
14730         * mini.h: don't use gboolean for bitfields.
14731         * mini.c: verifier changes for fields and methods accessibility.
14732
14733 2006-03-13  Neale Ferguson <neale@sinenomine.net>
14734
14735         * mini-s390.h, mini-s390x.h: Fix calls to mono_call_inst_add_outarg_reg.
14736
14737         * mini-s390x.c: Fix conv_r_un.
14738
14739         * cpu-s390, cpu-s390x.md: Fix lengths.
14740
14741 Sun Mar 12 17:31:22 CET 2006 Paolo Molaro <lupus@ximian.com>
14742
14743         * mini.c: nested types have access to all the nesting
14744         levels, not just the enclosing types.
14745
14746 Sun Mar 12 16:23:11 CET 2006 Paolo Molaro <lupus@ximian.com>
14747
14748         * mini.c: added a few more verification checks.
14749
14750 2006-03-12  Zoltan Varga  <vargaz@gmail.com>
14751
14752         * liveness.c: Merge optimizations from the linear-il branch.
14753
14754 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
14755
14756         * mini-ia64.c (emit_call): Add a comment.
14757
14758         * tramp-ia64.c (mono_arch_patch_callsite): Handle indirect calls as well.
14759
14760         * tramp-ia64.c: Fix some warnings.
14761
14762 Sat Mar 11 20:15:59 CET 2006 Paolo Molaro <lupus@ximian.com>
14763
14764         * mini.h: don't use gboolean for bitfields.
14765         * mini.c: verifier changes for fields and methods accessibility.
14766
14767 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
14768
14769         * mini.c (mono_icall_get_wrapper): Fix an ia64 bug introduced by the
14770         lazy icall wrapper changes.
14771
14772         * dominators.c: Replace all the dominator algorithms with faster
14773         ones from the linear-il branch.
14774
14775         * inssel-*.brg: Allocate call->out_ireg_args and call->out_freg_args from
14776         the mempool.
14777
14778         * mini-amd64.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
14779         common cases are done first.
14780
14781         * mini-amd64.c: Fix some warnings.
14782
14783         * mini-codegen.c mini-*.c: Allocate call->out_ireg_args and call->out_freg_args
14784         from the mempool.
14785
14786         * mini.c (mono_jit_compile_method_with_opt): Fix a race in the newly
14787         added code.
14788
14789         * mini.h: Add a missing prototype.
14790
14791 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
14792
14793         * mini.c: Compile icall wrappers lazily.
14794
14795         * mini-codegen.c: Use printf instead of g_print since its much faster.
14796
14797         * mini.h (mono_bitset_foreach_bit): Use the faster mono_bitset_find_start ()
14798         function.
14799
14800         * mini.c (optimize_branches): Cache the negative result from 
14801         remove_block_if_useless ().
14802
14803         * mini.c (optimize_branches): Avoid restarting the iteration after each change. 
14804         Also fix some bblock linking issues.
14805
14806         * helpers.c (mono_disassemble_code): Reduce the size of the temporary
14807         assembly files.
14808
14809         * mini.h: Define G_LIKELY/G_UNLIKELY macros for older glib versions.
14810
14811         * mini.h (MonoBasicBlock): Reorganize the fields, putting more frequently
14812         accessed fields first, for better cache behavior.
14813         
14814 Fri Mar 10 18:21:41 CET 2006 Paolo Molaro <lupus@ximian.com>
14815
14816         * mini.c: speedup IList<T> array accesses.
14817
14818 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
14819
14820         * mini.c (mono_method_to_ir): Handle large methods overflowing the 
14821         inline_costs counter. Fixes #77190.
14822
14823 2006-03-06  Zoltan Varga  <vargaz@gmail.com>
14824
14825         * mini-exceptions.c: Call mono_trace_is_enabled () before printing
14826         trace messages. Fixes #77706.
14827
14828 2006-03-04  Martin Baulig  <martin@ximian.com>
14829
14830         * tramp-amd64.c, tramp-x86.c
14831         (mono_debugger_create_notification_function): Use
14832         mono_global_codeman_reserve() to allocate a buffer at runtime and
14833         return it.
14834
14835         * debug-debugger.h (MonoDebuggerInfo): Added `initialize'.
14836
14837         * debug-debugger.c (mono_debugger_init): Dynamically allocate the
14838         notification function at runtime and then call `initialize' in the
14839         `MONO_DEBUGGER__debugger_info' vtable.
14840
14841 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
14842
14843         * iltests.il: Fix a visibility problem.
14844
14845 Wed Mar 1 15:55:25 CET 2006 Paolo Molaro <lupus@ximian.com>
14846
14847         * driver.c, mini.c: add hooks for the counters API.
14848
14849 Wed Mar 1 12:28:04 CET 2006 Paolo Molaro <lupus@ximian.com>
14850
14851         * driver.c: show disabled options.
14852
14853 Wed Mar 1 12:18:51 CET 2006 Paolo Molaro <lupus@ximian.com>
14854
14855         * linear-scan.c: always use cost-driven selection.
14856
14857 2006-02-28  Raja R Harinath  <rharinath@novell.com>
14858
14859         * jit-icalls.c (helper_compile_generic_method): Revert change from
14860         2006-02-24.
14861
14862 Mon Feb 27 18:58:19 GMT 2006 Paolo Molaro <lupus@ximian.com>
14863
14864         * cpu-arm.md, mini-arm.c: implemented MemoryBarrier.
14865
14866 Sat Feb 25 17:39:21 CET 2006 Paolo Molaro <lupus@ximian.com>
14867
14868         * inssel.brg: style fixes, mostly to force the updated monoburg
14869         to run for people using svn.
14870
14871 Sat Feb 25 17:07:42 CET 2006 Paolo Molaro <lupus@ximian.com>
14872
14873         * mini.c: match monoburg changes.
14874
14875 Sat Feb 25 16:04:33 CET 2006 Paolo Molaro <lupus@ximian.com>
14876
14877         * mini.h, mini.c, abcremoval.c, aliasing.c, liveness.c,
14878         ssapre.c, graph.c, ssa.c: put the mono_burg_arity[]
14879         declaration in the header file.
14880
14881 Sat Feb 25 14:19:31 CET 2006 Paolo Molaro <lupus@ximian.com>
14882
14883         * helpers.c: reduce relocations and mem usage.
14884
14885 Sat Feb 25 11:58:16 CET 2006 Paolo Molaro <lupus@ximian.com>
14886
14887         * mini.h, mini-codegen.c: disable logging features if
14888         requested by configure.
14889
14890 Sat Feb 25 11:54:49 CET 2006 Paolo Molaro <lupus@ximian.com>
14891
14892         * mini.c: tiny verifier changes.
14893
14894 Fri Feb 24 18:17:52 CET 2006 Paolo Molaro <lupus@ximian.com>
14895
14896         * mini-ops.h, inssel-x86.brg, tramp-x86.c, mini-x86.c,
14897         cpu-pentium.md: stack alignment changes for osx/x86,
14898         partially from Geoff Norton <gnorton@customerdna.com>.
14899
14900 2006-02-24  Raja R Harinath  <harinath@gmail.com>
14901
14902         * jit-icalls.c (helper_compile_generic_method): Update to changes
14903         in metadata/class.c.
14904
14905 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
14906         
14907         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a missing check.
14908         
14909         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for
14910         interface calls with large offsets.
14911
14912 2006-02-23  Raja R Harinath  <rharinath@novell.com>
14913
14914         * jit-icalls.c (helper_compile_generic_method): Document the
14915         special-case we depend on so that we can inflate the method twice
14916         with the same context with no bad side-effects.
14917
14918 Thu Feb 23 13:45:46 CET 2006 Paolo Molaro <lupus@ximian.com>
14919
14920         * mini-x86.c, mini-amd64.c: fix for case when xen support
14921         is disabled.
14922
14923 Wed Feb 22 19:38:40 CET 2006 Paolo Molaro <lupus@ximian.com>
14924
14925         * mini-x86.c, mini-amd64.c: generate code to access tls items
14926         in a faster way for Xen systems.
14927
14928 Wed Feb 22 10:31:25 CET 2006 Paolo Molaro <lupus@ximian.com>
14929
14930         * exceptions-x86.c, mini-x86.h, driver.c, mini-codegen.c:
14931         updates and compilation fixes for the OSX/x86 port, mostly from
14932         Geoff Norton <gnorton@customerdna.com>.
14933
14934 Tue Feb 21 19:56:55 CET 2006 Paolo Molaro <lupus@ximian.com>
14935
14936         * inssel.brg: faster interface call implementation
14937         to sync with the interface_offsets MonoVTable changes.
14938
14939 Mon Feb 20 10:37:57 CET 2006 Paolo Molaro <lupus@ximian.com>
14940
14941         * mini.c: more verification checks.
14942
14943 Fri Feb 17 19:47:29 CET 2006 Paolo Molaro <lupus@ximian.com>
14944
14945         * mini.c: added a few more verification checks.
14946
14947 2006-02-17      Neale Ferguson <neale@sinenomine.net>
14948
14949         * mini-s390x.c, mini-s390x.h: Check for presence of long displacement
14950         facility on the processor and use it if available.
14951
14952 Fri Feb 17 16:12:52 CET 2006 Paolo Molaro <lupus@ximian.com>
14953
14954         * driver.c, aot.c, mini.c: throw exception if the IL code is
14955         invalid or unverifiable.
14956
14957 2006-02-17  Raja R Harinath  <rharinath@novell.com>
14958
14959         * generics.2.cs (test_0_ldfld_stfld_mro): Use m.struct_field, not
14960         m.StructField.
14961
14962 2006-02-16  Zoltan Varga  <vargaz@gmail.com>
14963
14964         * generics.2.cs: Add some tests for generics ldfld/stfld wrappers.
14965
14966 Wed Feb 15 16:23:17 CET 2006 Paolo Molaro <lupus@ximian.com>
14967
14968         * mini-s390x.c, mini-s390.c, mini.c, mini-amd64.c, mini-arm.c,
14969         mini-ia64.c, mini-sparc.c, mini-x86.c, mini-ppc.c: fixed
14970         handling of instantiated generic valuetypes.
14971
14972 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
14973
14974         * mini-exceptions.c mini-x86.h mini-x86.c: Get rid of 
14975         MONO_INIT_CONTEXT_FROM_CALLER, and use MONO_INIT_CONTEXT_FROM_FUNC
14976         instead.
14977
14978         * generics.2.cs: Revert the nullable reftypes tests.
14979
14980 2006-02-10  Zoltan Varga  <vargaz@gmail.com>
14981
14982         * mini-exceptions.c (MONO_INIT_CONTEXT_FROM_CALLER): Avoid
14983         using __builtin_frame_address (1) as it doesn't work in the presence
14984         of optimizations. Hopefully fixes #77273.
14985
14986         * Makefile.am generics.cs generics.2.cs: Revert the generics.2.cs
14987         -> generics.cs change as it doesn't work with some automake versions.
14988
14989 Thu Feb 9 16:24:44 CET 2006 Paolo Molaro <lupus@ximian.com>
14990
14991         * mini.c: handle systems that sue a different way to
14992         retrieve the stack address of the current thread.
14993
14994 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
14995
14996         * Makefile.am generics.2.cs: Rename this to generics.cs and handle
14997         it specially in the makefile.
14998
14999         * generics.2.cs: Add tests for nullable reference types.
15000
15001 Wed Feb 8 19:33:17 CET 2006 Paolo Molaro <lupus@ximian.com>
15002
15003         * mini.c: always handle the case when mono_jit_init()
15004         is called in a thread different from the main thread,
15005         confusing libgc (bug #77309).
15006
15007 Mon Feb 6 09:01:24 EST 2006 Paolo Molaro <lupus@ximian.com>
15008
15009         * mini-ppc.c: fix handling of exceptions in large methods (bug #74932).
15010
15011 Fri Feb 3 18:51:35 CET 2006 Paolo Molaro <lupus@ximian.com>
15012
15013         * mini.c: change optimize_branches () to use a single loop
15014         and introduce a new optimization to simplify some range checks.
15015
15016 2006-02-03  Martin Baulig  <martin@ximian.com>
15017
15018         * debug-debugger.c (debugger_thread_manager_thread_created): Removed
15019         and merged with debugger_thread_manager_add_thread().
15020         (mono_debugger_main): Call debugger_thread_manager_add_thread() to
15021         inform the debugger about the main thread.
15022
15023 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
15024
15025         * basic.cs: Add test for div.un/rem.un constant folding.
15026
15027 2006-02-03  Neale Ferguson <neale@sinenomine.net>
15028
15029         * cpu-s390x.md: correct int_xor_imm length
15030
15031 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
15032
15033         * generics.2.cs: New test for #77442.
15034
15035         * jit-icalls.c (helper_compile_generic_method): Check for null. Fixes
15036         #77442.
15037
15038 2006-02-02  Martin Baulig  <martin@ximian.com>
15039
15040         * tramp-x86.c, tramp-amd64.c: It's now safe to #include
15041         <mono/metadata/mono-debug-debugger.h>   
15042
15043         * debug-mini.c: Don't #define _IN_THE_MONO_DEBUGGER.
15044
15045 2006-02-02  Martin Baulig  <martin@ximian.com>
15046
15047         * debug-debugger.h: New header file for debug-debugger.c.
15048
15049         * debug-debugger.c: Big API cleanup; don't run the managed Main()
15050         function is a separate thread anymore; add support for attaching.
15051
15052 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
15053
15054         * tramp-x86.c: Fix a warning.
15055
15056 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
15057
15058         * mini-amd64.c (mono_arch_compute_omit_fp): Avoid hitting an assertion
15059         on very large methods.
15060
15061         * aot.c (load_patch_info): Fix a warning.
15062
15063 Mon Jan 30 12:51:10 CET 2006 Paolo Molaro <lupus@ximian.com>
15064
15065         * cpu-pentium.md, mini-x86.c, inssel.brg, inssel-x86.brg,
15066         mini-ops.h: alu membase optimizations.
15067
15068 Fri Jan 27 21:11:08 CET 2006 Paolo Molaro <lupus@ximian.com>
15069
15070         * mini-ops.h, mini.c, inssel.brg, inssel-x86.brg: opcode
15071         to speedup StringBuilder.
15072
15073 2006-01-27  Zoltan Varga  <vargaz@gmail.com>
15074
15075         * dominators.c (mono_compute_natural_loops): Fix detection of
15076         loop body start blocks.
15077
15078         * mini-exceptions.c (mono_print_thread_dump): Fix non x86 builds.
15079
15080 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
15081
15082         * mini.h mini.c mini-exceptions.c: Add thread dump support. Fixes
15083         #75145.
15084
15085 2006-01-25  Massimiliano Mantione  <massi@ximian.com>
15086
15087         * aliasing.c: Fixed aliasing issue on 64 bit archs.
15088
15089 2006-01-25  Martin Baulig  <martin@ximian.com>
15090
15091         * debug-debugger.c: Moved the `MonoDebuggerManager' and
15092         `MonoDebuggerThread' typedefs here from mono-debug-debugger.h and
15093         started to cleanup this file a little bit.
15094
15095 Tue Jan 24 18:20:48 CET 2006 Paolo Molaro <lupus@ximian.com>
15096
15097         * mini.c: optimize a codepath frequently happening in generics code.
15098
15099 2006-01-23  Martin Baulig  <martin@ximian.com>
15100
15101         * Makefile.am: Only compile debug-debugger.c on supported platforms.
15102
15103         * debug-debugger.c: Kill the IO_LAYER() hack and use the io-layer
15104         functions directly.
15105
15106         * driver.c: debug-debugger.c is only available if
15107         `MONO_DEBUGGER_SUPPORTED' is defined.   
15108
15109 2006-01-23  Martin Baulig  <martin@ximian.com>
15110
15111         * debug-debugger.c: Only enable this on platforms where the Mono
15112         Debugger is working (x86 and x86_64).
15113
15114 2006-01-21  Martin Baulig  <martin@ximian.com>
15115
15116         The Mono Debugger is now using the normal `mono' instead of the
15117         `mono-debugger-mini-wrapper' when executing managed code.
15118
15119         * debug-debugger.c: New file; previously known as
15120         debugger/wrapper/wrapper.c.
15121
15122         * debug-mini.c (mono_init_debugger): Removed.
15123
15124         * driver.c (mono_main): Added new `--inside-mdb' command line
15125         argument which is used when running inside the debugger.
15126
15127 2006-01-20  Zoltan Varga  <vargaz@gmail.com>
15128
15129         * liveness.c (mono_analyze_liveness): Remove some unused data
15130         structures.
15131
15132 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
15133
15134         * mini.h: Move mono_bitset_test_fast macro to monobitset.h where it belongs.
15135
15136 2006-01-16  Zoltan Varga  <vargaz@gmail.com>
15137
15138         * mini.h (mono_bitset_test_fast): Disable the 'fast' implementation which
15139         depends on implementation details of monobitset.
15140
15141         * mini.c (mini_get_ldelema_ins): Fix handling of 1 dimensional arrays.
15142         Fixes #77271.
15143
15144 2006-01-15  Zoltan Varga  <vargaz@gmail.com>
15145
15146         * liveness.c: Update after monobitset changes.
15147
15148 2006-01-14  Zoltan Varga  <vargaz@gmail.com>
15149
15150         * mini-amd64.c (mono_arch_compute_omit_fp): Fix a leak.
15151
15152 2006-01-11 Neale Ferguson <neale@sinenomine.net>
15153
15154         * inssel-s390x.brg: Fix reg: OP_LDADDR(OP_S390_LOADARG) register setting.
15155
15156         * mini-s390x.c: Remove warning messages.
15157
15158 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
15159
15160         * mini.c: pass the jitinfo to mono_profiler_method_end_jit.
15161
15162 2006-01-10  Zoltan Varga  <vargaz@gmail.com>
15163
15164         * generics.2.cs: Add ldelem/stelem_any test.
15165
15166 2006-01-10 Neale Ferguson <neale@sinenomine.net>
15167
15168         * mini-s390.c: Fix ATOMIC_ADD_I4 operation.
15169
15170 2006-01-07  Zoltan Varga  <vargaz@gmail.com>
15171
15172         * inssel-long.brg: Fix int->long ovf conversion rules. Fixes #77172.
15173         
15174 2006-01-06  Zoltan Varga  <vargaz@gmail.com>
15175
15176         * generics.2.cs: Reenable vtype tests.
15177
15178         * inssel-x86.brg: Remove an icorrect valuetype rule.
15179
15180 2006-01-06 Neale Ferguson <neale@sinenomine.net>
15181
15182         * mini-s390x.c, inssel-s390x.brg, cpu-s390x.md: Fix ATOMIC_I8 operations. Provide
15183         initial support for OP_ABS.
15184
15185 2006-01-05 Neale Ferguson <neale@sinenomine.net>
15186
15187         * mini-s390x.c (emit_float_to_int): Correct r8 to unsigned int algorithm.
15188
15189 2006-01-05 Neale Ferguson <neale@sinenomine.net>
15190
15191         * mini-s390.c, mini-s390.h, inssel-s390.brg, cpu-s390.md: Fix r8 to unsigned int 
15192         conversion and implement LADD/LSUB.
15193
15194         * exceptions-s390.c: Standardize mono_arch_find_jit_info to match other
15195         architectures.
15196
15197 2006-01-05 Neale Ferguson <neale@sinenomine.net>
15198
15199         * mini-s390x.c, mini-s390x.h: Fix r8 to unsigned int conversion.
15200
15201         * exceptions-s390x.c: Standardize mono_arch_find_jit_info to match other
15202         architectures.
15203
15204 2006-01-05 Neale Ferguson <neale@sinenomine.net>
15205
15206         * mini-s390x.c, mini-s390x.h, mini-s390.c, mini-s390.h: Fix lmf handling when 
15207         localloc is encountered.  Fixes crash in test-183.cs when using gmcs 
15208         (stack walk problem).
15209
15210 2006-01-04  Zoltan Varga  <vargaz@gmail.com>
15211
15212         * aot.c (mono_aot_load_method): Fix a warning.
15213
15214 2006-01-03  Neale Ferguson <neale@sinenomine.net>
15215
15216         * mini-s390x.h, exceptions-s390x.c, inssel-s390x.brg: Fix compiler warnings
15217
15218 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
15219
15220         * iltests.il: Add test for #77148.
15221
15222         * mini.c (mini_get_ldelema_ins): Handle arrays with rank 1 too. Fixes
15223         #77148.
15224
15225 2006-01-03  Neale Ferguson <neale@sinenomine.net>
15226
15227         * mini-s390x.c, inssel-s390x.brg: Remove debug statements
15228
15229 2006-01-03  Neale Ferguson <neale@sinenomine.net>
15230
15231         * mini-s390x.c, mini-s390x.h, exceptions-s390x.c, tramp-s390x.c, inssel-s390x.brg,
15232         cpu-s390x.md, mini-codegen.c, Makefile.am: add 64-bit s390 support to JIT.
15233
15234         * basic-long.cs: Add lconv-to-r4/r8 tests.
15235
15236 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
15237
15238         * mini.c (mono_method_to_ir): Fix DynamicMethod support in some opcodes.
15239
15240         * mini-sparc.c (mono_arch_call_opcode): Use mono_class_value_size ()
15241         here as on other archs.
15242
15243 2005-12-29 Neale Ferguson <neale@sinenomine.net>
15244
15245         * mini-s390.c (mono_arch_get_inst_for_method): Add memory_barrier support.
15246
15247 2005-12-29 Neale Ferguson <neale@sinenomine.net>
15248
15249         * inssel-s390.brg: Correct register assignment; Rework L[ADD|SUB]_OVF[_UN] for s390.
15250         
15251         * cpu-s390.md: Fix lengths of a couple of long instructions; Add memory_barrier.
15252
15253         * mini-s390.c: Fix long add/sub overflow instructions; Fix displacement handling in
15254         instrument_prolog; Add memory_barrier instruction.
15255
15256 2005-12-26  Zoltan Varga  <vargaz@gmail.com>
15257
15258         * exceptions-x86.c mini-x86.h: Fix solaris/x86 exception handling.
15259
15260 2005-12-23  Zoltan Varga  <vargaz@gmail.com>
15261
15262         * tramp-ia64.c (mono_arch_get_unbox_trampoline): Flush icache.
15263
15264         * aliasing.c inssel.brg: Fix warnings.
15265
15266         * inssel-ia64.brg (OP_MEMSET): Fix an optimization which previously
15267         could skip initialization of some parts of memory.
15268
15269         * mini.c mini-ia64.c: Fix warnings.
15270
15271         * inssel-sparc.brg: Add an implementation of lneg which actually works.
15272
15273 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
15274
15275         * aliasing.c (mono_build_aliasing_information): Add a workaround for
15276         a crash seen on sparc.
15277
15278         * mini-sparc.c: Add implementation of Thread.MemoryBarrier.
15279         
15280         * cpu-sparc.md: Add memory_barrier opcode. Remove unused opcodes.
15281
15282 2005-12-21 Neale Ferguson <neale@sinenomine.net>
15283
15284         * mini-ops.h: Add s390_backchain instruction
15285
15286         * inssel-s390.brg: Use backchaining instruction for LOADARG/STKARG operations.
15287
15288         * cpu-s390.md: Add s390_backchain instruction
15289
15290         * mini-s390.c: Significant ABI changes
15291
15292         * mini-s390.h: Cater for zero length structures
15293
15294 2005-12-20 Neale Ferguson <neale@sinenomine.net>
15295
15296         * mini-s390.c: ABI fixes
15297
15298         * inssel-s390.brg: Remove debug statements
15299
15300         * cpu-s390.md: Fix length of ATOMIC_xx operations
15301
15302 2005-12-19  Zoltan Varga  <vargaz@gmail.com>
15303
15304         * basic-float.cs: Add float<->long conversion tests.
15305
15306 2005-12-16 Neale Ferguson <neale@sinenomine.net>
15307
15308         * mini-s390.c: Fix LOCALLOC processing.
15309
15310         * tramp-s390.c (s390_magic_trampoline): Fix base calculation.
15311
15312 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
15313
15314         * iltests.il: Add tests for some opcodes not covered by the other
15315         tests.
15316
15317 2005-12-15 Neale Ferguson <neale@sinenomine.net>
15318
15319         * mini-s390.c: Fix ADDCC/SBB bug revealed by test_0_ulong_regress; Correct 
15320         register loading for Tail processing; Correct trace output.
15321
15322         * inssel-s390.brg: Reimplement LSUB_OVF due to s390 implementation of signed math.
15323
15324         * cpu-s390.md: Correct size of jmp instruction. 
15325
15326 2005-12-13 Neale Ferguson <neale@sinenomine.net>
15327
15328         * mini-s390.c (mono_arch_emit_prolog): Remove some debugging bits.
15329
15330 2005-12-13 Neale Ferguson <neale@sinenomine.net>
15331
15332         * inssel-s390.brg tramp-s390.c cpu-s390.md mini-s390.c mini-s390.h:
15333           Bring s390 up to current level.
15334
15335 2005-12-12  Zltan Varga  <vargaz@gmail.com>
15336
15337         * generics.2.cs: Disable the newly added tests as they do not work yet.
15338         
15339         * generics.2.cs: Add valuetype tests.
15340
15341 2005-12-09  Zoltan Varga  <vargaz@gmail.com>
15342
15343         * basic-long.cs: Add i4->u8 test.
15344
15345         * objects.cs: Add tests for JIT intrinsic.
15346
15347         * mini.c (mini_get_inst_for_method): Resurrect the array Rank/Length
15348         optimizations lost by a mistake.
15349
15350 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
15351
15352         * basic-long.cs: Remove a test moved to objects.cs.
15353
15354         * arrays.cs: Add more array tests.
15355
15356 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
15357
15358         * arrays.cs: Add new tests for multi-dimensional arrays.
15359
15360 2005-12-06  Raja R Harinath  <rharinath@novell.com>
15361
15362         * Makefile.am (test_sources2): Add generics.2.cs.
15363         (EXTRA_DIST): Add test_sources2.
15364
15365 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
15366
15367         Support for boxing and unboxing nullable types as well as the
15368         isinst operation on nullables, per the CLI ammendment.
15369
15370         * inssel.brg (CEE_ISINST): Special case for nullable
15371
15372         * mini.c (handle_unbox_nullable): new method
15373         (handle_box): Special case for nullable types
15374         (mono_method_to_ir): Call handle_unbox_nullable in correct
15375         places.
15376
15377         * generics.2.cs: New test suite
15378
15379         * Makefile.am: Support for regression tests with generics.
15380
15381 2005-12-03  Zoltan Varga  <vargaz@gmail.com>
15382
15383         * mini-amd64.c (emit_load_volatile_arguments): Add loading of arguments
15384         allocated to registers. Fixes #76800.
15385
15386 Thu Dec 1 12:59:40 EST 2005 Paolo Molaro <lupus@ximian.com>
15387
15388         * mini-ppc.c, inssel-ppc.brg: fix ABI issue (pinvoke3.cs).
15389
15390 2005-11-30  Zoltan Varga  <vargaz@gmail.com>
15391
15392         * exceptions.cs: Disable test_0_long_cast () test, since it fails on a lot 
15393         of platforms.
15394
15395 2005-11-29  Zoltan Varga  <vargaz@gmail.com>
15396
15397         * objects.cs basic-calls.cs: Move a test depending on valuetypes to
15398         objects.cs.
15399
15400         * inssel-long32.brg (CEE_CONV_I8): Remove unused labels.
15401         
15402         * inssel-long32.brg (CEE_CONV_I8): Convert this to a branchless version.
15403 Tue Nov 29 05:41:34 EST 2005 Paolo Molaro <lupus@ximian.com>
15404
15405         * mini-ppc.c, cpu-g4.md: ensure a fp register is converted to
15406         single precision before storing to a single precision location.
15407
15408 2005-11-28  Raja R Harinath  <rharinath@novell.com>
15409
15410         * Makefile.am (ILASM): Use profile-dependent location of ilasm.
15411
15412 2005-11-27  Zoltan Varga  <vargaz@gmail.com>
15413
15414         * basic-long.cs basic-calls.cs objects.cs: Move some tests to the
15415         correct files.
15416
15417         * basic.cs: Remove test_0_byte_compares test which was moved to
15418         objects.cs a long time ago.
15419
15420 2005-11-22  Massimiliano Mantione  <massi@ximian.com>
15421
15422         * aliasing.c: Fixed aliasing issue on 64 bit archs.
15423
15424 2005-11-20  Zoltan Varga  <vargaz@gmail.com>
15425
15426         * mini-ia64.c exceptions-ia64.c: Simplify the way filters/finally
15427         handlers are called.
15428
15429         * mini-ia64.c (mono_arch_emit_exceptions): Optimize size of exception
15430         throwing code.
15431
15432          * mini-ia64.c: Add support for the throw->branch exception 
15433         optimization.   
15434
15435         * driver.c (DEFAULT_OPTIMIZATIONS): Add MONO_OPT_EXCEPTION.
15436
15437 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
15438
15439         * mini.c: Enabled "fastpath" deadce :-)
15440         
15441 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
15442
15443         * mini.c: Added "fastpath" deadce (deadce without SSA), and a simple
15444         alias analysis pass to support it.
15445         * mini.h: Likewise.
15446         * ssa.c: Likewise.
15447         * liveness.c: Likewise (liveness computation can use aliasing
15448         information to be more accurate).
15449         * driver.c: Added an "ssa" option go tell the JIT to use SSA, and
15450         moreover made so that "--compile-all" uses the given optimization
15451         flags and not the default ones.
15452         * aliasing.c: Alias analysis (new file).
15453         * aliasing.h: Likewise.
15454         * Makefile.am: added "aliasing.c" and "aliasing.h".
15455         
15456 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
15457
15458         * mini-ops.h: Add missing OP_I opcodes so it is in synch with the
15459         OP_L opcodes.
15460
15461 2005-11-13  Zoltan Varga  <vargaz@gmail.com>
15462
15463         * mini-exceptions.c (mono_handle_exception_internal): Remove the 
15464         fp >= end_of_stack exit condition, as it is not needed, and it might
15465         become true for fp eliminated frames.
15466
15467 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
15468
15469         * mini-x86.c (mono_arch_emit_epilog): Use G_STRUCT_OFFSET instead of hard
15470         coded offsets.
15471
15472 Tue Nov 8 11:28:20 GMT 2005 Paolo Molaro <lupus@ximian.com>
15473
15474         * mini-arm.c: fixed alignment of doubles/longs to match
15475         the C ABI (bug #76635).
15476
15477 Mon Nov 7 16:13:21 CET 2005 Paolo Molaro <lupus@ximian.com>
15478
15479         * aot.c: fix compilation with --enable-minimal=aot.
15480
15481 Fri Nov 4 12:34:15 GMT 2005 Paolo Molaro <lupus@ximian.com>
15482
15483         * mini-arm.c: fixed compatibility with the new
15484         floating point emulator package for compares.
15485
15486 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com?
15487
15488         * mini.c : reverted sig->pinvoke changes (r51396-51397).
15489
15490 2005-11-01  Zoltan Varga  <vargaz@freemail.hu>
15491
15492         * mini-exceptions.c (print_stack_frame): Output to stderr.
15493         (mono_handle_native_sigsegv): Ditto.
15494
15495 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
15496
15497         * mini-amd64.c (mono_arch_output_basic_block): Remove unused
15498         OP_LCONV_TO_OVF_I implementation.
15499
15500         * mini-amd64.c: Add support for the throw->branch exception 
15501         optimization.
15502
15503         * branch-opts.c (mono_branch_optimize_exception_target): Allow the case
15504         when the catch clause catches a more general exception, i.e. Object.
15505
15506 2005-10-30  Zoltan Varga  <vargaz@gmail.com>
15507
15508         * cpu-ia64.md: Remove unused opcodes.
15509
15510         * mini.c (GET_CONTEXT): Simplify this somewhat by removing arch
15511         specific defines for architectures defining USE_SIGACTION.
15512
15513         * mini-ia64.c: Fix some warnings.
15514
15515         * exceptions-ia64.c (mono_arch_ip_from_context): Fix this, the previous
15516         version seemed to skip a frame.
15517
15518 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
15519
15520         * mini.c: Clean up the usage of sig->pinvoke flag. Now
15521         only calls which are made to native code use this flag.
15522
15523 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
15524
15525         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for
15526         varargs methods as well.
15527         
15528         * mini-amd64.c exceptions-amd64.c: Allow fp elimination in methods
15529         which have save_lmf set. Reorganize methods prologs a bit.
15530
15531         * mini-amd64.c (mono_arch_compute_omit_fp): Move the check for the
15532         debugger to the proper place.
15533
15534 2005-10-29  Martin Baulig  <martin@ximian.com>
15535
15536         * mini-amd64.c (debug_omit_fp): Temporarily disable fp elimination
15537         when running inside the debugger until the debugger has support
15538         for it.
15539
15540 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
15541
15542         * mini.h: Fix a warning.
15543
15544 2005-10-24  Miguel de Icaza  <miguel@novell.com>
15545
15546         * mini.c (mono_pmip): Just a wrapper for get_method_from_ip which
15547         we expose publicly, this returns the string.
15548
15549 2005-10-22  Zoltan Varga  <vargaz@freemail.hu>
15550
15551         * exceptions-amd64.c (mono_arch_find_jit_info): Fix some corner cases
15552         with fp elimination.
15553
15554 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
15555
15556         * mini-exceptions.c (mono_handle_native_sigsegv): Try to print a
15557         native stacktrace using the glibc 'backtrace' function if available.
15558
15559 2005-10-20  Zoltan Varga  <vargaz@gmail.com>
15560
15561         * mini.h (MonoDebugOptions): Remove 'abort_on_sigsegv' option.
15562
15563         * mini-exceptions.c (mono_handle_native_sigsegv): New function to 
15564         handle SIGSEGVs received while in native code.
15565
15566         * mini.c (sigsegv_signal_handler): If the SIGSEGV happened in native
15567         code, call mono_handle_native_sigsegv which will abort the runtime
15568         after printing some diagnostics, instead of converting it into a
15569         confusing NullReferenceException.
15570
15571 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
15572
15573         * cpu-pentium.md: Remove unused opcodes.
15574
15575 2005-10-18  Zoltan Varga  <vargaz@freemail.hu>
15576
15577         * mini-amd64.h (MonoLMF): Add rsp field.
15578
15579         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Save the sp reg into
15580         the lmf too.
15581
15582 2005-10-17  Zoltan Varga  <vargaz@gmail.com>
15583
15584         * mini-codegen.c (get_register_spilling): Fix some warnings.
15585
15586 2005-10-16  Zoltan Varga  <vargaz@freemail.hu>
15587
15588         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Add support for fp
15589         elimination during exception handling. Enable fp elimination by
15590         default.
15591
15592         * mini-amd64.h mini-amd64.c: Add preliminary support for frame pointer
15593         elimination.
15594
15595 2005-10-16  Martin Baulig  <martin@ximian.com>
15596
15597         * mini-exceptions.c
15598         (mono_debugger_run_finally): New public method for the debugger.
15599
15600 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
15601
15602         * debug-mini.c (mono_debug_init_method): Fix warning.
15603
15604         * mini.h branch-opts.c (mono_branch_optimize_exception_target): Make
15605         the 'exname' parameter const to fix some warnings.
15606
15607 2005-10-09  Zoltan Varga  <vargaz@freemail.hu>
15608
15609         * mini-exceptions.c (mono_handle_exception_internal): Fix another bug
15610         introduced by the previous patch.
15611
15612 2005-10-08  Zoltan Varga  <vargaz@gmail.com>
15613
15614         * basic-float.cs: Add test for precision of float arithmetic.
15615
15616         * mini-ia64.c (mono_arch_output_basic_block): Convert to/from doubles
15617         when loading/storing single values from/to memory.
15618
15619         * mini.c (mono_jit_compile_method_with_opt): Create the function
15620         pointers in the correct domain.
15621
15622 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
15623
15624         * mini-exceptions.c (mono_handle_exception_internal): Fix bug 
15625         introduced by previous patch.
15626         
15627         * mini-exceptions.c (mono_handle_exception_internal): Handle the case
15628         when out_filter_idx is NULL.
15629
15630         * mini-exceptions.c: Don't run filter clauses twice during exception
15631         handling. Fixes #75755.
15632
15633 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
15634
15635         * aot.c: Add support for ldflda wrappers.
15636
15637         * mini.c (mono_method_to_ir): Use ldflda wrappers for CEE_LDFLDA. Fixes
15638         #75902.
15639
15640 Tue Oct 4 20:23:25 CEST 2005 Paolo Molaro <lupus@ximian.com>
15641
15642         * mini.c, mini.h: do not consider exception handlers blocks when
15643         setting up interface variables.
15644
15645 2005-10-04  Zoltan Varga  <vargaz@freemail.hu>
15646
15647         * aot.c (emit_section_change): Fix emitting of sections on win32. Fixes #76322.
15648
15649 2005-10-03  Zoltan Varga  <vargaz@gmail.com>
15650
15651         * liveness.c (mono_analyze_liveness): Revert parts of r51051 since it
15652         causes a regression.
15653
15654         * mini.c (mini_thread_cleanup): Fix reading of freed memory.
15655
15656 2005-10-02  Zoltan Varga  <vargaz@freemail.hu>
15657
15658         * mini.h (OP_PCONST): Move the definition of OP_PCONST into the rest
15659         of the OP_P definitions.
15660
15661         * TODO: Add a proposal for dealing with the CEE/OP mess.
15662
15663         * mini-amd64.c (mono_arch_output_basic_block): Merge mul_imm 
15664         optimizations from the x86 port.
15665
15666         * cpu-amd64.md: Ditto.
15667
15668         * basic.cs basic-long.cs: Add tests.
15669
15670 Fri Sep 30 20:07:20 CEST 2005 Paolo Molaro <lupus@ximian.com>
15671
15672         * Makefile.am, driver.c, mini-x86.c, mini.c, mini.h, branch-opts.c:
15673         Patrik Torstensson's implementation of my exception-handling
15674         optimization idea, when the exception object is not used
15675         (bug #62150).
15676
15677 Fri Sep 30 19:10:29 CEST 2005 Paolo Molaro <lupus@ximian.com>
15678
15679         * mini-x86.c, cpu-pentium.md: Patrik Torstensson's port
15680         of the mul_imm optimizations from the old jit.
15681
15682 Fri Sep 30 11:37:51 EDT 2005 Paolo Molaro <lupus@ximian.com>
15683
15684         * mini.c, liveness.c: patch by Patrik Torstensson and
15685         Zoltan Varga to improve performance in methods with
15686         exception clauses.
15687
15688 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
15689
15690         * driver.c: Remove 'Globalization' entry from --version.
15691
15692 2005-09-28  Zoltan Varga  <vargaz@gmail.com>
15693
15694         * mini.c (mono_jit_compile_method_inner): Do not load AOT code when
15695         there is a profiler interested in JIT events.
15696
15697         * aot.c: Load profile files produced by the AOT profiling module, and
15698         reorder methods based on the profiling info. Add a 'method_order' table
15699         to the AOT file to make mono_aot_find_jit_info work with the reordered
15700         methods.
15701
15702         * mini.h: Bump AOT file version info.
15703
15704 Wed Sep 28 17:12:48 CEST 2005 Paolo Molaro <lupus@ximian.com>
15705
15706         * mini-arm.h: work around what looks like a gcc bug when optimizations
15707         are enabled.
15708
15709 2005-09-28  Raja R Harinath  <rharinath@novell.com>
15710
15711         * Makefile.am (AM_CFLAGS): Don't use += to append inside
15712         conditionals.  Use ...
15713         (PLATFORM_CFLAGS, ARCH_CFLAGS): ... these.
15714
15715 2005-09-27  Zoltan Varga  <vargaz@freemail.hu>
15716
15717         * mini-amd64.c (mono_arch_call_opcode): Use mono_class_value_size ()
15718         to determine the amount of memory to copy when passing valuetypes.
15719
15720         * inssel-amd64.brg: Remove PUSH(LDIND4) rules since they convert an
15721         4 byte load into a 8 byte load. Fix aligning of size in OP_OUTARG_VT.
15722
15723 2005-09-27  Zoltan Varga  <vargaz@gmail.com>
15724
15725         * mini.h mini.c aot.c: Add infrastructure to collect pagefault 
15726         information about aot.
15727
15728 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
15729
15730         * *.c: Replace the use of {Enter,Leave}CriticalSection with
15731         macros. This will allow a deadlock debugger to easily be plugged
15732         in.
15733
15734 Tue Sep 27 09:32:11 EDT 2005 Paolo Molaro <lupus@ximian.com>
15735
15736         * mini-ppc.c, cpu-g4.md: added memory barrier instruction.
15737
15738 2005-09-27  Raja R Harinath  <rharinath@novell.com>
15739
15740         * Makefile.am (AM_CFLAGS): Rename from INCLUDES.
15741         (AM_CFLAGS) [PLATFORM_WIN32): Append to it, don't set it.
15742         (AM_CFLAGS) [ARM]: Add arch/arm directory from the build tree.
15743         ($(arch_built)) [CROSS_COMPILING]: Error out.
15744
15745 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
15746
15747         * aot.c: Add support for the no_special_static flag for classes.
15748
15749 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
15750
15751         * Reapply reverted patches.
15752
15753         * *: Revert r50174 as well.
15754
15755         * mini-amd64.c cpu-amd64.md inssel-amd64.brg: Revert r50170 as well.
15756
15757 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
15758
15759         * mini-amd64.c: Revert r50342 to see if this fixed buildbot.
15760
15761 2005-09-23  Miguel de Icaza  <miguel@novell.com>
15762
15763         * mini.c (SIG_HANDLER_SIGNATURE): Only dereference info if it is
15764         part of the SIG_HANDLER_SIGNATURE.  
15765
15766 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
15767
15768         * mini.h mini.c: Add a new MONO_DEBUG option to collect metadata pagefault
15769         statistics.
15770
15771         * mini-x86.c (mono_arch_call_opcode): Fix vararg calling convention 
15772         introduced by previous patch.
15773
15774 2005-09-21  Zoltan Varga  <vargaz@gmail.com>
15775
15776         * tramp-x86.c (mono_arch_create_trampoline_code): Restore caller
15777         saved registers too.
15778
15779         * mini-x86.c (mono_arch_allocate_vars): Rewrite this so it works based 
15780         upon the information returned by get_call_info ().
15781         
15782         * mini-x86.c (add_float): Fix stack size calculation.
15783         (mono_arch_call_opcode): Rewrite this so it works based up the
15784         information returned by get_call_info ().
15785         (mono_arch_get_this_vret_args): Ditto.
15786
15787 2005-09-21  Zoltan Varga  <vargaz@freemail.hu>
15788
15789         * mini-amd64.c (mono_arch_emit_this_vret_args): Use the information
15790         in cinfo to determine the registers which need to be used.
15791
15792 2005-09-20  Miguel de Icaza  <miguel@novell.com>
15793
15794         * driver.c (mono_main): Add --server and --desktop flags. 
15795
15796 2005-09-16  Zoltan Varga  <vargaz@gmail.com>
15797
15798         * mini-ia64.h: Make register masks 64 bit. Don't treat argument
15799         registers as global registers.
15800
15801         * inssel-ia64.brg (stmt): Remove OP_OUTARG_REG () rules which are no 
15802         longer needed with the new register allocator.
15803
15804         * mini-ia64.c: Use OP_MOVE instead of OP_SETREG for reg-reg moves.
15805
15806         * cpu-ia64.md: Remove unused opcodes.
15807         
15808         * regalloc.c mini-codegen.c: Make register masks 64 bit on ia64.
15809         
15810 2005-09-16  Zoltan Varga  <vargaz@freemail.hu>
15811
15812         * cpu-amd64.md: Remove unused opcodes.
15813
15814         * inssel-amd64.brg: Remove OP_OUTARG_REG () rules which are no longer
15815         needed with the new register allocator.
15816
15817         * inssel-amd64.brg mini-amd64.c: Use OP_MOVE instead of OP_SETREG for
15818         reg-reg moves.
15819
15820 2005-09-16  Raja R Harinath  <rharinath@novell.com>
15821
15822         * Makefile.am (check-local): Don't invoke semdel-wrapper.
15823
15824 2005-09-16  Martin Baulig  <martin@ximian.com>
15825
15826         * exceptions-amd64.c
15827         (throw_exception): Don't call mono_debugger_throw_exception() if
15828         we're a rethrow - see the FIXME in the code.
15829
15830 2005-09-15  Geoff Norton  <gnorton@customerdna.com>
15831
15832         * mini.c (mono_init_exceptions): This only works on some architectures.
15833         
15834 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
15835
15836         * mini.c (mono_method_to_ir): Add OP_LMUL imm -> OP_LMUL_IMM conversion
15837         on ia64.
15838
15839         * inssel-long.brg mini-ia64.c: Add OP_LMUL_IMM rules.
15840
15841         * mini-ia64.h mini-ia64.c: Remove the altstack support code which is
15842         now in mini-exceptions.c.
15843
15844 2005-09-15  Zoltan Varga  <vargaz@freemail.hu>
15845
15846         * mini-amd64.h mini-am64.c: Remove the altstack support code which is
15847         now in mini-exceptions.c.
15848
15849 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
15850
15851         * exceptions-x86.c: Applied patch from Patrik Torstensson 
15852         <patrik.torstensson@gmail.com>. Add stack overflow handling support for win32.
15853
15854         * mini-exceptions.c mini-x86.c mini.c: Move the altstack setup/teardown
15855         code into mini-exceptions.c. Add some assertions to it.
15856
15857 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
15858
15859         * aot.c (emit_section_change): Applied patch from "The Software Team" 
15860         (<software@solmersa.com>). Fix as errors on windows.
15861
15862 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
15863
15864         * tramp-amd64.c (mono_arch_create_trampoline_code): Fix saving of
15865         method info into the LMF.
15866
15867 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
15868         
15869         * mini-ia64.c: Add proper unwind info for method epilogs.
15870
15871         * exceptions-ia64.c: Add some code to help debugging.
15872         
15873         * mini-ia64.c mini-ia64.h: Add sigaltstack support.
15874
15875         * mini-exceptions.c: Fix warning.
15876
15877 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
15878
15879         * mini.c: Really fix build.
15880
15881         * mini-x86.c mini-amd64.c: Fix build.
15882
15883 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
15884
15885         * mini-ia64.c inssel-ia64.brg: Add InterlockedExchange instrinsics.
15886
15887         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Implement
15888         some Interlocked methods as intrinsics.
15889
15890         * mini.c (mini_get_inst_for_method): Call arch_get_inst_for_method
15891         for Thread methods as well.
15892
15893         * mini-ops.h: Add OP_MEMORY_BARRIER opcode.
15894
15895         * inssel.brg: Add rule for OP_MEMORY_BARRIER.
15896
15897         * mini-ia64.c mini-x86.c mini-amd64.c 
15898         cpu-ia64.md cpu-pentium.md cpu-amd64.md: Add implementation of 
15899         OP_MEMORY_BARRIER.
15900         
15901         * mini.c (mono_init_exceptions): Fix build breakage.
15902
15903 2005-09-10  Zoltan Varga  <vargaz@gmail.com>
15904
15905         * mini-ia64.c exceptions-ia64.c tramp-ia64.c: Remove 'manual' emitting
15906         of instructions. Use the new ia64_unw_op macros for emitting unwind
15907         info.
15908
15909         * mini.c (mono_init_exceptions): Initialize exception handling
15910         related trampolines at startup.
15911
15912 Fri Sep 9 19:30:37 BST 2005 Paolo Molaro <lupus@ximian.com>
15913
15914         * cpu-arm.md, mini-arm.c: fix for dynamic code (Gtk# apps).
15915
15916 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
15917
15918         * mini.c: Handle type loading errors gracefully during compilation and
15919         throw the appropriate exception.
15920
15921 Fri Sep 9 09:49:14 CEST 2005 Paolo Molaro <lupus@ximian.com>
15922
15923         * ldscript.mono, Makefile.am: use anonymous versions in the ldscript
15924         for the mono binary.
15925
15926 2005-09-09  Martin Baulig  <martin@ximian.com>
15927
15928         * mini.c (mono_method_to_ir): Comment out the G_BREAKPOINT()'s for
15929         the release.
15930
15931 Thu Sep 8 14:53:45 BST 2005 Paolo Molaro <lupus@ximian.com>
15932
15933         * mini-arm.h: use emulation for conv.r.un for the release.
15934
15935 Thu Sep 8 11:28:45 BST 2005 Paolo Molaro <lupus@ximian.com>
15936
15937         * mini-arm.c, objects.cs: more fixes and tests for them.
15938
15939 Wed Sep 7 17:14:26 BST 2005 Paolo Molaro <lupus@ximian.com>
15940
15941         * mini-arm.c: align structures to at least 4 bytes to be able
15942         to keep our current optimized memcpy.
15943
15944 Tue Sep 6 22:51:08 BST 2005 Paolo Molaro <lupus@ximian.com>
15945
15946         * mini-arm.c, cpu-arm.md, inssel-arm.brg: bugfixes.
15947
15948 2005-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15949
15950         * mini.c: ignore SIGPIPE.
15951
15952 2005-09-04  Zoltan Varga  <vargaz@gmail.com>
15953
15954         * mini-ia64.c (mono_arch_lowering_pass): Convert 'and_imm 255' to zext1.
15955
15956         * mini-ia64.h mini-ia64.c: Add some minor optimizations.
15957
15958 2005-09-02  Zoltan Varga  <vargaz@gmail.com>
15959
15960         * mini.h: Add prototype for mono_allocate_stack_slots_full.
15961
15962 Thu Sep 1 21:05:26 BST 2005 Paolo Molaro <lupus@ximian.com>
15963
15964         * exceptions-arm.c, mini.c, mini-arm.c, mini-arm.h:
15965         exception handling support.
15966         * mini-arm.c, mini-arm.h: bigendian fixes (partially from a
15967         patch by Brian Koropoff <briank@marakicorp.com>).
15968
15969 Thu Sep 1 10:22:44 EDT 2005 Paolo Molaro <lupus@ximian.com>
15970
15971         * mini.c: revert another 'optimization' which breaks when
15972         items on the eval stack need to be saved at a basic block end
15973         (bug #75940).
15974
15975 Wed Aug 31 17:29:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
15976
15977         * jit-icalls.c: for arrays, ensure we always provide
15978         lower bounds.
15979
15980 2005-08-30  Zoltan Varga  <vargaz@gmail.com>
15981
15982         * mini.c (mono_allocate_stack_slots_full): Fix ia64 build.
15983         
15984         * mini.c (mini_get_inst_for_method): Special case Object:.ctor as well.
15985
15986 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
15987
15988         * mini-ia64.h mini-ia64.c: Implement frame pointer elimination. Keep
15989         arguments in their original register.
15990
15991 2005-08-28  Zoltan Varga  <vargaz@gmail.com>
15992
15993         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Optimize
15994         memset/memcpy.
15995
15996         * mini.c (mono_method_to_ir): Disable the MUL->MUL_IMM optimization
15997         when ssapre is enabled.
15998
15999         * inssel-long.brg: Fix bug in previous patch.
16000
16001         * mini-ia64.c mini-ia64.h mini.c inssel-long.brg: Optimize 
16002         multiplication by a constant.
16003
16004 2005-08-27  Zoltan Varga  <vargaz@gmail.com>
16005
16006         * mini-ia64.c (mono_arch_setup_jit_tls_data): Add support for intel
16007         icc.
16008
16009         * tramp-ia64.c (mono_arch_create_trampoline_code): Use st8.spill for
16010         saving registers.
16011
16012 Fri Aug 26 11:09:28 BST 2005 Paolo Molaro <lupus@ximian.com>
16013
16014         * inssel-arm.brg: apply changes tested by Brian Koropoff
16015         <briank@marakicorp.com>.
16016
16017 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
16018
16019         * mini-x86.c (mono_arch_emit_prolog): Fix calling of mono_jit_thread_attach () under windows.
16020         
16021 2005-08-24  Zoltan Varga  <vargaz@gmail.com>
16022
16023         * mini-codegen.c (mono_local_regalloc): Avoid allocating dreg and sreg1/2
16024         to the same register if dreg is just a base register.
16025         (print_ins): Improve printing of membase opcodes.
16026
16027         * inssel-x86.brg: Add optimized ldind(reg) rules.
16028
16029         * mini-x86.c cpu-pentium.md: Changes required to support the new rules.
16030
16031 Wed Aug 24 19:39:36 CEST 2005 Paolo Molaro <lupus@ximian.com>
16032
16033         * mini.c: when running under valgrind, set the stack bottom for
16034         the GC at the actual approximate stack for the app (fixes running
16035         mono with valgrind).
16036
16037 Tue Aug 23 21:38:50 CEST 2005 Paolo Molaro <lupus@ximian.com>
16038
16039         * mini.c: do no break at the first valuetype to init found
16040         (fixes bug #75791).
16041
16042 Tue Aug 23 16:53:21 BST 2005 Paolo Molaro <lupus@ximian.com>
16043
16044         * cpu-arm.md, mini-arm.c: more fixes and LMF support.
16045
16046 Tue Aug 23 15:11:44 CEST 2005 Paolo Molaro <lupus@ximian.com>
16047
16048         * cpu-g4.md: fixed instruction length exposed by the nemerle compiler.
16049
16050 2005-08-23  Zoltan Varga  <vargaz@freemail.hu>
16051
16052         * inssel-amd64.brg inssel-x86.brg: Fix the fcall rules.
16053
16054 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
16055
16056         * inssel-x86.brg: Fix assert in patch_delegate_trampoline.
16057
16058         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Add some debug
16059         code.
16060
16061         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Add some debug
16062         code.
16063
16064         * mini.c (optimize_branches): Don't quit after 1000 iterations on large
16065         methods.
16066
16067 Mon Aug 22 19:16:29 BST 2005 Paolo Molaro <lupus@ximian.com>
16068
16069         * tramp-arm.c: allocate less memory for the trampoline and fix typo.
16070
16071 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
16072
16073         * mini.c (mono_method_to_ir): Remove instructions inserted after a branch
16074         in the tail recursion optimization.
16075
16076         * mini.h helpers.c (mono_disassemble_code): Emit starts of basic blocks as 
16077         debug info into the assembly file.
16078
16079         * iltests.il: Add test for filter regions.
16080
16081         * mini.c (mono_method_to_ir): Fix handling of nested FILTER clauses. Fix
16082         initial stack of filter regions. Fixes #75755.
16083
16084 Mon Aug 22 17:49:16 BST 2005 Paolo Molaro <lupus@ximian.com>
16085
16086         * mini-arm.c, cpu-arm.c: fixes and support for methods with bigger
16087         stack requirements.
16088
16089 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
16090
16091         * mini.c (mono_create_delegate_trampoline): Fix memory leak. Put back
16092         the check for an already compiled method on non-ia64 platforms.
16093         (mono_create_jump_trampoline): Store the MonoJitInfo structure into the
16094         proper domain.
16095
16096         * mini-x86.h tramp-x86.c: Add support for delegate trampolines.
16097
16098         * inssel-x86.brg: Add some optimized call rules.
16099
16100 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
16101
16102         * mini.c (mono_create_delegate_trampoline): Do not return an already compiled
16103         method here.
16104
16105         * mini.h mini-trampolines.c: Pass the trampoline argument to 
16106         mono_arch_patch_delegate_trampoline.
16107
16108         * mini-ia64.h mini-ia64.c tramp-ia64.c: Add support for delegate trampolines.
16109
16110         * mini-trampolines.c: Fix build.
16111
16112         * mini-amd64.h: Add delegate trampolines.
16113
16114         * mini.h mini.c mini-trampolines.c tramp-amd64.c: Add delegate trampolines.
16115
16116         * inssel-amd64.brg: Add optimized call rules.
16117         
16118         * mini-ia64.c tramp-ia64.c: Improve instruction scheduling.
16119
16120         * inssel-ia64.brg: Add optimized ldind(reg) rules.
16121
16122 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
16123
16124         * mini.c (mono_create_class_init_trampoline): Fix bug caused by last
16125         change.
16126
16127         * mini-ia64.c: Remove LMF fixmes.
16128
16129         * mini-ia64.h: Remove most fields from LMF.
16130
16131         * inssel-ia64.brg (stmt): Fix unaligned access errors.
16132
16133         * mini-trampolines.c: Add support for IA64 function descriptors.
16134
16135         * mini.h mini.c jit-icalls.c exceptions-ia64.cdriver.c: Add support
16136         for IA64 function descriptors.
16137
16138 Sat Aug 20 16:51:44 BST 2005 Paolo Molaro <lupus@ximian.com>
16139
16140         * tramp-arm.c: patch the vtable for virtual calls. Added
16141         support code to register/unregister the LMF.
16142         * mini-arm.c, mini-arm.h: warning fixes, fixes, speedups,
16143         more LMF work.
16144
16145 2005-08-19  Dick Porter  <dick@ximian.com>
16146
16147         * mini.c: Use a gsize to store the thread ID, so it can hold a 64
16148         bit value if needed.
16149
16150 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
16151
16152         * mini.c (mini_get_method): Move handling of wrapper data here.
16153
16154         * mini.c (mono_method_to_ir): Add support for dynamic methods.
16155
16156         * mini.c (mono_method_to_ir): Convert nonvirtual calls to abstract methods into
16157         virtual.
16158
16159         * mini.c (mono_method_to_ir): Emit IR for CEE_NOP as well, so 
16160         bblock->code does not remain empty.
16161
16162 2005-08-17  Zoltan Varga  <vargaz@freemail.hu>
16163
16164         * arrays.cs: Add regression test for #75832.
16165
16166         * inssel-amd64.brg cpu-amd64.md mini-amd64.c: Fix LDELEMA optimization
16167         rules. Fixes #75832.
16168
16169         * mini-ia64.c tramp-ia64.c exceptions-ia64.c: Implement improved
16170         instruction scheduling.
16171
16172 2005-08-12  Zoltan Varga  <vargaz@freemail.hu>
16173
16174         * mini-exceptions.c (ves_icall_get_frame_info): Fix IA64 build.
16175
16176 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
16177
16178         * mini-exceptions.c mini-x86.h: Move VC stuff into macros in mini-x86.h.
16179
16180         * mini-codegen.c: Fix VC build.
16181
16182         * cpu-pentium.md: Increase length of atomic_exhange_i4.
16183
16184 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16185
16186         * mini.h: fix signature for mono_register_opcode_emulation.
16187
16188 2005-08-09  Zoltan Varga  <vargaz@freemail.hu>
16189
16190         * mini.c: Get rid of most of the helper_sig_... constants using
16191         mono_create_icall_signature ().
16192
16193 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
16194
16195         * jit-icalls.c (helper_ldstr): New helper function.
16196
16197         * mini.c (get_basic_blocks): Set out_of_line for bblocks containing a throw.
16198
16199         * mini.c (mono_method_to_ir): If an LDSTR instruction is in a bblock with a
16200         throw, load the string using a helper call instead of creating a string object.
16201
16202         * aot.c: Update after LDSTR changes.
16203
16204         * mini.h: Bump AOT file version.
16205         
16206         * aot.c: Save class size info into the AOT file. Print more statistics during
16207         compilation.
16208
16209         * mini.h: Bump AOT file version.
16210
16211         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
16212         ordering of disasm cases. Fixes #74957.
16213
16214 Thu Aug 4 19:47:24 BST 2005 Paolo Molaro <lupus@ximian.com>
16215
16216         * mini-ops.h, mini-arch.h, inssel.brg, mini.c, mini.h,
16217         jit-icalls.c, mini-codegen.c, Makefile.am: changes in
16218         the generic code needed for the ARM port.
16219
16220 Thu Aug 4 19:42:54 BST 2005 Paolo Molaro <lupus@ximian.com>
16221
16222         * exceptions-arm.c, tramp-arm.c, mini-arm.c, mini-arm.h, cpu-arm.md,
16223         inssel-arm.brg: more ARM features and fixes.
16224
16225 Mon Aug 1 18:37:38 BST 2005 Paolo Molaro <lupus@ximian.com>
16226
16227         * tramp-arm.c, mini-arm.c, cpu-arm.md, inssel-arm.brg: more
16228         ARM port work in progress.
16229
16230 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
16231
16232         * mini-ia64.c (mono_arch_call_opcode): Ongoing IA64 work.
16233
16234         * mini-exceptions.c mini-ia64.h: Ongoing IA64 work.
16235
16236         * mini-ia64.c (ia64_emit_bundle): Ongoing IA64 work.
16237
16238         * inssel.brg (mini_emit_memset): Add support for unaligned access.
16239
16240         * *-ia64.*: Ongoing IA64 work.
16241         
16242         * mini-ia64.c exceptions-ia64.c: Ongoing IA64 work.
16243
16244 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
16245
16246         * TODO: Remove out-of-data todo stuff.
16247
16248         * mini.h mini.c (mono_create_jit_trampoline_from_token): Remove some
16249         dead code.
16250
16251         * aot.c: Save/load MonoCachedClassInfo->has_nested_classes.
16252
16253         * mini.h: Bump corlib version.
16254
16255 2005-07-27  Martin Baulig  <martin@ximian.com>
16256
16257         * mini-codegen.c
16258         (create_copy_ins): Added `const unsigned char *ip' argument; set
16259         `copy->cil_code' from it.
16260
16261 2005-07-27  Martin Baulig  <martin@ximian.com>
16262
16263         * mini-exceptions.c (mono_handle_exception): Don't call
16264         mono_debugger_handle_exception() for filters.
16265
16266 2005-07-27  Zoltan Varga  <vargaz@freemail.hu>
16267
16268         * mini-trampolines.c (mono_aot_trampoline): Handle AppDomain:InvokeInDomain
16269         as well.
16270
16271 2005-07-26  Martin Baulig  <martin@ximian.com>
16272
16273         Committing a patch from Michal Moskal <michal.moskal@gmail.com>.
16274
16275         * mini.c (mono_method_to_ir): In `CEE_CALLI', only use
16276         helper_compile_generic_method() if the method is actually virtual
16277         and non-final.
16278
16279 2005-07-26  Martin Baulig  <martin@ximian.com>
16280
16281         * mini.c
16282         (trampoline_code): Renamed to `mono_trampoline_code' and made it
16283         public; this is now accessed directly by the debugger.
16284         (mono_generic_trampoline_code): Removed.
16285
16286         * debug-mini.c
16287         (mono_debug_init_method): Also add interncalls and wrappers.
16288
16289 2005-07-23  Zoltan Varga  <vargaz@freemail.hu>
16290
16291         * mini-ia64.c mini-ia64.h: Add support for tracing/profiling.
16292
16293 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
16294
16295         * aot.c (mono_aot_get_method_from_token): Fix a potential crash here.
16296
16297 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
16298
16299         * aot.c (load_patch_info): Fix handling of stfld_remote wrapper.
16300
16301 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
16302
16303         * mini-amd64.c (mono_arch_setup_jit_tls_data): Use the nice way of
16304         getting TLS offsets on AMD64 too.
16305
16306 2005-07-20  Kornel Pal <kornelpal@hotmail.com>
16307
16308         * driver.c: Detach console when executing IMAGE_SUBSYSTEM_WINDOWS_GUI on win32
16309
16310 Wed Jul 20 18:05:19 BST 2005 Paolo Molaro <lupus@ximian.com>
16311
16312         * exceptions-arm.c, mini-arm.c, tramp-arm.c, cpu-arm.md,
16313         inssel-arm.brg, mini-arm.h: ARM port work in progress.
16314
16315 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
16316
16317         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix build.
16318
16319         * mini.h mini.c mini-*.h tramp-*.c: Move more cross platform trampoline code
16320         to mini.c.
16321
16322         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Call 
16323         mono_sparc_is_virtual_call ().
16324         
16325         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix warning.
16326
16327         * tramp-sparc.c (mono_arch_create_trampoline_code): Fix order of
16328         trampoline parameters.
16329
16330         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix signature.
16331         
16332         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Rename this
16333         to mono_arch_get_vcall_slot_addr.
16334
16335         * Makefile.am tramp-sparc.c: Update the sparc port to use the generic
16336         trampoline code.
16337
16338         * *-sparc.*: Merge the mini-xp-regalloc branch for sparc.
16339
16340 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
16341
16342         * mini-ia64.h mini-ia64.c: Finish pinvoke support.
16343
16344 2005-07-19  Martin Baulig  <martin@ximian.com>
16345
16346         * exceptions-amd64.c (throw_exception): Call
16347         mono_debugger_throw_exception() here like we're doing it on i386.
16348
16349 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
16350
16351         * mini-ia64.c: Add optimized TLS access support.
16352
16353 2005-07-18  Zoltan Varga  <vargaz@freemail.hu>
16354
16355         * mini-exceptions.c: Ongoing IA64 work.
16356
16357         * mini-ia64.c inssel-long.brg: Ongoing IA64 work.
16358
16359         * mini.c: Use the default optimization set when embedding. Fixes
16360         #75194.
16361
16362 2005-07-11  Zoltan Varga  <vargaz@freemail.hu>
16363
16364         * tramp-amd64.c tramp-ia64.c Makefile.am: Move arch independent parts 
16365         of trampolines to a separate file.
16366
16367         * mini-trampolines.c: New file.
16368
16369         * mini.h tramp-x86.c: Move arch independent parts of trampolines to a 
16370         separate file.
16371         
16372         * tramp-x86.c: Reorganize the trampoline code to be similar to the 
16373         amd64/ia64 code.
16374
16375         * mini-codegen.c: Fix cygwin build.
16376
16377 2005-07-10  Zoltan Varga  <vargaz@freemail.hu>
16378
16379         * mini.c: Add some minor changes needed by the IA64 port.
16380
16381         * *-ia64.*: Ongoing IA64 work.
16382
16383 2005-07-09  Zoltan Varga  <vargaz@freemail.hu>
16384
16385         * tramp-amd64.c mini-amd64.c: Update after latest AOT changes. Split 
16386         trampolines into arch-independent and arch-dependent parts.
16387
16388         * mini-amd64.c (mono_arch_lowering_pass): Fix store_membase_imm -> store_membase_reg rule.
16389
16390 2005-07-08  Zoltan Varga  <vargaz@freemail.hu>
16391
16392         * cpu-amd64.md: Merge the xp-regalloc-branch for amd64.
16393
16394         * mini-ops.h mini-amd64.h mini-amd64.c inssel-amd64.brg Makefile.am: Merge
16395         the xp-regalloc-branch for amd64.
16396
16397         * mini-x86.h mini-x86.c cpu-pentium.md Makefile.am: Merge the
16398         xp-regalloc-branch for x86.
16399
16400 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
16401
16402         * inssel.brg (OP_THROW_OR_NULL): Allways rethrow the abort exception.
16403
16404 2005-07-06  Martin Baulig  <martin@ximian.com>
16405
16406         * mini.c
16407         (mono_jit_compile_method_inner): Call mono_get_inflated_method().
16408         (mono_jit_runtime_invoke): Likewise.
16409
16410 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
16411
16412         * aot.c (mono_compile_assembly): Allocate the GOT in the .bss segment
16413         on x86 too.
16414         
16415         * aot.c: Add new mono_aot_get_method_from_token () function to load AOT methods
16416         without loading their metadata. Reorganize the file format so exception handling+
16417         debug info is kept separate from normal method info. Create MonoJitInfo 
16418         structures for methods lazily.
16419
16420         * tramp-x86.c (x86_aot_trampoline): Use the new from_token method to avoid
16421         loading metadata.
16422         (x86_class_init_trampoline): Patch AOT class init trampolines too.
16423
16424         * mini.c (mini_init): Install the new mono_aot_find_jit_info hook.
16425
16426         * mini.c (mono_method_to_ir): Reduce the number of class init trampoline calls
16427         in AOT code.
16428
16429         * mini.h: Bump AOT file version.
16430
16431 2005-07-04  Zoltan Varga  <vargaz@freemail.hu>
16432
16433         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
16434
16435 2005-07-01  Raja R Harinath  <rharinath@novell.com>
16436
16437         * Makefile.am (check-local): Call semdel-wrapper.
16438
16439 2005-06-29  Zoltan Varga  <vargaz@freemail.hu>
16440
16441         * mini-x86.c: Revert the last change as it seems to break the build..
16442
16443 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
16444
16445         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
16446         
16447         * mini-x86.c (mono_arch_cpu_init): Fix setting of fp precision in the VC build.
16448
16449 2005-06-27  Ben Maurer  <bmaurer@ximian.com>
16450
16451         * mini.c (NEW_AOTCONST): make sure to call mono_get_got_var
16452         outside of the macro, so strange stuff doesn't happen with gcc4
16453         (NEW_AOTCONST_TOKEN): Likewise.
16454
16455 2005-06-28  Martin Baulig  <martin@ximian.com>
16456
16457         * mini.c (mini_class_is_system_array): New static method; use this
16458         instead of `klass->parent == mono_defaults.array_class' everywhere
16459         since this also works for the new generic array class.
16460
16461 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
16462
16463         * inssel.brg: Remove warnings.
16464
16465 2005-06-24  Zoltan Varga  <vargaz@freemail.hu>
16466
16467         * mini-ia64.c: Ongoing IA64 work.
16468
16469         * basic-float.cs: Add float->i1 conversion test.
16470
16471         * iltests.il: Add conv.u4 test.
16472
16473 2005-06-23  Zoltan Varga  <vargaz@freemail.hu>
16474
16475         * inssel-long.brg: Fix bug caused by last change.
16476
16477 2005-06-23  Geoff Norton  <gnorton@customerdna.com>
16478
16479         * mini-x86.h: Add __APPLE__ to the SC_* redefines with the other 
16480         BSDs.  Allows the x86 JIT to work on OSX86
16481
16482 2005-06-22  Zoltan Varga  <vargaz@freemail.hu>
16483
16484         * inssel-long.brg: Use OP_LSHR_UN_IMM instead of OP_SHR_UN_IMM in
16485         u4->i8 conversion.
16486
16487         * mini-ia64.c: Ongoing IA64 work.
16488
16489 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
16490
16491         * mini-ia64.c: Ongoing IA64 work.
16492
16493         * driver.c: Clean up jit_code_hash as well when using --regression.
16494
16495         * inssel-long.brg: Fix long->i4/u4 conversion rules.
16496
16497         * basic-long.cs: Add tests for long->u4 conversion.
16498
16499 2005-06-18  Ben Maurer  <bmaurer@ximian.com>
16500
16501         * mini.c: Take mono_get_domainvar out of macros. This makes sure
16502         that we do not depend on undefined C behavior: the order stuff
16503         gets evaluated within an expression. Fixes mono when compiled on
16504         GCC 4.
16505
16506 2005-06-18  Zoltan Varga  <vargaz@freemail.hu>
16507
16508         * *-ia64.*: Ongoing IA64 work.
16509
16510         * aot.c: Lower memory usage while loading AOT methods.
16511
16512         * tramp-x86.c: Avoid allocating+freeing MonoJitInfo structures.
16513
16514         * mini.h: Bump AOT file format version.
16515
16516 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
16517
16518         * mini.c (mono_method_to_ir): Allow STACK_PTR as input to SWITCH.
16519
16520 2005-06-16  Sebastien Pouliot  <sebastien@ximian.com>
16521
16522         * declsec.c: Fixed APTC to check for FullTrust on caller assembly (and
16523         not on callee assembly). Fixed some comments.
16524
16525 2005-06-16  Zoltan Varga  <vargaz@freemail.hu>
16526
16527         * aot.c (mono_compile_assembly): Mark the "methods" symbol as a function so
16528         it gets proper disassembly.
16529         (emit_method_info): Remove some dead code.
16530
16531         * mini.c (mini_method_compile): Allways allocate the GOT var in
16532         mono_method_to_ir for emulating opcodes.
16533
16534 2005-06-13  Zoltan Varga  <vargaz@freemail.hu>
16535
16536         * mini.c (mono_jit_free_method): Remove the method from the JitInfo table
16537         before freeing the code memory. Fixes #74990.
16538
16539         * objects.cs: Add regression test for #74992.
16540
16541         * liveness.c: Extend live ranges of arguments to the beginning of the
16542         method. Fixes #74992.
16543
16544         * exceptions-ia64.c mini-ia64.h: Modify ip during exception handling
16545         so it points into the faulting instruction.
16546
16547 2005-06-12  Zoltan Varga  <vargaz@freemail.hu>
16548
16549         * jit-icalls.c (mono_imul_ovf): Add exception handling.
16550
16551         * *-ia64.*: Ongoing IA64 work.
16552
16553         * mini.c (mini_init): Fix signature of mono_delegate_ctor.
16554
16555 2005-06-11  Zoltan Varga  <vargaz@freemail.hu>
16556
16557         * mini-ia64.h exceptions-ia64.c: Ongoing IA64 work.
16558
16559         * *-ia64.*: Ongoing IA64 work.
16560
16561 2005-06-10  Zoltan Varga  <vargaz@freemail.hu>
16562
16563         * basic-long.cs: Add tests for add/sub.ovf.
16564
16565         * basic.cs: Add tests for sub.ovf.
16566
16567         * *-ia64.*: Ongoing IA64 work.
16568
16569 2005-06-09  Zoltan Varga  <vargaz@freemail.hu>
16570
16571         * *-ia64.*: Ongoing IA64 work.
16572
16573         * basic.cs: Add conv.ovf.i4.un test.
16574
16575 2005-06-09  Massimiliano Mantione  <massi@ximian.com>
16576
16577         * mini.c: (remove_block_if_useless) Fixed bug 75061.
16578         
16579 2005-06-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16580
16581         * mini.c: no SIGUSR2 on windows. Remove it for PLATFORM_WIN32.
16582
16583 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
16584
16585         * *-ia64.*: Ongoing IA64 work.
16586
16587 2005-06-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16588
16589         * trace.[ch]:
16590         * mini.c: added the ability to toggle trace on/off using SIGUSR2.
16591
16592 2005-06-04  Zoltan Varga  <vargaz@freemail.hu>
16593
16594         * mini-ia64.c mini-ia64.h: Fix cleanup of memory stack.
16595
16596 2005-06-03  Zoltan Varga  <vargaz@freemail.hu>
16597
16598         * mini-amd64.c (emit_call): Fix yet another bug in the near call optimization.
16599
16600         * mini-amd64.c (amd64_patch): Add an assert to check that the destination
16601         of a call is callable by a near call.
16602
16603 2005-05-31  Zoltan Varga  <vargaz@freemail.hu>
16604
16605         * mini-ia64.c: Ongoing IA64 work.
16606
16607 2005-05-29  Zoltan Varga  <vargaz@freemail.hu>
16608
16609         * genmdesc.c: Make the generated array non-static.
16610
16611         * inssel-long.brg: Fix LSHR_IMM rule.
16612
16613         * *-ia64.*: Ongoing IA64 work.
16614
16615         * *-ia64.*: Ongoing IA64 work.
16616
16617 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
16618
16619         * *-ia64.*: Ongoing IA64 work.
16620
16621         * *-ia64.*: Ongoing IA64 work.
16622         
16623         * mini-ia64.c: Ongoing IA64 work.
16624
16625         * *-ia64.* jit-icalls.c mini-codegen.c: Ongoing IA64 work.
16626
16627 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
16628
16629         * objects.cs basic-calls.cs: Move some tests to objects.cs.
16630         
16631         * objects.cs basic-long.cs: Move some tests to objects.cs.
16632
16633 2005-05-26  Zoltan Varga  <vargaz@freemail.hu>
16634
16635         * *-ia64.*: Ongoing IA64 work.
16636
16637         * iltests.il: Add a new test.
16638
16639         * mini.c (mono_method_to_ir): Initialize valuetypes when created using
16640         newobj. Fixes #75042.
16641
16642 2005-05-22  Zoltan Varga  <vargaz@freemail.hu>
16643
16644         * *-ia64.*: Ongoing IA64 work.
16645         
16646         * *-ia64.*: Ongoing IA64 work.
16647         
16648         * *-ia64.*: Ongoing IA64 work.
16649
16650         * basic.cs objects.cs: Move tests accessing static variables as well.
16651
16652         * basic.cs objects.cs: Move test_0_pin_string to objects.cs.
16653
16654 2005-05-21  Zoltan Varga  <vargaz@freemail.hu>
16655
16656         * mini.c (SIG_HANDLER_SIGNATURE): Fix warning.
16657
16658         * driver.c: Always print failed tests.
16659
16660         * mini-codegen.c: Use cfg->frame_reg instead of a macro for the
16661         frame pointer.
16662
16663         * *ia64*: Ongoing IA64 work.
16664
16665 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
16666
16667         * basic.cs: Add tests for add.ovf. Fix warnings.
16668
16669 2005-05-18  Miguel de Icaza  <miguel@novell.com>
16670
16671         * driver.c (mono_main): Avoid crash if no argument is passed to
16672         --break;  Do not use g_error, but f_printf.   And fix all other
16673         ocurrences of the same crash.
16674
16675 2005-05-17  Zoltan Varga  <vargaz@freemail.hu>
16676
16677         * mini.h mini.c: Generalize the existing uses of the MONO_DEBUG env variable
16678         and add a new one: aborting when a SIGSEGV is raised while in unmanaged code.
16679         Fixes #74742.
16680
16681 2005-05-14  Zoltan Varga  <vargaz@freemail.hu>
16682
16683         * *-ia64.*: Add beginnings of IA64 backend.
16684
16685         * Makefile.am mini-arch.h mini-codegen.c: Add IA64 support.     
16686
16687 2005-05-13  Zoltan Varga  <vargaz@freemail.hu>
16688
16689         * inssel-long.brg: Add missing ulong->{i1, i2} checked conversions.
16690         Fixes #74925.
16691
16692         * basic-long.cs exceptions.cs: Add new tests. Fix some warnings.
16693
16694         * mini-amd64.c: Fix a warning.
16695
16696 2005-05-10  Zoltan Varga  <vargaz@freemail.hu>
16697
16698         * mini-amd64.c (mono_arch_output_basic_block): Fix stack space leakage
16699         in float_neg. Fixes #74897.
16700
16701         * mini-amd64.c (emit_call): Fix another near call bug.
16702
16703 2005-05-06  Sebastien Pouliot  <sebastien@ximian.com>
16704
16705         * declsec.c: Keep the appdomain information in the structure. Added a 
16706         missing "return FALSE" for Unmanaged if FullTrust is set (or else the
16707         value gets overwritten).
16708         * declsec.h: Set the default MonoArray for the the stack to 6. Added
16709         an MonoAppDomain member to MonoSecurityFrame.
16710         * mini-exceptions.c: Do not use a glist to keep GC allocated objects
16711         used in the stack walk. Now use a MonoArray which grow (double) when
16712         it gets full.
16713
16714 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
16715
16716         * mini.c: Re-enabled runtime cleanup, since running threads should
16717         now properly stop when exiting.
16718
16719 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
16720
16721         * mini-codegen.c: New file contaning the arch-independent local
16722         register allocator. Not used by any architectures yet.
16723
16724         * mini.h linear-scan.c: Merge some changes from the 
16725         mini-xp-local-regalloc branch.
16726
16727 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
16728
16729         * mini-amd64.c (emit_call): Fix calls to native functions when the
16730         runtime is compiled as a shared library. Fixes #74756.
16731
16732         * mini.c (mono_method_to_ir): Assert if ldsfld and friends are used
16733         on a literal field. Fixes #74751.
16734
16735 2005-04-25  Raja R Harinath  <rharinath@novell.com>
16736
16737         * Makefile.am (RUNTIME): Add MONO_CFG_DIR.
16738
16739 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
16740
16741         * objects.cs: Add missing null casting test.
16742
16743 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
16744
16745         * mini-exceptions.c (mono_find_jit_info): Fix native offset calculation
16746         in wrapper methods. Also rename 'address' variable to 'offset'.
16747
16748 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
16749
16750         * mini.c debug-mini.c aot.c tramp-x86.c driver.c: Fix some gcc 4.0
16751         warnings.
16752         
16753         * Makefile.am (MCS): Use -unsafe instead of --unsafe.
16754
16755         * aot.c: Applied patch from "The Software Team" <software@solmersa.com>. Make AOT compilation
16756         work on windows.
16757
16758 Mon Apr 18 16:20:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
16759
16760         * exceptions-ppc.c: update code to handle stack traces (fixes bug #74452).
16761
16762 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
16763
16764         * mini-x86.c (mono_emit_stack_alloc): Initialize the whole allocated area not
16765         just the last bytes.
16766
16767 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
16768
16769         * aot.c (mono_compile_assembly): Fix warning.
16770
16771         * mini-exceptions.c (ves_icall_get_frame_info): Fix bug introduced
16772         by the _MSC_VER stuff.
16773
16774 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
16775
16776         * inssel-long.brg: Fix #74588.
16777
16778         * cpu-amd64.md: Fix #74591.
16779
16780         * iltests.il: Add new regression tests.
16781
16782 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
16783
16784         * trace.c (mono_trace_enter_method): Print enums as an int, not as a
16785         valuetype.
16786
16787 2005-04-11  Zoltan Varga  <vargaz@freemail.hu>
16788
16789         * mini-x86.c (setup_stack): Unconditionally call pthread_attr_init ().
16790
16791         * exceptions-x86.c mini-x86.h mini-x86.c: Applied some freebsd patches 
16792         from Bill Middleton <flashdict@gmail.com>.
16793
16794 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
16795
16796         * arrays.cs: Add new regression test. Fix warnings.
16797
16798 2005-04-09  Zoltan Varga  <vargaz@freemail.hu>
16799
16800         * mini-amd64.c (mono_arch_output_basic_block): Fix stack alignment
16801         and leakage in CKFINITE.
16802
16803         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Change
16804         this to a null op since it is called on amd64 too.
16805
16806         * exceptions-amd64.c (get_throw_trampoline): Align stack.
16807
16808         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Remove
16809         body since this is not used on amd64.
16810         
16811         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Remove duplicate define.
16812
16813         * mini-amd64.c: Remove obsolete fixmes.
16814
16815         * mini.c (print_method_from_ip): Fix debugging support.
16816
16817 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
16818
16819         * ssapre.c: Fix a subtle bug about availability, and limit SSAPRE
16820         so that expressions that don't give much gain are not reduced.
16821         * ssapre.h: Likewise.
16822
16823 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
16824
16825         * exceptions-x86.c (mono_arch_find_jit_info): Remove last SC_EBP reference.
16826
16827         * mini-x86.c (mono_emit_stack_alloc): Fix localloc under windows.
16828
16829         * mini-x86.h exceptions-x86.c: Hopefully fix compilation on *BSD.
16830
16831 2005-04-01  Zoltan Varga  <vargaz@freemail.hu>
16832
16833         * mini-sparc.c mini-sparc.h: Add asserts when running with sigaltstack.
16834
16835         * exceptions-x86.c (mono_arch_monoctx_to_sigctx): Fix cygwin build.
16836
16837 2005-03-31  Zoltan Varga  <vargaz@freemail.hu>
16838
16839         * mini-x86.c: If sigaltstack support is enabled, perform win32 style
16840         stack touching.
16841
16842         * mini.h (mono_arch_sigctx_to_monoctx): New arch-specific function.
16843
16844         * mini.h (mono_arch_monoctx_to_sigctx): New arch-specific function.
16845
16846         * mini.c: sigaltstack support requires MONO_ARCH_USE_SIGACTION.
16847
16848         * mini-x86.h mini-x86.c exceptions-x86.c: Add support for 
16849         MONO_ARCH_USE_SIGACTION. Fixes #74252.
16850
16851         * mini-x86.h: Enable MONO_ARCH_USE_SIGACTION on linux.
16852
16853         * mini-x86.c: Fix up stack overflow handling.   
16854
16855         * exceptions.cs: Add new regression test.
16856
16857 2005-03-30  Zoltan Varga  <vargaz@freemail.hu>
16858
16859         * mini-x86.c (mono_arch_emit_prolog): Adjust stack after calls to
16860         mono_jit_thread_attach.
16861
16862         * mini.c (mono_method_to_ir): Verify called method is not abstract.
16863
16864 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
16865
16866         * mini.c (mono_method_to_ir): Applied Ben's patch from bug #61441 to
16867         avoid calling constructors using callvirt.
16868
16869         * inssel.brg: Fix #74073.
16870
16871 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
16872
16873         * aot.c, mini.h: Added mono-compiler.h header to allow/ease 
16874         compilation with non-GCC compilers.
16875         * mini-exceptions.c, mini-x86.c|h: Patches to make compilation of mono
16876         possible using VS.NET. Adapted from the work of J Lothian (for VC6).
16877
16878 Tue Mar 29 11:43:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
16879
16880         * inssel.brg, arrays.cs: fix long standing 64 bit issue in access to
16881         klass->interface_offsets (will likely fix bug#74073).
16882
16883 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
16884
16885         * mini-amd64.c (mono_arch_is_int_overflow): Fix rex handling.
16886
16887 2005-03-28  Zoltan Varga  <vargaz@freemail.hu>
16888
16889         * mini-amd64.c (mono_arch_output_basic_block): Fix order of parameters
16890         to amd64_div_reg_size ().
16891         
16892         * mini-amd64.c (mono_arch_emit_exceptions): Emit a near call here too.
16893
16894 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
16895
16896         * cpu-amd64.md (store_membase_reg): Fix length of storer8 opcodes.
16897
16898 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
16899
16900         * driver.c: Turn off automatic command line globbing under windows. Fixes #73763.
16901
16902 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
16903
16904         * mini.c (mono_method_to_ir): Remove debugging stuff left in by mistake.
16905         
16906         * mini.c (mono_precompile_assembly): Load and precompile referenced
16907         assemblies as well. Fixes #74015.
16908
16909 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
16910
16911         * cpu-amd64.md (sin): Fix up maximum lengths of some opcodes.
16912
16913 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
16914
16915         * declsec.c: Skip linkdemand checks for intra-corlib calls. This skips
16916         a lot of checks and (anyway) permissions cannot work until corlib is 
16917         loaded.
16918
16919 Wed Mar 23 14:29:49 CET 2005 Paolo Molaro <lupus@ximian.com>
16920
16921         * mini-ppc.c: fixed ABI issue on sysv/ppc.
16922
16923 Tue Mar 22 19:03:17 CET 2005 Paolo Molaro <lupus@ximian.com>
16924
16925         * tramp-ppc.c, exceptions-ppc.c: added missing icache flush
16926         calls (fixes bug#72824).
16927
16928 Tue Mar 22 16:28:48 CET 2005 Paolo Molaro <lupus@ximian.com>
16929
16930         * mini.c: fix tail recursion elimination (see test in bug#73936).
16931
16932 2005-03-21  Zoltan Varga  <vargaz@freemail.hu>
16933
16934         * mini-amd64.c (mono_arch_output_basic_block): Add inline versions of
16935         some fp functions in sse2 mode.
16936
16937 2005-03-20  Zoltan Varga  <vargaz@freemail.hu>
16938
16939         * mini-x86.c (emit_tls_get): Move tls handling into a separate helper function.
16940
16941 2005-03-19  Zoltan Varga  <vargaz@freemail.hu>
16942
16943         * mini.h mini.c: Add mono_get_jit_tls_key ().
16944
16945         * mini-x86.c: Enable fast TLS support on windows.
16946
16947 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
16948
16949         * declsec.c: Renamed aptc to allowpartiallytrustedcallers.
16950         * mini.c: Check for p/invoke method when generating code. If a
16951         p/invoke method, or it's class, isn't decorated with [Suppress
16952         UnmanagedCodeSecurity] then generate code to call System.Security.
16953         UnmanagedDemand (only if the security manager is active).
16954
16955 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
16956
16957         * tramp-amd64.c (create_specific_trampoline): Revert parts of the 
16958         last change as it seems to cause strange crashes.
16959         
16960 Wed Mar 16 16:24:11 CET 2005 Paolo Molaro <lupus@ximian.com>
16961
16962         * *.c: handle unsafe function pointers where needed.
16963
16964 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
16965
16966         * mini.c (mono_jit_free_method): Remove the fixme too.
16967
16968 2005-03-15  Miguel de Icaza  <miguel@novell.com>
16969
16970         * mini.c: As discussed, make the code actually free the delegate
16971         thunk now, to enable the debugging of delegate problems, use
16972         MONO_DEBUG=1 when running Mono. 
16973
16974         This takes also care of parts of the leaks as seen by Joe.
16975
16976 2005-03-15  Zoltan Varga  <vargaz@freemail.hu>
16977
16978         * mini-amd64.c (mono_arch_setup_jit_tls_data): Enable 
16979         thread_tls_offset calculation.
16980
16981 2005-03-14  Sebastien Pouliot  <sebastien@ximian.com>
16982
16983         * declsec.c: Reworked linkdemand checks for icall. The previous code
16984         was using the declaration code (untrusted) and didn't work as expected
16985         with the CLR 2.0. We're now more compatible with 2.0 than 1.x for this
16986         specific case.
16987
16988 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
16989
16990         * iltests.il: Add new localloc test.
16991
16992         * mini-amd64.c: Handle large stack allocations the same way as on
16993         windows if stack overflow handling is working.
16994         
16995         * mini-amd64.c: Allocate the signal stack using mmap.
16996
16997         * mini.c (sigsegv_signal_handler): Fix reading of context.
16998
16999         * mini-exceptions.c: Fix up stack overflow handling.
17000
17001         * mini-amd64.h mini-amd64.c: Fix up stack overflow handling.
17002
17003         * tramp-amd64.c (create_specific_trampoline): Optimize trampoline size.
17004
17005         * exceptions-amd64.c (mono_amd64_exceptions_init): Remove this.
17006
17007         * mini.h mini.c tramp-*.c: Move common trampoline code to mini.c.
17008
17009         * mini-x86.h mini-x86.c mini-amd64.h mini-amd64.c: Get rid of the
17010         tramp_init functions as they are no longer needed.
17011
17012 2005-03-12  Zoltan Varga  <vargaz@freemail.hu>
17013
17014         * tramp-amd64.c (mono_amd64_tramp_init): Fix typo.
17015         
17016         * tramp-amd64.c (mono_amd64_tramp_init): Init AOT trampoline as well.
17017
17018         * mini-amd64.h mini-amd64.c (mono_amd64_exceptions_init): Remove this.
17019         
17020         * mini.c mini-*.h: Remove OUT_OF_LINE_BBLOCK defines since all arches
17021         support that now.
17022
17023         * mini-ops.h: Add OP_LMUL_IMM.
17024
17025         * mini.c jit-icalls.cmini-amd64.h mini-amd64.c cpu-amd64.md: Implement
17026         long mul/div opcodes as intrinsic.
17027
17028         * mini-amd64.c (emit_call): Handle the case when the callee might be
17029         an AOT method.
17030
17031 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
17032
17033         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Reorder cases to be
17034         extra safe.
17035         
17036         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Fix ordering of cases.
17037
17038         * aot.c (mono_aot_load_method): Get rid of bogus make_writable call.
17039
17040 2005-03-09  Ben Maurer  <bmaurer@ximian.com>
17041
17042         * mini.c (mono_codegen): Don't leak here, to help people running
17043         monogrind.
17044
17045 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
17046
17047         * mini-amd64.c (mono_arch_output_basic_block): Fix int->float 
17048         conversions in sse2 mode.
17049
17050         * basic-float.cs: Add regression test.
17051         
17052         * mini-amd64.c: Reenable sse2.
17053
17054 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
17055
17056         * mini-amd64.c: Disable sse2 until some regressions are fixed.
17057
17058 2005-03-07      Joerg Rosenkranz <joergr@voelcker.com>
17059
17060         * driver.c: Copyright text should include 2005.
17061         
17062 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
17063
17064         * cpu-amd64.md (load_membase): Fix more max lengths.
17065
17066 2005-03-06  Zoltan Varga  <vargaz@freemail.hu>
17067
17068         * cpu-amd64.md (load_membase): Fix max length.
17069
17070         * mini-ops.h: Add OP_F<xx>_MEMBASE opcodes.
17071
17072         * inssel.brg: Add MONO_EMIT_BIALU_MEMBASE macro.
17073
17074         * cpu-amd64.md inssel-amd64.brg mini-amd64.h mini-amd64.brg: Finish SSE2
17075         support and enable it by default. Also add OP_F<xxx>_MEMBASE opcodes.
17076
17077         * basic-float.cs: Add rounding regression test.
17078
17079         * mini-amd64.c (INST_IGNORES_CFLAGS): Add more instructions.
17080
17081 2005-03-04  Neale Ferguson <NealeFerguson@earthlink.net>
17082
17083         * inssel-s390.brg, mini-s390.c: Add support for passing/returning small
17084         structures in registers for pinvoke wrappers.
17085
17086 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
17087
17088         * mini-exceptions.c (ves_icall_get_trace): Return wrapper info as well.
17089
17090 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
17091
17092         * mini.h mini.c mini-x86.c: Pass the domain of the native->managed
17093         wrapper to mono_jit_thread_attach.
17094
17095         * mini.c (mini_jit_thread_attach): New jit icall.
17096
17097         * mini-x86.c (mono_arch_emit_prolog): Attach to the VM in 
17098         native->managed wrappers.
17099
17100         * exceptions.cs: Add new regression test.
17101
17102         * mini.c (optimize_branches): Check regions in the cbranch to throw
17103         block case as well. Fixes #73242.
17104
17105 Tue Mar 1 18:35:27 CET 2005 Paolo Molaro <lupus@ximian.com>
17106
17107         * mini.c: thread safety fixes.
17108
17109 2005-02-27  Zoltan Varga  <vargaz@freemail.hu>
17110
17111         * tramp-amd64.c (amd64_magic_trampoline): Disable the method_ptr
17112         patching stuff, since delegates use jump trampolines so there is
17113         no caller.
17114
17115         * tramp-amd64.c (create_trampoline_code): Pass NULL as 'code' in 
17116         jump trampolines.
17117         
17118         * tramp-amd64.c: Fix build.
17119
17120         * mini-x86.c tramp-x86.c: Moved get_vtable_slot_addr into mini-x86.c and rename
17121         it to mono_arch_.... Add get_delegate_method_ptr implementation for x86.
17122
17123         * mini-amd64.h mini.h mini-amd64.c tramp-amd64.c (mono_amd64_get_vcall_slot_addr):
17124         Rename this to mono_arch....
17125         (mono_amd64_get_delegate_method_ptr_addr): Ditto.
17126
17127         * mini-amd64.c (mono_amd64_get_delegate_method_ptr_addr): New helper function.
17128
17129         * mini-amd64.c (emit_call): If both the caller and the callee is
17130         guaranteed to have 32 bit addresses, emit a normal call.
17131
17132         * tramp-amd64.c: Adapt to changes in mini-amd64.c.
17133
17134         * tramp-amd64.c (amd64_magic_trampoline): Remove patching of trampolines. 
17135         * tramp-amd64.c (amd64_magic_trampoline): Add support for patching the
17136         method_ptr inside delegates.
17137
17138 2005-02-26  Zoltan Varga  <vargaz@freemail.hu>
17139
17140         * mini.c (mono_jit_free_method): Free the method info even if the native code is
17141         invalidated. Fixes #73001.
17142
17143         * mini.c: Add a proper icall wrapper for mono_delegate_ctor.
17144
17145         * mini-x86.c: Only use stdcall for pinvokes on windows.
17146
17147 Thu Feb 24 15:22:30 CET 2005 Paolo Molaro <lupus@ximian.com>
17148
17149         * mini.c, mini.h: make mono_lmf_addr a fast-access thread var.
17150         * mini-x86.c: remove unreliable __thread var offset detection,
17151         use the correct accessors and enable by default.
17152
17153 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
17154
17155         * mini.c (mono_jit_free_method): Fix memory leak.
17156
17157 2005-02-22  Zoltan Varga  <vargaz@freemail.hu>
17158
17159         * mini.c (mono_method_to_ir): Allocate a GOT var for THROW and RETHROW. 
17160
17161 2005-02-21  Zoltan Varga  <vargaz@freemail.hu>
17162
17163         * cpu-amd64.md: Fix lengths of atomic opcodes.
17164
17165 Mon Feb 21 16:52:20 CET 2005 Paolo Molaro <lupus@ximian.com>
17166
17167         * driver.c: try to not imply using ICU is any good.
17168
17169 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
17170
17171         * mini-amd64.c (mono_arch_get_inst_for_method): Implement more 
17172         functions as inline ops.
17173
17174         * mini-ops.h inssel-amd64.brg cpu-amd64.md mini-amd64.c: Implement
17175         some Interlocked functions as inline ops.
17176
17177         * mini.c (move_basic_block_to_end): Fix bug in last patch.
17178
17179         * mini.h (MonoBasicBlock): Reorganize fields a bit.
17180
17181         * mini-ops.h inssel.brg: Add OP_NOT_REACHED.
17182
17183         * mini.c: Add support for OP_NOT_TAKEN.
17184
17185         * mini-amd64.h mini-amd64.c: Add support for passing/returning small 
17186         structures in registers for pinvoke wrappers.
17187
17188         * mini-amd64.c: Fix warnings.
17189
17190 2005-02-19  Zoltan Varga  <vargaz@freemail.hu>
17191
17192         * mini.h (MonoCompile): Add 'ret_var_is_local' field.
17193
17194         * mini.h mini.c (mono_arch_create_vars): Add new arch specific hook.
17195
17196         * mini.c (NEW_RETLOADA): If the ret variable is a local, use its 
17197         address instead of loading the address from it.
17198
17199         * mini-x86.c: Add support for returning small structs in registers
17200         on Win32. Fixes part of #70864.
17201         
17202 2005-02-18  Zoltan Varga  <vargaz@freemail.hu>
17203
17204         * trace.c (get_token): Improve error checking.
17205
17206 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
17207
17208         * jit-icalls.c (mono_ldvirtfn): Explicitly check for a NULL obj here.
17209
17210 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com> 
17211  
17212         * mini.h: Moved MONO_EXCEPTION_* enum to metadata/class-internals.h so
17213         it can be reused for MonoClass.
17214         * mini.c: Renamed MONO_EXCEPTION_SECURITY to MONO_EXCEPTION_SECURITY
17215         _LINKDEMAND.
17216
17217 2005-02-15  Sebastien Pouliot  <sebastien@ximian.com>
17218
17219         * mini.c: Fixed 2 cases where I sent a MonoMethod to managed code 
17220         instead of a MonoReflectionMethod. The method information wasn't used
17221         when displaying SecurityException details (but will be now).
17222
17223 2005-02-15  Atsushi Enomoto  <atsushi@ximian.com>
17224
17225         * Makefile.am : windows build fix.
17226
17227 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
17228
17229         * iltests.il: Add new regression test.
17230
17231         * mini.c (mono_method_to_ir): Allocate a GOT var in CEE_NEWOBJ. Fixes
17232         #72522.
17233
17234 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com> 
17235  
17236         * mini.c: Moved linkdemand check into helper function check_linkdemand
17237         to allow reuse for all intructions (CALL, CALLVIRT, NEWOBJ, JMP, 
17238         LDFTN, LDVIRTFTN).
17239
17240 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com>
17241
17242         * declsec.c: Added statistics counter for different kinds of 
17243         LinkDemands.
17244         * mini.h: Added CAS statistic counters to MonoJitStats. Removed unused
17245         (and commented) declaration.
17246         * mini.c: Added statistics counter for security Demand code 
17247         generation. Added display of security statistics.
17248
17249 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
17250
17251         * declsec.c (mono_declsec_linkdemand_aptc): Applied patch from Robert Jordan (robertj@gmx.net).
17252         Fix compilation errors under gcc-2.95.
17253
17254 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
17255
17256         * mini.c, driver.c: Use the new jit trampoline hashtable
17257
17258 Fri Feb 11 18:47:11 CET 2005 Paolo Molaro <lupus@ximian.com>
17259
17260         * mini.c, jit-icalls.c: use the managed implementation of memcpy, too.
17261
17262 2005-02-11  Martin Baulig  <martin@ximian.com>
17263
17264         * debug-mini.c (mono_debug_close_method): Free the line number array.
17265
17266 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
17267
17268         * aot.c: Break up large methods into smaller ones. Share GOT slots for
17269         icalls.
17270
17271         * mini.h: Bump AOT file format version. 
17272
17273 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
17274
17275         * declsec.c: Added LinkDemand support and it's special cases for ECMA,
17276         APTC and P/Invoke.
17277         * declsec.h: Added macros to get/set lazyly initialized security 
17278         informations about assemblies. Added new enum for different type of
17279         possible LinkDemand violation. Added function to check LinkDemands.
17280         * mini.h: Added a field to MonoCompile to hold any security violation
17281         detected when JITting a method (so it can be thrown later).
17282         * mini.c: Added LinkDemand checks in mono_method_to_ir for CEE_CALL 
17283         and CEE_CALLVIRT. Added code to throw exception at the end of
17284         mini_method_compile (note: the exception is unhandled right now).
17285
17286 Thu Feb 10 15:49:44 CET 2005 Paolo Molaro <lupus@ximian.com>
17287
17288         * mini.c, jit-icalls.c: use the managed implementation of
17289         memset for initobj and memset, to avoid managed <-> unmanaged
17290         transitions.
17291
17292 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
17293
17294         * inssel.brg (mini_emit_virtual_call): Disable the virtual->nonvirtual
17295         optimization if it would need a GOT var.
17296
17297         * basic.cs: Add tests for constant propagation and switch statements.
17298
17299         * ssa.c: Fix out-of-range constant propagation and switch statements.
17300
17301 2005-02-09    <vargaz@freemail.hu>
17302
17303         * inssel-x86.brg (reg): Align the allocation size in the localloc(imm) case too.
17304
17305 2005-02-08  Zoltan Varga  <vargaz@freemail.hu>
17306
17307         * cpu-amd64.md (load_membase): Fix max length of load_membase.
17308
17309 Tue Feb 8 18:21:11 CET 2005 Paolo Molaro <lupus@ximian.com>
17310
17311         * mini.c: update to new signature of mono_class_get_allocation_ftn().
17312
17313 2005-02-06  Neale Ferguson <NealeFerguson@earthlink.net>
17314
17315         * cpu-s390.md,  mini-s390.c: Correct bug with register usage on certain 
17316         arithmetic operations.
17317
17318 Sun Feb 6 07:10:12 EST 2005 Paolo Molaro <lupus@ximian.com>
17319
17320         * mini-ppc.c: add a workaround for broken user code that
17321         DllImports vararg functions with non-vararg signatures.
17322
17323 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
17324
17325         * mini.c (mono_jit_compile_method_inner): Add detection and a 
17326         meaningfull error message for assemblies written in Managed C++.
17327
17328         * tramp-amd64.c mini-amd64.h: Add support for 
17329         create_trampoline_from_token ().
17330
17331         * aot.c mini-x86.c abcremoval.c: Applied patch from
17332         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
17333
17334 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
17335
17336         * mini.h mini.c mini-x86.h tramp-x86.c: Add a new kind of trampoline 
17337         which takes a MonoImage/token as parameter instead of a MonoMethod.
17338
17339         * aot.c: Use the new trampoline for initializing vtables.
17340
17341         * aot.c: Add support for ldfld/stfld_remote wrappers.
17342
17343         * mini-ops.h cpu-pentium.md inssel-x86.brg mini-x86.c: Add optimized
17344         rules for compare <MEM>, IMM.
17345
17346         * mini.h (MONO_AOT_FILE_VERSION): Bump it.
17347
17348         * aot.c: Handle inherited finalizers correctly.
17349
17350 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
17351
17352         * inssel.brg (stmt): Add a missing _setup_... ().
17353
17354         * aot.c: Save some parts of the class state to the AOT file and use it
17355         to recompute that state when a class is initialized.
17356
17357         * mini.c: Install AOT hooks into the runtime.
17358
17359         * mini.h: Bump AOT file format version.
17360         
17361         * mini.c (mono_method_to_ir): Initialize pointer type locals correctly.
17362         Fixes #72148.
17363
17364         * iltests.il: Add new test.
17365
17366 Wed Feb 2 16:53:59 CET 2005 Paolo Molaro <lupus@ximian.com>
17367
17368         * mini.c: fix typo.
17369
17370 Wed Feb 2 16:37:13 CET 2005 Paolo Molaro <lupus@ximian.com>
17371
17372         * mini.c: setup the statistical profiler in the thread attach
17373         callback to cope with the new single thread code.
17374
17375 Wed Feb 2 15:43:58 CET 2005 Paolo Molaro <lupus@ximian.com>
17376
17377         * mini-ppc.c: ensure we have enough room for the profiler
17378         calls (fixed bug#72084).
17379
17380 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
17381
17382         * aot.c: Get rid of the MonoAotMethod structure and the hashtable holding 
17383         it.
17384
17385 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
17386
17387         * driver.c: Re-enabled SSAPRE (two commits, I was just dumb).
17388
17389 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
17390
17391         * ssapre.c: Fixed an issue with down safety (this allows IronPython
17392         to succesfully execute parrotbench).
17393         * ssapre.h: Likewise.
17394
17395 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
17396
17397         * ssa.c: In mono_ssa_rename_vars, forced the creation of a new SSA
17398         variable for stores to method arguments (fixes a SSAPRE issue).
17399
17400 Tue Feb 1 15:52:26 CET 2005 Paolo Molaro <lupus@ximian.com>
17401
17402         * mini.c: handle value types in dup, fixes gen-112.cs.
17403
17404 Tue Feb 1 11:45:19 CET 2005 Paolo Molaro <lupus@ximian.com>
17405
17406         * mini-ppc.c, cpu-g4.md, tramp-ppc.c: use a slower code
17407         sequence for calls in dynamic methods to avoid thunks.
17408
17409 Tue Feb 1 11:44:01 CET 2005 Paolo Molaro <lupus@ximian.com>
17410
17411         * mini.c: correctly remove dynamic methods from the hashtable.
17412
17413 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
17414
17415         * driver.c: Disabled SSAPRE until fix the bug that appears
17416         in IronPython's parrotbench.
17417
17418 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
17419
17420         * aot.c (mono_compile_assembly): Get rid of Skip (other) messages.
17421
17422         * mini.c (mono_method_to_ir): Revert the previous change.
17423         
17424         * mini.c (mono_method_to_ir): Do not inline ldfld and stfld wrappers
17425         when AOT compiling.
17426
17427         * tramp-x86.c (x86_magic_trampoline): Avoid calls to 
17428         mono_jit_info_table_find () etc. when running under valgrind.
17429
17430         * inssel.brg: Fix warnings.
17431
17432         * mini-exceptions.c: Fix warnings.
17433
17434 2005-01-31  Martin Baulig  <martin@ximian.com>
17435
17436         * driver.c (compile_all_methods_thread_main): Don't try to compile
17437         generic methods or anything which has type parameters.
17438
17439 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
17440
17441         * aot.c: Avoid costly calls to mono_method_full_name in tracing code and fix memory leaks.
17442
17443         * TestDriver.cs: Add --verbose flags.
17444
17445         * graph.c ssa.c: Fix 64 bit warnings.
17446         
17447         * abcremoval.h ssapre.h abcremoval.c ssapre.c mini.c tramp-amd64.c 
17448         trace.c mini-exceptions.c linear-scan.c inssel-amd64.brg inssel.brg:
17449         Fix 64 bit warnings.
17450
17451         * mini-amd64.c (mono_arch_output_basic_block): Fix uninitialized
17452         variable not spotted by gcc.
17453         
17454         * mini-amd64.c inssel-amd64.brg: Applied patch from  
17455         Willibald Krenn <Willibald.Krenn@gmx.at>. Clean up usage of 
17456         X86_COMPARE_MEMBASE opcodes.
17457
17458         * exceptions-amd64.c (mono_arch_find_jit_info): Fix AMD64 build.
17459
17460 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
17461
17462         * *: MonoMethod->signature might be NULL now. You *MUST* use
17463         mono_method_signature.
17464
17465 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
17466
17467         * driver.c (compile_all_methods_thread_main): Compile the methods
17468         without invoking cctors.
17469
17470 Fri Jan 28 18:28:26 CET 2005 Paolo Molaro <lupus@ximian.com>
17471
17472         * mini.c: remove ben's "optimizations" to dup+stloc (bug #71905).
17473         * basic-calls.cs: test for the above.
17474
17475 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
17476
17477         * mini.c mini-exceptions.c aot.c exceptions-*.c: Update after 
17478         MonoJitInfo changes.
17479
17480 2005-01-27  Zoltan Varga  <vargaz@freemail.hu>
17481
17482         * mini-exceptions.c (mono_handle_exception): Compute the stack trace
17483         eagerly if it contains dynamic methods.
17484         
17485         * mini-exceptions.c (ves_icall_System_Exception_get_trace): New icall.
17486
17487         * mini-exceptions.c (mono_handle_exception): Avoid computing the stack
17488         trace, it is now computed by an icall from trace_ips.
17489         
17490         * mini-exceptions.c: Fix a warning.
17491
17492 Thu Jan 27 13:38:34 CET 2005 Paolo Molaro <lupus@ximian.com>
17493
17494         * mini-exceptions.c: don't bother getting stack trace info if
17495         it's not going to be used.
17496
17497 2005-01-27  Raja R Harinath  <rharinath@novell.com>
17498
17499         * Makefile.am (common_sources): Add ssapre-cee-ops.h and
17500         ssapre-mini-ops.h.
17501
17502 2005-01-26  Zoltan Varga  <vargaz@freemail.hu>
17503
17504         * mini.c (remove_block_if_useless): Only print debug stuff with -v -v.
17505
17506         * aot.c: Avoid calling mono_method_get_header () if not needed.
17507
17508         * mini.h: Bump AOT file format version.
17509         
17510         * mini.c (mono_emit_native_call): Allocate a GOT var here.
17511
17512         * mini.c (mono_print_tree): Print more info for calls.
17513
17514 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
17515
17516         * declsec.h: Remove warning by adding missing include for marshal.h
17517
17518 2005-01-26  Martin Baulig  <martin@ximian.com>
17519
17520         * mini.c (mono_method_to_ir): In CEE_UNBOX_ANY, don't increase
17521         `ip' twice.
17522
17523 2005-01-25  Zoltan Varga  <vargaz@freemail.hu>
17524
17525         * mini-amd64.c (mono_arch_call_opcode): Add missing MONO_SSA_LOAD/STORE
17526         flags.
17527
17528         * ssa.c (mono_ssa_compute): Fix crashes when using AOT.
17529
17530         * aot.c (mono_compile_assembly): Fix a warning.
17531
17532 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com>
17533
17534         * declsec.c: Look for security attributes on the original MonoMethod 
17535         (and not the wrapped one). This fix permissions on icalls.
17536
17537 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
17538
17539         * mini-amd64.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
17540
17541         * mini.c (mono_allocate_stack_slots): Add a fixme.
17542
17543         * mini-x86.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
17544
17545 Sun Jan 23 16:16:48 CET 2005 Paolo Molaro <lupus@ximian.com>
17546
17547         * inssel.brg: optimize casts of sealed types (more
17548         optimizations waiting for fixes in remoting).
17549
17550 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
17551
17552         * inssel.brg (stmt): Add another dummy rule.
17553
17554         * driver.c: Fix warnings.
17555
17556         * driver.c (mono_main): If running under valgrind, instruct glib to use
17557         the system allocation functions so valgrind can track the memory
17558         allocated by the g_... functions.
17559
17560         * inssel.brg (stmt): Add DUMMY rule for OP_DUMMY_STORE.
17561
17562         * mini-ops.h: Add OP_DUMMY_STORE opcode.
17563
17564         * mini.h (MONO_BBLOCK_IS_IN_REGION): New helper macro.
17565
17566         * liveness.c: Handle OP_DUMMY_STORE. Enable register allocation for
17567         variables in try regions.
17568
17569         * mini.c (mini_method_compile): Don't disable optimizations on large
17570         methods when AOT compiling.
17571
17572         * mini.c (mono_allocate_stack_slots): New arch independent method to 
17573         allocate stack slots. Not yet used.
17574
17575 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
17576
17577         * debug-mini.c (mono_debug_close_method): Plug some leaks.
17578
17579 Sat Jan 22 13:41:51 EST 2005 Paolo Molaro <lupus@ximian.com>
17580
17581         * mini-ppc.c: make the branch info relative as the code
17582         buffer can be reallocated.
17583
17584 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
17585
17586         * aot.c: Allow decoding of the new  MONO_PATCH_INFO_DECLSEC.
17587         * driver.c: Removed the AOT/security restriction. Now initialize the
17588         security manager (in metadata) if --security is used.
17589         * mini.c|h: Add the MONO_PATCH_INFO_DECLSEC code to use the index,
17590         rather than the pointer to declarative security, when AOT is used.
17591
17592 Sat Jan 22 09:35:19 EST 2005 Paolo Molaro <lupus@ximian.com>
17593
17594         * mini.h, mini-ppc.h, mini-ppc.c: updated to use out of line
17595         basic blocks, reduced intrinsic exception throwing code size.
17596
17597 2005-01-22  Miguel de Icaza  <miguel@ximian.com>
17598
17599         * driver.c (mini_usage): Reorder the usage screen.
17600
17601 2005-01-21  Zoltan Varga  <vargaz@freemail.hu>
17602
17603         * mini.c (mono_resolve_patch_target): Fix warning.
17604
17605 2005-01-20  Zoltan Varga  <vargaz@freemail.hu>
17606
17607         * mini-x86.c (mono_arch_local_regalloc): Fix bug introduced by
17608         previous patch.
17609
17610         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
17611
17612         * mini-amd64.c (mono_arch_local_regalloc): Revert last patch as it
17613         breaks the amd64 build.
17614
17615         * mini-x86.c (mono_arch_local_regalloc): Fix bug in div/rem 
17616         register allocation. Fixes #71454.
17617
17618         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
17619
17620         * arrays.cs: Add new regression test.   
17621
17622 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
17623
17624         * ssapre.c: Turned usage of snprintf to GString.
17625         * ssapre.h: disabled MONO_APPLY_SSAPRE_TO_SINGLE_METHOD
17626         (I left it on by mistake in my previous commit).
17627
17628 Thu Jan 20 12:00:45 CET 2005 Paolo Molaro <lupus@ximian.com>
17629
17630         * mini.c, cfold.c, basic-calls.cs: preserve side effects
17631         on cond branch optimization (fixes bug# 71515).
17632
17633 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
17634
17635         * abcremoval.c: Fixed bug 71062.
17636         * abcremoval.h: Likewise.
17637
17638 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
17639
17640         * mini.c: Added a new functionality to optimize_branches, the removal
17641         of useless basic blocks, and fixed some problem in the removal of
17642         critical edges; some utility functions added for both purposes.
17643         * ssapre.c: Added complex expression support, and fixed bug 70637.
17644         * ssapre.h: Likewise.
17645         * ssapre-cee-ops.h: Added file with list of "CEE_*" opcodes
17646         enabled in SSAPRE.
17647         * ssapre-mini-ops.h: Likewise, but for "OP_*" opcodes.
17648         * driver.c: Re-enabled SSAPRE.
17649
17650 2005-01-19  Martin Baulig  <martin@ximian.com>
17651
17652         * mini.c (mono_method_to_ir): Call mono_get_inflated_method() on
17653         the result of mono_get_method_constrained().
17654
17655 2005-01-18  Neale Ferguson <NealeFerguson@earthlink.net>
17656
17657         * exceptions-s390.c tramp-s390.c: Allocate code using the global code
17658         manager.
17659
17660 2005-01-18  Geoff Norton  <gnorton@customerdna.com>
17661
17662         * jit-icalls.c (mono_llmult_ovf): Fix other overflow conditions to
17663         be detected.  Fixes #59296.
17664
17665 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
17666
17667         * mini-amd64.c (mono_arch_output_basic_block): Remove some assertions
17668         which can happen. Fixes #71361.
17669
17670 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
17671
17672         * exceptions-sparc.c tramp-sparc.c: Allocate code using the global code
17673         manager.
17674
17675 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
17676
17677         * mini.c (mono_create_jump_trampoline): Revert last change as it causes
17678         appdomain-unload.exe to fail.
17679         
17680         * mini.c: Fix some memory leaks.
17681
17682 Mon Jan 17 16:16:23 CET 2005 Paolo Molaro <lupus@ximian.com>
17683
17684         * inssel.brg: handle the new size of rank, idepth, max_interface_id.
17685         Fixed bug and sped up some codepaths.
17686
17687 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
17688
17689         * mini.c: Fix some memory leaks.
17690
17691         * exceptions.cs basic-long.cs: Add test for checked ulong->int 
17692         conversion.
17693
17694         * inssel-long.brg: Implement long_conv_to_ovf_i4_un. Fixes #71319.
17695
17696         * inssel-long.brg: Fix conv.ovf.i8 when run on an int32. Fixes
17697         #71320.
17698
17699         * iltests.il: Add regression test for #71320.
17700
17701 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
17702
17703         * mini.c (mono_codegen): Fix installation of profiler hooks.
17704
17705         * mini-sparc.c mini-amd64.c: Don't allocate stack space for dead vars.
17706
17707 Sun Jan 16 12:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
17708
17709         * mini.h, mini.c, cfold.c: optimize access to enum
17710         readonly fields, too. Eval conditional branches if possible
17711         to perform unreachable code removal in more cases.
17712
17713 2005-01-15  Zoltan Varga  <vargaz@freemail.hu>
17714
17715         * tramp-amd64.c exceptions-amd64.c: Use the new global code manager.
17716
17717         * mini.c (mono_global_codeman_reserve): New function to allocate code memory from a global
17718         code manager.
17719
17720         * tramp-x86.c mini-x86.c exceptions-x86.c: Allocate all code memory so mono works with
17721         WinXP DEP. Fixes #71244.
17722
17723 2005-01-14  Zoltan Varga  <vargaz@freemail.hu>
17724
17725         * inssel.brg: Allways convert CEE_CONV_OVF_I4 to a move on 64 bit platforms. Fixes #71236.
17726
17727 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
17728
17729         * mini-x86.c (mono_arch_output_basic_block): Fix OP_ATOMIC_ADD_NEW_I4.
17730
17731 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
17732
17733         * mini-exceptions.c exceptions-ppc.c aot.c: Cope with MonoJitInfo 
17734         changes.
17735
17736         * mini.h: Bump AOT version.
17737
17738         * mini.h (MonoCompile): Change exvar to a hash table.
17739
17740         * mini.c: Allocate a separate exvar for each handler block.
17741
17742         * mini.c: Get rid of the computation of filter_lengths, its not needed.
17743
17744         * mini.c inssel.brg: Change OP_THROW_OR_NULL to compare the current
17745         ex var with the pending exception and only throw if the two are equal.
17746         Fixes #68552.
17747         
17748         * exceptions.cs: Add tests for rethrow and nested catch clauses.
17749
17750         * mini-x86.c: Fix warnings.
17751
17752         * Makefile.am (common_sources): Move mini-exceptions.c here as it is
17753         used by all the ports now.
17754
17755         * aot.c: Add write-symbols and save-temps options.
17756
17757 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
17758
17759         * mini-x86.c: Add support for returning structs in registers from pinvoke functions on WIN32.
17760
17761 Mon Jan 10 16:11:16 EST 2005 Neale Ferguson <nealeferguson@earthlink.net>
17762
17763         * mini-ops.h, inssel-s390.brg, cpu-s390.md: Support OP_ATOMIC__xxx 
17764         operations.
17765
17766         * tramp-s390.c: Check vtable slot belongs to the domain.
17767
17768         * mini-exceptions.c, exceptions-s390.c: Standardize exception handling
17769         as per other platforms.
17770
17771         * mini-s390.c, mini-s390.h: Enable out-of-line bblock support.
17772
17773 Mon Jan 10 18:53:05 CET 2005 Paolo Molaro <lupus@ximian.com>
17774
17775         * driver.c: we don't run the Main() code in a subthread anymore.
17776
17777 Mon Jan 10 17:54:16 CET 2005 Paolo Molaro <lupus@ximian.com>
17778
17779         * mini.c: added experimental rtc support in the statistical
17780         profiler: if the user has the permission, more accurate statistics
17781         are gathered. Run with: MONO_RTC=4096 mono --profiler=default:stat ....
17782         The MONO_RTC value must be restricted to what the linux rtc allows:
17783         power of two from 64 to 8192 Hz.
17784
17785 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
17786
17787         * mini-x86.c (mono_arch_emit_exceptions): Fix #71121.
17788
17789 Mon Jan 10 05:20:49 EST 2005 Paolo Molaro <lupus@ximian.com>
17790
17791         * mini-ppc.c: better icache flush for smp.
17792
17793 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
17794
17795         * mini-amd64.c (emit_move_return_value): Fix memory leak.
17796
17797         * mini-x86.c (get_call_info): Add the get_call_info () code from the
17798         amd64 port, not yet used.
17799
17800 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
17801
17802         * mini.c (mono_method_to_ir): Disable inlining of ldfld wrappers with
17803         a struct type.
17804
17805 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
17806
17807         * driver.c: Added --security option to activate the security manager.
17808         Right now this will allow code generation for declarative demands and
17809         is disabled when AOT is specified.
17810         * mini.c: Add code generation for declarative security demands.
17811         * mini.h: Add mono_use_security_manager as an extern gboolean.
17812
17813 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
17814
17815         * aot.c (mono_compile_assembly): Speed up compilation a bit by
17816         emitting more dense assembly code.
17817
17818         * mini-sparc.c mini-sparc.h exceptions-sparc.c: Enable optimized corlib
17819         exception throwing stuff.
17820
17821 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
17822
17823         * mini-sparc.c (mono_arch_emit_exceptions): Fix typo in previous patch. Remove
17824         dead code.
17825
17826         * mini-amd64.c (mono_arch_emit_exceptions): Remove duplicate epilog stuff
17827         left in by mistake.
17828
17829         * driver.c (EXCLUDED_FROM_ALL): Disable SSAPRE until bug #70637 is 
17830         fixed.
17831
17832         * mini-sparc.h mini-sparc.c: Enable out-of-line bblock support.
17833
17834         * tramp-*.c: Only patch vtable slots if the object is in the current
17835         domain. Fixes appdomain-unload.exe.
17836
17837         * mini-amd64.c mini-amd64.h: Enable out-of-line bblock support.
17838         
17839         * mini-amd64.c (mono_arch_local_regalloc): Port regalloc fix from
17840         x86 branch.
17841
17842 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
17843
17844         * mini.c (reverse_branch_op): New helper function.
17845
17846         * mini.c (optimize_branches): Run the new optimization only on 
17847         platforms which support it. Also reverse all kinds of branches.
17848
17849         * mini.h (MonoBasicBlock): Add 'out_of_line' field.
17850
17851         * mini.c (mono_method_to_ir): Set 'out_of_line' for bblocks which have
17852         a throw statement.
17853
17854         * mini.c (optimize_branches): Reverse not-equals branches if the false
17855         bblock is a throw. This happens a lot of time with argument checking in
17856         corlib.
17857
17858         * mini.c (mono_codegen): Add support for placing basic blocks after
17859         the function epilogue.
17860
17861         * mini-x86.c mini-x86.h: Add support for placing basic blocks after the
17862         function epilogue.
17863         
17864 2005-01-05  Miguel de Icaza  <miguel@ximian.com>
17865
17866         * mini.c (setup_stat_profiler): Only set this up if the platform
17867         supports ITIMER_PROF.
17868
17869 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
17870
17871         * mini-x86.c (mono_arch_local_regalloc): Fix a bug introduced by the
17872         previous patch.
17873
17874         * inssel.brg: Fix a warning.
17875
17876 Wed Jan 5 16:40:18 CET 2005 Paolo Molaro <lupus@ximian.com>
17877
17878         * mini.c: added support for statistical profiler 
17879         (run with: --profile=default:stat).
17880
17881 2005-01-04  Zoltan Varga  <vargaz@freemail.hu>
17882
17883         * mini-x86.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Enable this on x86.
17884
17885         * mini-x86.c cpu-pentium.md: More fixes for usage of global registers.
17886
17887         * mini-amd64.c (mono_arch_local_regalloc): Port some regalloc fixes 
17888         related to global registers from the amd64 port.
17889
17890 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
17891
17892         * mini.c (mono_method_to_ir): Handle MONO_CLASSCONST.
17893
17894         * mini-amd64.c (mono_arch_local_regalloc): Fix some regalloc problems
17895         with global registers.
17896         (mono_arch_output_basic_block): Fix SWITCH in the AOT case.
17897
17898         * aot.c (emit_method_code): Fix the 'method emitted as' messages.
17899
17900 2004-12-31  Zoltan Varga  <vargaz@freemail.hu>
17901
17902         * debug-mini.c (encode_value): Fix off-by-one.
17903
17904         * aot.c (encode_value): Likewise.
17905
17906         * mini.c (mono_method_to_ir): Disable AOT for methods containing LDPTR.
17907
17908 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
17909
17910         * mini.c linear-scan.c: Add a workaround for the mcs crash when using 
17911         AOT.
17912
17913         * aot.c (mono_aot_load_method): Free up patch info if no longer needed.
17914         
17915         * aot.c (emit_method_info): Increase size of temp buffer.
17916
17917         * mini-x86.c cpu-pentium.md mini.c: Load fp constants differently in 
17918         the AOT case.
17919
17920 2004-12-28  Zoltan Varga  <vargaz@freemail.hu>
17921
17922         * aot.c (emit_method_info): Fix build.
17923         
17924         * aot.c: Further rework of the AOT file format to reduce the size of
17925         the method info data.
17926
17927         * mini.h: Bump AOT file format version.
17928
17929 2004-12-27  Martin Baulig  <martin@ximian.com>
17930
17931         * mini.c (mini_get_method): New static method; call
17932         mono_get_method_full() and mono_get_inflated_method().
17933         (mono_method_to_ir): Use mini_get_method() instead of
17934         mono_get_method_full(). 
17935
17936 2004-12-26  Patrik Torstensson  <patrik.torstensson@gmail.com>
17937
17938         * mini-x86.c (atomic ops): fixed bug interlocked bug #70784. 
17939
17940 2004-12-25  Zoltan Varga  <vargaz@freemail.hu>
17941
17942         * inssel.brg (ldind_to_load_membase): Handle CEE_LDIND_I8.
17943
17944         * inssel-amd64.brg: Add some optimization rules.
17945
17946 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
17947
17948         * aot.c: Remove the use of MonoGHashTable and other GC stuff. The
17949         standard not GC'd stuff is fine.
17950
17951 2004-12-24  Zoltan Varga  <vargaz@freemail.hu>
17952
17953         * aot.c: Rework the AOT file format to get rid of most of the global
17954         symbols. This reduces the size of the mscorlib.dll.so by 1MB.
17955
17956         * mini.h: Bump AOT file format version.
17957         
17958 2004-12-23  Zoltan Varga  <vargaz@freemail.hu>
17959
17960         * mini.h: Bump AOT file format version.
17961
17962         * aot.c (mono_aot_is_got_entry): New function to determine if an 
17963         address is inside a GOT.
17964
17965         * aot.c mini-x86.c tramp-x86.c: Make all patches use the GOT.
17966
17967         * cpu-pentium.md: Increase the maximum size of some instructions which
17968         might involve a got access.
17969         
17970         * mini.c (get_method_from_ip): Another debug helper function.
17971
17972         * mini.c: Call mono_get_got_var () in a couple places. Handle the case
17973         when got var accesses are created during the decompose phase.
17974
17975         * mini-sparc.c: Change mono_compile_aot to cfg->compile_aot.
17976
17977         * mini.h mini.c mini-x86.c aot.c mini-sparc.c: Add a 'compile_corlib'
17978         argument mini_compile_method and to MonoCompile, and use this to
17979         determine whenever a given method is compiled for AOT. This allows the
17980         other methods compiled during AOT compilation to be free of AOT stuff,
17981         so the backends does not need to add special support for them by
17982         creating a fake GOT etc.
17983
17984         * mini-x86.c (mono_arch_patch_code): Remove fake got stuff as it is no
17985         longer needed.
17986
17987 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
17988
17989         * mini.c (mono_method_to_ir): It turns out that some of the
17990         x-appdomain wrappers are lax with types, so just ignore this for
17991         all wrappers.
17992
17993         * inssel.brg (OP_CHECK_ARRAY_TYPE): Optimize this by only looking
17994         at the vtable->klass. If it is non-shared code we can just use the
17995         vtable.
17996
17997 Tue Dec 21 17:43:06 CET 2004 Paolo Molaro <lupus@ximian.com>
17998
17999         * mini-ppc.c: access MonoDomain from tls, too.
18000
18001 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com>
18002
18003         * declsec.c: Removed unused variable (and related warning ;-)
18004
18005 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
18006
18007         * iltests.il: New test for LDELEMA on an array of ref types.
18008
18009         * mini.c (CEE_LDELEMA): We need to emit OP_CHECK_ARRAY_TYPE for
18010         all ldelema's on reftypes.
18011         (check_call_signature): Remove the OP_CHECK_ARRAY_TYPE from here,
18012         it was the wrong place to put it.
18013
18014         * mini-x86.c (mono_arch_output_basic_block): Just use ecx as the
18015         register to pop to make this cleaner, at the request of Paolo.
18016
18017 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
18018
18019         * mini-ops.h (OP_GETHASHCODE): New op.
18020
18021         * inssel.brg (OP_GETHASHCODE): Emit code for the new opcode
18022
18023         * mini.c (mini_get_inst_for_method): Create the intrinsic hash
18024         operation.
18025
18026         For a microbenchmark, this reduces the cost of Hashtable.get_Item
18027         by 25%.
18028         
18029         * mini-x86.c (mono_arch_output_basic_block): Rather than
18030
18031         add ebp, 4
18032
18033         Emit
18034
18035         pop edx
18036
18037         The first is 3 bytes while the second is 1. This saves 36 kb on
18038         mscorlib, quite a big saving. When bootstraping mcs, I was able to
18039         see a small boost because of icache locality.
18040
18041         * cfold.c (FOLD_BINOPCOMM): Kill add foo, 0
18042
18043 Mon Dec 20 12:19:40 EST 2004 Paolo Molaro <lupus@ximian.com>
18044
18045         * Makefile.am, mini-ppc.h, mini-exceptions.c, exceptions-ppc.c:
18046         started code sharing with the generic code.
18047
18048 Mon Dec 20 11:08:06 EST 2004 Paolo Molaro <lupus@ximian.com>
18049
18050         * mini-ppc.c, cpu-g4.md: added code for direct access to
18051         tls data slots.
18052
18053 Mon Dec 20 10:58:28 EST 2004 Paolo Molaro <lupus@ximian.com>
18054
18055         * mini-ops.h, inssel-x86.brg, cpu-amd64.md, inssel.brg, inssel-amd64.brg,
18056          mini-amd64.c, mini-x86.c, cpu-pentium.md: renamed OP_X86_TLS_GET
18057         to OP_TLS_GET.
18058
18059 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
18060
18061         * declsec.c|h: Added functions to cache the declarative stack modifiers
18062         in MonoJitInfo and to create a security frame from a MonoJitInfo 
18063         structure.
18064         * mini.c: Initialize jinfo->cas_inited to FALSE when MonoJitInfo is
18065         created. Register internal calls for System.Security.SecurityFrame::
18066         _GetSecurityFrame and _GetSecurityStack.
18067         * mini.h: Added definition for new icalls (in mini-exceptions.c) and
18068         the definitions for the new stack walk/callback mechanism.
18069         * mini-exceptions.c: Added internal call GetSecurityFrame (to get the 
18070         first security frame for LinkDemands and InheritanceDemands) and
18071         GetSecurityStack for Demands. Both use the new mono_walk_stack code
18072         from lupus.
18073         * mini-x86.h, mini-amd64.h, mini-sparc.h: Architecture specific stack
18074         walk initialization (lupus).
18075
18076 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
18077
18078         * mini.c (mono_method_to_ir): In CEE_DUP, handle the dup / stloc
18079         idiom.
18080         (handle_loaded_temps): Do not create a temporary variable for
18081         things that we know are temps. They will never be modified.
18082         (mono_spill_call): Set MONO_INST_IS_TEMP
18083         (mono_emulate_opcode): ditto
18084         (emit_tree): ditto
18085         (mono_method_to_ir.CEE_DUP): ditto
18086
18087 2004-12-19  Ben Maurer  <bmaurer@ximian.com>
18088
18089         * mini.c (type_to_eval_stack_type): Make this handle the void type
18090         (mono_emit_call_args): set the call->type with type_to_eval_stack_type
18091         (emit_tree): use ip_in_bb to special case some common idioms
18092         Update all callers to pass in the IP.
18093         (mono_method_to_ir): Make CEE_CALL* do the above as well.
18094
18095         This gives us a nice 2% speedup in mcs bootstrap.
18096
18097         * mini-x86.c (peephole_pass): Peephole pass to make
18098         mov  [foo], eax
18099         push [foo]
18100
18101         into
18102
18103         mov [foo], eax
18104         push eax
18105
18106         * mini.c (ip_in_bb): new method.
18107         (mono_method_to_ir): use this method rather than doing the hash
18108         lookup ourselves.
18109
18110         * linear-scan.c (mono_linear_scan): When expiring actives, you
18111         don't need to keep around variables that expire on this
18112         instruction. This makes it so that:
18113              a = b + 1
18114         will turn into:
18115              store (ebx add (ebx, 1))
18116         which will become
18117              add ebx, 1
18118
18119 2004-12-19  Zoltan Varga  <vargaz@freemail.hu>
18120
18121         * mini.c (mono_method_to_ir): Optimize the common ldobj+stloc 
18122         combination to avoid doing two copies. Fix up problems with previous
18123         patch.
18124
18125         * mini.c: Fix 64 bit warnings.
18126
18127         * mini-x86.c (INST_IGNORES_CFLAGS): Add OP_STOREI4_MEMBASE_REG.
18128
18129 2004-12-17  Zoltan Varga  <vargaz@freemail.hu>
18130
18131         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Port exception handling
18132         changes from the x86 code.
18133
18134         * mini.h: Add prototype for mono_arch_get_throw_corlib_exception ().
18135
18136 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
18137
18138         * mini-x86.c (mono_arch_emit_epilog): Optimize the corlib exception
18139         throwing code to reduce its size, unify the AOT and non-aot code and 
18140         get rid of relocations in the AOT case.
18141
18142         * mini-x86.h mini.c exceptions-x86.c 
18143         (mono_arch_get_throw_corlib_exception): New arch specific function to 
18144         raise corlib exceptions which doesn't require relocations in the 
18145         caller.
18146
18147         * aot.c (emit_method): Handle PATCH_INFO_NONE as well.
18148
18149 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
18150
18151         * mini.c (mono_emit_method_call): Only allocate the got var when it is
18152         needed.
18153
18154         * mini-x86.c (mono_arch_patch_code): Add missing PATCH_INFO_METHOD_REL
18155         in the AOT case.
18156
18157 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
18158
18159         * mini-x86.c, cpu-pentium.md, inssel-x86.brg: Fixed bug
18160         with add function when used from Inc/dec atomic 
18161         functions. Re-enabled optimization on x86.
18162         * mini-ops.h: renamed atomic_add functions to
18163         allow _add to match the Interlocked::Add and
18164         _add_next to match Interlocked::Inc/Dec.
18165
18166 2004-12-15  Massimiliano Mantione  <massi@ximian.com>
18167
18168         * mini.c: Fixed a subtle bug in mono_method_to_ir, about the
18169         linking of BBs to the end BB, and enabled SSAPRE also with
18170         consprop and copyprop (which was prevented by that bug).
18171
18172 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
18173
18174         * mini-x86.c: disabling the Interlocked optimizing code. 
18175
18176 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
18177
18178         * aot.c (load_aot_module): Move reading of got_addr after the AOT
18179         file version check.
18180         
18181 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
18182
18183         * mini-x86.c, inssel-x86.brg, cpu-pentium.md: removed _imm 
18184         interlocked optimization due lack of support on x86, rewrote 
18185         exchange to take into account that base may be in eax.
18186         
18187         xsp works again; activated Interlocked optimizing code.
18188         
18189 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
18190
18191         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
18192
18193 2004-12-13  Zoltan Varga  <vargaz@freemail.hu>
18194
18195         * mini-ops.h: Add new opcodes.
18196
18197         * mini.h: Add new patch types. Add got_var to MonoCompile.
18198
18199         * mini.h mini-x86.c mini-amd64.c aot.c: Rename 
18200         mono_arch_get_aot_patch_offset () to mono_arch_get_patch_offset () and
18201         make it work with all kinds of patchable code.
18202
18203         * inssel.brg inssel-x86.brg: Add new rules dealing with computing the
18204         address of the GOT, and referencing entries in the GOT.
18205
18206         * mini.c: Add code to load the GOT address if needed by an opcode.
18207
18208         * aot.c mini-x86.h mini-x86.c cpu-pentium.md: Add support for position 
18209         independent AOT code on the x86 using an elf-style Global Offset Table.
18210
18211 2004-12-14  Raja R Harinath  <rharinath@novell.com>
18212
18213         * Makefile.am (RUNTIME): Set MONO_SHARED_DIR.
18214
18215 2004-12-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18216
18217         * mini-x86.c: disabling the Interlocked optimizing code. It segfaults
18218         when running xsp.
18219
18220 2004-12-13  Patrik Torstensson  <patrik.torstensson@gmail.com>
18221
18222         * mini-x86.c,mini-ops.h,inssel-x86.brg,cpu-pentium.md: Implementation
18223         of Interlocked:Increment/Decrement/Add as inline ops.
18224         (mini-x86.c (mono_arch_get_inst_for_method and mono_arch_output_basic_block))
18225
18226 2004-12-12  Geoff Norton  <gnorton@customerdna.com>
18227
18228         * exceptions-ppc.c: Reorder code so gcc3.4 can compile it
18229         * mini-ppc.c: Unify mono_arch_patch_code with changes in r37636.
18230
18231 2004-12-12  Duncan Mak  <duncan@ximian.com>
18232
18233         * mini-ppc.c (mono_arch_patch_code): Hopefully made this build
18234         again. `patch_info->table_size' is no longer valid after Zoltan's
18235         commit #37636.
18236
18237 2004-12-12  Martin Baulig  <martin@ximian.com>
18238
18239         * mini.c (mono_method_to_ir): Only call mono_debug_init_method()
18240         if we are the "real" method, ie. not an inlined method inside it.
18241
18242 2004-12-11  Ben Maurer  <bmaurer@ximian.com>
18243
18244         * mini.c (CEE_LDSFLD): Make sure that the vtable has been init'd
18245         before we look in the special fields table. This fixes
18246         ../tests/thread-static-init.cs.
18247
18248 2004-12-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18249
18250         * mini.c: return immediately after setting OP_ARRAY_RANK or CEE_LDLEN
18251         for Array get_Rank and get_Length. Fixes bug #70465.
18252
18253 2004-12-11  Zoltan Varga  <vargaz@freemail.hu>
18254
18255         * mini.h mini.c aot.c: Put the bblock table for a SWITCH patch into a
18256         separate structure to reduce the size of MonoJumpInfo.
18257
18258 Fri Dec 10 18:09:22 CET 2004 Paolo Molaro <lupus@ximian.com>
18259
18260         * mini.c, mini.h, aot.c, driver.c: allow disabling the aot code.
18261
18262 2004-12-10  Patrik Torstensson  <patrik.torstensson@gmail.com>
18263
18264         * mini.c (mini_get_inst_for_method): Changed to allow ports
18265         to return a MonoInst instead of opcode 
18266         (renamed mini_get_opcode_for_method to better reflect the new functionality)
18267         
18268         * mini-[x86|s390|s390x|ppc|sparc].c (mono_arch_get_inst_for_method): 
18269         Allow ports to return a created MonoInst instead of op-code, will enable
18270         new optimizations.
18271         (renamed mini_get_opcode_for_method to better reflected the functionality)
18272
18273 2004-12-09  Zoltan Varga  <vargaz@freemail.hu>
18274
18275         * mini.c (NEW_AOTCONST): Share some code between the different NEW_AOTCONST macros.
18276
18277 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
18278
18279         * mini.c jit-icalls.c: Pass generic_context to mono_ldtoken_wrapper.
18280         Fixes #69985.
18281
18282 2004-12-08  Martin Baulig  <martin@ximian.com>
18283
18284         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use `fsig->signature'
18285         if we're a CEE_CONSTRAINED call.  Fixes gen-118.cs.
18286
18287 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
18288
18289         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_<X>
18290         correctly.
18291
18292         * exceptions.cs: Disable some tests which depend on properties of x86 fp
18293         arithmetic.
18294
18295 2004-12-08  Raja R Harinath  <rharinath@novell.com>
18296
18297         * Makefile.am (CLEANFILES): Add *.exe, *.dll.
18298
18299 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
18300
18301         * mini-sparc.c (mono_arch_output_basic_block): Fix LOCALLOC_IMM
18302         bug introduced by the previous patch.
18303
18304 Tue Dec 7 11:44:39 CET 2004 Paolo Molaro <lupus@ximian.com>
18305
18306         * mini-ppc.c, objectc.cs: handle large structs passed by value
18307         (fixes bug #69972).
18308
18309 Tue Dec 7 10:43:31 CET 2004 Paolo Molaro <lupus@ximian.com>
18310
18311         * mini-ppc.c: OP_ARGLIST implementation from
18312         Geoff Norton  <gnorton@customerdna.com>.
18313
18314 Tue Dec 7 10:14:25 CET 2004 Paolo Molaro <lupus@ximian.com>
18315
18316         * inssel-x86.brg, inssel-ppc.brg: fix reference to register
18317         in stmt: OP_OUTARG_VT (reg) (should fix bug #69785).
18318
18319 Tue Dec 7 10:06:39 CET 2004 Paolo Molaro <lupus@ximian.com>
18320
18321         * exceptions-ppc.c: avoid calling ppc_patch in exception trampolines.
18322
18323 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
18324
18325         * inssel-s390.brgi, mini-ops.h, mini-s390.c : Add stubs for support of tls offset
18326         support.
18327
18328 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
18329
18330         * mini-sparc.c: Zero out localled-ed memory.
18331
18332         * iltests.il: Add tests for zeroing out localloc-ed memory.
18333
18334 2004-12-04  Martin Baulig  <martin@ximian.com>
18335
18336         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use the new
18337         mono_method_get_signature_full().       
18338
18339 2004-12-03  Massimiliano Mantione  <massi@ximian.com>
18340
18341         * mini.c: Added removal of critical edges (prerequisite for SSAPRE),
18342         and some utility functions (always for SSAPRE), integrated SSAPRE.
18343         * mini.h: Likewise.
18344         * driver.c: Added ssapre option.
18345         * ssa.c: Small fix on OP_ARG handling.
18346         * ssapre.c, ssapre.h: Added files containing SSAPRE implementation.
18347         * Makefile.am: Likewise.
18348
18349 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
18350
18351         * tramp-x86.c (mono_arch_create_jit_trampoline): Remove code which is
18352         now in the xp code.
18353
18354         * mini.c (mini_init): Register mono_thread_force_interruption_checkpoint
18355         icall.
18356
18357 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
18358
18359         * inssel-s390.brg : Add OP_OUTARG_VT (OP_REFANYTYPE (reg)) rule.
18360         
18361         * cpu-s390.md : Increase instruction length of oparglist.
18362
18363         * mini-s390.c : Implement vararg and TYPEDEBYREF support.
18364
18365 2004-11-30  Martin Baulig  <martin@ximian.com>
18366
18367         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, added support for
18368         virtual generic methods.  We call a special helper_compile_generic_method()
18369         icall to retrieve the method from the vtable, inflate and compile
18370         it and then do a CEE_CALLI.  Thanks a lot to Paolo for this idea.
18371
18372         * jit-icalls.c (helper_compile_generic_method): New JIT icall.
18373
18374 2004-11-30  Zoltan Varga  <vargaz@freemail.hu>
18375
18376         * mini-sparc.c: Fix up vararg corner cases. Fixes #70019.
18377
18378 2004-11-29  Zoltan Varga  <vargaz@freemail.hu>
18379
18380         * cpu-sparc.md mini-sparc.c (long_conv_to_ovf_i): Fill missing delay slot.
18381         Fixes #69929.
18382
18383 2004-11-27  Ben Maurer  <bmaurer@ximian.com>
18384
18385         * inssel.brg (CEE_SWITCH): The AOT stuff Zoltan added is only for
18386         platforms with PIC aot.
18387
18388 2004-11-28  Martin Baulig  <martin@ximian.com>
18389
18390         * mini.c (mono_method_to_ir): In CEE_DUP, added handle_stobj().
18391         Fixes gen-112.cs.
18392
18393 2004-11-28  Martin Baulig  <martin@ximian.com>
18394
18395         * mini-x86.c (mono_arch_call_opcode): Use the original type, not
18396         the result of mono_type_get_underlying_type() to check whether
18397         we're byref.
18398
18399 2004-11-26  Martin Baulig  <martin@ximian.com>
18400
18401         * mini.c
18402         (mono_method_to_ir): Use `!method->signature->has_type_parameters'
18403         in the g_assert().
18404
18405 2004-11-26  Zoltan Varga  <vargaz@freemail.hu>
18406
18407         * mini-amd64.c (mono_arch_emit_this_vret_args): Handle this and vret
18408         the same way as the other arguments so they won't get clobbered.
18409
18410         * mini-amd64.c (mono_arch_output_basic_block): Avoid doing virtual 
18411         calls through R11 since it is clobbered by the trampoline code.
18412
18413 2004-11-26  Raja R Harinath  <rharinath@novell.com>
18414
18415         * Makefile.am: Consistently use $(RUNTIME) rather than ./mono to
18416         pick up in-tree mscorlib.dll.
18417
18418 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
18419
18420         * aot.c: Rename MonoAOTModule->cleanup to out_of_date.
18421
18422         * mini-amd64.c aot.c: Switch to PIC relative AOT code. References to 
18423         runtime data/code are now stored in a table similar to the GOT in ELF. 
18424         This allows the code itself to be position independent.
18425
18426         * aot.c: Fix loading of referenced assemblies after the lazy assembly
18427         loading changes.
18428
18429         * aot.c: Attach ELF type (object/function) directives to all global
18430         symbols.
18431
18432         * tramp-amd64.c (amd64_magic_trampoline): Patch RIP relative calls too.
18433
18434         * inssel.brg (SWITCH): Emit an AOT_CONST in the aot case.
18435
18436         * mini-amd64.h: Turn on PIC AOT code.
18437
18438         * mini.h (mono_arch_get_aot_patch_offset): New arch specific function
18439         returning the offset within an OP_AOTCONST instruction where the GOT
18440         offset needs to be added.
18441
18442         * mini.h: Bump AOT file format version.
18443
18444 2004-11-25  Martin Baulig  <martin@ximian.com>
18445
18446         * mini.c (mono_method_to_ir): In CEE_CALL, don't allow calling any
18447         uninflated generic methods.
18448
18449 2004-11-25  Martin Baulig  <martin@ximian.com>
18450
18451         * mini.c (mono_method_to_ir): Don't allow any uninflated generic methods.
18452
18453 2004-11-24  Martin Baulig  <martin@ximian.com>
18454
18455         * minit.c (type_to_eval_stack_type): Set `inst->klass' to the
18456         original klass (this only applies for generic instances).
18457
18458 2004-11-24  Martin Baulig  <martin@ximian.com>
18459
18460         * mini.c (mono_method_to_ir): Use `STACK_OBJ' instead of
18461         `ldind_type [CEE_LDIND_REF]' (which would be beyond the end of
18462         that array).
18463
18464 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
18465
18466         * mini.c (mono_method_to_ir): Disable inlining for methods containing
18467         localloc. Fixes #69678.
18468
18469         * iltests.il (test_0_localloc_inline): Add regression test for #69678.
18470         
18471 2004-11-23  Zoltan Varga  <vargaz@freemail.hu>
18472
18473         * mini-amd64.c (mono_arch_output_basic_block): Set %al to the number of
18474         used SSE registers on pinvoke calls. Fixes #69774.
18475
18476 2004-11-23  Geoff Norton  <gnorton@customerdna.com>
18477
18478         * inssel-ppc.brg, mini-ppc.c: Use mono_class_from_mono_type instead of
18479         vt->inst_vtype->data.klass.  This fixes generic structs and bug #69766
18480
18481 2004-11-23  Raja R Harinath  <rharinath@novell.com>
18482
18483         * Makefile.am (MCS,ILASM): Don't refer to runtime/ directory.
18484         Refer directly to the mcs/ tree.
18485
18486 2004-11-19  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
18487
18488         * mini-s390.c, tramp-s390.c, mini-s390.h: Add LMF processing for trampolines.
18489         Check if a trampoline for a synchronized method is required. 
18490
18491 Fri Nov 19 17:34:21 CET 2004 Paolo Molaro <lupus@ximian.com>
18492
18493         * mini-ppc.c, cpu-g4.md: set to zero the memory allocated
18494         with localloc if needed. Throe arithmetric exception in
18495         div an rem if needed. Implement ovf checks in OP_LCONV_TO_OVF_I.
18496         Adapted from a patch by Geoff Norton  <gnorton@customerdna.com>.
18497
18498 2004-11-19  Geoff Norton  <gnorton@customerdna.com>
18499
18500         * mini-ppc.c: Call mono_type_get_underlying_type to unwrap generic
18501         types before switching on type.  Fixes #69622.
18502
18503 2004-11-19  Raja R Harinath  <rharinath@novell.com>
18504
18505         * Makefile.am (check-local): New.  Integrate into 'make check'.
18506         (MCS,RUNTIME): Define using in-tree mono and mcs.
18507         (ILASM): New.
18508         (%.exe): Use $(ILASM).
18509
18510 Fri Nov 19 14:54:07 CET 2004 Paolo Molaro <lupus@ximian.com>
18511
18512         * mini-ppc.c: adjust initial prolog size (bug #69691).
18513
18514 2004-11-18  Zoltan Varga  <vargaz@freemail.hu>
18515
18516         * cpu-pentium.md (localloc): Increase max instruction len. Fixes
18517         #69664.
18518
18519 2004-11-17  Raja R Harinath  <rharinath@novell.com>
18520
18521         * Makefile.am (clean-local): Rename from 'clean'.
18522
18523 2004-11-15  Nelae Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
18524
18525         * mini.c, mini-x86.c, mini-amd64.c, exceptions-s390.c: Add siginfo_t parameter
18526         to mono_arch_is_int_overflow. 
18527         * exceptions-s390.c: Add mono_arch_is_int_overflow routine to discern between
18528         SIGFPE events.
18529
18530 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
18531
18532         * declsec.c|h: New files to support declarative security attributes.
18533         Added function to check if a method has (applicable) security.
18534         * mini.c|h: Add check for declarative security attributes in
18535         mono_method_check_inlining.
18536         * Makefile.am: Added declsec.c and declsec.h to the build.
18537
18538 Mon Nov 15 11:53:46 CET 2004 Paolo Molaro <lupus@ximian.com>
18539
18540         * mini.c, mini.h: update to keep dynamic code info per-domain.
18541
18542 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
18543
18544         * mini.c mini-*.h: Get rid of MONO_ARCH_HAVE_RETHROW since all architectures support it now.
18545         (mini_init): Get rid of it from here too.
18546
18547 Thu Nov 11 20:17:17 CET 2004 Paolo Molaro <lupus@ximian.com>
18548
18549         * mini-ppc.c, mini-ppc,h, cpu-g5.md, exceptions-ppc.c:
18550         implemented OP_RETHROW (patch by Geoff Norton
18551         <gnorton@customerdna.com>).
18552
18553 2004-11-10  Geoff Norton  <gnorton@customerdna.com>
18554
18555         * tramp-ppc.c (ppc_magic_trampoline): Don't trampoline methods
18556         between appdomains.  Fixes appdomain-unload on PPC.
18557
18558 2004-10-26  Lluis Sanchez Gual  <lluis@novell.com>
18559
18560         * exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
18561         mini-exceptions.c: handle the new wrapper types.
18562         * mini.c: The CEE_ISINST and CEE_CASTCLASS opcodes now take the
18563         token value as a MonoClass* when compiling a wrapper.
18564         mono_jit_create_remoting_trampoline now takes an additional
18565         MonoRemotingTarget parameter.
18566         
18567 2004-11-10  Martin Baulig  <martin@localhost>
18568
18569         * mini.c (mono_method_to_ir): Use `generic_container->context'
18570         rather than creating a new one.
18571
18572 2004-11-09  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
18573
18574         * exceptions-s390.c, mini-s390, cpu-s390.md: Add support for OP_RETHROW.
18575
18576         * inssel-390.md, mini-s390.c: Correct register allocation for globals.
18577
18578 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
18579
18580         * aot.c (mono_aot_init): Add MONO_AOT_CACHE env variable to turn on
18581         the experimental aot cache stuff.
18582
18583 Tue Nov 9 17:30:20 CET 2004 Paolo Molaro <lupus@ximian.com>
18584
18585         * aot.c, mini.c, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
18586         mini-exceptions.c: update to exception clause structure changes.
18587
18588 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
18589
18590         * exceptions-x86.c (throw_exception): Fix warnings.
18591
18592         * mini-x86.h mini-x86.c cpu-pentium.md exceptions-x86.c: Add support 
18593         for OP_RETHROW.
18594
18595 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
18596
18597         * exceptions-sparc.c (get_throw_exception): Really fix this.
18598
18599 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
18600
18601         * tramp-*.c: we no longer support icalls without wrappers, so
18602         a bit of code can be removed here
18603
18604 2004-11-07  Zoltan Varga  <vargaz@freemail.hu>
18605
18606         * exceptions-sparc.c (get_throw_exception): Fix more bugs in previous
18607         patch.
18608
18609         * cpu-sparc.md: Add op_rethrow.
18610
18611         * exceptions-sparc.c (get_throw_exception): Fix bug in previous patch.
18612
18613         * mini-sparc.h mini-sparc.c exceptions-sparc.c: Add support for OP_RETHROW.
18614
18615         * mini.h: Add mono_arch_get_rethrow_exception () arch specific function.
18616         * mini-ops.h: Add OP_RETHROW.
18617
18618         * mini.c inssel.brg: Distinguish between THROW and RETHROW.
18619
18620         * cpu-amd64.c mini-amd64.c exceptions-amd64.c: Add support for OP_RETHROW.
18621
18622 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
18623         
18624         * helpers.c: Change otool arguments from -V -v -t to -v -t on Darwin
18625         Makes the output much easier to read
18626
18627 2004-11-05  Ben Maurer  <bmaurer@ximian.com>
18628
18629         * ssa.c: allocate MonoMethodVar.uses from the mempool. First, this
18630         prevents another huge leak when compiling with ssa. Secondly, the
18631         performance of doing this rather than freeing the lists is much
18632         better. GList does a lock every time you allocate a list link,
18633         so that it can use a memory pool. So, it is better to just use
18634         a memory pool of our own.
18635         
18636         * ssa.c, linear-scan.c: replace g_list_remove_link with
18637         g_list_delete.  The remove one does not free the GList, so we were
18638         leaking memory. On -O=all --compile-all with corlib, this cut down
18639         3 MB of allocations.
18640
18641 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
18642
18643         * tramp-sparc.c (mono_arch_create_jit_trampoline): Fix sparc build.
18644
18645         * tramp-amd64.c (mono_arch_create_jit_trampoline): Fix amd64 build.
18646
18647         * mini.h mini.c tramp-*.c: Moved xp parts of JIT trampoline creation
18648         into a new function mono_create_jit_trampoline ().
18649
18650 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
18651
18652         * trace.c (get_spec): Allow tracing of classes without a namespace.
18653
18654 2004-11-02  Sebastien Pouliot  <sebastien@ximian.com>
18655
18656         * mini.c: Fix pointer overwrite in mini_method_compile.
18657
18658 2004-11-2  Geoff Norton  <gnorton@customerdna.com>
18659
18660         * inssel-ppc.brg (OP_OUTARG_VT (CEE_LDOBJ (base))):
18661         The darwin ABI needs some special handling for 1 and 2 byte structs
18662         Lets use lbz/lhz instead of lwz everywhere.
18663         * mini-ppc.c (calculate_sizes):  The Darwin ABI needs from special handling
18664         for 1 and 2 byte structs and struct which are size >= 3 || size % 4 != 0.
18665         Use stb/sth for the former, and put the latter always on stack instead of in
18666         argument registers.
18667
18668 2004-10-30  Zoltan Varga  <vargaz@freemail.hu>
18669
18670         * trace.c (is_filenamechar): Add '_'.
18671
18672 2004-10-29  Neale Ferguson  <Neale.Ferguson@SoftwareAG-usa.com>
18673
18674         * mini-s390.c: Fix prolog length to allow for large trace requirements.
18675
18676         * exceptions-s390.c: Remove dwarf unwinding stuff that was unused.
18677
18678 2004-10-29  Zoltan Varga  <vargaz@freemail.hu>
18679
18680         * Makefile.am (libgc_libs): Do some automake magic so libmono/mono
18681         depends on libmonogc. Fixes #68805.
18682
18683 2004-10-26  Miguel de Icaza  <miguel@ximian.com>
18684
18685         * mini.c (mono_jit_free_method): Provide extra information for
18686         this error.  Currently this leaks, but will be turned into a
18687         developer option in the future.
18688
18689 2004-10-26  Zoltan Varga  <vargaz@freemail.hu>
18690
18691         * driver.c (mono_main): Applied patch from Willibald Krenn <willibald.krenn@gmx.at>. Make --graph work for icalls and pinvoke methods.
18692
18693 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
18694
18695         * aot.c (mono_aot_load_method): Align PATCH_INFO_R8 on an 8 byte 
18696         boundary. Fixes reading of PATCH_INFO_R4 and R8.
18697         (mono_aot_load_method): Do not allocate MonoAotMethod in the GC heap.
18698
18699 2004-10-24  Zoltan Varga  <vargaz@freemail.hu>
18700
18701         * mini-amd64.c (mono_arch_patch_code): Fix patching of class init
18702         trampolines for AOT code.
18703
18704 2004-10-22    <vargaz@freemail.hu>
18705
18706         * aot.c (mono_compile_assembly): Disable AOT for methods containing calls to methods of
18707         constructed types. Fixes #68136.
18708
18709 2004-10-21  Martin Baulig  <martin@ximian.com>
18710
18711         * exceptions-x86.c (throw_exception): Call mono_debugger_throw_exception();
18712         if it returns true, unwind the stack to the call instruction.
18713
18714 2004-10-21    <vargaz@freemail.hu>
18715
18716         * aot.c: Reorganize the AOT file format to avoid relocations. Fix warnings.
18717
18718         * mini.h: Bump AOT version number.
18719
18720         * objects.cs: Add another test for unbox trampolines.
18721
18722         * tramp-amd64.c (amd64_magic_trampoline): Disable patching of trampolines for 
18723         valuetype methods.
18724
18725 2004-10-20    <vargaz@freemail.hu>
18726
18727         * driver.c: Add SHARED to the set of optimizations tested.
18728
18729         * tramp-amd64.c (amd64_magic_trampoline): Patch trampoline code as well.
18730
18731         * mini.c (mono_method_to_ir): Mark the domainvar as volatile when it is implicitly
18732         used by CEE_NEWARR.
18733
18734         * ssa.c (mono_ssa_deadce): Do not optimize away accesses to volatile variables.
18735
18736 2004-10-20  Martin Baulig  <martin@ximian.com>
18737
18738         * mini-exceptions.c (mono_handle_exception): Call
18739         mono_debugger_handle_exception() to tell the debugger about
18740         catch/finally clauses.
18741
18742 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
18743
18744         * exceptions-amd64.c (mono_arch_find_jit_info): Pop arguments of the stack.
18745
18746         * mini-amd64.c (mono_amd64_get_vcall_slot_addr): Handle extended registers. Fixes
18747         #68447.
18748
18749 2004-10-15  Geoff Norton  <gnorton@customerdna.com>
18750
18751         * mini-ppc.c (calculate_sizes): Marshal valuetypes for pinvoke
18752         methods as their native size, fixed bug #57543, #57545.
18753         * mini-ppc.c (mono_arch_output_basic_block): Use mulli for imm16 types
18754         This saves a temporary register and mullw call down into 1 (minor perf
18755         increase for cases like sum = sum * 5;  This use to translate into:
18756             li r11,5
18757             mullw r28,r28,r11
18758         It now translates to
18759             mulli r28,r28,5
18760
18761 2004-10-15  Zoltan Varga  <vargaz@freemail.hu>
18762
18763         * trace.c (mono_trace_eval): Use mono_method_desc_full_match. Fixes
18764         #68388.
18765
18766 2004-10-11  Martin Baulig  <martin@ximian.com>
18767
18768         * mini.c (mono_method_to_ir): If we're a generic method, get the
18769         MonoGenericContainer from our MonoMethodNormal and create a
18770         MonoGenericContext from it.
18771
18772 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
18773
18774         * inssel-long32.brg (OP_LCONV_TO_OVF_I2): Fix CONV_I1 -> CONV_I2.
18775
18776         * basic-long.cs: Add test for checked i8->i2 cast.
18777
18778 Wed Oct 6 12:40:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
18779
18780         * inssel-ppc.brg: added a couple of speedup rules.
18781
18782 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
18783
18784         * Makefile.am (genmdesc_LDADD): Don't link this against libmetadata
18785         to speed up rebuilds.
18786
18787 2004-10-04  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
18788
18789         * mini-s390.c: Minor fix to OP_OR_IMM.
18790
18791 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
18792
18793         * tramp-sparc.c (sparc_magic_trampoline): Handle appdomain stuff
18794         better. Fixes appdomain-unload.exe on sparc.
18795
18796 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
18797
18798         * ssa.c: Fixed casts to unsigned where the value was of 64 bits in
18799         simulate_long_compare, patch by will@exomi.com (Ville-Pertti Keinonen),
18800         see bug 67324.
18801
18802 2004-10-02  Zoltan Varga  <vargaz@freemail.hu>
18803
18804         * jit-icalls.c: Handle a nonexisting trunc function more correctly.
18805
18806 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
18807
18808         * mini.c: Always generate a field read/write wrapper for members
18809         of the class MarshalByRefObject since the actual instance could
18810         be a CBO.
18811
18812 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
18813
18814         * mini.c: Use mono_thread_exit() to stop threads, instead of ExitThread.
18815
18816 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
18817
18818         * driver.c mini.h trace.c: Move the setting of the main assembly into
18819         a separate function called mono_trace_set_assembly () and call it after
18820         actually loading the main assembly. Fixes #66872.
18821
18822 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
18823
18824         * mini-amd64.h mini-amd64.c tramp-amd64.c: Allocate trampoline memory
18825         using the code manager.
18826
18827 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
18828
18829         * tramp-amd64.c mini-amd64.h: Add support for MONO_ARCH_HAVE_INVALIDATE_METHOD.
18830
18831 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
18832
18833         * cpu-amd64.md: Fix bug in previous patch.
18834         
18835         * cpu-amd64.md: Fix instruction lengths of membase opcodes. Fixes
18836         #66650.
18837
18838 Wed Sep 22 19:03:20 CEST 2004 Paolo Molaro <lupus@ximian.com>
18839
18840         * mini.h, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
18841         mini-exceptions.c: updates for changed stack walk interface.
18842
18843 2004-09-21  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
18844
18845         * mini-s390.c, cpu-s390.md: Minor changes to OP_ARGLIST handling
18846
18847 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
18848
18849         * mini.c (mono_method_to_ir): Fix LDSTR in dynamic methods. Fixes #66132.
18850
18851 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
18852
18853         * driver.c (mini_regression_list): Do not call mono_assembly_close 
18854         since assemblies can't be unloaded.
18855         
18856 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
18857
18858         * cpu-amd64.md: Fix more instruction lengths.
18859
18860         * cpu-amd64.md: Fix lengths of some instructions.
18861
18862 2004-09-11 Ben Maurer  <bmaurer@users.sourceforge.net>
18863
18864         * inssel.brg: Make the array ldelema check aot friendly.
18865
18866 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
18867
18868         * mini-amd64.c (mono_arch_get_argument_info): Fix stack_unwind test.
18869
18870         * cpu-amd64.md inssel-long.brg inssel-amd64.brg: Small optimizations.
18871
18872 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
18873
18874         * mini-x86.c: Fix build.
18875
18876         * mini-sparc.c mini-x86.c mini-amd64.c: Use the new 
18877         mono_type_get_underlying_type () helper function to simplify code.
18878         
18879 2004-09-09  Martin Baulig  <martin@ximian.com>
18880
18881         * mini-amd64.c: Don't access `type->data.klass' directly, call
18882         mono_class_from_mono_type() instead since the type may be a
18883         generic instance.
18884
18885 2004-09-09  Martin Baulig  <martin@ximian.com>
18886
18887         * mini-amd64.c (get_call_info): Fix support for generic instances.
18888         (add_valuetype): Use mono_class_from_mono_type() to get the class
18889         since we can be a generic instance.
18890
18891 Thu Sep 9 01:43:53 PDT 2004 Paolo Molaro <lupus@ximian.com>
18892
18893         * mini-ppc.c, mini.h, regalloc.c, regalloc.h: powerpc speedups.
18894
18895 2004-09-07 Ben Maurer  <bmaurer@users.sourceforge.net>
18896
18897         * liveness.c: reset spill costs on each scan: bug 62107
18898
18899 2004-09-07  Bernie Solomon  <bernard@ugsolutions.com>
18900
18901         * exceptions-sparc.c (mono_arch_find_jit_info): remove
18902         unnecessary line that doesn't compile
18903
18904 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
18905
18906         * mini.c mini.h mini-x86.h tramp-x86.c: Instead of freeing delegate
18907         trampolines, make them call an error function so people can fix their
18908         code.
18909
18910 2004-09-06  Martin Baulig  <martin@ximian.com>
18911
18912         * mini.c (mono_method_to_ir): When initializing locals, handle a
18913         generic instances like a valuetype if it's a valuetype and like a
18914         class if it's a class.
18915
18916 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
18917
18918         * exceptions-x86.c (mono_arch_find_jit_info): Pop arguments off the
18919         stack. Fixes #64674.
18920
18921         * exceptions.cs: Add test for unwinding of call arguments.
18922
18923 Mon Sep 6 05:50:02 PDT 2004 Paolo Molaro <lupus@ximian.com>
18924
18925         * mini-*.c, mini-ops.h, inssel-long32.brg: introduced
18926         OP_ADDCC_IMM and OP_SUBCC_IMM (add/sub immediate that will
18927         set the carry/borrow flag). The sparc and s390 implementations
18928         can now use optimized versions (and simplify the code). ppc bugfixes.
18929
18930 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
18931
18932         * exceptions-ppc.c (mono_arch_find_jit_info): Fix memory leak.
18933
18934 2004-09-05  Zoltan Varga  <vargaz@freemail.hu>
18935
18936         * inssel-amd64.brg: Remove leftover 32 bit rule.
18937
18938         * mini-amd64.c (mono_arch_instrument_prolog): Fix tracing support.
18939
18940 2004-09-04  Zoltan Varga  <vargaz@freemail.hu>
18941
18942         * mini-exceptions.c (mono_find_jit_info): Refactor common code from
18943         mono_arch_find_jit_info functions into a new function. Fix a memory
18944         leak.
18945
18946         * exceptions-x86.c exceptions-amd64.c exceptions-sparc.c: Remove
18947         refactored code.
18948         
18949 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
18950
18951         * exceptions.cs inssel-long32.brg: Handle the OP_LCONV_TO_OVF_I2 case
18952         as well.
18953         
18954         * exceptions.cs: Add array size tests.
18955
18956         * mini.c: Allocate a separate icall wrapper for each arity of 
18957         mono_array_new_va. Fixes #59509.
18958
18959         * exceptions.cs: Add testcase for 64578.
18960
18961         * inssel-long32.brg: Fix OP_LCONV_TO_OVF_I1 rule. Fixes #64578.
18962
18963         * trace.c (is_filenamechar): Allow 0..9 in strings. Fixes #65094.
18964         
18965 2004-09-02  Martin Baulig  <martin@ximian.com>
18966
18967         * mini.c (mono_method_to_ir): When initializing the locals, call
18968         handle_initobj() on the generic instance itself, not its
18969         underlying type.
18970
18971 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
18972
18973         * mini.h (MonoJitDynamicMethodInfo): New structure, extension of 
18974         MonoJitInfo for dynamic methods.
18975
18976         * mini.c: Rename trampoline_hash_mutex to jit_mutex.
18977
18978         * mini.c: Add support for freeing JIT data for dynamic methods.
18979         
18980 2004-09-01  Martin Baulig  <martin@ximian.com>
18981
18982         * mini-x86.c (is_regsize_var): Added support for generic
18983         instances.
18984         (mono_arch_emit_prolog): Make this compile again, use
18985         `x86_push_imm_template (code)'.
18986
18987 2004-08-30 Ben Maurer  <bmaurer@users.sourceforge.net>
18988
18989         * mini-x86.c: make all push_imm instructions that get
18990         patched always emit the long form
18991
18992 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
18993
18994         * mini.c (mono_create_jump_trampoline): Store the jump trampolines 
18995         in a per-domain hash.
18996
18997         * mini-amd64.c (merge_argument_class_from_type): Handle generic
18998         types.
18999
19000 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
19001
19002         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: Ongoing SSE
19003         work.
19004         
19005         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: More SSE
19006         work.
19007
19008         * mini-amd64.c cpu-amd64.md: Implement checked int<->uint casts.
19009         Beginnings of SSE2 support.
19010
19011         * exceptions.cs: Add more tests for checked int<->uint casts.
19012
19013 2004-08-28  Martin Baulig  <martin@ximian.com>
19014
19015         * mini-x86.c (mono_arch_instrument_epilog): Added support for
19016         generic instances.
19017
19018         * mini.c
19019         (mono_type_to_ldind, mono_type_to_stind, type_to_eval_stack_type):
19020         Handle generic instances recursively.
19021
19022 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
19023
19024         * iltests.il: test for conv.u8 on a constant
19025
19026 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
19027
19028         * inssel-long32.brg: c&p rules for LCONV_x4 (membase) and
19029         LCONV_x4 (shrun_32 (membase)).
19030
19031 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
19032
19033         * inssel-x86.brg: c&p rules for push/setret of long
19034
19035 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
19036
19037         * inssel-x86.brg: c&p rules for compare (base, regvar) and
19038         compare (regvar, base)
19039
19040         * inssel-x86.brg: more burg love
19041
19042         * inssel.brg: more cleanup
19043
19044         * inssel-x86.brg, inssel-long32.brg: burg cleanup.
19045
19046 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
19047
19048         * basic-long.cs, basic-calls.cs: new tests for optimization.
19049
19050 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
19051
19052         * mini-amd64.c (read_tls_offset_from_method): Fix typo in previous
19053         patch.
19054
19055 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
19056
19057         * mini-amd64.c (read_tls_offset_from_method): Add another case.
19058         
19059 2004-08-25  Bernie Solomon  <bernard@ugsolutions.com>
19060
19061         * inssel.brg (mini_emit_memcpy): use 
19062         NO_UNALIGNED_ACCESS to disable memcpy optimization
19063
19064 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
19065
19066         * mini-amd64.c: Handle generic types in various places.
19067
19068         * mini.c (mono_method_to_ir): Handle generic types in init locals.
19069
19070 2004-08-24  Zoltan Varga  <vargaz@freemail.hu>
19071
19072         * mini.c (handle_box): Fix warning.
19073
19074         * mini-amd64.c (mono_arch_local_regalloc): Fix regalloc problem.
19075
19076         * mini-amd64.h: Enable the emit_state optimization.
19077
19078         * mini-ops.h cpu-amd64.md: Add new amd64_test_null opcode.
19079
19080         * mini-amd64.c: Add some new 64 bit peephole opts.
19081
19082         * inssel.brg (mini_emit_memcpy): Optimize for 64 bit architectures.
19083
19084         * cpu-amd64.md: sreg1 of div instructions must be %rax.
19085
19086         * mini-amd64.c: Register allocator fixes.
19087
19088         * mini.c: Add an optimization to emit_state to avoid allocation of new
19089         registers on some platforms.
19090
19091 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
19092
19093         * inssel-x86.brg inssel-amd64: Add yet another missing tree->dreg assignment.
19094
19095         * mini-x86.c (mono_arch_local_regalloc): Fix bug in long register
19096         allocation. Fixes #63085.
19097
19098         * basic-long.cs: Add new regression test.
19099
19100         * mini-amd64.c: Register allocator improvements.
19101
19102 2004-08-21  Zoltan Varga  <vargaz@freemail.hu>
19103
19104         * mini-amd64.c (read_tls_offset_from_method): Add another code
19105         sequence.
19106
19107         * tramp-amd64.c (amd64_class_init_trampoline): Use a more efficient
19108         instruction sequence for nullifying class init trampolines.
19109
19110         * objects.cs: Add new regalloc test.
19111
19112         * mini-amd64.c inssel-amd64.brg: Optimize parameter passing.
19113
19114 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
19115
19116         * mini-amd64.c (mono_arch_call_opcode): Refactor this a little.
19117         
19118         * mini-amd64.c (mono_arch_regalloc_cost): Adjust regalloc costs for
19119         arguments.
19120
19121         * driver.c: Fix profiling after TLS changes.
19122         
19123         * driver.c (mono_main): Set mono_stats.enabled if needed.
19124
19125         * mini.c (handle_alloc): New helper function used by CEE_NEWOBJ and
19126         CEE_BOX.
19127
19128 2004-08-20 Ben Maurer  <bmaurer@users.sourceforge.net>
19129
19130         * mini-x86.c: use a 1 op rather than a 2 op tls access
19131         instruction -> faster.
19132
19133 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
19134
19135         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from
19136         x86 backend.
19137
19138 2004-08-19 Bernie Solomon <bernard@ugsolutions.com>
19139
19140         * exceptions-sparc.c (throw_exception): fix typo
19141
19142 2004-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
19143
19144         * mini-x86.c, cpu-pentium.md, inssel-x86.brg:
19145         set tree->dreg correctly with tls. Allow any
19146         register to be used.
19147
19148         * mini-x86.c (read_tls_offset_from_method): add new code
19149         generation pattern seen with GCC.
19150
19151
19152 Thu Aug 19 17:26:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
19153
19154         * mini-exceptions.c, exceptions-x86.c, exceptions-amd64.c,
19155         exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
19156         exceptions-sparc.c: fix some performance issues in exception
19157         handling and setting of the stack trace for exceptions that were
19158         already thrown.
19159
19160 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
19161
19162         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from 
19163         x86 backend.
19164         
19165         * mini-amd64.c (mono_arch_is_int_overflow): Handle all possible 
19166         registers.
19167
19168 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
19169
19170         This patch inlines tls access, when possible.
19171         
19172         * mini.h: new arch functions for TLS intrinsics.
19173         All platforms updated with a stub.
19174
19175         * mini.c: use the new intrinsics
19176
19177         * mini-x86.c, cpu-pentium.md, inssel-x86.brg, mini-ops.h:
19178         arch specific intrinsic for tls variables
19179
19180 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
19181
19182         * Makefile.am (libmono_la_LDFLAGS): Enable creating of libmono dll
19183         under windows.
19184
19185 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
19186
19187         * mini.c: thread local allocation
19188
19189 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
19190
19191         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Enable.
19192
19193         * Makefile.am: Link against the static version of libmonogc.
19194         
19195         * Makefile.am: Link the static versions of the convenience libraries
19196         into the mono executable.
19197
19198         * mini-x86.h mini-x86.c: Throw the correct exception on integer overflow.
19199
19200 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
19201
19202         * mini.h mini.c mini-amd64.h mini-amd64.c: Throw the correct exception
19203         on integer overflow.
19204
19205         * mini-amd64.c: Reorganize function call code.
19206
19207         * mini-amd64.c (peephole_pass): Merge changes from mini-x86.c.
19208
19209 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
19210
19211         * inssel-x86.brg: use xor eax,eax.
19212         
19213         * basic.cs: new tests
19214
19215 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
19216
19217         * mini-amd64.c (mono_arch_emit_epilog): Use RIP relative addressing
19218         in exception throwing code.
19219         
19220 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
19221
19222         * inssel-x86.brg: use xor esi,esi.
19223
19224 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
19225
19226         * driver.c (mono_main): Call mono_trace_parse_options earlier so it
19227         can trace methods compiled during mini_init () too.
19228
19229         * cpu-amd64.md mini-amd64.c (mono_arch_output_basic_block): Handle 
19230         CEE_CONV_U4.
19231
19232 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
19233
19234         * Makefile.am: static link on x86 (r=zoltan)
19235
19236 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
19237
19238         * tramp-amd64.c (amd64_magic_trampoline): Avoid patching the trampoline
19239         code since it causes some programs to fail.
19240
19241 2004-08-12  Zoltan Varga  <vargaz@freemail.hu>
19242
19243         * mini-amd64.c (bb_is_loop_start): Merge changes from mini-x86.c.
19244
19245 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
19246
19247         * mini.c: ovfops_op_map - add STACK_OBJ case for
19248         CONV_I 
19249         * basic.cs: add test_0_pin_string as test
19250         case for above.
19251
19252 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
19253
19254         * Makefile.am: build C# if srcdir != builddir
19255
19256 Tue Aug 10 19:23:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
19257
19258         * dominators.c, mini.h, mini-x86.c: fix loop alignment with
19259         fall-through blocks.
19260
19261 Tue Aug 10 16:18:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
19262
19263         * driver.c: enable loop by default again and include abcrem in -O=all.
19264
19265 2004-08-08  Zoltan Varga  <vargaz@freemail.hu>
19266
19267         * iltests.il: Add some localloc tests.
19268
19269         * mini.c (mono_method_to_ir): Set stack type of LOCALLOC correctly.
19270
19271         * inssel-amd64.brg inssel-x86.brg: Set dreg of LOCALLOC correctly. 
19272         Fixes #62574.
19273
19274         * inssel-amd64.brg: Add some optimizations.
19275
19276         * mini-amd64.c (mono_arch_setup_jit_tls_data): Add tls offset detection
19277         for gcc-3.4.
19278
19279         * Makefile.am: Statically link mono against libmono on AMD64.
19280         
19281         * mini-amd64.c inssel-amd64.brg: Optimizations.
19282
19283 2004-08-07  Zoltan Varga  <vargaz@freemail.hu>
19284
19285         * mini-amd64.c (mono_arch_emit_prolog): Optimize lmf saving a bit.
19286
19287         * tramp-amd64.c: Patch calling code in trampolines.
19288
19289 2004-08-06  Zoltan Varga  <vargaz@freemail.hu>
19290
19291         * mini-amd64.c: pinvoke struct passing fixes.
19292
19293 2004-08-05  Bernie Solomon  <bernard@ugsolutions.com>
19294
19295         * mini-sparc.c: redo change, make mono_arch_cpu_init call
19296         mono_arch_cpu_optimizazions so sparcv9 is initialized when embedded
19297
19298 2004-08-05  Duncan Mak  <duncan@ximian.com>
19299
19300         * mini.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
19301         CEE_LDELEM_ANY.
19302
19303 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
19304
19305         * mini-amd64.c (emit_move_return_value): Move return value for normal
19306         calls too.
19307
19308 2004-08-05  Martin Baulig  <martin@ximian.com>
19309
19310         * mini.c (ret_type_to_call_opcode): Don't use a `t' variable for
19311         `type->type'; just modify `type' itself when dealing with enums
19312         and generic instances.
19313         (check_call_signature): Make `simple_type' a `MonoType *'.
19314
19315 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
19316
19317         * mini.c: Use OP_PADD to add offsets to addresses.
19318
19319         * mini-amd64.h: Disable SIGSEGV_ON_ALTSTACK.
19320
19321 2004-08-04  Bernie Solomon  <bernard@ugsolutions.com>
19322
19323         * mini-sparc.c (mono_arch_emit_epilog): fix check
19324         for folding last op into restore instruction
19325
19326 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
19327
19328         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Allocate
19329         helper methods using the code manager.
19330         
19331         * exceptions-amd64.c (mono_arch_get_throw_exception): Fix maximum length.
19332
19333         * mini-amd64.c (mono_arch_allocate_vars): Fix tls offset detection.
19334
19335 Tue Aug 3 23:50:00 EST 2004 Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
19336         
19337         * mini-s390x.c mini-s390x.h tramp-s390x.c inssel-s390x.brg
19338           cpu-s390x.md exceptions-s390x.c Makefile.am: S/390 64-bit JIT
19339
19340         * mini-s390.c: fix tail processing
19341
19342 Tue Aug 3 01:35:44 PDT 2004 Paolo Molaro <lupus@ximian.com>
19343
19344         * mini-ppc.c: mul.ovf.un exception name fix.
19345
19346 2004-08-03  Martin Baulig  <martin@ximian.com>
19347
19348         * mini-x86.c (mono_arch_call_opcode): Correctly handle generic
19349         instances; before jumping to `handle_enum', also modify `ptype'.
19350
19351 2004-08-02  Bernie Solomon  <bernard@ugsolutions.com>
19352
19353         * cpu-sparc.md: fcall maximal length too small.
19354
19355 2004-08-02  Zoltan Varga  <vargaz@freemail.hu>
19356
19357         * mini-amd64.c mini.h: Add initial support for passing/returning 
19358         structures to/from pinvoked methods.
19359
19360 Mon Aug 2 11:59:35 PDT 2004 Paolo Molaro <lupus@ximian.com>
19361
19362         * mini-ppc.c: reg allocator fix.
19363
19364 2004-07-31  Zoltan Varga  <vargaz@freemail.hu>
19365
19366         * mini-amd64.c (mono_arch_output_basic_block): Fix OP_X86_PUSH_OBJ.
19367
19368         * inssel.brg: Optimize memset on 64 bit machines.
19369
19370         * mini-amd64.c: Fix some vararg cases.
19371
19372 2004-07-30  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
19373
19374         * mini-s390.c: Corrected macro in emit_float_to_int
19375
19376         * s390-abi.cs: Tests to exercise the s390 ABI
19377
19378 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
19379
19380         * exceptions-amd64.c (mono_arch_find_jit_info): Fix restoring of
19381         caller saved regs.
19382
19383         * basic.cs: Add a test for add.ovf.un.
19384
19385 2004-07-30  Bernie Solomon  <bernard@ugsolutions.com>
19386
19387         * mini-sparc.c: add case for OP_IDIV_UN
19388
19389 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
19390
19391         * mini-amd64.c mini-amd64.h mini.c: Add support for vararg pinvoke calls.
19392         
19393         * mini-amd64.c cpu-amd64.md: Ongoing JIT work.
19394
19395 2004-07-30  Ben Maurer  <bmaurer@ximian.com>
19396
19397         * basic.cs: regression tests.
19398
19399         * inssel-x86.brg: Disable cmp BYTE PTR [eax], imm, it causes various
19400         regressions.
19401
19402 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
19403
19404         * basic.cs: Add a new test.
19405
19406         * mini-amd64.c aot.c cpu-amd64.md: Add support for tracing, profiling 
19407         and AOT. Various fixes and optimizations.
19408
19409         * inssel.brg (CALL_REG): Add 64 bit versions of call_reg rules.
19410
19411 Fri Jul 30 15:49:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
19412
19413         * mini-ppc.c: make sure temp regs are not used for global reg
19414         allocation.
19415
19416 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
19417
19418         * cpu-sparc.md: conv_i8 fix for 64bits
19419
19420         * mini-sparc.c: add cases for OP_IXXX codes for 64bits
19421
19422 2004-07-29  Ben Maurer  <bmaurer@ximian.com>
19423         
19424         * cpu-pentium.md, mini-x86.c, inssel-x86.brg, mini-ops.h:
19425         add opcode for cmp BYTE PTR [eax], imm.
19426
19427         * inssel.brg: Make memcpy and memset takes bases.
19428
19429 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
19430
19431         * *-amd64.*: More AMD64 work.
19432         
19433 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
19434
19435         * cpu-pentium.md, inssel-x86.brg, mini-ops.h, mini-x86.c:
19436         add a compare-not-equal opcode.
19437         
19438 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
19439
19440         * mini.c: Use mono_init_from_assembly instead of mono_init.
19441         
19442 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
19443
19444         * mini.c: Fix opcode mapping for STACK_MP on 64 bit platforms.
19445
19446         * mini.c (CEE_NEWOBJ): Call mono_array_new_va using the correct signature.
19447
19448         * mini.c: Use MONO_ARCH_SIGACTION on AMD64 as well.
19449
19450         * inssel.brg: 64 bit fixes.
19451
19452         * mini.h (MonoCallInst): Add some AMD64 specific data.
19453
19454         * mini.h: Add some OP_P opcodes.
19455
19456 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
19457
19458         * basic.cs: tests for 61797 and 61740
19459
19460 Tue Jul 27 16:05:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
19461
19462         * mini-ppc.c, mini-sparc.c, mini-s390.c: keep track of line
19463         numbers in the debug info (spotted by Geoff Norton, <gnorton@customerdna.com>).
19464
19465 2004-07-24  Zoltan Varga  <vargaz@freemail.hu>
19466
19467         * mini-sparc.c (mono_arch_output_basic_block): Add CEE_CONV_U8/I8.
19468
19469         * *-amd64*.*: Ongoing AMD64 work.
19470
19471 2004-07-23 Zoltan Varga <vargaz@freemail.hu>
19472
19473         * inssel-long.brg: Implement CONV_I8/CONV_U8 in the backends.
19474
19475         * *-amd64*: Ongoing AMD64 work.
19476
19477         * mini-arch.h: Add AMD64 support.
19478
19479         * mini-sparc.c (mono_arch_is_inst_imm): New arch dependent function.
19480
19481         * mini.h: Add new arch dependent function mono_arch_is_inst_imm.
19482
19483         * mini-ops.h: Add new opcodes.
19484
19485         * Makefile.am: Add AMD64 support.
19486
19487         * inssel.brg inssel-long32.brg inssel-long.brg: Move mul/div and shift
19488         rules into the inssel-long*.brg files.
19489
19490         * *-amd64.*: Add beginnings of AMD64 backend.
19491
19492 2004-07-22  Ben Maurer  <bmaurer@ximian.com>
19493
19494         * mini.c (print_dfn): commenting out the code that prints
19495         the cil. With -O=deadce, this makes -v -v crash.
19496         
19497         * cpu-pentium.md: make checkthis have a length of 2
19498
19499 2004-04-21  Bernie Solomon  <bernard@ugsolutions.com>
19500
19501         * mini-sparc.h: fix implementations of __builtin
19502         functions for Sun compiler for V9.
19503
19504 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
19505
19506         * mini.c: use the new stelem.ref wrapper
19507         * exceptions.cs, arrays.cs: new stelem.ref tests
19508
19509 Wed Jul 14 19:08:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
19510
19511         * mini-ppc.c, exceptions-ppc.c: cleanups and fixes (the
19512         new XSP should work with these changes).
19513
19514 2004-07-14  Ben Maurer  <bmaurer@ximain.com>
19515         
19516         * inssel-{long32,x86,}.brg: trivial optimizations.
19517         
19518 Mon Jul 12 20:25:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
19519
19520         * mini.c: load value when emitting box operation in
19521         constrained calls.
19522
19523 2004-07-12  Ben Maurer  <bmaurer@ximian.com>
19524
19525         * mini-x86.c (OP_CHECK_THIS): cmp DWORD PTR [eax], eax
19526         is one byte shorter than cmp DWORD PTR [eax], 0.
19527
19528 Mon Jul 12 17:47:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
19529
19530         * inssel-ppc.brg: arguments on the stack are always
19531         relative to the stack pointer (spotted by Neale Ferguson).
19532
19533 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19534
19535         * exceptions-x86.c: delay appending the method name to the trace until
19536         after mono_jit_info_table_find is called, as this gets the real
19537         MonoMethod.
19538
19539 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
19540
19541         * aot.c: register roots
19542
19543 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
19544
19545         * aot.c : I could just use PLATFORM_WIN32 flag.
19546
19547 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
19548
19549         * aot.c : Reverting the previous fix. This time it broke linux build.
19550
19551 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
19552
19553         * aot.c : quick cygwin build fix. mkdir() with two args does not exist.
19554
19555 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
19556
19557         * mini.c (handle_stack_args): Remove some more debugging code.
19558         
19559         * mini.c (handle_stack_args): Remove debug output left in by mistake.
19560
19561         * driver.c mini.h aot.c: Allow additional options to be specified with
19562         --aot and pass them to mono_compile_assembly.
19563
19564         * aot.c: Add experimental code to AOT compile all loaded assemblies
19565         on demand and save the code into a cache in the filesystem.
19566
19567         * aot.c: Add support for more wrapper methods.
19568         
19569         * mini.c (handle_stack_args): Handle some corner cases. Fixes 
19570         58863.
19571
19572         * cpu-*.md: Remove removed opcodes.
19573
19574         * mini.h mini.c: Move JIT icall handling to icall.c. Replace usage of
19575         CEE_MONO_PROC<x> with CEE_MONO_ICALL. Move registration of marshalling
19576         related icalls to marshal.c.
19577
19578 2004-07-06  Zoltan Varga  <vargaz@freemail.hu>
19579
19580         * mini-ops.h: Add OP_SAVE_LMF and OP_RESTORE_LMF.
19581
19582         * Makefile.am (EXTRA_DIST): Add inssel-long[32].brg.
19583
19584         * inssel.brg: Fix warning. Add rules for SAVE_LMF and RESTORE_LMF.
19585
19586 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
19587         * liveness.c: If liveness is recomputated we need to reset the information
19588         for each variable. This way, if the liveness range has been narrowed
19589         by optimizations that happened after the last computation, we can return
19590         a smaller range.
19591         
19592         For example, if you have
19593         
19594         {
19595                 int i = 0;
19596                 
19597                 // Tons of code that does not affect i
19598                 
19599                 i = foo ();
19600                 ...
19601         }
19602         
19603         i = 0 is dead code and will be removed by SSA. However, when
19604         linear scan gets to the code, i will still appear to be live
19605         throughout the entire block. This prevents good register allocation.
19606
19607 2004-07-06  Martin Baulig  <martin@ximian.com>
19608
19609         * debug-mini.c (mono_debug_init_method): Allow
19610         MONO_WRAPPER_MANAGED_TO_NATIVE wrappers.
19611         (mono_debug_add_icall_wrapper): New method.
19612
19613         * mini.c (mono_icall_get_wrapper): Call mono_debug_add_icall_wrapper().
19614
19615 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
19616
19617         * mini.c (optimize_branches): Fix linking of bblocks in branch->branch
19618         optimization.
19619
19620 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
19621
19622         * aot.c (mono_aot_load_method): Fix loading of debug info.
19623
19624 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
19625
19626         * aot.c: Add logging support.
19627
19628 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
19629
19630         * mini.h: Add prototype for mono_print_method_from_ip.
19631
19632         * mini.c: 64 bit fixes. Use LCOMPARE for comparing longs.
19633
19634         * inssel.brg: 64 bit fixes.
19635
19636         * inssel.brg inssel-long32.brg: Move 32 bit arithmetic rules to 
19637         inssel-long32.brg.
19638
19639         * Makefile.am: Add SPARC64 support.
19640
19641 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
19642
19643         * aot.c: Fix alignment problems on 32 bit platforms.
19644
19645 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
19646
19647         * helpers.c (mono_disassemble_code): Pass -xarch=v9 to assembler on
19648         SPARC64.
19649
19650         * aot.c: Add SPARC64 support. Reorganize patch table to fix alignment
19651         problems.
19652
19653         * mini.h: Bump AOT file version. Some 64 bit fixes.
19654
19655 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
19656
19657         * inssel-sparc.brg: Add new rule to avoid register moves.
19658
19659         * inssel.brg: Add ldind_to_load_membase helper function.
19660
19661 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
19662
19663         * mini.c: OffsetToStringData intrinsic.
19664         
19665 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
19666
19667         * ssa.c: Handle OP_LCOMPARE the same as OP_COMPARE.
19668
19669         * objects.cs exceptions.cs basic.cs basic-long.cs basic-calls.cs: New
19670         regression tests.
19671
19672         * mini-ops.h cpu-sparc.md mini-sparc.h mini-sparc.c exceptions-sparc.c tramp-sparc.c inssel-long.brg: Add SPARC64 support.
19673 Mon Jun 28 18:05:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
19674
19675         * mini.c: reinstated mono_compile_get_interface_var()
19676         on x86, too, since the change breaks the Gtk# build there as well.
19677
19678 Fri Jun 25 17:36:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
19679
19680         * driver.c: remove loop from the default optimizations: it seems to
19681         interact badly with some of the other options (see bug #60613).
19682
19683 2004-06-25  Zoltan Varga  <vargaz@freemail.hu>
19684
19685         * mini.c mini-x86.h mini-x86.c: Applied patch from Guenter Feldmann 
19686         (fld@informatik.uni-bremen.de): Add Solaris x86 support.
19687
19688 Tue Jun 22 21:29:11 CEST 2004 Paolo Molaro <lupus@ximian.com>
19689
19690         * mini-ppc.c, cpu-g4.md: small updates to be able to compile
19691         vararg-using methods.
19692
19693 2004-06-21  Martin Baulig  <martin@ximian.com>
19694
19695         * mini/mini-exceptions.c
19696         (mono_handle_exception): Added `gpointer original_ip' argument.
19697         After calling mono_unhandled_exception(), call
19698         mono_debugger_unhandled_exception() and if that returns true,
19699         restore the context and return.
19700
19701 Mon Jun 21 19:26:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
19702
19703         * mini-ppc.c: prefer the use of relative branches so
19704         they won't need to be patched in aot code (patch from Patrick Beard).
19705
19706 Mon Jun 21 19:03:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
19707
19708         * aot.c: patch from Patrick Beard to make the output assembly
19709         more correct for the MacOSX assembler. Small tweak to
19710         generate sane images on Linux/PPC, too.
19711
19712 Fri Jun 18 18:24:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
19713
19714         * mini.c, mini.h, mini-ppc.c: handle varargs methods with a special
19715         case until bug #59509 is fixed (shows up in #60332).
19716
19717 Tue Jun 15 16:36:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
19718
19719         * mini.c: make sure the needed wrappers are compiled, too, with
19720         precomp.
19721
19722 Mon Jun 14 18:36:08 CEST 2004 Paolo Molaro <lupus@ximian.com>
19723
19724         * driver.c: remove NPTL reference in --version output.
19725
19726 Sun Jun 13 17:25:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
19727
19728         * aot.c: patch from Patrick Beard (pcbeard@mac.com) to
19729         generate valid assembly for the Mach-O assembler.
19730
19731 Sun Jun 13 15:59:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
19732
19733         * driver.c: don't include abcrem in the all optimization specifier
19734         since it slows down jit compilation too much for now.
19735
19736 2004-06-12 Ben Maurer  <bmaurer@users.sourceforge.net>
19737
19738         * mini.c: use BIGMUL only if both operands have the same signage.
19739         * iltests.il: Test for bug 60056. (errors related to signage in
19740         BIGMUL).
19741
19742         r=lupus.
19743
19744 Thu Jun 10 16:06:42 CEST 2004 Paolo Molaro <lupus@ximian.com>
19745
19746         * mini.c, aot.c: memory leak fixes.
19747
19748 Tue Jun 8 16:37:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
19749
19750         * inssel-long32.brg: implemented a few missing ulong cast opcodes.
19751
19752 Tue Jun 8 15:36:30 CEST 2004 Paolo Molaro <lupus@ximian.com>
19753
19754         * Makefile.am: remove the -static hack completely, it links in
19755         statically glib as well.
19756
19757 Sat Jun 5 16:32:33 CEST 2004 Paolo Molaro <lupus@ximian.com>
19758
19759         * iltests.il, mini.c: fixed bug#59580 in branch optimization.
19760         * exceptions.cs: make it compile with new mcs/csc.
19761
19762 2004-06-03 Massimiliano Mantione <massi@ximian.com>
19763         * cpu-pentium.md basic-float.cs Fixed bug on fpu spills (see bug 54467),
19764         and added relevant test case.
19765
19766 Mon May 31 19:41:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
19767
19768         * mini.c revert Zoltan's fix to bug#58863 on ppc, since it causes
19769         regressions in gtk-sharp.
19770
19771 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
19772
19773         * exceptions.cs: New regression tests.
19774
19775         * jit-icalls.c (mono_llmult_ovf): Fix some boundary conditions.
19776
19777 Sat May 29 10:45:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
19778
19779         * mini.c: emit castclass/isinst in their own trees (bug #54209/59057).
19780
19781 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
19782
19783         * mini-sparc.h (MONO_ARCH_NEED_DIV_CHECK): Define this.
19784
19785         * cpu-sparc.md mini-sparc.c: Add overflow detection to div opcodes.
19786
19787 2004-05-28      Patrik Torstensson <totte@hiddenpeaks.com>
19788
19789         * mini.c (mono_jit_runtime_invoke): Init class in this
19790         method instead of trusting mono_jit_compile_method to
19791         do the work (because wrappers can be in object class)
19792
19793 2004-05-27  Zoltan Varga  <vargaz@freemail.hu>
19794
19795         * mini-sparc.c (mono_arch_output_basic_block): Fix sub.imm.
19796
19797         * basic-long.cs: New regression test.
19798
19799 Thu May 27 15:50:52 CEST 2004 Paolo Molaro <lupus@ximian.com>
19800
19801         * cpu-g4.md, mini-ppc.c: fixes to long add/sub ovf opcodes
19802         and div/rem checks.
19803
19804 Thu May 27 12:36:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
19805
19806         * Makefile.am: fix miguel's change to build mono statically against
19807         libmono (track build dependencies).
19808
19809 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
19810
19811         * cfold.c: Some glib versions do not have G_MININT32.
19812
19813 2004-05-26  Massimiliano Mantione  <massi@ximian.com>
19814
19815         * mini-x86.c cpu-pentium.md Makefile.am basic-math.cs: Fixed problem
19816         with precision of tan, atan, sin and cos, and implemented related
19817         regressions tests (fixes bug 54467, but one new problem appeared and
19818         is not fixed yet).
19819
19820 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
19821
19822         * cfold.c (FOLD_BINOPZ): Avoid division by zero.
19823
19824         * exceptions.cs: Add test for constant folding && division by zero.
19825
19826         * driver.c mini.h mini.c mini-x86.c: Revert most of the previous patch
19827         since driver.c is in libmono too, so the optimization was useless.
19828
19829         * driver.c mini.h mini.c mini-x86.c: Moved the mono_lmf_addr TLS 
19830         variable to driver.c so the compiler can emit more efficient code to
19831         access them.
19832
19833 2004-05-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19834
19835         * Makefile.am: don't distribute generated inssel.[ch] files.
19836
19837 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
19838
19839         * mini.c (mono_jit_compile_method_with_opt): Really emit icall wrappers
19840         into the default appdomain. Fixes #58707.
19841
19842         * jit-icalls.c: Remove the broken approximation for truncl, doing
19843         no conversion is better.
19844
19845         * mini.c (handle_stack_args): Avoid reusing variables for stack slots.
19846         Fixes #58863.
19847
19848 Tue May 25 14:33:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
19849
19850         * mini-ops.h, mini-ppc.c, cpu-g4.md, inssel-ppc.brg: eliminate the use
19851         of the mcrxr instruction which is not available on some processors
19852         even if it's documented to be. Implement add and sub overflow correctly
19853         (still not complete for long unsigned). Speed up icalls a bit.
19854
19855 2004-05-25 13:01 CET Patrik Torstenson <totte@hiddenpeaks.com>
19856
19857         * mini.c (mono_jit_compile_method_with_opt): Make sure that
19858         we run .cctor in the current domain instead of target_domain.
19859         
19860         Fixes bug #58558, .cctor not being called in -O=shared.
19861
19862 Tue May 25 12:46:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
19863
19864         * mini-ppc.h, jit-icalls.c: added explicit checks for divide by zero.
19865
19866 2004-05-24 Ben Maurer  <bmaurer@users.sourceforge.net>
19867
19868         * mini-x86.c (EMIT_COND_BRANCH): If an OP_LABEL has an offset
19869         which can be done with an imm8, do it that way.
19870         (mono_arch_output_basic_block): ditto for a jmp
19871         (mono_arch_emit_prolog): Computate maximum offset of a label.
19872
19873 2004-05-24 18:18 CET Patrik Torstenson <totte@hiddenpeaks.com>
19874
19875         * mini-x86.c (mono_arch_local_regalloc): the reg allocator
19876         now tries to allocate prefered physical reg's for virtual
19877         regs. This reduces the number of emited spills/loads with
19878         20-30% on our core assemblies.
19879
19880 Mon May 24 18:21:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
19881
19882         * jit-icalls.c: truncl() is not needed and trunc() is
19883         the correct thing to do anyway (bug #58287).
19884
19885 2004-05-24  Zoltan Varga  <vargaz@freemail.hu>
19886
19887         * mini-sparc.c (mono_arch_flush_icache): Call sync_instruction_memory
19888         if available.
19889
19890 Mon May 24 12:49:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
19891
19892         * driver.c: enable loop optimizations by default.
19893
19894 Mon May 24 11:13:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
19895
19896         * mini-x86.c: fix calc of max loop size when aligning loops start.
19897
19898 2004-05-23  Zoltan Varga  <vargaz@freemail.hu>
19899
19900         * ssa.c (mono_ssa_cprop): Allocate carray dynamically instead of on
19901         the stack.
19902
19903 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
19904
19905         * mini-sparc.c (mono_arch_output_basic_block): ADD_IMM and SUB_IMM
19906         should set carry.
19907
19908         * basic-long.cs: Add tests for add/subtract of immediates with carry.
19909
19910         * mini.c exceptions-x86.c: Remove MONO_USE_EXC_TABLES stuff.
19911         
19912         * mini.c (inline_method): Allways inline some wrappers even if the cost
19913         is too large. Fixes #58785.
19914
19915         * mini.c: Add support for MARSHAL_CONV_FTN_DEL.
19916         
19917 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
19918
19919         * mini-sparc.c exceptions-sparc.c: Applied patch from Mark Crichton
19920         (crichton@gimp.org). Beginning of support for sparc/linux.
19921
19922         * mini-sparc.c: Optimize retrieval of LMF address.
19923
19924 Fri May 21 08:00:12 EDT 2004 Paolo Molaro <lupus@ximian.com>
19925
19926         * exceptions-ppc.c:  handle alloca in methods with clauses.
19927
19928 Fri May 21 07:35:30 EDT 2004 Paolo Molaro <lupus@ximian.com>
19929
19930         * mini-ppc.c: cleanups, off-by-one fixes, avoid recursive thunks.
19931
19932 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
19933
19934         * mini.c: Delegate most of the abort signal work to 
19935           mono_thread_request_interruption, which also handles Stop and Suspend
19936           states.
19937
19938 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
19939
19940         * mini.c mini.h: Allow inlining of icall wrappers if the backend 
19941         supports the save/restore lmf opcodes.
19942
19943 2004-05-19  Zoltan Varga  <vargaz@freemail.hu>
19944
19945         * mini-x86.c (mono_arch_setup_jit_tls_data): Handle code generated
19946         by gcc-3.4 as well.
19947
19948         * mini-x86.h mini-x86.c tramp-x86.c: Optimize lmf restoring code.
19949
19950 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
19951
19952         * mini.h mini.c (mini_method_compile): Only run abc removal pass on 
19953         methods which contain array accesses.
19954
19955         * mini.c (CEE_LDTOKEN): Handle this instruction correctly on bb
19956         boundaries. Fixes #58537.
19957
19958         * iltests.il: Add regression test for #58537.
19959
19960 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
19961
19962         * mini-x86.c (mono_arch_local_regalloc): Last part of
19963         fix for bug #58633 (releasing register to early).
19964
19965 2004-05-18  Miguel de Icaza  <miguel@ximian.com>
19966
19967         * basic-long.cs: Add new regression test.
19968
19969 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
19970
19971         * mini-x86.c (mono_arch_local_regalloc): Avoid releasing a
19972         register too early on the chain.
19973
19974 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
19975
19976         * mini.c (create_helper_signature): Use a helper function to reduce
19977         the code which needs to be written. Also set the calling convention of
19978         icalls on windows. Fixes #57840.
19979
19980 Tue May 18 11:05:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
19981
19982         * mini.h, exceptions-x86.c, exceptions-sparc.c, exceptions-s390.c,
19983         exceptions-ppc.c: added helper function to get the instruction address
19984         from a signal handler context.
19985
19986 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
19987
19988         * helpers.c: use g_get_tmp_dir. Invokes happyness 
19989         from gonzalo.
19990
19991 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
19992
19993         * helpers.c: Add new env variable to pass args to objdump.
19994         Specifically for those of us who love -Mintel. r=miguel, gonzalo.
19995
19996 2004-05-17  Radek Doulik  <rodo@ximian.com>
19997
19998         * Makefile.am (common_sources): added abcremoval.h so it get
19999         disted and daily mono packages on go-mono.com will build again
20000
20001 2004-05-17  Massimiliano Mantione  <massi@ximian.com>
20002
20003         * abcremoval.c: Fixed coding style, added copyright header.
20004
20005         * abcremoval.h: Fixed style and moved prototype to mini.h, added copyright header.
20006
20007         * mini.h: Added prototype for abc removal main function.
20008
20009         * build_relations_propagation_table.pl: Added copyright header.
20010
20011 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
20012
20013         * basic-long.cs: reg test for complex ceq_long bug.
20014
20015 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
20016
20017         * mini-x86.c (mono_arch_local_regalloc): Correctly free 
20018         reg in long and clob case (bug #58343). Fixed/added comments.
20019
20020 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
20021
20022         * mini.c (mono_jit_runtime_invoke): Follow new convention
20023         of calling the invoke method with an function pointer.
20024
20025 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
20026
20027         * ChangeLog: Fix author of memory leak patch.
20028
20029 Fri May 14 15:13:06 CEST 2004 Paolo Molaro <lupus@ximian.com>
20030
20031         * Makefile.am: fix make dist as well...
20032
20033
20034 2004-05-14  Massimiliano Mantione  <massi@ximian.com>
20035
20036         * cfold.c: Made so that conversions from pointer to int4 are no-ops
20037         on archs where pointers are 4 bytes long.
20038
20039         * Makefile.am: Added abcremoval.c source file.
20040
20041         * abcremoval.c: Added abcremoval.c.
20042
20043         * abcremoval.h: Added abcremoval.h.
20044
20045         * build_relations_propagation_table.pl: Added build_relations_propagation_table.pl.
20046
20047         * inssel.brg: Enabled bounds check removal.
20048
20049         * mini.c: Added support for abcrem optimization.
20050
20051         * mini.h: Added abcrem optimization label.
20052
20053         * driver.c: Added support for abcrem optimization.
20054
20055         * propagated_relations_table.def: Added propagated_relations_table.def.
20056
20057 Fri May 14 14:30:13 CEST 2004 Paolo Molaro <lupus@ximian.com>
20058
20059         * mini.c, cfold.c: fix style.
20060
20061 Fri May 14 14:28:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
20062
20063         * mini.c: handle issue with the low-level implementation of
20064         some long opcodes (bug #54209).
20065
20066 2004-05-13 Ben Maurer  <bmaurer@users.sourceforge.net>
20067
20068         * basic.cs: test for my new cmov stuff.
20069
20070 2004-05-13      Patrik Torstensson
20071
20072         * mini-x86.c: added OP_X86_COMPARE_MEMBASE_IMM peephole
20073         opt and added peephole documentation.
20074
20075 Thu May 13 11:41:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
20076
20077         * tramp-ppc.c: rewrote the generic trampoline code.
20078
20079 2004-05-11      Patrik Torstensson
20080
20081         * mini-x86.c: optimize long shl/shr asm code (one less branch)
20082
20083 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
20084
20085         * basic.cs basic-long.cs objects.cs: Make these compile under MS csc.
20086
20087         * mini.h mini.c dominators.c: Applied patch from Derek Woo
20088         (derek@eecg.toronto.edu): Fix memory leaks in loop optimizations.
20089
20090         * mini.c: Add new icalls for AsAny marshalling.
20091
20092 Tue May 11 16:00:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
20093
20094         * tramp-ppc.c, mini-ppc.c: more cleanups.
20095
20096 2004-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20097
20098         * mini.c: no warnings.
20099
20100 Tue May 11 13:59:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
20101
20102         * mini-ppc.c, mini.c: use mono_resolve_patch_target ().
20103
20104 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
20105
20106         * mini.c: In the thread abort signal handler, if the thread is in the
20107         process of being stoped, don't throw the Abort exception, just stop the
20108         thread.
20109
20110 Tue May 11 12:15:24 CEST 2004 Paolo Molaro <lupus@ximian.com>
20111
20112         * tramp-ppc.c: removed old code.
20113
20114 Tue May 11 12:02:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
20115
20116         * mini.h, mini-ppc.c, cfold.c: export mono_is_power_of_two().
20117         do some simple speed optimizations on ppc.
20118
20119 Mon May 10 17:21:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
20120
20121         * mini-ppc.c, cpu-g4.md: fixes to handle large stack frames
20122         and large offsets in load/store.
20123
20124 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
20125
20126         * mini-x86.c (mono_arch_local_regalloc): Remove the previous fix, since
20127         it causes regressions.
20128
20129 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
20130
20131         * mini-sparc.c: Fix vararg support + add beginnings of sigaltstack
20132         support.
20133
20134 Fri May 7 13:25:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
20135
20136         * jit-icalls.c: remove warnings.
20137         * inssel-x86.brg, inssel.brg, mini-x86.c, cfold.c: some simple
20138         speedups for unsafe code.
20139
20140 2004-05-07 Ben Maurer  <bmaurer@users.sourceforge.net>
20141
20142         * inssel.brg: Optimize Stind.[ui][12]. r=zoltan.
20143
20144 2004-05-06  Zoltan Varga  <vargaz@freemail.hu>
20145
20146         * basic-calls.cs: Add new regression test.
20147
20148         * mini.c (mono_runtime_install_handlers): Use SA_ONSTACK since it is
20149         more portable.
20150
20151         * mini.c (mono_method_to_ir): Handle opcode emulation for *_OVF opcodes.
20152
20153         * mini-x86.c (mono_arch_local_regalloc): Free new_dest register when it
20154         is no longer used.
20155
20156 2004-05-06      Patrik Torstensson
20157
20158         * mini-x86.[c|h], inssel-x86.brg, cpu-pentium.md, mini.c: enabled
20159         long reg allocation in any reg (not only eax:edx) and implemented 
20160         long shl/shr ops in asm instead of helpers.
20161
20162 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
20163
20164         * mini-sparc.h: Fix warnings.
20165
20166         * exceptions-sparc.c (mono_arch_find_jit_info): Pop unused lfm off the
20167         stack.
20168
20169         * mini-exceptions.c (mono_handle_exception): Call the filter in a
20170         separate statement for clarity.
20171
20172         * mini-sparc.c: Update status.
20173
20174 2004-05-04  Zoltan Varga  <vargaz@freemail.hu>
20175
20176         * mini-exceptions.c (ves_icall_get_frame_info): Flush register windows
20177         here.
20178
20179 Mon May 3 22:58:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
20180
20181         * inssel-ppc.brg: another small pre-release workaround:
20182         we don't do overflow detection for long_sub_un.
20183
20184 Sun May 2 20:12:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
20185
20186         * mini.c, mini-ops, inssel-long32.brg: speedup ulong >> 32
20187         (also works around a weird ppc bug: 57957).
20188
20189 Sat May 1 16:56:10 EDT 2004 Paolo Molaro <lupus@ximian.com>
20190
20191         * tramp-ppc.c: trampoline fixes.
20192
20193 Fri Apr 30 15:54:26 EDT 2004    Paolo Molaro <lupus@ximian.com>
20194
20195         * mini-ppc.c: fixed typos.
20196
20197 Thu Apr 29 20:15:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
20198
20199         * mini-ppc.c, exceptions-ppc.c: more code saves registers
20200         at the top of the stack. Fixed typos. Use a frame registers
20201         for all the methods with exception clauses.
20202
20203 Thu Apr 29 18:52:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
20204
20205         * exceptions-ppc.c: restore fp registers.
20206
20207 Thu Apr 29 18:26:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
20208
20209         * mini-ppc.c, exceptions-ppc.c: save the registers in reverse
20210         order from the stack top (moved the stack room to save the
20211         return value for trace after the param area). Fixed corruption
20212         in restoring registers on unwind.
20213
20214 Thu Apr 29 16:47:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
20215
20216         * mini-ppc.c, cpu-g4.md: fixed unisgned -> double conversion.
20217
20218 Thu Apr 29 13:50:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
20219
20220         * exceptions-ppc.c, mini-ppc.h, mini-ppc.c: fixed localloc
20221         and prolog/epilog for methods that use it. Allow
20222         enough param area room for varargs methods. Fix miguel's
20223         breakage in exception handling.
20224
20225 Thu Apr 29 12:06:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
20226
20227         * Makefile.am: run genmdesc only on current arch.
20228
20229 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20230
20231         * exceptions-x86.c:
20232         * mini-x86.h: fix the build on windows.
20233
20234 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
20235
20236         * 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.
20237
20238         * exceptions-sparc.c exceptions-ppc.c exceptions-s390.c mini-ppc.h mini-s390.h mini-sparc.h: Fix up ports after changes.
20239
20240         * mini-exceptions.c: New file.
20241         
20242         * mini.c mini-exceptions.c mini-x86.h exceptions-x86.c Makefile.am:
20243         Move some parts of the x86 exception handling code to an 
20244         arch-independent file so it can be shared with other ports.
20245
20246 Tue Apr 27 12:15:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
20247
20248         * trace.c, cpu-g4.md, inssel-ppc.brg, mini-ppc.c: some fixes for FP code.
20249
20250 2004-04-26  David Waite  <mass@akuma.org>
20251
20252         * driver.c: remove comma from end of enumeration declaration
20253
20254 2004-04-26  Jackson Harper  <jackson@ximian.com>
20255
20256         * driver.c: parse config file before loading first assembly. This
20257         allows the user gac to be enabled/disabled. 
20258         
20259 2004-04-23  Miguel de Icaza  <miguel@ximian.com>
20260
20261         * mini-ppc.c (ppc_patch): Replaced the branch code patching with a
20262         simpler mechanism: we do not care what is encoded initially
20263         (branch absolute or relative), we care about the code and its
20264         target.  I kept the old code for reference for now.
20265
20266         The new code tries first to determine if the jump is anywhere in
20267         the -/+32 absolute meg range, if it succeeds, it encodes using the
20268         absolute branch;  If not, it tried to find something in the
20269         relative range, if not, it uses the handle_thunk code. 
20270
20271 Fri Apr 23 14:20:40 EDT 2004 Paolo Molaro <lupus@ximian.com>
20272
20273         * exceptions-ppc.c: use the correct ip register on macosx.
20274
20275 Thu Apr 22 13:23:16 EDT 2004 Paolo Molaro <lupus@ximian.com>
20276
20277         * exceptions.c, mini.c, mini-ppc.h: adapt code to macosx.
20278
20279 Thu Apr 22 18:08:37 CEST 2004 Paolo Molaro <lupus@ximian.com>
20280
20281         * mini-ppc.c, cpu-g4.md: made the branch macros more flexible.
20282         Raise exception on integer divide by zero by hand since the hw
20283         doesn't support it. Handle NaNs in FP compares.
20284
20285 Thu Apr 22 16:10:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
20286
20287         * exceptions-ppc.c, mini-ppc.h, mini.c: simplified some
20288         code reducing duplication between the platforms and enabled
20289         signal exception handling (on linux for now).
20290
20291 Wed Apr 21 12:27:48 EDT 2004 Paolo Molaro <lupus@ximian.com>
20292
20293         * exceptions-ppc.c: more macosx support.
20294
20295 Wed Apr 21 16:38:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
20296
20297         * mini-ppc.h, mini-ppc.c, cpu-g4.md: enable bigmul optimization.
20298
20299 Wed Apr 21 16:20:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
20300
20301         * mini.h, mini-ppc.c, cpu-g4.md: support for implicit exceptions.
20302
20303 2004-04-19 Ben Maurer  <bmaurer@users.sourceforge.net>
20304
20305         * iltests.il: more tests.
20306
20307 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
20308
20309         * mini-*.c (mono_arch_get_allocatable_int_vars): Skip written-only
20310         vars as well.
20311
20312 Mon Apr 19 19:39:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
20313
20314         * mini-ppc.c: some fixes to bootstrap mcs/corlib/etc.
20315
20316 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
20317
20318         * liveness.c: Mark variables as volatile in all basic blocks reachable
20319         from exception clauses.
20320
20321 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
20322
20323         * exceptions.cs (test_0_rethow_stacktrace): Make this work with
20324         inlining.
20325
20326 2004-04-18 Ben Maurer  <bmaurer@users.sourceforge.net>
20327
20328         * iltests.il, basic.cs: more tests for regalloc.
20329
20330 2004-04-17 Ben Maurer  <bmaurer@users.sourceforge.net>
20331
20332         * iltests.il: Some tests for register allocation modifications
20333         I have locally.
20334
20335 2004-04-16  Zoltan Varga  <vargaz@freemail.hu>
20336
20337         * exceptions.cs: Add regression test for bug #56782.
20338
20339         * exceptions-*.c (mono_arch_handle_exception): Do not overwrite the
20340         original stack trace if an exception is rethrown. Fixes #56782. Oh,
20341         the beauty of fixing the same thing in 5 different files...
20342
20343 2004-04-15  Zoltan Varga  <vargaz@freemail.hu>
20344
20345         * mini.c (mono_method_to_ir): Do not compute coverage for inlined
20346         methods.
20347
20348 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
20349
20350         * mini.c: Add support for STRWLPARRAY marshalling convention.
20351
20352 Wed Apr 14 18:15:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
20353
20354         * exceptions-ppc.c: missing fixes in mono_jit_walk_stack (need
20355         to init the context to setup the regs pointer).
20356
20357 Wed Apr 14 17:59:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
20358
20359         * exceptions-ppc.c: more exceptions work.
20360
20361 Wed Apr 14 17:46:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
20362
20363         * mini.c: avoid reusing the same MonoInst on multiple trees: this is
20364         not allowed.
20365
20366 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
20367
20368         * inssel-x86.brg (reg): Add new rules for add, sub and mul that
20369         can use the memory directly.
20370
20371         * cpu-pentium.md: Update documentation from a post from Zoltan. 
20372
20373         add x86_add_membase, x86_sub_membase, x86_mul_membase
20374
20375 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
20376
20377         * mini-ppc.c: Remove unused definitions FLOAT_REGS and
20378         GENERAL_REGS they were also hardcoded for all PPC ports.
20379
20380         (add_general): Use PPC_NUM_REG_ARGS instead of GENERAL_REGS.
20381
20382         Remove hard-coded limit for floating point registers, use
20383         PPC_LAST_FPARG_REG instead in MONO_TYPE_R4 and MONO_TYPE_R8.
20384
20385         Notice that in MacOS X calling conventions you can fit a lot more
20386         floating point values in registers, so I should update the PInvoke
20387         test to excercise the passing of floating point values on the
20388         stack (currently broken).
20389         
20390 2004-04-06  Miguel de Icaza  <miguel@ximian.com>
20391
20392         * tramp-ppc.c (create_trampoline_code): Added
20393         JUMP_TRAMPOLINE_SIZE. 
20394         (ppc_magic_trampoline): Follow the pattern from
20395         x86_magic_trampoline: if code is set to zero, return. 
20396         (create_trampoline_code): Always pass MonoMethod to the jump
20397         trampoline, before it was passing a null.
20398         (mono_arch_create_jump_trampoline): Implement the jump stub, could
20399         share the code with mono_arch_create_jit_trampoline. 
20400
20401         * mini-ppc.c (mono_arch_output_basic_block): CEE_JMP opcode
20402         implemented.
20403         (mono_arch_patch_code): MONO_PATCH_INFO_METHOD_JUMP patch type
20404         implemented.  
20405
20406         * cpu-g4.md: Added length for jmp instruction, the worst case
20407         scenario is 92 bytes (4 mandatory bytes, potential 19 registers
20408         for save_lmf).
20409
20410 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
20411
20412         * aot.c (mono_compile_assembly): Add back unlink removed by mistake.
20413
20414 2004-04-07  Zoltan Varga  <vargaz@freemail.hu>
20415
20416         * mini.c: Only set bblock->real_offset when adding a new bblock, and
20417         before each IL instruction.
20418
20419         * mini.c (CEE_BOX): Fix warnings.
20420
20421 2004-04-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20422
20423         * mini.c: removed a few unused vars and extra whitespace.
20424
20425 2004-04-05 Ben Maurer  <bmaurer@users.sourceforge.net>
20426
20427         * inssel.brg (MONO_EMIT_BOUNDS_CHECK): a new macro to emit bounds
20428         checks.
20429         (MONO_EMIT_BOUNDS_CHECK_IMM): the above, but when you know the
20430         index.
20431         (OP_GETCHR): use the above
20432         (CEE_LDELEMA): use the above.
20433
20434         * inseel-x86.brg (MONO_EMIT_BOUNDS_CHECK): a faster and smaller
20435         version of the generic impl.
20436         (MONO_EMIT_BOUNDS_CHECK_IMM): the same
20437         (CEE_LDELEMA): use the above.
20438
20439 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
20440
20441         * inssel-long32.brg (CEE_CONV_OVF_I8): Sign extend the i4 value to i8.
20442         Fixes #56317.
20443
20444         * iltests.il: Added new regression test for #56317.
20445
20446 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
20447
20448         * mini-x86.c (mono_arch_setup_jit_tls_data): Use pthread_attr_get_np
20449         under NetBSD. Fixes #56450.
20450
20451         * liveness.c (update_gen_kill_set): Fix previous patch.
20452
20453 2004-04-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20454
20455         * mini-x86.h: SA_STACK defined as SA_ONSTACK. Fixed build under NetBSD.
20456
20457 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
20458
20459         * mini.c (mono_method_to_ir): Avoid handle_loaded_temps in
20460         ldsfld and ldsflda.
20461
20462         * inssel-sparc.brg: Add more optimizations.
20463
20464         * mini-sparc.c: Replace multiply/divide with shifts if possible.
20465
20466 2004-04-01  Martin Baulig  <martin@ximian.com>
20467
20468         * mini.c (handle_box): New static function; moved the
20469         implementation of CEE_BOX here.
20470         (mono_method_to_ir): Added `constrained_call' variable.
20471         (mono_method_to_ir:CEE_CONSTRAINED_): Set it.
20472         (mono_method_to_ir:CEE_CALL): If `constrained_call' is set, use
20473         mono_method_get_constrained() to get the method.
20474
20475 2004-04-01  Martin Baulig  <martin@ximian.com>
20476
20477         * mini.c (TYPE_PARAM_TO_TYPE, TYPE_PARAM_TO_CLASS): Removed.
20478         (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): Removed.
20479         (mono_method_to_ir): We don't need these macros anymore since
20480         mono_class_get_full() already takes care of it. 
20481
20482 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20483
20484         * aot.c: set aot_verbose to 0, fixed format string that caused sigsegv,
20485         use @function (as doesn't accept #function here) and check the return
20486         value of system and stop if fails.
20487
20488 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20489
20490         * mini.c: set the timeout to 2s when calling mono_domain_finalize.
20491
20492 2004-03-31  Zoltan Varga  <vargaz@freemail.hu>
20493
20494         * mini-ppc.c (mono_arch_patch_code): Fix ppc build.
20495
20496         * inssel-sparc.brg mini-sparc.c aot.c: Implement AOT support.
20497
20498         * inssel-long32.brg (OP_LNEG): Use ADC instead of ADD here. Fixes
20499         #56223.
20500
20501         * basic-long.cs: Add test for negation of Int64.MinValue.
20502
20503 2004-03-30  Zoltan Varga  <vargaz@freemail.hu>
20504
20505         * mini-sparc.c: Update status.
20506
20507         * mini-sparc.c tramp-sparc.c: Save lmf in trampolines.
20508
20509         * exceptions-sparc.c: Fix return value in filters.
20510
20511         * inssel-sparc.brg: Fix register allocation in some rules.
20512
20513 2004-03-28  Martin Baulig  <martin@ximian.com>
20514
20515         * mini.c (mmono_method_to_ir): In CEE_STELEM, do a handle_stobj()
20516         if neccessary.  
20517
20518 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
20519
20520         * mini-x86.c (mono_arch_patch_code): Fix warnings.
20521         
20522         * mini-x86.c (mono_arch_output_basic_block): Fix CEE_MUL_OVF_UN if 
20523         dreg is not EAX. Thanks to Willibard Krenn for spotting this. Also
20524         remove unused conv_u4 opcode.
20525
20526         * mini-x86.c: Remove valgrind workaround since it slows down things
20527         even when mono is not run under valgrind.
20528
20529 2004-03-26  Zoltan Varga  <vargaz@freemail.hu>
20530
20531         * mini-sparc.c: Update status.
20532
20533         * inssel-sparc.brg: Add some optimizations.
20534
20535         * inssel-sparc.brg mini-sparc.c: Rework branch instructions to allow
20536         future delay slot filling. Add support for varargs, tail calls and JMP.
20537
20538         * inssel.brg mini-ops.h mini.c: Use OP_REFANYTYPE instead of 
20539         CEE_REFANYTYPE, since CEE_REFANYTYPE needs a prefix to be unique.
20540
20541         * inssel.brg: Fix register allocation in OP_ARGLIST.
20542
20543         * inssel.brg: Fix warnings.
20544
20545 2004-03-25  Martin Baulig  <martin@ximian.com>
20546
20547         * mini.c (inflate_generic_field): Removed.
20548         (mini_get_method): Removed, use mono_get_method_full(),
20549         (mini_get_class): Removed, use mono_class_get_full().
20550         (mono_method_to_ir): Pass our generic context to
20551         mono_field_from_token().        
20552
20553 2004-03-25  Martin Baulig  <martin@ximian.com>
20554
20555         * mini.c (mini_get_class): Take a `MonoGenericContext *' instead
20556         of a `MonoMethod *'.
20557         (mini_get_method): Take a `MonoGenericContext *' instead
20558         of a `MonoMethod *'.
20559         (TYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_TYPE): mono_method_to_ir() has
20560         a new local variable called `generic_context' which holds the
20561         current `MonoGenericContext *'; use it to lookup things.
20562
20563 2004-03-24  Martin Baulig  <martin@ximian.com>
20564
20565         * mini.c (mini_get_class): New static method; if we're inside a
20566         generic instance, inflate the class if neccessary.
20567         (mono_method_to_ir): Use mini_get_class() instead of mono_class_get().
20568
20569 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
20570
20571         * iltests.il: New regression test for #55976.
20572
20573         * mini.c (mono_method_to_ir): Empty the stack in endfinally. Fixes
20574         #55976.
20575
20576 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
20577
20578         * exceptions-sparc.c (mono_sparc_handle_exception): Remove debugging
20579         output.
20580
20581 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
20582
20583         * liveness.c: Consider SSA stores as well as loads when making vars
20584         volatile.
20585
20586         * exceptions.cs: New regression tests for register allocation.
20587         
20588 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
20589
20590         * mini-ppc.c, tramp-ppc.c: Added lock for accessing the domain code manager.
20591         * mini.c: Removed domain lock from mono_jit_compile_method_with_opt. Use
20592           domain lock only to protect puntual access to data structures.
20593           Added access lock for sighash, jit_icall_hash_name, 
20594           jit_icall_hash_addr and domain->code_mp.
20595
20596 2004-03-20  Zoltan Varga  <vargaz@freemail.hu>
20597
20598         * driver.c: Print SIGSEGV handling method.
20599
20600         * mini-x86.c (mono_arch_free_jit_tls_data): Add missing ifdef.
20601
20602         * mini.c (setup_jit_tls_data): Handle case when this is called
20603         multiple times for a thread.
20604
20605         * mini-x86.c cpu-pentium.md: Fix floating point branch opcodes so fbxx 
20606         is different from fbxx_un. Fixes #54303. Also use constants instead of
20607         magic numbers in a lot of places.
20608
20609 2004-03-19  Zoltan Varga  <vargaz@freemail.hu>
20610
20611         * exceptions.cs: Fix cctor test when --regression is used.
20612
20613 Thu Mar 18 19:57:56 CET 2004 Paolo Molaro <lupus@ximian.com>
20614
20615         * mini-ppc.c, exceptions-ppc.c: basic exceptions support 
20616         for Linux/ppc.
20617
20618 Thu Mar 18 19:56:19 CET 2004 Paolo Molaro <lupus@ximian.com>
20619
20620         * inssel-ppc.brg: fixed register assignments for some rules.
20621
20622 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
20623
20624         * exceptions.cs: Add test for exceptions in static constructors.
20625
20626         * mini.c (mono_jit_compile_method_with_out): Move the calling of
20627         static constructors outside the domain lock. Fixes #55720.
20628
20629 2004-03-17  Martin Baulig  <martin@ximian.com>
20630
20631         * mini.c (get_generic_field_inst): Removed, this'll never happen.
20632         (inflate_generic_field): Take the `MonoMethod *' instead of the
20633         `MonoClass *' and added support for generic method.
20634         (mono_method_to_ir): In CEE_LDSFLD and CEE_STSFLD, assert we never
20635         have a `field->parent->gen_params', only inflate the field if it's
20636         an open constructed type.
20637
20638 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
20639
20640         * exceptions-x86.c (mono_arch_handle_exception): Allocate a new
20641         exception object instead of the preconstructed ones.
20642
20643 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20644
20645         * mini.c: reverted changed to sigsegv_signal_handler commited
20646         accidentally in the previous patch.
20647
20648 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20649
20650         * mini.c:
20651         (mono_method_to_ir): CEE_CALLVIRT, abort if no method. It hanged when
20652         running --aot with an old assembly.
20653
20654 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
20655
20656         * mini-sparc.c (mono_arch_instrument_epilog): Fix handling of floating
20657         point values.
20658
20659         * mini-sparc.c: Add support for v9 branches with prediction.
20660
20661 2004-03-15  Bernie Solomon  <bernard@ugsolutions.com>
20662
20663         * mini.c (mini_init): #warning is GNUC only
20664
20665         * mini-sparc.h: implement __builtin_frame_address
20666         and __builtin_return_address for Sun C compiler
20667
20668 2004-03-15  Zoltan Varga  <vargaz@freemail.hu>
20669
20670         * exceptions-sparc.c (mono_arch_has_unwind_info): Add missing function.
20671
20672 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
20673
20674         * basic-calls.cs: Add test for unaligned byref long argument passing.
20675
20676         * mini-ops.h: Add sparcv9 compare and branch instructions.
20677
20678         * inssel-sparc.brg mini-sparc.h mini-sparc.c cpu-sparc.md: Use some
20679         v9 instructions if we have a v9 cpu.
20680
20681         * mini-sparc.c (mono_arch_get_global_int_regs): Use unused input
20682         registers for global allocation.
20683
20684         * exceptions-sparc.c: Fixes.
20685         
20686 2004-03-11  Zoltan Varga  <vargaz@freemail.hu>
20687
20688         * liveness.c (mono_analyze_liveness): Optimized version.
20689
20690         * inssel-sparc.brg cpu-sparc.md: Ongoing sparc work.
20691
20692         * mini-sparc.h mini-sparc.c tramp-sparc.c exceptions-sparc.c: Ongoing
20693         sparc work.
20694
20695         * basic-float.cs basic-calls.cs: New regression tests.
20696
20697 2004-03-10  Zoltan Varga  <vargaz@freemail.hu>
20698
20699         * mini-x86.h: Define SIGSEGV_ON_ALTSTACK only if we have a working
20700         sigaltstack implementation.
20701
20702         * mini-x86.c (mono_arch_setup_jit_tls_data): Fix previous patch.
20703         
20704         * mini-x86.c (mono_arch_setup_jit_tls_data): Turn off the sigaltstack
20705         stuff if SIGSEGV_ON_ALTSTACK is not defined.
20706
20707 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
20708
20709         * mini.c: Fix warnings.
20710         
20711         * mini.c (mono_resolve_patch_target): New function which contains the
20712         arch independent part of the patching process.
20713
20714         * mini-x86.c (mono_arch_patch_code): Move arch independent parts of the
20715         patching code to a separate function.
20716
20717 2004-03-09  Bernie Solomon  <bernard@ugsolutions.com>
20718
20719         * mini.c (add_signal_handler): ifdef out on Windows
20720
20721 2004-03-08  Zoltan Varga  <vargaz@freemail.hu>
20722
20723         * mini-sparc.h mini-sparc.c inssel-sparc.brg exceptions-sparc.c 
20724         cpu-sparc.md: Add exception handling support + other fixes.
20725
20726         * driver.c: Print --help output to stdout. Fixes #55261. Also fix
20727         typed GC detection in --version.
20728
20729         * basic.cs exceptions.cs: New regression tests.
20730
20731         * mini.h mini-x86.h mini-ppc.h: Add MonoCompileArch structure where
20732         the arch specific code can store data during a compilation.
20733
20734         * mini-ops.h: Add OP_SETFRET.
20735
20736         * mini.c (mini_get_ldelema_ins): Instead of allways calling the same
20737         function, register a separate icall for each arity, so the icalls can
20738         get a wrapper.
20739         
20740         * mini.c (mono_print_tree): Print negative offsets in a more readable
20741         form.
20742         
20743         * mini.c: Make signal handling work on sparc.
20744         
20745         * mini.c (mini_init): Add emulation for lconv_to_r8_un.
20746
20747         * inssel-long32.brg: Fix OP_LSUB_OVF_UN rule.
20748
20749         * jit-icalls.c: Emulate truncl by aintl on solaris.
20750
20751         * jit-icalls.c (mono_lconv_to_r8_un): New icall emulation function.
20752
20753 2004-03-05  Zoltan Varga  <vargaz@freemail.hu>
20754
20755         * mini.c (mini_init): fconv_to_ovf can raise exceptions.
20756
20757 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
20758
20759         * mini.c: In CEE_ISINST and CEE_CASTCLASS, if the type is an interface or
20760         a MarshalByRef type, inline a method that performs the check, taking into
20761         account that the object can be a proxy. Also implemented tow new opcodes:
20762         CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
20763         * inssel.brg: Implemented two new opcodes, mini-ops.h: OP_CISINST and 
20764         OP_CCASTCLASS, which implement CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
20765
20766 Tue Mar 2 17:23:48 CET 2004 Paolo Molaro <lupus@ximian.com>
20767
20768         * mini-ppc.c: if a relative branch displacement is too big
20769         but it points to and area reachable with an absolute branch, 
20770         avoid the thunks.
20771
20772 Tue Mar 2 16:59:40 CET 2004 Paolo Molaro <lupus@ximian.com>
20773
20774         * mini.c: optimize small copies in cpblk.
20775
20776 2004-03-01  Zoltan Varga  <vargaz@freemail.hu>
20777
20778         * basic-calls.cs basic-float.cs: New regression tests.
20779
20780         * mini-sparc.c inssel-sparc.brg mini-ops.h: Access local variables at 
20781         negative offsets from %fp. Implement localloc. Fix local register 
20782         allocation. Fix the case when the this argument needs to be saved to
20783         the stack. Implement some missing opcodes.
20784
20785 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
20786
20787         * mini.c (mini_method_compile): Reenable global regalloc in methods
20788         with exception handlers.
20789
20790         * linear-scan.c (mono_varlist_sort): Fix warning.
20791
20792         * linear-scan.c (mono_linear_scan): Fix computation of used_regs.
20793
20794         * mini-x86.c (mono_arch_regalloc_cost): Reenable precise computation of
20795         regalloc costs.
20796
20797         * liveness.c: Make all variables uses in exception clauses volatile, to
20798         prevent them from being allocated to registers. Fixes #42136.
20799
20800 2004-02-25  Zoltan Varga  <vargaz@freemail.hu>
20801
20802         * mini-x86.c (mono_arch_regalloc_cost): Revert this change since it
20803         causes regressions.
20804
20805         * mini.h linear-scan.c mini-x86.c mini-sparc.c mini-ppc.c: Add 'cfg'
20806         argument to mono_arch_regalloc_cost.
20807
20808         * mini-x86.c (mono_arch_regalloc_cost): Compute regalloc costs 
20809         precisely.
20810
20811 2004-02-24  Zoltan Varga  <vargaz@freemail.hu>
20812
20813         * mini.h mini-x86.c mini-ppc.c mini-sparc.c linear-scan.c: 
20814         Make the cost of allocating a variable to a register arch dependent.
20815
20816         * basic-calls.cs: Fix compilation of tests.
20817         
20818         * mini.h mini.c tramp-x86.c mini-x86.c: Add mono_running_on_valgrind ()
20819         helper function to cut back on the number of #ifdefs needed.
20820
20821         * mini-ppc.c: Fix compilation.
20822
20823         * basic-calls.cs: New regression tests.
20824
20825         * mini-sparc.c (mono_sparc_is_virtual_call): New helper function.
20826
20827         * tramp-sparc.c (create_specific_trampoline): Use g5 register instead
20828         of l0 since that is callee saved.
20829
20830         * tramp-sparc.c (sparc_magic_trampoline): Apply unbox trampoline only
20831         to virtual calls.
20832
20833         * mini-sparc.c: Ongoing work + flag virtual calls with a special kind 
20834         of delay instruction.
20835
20836         * inssel.brg (OP_CHECK_THIS): Set tree->sreg1 and dreg correctly.
20837
20838         * mini.h (MonoCallInst): Add 'virtual' flag.
20839
20840         * inssel.brg (mini_emit_virtual_call): Set 'virtual' flag.
20841
20842 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
20843
20844         * *.cs: New regression tests.
20845
20846         * mini-sparc.c inssel-sparc.brg: Update after latest changes. Ongoing sparc 
20847         work.
20848
20849         * mini.c (mono_runtime_install_handlers): Fix build.
20850
20851         * mini.h (MonoJitTlsData): Add 'stack_size', 'signal_stack' and
20852         'signal_stack_size' members.
20853
20854         * mini.h mini.c mini-x86.h mini-x86.c: Run sigsegv handlers on an 
20855         alternate signal stack.
20856
20857         * exceptions-x86.c: Add stack overflow handling.
20858
20859         * mini.h mini.c mini-x86.c mini-ppc.c trace.h trace.c: Move tracing 
20860         functions to arch independent code.
20861
20862         * mini.c (mono_print_tree): Print more detailed info for load_membase
20863         opcodes.
20864         
20865 2004-02-23  Martin Baulig  <martin@ximian.com>
20866
20867         * mini.c (mini_get_method): Set `gmethod->generic_inst'.
20868
20869 Sun Feb 22 22:25:19 CET 2004 Paolo Molaro <lupus@ximian.com>
20870
20871         * mini-x86.c: fixed reg allocation for div/rem.
20872
20873 2004-02-22  Miguel de Icaza  <miguel@ximian.com>
20874
20875         * driver.c (mono_main): Report some configuratio options on --version.
20876
20877 Fri Feb 20 11:01:44 PST 2004 Paolo Molaro <lupus@ximian.com>
20878
20879         * mini-ppc.c: fixed clt.un, cgt.un. Optimized calls to functions
20880         low in the address space. Correctly flush memory in thunks where we
20881         output native code.
20882
20883 2004-02-20  Martin Baulig  <martin@ximian.com>
20884
20885         * mini.c (mini_get_method): New static method; inflate all generic
20886         methods and methods in open generic instances.
20887         (mono_method_to_ir): Use mini_get_method() instead of mono_get_method().
20888         (ret_type_to_call_opcode): Added support for MONO_TYPE_GENERICINST.
20889
20890 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
20891
20892         * mini-sparc.c (mono_arch_patch_code): Update after domain->code_mp changes.
20893
20894         * tramp-sparc.c (mono_arch_create_jump_trampoline): Set ji->method.
20895
20896 2004-02-19  Bernie Solomon  <bernard@ugsolutions.com>
20897
20898         * helpers.c (mono_disassemble_code): use Sun's dis if not using gcc
20899
20900         * mini-sparc.c (flushi mono_arch_output_basic_block): make
20901         it compile using Sun's compiler.
20902
20903 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
20904
20905         * 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.
20906
20907         * basic-calls.cs basic-float.cs basic-long.cs objects.cs: New regression tests.
20908
20909 Tue Feb 17 21:41:20 CET 2004 Paolo Molaro <lupus@ximian.com>
20910
20911         * aot.c, mini-x86.c, mini.c: use the code manager instead of a mempool to hold native
20912         code.
20913         * mini-ppc.c: handle calls outside of the allowed range with thunks
20914         allocated using the code manager.
20915         * tramp-ppc.c: use the code manager to hold generated native code.
20916         Fixed the magic trampoline to just patch vtable entries.
20917
20918 2004-02-17  Zoltan Varga  <vargaz@freemail.hu>
20919
20920         * inssel.brg inssel-x86.brg: Move call(immediate) rules to the platform
20921         independent file.
20922
20923 2004-02-16  Zoltan Varga  <vargaz@freemail.hu>
20924
20925         * tramp-ppc.c (mono_arch_create_jump_trampoline): Fix compilation on
20926         PPC.
20927
20928         * mini-x86.c: Call mono_arch_get_lmf_addr instead of mono_get_lmf_addr
20929         if we have a working __thread implementation.
20930
20931         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Remove 
20932         OP_CALL_IMM opcodes, since the CALL opcodes handles immediates as well.
20933
20934 2004-02-15  Zoltan Varga  <vargaz@freemail.hu>
20935
20936         * mini-x86.c: Fix compilation under gcc 2.
20937         
20938 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
20939
20940         * mini.c (mono_codegen): Avoid infinite loop when an icall wrapper
20941         contains a call to the wrapped function.
20942
20943         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Add 
20944         OP_<CALL>_IMM opcodes, and use them under X86.
20945         
20946         * mini.c (mono_jit_find_compiled_method): Fix warning.
20947
20948         * cpu-pentium.md: Fix length of opcodes which use x86_alu_membase_imm.
20949
20950         * jit-icalls.c (mono_ldftn_nosync): New JIT icall.
20951
20952         * tramp-x86.c (mono_arch_create_jump_trampoline): Move arch independent
20953         functionality to mini.c.
20954
20955         * mini.c (mono_create_jump_trampoline): New function to create a jump
20956         trampoline. Return a compiled method instead of a trampoline if it
20957         exists. Add a cache for jump trampolines.
20958
20959         * mini.c (mono_jit_find_compiled_method): New function to return a
20960         compiled method if it exists.
20961
20962         * mini-x86.c: Call mono_create_jump_trampoline instead of 
20963         mono_arch_create_jit_trampoline.
20964
20965         * jit-icalls.c (mono_ldftn): Do not compile the method. Instead, return
20966         a jump trampoline. Fixes #52092.
20967         
20968 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
20969
20970         * debug-mini.c (mono_init_debugger): Remove call to mono_verify_corlib,
20971         which is not up-to-date. Add check_corlib_version () instead.
20972
20973         * mini.c (mini_init): Call mono_thread_attach () so embedders do not 
20974         have to call it.
20975         
20976         * mini.c (mono_runtime_install_handlers): Remove check for valgrind
20977         since newer valgrind versions do not need it.
20978
20979         * mini.c (mono_jit_compile_method_with_opt): New helper function to
20980         compile a method with a given set of optimizations.
20981
20982         * mini.c: Compile icall wrappers on-demand instead of at startup.
20983
20984         * mini-sparc.c mini-ppc.c: Call mono_icall_get_wrapper to obtain the
20985         wrapper for an icall.
20986
20987 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
20988
20989         * mini.c (mono_method_to_ir): Handle switch with non-empty stack. Fixes
20990         #54063.
20991
20992         * iltests.il: Add test for non-empty stack before switch instruction.
20993
20994 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
20995
20996         * mini.c: Add support for new stringbuilder marshalling conventions.
20997
20998         * mini.c (mono_method_to_ir): Fix stack management of generic CEE_BOX.
20999
21000 2004-02-01  Martin Baulig  <martin@ximian.com>
21001
21002         * mini.c (MTYPE_PARAM_TO_TYPE): Method type arguments are stored
21003         in `ginst->mtype_argv'.
21004
21005 2004-01-31  Miguel de Icaza  <miguel@ximian.com>
21006
21007         * mini.c: Add comments, replace CEE_XXX+128 with OP_XXX to
21008         facilitate grepping.
21009
21010 Wed Jan 28 14:04:58 CET 2004 Paolo Molaro <lupus@ximian.com>
21011
21012         * mini.c: fixed buglet in initobj generic implementation for references.
21013
21014 Fri Jan 23 16:10:44 EST 2004 Paolo Molaro <lupus@ximian.com>
21015
21016         * Makefile.am: make the version script conditional.
21017         * jit-icalls.c: handle missing truncl().
21018
21019 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
21020
21021         * exceptions.cs: Add more tests for double->int conversion.
21022
21023         * jit-icalls.c (mono_fconv_ovf_i8): Call truncl before comparison, so
21024         we don't throw exceptions when converting 1.1 to a long. Fixes #53250.
21025
21026 Fri Jan 23 17:12:08 CET 2004 Paolo Molaro <lupus@ximian.com>
21027
21028         * driver.c: make --verbose --version emit an error
21029         if the loaded corlib doesn't match the runtime version.
21030
21031 Mon Jan 19 17:44:50 CET 2004 Paolo Molaro <lupus@ximian.com>
21032
21033         * mini-ppc.h: export ppc_patch().
21034         * mini-ppc.c: call convention fixes. Added assert in ppc_patch().
21035         * tramp-ppc.c: call convention fixes: Linux/PPC support should be
21036         on par or better than on MacOSX.
21037
21038 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
21039
21040         * mini.c tramp-x86.c tramp-sparc.c: Updated after changes to
21041         mono_lookup_pinvoke_call.
21042
21043         * mini-x86.c: Under windows, the default pinvoke calling convention is
21044         stdcall. Fixes #52834.
21045
21046         * mini.c (optimize_branches): Add an upper bound to the number of
21047         iterations to prevent infinite loops on strange loops. Fixes #53003.
21048
21049 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
21050
21051         * inssel.brg: Add vectors<->one dimensional array checking to CASTCLASS
21052         and ISINST. Fixes #52093.
21053
21054         * objects.cs (test_0_vector_array_cast): New tests.
21055         
21056 2004-01-15  Zoltan Varga  <vargaz@freemail.hu>
21057
21058         * jit-icalls.c (helper_stelem_ref_check): New jit icall for array type
21059         checking in Array.Set ().
21060
21061         * mini.c (method_to_ir): Add array type checking in Array.Set (). Fixes
21062         #52590.
21063
21064         * object.cs (test_0_multi_array_cast): New regression test.
21065
21066 Thu Jan 15 16:30:24 CET 2004 Paolo Molaro <lupus@ximian.com>
21067
21068         * exceptions-ppc.c: fix build on Linux/PPC.
21069
21070 2004-01-14  Zoltan Varga  <vargaz@freemail.hu>
21071
21072         * tramp-x86.c (x86_magic_trampoline): Disable code patching when
21073         running under valgrind.
21074         (x86_magic_trampoline): Fix build bustage.
21075
21076         * debug-mini.c: Modify the debug info serialize/deserialize code so it handles
21077         negative values as well. This is needed for the encoding of the line number
21078         info, since sometimes the line numbers are not in increasing order.
21079
21080 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
21081
21082         * cpu-pentium.md (localloc): Increase the size of the localloc 
21083         instruction since it is a loop under Win32.
21084
21085         * debug-mini.c (record_line_number): Get rid of unneccesary memory
21086         allocation.
21087
21088 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
21089
21090         * exceptions-ppc.c exceptions-x86.c exceptions-sparc.c 
21091         tramp-x86.c tramp-ppc.c tramp-sparc.c: Applied patch from 
21092         Max Horn (max@quendi.de). Fix file names in comments.
21093
21094 2004-01-03  Zoltan Varga  <vargaz@freemail.hu>
21095
21096         * ssa.c (mono_ssa_rename_vars): Allocate new_stack on the heap to
21097         avoid stack overflow.
21098         (replace_usage): Avoid uninitialized variable warnings.
21099
21100         * mini.c (mono_method_to_ir): Avoid disabling SSA for array operations
21101         and taking the address of valuetype variables.
21102
21103 2004-01-03  Patrik Torstensson
21104
21105         * mini-x86.c: renamed fpflags to flags in RegTrack, going to be used
21106         for other purposes than FP later on.
21107
21108 2004-01-02  Zoltan Varga  <vargaz@freemail.hu>
21109
21110         * mini.c (mono_method_to_ir): Prevent register allocation for arguments
21111         of tail calls.
21112
21113 Fri Jan 2 13:37:25 CET 2004 Paolo Molaro <lupus@ximian.com>
21114
21115         * mini-ops.h, mini.c, inssel.brg: Object.GetType () speedup.
21116
21117 2003-12-30  Patrik Torstensson <p@rxc.se>
21118
21119         * mini-x86.h: Decreased number of availiable fp regs.
21120         Solves corner cases with FP spilling.
21121
21122 2003-12-23  Patrik Torstensson <p@rxc.se>
21123
21124         * mini-x86.c, mini-ops.h, cpu-pentium.md: Added support
21125         for floating point stack tracking / spilling on x86. 
21126         Fixes bug #49012.
21127         
21128         * basic-float.cs: added float mul overflow test.
21129
21130 2003-12-23  Zoltan Varga  <vargaz@freemail.hu>
21131
21132         * mini.c (mono_method_to_ir): Add workaround for bug #51126.
21133
21134 Sun Dec 21 19:53:16 CET 2003 Paolo Molaro <lupus@ximian.com>
21135
21136         * mini.h, mini-ppc.c, mini-ppc.h: small cleanups and
21137         supports for cond branches that overflow the immediate
21138         overflow offset. mcs can compile simple programs.
21139
21140 Fri Dec 19 21:17:16 CET 2003 Paolo Molaro <lupus@ximian.com>
21141
21142         * exceptions-ppc.c: exception handling support wip:
21143         finally handlers get run on exception.
21144
21145 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
21146
21147         * aot.c (mono_aot_get_method_inner): Avoid loading AOT code while 
21148         profiling.
21149
21150 Fri Dec 19 17:58:28 CET 2003 Paolo Molaro <lupus@ximian.com>
21151
21152         * cpu-g4.md, mini-ppc.c, exceptions-ppc.c, mini-ppc.h:
21153         initial support for stack walking and unwinding.
21154
21155 2003-12-18  Zoltan Varga  <vargaz@freemail.hu>
21156
21157         * driver.c (mono_main): Make corlib-out-of-sync message more 
21158         descriptive. Also remove verify_corlib call.
21159
21160 Wed Dec 17 15:31:41 CET 2003 Paolo Molaro <lupus@ximian.com>
21161
21162         * mini.c: make CEE_NEWARR calls and other emulated opcodes 
21163         not overlap with other call's arguments, too.
21164
21165 Wed Dec 17 12:49:23 CET 2003 Paolo Molaro <lupus@ximian.com>
21166
21167         * mini.h, mini.c, mini-ppc.c, mini-sparc.c, mini-x86.c: 
21168         move to arch-specific code the choice of arch-specific
21169         intrinsics (from Laurent Morichetti (l_m@pacbell.net)).
21170         * mini.c: ensure emulation calls will not interleave
21171         with other calls.
21172
21173 Wed Dec 17 12:27:26 CET 2003 Paolo Molaro <lupus@ximian.com>
21174
21175         * tramp-ppc.c, basic-calls.cs: rework trampolines so that
21176         the magic trampoline stack frame is dropped before executing
21177         the new method.
21178
21179 Mon Dec 15 18:13:57 CET 2003 Paolo Molaro <lupus@ximian.com>
21180
21181         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed some opcode lengths
21182         and integer to fp conversions. Added support for overflowing
21183         arguments on the stack. Reserve a couple more registers as temps.
21184         Added support for aot compilation (as output still needs to be
21185         tweaked, though).
21186
21187 Sat Dec 13 17:49:10 CET 2003 Paolo Molaro <lupus@ximian.com>
21188
21189         * mini-ppc.c, basic-long.cs: fix jumps to known labels.
21190         Don't overwrite return register in some corner cases.
21191
21192 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
21193
21194         * mini.h mini.c driver.c mini-x86.c mini-ppc.c aot.c: Do not run
21195         static constructors when AOT compiling.
21196
21197         * driver.c (mono_main): Call mono_check_corlib_version.
21198
21199 Sat Dec 13 10:31:12 CET 2003 Paolo Molaro <lupus@ximian.com>
21200
21201         * cpu-g4.md, basic.cs: fixed div target register.
21202
21203 Sat Dec 13 09:45:56 CET 2003 Paolo Molaro <lupus@ximian.com>
21204
21205         * mini-ppc.c, basic.cs: shl_imm fix with test.
21206
21207 Fri Dec 12 21:25:14 CET 2003 Paolo Molaro <lupus@ximian.com>
21208
21209         * inssel-ppc.brg, mini-ppc.h, mini-ppc.c: support for passing 
21210         structures by value. Misc fixes.
21211         * objects.cs: more tests.
21212
21213 Fri Dec 12 10:11:49 CET 2003 Paolo Molaro <lupus@ximian.com>
21214
21215         * mini-ppc.c: lconv.ovf.i implemented.
21216
21217 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21218
21219         * mini.c:
21220         (mini_init): don't error out if someone already called g_thread_init.
21221
21222 Tue Dec 9 17:27:14 CET 2003 Paolo Molaro <lupus@ximian.com>
21223
21224         * exceptions-x86.c, exceptions-ppc.c: allow the exception object
21225         to be any type per the spec. Fix abnormal memory usage when
21226         the same object is repeatedly thrown.
21227
21228 Tue Dec 9 15:39:54 CET 2003 Paolo Molaro <lupus@ximian.com>
21229
21230         * mini.c: check for overruns in IL code.
21231
21232 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
21233
21234         * TODO: Add/remove some todo entries.
21235
21236 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
21237
21238         * driver.c (mono_main): Call mono_verify_corlib.
21239
21240 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
21241
21242         * inssel.brg: In CEE_ISINST and CEE_CASTCLASS, removed check for proxy. 
21243         This has been moved to mini.c
21244         * mini.c: in mono_method_to_ir, CEE_ISINST and CEE_CASTCLASS cases, if the
21245         type being casted is marshalbyref it could be a proxy, so instead of
21246         emitting the type check code, emit a call to a runtime method that will
21247         perform the check by calling CanCastTo if needed.
21248
21249 2003-12-06  Zoltan Varga  <vargaz@freemail.hu>
21250
21251         * mini-x86.c (mono_arch_emit_prolog): Fix stack space allocation for
21252         methods with large stack frames under Win32.
21253
21254 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
21255
21256         * Makefile.am: Distribute regression tests.
21257
21258         * mini-x86.c (mono_arch_get_allocatable_int_vars): Sort the var list
21259         at the end instead of inserting each variable into the sorted list.
21260
21261         * linear-scan.c (mono_varlist_sort): New helper function.
21262         
21263 Wed Dec 3 20:46:28 CET 2003 Paolo Molaro <lupus@ximian.com>
21264
21265         * mini.c: ensure arguments and locals are within bounds.
21266
21267 Wed Dec 3 17:59:10 CET 2003 Paolo Molaro <lupus@ximian.com>
21268
21269         * mini-ppc.c, cpu-g4.md, basic.cs, basic-long.cs: more tests and 
21270         related fixes.
21271
21272 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
21273
21274         * mini.c (mono_cprop_copy_values): Fix crash.
21275
21276         * aot.c: Set verbosity back to 0.
21277         
21278 Wed Dec 3 15:42:27 CET 2003 Paolo Molaro <lupus@ximian.com>
21279
21280         * regalloc.c: complete memory leak fix by Laurent Morichetti
21281         (l_m@pacbell.net).
21282
21283 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
21284
21285         * driver.c (main_thread_handler): Revert the previous patch.
21286
21287         * tramp-x86.c (x86_class_init_trampoline): Avoid patching when running
21288         under valgrind.
21289
21290         * mini-x86.c (mono_arch_local_regalloc): Do not allocate transient
21291         memory from the memory pool.
21292
21293         * driver.c (main_thread_handler): Turn on all optimizations when
21294         --aot is used.
21295
21296         * mini.c (mono_find_jit_opcode_emulation): Turn emul_opcode_hash into
21297         an array for better performance.
21298
21299         * regalloc.c (mono_regstate_assign): Fix memory leak.
21300
21301         * debug-mini.c (mono_debug_serialize_debug_info): New function to
21302         serialize the debug info.
21303
21304         * debug-mini.c (mono_debug_add_aot_method): New function to load the
21305         debug info from the serialized representation.
21306
21307         * aot.c: Save debug info into the generated file and load it when 
21308         loading a method.
21309
21310         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
21311
21312 Mon Dec 1 16:54:05 CET 2003 Paolo Molaro <lupus@ximian.com>
21313
21314         * mini-ppc.c, tramp-ppc.c: save FP arguments in the trampoline.
21315         More FP-related fixes.
21316
21317 Sun Nov 30 19:13:52 CET 2003 Paolo Molaro <lupus@ximian.com>
21318
21319         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed finally handlers
21320         and register allocation buglet. Hello world now runs.
21321
21322 Fri Nov 28 23:03:05 CET 2003 Paolo Molaro <lupus@ximian.com>
21323
21324         * cpu-g4.md, inssel-ppc.brg, mini-ppc.c: better long return support.
21325         * tramp-ppc.c: fixed class init trampoline.
21326         * inssel-ppc.brg, mini.c, jit-icalls.c, mini-ppc.h: more emulation.
21327
21328 Fri Nov 28 16:36:29 CET 2003 Paolo Molaro <lupus@ximian.com>
21329
21330         * cpu-g4.md, inssel-ppc.brg, jit-icalls.c, mini-ppc.c, mini-ppc.h,
21331         mini.c: more ppc changes/fixes.
21332
21333 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
21334
21335         * mini.c (mono_method_to_ir): Fix tail calls with valuetype arguments.
21336         Also optimize the case when the arguments are the same in the caller 
21337         and in the callee.
21338
21339         * iltests.il: Add tests for tail calls with valuetype arguments.
21340
21341 Thu Nov 27 21:06:37 CET 2003 Paolo Molaro <lupus@ximian.com>
21342
21343         * mini-ppc.c: fixes for struct return type.
21344
21345 Thu Nov 27 19:02:07 CET 2003 Paolo Molaro <lupus@ximian.com>
21346
21347         * mini.h, mini.c, mini-x86.c, mini-ppc.c, mini-sparc.c: move 
21348         mono_spillvar_offset() to arch-specific code.
21349
21350 Thu Nov 27 18:30:42 CET 2003 Paolo Molaro <lupus@ximian.com>
21351
21352         * mini-ppc.h, mini-ppc.c: handle some different ABI call convention issues.
21353
21354 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
21355
21356         * exceptions-x86.c: Fix stack space leaks.
21357         
21358         * exceptions-x86.c (mono_arch_find_jit_info): Restore callee saved
21359         registers from the lmf if the method has save_lmf set.
21360
21361 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
21362
21363         * tramp-x86.c (x86_magic_trampoline): Avoid patching in the addresses
21364         of icall wrappers into InvokeInDomain, since these are now per-domain.
21365
21366 Wed Nov 26 20:15:04 CET 2003 Paolo Molaro <lupus@ximian.com>
21367
21368         * mini-ppc.h, mini-x86.h, mini.c, inssel-ppc.brg, jit-icalls.c:
21369         make some opcode emulation and intrinsic ops enabled/disabled 
21370         according to the architecture. More fixes.
21371
21372 Wed Nov 26 19:59:09 CET 2003 Paolo Molaro <lupus@ximian.com>
21373
21374         * mini-ppc.c, mini-sparc.c, cpu-g4.md: more bug fixes.
21375
21376 Wed Nov 26 19:18:29 CET 2003 Paolo Molaro <lupus@ximian.com>
21377
21378         * mini.h, inssel.brg, mini-x86.c, mini-ppc.c, mini-sparc.c: move
21379         arch-specific handling for 'this' and struct return type to
21380         arch-specific code.
21381
21382 2003-11-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21383
21384         * aot.c: prevent divide by zero error when reporting (it happened with
21385         Accessibility.dll).
21386
21387 2003-11-25  Zoltan Varga  <vargaz@freemail.hu>
21388
21389         * mini.h (inst_switch): Remove unused macro.
21390
21391 2003-11-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21392
21393         * aot.c:
21394         (load_aot_module): free 'info->methods' and 'info' properly. No more
21395         "free(): invalid pointer blah" messages when you have an old aot
21396         compiled assembly.
21397
21398 2003-11-21  Lluis Sanchez Gual <lluis@ximian.com>
21399
21400         * jit-icalls.c, mini.c: Added support for context static fields.
21401
21402 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
21403
21404         * mini.c (mono_method_blittable): Methods which set LastError are not 
21405         blittable either. Fixes #51108.
21406         
21407 Tue Nov 18 16:41:37 CET 2003 Paolo Molaro <lupus@ximian.com>
21408
21409         * mini.c: flush icache.
21410         * cpu-g4.md, mini-ppc.c, inssel.brg: more fixes. Trace support.
21411
21412 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
21413
21414         * mini.c (mono_type_blittable): OBJECT is not blittable. Fixes #47842.
21415
21416 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
21417
21418         * tramp-x86.c (x86_class_init_trampoline): Make code patching thread
21419         safe on IA32.
21420
21421         * mini-x86.c (mono_arch_call_opcode): Disable AOT for methods with 
21422         vararg calls.
21423
21424         * inssel.brg (CEE_MKREFANY): Fix AOT case.
21425
21426 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
21427
21428         * mini-x86.c (mono_arch_local_regalloc): Fix regalloc for div 
21429         instruction when the result is discarded.
21430
21431         * iltests.il (test_0_div_regalloc): New regression test.
21432
21433         * arrays.cs: Fix compilation error.
21434
21435 Fri Nov 14 21:34:06 CET 2003 Paolo Molaro <lupus@ximian.com>
21436
21437         * inssel-x86.brg, inssel-float.brg, mini-ops.h: move x86-specific
21438         float rules to inssel-x86.brg: sane architectures with FP registers
21439         don't need to implement these rules.
21440
21441 Fri Nov 14 20:52:12 CET 2003 Paolo Molaro <lupus@ximian.com>
21442
21443         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: updates and fixes to the ppc port.
21444
21445 Fri Nov 14 17:58:27 CET 2003 Paolo Molaro <lupus@ximian.com>
21446
21447         * mini.h, inssel-long32.brg: fixed endianess issues in int64
21448         implementation of 32 bit systems.
21449
21450 Thu Nov 13 16:14:41 CET 2003 Paolo Molaro <lupus@ximian.com>
21451
21452         * exceptions-ppc.c: fix build on Linux/ppc from Jeroen@xs4all.nl
21453         (Jeroen Zwartepoorte).
21454
21455 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
21456
21457         * mini.c (mono_method_to_ir): Use CEE_JMP only if the signature of
21458         the caller and the callee matches.
21459         
21460         * mini.c (mono_method_to_ir): Add comment.
21461
21462         * mini-x86.c (mono_arch_output_basic_block): Use mono_signbit, since
21463         signbit is missing on some platforms.
21464
21465 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
21466
21467         * mini.h (mono_arch_setup_jit_tls_data): New arch specific function.
21468
21469         * mini.c (setup_jit_tls_data): Call the new function.
21470         
21471         * mini-x86.c mini-ppc.c mini-sparc.c: Define the new function.
21472
21473         * mini-x86.c: Add experimental support for fast access to the lmf
21474         structure under NPTL/Linux 2.6.x.
21475
21476 2003-11-06  Martin Baulig  <martin@ximian.com>
21477
21478         * ldscript: Make `GC_push_all_stack', `GC_start_blocking',
21479         `GC_end_blocking' and 'gc_thread_vtable' public; they're used by
21480         the debugger.
21481
21482 2003-11-02  Martin Baulig  <martin@ximian.com>
21483
21484         * mini.c (inflate_generic_field): New static method.
21485         (mono_method_to_ir): In CEE_LDFLD and CEE_LDSFLD: if we're a
21486         generic instance and the field is declared in a generic type, call
21487         inflate_generic_field() to inflate it.  Fixes gen-28.cs.
21488
21489 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
21490
21491         * mini.h mini.c (mono_method_same_domain): New function to return
21492         whenever the caller and the callee are in the same domain.
21493
21494         * tramp-x86.c (x86_magic_trampoline): Use the new function.     
21495
21496 2003-10-30  Martin Baulig  <martin@ximian.com>
21497
21498         * mini.c (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): New macros;
21499         similar to TYPE_PARAM_TO_TYPE and TYPE_PARAM_TO_CLASS, but for
21500         method parameters.
21501         (mono_method_to_ir): Added support for MONO_TYPE_MVAR; similar to
21502         MONO_TYPE_VAR, we the actual types from MTYPE_PARAM_TO_CLASS(). 
21503
21504 2003-10-29  Zoltan Varga  <vargaz@freemail.hu>
21505
21506         * mini.c mini-ops.h inssel.brg: Implement undeniable exception 
21507         propagation.
21508
21509         * mini.c (sigusr1_signal_handler): Move creation of the thread abort
21510         object here, so it is in the correct appdomain etc.
21511
21512 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
21513
21514         * mini.c (mono_jit_compile_method_inner): Lookup icalls here if not
21515         already done.
21516         (mono_method_to_ir): Avoid freeing the type created returned from
21517         mono_type_create_from_typespec, since it is put into an internal cache
21518         by the function. Fixes pointer.exe.
21519
21520         * mini.c tramp-x86.c tramp-sparc.c tramp-ppc.c: Use the normal 
21521         trampolines for icalls and pinvokes as well. Fixes #33569.
21522
21523 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
21524
21525         * mini.c: Update after appdomain changes.
21526
21527         * mini.c (mono_jit_compile_method_inner): Allways compile native
21528         method wrappers in the root domain, since there can only be one
21529         instance of them, whose address is stored in method->info.
21530
21531 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
21532
21533         * mini.c (mono_runtime_install_handlers): Get rid of the MONO_VALGRIND
21534         environment variable. Instead detect automatically whenever running
21535         under valgrind using the magic macro RUNNING_ON_VALGRIND from
21536         valgrind.h.
21537
21538 2003-10-16  Miguel de Icaza  <miguel@ximian.com>
21539
21540         * trace.c, trace.h: New files that implement the new trace option
21541         parsing. 
21542
21543         * driver.c: Document new --trace options.
21544
21545         * exceptions-ppc.c, exceptions-x86.c, mini-ppc.c, mini-sparc.c,
21546         mini-x86.c: Apply:
21547
21548         -       if (mono_jit_trace_calls)
21549         +       if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
21550
21551         * mini.h: prototypes.
21552         
21553 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
21554
21555         * mini.c (mono_method_to_ir): Fix initialization of typedbyref locals.
21556
21557         * mini.c inssel.brg: Implement typedefbyref opcodes.
21558
21559         * mini.c (mono_jit_compile_method): Remove unused local variable.
21560
21561         * mini.c (mono_jit_compile_method_inner): Ditto.
21562         
21563 2003-10-12  Zoltan Varga  <vargaz@freemail.hu>
21564
21565         * tramp-x86.c (x86_class_init_trampoline): Fix build.
21566         
21567         * tramp-x86.c (x86_class_init_trampoline): Thread safety fixes.
21568
21569 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
21570
21571         * mini.c (mono_no_aot): Remove unused global variable.
21572
21573         * mini.c: Thread safety fixes.
21574
21575 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
21576
21577         * mini.c (mono_create_class_init_trampoline): Add a lock around
21578         class_init_hash_addr.
21579
21580         * arrays.cs (test_0_newarr_emulation): Add new regression test for
21581         #30073.
21582
21583         * mini.c: Decompose the NEWARR instruction before decomposing its
21584         arguments. Fixes #30073.
21585
21586 2003-10-08  Zoltan Varga  <vargaz@freemail.hu>
21587
21588         * mini-x86.c (mono_arch_emit_epilog): Add support for stdcall calling
21589         convention.
21590
21591 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
21592
21593         * mini.c (mono_method_to_ir): Allow wrapper data for CEE_LDELEMA.
21594
21595         * inssel-x86.brg (OP_LOCALLOC): Fix register assignment for localloc.
21596
21597         * driver.c: Add support for compiling icall wrappers to --compile.
21598
21599 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
21600
21601         * inssel.brg: The empty value in class->interface_offsets is -1, not
21602         0. Fixes #49287.
21603
21604 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
21605
21606         * objects.cs: New test for 'is' operator on an array of interfaces.
21607
21608 Wed Oct 1 19:40:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
21609
21610         * tramp-ppc.c: update trampoline code to support jumps
21611         and class initialization.
21612
21613 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
21614
21615         * mini.c (mono_jit_compile_method): Fix reading of freed memory.
21616
21617         * inssel.brg (OP_UNBOXCAST): Fix #46027.
21618
21619         * inssel.brg (OP_UNBOX): Remove unused rule.
21620
21621         * mini.h mini.c inssel-x86.brg: Allocate one SP variable for each
21622         region instead of one for each method. Fixes #47813.
21623
21624 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
21625
21626         * exceptions.cs (test_0_nested_finally): New regression test for
21627         nested exception handlers.
21628
21629         * mini.c (mono_jit_runtime_invoke): Fix for the previous fix.
21630
21631         * mini.c (mono_method_to_ir): Avoid inlining tail calls.
21632
21633         * mini.c (mono_method_to_ir): Fix tail recursion in the presence of 
21634         inlining.
21635
21636         * mini.c (mono_method_check_inlining): Make the inlining limit 
21637         configurable by an environment variable.
21638         
21639         * mini.c (mono_jit_runtime_invoke): Add Gonzalo's fix for #36545.
21640
21641         * mini.h: Bump AOT file version.
21642
21643         * mini.h mini.c aot.c mini-x86.c: For relocations which refer to a 
21644         token, store the image along with the token, since the token might not 
21645         refer to the same image as the method containing the relocation, 
21646         because of inlining.
21647
21648 2003-09-27  Zoltan Varga  <vargaz@freemail.hu>
21649
21650         * mini.c (mono_precompile_assemblies): New function to compile
21651         all methods in all loaded assemblies.
21652
21653         * mini.h driver.c: Added new optimization flag MONO_OPT_PRECOMP.
21654
21655         * regalloc.h regalloc.c (MonoRegState): Change the type of 
21656         iassign and fassign to int*, since they can contain large negative
21657         values if the register is spilled. Also added some comments. Fixes
21658         #45817.
21659
21660         * exceptions-x86.c (seh_handler): Fix handling of system exceptions
21661         under Win32. Fixes #42964.
21662
21663 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
21664
21665         * mini.h (MONO_PATCH_INFO_WRAPPER): New patch type.
21666
21667         * aot.c: Added support for AOT compiling methods which contain calls
21668         to wrappers. Currently, only remoting-invoke-with-check wrappers are
21669         handled.
21670         
21671         * driver.c (compile_all_methods): Run the compilation in a thread
21672         managed by mono. Fixes #44023.
21673
21674         * mini.c (mono_codegen): Print full method name in verbose output.
21675
21676         * mini-x86.c (mono_arch_patch_code): Fix warning.
21677         
21678         * mini-x86.c (mono_arch_patch_code): Allways create a trampoline for
21679         jumps, since the method we are jumping to might be domain-specific.
21680
21681         * aot.c: Added support for MONO_PATCH_INFO_METHOD_JUMP.
21682
21683 Tue Sep 23 10:50:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
21684
21685         * inssel.brg: string chars are unsigned.
21686
21687 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
21688
21689         * TODO: New todo item.
21690
21691         * tramp-x86.c (x86_class_init_trampoline): New trampoline function
21692         which calls mono_runtime_class_init and patches the call site to
21693         avoid further calls.
21694         (mono_arch_create_class_init_trampoline): New arch specific function 
21695         to create a class init trampoline.
21696         (create_trampoline_code): Generalized so it can create
21697         class init trampolines as well.
21698
21699         * mini.c (helper_sig_class_init_trampoline): New helper variable.
21700         (mono_create_class_init_trampoline): New function to create and cache
21701         class init trampolines.
21702         (mono_find_class_init_trampoline_by_addr): New function to lookup the
21703         vtable given the address of a class init trampoline. Used by the
21704         patching process.
21705         (mono_codegen): Generate a call to a trampoline instead of
21706         mono_runtime_class_init in LDSFLD[A].
21707         (mono_codegen): Add relocations for the new trampoline.
21708         
21709         * mini.h mini-x86.c aot.c: Added a new relocation type: 
21710         MONO_PATCH_INFO_CLASS_INIT.
21711
21712         * mini.h: Bump AOT version number.
21713
21714         * aot.c: Create a copy of the loaded code instead of using the original
21715         so methods which call each other will be close in memory, improving
21716         cache behaviour.
21717         
21718         * exceptions-x86.c (mono_arch_has_unwind_info): Back out the previous
21719         patch since it breaks the regression tests.
21720         
21721         * exceptions-x86.c (mono_arch_has_unwind_info): Added explicit check
21722         for the register saving instruction sequence since the 
21723         frame_state_for function in glibc 2.3.2 don't seem to detect it.
21724
21725 2003-09-14  Zoltan Varga  <vargaz@freemail.hu>
21726
21727         * TODO: Fix todo item && remove another.
21728
21729 2003-09-12  Zoltan Varga  <vargaz@freemail.hu>
21730
21731         * mini-x86.c (mono_arch_patch_code): Fix tail calls broken by a
21732         previous checkin.
21733
21734         * aot.c: Moved the check for MONO_LASTAOT into the initialization
21735         function of the module.
21736
21737         * mini.h mini.c aot.c: Added a new optimization flag OPT_AOT for
21738         turning on/off the usage of AOT code. Got rid of mono_no_aot and the
21739         --no-aot command line option.
21740
21741 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
21742
21743         * helpers.c (mono_disassemble_code): Make this work under cygwin. Patch
21744         by Bernie Solomon (bernard@ugsolutions.com).
21745
21746         * inssel.brg: Refactor the interface offset table related code into
21747         its separate functions and add support for the AOT case.
21748
21749 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
21750
21751         * aot.c (mono_aot_get_method_inner): Fix memory leak.
21752         
21753         * aot.c: Added mono_aot_verbose variable and made all debugging
21754         output depend on the value of this variable.
21755
21756         * aot.c (mono_aot_get_method_inner): Avoid dynamic allocation of
21757         method_label and info_label.
21758
21759         * mini.h mini-x86.c aot.c: Added a new relocation type 
21760         MONO_PATCH_INFO_IID for klass->interface_id.
21761
21762         * mini.h mini.c driver.c aot.c: Changed mono_aot_get_method to return
21763         the MonoJitInfo structure.
21764
21765         * mini.c (mono_jit_compile_method): Avoid using non-shared AOT in
21766         a non-root appdomain in shared mode.
21767
21768 Tue Sep 9 16:33:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
21769
21770         * aot.c: make aot loader less verbose. Remove free of unused variable.
21771
21772 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
21773
21774         * aot.c (mono_aot_get_method_inner): Fix MONO_PATCH_INFO_IMAGE.
21775
21776         * .cvsignore: Added *.dll.
21777
21778         * mini.c (mono_print_tree_nl): New function callable while debugging.
21779
21780         * mini.c (mono_print_code): Export this.
21781
21782         * tramp-x86.c (x86_magic_trampoline): Tell valgrind to recompile the
21783         patched code.
21784
21785 2003-09-05  Zoltan Varga  <vargaz@freemail.hu>
21786
21787         * mini.h (MonoCompile): Added 'jit_info' field.
21788
21789         * mini.c (mini_method_compile): Save the generated MonoJitInfo into
21790         the cfg structure, since it is needed by the AOT compiler.
21791
21792         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
21793
21794         * aot.c: A major rewrite. Changes include:
21795         - save exception tables for methods which have them.
21796         - cache failed lookups in aot_get_method () to avoid the (slow) calls 
21797         to g_module_symbol.
21798         - reworked the file format so it is now much smaller and needs
21799         fewer relocation entries.
21800         
21801 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
21802
21803         * aot.c (load_aot_module): Fix build bustage on platforms without
21804         Boehm GC.
21805
21806 2003-09-04  Martin Baulig  <martin@ximian.com>
21807
21808         * Makefile.am (INCLUDES): Added $(LIBGC_CFLAGS).
21809
21810 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
21811
21812         * TODO: Some new optimization ideas.
21813
21814         * aot.c: Move AOT module loading logic here from mono_assembly_open.
21815
21816         * aot.c: Save the optimization flags used to compile the code into
21817         the AOT module.
21818
21819         * mini.h mini-x86.c mini.c aot.c: Added new types of relocations to
21820         support emitting domain specific code.
21821         
21822         * mini.h mini.c aot.c: Modified the JIT so the generated AOT code is 
21823         no longer domain neutral. It can be made domain neutral by compiling 
21824         with --optimize=shared.
21825
21826         * aot.c (mono_aot_get_method_inner): Allow sharing of AOT methods
21827         between appdomains.
21828
21829         * driver.c mini.h mini.c: New --no-aot debugging option which disables
21830         loading of AOT code.
21831
21832         * inssel-x86.brg: Added missing AOTCONST -> OUTARG_VT rule.
21833         
21834         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling method
21835         if there is no domain neutrality information.
21836
21837 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
21838
21839         * aot.c (mono_compile_assembly): Emit a symbol containing the file 
21840         format version into the generated library.
21841
21842         * mini-x86.c (mono_arch_patch_code): Do not emit the address of the
21843         callee method into the caller since one of them could be shared.
21844
21845         * mini.h mini-x86.c aot.c: Added two new relocations so throwing
21846         system exceptions from AOT code now works.
21847
21848         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling 
21849         method if it is domain neutral and the callee is not.
21850
21851         * graph.c (cfg_emit_one_loop_level): Fix warning.
21852
21853 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
21854
21855         * aot.c (mono_compile_assembly): Oops. Remove debugging cruft from
21856         last checkin.
21857
21858 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
21859
21860         * mini.c (mini_init): Call mono_marshal_init () explicitly since it
21861         is needed  by code which is executed before mono_runtime_init ().
21862         Thanks to Bernie Solomon (bernard@ugsolutions.com) for noticing this.
21863         
21864         * mini.c (mono_thread_abort): Fix warning.
21865         (mono_jit_compile_method): Call static constructor in the AOT case too.
21866
21867         * aot.c (mono_compile_assembly): Fix warning.
21868
21869 2003-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21870
21871         * mini.c: register a SIGINT handler if MONO_DEBUG is defined.
21872
21873 2003-08-28  Zoltan Varga  <vargaz@freemail.hu>
21874
21875         * inssel.brg (OP_UNBOXCAST): Add support for the AOT case.
21876
21877         * cpu-pentium.md: Fix the length of call opcodes so they include the
21878         ESP restoring instruction. Fixes #47968.
21879
21880 2003-08-28  Martin Baulig  <martin@ximian.com>
21881
21882         * mini-x86.c (mono_arch_call_opcode): Added support for
21883         MONO_TYPE_GENERICINST.
21884
21885         * mini.c (check_call_signature): Added support for MONO_TYPE_GENERICINST.       
21886
21887 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
21888
21889         * Makefile.am (BUILT_SOURCES): Fix compilation on platforms without
21890         a JIT. Patch by Bernie Solomon (bernard@ugsolutions.com).
21891
21892         * mini.c jit-icalls.c tramp-x86.c tramp-ppc.c tramp-sparc.c: Get rid of
21893         metadata_section.
21894
21895 2003-08-26  Martin Baulig  <martin@ximian.com>
21896
21897         * mini.c (get_basic_blocks): Added `unsigned char **pos' argument;
21898         when reporting an error, set this to the actual error location.
21899         (mono_method_to_ir): Report the correct error location if
21900         get_basic_blocks() returned an error.
21901
21902 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
21903
21904         * mini.c (mono_type_blittable): OBJECT is not blittable.
21905         (mono_method_blittable): Methods which have marshalling descriptors
21906         are not blittable either. Fixes #47842.
21907
21908 2003-08-22  Zoltan Varga  <vargaz@freemail.hu>
21909
21910         * driver.c mini.c: Use an environment variable instead of a global 
21911         variable. Also fix the build.
21912
21913         * mini.c (mini_init): Call g_thread_init () to make glib thread-safe. 
21914         Fixes #47682. Thanks to Laurent Morichetti (l_m@pacbell.net) for 
21915         reporting this. 
21916
21917         * driver.c mini.c: Added --with-valgrind option to turn off some
21918         code which prevents mono from running under valgrind.
21919
21920         * mini.c (mono_emit_call_args): Fixed warning.
21921
21922         * mini.c (mono_emulate_opcode): Fixed warning.
21923
21924 Thu Aug 21 19:10:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
21925
21926         * inssel.brg: 64bit fixes from Laurent Morichetti <l_m@pacbell.net>.
21927         * linear-scan.c, mini-ppc.h, mini-sparc.h, mini-x86.h, mini.h,
21928         regalloc.c, regalloc.h: specify available registers in arch-specific
21929         code and support floats in the regallocator (patch by Laurent Morichetti 
21930         <l_m@pacbell.net>)
21931
21932 Wed Aug 20 19:02:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
21933
21934         * mini.c: mono_thread_current() can be called only after
21935         mono_runtime_init(): rearrange code to not call it early on.
21936
21937 Wed Aug 20 13:14:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
21938
21939         * mini.c: allocate jump tables in the code mempools.
21940
21941 Wed Aug 20 13:04:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
21942
21943         * mini.c, mini.h: make sure per-thread data allocated by the jit is
21944         freed.
21945
21946 2003-08-10  Miguel de Icaza  <miguel@ximian.com>
21947
21948         * cpu-pentium.md (ldtoken): Change the length for mul.ovf.un from
21949         12 to 16.  This fixes bug #47453.
21950
21951
21952 Thu Aug 7 15:59:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
21953
21954         * mini-ppc.c: fixed indexed load and unsigned compares.
21955
21956 2003-08-06  Lluis Sanchez Gual  <lluis@ximian.com>
21957
21958         * mini.c: reenabled installation of handler for
21959           thread abort signal.
21960
21961 Tue Aug 5 12:21:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
21962
21963         * cprop.c, mini-x86.c, cpu-pentium.md: fix buglets spotted
21964         by Laurent Morichetti <l_m@pacbell.net>. Disabled local cprop
21965         until it's fixed and actually useful.
21966
21967 Mon Aug 4 12:12:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
21968
21969         * inssel-long32.brg: couple more opcodes implemented.
21970
21971 Thu Jul 31 22:43:02 EDT 2003 Mark Crichton <crichton@gimp.org>
21972         
21973         * mini-sparc.c: Even more opcodes implemeted.
21974
21975 Thu Jul 31 19:36:03 EDT 2003 Mark Crichton <crichton@gimp.org>
21976
21977         * mini-sparc.c: More opcodes implemented.
21978
21979 Thu Jul 31 15:16:26 EDT 2003 Mark Crichton <crichton@gimp.org>
21980
21981         * mini-sparc.c: More opcodes implemented.
21982
21983 Wed Jul 30 22:31:02 EDT 2003 Mark Crichton <crichton@gimp.org>
21984
21985         * inssel-sparc.brg: Add some needed rules.  Direct
21986         copy from PPC.
21987         * Makefile.am: Use inssel-sparc.brg
21988         * exceptions-sparc.c: 0xdeadbeef/0xdecafbad to keep
21989         an assert happy for now.
21990
21991 Wed Jul 30 20:44:07 EDT 2003 Mark Crichton <crichton@gimp.org>
21992
21993         * mini-sparc.c: Fixed compile errors.
21994         * exceptions-sparc.c: Same.  We now produce a mono binary 
21995         on sparc-linux.  Yea.
21996
21997 Wed Jul 30 14:10:12 EDT 2003 Mark Crichton <crichton@gimp.org>
21998
21999         * mini-sparc.c: Renamed registers.  Also some macro cleanups.
22000         * exceptions-sparc.c, tramp-sparc.c: Various compile fixes.
22001         They compile, but do not work.
22002
22003 Wed Jul 30 17:52:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
22004
22005         * Makefile.am, cpu-sparc.md, exceptions-sparc.c, mini-sparc.c,
22006         mini-sparc.h, tramp-sparc.c: Beginning of sparc support
22007         from Mark Crichton <crichton@gimp.org> and Christopher Taylor
22008         (ct@gentoo.org).
22009
22010 Tue Jul 29 12:43:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
22011
22012         * mini.c: more opcodes implemented and better support for generics.
22013
22014 Fri Jul 25 18:51:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
22015
22016         * cpu-g4.md, cpu-pentium.md: updates for new instructions.
22017         * mini.c, mini.h: first cut at generics support: some new instructions 
22018         added and changed the behaviour of some of the existing ones.
22019
22020 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
22021
22022         * mini.c: Removed definition of metadata_shared mutex here.
22023
22024 Tue Jul 22 15:21:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
22025
22026         * mini-x86.c: make vararg calls work for instance methods.
22027
22028 Fri Jul 18 19:26:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
22029
22030         * mini.c, mini.h, mini-x86.c, mini-ppc.c: mono_arch_call_opcode()
22031         returns the arguments in a separte list, now.
22032
22033 Fri Jul 18 13:16:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
22034
22035         * aot.c, mini.c: updates for array type representation changes.
22036
22037 Fri Jul 18 11:28:28 CEST 2003 Paolo Molaro <lupus@ximian.com>
22038
22039         * mini.c: register function to perform jit shutdown.
22040
22041 Thu Jul 17 16:02:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
22042
22043         * mini.c: use a faster allocator if possible.
22044
22045 Thu Jul 17 16:00:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
22046
22047         * aot.c: some cleanups and portability changes.
22048
22049 Wed Jul 2 11:08:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
22050
22051         * mini.c: use faster allocation for CEE_BOX if possible.
22052
22053 Mon Jun 30 19:16:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
22054
22055         * mini.c, mini-ops.h, inssel.brg, mini-x86.c: optimized access to fields.
22056         Moved inlined mempcy code to its own function so that is can be
22057         reused. Added an inline memset function as well (optimized initobj).
22058         * cpu-pentium.md, inssel-x86.brg: add and use lea_membase.
22059
22060 Fri Jun 27 11:19:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
22061
22062         * mini.c, mini-ops.h, inssel.brg: optimized a couple of Array methods.
22063
22064 Wed Jun 25 13:19:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
22065
22066         * mini.c, mini.h, mini.x86.c, mini-ppc.c: added facility so that
22067         arch code can setup the cpu for CLR execution, if needed.
22068         We use it on x86 to set the precision of FP operations.
22069
22070 Tue Jun 17 19:02:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
22071
22072         * mini.c: disable some optimizations if we can guess they'll cost too
22073         much for a given method.
22074
22075 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
22076
22077         * mini.h mini.c: Rework last patch based on suggestions by Paolo.
22078         
22079 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
22080         * mini.h mini.c mini-x86.c: Added instruction level coverage 
22081         info collection support.
22082
22083 Mon Jun 16 18:13:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
22084
22085         * driver.c, mini-ppc.c, mini-x86.c, mini.c, mini.h: the coverage stuff
22086         is now implemented in the profiling API. Get rid of a couple of
22087         unnecessary global variables.
22088
22089 2003-06-15  Nick Drochak <ndrochak@gol.com>
22090
22091         * basic-long.cs: tests for negative values for bigmul, and unsigned.
22092         * cpu-g4.md: add op_bigmul and op_bigmul_un
22093         * cpu_pentium.md: add op_bigmul_un
22094         * inssel-long32.brg: add rule for unsigned bigmul
22095         * mini-ops.h: define OP_BIGMUL_UN
22096         * mini-x86.c: THE BUG: handle (un)signed properly
22097         * mini.c: choose unsigned opcode if needed.
22098         This set of patches fixes bug #44291
22099
22100 2003-06-13  Dietmar Maurer  <dietmar@ximian.com>
22101
22102         * mini.c (optimize_branches): improved to handle all kinds of
22103         conditional branches.
22104
22105 Wed Jun 11 18:01:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
22106
22107         * mini.c, mini.h, jit-icalls.c: speedup emulation of opcodes that
22108         don't raise exceptions.
22109
22110 Tue Jun 10 19:00:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
22111
22112         * tramp-x86.c, tramp-ppc.c, debug-mini.c: move arch-specific code
22113         to arch-specific files.
22114
22115 2003-06-09  Martin Baulig  <martin@ximian.com>
22116
22117         * Makefile.am (libs): Added $(LIBGC_LIBS).
22118
22119 Mon Jun 9 20:21:47 CEST 2003 Paolo Molaro <lupus@ximian.com>
22120
22121         * cpu-pentium.md, mini-x86.c: fix (well, actually implement) OP_TAN
22122         and OP_ATAN (fixes bug#44293).
22123
22124 Mon Jun 9 19:00:56 CEST 2003 Paolo Molaro <lupus@ximian.com>
22125
22126         * Makefile.am, mini-x86.c: rename cpu description array to
22127         pentium_desc, since some compilers define the 'pentium' preprocessor
22128         symbol.
22129
22130 2003-05-28  Dietmar Maurer  <dietmar@ximian.com>
22131
22132         * mini.c (mini_select_instructions): add explicit branch if the
22133         following block is not the false target of a conditional branch -
22134         we need this with any optimization that reorder or remove bblocks
22135
22136         * mini.c (optimize_branches): bug fixes
22137
22138 2003-06-06  Dietmar Maurer  <dietmar@ximian.com>
22139
22140         * mini.c (mono_method_to_ir): inline static readonly fields
22141
22142         * ssa.c (fold_tree): start cfold support for long (very simple
22143         cases only)
22144
22145         * cfold.c (mono_constant_fold_inst): opt. CEE_CONV_I8 (OP_ICONST)
22146
22147 Fri Jun 6 11:41:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
22148
22149         * inssel.brg: fixed memcpy (bug #44219).
22150
22151 2003-06-05  Dick Porter  <dick@ximian.com>
22152
22153         * driver.c: Set the glib log levels to not abort if g_message
22154         recurses.
22155
22156         g_set_prgname() has to happen before mini_init() so that the
22157         process handle gets the info.
22158         
22159 Thu Jun 5 20:11:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
22160
22161         * driver.c: add intrins to the default optimizations to get wider
22162         exposure.
22163
22164 Wed Jun 4 19:47:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
22165
22166         * mini.h: some large basic blocks will overflow a 16-bit
22167         integers for symbolic registers.
22168
22169 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
22170
22171         * mini-x86.c (mono_arch_output_basic_block): revert previous fprem changes.
22172         (mono_arch_output_basic_block): fix bug 43499 
22173
22174 Wed Jun 4 13:13:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
22175
22176         * mini.c: kill duplicated definition of mono_debug_format.
22177
22178 Wed Jun 4 13:09:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
22179
22180         * mini-x86.c, arrays.cs: fixed register allocation bug.
22181
22182 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
22183
22184         * mini-x86.c (mono_arch_output_basic_block): use IEEE compatible fprem1
22185
22186         * mini.c (mini_get_opcode_for_method): inline IEEERemainder
22187
22188 2003-06-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22189
22190         * mini.c:
22191         (print_method_from_ip): also print source location information if
22192         available.
22193
22194 2003-06-02  Dietmar Maurer  <dietmar@ximian.com>
22195
22196         * mini.c (mono_find_block_region): bug fix in region code
22197         (mini_method_compile): enable removing unreachable code again, but
22198         only in methods without exception clauses.
22199
22200 Fri May 30 18:40:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
22201
22202         * mini.c, mini-ops.h, cpu-pentium.md, inssel.brg, mini-x86.c, mini.h:
22203         Implemented arglist opcode and handling of TypedReference type.
22204         Fixed x86 call convention when a structure is returned.
22205         Minimal support for calling static vararg methods.
22206
22207 2003-05-30  Dietmar Maurer  <dietmar@ximian.com>
22208
22209         * mini.c (mini_method_compile):  always remove unreachable code,
22210         because the code in them may be inconsistent  (access to dead
22211         variables for example).
22212
22213 Thu May 29 11:44:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
22214
22215         * driver.c, debug-mini.c: warning fixes.
22216
22217 Wed May 28 11:19:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
22218
22219         * Makefile.am, jit.h, mini.h: install header for embedding mono.
22220
22221 Tue May 27 17:56:12 CEST 2003 Paolo Molaro <lupus@ximian.com>
22222
22223         * mini.c: thread-static fields are registered in mono_class_vtable(),
22224         so ensure the function is called before checking for them.
22225
22226 2003-05-27  Dietmar Maurer  <dietmar@ximian.com>
22227
22228         * mini.c (optimize_branches): fix for bug 43586
22229
22230         * jit-icalls.c (mono_llmult_ovf): added an additional check for
22231         overflow (fixes Bug #43639)
22232
22233 Tue May 27 11:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
22234
22235         * mini.c, objects.cs: allow the use of stobj for primitive types.
22236
22237 Tue May 27 10:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
22238
22239         * mini.c: be less strict about argument checking until we support
22240         running the verifier.
22241
22242 2003-05-27  Nick Drochak <ndrochak@gol.com>
22243
22244         * basic-long.cs: tests for (ulong)int * (ulong)int also
22245         * mini.c: use the same trick for (ulong)int * (ulong)int
22246
22247 2003-05-27  Nick Drochak <ndrochak@gol.com>
22248
22249         * basic-long.cs: add regression test for (long)int * (long)int
22250         * cpu-pentium.md: add op_bigmul specification
22251         * inssel-long32.brg: add OP_BIGMUL rule
22252         * mini-ops.h: add OP_BIGMUL
22253         * mini-x86.c: register allocator: handle case where src1 needs to be
22254         in EAX.
22255         * mini.c: substitute special BIGMUL opcode in the tree for 
22256         (long)int * (long)int
22257
22258 Mon May 26 20:20:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
22259
22260         * jit-icalls.c: call the type ctor on field access if needed.
22261
22262 Mon May 26 15:21:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
22263
22264         * mini-ops.h, mini.c, inssel.brg, exceptions.cs: validate arguments passed
22265         to a method (including results of ldelema, bug#43207).
22266
22267 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
22268
22269         * graph.c (cfg_emit_one_loop_level): loop over all blocks. use
22270         colors to show exception handler blocks.
22271
22272         * inssel-x86.brg (OP_OUTARG_VT): dont push zero sized structures
22273         (fix for pinvoke7.cs).
22274
22275 Mon May 26 12:11:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
22276
22277         * mini.h, mini.c: ensure correct initialization order for types that
22278         require it. Prepare for lazy compilation of jit icall wrappers.
22279         Provide a name for opcode emulation to reduce unneeded mallocing.
22280
22281 Fri May 23 16:08:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
22282
22283         * mini-x86.c: better register restoring code and profiling
22284         support for tail calls.
22285
22286 Fri May 23 15:30:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
22287
22288         * mini.h, driver.c: prepare for leaf methods optimization.
22289
22290 Fri May 23 15:28:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
22291
22292         * mini.c: get targets of branches before converting a method.
22293
22294 2003-05-23  Dietmar Maurer  <dietmar@ximian.com>
22295
22296         * mini.c (optimize_branches): added some experimental code (disbaled) 
22297
22298 2003-05-22  Dietmar Maurer  <dietmar@ximian.com>
22299
22300         * mini.c (optimize_branches): fix branch to branch optimization 
22301
22302         * exceptions-x86.c (mono_arch_handle_exception): bug fix.
22303
22304         * mini-x86.c (mono_arch_output_basic_block): cleanup up exception code
22305
22306         * inssel-x86.brg: added OP_START_HANDLER, CEE_ENDFINALLY, OP_ENDFILTER
22307
22308         * mini-x86.c (mono_arch_allocate_vars): only reserve space for lmf
22309         if needed.
22310
22311 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
22312
22313         * mini.c (mono_method_to_ir): call handle_loaded_temps before inlining.
22314         enable use of interface variables again.
22315
22316         * mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate
22317         I1 to registers because there is no simply way to sign extend 8bit
22318         quantities in caller saved registers on x86.
22319
22320         * inssel-float.brg: set costs of some rules to 2 so
22321         that monobure always select the arch. specific ones if supplied,
22322         regardless of the order we pass the files to monoburg.
22323
22324 Tue May 20 17:19:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
22325
22326         * mini.c, mini-x86.c: since the magic trampoline for jumps
22327         can't patch the code directly, we do it as soon as the
22328         method gets compiled.
22329
22330 Tue May 20 16:02:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
22331
22332         * mini-x86.c, mini.h: introduce a new patching method
22333         to support CEE_JMP and tail calls.
22334         * mini.c: obey tail.call. Don't precompile methods target
22335         of CEE_JMP.
22336         * tramp-x86.c: new trampoline code to handle methods
22337         reached through a jump.
22338
22339 2003-05-20  Dietmar Maurer  <dietmar@ximian.com>
22340
22341         * mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16
22342         bit values to registers
22343
22344 2003-05-19  Dietmar Maurer  <dietmar@ximian.com>
22345
22346         * mini.c (mono_compile_get_interface_var): share interface
22347         variables if possible.
22348
22349 2003-05-16  Martin Baulig  <martin@ximian.com>
22350
22351         * debug-mini.c (mono_init_debugger): New function to initialize
22352         the debugger.  This is not in the debugger since it needs to
22353         access some of mini's internals.
22354
22355 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
22356
22357         * mini.c (mono_method_to_ir): inlining fixes/cleanups
22358
22359 Fri May 16 13:27:23 CEST 2003 Paolo Molaro <lupus@ximian.com>
22360
22361         * mini.c, mini-opts.h, inssel.brg: inline small memcpy
22362         for value type handling.
22363
22364 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
22365
22366         * mini.c (mono_method_to_ir): inline LDFLD/STFLD wrappers
22367         (mono_method_check_inlining): enable inlining of all kinds of wrappers
22368
22369 2003-05-15  Lluis Sanchez Gual  <lluis@ideary.com>
22370
22371         * mini.c: fixed little bug in CEE_NEWOBJ case when calling
22372           the constructor through a proxy.
22373
22374 Thu May 15 17:17:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
22375
22376         * jit-icalls.c, inssel.brg: fixes to array element address
22377         calculations.
22378
22379 2003-05-15  Dietmar Maurer  <dietmar@ximian.com>
22380
22381         * mini-x86.c (is_regsize_var): allocate pointer to registers
22382
22383 Thu May 15 13:04:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
22384
22385         * driver.c: fixed typo, added intrins to the set of optimizations
22386         tested with regressions.
22387
22388 Thu May 15 11:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
22389
22390         * mini-ops.h, mini.c, inssel.brg: optimize access to 2D arrays.
22391         * jit-icalls.c, exceptions.cs: fixed index out of range checks, added
22392         test case.
22393
22394 2003-05-14  Dietmar Maurer  <dietmar@ximian.com>
22395
22396         * inssel.brg: remove some common pop instructions without side effects
22397
22398 Wed May 14 12:40:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
22399
22400         * inssel-x86.brg: fixed thinko in int to double conversions.
22401
22402 Wed May 14 12:01:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
22403
22404         * mini.c, jit-icalls.c: added runtime thread-static variable support.
22405
22406 Tue May 13 22:02:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
22407
22408         * inssel-long32.brg: two more missing instructions.
22409
22410 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
22411
22412         * mini.c (mono_emit_call_args): set the cil_code for all arguments
22413         if not already set.
22414
22415 2003-05-12  Zoltan Varga  <vargaz@freemail.hu>
22416
22417         * mini-x86.c (mono_arch_output_basic_block): Handle negative zero
22418         correctly.
22419
22420         * basic-float.cs: Added tests for negative zero.
22421
22422 Sun May 11 14:56:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
22423
22424         * inssel-long32.brg, basic-long.cs, exceptions.cs: handle
22425         a couple of missing operations for long casts, with test cases.
22426
22427 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22428
22429         * exceptions-x86.c: fixed small leaks in mono_arch_handle_exception.
22430
22431 2003-05-09  Dietmar Maurer  <dietmar@ximian.com>
22432
22433         * mini-x86.c (mono_arch_emit_prolog): avoid reallocs with better
22434         code size estimation.
22435
22436 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
22437
22438         * mini.c (mono_jit_create_remoting_trampoline): make it work with
22439         abstract methods (fix bug 42542)
22440
22441         * aot.c: add ability to handle array types
22442         
22443 2003-05-08  Zoltan Varga  <vargaz@freemail.hu>
22444
22445         * mini.c: Call the _specific versions of the object allocation
22446         functions if possible.
22447
22448 Tue May 6 17:18:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
22449
22450         * driver.c: call setlocale ().
22451
22452 Tue May 6 14:38:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
22453
22454         * mini.h, mini.c, aot.c, debug-mini.c, exceptions.c: build fixes for
22455         windows build.
22456
22457 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
22458
22459         * mini.c (optimize_branches): dont touch code inside exception clauses (fix bug 38136)
22460
22461         * exceptions-x86.c (ves_icall_get_frame_info): also skip remoting
22462         wrappers (fix bug 42122)
22463
22464 2003-05-04  Martin Baulig  <martin@ximian.com>
22465
22466         * mini.h (mono_jit_init, mono_jit_cleanup): Added prototypes.
22467
22468         * driver.c: s/MONO_OPT_SAHRED/MONO_OPT_SHARED/g.
22469         s/mini_set_defaults/mono_set_defaults/g.
22470
22471 2003-05-04  Martin Baulig  <martin@ximian.com>
22472
22473         * driver.c: s/mini_parse_default_optimizations/mono_parse_default_optimizations/g.
22474
22475 Sun May 4 11:48:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
22476
22477         * inssel-long32.brg: add missing lreg: OP_LCONV_TO_U8 (lreg) rule
22478         (reported by Don Roberts).
22479
22480 Fri May 2 18:36:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
22481
22482         * mini.c: temporarily work around two bugs for this release.
22483
22484 Fri May 2 17:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
22485
22486         * Makefile.am: avoid linking libmono with GMODULE_LIBS, because
22487         that contains -export-dynamic and it makes using the ld script
22488         useless.
22489         * mini.h, main.c, driver.c: s/mini_main/mono_main/g.
22490
22491 Fri May 2 12:52:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
22492
22493         * mini.h, mini-x86.c, driver.c: disable optimizations not available on a
22494         specific cpu.
22495
22496 Thu May 1 15:28:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
22497
22498         * mini.c: make sure leave calls all the needed finally blocks,
22499         even when the target jumps out of multiple exception clauses.
22500
22501 Thu May 1 15:18:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
22502
22503         * ldscript, Makefile.am: add linker script to reduce the number of
22504         exported symbols (should also fix the issues with libwine defining
22505         some of the same symbols in io-layer).
22506
22507 2003-05-01  Zoltan Varga  <vargaz@freemail.hu>
22508
22509         * driver.c (mini_main): Avoid assertion when no file name is given on 
22510         the command line.
22511
22512 Wed Apr 30 15:33:11 CEST 2003 Paolo Molaro <lupus@ximian.com>
22513
22514         * driver.c: added --version/-V command line option.
22515         Added the inline optimization in the regression tests.
22516
22517 Wed Apr 30 15:16:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
22518
22519         * mini.c, basic-calls.cs: when inlining, save arguments to locals according 
22520         to the type in the method signature (fixes bug#42134).
22521
22522 Wed Apr 30 12:38:44 CEST 2003 Paolo Molaro <lupus@ximian.com>
22523
22524         * mini.c: when inlining, check this is not null only when needed (bug #42135).
22525
22526 Wed Apr 30 11:44:36 CEST 2003 Paolo Molaro <lupus@ximian.com>
22527
22528         * mini-ppc.h, tramp-pcc.c: type fixes from Max Horn <max@quendi.de>.
22529
22530 2003-04-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22531
22532         * driver.c: fixed bug #42100.
22533
22534 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
22535
22536         * mini.c (mono_method_to_ir): UNBOX need to CAST objects first
22537
22538 Mon Apr 28 17:03:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
22539
22540         * mini.c: moved most of the code required to do inlining to its own
22541         function so it can be reused. Inline also ctors if appropriate.
22542
22543 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
22544
22545         * Makefile.am: Link with -export-dynamic so shared libs loaded by
22546         the runtime can call mono API functions.
22547
22548 2003-04-27  Martin Baulig  <martin@ximian.com>
22549
22550         * debug-mini.c (mono_debug_init_method): Added
22551         `guint32 breakpoint_id' argument; if the method has a breakpoint,
22552         send a notification to the debugger.
22553
22554         * mini.c (mono_method_to_ir): Don't insert a breakpoint if we're
22555         running in the Mono Debugger, just pass the breakpoint number to
22556         mono_debug_init_method().
22557
22558         * tramp-x86.c, tramp-ppc.c: Removed the breakpoint trampolines.
22559
22560 Sun Apr 27 13:18:04 CEST 2003 Paolo Molaro <lupus@ximian.com>
22561
22562         * mini.c: allow some more unsafe compares.
22563
22564 Sat Apr 26 11:55:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
22565
22566         * mini-x86.c, Makefile.am: make distcheck works (partially from
22567         a patch by Richard Lee <r.h.lee@attbi.com>).
22568         * regset.c, regset.h: removed, they are unused.
22569
22570 2003-04-25  Dick Porter  <dick@ximian.com>
22571
22572         * driver.c: Usage reports the name as 'mono' not 'mini'
22573         * exceptions-x86.c: Build and run on freebsd
22574
22575 Thu Apr 24 17:09:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
22576
22577         * Makefile.am: install the program with the 'mono' name and
22578         the library as libmono instead of mini and libmini.
22579
22580 Thu Apr 24 17:08:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
22581
22582         * driver.c: provide the APIs for the embedding interface of the old jit.
22583
22584 2003-04-23  Dietmar Maurer  <dietmar@ximian.com>
22585
22586         * jit-icalls.c (helper_stelem_ref): impl. (fix bug 41775)
22587
22588 2003-04-23  Martin Baulig  <martin@ximian.com>
22589
22590         * tramp-x86.c, tramp-ppc.c: Reenable the debugger breakpoint interface.
22591
22592         * driver.c: Added `--debug' command line argument to enable
22593         debugging support.
22594
22595 2003-04-23  Martin Baulig  <martin@ximian.com>
22596
22597         * debug.[ch]: Removed.  The code is now in
22598         ../metadata/mono-debug.[ch] and mono-debug-debugger.[ch].
22599
22600         * debug-stabs.c, debug-dwarf2.c: Removed; nobody used this for the
22601         last six months.
22602
22603 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
22604
22605         * mini.c (mono_method_to_ir): set the cil_code address (fix bug 41525)
22606
22607 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22608
22609         * mini.c:
22610         (mini_cleanup): moved mono_runtime_cleanup call after the call to
22611         mono_domain_finalize.
22612         (mini_method_compile): use mono_method_profile* if the the option is
22613         enabled.
22614
22615 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
22616
22617         * tramp-x86.c (mono_arch_create_jit_trampoline): Subsitute synchronized
22618         methods with their wrapper.
22619
22620         * tramp-ppc.c (mono_arch_create_jit_trampoline): Subsitute synchronized
22621         methods with their wrapper.
22622
22623         * jit-icalls.c (mono_ldvirtfn): Subsitute synchronized methods with
22624         their wrapper.
22625
22626         * mini.c (mono_method_to_ir): Subsitute synchronized methods with their
22627         wrapper.
22628
22629         * mini.c (mono_method_check_inlining): Avoid inlining synchronized
22630         methods.
22631
22632 2003-04-17  Dietmar Maurer  <dietmar@ximian.com>
22633
22634         * exceptions-x86.c (mono_arch_handle_exception): fix for bug 36252
22635
22636 2003-04-16  Dietmar Maurer  <dietmar@ximian.com>
22637
22638         * mini.c (mono_compile_create_var): use g_malloc/g_realloc instead
22639         of the mempool. This is slightly faster and uses less memory
22640
22641 Wed Apr 16 12:53:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
22642
22643         * mini.c: avoid O(n) allocation for variables.
22644
22645 Tue Apr 15 19:13:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
22646
22647         * mini.c: handle items on the stack after inlining methods.
22648
22649 Tue Apr 15 14:17:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
22650
22651         * mini.c: make the method->opcode optimization dependent
22652         on MONO_OPT_INSTRINS and do it lazily.
22653
22654 Tue Apr 15 14:15:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
22655
22656         * driver.c: print overall results at the end of regression run.
22657
22658 Tue Apr 15 11:18:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
22659
22660         * inssel.brg: don't overwrite symbolic registers.
22661
22662 Mon Apr 14 17:41:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
22663
22664         * inssel-x86.brg: fix conversion from long to float.
22665
22666 2003-04-11  Dietmar Maurer  <dietmar@ximian.com>
22667
22668         * mini.c (mini_init): use an opcode for get_Chars (OP_GETCHR)
22669
22670 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
22671
22672         * mini.c (mono_type_blittable): MONO_TYPE_OBJECT is blittable.
22673
22674         * driver.c: Added --print-vtable option as in the old JIT.
22675
22676 Thu Apr 10 17:43:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
22677
22678         * inssel-long32.brg, exceptions.cs: fix conversions from long, too.
22679
22680 Thu Apr 10 16:27:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
22681
22682         * inssel.brg, basic.cs: fixed checked conversions to byte and short.
22683
22684 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
22685
22686         * mini.c regalloc.c regalloc.h: Fix memory leak.
22687
22688 2003-04-09  Dietmar Maurer  <dietmar@ximian.com>
22689
22690         * aot.c (mono_aot_get_method): register all used strings
22691
22692 Wed Apr 9 15:22:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
22693
22694         * mini.c: always intern strings references with ldstr at compile time.
22695
22696 Tue Apr 8 11:41:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
22697
22698         * Makefile.am: add BUILT_SOURCES.
22699
22700 Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
22701
22702         * driver.c: give a better error message when the assembly to execute
22703         doesn't have an entry point.
22704
22705 2003-04-07  Dietmar Maurer  <dietmar@ximian.com>
22706
22707         * Makefile.am: added hack for automake
22708
22709         * mono/mini/mini.c (mono_save_args): always copy arguments to keep
22710         correct sematics.
22711
22712         * mono/mini/ssa.c (mono_ssa_avoid_copies): don't optimize calls
22713
22714 22003-04-07  Martin Baulig  <martin@ximian.com>
22715
22716         * Makefile.am: Added Makefile.am.
22717
22718         * debugger-main.c: Removed, this is now in the debugger where it
22719         belongs.
22720
22721         * mini.pc.in: Call this package `mini' for the moment.
22722
22723
22724
22725
22726
22727
22728
22729
22730
22731
22732
22733
22734
22735
22736