2009-12-02 Zoltan Varga <vargaz@gmail.com>
[mono.git] / mono / mini / ChangeLog
1 2009-12-02  Zoltan Varga  <vargaz@gmail.com>
2
3         * debugger-agent.c (clear_event_request): Clear method entry/exit requests too.
4
5         * exceptions-x86.c (mono_arch_get_restore_context): Restore EAX too.
6
7 2009-12-01  Zoltan Varga  <vargaz@gmail.com>
8
9         * debugger-agent.c (vm_commands): Don't allow invokes on threads which are not
10         really suspended.
11
12 2009-12-01  Zoltan Varga  <vargaz@gmail.com>
13
14         * cpu-ppc64.md (store_memindex): Add storei8_memindex.
15
16 2009-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
17
18         * mini-trampolines.c: Fix MSVC build.
19
20 2009-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
21
22         * mini-trampolines.c: Check for mono_method_get_vtable_slot failures.
23
24 2009-11-30  Zoltan Varga  <vargaz@gmail.com>
25
26         * mini-arm.c (mono_arch_lowering_pass): Fix an assert which is hit when
27         the instruction following an OP_FCOMPARE is optimized away.
28
29 2009-11-30  Zoltan Varga  <vargaz@gmail.com>
30
31         * aot-compiler.c (arch_emit_autoreg): Extract the auto-registration code from
32         emit_autoreg () into this arch-specific function.
33
34         * aot-compiler.c (emit_exception_debug_info): Don't emit the length of the
35         code, it is no longer needed.
36
37         * aot-runtime.c (decode_exception_debug_info): Don't read the code length.
38
39         * mini.h: Bump AOT file format version.
40
41         * aot-runtime.c (mono_aot_find_jit_info): Compute the length of the method
42         using the sorted_code_offsets array, instead of reading it from the
43         exception debug info.
44         (load_method): Call mono_aot_find_jit_info instead of
45         decode_exception_debug_info ().
46
47         * aot-compiler.c (emit_exception_debug_info): Emit whenever the method was
48         LLVM compiled as a flag.
49
50 2009-11-29  Zoltan Varga  <vargaz@gmail.com>
51
52         * debugger-agent.c (resume_thread): Fix a warning.
53
54         * aot-compiler.c: Add an option to set the number of static rgctx trampolines
55         generated.
56
57 2009-11-28  Zoltan Varga  <vargaz@gmail.com>
58
59         * aot-compiler.c aot-runtime.c: Get rid of a few global symbols, move their
60         contents to MonoAotFileInfo.
61
62 2009-11-27  Zoltan Varga  <vargaz@gmail.com>
63
64         * aot-compiler.c aot-runtime.c: Reorganize the AOT file format once again.
65         Put all binary data into a giant blob, similarly to the way .net assemblies
66         store binary data. Emit offset tables in a compact form to reduce their size.
67
68         * mini.h: Bump AOT file format version.
69
70         * aot-compiler.c (emit_globals_table): Use temp_prefix instead of .L in a few
71         places.
72
73         * aot-compiler.c (emit_globals_table): Emit a hash table for the globals, to
74         avoid linear searches at runtime.
75
76         * aot-runtime.c (find_symbol): Update this to use the hash.
77
78         * mini.h: Bump AOT file format version.
79
80 2009-11-26  Zoltan Varga  <vargaz@gmail.com>
81
82         * aot-compiler.c (emit_klass_info): Save whenever the class has a generic
83         container.
84
85         * aot-runtime.c (decode_cached_class_info): Set the is_generic_container field
86         too.
87
88         * aot-compiler.c (mono_compile_assembly): Add a 'stats' option to print out
89         the distribution of got slot types.
90
91         * mini.h (MonoDebugOptions): Add 'explicit_null_checks' option.
92
93         * method-to-ir.c: Add support for generating explicit null checks.
94
95 2009-11-25  Zoltan Varga  <vargaz@gmail.com>
96
97         * debugger-agent.c (vm_commands): Implement EXIT by invoking Environment.Exit ()
98         on a random thread if possible.
99
100         * aot-runtime.c (mono_aot_plt_resolve): Clean up the handling of function
101         descriptors a bit, add comments, handle RGCTX_FETCH/GENERIC_CLASS_INIT_TRAMPOLINE
102         correctly.
103
104         * exceptions-ppc.c (mono_arch_find_jit_info_ext): Use mgreg_t as the type of
105         regs. Pass the real size of the regs array to mono_unwind_frame ().
106
107         * unwind.c (mono_unwind_frame): Remove an incorrect assert, add more correct
108         ones instead.
109
110 2009-11-24  Geoff Norton  <gnorton@novell.com>
111
112         * mini-darwin.c: Work around apple bug rdar://7209349  See
113         http://openradar.appspot.com/7209349 for details.  Synopsis,
114         CoreFoundation SIGTRAP's if you dlopen it off the main thread if its
115         never been initialized before.
116
117 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
118
119         * tramp-arm.c: Use blx instead of mov pc, reg to improve support for thumb.
120
121         * mini-arm.c (mono_arm_thumb_supported): New helper function.
122
123 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
124
125         * cfold.c (mono_constant_fold_ins): Fix a problem in the previous change,
126         OP_SHL_IMM is not 32 bit.
127
128 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
129
130         * aot-compiler.c (encode_patch): Fix the encoding of R8 on big-endian systems.
131
132 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
133
134         * aot-compiler.c: Avoid infinite recursion when generic virtual recursion is
135         encountered.
136
137         * debugger-agent.c (resume_vm): Signal the suspend_cond even if suspend_count
138         > 0 since some threads can resume if their resume_count is > 0.
139         (invoke_method): Avoid reading freed memory.
140
141         * debugger-agent.c (process_suspend): Extract the suspend code from
142         process_single_step_inner () to a separate function. Rework the code to prevent
143         races between this function and thread interrupts.
144
145         * debugger-agent.c (suspend_current): Check the resume_count field instead
146         of resume_one so suspends+resumes during single threaded invokes work
147         correctly.
148
149 2009-11-23  Zoltan Varga  <vargaz@gmail.com>
150
151         * aot-compiler.c (emit_llvm_file): Enable some llvm optimizations which seem
152         to make the generated code smaller.
153
154         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Add a code
155         sequence generated by recent LLVM versions.
156
157         * mini-llvm.c: Add support for a few simple cases which weren't supported
158         before.
159
160         * mini-trampolines.c (mono_magic_trampoline): Don't call
161         mono_arch_get_vcall_slot () when llvm is enabled.
162
163         * aot-compiler.c (emit_llvm_file): Add code to run the 'opt' llvm tool.
164
165         * mini-trampolines.c (mono_magic_trampoline): Extract the bulk of this function
166         into a new function called common_call_trampoline () which is used by the
167         llvm vcall trampoline as well.
168
169         * debugger-agent.c: Implement single threaded invokes.
170
171         * debugger-agent.c: Revert change which broke the agent on linux.
172
173         * method-to-ir.c (inline_method): Prevent infinite recursion. Fixes
174         #557606.
175
176         * generics.cs: Add a test.
177
178 2009-11-22  Zoltan Varga  <vargaz@gmail.com>
179
180         * debugger-agent.c: Fix the cygwin build.
181
182 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
183
184         * cprop.c: Remove this unused file.
185
186 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
187
188         * cfold.c (mono_constant_fold_ins): Fix constant folding of shr_imm. Fixes
189         #557262.
190
191         * basic.cs: Add a test.
192
193 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
194
195         * method-to-ir.c (mono_method_to_ir): Use mono_use_llvm instead of ENABLE_LLVM
196         in one more place.
197
198 2009-11-20  Zoltan Varga  <vargaz@gmail.com>
199
200         * mini.c mini-trampolines.c driver.c: Add a 'mono_use_llvm' flag to control
201         whenever the runtime uses LLVM code. Add a '--llvm' command line option to set
202         it. Use this flag to control llvm related code paths instead of #ifdef
203         ENABLE_LLVM, so a runtime configured without --enable-llvm can use LLVM compiled
204         AOT code.
205
206         * aot-runtime.c aot-compiler.c: Add a 'flag' field to MonoAotFileInfo.
207
208         * mini.h: Bump AOT file format version.
209
210         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline_full): These
211         receive their argument in MONO_ARCH_VTABLE_REG, not in the first argument reg.
212
213         * debugger-agent.c (create_event_list): Fix a crash if an empty assembly list
214         was used as an assembly filter.
215
216 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
217
218         * unwind.c: Fix support for ppc.
219
220         * exceptions-ppc.c (mono_arch_find_jit_info): Change this to use dwarf frame
221         unwind info. Change to the mono_arch_find_jit_info_ext () interface.
222
223 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
224
225         * mini-ppc.c (mono_arch_emit_prolog): Fix a copy-paste error to fix the ppc64
226         port.
227         (mono_arch_cpu_init): Don't set cpu_hw_flags to 0 at the end, this was somehow
228         added by the ps3 changes.
229
230 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
231
232         * mini-gc.c: Resurrect this, so at least it compiles.
233
234         * debugger-agent.c (assembly_commands): Implement GET_NAME command.
235
236 2009-11-18  Zoltan Varga  <vargaz@gmail.com>
237
238         * debugger-agent.c (mono_debugger_agent_handle_exception): Pass a MonoJitInfo to
239         create_event_list () so assembly filters can be used.
240
241         * exceptions-ppc.c (mono_arch_find_jit_info): Fix the restoration of registers
242         from the LMF.
243
244 2009-11-17  Zoltan Varga  <vargaz@gmail.com>
245
246         * debugger-agent.c (mono_debugger_agent_breakpoint_hit): Fix a warning.
247         (mono_debugger_agent_thread_interrupt): Make this return FALSE if the agent
248         is disabled.
249
250         * aot-compiler.c (add_generic_instances): Emit instances of common generic
251         classes for char/bool too.
252
253         * debugger-agent.c (DebuggerTlsData): Honor the DISABLE_SOFT_DEBUG option.
254
255         * debugger-agent.c (DebuggerTlsData): Add a 'really_suspended' flag, not yet
256         used.
257
258         * debugger-agent.c: Add some definitions to make backporting to 2.6 easier.
259         Fix warnings.
260
261 2009-11-15  Andreas Faerber  <andreas.faerber@web.de>
262
263         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Signature fix.
264         
265         Code contributed under MIT/X11 license.
266
267 2009-11-14  Zoltan Varga  <vargaz@gmail.com>
268
269         (mono_debugger_agent_thread_interrupt): Save the context so stacktraces for
270         threads in native code work.
271
272         * debugger-agent.c: Pass the 'flags' argument to VM_INVOKE_METHOD earlier in
273         the parameter list, so it can be acted upon by vm_commands (). Bump protocol
274         version.
275
276 2009-11-13 Jonathan Chambers <joncham@gmail.com>
277
278         * debugger-agent.c: Implementation for Windows platform.
279
280         * mini-x86.c: Add support for Windows. Use mono-* synchronization
281         primitives. Use SEH to implement breakpoints and single stepping.
282
283         * mini-x86.h: Enable soft debugger on Windows.
284
285         Code contributed under MIT/X11 license.
286
287 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
288
289         * mini-amd64.c (emit_call_body): Disable usage of near calls when running
290         under XEN. Fixes #522894.
291
292         * patch-info.h: Add LLVM_IMT_TRAMPOLINE.
293
294         * mini-llvm.c aot-compiler.c aot-runtime.c mini.c: Add support for making
295         interface calls in LLVM AOT code.
296
297         * aot-compiler.c mini-llvm.c: Abort llvm compilation if a non-encodable patch
298         is found.
299
300         * mini-llvm.c: Add support for OP_VPHI.
301
302         * objects.cs: Add a test.
303
304 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
305
306         * debugger-agent.c (mono_debugger_agent_single_step_event): Avoid a crash if
307         this is called on the debugger thread.
308
309 2009-11-12  Zoltan Varga  <vargaz@gmail.com>
310
311         * mini-llvm.c: Add soft-float support.
312
313         * method-to-ir.c (mono_decompose_soft_float): Restart after decomposing an
314         FCALL which returns an R4.
315
316         * driver.c (mono_main): Add a missing '\n'.
317
318         * mini-trampolines.c (mono_create_llvm_imt_trampoline): Fix the build on
319         platforms which doesn't support the LLVM IMT trampoline.
320
321 2009-11-11  Zoltan Varga  <vargaz@gmail.com>
322
323         * mini-llvm.c (mono_llvm_emit_method): Fix LOCALLOC.
324
325         * mini-llvm-cpp.cpp: Update to latest LLVM SVN.
326
327         * mini-llvm.c (mono_llvm_emit_method): Avoid creating plt entries for
328         virtual calls.
329
330         * aot-runtime.c: Don't define HAVE_DL_ITERATE_PHDR, configure now does that.
331
332 2009-11-10  Zoltan Varga  <vargaz@gmail.com>
333
334         * aot-compiler.c aot-runtime.c: Change how mono_arch_find_jit_info () works.
335         Instead of emitting a method_order table, sort the contents of the code_offsets
336         table and do a binary search in the sorted table. The previous approach doesn't
337         work with LLVM which emits methods in a arbitrary order.
338
339         * aot-runtime.c: Add support for creating MonoJitInfo structures by searching
340         in the .eh_frame section in ELF files.
341
342         * mini.h: Bump corlib file format version.
343
344         * mini-llvm.c aot-compiler.c: Add support for AOT to the LLVM back end.
345
346         * exceptions-arm.c (mono_arch_get_call_filter_full): Update after the
347         LDMIA->LDM macro name change.
348
349 2009-11-09  Zoltan Varga  <vargaz@gmail.com>
350
351         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Fix and enable this for
352         x86.
353
354         * mini-llvm-cpp.cpp (JITMemoryManager): Fix compilation with LLVM 2.7
355         SVN.
356
357         * aot-compiler.c: Ditto.
358
359         * mini-arm.c (mono_arch_allocate_vars): Fix the previous change by passing
360         &align to mini_type_stack_size_full ().
361
362         * mini-arm.c (mono_arch_emit_prolog): Implement support for varargs.
363
364         * mini-ops.h: Add documentation for the OP_ARGLIST opcode.
365
366 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
367
368         * mini-arm.c: Compute the stack space used by arguments using
369         mini_type_stack_size_full ().
370
371 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
372
373         * optflags-def.h: Remove dead TREEPROP optimization.
374
375 2009-11-08  Rodrigo Kumpera  <rkumpera@novell.com>
376
377         * mini-ppc.h: Make mono compiler under FreeBSD/ppc64. 
378
379         Patch by Justin Hibbits <chmeeedalf@gmail.com>.
380
381 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
382
383         * driver.c (mono_jit_parse_options): New public API function to parse options
384         as done by the runtime executable.
385
386         * debugger-agent.c (buffer_add_cattrs): Fix reading an uninitialized variable
387         when handling named arguments.
388
389 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
390
391         * mini-arm.c: Implement support for returning vtypes in registers, fix support
392         for passing small vtypes in registers, make the CallInfo structures more
393         similar to the code on the other platforms.
394
395         * mini-arm.c (mono_arch_allocate_vars): Align small vtypes to 4 bytes too since
396         the code in the prolog requires it.
397
398 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
399
400         * mini-arm.c debugger-agent.c: Android changes from Koushik K. Dutta
401         (koush@koushikdutta.com).
402
403         * mini-arm.c (handle_thunk): Add a domain argument to control the domain
404         where the thunk memory should be allocated from. Fixes appdomain unloading
405         on arm.
406
407 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
408
409         * mini-arm.c exceptions-arm.c: Make ctx->regs map directly to the 16 hardware
410         registers, instead of r4..r11,ip,lr. Make restore_context () restore r0..r3 too.
411
412 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
413
414         * mini-amd64.c (mono_arch_output_basic_block): Don't allow OP_SEQ_POINT in
415         AOT, as it is not implemented yet.
416
417         * mini-x86.c (mono_arch_output_basic_block): Ditto.
418
419 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
420
421         * debugger-agent.c: Fix windows build.
422
423 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
424
425         * debugger-agent.c (debugger_thread): Call mono_set_is_debugger_attached ()
426         after the client connects/disconnects.
427
428         * debugger-agent.c: Add an 'onthrow' option to start the debugger agent
429         when an exception of a given type is thrown.
430
431         * debugger-agent.c: Add a 'onuncaught' option to start the debugger agent
432         only on an uncaught exception.
433
434         * mini-exceptions.c: Notify the debugger agent on an uncaught exception.
435
436         * debugger-agent.c: Add a 'launch' option.
437
438 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
439
440         * debugger-agent.c: Add a 'timeout' option.
441
442 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
443
444         * debugger-agent.c: Implement the 'server' and 'suspend' options supported by
445         the JDWP agent.
446
447 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
448
449         * debugger-agent.c (set_breakpoint): Emit a log message.
450
451 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
452
453         * mini-arm.c: Fix the arm build.
454
455 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
456
457         * aot-compiler.c: don't leak the value returned from
458         mono_type_full_name().
459
460 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
461
462         * debugger-agent.c: defer including mono-mutex.h until we know the
463         agent is supported.
464
465 2009-11-04 Jonathan Chambers <joncham@gmail.com>
466
467         * debugger-agent.c: Changes to build on windows. Use mono-mutex instead
468         of pthreads directly.
469
470         * mini.c (mono_sigfpe_signal_handler): Changed signature of Windows
471         exception handlers. Pass info argument.
472
473         * mini.h: Adjust signatures of soft debugger functions to pass void*
474         instead of siginfo_t. Adjust SIG_HANDLER_SIGNATURE on Windows.
475
476         * mini-amd64.c (mono_arch_is_single_step_event): Adjust signature to pass void*
477         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
478         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
479         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
480
481         * mini-amd64.h: Adjust MonoW32ExceptionHandler signature.
482
483         * mini-x86.c (mono_arch_is_single_step_event): Adjust signature to pass void*
484         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
485         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
486         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
487
488         * mini-x86.h: Adjust MonoW32ExceptionHandler signature.
489
490         * exceptions-x86.c: Adjust W32_SEH_HANDLE_EX for new signature.
491
492         * exceptions-amd64.c: Adjust W32_SEH_HANDLE_EX for new signature.
493
494         * mono-semaphore.h: Skeleton implementation for Windows.
495
496         Code contributed under MIT/X11 license.
497
498 2009-11-04 Jonathan Chambers <joncham@gmail.com>
499
500         * simd-intrinsics.c (simd_intrinsic_emit_setter): Unfix my fix.
501
502         Code contributed under MIT/X11 license.
503
504 2009-11-04 Jonathan Chambers <joncham@gmail.com>
505
506         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix windows build.
507
508         Code contributed under MIT/X11 license.
509
510 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
511
512         * aot-compiler.c (mono_save_xdebug_info): Bump the threshold for flushing
513         debug info to 100 because 10 still slows down gdb too much.
514
515         * method-to-ir.c (mono_method_to_ir): Avoid rethrowing thread abort exceptions
516         inside runtime invoke wrappers. This avoids the need to call ResetAbort () on
517         them in the wrappers.
518
519 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
520
521         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
522
523         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix a warning.
524
525         * aot-runtime.c (mono_aot_get_method): Refactor some code into a new helper
526         function mono_aot_get_array_helper_from_wrapper ().
527
528         * aot-compiler.c (add_generic_class): Refactor the code a bit, really emit
529         array helper methods.
530
531 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
532
533         * simd-intrinsics.c (load_simd_vreg): Add extra argument to signal if
534         the value was loaded from memory.
535
536         * simd-intrinsics.c (simd_intrinsic_emit_setter): Store back to memory if
537         the value was loader from there.
538
539         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Fail correctly for Shuffle
540         without constant swizzle.
541
542 2009-11-02 Jonathan Chambers <joncham@gmail.com>
543
544         * mini-amd64.c: Put soft debugger functions behind a
545         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
546
547         * mini-amd64.h: disable the soft debugger in windows.
548
549         Code contributed under MIT/X11 license.
550
551 2009-11-02 Jonathan Chambers <joncham@gmail.com>
552
553         * mini-x86.c: Put soft debugger functions behind a
554         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
555
556         Code contributed under MIT/X11 license.
557
558 2009-11-02 Jonathan Chambers <joncham@gmail.com>
559
560         * exceptions-x86.c (win32_handle_stack_overflow): Fix parameters
561         to mono_arch_find_jit_info_ext.
562
563         Code contributed under MIT/X11 license.
564
565 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
566
567         * debugger-agent.c: Include netinet/in.h to fix the bsd build.
568
569         * debugger-agent.c: Add support for filtering events by assemblies.
570
571         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Return false if
572         the agent is not enabled.
573
574 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
575
576         * exceptions-x86.c: hopefully last change to fix the windows build.
577         This one courtesy of Jonathan Chambers.
578
579 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
580
581         * debugger-agent.c: remove unused function.
582
583 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
584
585         * debugger-agent.c: add #ifdefs for a few header files.
586         * mini-x86.h: disable the soft debugger in windows.
587         Step 1 of 2 to make this compile on windows with gcc.
588
589 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
590
591         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Comment this out for now
592         as it breaks the build.
593
594 2009-07-01  Zoltan Varga  <vargaz@gmail.com>
595
596         Merge the soft debugger branch.
597
598         * debugger-agent.h debugger-agent.c: New files containing the soft
599         mode debugger module.
600
601         * method-to-ir.c (mono_method_to_ir): Generate OP_SEQ_POINT opcodes
602         at the appropriate locations.
603
604         * mini-<ARCH>.c (mono_arch_output_basic_block): Handle OP_SEQ_POINT
605         opcode.
606
607         * mini-<ARCH>.c: Add new arch-specific functions to set/clear breakpoints,
608         enable/disable single stepping.
609
610         * exceptions-<ARCH>.c (mono_arch_find_jit_info_ext): New stack unwinding api
611         which returns all information in a StackFrameInfo structure, and can handle the
612         LMF frames added by the debugger.
613
614         * mini-<ARCH>.h (MonoLMFExt): New structure containing additional information
615         about an LMF frame.
616
617         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): New stack
618         walker function which works on a specific thread and passes a StackFrameInfo
619         structure to its callback.
620
621         * mini.c (mini_init): Initialize the debugger agent.
622
623         * aot-compiler.c aot-runtime.c: Add soft-debug support.
624
625         * mini-ops.h: Add OP_SEQ_POINT opcode.
626
627         * driver.c (mono_main): Add new '--debugger-agent' option for passing
628         arguments to the debugger agent.
629
630 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
631
632         * mini.c (mini_method_compile): Disable llvm for methods with an lmf here to
633         speed things up.
634
635         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOCALLOC.
636
637         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Implement this for x86.
638
639         * mini.c (mini_init): Avoid using the IMT trampoline in the LLVM case.
640
641         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add a static rgctx trampoline
642         if needed.
643         (mono_create_llvm_imt_trampoline): New function to create a trampoline which
644         sets the IMT argument and makes a virtual call.
645
646         * mini-llvm.c: Enable interface calls using the llvm imt trampoline.
647
648 2009-11-01  Zoltan Varga  <vargaz@gmail.com>
649
650         * Makefile.am (llvm_sources): Enable the llvm option since it no longer breaks
651         the windows build.
652
653 2009-10-30  Zoltan Varga  <vargaz@gmail.com>
654
655         * mini.c (mini_cleanup): Call profiler shutdown before shutting down the
656         runtime. Fixes #551228.
657
658 2009-10-29  Zoltan Varga  <vargaz@gmail.com>
659
660         * mini-x86.c (mono_arch_output_basic_block): Fix % 1. Fixes #550970.
661
662         * basic.cs: Add a test.
663
664         * method-to-ir.c (mono_method_to_ir): Use EMIT_NEW_LOAD_MEMBASE_TYPE to
665         load vtypes instead if OP_LOADV_MEMBASE in the implementation of
666         CONSTRAINED. Fixes #550964.
667
668         * generics.cs: Add a test.
669
670 2009-10-28  Mark Probst  <mark.probst@gmail.com>
671
672         * mini-posix.c (add_signal_handler): Use
673         mono_gc_get_suspend_signal() instead of GC_get_suspend_signal().
674
675 2009-10-28 Jerry Maine <crashfourit@gmail.com>
676
677         Contributed under the terms of the MIT/X11 license by
678         Jerry Maine <crashfourit@gail.com>.
679
680         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
681         sse4a for simd intrinsics.
682
683         * mini-amd64.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
684         sse4a for simd intrinsics.
685
686 2009-10-27  Zoltan Varga  <vargaz@gmail.com>
687
688         * ir-emit.h method-to-ir.c: Change a few _IMM macros to assign to inst_imm
689         instead of inst_p1 which is not the same on ILP32 platforms.
690
691 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
692
693         * mini-ppc.c (mono_arch_emit_prolog): Load the current got address,
694         not the mscorlib one before calling mono_get_lmf_addr.
695
696         * tramp-ppc.c (mono_arch_create_trampoline_code_full): Fix the storing
697         of the ip to the LMF.
698
699         * method-to-ir.c (mono_method_to_ir): Fix the handling of the
700         immediate in the op->op_imm optimization.
701
702         * mini-ppc.c: Add a 'vtregs' field to ArgInfo to make the code easier to
703         understand. VTypes now work, but are not abi compliant, as they are
704         split into 4 byte parts instead of 8.
705         (emit_memcpy): Fix the unrolled case to work on the PS3.
706
707         * mini-ppc.c (get_delegate_invoke_impl): Fix this for the PS3.
708
709         * aot-compiler.c (mono_compile_assembly): Make the autoreg option
710         the default when static linking.
711
712         * mini-ppc.c (mono_arch_emit_prolog): Fix handling of I8 arguments.
713
714         * aot-compiler.c: Add an autoreg option to automatically register
715         statically linked aot modules using ELF .ctors.
716
717         * genmdesc.pl: Add __ppc64__ to allowed defines.
718
719 2009-10-25  Zoltan Varga  <vargaz@gmail.com>
720
721         * mini-posix.c (add_signal_handler): Delay the GC suspend signal while
722         executing a SIGSEGV handler on an altstack, since libgc can't handle that.
723
724 2009-10-24  Mark Probst  <mark.probst@gmail.com>
725
726         * exceptions-x86.c (mono_arch_find_jit_info): Fix build.
727
728 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
729
730         * mini-exceptions.c (mini_jit_info_table_find): Add an 'out_domain' argument
731         which will contain the domain where the method was found.
732
733         * exceptions-<ARCH>.c mini-exceptions.c: Update callers of
734         mini_jit_info_table_find ().
735
736         * aot-compiler.c (xdebug_end_emit): Remove so stray debug code.
737
738         * branch-opts.c (mono_if_conversion): Avoid running deadce if it is disabled.
739
740 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
741
742         * mini-x86.c (mono_arch_emit_prolog): Disable aot for methods with save_lmf
743         set, its not supported yet.
744
745 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
746
747         * aot-runtime.c (mono_aot_get_method): Avoid asserting if a array generic
748         iface wrapper is not found.
749         (mono_aot_get_method): Ditto for GetGenericValueImpl.
750
751 2009-10-21  Zoltan Varga  <vargaz@gmail.com>
752
753         * aot-runtime.c (mono_aot_get_method): Fix support for the IList<T> wrappers,
754         which have a different name.
755
756         * aot-runtime.c (mono_aot_get_method): Special case the array generic iface
757         wrappers and Array.GetGenericValueImpl ().
758
759         * aot-compiler.c: Avoid emitting some wrappers which are not needed anymore
760         because of the change above.
761
762         * generics.cs: Add a test for full aot + generic array ifaces.
763
764 2009-10-19  Sebastien Pouliot  <sebastien@ximian.com>
765
766         * aot-compiler.c (emit_plt): Remove duplicate 'debug_sym' variable 
767         that hides the previous one.
768
769 2009-10-18  Zoltan Varga  <vargaz@gmail.com>
770
771         * aot-compiler.c (can_marshal_struct): Allow some System.dll structs to be
772         marshalled. Fixes #541623.
773
774 2009-10-16  Zoltan Varga  <vargaz@gmail.com>
775
776         * aot-compiler.c (emit_extra_methods): Remove some asserts which are not needed.
777
778 2009-10-15  Zoltan Varga  <vargaz@gmail.com>
779
780         * mini.c (mono_op_imm_to_op): Handle OP_AND/OR/XOR_IMM.
781
782 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
783
784         * mini-posix.c (sigprof_signal_handler):
785         Implemented support for building stat call chans in different ways.
786
787 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
788
789         * mini-exceptions.c (mono_find_jit_info):
790         Also check that a jit info has been found (fixes a profiler crash).
791
792 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
793
794         * mini.c (mono_codegen):
795         Call mono_profiler_code_buffer_new with correct code address.
796
797 2009-10-14  Zoltan Varga  <vargaz@gmail.com>
798
799         * driver.c (mono_main): Change the date in the copyright.
800
801 2009-10-14  Mark Probst  <mark.probst@gmail.com>
802
803         * method-to-ir.c (mono_method_to_ir): Don't use a managed array
804         allocator in shared generic code for open classes, because we
805         can't get those classes' vtables.  We need to make managed
806         allocators not depend on the vtable at compile-time to solve this.
807
808 2009-10-13  Martin Baulig  <martin@ximian.com>
809
810         * debug-mini.c (mono_debugger_trampoline_compiled): Add
811         `const guint8 *trampoline' argument; send both the old and the new
812         notification.
813
814 2009-09-30  Zoltan Varga  <vargaz@gmail.com>
815
816         * aot-compiler.c (add_wrappers): Add a runtime invoke wrapper which is used by
817         mono_runtime_capture_context () without calling mono_runtime_invoke ().
818         (can_marshal_struct): Skip structures with auto layout.
819
820         * tramp-arm.c (GEN_TRAMP_SIZE): Increase this by 4.
821
822 2009-10-02  Zoltan Varga  <vargaz@gmail.com>
823
824         * mini-sparc.c (mono_arch_emit_setret): Emit long return values using OP_LMOVE.
825         (mono_arch_create_vars): Instead of allocating a stack slot by hand, allocate
826         a variable to hold the stack slot used by the int<->float conversion opcodes.
827
828         * mini-sparc.c (mono_arch_build_imt_thunk): Implement support for fail_tramp.
829
830 2009-10-04  Zoltan Varga  <vargaz@gmail.com>
831
832         * aot-compiler.c (add_generic_class): Only add GetGenericValueImpl wrappers
833         when using full-aot.
834
835 2009-10-06  Zoltan Varga  <vargaz@gmail.com>
836
837         * aot-compiler.c (add_generic_class): Add an instance of GenericComparer<T> for
838         each instance of Comparer<T>.
839
840         * generics.cs: Add a new test.
841
842 2009-10-09  Zoltan Varga  <vargaz@gmail.com>
843
844         * driver.c (parse_debug_options): Add a 'gdb' option.
845
846         * mini.c (mini_parse_debug_options): Add a 'gdb' option.
847
848         * image-writer.c: Add support for emitting the image into a memory buffer.
849
850         * dwarfwriter.c: Add support for sharing one IL file between multiple images.
851
852         * aot-compiler.c: Add support for registering debug info with GDB using the
853         new JIT debugging interface in GDB 7.0. It can be turned on by setting
854         MONO_XDEBUG to 'gdb'.
855
856 2009-10-10  Zoltan Varga  <vargaz@gmail.com>
857
858         * aot-compiler.c (mono_save_trampoline_xdebug_info): Implement this for the
859         gdb mode.
860
861 2009-10-11  Zoltan Varga  <vargaz@gmail.com>
862
863         * aot-compiler.c (mono_save_xdebug_info): Emit a symbol for the method which
864         can be used to set breakpoints in gdb.
865
866         * image-writer.c (bin_writer_emit_writeout): Add support for setting the text
867         segment to an absolute address.
868
869 2009-10-13  Mark Probst  <mark.probst@gmail.com>
870
871         * method-to-ir.c: Use the managed array allocator method if
872         available.
873
874 2009-10-13  Bill Holmes  <billholmes54@gmail.com>
875
876         * aot-compiler.c : Fix the MSVC builds
877
878         Code is contributed under MIT/X11 license.
879
880 2009-10-13  Zoltan Varga  <vargaz@gmail.com>
881
882         * aot-compiler.c (mono_save_xdebug_info): Group methods into groups of 10 to
883         avoid registering 1 symbol file per method with gdb.
884
885 2009-09-29  Zoltan Varga  <vargaz@gmail.com>
886
887         * mini-sparc.c: Fix the handling of enums with base type long.
888
889         * mini-sparc.c (mono_arch_output_basic_block): Fix IREM_UN_IMM.
890
891         * mini-sparc.c (mono_arch_allocate_vars): Use mono_class_from_mono_type ()
892         instead of using type->data.klass as the later doesn't work with generics.
893
894 2009-09-25  Mark Probst  <mark.probst@gmail.com>
895
896         * method-to-ir.c, mini.h, mini-alpha.c, mini-amd64.c, mini-arm.c,
897         mini-hppa.c, mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c,
898         mini-s390x.c, mini-sparc.c, mini-x86.c: Thread.get_CurrentThread
899         works differently now and we don't handle it in the JIT anymore.
900
901         * mini.c, mini-exceptions.c, mini-posix.c, debug-debugger.c,
902         debug-mini.c, tramp-amd64.c, tramp-x86.c: Changes resulting from
903         the Thread class split.
904
905 2009-09-25  Zoltan Varga  <vargaz@gmail.com>
906
907         * driver.c: Don't run tests with the obsolete treeprop optimization.
908
909         * mini-sparc.c (mono_arch_create_vars): Make the component vars of a long ret
910         variable volatile. Fixes #541577.
911
912         * basic-calls.cs: Add a new test.
913
914         * basic-long.cs: Remove tests which are now in basic-calls.cs.
915
916 2009-09-24  Zoltan Varga  <vargaz@gmail.com>
917
918         * dwarfwriter.c (emit_debug_info_end): Disable this as it doesn't seem to
919         work/required with recent iphone sdk versions.
920
921         * aot-compiler.c (add_wrappers): Generate PtrToStructure wrappers for more
922         structures.
923
924         * decompose.c (mono_decompose_vtype_opts): Avoid reading uninitialized memory
925         in the VCALL decomposition code.
926
927 2009-09-22  Zoltan Varga  <vargaz@gmail.com>
928
929         * mini-ia64.c (mono_arch_output_basic_block): Fix ISHR/ISHR_IMM.
930
931         * basic.cs: Add a test.
932
933         * mini-ia64.c (mono_arch_build_imt_thunk): Implement support the virtual
934         generic invokes.
935
936         * mini-exceptions.c (mini_jit_info_table_find): New helper function which
937         searches all the domains of the current thread.
938
939         * exceptions-<ARCH>.c: Use it. Fixes #539394.
940
941 2009-09-21  Zoltan Varga  <vargaz@gmail.com>
942
943         * exceptions-arm.c (mono_arm_throw_exception): Set ctx->ebp to fp instead of sp
944         so catching exceptions thrown in the same method works. Fixes exception17.exe.
945
946         * tramp-arm.c (mono_arch_create_trampoline_code_full): Store NULL into lmf->method
947         for non-jit trampolines.
948
949         * mini.c (mono_jit_runtime_invoke): Allow string ctors with dyn runtime invoke.
950
951         * aot-compiler.c (add_wrappers): Ditto.
952
953         * mini-arm.c: Implement support for passing vtypes and floats, and increase
954         the size of the param area used by dyn_call to 6 which covers the majority of
955         methods.
956
957         * mini.c aot-compiler.c: Allow dyn_call for string methods except ctors.
958
959         * mini-arm.c: Implement support for passing/receiving
960         longs and receiving floats in the dyn_call code.
961
962         * mini-amd64.c: Implement support for receiving vtypes in registers in
963         the dyn_call code.
964
965         * mini.c mini-amd64.c: Implement partial support for passing vtypes in
966         the dyn_call code.
967
968 2009-09-20  Zoltan Varga  <vargaz@gmail.com>
969
970         * mini-arm.c (get_call_info): Return more precise information in
971         ArgInfo->regtype.
972         (dyn_call_supported): Use the information in CallInfo.
973
974         * mini-arm.c: Enable support for returning vtypes in the dyn_call code.
975
976         * mini.c mini-amd64.c: Enable support for returning vtypes in the dyn_call
977         code.
978
979         * mini-arm.c: Update after the dyn_call api changes.
980
981         * mini.c (mini_create_jit_domain_info): Register a destructor function
982         for the runtime_invoke_hash.
983
984         * mini-amd64.c (mono_arch_get_dyn_call_args): Rename this to
985         'mono_arch_dyn_call_start'. Pass the pointer to the return value buffer to
986         this function.
987         (mono_arch_get_dyn_call_ret): Rename this to 'mono_arch_dyn_call_finish'.
988         (dyn_call_supported): Simplify this by using get_call_info ().
989         (mono_arch_dyn_call_free): New destructor function.
990
991         * generics.cs: Remove a printf.
992
993         * method-to-ir.c (mono_method_to_ir): Allocate some param area for DYN_CALL.
994
995         * mini-arm.c: Add support for enum return values and passing a few arguments
996         on the stack.
997         
998         * mini.c (mono_jit_runtime_invoke): Add support for enum return values to
999         dyn invoke.
1000
1001         * mini-amd64.c (mono_arch_get_dyn_call_ret): Ditto.
1002
1003         * aot-compiler.c (add_wrappers): Add a few restrictions for the use of
1004         the dynamic invoke wrappers.
1005
1006         * mini-arm.c: Implement OP_DYN_CALL for arm.
1007
1008         * aot-compiler.c (add_wrappers): Avoid aot-ing runtime invoke wrappers
1009         supported by the dynamic runtime invoke wrapper.
1010
1011         * aot-compiler.c aot-runtime.c: Add support for encoding the dynamic
1012         runtime invoke wrapper.
1013
1014         * mini.c (mono_jit_runtime_invoke): Use the dynamic runtime invoke wrappers
1015         if possible when running with full-aot.
1016
1017         * mini-ops.h: Add OP_DYN_CALL opcode.
1018
1019         * mini-amd64.c method-to-ir.c: Add infrastructure for making method calls
1020         with dynamic arguments lists similar to libffi.
1021
1022 2009-09-19  Zoltan Varga  <vargaz@gmail.com>
1023
1024         * method-to-ir.c: Fix the previous change on 64 bit platforms.
1025         
1026         * method-to-ir.c: Applied patch from Rodrigo Kumpera. Allow an i8 argument
1027         to NEWARR.
1028
1029         * iltests.il.in: Add a new test.
1030         
1031 2009-09-18  Zoltan Varga  <vargaz@gmail.com>
1032
1033         * aot-compiler.c (add_generic_instances): Add more instances of
1034         GenericEqualityComparer.
1035
1036 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
1037
1038         * mini.c: Add asserts for mono_class_vtable calls that are not meant to fail.
1039
1040 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
1041
1042         * method-to-ir.c: Handle failures from mono_class_vtable. Added some
1043         comments on some functions that now can fail.
1044
1045 2009-09-17  Andrew Jorgensen  <ajorgensen@novell.com>
1046
1047         * Makefile.am: Add Info.plist to EXTRA_DIST
1048
1049 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
1050
1051         * method-to-ir.c (mono_method_to_ir): Allow AOT for CEE_LDTOKEN in
1052         static synchronized wrappers. Fixes #539500.
1053
1054 2009-09-14  Rodrigo Kumpera  <rkumpera@novell.com>
1055
1056         * jit-icalls.c (mono_class_static_field_address): handle vtable failure
1057         properly.
1058
1059 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
1060
1061         * mini-exceptions.c (mono_handle_exception_internal): Store the computed
1062         lmf before calling filter clauses as well. Fixes #539550.
1063
1064         * exceptions.cs: Add a test.
1065         
1066 2009-09-14  Zoltan Varga  <vargaz@gmail.com>
1067
1068         * aot-compiler.c (add_generic_class): Add instances of
1069         Array.GetGenericValueImpl as well.
1070
1071         * Makefile.am (fullaotcheck): Copy and aot more assemblies so linq
1072         can be tested too.
1073
1074         * generics.cs: Add a fullaot linq test.
1075
1076 2009-09-10  Zoltan Varga  <vargaz@gmail.com>
1077
1078         * aot-compiler.c (arch_emit_static_rgctx_trampoline): Don't clobber argument
1079         reg r1 on arm.
1080
1081 2009-09-10  Bill Holmes  <billholmes54@gmail.com>
1082
1083         * mini-trampolines.c (mono_delegate_trampoline) : Call
1084           mono_cominterop_get_invoke if the delegate target object
1085           is a COM object.
1086
1087         Code is contributed under MIT/X11 license.
1088
1089 2009-09-09  Sebastien Pouliot  <sebastien@ximian.com>
1090
1091         * method-to-ir.c: For CoreCLR throw a SecurityException if an 
1092         internal call is defined outside platform code. Reduce code 
1093         duplication with existing [Method|Field]AccessException
1094
1095 2009-09-08  Rodrigo Kumpera  <rkumpera@novell.com>
1096
1097         * mini-x86.c (mono_arch_emit_call): Don't reduce stack usage by 4
1098         if the return value is a small struct passed on regs.
1099
1100 2009-09-09  Zoltan Varga  <vargaz@gmail.com>
1101
1102         * cpu-arm.md mini-arm.c: Remove unused opcodes.
1103
1104         * mini-codegen.c: Enable the cpu description validation for arm.
1105
1106 2009-09-08  Zoltan Varga  <vargaz@gmail.com>
1107
1108         * basic-calls.cs: Move the test_0_float_load_and_store_with_big_offset ()
1109         test which depends on structs to objects.cs.
1110         
1111         * basic-calls.cs: Remove calls to Console.WriteLine and throws, since those
1112         require object model related stuff working.
1113
1114         * cpu-x86.md mini-x86.c: Remove more unused opcodes.
1115
1116         * mini-ops.h: Fix OP_BIGMUL instruction descriptions.
1117
1118         * mini-codegen.c (mono_local_regalloc): Validate the cpu description 
1119         against the instruction metadata in mini-ops.h. amd64 only for now.
1120
1121         * mini-ops.h: Fix some instruction descriptions.
1122
1123         * mini-ops.h mini-x86.c mini-amd64.c cpu-<ARCH>.md: Remove some
1124         unused instructions.
1125
1126 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
1127
1128         * exceptions.cs: Add a new test.
1129
1130 2009-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
1131
1132         * mini-x86.c (needs_stack_frame): OSX requires full frames to keep proper alignment.
1133
1134 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
1135
1136         * mini-llvm.c (mono_llvm_emit_method): Add a few more missing casts,
1137         skip empty phi opcodes.
1138         
1139         * mini-llvm.c (mono_llvm_emit_method): Handle unsigned volatile variables
1140         correctly by zero extending after loads. Skip methods containing calls
1141         to the monitor enter/exit trampolines.
1142
1143         * tramp-x86.c (mono_arch_create_trampoline_code): Align the stack
1144         when calling mono_thread_force_interruption_checkpoint ().
1145
1146         * mini.c (mini_method_compile): Disable llvm when AOT compiling.
1147
1148         * tramp-amd64.c (mono_arch_patch_callsite): Add support for 32 bit ->
1149         64 bit thunks.
1150         (mono_arch_nullify_class_init_trampoline): Read 'buf' instead of 'code'.
1151
1152         * mini-llvm.c (mono_llvm_emit_method): Add a few missing conversions so a 
1153         bootstrap could run.
1154
1155 2009-09-04  Zoltan Varga  <vargaz@gmail.com>
1156
1157         * mini.c (mini_init): Set callbacks.get_runtime_build_info ().
1158
1159 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
1160
1161         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass the start
1162         of the method to
1163         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
1164         LLVM might be very short.
1165
1166         * mini-x86.c (mono_arch_output_basic_block): Maintain stack alignment
1167         in OP_THROW/RETHROW.
1168
1169         * exceptions-x86.c: Rewrite the throw trampolines so they maintain stack
1170         alignment on osx.
1171
1172 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
1173
1174         * mini-amd64.c (mono_arch_get_vcall_slot): Pass the start of the method to
1175         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
1176         LLVM might be very short.
1177
1178 2009-09-01  Zoltan Varga  <vargaz@gmail.com>
1179
1180         * exceptions-x86.c (throw_exception): Fix the previous change by substracting
1181         the alignment for the value of sp.
1182
1183 2009-09-01  Geoff Norton  <gnorton@novell.com>
1184
1185         * mini.c (mono_get_lmf_addr): Fix jit_thread_attach for native to 
1186         managed wrappers in full aot.
1187
1188 2009-08-31  Zoltan Varga  <vargaz@gmail.com>
1189
1190         * exceptions-x86.c (get_throw_exception): Align the stack on osx.
1191
1192 2009-08-28  Zoltan Varga  <vargaz@gmail.com>
1193
1194         * mini-llvm-cpp.cpp mini-llvm.c: Update to latest llvm api.
1195
1196 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
1197
1198         * aot-compiler.c (emit_exception_debug_info): Emit ei->flags too.
1199
1200         * aot-runtime.c (decode_exception_debug_info): Decode ei->flags from the
1201         saved info.
1202
1203         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
1204
1205         * aot-runtime.c aot-compiler.c: Emit exception causes fully so we don't
1206         depend on the info MonoMethodHeader which could be missing in IL stripped
1207         assemblies.
1208
1209 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
1210
1211         * mini-arm.c (add_general): Fix the passing of 64 bit values on darwin, where
1212         they are only 4 byte aligned.
1213
1214 2009-08-21  Zoltan Varga  <vargaz@gmail.com>
1215
1216         * mini-arm.c (mono_arch_allocate_vars): Use FP as the frame pointer as
1217         was done previously, since using SP causes too many problems.
1218
1219         * exceptions-arm.c: Fix the handling of sp/fp so unwinding through
1220         frames without a frame pointer works.
1221
1222         * mini-arm.c (mono_arch_get_global_int_regs): Avoid using V5 as a
1223         global register in methods with calls, since the calls can go through
1224         a static rgctx trampoline which doesn't save it.
1225
1226 2009-08-19  Zoltan Varga  <vargaz@gmail.com>
1227
1228         * mini-arm.c (mono_arch_context_get_int_reg): Handle SP as well.
1229
1230 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
1231
1232         * aot-compiler.c (add_generic_instances): Fix the net 1.1 build.
1233
1234 2009-08-18  Christian Hergert  <chris@dronelabs.com>
1235
1236         * method-to-ir.c: Fix warnings for uninitialized variables.
1237
1238 2009-08-18  Christian Hergert  <chris@dronelabs.com>
1239
1240         * mini-exceptions.c:
1241         * aot-compiler.c: Fix printf warnings.
1242
1243 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
1244
1245         * aot-compiler.c (add_generic_instances): Add string[] wrapper methods.
1246         Add GetGenericValueImpl<string>.
1247         
1248         * aot-compiler.c (add_generic_instances): Add instances of
1249         GenericEqualityComparer<T> for primitive types. Only emit the array
1250         wrappers into the mscorlib image.
1251
1252 2009-08-15  Zoltan Varga  <vargaz@gmail.com>
1253
1254         * aot-runtime.c (load_method): Rename 'aot_module' -> 'amodule'. Allocate
1255         the methods_loaded array using amodule->info->nmethods.
1256
1257         * mini.h (MonoAotFileInfo): Add an 'nmethods' field.
1258         (MONO_AOT_FILE_VERSION): Bump this.
1259
1260         * aot-compiler.c: Emit more generic instances allowing some parts of linq
1261         to work.
1262
1263         * aot-runtime.c (mono_aot_get_unwind_info): Handle the case when the
1264         MonoJitInfo doesn't belong to its methods aot image.
1265
1266 2009-08-14  Zoltan Varga  <vargaz@gmail.com>
1267
1268         * mini-arm.c (mono_arch_allocate_vars): Use SP as the default frame reg.
1269
1270         * mini-arm.c: Fix warnings.
1271         
1272         * mini-arm.c (mono_arm_emit_load_imm): Only emit a movt if needed.
1273
1274         * mini-arm.c (mono_arm_emit_load_imm): Use movt/movw if the cpu
1275         supports it.
1276
1277 2009-08-12  Zoltan Varga  <vargaz@gmail.com>
1278
1279         * aot-compiler.c (arch_emit_imt_thunk): Rework the arm code to
1280         avoid clobbering IP.
1281
1282         * mini-trampolines.c (mono_magic_trampoline): Allocate a local to
1283         hold the trampoline argument, so its initial value is available during
1284         debugging.
1285
1286 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
1287
1288         * exceptions-arm.c:
1289         * exceptions-hppa.c:
1290         * mini.c:
1291         * exceptions-s390x.c:
1292         * exceptions-mips.c:
1293         * exceptions-ppc.c:
1294         * exceptions-sparc.c:
1295         * exceptions-alpha.c:
1296         * aot-runtime.c:
1297         * mini-trampolines.c:
1298         * exceptions-x86.c:
1299         * exceptions-s390.c: add and use #define's instead of sizeof()
1300         for MonoJitInfo and MonoJitInfoTable.
1301
1302 2009-08-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
1303
1304         * tramp-arm.c:
1305         * tramp-amd64.c:
1306         * tramp-ppc.c:
1307         * tramp-x86.c: use a #define instead of sizeof() for a few
1308         structures that use a zero-length array.
1309
1310 2009-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
1311
1312         * method-to-ir.c (mono_method_to_ir/CEE_CONSTRAINED_): Handle the
1313         case when the method is dynamic. Fixes #529238.
1314
1315 2009-08-06  Zoltan Varga  <vargaz@gmail.com>
1316
1317         * mini.c (mono_jit_compile_method_inner): Throw an exception instead
1318         of asserting when a method is JIT compiled in full-aot mode.
1319
1320 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
1321         
1322         Contributed under the terms of the MIT/X11 license by
1323         Jerry Maine <crashfourit@gail.com>.
1324         
1325         * fixed wrong dates in changelog.
1326
1327 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
1328         
1329         Contributed under the terms of the MIT/X11 license by
1330         Jerry Maine <crashfourit@gail.com>.
1331
1332         * basic-simd.cs: added test for packed double square root.
1333         * cpu-amd64.md: added opcode info for packed double square root.
1334         * cpu-x86.md: added opcode info for packed double square root.
1335         * mini-ops.h: added IR opcode for packed double square root.
1336         * mini-x86.c: added IR to native translation code for packed double square root.
1337         * mini-amd64.c: removed todo for packed double square root.
1338         * simd-intrinsics.c: added method to IR opcode converstion for
1339         packed double square root.
1340
1341 2009-08-03 Jerry Maine <crashfourit@gmail.com>
1342
1343         Contributed under the terms of the MIT/X11 license by
1344         Jerry Maine <crashfourit@gail.com>.
1345
1346         * mini-amd64.c: Added a change to help tell the difference as 
1347         to what perpose the xmm register is being used--mainly to help
1348         with debuging.
1349         * mini-amd64.h: Changed callee regs to use 15 out of 16 
1350         (one used for special cases) xmm registers for both fp
1351         and simd ops. Added define to turn on new feature in the regalloc
1352         that allows fp and simd ops to share the xmm regs happily.
1353         * codegen.c: Added code to detect for which perpose an xmm reg is
1354         being used (fp or simd) and to translate back and forth to the
1355         correct logical reg bank (fp or simd) for 'spill load's.
1356
1357 2009-08-03 Jerry Maine <crashfourit@gmail.com>
1358
1359         Contributed under the terms of the MIT/X11 license by
1360         Jerry Maine <crashfourit@gail.com>.
1361
1362         * basic-simd.cs: Added tests for stressing the regalloc when running with
1363         16 simd regs and when simd and fp ops share the same reg bank.
1364
1365 2009-08-01  Mark Probst  <mark.probst@gmail.com>
1366
1367         * method-to-ir.c (mini_emit_stobj): If we call mono_value_copy()
1368         in shared generic code, we might have to look up the class in the
1369         RGCTX.  If we use the class directly, compute its GC descriptor.
1370
1371 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
1372
1373         * mini.c (mono_jit_runtime_invoke): Fix a warning.
1374
1375 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
1376
1377         * mini.c (mono_jit_runtime_invoke): Initialize the class and
1378         check for errors. Fixed the case when the class with the Main
1379         method is broken.
1380
1381 2009-07-31 Jerry Maine <crashfourit@gmail.com>
1382
1383         Contributed under the terms of the MIT/X11 license by
1384         Jerry Maine <crashfourit@gail.com>.
1385
1386         * cpu-amd64.md: Fixed simple bug in machine discrition file.
1387
1388 2009-07-31  Zoltan Varga  <vargaz@gmail.com>
1389
1390         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_IREM_UN_IMM.
1391
1392 2009-08-30  Rodrigo Kumpera  <rkumpera@novell.com>
1393
1394         * method-to-ir.c: Fix naming of stelem and ldelem.
1395
1396 2009-07-30  Zoltan Varga  <vargaz@gmail.com>
1397
1398         * driver.c (main_thread_handler): Check that the assembly loaded
1399         matches the filename when doing AOT.
1400
1401 2009-07-30  Mark Probst  <mark.probst@gmail.com>
1402
1403         * mini.c: get_ip_from_sigctx installer has been removed, so don't
1404         call it anymore.
1405
1406         * mini-x86.h, mini-amd64.h, mini-ppc.h: UCONTEXT macros moved (to
1407         utils/mono-sigcontext.h).
1408
1409         * exceptions-amd64.c: Use the UCONTEXT_GREGS macro instead of an
1410         #ifdef.
1411
1412 2009-07-29  Massimiliano Mantione  <massi@ximian.com>
1413
1414         * mini.c (mono_codegen):
1415         Call profiler hook to keep track of method code buffers.
1416
1417 2009-07-27  Mark Probst  <mark.probst@gmail.com>
1418
1419         * method-to-ir.c: Invoke write barriers for the
1420         Interlocked.(Compare)Exchange JIT intrinsics.
1421
1422 2009-07-26  Raja R Harinath  <harinath@hurrynot.org>
1423
1424         * Makefile.am (version.h): Fix issues when built out of tree.
1425         Remove some redundant 'grep's piped through 'sed's.
1426
1427 Fri Jul 24 17:28:37 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
1428
1429         This patch is contributed under the terms of the MIT/X11 license
1430
1431         * mini-ppc.c (mono_arch_output_basic_block):
1432         (OP_STOREI1_MEMBASE_REG): Handle 32-bit offsets combining addis
1433         for bits 32-47 with signed load/store diplacements for bits
1434         48-63.  Use prefered base/offset order for indexed form.
1435         (OP_STOREI2_MEMBASE_REG, OP_STORE_MEMBASE_REG): Same.
1436         (OP_LOAD_MEMBASE, OP_LOADI4_MEMBASE, OP_LOADU4_MEMBASE,
1437         OP_LOADI1_MEMBASE, OP_LOADU1_MEMBASE, OP_LOADU2_MEMBASE,
1438         OP_LOADI2_MEMBASE): Same.
1439         (OP_STORER8_MEMBASE_REG, OP_LOADR8_MEMBASE,
1440         OP_STORER4_MEMBASE_REG, OP_LOADR4_MEMBASE): Same.
1441         (OP_STOREI1_MEMINDEX): Use prefered base/offset order for
1442         indexed form.
1443         (OP_STOREI2_MEMINDEX, OP_STORE_MEMINDEX): Same.
1444         (OP_LOAD_MEMINDEX, OP_LOADI4_MEMINDEX, OP_LOADU4_MEMINDEX,
1445         OP_LOADU2_MEMINDEX, OP_LOADI2_MEMINDEX, OP_LOADU1_MEMINDEX,
1446         OP_LOADI1_MEMINDEX): Same
1447         (OP_LOADR4_MEMINDEX, OP_LOADR8_MEMINDEX, OP_STORER4_MEMINDEX,
1448         OP_STORER8_MEMINDEX): Same
1449         (OP_JMP): Use addis/addi sequence for int cfg->stack_usage
1450         computations.
1451         (mono_arch_emit_prolog): Handle 32-bit offsets combining addis
1452         for bits 32-47 with signed load/store diplacements for bits
1453         48-63.  Use prefered base/offset order for indexed form.
1454
1455 Fri Jul 24 16:57:12 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
1456
1457 This patch is contributed under the terms of the MIT/X11 license
1458
1459         * mini-ppc.c: Define PPC_MOVE_FPR_GPR and PPC_ISA_64.
1460         (mono_arch_get_vcall_slot): Fx pointer to int cast warning.
1461         (mono_arch_decompose_opts): Make OP_ICONV_TO_R4 and
1462         OP_ICONV_TO_R8 decompose conditional on !PPC_ISA_64.
1463         (mono_arch_output_basic_block) [OP_JMP]: Use ppc_load32 for
1464         cfg->stack_usage to avoid size warnings.
1465         (mono_arch_output_basic_block) [__mono_ppc64__]: Replace
1466         store/load sequence with mffgpr if PPC_MOVE_FPR_GPR is true.
1467         (mono_arch_output_basic_block) [!__mono_ppc64__]: For
1468         OP_ICONV_TO_R4 or OP_ICONV_TO_R8 and PPC_ISA_64 use fcfid
1469         to convert.
1470         (mono_arch_emit_prolog): Move mono_emit_unwind_op_def_cfa 
1471         after code varible is initialized.
1472         Add g_assert ppc_is_imm16 for ainfo->offset. Handle
1473         ainfo->size == 8 when ainfo->offset !ppc_is_imm16.
1474         (mono_arch_emit_epilog): 
1475         Move Use ppc_load32 for cfg->stack_usage to avoid size
1476         warnings.
1477
1478 2009-07-24  Mark Probst  <mark.probst@gmail.com>
1479
1480         * method-to-ir.c: The write barrier doesn't do the store anymore,
1481         so we have always to emit it.  Also, emit the wbarrier after the
1482         store.
1483
1484 2009-07-24  Zoltan Varga  <vargaz@gmail.com>
1485
1486         * mini-arm.c (mono_arch_get_delegate_invoke_impls): Add a trampoline
1487         for argument count 3 too.
1488
1489 2009-07-23  Zoltan Varga  <vargaz@gmail.com>
1490
1491         * mini.c (mono_jit_compile_method_with_opt): Add an 'ex' argument to let
1492         the caller handle the exceptions.
1493         (mono_jit_runtime_invoke): Handle exceptions thrown while compiling the
1494         method. Fixes #524498.
1495
1496 2009-07-22  Geoff Norton  <gnorton@novell.com>
1497
1498         * mini-exceptions.c: Fix build on ia64.
1499
1500 2009-07-22  Mark Probst  <mark.probst@gmail.com>
1501
1502         * mini-exceptions.c (ves_icall_get_frame_info): Use write
1503         barriers.
1504
1505 2009-07-21  Zoltan Varga  <vargaz@gmail.com>
1506
1507         * mini-arm.c (mono_arch_emit_prolog): Fix thread attaching in aot
1508         code.
1509
1510 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
1511
1512         * basic-simd.cs (Main): Pass args to the test driver.
1513
1514 2009-07-20  Geoff Norton  <gnorton@novell.com>
1515
1516         * mini-x86.h: Fix the x86 version guards to use Apple's
1517         properly defined macros.
1518
1519 2009-07-20  Geoff Norton  <gnorton@novell.com>
1520
1521         * mini-x86.c: Fix --trace on darwin-x86 and other systems which require
1522         aligned access.
1523
1524 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
1525
1526         * mini.c (mono_jit_runtime_invoke): Speed this up by adding a hash to
1527         MonoJitDomainInfo which maps MonoMethod's to a structure containing all
1528         the information which is needed for invokes, so only one locking+hash table
1529         lookup is needed.
1530
1531         * aot-compiler.c: Add a 'tool-prefix' option to be used when cross-compiling.
1532         
1533         * aot-compiler.c (add_generic_instances): Emit instances of 
1534         GenericComparer<T> for primitive types.
1535
1536 2009-07-19 Rodrigo Kumpera  <rkumpera@novell.com>
1537
1538         * mini-posix.c: Fix linux build.
1539
1540 2009-07-19  Geoff Norton  <gnorton@novell.com>
1541
1542         * mini.h: Add prototypes for mono_runtime_syscall_fork and
1543         mono_gdb_render_native_backtraces
1544         * mini-darwin.c: Apple's syscall(SYS_fork) is very weird on x86,
1545         so we implement the sane semantics to the runtime here
1546         (mono_gdb_render_native_backtraces).  Apple also uses an ancient gdb
1547         so we need to call it differently (mono_gdb_render_native_backtraces)
1548         * mini-posix.c: Move the old semantics from mini.c to the prototypes
1549         here for default implementations.
1550         * mini.c: Refactor mono_handle_native_sigsegv so that we can properly
1551         support Apple's weird syscall (SYS_fork) implementation and not busy
1552         loop in abort() on native crashes on OSX anymore.
1553
1554 2009-07-18  Zoltan Varga  <vargaz@gmail.com>
1555
1556         * aot-runtime.c (load_method): Change the handling of the
1557         MONO_LASTAOT env variable so MONO_LASTAOT=0 means that no aot methods
1558         are used.
1559
1560         * mini.c (mono_patch_info_equal): Really fix the handling of RGCTX_FETCH.
1561
1562 2009-07-17  Zoltan Varga  <vargaz@gmail.com>
1563
1564         * mini.c (mono_patch_info_equal): Revert the last change for now as it
1565         seems to break the aot tests.
1566         
1567         * mini.c (mono_patch_info_equal): Fix the handling of 
1568         MONO_PATCH_INFO_RGCTX_FETCH.
1569
1570 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
1571
1572         * unwind.c: Use TARGET_AMD64 instead of __x86_64__.
1573
1574         * mini.c (mono_patch_info_hash): Fix the handling of 
1575         MONO_PATCH_INFO_INTERNAL_METHOD.
1576         (mono_patch_info_equal): Ditto.
1577
1578 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
1579
1580         * mini-llvm.c (mono_llvm_emit_method): Use module instead of ctx->module
1581         in a few places.
1582         
1583         * mini-llvm.c: Add some infrastructure for AOT support.
1584
1585 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
1586
1587         * mini-llvm-cpp.c: Update to the latest llvm api.
1588         
1589         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Set the EnablePrettyStackTrace
1590         option to false to prevent llvm from installing signal handlers which
1591         trip up the gc.
1592         
1593 2009-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
1594
1595         * cpu-x86.md:
1596         * cpu-amd64.md: Revert previous change as those instructions
1597         take 2 separate arguments. Remember to read the arch docs more
1598         carefully next time.
1599
1600 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
1601
1602         * mini-llvm-cpp.cpp (mono_llvm_build_alloca): Update to latest llvm api.
1603
1604 Wed Jul 15 17:20:27 CEST 2009 Paolo Molaro <lupus@ximian.com>
1605
1606         * mini-ppc.c: exploit multiple load/store units if available (rest of
1607         the change from Steven Munroe (<munroesj@us.ibm.com>) first patch at 
1608         http://bugzilla.novell.com/show_bug.cgi?id=487846).
1609
1610 Wed Jul 15 16:24:57 CEST 2009 Paolo Molaro <lupus@ximian.com>
1611
1612         * mini-ppc.c: integrate most of Steven Munroe (<munroesj@us.ibm.com>)
1613         first patch at http://bugzilla.novell.com/show_bug.cgi?id=487846.
1614
1615 2009-07-14 Rodrigo Kumpera  <rkumpera@novell.com>
1616
1617         * cpu-x86.md: Fix missing clobbering from trancendental simd
1618         ops.
1619
1620         * cpu-amd64.md: Same.
1621
1622 2009-07-14 Jerry Maine <crashfourit@gmail.com>
1623
1624         Contributed under the terms of the MIT/X11 license by
1625         Jerry Maine <crashfourit@gail.com>.
1626
1627         * basic-simd.cs: Added tests for single and doulble indexers.
1628
1629         * cpu-amd64.md: Added simd opcode information.
1630
1631         * mini-amd64.c: Added IR to native simd generation code.
1632         Added simd register names and function that returns them.
1633
1634         * mini-amd64.h: Added marcos to turn on simd code compilation in
1635         amd64. Added max simd register count marco. Added caller/callee
1636         register mask marcos. Added marcos to use simd register bank.
1637
1638         * mini.h: Added helper marco for shufling dwords and simple
1639         floats.
1640
1641 2009-07-14  Zoltan Varga  <vargaz@gmail.com>
1642
1643         * mini-llvm-cpp.cpp: Update to latest llvm SVN api.
1644
1645         * Makefile.am (mono_LDADD): Pass LLVM_LDFLAGS to the linked.
1646
1647         * unwind.c (mono_unwind_get_ops_from_fde): Make this return
1648         the length of the native code as well.
1649
1650         * basic-simd.cs: Add a test for #521662.
1651
1652 Mon Jul 13 17:58:50 CEST 2009 Paolo Molaro <lupus@ximian.com>
1653
1654         * mini-ppc.c: fixed bug introduced by Steven's TLS changes.
1655
1656 2009-07-13  Mark Probst  <mark.probst@gmail.com>
1657
1658         * mini.c: Register function for getting the IP from a signal
1659         context with metadata.
1660
1661 2009-07-13  Zoltan Varga  <vargaz@gmail.com>
1662
1663         * method-to-ir.c (mono_method_to_ir): When calling a gshared method,
1664         call a generic class init trampoline if needed. Fixes #519336.
1665
1666         * generics.cs: Add a test.
1667         
1668 2009-07-09  Mark Probst  <mark.probst@gmail.com>
1669
1670         * method-to-ir.c: When doing a call which might be remote from
1671         shared generic code to other shared code with open type arguments,
1672         get the remoting invoke wrapper from the RGCTX and do an indirect
1673         call to it.
1674
1675 2009-07-03  Zoltan Varga  <vargaz@gmail.com>
1676
1677         * mini-trampolines.c (get_unbox_trampoline): Add an rgctx trampoline
1678         after the unbox trampoline in the full-aot case.
1679
1680 2009-07-02  jonas echterhoff <jonas@unity3d.com>
1681         
1682         * mini.c: Move initialization of jit_mutex before debugger initialization
1683         
1684         to avoid crashes.
1685         
1686         
1687         * Info.plist: added Info.plist and link flag to enable the mono executable
1688         to access other processes. Requires codesigning of the executable to work.
1689         
1690         * mdb-debug-info32-darwin.s: The same as mdb-debug-info32.s, changed to 
1691         
1692         compile on OS X.
1693         
1694
1695 2009-06-30  Zoltan Varga  <vargaz@gmail.com>
1696
1697         * driver.c (mini_regression): Handle loading errors. Fixes #508869.
1698
1699 2009-06-29  Zoltan Varga  <vargaz@gmail.com>
1700
1701         * mini-exceptions.c (get_generic_context_from_stack_frame): Fix the case
1702         when the generic instance is an instantiation of a subclass of the
1703         methods class. Fixes #517166.
1704
1705 2009-06-26  Zoltan Varga  <vargaz@gmail.com>
1706
1707         * mini-amd64.c (mono_arch_emit_prolog): Fix thread attaching in AOTed
1708         code.
1709
1710         * mini.c (mono_jit_thread_attach): Allow domain to be NULL for calls from
1711         AOTed code.
1712
1713         * CMakeLists.txt: Add minimal support for installation.
1714
1715 2009-06-25  Zoltan Varga  <vargaz@gmail.com>
1716
1717         * aot-compiler.c (emit_and_reloc_code): Factor out the code to
1718         determine whenever a method is directly callable to a separate function.
1719
1720         * mini-<ARCH>.c tramp-<ARCH>.c: Remove needless casts and add new
1721         needed ones as a result of the previous change.
1722
1723         * mini-<ARCH>.c tramp-<ARCH>.c: Use mgreg_t* as the
1724         type of register arrays.
1725
1726         * mini-trampolines.c tramp-<ARCH>.c aot-runtime.c: Use mgreg_t* as the
1727         type of register arrays.
1728
1729 2009-06-24  Jerry Maine  <crashfourit@gmail.com>
1730         
1731         Contributed under the terms of the MIT/X11 license by
1732         Jerry Maine <crashfourit@gail.com>.
1733
1734         * mini-amd64.c: Added code to convert simd IR to native amd64 sse.
1735
1736 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
1737
1738         * aot-compiler.c (emit_plt): Define debug labels for most plt entries.
1739
1740 2009-06-24  Neale Ferguson <neale@sinenomine.net>
1741
1742         * mini-s390x.c: Correct LCONV_TO_Ix and ICONV_TO_Ix routines. Fix leave_method
1743         dump of structure return value. Fix some formatting.
1744         * cpu-s390x.md: Fix lengths of instruction sequences.
1745         * mini-s390.c: Minor formatting changes.
1746
1747 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
1748
1749         * mini-x86.h: Applied patch from Romain Tartiere (romain@blogreen.org).
1750         Use sigaction on freebsd as well.
1751
1752 2009-06-23  Zoltan Varga  <vargaz@gmail.com>
1753
1754         * mini.h: Don't define MONO_ARCH_HAVE_TLS_GET to 0, as some code
1755         uses #ifdef on it.
1756         
1757         * mini.c (mini_init): Revert a change which breaks cross-compilation.
1758
1759 2009-06-22  Mark Probst  <mark.probst@gmail.com>
1760
1761         * mini-ppc.c, cpu-ppc.md: Enable TLS on Darwin/G4.
1762
1763 2009-06-22  Mark Probst  <mark.probst@gmail.com>
1764
1765         * mini.c, mini.h: Tell the runtime whether we support MONO_TLS.
1766
1767 2009-06-20  Martin Baulig  <martin@ximian.com>
1768
1769         * debug-mini.c
1770         (MonoDebuggerThreadFlags): New enum typedef.
1771         (MonoDebuggerThreadInfo): Added `guint32 thread_flags'.
1772         (mono_debugger_thread_created): Added `gpointer func' argument;
1773         initialize the new `thread_flags' field.
1774
1775 2009-06-18  Martin Baulig  <martin@ximian.com>
1776
1777         * debug-debugger.h (MonoDebuggerRuntimeFlags): New enum typedef.
1778         (MonoDebuggerInfo): Renamed the `dummy' field info `runtime_info'.
1779
1780         * debug-debugger.c
1781         (mini_debugger_set_attach_ok): New function; sets the attach-ok
1782         flag in `MONO_DEBUGGER__info.runtime_info'.
1783
1784         * driver.c
1785         (mono_main): Call mini_debugger_set_attach_ok() if generics
1786         sharing is disabled.
1787
1788 2009-06-22  Zoltan Varga  <vargaz@gmail.com>
1789
1790         * aot-compiler.c (add_wrappers): Fix a warning.
1791
1792         * mini-ppc.c tramp-ppc.c exceptions-ppc.c aot-compiler.c: Update after
1793         the ppc load/store macro changes.
1794
1795 2009-06-21  Zoltan Varga  <vargaz@gmail.com>
1796
1797         * tramp-ppc.c (mono_arch_patch_plt_entry): Implement this.
1798
1799         * aot-compiler.c (mono_compile_assembly): Sanitize the plt symbol too,
1800         not just the got symbol.
1801
1802         * mini-ppc.c aot-compiler.c unwind.c: Implement generation of unwind info
1803         on ppc.
1804
1805         * aot-compiler.c unwind.c: Add infrastructure for unwind support on
1806         ppc.
1807         
1808         * aot-compiler.c: Remove some fixmes.
1809
1810         * driver.c (mono_main): Print a helpful message when cross-compiling.
1811
1812         * mini.c (mini_init): Disable signal handlers when cross-compiling.
1813
1814         * method-to-ir.c (initialize_array_data): Do the optimization if the
1815         target byte order is little endian, instead of the host byte order.
1816
1817         * aot-compiler.c: Emit sizes for most symbols, only emit runtime-invoke
1818         wrappers into the mscorlib image, Emit a unique plt symbol for each
1819         image, emit symbols for plt entries.
1820
1821         * image-writer.c (img_writer_emit_symbol_size): New function to emit
1822         a .size directive.
1823         
1824 2009-06-20  Zoltan Varga  <vargaz@gmail.com>
1825
1826         * aot-compiler.c (add_wrappers): Avoid calling 
1827         mono_marshal_get_type_info () since it can assert for some types.
1828
1829         * method-to-ir.c (mono_method_to_ir): Disable aot when some forms of 
1830         ldtoken are used inside wrappers.
1831
1832         * helpers.c: Add support for prefixing tools with the arch name.
1833
1834         * mini.h (OP_LOADR_MEMBASE): New opcodes to load/store pointer sized
1835         quantities when using ilp32.
1836
1837         * mini-codegen.c: Use OP_LOADR_MEMBASE/OP_STORER_MEMBASE for loading/storing
1838         spill slots. Use sizeof(mgreg_t) for the spill slot size.
1839
1840         * image-writer.c: Use .long on ilp32.
1841
1842         * aot-compiler.c: Use 32 bit loads on ilp32.
1843         
1844 2009-06-19  Zoltan Varga  <vargaz@gmail.com>
1845
1846         * tramp-ppc.c (mono_arch_create_trampoline_code): Fix the ppc build.
1847
1848         * mini-ops.h: Use TARGET_POWERPC define for consistency.
1849
1850         * patch-info.h: Add 'MSCORLIB_GOT_ADDR' patch type.
1851
1852         * aot-compiler.c aot-runtime.c: Put the mscorlib got address into the 
1853         second got slot of every aot image.
1854         
1855         * aot-compiler.c aot-runtime.c mini-trampolines.c: Add support for
1856         aot on platforms with function pointers.
1857
1858         * mini-ppc.h mini-ppp.c cpu-ppc.md exceptions-ppc.c tramp-ppc.c: Add
1859         support for aot/full aot on ppc/ppc64.
1860         
1861         * tramp-<ARCH>.c (mono_arch_patch_plt_entry): Add 'got' and 'regs'
1862         arguments which are needed on ppc.
1863
1864         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Add 'regs'
1865         argument.
1866
1867         * mini-trampolines.c aot-runtime.c: Update after the above changes.
1868         
1869         * liveness.c (BITS_PER_CHUNK): Use MONO_BITSET_BITS_PER_CHUNK.
1870
1871         * regalloc2.c (BITS_PER_CHUNK): Ditto.  
1872
1873         * aot-compiler.c (emit_got_info): Fix reading unused memory.
1874
1875         * ir-emit.h (alloc_dreg): Add a 'return -1' to quiet some compilers.
1876
1877 2009-06-17  Geoff Norton  <gnorton@novell.com>
1878
1879         * aot-compiler.c: Ensure we dont try to close a null dwarf writer.
1880
1881 2009-06-17  Zoltan Varga  <vargaz@gmail.com>
1882
1883         * dwarfwriter.c (mono_dwarf_writer_create): Add an 'appending' parameter
1884         to control whenever the dwarf writer is in xdebug or aot mode.
1885         (emit_class_dwarf_info): Use a separate abbrev for structures without
1886         children.
1887
1888         * aot-compiler.c: Pass the appending parameter to 
1889         mono_dwarf_writer_create ().
1890
1891         * branch-opts.c (mono_merge_basic_blocks): Fix the case when bbn
1892         falls through to its next bblock. Fixes #513931.
1893
1894         * iltests.il: Add a test.
1895
1896         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Emit some line number
1897         infor even if emit_line is FALSE, as the apple linker seems to require it.
1898
1899         * image-writer.c (asm_writer_emit_symbol_diff): Call get_label ().
1900
1901         * dwarfwriter.c (emit_cie): Emit a separate symbol for the cie start, as
1902         gcc does.
1903         (emit_fde): Ditto.
1904
1905 2009-06-15  Zoltan Varga  <vargaz@gmail.com>
1906
1907         * exceptions-mips.c (mono_arch_get_throw_exception_by_name): Fix the
1908         mips build.
1909
1910 2009-06-13  Zoltan Varga  <vargaz@gmail.com>
1911
1912         * mini.h (struct MonoBasicBlock): Add 'has_jump_table' and 
1913         'has_call_handler' fields.
1914
1915         * method-to-ir.c (mono_method_to_ir): Set them if needed.
1916
1917         * branch-opts.c (mono_merge_basic_blocks): Avoid iterating through the
1918         first bblock if not needed. Fixes #512790.
1919         
1920 2009-06-11  Zoltan Varga  <vargaz@gmail.com>
1921
1922         * aot-compiler.c (mono_compile_assembly): Fix a warning.
1923         
1924         * aot-compiler.c (add_wrappers): Don't emit remoting-invoke-with-check
1925         wrappers.
1926
1927         * aot-runtime.c (mono_aot_get_method): Use the original method's code for
1928         remoting-invoke-with-check wrappers, which are not needed when running with
1929         full-aot, since it doesn't support remoting.
1930         
1931 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
1932
1933         * aot-compiler.c (emit_got_info): Don't emit offsets for the plt got entries.
1934
1935         * aot-compiler.c aot-runtime.c: Don't emit the first got offset in the
1936         method info, it is not used anymore.
1937
1938         * mini.h: Bump AOT file format version.
1939         
1940         * aot-compiler.c (arch_emit_plt_entry): Make the arm plt entries one
1941         word smaller.
1942
1943         * aot-runtime.c (mono_aot_get_plt_info_offset): Update after the
1944         change above.
1945         
1946         * tramp-arm.c (mono_arch_patch_plt_entry): Ditto.
1947
1948         * mini.h: Bump AOT file format version.
1949         
1950 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
1951
1952         * image-writer.c (asm_writer_emit_symbol_diff): Disable the 
1953         TARGET_ASM_APPLE stuff for now, as it doesn't seem to work on the
1954         iphone.
1955
1956         * mini-arm.c (mono_arch_output_basic_block): Fix the implementation
1957         of CKFINITE and FBGE for VFP.
1958
1959 2009-06-09  Zoltan Varga  <vargaz@gmail.com>
1960
1961         * aot-compiler.c: Don't align code to 16 bytes on arm.
1962         
1963         * aot-compiler.c (emit_method_code): Emit the unbox trampolines right
1964         before the methods they belong to.
1965
1966         * aot-runtime.c (mono_aot_plt_resolve): Avoid creating trampolines in
1967         the full-aot case if possible, since the trampoline will be called right 
1968         away.
1969
1970         * aot-compiler.c (mono_compile_assembly): Decrease the number of full aot
1971         trampolines to 1024 after the change above.
1972
1973         * aot-compiler.c (arch_emit_specific_trampoline): Rework the arm
1974         trampoline to save 8 bytes per trampoline.
1975
1976         * tramp-arm.c (mono_arch_create_trampoline_code_full): Update after the
1977         change above.
1978
1979 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
1980
1981         * aot-compiler.c: Use acfg->temp_prefix instead of .L to prefix labels.
1982
1983 2009-06-08  Martin Baulig  <martin@ximian.com>
1984
1985         * debug-mini.c
1986         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
1987         (_mono_debugger_throw_exception): Don't make this static.
1988         (_mono_debugger_unhandled_exception): Likewise.
1989         (mono_debugger_handle_exception): Moved to mini-exceptions.c
1990
1991         * debug-mini.c
1992         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
1993         (_mono_debugger_throw_exception): Add function prototype.
1994         (_mono_debugger_unhandled_exception): Likewise.
1995
1996         * mini-exceptions.c
1997         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
1998         arg; return the first exception handler if the exception is caught
1999         and we're running inside the debugger.
2000         (mono_debugger_handle_exception): Moved here from debug-mini.c;
2001         improve exception handle inside runtime-invoke, check whether the
2002         exception is actually caught in the method being invoked and not
2003         by the runtime-invoke-wrapper.
2004
2005 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
2006
2007         * image-writer.c: Improve support for the osx assembler.
2008
2009         * dwarfwriter.c: Avoid the usage of subsections if the assembler doesn't
2010         support them.
2011
2012 2009-06-08  Martin Baulig  <martin@ximian.com>
2013
2014         * debug-mini.c
2015         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
2016         (_mono_debugger_throw_exception): Don't make this static.
2017         (_mono_debugger_unhandled_exception): Likewise.
2018         (mono_debugger_handle_exception): Moved to mini-exceptions.c
2019
2020         * debug-mini.c
2021         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
2022         (_mono_debugger_throw_exception): Add function prototype.
2023         (_mono_debugger_unhandled_exception): Likewise.
2024
2025         * mini-exceptions.c
2026         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
2027         arg; return the first exception handler if the exception is caught
2028         and we're running inside the debugger.
2029         (mono_debugger_handle_exception): Moved here from debug-mini.c;
2030         improve exception handle inside runtime-invoke, check whether the
2031         exception is actually caught in the method being invoked and not
2032         by the runtime-invoke-wrapper.
2033
2034 2009-06-07  Zoltan Varga  <vargaz@gmail.com>
2035
2036         * image-writer.c (append_subsection): Don't align subsections of the
2037         debug_line section as a workaround.
2038
2039         * dwarfwriter.c: Emit line number info in the AOT case as well.
2040
2041 2009-06-06  Steven Munroe  <munroesj@us.ibm.com>
2042
2043         This patch is contributed under the terms of the MIT/X11 license
2044
2045        * mini-ppc.c (mono_arch_emit_exceptions): Change assert to
2046        code_len <= code_size
2047
2048 2009-06-06  Zoltan Varga  <vargaz@gmail.com>
2049
2050         * mini-mips.c (mips_emit_exc_by_name): Fix the mips build.
2051
2052 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
2053
2054         * aot-compiler.c aot-runtime.c: Delete references to static rgctx
2055         invoke wrappers, we now use trampolines instead.
2056
2057 2009-06-04  Mark Probst  <mark.probst@gmail.com>
2058
2059         * mini-darwin.c: The exception thread must not be registered with
2060         the GC.
2061
2062 2009-06-04  Mark Probst  <mark.probst@gmail.com>
2063
2064         * mini-gc.c: Disable the code because it makes SGen crash.
2065
2066 2009-06-03  Zoltan Varga  <vargaz@gmail.com>
2067
2068         * aot-compiler.c (mono_compile_assembly): Handle file open errors gracefully
2069         instead of asserting.
2070
2071 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
2072
2073         * aot-compiler.c (mono_compile_assembly): Move the creation of the
2074         output file after the code has been compiled.
2075
2076 2009-05-30  Zoltan Varga  <vargaz@gmail.com>
2077
2078         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Fix 64 bit support.
2079
2080 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
2081
2082         * aot-compiler.c aot-runtime.c: Get rid of the shared/non-shared got
2083         entries distinction to simplify the code.
2084
2085         * mini.h: Bump AOT file format version.
2086         
2087 2009-05-28  Zoltan Varga  <vargaz@gmail.com>
2088
2089         * objects.cs: Fix the signature of one of the tests.
2090
2091         * mini.c (mini_create_ftnptr): New helper function, moved here from
2092         object.c.
2093         (mini_get_addr_from_ftnptr): Ditto.
2094         (mini_init): Install the new helpers.
2095
2096 2009-05-28  Martin Baulig  <martin@ximian.com>
2097
2098         Correctly initialize the debugger when embedding Mono.
2099
2100         * mdb-debug-info32.s, mdb-debug-info64.s: Add a global variable
2101         `MONO_DEBUGGER__using_debugger' to the `.mdb_debug_info' section;
2102         see documentation in mini_debug_running_inside_mdb().
2103
2104         * debug-debugger.c
2105         (mini_debug_running_inside_mdb): New function to check whether
2106         we're running inside mdb.
2107
2108         * mini.c (mini_init): Call mini_debugger_init() if we're running
2109         inside the debugger.
2110
2111         * driver.c (mono_main): Moved the call to mini_debugger_init()
2112         into mini_init() to make this work when embedding Mono.
2113
2114         * debug-debugger.c (mini_debugger_init): Warn about duplicate
2115         calls to mini_debugger_init().
2116
2117         * mini.h: Rename mono_debugger_init() -> mini_debugger_init(),
2118         mono_debugger_main() -> mini_debugger_main() and put them inside a
2119         `MONO_DEBUGGER_SUPPORTED' conditional.
2120
2121 2009-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
2122
2123         * mini-trampolines.c: Kill mono_find_delegate_trampoline_by_addr as
2124         this is no longer in use.
2125         * mini.h: Same.
2126
2127 2009-05-26  Zoltan Varga  <vargaz@gmail.com>
2128
2129         * mini-sparc.c (add_outarg_load): Fix the sparc build.
2130
2131         * aot-compiler.c (emit_method_code): Always write out C style symbols for
2132         methods.
2133
2134 2009-05-27  Martin Baulig  <martin@ximian.com>
2135
2136 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
2137
2138         * mini-x86.c (mono_arch_output_basic_block): Fix the precision of
2139         long_conv_to_r_un to 64 bits.
2140
2141         * cpu-x86.md: Increase the instruction size due to the changes.
2142
2143         * iltests.il.in: Add regression test.
2144
2145         Fixes #467201.
2146
2147 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
2148
2149         * objects.cs: Move the previous test from basic.cs to here.
2150
2151 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
2152
2153         * basic.cs: Add regression test for #506915.
2154
2155 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
2156
2157         * method-to-ir.c (mono_method_to_ir): When doing the ldobj+stobj
2158         optimization we must check the bb of the first byte of stobj as
2159         it's the only one set in cil_offset_to_bb.
2160
2161         Fixes #506915.  
2162
2163 2009-05-25  Zoltan Varga  <vargaz@gmail.com>
2164
2165         * image-writer.c: Fix pointer directive on ppc64.
2166
2167 2009-05-24  Zoltan Varga  <vargaz@gmail.com>
2168
2169         * image-writer.c (asm_writer_emit_section_change): Avoid using
2170         .bss subsections on ppc too.
2171
2172 2009-05-23  Zoltan Varga  <vargaz@gmail.com>
2173
2174         * image-writer.c: Fix the definition of TARGET_ASM_....
2175         
2176         * image-writer.c: Fix the emission of assembler directives in the last
2177         change.
2178
2179         * mini-ppc.c (mono_arch_emit_exceptions): Increase the size of the
2180         exception throwing code to accomodate ppc64.
2181
2182         * tramp-ppc.c (mono_arch_get_nullified_class_init_trampoline): Increase the
2183         size to work on ppc64 too.
2184
2185         * mini-ppc.h (MonoCompileArch): Enable static rgctx trampolines on ppc64
2186         too.
2187
2188         * image-writer.c: Clean up the #ifdef hell a bit by adding defines for
2189         the assembler dialect instead of using platform specific defines.
2190
2191 2009-05-22  Geoff Norton  <gnorton@novell.com>
2192
2193         * mini-arm.c (get_call_info): If a structure is split between the stack
2194         and argument registers, we should not advance the stack pointer by the entire
2195         native size, but just by the amount that spilled.
2196
2197 2009-05-22  Zoltan Varga  <vargaz@gmail.com>
2198
2199         * mini-arm.c (get_call_info): Handle structures with alignment requirements
2200         correctly.
2201
2202 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
2203
2204         * aot-compiler.c (emit_extra_methods): Encode direct runtime invoke
2205         wrappers normally.
2206         
2207         * aot-compiler.c (add_extra_method): Fix up the collection of extra
2208         methods so wrapper don't get added twice.
2209         (add_generic_instances): Don't add methods of arrays.
2210
2211         * generics.cs: Mark one test as !FULLAOT.
2212
2213 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
2214
2215         * mini-x86.c (emit_move_return_value): Remove unused vars.
2216
2217 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
2218
2219         * mini-x86.c (mono_arch_emit_call): The decompose code now supports
2220         decomposing 8 bytes structs into a LCALL.
2221
2222         * mini-x86.c (emit_move_return_value): We no longer push the vtype
2223         pointer for where to store the returned regs.
2224
2225         * decompose.c (mono_decompose_vtype_opts): Fix the comment to properly
2226         state the concern.
2227
2228         Fixes #471747, #471751 and #4734530 (in fact, it's a bunch of dups).
2229
2230 2009-05-20  Miguel de Icaza  <miguel@novell.com>
2231
2232         * aot-runtime.c (mono_aot_init): Use g_getenv to work on systems
2233         without getenv.
2234
2235 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
2236
2237         * aot-compiler.c (add_wrappers): Add StructureToPtr/PtrToStructure wrappers.
2238
2239         * basic.cs: Move the test_2_cprop_bug () test to generics.cs as it involves
2240         generics.
2241
2242 2009-05-20 Rodrigo Kumpera  <rkumpera@novell.com>
2243
2244         * local-propagation.c (mono_local_cprop): Avoid local propagation
2245         across paired add/sub if the first instruction dest reg is it's
2246         source reg. For example:
2247
2248         int_add_imm R12 <- R12 [1] clobbers: 1
2249         int_sub_imm R42 <- R12 [1] clobbers: 1
2250
2251         The cprop pass would wrongly const prop + 1 to int_sub_imm which doesn't
2252         maintain the math identify.
2253
2254         Fixes #505375.
2255
2256 2009-05-20  Andreia Gaita  <avidigal@novell.com>
2257
2258         * Makefile.am: avoid going on the network just to get the revision,
2259         use git log instead
2260
2261 2009-05-19  Massimiliano Mantione  <massi@ximian.com>
2262
2263         Fixed estimate for short branches on amd64 (they were off mark, and
2264         enabling call prolog-epilog instrumentations caused assertions).
2265         * mini.h (struct MonoBasicBlock): added max_length field to hold the
2266         estimate for the maximum length of this basic block.
2267         * mini-amd64.c:
2268         - mono_arch_emit_prolog: compute max_length for each basic block
2269           (instead of max_offset), and inflate size estimate also for entry bb
2270           in case of code instrumentation.
2271         - mono_arch_output_basic_block: get rid of "cpos" (the current
2272           estimated "position" in the code), and always use "offset" instead,
2273           which is accurate; at the beginning of the function quickly recompute
2274           max_offset for all the remaining blocks, starting from the current
2275           cfg->code_len (which is correct, and not estimated) and using the
2276           estimated block lengths computed previously.
2277
2278 2009-05-17  Zoltan Varga  <vargaz@gmail.com>
2279
2280         * exceptions-ppc.c: Remove the caching from the trampoline creation 
2281         functions, it is already done in the caller.
2282
2283         * mini-trampolines.c (mono_llvm_vcall_trampoline): Fix the llvm build.
2284
2285         * mini-ppc.h mini-arm.h mini-x86.h mini-amd64.h: Add 
2286         MONO_ARCH_GSHARED_SUPPORTED define.
2287
2288         * mini.c (mini_init): Use the MONO_ARCH_GSHARED_SUPPORTED define.
2289
2290         * mini-arm.c mini.c: Get rid of the unused mono_arch_fixup_jinfo ()
2291         function.
2292
2293 2009-05-16  Zoltan Varga  <vargaz@gmail.com>
2294
2295         * jit-icalls.c (mono_helper_compile_generic_method): Get rid of the 
2296         call to mono_marshal_get_rgctx_invoke ().
2297
2298         * mini.c method-to-ir.c mini-trampolines.c: Get rid of the usage of
2299         mono_marshal_get_static_rgctx_invoke (), all platforms which support
2300         gshared use the static rgctx trampolines now.
2301         
2302         * mini.c (mini_init): Call mono_set_generic_sharing_supported () if the
2303         platform supports it.
2304
2305 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
2306
2307         * mini-arm.c (mono_arch_allocate_vars): Correctly save R5 when using AOT.
2308
2309         * aot-compiler.c (emit_method_code): Avoid duplicate labels for methods.
2310
2311 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
2312
2313         * mini-ppc.c (mono_arch_emit_exceptions): Nullify the processed patches.
2314
2315         * tramp-ppc.c (mono_arch_nullify_class_init_trampoline): Implement this
2316         for ppc.
2317
2318 2009-05-15  Massimiliano Mantione  <massi@ximian.com>
2319
2320         Made it possible for mono_arch_instrument_epilog to preserve
2321         argument registers, otherwise instrumenting the "epilogue" before
2322         a tail call would clobber them.
2323         * mini.h: Added "mono_arch_instrument_epilog_full" prototype, which
2324         if like mono_arch_instrument_epilog but with an additional parameter
2325         that states if argument registers must be preserved.
2326         * mini.c: implemented mono_arch_instrument_epilog as a call to
2327         mono_arch_instrument_epilog_full without asking to preserve argument
2328         registers (this makes the existing code work as usual).
2329         * mini-amd64.c:
2330         - mono_arch_instrument_epilog: add parameter to transform it into
2331         mono_arch_instrument_epilog_full, and preserve argument registers
2332         when required.
2333         - mono_arch_output_basic_block, OP_TAILCALL case: call
2334         mono_arch_instrument_epilog_full.
2335         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
2336         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-x86.c:
2337         only transformed mono_arch_instrument_epilog into
2338         mono_arch_instrument_epilog_full.
2339
2340 2009-05-15  Geoff Norton  <gnorton@novell.com>
2341
2342         * mini-darwin.c: This works on arm now.
2343
2344 2009-05-14  Geoff Norton  <gnorton@novell.com>
2345
2346         * jit.h, driver.c: Allow full-aot to be decided programatically by the
2347         embedding api.
2348
2349 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
2350
2351         * aot-compiler.c (emit_method_code): Skip a few more characters in the debug
2352         label names.
2353
2354         * mini-trampolines.c (mono_magic_trampoline): Handle static rgctx invoke
2355         wrappers during full aot mode correctly.
2356
2357         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle shared generic
2358         methods correctly.
2359
2360         * aot-compiler.c (mono_aot_method_hash): Use our internal version of
2361         mono_metadata_type_hash ().
2362
2363 2009-05-14  Massimiliano Mantione  <massi@ximian.com>
2364
2365         * mini.h, mini-codegen.c, mini-alpha.c, mini-amd64.c, mini-arm.c,
2366         mini-hppa.h, mini-hppa.c, mini-ia64.c, mini-mips.h, mini-mips.c,
2367         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-886.c:
2368         Removed MONO_INST_BRLABEL from the instruction flags, and the
2369         remaining code that used it, because we do not support branches inside
2370         basic blocks (and branch target labels) anymore.
2371         * Makefile.am: As part of the above cleanup, remove reference to
2372         BURG files which don't exist anymore.
2373
2374 2009-05-14  Zoltan Varga  <vargaz@gmail.com>
2375
2376         * image-writer.c (asm_writer_emit_local_symbol): Make this a nop on
2377         osx.
2378
2379         * mini-mips.c mini-mips.h exceptions-mips.c: Transition the mips backend
2380         to use mono_arch_throw_corlib_exception.
2381
2382         * mini-ppc.c mini-ppc.h exceptions-ppc.c: Use 
2383         mono_arch_throw_corlib_exception for throwing corlib exceptions.
2384
2385         * aot-runtime.c (decode_patch): Allocate the data for R4/R8 from the
2386         domain mempool.
2387
2388         * mini.c (mono_patch_info_dup_mp): Copy the table of switch targets too.
2389
2390         * aot-compiler.c: Emit a local symbol prefixed with the assembly name 
2391         for the got to make debugging easier and to avoid confusing it with the
2392         system got.
2393         
2394         * aot-compiler.c (emit_method_code): Emit a C style symbol for each
2395         method so a breakpoint can be set when using gdb.
2396
2397 2009-05-13  Zoltan Varga  <vargaz@gmail.com>
2398
2399         * aot-compiler.c (mono_aot_method_hash): Implement this properly based
2400         on mono_method_get_imt_slot ().
2401
2402         * aot-runtime.c (find_extra_method_in_amodule): Get rid of the
2403         num_decodes variables.
2404
2405         * aot-compiler.c (mono_aot_method_hash): Revert part of the last
2406         change as it doesn't seem to work.
2407         
2408         * aot-compiler.c (mono_aot_method_hash): Improve the hashing of
2409         wrappers.
2410
2411 2009-05-12  Zoltan Varga  <vargaz@gmail.com>
2412
2413         * aot-compiler.c mini.c mini-amd64.h mini-arm.h: Kill 
2414         MONO_ARCH_FULL_AOT_IMT_SUPPORTED define, both platforms now support imt.
2415
2416         * mini.c (mini_init): Install mono_aot_get_imt_thunk as the IMT thunk
2417         builder when using full aot.
2418
2419         * mini-amd64.c (mono_arch_build_imt_thunk): Don't handle the full-aot case
2420         here, it is already handled.
2421         
2422         * mini-arm.c (mono_arch_emit_imt_argument): Pass the dynamic imt arg
2423         correctly for IMT.
2424
2425         * aot-compiler.c (arch_emit_imt_thunk): Implement this for ARM.
2426
2427         * mini-arm.h: Enable IMT for full aot.
2428         
2429         * aot-compiler.c (mono_compile_assembly): Don't emit imt thunk if the
2430         arch doesn't support it.
2431
2432         * mini.c (mini_init): Don't disable IMT for full aot if the
2433         architecture supports it.
2434
2435         * mini.h (MonoAotTrampoline): New enum containing the different types
2436         of 'numerous' trampolines.
2437         (MONO_AOT_FILE_VERSION): Bump this.
2438
2439         * aot-compiler.c aot-runtime.c: Unify the handling of specific and
2440         static rgctx trampolines. Add support for full-aot IMT thunks.
2441
2442         * mini-amd64.h: Enable IMT for full aot.
2443
2444         * TestDriver.cs: Add a CategoryAttribute class and an --exclude option
2445         to exclude tests belonging to a category.
2446
2447         * generics.cs: Mark some tests with a !FULLAOT category.
2448
2449         * Makefile.am (fullaotcheck): Run tests with --exclude !FULLAOT. Include
2450         generics tests.
2451
2452 2009-05-11  Zoltan Varga  <vargaz@gmail.com>
2453
2454         * aot-compiler.c (emit_and_reloc_code): Move the implementation of
2455         MONO_PATCH_INFO_GOT_OFFSET to a separate arch-specific function.
2456         (emit_plt): Fix a warning.
2457
2458 2009-05-10  Zoltan Varga  <vargaz@gmail.com>
2459
2460         * aot-compiler.c aot-runtime.c: Fix the build by moving is_shared_got_patch
2461         back into aot-compiler.c to a place where the other functions shared by
2462         the runtime and aot compiler are.
2463         
2464         * aot-compiler.c aot-runtime.c: Emit the got addr using a separate symbol,
2465         as done previously, instead of in MonoAotFileInfo, since pointers might have
2466         alignment requirements.
2467
2468         * mini.h: Bump AOT file format version.
2469
2470 2009-05-10  Miguel de Icaza  <miguel@novell.com>
2471
2472         * aot-runtime.c (mono_aot_is_shared_got_patch): Move this routine
2473         that is used at runtime from the aot-compiler.c, this makes it
2474         work on setups that remove the AOT compiler from the output
2475         image. 
2476
2477 2009-05-09  Zoltan Varga  <vargaz@gmail.com>
2478
2479         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Implement this for
2480         PPC.
2481
2482         * mini-ppc.h: Enable static rgctx trampolines for ppc.
2483
2484         * mini-<ARCH>.h: Kill the MONO_ARCH_ENABLE_EMIT_STATE_OPT define.
2485
2486         * decompose.c (mono_decompose_long_opts): Move the ppc/sparc specific 
2487         stuff to mono_arch_decompose_long_opts ().
2488         (mono_decompose_opcode): Remove some dead code.
2489
2490 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
2491
2492         * method-to-ir.c (mono_method_to_ir): Fix boostrap of non amd64 builds
2493         cmethod can be null for quite a some reasons.
2494
2495 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
2496
2497         * method-to-ir.c (mono_method_to_ir): Fix non amd64 builds.
2498
2499 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
2500
2501         * aot-compiler.c (arch_emit_got_access): Fix the aot-not-supported build.
2502
2503 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
2504
2505         * method-to-ir.c (mono_emit_call_args): Add a 'tail' flag argument.
2506         (mono_method_to_ir): Use MONO_ARCH_USE_OP_TAIL_CALL macro to determine
2507         whenever to make tail calls using OP_TAIL_CALL. Enable support for tail
2508         calls returning structures by addr on amd64.
2509
2510         * mini-amd64.h (MONO_ARCH_USE_OP_TAIL_CALL): New arch-specific macro.
2511
2512         * iltests.il.in: Restructure the tail call tests a bit.
2513         
2514 2009-05-07  Zoltan Varga  <vargaz@gmail.com>
2515
2516         * aot-compiler.c (add_wrappers): Add remoting-invoke-with-check wrappers
2517         for virtual methods too.
2518
2519 2009-05-06  Raja R Harinath  <harinath@hurrynot.org>
2520
2521         * method-to-ir.c (mono_method_to_ir): Revert change of 2009-05-02
2522         due to regression in verifying System.dll.
2523
2524 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
2525
2526         * debug-mini.c (mono_debugger_method_has_breakpoint): Allow breakpoints
2527         in dynamic methods.
2528
2529         * dwarfwriter.c (emit_class_dwarf_info): Add support for generic
2530         instances.
2531
2532         * aot-compiler.c aot-runtime.c: Use our own hash function instead of
2533         g_str_hash () which can change.
2534
2535         * driver.c (mini_regression): Disable optimizations not supported by
2536         the cpu. Fixes #500019.
2537
2538         * aot-runtime.c (mono_aot_get_unwind_info): Fix the --enable-minimal=aot
2539         build.
2540
2541 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
2542
2543         * mini-llvm.c (mono_llvm_emit_method): Update the OP_TLS_GET implementation
2544         to the latest LLVM code.
2545
2546 2009-05-05  Zoltan Varga  <vargaz@gmail.com>
2547
2548         * genmdesc.pl (load_opcodes): Fix this after the TARGET_... changes.
2549
2550 2009-05-04  Zoltan Varga  <vargaz@gmail.com>
2551
2552         * mini-llvm.c (mono_llvm_emit_method): Implement TLS support on 
2553         x86/amd64.
2554
2555         * aot-compiler.c (encode_patch_list): Simplify this considerably as we are
2556         no longer saving offsets, so just save the patch types along with the other
2557         info.
2558         * aot-runtime.c (load_patch_info): Update after the changes to 
2559         encode_patch_list ().
2560         (decode_got_entry): Removed, merged into load_patch_info ().
2561         (is_shared_got_patch): Removed, call the same function from
2562         aot-compiler.c.
2563
2564         * mini.h: Bump aot file format version.
2565         
2566         * aot-compiler.c aot-runtime.c: Resurrect static linking support. Kill the
2567         half-finished no-dlsym code.
2568
2569         * aot-runtime.c (load_method): Kill the old and bit-rotten use_loaded_code
2570         option.
2571
2572         * mini-<ARCH>.h mini-trampolines.c aot-runtime.c: Kill the 
2573         MONO_ARCH_HAVE_CREATE_TRAMPOLINE_FROM_TOKEN define.
2574
2575 2009-05-02  Zoltan Varga  <vargaz@gmail.com>
2576
2577         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Increase the
2578         buffer length to work with AOT code.
2579
2580         * method-to-ir.c (mono_method_to_ir): Handle loading errors in the
2581         ldfld/stfld opcodes.
2582
2583         * exceptions-x86.c (mono_arch_get_throw_exception_by_name): Simplify this
2584         as it is not used.
2585
2586         * mini-llvm.c mini-x86.c: Implement 32 bit and x86 support.
2587
2588         * ssa.c (mono_ssa_compute): Don't skip I8 values when using LLVM.
2589
2590         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Update to the latest
2591         LLVM API.
2592
2593         * mini.c (mini_method_compile): Set the from_llvm flag in MonoJitInfo
2594         if needed. Don't decompose long operations when using llvm.
2595
2596 2009-05-01  Zoltan Varga  <vargaz@gmail.com>
2597
2598         * aot-compiler.c aot-runtime.c: Use mono_pagesize () instead of the
2599         PAGESIZE constant.
2600
2601         * aot-runtime.c (load_aot_module): Get rid of another mprotect call.
2602
2603 2009-05-03  Martin Baulig  <martin@ximian.com>
2604
2605         * debug-debugger.c (debugger_insert_source_breakpoint): Don't call
2606         mono_debugger_insert_method_breakpoint() since the class init
2607         handler we're inserting at the top of the method already gives us
2608         a notification.
2609
2610 2009-04-30  Zoltan Varga  <vargaz@gmail.com>
2611
2612         * decompose.c (mono_decompose_long_opts): Move the implementation of LNEG
2613         to mono_arch_decompose_long_opts () for x86 and arm.
2614
2615 2009-04-29  Zoltan Varga  <vargaz@gmail.com>
2616
2617         * mini-codegen.c (mono_regstate_alloc_int): Use __x86_64__ instead of
2618         TARGET_AMD64 here.
2619
2620 2009-04-28  Zoltan Varga  <vargaz@gmail.com>
2621
2622         * *.h *.c: Use TARGET_<ARCH> defines instead of __<arch>__ defines in the
2623         JIT code.
2624
2625 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
2626
2627         * aot-runtime.c (mono_aot_create_specific_trampoline): Add a stat for the
2628         number of trampolines used in full-aot mode.
2629
2630         * aot-compiler.c: Add an ntrampolines option to set the number of 
2631         trampolines emitted in full-aot mode.
2632
2633 2009-04-27  Zoltan Varga  <vargaz@gmail.com>
2634
2635         * mini-llvm.c (mono_llvm_emit_method): Implement OP_CHECK_THIS using
2636         a volatile load. Get rid of get_tempname (), llvm assigns names
2637         automatically.
2638
2639         * mini-llvm-cpp.cpp (mono_llvm_build_volatile_load): New instruction
2640         builder function.
2641
2642         * mini-llvm.c (mono_llvm_emit_method): Don't call LLVMGetParam on
2643         a value.
2644
2645         * abcremoval.c (REPORT_ABC_REMOVAL): Don't output messages at verbose
2646         level 1.
2647
2648         * mini-codegen.c (mono_local_regalloc): Prevent sreg1/dreg to be allocated
2649         to the same register as a fixed sreg2. Fixes #497271.
2650
2651         * iltests.il.in: Add a new test.
2652
2653 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
2654
2655         * mini-amd64.c: Use moves instead of pushes for passing arguments on the
2656         stack, since pushes complicate exception handling.
2657
2658         * exceptions-amd64.c (mono_arch_find_jit_info): Don't pop the arguments of
2659         the stack if they are passed using moves.
2660
2661         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
2662
2663         * method-to-ir.c (mono_method_to_ir): Disable fast virtual generic methods
2664         when using llvm.
2665
2666         * mini-llvm.c (mono_llvm_emit_method): Call jit icall wrappers, not the 
2667         icalls themselves. Convert arguments of FCOMPARE. Convert the destination
2668         of FMOVE if it is an R4.
2669
2670 2009-04-25  Zoltan Varga  <vargaz@gmail.com>
2671
2672         * mini-ops.h: Add OP_LLVM_OUTARG_VT opcode.
2673
2674         * mini.h (LLVMCallInfo): New structure to store calling convention 
2675         information for the LLVM back end similar to the CallInfo structures in 
2676         the back-ends.
2677
2678         * mini-amd64.c (mono_arch_get_llvm_call_info): New arch function to return
2679         call information in a format usable by LLVM.
2680         (mono_arch_emit_call): Move the LLVM handling code to mono_llvm_emit_call ().
2681
2682         * method-to-ir.c (mono_emit_call_args): Emit calls using 
2683         mono_llvm_emit_call () when compiling using LLVM.
2684
2685         * mini-llvm.c: Implement support for passing/receiving valuetypes. Add
2686         comments to all functions. Fix memory leaks. Add a public init/cleanup
2687         function.
2688
2689         * mini.c: Call the llvm init/cleanup functions in mini_init()/cleanup().
2690
2691         * method-to-ir.c (handle_array_new): Disable llvm when calling the vararg
2692         mono_array_new_va () jit icall.
2693         
2694 Fri Apr 24 16:44:08 CEST 2009 Paolo Molaro <lupus@ximian.com>
2695
2696         * Makefile.am, genmdesc.c, genmdesc.pl: tiny refactor to allow
2697         multiple machine description files to be specified.
2698         * mini-ops.h: fixes for cross-compilation.
2699
2700 2009-04-22  Miguel de Icaza  <miguel@novell.com>
2701
2702         * aot-runtime.c (make_writable): Use mono_mprotect to simplify
2703         some porting work.
2704
2705 2009-04-22  Zoltan Varga  <vargaz@gmail.com>
2706
2707         * method-to-ir.c (mono_method_to_ir): Force init_locals to be TRUE
2708         to prevent asserts in various passes. Fixes #497220.
2709
2710 2009-04-21  Zoltan Varga  <vargaz@gmail.com>
2711
2712         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove
2713         a racy assert.
2714
2715         * aot-compiler.c aot-runtime.c: Emit the unwind info into a separate
2716         table to avoid duplicates.
2717
2718         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
2719         
2720         * aot-compiler.c (emit_method_code): Avoid writing symbols if the nodebug
2721         option is used.
2722
2723 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
2724
2725         * mini.c (mini_method_verify): Fail fulltrust code if the exception
2726         is for method or field access.
2727
2728 2009-04-20  Zoltan Varga  <vargaz@gmail.com>
2729
2730         * mini-llvm-cpp.cpp (mono_llvm_dump_value): New helper function to print
2731         a Value to stdout.
2732
2733         * mini-llvm.c (mono_llvm_emit_method): Use it.
2734         
2735         * mini-llvm.c (type_to_llvm_type): Fix the mapping of enums.
2736         (mono_llvm_emit_method): Add support for CAS. Fix handling of CSET opcodes
2737         on volatile values.
2738
2739         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add support for 
2740         synchronized methods.
2741
2742         * mini.c (mini_method_compile): Disable LLVM for dynamic methods.
2743
2744         * mini.c (mini_method_compile): Enable ABCREM when running with LLVM.
2745
2746         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOADI4_MEM/
2747         OP_LOADI8_MEM.
2748
2749         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add a MONO_LLVM env variable
2750         allowing some options to be set dynamically.
2751
2752 2009-04-19  Zoltan Varga  <vargaz@gmail.com>
2753
2754         * mini-llvm.c (mono_llvm_emit_method): Handle compares followed by an
2755         unconditional branch.
2756
2757         * mini.h (MonoTrampolineType): Add new trampoline type 
2758         'MONO_TRAMPOLINE_LLVM_VCALL' which handles virtual calls made from LLVM
2759         compiled code.
2760
2761         * mini-trampolines.c (mono_llvm_vcall_trampoline): New C trampoline 
2762         function.
2763
2764         * mini-trampolines.c (mono_create_llvm_vcall_trampoline): New trampoline
2765         creation function.
2766
2767         * mini.c (mini_init): Avoid using the common vtable trampoline when LLVM
2768         is enabled. Instead, use the llvm vcall trampoline.
2769         
2770         * mini-trampolines.c (mono_get_vcall_slot_addr): New helper function.
2771
2772         * mini-trampolines.c tramp-amd64.c tramp-x86.c: Use it.
2773         
2774         * mini-<ARCH>.c: Get rid of the identical mono_arch_get_vcall_slot_addr ()
2775         functions.
2776
2777         * mini-<ARCH>.h mini-trampolines.c mini.c: Get rid of 
2778         MONO_ARCH_COMMON_VTABLE_TRAMPOLINE, it is supported by all archs.
2779
2780         * mini-ia64.c (mono_arch_lowering_pass): Null out the sregs of the
2781         OP_IA64_CSET opcode.
2782
2783         * mini.c: Fix a warning.
2784
2785         * mini-llvm.c (mono_llvm_emit_method): Convert arguments of SWITCH and
2786         THROW to the appropriate llvm type.
2787
2788 2009-04-18  Zoltan Varga  <vargaz@gmail.com>
2789
2790         * mini.c (mini_method_compile): Add statistics for methods JITted
2791         with/without LLVM.
2792
2793 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
2794
2795         * method-to-ir.c: Fix the computation of ins_sreg_counts for ia64
2796         OP_IA64_CMP_<cond>_IMM opcodes.
2797
2798 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
2799
2800         * mini-llvm.c (emit_cond_system_exception): Implement throwing of
2801         corlib exceptions.
2802
2803         * dwarfwriter.c (mono_dwarf_writer_emit_method): Handle --regression
2804         correctly.
2805
2806         * mini-llvm.c (type_to_llvm_type): Avoid accessing t->data.klass for
2807         GENERICINST.
2808
2809 2009-04-17  Atsushi Enomoto  <atsushi@ximian.com>
2810
2811         * mini-exceptions.c : add thread id to EXCEPTION trace message.
2812
2813 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
2814
2815         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Fix AOT
2816         support.
2817
2818         * tramp-x86.c (mono_arch_get_unbox_trampoline): Implement static
2819         rgctx invoke trampolines for x86.
2820
2821         * mini-x86.c (mono_arch_output_basic_block): Add a few nops before
2822         indirect calls to simplify get_vcall_slot_addr (). Fixes #494567.
2823         (mono_arch_get_vcall_slot): Simplify this.
2824
2825 2009-04-16  Zoltan Varga  <vargaz@gmail.com>
2826
2827         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Move the calls to
2828         mono_debug_add_delegate_trampoline () to get_delegate_invoke_impl ().
2829
2830 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
2831
2832         * aot-compiler.c tramp-arm.c mini-arm.c: Implement static rgctx 
2833         trampolines for ARM. Add full-aot support for delegate invokes for ARM.
2834
2835         * mini-trampolines.c (mono_magic_trampoline): Fix the build.
2836
2837         * liveness.c (visit_bb): Remove a needless assert.
2838
2839 2009-04-13  Zoltan Varga  <vargaz@gmail.com>
2840
2841         * mini-trampolines.c (mono_create_delegate_trampoline): Delegate the
2842         full aot support to the arch specific code.
2843
2844         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Add full-aot support.
2845
2846         * aot-compiler.c (emit_trampolines): Emit delegate invoke impl trampolines.
2847
2848         * aot-compiler.c (emit_named_code): Rename this to 'emit_trampoline'.
2849         
2850         * mini-amd64.c (mono_arch_get_delegate_invoke_impls): New function to
2851         collect information about the delegate invoke impl trampolines.
2852
2853         * mini.h (MonoAotTrampInfo): New structure collecting the information needed
2854         to save trampolines during full-aot mode.
2855
2856         * mini-trampolines.c (mono_create_static_rgctx_trampoline): New trampoline
2857         creation function which returns a trampoline which sets the rgctx
2858         argument.
2859         (mono_magic_trampoline): Use the rgctx trampoline instead of an rgctx
2860         wrapper if possible.
2861         (mono_delegate_trampoline): Ditto.
2862
2863         * mini.c (mono_jit_runtime_invoke): Ditto.
2864
2865         * tramp-amd64.c: Add an implemention of static rgctx trampolines for AMD64.
2866         
2867         * aot-compiler.c aot-runtime.c: Add support for static rgctx trampolines.
2868
2869         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
2870         
2871 2009-04-12  Zoltan Varga  <vargaz@gmail.com>
2872
2873         * mini-ia64.c (mono_arch_lowering_pass): Use NULLIFY_INS instead of
2874         just setting the opcode to OP_NOP.
2875
2876 2009-04-11  Zoltan Varga  <vargaz@gmail.com>
2877
2878         * mini.c (mini_method_compile): Put the last change inside an 
2879         #ifdef MONO_ARCH_HAVE_LIVERANGE_OPS.
2880         
2881         * mini.c (mini_method_compile): Disable sharing of stack slots/registers
2882         and extend live ranges to cover the whole method when using xdb.
2883
2884         * jit-icalls.c (ldvirtfn_internal): Avoid creating rgctx wrappers here,
2885         do it in the trampolines.
2886
2887         * mini-trampolines.c (mono_magic_trampoline): Add an rgctx wrapper if
2888         needed.
2889
2890         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
2891         
2892         * method-to-ir.c (mono_method_to_ir): Avoid using the fast virtual method
2893         call code in full-aot mode since IMT is disabled there.
2894         (mono_method_to_ir): Inline ldfld wrappers which return structures too, the
2895         new JIT no longer has that restriction.
2896
2897         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
2898
2899         * aot-compiler.c (emit_extra_methods): Emit the wrapper method names in
2900         a more compact format.
2901         (mono_aot_wrapper_name): New function to return a unique name for a
2902         wrapper method, also used by the AOT runtime.
2903
2904         * aot-runtime.c (find_extra_method_in_amodule): Update after the changes to
2905         aot-compiler.c.
2906
2907         * aot-compiler.c (add_generic_class): Add the helper methods from T[]
2908         when a ICollection<T> etc is encountered.
2909         (add_generic_instances): Process method arguments/locals too.
2910         (emit_trampolines): Emit unbox trampolines for extra methods too. Shorten
2911         trampoline names.
2912
2913         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle extra methods too.
2914         
2915 2009-04-10  Zoltan Varga  <vargaz@gmail.com>
2916
2917         * aot-compiler.c: Disable the AOT compiler if the JIT is disabled.
2918
2919         * dwarfwriter.c (emit_type): Emit byref to reference types as 'int' for now.
2920
2921         * decompose.c (mono_decompose_opcode): Make this return a MonoInst*
2922         representing the result of the decomposition. Nullify instructions
2923         instead of setting them to OP_NOP since nops can't have registers
2924         set.
2925
2926 2009-04-09  Zoltan Varga  <vargaz@gmail.com>
2927
2928         * aot-compiler.c (mono_compile_assembly): Split this huge function into
2929         smaller parts. Add 'nodebug' option to prevent generation of DWARF debug
2930         info. Strip 'mapping symbols' on ARM.
2931
2932         * iltests.il.in (test_0_fconv_to_i): Disable this on ARM too.
2933         
2934         * genmdesc.pl: Applied patch by Martin Fuzzey (mfuzzey@parkeon.com). Sync
2935         this with the native genmdesc.
2936
2937 2009-04-08  Bill Holmes  <billholmes54@gmail.com>
2938
2939         * aot-runtime.c:  Fixing the MSVC build.
2940
2941         Code is contributed under MIT/X11 license.
2942
2943 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
2944
2945         * mini-llvm.c (mono_llvm_emit_method): Pass i1/i2 arguments as i4 since 
2946         JITted code depends on it.
2947
2948 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
2949
2950         * aot-compiler.c: Use new MonoGenericParam accessors.
2951
2952 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
2953
2954         Reduce memory usage and improve correctness wrt MonoGenericParam
2955         * aot-runtime.c (decode_klass_ref): Simplify generic parameter
2956         handing.  Avoid allocating MonoGenericParams, but use the ones in
2957         the container itself.
2958
2959 2009-04-07  Miguel de Icaza  <miguel@novell.com>
2960
2961         * tasklets.c: Return exceptions in the out argument.
2962
2963 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
2964
2965         * mini-llvm.c (mono_llvm_emit_method): Fix alignment in the LOCALLOC_IMM
2966         opcode. Use pointer types in more places instead of casting them to 
2967         integers.
2968
2969         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Create a pass manager to run
2970         optimizations.
2971         (mono_llvm_optimize_method): New helper function to optimize a method.
2972
2973         * method-to-ir.c (mono_emit_widen_call_res): Extract the call result 
2974         widening code so it could be called from more places.
2975         (mono_method_to_ir): Call mono_emit_widne_call_res () in several more
2976         code paths in the call opcodes.
2977
2978 Mon Apr 6 14:19:54 CEST 2009 Paolo Molaro <lupus@ximian.com>
2979
2980         * exceptions-amd64.c, mini-amd64.h: amd64 support code for continuations.
2981
2982 2009-04-06  Zoltan Varga  <vargaz@gmail.com>
2983
2984         * dwarfwriter.c: Use _ to separate class name 
2985         components as gdb can't handle '.'. Represent reference variables
2986         as 'class <NAME>&'.
2987         
2988         * mini.h (MonoCompile): Add locals_min_stack_offset/locals_max_stack_offset.
2989
2990         * mini-amd64.c (mono_arch_allocate_vars): Save min/max stack offset.
2991         
2992         * mini-gc.c: New file, contains the SGEN GC related parts of the JIT.
2993
2994         * gc-test.cs: New file with GC stack marking tests.
2995         
2996         * mini-arm.c (mono_arch_output_basic_block): Fix int->float conversion of
2997         negative numbers for vfp.
2998
2999         * basic-float.cs: Add a test.
3000         
3001 Mon Apr 6 14:12:10 CEST 2009 Paolo Molaro <lupus@ximian.com>
3002
3003         * exceptions-x86.c, mini-x86.h: x86 support code for continuations.
3004
3005 Mon Apr 6 14:09:53 CEST 2009 Paolo Molaro <lupus@ximian.com>
3006
3007         * tasklets.h, tasklets.c, mini.h, mini.c, Makefile.am: arch-indep
3008         part of tasklet/continuation support.
3009
3010 2009-04-05  Zoltan Varga  <vargaz@gmail.com>
3011
3012         * mini-llvm.c (mono_llvm_emit_method): Move the handling of
3013         amd64 opcodes inside an ifdef.
3014
3015         * dwarfwriter.c: Emit inheritance information for classes, emit fields
3016         of complex types.
3017         
3018         * dwarfwriter.c (emit_type): Emit the class info for classes.
3019
3020 2009-04-04  Zoltan Varga  <vargaz@gmail.com>
3021
3022         * Makefile.am (AM_CXXFLAGS): Add GLIB_CFLAGS to this.
3023
3024         * mini-llvm-cpp.h: New header file for mini-llvm-cpp.cpp.
3025
3026         * mini-llvm.c: Remove unused fields from EmitContext, fix memory leaks.
3027
3028         * ssa.c (mono_ssa_compute): Fix some memory leaks.
3029
3030 2009-04-03  Zoltan Varga  <vargaz@gmail.com>
3031
3032         * mini.c mini-amd64.c method-to-ir.c: Use COMPILE_LLVM in a few more places.
3033
3034         * mini-llvm.c: Update comments.
3035
3036         * mini.h (COMPILE_LLVM): New macro.
3037
3038         * decompose.c (mono_decompose_opcode): Use the COMPILE_LLVM macro.
3039
3040         * ssa.c (mono_ssa_compute): Ditto.
3041         
3042         * unwind.c (mono_unwind_get_ops_from_fde): New helper function to extract
3043         the unwind ops from a DWARF FDE.
3044
3045         * mini-llvm.c: Implement generation of unwind info for LLVM compiled
3046         methods by extracting the dwarf unwind ops from the unwind info generated
3047         by LLVM.
3048         
3049         * mini-llvm.c (mono_llvm_emit_method): Enable support for non-IMT virtual
3050         calls.
3051
3052         * mini-amd64.c (mono_arch_get_vcall_slot): Handle more kinds of the SIB
3053         addressing modes.
3054
3055 2009-04-02  Zoltan Varga  <vargaz@gmail.com>
3056
3057         * Makefile.am (llvm_sources): Enable this.
3058
3059         * mini.c (mini_method_compile): Add support for compiling with LLVM, 
3060         failing back to the JIT if something cannot be handled.
3061
3062         * mini-amd64.c (mono_arch_emit_call): Emit the arguments more simple when
3063         compiling with LLVM.
3064
3065         * decompose.c (mono_decompose_opcode): Avoid decomposing some opcodes when
3066         compiling with LLVM.
3067
3068         * method-to-ir.c (mono_method_to_ir): Avoid decomposing SWITCH when 
3069         compiling with LLVM.
3070
3071         * mini-ops.h: Add a few opcodes needed by LLVM.
3072
3073         * dwarfwriter.c (mono_dwarf_writer_emit_method): Avoid crashes if the method
3074         has no unwind info.
3075
3076         * mini-llvm.c mini-llvm-cpp.cpp: New files containing the experimental llvm
3077         backend.
3078
3079         * mini-arm.c (mono_arch_output_basic_block): Fix the ARM_FPU_NONE build.
3080
3081         * mini-arm.h mini-arm.c cpu-arm.md: Finish VFP support.
3082
3083 2009-04-01  Mark Probst  <mark.probst@gmail.com>
3084
3085         * regalloc.h, mini-codegen.c: Make vassign members gint32 to fix
3086         ridiculously large methods.
3087
3088 2009-03-31  Martin Baulig  <martin@ximian.com>
3089
3090         * debug-debugger.c (debugger_remove_breakpoint): Call
3091         mono_debugger_remove_class_init_callback ().
3092
3093 2009-03-31  Zoltan Varga  <vargaz@gmail.com>
3094
3095         * aot-compiler.c (mono_compile_assembly): Call img_writer_emit_start ()
3096         right before emitting code, not at the start.
3097
3098         * mini.c (mono_postprocess_patches): Extract this into a separate function
3099         from mono_codegen ().
3100
3101         * ssa.c (mono_ssa_compute): Set ins->klass for every PHI node, handle
3102         byref types correctly.
3103
3104 2009-03-30  Zoltan Varga  <vargaz@gmail.com>
3105
3106         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix a crash introduced
3107         by the last change.
3108
3109 2009-03-29  Zoltan Varga  <vargaz@gmail.com>
3110
3111         * mini-amd64.c (mono_arch_output_basic_block): Emit a few nops before 
3112         indirect calls, this avoids problems where get_vcall_slot () would get
3113         confused by the native code for the instruction preceeding the call.
3114         (mono_arch_get_vcall_slot): Simplify this.
3115         (mono_arch_emit_imt_argument): Remove this, it is no longer needed.
3116
3117         * mini-ops.h: Fix the definitions of the OP_IA64 opcodes, since the local
3118         register allocator now seems to depend on them instead of the data in
3119         cpu-<ARCH>.md.
3120
3121         * mini.c (mini_method_compile): Throw the correct type of exception if
3122         mono_method_get_header () fails because of a loading error.
3123
3124 2009-03-28  Zoltan Varga  <vargaz@gmail.com>
3125
3126         * mini.c (mini_method_compile): Clear the loader error if the method
3127         header cannot be decoded.
3128
3129         * mini-trampolines.c (mono_magic_trampoline): Handle generic virtual 
3130         interface methods on proxies correctly.
3131
3132         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix handling of the
3133         this argument for vtype methods. Add precise liveness info for arguments.
3134
3135         * mini-codegen.c (mono_print_ins_index): Print the vreg of the
3136         LIVERANGE_START/END opcodes.
3137
3138         * method-to-ir.c (mono_spill_global_vars): Fix liverange calculation
3139         for arguments and values in registers.
3140
3141 2009-03-27  Zoltan Varga  <vargaz@gmail.com>
3142
3143         * method-to-ir.c (mono_method_to_ir): Disable tail calls for calls which
3144         return a valuetype. Fixes #487518.
3145
3146         * iltests.il: Add a test.
3147         
3148         * aot-compiler.c: Use mono_thread_create () to create helper threads.
3149
3150         * mini-trampolines.c (mono_delegate_trampoline): Handle static delegates
3151         closed over a null reference correctly.
3152
3153 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
3154
3155         * method-to-ir.c (mono_handle_global_vregs): Fix support for ternary ops.
3156
3157 2009-03-25  Mark Probst  <mark.probst@gmail.com>
3158
3159         * mini-codegen.c (mono_local_regalloc): Don't let sregs get
3160         allocated to the same registers as fixed sregs.
3161
3162 2009-03-24  Mark Probst  <mark.probst@gmail.com>
3163
3164         * mini-ops.h: New ternary ATOMIC_CAS ops replace the old
3165         ATOMIC_CAS_IMM ops.
3166
3167         * method-to-ir.c: Handle more cases for
3168         Interlocked.CompareExchange.
3169
3170         * cpu-x86.md, mini-x86.c, mini-x86.h, cpu-amd64.md, mini-amd64.c,
3171         mini-amd64.h, cpu-ppc.md, cpu-ppc64.md, mini-ppc.c, mini-ppc.h:
3172         ATOMIC_CAS implementations for x86, AMD64, PPC and PPC64.
3173
3174 2009-03-23  Zoltan Varga  <vargaz@gmail.com>
3175
3176         * aot-runtime.c (decode_method_ref): Fix a warning.
3177
3178         * unwind.c (mono_unwind_frame): Ditto.  
3179
3180 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
3181
3182         * aot-compiler.c (arch_emit_unbox_trampoline): Fix the binary writer support.
3183         (mono_compile_assembly): Enable the binary writer for full-aot as well.
3184
3185         * image-writer.c (do_reloc): Add support for the JUMP24 relocation,
3186         fix the handling of large values in the ALU_PC_G0_NC relocation.
3187
3188 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
3189
3190         * local-propagation.c method-to-ir.c local-propagation.c: Fix warnings.
3191
3192 2009-03-22  Mark Probst  <mark.probst@gmail.com>
3193
3194         * method-to-ir.c (mono_spill_global_vars): Support for ternary
3195         ops.
3196
3197 2009-03-22  Mark Probst  <mark.probst@gmail.com>
3198
3199         * method-to-ir.c: MINI_OP3 needs a comma.
3200
3201         * method-to-ir.c, mini.h, mini.c: Remove
3202         mono_init_op_sreg_counts ().
3203
3204 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
3205
3206         * mini-arm.c (mono_arch_output_basic_block): Fix aot support in
3207         OP_JMP.
3208         
3209         * mini-arm.c (mono_arch_build_imt_thunk): Disable the !fail_tramp
3210         assertion.
3211
3212         * mini-ops.h: Fix arguments of the MEMINDEX opcodes.
3213
3214         * mini-amd64.c (mono_arch_build_imt_thunk): Simplify the fail handling
3215         code somewhat.
3216
3217 2009-03-21  Mark Probst  <mark.probst@gmail.com>
3218
3219         * cfold.c, cprop.c, decompose.c, genmdesc.c, helpers.c, ir-emit.h,
3220         liveness.c, local-propagation.c, method-to-ir.c, mini-codegen.c,
3221         mini.c, mini.h, simd-intrinsics.c, ssa.c: Support for ternary IR
3222         operations.
3223
3224 2009-03-20  Zoltan Varga  <vargaz@gmail.com>
3225
3226         * driver.c: Change location of gc_wrapper.h.
3227
3228         * method-to-ir.c (mono_find_block_region): Handle try clauses nested
3229         inside finally clauses correctly. Fixes #485721.
3230
3231         * mini.c (mono_find_spvar_for_region): This needs to handle try regions
3232         after the change above.
3233
3234         * exceptions.cs: Add a test.
3235         
3236 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
3237
3238         * unwind.c (mono_unwind_ops_encode): Increase the size of the encode buffer.
3239
3240         * mini-amd64.c (mono_arch_emit_epilog): Remove the encoding of stack size
3241         into cfg->used_int_regs, it is not needed with the dwarf unwinder.
3242         (mono_arch_compute_omit_fp): Remove the emit_epilog () workaround.
3243
3244         * mini-amd64.c (mono_arch_compute_omit_fp): Add another check to avoid hitting
3245         the stack_alloc_size < (1 << 16) assertion in emit_prolog ().
3246
3247 2009-03-19  Sebastien Pouliot  <sebastien@ximian.com>
3248
3249         * method-to-ir.c: Allow CoreCLR to throw FieldAccessException. 
3250         Simplify logic for ensure_method_is_allowed_to_call_method. 
3251         Handle wrappers on callers.
3252
3253 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
3254
3255         * Makefile.am (fullaotcheck): Don't run the generics tests, some of
3256         them don't run yet.
3257
3258         * basic-simd.cs: Fix the names of some test methods.
3259
3260 2009-03-18  Geoff Norton  <gnorton@novell.com>
3261
3262         * mini.c: Only chain sigfpe if it wasn't generated in mangaed code.
3263
3264 2009-03-18  Zoltan Varga  <vargaz@gmail.com>
3265
3266         * dwarfwriter.c (token_handler): Fix a crash caused by the last change.
3267
3268 2009-03-17  Jb Evain  <jbevain@novell.com>
3269
3270         * driver.c: remove now uneeded call to mono_gc_base_init before
3271         mono_profiler_load.
3272
3273 2009-03-17  Jb Evain  <jbevain@novell.com>
3274
3275         * dwarfwriter.c (token_handler): handle more cases.
3276
3277 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com> 
3278
3279         * method-to-ir.c: Remove more dead code (that was required only
3280         because of method_is_safe). Fix compiler warnings.
3281
3282 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com>
3283
3284         * method-to-ir.c: Remove unneeded/useless method_is_safe
3285         http://lists.ximian.com/archives/public/mono-devel-list/2009-March/031404.html
3286
3287 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
3288
3289         * mini.c (mini_method_compile): Print the method been compiled with
3290         verbose level 1 instead of 3 as this helps a lot debugging JIT crashes
3291         for people not familiar with the runtime.
3292
3293 2009-03-17  Zoltan Varga  <vargaz@gmail.com>
3294
3295         * mini-exceptions.c (get_generic_info_from_stack_frame): Avoid returning
3296         a managed object which is later put into a GList. Return its class instead.
3297
3298         * mini.c (mono_allocate_stack_slots_full): Avoid sharing ref and non-ref
3299         stack slots when using sgen.
3300
3301 2009-03-16  Zoltan Varga  <vargaz@gmail.com>
3302
3303         * dwarfwriter.c (emit_line_number_info): Really fix the eglib build.
3304
3305 2009-03-14  Zoltan Varga  <vargaz@gmail.com>
3306
3307         * local-propagation.c (reg_is_softreg_no_fpstack): Use >= instead of
3308         > so it works on the first vreg as well.
3309
3310 2009-03-13  Zoltan Varga  <vargaz@gmail.com>
3311
3312         * dwarfwriter.c (emit_line_number_info): Disable an assert which seems to
3313         trigger randomly.
3314
3315         * aot-compiler.c: Get rid of xdebug_lock (), use the loader lock instead.
3316         
3317         * dwarfwriter.c (emit_line_number_info): Fix eglib build as eglib doesn't
3318         implement GArray.
3319
3320 2009-03-12  Zoltan Varga  <vargaz@gmail.com>
3321
3322         * dwarfwriter.c (emit_line_number_info): Optimize the computation of the
3323         native->IL offset mapping.
3324
3325 2009-03-11  Zoltan Varga  <vargaz@gmail.com>
3326
3327         * mini-amd64.c (mono_arch_output_basic_block): Fix % 1. Fixes #484323.
3328
3329         * basic.cs: Add a test.
3330
3331 2009-03-11  Mark Probst  <mark.probst@gmail.com>
3332
3333         * mini-x86.c (mono_arch_output_basic_block): Use different
3334         registers in case the ones we want to overwrite are used by the
3335         other operand.  Fixes regression in #480807.
3336
3337 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
3338
3339         * aot-compiler.c (mono_compile_assembly): Make the output less verbose.
3340
3341         * dwarfwriter.c (emit_line_number_info): The line number info for
3342         IL code was off by one. Fix that.
3343
3344         * mini-s390x.c: Fix support for vtypes whose addresses are passed on the
3345         stack.
3346
3347 2009-03-09  Mark Probst  <mark.probst@gmail.com>
3348
3349         Contributed under the terms of the MIT/X11 license by Steven
3350         Munroe <munroesj@us.ibm.com>.
3351
3352         * mini-ppc.c: Correct handling of OP_LOADI4_MEMINDEX for ppc64.
3353         Fixes #483462.
3354
3355 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
3356
3357         * dwarfwriter.c (token_handler): Decode method references in non-wrappers
3358         as well.
3359
3360 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
3361
3362         * method-to-ir.c (mono_method_to_ir): Check for type load exceptions in
3363         the delegate ctor handling code. Fixes #482638.
3364         
3365         * method-to-ir.c (mini_emit_memset): Fix the handling of size '3'. Fixes
3366         #481458.
3367
3368         * iltests.il.in: Add a test.
3369         
3370         * mini-darwin.c (mono_chain_signal): Remove this, it is already in
3371         mini-posix.c.
3372
3373 2009-03-05  Mark Probst  <mark.probst@gmail.com>
3374
3375         * mini-trampolines.c (mono_create_jump_trampoline): If the method
3376         is shared generic code, return the trampoline, even if the method
3377         has already been compiled.  Fixes #479763.
3378
3379         * mini.c, mini.h: New function
3380         mono_jit_find_compiled_method_with_jit_info() which is the same as
3381         mono_jit_find_compiled_method() but also returns the jit info.
3382
3383 2009-03-05  Mark Probst  <mark.probst@gmail.com>
3384
3385         * method-to-ir.c (mono_method_to_ir): Only force the vtable var
3386         for methods which actually have one.  For all other methods, make
3387         sure the this argument var is live the whole method.
3388
3389         * mini.c (mini_method_compile): Every shared method has a
3390         this/vtable/mrgctx info.  Fixes #480807.
3391
3392 2009-03-05  Mark Probst  <mark.probst@gmail.com>
3393
3394         * mini-ppc.c (mono_arch_build_imt_thunk): Add support for mixed
3395         generic/imt thunks where some entries branch through the vtable,
3396         while other entries branch directly.
3397
3398 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
3399
3400         * mini-darwin.c (mono_chain_signal): Define this to fix the build.
3401
3402         * mini-windows.c: Ditto.
3403         
3404         * mini.c (mono_jit_runtime_invoke): Speed up the invoking of parameterless
3405         ctors.
3406
3407 2009-03-04  Zoltan Varga  <vargaz@gmail.com>
3408
3409         * dwarfwriter.c (emit_line_number_info): Add some debug code to help track
3410         down an assert.
3411
3412 2009-03-04  Mark Probst  <mark.probst@gmail.com>
3413
3414         * method-to-ir.c: Don't inline methods that use JMP.  Fixes
3415         #481403.
3416
3417 2009-03-04  Mark Probst  <mark.probst@gmail.com>
3418
3419         * exceptions-x86.c: Include debug-mini.h - fixes build.
3420
3421 2009-03-04  Martin Baulig  <martin@ximian.com>
3422
3423         * debug-mini.c: Clean up the exception API and add documentation.
3424         (mono_debugger_handle_exception): New public method; this is
3425         called when throwing an exception or encountering an unhandled one.
3426         (mono_debugger_call_exception_handler): Formerly known as
3427         mono_debugger_handle_exception(); this is used to tell the
3428         debugger that we're about to invoke an exception handler.
3429
3430 2009-03-04  Martin Baulig  <martin@ximian.com>
3431
3432         * debug-mini.c (mono_debugger_runtime_invoke): Moved here from
3433         ../metadata/mono-debug-debugger.c; save and reset exception state.
3434
3435 2009-03-02  Martin Baulig  <martin@ximian.com>
3436
3437         * debug-mini.c: Moved the debugger exception handling here from
3438         ../metadata/mono-debug-debugger.c.
3439
3440         * debug-mini.h
3441         (MonoDebuggerExceptionAction): New exception typedef.
3442
3443         * debug-mini.c
3444         (MonoDebuggerThreadInfo): Added `MonoObject *last_exception'.
3445
3446         * exceptions-amd64.c
3447         (mono_amd64_throw_exception): Use the new debugger exception
3448         handling code.
3449
3450         * mini-exceptions.c
3451         (mono_handle_exception_internal): Don't call
3452         mono_debugger_unhandled_exception() here.
3453
3454 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
3455
3456         * mini.c aot-compiler.c: Update after the changes to 
3457         mono_marshal_get_runtime_invoke ().
3458
3459         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): 
3460         Virtual generic methods might not have method->slot set, work around
3461         that.
3462
3463         * generics.cs: Add a test.
3464
3465 2009-03-02  Geoff Norton  <gnorton@novell.com>
3466
3467         * mini.c:
3468         * driver.c: Allow signal chaining of SIGFPE as well.
3469
3470 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
3471
3472         * mini-trampolines.c (mono_generic_virtual_remoting_trampoline): Update
3473         this since it now receives the method not its generic context in the
3474         IMT reg.
3475
3476         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for mixed
3477         generic/imt thunks where some entries branch through the vtable, while
3478         other entries branch directly.
3479
3480         * mini-x86.c (mono_arch_build_imt_thunk): Ditto.
3481
3482         * method-to-ir.c (mono_method_to_ir): Enable fast virtual generic call 
3483         support for interface methods as well.
3484
3485         * mini-trampolines.c: Add support for virtual generic methods in interfaces
3486         using the normal IMT thunks.
3487
3488         generics.cs: Add new tests.
3489         
3490         * method-to-ir.c (mono_method_to_ir): Pass the method instead of
3491         the generic inst to the generic imt thunks. This fixes AOT support, 
3492         improves consistency with the normal IMT thunks, and makes it easier to
3493         add support for interface generic virtual methods later.
3494
3495         * mini-trampolines.c (mono_magic_trampoline): Ditto.    
3496         
3497 2009-02-28  Zoltan Varga  <vargaz@gmail.com>
3498
3499         * driver.c (mono_set_signal_chaining): New public API function to enable
3500         signal chaining on POSIX platforms.
3501
3502         * mini-posix.c mini.c: Applied a variant of a patch by Simon Rowland 
3503         (si@lindenlab.com) to implement signal chaining. The original patch was
3504         contributed under the MIT X/11 license:
3505         https://bugzilla.novell.com/show_bug.cgi?id=318894
3506
3507 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
3508
3509         * iltests.il.in (test_0_implicit_float_to_double_conversion): Disable this
3510         too until it can be made to run on amd64.
3511
3512 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
3513
3514         * mini-x86.c (mono_arch_get_this_arg_from_call): Avoid expensive calls
3515         to  get_generic_context_from_code () + get_call_info () if possible.
3516
3517 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
3518
3519         * mini-exceptions.c (mono_handle_native_sigsegv): Implement the
3520         suspend-on-sigsegv functionality.
3521
3522         * mini.c (mini_parse_debug_options): Add a new 'suspend-on-sigsegv' option
3523         to suspend when a native SIGSEGV is received. This is useful for debugging
3524         crashes which don't happen under gdb, since a live process contains more
3525         information than a core file.
3526
3527         * mini-exceptions.c (mono_print_thread_dump): Use 
3528         MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX instead of platform defines.
3529
3530         * mini-x86.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): New define.
3531
3532         * mini-amd64.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): Ditto.
3533         
3534         * basic-float.cs: Disable the tests which currently fail on amd64.
3535
3536         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass a non-null 
3537         value to mono_arch_patch_callsite () to fix crashes.
3538         
3539         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix a warning.
3540
3541 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
3542
3543         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Replace the
3544         nop code by patching the call address to point to the nullified class init
3545         trampoline, as the former does not seem to be safe on SMP machines.
3546
3547 2009-02-23  Mark Probst  <mark.probst@gmail.com>
3548
3549         * mini-ops.h: Fix the argument types for a few x86 opcodes where
3550         they were wrong.
3551
3552 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
3553
3554         * basic-float.cs basic-calls.cs: Fix warnings.
3555
3556 2009-02-22  Mark Probst  <mark.probst@gmail.com>
3557
3558         * tramp-ppc.c (mono_arch_create_trampoline_code): Store the
3559         correct frame pointer in the LMF.  Should fix #478394.
3560
3561 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
3562
3563         * Makefile.am (fullaotcheck): Copy Mono.Simd.dll as well.
3564
3565         * image-writer.c: Make the binary writer less verbose.
3566
3567 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
3568
3569         * method-to-ir.c (mono_method_to_ir): Don't assert if string ctors
3570         are called from runtime invoke wrappers.
3571
3572 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
3573
3574         * cpu-ppc.md (store_memindex): Increase the size of this.
3575
3576 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
3577
3578         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
3579
3580         * cpu-x86.md: Fix the sizes for long_conv_to_r_un and long_conv_to_r_un_2.
3581
3582         * mini-x86.c (mono_arch_output_basic_block): Use only 64bits of precision for
3583         OP_LCONV_TO_R_UN.
3584
3585         Last fix for of #467201.
3586
3587
3588 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
3589
3590         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
3591
3592         * cpu-x86.md: Fix the sizes for fcall(_reg,_membase), long_conv_to_r4_2
3593         and long_conv_to_r8_2:
3594
3595         Fixed part of #467201.
3596
3597 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
3598
3599         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
3600
3601         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of int to float
3602         conversion to 32 bits.
3603
3604         * cpu-x86.md: Increase the size of int_conv_to_r4.
3605
3606         * basic-float.cs: Add a test for this.
3607
3608         Fixed part of #467201.
3609
3610 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
3611
3612         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
3613
3614         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of long to double
3615         conversion to 64 bits.
3616
3617         * basic-float.cs: Add a test for this.
3618
3619         Fixed part of #467201.
3620
3621 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
3622
3623         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
3624
3625         * mini-x86.c (emit_move_return_value): Don't reduce precision of functions returning float.
3626         This behavior is compatible with MS.
3627
3628         * iltest.il.in: Add a test for this.
3629
3630         Fixed part of #467201.
3631
3632 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
3633
3634         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
3635
3636         * mini-x86.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_R4, it must
3637         change the precision of the value.
3638
3639         * cpu-x86.md: Define len for float_conv_to_r4.
3640
3641         * basic-float.cs: Add a test for this.
3642
3643         Fixed part of #467201.
3644
3645 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
3646
3647         * mini.c: Adjust locking order to the new semantics where the loader lock
3648         comes first.
3649
3650 2009-02-18  Rodrigo Kumpera  <rkumpera@novell.com>
3651
3652         * aot-runtime.c:
3653         * mini-amd64.c:
3654         * mini-arm.c:
3655         * mini-ia64.c:
3656         * mini-mips.c:
3657         * mini-ppc.c:
3658         * mini-sparc.c:
3659         * mini-trampolines.c:
3660         * mini-x86.c:
3661         * mini.c:
3662         * tramp-alpha.c:
3663         * tramp-amd64.c:
3664         * tramp-arm.c:
3665         * tramp-hppa.c:
3666         * tramp-ia64.c:
3667         * tramp-mips.c:
3668         * tramp-ppc.c:
3669         * tramp-s390.c:
3670         * tramp-s390x.c:
3671         * tramp-sparc.c:
3672         * tramp-x86.c: Use mono_domain_code_* functions instead of using MonoDomain::code_mp directly.
3673
3674 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
3675
3676         * mini-codegen.c (mono_local_regalloc): Remove a ! from if (!dest_sreg1)
3677         as it is incorrect.
3678
3679 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
3680
3681         * aot-compiler.c (add_generic_class): Only add rgctx invoke wrappers
3682         for cctors if needed.
3683
3684 2009-02-17  Mark Probst  <mark.probst@gmail.com>
3685
3686         * mini-ppc.c: Fix build on Darwin.
3687
3688 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
3689
3690         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Use 2 as the DWARF
3691         version instead of 3 as valgrind doesn't like version 3.
3692
3693         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
3694
3695         * aot-compiler.c (mono_aot_method_hash): New function to return a hash
3696         usable for hashing methods.
3697         (emit_extra_methods): Use the new hash to avoid putting every method in the
3698         same hash bucket.
3699
3700         * aot-runtime.c (find_extra_method_in_amodule): Use the new hash.
3701
3702         * aot-runtime.c (can_method_ref_match_method): New function to quickly check
3703         whenever a method ref could match a method.
3704         
3705         * aot-runtime.c (load_image): Revert the previous change, it causes an AOT
3706         test to fail.
3707         
3708         * aot-runtime.c (find_extra_method_in_amodule): Add a cache for decoded 
3709         methods refs.
3710
3711         * aot-runtime.c (load_image): Pass our basedir to mono_assembly_load.
3712
3713         * aot-compiler.c (emit_exception_debug_info): Bump the maximum size of
3714         the encoding buffer.
3715
3716         * method-to-ir.c (mono_method_check_inlining): Avoid calling 
3717         mono_method_get_header () on inflated methods as an optimization.
3718
3719 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
3720
3721         * ssa.c (fold_ins): Fix another crash if the instruction following the
3722         switch was optimized away.
3723
3724 2009-02-16  Mark Probst  <mark.probst@gmail.com>
3725
3726         Contributed under the terms of the MIT/X11 license by Steven
3727         Munroe <munroesj@us.ibm.com>.
3728
3729         * mini-ppc.c, mini-ppc.h: Implement TLS for PPC64.
3730
3731 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
3732
3733         * mini.c method-to-ir.c mini-trampolines.c aot-runtime.c: Remove locking
3734         around the mono_domain_alloc calls, it is now done by the functions
3735         themselves.
3736
3737         * aot-compiler.c (compile_method): Only add wrappers referenced by
3738         the method if compiling with full AOT.
3739         (mono_compile_assembly): Error out if --aot=full is specified on
3740         a platform where it is not supported.
3741
3742         * aot-compiler.c (emit_trampolines): Emit generic class init trampolines
3743         on ARM too.
3744
3745         * tramp-arm.c (mono_arch_create_generic_class_init_trampoline_full): Add
3746         AOT support.
3747
3748         * aot-runtime.c (load_named_code): Handle 
3749         mono_arm_throw_exception_by_token.
3750
3751         * mini-arm.h: Add declaration of mono_arm_throw_exception_by_token.
3752
3753         * image-writer.c (asm_writer_emit_pointer_unaligned): Make this really
3754         unaligned.
3755
3756         * Makefile.am (fullaotcheck): Exit if a test fails.
3757
3758         * aot-compiler.c (mono_compile_assembly): Use the ASM writer for full aot
3759         on ARM.
3760         (mono_compile_assembly): Handle the assembler failing.
3761
3762         * image-writer.c (asm_writer_emit_section_change): Handle ARM gas not
3763         accepting subsections of .bss.
3764
3765         * ssa.c (visit_inst): Fix a crash if the instruction following a switch
3766         was optimized away.
3767
3768         * aot-compiler.c: Remove some unused includes.
3769         
3770         * aot-compiler.c (MonoAotCompile): Remove some unused fields which are
3771         now in MonoImageWriter.
3772
3773         * mini-x86.c (mono_arch_get_vcall_slot): Handle yet another
3774         code sequence which matches a non-virtual call. Fixes #472654.
3775
3776 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
3777
3778         * aot-compiler.c: Use xdebug_lock ()/unlock () macros for locking in the
3779         xdebug code.
3780         
3781         * aot-compiler.c: Make the xdebug code not depend on the AOT compiler,
3782         use the image/dwarf writers directly.
3783
3784         * image-writer.c (struct _MonoImageWriter): Remove the unused 'image'
3785         field.
3786
3787         * aot-compiler.c (MonoAotCompile): Remove fields which are now in
3788         MonoDwarfWriter.
3789
3790         * image-writer.h: Fix some typos.
3791
3792         * dwarfwriter.h dwarfwriter.c: New files.
3793         
3794         * aot-compiler.c: Extract the DWARF info writing functionality into a 
3795         separate module.
3796
3797         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add a 'out_unwind_ops'
3798         argument to return unwind info.
3799
3800         * tramp-arm.c (mono_arch_create_trampoline_code_full): Ditto.
3801
3802         * aot-compiler.c: Emit unwind info for trampolines in full-aot mode.
3803         
3804         * aot-runtime.c (decode_method_ref): Add a case for 
3805         MONO_AOT_METHODREF_WRAPPER_NAME.
3806
3807         * mini.h: Add constants for the magic numbers used in encode_method_ref ()
3808         for AOT.
3809
3810         * aot-compiler.c (encode_method_ref): Use the new constants.
3811
3812         * aot-runtime.c (decode_method_ref): Ditto.
3813
3814         * aot-compiler.c (compile_method): For generic icalls, queue the wrapper to
3815         be compiled, not the icall itself.
3816
3817 2009-02-14  Zoltan Varga  <vargaz@gmail.com>
3818
3819         * aot-runtime.c (find_extra_method_in_amodule): Avoid decoding wrapper names
3820         using decode_method_ref ().
3821
3822         * method-to-ir.c (mini_emit_ldelema_1_ins): If the array index is a long,
3823         convert it to an in32. Fixes #475859.
3824
3825         * arrays.cs: Add a test.
3826
3827 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
3828
3829         * mini-s390x.c (mono_arch_output_basic_block): Fix the shift amounts in 
3830         OP_LCONV_TO_U2.
3831
3832         * basic-long.cs: Add a test.
3833
3834 2009-02-12  Mark Probst  <mark.probst@gmail.com>
3835
3836         * mini-x86.c, mini-x86.h: Very simple frame pointer removal.  We
3837         remove the frame pointer in leaf methods which don't receive any
3838         arguments, don't throw exceptions and don't do dynamic stack
3839         allocations.
3840
3841 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
3842
3843         * mini-amd64.c (mono_arch_build_imt_thunk): Fix size calculation after
3844         the fail_tramp changes. Hopefully fixes #475132.
3845
3846 2009-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
3847
3848         * method-to-ir.c (mono_emit_method_call_full): Use mono_metadata_signature_dup_mempool
3849         instead of mono_metadata_signature_dup_full.
3850
3851 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
3852
3853         * ssa.c (fold_ins): Use MONO_IS_JUMP_TABLE () and MONO_JUMP_TABLE_FROM_INS ()
3854         for processing jump tables. Fixes #473787.
3855
3856 2009-02-11  Mark Probst  <mark.probst@gmail.com>
3857
3858         * mini-generic-sharing.c: mini_method_get_context() just calls
3859         mono_method_get_context_general() now.
3860
3861         * mini.c, mini.h: Moved get_object_generic_inst(),
3862         construct_object_context_for_method() and
3863         mono_domain_lookup_shared_generic() to metadata/generic-sharing.c.
3864
3865 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
3866
3867         * branch-opts.c (mono_if_conversion): Handle the case where the merged 
3868         basic block fell through to its successor bblock without a branch. Fixes
3869         #474718.
3870
3871         * iltests.il.in: Add a test.
3872         
3873         * aot-compiler.c (encode_method_ref): Encode methods of array types.
3874         (can_encode_patch): We can now handle arrays of generic parameters and
3875         array methods.
3876
3877         * aot-runtime.c (decode_method_ref_2): Handle methods of array types.
3878
3879         * aot-compiler.c aot-runtime.c: Emit the size of specific trampolines into
3880         the AOT file to avoid some #ifdefs in aot-runtime.c
3881
3882         * mini.h: Bump AOT file format version.
3883
3884 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
3885
3886         * Makefile.am (fullaotcheck): Make this run the tests.
3887
3888         * aot-compiler.c: Make the printing of skipped methods runtime configurable.
3889
3890 2009-02-10  Mark Probst  <mark.probst@gmail.com>
3891
3892         * mini-x86.c (mono_arch_context_get_int_reg): Handle all registers
3893         individually.  Fixes #473482.
3894
3895 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
3896
3897         * mini-arm.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
3898
3899 2009-02-09  Jeffrey Stedfast  <fejj@novell.com>
3900
3901         * aot-compiler.c (arch_emit_plt_entry): Fixed to compile.
3902         (mono_compile_assembly): Hush compile warnings about
3903         uninitialized [tmp_]outfile_name variables in the !use_bin_writer
3904         code path.
3905
3906 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
3907
3908         * exceptions-arm.c (mono_arch_find_jit_info): Fix aot support.
3909
3910         * mini-arm.c: Checkin unwind related changes missing from an earlier commit.
3911
3912         * aot-compiler.c: Fix arm support.
3913
3914         * image-writer.c: Move the R_ARM constants to image-writer.h. Export a
3915         img_writer_emit_unset_mode () function.
3916
3917         * unwind.c (mono_unwind_get_dwarf_data_align): New helper function.
3918         (mono_unwind_get_dwarf_pc_reg): Ditto.
3919
3920         * aot-compiler.c (emit_dwarf_abbrev): Another large reorganization.
3921         Move almost all platform specific code to a set of arch_ functions, 
3922         and document them to ease porting.
3923         
3924         * aot-compiler.c (mono_xdebug_init): Fix xdebug support.
3925
3926         * image-writer.h image-writer.c: New files, extracted from aot-compiler.c.
3927
3928         * aot-compiler.c: Extract the image writing functionality into a separate
3929         module to reduce the size of this file.
3930
3931 2009-02-09  Geoff Norton  <gnorton@novell.com>
3932
3933         * mini-s390.c: Fix the signature of emit_sig_cookie.
3934
3935 2009-02-09  Zoltan Varga  <vargaz@gmail.com>
3936
3937         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_IMAGE.
3938
3939         * aot-runtime.c (is_shared_got_patch): Ditto.
3940
3941         * aot-runtime.c (load_named_code): Cope with the fact that 
3942         decode_got_entry () won't decode the patch fully if its corresponding got
3943         entry is already filled.
3944         
3945         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): 
3946         Initialize *ji.
3947         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
3948
3949         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code'
3950         as the moving pointer instead of 'buf' for consistency with the rest of the
3951         codebase.
3952         (mono_arch_create_monitor_exit_trampoline): Ditto.
3953
3954         * aot-compiler.c (emit_trampolines): Add throw_pending_exception/
3955         generic_class_init trampolines.
3956         (add_generic_class): Extract some code from add_generic_instances () into a
3957         separate function so it can be called from other places too.
3958         (compile_method): Call add_generic_class () for the classes of inflated methods
3959         referenced by the method.
3960         (can_encode_patch): Allow references to generic parameters.
3961
3962         * aot-runtime.c: Add support the patches required by the new trampolines.
3963         
3964         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Add full-aot
3965         support.
3966
3967         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline_full): Add
3968         full-aot support.
3969
3970         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Rename
3971         this from get_throw_pending_exception, make the signature full aot compatible.
3972
3973         * Makefile.am (fullaotcheck): New target to run full-aot tests.
3974
3975         * method-to-ir.c (inline_method): Save/Restore cfg->ret_var_set too.
3976
3977         * exceptions.cs: Add a test.
3978
3979 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
3980
3981         * unwind.c (mono_unwind_frame): Eliminate the data_align_factor argument,
3982         use the DWARF_DATA_ALIGN constant instead.
3983
3984         * exception-<ARCH>.c: Update after the above change.
3985
3986         * exceptions-arm.c (mono_arch_find_jit_info): Transition this to use the
3987         dwarf unwinder.
3988
3989         * mini-arm.c: Enable the dwarf unwinder.
3990
3991         * mini-trampolines.c (mono_magic_trampoline): Use mono_class_get_vtable_entry ()
3992         instead of mono_class_setup_vtable ().
3993
3994 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
3995
3996         * exceptions-x86.c (mono_arch_find_jit_info): Transition this to use the
3997         dwarf unwinder.
3998
3999         * mini-x86.h: Enable the dwarf unwinder.
4000
4001 2009-02-06  Raja R Harinath  <harinath@hurrynot.org>
4002
4003         Fix mcs/tests/test-7.cs
4004         * mini-amd64.c (mono_arch_allocate_vars): Revert change from
4005         2009-02-03.
4006
4007 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
4008
4009         * mini.c (print_jit_stats): Remove some unused statistics.
4010
4011 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
4012
4013         * aot-compiler.c (emit_klass_info): Update after MonoClass changes.
4014
4015 2009-02-05  Mark Probst  <mark.probst@gmail.com>
4016
4017         * jit-icalls.c (mono_helper_compile_generic_method): Don't inflate
4018         the method we get from mono_object_get_virtual_method() because
4019         that function does it properly, now.
4020
4021 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
4022
4023         * unwind.c (mono_unwind_ops_encode): Handle offsets greater than 32 between
4024         opcodes. Fixes #472775.
4025
4026 2009-02-05  Mark Probst  <mark.probst@gmail.com>
4027
4028         * mini-exceptions.c (ves_icall_get_frame_info): Account for the
4029         fact that mono_find_jit_info() sometimes returns the context
4030         corresponding to the jit info in new_ctx.  Fixes #472600.
4031
4032 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
4033
4034         * method-to-ir.c mini-hppa.c mini.c trace.c mini-s390x.c aot-compiler.c
4035         mini-s390.c: Use mono_class_enum_basetype () instead of accessing
4036         klass->enum_basetype directly.
4037
4038         * aot-compiler.c (emit_class_dwarf_info): Add support for all possible
4039         enum subtypes.
4040
4041         * unwind.c: Avoid 0 sized arrays.
4042
4043 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
4044
4045         * mini-exceptions.c (mono_setup_altstack): Use a more reasonable altstack
4046         size on systems with 64k pages. Fixes #471389.
4047
4048 2009-02-04  Mark Probst  <mark.probst@gmail.com>
4049
4050         Contributed under the terms of the MIT/X11 license by Steven
4051         Munroe <munroesj@us.ibm.com>.
4052
4053         * mini-ppc.c (mono_arch_output_basic_block): Generate better code
4054         for LOADI4_MEMBASE.  Use addi instead of addic if it's not
4055         necessary.
4056
4057 2009-02-04  Mark Probst  <mark.probst@gmail.com>
4058
4059         Contributed under the terms of the MIT/X11 license by Steven
4060         Munroe <munroesj@us.ibm.com>.
4061
4062         * exceptions-ppc.c (mono_arch_get_restore_context): Code size
4063         comparison fix.
4064
4065         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline):
4066         The trampoline can be longer on PPC64.
4067
4068 2009-02-04  Mark Probst  <mark.probst@gmail.com>
4069
4070         Contributed under the terms of the MIT/X11 license by Steven
4071         Munroe <munroesj@us.ibm.com>.
4072
4073         * mini-ppc.c: Compiler warning fixes and trivial code
4074         simplifications.
4075
4076 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
4077
4078         * method-to-ir.c (mono_spill_global_vars): Fix problems caused by reading
4079         ins->dreg which could be a hardware register, not a vreg.
4080
4081         * aot-compiler.c (emit_method_dwarf_info): Ditto.
4082         
4083         * mini.h (MonoCompile): Remove vreg_to_var_num array, it is no longer used.
4084         (struct MonoMethodVar): Add a vreg field, holding the vreg of variable.
4085
4086         * mini.c (mono_compile_create_var_for_vreg): Set var->vreg.
4087         
4088         * mini-amd64.c (mono_arch_output_basic_block): Avoid reading cfg->varinfo[..]
4089         ->dreg, that is not the vreg we are looking for.
4090
4091         * mini-amd64.h mini-x86.h: Enable MONO_ARCH_LIVENESS_OPS again.
4092
4093         * mini-x86.c (mono_arch_output_basic_block): Add support for LIVERANGE_START/
4094         LIVERANGE_END.
4095
4096         * method-to-ir.c (mono_spill_global_vars): Add an assert to help track down
4097         strange crashes.
4098
4099 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
4100
4101         * mini-x86.c (mono_arch_emit_prolog): Emit unwind info.
4102
4103         * aot-compiler.c (emit_line_number_info): Fix line number emission when
4104         the line diff is 0.
4105
4106         * aot-compiler.c: Add xdebug support on x86.
4107
4108         * unwind.c: Add x86 support.
4109         
4110         * aot-compiler.c (emit_exception_debug_info): Control the emission of
4111         unwind info using a new MONO_ARCH_HAVE_XP_UNWIND define.
4112
4113         * mini.c (mini_method_compile): Ditto.
4114         
4115         * mini-amd64.c (mono_arch_allocate_vars): Avoid setting cfg->ret->dreg to
4116         the variable index.
4117
4118         * aot-compiler.c: Add emit_push_section ()/emit_pop_section () helper functions
4119         which mimic .push_section/.pop_section in GAS.
4120         
4121         * aot-compiler.c: Emit precise live range information for variables.
4122
4123         * mini-amd64.c (mono_arch_output_basic_block): Add OP_LIVERANGE_START/END.
4124
4125         * method-to-ir.c (mono_spill_global_vars): Compute the instructions marking
4126         the live ranges of variables, and emit OP_LIVERANGE_START/END opcodes for
4127         them.
4128
4129         * mini-ops.h: Add OP_LIVERANGE_START/END opcodes to mark
4130         the live ranges of variables.
4131
4132         * mini.h (struct MonoMethodVar): Add two fields containing the live range
4133         of the variable in terms of native offsets.
4134
4135 2009-02-03  Rodrigo Kumpera  <rkumpera@novell.com>
4136
4137         * arrays.cs: Test for Get/SetValue of array with negate lower bounds.
4138         
4139 2009-02-02  Mark Probst  <mark.probst@gmail.com>
4140
4141         Contributed under the terms of the MIT/X11 license by Steven
4142         Munroe <munroesj@us.ibm.com>.
4143
4144         * exceptions-ppc.c (restore_regs_from_context): Correct operand
4145         order (offset then base reg) for ppc_load_multiple_regs.
4146         (emit_save_saved_regs) Correct operand order for
4147         ppc_store_multiple_regs.
4148         (mono_arch_get_call_filter): Correct operand order for
4149         ppc_load_multiple_regs.
4150
4151         * mini-ppc.c (emit_memcpy): Fix operand order for
4152         ppc_load_reg_update and ppc_store_reg_update.
4153         (mono_arch_output_basic_block): Correct operand order for ppc_lha.
4154         (mono_arch_emit_epilog): Correct operand order for
4155         ppc_load_multiple_regs.
4156
4157         * tramp-ppc.c (mono_arch_create_trampoline_code): Correct operand
4158         order for ppc_store_multiple_regs and ppc_load_multiple_regs.
4159
4160 2009-02-02  Mark Probst  <mark.probst@gmail.com>
4161
4162         * cpu-ppc64.md: Fixed storer4_memindex length.
4163
4164 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
4165
4166         * aot-compiler.c (emit_line_number_info): Optimize the size of the emitted
4167         line number info.
4168         
4169         * aot-compiler.c (emit_line_number_info): Optimize this.
4170
4171 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
4172
4173         * aot-compiler.c: Disassemble tokens in the IL disassembly.
4174         
4175         * aot-compiler.c: Add debug info for methods without debug info by
4176         emitting an IL file and having the line number info referencing that file.
4177
4178         * aot-compiler.c: Optimize the size of the generated line number info.
4179
4180         * aot-compiler.c: Emit line number info in xdebug mode.
4181
4182         * aot-compiler.c (mono_save_xdebug_info): Receive a MonoCompile instead of a
4183         million arguments.
4184
4185 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
4186
4187         * aot-compiler.c (emit_method_dwarf_info): Emit names for local variables.
4188
4189         * driver.c (mono_main): Enable debugging support automatically if XDEBUG
4190         is used.
4191
4192 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
4193
4194         * basic-calls.cs: Test for the weird crash found on arm.
4195         
4196 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
4197
4198         * cpu-arm.md: Increase the size of storer8_membase_reg and
4199         loadr8_membase_reg to 24 bytes to accomodate the extra add.
4200
4201         * mini-arm.c (mono_arch_output_basic_block): Under FPA, when emitting
4202         OP_STORER8_MEMBASE_REG and OP_LOADR8_MEMBASE_REG, add the original
4203         reg to LR otherwise we'll be loading/storing from just the offset.
4204
4205 2009-01-30  Miguel de Icaza  <miguel@novell.com>
4206
4207         Question: if we are storing gint32's inside the "*native_offset",
4208         should we change the signature to "gint32 *native_offset" to
4209         ensure that we do not have type definition problems?
4210         
4211         * mini-exceptions.c (ves_icall_get_frame_info): Cast the gint32 to
4212         an int * as this is what the other function expects, causes
4213         problems with Freescale's compiler that defined int32_t to be a
4214         long and makes int incompatible 
4215
4216 2009-01-30  Miguel de Icaza  <miguel@novell.com>
4217
4218         * Rename generic-sharing.c to mini-generic-sharing.c to avoid the
4219         filename conflict with bjam.
4220
4221 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
4222
4223         * cpu-arm.md: Increase the size of storer8_membase_reg to 20 bytes
4224         as it might use decomposed ops.
4225
4226 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
4227
4228         * jit-icalls.c (mono_imul_ovf): Fix one of the literals.
4229
4230         * mini.c (mini_init): Emulate mul.ovf opcodes if MONO_ARCH_EMULATE_MUL_OVF
4231         is defined.
4232
4233         * mini-arm.h (MONO_ARCH_EMULATE_MUL_OVF): New define.
4234
4235         * mini-arm.c (mono_arch_build_imt_thunk): Rewrite this to allow large vtable
4236         offsets.
4237
4238         * mini-arm.c (mono_arch_context_get_int_reg): Adapt this to the "clever"
4239         way registers are stored in MonoContext on arm.
4240
4241         * unwind.c: Rewrite the handling of the cached_info array to use hazard pointers
4242         instead of locking so mono_get_cached_unwind_info () becomes signal safe.
4243
4244         * mini.c (mini_init): Emuate OP_FCONV_TO_I when using soft float.
4245
4246         * mini-arm.c (emit_load_volatile_arguments): Avoid an unneccesary assert.
4247
4248         * mini.c (mini_init): Register mono_isfinite.
4249
4250         * jit-icalls.c (mono_isfinite): New jit icall.
4251
4252         * method-to-ir.c (mono_decompose_soft_float): Add support for OP_CKFINITE.
4253         
4254         * exceptions-arm.c (mono_arch_find_jit_info): When unwinding using the LMF,
4255         set esp to ARMREG_FP instead of R12, since R12 stores the value of sp for
4256         the parent frame.
4257
4258 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
4259
4260         * exceptions-arm.c (mono_arch_find_jit_info): The frame layout on arm have
4261         separate frame and stack pointers, so we must use FP to find the register
4262         spill area.
4263         The FP reg is retrieved from the MonoContext::regs array.
4264
4265 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
4266
4267         * mini-arm.c (mono_arch_output_basic_block): Emit two cond ops for OP_FBGE
4268         as FPA requires it.
4269
4270 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
4271
4272         * mini-arm.c (mono_arch_emit_setret): Emit OP_FMOVE for methods that
4273         return R4 and R8 when not running under softfloat.
4274
4275         Fixes basic-calls.exe
4276
4277 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
4278
4279         * mini-arm.c: Implement some overflow opcodes.
4280
4281 2009-01-29  Miguel de Icaza  <miguel@novell.com>
4282
4283         * ssa.c: handle another alloca.h
4284
4285         * mini-exceptions.c (mono_handle_native_sigsegv): Do not use
4286         PLATFORM_WIN32 for detecting if we have sigaction.   Instead use
4287         MONO_ARCH_USE_SIGACTION. 
4288
4289         * aot-runtime.c, mini-exceptions.c: Replace platform define with
4290         capability defines.
4291
4292         * method-to-ir.c (mono_method_to_ir): Type cast fix on some platforms.
4293
4294         * mini-ppc.h (MONO_ARCH_USE_SIGACTION): Do not define this for all
4295         PPC targets as sigaction does not exist on all platforms, define
4296         this on a per-platform basis.
4297
4298         Instead of erroring out if the platform is not defined, include
4299         mini-ppc-os.h, and expect that the OS specific setting provides
4300         the required information.   
4301
4302 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
4303
4304         * aot-compiler.c: Fix --enable-minimal=aot.
4305
4306 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
4307
4308         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Fix the
4309         previous change.
4310
4311 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
4312
4313         * exceptions-arm.c: Fix warnings.
4314
4315         * tramp-arm.c aot-compiler.c unwind.h unwind.c: Implement xdebug support for
4316         ARM.
4317
4318         * mini-x86.c: Fix --enable-minimal=jit build.
4319
4320         * mini.c: Really fix --enable-minimal=jit build.
4321         
4322         * mini.c (construct_object_context_for_method): Move this outside
4323         the DISABLE_JIT block to fix the --enable-minimal=jit build.
4324
4325         "Backported" of r124984 from 2.0 branch.
4326         
4327         * aot-compiler.c aot-runtime.c: Add full-aot support delegate BeginInvoke/EndInvoke.
4328
4329         "Backport" of r124977 + r124978 from 2.0 branch.
4330         
4331         * exceptions-arm.c (mono_arm_throw_exception_by_token): New helper function
4332         to avoid calling mono_exception_from_token () from the throw trampoline.
4333         (mono_arch_get_throw_exception_generic): call throw_exception_by_token
4334         for throwing corlib exceptions, this fixes full-aot support for corlib
4335         exceptions.
4336
4337         * aot-compiler.c (compile_method): Make a copy of cfg->locals to fix the build.
4338
4339 2009-01-29  Miguel de Icaza  <miguel@novell.com>
4340
4341         * mini-darwin.c, mini-windows.c, mini-posix.c: Commit the first
4342         part of the changes to split the code in mini into operating
4343         system specific files.
4344
4345         This patch was done by copying mini.c to the respective files to
4346         preserve SVN history.
4347
4348 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
4349
4350         * aot-compiler.c (emit_method_dwarf_info): Add minimal support for locals.
4351
4352 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
4353
4354         * method-to-ir.c (mono_method_to_ir): Avoid generic sharing for calls made to
4355         remoting-invoke-with-check wrappers of shared methods.
4356
4357         * mini.c (print_jit_stats): Print out major gc count/time for libgc too.
4358
4359 2009-01-27  Mark Probst  <mark.probst@gmail.com>
4360
4361         * method-to-ir.c (emit_stloc_ir): Only apply the reg-reg move
4362         optimization if the top of stack is the last instruction in the
4363         bblock.  Otherwise it might have been used after its definition.
4364         Fixes #469742.
4365
4366 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
4367
4368         * mini-trampolines.c (mono_magic_trampoline): Print out the caller
4369         method as well when get_vcall_slot () fails to match a code sequence.
4370
4371         * mini-arm.c: Fix the android build, which doesn't have
4372         __aeabi_read_tp.
4373
4374 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
4375
4376         * mini-s390x.c: Remove a stray declaration of emit_sig_cookie () to fix
4377         the s390x build.
4378
4379 2009-01-26  Rodrigo Kumpera  <rkumpera@novell.com>
4380
4381         * unwind.c (mono_unwind_cleanup): Don't crash if cached_info is NULL.
4382
4383 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
4384
4385         * mini.c (mini_method_compile): Save the unwind info generated by the JIT
4386         and put its id into jinfo->used_regs. This is only used on amd64,
4387         which is currently the only platform generating unwind info.
4388
4389         * exceptions-amd64.c: Instead of unwinding based on a register mask, use
4390         the dwarf unwinder. This is required to correctly handle async exceptions
4391         like thread abort and stack overflows, which can happen while a method
4392         is in the middle of its prolog or epilog.
4393         
4394         * aot-runtime.c (mono_aot_get_unwind_info): New helper function to obtain
4395         the unwind info belonging to an AOTed method.
4396
4397         * aot-compiler.c aot-runtime.c: Save/Load the unwind info emitted by the JIT
4398         into cfg->unwind_ops.
4399         
4400         * unwind.c (mono_unwind_frame): Use <= instead of < for the loop exit check.
4401
4402         * mini.c (mini_init): Call mono_unwind_init ().
4403         (mini_cleanup): Call mono_unwind_cleanup ().
4404
4405         * unwind.c: Add functions for managing a set of unwind info entries, allowing
4406         unwind info to be shared between methods.
4407
4408         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info for the registers
4409         saved in the LMF.
4410
4411         * exceptions-amd64.c (mono_arch_exceptions_init): Call 
4412         get_throw_pending_exception () to avoid initialization races.
4413
4414         * mini-exceptions.c (mono_exceptions_init): Call an arch specific
4415         mono_arch_exceptions_init () function.
4416
4417         * mini.h (MONO_INST_NEW): Remove duplicate setting of cil_code.
4418
4419 2009-01-25  Zoltan Varga  <vargaz@gmail.com>
4420
4421         * mini.c (mono_get_domain_intrinsic): New helper function.
4422         (mono_get_thread_intrinsic): Ditto.
4423
4424         * mini-arm.c mini-ia64.c: Use the new helper functions.
4425         
4426         * method-to-ir.c (mono_method_to_ir): Fix the comment for
4427         the last constrained_call change, since it is needed in the non-AOT
4428         case as well.
4429
4430         * mini-arm.c: Implement OP_TLS_GET on arm eabi linux.
4431         
4432         * mini-arm.c (mono_arch_emit_prolog): Add an inlined version of 
4433         mono_get_lmf_addr () on arm eabi linux.
4434
4435 2009-01-24  Zoltan Varga  <vargaz@gmail.com>
4436
4437         * mini-amd64.c (mono_arch_get_vcall_slot): Handle yet another
4438         code sequence which matches a non-virtual call.
4439
4440 2009-01-23  Mark Probst  <mark.probst@gmail.com>
4441
4442         * mini-ppc.c (mono_arch_context_get_int_reg): Allow access to the
4443         stack pointer (r1).
4444
4445 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
4446
4447         * aot-compiler.c aot-runtime.c: Treat delegate-invoke wrappers similarly to
4448         runtime-invoke wrappers, since they are also shared based on signature.
4449
4450 2009-01-22  Mark Probst  <mark.probst@gmail.com>
4451
4452         * mini-exceptions.c (ves_icall_get_frame_info): Fetch the generic
4453         info from the (correct) context.
4454
4455 2009-01-22  Zoltan Varga  <vargaz@gmail.com>
4456
4457         * unwind.c (mono_unwind_frame): Remove a stray g_free ().
4458         
4459         * unwind.c (mono_unwind_frame): New function to unwind through a frame
4460         using dwarf unwinding info. Not yet used.
4461
4462         * mini.c (mini_init): When using xdebug, disable freeing of domains.
4463
4464 2009-01-21  Mark Probst  <mark.probst@gmail.com>
4465
4466         * mini-ppc.c (mono_arch_delegate_invoke_impl): Return function
4467         descriptors.
4468
4469         * mini-trampolines.c (mono_delegate_trampoline): Remove the PPC64
4470         special case and handle mono_arch_delegate_invoke_impl() returning
4471         function descriptors.
4472
4473         * tramp-ppc.c (mono_arch_create_trampoline_code): Delegate
4474         trampolines return function descriptors, too.
4475
4476 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
4477
4478         * method-to-ir.c (handle_alloc): Avoid generic instances in the
4479         out_of_line optimization.
4480
4481 2009-01-21  Martin Baulig  <martin@ximian.com>
4482
4483         * mini.h
4484         (MonoCompile): Added `disable_deadce_vars' to disable removing
4485         unused variables.
4486
4487         * mini.c
4488         (mini_method_compile): Set `cfg->disable_deadce_vars' when running
4489         inside the debugger.
4490
4491         * liveness.c (mono_analyze_liveness): Don't remove any unused
4492         variables if `cfg->disable_deadce_vars' is set.
4493
4494 2009-01-21  Mark Probst  <mark.probst@gmail.com>
4495
4496         * method-to-ir.c: Only apply exception constructor optimization if
4497         the the method actually belongs to an exception class.  Fixes
4498         #467456.
4499
4500 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
4501
4502         * mini-trampolines.c (mono_delegate_trampoline): Put back the previous
4503         change inside a #ifdef __mono_ppc64__.
4504
4505         * aot-compiler.c (compile_method): Remove the previous limitation.
4506
4507         * method-to-ir.c (method-to-ir.c): Add support for the constrained prefix
4508         on type variables in AOTed code.
4509         
4510         * aot-compiler.c (compile_method): Skip generic methods having type 
4511         constraints on their generic parameters.
4512
4513         * aot-compiler.c (compile_method): Check for methods which cannot be
4514         encoded inside RGCTX_FETCH patches as well.
4515
4516         * mini-exceptions.c (mono_print_thread_dump): Fix the windows
4517         build.
4518
4519 2009-01-20  Mark Probst  <mark.probst@gmail.com>
4520
4521         * method-to-ir.c: Force the vtable variable in shared generic code
4522         for the case that they might show up on a stack trace where they
4523         are needed.
4524
4525         * mini-exceptions.c: Save and use generic sharing info as well as
4526         IP in stack traces to resolve shared generic instantiations.
4527
4528 2009-01-20  Zoltan Varga  <vargaz@gmail.com>
4529
4530         * mini-trampolines.c (mono_delegate_trampoline): Revert the change which
4531         added a mono_get_addr_from_ftnptr () as it breaks the ia64 build.
4532
4533 2009-01-20  Mark Probst  <mark.probst@gmail.com>
4534
4535         * method-to-ir.c: Do generic sharing for array constructors.
4536
4537 2009-01-20  Rodrigo Kumpera  <rkumpera@novell.com>
4538
4539         * mini-exceptions.c (mono_print_thread_dump): Add information
4540         about the thread state using wapi_current_thread_desc.
4541
4542 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
4543
4544         * basic-simd.cs: Tests for the new constructors. 
4545
4546 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
4547
4548         * mini-ops.h: Added OP_EXPAND_*
4549
4550         * cpu-x86.md: Same.
4551
4552         * mini-x86.c (mono_arch_output_basic_block): Same.
4553         
4554         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for single element constructors.
4555
4556 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
4557
4558         * iltests.il.in: Add a test for #467385.
4559
4560 2009-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
4561
4562         * mini.c (mini_thread_cleanup): Don't cleanup TLS storage if the
4563         thread been cleaned up is not the same currently in execution.
4564
4565         Fixes appdomain-unload crashes on windows, osx and linux variants
4566         without the __thread keyword.
4567
4568 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
4569
4570         * mini-arm.c (mono_arch_flush_icache): Applied patch from Koushik Dutta
4571         (koush@koushikdutta.com). Implement this for android.
4572
4573         * helpers.c (mono_disassemble_code): Avoid assembler errors if the id
4574         begins with a digit.
4575
4576         * method-to-ir.c: Call mono_gc_get_write_barrier () instead of
4577         mono_marshal_get_write_barrier ().
4578
4579 2009-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
4580
4581         * decompose.c (mono_decompose_vtype_opts): Fix the decomposition
4582         of OP_VCALL_* ops for 8 bytes vtypes on 32 bits archs and platorms
4583         that pass them on a register pair.
4584
4585         This affects windows, OSX and FreeBSD. The mono/tests/handleref.exe
4586         test was crashing due to that.
4587
4588 Fri Jan 16 15:21:21 CET 2009 Paolo Molaro <lupus@ximian.com>
4589
4590         * exceptions-ppc.c: tweaks from malc (OV-Soft) to fix the size of the
4591         trampoline code. Include ucontext.h only if available.
4592
4593 2009-01-15  Mark Probst  <mark.probst@gmail.com>
4594
4595         * mini.c: mono_domain_lookup_shared_generic() takes an open method
4596         and doesn't check whether it's sharable, like it was before
4597         removing the shared generics hash.  This brings IronPython
4598         performance back to what it was before that change.
4599
4600 2009-01-14  Mark Probst  <mark.probst@gmail.com>
4601
4602         * method-to-ir.c: Handle delegate invocation optimization earlier,
4603         otherwise it would be handled (much more slowly) by the
4604         final/sealed optimization.
4605
4606 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
4607
4608         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes when the current thread or
4609         domain is not set. Fixes #465864.
4610
4611 2009-01-12  Mark Probst  <mark.probst@gmail.com>
4612
4613         * method-to-ir.c: Don't stop sharing of generic methods with catch
4614         clauses - we already handle those.
4615
4616 2009-01-12  Mark Probst  <mark.probst@gmail.com>
4617
4618         * mini.c, mini.h: lookup_generic_method() is now
4619         mono_domain_lookup_shared_generic() and uses the jit_code_hash,
4620         making the shared_generics_hash obsolete.
4621
4622 2009-01-12  Mark Probst  <mark.probst@gmail.com>
4623
4624         * mini-ppc.c, exceptions-ppc.c, cpu-ppc.md, cpu-ppc64.md: Don't
4625         use the red zone.  Make room on the stack first and then use it,
4626         not the other way around.
4627
4628 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
4629
4630         * mini.c (mini_init): Call mono_xdebug_init ().
4631
4632         * aot-compiler.c (mono_xdebug_init): Make this non-static.
4633
4634 2009-01-11  Zoltan Varga  <vargaz@gmail.com>
4635
4636         * TestDriver.cs: Add an --iter argument to run tests multiple times.
4637
4638         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Emit debug info for
4639         trampolines.
4640
4641         * aot-compiler.c (mono_save_trampoline_xdebug_info): New function to emit
4642         debug+unwind info for trampolines.
4643
4644         * mini.c (mono_create_unwind_op): New helper function.
4645
4646         * unwind.h: Add macros for emitting unwind ops without a MonoCompile.
4647
4648 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
4649
4650         * aot-compiler.c: Fix the build.
4651
4652 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
4653
4654         * Makefile.am: Update dtrace-prelink.sh location.
4655
4656 2009-01-08  Zoltan Varga  <vargaz@gmail.com>
4657
4658         * method-to-ir.c (mono_method_to_ir): Fix the check for the mscorlib ldstr 
4659         optimization. Fixes #464520.
4660
4661 2009-01-07  Bill Holmes  <billholmes54@gmail.com>
4662
4663         * mini-amd64.c : Adding code to save/restore non-volatile registers
4664            on Winx64.
4665
4666         * exceptions-amd64.c : Adding code to save/restore non-volatile 
4667           registers on Winx64.
4668
4669         Contributed under MIT/X11 license.
4670
4671 2009-01-07  Zoltan Varga  <vargaz@gmail.com>
4672
4673         * mini-arm.c (mono_arch_flush_icache): Use __GNUC_PREREQ instead of checking
4674         __GNUC_MINOR__ which can break when the major version changes.
4675
4676 2009-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
4677
4678         * basic-simd.cs: Add tests for usage of the sizeof opcode.
4679
4680 2009-01-07  Geoff Norton  <gnorton@novell.com>
4681
4682         * helpers.c:  Allow mono -v -v -v to work on darwin.
4683
4684 2009-01-05  Bill Holmes  <billholmes54@gmail.com>
4685
4686         * mini-amd64.c (mono_arch_get_vcall_slot) : Handle an additional instruction
4687           pattern. 
4688
4689         Contributed under MIT/X11 license.
4690
4691 2009-01-05  Zoltan Varga  <vargaz@gmail.com>
4692
4693         * mini.c (mono_allocate_stack_slots_full2): Use mono_class_from_mono_type
4694         instead of directly accessing type->data.klass. Fixes #462016.
4695         (mono_allocate_stack_slots_full): Ditto.
4696
4697         * mini-arm.c (mono_arch_flush_icache): Applied patch from Riku Voipio 
4698         <novell@kos.to>. Fix cache flush on kernels without OLDABI compat option.
4699
4700         * aot-compiler.c (emit_plt): Fix ARM build.
4701
4702 2009-01-04  Zoltan Varga  <vargaz@gmail.com>
4703
4704         * branch-opts.c (mono_if_conversion): Optimize this using ins->prev.
4705         
4706         * branch-opts.c (mono_if_conversion): Fix an assert introduced by the last
4707         change.
4708
4709         * branch-opts.c (mono_if_conversion): Use branch->inst_true_bb/inst_false_bb
4710         instead of bblock->out_bb [0]/[1], the two might not be the same. Fixes
4711         #463357.
4712
4713         * iltests.il.in: Add a regression test.
4714
4715 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
4716
4717         * mini-codegen.c (mono_print_ins_index): Pretty print XPHI and VPHI.
4718
4719 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
4720
4721         * basic-simd.cs: Add a regression test for #462457.
4722
4723 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
4724
4725         * mini-ops.h: Add a definition of XPHI.
4726
4727         * mini.h (MONO_IS_PHI): Make is aware of simd instrincs. 
4728
4729         * ssa.c (op_phi_to_move): Handle XPHI.
4730
4731         * ssa.c (mono_ssa_compute): Generate a XPHI for simd intrinsics instead of VPHI.
4732
4733         Fixes #462457
4734
4735 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
4736
4737         * method-to-ir.c (mono_emit_rgctx_calli): Fix a warning.
4738
4739 2008-12-31  Geoff Norton  <gnorton@novell.com>
4740
4741         * mini-ppc.c: The prolog size allocated can be too small for darwin
4742         ppc32 under certain circumstances.  Also fix a small logic bug.
4743
4744 2008-12-29  Zoltan Varga  <vargaz@gmail.com>
4745
4746         * mini.c (mono_jit_compile_method_inner): Avoid holding the domain lock
4747         while loading AOT methods.
4748
4749         * mini-exceptions.c: Check jit_tls->class_cast_from instead of class_cast_to
4750         since only the former is nulled out after a successful cast. This prevents
4751         crashes with rethrown exceptions when using --debug=casts.
4752
4753 2008-12-24  Mark Probst  <mark.probst@gmail.com>
4754
4755         * mini.h: New macro for checking whether a method is final,
4756         i.e. whether the method or its class is marked final.
4757
4758         * method-to-ir.c: Use the new macro for all final-checks
4759         consistently.  Fixes the crash in the System.ServiceModel tests.
4760
4761 2008-12-23  Mark Probst  <mark.probst@gmail.com>
4762
4763         * mini-exceptions.c (get_exception_catch_class): Corrected another
4764         overly strict assertion.
4765
4766 2008-12-23  Mark Probst  <mark.probst@gmail.com>
4767
4768         * mini-ppc.c (mono_arch_build_imt_thunk): Save and restore r11.
4769         Clobbering it is not allowed because the caller might use it as
4770         the vtable register in the interface call.
4771
4772 2008-12-19  Mark Probst  <mark.probst@gmail.com>
4773
4774         * mini-exceptions.c (get_exception_catch_class): Corrected an
4775         overly strict assertion.
4776
4777 2008-12-18  Mark Mason  <mmason@upwardaccess.com>
4778         
4779         * method-to-ir.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P or sizeof(gpointer) when appropriate.
4780
4781         * mini.h: Move typedef to mgreg_t up above include of mini-arch.h
4782
4783         * local-propogation.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P when appropriate
4784
4785         * cpu-mips.md: correct lengths for certain long_ opcodes.
4786
4787         * mini-mips.h: Only emulate long operations when SIZEOF_REGISTER==4. Add missing func decl.
4788
4789         * 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().
4790         
4791 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
4792
4793         * exceptions-mips.c (mono_arch_find_jit_info): decode sd instructions as well when looking for registers.
4794         
4795 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
4796         
4797         * mini-mips.c (mono_arch_output_basic_block): OP_JUMP_TABLE stores patch type in inst_c1, not inst_i1.
4798         
4799 2008-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
4800
4801         * branch-opts.c (remove_block_if_useless): Even if BB0 falls through, don't add a br to the
4802         next basic block.
4803         
4804 2008-12-16  Mark Mason  <mmason@upwardaccess.com>
4805
4806         * 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
4807
4808         * 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)
4809         
4810 2008-12-15  Mark Mason  <mmason@upwardaccess.com>
4811         
4812         * trace.c (mono_trace_enter_method): correctly handle arguments smaller than the stack slot size on big endian systems.
4813         
4814 2008-12-14  Zoltan Varga  <vargaz@gmail.com>
4815
4816         * liveness.c (mono_analyze_liveness): Avoid eliminating the 'this' var in
4817         gshared code. Fixes #458947.
4818
4819         * generics.cs: Add a test.
4820
4821 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
4822         
4823         * method-to-ir.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
4824         
4825         * mini-mips.c: first pass n32 code generation.
4826
4827         * mini-mips.h: datatypes and defines for n32 support.
4828
4829         * exceptions-mips.c: first pass n32 code generation.
4830         
4831         * tramp-mips.c: first pass n32 code generation.
4832         
4833         * cpu-mips.md: add long_ opcodes.
4834         
4835 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
4836
4837         * liveness.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
4838
4839         * cfold.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
4840         
4841         * local-propogation.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
4842         
4843         * regalloc2.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
4844
4845         * mini.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
4846
4847         * mini-codegen.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
4848
4849         * ssa.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
4850
4851         * decompose.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
4852
4853         * helpers.c: for mips/n32, don't pass -mips32 to objdump
4854
4855 2008-12-12  Zoltan Varga  <vargaz@gmail.com>
4856
4857         * mini-arm.c tramp-arm.c: Fix calls to mono_arch_flush_icache.
4858
4859 2008-12-12  Andres G. Aragoneses  <aaragoneses@novell.com>
4860
4861         * driver.c: Sync --help-trace with man page (EXPR,EXPR).
4862
4863 2008-12-12  Mark Probst  <mark.probst@gmail.com>
4864
4865         * mini-ppc.h, exceptions-ppc.c, tramp-ppc.c: Create function
4866         descriptors for helper functions directly in front of the code.
4867
4868 2008-12-11  Mark Probst  <mark.probst@gmail.com>
4869
4870         * method-to-ir.c: Removed an unnecessary assertion.
4871
4872 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
4873
4874         * method-to-ir.c: Merge SGEN changes from the old JIT.
4875
4876 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
4877
4878         * driver.c (compile_all_methods_thread_main): Handle failure of
4879         mono_get_method ().
4880
4881 2008-12-10  Mark Probst  <mark.probst@gmail.com>
4882
4883         * mini-ppc.c: Merged with mini-ppc64.c.
4884
4885         * mini-ppc.h: Define PPC_MINIMAL_PARAM_AREA_SIZE on all targets.
4886
4887         * Makefile.am: Use the same sources for PPC and PPC64.
4888
4889         * mini-ppc64.c: Removed.
4890
4891 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
4892
4893         * branch-opts.c (remove_block_if_useless): Extract fall through detection
4894         code to mono_bb_is_fall_through.
4895         
4896         * branch-opts.c (mono_remove_critical_edges): Same.
4897
4898 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
4899
4900         * ssa.c (fold_ins): branch opt can kill dummy switch ops so we can't
4901         expect that an OP_BR_REG will be there.
4902
4903 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
4904
4905         * branch-opts.c (remove_block_if_useless): Use MONO_IS_BRANCH_OP instead of checking
4906         for the many branch ops. The original check miss OP_BR_REG.
4907
4908         Fixes #457574.
4909         
4910 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
4911
4912         * mini-mips.h mini-mips.c exceptions-mips.c tramp-mips.c: first round of changes necessary to eventually support n32.
4913
4914 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
4915
4916         * aot-runtime.c (load_method): Avoid calling decode_exception_debug_info
4917         while holding the aot lock.
4918
4919 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
4920
4921         * mini-mips.c (mono_arch_output_basic_block): use mfc1/lwc1 instead of mfc1d/ldc1
4922         
4923 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
4924
4925         * mini.c (mini_cleanup) : Adding a call to cominterop_release_all_rcws 
4926           to release all runtime callable wrappers held by the runtime.
4927
4928         Contributed under MIT/X11 license.
4929
4930 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
4931
4932         * tramp-amd64.c (mono_arch_create_trampoline_code_full) : Increase the code size for
4933           for Winx64.
4934
4935         Contributed under MIT/X11 license.
4936
4937 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
4938
4939         * aot-runtime.c (decode_exception_debug_info): Acquire the domain
4940         lock when calling mono_domain_alloc (). Hopefully fixes #415608.
4941
4942 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
4943
4944         * cpu-mips.md: fix ckfinite length
4945
4946         * mini-mips.c: at least recognize n32 ABI when used (not yet supported)
4947         (mono_arch_lowering_pass): cleanup, rearrange for clarity
4948         (mono_arch_output_basic_block): implement OP_CKFINITE, add more asserts
4949         
4950 2008-12-08  Mark Mason   <mmason@upwardaccess.com>
4951
4952         * exceptions-mips.c (mono_arch_find_jit_info): init new_ctx with ctx, dont' call setup_context.
4953         
4954 2008-12-08  Geoff Norton  <gnorton@novell.com>
4955
4956         * tramp-amd64.c: r120895 stores RAX, so we need to increase the window
4957         size by 8 bytes as well.
4958
4959 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
4960
4961         * basic-simd.cs: Fix method names for Vector16b.
4962         
4963 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
4964
4965         * basic-simd.cs: Fix method names for Vector16sb.
4966
4967 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
4968
4969         * basic-simd.cs: Fix method names for Vector8us.
4970         
4971 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
4972
4973         * basic-simd.cs: Fix method names for Vector8s.
4974         
4975 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
4976
4977         * basic-simd.cs: Fix method names for Vector4ui.
4978
4979 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
4980
4981         * basic-simd.cs: Fix method names for Vector2l.
4982
4983 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
4984
4985         * basic-simd.cs: Fix method names for Vector2d.
4986
4987 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
4988
4989         * simd-intrinsics.c (mono_emit_simd_intrinsics): Add support for intrinsics
4990         that are extension methods.
4991
4992 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
4993
4994         * basic-simd.cs: Fix method names for Vector4f.
4995
4996 2008-12-08  Zoltan Varga  <vargaz@gmail.com>
4997
4998         * mini-exceptions.c (mono_print_thread_dump): Mark threadpool threads
4999         as such. Fixes #456669.
5000
5001 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
5002
5003         * mini-mips.c (mono_arch_emit_call): narrow float arguments when passing as args.
5004         
5005 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
5006
5007         * mini-mips.c (mono_arch_lowering_pass): don't handle OP_ICONV_TO_R* or OP_R*CONST
5008         (mono_arch_emit_setret): use OP_MIPS_CVTSD to return SP floats
5009         (mono_arch_output_basic_block): simplify FP load/store, handle OP_MIPS_FBLT_UN
5010         (mips_adjust_stackframe): handle FP spills
5011                 
5012         * mini-ops.h: add mips_mtc1_s2
5013         
5014         * cpu-mips.md: add mips_mtc1_s2
5015         
5016 2008-12-07  Zoltan Varga  <vargaz@gmail.com>
5017
5018         * unwind.c: New file, move the unwind info encoding functions here from
5019         aot-compiler.c, so they could be used at runtime too.
5020
5021 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
5022
5023         * mini-mips.c (mono_arch_lowering_pass): handle OP_IMUL_IMM as well
5024         (mono_arch_output_basic_block): fix OP_LOCALLOC code generation
5025         
5026 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
5027
5028         * mini-mips.c: cleanup warnings
5029         (mono_arch_lowering_pass): handle OP_LOCALLOC_IMM
5030         (mips_adjust_stackframe): handle case of taking the address of stack locals
5031         
5032 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
5033
5034         * aot-compiler.c: Implement a few functions missing from the asm writer.
5035         (emit_method_code): Only write symbols for methods when using the bin
5036         writer, since the assembler can't deal with the characters in our method
5037         names.
5038
5039         * aot-compiler.c (is_plt_patch): ICALL_ADDR is also a plt patch.
5040
5041         * method-to-ir.c (mono_method_to_ir): Transform aotconst+calli into a direct
5042         call.
5043
5044         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Rework the code
5045         a bit to also restore %rax.
5046
5047 2008-12-05  Mark Probst  <mark.probst@gmail.com>
5048
5049         * mini-ppc.c: Some simple merges from mini-ppc64.c.
5050
5051 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
5052
5053         * ssa.c (mono_ssa_compute): Only add an implicit reference at start for
5054         arguments.
5055
5056 2008-12-05  Mark Probst  <mark.probst@gmail.com>
5057
5058         * exceptions-ppc.c: Merged with exceptions-ppc64.c.
5059
5060         * mini-ppc.c, mini-ppc.h: Remove PPC_STACK_ALIGNMENT and use
5061         MONO_ARCH_FRAME_ALIGNMENT.  Struct for PPC64 function descriptors.
5062
5063         * exceptions-ppc64.c: Removed.
5064
5065         * Makefile.am: Use exceptions-ppc.c instead of exceptions-ppc64.c.
5066
5067 2008-12-05  Mark Probst  <mark.probst@gmail.com>
5068
5069         * tramp-ppc.c, mini-ppc.c, mini-ppc.h: Merged tramp-ppc.c with
5070         tramp-ppc64.c.
5071
5072         * Makefile.am: Use tramp-ppc.c instead of tramp-ppc64.c.
5073
5074         * tramp-ppc64.c: Removed.
5075
5076 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
5077
5078         * aot-compiler.c (add_generic_instances): Skip non-generic classes in
5079         the TYPESPEC table.
5080
5081 2008-12-05  Mark Probst  <mark.probst@gmail.com>
5082
5083         * mini-ppc.h: Merged mini-ppc64.h with mini-ppc.h.
5084
5085         * exceptions-ppc64.c, tramp-ppc64.c, mini-arch.h, Makefile.am: Use
5086         mini-ppc.h instead of mini-ppc64.h.
5087
5088         * mini-ppc64.h: Removed.
5089
5090 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
5091
5092         * mini-mips.c: introduce USE_LDC_SDC: use ldc1/sdc1 to load/store doubles, disabled by default
5093         
5094         * mini-mips.c (mono_arch_emit_outarg_vt): fix offset calculation for memcpy in structure passing.
5095         
5096 2008-12-05  Mark Probst  <mark.probst@gmail.com>
5097
5098         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c:
5099         Removed FIRST/LAST_[GF]REG macros, to make merging PPC64 with PPC
5100         code easier.
5101
5102 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
5103
5104         * basic-simd.cs: Tests for operator == and != on  Vector8us and Vector16b.
5105
5106 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
5107
5108         * simd-intrinsics.c: Add support for operator == and != to Vector8(u)s and Vector16(s)b.
5109
5110 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
5111
5112         * basic-simd.cs: Tests for operator == and != on Vector4f.
5113
5114 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
5115
5116         * simd-intrinsics.c (simd_intrinsic_emit_equality): Adapt to support Vector4f.
5117
5118         * simd-intrinsics.c: Kill useless enum.
5119
5120 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
5121
5122         * cpu-mips.md: add long_conv_to_ovf_i4_2
5123         * mini-mips.c: update/add various _OVF_ opcodes to fix test failures
5124
5125 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
5126
5127         * mini-mips.c: ifdef protect automatic promotions of R4 to R8.
5128         
5129         * mini-mips.c (mono_arch_emit_setret): handle R4 case with FCONV_TO_R4 instead of FMOVE
5130
5131 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
5132
5133         * mini-mips.c (mono_arch_output_basic_block): fix codegen for OP_OR_IMM/OP_IOR_IMM
5134         
5135 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
5136
5137         * basic-simd.cs: Add tests for new methods.
5138
5139 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
5140
5141         * simd-intrinsics.c: Add support for operator == and !=
5142         on Vector4(u)i.
5143
5144         * simd-methods.h: Add SN_op_Inequality and SN_op_Equality.
5145
5146 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
5147
5148         * simd-intrinsics.c: Remove ExtractByteMask intrinsics.
5149
5150 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
5151
5152         * aot-compiler.c (add_wrappers): Add pinvoke wrappers.
5153
5154         * mini.c (mono_resolve_patch_target): Allow pinvoke methods in 
5155         MONO_PATCH_INFO_ICALL_ADDR.
5156
5157         * aot-runtime.c (MonoAotFileInfo): Correct order of fields.
5158
5159         * aot-compiler.c: Resurrect full-aot support.
5160
5161 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
5162
5163         * mini-mips.c (mono_arch_lowering_pass): handle OP_COMPARE and OP_ICOMPARE
5164         
5165 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
5166
5167         * mini-mips.c (mono_arch_output_basic_block): fix OP_IREM_UN code generation
5168         
5169 2008-12-03  Rodrigo Kumpera  <rkumpera@novell.com>
5170
5171         * basic-simd.cs: Fix tests to work under ppc.
5172         Remove tests for methods that will be removed.
5173
5174 2008-12-03  Mark Probst  <mark.probst@gmail.com>
5175
5176         * method-to-ir.c (mono_method_to_ir): Handle ldtoken of an open
5177         generic type (via a typedef or typeref) correctly.
5178
5179 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
5180
5181         * mini-trampolines.c (mono_magic_trampoline): Add some debugging code to help
5182         diagnose an assertion failure.
5183
5184 2008-12-02  Mark Probst  <mark.probst@gmail.com>
5185
5186         * tramp-ppc64.c (mono_arch_create_rgctx_lazy_fetch_trampoline):
5187         Fix trampoline size.
5188
5189         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: A few floating point
5190         conversion opcodes are implemented natively instead via emulation.
5191
5192 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
5193
5194         * cpu-mips.md: remove mips_xori
5195
5196         * mini-ops.h:  remove mips_xori
5197
5198         * mini-mips.h: replace OP_MIPS_XORI with OP_IXOR
5199
5200         * mini-mips.c (mono_arch_decompose_long_opts): Add ladd_imm, lsub, lsub_imm, lneg, lsub_ovf, lsub_ovf_un.
5201         
5202         * mini-mips.c (mono_arch_lowering_pass, mono_arch_output_basic_block): fix IXOR handling
5203         
5204 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
5205
5206         * cpu-mips.md: fix instruction lengths.
5207
5208         * mini-mips.h: define MONO_ARCH_NO_IOV_CHECK
5209
5210         * mini-mips.c: move most instruction rewriting into decompose_ops. Implement conditional branches and exceptions. Fix jump table patch handling. Implement add/sub OVF.
5211
5212         * mini-ops.h: fix slti / sltiu op profiles.
5213         
5214 2008-12-02  Martin Baulig  <martin@ximian.com>
5215
5216         * method-to-ir.c (mono_method_to_ir): Disable debugging
5217         information for the init locals block to make the debugger stop
5218         after all locals have been initalized.
5219
5220 2008-12-02  Martin Baulig  <martin@ximian.com>
5221
5222         * mini.c (mini_method_compile): Disable MONO_OPT_DEADCE when
5223         running inside the debugger.
5224
5225 2008-12-01  Zoltan Varga  <vargaz@gmail.com>
5226
5227         * mini.c (mini_method_compile): Only run local deadce if MONO_OPT_DEADCE
5228         is enabled.
5229
5230         * method-to-ir.c (mono_method_to_ir): Fix invalid code generated by the 
5231         alu->alu imm optimization which only shows if deadce is disabled.
5232
5233         * aot-compiler.c: Rename the function names for the binary and asm writers
5234         so they can coexist in the same process. Rework the xdebug code to use the
5235         asm writer. This avoids the need to call into the runtime to dump the
5236         debugging info. Add more debugging info for types.
5237
5238         * mini-<ARCH>.h: Kill MONO_ARCH_HAVE_NORMALIZE_OPCODES define.
5239
5240         * genmdesc.c genmdesc.pl mini.h: Don't put the CEE_ opcodes into the
5241         cpu description tables, they can't occur in cpu-<ARCH>.md.
5242
5243         * method-to-ir.c (mono_method_to_ir): Set the type of the value pushed on
5244         the stack in CEE_LDFLDA. Fixes #450542.
5245
5246         * generics.cs: Add a new test.
5247
5248 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
5249
5250         * mini-ops.h: updated MIPS opcodes
5251         * mini-mips.c: decompose long opts
5252         * mini-mips.h: decompose long opts
5253         
5254 2008-11-29  Mark Mason   <mmason@upwardaccess.com>
5255
5256         * cpu-mips.md: fix length on int_rem_un
5257         * mini-mips.c (mips_stackframe_adjust): fix insertion of spillvars region in MIPS stackframes.
5258         
5259 2008-11-29  Zoltan Varga  <vargaz@gmail.com>
5260
5261         * mini.h aot-runtime.c: Fix building with DISABLE_AOT.
5262
5263         * mini-codegen.c (mono_print_ins_index): Handle OP_VOIDCALL_MEMBASE.
5264
5265 2008-11-29  Martin Baulig  <martin@ximian.com>
5266
5267         * mini-exceptions.c (mono_handle_native_sigsegv): Check
5268         mono_debug_using_mono_debugger() in addition to the
5269         `no_gdb_backtrace' flag in the `MonoDebugOptions'.
5270
5271 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
5272
5273         * mini-ops.h: updated more MIPS opcodes
5274         * mini-mips.c: FP compare/branch working again, clean up last of CEE_ -> OP_ mappings
5275         * cpu-mips.md: Added MIPS versions of new FP compare/branch opcodes.
5276         
5277 2008-11-28  Mark Probst  <mark.probst@gmail.com>
5278
5279         * mini-ppc64.c: Patch the RGCTX fetch trampoline correctly.
5280
5281 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
5282
5283         * mini-mips.c (mono_arch_emit_call): adding missing conversion to fp single when passing in integer arg register.
5284         * mini-mips.c (mips_adjust_stackframe): compensate for spill-down logic.
5285         * mini-ops.h: correct selected mips opcode entries
5286         
5287 2008-11-28  Mark Probst  <mark.probst@gmail.com>
5288
5289         * mini-ppc64.c, mini-ppc64.h: Enable generalized IMT thunks and
5290         make them work.
5291
5292 2008-11-28  Mark Probst  <mark.probst@gmail.com>
5293
5294         * mini-ppc64.h, tramp-ppc64.c: Make generic code sharing work.
5295
5296 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
5297
5298         * method-to-ir.c, mini-trampolines.c: protect IMG code with #ifdef MONO_ARCH_HAVE_IMT to fix compile errors.
5299         * mini-mips.c: Fixup stackframe assignments after allocation of spillvars.
5300         * mini-mips.h: disable IMT
5301         * tramp-mips.c (mono_arch_get_vcall_slot): fix offset extraction
5302         
5303 2008-11-28  Mark Probst  <mark.probst@gmail.com>
5304
5305         * mini-ppc64.c, mini-ppc64.h: Don't emulate long ops.
5306
5307 2008-11-28  Mark Probst  <mark.probst@gmail.com>
5308
5309         * mini-ppc64.c, exceptions-ppc64.c: Several fixes.
5310
5311 2008-11-28  Zoltan Varga  <vargaz@gmail.com>
5312
5313         * method-to-ir.c (handle_isinst): Use PCONST instead of ICONST for
5314         consistency.
5315
5316 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
5317
5318         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
5319         for Set/GetVector aligned versions.
5320
5321 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
5322
5323         * basic-simd.cs: Add tests for Get/SetVector.
5324
5325 2008-11-27  Mark Probst  <mark.probst@gmail.com>
5326
5327         * mini.c: Removed g_slist_append_mempool().  Now in
5328         metadata/mempool.c.
5329
5330 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
5331
5332         * simd-intrinsics.c (mono_emit_vector_ldelema): Extract the element
5333         size properly and make the bounds check optional.
5334
5335         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
5336         for SetVector and IsAligned.
5337
5338 2008-11-27  Zoltan Varga  <vargaz@gmail.com>
5339
5340         * mini.c: Remove unused mono_normalize_opcodes () function.
5341
5342 2008-11-26  Mark Probst  <mark.probst@gmail.com>
5343
5344         * method-to-ir.c (mini_emit_inst_for_method): Small fix: we're
5345         using the new atomic add ops now.
5346
5347         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Implemented atomic
5348         add.
5349
5350 2008-11-26  Mark Probst  <mark.probst@gmail.com>
5351
5352         * mini-ppc64.c: Several fixes.
5353
5354 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
5355
5356         * cpu-mips.md: added jump_table
5357         * mini-mips.c: added jump_table. Eliminate compare-imm when lowering. Remove dead function.             
5358
5359 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
5360
5361         * mini-mips.c, mini-mips.h, tramp-mips.c, cpu-mips.md: Initial upgrade of MIPS port to new IR.
5362
5363 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
5364
5365         * mini-ops.h: corrected a handful of MIPS opcodes.
5366
5367 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
5368
5369         * aot-compiler.c: MIPS to use ELF writer
5370
5371 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
5372
5373         * mini-codegen.c: remove MIPS specific assert.
5374
5375 2008-11-25  Mark Probst  <mark.probst@gmail.com>
5376
5377         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Several
5378         fixes.  PPC64 now passes most of the runtime regressions.
5379
5380 2008-11-24  Zoltan Varga  <vargaz@gmail.com>
5381
5382         * regalloc2.c: Distinguish between use/def positions. Optimize the creation of
5383         volatile intervals a bit.
5384
5385 2008-11-24  Mark Probst  <mark.probst@gmail.com>
5386
5387         * basic-long.cs: New test case.
5388
5389 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
5390
5391         * mini.c (mini_method_compile): Disable globalra for large methods for 
5392         now.
5393
5394         * regalloc2.c (order_moves): Add fp support.
5395
5396         * branch-opts.c (mono_remove_critical_edges): Split non-critical edges whose
5397         source bblock ends with an OP_BR_REG.
5398
5399         * ratests.cs: Add a new test.
5400
5401 2008-11-23  Mark Probst  <mark.probst@gmail.com>
5402
5403         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c: Disable generic code
5404         sharing.  PPC64 now passes generics.exe.
5405
5406 2008-11-23  Mark Probst  <mark.probst@gmail.com>
5407
5408         * mini-ppc64.c: Several fixes.  PPC64 now runs iltests.exe.
5409
5410 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
5411
5412         * exceptions-x86.c (mono_arch_find_jit_info): Avoid reading uninitialized
5413         memory when mono_jit_info_table_find () can't find the method in the
5414         LMF case.
5415
5416         * aot-compiler.c (mono_save_xdebug_info): Emit complete debug info for
5417         AOTed code too.
5418         
5419         * aot-compiler.c (mono_save_xdebug_info): Make this work with the assembly
5420         writer too.
5421
5422 2008-11-23  Mark Probst  <mark.probst@gmail.com>
5423
5424         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, cpu-ppc64.md:
5425         Several fixes.  PPC64 now runs exceptions.exe and
5426         devirtualization.exe.
5427
5428 2008-11-22  Mark Probst  <mark.probst@gmail.com>
5429
5430         * mini-ppc64.c, tramp-ppc64.c: Small fixes.  PPC64 now runs
5431         arrays.exe and basic-math.exe.
5432
5433 2008-11-22  Mark Probst  <mark.probst@gmail.com>
5434
5435         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c,
5436         cpu-ppc64.md: Several fixes.  PPC64 now runs objects.exe.
5437
5438 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
5439
5440         * simd-intrinsics.c: Add support ArrayExtension intrinsics.
5441
5442 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
5443
5444         * method-to-ir.c: Move bounds checking macros to ir-emit.h
5445
5446         * ir-emit.h: Move macros from method-to-ir.c to here.
5447
5448 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
5449
5450         * mini-ops.h: Correct the long simd ops to use LREG.
5451
5452 2008-11-21  Zoltan Varga  <vargaz@gmail.com>
5453
5454         * mini-ops.h: Correct the dreg type of OP_LOADI8_MEMBASE.
5455         
5456         * mini-ops.h: Correct the dreg type of a few long opcodes.
5457
5458         * mini-amd64.h: Applied patch from Mihai Chelaru <kefren@ngnetworks.ro>.
5459         Add netbsd support.
5460
5461 Fri Nov 21 12:52:23 CET 2008 Paolo Molaro <lupus@ximian.com>
5462
5463         * mini-ppc.c: remove negative stack references in epilog
5464         for platforms that don't support the red zone.
5465
5466 2008-11-21  Mark Probst  <mark.probst@gmail.com>
5467
5468         * mini-ppc64.h, cpu-ppc64.md: Fixed caller/callee saved floating
5469         point regs.  Now PPC64 passes basic-calls.exe.
5470
5471 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
5472
5473         * basic-simd.cs: Add tests for accessors of Vector2l.
5474
5475 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
5476
5477         * mini-ops.h: Added OP_INSERTX_I8_SLOW,.
5478
5479         * mini-x86.c (mono_arch_decompose_long_opts): Decompose OP_INSERTX_I8_SLOW.
5480         
5481         * simd-intrinsics.c: Add support for Vector2l and Vector2ul.
5482
5483 2008-11-21  Mark Probst  <mark.probst@gmail.com>
5484
5485         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Several fixes.  Now
5486         PPC64 passes basic-long.exe.
5487
5488 2008-11-20  Mark Probst  <mark.probst@gmail.com>
5489
5490         * decompose.c: Decompose carry and overflow add on PPC64 like on
5491         other 64 bit archs.  Don't decompose sub at all on PPC64.
5492
5493         * mini-ppc64.c, exceptions-ppc64.c, tramp-ppc64.c, cpu-ppc64.md:
5494         Several fixes and new opcodes.  Now PPC64 runs (but doesn't pass)
5495         basic-long.exe.
5496
5497 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
5498
5499         * basic-simd.cs: Add tests for accessors of Vector2d.
5500
5501 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
5502
5503         * mini-ops.h: Added OP_INSERTX_R8_SLOW,.
5504
5505         * cpu-x86.md: Same.
5506
5507         * mini-x86.c (mono_arch_output_basic_block): Same.
5508         
5509         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector2d.
5510
5511 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
5512
5513         * basic-simd.cs: Add tests for accessors of Vector4f.
5514
5515 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
5516
5517         * mini-ops.h: Added OP_INSERTX_R4_SLOW,.
5518
5519         * cpu-x86.md: Same.
5520
5521         * mini-x86.c (mono_arch_output_basic_block): Same.
5522         
5523         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4f.
5524
5525 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
5526
5527         * basic-simd.cs: Add tests for accessors of Vector4i and Vector4ui.
5528
5529 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
5530
5531         * mini-ops.h: Added OP_INSERTX_I4_SLOW,.
5532
5533         * cpu-x86.md: Same.
5534
5535         * mini-x86.c (mono_arch_output_basic_block): Same.
5536         
5537         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4i and Vector4ui.
5538
5539 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
5540
5541         * cpu-x86.md: Use reasonable sizes for extractx_u2 and insertx_u1_slow.
5542
5543 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
5544
5545         * simd-intrinsics.c: Enable setters for Vector16sb.
5546
5547 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
5548
5549         * mini-ops.h: Added OP_EXTRACTX_U2, OP_INSERTX_U1_SLOW.
5550
5551         * cpu-x86.md: Same.
5552
5553         * mini-x86.c (mono_arch_output_basic_block): Same.
5554         
5555         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector16b.
5556
5557 2008-11-19  Rodrigo Kumpera  <rkumpera@novell.com>
5558
5559         * simd-intrinsics.c: Implement setter for Vector8us.
5560
5561 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
5562
5563         * aot-compiler.c (mono_save_xdebug_info): Emit correct location info
5564         for dead variables.
5565
5566 Wed Nov 19 18:27:41 CET 2008 Paolo Molaro <lupus@ximian.com>
5567
5568         * mini-ppc.c: remove references to the red zone in the prolog
5569         (for systems that don't support it).
5570
5571 2008-11-19  Mark Probst  <mark.probst@gmail.com>
5572
5573         * cpu-ppc64.md: Fixed a few instruction lengths.
5574
5575         * mini-ppc64.c: Don't emit SETLRET.  PPC64 passes basic-float.exe,
5576         now.
5577
5578 2008-11-19  Mark Probst  <mark.probst@gmail.com>
5579
5580         * mini-ppc64.c, cpu-ppc64.md: Fixed some opcodes.  PPC64 passes
5581         basic.exe now.
5582
5583 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
5584
5585         * aot-compiler.c (mono_save_xdebug_info): Add more parameter types.
5586
5587 2008-11-18  Rodrigo Kumpera  <rkumpera@novell.com>
5588
5589         * mini-ops.h: Added OP_INSERT_I2.
5590
5591         * cpu-x86.md: Same.
5592
5593         * mini-x86.c (mono_arch_output_basic_block): Same.
5594         
5595         * simd-intrinsics.c: Implement setter for Vector8s.
5596
5597         * simd-methods.h: Add the names of get setters of Vector8s.
5598
5599 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
5600
5601         * aot-compiler.c (mono_save_xdebug_info): Add support for parameters.
5602         
5603         * aot-compiler.c (mono_save_xdebug_info): Add preliminary support for
5604         parameters.
5605
5606         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
5607
5608 2008-11-18  Mark Probst  <mark.probst@gmail.com>
5609
5610         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Changes
5611         for PPC64.  An empty program runs now.
5612
5613 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
5614
5615         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
5616
5617         * aot-compiler.c mini.c mini.h: Add a JIT debugging mode modelled after
5618         a similar mode in Kaffe: When the the MONO_XDEBUG env var is set, debugging
5619         info for JITted code is emitted into a shared library, loadable into gdb.
5620
5621 2008-11-18  Mark Probst  <mark.probst@gmail.com>
5622
5623         * Makefile.am: Changes to build PPC64.
5624
5625         * mini-arch.h: Include mini-ppc64.h on PPC64.
5626
5627 2008-11-18  Mark Probst  <mark.probst@gmail.com>
5628
5629         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Updated with changes
5630         in PPC code up to r119147.
5631
5632 2008-11-18  Mark Probst  <mark.probst@gmail.com>
5633
5634         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
5635         cpu-ppc64.md: Changes for PPC64.
5636
5637         Based on code submitted by andreas.faerber@web.de at
5638         https://bugzilla.novell.com/show_bug.cgi?id=324134 under the
5639         X11/MIT license.
5640
5641 2008-11-18  Mark Probst  <mark.probst@gmail.com>
5642
5643         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
5644         cpu-ppc64.md: Copied from the corresponding PPC files from
5645         r118846.
5646
5647 2008-11-18  Scott Peterson  <lunchtimemama@novell.com>
5648
5649         * mini-ops.h: Added OP_ROUND.
5650
5651         * cpu-x86.md: Added round.
5652
5653         * mini-x86.c: Added support for intrinsicing Math.Round (double).
5654
5655         * basic-math.cs: Added test_0_round to test rounding.
5656
5657         Contributed under MIT/X11 license.
5658
5659 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
5660
5661         * aot-compiler.c : Fix the Winx64 build.
5662
5663         Contributed under MIT/X11 license.
5664
5665 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
5666
5667         * mini-x86.c (mono_arch_output_basic_block): Use movsd instead of monvups
5668         in OP_EXTRACT_R8 to avoid possible stack corruption.
5669
5670 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
5671
5672         * mini-ops.h: Added OP_EXTRACT_R8/I8.
5673
5674         * cpu-x86.md: Added extract_r8.
5675
5676         * mini-x86.c (mono_arch_output_basic_block): Emmit OP_EXTRACT_R8.
5677         
5678         * mini-x86.c: Added mono_arch_decompose_long_opts to break OP_EXTRACT_I8 into
5679         a couple of OP_EXTRACT_I4.
5680
5681         * mini-x86.h: Define MONO_ARCH_HAVE_DECOMPOSE_LONG_OPTS if simd is enabled.
5682
5683         * simd-intrinsics.c: Implement getters for Vector2l/2ul/2d.
5684
5685 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
5686
5687         * simd-intrinsics.c (vector2l_intrinsics): CompareGreaterThan requires sse 4.2
5688         and not 4.1. 
5689
5690 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
5691
5692         * method-to-ir.c (handle_delegate_ctor): Emit the address of the delegate
5693         trampoline as an AOT const of the proper type instead of MONO_PATCH_INFO_ABS.
5694
5695         * mini.c (mono_codegen): Remove the handling of delegate trampolines, they
5696         are not needed any more.
5697
5698         * mini.h: Remove the unused INS_LIST macros.
5699
5700         * mini.c (mini_method_compile): Remove a disable globalra case which is no
5701         longer needed.
5702
5703         * *.h *.c: Remove duplicate MonoInst emission macros, use the ones in
5704         ir-emit.h.
5705
5706         * regalloc.h *.c: Remove references to mono_regstate_next_int (), use
5707         mono_alloc_ireg () instead.
5708
5709         * mini-<ARCH>.c: Include ir-emit.h. Remove duplicate MonoInst emission
5710         macros.
5711
5712         * mini-amd64.c (emit_load_volatile_arguments): Removed, not needed
5713         on amd64.
5714
5715         * aot-runtime.c (load_aot_module): Disable AOT when running under
5716         CAS.
5717
5718         * mini-amd64.h: Change the monitor fastpath defines to check for
5719         !PLATFORM_WIN32 so they work on *bsd too.
5720
5721         * mini.h mini.c mini-hhpa.c: Remove more unused code.
5722
5723         * mini-s390.c mini-s390x.c: Remove !cfg->new_ir code.
5724
5725         * mini.h (MonoCompile): Remove new_ir flag.
5726
5727         * regalloc.h regalloc.c: Remove unused code.
5728
5729         * cpu-*.md: Remove more unused opcodes.
5730
5731         * simple-cee-ops.h simple-mini-ops.h: Removed.
5732
5733         * mini-ops.h *.c cpu-<ARCH>.md: Remove more unused opcodes.
5734         
5735 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
5736
5737         * aliasing.h: Removed.
5738
5739         * *.c: Remove references to aliasing.h and inssel.h.
5740
5741         * mini.c: Remove additional unused functions.
5742
5743         * mini-ops.h cpu-*.md: Remove unused opcodes.
5744
5745 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
5746
5747         Remove the old JIT code.
5748
5749         * inssel*.brg: Removed.
5750
5751         * ssa.c abcremoval.c aliasing.c: Removed.
5752
5753         * ssa2.c: Renamed to ssa.c.
5754
5755         * abcremoval2.c: Renamed to abcremoval.c.
5756
5757         * *.c: Removed all !cfg->new_ir code.
5758
5759         * mini-<ARCH>.c: Removed mono_arch_call_opcode (), 
5760         mono_arch_emit_this_vret_args (), and mono_arch_get_inst_for_method ().
5761
5762         * mini.c: Removed the old mono_method_to_ir () and all the code used by it.
5763         
5764 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
5765
5766         * aot-compiler.c aot-runtime.c: Emit most of the non-table data in a structure
5767         to simplify the code and cut back on the number of global symbols in the AOT
5768         file.
5769         
5770         * aot-compiler.c aot-runtime.c: Get rid of the unused plt_jump_table.
5771
5772 2008-11-15  Zoltan Varga  <vargaz@gmail.com>
5773
5774         * aot-runtime.c aot-compiler.c: Unify the plt_jump_table/plt_info tables
5775         with the got/got_info tables.
5776
5777         * mini.h: Bump AOT file format version.
5778         
5779         * unwind.h: New file, contains definitions for stack unwinding.
5780
5781         * mini.c (mono_emit_unwind_op): New helper function to append an unwind op
5782         to cfg->unwind_ops.
5783         
5784         * aot-compiler.c: Generalize the emitting of unwind information to use the
5785         information in cfg->unwind_ops.
5786
5787         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info.
5788
5789         * aot-compiler.c: Emit dwarf unwind information so gdb can unwind through
5790         AOT method frames. Enable writing symbols for methods by default.
5791
5792 2008-11-14  Rodrigo Kumpera  <rkumpera@novell.com>
5793
5794         * simd-intrinsics.c (simd_intrinsic_emit_getter): Generalize this code
5795         and make it work with vectors of element sizes 1, 2 and 4.
5796
5797         * simd-intrinsics.c: Enable getter for all vectors with element size
5798         1, 2 or 4.
5799
5800         * simd-methods.h: Add the names of other getters.
5801
5802         * mini-ops.h: Added OP_EXTRACT_I2/U2/I1/U1.
5803
5804         * cpu-x86.md: Same.
5805
5806         * mini-x86.c: Same.
5807
5808 Fri Nov 14 15:54:18 CET 2008 Paolo Molaro <lupus@ximian.com>
5809
5810         * mini-ppc.h: portability fix.
5811
5812 Fri Nov 14 15:39:50 CET 2008 Paolo Molaro <lupus@ximian.com>
5813
5814         * mini-ppc.h, mini-ppc.c: avoid using the red zone as some kernels are
5815         buggy and will overwrite it.
5816
5817 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
5818
5819         * aot-compiler.c: Add functionality to emit local symbols to the elf writer.
5820         Use it to emit local symbols for all methods so AOTed methods show up with
5821         their full name in gdb/valgrind output.
5822
5823 Fri Nov 14 12:56:27 CET 2008 Paolo Molaro <lupus@ximian.com>
5824
5825         * mini-ppc.c: portability fixes.
5826
5827 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
5828
5829         * mini-trampolines.c (mono_magic_trampoline): Move the patching of plt
5830         entries out of the if (!generic_shared...) code so it is always done.
5831         (mono_class_init_trampoline): Do the patching when running under valgrind
5832         too, newer versions of valgrind have no problems with it.
5833
5834 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
5835
5836         * aot-compiler.c (emit_writeout): Rework this to make it easier to add
5837         further sections.
5838
5839 2008-11-13  Mark Probst  <mark.probst@gmail.com>
5840
5841         * mini-ppc.c, cpu-ppc.md: Reserve space for the parameter area in
5842         filters.
5843
5844 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
5845
5846         * simd-intrinsics.c: Add getter support for Vector4i and Vector4ui. 
5847
5848 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
5849
5850         * mini-ops.h: Kill diplicated ops OP_SHUFLEPS.
5851
5852         * cpu-x86.md: Same.
5853
5854         * mini-x86.c: Same.
5855
5856         * simd-intrinsics.c: Same.
5857
5858 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
5859
5860         * simd-intrinsics.c: Enable constructor intrinsics for all types.
5861
5862 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
5863
5864         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Generalize this method
5865         to work with more Vector types.
5866
5867 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
5868
5869         * simd-intrinsics.c (simd_intrinsic_emit_ctor): If the target is already a pointer
5870         store the elemens directly instead of using and intermediate.
5871
5872 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
5873
5874         * mini-amd64.c (emit_call_body): Avoid aligning call sites in AOTed code.
5875
5876         * tramp-x86.c (mono_arch_create_trampoline_code): Rework the return sequence
5877         to preserve %eax for aot plt trampolines.
5878
5879         * aot-compiler.c (compile_method): Don't skip synchronized methods.
5880         (encode_method_ref): Flag synchronized methods so they won't go through
5881         the AOT trampoline.
5882
5883         * aot-compiler.c: Additional work to support AOTing synchronized methods/
5884         wrappers.
5885
5886         * cpu-ia64.md (jmp): Increase max length.
5887
5888 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
5889
5890         * aot-runtime.c (load_method): Avoid calling runtime_class_init () for
5891         open generic classes.
5892
5893         * aot-compiler.c: Enable the ELF writer on ELF platforms.
5894
5895         * method-to-ir.c (mono_method_to_ir2): Revert the last change to the
5896         box+brtrue optimization since it causes test failures on x86.
5897
5898 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
5899
5900         * mini-ops.h: Remove OP_PUSH_R4 and OP_LOADX_STACK.
5901
5902         * cpu-x86.md: Same.
5903
5904         * mini-x86.c: Same.
5905
5906         * mini.h (struct MonoCompile): Add simd_ctor_var to be used as storage
5907         for simd ctor values. 
5908
5909         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Use simd_ctor_var for the constructor
5910         instead of directly pushing the values on stack. This saves about 15 bytes of generated code.
5911
5912 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
5913
5914         * simd-methods.h: Rename SubWithSaturation, ArithmeticRightShift and
5915         LogicalRightShift.
5916
5917         * simd-instrincs.c: Same.
5918
5919         * basic-simd.cs: Same.
5920
5921 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
5922
5923         * ratests.cs: Add more tests.
5924
5925         * regalloc2.c (add_spill_code): Handle more corner cases.
5926
5927 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
5928
5929         * regalloc2.c (INS_POS_INTERVAL): Decrease this to 8 to avoid overflows.
5930         (update_liveness): Avoid holes in the liveness ranges of hregs if they are
5931         both the source an destination of an instruction.
5932
5933 Tue Nov 11 19:30:50 CET 2008 Paolo Molaro <lupus@ximian.com>
5934
5935         * jit-icalls.c, local-propagation.c, mini.c, ssa.c, ssapre.c, trace.c,
5936         wapihandles.c: more portability changes.
5937
5938 Tue Nov 11 18:56:33 CET 2008 Paolo Molaro <lupus@ximian.com>
5939
5940         * aot-compiler.c, aliasing.c, abcremoval.c: portability changes.
5941         * mini.c mini.h, aot-runtime.c: the aot segfault-handling code is not
5942         safe to execute in a signal handler and the kernel provides better
5943         the info in /proc/self/smaps. Avoid the assert on sigaction during
5944         cleanup.
5945
5946 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
5947
5948         * method-to-ir.c (mono_method_to_ir2): In the box+brtrue optimization, only
5949         do the bblock linking hack if it is actually needed.
5950
5951         * Makefile.am (patch-libtool): New helper target to patch libtool to speed
5952         up linking.
5953
5954         * liveness.c (ENABLE_LIVENESS2): Reenable this for 64 bit archs as the
5955         crash problem is fixed.
5956
5957         * branch-opts.c (mono_remove_critical_edges): Link up newly added
5958         bblocks.
5959
5960         * mini.c (mini_method_compile): Compute unreachable bblocks properly even
5961         for catch clauses.
5962         (mini_method_compile): Set the starting value of next_vreg to 
5963         MAX_IREGS + MAX_FREGS when using globalra.
5964
5965         * method-to-ir.c (mono_method_to_ir2): Mark bblocks starting
5966         filter clauses with BB_EXCEPTION_HANDLER.
5967
5968         * regalloc2.c (assign_spill_slots): Set cfg->rgctx_var.
5969
5970 2008-11-10  Mark Probst  <mark.probst@gmail.com>
5971
5972         * mini-x86.c (mono_arch_get_argument_info): Don't align argument
5973         space for stdcall.  Fixes regressions on Win32.
5974
5975 2008-11-10  Zoltan Varga  <vargaz@gmail.com>
5976
5977         * regalloc2.c (handle_reg_constraints): Avoid adding code to unreachable
5978         bblocks.
5979         (linear_scan): Remove an assert which doesn't seem to be needed.
5980
5981         * local-propagation.c (mono_local_deadce): Avoid a call to
5982         MONO_DELETE_INS which would screw up the instruction linking.
5983
5984         * mini.c (mono_decompose_op_imm): Make this work with globalra.
5985
5986         * regalloc2.c: Upgrade to work the current JIT code.
5987
5988 2008-11-09  Zoltan Varga  <vargaz@gmail.com>
5989
5990         * method-to-ir.c (inline_method): Merge more basic blocks to help the AOT
5991         case.
5992
5993         * aot-runtime.c: Remove some dead code.
5994
5995         * tramp-arm.c: Use 'code' as the runnning pointer in code generation for
5996         consistency.
5997         (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Implement aot support.
5998
5999         * aot-runtime.c (load_named_code): Decode the offset of lazy fetch
6000         trampolines using sscanf since atoi doesn't work on large unsigned values.
6001
6002         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): 
6003         Initialize code_size.
6004
6005 2008-11-08  Mark Probst  <mark.probst@gmail.com>
6006
6007         * method-to-ir.c (mini_emit_inst_for_method): Make
6008         Interlocked.CompareExchange work for Int arguments on 32 bit
6009         archs, as well.
6010
6011 2008-11-07  Mark Probst  <mark.probst@gmail.com>
6012
6013         * method-to-ir.c (mono_method_to_ir2): Fixed a funny commit error.
6014
6015 2008-11-06  Bill Holmes  <billholmes54@gmail.com>
6016
6017         * main.c Fix MSVC build.
6018
6019         Contributed under MIT/X11 license.
6020
6021 2008-11-06  Mark Probst  <mark.probst@gmail.com>
6022
6023         * mini-x86.c (mono_arch_allocate_vars): Make sure locals that need
6024         alignment larger than 8 bytes are aligned correctly, too.
6025
6026         * mini.c: Honor the min_align field of MonoClass when laying out
6027         the stack.
6028
6029 2008-11-06  Zoltan Varga  <vargaz@gmail.com>
6030
6031         * method-to-ir.c (mono_method_to_ir2): Fix AOT support for CEE_SWITCH on arm.
6032
6033         * aot-compiler.c (emit_plt): Fix a warning.
6034         
6035         * aot-compiler.c: Implement ARM support in the binary writer.
6036
6037 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
6038
6039         * basic-simd.cs: Add test for getter with byref arg.
6040         Fix the naming of a few tests.
6041         Add missing checks to a test.
6042
6043 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
6044
6045         * aot-compiler.c (emit_plt): Make the arm code work with the binary writer.
6046
6047         * aot-compiler.c aot-runtime.c mini-trampolines.c tramp-amd64.c: Implement
6048         most of the full-aot support for monitor enter/exit trampolines.
6049
6050         * tramp-x86.c tramp_amd64.c: Add AOT compatible variants of the monitor
6051         enter/exit trampoline creation functions.
6052
6053         * Makefile.am: Fix the generation of buildver.h so it is not invoked during
6054         make dist.
6055
6056 Wed Nov 5 16:28:53 CET 2008 Paolo Molaro <lupus@ximian.com>
6057
6058         * mini.h, aot-compiler.c, method-to-ir.c, aot-runtime.c: remove the
6059         incorrectly added MONO_WRAPPER_MONITOR_* (in r117651-r117652) and
6060         implement the needed functionality without adding crap to the runtime.
6061
6062 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
6063
6064         * mini-trampolines.c (mono_create_monitor_enter_trampoline): Fix the
6065         non-x86 builds.
6066
6067         * mini.c (mono_build_date): New global version holding the build date in
6068         string format.
6069         
6070         * Makefile.am (buildver.c): Generate a file containing the build date.
6071
6072         * main.c: Set the build date from the generated file.
6073
6074         * mini.c (mono_get_runtime_build_info): New helper function returning build
6075         information in a string format.
6076         
6077         * driver.c (mono_main): Print the build date in --version.
6078
6079         * aot-compiler.c aot-runtime.c: Embed the build information into the AOT
6080         file when the bind-to-runtime-version option is used.
6081
6082 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
6083
6084         * simd-intrinsics.c: Fix bug when using getters and byref args. 
6085
6086 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
6087
6088         * simd-methods.h: Rename prefetch methods.
6089
6090         * simd-intrinsics.c: Same.      
6091
6092 2008-11-05  Mark Probst  <mark.probst@gmail.com>
6093
6094         * tramp-amd64.c: Enlarge the Monitor.Enter/Exit trampoline code
6095         sizes.
6096
6097 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
6098
6099         * aot-compiler.c: Use the bundled elf header files instead of depending on
6100         the system one.
6101         
6102         * aot-compiler.c (emit_symbol_diff): Allocate memory from the acfg
6103         mempool.
6104
6105         * method-to-ir.c (mono_method_check_inlining): Avoid a getenv () call
6106         on every call.
6107
6108 2008-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
6109
6110         * cpu-x86.md: Add store nta ops.
6111
6112         * mini-ops.h: Same.
6113
6114         * mini-x86.c: Same.
6115
6116         * mini.h: Add an enum for simd prefetch modes.
6117
6118         * simd-methods.h: Refactor the store_aligned code to handle multiple kinds
6119         of store. Use the changed code to support store nta.
6120
6121         * simd-intrinsics.c: Add prefetch ops for all vector types.
6122
6123 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
6124
6125         * aot-compiler.c: Add an option for JIT compiling the methods by multiple 
6126         threads.
6127         
6128         * aot-compiler.c: Use statically allocated buffers for constructing symbol 
6129         names.
6130
6131         * aot-runtime.c aot-compiler.c: Add support for the MONITOR_ENTER/EXIT
6132         trampolines.
6133
6134 2008-11-04  Mark Probst  <mark.probst@gmail.com>
6135
6136         * mini-x86.c: Fixed commit.
6137
6138 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
6139
6140         * aot-compiler.c (emit_plt): Align the plt section only on x86.
6141
6142 2008-11-04  Mark Probst  <mark.probst@gmail.com>
6143
6144         * mini-trampolines.c, mini.h: Two new trampolines: MONITOR_ENTER
6145         and MONITOR_EXIT, for the ASM fastpaths.
6146
6147         * method-to-ir.c: Use the ASM fastpath for Monitor.Enter/Exit if
6148         available.
6149
6150         * mini.c, patch-info.h: Signature and patch infos for
6151         Monitor.Enter/Exit trampolines.
6152
6153         * mini-amd64.c, mini-x86.c: Make emit_tls_get() non-static.
6154
6155         * tramp-amd64.c, tramp-x86.c, mini-amd64.h, mini-amd64.h:
6156         Monitor.Enter/Exit ASM fastpath for Linux.
6157
6158 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
6159
6160         * mini.c (mono_method_to_ir): Fix soft-float support in Array.Get/Set.
6161
6162         * objects.cs: Add a new test.
6163         
6164         * aot-compiler.c: Use mono_100ns_ticks () for computing the profiling info.
6165
6166         * aot-runtime.c (load_method): Run class initialization in the PLT case even
6167         if MONO_LOG_LEVEL is set.
6168
6169         * debug-mini.c (serialize_variable): Fix the encoding of dead variables.
6170
6171         * aot-runtime.c (mono_aot_get_method): Skip out-of-date AOT modules.
6172
6173         * aot-compiler.c (emit_and_reloc_code): Speed this up a little.
6174         
6175         * aot-compiler.c: Change the relocation code to use virtual addresses instead
6176         of file offsets. Align the sections belonging to the data segment to 
6177         PAGESIZE.
6178
6179 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
6180
6181         * aot-compiler.c: Simplify the elf writer by depending on the definitions in
6182         elf.h. Port it to amd64.
6183
6184 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
6185
6186         * driver.c: Enable SIMD by default.
6187
6188 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
6189
6190         * cpu-x86.md: Add prefetch op.
6191
6192         * mini-ops.h: Same.
6193
6194         * mini-x86.c: Same.
6195
6196         * mini.h: Add an enum for simd prefetch modes.
6197
6198         * simd-methods.h: Add prefetch function names.
6199
6200         * simd-intrinsics.c: Add prefetch ops for all vector types.
6201
6202 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
6203
6204         * aot-compiler.c (emit_bytes): Speed this up a little.
6205
6206 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
6207
6208         * aot-compiler.c: Add JIT time etc. statistics.
6209         
6210         * aot-compiler.c (compile_method): Fix the copying of the cfgs array.
6211
6212         * mini.h (MonoCompile): Add 'got_offset' field.
6213
6214         * aot-compiler.c: Store the got offset in MonoCompile, get rid of the
6215         method_got_offsets array.
6216
6217         * aot-compiler.c aot-runtime.c: Add support for the monitor enter/exit
6218         wrappers.
6219
6220         * aot-compiler.c (compile_method): Add generic method instances referenced
6221         by the method to the list of methods to be compiled, this is required so if
6222         A<T> references B<T>, and another assembly references A<int>, then it will
6223         also get a copy of B<int>.
6224
6225         * method-to-ir.c (mini_emit_inst_for_method): Use the proper wrapper type
6226         when checking for monitor enter/exit.
6227
6228 2008-10-30  Mark Probst  <mark.probst@gmail.com>
6229
6230         * method-to-ir.c (mini_emit_inst_for_method): Use the IL fastpaths
6231         for Monitor.Enter and Monitor.Exit if enabled.
6232
6233         * mini-x86.h, mini-amd64.h: Enable the IL fastpaths for Linux and
6234         Solaris.
6235
6236 2008-10-30  Zoltan Varga  <vargaz@gmail.com>
6237
6238         * method-to-ir.c (type_from_op): Convert CEE_CONV_U on OP_ICONV_TO_U instead
6239         of an OP_MOVE. Fixes #440046.
6240
6241         * basic-long.cs: Add a new test.
6242
6243 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
6244
6245         * mini.h: Add synchronization note for the managed counter-part.
6246
6247         * simd-intrinsics.c: Add SimdRuntime.get_AccelMode intrinsic that
6248         returns the simd caps of the current cpu.
6249
6250 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
6251
6252         * basic-simd.cs: Remove Console.WriteLine.
6253
6254 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
6255
6256         * basic-simd.cs: New tests for Vector2ul.
6257
6258 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
6259
6260         * simd-intrinsics.c: Add new vector type Vector2ul.
6261
6262 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
6263
6264         * basic-simd.cs: New tests for Vector2l.
6265
6266 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
6267
6268         * cpu-x86.md: Add long version of most packed int ops.
6269
6270         * mini-ops.h: Same.
6271
6272         * mini-x86.h: Same.
6273
6274         * simd-intrinsics.c: Add new vector type Vector2l.
6275
6276 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
6277
6278         * simd-intrinsics.c: Replace SN_op_BitwiseXor with SN_op_ExclusiveOr.
6279
6280         * simd-methods.h: Remove SN_op_BitwiseXor.
6281
6282 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
6283
6284         * mini.c (mono_allocate_stack_slots_full): Align the size of vtypes to their
6285         alignment.
6286
6287 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
6288
6289         * basic-simd.cs: Test for Vector2d.
6290
6291         * basic-simd.cs (test_vector8s_pack_signed_sat): Fixed broken
6292         value.
6293
6294 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
6295
6296         * cpu-x86.md: Add double version of all packed float ops.
6297
6298         * mini-ops.h: Same.
6299
6300         * mini-x86.h: Same.
6301
6302         * simd-intrinsics.c: Add new vector type Vector2d.
6303
6304         * simd-intrinsics.c (vector4f_intrinsics): Fix ordering.
6305
6306         * simd-methods.h: Add Duplicate.
6307
6308 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
6309
6310         * basic-simd.cs: Test for packing with signed saturation.
6311
6312 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
6313
6314         * aot-compiler.c (add_generic_instances): Add all methods of generic instances
6315         found in the TYPESPEC table.
6316
6317 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
6318
6319         * aot-runtime.c (mono_aot_get_method): Log not found methods for extra methods
6320         too.
6321
6322         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
6323
6324         * mini.c (mono_method_to_ir): For MONO_PATCH_INFO_RVA, save field the token
6325         instead of the RVA, since the RVA can be changed by tools like the cil 
6326         stripper.
6327
6328         * method-to-ir.c (mono_method_to_ir2): Ditto.
6329
6330         * debug-mini.c (serialize_variable): Handle ADDRESS_MODE_DEAD.
6331         (deserialize_variable): Ditto.
6332
6333 2008-10-25  Martin Baulig  <martin@ximian.com>
6334
6335         * debug-mini.c (write_variable): Use
6336         `MONO_DEBUG_VAR_ADDRESS_MODE_DEAD' for dead variables.
6337
6338 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
6339
6340         * cpu-x86.md: Add unsigned variants of packd and packw.
6341
6342         * mini-ops.h: Same.
6343
6344         * mini-x86.h: Emit the right instruction for packd and packw.
6345         Add unsigned variants of packd and packw.
6346
6347         * simd-intrinsics.c: Packd and packw were used in place of their
6348         unsigned variants. Change that.
6349         Add intrinsics for (Signed)PackWithSignedSaturation.
6350
6351         * simd-methods.h: Add (Signed)PackWithSignedSaturation.
6352
6353 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
6354
6355         * simd-intrinsics.c (vector4i_intrinsics): New table of intrinsic type.
6356
6357 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
6358
6359         * mini-ops.h: Remove dword packed add/sub with saturation ops.
6360
6361         * cpu-x86.md: Remove dword packed add/sub with saturation ops.
6362
6363         * simd-intrinsics.c (vector4ui_intrinsics): Remove methods without
6364         sse instructions.
6365
6366         * simd-intrinsics.c (vector8s_intrinsics): Fix ordering.
6367
6368 2008-10-24  Mark Probst  <mark.probst@gmail.com>
6369
6370         * method-to-ir.c, mini.c: Special casing for the synchronized
6371         wrapper for the ldtoken+GetTypeFromHandle case.
6372
6373 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
6374
6375         * mini.c (mono_replace_ins): Move this to branch-opts.c.
6376
6377         * mini.c (mono_replace_ins): Propagate has_array_access flag to the newly
6378         created/split bblocks.
6379
6380 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
6381
6382         * mini-ops.h: Add packed signed mul high.
6383         
6384         * cpu-x86.md: Same.
6385
6386         * mini-x86.c (mono_arch_output_basic_block): Same.
6387
6388         * simd-methods.h: Add PackWithUnsignedSaturation and ShiftRightLogic.
6389
6390         * simd-intrinsics.c (vector8s_intrinsics): New table of intrinsic type.
6391
6392 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
6393
6394         * basic-simd.cs: Tests for Vector16sb.
6395
6396 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
6397
6398         * inssel.brg (stmt): Fix OP_HARD_NOP rule.
6399
6400 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
6401
6402         * mini-ops.h: Add packed signed min, max and compare greater.
6403         
6404         * cpu-x86.md: Same.
6405
6406         * mini-x86.c (mono_arch_output_basic_block): Same. Add packed add/sub with
6407         saturation.
6408
6409         * simd-methods.h: Add CompareGreaterThan.
6410
6411         * simd-methods.h: Remove CompareEquals.
6412
6413         * simd-intrinsics.c: Add new TODO entry and some cosmetic changes.
6414
6415         * simd-intrinsics.c (vector16sb_intrinsics): New table of intrinsic type.
6416
6417         * simd-intrinsics.c (vector4f_intrinsics): Rename CompareEquals to
6418         CompareEqual.
6419
6420 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
6421
6422         * basic-simd.cs: Fix tests due to change in the API.
6423
6424 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
6425
6426         * mini.c method-to-ir.c: Use mono_field_get_name () for accessing field->name.
6427
6428 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
6429
6430         * basic-simd.cs: Fix name change in Vector4f::CompareEqual.
6431
6432         * simd-intrinsics.c (simd_intrinsic_emit_store_aligned): Don't use
6433         inst_offset as this has invalid values for LDADDR.
6434
6435 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
6436
6437         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
6438
6439         * simd-intrinsics.c (vector4ui_intrinsics): Add SignedPackWithUnsignedSaturation.
6440
6441 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
6442
6443         * method-to-ir.c (initialize_array_data): Use mono_field_get_data ()
6444         for accessing field->data.
6445
6446 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
6447
6448         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
6449
6450 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
6451
6452         * simd-methods.h: Add SignedPackWithUnsignedSaturation.
6453
6454         * simd-intrinsics.c (vector8us_intrinsics): Add SignedPackWithUnsignedSaturation.
6455
6456 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
6457
6458         * dominators.c (mono_compute_natural_loops): Allocate GList enties
6459         from the cfg mempool.
6460
6461 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
6462
6463         * basic-simd.cs: Tests for new methods in Vector8us.
6464
6465 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
6466
6467         * mini-ops.h: Add multiply and store high.
6468         
6469         * cpu-x86.md: Same.
6470
6471         * mini-x86.c (mono_arch_output_basic_block): Same.
6472
6473         * simd-methods.h: Same.
6474
6475         * simd-intrinsics.c (vector8us_intrinsics): Add MultiplyStoreHigh
6476         and CompareEqual.
6477
6478 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
6479
6480         * method-to-ir.c (mono_emit_method_call_full): Remove a needless call to
6481         mono_class_setup_vtable ().
6482
6483         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Use
6484         mono_class_get_vtable_entry () for accessing klass->vtable.
6485
6486         * aot-runtime.c (load_method): Avoid a crash when using MONO_LOG_LEVEL.
6487
6488         * aot-compiler.c (add_generic_instances): Avoid a crash if a class is not
6489         found.
6490
6491         * method-to-ir.c (mono_save_token_info): Don't save references made from
6492         wrappers.
6493
6494         * aot-compiler.c (add_generic_instances): Add static rgctx wrappers for cctors
6495         of generic instances.
6496
6497         * aot-runtime.c (find_extra_method): Search in all loaded AOT images.
6498
6499 2008-10-19  Mark Probst  <mark.probst@gmail.com>
6500
6501         * cpu-ppc.md, mini-ppc.c: The length of the code generated for
6502         OP_JMP depends on the method signature.  Calculate it properly.
6503
6504 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
6505         
6506         * aot-runtime.c (mono_aot_find_jit_info): Handle extra methods which are
6507         called directly.
6508
6509         * aot-compiler.c (emit_and_reloc_code): Allow direct calling of generic
6510         instances.
6511         (emit_extra_methods): Add another table mapping method indexes to 
6512         offsets in the extra_method_info table.
6513
6514         * mini.h: Bump AOT file format version.
6515         
6516         * aot-runtime.c: Merge most of the code from mono_aot_get_method
6517         and mono_aot_get_method_from_token () into one function.
6518
6519 2008-10-19  Mark Probst  <mark.probst@gmail.com>
6520
6521         * mini-ppc.c (emit_load_volatile_arguments): Inner loop needs a
6522         separate counter.
6523
6524 2008-10-18  Zoltan Varga  <vargaz@gmail.com>
6525
6526         * aot-compiler.c aot-runtime.c: Fix the hash function used for the extra
6527         methods.
6528
6529         * method-to-ir.c (mono_method_to_ir2): Change a !compile_aot assert to
6530         disable_aot.
6531
6532         * mini.c (mono_patch_info_equal): Compare the generic context as well.
6533
6534         * mini.h: Bump aot file format version.
6535
6536         * aot-compiler.c aot-runtime.c: Generalize the wrapper handling code so the
6537         AOT file can contain native code for methods which are not in the METHOD
6538         table. Generate code for non-sharable generic instances of generic methods
6539         found in the METHODSPEC table.
6540         
6541         * method-to-ir.c (mono_method_to_ir2): Remove the aot restriction when
6542         encoding generic type handles.
6543
6544         * ir-emit.h (NEW_AOTCONST_TOKEN): Add a generic_context argument.
6545         (NEW_TYPE_FROM_HANDLE_CONST): Add a generic_context argument.
6546
6547         * ir-emit.h: Rewrite the EMIT_NEW_XXXCONST macros to use the NEW_XXXCONST
6548         macros + MONO_ADD_INS.
6549
6550         * mini.c (mono_jump_info_token_new2): New function which takes a generic
6551         context as well.
6552
6553         * mini.h (MonoJumpInfoToken): Include fields for a generic context.
6554
6555         * mini.h: Bump aot file format version.
6556
6557         * aot-compiler.c aot-runtime.c: Update after changes to MonoJumpInfoToken.
6558
6559 2008-10-17  Mark Probst  <mark.probst@gmail.com>
6560
6561         * mini-x86.h, mini-x86.c, exceptions-x86.c: Align stack on all
6562         platforms, with definable stack alignment value.  Set to 16 now
6563         for all platforms.
6564
6565         * mini.c, mini.h, driver.c: Command line option for disabling
6566         stack alignment.
6567
6568 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
6569
6570         * basic-simd.cs: Tests for new methods in Vector4ui.
6571
6572 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
6573
6574         * mini-ops.h: Add packed int shuffle.
6575         
6576         * cpu-x86.md: Same.
6577
6578         * mini-x86.c (mono_arch_output_basic_block): Same.
6579
6580         * simd-intrinsics.c (vector4ui_intrinsics): Add compare equal,
6581         extract mask, max, min, shuffle.
6582
6583         * simd-intrinsics.c (vector8us_intrinsics): Add max and min.
6584
6585 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
6586
6587         * basic-simd.cs: Tests for new methods in Vector8us.
6588
6589 2008-10-17  Mark Probst  <mark.probst@gmail.com>
6590
6591         * method-to-ir.c (mono_method_to_ir2): "refanytype" produces a
6592         RuntimeTypeHandle, not a TypedReference.
6593
6594 Fri Oct 17 14:40:50 CEST 2008 Paolo Molaro <lupus@ximian.com>
6595
6596         * simd-intrinsics.c: remove relocations.
6597
6598 2008-10-17  Zoltan Varga  <vargaz@gmail.com>
6599
6600         * mini-amd64.c (mono_arch_output_basic_block): Port the IREM_IMM 
6601         optimizations from the x86 backend.
6602
6603 Fri Oct 17 12:00:51 CEST 2008 Paolo Molaro <lupus@ximian.com>
6604
6605         * simd-methods.h, simd-intrinsics.c: debloat method names and
6606         prepare for no relocations.
6607
6608 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
6609
6610         * mini-ops.h: Add packed min/equal and sum of absolute differences.
6611         
6612         * cpu-x86.md: Same.
6613
6614         * mini-x86.c (mono_arch_output_basic_block): Same.
6615
6616         * simd-intrinsics.c (vector16b_intrinsics): Add average, compare equal,
6617         extract mask, max, min and sum of absolute differences.
6618
6619         * simd-intrinsics.c: Increase SIMD_INTRINSIC_NAME_MAX due to new huge
6620         method name.
6621
6622 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
6623
6624         * basic-simd.cs: Test for the other mono_simd_simplify_indirection bug.
6625         Renamed one test for consistency.
6626
6627 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
6628
6629         * simd-intrinsics.c (mono_simd_simplify_indirection): Apply the previous
6630         fix to the code that deal with other blocks.
6631
6632 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
6633
6634         * basic-simd.cs: Test for the mono_simd_simplify_indirection bug.
6635
6636 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
6637
6638         * simd-intrinsics.c (mono_simd_simplify_indirection): Simplify the code
6639         that deals with vreg interference. Explicitly check for OP_LDADDR to be
6640         able to process the source reg.
6641
6642 2008-10-16  Martin Baulig  <martin@ximian.com>
6643
6644         * mini-ops.h, cpu-amd64.md, cpu-x86.md: Added new `hard_nop' opcode.
6645
6646         * inssel.brg: Add `OP_HARD_NOP'.
6647
6648         * mini.h (MonoCompile): Added `keep_cil_nops' flag.
6649
6650         * mini.c (mono_method_to_ir): In `CEE_NOP': generate a
6651         `OP_HARD_NOP' instruction when running inside the debugger.
6652
6653         * method-to-ir.c (mono_method_to_ir2): In `CEE_NOP': generate a
6654         `OP_HARD_NOP' instruction when running inside the debugger.
6655
6656 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
6657
6658         * simd-intrinsics.c (get_simd_vreg): Using sreg1 of OP_XMOVE
6659         now works. The issue with the regalloc tripping up no longer
6660         happens.
6661
6662         * simd-intrinsics.c (load_simd_vreg): Same.
6663
6664 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
6665         
6666         * basic-simd.cs: Tests for new Vector8ui methods.
6667
6668 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
6669
6670         * simd-intrinsics.c (get_simd_vreg): Simplify code and test
6671         only for type. This fixes crashes where MonoInst::klass is checked
6672         for ops of type != VTYPE or OBJ.
6673
6674         * simd-intrinsics.c (load_simd_vreg): Same.
6675
6676 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
6677
6678         * mini-ops.h: Add ops for packed shuffle/max/avg and
6679         extract mask.
6680         
6681         * cpu-x86.md: Same.
6682
6683         * mini-x86.c (mono_arch_output_basic_block): Same.
6684
6685         * simd-intrinsics.c (vector8us_intrinsics): Add avg, shuffle and
6686         extract mask.
6687
6688         * simd-intrinsics.c (simd_intrinsic_emit_extract_mask): New function
6689         to emit extract mask op.
6690
6691         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Retrofic this function
6692         to emit word shuffles.
6693
6694 2008-10-15  Mark Probst  <mark.probst@gmail.com>
6695
6696         * mini.c (mono_allocate_stack_slots_full): Align stack frame to
6697         the largest alignment needed by a variable, but at least
6698         sizeof(gpointer).
6699
6700 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
6701
6702         * basic-simd.cs: Tests for the fixes in the last commit.
6703
6704 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
6705
6706         * simd-intrinsics.c (get_simd_vreg): Drop the is_this_ptr, this function
6707         no longer handles STACK_PTR input.
6708
6709         * simd-intrinsics.c (get_simd_vreg): Don't crash when MonoInst::klass == -1.
6710
6711         * simd-intrinsics.c (load_simd_vreg): New function that works like 
6712         get_simd_vreg   but handles STACK_PTR input.
6713
6714         * simd-intrinsics.c (simd_intrinsic_emit_getter): Use load_simd_vreg
6715         as the input can be an arbitrary pointer.
6716
6717         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Try the
6718         LDADDR local optimization directly otherwise use a store op.
6719
6720 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
6721
6722         * basic-simd.cs: Tests for dup low and dup high.
6723
6724 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
6725
6726         * mini-ops.h: Add dup low and dup high ops.
6727         
6728         * cpu-x86.md: Same.
6729
6730         * mini-x86.c (mono_arch_output_basic_block): Same.
6731
6732         * simd-intrinsics.c (vector4f_intrinsics): Same.
6733
6734 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
6735
6736         * basic-simd.cs: Tests for recently added functionality.
6737
6738 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
6739
6740         * mini-ops.h: Add remaining sse1 fp ops.
6741         
6742         * cpu-x86.md: Add remaining sse1 fp ops.
6743
6744         * mini-x86.c (mono_arch_output_basic_block): Same.
6745
6746         * mini.h: Add enum for simd FP compare conditions.
6747
6748         * simd-intrinsics.c (vector4f_intrinsics): Add all new ops.
6749
6750         * simd-intrinsics.c (simd_intrinsic_emit_binary): Set inst_c0 to flags
6751         so the backed can generate the appropriate op.
6752
6753 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
6754         This patch squeese one more byte from the SimdIntrinsc struct.
6755
6756         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions: Use the version number
6757         a a shift amount intead of simply or'ing it.
6758
6759         * mini.h: Change SIMD_VERSION_* values to be sequential intead of masks.
6760
6761         * simd-intrinsics.c (struct SimdIntrinsc): Squeese simd_version and simd_emit_mode into a single
6762         byte so we can have an aditional flags field without increasing struct size.
6763
6764         * simd-intrinsics.c (emit_intrinsics): Use the value of simd_version as a shift amount before checking
6765         against the simd_supported_versions bitmask.
6766
6767         * simd-intrinsics.c: Set SIMD_INTRINSIC_NAME_MAX to an appropriate value.
6768
6769 Mon Oct 13 10:58:10 CEST 2008 Paolo Molaro <lupus@ximian.com>
6770
6771         * mini.c: remove rawbuffer code (the only use here is unsafe because
6772         it takes locks during signal handling and the kernel now provides much
6773         better info in proc/pid/smaps these days).
6774
6775 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
6776
6777         * mini-amd64.c (mono_arch_output_basic_block): Fix the changes to
6778         OP_X86_PUSH_OBJ. Fixes #434620.
6779
6780         * objects.cs: Add a test.
6781         
6782 2008-10-12  Rodrigo Kumpera  <rkumpera@novell.com>
6783
6784         * basic-simd.cs: Remove PackWithUnsignedSaturation tests as it turns out
6785         that the packuswb/packusdw don't work with unsigned numbers for what
6786         would be negative numbers in signed format.
6787
6788         * cpu-x86.md: Add doubleword forms of many ops and packing ones.
6789         Fix the len of fconv_to_r8_x and xconv_r8_to_i4.
6790
6791         * mini-ops.h: Add doubleword forms of many ops and packing ones.
6792
6793         * mini-x86.c: Emit doubleword forms of many ops and packing ones.
6794
6795         * simd-intrinsics.c (SimdIntrinsc): Rename the flags field to simd_version.
6796
6797         * simd-intrinsics.c (vector4f_intrinsics): Use simd_version field for sse3 ops.
6798
6799         * simd-intrinsics.c (vector4u_intrinsics): Rename to vector4ui_intrinsics and
6800         add more ops.
6801
6802         * simd-intrinsics.c (simd_version_name): New function, returns the name of the
6803         version as the enum in mini.h.
6804
6805         * simd-intrinsics.c (emit_intrinsics): Instead of having a special emit mode
6806         for sse3 ops, check the simd_version field if present. This way the code
6807         works with all versions of sse.
6808
6809 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
6810
6811         * simd-intrinsics.c: Fixed intrinsic name typo.
6812
6813         * mini.h: Added missing simd exported function.
6814
6815         * basic-simd.cs: Added tests for Vector4ui.
6816         Fixed broken test for Vector16b.
6817
6818 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
6819
6820         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Increase
6821         the max length to 64.
6822
6823 2008-10-10  Mark Probst  <mark.probst@gmail.com>
6824
6825         * method-to-ir.c: Only do the fast virtual generic method call for
6826         non-wrapper methods.
6827
6828         * mini.h, mini-trampolines.c: The new generic virtual remoting
6829         trampoline handles virtual method calls via the vtable (as done by
6830         the fast virtual generic method calls) to remoting proxies.
6831
6832         * mini.c (mono_jit_create_remoting_trampoline): For generic
6833         methods reate a generic virtual remoting trampoline.
6834
6835         * mini-amd64.h: Enable fast virtual generic method calls again.
6836
6837 2008-10-10  Mark Probst  <mark.probst@gmail.com>
6838
6839         * mini-ppc.c: Use SP (r1), not frame_reg (which might be r31) to
6840         restore registers when doing tail calls.
6841
6842 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
6843
6844         * simd-intrinsics.c (emit_intrinsics): Vector4u was renamed to
6845         Vector4ui.
6846
6847 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
6848
6849         * basic-simd.cs: Add test for Vecto16b.PackWithUnsignedSaturation.
6850
6851 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
6852
6853         * simd-intrinsics.c (emit_intrinsics): Retrofit to new type names.
6854
6855 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
6856
6857         * basic-simd.cs: Retrofit for API changes.
6858
6859 2008-10-10  Mark Probst  <mark.probst@gmail.com>
6860
6861         * mini-ppc.c: Handle integer stack arguments for tail calls.
6862
6863 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
6864
6865         * optflags-def.h: Removed sse3 optimization.
6866
6867         * driver.c: Same.
6868
6869         * mini-x86.c (mono_arch_cpu_optimizazions): Remove detection of
6870         sse3.
6871
6872         * mini-x86.c: Added mono_arch_cpu_enumerate_simd_versions.
6873
6874         * mini.h: Added enumeration with simd versions.
6875
6876         * simd-intrinsics.c (emit_intrinsics): Use the new static var
6877         for detecting SSE3.
6878
6879         * simd-intrinsics.c: Added mono_simd_intrinsics_init.
6880
6881         * mini.c (mini_init): Call mono_simd_intrinsics_init.
6882
6883 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
6884
6885         * basic-simd.cs: Added tests for Vector8u and Vector16u.
6886
6887         * basic-simd.cs: Fixed test naming.
6888
6889 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
6890
6891         * mini-ops.h: Added ops for packed and saturated math, shifts
6892         and packing/unpacking.
6893
6894         * cpu-x86.md: Added descriptors for the above ops.
6895
6896         * mini-x86.c: Added code to emmit the above ops.
6897
6898         * simd-intrinsics.c: Added support for Vector16u and Vector8u.
6899
6900 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
6901
6902         * aot-compiler.c (compile_method): Enable AOT for generic code.
6903
6904         * ir-emit.h (NEW_DOMAINCONST): Use domainvars in AOT code as well.
6905
6906 Wed Oct 8 16:35:43 CEST 2008 Paolo Molaro <lupus@ximian.com>
6907
6908         * mini.c: add a workaround for a common screwup that ends up blamed
6909         to mono (other processes blocking signal delivery).
6910
6911 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
6912
6913         * method-to-ir.c (mono_method_to_ir2): Clear ins_flag on all code paths
6914         in the LDFLD/STFLD opcodes. Fixes #432673.
6915
6916         * iltests.il.in: Add a new test.
6917
6918 Tue Oct 7 19:59:07 CEST 2008 Paolo Molaro <lupus@ximian.com>
6919
6920         * mini-arm.c: attach the thread in unmanaged->managed transitions
6921         using delegates (bug #433148).
6922
6923 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
6924
6925        * basic-simd.cs: Use new ShuffleSel constants.
6926
6927 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
6928
6929         * driver.c (opt_sets): Added combinations of simd, sse2 and sse3.
6930
6931         * mini-x86.c (mono_arch_cpu_optimizazions): Detect sse3 and now
6932         only disable simd intrinsics if no sse2 is detected.
6933
6934         * optflags-def.h: Added sse3.
6935
6936         * simd-intrinsics.c: Avoid generated sse3 intrinsics if the optimization
6937         is disabled.
6938
6939 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
6940
6941         * aot-compiler.c (add_wrappers): Fix Delegate/MulticastDelegate classes
6942         when adding delegate-invoke wrappers.
6943
6944 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
6945
6946         * Makefile.am: Reenable the simd tests.
6947
6948 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
6949
6950         * mini-amd64.c (mono_arch_emit_outarg_vt) : In the ArgValuetypeAddrInIReg case,
6951           add a call to mono_call_inst_add_outarg_reg for the arg->dreg to make sure that no
6952           other vreg is allocated to that hreg.
6953
6954         Contributed under MIT/X11 license.
6955
6956 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
6957
6958         * Makefile.am: Disable the simd tests for now as Mono.Simd is not
6959         yet checked in.
6960
6961 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
6962
6963         * basic-simd.cs: New test suite for SIMD intrinsics.
6964
6965         * Makefile.am: Added new tests.
6966
6967 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
6968
6969         * cpu-x86.md: Added new instructions to handle float to int using SSE regs.
6970
6971         * mini-ops.h: Same.
6972
6973         * mini-x86.h: Enable mono_arch_decompose_opts if simd intrinsics are enabled.
6974
6975         * mini-x86.c (mono_arch_decompose_opts): Decompose float to int conversion
6976         using SSE2 aware opcodes.
6977
6978         * mini-x86.c (emit_float_to_int): Disable the SSE2 optimization if OPT_SIMD
6979         is enabled, this code path is only reachable if conversion ops are emmited after
6980         mono_method_to_ir.
6981
6982         * mini.h: Added MonoCompile::fconv_to_r8_x_var to hold the float to int var.
6983
6984         This optimization saves 6 bytes per conversion against the old version.
6985
6986 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
6987
6988         * aot-compiler.c (compile_method): Don't skip methods referencing 
6989         generic methods without a corresponding entry in token_info_hash, since
6990         encode_method_ref () can handle all generic methods now.
6991
6992         * method-to-ir.c (mono_save_token_info): Don't save the token info if a 
6993         generic context is set.
6994         
6995         * method-to-ir.c (mono_method_to_ir2): Put back a disable_aot for
6996         generic sharing of LDTOKEN.
6997
6998 2008-10-06  Mark Probst  <mark.probst@gmail.com>
6999
7000         * mini-amd64.h: Temporarily disabled fast virtual generic method
7001         calls because it breaks the System.Runtime.Remoting tests.
7002
7003 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
7004
7005         * aot-compiler.c (add_wrappers): Add delegate-invoke wrappers.
7006
7007         * method-to-ir.c (check_inline_called_method_name_limit): Return TRUE
7008         so inlining actually works.
7009         (check_inline_caller_method_name_limit): Ditto.
7010
7011 Mon Oct 6 11:04:38 CEST 2008 Paolo Molaro <lupus@ximian.com>
7012
7013         * mini-ppc.c: mono_arch_flush_icache () cast pointer using gsize for
7014         64 bit safety (from Olaf Hering and Andreas Farber).
7015
7016 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
7017         
7018         * mini-trampolines.c (mono_aot_trampoline): Delegate processing to
7019         mono_magic_trampoline () if aot_get_method_from_token () fails. Remove
7020         unused virtual call support code.
7021
7022         * aot-runtime.c (decode_method_ref): Add a 'no_aot_trampoline' out argument.
7023         
7024         * aot-runtime.c (mono_aot_get_method_from_vt_slot): Return NULL for methods
7025         which can't use aot trampolines.
7026         (decode_patch): Don't create aot trampolines for methods which can't use
7027         them.
7028
7029         * aot-compiler.c (encode_method_ref): Add a marker for methods which can't
7030         use aot trampolines.
7031
7032         * mini.h: Bump AOT image format version.
7033         
7034 2008-10-05  Zoltan Varga  <vargaz@gmail.com>
7035
7036         * method-to-ir.c (mono_method_to_ir2): Pass cil_method instead of cmethod
7037         to save_token_info () since cmethod is inflated for constrained calls.
7038
7039         * mini-<ARCH>.h mini-x86.c: Remove some unused defines.
7040
7041 2008-10-04  Andreas Farber  <andreas.faerber@web.de>
7042
7043         * Makefile.am: Add build rules for ppc64.
7044         This avoids the build failing at pedump with unresolved symbols
7045         due to lack of arch_sources. Instead it will now fail earlier
7046         due to lack of cpu-ppc64.md.
7047
7048         Contributed under MIT/X11 license.
7049
7050 2008-10-04  Mark Probst  <mark.probst@gmail.com>
7051
7052         * mini-amd64.c (mono_arch_emit_call): Support stack arguments for
7053         tail calls.
7054
7055         * iltests.il.in: Add test case for tail call with many arguments.
7056
7057 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
7058
7059         * method-to-ir.c (mono_method_to_ir2): Add an !cfg->compile_aot assert
7060         to the fast virtual generic method code until the aot case is fixed.
7061
7062 2008-10-03  Mark Probst  <mark.probst@gmail.com>
7063
7064         * mini-ppc.c, mini-ppc.h: Implement generic virtual method thunks.
7065
7066 2008-10-03  Mark Probst  <mark.probst@gmail.com>
7067
7068         * mini-amd64.c, mini-amd64.h: Implement generic virtual method
7069         thunks.
7070
7071 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
7072         
7073         * simd-intrinsics.c: Forgot to add this one.
7074
7075         * mini-codegen.c: Fix macro in case SIMD is not supported.
7076
7077 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
7078         
7079         This patch land initial JIT support for simd intrinsics.
7080
7081         * mini-x86.h: Added new define to make --enable_minimal work on x86.
7082
7083         * Makefile.am: Added simd-intrinsics.c
7084
7085         * simd-intrinsics.c: New file with simd instrinsic related
7086         code.
7087
7088         * cfold.c (mono_constant_fold_ins2): Fold XZERO.
7089
7090         * cpu-x86.md: Add simd related instructions.
7091
7092         * driver.c: Added MONO_OPT_SIMD to the default set of optimizations.
7093
7094         * driver.c: Added two new --regression variants.
7095
7096         * ir-emit.h (MONO_EMIT_NEW_VZERO): Emit XZERO if the type is a simd intrinsic.
7097
7098         * local-propagation.c (mono_local_cprop2): Eliminate useless XMOVE.
7099
7100         * local-propagation.c (mono_local_deadce): Use new macro MONO_IS_NON_FP_MOVE and
7101         extract some complicated logic to helper functions.
7102
7103         * method-to-ir.c (mono_type_to_regmove): Handle simd intrinsics.
7104
7105         * method-to-ir.c (mini_emit_inst_for_method): Emit simd intrinsics.
7106
7107         * method-to-ir.c (mono_handle_global_vregs): If a simd intrinsic was found, apply
7108         the specialized simplification pass.
7109
7110         * method-to-ir.c (mono_spill_global_vars): Use new macro.
7111
7112         * mini-codegen.c: Added SIMD constants to all regbanks arrays.
7113
7114         * mini-codegen.c: Added reg_bank_table_init to initialize the reg desc -> bank
7115         table.
7116
7117         * mini-codegen.c: Define a version of the reg_bank macro that uses desc_to_reg_type
7118         if MONO_ARCH_NEED_SIMD_BANK is defined.
7119
7120         * mini-ops.h: Added the new simd ops.
7121
7122         * mini-x86.c: Added mono_arch_xregname.
7123
7124         * mini-x86.c (mono_arch_cpu_optimizazions): Disable MONO_OPT_SIMD if SSE3 is not detected.
7125
7126         * mini-x86.c (mono_arch_output_basic_block): Add simd related opcodes.
7127
7128         * mini-x86.h: Define simd related MONO_ARCH macros.
7129
7130         * mini.c (mono_type_to_load_membase): Handle simd intrinsics.
7131
7132         * mini.c (mono_type_to_store_membase): Handle simd intrinsics.
7133
7134         * mini.h: Added new macros MONO_IS_NON_FP_MOVE, MONO_IS_REAL_MOVE, MONO_IS_ZERO and
7135         MONO_CLASS_IS_SIMD to deal with simd related IR.
7136
7137         * mini.h (MonoInst): Added spill_var to the backend union.
7138
7139         * mini.h (MonoCompile): Added uses_simd_intrinsics and iconv_raw_var.
7140
7141         * mini.h: Added forward declarations of the new simd fuctions.
7142
7143         * optflags-def.h: Added new optimization names SIMD.
7144
7145         * regalloc.c (mono_regstate_reset): Set next vreg to be the max value of the 3 reg banks.
7146
7147         * regalloc.h: Added support for working with 3 register banks.
7148
7149         * regalloc.h (MonoRegState): Added xsymbolic field if a third regbank is required.
7150
7151         * ssa2.c (mono_ssa_deadce2): Use new MONO_IS_ZERO macro.
7152
7153 Fri Oct 3 16:03:22 CEST 2008 Paolo Molaro <lupus@ximian.com>
7154
7155         * mini-exceptions.c: remove 64 bit related ifdef clutter.
7156
7157 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
7158
7159         * mini-exceptions.c (mono_handle_soft_stack_ovf): Unprotect two pages
7160         instead of one on 64 bit systems.
7161
7162         * method-to-ir.c: Remove unused includes.
7163
7164 2008-10-02  Zoltan Varga  <vargaz@gmail.com>
7165
7166         * aot-compiler.c (emit_exception_debug_info): Use jinfo->used_regs instead of
7167         cfg->used_int_regs, since the two are different on arm.
7168
7169 2008-10-02  Mark Probst  <mark.probst@gmail.com>
7170
7171         * method-to-ir.c, inssel.brg, mini-trampolines.c: Use
7172         mono_method_get_vtable_index() to get the vtable index.
7173
7174 2008-10-02  Mark Probst  <mark.probst@gmail.com>
7175
7176         * method-to-ir.c (mono_method_to_ir2): Don't create native
7177         wrappers for array methods, because they're never called (and if
7178         they were called they wouldn't work).
7179
7180 2008-10-02  Mark Probst  <mark.probst@gmail.com>
7181
7182         * method-to-ir.c (mono_method_to_ir2): Array methods are
7183         special-cased and must not be invoked indirectly via the (M)RGCTX
7184         when generic sharing is turned on.  Fixes #431413.
7185
7186 2008-10-01  Mark Probst  <mark.probst@gmail.com>
7187
7188         * method-to-ir.c: When generic sharing is active, call
7189         non-interface virtual generic methods via the standard trampoline.
7190
7191         * mini-trampolines.c: Handle virtual generic shared methods.
7192
7193         * mini.h, mini-x86.c, mini-x86.h: New argument for
7194         mono_arch_build_imt_thunk() which is non-NULL for virtual generic
7195         method thunks and which is the trampoline to call if the lookup
7196         fails.  Enable the virtual generic method thunk for x86.
7197
7198         * mini-amd64.c, mini-arm.c, mini-ia64.c, mini-sparc.c,
7199         mini-ppc.c (mono_arch_build_imt_thunk): Add the additional
7200         argument but assert that it's NULL, because these archs don't yet
7201         implement the virtual generic method thunk.  Changes in the IMT
7202         thunk data structures.
7203
7204 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
7205
7206         * aot-compiler.c (emit_globals): Avoid invalid characters in
7207         the static linking symbol.
7208
7209         * objects.cs: Add a test for the range check optimization. Fix warnings.
7210
7211         * branch-opts.c (mono_if_conversion): Add back the 'optimize range checks'
7212         optimization from the current JIT.
7213
7214         * method-to-ir.c (mini_emit_inst_for_method): Decompose String.Length
7215         later in decompose_array_access_opts () to allow more optimizations.
7216
7217         * method-to-ir.c (mono_handle_soft_float): Rename this to 
7218         mono_decompose_soft_float () for consistency.
7219
7220         * mini-ops.h: Fix arguments of OP_STRLEN.
7221
7222         * method-to-ir.c (save_cast_details): Extract the cast details saving code
7223         into a separate function.
7224         (reset_cast_details): Ditto.
7225         (handle_unbox): Save cast details. Fixes #431254.
7226
7227         * method-to-ir.c: Remove some obsolete FIXMEs.
7228
7229 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
7230
7231         * ir-emit.h (alloc_dreg): Write a warning before crashing.
7232
7233 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
7234
7235         * mini-codegen.c: More work on macros to make them
7236         ready for multiple regbanks.
7237
7238 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
7239
7240         * method-to.ir.c (mono_type_to_regmove): Remove static modifier.
7241
7242         * mini.h: Export mono_type_to_regmove. Fix signature of mono_regname_full.
7243
7244 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
7245
7246         * mini-codegen.c (mono_spillvar_offset): Proper support for
7247         multiple regbanks.
7248
7249 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
7250
7251         * mini-amd64.c (mono_arch_emit_epilog): Remove some duplicated code from
7252         the stack overflow changes.
7253
7254 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
7255
7256         * mini-codegen.c: Make all bank macros depend on reg_bank.
7257
7258         * mini-codegen.c (mono_local_regalloc): Make free mask
7259         initialization regbank aware.
7260
7261 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
7262
7263         * mini-codegen.c (mono_local_regalloc): Extract callee
7264         mask selection to a function and make it regbank aware.
7265
7266 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
7267
7268         * mini-codegen.c (mono_local_regalloc): Changed the cloberring
7269         code to deal with many regbanks.
7270
7271 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
7272
7273         * mini-codegen.c: More fp->regbank changes.
7274
7275 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
7276
7277         * mini-codegen.c: Change asserts to use MONO_NUM_REGBANKS instead
7278         of a hardcoded constant.
7279
7280 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
7281
7282         * method-to-ir.c (type_from_stack_type): Fix typo.
7283
7284 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
7285
7286         * mini-ia64.c (emit_move_return_value): Convert float return values to
7287         double.
7288
7289         * objects.cs: Add a new test.
7290         
7291         * mini-ia64.c (mono_arch_allocate_vars): Disable fp elimination for
7292         VARARG methods to fix an assert later.
7293
7294         * mini-mips.h mini-mips.c mini-ops.h cpu-mips.md: Update the mips back
7295         end so it at least compiles.
7296
7297 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
7298
7299         * method-to-ir.c (emit_optimized_ldloca_ir): Fix this.
7300
7301 2008-09-28  Rodrigo Kumpera  <rkumpera@novell.com>
7302
7303         * method-to-ir.c (mono_method_to_ir2): Extract the ldloca + initobj
7304         optimization to a new function (emit_optimized_ldloca_ir) and enable
7305         it for both ldloca and ldloca_s.
7306
7307 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
7308
7309         * method-to-ir.c (mono_method_to_ir2): Remove an unnecessary assert in the
7310         gshared CASTCLASS code.
7311
7312         * driver.c (mono_main): Add a workaround for shutdown crashes seen on
7313         amd64, where the libc stack unwinder encounters stack frames referring to
7314         native code in unmapped memory.
7315
7316         * method-to-ir.c (mini_emit_check_array_type): Add support for generic
7317         sharing.
7318
7319         * generics.cs: Add new test.
7320
7321 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
7322
7323         * mini-arm.h driver.c: Print the fp model when using --version on arm. Also,
7324         add a check that one of the ARM_FPU_ constants is defined.
7325
7326         * mini-exceptions.c (mono_handle_soft_stack_ovf): Really fix the build.
7327         
7328         * mini-exceptions.c: Fix build on non-altstack platforms.
7329
7330         * method-to-ir.c (mono_method_to_ir2): Fix aot support for the
7331         sharing of vtypes.
7332
7333         * ir-emit.h: Add a comment to NEW_PCONST.
7334
7335         * mini-exceptions.c (mono_altstack_restore_prot): Fix a warning.
7336
7337         * mini.h (MonoJitDomainInfo): Move some fields here from MonoDomain.
7338
7339         * mini.c aot-runtime.c method-to-ir.c driver.c mini-trampolines.c: Update
7340         after the changes to MonoJitDomainInfo.
7341
7342 2008-09-27  Mark Probst  <mark.probst@gmail.com>
7343
7344         * mini-ppc.c, tramp-ppc.c, mini-ppc.h: Implement generic code sharing.
7345
7346 2008-09-27  Mark Probst  <mark.probst@gmail.com>
7347
7348         * mini-ppc.c: Compiler warning fixes.
7349
7350 2008-09-27  Mark Probst  <mark.probst@gmail.com>
7351
7352         * mini-ppc.c: Special handling for 1/2 byte structs on Darwin only
7353         for pinvokes.
7354
7355 2008-09-27  Mark Probst  <mark.probst@gmail.com>
7356
7357         * exceptions-ppc.c, mini-ppc.h: Compile
7358         mono_arch_handle_altstack_exception() on Darwin, too.
7359
7360 2008-09-27  Mark Probst  <mark.probst@gmail.com>
7361
7362         * method-to-ir.c (mono_emit_rgctx_method_call_full): Must also
7363         work on archs which don't have generic sharing implemented, only
7364         without the vtable_arg.
7365
7366 2008-09-26  Mark Probst  <mark.probst@gmail.com>
7367
7368         * mini.c: Added comment explaining why delegate ctor icall
7369         wrappers are compiled.
7370
7371 2008-09-26  Mark Probst  <mark.probst@gmail.com>
7372
7373         * mini.c: Don't produce trampolines to delegate ctor icall
7374         wrappers but compile them upfront.
7375
7376 Fri Sep 26 17:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
7377
7378         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: amd64 support code for calling a
7379         runtime-set function when going back to managed code. Currently this
7380         is used to set back the protection on the soft ovf pages and/or to
7381         throw the stack overflow exception that happened in unmanaged code.
7382
7383 Fri Sep 26 16:46:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
7384
7385         * tramp-x86.c, mini-x86.h, mini-x86.c: x86 support code for calling a
7386         runtime-set function when going back to managed code. Currently this
7387         is used to set back the protection on the soft ovf pages and/or to
7388         throw the stack overflow exception that happened in unmanaged code.
7389
7390 Fri Sep 26 16:34:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
7391
7392         * mini.h, mini.c, mini-trampolines.c, mini-exceptions.c: added
7393         the support code for restoring stack protection after stack overflows
7394         that happen in unmanaged code. Don't set the exec permission on the
7395         soft overflow area.
7396
7397 2008-09-26  Zoltan Varga  <vargaz@gmail.com>
7398
7399         * mini-trampolines.c (mono_delegate_trampoline): Add wrappers even if
7400         delegate->method_ptr is set. Fixes #428054.
7401
7402 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
7403
7404         * tests.cs: Rename to ratests.cs.
7405
7406         * method-to-ir.c: Merge the emit_get_rgctx () calls into the 
7407         emit_get_rgctx_... functions.
7408
7409 2008-09-25  Mark Probst  <mark.probst@gmail.com>
7410
7411         * method-to-ir.c: Eliminated macro EMIT_GET_RGCTX.
7412
7413 2008-09-25  Mark Probst  <mark.probst@gmail.com>
7414
7415         * mini-trampolines.c (mono_magic_trampoline): Unwrap wrappers
7416         before asserting that method is sharable.
7417
7418 2008-09-25  Mark Probst  <mark.probst@gmail.com>
7419
7420         * method-to-ir.c, mini.c, jit-icalls.c: New function for checking
7421         whether method needs a static RGCTX wrapper used instead of
7422         complex conditions.
7423
7424         * generic-sharing.c, mini.h: A few functions moved to
7425         metadata/generic-sharing.c.
7426
7427 2008-09-25  Mark Probst  <mark.probst@gmail.com>
7428
7429         * method-to-ir.c, mini.c, mini-exceptions.c, mini-trampolines.c:
7430         Generic code sharing for value types, which essentially means
7431         treating value type methods like static methods.  The RGCTX is
7432         passed in the same way.
7433
7434 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
7435
7436         * method-to-ir.c (mono_method_to_ir2): Avoid an assert in the NEWOBJ
7437         opcode when creating multi-dimensional arrays of open types.
7438
7439         * generic-sharing.c (mono_method_check_context_used): Handle arrays of
7440         open generic types.
7441
7442         * generics.cs: Add a test.
7443
7444         * mini-codegen.c: Use macros everywhere for checking floats instead of == 'f'.
7445
7446 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
7447
7448         * mini.h (MonoCompile): Add 'disable_vreg_to_lvreg' flag.
7449
7450         * mini.c (mini_method_compile): Set it when running under the debugger. 
7451
7452         * method-to-ir.c (mono_handle_global_vregs): Disable global->local
7453         vreg optimization if the flag is set.
7454
7455         * driver.c (mono_main): Add --attach= option to pass options to
7456         the attach agent.
7457
7458         * mini.c (sigquit_signal_handler): Start the attach agent.
7459
7460         * ssapre.c: Disable this to save space since it is not yet ported to
7461         linear IR.
7462
7463         * regalloc2.c: Disable this to save space.
7464
7465         * mini.h (MonoJitStats): Remove unused analyze_stack_repeat.
7466
7467 Wed Sep 24 16:01:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
7468
7469         * decompose.c, method-to-ir.c, mini-codegen.c, regalloc2.c: make
7470         the -v option useful again.
7471
7472 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
7473
7474         * mini-amd64.c (mono_arch_output_basic_block): Add support for
7475         --break-at-bb.
7476
7477         * inssel.brg (mini_emit_castclass): Avoid the szarray!=array checks for
7478         arrays of arrays. Fixes #428406.
7479
7480         * method-to-ir.c (mini_emit_castclass): Ditto.
7481
7482         * objects.cs: Add new test.
7483         
7484 2008-09-23  Rodrigo Kumpera  <rkumpera@novell.com>
7485
7486         * method-to-ir.c (type_to_eval_stack_type): The code path for the new JIT
7487         was wrong at it choked against target_type_is_incompatible for byref types.
7488
7489 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
7490
7491         * mini-codegen.c: Use 'bank' macros instead of 'is_fp' macros in most 
7492         places.
7493
7494 Tue Sep 23 15:31:45 CEST 2008 Paolo Molaro <lupus@ximian.com>
7495
7496         * mini-exceptions.c: update a few more exceptions-related counters.
7497
7498 Tue Sep 23 15:28:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
7499
7500         * aot-runtime.c, method-to-ir.c, mini.c, mini-trampolines.c: use the
7501         new functions to allocate from persistent mempools.
7502
7503 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
7504
7505         * mini.h regalloc.h mini-codegen.c: Generalize the regalloc code to allow 
7506         multiple register banks in the future.
7507
7508         * mini-codegen.c (mono_local_regalloc): Fix a warning.
7509
7510 2008-09-22  Rodrigo Kumpera  <rkumpera@novell.com>
7511
7512         * mini.c (type_to_eval_stack_type): Remove duplicated function.
7513
7514         * method-to-ir.c (type_to_eval_stack_type): Make this version compatible with both JIT.
7515
7516         * mini.h: Export type_to_eval_stack_type.
7517
7518         This function was nearly duplicated in method-to-ir.c and mini.c. The difference
7519         is only ins->klass of byref types.
7520
7521 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
7522
7523         * method-to-ir.c (mini_emit_memset): Use a default alignment of 4.
7524         (mini_emit_memcpy2): Ditto.
7525
7526         * mini-amd64.c: Fix a warning.
7527
7528 2008-09-21  Mark Probst  <mark.probst@gmail.com>
7529
7530         * exceptions-ppc.c (mono_arch_get_call_filter): Fixed stack frame
7531         linking.
7532
7533 2008-09-19  Rodrigo Kumpera  <rkumpera@novell.com>
7534
7535         * method-to-ir.c: Extract stloc micro-optimization to a
7536         function and apply it to all cases.
7537
7538 2008-09-19  Mark Probst  <mark.probst@gmail.com>
7539
7540         * method-to-ir.c: Don't fail generic code sharing in cases we
7541         already support.
7542
7543 2008-09-18  Mark Probst  <mark.probst@gmail.com>
7544
7545         * mini-ppc.c: Handle structs in tailcalls on Darwin.
7546
7547 Tue Sep 16 21:07:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
7548
7549         * *.c, *.md, mini-ops.h: introduced relaxed_nop opcode for spin wait
7550         implementation.
7551
7552 Tue Sep 16 16:39:16 CEST 2008 Paolo Molaro <lupus@ximian.com>
7553
7554         * trace.c: make tracing more useful and correct, with per-thread
7555         id and indent info.
7556
7557 2008-09-15  Mark Probst  <mark.probst@gmail.com>
7558
7559         * mini-ppc.c (mono_arch_emit_call): Convert floats to R4 when
7560         doing a method call and the argument is an R4.
7561
7562 2008-09-14  Zoltan Varga  <vargaz@gmail.com>
7563
7564         * aot-compiler.c (add_wrappers): Do not generate runtime invoke wrappers for
7565         generic methods.
7566
7567 2008-09-13  Mark Probst  <mark.probst@gmail.com>
7568
7569         * mini-ppc.c: Convert result to single for OP_ICONV_TO_R4.
7570
7571 2008-09-12  Zoltan Varga  <vargaz@gmail.com>
7572
7573         * mini.h (MONO_IS_JUMP_TABLE): Handle GOT_ENTRY.
7574         (MONO_JUMP_TABLE_FROM_INS): Ditto.
7575
7576 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
7577
7578         * driver.c: Add a --agent argument (not supported yet) to load managed
7579         agent assemblies before loading the main assembly, similarly to how the
7580         Java VM handles agents.
7581
7582 2008-09-11  Mark Probst  <mark.probst@gmail.com>
7583
7584         * mini-ppc.c (mono_arch_allocate_vars): Use arch-independent
7585         function to do stack layout of local variables.
7586
7587 2008-09-11  Mark Probst  <mark.probst@gmail.com>
7588
7589         * mini-ppc.c (calculate_sizes): Bugfix in sigcookie position
7590         calculation.
7591
7592 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
7593
7594         * method-to-ir.c ssa2.c mini.c mini-amd64.c decompose.c ssa.c abcremoval.c
7595         abcremoval2.c branch-opts.c driver.c dominators.c: Disable parts of the
7596         JIT if DISABLE_JIT is defined.
7597
7598         * Makefile.am: Avoid compiling/linking in inssel.c if DISABLE_JIT is
7599         defined.
7600
7601 2008-09-10  Mark Probst  <mark.probst@gmail.com>
7602
7603         * iltests.il.in: Disable the fconv test on PPC (the result is
7604         undefined according to ECMA).
7605
7606 2008-09-10  Mark Probst  <mark.probst@gmail.com>
7607
7608         * iltests.il.in: Enable tail call tests for PPC.
7609
7610         * mini.h: Add variable for storing incoming valuetype argument
7611         addresses for tail calls.
7612
7613         * mini-ppc.c: Implement valuetype arguments and return values for
7614         tailcalls on Linux.
7615
7616 2008-09-09  Mark Probst  <mark.probst@gmail.com>
7617
7618         * mini-ppc.c: Partially implement tail calls (struct arguments and
7619         return values not supported).
7620
7621         * method-to-ir.c: Enable tail calls on PPC.
7622
7623 2008-09-08  Zoltan Varga  <vargaz@gmail.com>
7624
7625         * aot-compiler.c (emit_wrapper_info): Omit the klass name from
7626         runtime-invoke wrappers to work around the problem of them getting
7627         assigned to a random class.
7628
7629         * aot-runtime.c (mono_aot_get_method): Ditto.
7630         
7631 2008-09-07  Zoltan Varga  <vargaz@gmail.com>
7632
7633         * mini-exceptions.c mini-mips.h mini-s390.h exceptions-mips.c: Kill
7634         the CUSTOM_EXCEPTION_HANDLING and CUSTOM_STACK_WALK defines.
7635
7636 2008-09-07  Mark Probst  <mark.probst@gmail.com>
7637
7638         * method-to-ir.c (mono_method_to_ir2): Disable tail calls for PPC
7639         until they're implemented properly.
7640
7641         * exceptions-ppc.c: Use arch-independent exception-handling code
7642         instead of custom one.
7643
7644         * exceptions-ppc.c, mini-ppc.c, mini-ppc.h: Bug fixes and changes
7645         for Linear IR.
7646
7647         * tramp-ppc.c, mini-ppc.c: Fixed warnings.
7648
7649         * decompose.c, aot-runtime.c, aot-compiler.c: PPC code also
7650         applies when __powerpc__ is defined.
7651
7652 2008-09-06  Zoltan Varga  <vargaz@gmail.com>
7653
7654         * aot-runtime.c (mono_aot_get_method): Add another cache mapping wrapper
7655         methods to their code to avoid computing the full name of wrappers and
7656         doing a lookup in a string hash table.
7657
7658 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
7659
7660         * method-to-ir.c: Remove the CHECK_BBLOCK () stuff it is not needed since
7661         we identify bblocks before method_to_ir () is ran.
7662
7663         * branch-opts.c (mono_optimize_branches): Avoid nullifying the exit bblock.
7664         Also avoid optimizing branches pointing to themselves.
7665
7666         * mini.c (mini_method_compile): Ditto. Fixes #422947.
7667
7668 2008-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
7669
7670         * driver.c (mono_main): Enable the new verifier under core-clr and cas.
7671
7672 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
7673
7674         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Implement this.
7675         (mono_arch_patch_plt_entry): Fix the calculation of the jump_entry.
7676         (mono_arch_get_nullified_class_init_trampoline): Return 'code' instead of
7677         'buf'.
7678
7679         * aot-compiler.c (emit_plt): Fix the arm plt entries, previously they all 
7680         jumped to the same entry in plt_jump_table.
7681
7682 2008-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
7683
7684         * method-to-ir.c (initialize_array_data): Handle field with RVA from
7685         dynamic images.
7686
7687 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
7688
7689         * method-to-ir.c (handle_isinst): Do the assignment at the beginning, so the
7690         other assignment can be if converted. Saves 1.5% on corlib size and fixes
7691         #421807.
7692
7693 2008-08-29  Geoff Norton  <gnorton@novell.com>
7694
7695         * aot-compiler.c: The Mach/ARM compiler doesn't understand the bss
7696         segment, and doesn't properly handle .space as .text.  Fixes
7697         AOT Mach/ARM
7698
7699 2008-08-29  Geoff Norton  <gnorton@novell.com>
7700
7701         * mini.c: Disable the mach exception handler when running on 
7702         ARM
7703
7704 2008-08-29  Geoff Norton  <gnorton@novell.com>
7705
7706         * aot-compiler.c: Patch from Renaldas Zioma to properly register 
7707         globals on Darwin/ARM
7708
7709 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
7710
7711         * mini.c: Avoid not initializing the runtime when doing AOT compilation, 
7712         since too many things depend on it. Instead, call 
7713         mono_runtime_set_no_exec ().
7714         
7715         * mini.c (mono_create_tls_get): Call mono_alloc_preg (cfg) when running with
7716         the new JIT.
7717
7718         * aot-compiler.c: Add an 'asm-only' AOT option.
7719
7720         * mini.c: Avoid initializing the runtime when doing AOT compilation.
7721                 
7722         * aot-compiler.c (compile_method): Disable gshared support for now as it
7723         doesn't yet work.
7724
7725 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
7726
7727         * mini-amd64.h : Fix a compiler warning.
7728
7729         * exceptions-amd64.c (mono_arch_unwindinfo_install_unwind_info) :
7730           Changed to use a callback function to retrieve the unwind info.
7731           This avoids problems observed when code blocks were removed by
7732           unloading an app domain.
7733
7734         * mini-amd64.c (mono_arch_cpu_optimizazions) : Removing the peephole 
7735           and branch excludes for Winx64.  The fix in exceptions-amd64.c allows them
7736           to work properly.
7737
7738         Contributed under MIT/X11 license.
7739
7740 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
7741
7742         * mini-amd64.c (mono_arch_output_basic_block) : Fix the OP_X86_PUSH_OBJ
7743           case to keep the stack aligned to 8.
7744
7745         Contributed under MIT/X11 license.
7746
7747 2008-08-26  Zoltan Varga  <vargaz@gmail.com>
7748
7749         * aot-runtime.c (mono_aot_get_method): Add a cache for wrapper names to
7750         avoid repeated linear searches.
7751
7752 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
7753
7754         * aot-compiler.c (add_wrappers): Avoid calling get_runtime_invoke with
7755         methods it can't handle.
7756         
7757         * aot-compiler.c (add_method): Avoid adding a method twice.
7758         (add_wrappers): Add runtime invoke wrappers for all methods.
7759
7760         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): New
7761         function to create an aot-compatible version of this trampoline.
7762
7763         * aot-compiler.c aot-runtime.c: Add support for AOT rgctx fetch trampolines.
7764
7765 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
7766
7767         * aot-compiler.c (compile_method): Skip wrappers of generic icalls.
7768
7769         * method-to-ir.c (mono_method_to_ir2): Replace an assert in UNBOX_ANY
7770         with a generic sharing failure.
7771
7772         * aot-compiler.c (emit_klass_info): Call mono_class_get_nested_types ().
7773
7774         * method-to-ir.c (mono_method_to_ir2): Rethrow the correct exception in
7775         CEE_RETHROW. Fixes #419634.
7776
7777         * mini.c (mono_method_to_ir): Ditto.
7778
7779         * exceptions.cs: Add a new test.
7780         
7781         * generic-sharing.c (mini_type_stack_size): Always pass TRUE as allow_open
7782         to mono_type_stack_size_internal () since some callers might not pass in
7783         an rgctx.
7784
7785         * mini-x86.c (mono_arch_emit_prolog): Store the rgctx before calling
7786         instrument_prolog. Fixes #419878.
7787
7788         * mini.c (mono_compile_create_var_for_vreg): Make the lvars representing
7789         doubles in soft float mode volatile.
7790
7791 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
7792
7793         * ir-emit.h (NEW_ARGSTORE): Use cfg->args and cfg->arg_types to fix the build.
7794
7795         * method-to-ir.c (mono_save_args): Use ARGSTORE instead of TEMPSTORE
7796         to handle soft float correctly.
7797
7798         * tramp-arm.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Implement
7799         the fast path.
7800
7801         * mini.h (struct MonoCallInst): Add dynamic_imt_arg boolean field.
7802
7803         * exceptions-arm.c (mono_arch_find_jit_info): Set ctx->regs [ARMREG_R11]
7804         to sp, since the generics catch code requires it.
7805
7806         * mini-arm.h (MONO_ARCH_VTABLE_REG): Use R0 for this to avoid needless
7807         copying.
7808
7809         * method-to-ir.c (emit_imt_argument): Pass imt_arg to 
7810         mono_arch_emit_imt_argument ().
7811
7812         * mini-<ARCH>.c (mono_arch_emit_imt_argument): Add an 'imt_arg' argument.
7813
7814         * mini-arm.c tramp-arm.c: Generic sharing updates.
7815
7816 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
7817
7818         * mini-arm.c: Fix the arm build.
7819
7820         * generic-sharing.c (mini_type_get_underlying_type): New helper function
7821         handling enums, generic instances and generic sharing.
7822         (mini_type_stack_size_full): Ditto.
7823
7824         * mini-amd64.c mini-x86.c mini-arm.c: Use the new functions.
7825         
7826         * mini.h (struct): Add 'uses_rgctx_reg' and 'uses_vtable_reg' fields.
7827
7828         * method-to-ir.c: Set the new fields when using RGCTX_REG/VTABLE_REG.
7829
7830         * tramp-arm.c: Implement the rgctx fetch and the generic class init 
7831         trampolines.
7832
7833         * mini-arm.c: Various small generic sharing changes.
7834
7835         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline): Implement
7836         this for x86.
7837         (mono_arch_create_trampoline_code): Remove most of the GENERIC_CLASS_INIT
7838         custom code.
7839
7840         * mini-trampolines.c (mono_create_generic_class_init_trampoline): New
7841         helper function to return a generic class init trampoline.
7842
7843         * method-to-ir.c mini.c: Use it.
7844         
7845         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline): New
7846         arch-specfic function to return a generic class init trampoline.
7847
7848         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Remove most of
7849         the GENERIC_CLASS_INIT custom code.
7850
7851         * method-to-ir.c (mono_method_to_ir2): If RGCTX_REG is not defined, that is
7852         a fatal error, not a sharing failure.
7853
7854         * tramp-<ARCH>.c (mono_arch_get_rgctx_lazy_fetch_offset): Removed, no longer
7855         needed.
7856
7857         * mini-trampolines.c (mono_rgctx_lazy_fetch_trampoline): Get the additional
7858         trampoline argument from MONO_ARCH_VTABLE_REG.
7859
7860         * tramp-x86.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
7861         order of the arguments to the C trampoline: pass 'slot' as the trampoline
7862         argument, and pass the vtable in VTABLE_REG.
7863
7864         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
7865         order of the arguments to the C trampoline: pass 'slot' as the trampoline
7866         argument, and pass the vtable in VTABLE_REG.
7867         (mono_arch_create_trampoline_code_full): Remove some special casing for
7868         the rgctx fetch trampoline.
7869
7870         * mini.c (mono_method_to_ir): Fix the STELEM_ANY+null value optimization.
7871         Fixes #419273.
7872
7873         * iltests.il: Add a test for it.
7874
7875 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
7876
7877         * aot-compiler.c (compile_method): Enable AOT support for generics sharing.
7878
7879         * method-to-ir.c (mono_method_to_ir2): Remove an aot restriction which is
7880         no longer needed.
7881
7882         * mini-trampolines.c (mono_magic_trampoline): Add a sync wrapper here,
7883         use mono_jit_info_table_find () to avoid recursion.
7884         (mono_delegate_trampoline): Add a sync wrapper here.
7885
7886         * method-to-ir.c (mono_method_to_ir2): Don't call mono_ldftn_nosyc
7887         here.
7888
7889         * mini.c (mono_method_to_ir): Ditto.
7890         
7891         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Remove
7892         add_sync_wrapper argument. Don't add a sync wrapper here.
7893         (mono_create_jump_trampoline): Don't add a sync wrapper here.
7894
7895         * jit-icalls.c (mono_ldftn_nosync): Removed, no longer needed.
7896         
7897 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
7898
7899         * exceptions-amd64.c (seh_handler):  For Winx64 adding missing copy 
7900           of nonvolatile registers back from MonoContext to CONTEXT.
7901
7902         Contributed under MIT/X11 license.
7903
7904 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
7905
7906         * mini-amd64.c (mono_arch_get_delegate_invoke_impl):  When shifting the
7907           arguments on Winx64 there are only 4 argument registers.  For this
7908           logic to work the last argument must be pulled from the stack.  
7909
7910         Contributed under MIT/X11 license.
7911
7912 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
7913
7914         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
7915
7916         * aot-runtime.c aot-compiler.c patch-info.h mini.c: Get rid of
7917         MONO_PATCH_INFO_WRAPPER, encode/decode wrapper methods like the others in
7918         encode/decode_method_ref ().
7919
7920         * aot-compiler.c (encode_patch): Handle STATIC_RGCTX_INVOKE wrappers.
7921
7922         * aot-runtime.c (decode_patch): Ditto.  
7923
7924         * mini.c (mono_resolve_patch_target): Handle RGCTX_FETCH sub-patches of type
7925         MONO_PATCH_INFO_METHOD.
7926
7927         * aot-runtime.c (decode_exception_debug_info): Decode the contents of
7928         MonoGenericJitInfo.
7929
7930         * aot-compiler.c (emit_exception_debug_info): Emit the contents of
7931         MonoGenericJitInfo.
7932
7933         * method-to-ir.c (emit_imt_argument): Fix AOT+gshared support.
7934
7935         * mini-amd64.c (add_valuetype): Use a dummy gsctx if we didn't receive
7936         one from the caller.
7937
7938         * aot-runtime.c (decode_generic_inst): New function to decode and
7939         return a interned generic inst.
7940         (decode_klass_ref): Use it.
7941         (decode_method_ref): Ditto.
7942
7943         * aot-compiler.c (emit_exception_debug_info): Save 
7944         jinfo->has_generic_jit_info too.
7945
7946 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
7947
7948         * mini-ia64.c (mono_arch_output_basic_block): Add OP_FCONV_TO_I.
7949
7950         * iltests.il.in: Add a test for fconv_to_i.
7951
7952         * liveness.c: Disable the liveness2 pass for now to save space.
7953
7954         * regalloc2.c: Include mempool-internals.h to fix warnings.
7955
7956         * aot-compiler.c (encode_method_ref): Encode the context of generic
7957         instance methods.
7958
7959         * aot-runtime.c (decode_method_ref): Inflate generic methods using
7960         the context saved in the aot file.
7961
7962         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
7963
7964         * mini-x86.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
7965
7966         * method-to-ir.c (mono_method_to_ir2): When using CEE_JMP, make arguments
7967         volatile so they won't be optimized away.
7968
7969 2008-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
7970
7971         * ssa.c:
7972         * ssa2.c:
7973         * mini.c:
7974         * regalloc2.c:
7975         * dominators.c: Remove duplicated functions that now are in
7976         mempool-internals.h.
7977
7978 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
7979
7980         * aot-compiler.c: Fix warnings.
7981
7982         * aot-runtime.c (decode_klass_ref): Add support for VARs/MVARs.
7983
7984         * aot-compiler.c (encode_klass_ref): Encode is_method too for VARs/MVARs.
7985
7986         * method-to-ir.c (emit_get_rgctx_method): Use MONO_PATCH_INFO_METHODCONST
7987         as the patch type.
7988
7989         * mini.c (mono_resolve_patch_target): Ditto.
7990         
7991         * aot-compiler.c (encode_patch): Add support for RGCTX_FETCH.
7992         (encode_klass_ref): Add support for encoding VARs/MVARs.
7993
7994         * mini.c (mono_patch_info_dup_mp): Handle RGCTX_FETCH.
7995
7996         * aot-runtime.c (decode_patch_info): Rename to 'decode_patch'. Split out
7997         the handling of the got entries into a separate 'decode_got_entry' function.
7998         Add support for RGCTX_FETCH.
7999
8000         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RDI since RAX is
8001         clobbered by the trampoline code.
8002
8003         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RAX since that is
8004         not clobbered by the indirect calling code.
8005
8006 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
8007
8008         * mini-x86.c (mono_arch_patch_code): Handle RGCTX_FETCH/GENERIC_CLASS_INIT
8009         to fix the build.
8010
8011 2008-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
8012
8013         * method-to-ir.c (mono_emit_method_call_full): Alloc the constructor
8014         signature using the compilation mempool otherwise we would leak it.
8015
8016 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
8017
8018         * method-to-ir.c (mono_method_to_ir2): Emit the generic class inits using
8019         mono_emit_abs_call ().
8020
8021         * patch-info.h: Add GENERIC_CLASS_INIT.
8022
8023         * mini.c (mono_resolve_patch_target): Handle GENERIC_CLASS_INIT.
8024
8025         * mini-amd64.c (emit_call_body): Treat abs calls which have a patch info
8026         as their target as a near call.
8027
8028         * mini.c (mono_codegen): Handle patches stored in cfg->abs_patches in the
8029         ABS handling code.
8030         (mono_resolve_patch_target): Add support for MONO_PATCH_INFO_RGCTX_FETCH.
8031
8032         * method-to-ir.c (mono_emit_abs_call): New helper function which emits a
8033         call to a runtime function described by a patch.
8034
8035         * method-to-ir.c: Emit rgctx entry fetches and class init trampolines using
8036         mono_emit_abs_call, this has the advantage that the ABS handling code in
8037         mono_codegen () can handle them both, and can handle other stuff in the
8038         future without additional code.
8039
8040         * mini.h (struct MonoJumpInfoRgctxEntry): New structure describing an rgctx
8041         entry.
8042         (MonoCompile): Add 'abs_patches' hashtable, which contains patches describing
8043         abs addresses.
8044
8045         * mini.h: Add missing bblock related prototypes.
8046
8047         * mini.h (MonoCompile): Remove unused reverse_inst_list and
8048         reverse_inst_list_len fields.
8049
8050         * mini.c: Refactor this file a bit by moving branch optimizations to 
8051         branch-opts.c.
8052
8053         * method-to-ir.c: Merge generic sharing changes missed earlier.
8054
8055         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST.
8056
8057         * aot-runtime.c (decode_patch_info): Refactor the code dealing with the
8058         shared patches. Process METHODCONST as a shared patch.
8059
8060         * liveness.c (mono_analyze_liveness): Disable the liveness2 code for now
8061         as it crashes on the 2.0 mscorlib.
8062
8063         * aot-compiler.c (is_shared_got_patch): Revert the last change as it seems
8064         to cause crashes.
8065         
8066         * aot-compiler.c: Use is_plt_patch () in a few additional places.
8067         (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST, which is generated
8068         by IMT.
8069
8070         * aot-compiler.c: Reorganize the got handling code to be a bit more
8071         understandable.
8072
8073 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
8074
8075         * aot-compiler.c: Make the patch_to_plt_offset hash table use 
8076         mono_patch_info_equals/hash, and use it to massively simplify
8077         get_plt_index ().
8078
8079         * mini.c (mono_patch_info_hash): Simplify this and add support for
8080         more patch types.
8081
8082         * patch-info.h: Rename RGCTX_LAZY_FETCH_TRAMPOLINE to just RGCTX_FETCH.
8083
8084         * mini.c aot-compiler.c aot-runtime.c: Revert the LAZY_FETCH_TRAMPOLINE
8085         handling code, since an offset is not enough to identify a trampoline.
8086
8087         * method-to-ir.c: Remove some g_assert (!cfg->compile_aot) lines.
8088
8089 2008-08-17  Mark Probst  <mark.probst@gmail.com>
8090
8091         * mini.c (mono_op_imm_to_op): Add case for OP_IMUL_IMM.
8092
8093         * method-to-ir.c (mono_method_to_ir2): Decompose OP_CKFINITE.
8094
8095         * mini-ops.h: Argument and result types for OVF_CARRY ops.
8096
8097         * decompose.c: PPC decompositions for various ops.
8098
8099         * cpu-ppc.md, inssel-ppc.brg, mini-ppc.c: PPC changes for Linear IL.
8100
8101 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
8102
8103         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Make this
8104         call the generic trampoline code using a call, instead of a jump, to
8105         remove some special casing from the generic trampoline code.
8106
8107         * mini.c (mono_resolve_patch_target): Handle LAZY_FETCH_TRAMPOLINE.
8108         (mono_codegen): Ditto.
8109
8110         * aot-compiler.c aot-runtime.c: Ditto.
8111
8112         * patch-info.h: Add MONO_PATCH_INFO_RGCTX_LAZY_FETCH_TRAMPOLINE.
8113
8114         * mini-trampolines.c (mono_find_rgctx_lazy_fetch_trampoline_by_addr): New
8115         helper function to find the offset corresponding to a lazy fetch trampoline.
8116
8117         * mini.h (MonoCompile): Add 'orig_method' field to hold the original method
8118         when doing generic sharing.
8119
8120         * aot-compiler.c: Use cfg->orig_method instead of cfg->method in a lot of
8121         places.
8122         
8123         * mini.c (mono_create_rgctx_lazy_fetch_trampoline): Move this to
8124         mini-trampolines.c to be with the other trampoline creation functions.
8125
8126         * method-to-ir.c (mono_emit_method_call): Remove the 'signature' argument
8127         as it is equal to method->signature in most cases, add a 
8128         mono_emit_method_call_full variant which takes a signature and an imt
8129         argument as well.
8130
8131 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
8132
8133         * jit-icalls.c (mono_helper_compile_generic_method): Don't pass the context
8134         to this function, since it could be computed easily from the method 
8135         argument.
8136         (mono_helper_compile_generic_method_wo_context): Removed, not needed any
8137         more.
8138
8139         * method-to-ir.c mini.c: Remove references to 
8140         compile_generic_method_wo_context.
8141
8142         * method-to-ir.c (mono_method_to_ir2): Enable AOT for virtual
8143         generic method calls.
8144         
8145         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_1 for 1
8146         dimensional non-szarrays.
8147
8148         * mini.c (mini_init): Register mono_array_new_1.
8149
8150         * jit-icalls.c (mono_array_new_1): New jit icall.
8151
8152         * mini-trampolines.c (mono_magic_trampoline): For jumps, patch the GOT entries
8153         pointing to the method.
8154
8155         * aot-runtime.c (mono_aot_get_method_from_token): Register GOT slots holding
8156         method addresses belonging to METHOD_JUMP patches in the 
8157         jump_target_got_slot_hash.
8158         (mono_aot_load_method): Ditto.
8159
8160         * aot-compiler.c (compile_method): Allow AOT compilation of methods with
8161         METHOD_JUMP patches.
8162
8163         * mini.c (mini_create_jit_domain_info): New helper function which 
8164         initializes/frees domain->runtime_info.
8165         (mini_free_jit_domain_info): Ditto.
8166         (mini_init): Install the domain hook functions with the runtime.
8167
8168         * mini.h (MonoJitDomainInfo): New structure which stores the domain specific
8169         information maintained by the JIT.
8170
8171         * mini.c (mono_resolve_patch_target): For PATCH_INFO_METHOD_JUMP, move the
8172         insertion into jump_table_hash into mono_codegen (), also implement proper
8173         locking.
8174
8175         * method-to-ir.c (mono_method_to_ir2): Don't disable AOT for CEE_JMP and
8176         tail calls, it is already done by the aot code.
8177         
8178         * method-to-ir.c (mono_method_to_ir2): Handle CEE_JMP using the tail call
8179         mechanism on amd64.
8180
8181         * iltests.il.in: Make the jmp test a bit more complex.
8182
8183         * aot-compiler.c (encode_method_ref): Handle references to normal methods of
8184         generic instances which doesn't have a token.
8185
8186         * aot-runtime.c (decode_method_ref): Ditto.
8187         
8188         * method-to-ir.c (handle_unbox_nullable): Don't disable AOT, the aot code
8189         can handle this case now.
8190         (handle_box): Ditto.
8191
8192 2008-08-15  Geoff Norton  <gnorton@novell.com>
8193
8194         * mini-x86.c: Fix alignment on Apple x86, and re-disable the alignment
8195         debugging check.
8196
8197 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
8198
8199         * method-to-ir.c (mono_method_to_ir2): Allow AOT compilation of methods
8200         calling generic methods.
8201
8202         * aot-compiler.c (encode_patch): Handle MONO_PATCH_INFO_METHOD_RGCTX.
8203
8204         * aot-runtime.c (decode_patch_info): Ditto.
8205
8206         * mini.c (mono_resolve_patch_target): Ditto.
8207         
8208         * patch-info.h: Add METHOD_RGCTX.
8209
8210         * mini-amd64.c (mono_arch_output_basic_block): Optimize LOCALLOC_IMM.
8211
8212 2008-08-14  Zoltan Varga  <vargaz@gmail.com>
8213
8214         * mini-amd64.c (mono_arch_emit_call): Nullify call->vret_var if returning
8215         arguments in registers.
8216
8217         * decompose.c (mono_decompose_vtype_opts): Create a var for the vreg in
8218         OP_VCALL too, don't depend on OP_OUTARG_VTRETADDR doing it.
8219
8220         * mini.c (mini_method_compile): Abort aot compilation for generic
8221         methods if generic sharing is disabled.
8222         
8223         * mini.c (mono_method_to_ir): Disable AOT for virtual calls requiring
8224         an mrgctx.
8225
8226         * method-to-ir.c (mono_method_to_ir2): Disable AOT for virtual calls 
8227         requiring an mrgctx.
8228
8229         * decompose.c (mono_decompose_vtype_opts): Emit the correct sized
8230         store instructions when converting a vcall to a normal call.
8231
8232         * mini.c (sigprof_signal_handler): Call mono_find_jit_info instead of
8233         mono_arch_find_jit_info.
8234
8235 2008-08-13  Zoltan Varga  <vargaz@gmail.com>
8236
8237         * method-to-ir.c (check_inline_called_method_name_limit): Optimize this to
8238         avoid calling mono_method_full_name () for every method even if the
8239         env var is not set.
8240         (check_inline_caller_method_name_limit): Ditto.
8241
8242 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
8243
8244         * driver.c (main_thread_handler): Allow AOT compilation of multiple 
8245         assemblies in one run.
8246
8247         * aot-compiler.c (mono_compile_assembly): Only print out a count of
8248         skipped methods if it is not 0.
8249
8250         * Makefile.am (aotcheck): AOT compile all test assemblies in one run.
8251
8252 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
8253
8254         * mini.c (mono_codegen):  Changing a preprocessor check from WIN64 to
8255           MONO_ARCH_HAVE_UNWIND_TABLE.
8256
8257         Contributed under MIT/X11 license.
8258
8259 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
8260
8261         * mini-amd64.c (mono_arch_cpu_optimizazions):  Remove peephole and branch
8262           from default optimizaton list on Winx64.
8263
8264         * mini-amd64.c (emit_tls_get):  Added Winx64 specific implementation for GetTLS.
8265
8266         * mini-amd64.c (mono_arch_emit_prolog):  Adding an offset on Winx64 to get
8267           the LMF from the MonoJitTlsData structure.
8268
8269         * mini-amd64.c (mono_arch_setup_jit_tls_data):  Added Winx64 implementation.
8270
8271         Contributed under MIT/X11 license.
8272
8273 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
8274
8275         * mini.c (sigsegv_signal_handler): Fix the build.
8276
8277         * mini-amd64.c (emit_call_body): Use image->aot_module instead of 
8278         assembly->aot_module.
8279
8280         * aot-runtime.c: Use image->aot_module instead of searching in the aot_modules
8281         hash table. This simplifies and speeds up a lot of code, and fixes support
8282         for .netmodules.
8283
8284         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes if the thread is not registered
8285         with the runtime.
8286
8287         * mini-exceptions.c: Ditto.
8288         
8289         * exceptions-*c.c (mono_arch_find_jit_info): Remove unused 'trace' and
8290         'native_offset' argument, since these are computed in the 
8291         mono_find_jit_info () function.
8292
8293         * mini-exceptions.c (mono_find_jit_info): Make this non-static, as it
8294         is used by exceptions-ppc.c.
8295
8296         * exceptions-ppc.c: Call mono_find_jit_info () instead of 
8297         mono_arch_find_jit_info ().
8298         
8299         * mini-ppc.h exceptions-ppc.c mini-mips.h mini-mips.c exceptions-mips.c
8300         mini-exceptions.c: Get rid of the CUSTOM_STACK_WALK stuff, use the
8301         generic code in mini-exceptions.c.
8302
8303 2008-08-11  Zoltan Varga  <vargaz@gmail.com>
8304
8305         * mini-ppc.c (mono_arch_flush_register_windows): Add this for ppc.
8306
8307         * aot-runtime.c (mono_aot_get_plt_info_offset): Fix a warning.
8308         
8309         * aot-runtime.c (mono_aot_get_method): Avoid doing all the loading inside
8310         the aot lock, to avoid deadlocks when mono_aot_get_class_from_name () is
8311         called while holding the loader lock. Fixes #415608.
8312         (mono_aot_get_method_from_token_inner): Ditto.
8313
8314 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
8315
8316         * exceptions-ppc.c (mono_jit_walk_stack): Use MONO_INIT_CONTEXT_FROM_CURRENT
8317         to reduce differences between this and the generic implementation in
8318         mini-exceptions.c.
8319         (ves_icall_get_frame_info): Ditto.
8320
8321         * mini-ppc.h (MONO_INIT_CONTEXT_FROM_CURRENT): Define this for ppc too.
8322
8323         * mini-exceptions.c (mono_exceptions_init): Remove an #ifdef which is no
8324         longer neccesarry.
8325
8326         * exceptions-ppc.c (arch_get_call_filter): Rename this to 
8327         mono_arch_get_call_filter () and make it non-static, for consistency with the
8328         other architectures.
8329
8330 2008-08-09  Rodrigo Kumpera  <rkumpera@novell.com>
8331
8332         * mini.c:
8333         * local-propagation.c:
8334         * mini-x86.c: Correct the name of arch defines.
8335
8336 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
8337
8338         * method-to-ir.c (mono_op_to_op_imm_noemul): Correct name of
8339         NO_EMULATE_LONG_SHIFT_OPS define.
8340
8341 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
8342
8343         * method-to-ir.c (mono_method_to_ir2): Remove some code from CEE_MONO_LDPTR
8344         now that aot-ed icall wrappers use CEE_MONO_ICALL_ADDR.
8345
8346         * aot-compiler.c aot-runtime.c: Add support for static aot compilation.
8347         MACH fixes. Merged from the 2.0 branch.
8348
8349         * method-to-ir.c (mono_method_to_ir2): Handle CEE_MONO_ICALL_ADDR.
8350
8351         * mini.c (mono_resolve_patch_target): Error out if an icall is not found.
8352         (mono_method_to_ir): Handle CEE_MONO_ICALL_ADDR.
8353
8354         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Add AOT support.
8355
8356         * method-to-ir.c mini.c driver.c aot-compiler.c: Update after
8357         mono_marshal_get_native_wrapper () signature changes.
8358
8359 2008-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
8360
8361         * jit-icalls.c (mono_fconv_ovf_u8): Work around soft-float double to long
8362         conversion bug under arm.
8363
8364 2008-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
8365
8366         * cpu-arm.md: Increase long_conv_to_ovf_i4_2 max length to 36.
8367
8368         * mini-arm.c (mono_arch_output_basic_block): Implement long to int conversion
8369         with overflow checking.
8370
8371 2008-08-05  Marek Habersack  <mhabersack@novell.com>
8372
8373         * Makefile.am (GENMDESC_PRG): when cross-compiling use full path
8374         to the genmdesc.pl file
8375
8376 2008-08-05  Zoltan Varga  <vargaz@gmail.com>
8377
8378         * ir-emit.h (EMIT_NEW_ARGSTORE): Fix the usage of param_types and
8379         arg_array in the soft-float versions of the LOAD/STORE macros.
8380
8381         * method-to-ir.c (mono_method_to_ir2): Fix a warning in the arm switch
8382         implementation.
8383
8384         * ir-emit.h (NEW_VARLOADA): Handle SOFT_FLOAT correctly.
8385
8386 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
8387
8388         * mini-ia64.c (add_valuetype): Only reserve half parameter slot for each member of
8389         a float HFA. Fixes #413621.
8390
8391 2008-08-02  Gert Driesen  <drieseng@users.sourceforge.net>
8392
8393         * mini-x86.c (mono_arg_get_argument_info): Rename last occurrence of
8394         frame_size to args_size. Fixes build.
8395
8396 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
8397
8398         * mini-x86.c (mono_arch_get_argument_info): Rename frame_size to args_size,
8399         and don't align it to MONO_ARCH_FRAME_ALIGNMENT.
8400
8401         * mini-x86.h: Change MONO_ARCH_FRAME_ALIGNMENT to 8 so doubles stored on
8402         the stack are not unaligned. Fixes #413247.
8403         
8404 Fri Aug 1 18:46:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
8405
8406         * mini.c: update jitted methods performance counters.
8407
8408 Fri Aug 1 16:30:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
8409
8410         * mini-exceptions.c: increase the exceptions thrown performance
8411         counter in mono_handle_exception ().
8412
8413 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
8414
8415         * aot-runtime.c: Use MonoImage's as keys in the aot_modules hash so the aot
8416         can work with netmodules.
8417
8418 2008-07-28  Geoff Norton  <gnorton@novell.com>
8419
8420         * mini-x86.h: Correct the frame alignment on OSX.  Fixes the jit 
8421         regression tests.
8422
8423 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
8424
8425         * mini-x86.c (mono_arch_emit_call): Emi the osx stack alignment at the
8426         correct place.
8427
8428 2008-07-28  Bill Holmes  <billholmes54@gmail.com>
8429
8430         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
8431           The float param registers and other param registers must be the 
8432           same index on Windows x64.
8433
8434         * mini-amd64.c (mono_arch_allocate_vars) : Implementing the 
8435           ArgValuetypeAddrInIReg argument case.  Setting the argument
8436           op to OP_VTARG_ADDR (OP_REGOFFSET)).
8437
8438         * mini-amd64.c (mono_arch_call_opcode) : Winx64 fix.  Use the size
8439           variable computed above as the copy length for arguments of storage
8440           type ArgValuetypeAddrInIReg.
8441
8442         * mini-amd64.c (mono_arch_emit_call) :  Implementing the 
8443           ArgValuetypeAddrInIReg argument case.  This case will rely on
8444           mono_arch_emit_outarg_vt to emit the correct code later in the process.
8445
8446         * mini-amd64.c (mono_arch_emit_call) :  On Winx64 there always needs to be
8447           a 32 byte stack allocation for all calls.  We will omit the adjustment for
8448           jump and tail call instructoins as they do not follow the typical call behavior.
8449
8450         * mini-amd64.c (mono_arch_emit_outarg_vt) :  Implementing the case for
8451           ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
8452           local variable and pass the local variable by reference to the called method.
8453
8454         * mini-amd64.c (mono_arch_emit_prolog, emit_load_volatile_arguments) :
8455           Implementing the ArgValuetypeAddrInIReg argument case.  When the address
8456           of a struct is passed in a register it must be saved with the other
8457           volatile argument on the stack.
8458
8459         * mini-amd64.c (mono_arch_emit_prolog) : Winx64 fix.  When omitting the
8460           frame pointer the stack adjustment value must be saved to the unwind 
8461           info structure.
8462
8463         Contributed under MIT/X11 license.
8464
8465 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
8466
8467         * inssel-x86.brg (stmt): Add missing OP_X86_OUTARG_ALIGN_STACK rule
8468         which got lost in the merge.
8469
8470 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
8471
8472         * method-to-ir.c: Make the helper_sig variables extern to fix the ppc
8473         build.
8474
8475         * mini-amd64.c (emit_call_body): Add a no_patch case missed earlier.
8476         
8477         * mini-amd64.c (emit_call_body): Avoid aligning the call instruction on
8478         icalls, since they won't be patched.
8479
8480         * exceptions-amd64.c (mono_arch_get_restore_context_full): Use a slightly
8481         different code sequence when running under valgrind to prevent some valgrind
8482         errors.
8483
8484         * iltests.il.in: Add new regression test.
8485
8486         * method-to-ir.c (mono_method_to_ir2): Fix handling of inlined methods which
8487         end with a throw.
8488
8489         * method-to-ir.c (mono_method_to_ir2): Use get_vreg_to_inst () instead of
8490         accessing cfg->vreg_to_inst directly to prevent a crash in LDFLD.
8491
8492         * iltests.il.in: Add new test.
8493
8494         * aot-compiler.c: Fix some warnings.
8495
8496         * decompose.c (mono_decompose_long_opts): Implement OP_ICONV_TO_OVF_I8_UN.
8497         Fixes #412494.
8498
8499 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
8500
8501         * driver.c (mono_main): Fix the --gc=none build. Fixes #412482.
8502         (mini_usage_jitdeveloper): Add a missing --wapi option.
8503
8504 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
8505
8506         * mini-codegen.c: Simplify the is_fp macros.
8507         (free_up_ireg): Remove, use free_up_reg instead.
8508         (free_up_reg): Fix the fp case.
8509
8510 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
8511
8512         * cpu-arm.md (loadr8_membase): Increase the length of this as this is not
8513         lowered earlier.
8514
8515         * exceptions-x86.c: Merge some changes which seemed to have got lost
8516         in the linear-ir merge.
8517
8518         * liveness.c: Disable the liveness2 pass on 32 bit platforms.
8519
8520         * method-to-ir.c (mono_handle_global_vregs): Make the component vregs of a
8521         long vreg volatile even if the variable was already created.
8522
8523         * liveness.c (update_liveness2): Avoid eliminating dead definitions of
8524         volatile variables.
8525
8526 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
8527
8528         * cpu-x86.md (fcall_membase): Increase the size of the fcall opcodes.
8529
8530         * mini.c (mono_jit_compile_method_inner): Add support for 
8531         MONO_EXCEPTION_BAD_IMAGE.
8532
8533         * method-to-ir.c (mono_method_to_ir2): Avoid a crash if 
8534         mini_method_get_context () returns NULL. Fixes #356531.
8535
8536         * mini.c (mono_method_to_ir): Ditto.
8537         
8538         * method-to-ir.c (mono_method_to_ir2): Create a variable if needed when
8539         accessing a field of a valuetype in LDFLD/STFLD. Fixes #412399.
8540
8541 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
8542
8543         * method-to-ir.c (mono_method_to_ir2): Initialize an uninitialized variable
8544         in the LDFTN implementation.
8545
8546 2008-07-25  Mark Probst  <mark.probst@gmail.com>
8547
8548         * mini-trampolines.c (mono_magic_trampoline): When sharing generic
8549         code, patch calls to icalls, too, even if they're not in the
8550         shared generic code hash.  Fixes #411962.
8551
8552 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
8553
8554         * cpu-x86.md: Increase the length of the fcall opcodes.
8555
8556         * mini-x86.c (emit_move_return_value): Avoid some precision issues for
8557         calls returning floats.
8558
8559         * method-to-ir.c (mono_method_to_ir2): Remove the generic sharing restrictions
8560         on NEWARR.
8561         
8562         * method-to-ir.c (mono_method_to_ir2): Merge some LDFTN gsharing changes
8563         missed earlier.
8564
8565         * method-to-ir.c (handle_delegate_ctor): Avoid putting dynamic methods
8566         into the domain->method_code_hash.
8567
8568         * aot-compiler.c: Fix win32 build.
8569
8570         * method-to-ir.c (EMIT_GET_RGCTX): Call EMIT_NEW_LDARG in emit_get_rgctx ().
8571         
8572         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_specific in the
8573         gshared NEWARR implementation.
8574
8575         * cpu-sparc.md: Remove duplicate localloc_imm opcode.
8576
8577         * ir-emit.h (NEW_ARGLOAD): Use cfg->args and cfg->arg_types so this macro
8578         can be used outside of method_to_ir.
8579
8580         * mini.h (MonoCompile): Add arg_types field.
8581
8582         * method-to-ir.c (inline_method): Save/Restore cfg->args and cfg->arg_types.
8583         
8584         * method-to-ir.c (mono_method_to_ir2): Set cfg->args and cfg->arg_types to
8585         the values of the local arg_array and param_types array.
8586
8587 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
8588
8589         * method-to-ir.c (mono_method_to_ir2): Allocate a GOT var for NEWOBJ, since
8590         got accesses might only get generated later when NEWOBJ is decomposed.
8591         
8592         * method-to-ir.c (handle_delegate_ctor): Add an optimization to avoid
8593         looking up the native code of the target method when a delegate is called
8594         for the first time.
8595
8596         * mini-trampolines.c (mono_delegate_trampoline): Add the other half of the
8597         optimization.
8598
8599         * debug-debugger.c (MONO_DEBUGGER__debugger_info): Fix a warning.
8600
8601         * aot-runtime.c aot-compiler.c: Add a new option 'no-dlsym' which makes
8602         AOT work on platforms without a working dlsym implementation.
8603
8604         * mini.h: Bump AOT image format version.
8605         
8606 2008-07-24  Mark Probst  <mark.probst@gmail.com>
8607
8608         * mini-exceptions.c: Free a MonoType with
8609         mono_metadata_free_type() instead of g_free().
8610
8611         * aot-runtime.c: Free a MonoType.
8612
8613 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
8614
8615         * method-to-ir.c (mono_method_to_ir2): Add a comment for the box+brtrue
8616         optimization.
8617
8618         * mini-codegen.c (mono_local_regalloc): Remove the remaining items from the
8619         fp stack on x86.
8620
8621 2008-07-23  Massimiliano Mantione  <massi@ximian.com>
8622         * mini.c (sigprof_signal_handler): call the new "runtime initialized"
8623         profiler hook.
8624
8625 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
8626
8627         * method-to-ir.c (mono_method_to_ir2): Set the stack type properly for
8628         NEWOBJ calls on valuetypes.
8629
8630         * iltests.il.in: Add new test.
8631
8632         * mini-x86.c (mono_arch_emit_call): Use mini_type_stack_size ().
8633
8634 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
8635
8636         * mini-exceptions.c: Fix some warnings. Remove one ia64 special case as it
8637         is no longer needed.
8638
8639         * mini-ia64.c (mono_arch_emit_prolog): In native-to-managed wrappers, widen
8640         non register sized integer arguments.
8641         (mono_arch_call_opcode): Add support for ArgInFloatRegR4.
8642         (mono_arch_emit_outarg_vt): Pass a more reasonable alignment to 
8643         emit_memcpy2 ().
8644
8645         * method-to-ir.c (mono_method_to_ir2): Handle the ret_var_is_local case in
8646         CEE_MONO_RETOBJ.
8647         
8648         * method-to-ir.c (ADD_WIDEN_OP): New macro to insert a widening op when
8649         two a binop with different sized arguments is emitted.
8650
8651         * mini.c (mono_bblock_insert_after_ins): Properly link up with the next
8652         instruction in the ins==NULL case.
8653
8654 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
8655
8656         * mini-ops.h: Add OP_X86_OUTARG_ALIGN_STACK.
8657
8658         * mini-x86.c: Fix osx build.
8659
8660         * mini-amd64.c (mono_arch_output_basic_block): Handle varargs in the CALL_REG
8661         opcodes as well.
8662
8663         * method-to-ir.c (mono_spill_global_vars): Avoid fusing a load+store into the
8664         instruction for non int sized variables.
8665
8666         * method-to-ir.c (mono_method_to_ir2): Fix an assert in the LDFLD
8667         implementation.
8668
8669 2008-07-23  Robert Jordan  <robertj@gmx.net>
8670
8671         * method-to-ir.c: Fix MSVC build.
8672
8673 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
8674
8675         * method-to-ir.c (mono_method_to_ir2): When calling native code which returns
8676         a non int sized type, widen it to an int since newer versions of gcc seem to
8677         generate code which needs this.
8678
8679         * ssa2.c abcremoval2.c: Fix warnings.
8680
8681         * *: Merge the Linear IR branch.
8682
8683         The original branch is at trunk/branches/vargaz/mini-linear-il, and
8684         the ChangeLog file there describes all the changes done over the years. 
8685         Further documentation can be found at www.mono-project.com/Linear_IL.
8686
8687 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
8688
8689         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
8690           The float param registers and other param registers must be the 
8691           same index on Windows x64.
8692
8693         Contributed under MIT/X11 license.
8694
8695 2008-07-21  Rodrigo Kumpera  <rkumpera@novell.com>
8696
8697         * mini.c: Make the previous fix GC safe.
8698
8699 2008-07-21  Raja R Harinath  <harinath@hurrynot.org>
8700
8701         * Makefile.am (version.h): Allow a trailing '/' in the repository URL.
8702
8703 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
8704
8705         * mini-amd64.c (get_call_info): Correcting the case for MONO_TYPE_TYPEDBYREF
8706           on Winx64.  This type will not be passed on the stack (ArgOnStack), but 
8707           ArgValuetypeAddrInIReg instead.
8708
8709         Contributed under MIT/X11 license.
8710
8711 2008-07-21  Zoltan Varga  <vargaz@gmail.com>
8712
8713         * mini-codegen.c (get_register_spilling): Fix a warning.
8714
8715 2008-07-17  Rodrigo Kumpera  <rkumpera@novell.com>
8716
8717         * mini.c: Use mono_runtime_class_init_full to avoid leaking memory
8718         for types which the initialization fails. Raises the provided exception
8719         at the right stop after cleanup.
8720
8721 2008-07-16  Zoltan Varga  <vargaz@gmail.com>
8722
8723         * aot-compiler.c: Free most of the memory allocated during compilation.
8724
8725         * mini.c (mini_parse_debug_options): Fix a leak.
8726         
8727         * mini.c (mini_method_compile): Don't add the method to the jit info tables
8728         during aot compilation.
8729
8730 2008-07-14  Zoltan Varga  <vargaz@gmail.com>
8731
8732         * mini.c (mono_method_to_ir): Disable aot for code using CCASTCLASS on x86 as 
8733         it has too much register pressure.
8734
8735 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
8736
8737         * inssel.brg (CEE_CASTCLASS): Remove some dead code.
8738
8739 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
8740
8741         * mini-x86.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
8742         on x86.
8743
8744         * mini-amd64.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
8745         on amd64 similar to the way it is done on arm.
8746
8747         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
8748
8749         * aot-runtime.c (load_aot_module): Rename 'info' to 'amodule' for 
8750         consistency, normalize error messages, avoid loading aot-only modules in
8751         normal mode.
8752
8753         * driver.c (mono_main): Rename --aot-only command line option to --full-aot
8754         for consistency.
8755
8756         * aot-compiler.c aot-runtime.c tramp-arm.c: Implement aot-only support.
8757
8758 2008-07-11  Martin Baulig  <martin@ximian.com>
8759
8760         * debug-debugger.h
8761         (MonoDebuggerInfo): Add `interruption_request'.
8762
8763 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
8764
8765         * aot-compiler.c (emit_plt): Remove some dead code.
8766
8767         * exceptions-arm.c (mono_arch_get_call_filter_full): Initialize ji.
8768
8769         * aot-runtime.c (mono_aot_get_plt_info_offset): New helper function to
8770         return the plt info offset belonging to a given plt entry.
8771
8772         * mini-trampolines.c (mono_aot_plt_trampoline): Use 
8773         mono_aot_get_plt_info_offset.
8774         
8775         * aot-runtime.c aot-compiler.c tramp-arm.c: Change the arm plt code to be
8776         similar to the amd64 code by makeing jumps through a separate jump table 
8777         instead of embedding the jump addresses into the code.
8778
8779 2008-07-11  Zoltan Varga  <vargaz@gmail.com>
8780
8781         * mini.c (mono_method_to_ir): Disable aot for calling ldtoken in a generic
8782         method.
8783
8784 2008-07-10  Martin Baulig  <martin@ximian.com>
8785
8786         * mini.c (mini_method_compile): Disable generics sharing when
8787         running in the debugger.
8788
8789 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
8790
8791         * mini.c (mono_method_to_ir): Create the got var in CEE_REFANYVAL.
8792
8793         * inssel.brg (CEE_CASTCLASS): Avoid reusing temporary registers to prevent
8794         the local register allocator from running out of registers on x86 when 
8795         using aot.
8796
8797 2008-07-10  Bill Holmes  <billholmes54@gmail.com>
8798
8799         * inssel-long.brg For OP_LCONV_TO_OVF_I4 an int cast is needed when 
8800         expressing IntMin for the VS Compiler.  See Compiler Warning (level 2) 
8801         C4146.
8802
8803         Contributed under MIT/X11 license.
8804
8805 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
8806
8807         * aot-compiler.c: Get rid of whitespace in the generated assembly file to
8808         speed up the assembler.
8809
8810 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
8811
8812         * mini-arm.h tramp-arm.c exceptions-arm.c aot-compiler.c: Beginnings of aot-only
8813         support.
8814
8815         * mini.c: Move the soft float handling macros a bit earlier, add 
8816         NEW_TEMPSTORE_SOFT_FLOAT macro, fix warnings, add soft-float support in one
8817         place.
8818
8819         * mini.h: Add prototype for mono_arch_fixup_jinfo.
8820
8821         * mini.c (mini_init): In aot-only mode, set the root domain code manager to
8822         read-only to help catch code allocation requests.
8823         
8824         * mini.c inssel.brg aot-compiler.c: Make the use of IMT runtime configurable,
8825         and turn it off when using --aot-only or when compiling with --aot=full.
8826
8827         * mini.c (mono_resolve_patch_target): In aot-only mode, allocate the
8828         jump table for switches from the normal domain mempool, not the code
8829         manager.
8830
8831         * mini-trampolines.c (get_unbox_trampoline): New function to return an
8832         unbox trampoline which handles aot-only mode too.
8833
8834         * aot-runtime.c (mono_aot_get_unbox_trampoline): New function to lookup
8835         an AOTed unbox trampoline.
8836
8837         * aot-compiler.c (emit_trampolines): Emit unbox trampolines.
8838
8839 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
8840
8841         * wapihandles.c: Fixing MSVC builds.  Include statement changed from <> to
8842         ""
8843
8844         Contributed under MIT/X11 license.
8845
8846 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
8847
8848         * mini.c (mono_codegen):  Allocate space at the end of the code block and store
8849           the unwind information for the method at the end of the allocated block.
8850           
8851         * mini-amd64.h: Added declarations for the unwind routines and adding field to 
8852           MonoCompileArch to hold the unwind info for SEH on Winx64
8853         
8854         * mini-amd64.c (mono_arch_emit_prolog): Calls to the unwind routines added to store
8855           frame pointer info for the method being compiled.
8856           
8857         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception): Added a stack adjustment before
8858           the call to mono_exception_from_token.
8859           
8860         * exceptions-amd64.c: Added mono_arch_unwindinfo* implementations.  This code is responsible
8861           storing the method prolog information in a format that the Winx64 SEH can understand.  This
8862           information is stored a the end of the method block because it is all 32-bit offset based.
8863
8864         Contributed under MIT/X11 license.
8865
8866 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
8867
8868         * mini.h: Remove duplicate definitions of the mini_wapi_ functions.
8869
8870         * wapihandles.c: Fix warnings.
8871
8872         * aot-runtime.c (load_aot_module): Add a missing error message in aot-only
8873         mode.
8874
8875         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Avoid calling 
8876         mono_jit_compile_method in aot-only mode since that calls the type 
8877         initializer.
8878         
8879         * mini-trampolines.c (mono_create_delegate_trampoline): Avoid calling
8880         get_delegate_invoke_impl in aot-only mode.
8881
8882         * mini.c (mono_global_codeman_reserve): Reenable the aot-only check.
8883
8884 2008-07-08  Zoltan Varga  <vargaz@gmail.com>
8885
8886         * trace.c (mono_trace_enter_method): Fix printing of Type instances.
8887
8888         * aot-compiler.c (compile_method): Disable the check for GSHARED since it
8889         is on by default.
8890
8891         * inssel-long.brg (reg): Add a rule for LCALL_REG (OP_I8CONST).
8892
8893         * tramp-amd64.c (mono_arch_nullify_plt_entry): Read the nullified class
8894         init trampoline from the AOT file as well.
8895
8896         * mini-amd64.c (mono_arch_register_lowlevel_calls): Register
8897         mono_amd64_throw_exception as a jit icall since it is needed by the aot-only
8898         code.
8899
8900         * mini.c (mini_init): Move the call to mono_exceptions_init () after 
8901         mono_init.
8902
8903         * exceptions-amd64.c: Add _full variants for the remaining exception code
8904         creation functions as well, allow emission of relocatable code, remove
8905         caching since that is now done by the caller.
8906
8907         * mini-exceptions.c: Add _full variants for the remaining exception code
8908         creation functions as well, add aot-only support.
8909
8910         * aot-compiler.c (compile_method): Allow calls to methods of constructed types
8911         if we can determine a proper token for them.
8912         (add_wrappers): Add a few more wrappers.
8913         (emit_method_code): Remove some dead code.
8914         (emit_trampolines): Emit exception code too.
8915
8916         * mini.c (mono_method_to_ir): Call mono_array_new_2 if possible.
8917
8918         * jit-icalls.c (mono_array_new_2): New jit icall, specialized version of
8919         mono_array_new_va which avoids varargs.
8920
8921         * mini-exceptions.c (mono_exceptions_init): Fix the ppc build.
8922
8923         * mini-trampolines.c: Call mono_create_specific_trampoline () instead of
8924         mono_arch_create_specific_trampoline () in all places.
8925
8926         * aot-compiler.c aot-runtime.c: Refactor the trampoline emitting/loading code
8927         a bit so it can be used for other things as well.
8928         
8929         * mini-exceptions.c (mono_exceptions_init): Initialize throw_exception_by_name
8930         on demand as well.
8931
8932         * exceptions-amd64.c: Rename the caching from the exception code creation
8933         functions, it is done by the caller instead.
8934         
8935         * exceptions-amd64.c: Change the signature of the exception code creation 
8936         functions to allow the creation of relocatable code later.
8937
8938         * mini-exceptions.c: Add a set of functions to query the various 
8939         runtime-generated exception functions.
8940
8941         * mini.c mini-exceptions.c: Use the newly added functions instead of the
8942         mono_arch_.. () functions.
8943         
8944 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
8945
8946         * mini-trampolines.c (mono_aot_get_trampoline_code): Removed, no longer used.
8947
8948         * aot-runtime.c aot-compiler.c: AOT the generic trampolines in aot-only mode.
8949
8950         * mini.c (mini_get_imt_trampoline): Call mono_create_specific_trampoline ().
8951         (mini_get_vtable_trampoline): Ditto.
8952
8953         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Create relocatable
8954         code in the AOT case by returning the code size and a list of relocations to
8955         the caller.
8956
8957         * mini-trampolines.c (mono_create_specific_trampoline): New helper function.
8958
8959 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
8960
8961         * mini-amd64.c:  On Winx64 the calling convention always requires the caller to 
8962           clean the stack.
8963
8964         Contributed under MIT/X11 license.
8965
8966 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
8967
8968         * aot-compiler.c (emit_exception_debug_info): Serialize the debug info first
8969         so the buffer size can be computed correctly. Fixes #404735.
8970
8971         * debug-mini.c (mono_debug_serialize_debug_info): Lookup the debug info
8972         normally as cfg->debug_info is already freed.
8973
8974 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
8975
8976         * mini-amd64.c: For calls returning vtypes in registers, don't store
8977         the return address on the stack, instead allocate a separate local for
8978         it. Fixes #404729.
8979
8980 2008-07-05  Mark Probst  <mark.probst@gmail.com>
8981
8982         * mini-trampolines.c, mini.h: Add an argument to
8983         mono_create_jit_trampoline_in_domain() for turning off the adding
8984         of the sync wrapper.
8985
8986         * mini.c: Use the JIT trampoline without sync instead of
8987         ldftn_nosync in static RGCTX invoke wrappers so that the call can
8988         be patched.
8989
8990 2008-07-04  Mark Probst  <mark.probst@gmail.com>
8991
8992         * driver.c: Turn on GSHARED optimization by default.
8993
8994 2008-07-04  Zoltan Varga  <vargaz@gmail.com>
8995
8996         * mini-trampolines.c mini.c mini.h tramp-<ARCH>.c: Rename MONO_TRAMPOLINE_GENERIC
8997         to MONO_TRAMPOLINE_JIT since it better reflects what it does.
8998
8999         * mini-trampolines.c (mono_get_aot_trampoline_code): New internal function to
9000         create a variant of the generic trampoline code callable from AOTed trampolines.
9001
9002         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add support for generic
9003         trampoline code callable from AOTed trampolines.
9004
9005         * aot-compiler.c aot-runtime.c: Add support for AOTing trampolines.
9006
9007 2008-07-04  Mark Probst  <mark.probst@gmail.com>
9008
9009         * inssel.brg, mini-ops.h: New opcode for doing CHECK_THIS in a
9010         pass-through manner.
9011
9012         * mini.c: Generic method sharing.  Pass MRGCTX to generic methods
9013         and don't fail sharing for them anymore.
9014
9015         * mini-exceptions.c: Handle exceptions in shared generic methods.
9016
9017         * generic-sharing.c: When checking the context of a generic
9018         method, also check its class's context.  Don't treat wrappers as
9019         sharable.
9020
9021         * mini-trampolines.c: Some code factored out to
9022         metadata/generic-sharing.c.  Handle the MRGCTX case.
9023
9024         * jit-icalls.c, jit-icalls.h: ldvirtfn icall for generic sharing -
9025         we must deal with the method being of another instantiation of the
9026         class.  Add static rgctx invoke wrappers to generic methods.
9027
9028 2008-07-04  Mark Probst  <mark.probst@gmail.com>
9029
9030         * mini.c: Provide all jit infos of generic shared methods with a
9031         generic jit info.
9032
9033         * mini-exceptions.c: Handle the new situation that a generic info
9034         might be available, but not info about the this/vtable/mrgctx
9035         variable.
9036
9037 2008-07-03  Mark Probst  <mark.probst@gmail.com>
9038
9039         * mini.c: Don't accept ldftn and ldvirtftn with uninstantiated
9040         generic methods.
9041
9042 2008-07-03  Zoltan Varga  <vargaz@gmail.com>
9043
9044         * dominators.c (check_dominance_frontier): Fix a warning.
9045
9046         * mini.h: Add some missing prototypes.
9047
9048         * ssa.c local-propagation.c debug-debuger.c: Fix warnings.
9049
9050         * driver.c (mono_jit_init_version): Correct the comments since the first
9051         argument should be the name of the root domain, not a filename.
9052
9053         * aot-runtime.c (make_writable): Error out if this is called while running
9054         with --aot-only.
9055         (load_aot_module): Ditto.
9056
9057         * aot-compiler.c: Really fix the computation of method indexes.
9058
9059         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Remove the previous 
9060         optimizations as this is no longer called frequently.
9061
9062         * mini-trampolines.c (mono_create_delegate_trampoline): Precompute the invoke
9063         method and the invoke impl code and pass it to the delegate trampoline instead of
9064         just the delegate class.
9065
9066 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
9067
9068         * aot-compiler.c: Fixup the computation of method indexes.
9069         (add_wrappers): Create the base methods of the runtime invoke wrappers using
9070         the method builder infrastructure.
9071
9072         * aot-runtime.c (decode_exception_debug_info): Don't crash if the method
9073         has no header.
9074
9075         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): In aot-only
9076         mode, load the method right away instead of creating a trampoline.
9077
9078         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Eliminate locking.
9079
9080         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Eliminate locking, speed up
9081         some checks a bit.
9082
9083 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
9084
9085         * aot-runtime.c (decode_patch_info): Don't create trampolines in aot_only mode.
9086         (mono_aot_load_method): Use method_index instead of method->token.
9087
9088         * mini.c (mono_jit_compile_method_inner): Move the aot_only check down, so it
9089         can handle icalls etc. properly.
9090
9091         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
9092
9093         * aot-compiler.c aot-runtime.c: Allow AOTing many wrapper types.
9094
9095         * mini.c (mono_resolve_patch_target): Handle JIT_ICALL_ADDR.
9096         (mono_codegen): Convert calls made by JIT icall wrappers to the icalls into
9097         JIT_ICALL_ADDR patch type.
9098
9099         * patch-info.h: Add JIT_ICALL_ADDR patch type.
9100
9101         * mini.c (mono_method_to_ir): Allow AOTing methods which access the interruption
9102         request flag.
9103         (mono_resolve_patch_target): Handle INTERRUPTION_REQUEST_FLAG.
9104
9105         * patch-info.h: Add INTERRUPTION_REQUEST_FLAG.
9106
9107 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
9108
9109         * mini.c: Use domain->jit_code_hash_lock for controlling access to
9110         domain->jit_code_hash.
9111
9112 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
9113
9114         * mini.c (mini_parse_debug_options): Add 'dont-free-domains' option.
9115
9116 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
9117
9118         * mini-trampolines.c (mono_delegate_trampoline): Don't pass a gsctx to
9119         get_this_arg_from_call, let it compute it when needed.
9120
9121         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'code' argument, compute
9122         gsctx from code only when needed.
9123
9124         * mini-trampolines.c (get_generic_context): Rename this to 
9125         mono_get_generic_context_from_code (), and move it to generic-sharing.c, where
9126         it can be called by the arch backends.
9127
9128         * mini-exceptions.c (mono_print_thread_dump): Allow the argument to be NULL.
9129
9130 2008-06-26  Zoltan Varga  <vargaz@gmail.com>
9131
9132         * driver.c (mono_main): Add experimental --aot-only command line option.
9133
9134         * mini.c: Error out when creating trampolines or JIT compiling if --aot-only is
9135         set.
9136
9137 2008-06-26  Kornel Pal  <kornelpal@gmail.com>
9138
9139         * driver.c (DllMain): Remove mono_module_handle.
9140
9141         Contributed under MIT/X11 license.
9142
9143 2008-06-25  Zoltan Varga  <vargaz@gmail.com>
9144
9145         * aot-compiler.c: Add not-yet-usable 'full' option. Add some infrastructure code
9146         for emitting methods which are not in the source assembly. Detect and report
9147         failure of assembling+linking.
9148         
9149         * aot-compiler.c (emit_klass_info): Call mono_class_setup_vtable ().
9150
9151         * aot-compiler.c: Move the contents of the has_glot_slots array to MonoCompile.
9152
9153 2008-06-24  Rodrigo Kumpera  <rkumpera@novell.com>
9154
9155         * mini.c: Check if stats is enabled so we don't allocate memory when not needed.
9156
9157 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
9158
9159         * mini.h: Remove some obsolete prototypes.
9160
9161         * mini.c: Avoid storing MonoMethod pointers in the JIT stats, store their string format instead.
9162
9163 2008-06-24  Mark Probst  <mark.probst@gmail.com>
9164
9165         * mini.c (get_object_generic_inst): Variable-sized arrays are not
9166         supported by Visual Studio, so use alloca().
9167
9168 2008-06-23  Zoltan Varga  <vargaz@gmail.com>
9169
9170         * mini-ia64.c (add_valuetype): Increase *gr too when passing a HFA to be in sync with the ABi.
9171         Fixes #402585.
9172
9173 2008-06-23  Mark Probst  <mark.probst@gmail.com>
9174
9175         * mini.c: Fail sharing of a generic method if it contains an open
9176         catch clause (because we don't pass MRGCTXs yet).
9177
9178 2008-06-23  Mark Probst  <mark.probst@gmail.com>
9179
9180         * mini.c: When compiling a method with generic sharing, insert the
9181         method instantiated with an all-Object generic context into the
9182         jit info table, instead of the context of the first instantiation
9183         of the method we happen to compile.
9184
9185 2008-06-18  Martin Baulig  <martin@ximian.com>
9186
9187         * debug-debugger.h (MonoDebuggerInfo): Replaced `version' with
9188         `major_version' and `minor_version'.
9189
9190 2008-06-17  Mark Probst  <mark.probst@gmail.com>
9191
9192         * generic-sharing.c, mini.c, mini.h, aot-runtime.c:
9193         mono_method_is_generic_sharable_impl() takes an additional
9194         argument specifying whether to treat type variables as reference
9195         types.
9196
9197 2008-06-17  Mark Probst  <mark.probst@gmail.com>
9198
9199         * mini.h: Removed obsolete prototypes.
9200
9201 2008-06-17  Mark Probst  <mark.probst@gmail.com>
9202
9203         * mini.c: Don't fail generic sharing for initobj and sizeof - we
9204         already handle them.
9205
9206 2008-06-17  Mark Probst  <mark.probst@gmail.com>
9207
9208         * mini.h, mini-trampolines.c, tramp-alpha.c, tramp-amd64.c,
9209         tramp-arm.c, tramp-hppa.c, tramp-ia64.c, tramp-mips.c,
9210         tramp-ppc.c, tramp-s390.c, tramp-s390x.c, tramp-sparc.c,
9211         tramp-x86.c: Added a MonoGenericContext* argument to
9212         mono_arch_get_unbox_trampoline() so that it can call other
9213         functions which require it.
9214
9215 2008-06-17  Mark Probst  <mark.probst@gmail.com>
9216
9217         * mini.h, mini-trampolines.c, mini-amd64.c, mini-x86.c,
9218         mini-alpha.c, mini-arm.c, mini-ia64.c, mini-ppc.c:
9219         mono_arch_get_this_arg_from_call() takes a
9220         MonoGenericSharingContext* as well.
9221
9222 2008-06-17  Mark Probst  <mark.probst@gmail.com>
9223
9224         * mini.c: Factor out code for emitting unbox into emit_unbox() and
9225         implement generic sharing of unbox.
9226
9227 2008-06-17  Mark Probst  <mark.probst@gmail.com>
9228
9229         * mini.c: Don't compute the vtable to determine whether a field is
9230         special static, because it might not work for open types.
9231
9232 2008-06-17  Mark Probst  <mark.probst@gmail.com>
9233
9234         * mini.c: Removed the unused token_type and token_source arguments
9235         from get_runtime_generic_context_ptr().
9236
9237 2008-06-17  Marek Habersack  <mhabersack@novell.com>
9238
9239         * mini.c (ADD_BINOP): fix the build
9240
9241 2008-06-16  Zoltan Varga  <vargaz@gmail.com>
9242
9243         * mini.c (ADD_BINOP): When operating on a native int and an int32, insert
9244         a widening op.
9245
9246 2008-06-16  Mark Probst  <mark.probst@gmail.com>
9247
9248         * mini.h: Removed class relations enum that's not used anymore.
9249
9250 2008-06-16  Mark Probst  <mark.probst@gmail.com>
9251
9252         * tramp-x86.c, tramp-amd64.c: Slot access code for MRGCTXs.
9253
9254         * mini-trampolines.c: Distinguish between RGCTXs and MRGCTXs in
9255         the lazy fetch trampoline access code.
9256
9257 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
9258
9259         * mini-codegen.c (mono_local_regalloc): Add some micro optimizations.
9260
9261 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
9262
9263         * mini.c: Fix some soft-float bugs. Fixes #378735 and #398348.
9264
9265         * mini.h (MONO_INST_LIST_ENTRY): Fix warnings on arm.
9266
9267         * mini.c (mono_method_to_ir): Check call signature for NEWOBJ as well.
9268
9269 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
9270
9271         * mini-x86.c inssel-x86.brg cpu-x86.md: Implement unsigned min/max
9272         intrinsics.
9273
9274         * mini-ops.h: Add MIN/MAX_UN opcodes.
9275
9276         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Implement unsigned min/max
9277         intrinsics.
9278
9279         * basic-math.cs: Add more min/max tests.
9280
9281         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
9282
9283 2008-06-13  Mark Probst  <mark.probst@gmail.com>
9284
9285         * mini.c: Small fix in the prologue of emit_castclass.
9286
9287 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
9288
9289         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
9290
9291         * mini.c (mini_get_inst_for_method): Remove the Min/Max intrinsics, they
9292         do not work even for unsigned types. Fixes #400014.
9293
9294         * basic-math.cs: Add regression tests for unsigned Min/Max.
9295
9296 2008-06-13  Mark Probst  <mark.probst@gmail.com>
9297
9298         * mini.c: Added additional context_used argument to several
9299         functions, which will be needed for sharing generic methods.  Use
9300         GET_RGCTX macro wherever appropriate.  Declare only one
9301         context_used in mono_method_to_ir().
9302
9303 2008-06-13  Mark Probst  <mark.probst@gmail.com>
9304
9305         * mini.c, generic-sharing.c: Removed generic class relations.
9306
9307         * mini.c, tramp-amd64.c, tramp-x86.c: Additional arguments to
9308         functions due to MRGCTX changes.
9309
9310 2008-06-13  Mark Probst  <mark.probst@gmail.com>
9311
9312         * inssel.brg, inssel-long.brg, inssel-long32.brg, mini-ops.h,
9313         graph.c, local-propagation.c, aliasing.c: New opcodes for calls
9314         with calculated IMT.
9315
9316         * mini.c: Generic sharing of calls via generic interfaces.
9317
9318         * jit-icalls.c, jit-icalls.h: Helper function for compiling a
9319         generic method with non-constant MonoGenericContext*.  Instead,
9320         the context is taken out of the method itself.
9321
9322 2008-06-13  Mark Probst  <mark.probst@gmail.com>
9323
9324         * mini.c: Generic sharing of ldvirtftn.
9325
9326 2008-06-13  Mark Probst  <mark.probst@gmail.com>
9327
9328         * mini.c: Generic sharing of ldftn.
9329
9330 2008-06-13  Mark Probst  <mark.probst@gmail.com>
9331
9332         * mini.c: Do pass VTable/RGCTX argument to static generic methods.
9333
9334 2008-06-13  Mark Probst  <mark.probst@gmail.com>
9335
9336         * mini.c: Generic sharing of the special case of ldtoken followed
9337         by a call to GetTypeFromHandle.
9338
9339 2008-06-13  Mark Probst  <mark.probst@gmail.com>
9340
9341         * mini.c: Generic sharing of box for nullable types.
9342
9343 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
9344
9345         * mini-s390x.c (add_stackParm): Fix computation of offsets when arguments
9346         are passed on the stack. Fixes #324807.
9347
9348 2008-06-12  Bill Holmes  <billholmes54@gmail.com>
9349
9350         * mini-amd64.c:add_valuetype: Adding Winx64 code to fill the ArgInfo
9351         for the ArgValuetypeAddrInIReg case.
9352
9353         * mini-amd64.c:mono_arch_allocate_vars:  Adding a case for 
9354         ArgValuetypeAddrInIReg to avoid asserts.  Code needs to be added here.
9355
9356         * mini-amd64.c: mono_arch_call_opcode:  Adding Winx64 code for an ArgInfo of 
9357         type ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
9358         local variable and pass the local variable by reference to the called method.
9359           
9360         * mini-amd64.c: mono_arch_emit_prolog:  Adjust the stack for calls to
9361         mono_jit_thread_attach and mono_get_lmf_addr for Winx64.
9362
9363         Contributed under MIT/X11 license.
9364
9365 2008-06-10  Rodrigo Kumpera  <rkumpera@novell.com>
9366
9367         * debug-mini.c (mono_debug_free_method_jit_info): Moved to metadata/mono-debug.c.
9368
9369         * debug-mini.c (mono_debug_print_vars): Release memory after printing
9370         everything.
9371
9372 2008-06-10  Martin Baulig  <martin@ximian.com>
9373
9374         * debug-mini.c
9375         (mono_debug_close_method): Check whether `cfg->epilogue_begin != NULL'.
9376
9377 2008-06-09  Kornel Pal  <kornelpal@gmail.com>
9378
9379         * main.c: Add and set argv [argc] to NULL to match C specification that fixes
9380         possible error when no arguments are passed.
9381
9382         Contributed under MIT/X11 license.
9383
9384 2008-06-09  Rodrigo Kumpera  <rkumpera@novell.com>
9385
9386         * mini-exceptions.c (ves_icall_get_trace): Skip source locations
9387         where the file name is NULL.
9388
9389 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
9390
9391         * mini.c: Fix s390 build.
9392
9393 2008-06-08  Zoltan Varga  <vargaz@gmail.com>
9394
9395         * trace.c (mono_trace_parse_options): Fix warnings.
9396
9397         * mini-amd64.c: Revert most of the last patch for now as it breaks the build.
9398
9399 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
9400
9401         * mini.c (remove_block_if_useless): Avoid printing the method name.
9402         
9403         * mini.c: Remove needless setting of ins->cil_code which is now done by 
9404         MONO_INST_NEW.
9405
9406         * mini-amd64.c: Add some code to avoid saving callee saved registers in the
9407         LMF. Not yet used.
9408
9409         * tramp-amd64.c (mono_arch_patch_callsite): Tell valgrind to discard the
9410         translated code after it has been patched.
9411
9412 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
9413
9414         * mini-amd64.c (emit_call_body): Align the call displacement to 4 bytes to
9415         avoid problems during code patching on SMP systems.
9416         (emit_call): Avoid adding a patch info which is already added by 
9417         emit_call_body.
9418         (mono_arch_emit_exceptions): Ditto.
9419
9420 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
9421
9422         * tramp-*.c (mono_arch_get_unbox_trampoline): No need to check for ret->byref,
9423         MONO_TYPE_ISSTRUCT already checks for it.
9424
9425 2008-06-05  Bill Holmes  <billholmes54@gmail.com>
9426
9427         * mini-amd64.c:merge_argument_class_from_type: When marshaling 
9428           structs with floats on Winx64 the float registers are not used.  
9429           The integer registers are always used..
9430         * mini-amd64.c:add_valuetype:  When marshaling structs on Winx64 
9431           only one register will be used and only if the size of the struct 
9432           is 1,2,4, or 8 bytes.
9433
9434         * tramp-amd64.c :  Adjusting size used for mono_global_codeman_reserve
9435           to work for Winx64.
9436
9437         Contributed under MIT/X11 license.
9438
9439 2008-06-05  Martin Baulig  <martin@ximian.com>
9440
9441         * debug-debugger.c (debugger_lookup_class): Also call
9442         mono_class_setup_methods() here; we're only called from RTI.
9443
9444 2008-06-05  Andreas Farber  <andreas.faerber@web.de>
9445
9446         * mini.c (mini_init): Add DTrace probes ves-init-{begin,end}.
9447         (mini_method_compile) Add DTrace probes method-compile-{begin,end}.
9448         * Makefile.am (libmono_la_LIBADD,libmono_static_la_LIBADD,mono_LDADD):
9449         Post-process object files and add dtrace-generated object, if necessary.
9450
9451         Contributed under MIT/X11 license.
9452
9453 2008-06-04  Mark Probst  <mark.probst@gmail.com>
9454
9455         * inssel.brg, mini-ops.h: Added opcode for unboxcast with computed
9456         element class.
9457
9458         * mini.c: Generic sharing for unbox.any and castclass.
9459
9460 2008-06-04  Mark Probst  <mark.probst@gmail.com>
9461
9462         * mini.c: Ignore tailcall prefix in shared generic code and when
9463         doing calls which require a vtable/rgctx argument.
9464
9465 2008-06-04  Mark Probst  <mark.probst@gmail.com>
9466
9467         * mini.c: Don't free the JIT info.
9468
9469         * driver.c: Changes in the JIT info table testing code.
9470
9471 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
9472
9473         * tramp-arm.c (mono_arch_create_trampoline_code): Check for thread 
9474         interruption. Fix some warnings.
9475
9476         * tramp-*.c (mono_arch_create_trampoline_code): Call the _force_ variant of
9477         interruption_checkpoint.
9478
9479 Tue Jun 3 13:07:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
9480
9481         * jit.h, mini.h, trace.c, driver.c: introduce an API to enable tracing
9482         from embedding applications.
9483
9484 2008-06-02  William Holmes  <billholmes54@gmail.com>
9485
9486         * mini-amd64.c :  Correcting some of the issues for Winx64 dealing with
9487           reserving 32 bytes on the stack when making calls. 
9488
9489         Contributed under MIT/X11 license.
9490
9491 2008-06-01  Zoltan Varga  <vargaz@gmail.com>
9492
9493         * mini-arm.c (mono_arch_output_basic_block): Merge some small fixes from
9494         the linear IL branch.
9495
9496         * driver.c: Print out more information for --version on arm.
9497
9498 2008-05-30  Zoltan Varga  <vargaz@gmail.com>
9499
9500         * mini-amd64.c (mono_arch_emit_prolog): Increase max_offset when processing
9501         bb_exit instead, since out of line bblocks might not actually be emitted
9502         out-of-line.
9503         
9504         * mini-amd64.c (mono_arch_emit_prolog): Increase bb->max_offset by the
9505         maximum epilog size for out of line bblocks if tracing is enabled.
9506
9507         * iltests.il.in: Merge tests/long-shift.regalloc.il into this file.
9508
9509 2008-05-28  Rodrigo Kumpera  <rkumpera@novell.com>
9510
9511         * arrays.cs: Regression tests for allocating arrays with negative sizes.
9512
9513 2008-05-28  Zoltan Varga  <vargaz@gmail.com>
9514
9515         * mini-x86.h mini-x86.c inssel-x86.brg cpu-x86.md: Add support for
9516         CAS instrinsics. Optimize the implementation of the ATOMIC_EXCHANGE 
9517         opcodes.
9518
9519 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
9520
9521         * mini.c (mini_get_inst_for_method): Add support for CAS instrinsics when
9522         the 'value' to store is a constant.
9523
9524         * mini-ops.h: Add OP_ATOMIC_CAS_IMM opcodes.
9525
9526         * mini-amd64.c (mono_arch_output_basic_block): Optimize the the implementation
9527         of ATOMIC_EXCHANGE opcodes, add support for the CAS opcodes.
9528
9529 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
9530
9531         * mini.c generic-sharing.c jit-icalls.c aot-compiler.c: Use accessor functions
9532         for accessing method->generic_container.
9533
9534 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
9535
9536         * mini.c (mono_method_check_inlining): Avoid creating vtables if possible.
9537         
9538         * mini.c (SIG_HANDLER_SIGNATURE): Fix sparc build too.
9539
9540         * mini.c (SIG_HANDLER_SIGNATURE): Fix IA64 build.
9541
9542         * mini.c (mono_jit_compile_method_inner): Avoid a crash if mono_class_vtable ()
9543         fails.
9544
9545 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
9546
9547         * driver.c (mono_main): Set mono_setup_vtable_in_class_init to FALSE.
9548
9549         * mini.c: Handle the case when mono_class_vtable () fails.
9550
9551 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
9552         * mini.c (sigprof_signal_handler): Support call chains (backtrace) in
9553         the stat profiler.
9554
9555 2008-05-22  Mark Probst  <mark.probst@gmail.com>
9556
9557         * mini.c, jit-icalls.c, jit-icalls.h: Make generic sharing work
9558         together with domain sharing.
9559
9560 2008-05-22  Mark Probst  <mark.probst@gmail.com>
9561
9562         * mini.c: Treat callvirts to final methods like non-virtual calls
9563         when doing generic sharing, i.e. look them up in the runtime
9564         generic context.
9565
9566 2008-05-22  Mark Probst  <mark.probst@gmail.com>
9567
9568         * inssel.brg, mini-ops.h: Added opcodes for mkrefany and refanyval
9569         with computed types (for generic sharing).
9570
9571         * mini.c: Generic sharing for mkrefany and refanyval.
9572
9573 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
9574
9575         * inssel.brg (mini_emit_virtual_call): Avoid constructing a generic vtable if
9576         possible.
9577
9578         * mini-trampolines.c (mono_magic_trampoline): Avoid calling setup_methods () in
9579         the generic sharing code.
9580         
9581         * mini-trampolines.c (mono_magic_trampoline): Call mono_class_setup_methods ()
9582         when needed.
9583
9584 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
9585
9586         * mini.h: Remove the declaration of mono_aot_init_vtable ().
9587
9588 2008-05-21  C.J. Adams-collier <cjac@colliertech.org>
9589
9590         * driver.c: updated copyright date
9591
9592 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
9593
9594         * aot-runtime.c mini.c: Remove the AOT init_vtable stuff as it is no longer
9595         needed.
9596
9597 2008-05-19  Martin Baulig  <martin@ximian.com>
9598
9599         * debug-debugger.h (MonoDebuggerInfo): Add `using_mono_debugger'
9600         pointing to the new `_mono_debug_using_mono_debugger' variable.
9601
9602         * driver.c
9603         (mono_main): Check mono_debug_using_mono_debugger() rather than
9604         the `MONO_INSIDE_MDB' environment variable to check whether we're
9605         inside the debugger.
9606
9607 2008-05-19  Zoltan Varga  <vargaz@gmail.com>
9608
9609         * mini.c (mini_method_compile): Use cfg->args [0] for accessing the this
9610         argument.
9611
9612 2008-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
9613
9614         * declsec.h: Move MONO_SECMAN_FLAG to metadata/metadata-internals.h.
9615
9616         * mini.c: Added mini_assembly_can_skip_verification. This
9617         function checks if the assembly requested to skip verification. 
9618         Fixes part of #387274.
9619
9620 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
9621
9622         * mini.c (mini_get_method): Disable the check for open generic classes when
9623         using generic sharing.
9624
9625         * generics.cs: Add a test for #387034.
9626
9627         * mini.c (mini_get_method): Check whenever the method class is an open generic
9628         type, and return NULL in that case, causing a verification error. Fixes
9629         #384123.
9630
9631 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
9632
9633         * driver.c (mono_main): Revert r102623. The right
9634         thing to do is to enable the verifier under verifiable
9635         unless a --security flag was passed.
9636
9637         We need this non-trivial behavior for --verify-all otherwise
9638         mcs-compileall won't be able to use it. As it needs everything to
9639         be verified under validil.
9640
9641 2008-05-06  Martin Baulig  <martin@ximian.com>
9642
9643         Fix #383749.
9644
9645         * debug-mini.c (mono_debugger_thread_created): Add proper locking.
9646         (mono_debugger_thread_cleanup): Likewise.
9647         (mono_debugger_extended_notification): Likewise.
9648
9649 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
9650
9651         * mini.c (mono_method_to_ir): Verify visibility of call related opcodes
9652         against both inflated and non-inflated methods. We need to check against the
9653         generic definition for cases where the instantiated method is not visible.
9654         We need to check against the inflated types for cases where the instantiation
9655         changes any super type. This fixes #382986.
9656
9657         Note that this doesn't need to be applied to other parts of mono_method_to_ir
9658         that check for visibiliy as generic params only appears as the type subject
9659         of tokens on call opcodes. Field manipulation and ldftn must always
9660         target an exact type.
9661
9662 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
9663
9664         * driver.c (mono_main): Using --verify-all enables the verifier under validil mode
9665         if no related --security flag is passed.
9666
9667 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
9668
9669         * mini-arch.h: Prepare support for ppc64.
9670
9671         Contributed under MIT/X11 license.
9672
9673 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
9674
9675         * aot-runtime.c: Prepare support for ppc64.
9676
9677         Contributed under MIT/X11 license.
9678
9679 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
9680
9681         * mini-ops.h: Prepare support for ppc64.
9682
9683         Contributed under MIT/X11 license.
9684
9685 2008-05-04  Andreas Farber  <andreas.faerber@web.de>
9686
9687         * helpers.c: Add support for OSX/ppc64 and Linux/ppc64 (dis)assemblers.
9688
9689         Contributed under MIT/X11 license.
9690
9691 2008-05-03  Zoltan Varga  <vargaz@gmail.com>
9692
9693         * aot-runtime.c (load_aot_module): Avoid trying to load aot code for dynamic
9694         assemblies, since aot_name is not a full path, causing us to load MS.NET 
9695         assemblies on windows.
9696
9697 ?2008-04-28  Kornel Pal  <kornelpal@gmail.com>
9698
9699         * mini.c (mono_jit_compile_method_inner): Use g_warning instead of g_error
9700         for unsupported METHOD_IMPL_ATTRIBUTE_NATIVE.
9701         * main.c: Use UTF-8 encoded command line instead of Windows default code
9702         page on Windows to support Unicode.
9703         * driver.c (DllMain): New function for mixed-mode assembly support.
9704         * Makefile.am: Add -Wl,--kill-at to libmono_la_LDFLAGS on Windows to
9705         export __stdcall functions without decoration.
9706
9707         Contributed under MIT/X11 license.
9708
9709 2008-04-28  Mark Probst  <mark.probst@gmail.com>
9710
9711         * tramp-amd64.c, mini-amd64.c: Preserve R11 in the trampoline by
9712         saving it very early.
9713
9714 2008-04-28  Mark Probst  <mark.probst@gmail.com>
9715
9716         * mini.h, mini.c: Lots of code for accessing the old RGCTX
9717         deleted.  The only way to access the new RGCTX is via the
9718         trampline.
9719
9720         * mini.c, mini-amd64, mini-x86.c, mini-exceptions.c: Pass the
9721         vtable instead of the RGCTX to static methods.
9722
9723         * mini-tramplines.c, tramp-amd64.c, tramp-x86.c: Trampoline for
9724         accessing the new RGCTX.
9725
9726         * generic-sharing.c: There is no separation between self, type
9727         arguments and other types in the RGCTX anymore.
9728
9729 2008-04-25  Jonathan Chambers <joncham@gmail.com>
9730
9731         * mini-amd64.c (add_general): Remove previous stack adjustment.
9732         (mono_arch_call_opcode): Remove OP_OUTARG_MEMBASE and instead simply
9733         adjust stack pointer after pushing args. Adjust ARGS_OFFSET to account
9734         for 32 bytes of stack space reserved for all calls.
9735         
9736         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Remove.
9737         (OP_AMD64_OUTARG_ALIGN_STACK): Take argument to specify size of stack 
9738         adjustment.
9739         
9740         Code contributed under MIT/X11 license.
9741
9742 2008-04-23  Rodrigo Kumpera  <rkumpera@novell.com>
9743
9744         * mini.c (mini_method_verify): Only verify non-inflated methods, check
9745         against the root definition, peeling out method and type instantiations.
9746         Cache verify success results, code that fails verification is still
9747         checked multiple times.
9748
9749 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
9750
9751         * mini.c (mono_method_to_ir): Avoid inserting write barriers for stores of null.
9752
9753 2008-04-23  Jonathan Chambers <joncham@gmail.com>
9754
9755         * mini-amd64.c (add_general): Always increment stack on Win64.
9756         (mono_arch_call_opcode): Use OP_OUTARG_MEMBASE instead of OP_OUTARG
9757         on Win64.
9758         
9759         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Add OP_OUTARG_MEMBASE for 
9760         stack based argument handling on Win64.
9761         
9762         Code contributed under MIT/X11 license.
9763
9764 2008-04-23  Raja R Harinath  <harinath@hurrynot.org>
9765
9766         * Makefile.am (version.h): Add support for git-svn.
9767
9768 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
9769
9770         * mini-exceptions.c (mono_handle_native_sigsegv): Rework the gdb calling code
9771         so instead of calling g_spawn_command_line_sync, we do everything by hand, 
9772         avoiding allocations and libc functions which might deadlock.
9773         
9774         * mini-exceptions.c (mono_handle_native_sigsegv): Avoid calling gdb if the
9775         'no-gdb-backtrace' option is set.
9776
9777         * mini.c (mini_parse_debug_options): Parse 'no-gdb-backtrace' option.
9778
9779         * mini.h (MonoDebugOptions): Add 'no_gdb_backtrace' option.
9780
9781 2008-04-21  Martin Baulig  <martin@ximian.com>
9782
9783         * debug-debugger.h (MonoDebuggerInfo): Removed `attach', `detach'
9784         and `get_lmf_addr'; `notification_address' is no longer a pointer.
9785
9786 2008-04-21  Martin Baulig  <martin@ximian.com>
9787
9788         * debug-debugger.h (MonoDebuggerInfo): Added `thread_vtable_ptr',
9789         `thread_vtable', `event_handler_ptr' and `event_handler'.
9790
9791 2008-04-21  Martin Baulig  <martin@ximian.com>
9792
9793         * debug-debugger.h (MonoDebuggerInfo): Added `init_code_buffer';
9794         allows delayed initialization of the `executable_code_buffer' when
9795         attaching.
9796
9797 2008-04-21  Martin Baulig  <martin@ximian.com>
9798
9799         * mini.h (mono_debugger_create_notification_function): Removed.
9800         * tramp-*.c (mono_debugger_create_notification_function): Removed.
9801
9802         * mdb-debug-info64.s
9803         (MONO_DEBUGGER__notification_function): Added this in the .text section.
9804
9805         * mdb-debug-info32.s
9806         (MONO_DEBUGGER__notification_function): Added this in the .text section.
9807
9808         * Makefile.am: Fix the mdb-debug-info*.s logic; the debugger
9809         currently only works on x86 and x86_64, so don't create it on ppc.
9810
9811 2008-04-21  Martin Baulig  <martin@ximian.com>
9812
9813         * mini.h (MonoDebugOptions): Added `mdb_optimizations'.
9814
9815         * mini.c
9816         (mini_method_compile): In the fp elimination check, check
9817         `debug_options.mdb_optimizations' in addition to
9818         mono_debug_using_mono_debugger().       
9819
9820         * driver.c (mono_main): Added `--debug=mdb-optimizations' option to
9821         disable some JIT optimizations which are only disabled when
9822         running inside the debugger.
9823         Added `--help-debug' option to describe the debugging options.
9824         (parse_debug_options): New static function to parse the `--debug'
9825         options, so we can easily add more stuff in future.
9826
9827 2008-04-20  Zoltan Varga  <vargaz@gmail.com>
9828
9829         * mini.c (set_exception_type_from_invalid_il): Avoid reading invalid memory when
9830         the method has no body.
9831
9832 2008-04-19  Jonathan Chambers <joncham@gmail.com>
9833
9834         * mini-amd64.c (cpuid): Implement with MSVC intrinsic as inline
9835         assembly is not allowed in MSVC 64-bit compiler. 
9836         (mono_arch_cpu_init): Don't set floating point precision on MSVC build
9837         as we get floating point exceptions everywhere.
9838         
9839         * exceptions-amd64.c (get_throw_trampoline): Push empty args on stack to
9840         correctly align arguments for call to throw_exception.
9841         (prepare_for_guard_pages): Cast to guint64 instead of unsigned long.
9842         
9843         Code contributed under MIT/X11 license.
9844
9845 2008-04-19  Zoltan Varga  <vargaz@gmail.com>
9846
9847         * mini-amd64.c (amd64_patch): Make the check for (%rip) addressing more strict.
9848
9849 2008-04-17  Zoltan Varga  <vargaz@gmail.com>
9850
9851         * inssel.brg (OP_SWITCH): Use (gint64) instead of (long) to cast a large constant.
9852
9853         * mini-amd64.c (NEW_INS): Set cil_code.
9854
9855         * mini.c (mini_method_compile): Move the disabling of fp elimination to here
9856         from mini-amd64.c so all debugger related logic is in one place.
9857
9858         * mini.c: Set cfg->ip to NULL after passes which set it so instructions created
9859         later won't have a random ip assigned to them.
9860
9861 2008-04-16  Zoltan Varga  <vargaz@gmail.com>
9862
9863         * mini-trampolines.c (mono_create_jump_trampoline): Add an assert to check that
9864         the arch specific function initializes code_size.
9865         (mono_create_delegate_trampoline): Ditto.
9866
9867         * mini-mips.h mini-mips.c inssel-mips.brg inssel-long32-mips.brg cpu-mips.md
9868         tramp-mips.c: Resurrect MIPS port and also fix the issues on little-endian
9869         platforms.
9870
9871         * liveness.c (mono_analyze_liveness): Disable the initlocals optimization if 
9872         running under the debugger.
9873
9874         * linear-scan.c (mono_linear_scan): Avoid sharing registers if running under the
9875         debugger.
9876
9877         * mini.c (mini_method_compile): Set a few flags in cfg if running under the
9878         debugger. Also move the disabling of optimizations here from driver.c.
9879         (mono_allocate_stack_slots_full): Avoid sharing stack slots if running under the
9880         debugger.
9881
9882         * mini.h (MonoCompile): Add a few new flags.
9883
9884 2008-04-15  Zoltan Varga  <vargaz@gmail.com>
9885
9886         * mini.c (mono_method_to_ir): Set cfg->ip before processing an IL instruction
9887         so the cil_code field of created MonoInst's is properly set.
9888         (mini_select_instructions): Ditto.
9889
9890         * mini.h (MONO_INST_NEW): Initialize the cil_code field using cfg->ip.
9891         (MONO_INST_NEW_CALL): Ditto.
9892
9893         * mini.c inssel.brg inssel-x86.brg inssel-amd64.brg: Use MONO_INST_NEW ()
9894         in many places so the ins->cil_code field is properly initialized.
9895
9896         * mini.c (mono_bblock_add_inst): Call MONO_ADD_INS () so the logic is in one
9897         place.
9898
9899 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
9900
9901         * mini.c (mini_method_compile): Print a different message when compiling a 
9902         shared method.
9903         
9904         * mini.c (GENERIC_SHARING_FAILURE): Print a failure message when verbose_level
9905         > 1.
9906
9907 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
9908
9909         * mini-amd64.c (mono_arch_output_basic_block): Implement OP_ABS directly using
9910         SSE2 instructions.
9911
9912         * basic-math.cs: Fix warnings. Add a test for Math.Abs ().
9913         
9914 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
9915
9916         * mini.c (handle_stack_args): Make this return void since its return value was
9917         never used. Also set cfg->unverifiable for invalid IL instead of calling
9918         G_BREAKPOINT ().
9919
9920 2008-04-10  Mark Probst  <mark.probst@gmail.com>
9921
9922         * mini.c: Make sure "this" is live in catch clauses with type
9923         variables in shared generic code.
9924
9925 2008-04-08  Mark Probst  <mark.probst@gmail.com>
9926
9927         * mini.c: Replaced uses of MONO_TYPE_IS_REFERENCE with calls to
9928         generic_class_is_reference_type() to ensure the proper behaviour
9929         when sharing generic code and the type in question is a type
9930         argument.
9931
9932 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
9933
9934         * mini-exceptions.c: Applied patch from Mark Spruiell (mes@zeroc.com). Fix
9935         race conditions when printing thread dumps. Fixes #377738.
9936
9937 2008-04-08  Massimiliano Mantione  <massi@ximian.com>
9938         
9939         aliasing.c (update_aliasing_information_on_inst): Fixed a bug which
9940         shows up when both MonoInst arguments can cause aliasig.
9941         There is likely no way in the current JIT to trigger this problem, but
9942         it showed up in the development of generics sharing, when in a new
9943         opcode both args of an OP_GROUP can be aliases (addresses of a local).
9944         When the generics sharing code will be committed, its tests will be
9945         valid also for this bug.
9946
9947 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
9948
9949         * aot-runtime.c (decode_patch_info): Always transform PATCH_INFO_WRAPPER to
9950         PATCH_INFO_METHOD.
9951
9952         * mini.c (mono_resolve_patch_target): Fix a crash in the AOT case if method is
9953         NULL.
9954
9955 2008-04-07  Zoltan Varga  <vargaz@gmail.com>
9956
9957         * mini-exceptions.c (mono_handle_exception_internal): When --debug=casts is used,
9958         use a more detailed exception message for InvalidCastException.
9959
9960         * mini.h (MonoJitTlsData): Add 'class_cast_from' and 'class_cast_to' fields.
9961
9962         * driver.c (mono_main): Add --debug=casts option to turn on better 
9963         InvalidCastException message details.
9964
9965         * mini.c (mini_get_debug_options): New helper function to return the address of
9966         the debug_options variable.
9967
9968         * mini.c (mono_get_jit_tls_intrinsic): New helper function to create a load of
9969         the jit_tls TLS variable.
9970
9971         * mini.c (mono_jit_tls): New TLS variable.
9972
9973         * inssel.brg: Save the details of a cast to a TLS variable when the --debug=casts
9974         option is used.
9975
9976 2008-04-07  Rodrigo Kumpera  <rkumpera@novell.com>
9977
9978         * mini.h: Removed verifer related stuff. This code was moved to verify.c
9979
9980         * mini.c: Removed verifer related stuff, code moved to verify.c.
9981
9982         * driver.c: Using code from verify.c instead of mini.c.
9983
9984 2008-04-05  Zoltan Varga  <vargaz@gmail.com>
9985
9986         * mini.c (check_for_method_verify): Remove the mscorlib comment since it is no
9987         longer valid.
9988
9989 2008-04-04  Rodrigo Kumpera  <rkumpera@novell.com>
9990
9991         * mini.c (check_for_method_verify): Enabling verification of
9992         corlib if mono_verify_all is set. Bugs in the verifier preventing that
9993         have been fixed.
9994
9995 2008-04-04  Zoltan Varga  <vargaz@gmail.com>
9996
9997         * exceptions-amd64.c (throw_exception): Unify the win32/non-win32 cases, save
9998         caller saved registers as well.
9999         
10000         * exceptions-amd64.c (mono_arch_get_restore_context): Restore most caller
10001         saved registers as well.
10002
10003 2008-03-30  Zoltan Varga  <vargaz@gmail.com>
10004
10005         * mini-x86.c cpu-x86.md inssel-x86.brg: Add min/max intrinsics.
10006
10007         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of the non-SSE2 floating point
10008         code.
10009
10010 2008-03-27  Zoltan Varga  <vargaz@gmail.com>
10011
10012         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'gsctx' argument and pass it
10013         to get_call_info.
10014         (get_call_info): Take a gsctx argument instead of 'cfg'.
10015
10016 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
10017
10018         * mini.c (check_for_method_verify): Avoid verifying mscorlib methods even if
10019         mono_verify_all is set.
10020
10021         * driver.c (compile_all_methods_thread_main): Don't exit at the first error.
10022
10023         * mini.c mini.h: Remove the unused and incomplete stack merge verification code.
10024
10025 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
10026
10027         * driver.c (compile_all_methods_thread_main): Error out if compilation fails with
10028         an exception.
10029
10030         * driver.c mini.c mini.h: Add a --verify-all development option to test the
10031         verifier and the code generated by the compiler.
10032
10033 2008-03-25  Mark Probst  <mark.probst@gmail.com>
10034
10035         * mini.c: Generic sharing of the non-nullable case of the box
10036         instruction.
10037
10038 2008-03-24  Zoltan Varga  <vargaz@gmail.com>
10039
10040         * inssel.brg: Fix the build.
10041
10042         * iltests.il.in: Add a test for lconv.ovf.u8.un.
10043
10044 2008-03-24  Rodrigo Kumpera  <rkumpera@novell.com>
10045
10046         * mini.c (mono_method_to_ir): Implement readonly for ldelema and
10047         Array:Address. Fixes #372410.
10048
10049         * iltests.il.in: New tests for readonly prefix.
10050
10051 2008-03-23  Zoltan Varga  <vargaz@gmail.com>
10052
10053         * mini.h mini.c mini-trampolines.c: Move trampoline related code to 
10054         mini-trampolines.c.
10055
10056         * mini.h mini.c mini-exceptions.c: Move mini_init_exceptions () to 
10057         mini-exceptions.c.
10058
10059         * mini-amd64.c mini-s390.c (mono_arch_lowering_pass): Use mono_decompose_op_imm ().
10060         
10061         * mini.c (mono_decompose_op_imm): New helper function.
10062
10063         * mini-s390x.c (calculate_sizes): Rename this to get_call_info for consistency
10064         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
10065         return value.
10066
10067         * mini-s390x.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
10068         mono_arch_output_basic_block. Fix warnings.
10069
10070         * inssel-s390x.brg: Remove the unneccesary OP_LMUL_IMM rule to fix the s390x build
10071         for now.
10072
10073 2008-03-22  Zoltan Varga  <vargaz@gmail.com>
10074
10075         * mini-exceptions.c (ves_icall_get_frame_info): Remove the ia64/s390 workarounds
10076         since the extra frame is now detected automatically inside the loop.
10077
10078         * mini-s390.c (mono_arch_peephole_pass_2): Remove the arch independent peephole 
10079         opts which are now in mono_peephole_ins ().
10080         
10081         * mini-s390.c (mono_arch_output_basic_block): Fix OP_FCALL_MEMBASE.
10082
10083         * mini-exceptions.c (ves_icall_get_frame_info): Skip native-to-managed wrapper
10084         frames and skip duplicate managed-to-native frames. Fixes #367665.
10085
10086         * mini-x86.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
10087         opts which are now in mono_peephole_ins ().
10088         (mono_arch_peephole_pass_2): Ditto.
10089
10090         * mini-codegen.c (mono_peephole_ins): Fix a problem on 32 bit platforms.
10091
10092         * mini-codegen.c (mono_peephole_ins): New helper function containing the
10093         arch independent peephole optimizations.
10094
10095         * mini-amd64.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
10096         opts which are now in mono_peephole_ins ().
10097
10098         * mini-amd64.c (mono_arch_peephole_pass_2): Ditto.
10099         
10100         * mini-s390.c (mono_arch_output_basic_block): Fix build.
10101
10102         * tramp-s390.c (mono_arch_get_vcall_slot): Handle an additional instruction
10103         pattern.
10104
10105         * mini-s390.c (mono_arch_output_basic_block): Handle big offsets in the
10106         CALL_MEMBASE opcodes. Fix setting of the destination in the OP_LCONV_TO_OVF_I
10107         opcode. 
10108
10109 2008-03-21  Zoltan Varga  <vargaz@gmail.com>
10110
10111         * mini-s390.c (calculate_sizes): Rename this to get_call_info for consistency
10112         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
10113         return value.
10114
10115         * mini-s390.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
10116         mono_arch_output_basic_block. Fix warnings.
10117
10118 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
10119
10120         * inssel-long32.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
10121         conv.ovf.u.un.
10122
10123 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
10124
10125         * inssel-long.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
10126         conv.ovf.u.un.
10127
10128         * iltests.il: Add new tests.
10129
10130 2008-03-20  Kornel Pal  <kornelpal@gmail.com>
10131
10132         * mini.c: Removed Windows version macros.
10133
10134 2008-03-20  Mark Probst  <mark.probst@gmail.com>
10135
10136         * generic-sharing.c: Put reflection types in the extensible part
10137         of the runtime generic context.
10138
10139         * mini.c: Generic sharing of the GetTypeHandle special case of the
10140         ldtoken instruction.
10141
10142 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
10143
10144         * mini.h (MONO_BB_FOR_EACH_INS_SAFE): New helper macro.
10145
10146         * mini-<ARCH>.c: Use the new macro instead in the peephole/lowering passes.
10147         
10148         * mini.h (MONO_DEL_INS): Rename to MONO_DELETE_INS and Add a 'bb' argument for 
10149         consistency with the other version on the linear IR branch.
10150
10151         * mini-<ARCH>.c: Update callers of MONO_DEL_INS.
10152
10153         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i/conv.ovf.u.
10154
10155         * iltests.il.in: Add new tests.
10156
10157 2008-03-19  Zoltan Varga  <vargaz@gmail.com>
10158
10159         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i.un/conv.ovf.u.un.
10160
10161         * iltests.il.in: Add new tests.
10162
10163 2008-03-19  Mark Probst  <mark.probst@gmail.com>
10164
10165         * mini.c: Two variables with the same name were declared in
10166         nesting contexts and one wasn't initialized.  Fixed.
10167
10168 2008-03-19  Mark Probst  <mark.probst@gmail.com>
10169
10170         * mini.c: Generic sharing of the initobj instruction.
10171
10172 Tue Mar 18 20:18:02 CET 2008 Paolo Molaro <lupus@ximian.com>
10173
10174         * mini.c: make the test to optimize ldtoken from typeof() more
10175         precise.
10176
10177 2008-03-18  Mark Probst  <mark.probst@gmail.com>
10178
10179         * mini.c: Generic sharing of the initobj instruction for reference
10180         types.
10181
10182 Tue Mar 18 12:39:27 CET 2008 Paolo Molaro <lupus@ximian.com>
10183
10184         * mini.h, mini-amd64.c, mini-x86.c, tramp-amd64.c, tramp-x86.c: change
10185         the mono_breakpoint_clean_code() code to perform bound checks.
10186
10187 Tue Mar 18 11:50:14 CET 2008 Paolo Molaro <lupus@ximian.com>
10188
10189         * mini.h, mini-trampolines.c, tramp-*.c: change the signature of
10190         mono_arch_patch_callsite() to include the start of the managed method
10191         to be able to perform bound checks.
10192
10193 2008-03-17  Mark Probst  <mark.probst@gmail.com>
10194
10195         * mini.c: Generic sharing for the isinst instruction.
10196
10197 2008-03-17  Mark Probst  <mark.probst@gmail.com>
10198
10199         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
10200         inssel-long32-mips.brg: Added opcodes for doing indirect calls
10201         with the runtime generic context argument.
10202
10203         * mini.c: Share calls to several types of unsharable methods by
10204         putting the address of the method code in the runtime generic
10205         context and doing an indirect call.
10206
10207         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
10208         to switches.
10209
10210 2008-03-16  Mark Probst  <mark.probst@gmail.com>
10211
10212         * generic-sharing.c: Change due to a change in the runtime genric
10213         context API.
10214
10215 2008-03-15  Martin Baulig  <martin@ximian.com>
10216
10217         * tramp-x86.c
10218         (mono_arch_nullify_class_init_trampoline): Add call to
10219         mono_breakpoint_clean_code() to make things work when running
10220         inside the debugger.
10221
10222         * tramp-amd64.c
10223         (mono_arch_nullify_class_init_trampoline): Add call to
10224         mono_breakpoint_clean_code() to make things work when running
10225         inside the debugger.
10226
10227 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
10228
10229         * inssel-long.brg (reg): Fix 64 bit build.
10230
10231 2008-03-14  Mark Probst  <mark.probst@gmail.com>
10232
10233         * mini.c, mini.h: Share static generic code by passing it an
10234         implicit argument pointing to the runtime generic context.
10235
10236         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
10237         inssel-long32-mips.brg: New opcodes for calling shared static,
10238         which need to be passed the runtime generic context.
10239
10240         * mini-amd64.c, mini-x86.c: Save the runtime generic context
10241         argument on the stack in the prologue if needed.  New function for
10242         finding the runtime generic context argument from the registers
10243         saved by the trampoline.
10244
10245         * mini-amd64.h, mini-x86.h: Specify which register to use for the
10246         runtime generic context argument.
10247
10248         * tramp-amd64.c: Also restore the register used for the runtime
10249         generic context argument.
10250
10251         * mini-trampoline.c: Resolve shared static calls by consulting the
10252         runtime generic context via the new argument.
10253
10254         * generic-sharing.c: Add an argument to sharability-checking
10255         functions that specifies whether type variables should be treated
10256         as sharable type arguments.
10257
10258         * inssel-x86.brg: Removed a superfluous, buggy rule.
10259
10260         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
10261         to switches.
10262
10263 2008-03-14  Martin Baulig  <martin@ximian.com>
10264
10265         * debug-debugger.c (main_thread_handler): Call
10266         mono_runtime_run_main() without sending any notifications.
10267
10268         * debug-debugger.h (MonoDebuggerInfo): Added `get_method_signature.
10269
10270 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
10271
10272         * mini-trampolines.c (mono_magic_trampoline): Fix build on platforms without IMT.
10273
10274 2008-03-14  Mark Probst  <mark.probst@gmail.com>
10275
10276         * tramp-x86.c: Fixed register restore offsets in the trampoline
10277         code for ECX and EDX.
10278
10279 2008-03-12  Geoff Norton  <gnorton@novell.com>
10280
10281         * mini-arm.h: Add some #defines for locating sp, pc, r4 with
10282         different ucontext_t implementations.
10283         * exceptions-arm.c: Use the above defines to get exceptions working on 
10284         iPhone (based on a patch by Luke Howard lukeh@padl.com)
10285         * mini-arm.c: Implement iPhone icache support (based on a patch by
10286         Luke Howard lukeh@padl.com)
10287
10288 2008-03-12  Mark Probst  <mark.probst@gmail.com>
10289
10290         * mini.c: Enable generic sharing of calls to non-static
10291         non-interface non-generic non-value-type methods.
10292
10293         * mini-trampolines.c: Resolve calls from shared generic code.
10294
10295 2008-03-11  Zoltan Varga  <vargaz@gmail.com>
10296
10297         * Makefile.am il2tests.il iltests.il.in: Delete il2tests, merge it into iltests.
10298
10299         * tramp-amd64.c (mono_arch_create_trampoline_code): Correctly save RBP as well.
10300
10301 Mon Mar 10 11:59:34 CET 2008 Paolo Molaro <lupus@ximian.com>
10302
10303         * mini.c: some fixes for the AOT compiler.
10304
10305 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
10306
10307         * cpu-amd64.md: Add clob:1 to some float opcodes.
10308
10309 2008-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
10310
10311         * mini.h: Added MiniVerifierMode enumeration.
10312
10313         * mini.c: Added mini_verifier_set_mode to control
10314         the usage of the new verifier.
10315
10316         * mini.c (mono_method): Integrated the new verifier.
10317
10318         * driver.c: Extended --security option with validil and
10319         verifiable options to activate the new verifier.
10320
10321 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
10322
10323         * mini.c jit-icalls.h jit-icalls.c: Generalize the exception creation 
10324         optimization to ctors taking 0 or 2 arguments too.
10325
10326         * mini.c (mono_method_to_ir): Optimalize the size of the exception throwing code
10327         a bit.
10328
10329         * jit-icalls.h (mono_create_corlib_exception): New JIT icall.
10330
10331         * mini-amd64.c (mono_arch_emit_prolog): Improve the first_bb optimization a bit.
10332
10333 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
10334
10335         * mini.c (mono_method_to_ir): Apply one of the ldstr optimizations in the
10336         non-aot case as well.
10337
10338         * cpu-amd64.md: Reduce the max size of some frequently used opcodes.
10339
10340         * aot-runtime.c (decode_patch_info): Update this after the ldfld/stfld wrapper
10341         changes.
10342
10343         * aot-compiler.c (encode_patch): Ditto.
10344
10345         * mini.h (G_MININT32): Fix the definition of this.
10346
10347 2008-03-05  Zoltan Varga  <vargaz@gmail.com>
10348
10349         * mini.h: Define G_MININT32/G_MAXINT32 if using an older glib version.
10350
10351         * cfold.c: Remove definition of G_MININT32 which is now in mini.h.
10352
10353 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
10354
10355         * mini-amd64.c (mono_arch_compute_omit_fp): Don't disable fp elimination for 
10356         methods returning vtypes in registers.
10357         (mono_arch_allocate_vars): Ditto.
10358
10359         * mini-amd64.c (mono_arch_get_this_arg_reg): New arch specific helper function.
10360
10361         * tramp-amd64.c (mono_arch_get_unbox_trampoline): Use mono_arch_get_this_arg_reg ().    
10362
10363         * generics.cs: Add a test from the linear IR branch.
10364
10365         * mini-amd64.c (emit_load_volatile_arguments): Handle vtypes passed in regs too.
10366
10367         * mini.c (inline_method): Cache failed inline attempts.
10368
10369 2008-03-04  Mark Probst  <mark.probst@gmail.com>
10370
10371         * mini.c: For shared methods of generic classes put the location
10372         of "this" into the MonoGenericJitInfo.
10373
10374         * mini-x86.c, mini-amd64.c, mini.h: Added function for fetching a
10375         register out of a MonoContext by register number.  Add the generic
10376         sharing context as an argument to mono_arch_find_this_argument().
10377
10378         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
10379         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c: Added stub
10380         for new arch function.
10381
10382         * mini-exception.c: Handle open exception clauses in shared
10383         generic code.
10384
10385         * mini-trampolines.c: Supply additional argument to
10386         mono_arch_find_this_argument().
10387
10388 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
10389
10390         * Makefile.am (regtests): Run the bench.exe tests last.
10391
10392 2008-03-03  Zoltan Varga  <vargaz@gmail.com>
10393
10394         * mini-amd64.c (mono_arch_emit_prolog): Improve the first bblock optimization
10395         a bit.
10396
10397 2008-03-02  Zoltan Varga  <vargaz@gmail.com>
10398
10399         * mini.c (mono_method_to_ir): Allow callvirt on static methods for compatibility
10400         with MS.
10401
10402         * mini-amd64.c (mono_arch_emit_prolog): Fix tracing after the last change.
10403         
10404         * mini-amd64.c (mono_arch_emit_prolog): Avoid saving dead arguments.
10405
10406         * mini.c (mono_method_check_inlining): Avoid disabling inlining for methods
10407         whose class has no cctor.
10408
10409         * liveness.c (mono_analyze_liveness): Mark dead arguments with MONO_INST_IS_DEAD.
10410
10411 2008-03-01  Zoltan Varga  <vargaz@gmail.com>
10412
10413         * mini.c (mono_method_to_ir): Report calling a static method using callvirt as
10414         unverified.
10415
10416 2008-02-29  Zoltan Varga  <vargaz@gmail.com>
10417
10418         * mini-ops.h: Remove OP_SPARC_INARG_VT, add a new OP_VTARG_ADDR opcode instead
10419         to be in sync with the code on the linear IR branch.
10420
10421         * mini-sparc.c inssel-sparc.brg: Use OP_VTARG_ADDR.
10422
10423         * inssel-s390.brg (OP_SETRET (freg)): Set dreg correctly.
10424
10425 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
10426
10427         * mini-mips.c: Use cfg->vret_addr instead of cfg->ret.
10428
10429         * mini-s390x.c: Use cfg->vret_addr instead of cfg->ret.
10430
10431         * mini-s390.c: Use cfg->vret_addr instead of cfg->ret.
10432
10433         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_VARS define.
10434
10435         * mini-<ARCH>.c (mono_arch_create_vars): Define this for all architectures.
10436         
10437         * mini.c (mono_method_to_ir): Avoid invalid memory reads for methods without a
10438         body.
10439
10440 2007-11-14  Yoichi NAKAYAMA  <nakayama@pixela.co.jp>
10441
10442         * inssel-mips.brg (OP_OUTARG_MEMBASE (CEE_LDIND_R4 (base))): Add missing
10443         OP_LOADR4_MEMBASE emission.
10444
10445         * mini-codegen.c (mono_spillvar_offset_int): Remove assertion.
10446         (mono_spillvar_offset_float): Ditto.
10447
10448         * mini-mips.c (mono_arch_emit_prolog): Ditto.
10449
10450         * inssel-long32-mips.brg: Fix wrong branching, reduce redundant code
10451         emission.
10452
10453         * basic-long.cs: Add regression tests for them.
10454
10455         * mini-mips.c (add_float32_arg): Respect o32 calling convention in gr
10456         use.
10457         (mono_arch_allocate_vars): Fix representation of single-precision float
10458         argument.
10459         (mono_arch_output_basic_block): Ditto.
10460
10461         * inssel-mips.brg: Ditto, remove duplicate items.
10462
10463         * mini-mips.c (emit_load_volatile_arguments): New function to handle
10464         arguments of tail calls as on other platforms.
10465         (mono_arch_output_basic_block): Handle tail calls.
10466
10467         * inssel-mips.brg (OP_OUTARG_VT (CEE_LDOBJ (base))): Correct destination
10468         register.
10469
10470         * objects.cs (test_5_pass_static_struct): Add test for it.
10471
10472         Contributed under MIT/X11 license.
10473
10474 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
10475
10476         * Makefile.am: Use gmcs for compiling the regression tests.
10477
10478         * *.2.cs *.2.il: Rename to *.cs and *.il.
10479
10480 2008-02-24  Zoltan Varga  <vargaz@gmail.com>
10481
10482         * regalloc.h: Make the vassign array smaller.
10483
10484         * mini.c (mini_method_compile): Remove an unused field in cfg.
10485
10486         * mini-codegen.c: Add a bunch of micro optimizations.
10487
10488 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
10489
10490         * regalloc.h: Remove some unused fields.
10491
10492 2008-02-22  Zoltan Varga  <vargaz@gmail.com>
10493
10494         * mini-amd64.c (mono_arch_patch_code): Fix a warning.
10495
10496         * ssa.c (mono_ssa_remove): Avoid declaring volatile variables dead.
10497
10498 2008-02-22  Mark Probst  <mark.probst@gmail.com>
10499
10500         * mini.h: New trampoline type (RGCTX_LAZY_FETCH).
10501
10502         * mini-trampolines.c, tramp-amd64.c, tramp-x86.c: RGCTX lazy fetch
10503         trampoline: Fetch an entry from the runtime generic context.  If
10504         it's NULL, jump to the actual trampoline to fill the runtime
10505         generic context.  Otherwise, return it.
10506
10507         * mini.c: Call the lazy fetch trampoline to get entries out of the
10508         runtime generic context.
10509
10510         * tramp-ia64.c, tramp-arm.c, tramp-alpha.c, tramp-s390.c,
10511         tramp-s390x.c, tramp-ppc.c, tramp-hppa.c, tramp-mips.c,
10512         tramp-sparc.c: Stubs for the lazy fetch trampoline.
10513
10514 2008-02-21  Mark Probst  <mark.probst@gmail.com>
10515
10516         * mini.c: Fetch data out of the extensible part of the runtime
10517         generic context instead of calling a helper function.
10518
10519         * generic-sharing.c: Some functions moved into
10520         metadata/generic-sharing.c.  Helper function for fetching other
10521         types now checks and asserts against extensible rgctx (just for
10522         debugging purposes - the helper function isn't called anymore
10523         unless for debugging).
10524
10525 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
10526
10527         * mini-arm.c (mono_arch_output_basic_block): Implement proper argument passing
10528         for tail calls up to the point that the tests in iltests.exe run. Also add a
10529         dummy CKFINITE implementation.
10530         (mono_arch_emit_prolog): Avoid saving the method in the LMF since it is only
10531         needed for trampoline LMF frames.
10532
10533         * exceptions-arm.c (mono_arch_find_jit_info): Only read lmf->method for 
10534         trampoline LMF frames.
10535
10536 2008-02-21  Rodrigo Kumpera  <rkumpera@novell.com>
10537
10538         * mini.c (inline_method): clean any pending loader error when inlining fail.
10539         Otherwise loader errors in mono_method_to_ir leaks and cause spurious errors.
10540
10541 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
10542
10543         * aot-compiler.c (encode_patch): Handle ICALL_ADDR patch type.
10544
10545         * aot-runtime.c (decode_patch_info): Ditto.
10546
10547         * mini.c (mono_resolve_patch_target): Ditto.
10548         
10549         * aot-compiler.c (compile_method): Add some experimental code for AOT compiling
10550         icall wrappers.
10551
10552         * patch-info.h (PATCH_INFO): Add 'ICALL_ADDR' patch type.
10553         
10554         * mini.c (mono_method_to_ir): Convert a CEE_MONO_LDPTR opcode to an AOT constant
10555         if it references an icall address.
10556
10557 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
10558
10559         * cpu-s390x.md: Remove some more unused opcodes.
10560         
10561         * cpu-s390x.md: Remove some unused opcodes.
10562
10563         * mini-ia64.c (mono_arch_lowering_pass): Add some more opcodes. Use
10564         mono_op_imm_to_op ().
10565
10566         * mini-sparc.c (opcode_to_sparc_cond): Use the mono_opcode_to_cond () functions
10567         instead of a switch statement.
10568         
10569         * mini-sparc.c (mono_arch_allocate_vars): Allocate a stack slot for use by
10570         the int<->float conversion opcodes instead of using mono_spillvar_offset_float ().
10571
10572         * mini-codegen.c: Eliminate rassign macro which is no longer needed.
10573         
10574         * mini-codegen.c: Remove unused mono_regstate2_... functions.
10575
10576         * mini-codegen.c (mono_print_ins_index): Avoid printing an index when it is
10577         -1.
10578
10579 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
10580
10581         * driver.c (mono_main): Improve error reporting when an assembly cannot be
10582         opened. Fixes #362607.
10583
10584         * cpu-ia64.md cpu-s390x.md: Remove some unused opcodes.
10585
10586         * iltests.il.in: Add a test for static methods in interfaces.
10587
10588 2008-02-18  Zoltan Varga  <vargaz@gmail.com>
10589
10590         * genmdesc.c (build_table): Fix a crash on older glib versions.
10591
10592         * cpu-sparc.md: Remove some unused opcodes.
10593         
10594         * genmdesc.c: Error out if the .md contains CEE_ opcodes if 
10595         MONO_ARCH_ENABLE_NORMALIZE_OPCODES is defined.
10596
10597         * cpu-amd64.md: Remove some unused opcodes.
10598
10599         * mini.h mini-ops.h mini.c: Define the OP_Ccc opcodes in mini-ops.h normally
10600         like the other opcodes.
10601
10602 2008-02-17  Zoltan Varga  <vargaz@gmail.com>
10603
10604         * mini-ia64.c: Use cfg->vret_addr instead of cfg->ret.
10605
10606         * mini-arm.h mini-arm.c: Use cfg->vret_addr instead of cfg->ret.
10607
10608         * mini-sparc.c: Use cfg->vret_addr instead of cfg->ret. Name the MonoCompile
10609         variables 'cfg' instead of 'm' for consistency.
10610
10611         * mini-x86.c: Use cfg->vret_addr instead of cfg->ret.
10612
10613         * mini.h (MonoCompile): Add new 'vret_addr' field which represents the hidden
10614         argument holding the vtype return address, to avoid the ambigious use of
10615         cfg->ret for this purpose.
10616
10617         * mini.c (NEW_RETLOADA): Use vret_addr if set.
10618
10619         * mini-amd64.c: Use cfg->vret_addr instead of cfg->ret.
10620         
10621         * mini-codegen.c (mono_print_ins): Rename to mono_print_ins_index (), Add a
10622         new mono_print_ins () function which only takes one argument.
10623
10624 2008-02-15  Zoltan Varga  <vargaz@gmail.com>
10625
10626         * mini-s390.h (MONO_OUTPUT_VTR): Use cfg instead of s, avoid assignments to
10627         macro arguments.
10628
10629 2008-02-14  Zoltan Varga  <vargaz@gmail.com>
10630
10631         * mini-ops.h: Get rid of OP_SPARC_LOCALLOC_IMM.
10632
10633         * mini-sparc.c inssel-sparc.brg: Use OP_LOCALLOC_IMM instead of OP_SPARC_LOCALLOC_IMM.
10634
10635         * mini-x86.c: Sync with the version on the linear IR branch by adding new 
10636         opcodes and other small changes.
10637
10638         * mini-ops.h: Add some new opcodes from the linear IR branch.
10639
10640         * mini-ops.h: Get rid of the OP_X86_..._MEMBASE opcodes.
10641
10642         * mini-x86.c inssel-x86.brg cpu-x86.md: Get rid of the confusing _MEMBASE
10643         opcodes, use the REG_MEMBASE opcodes instead.
10644         
10645         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Get rid of the confusing _MEMBASE
10646         opcodes, use the REG_MEMBASE opcodes instead.
10647         
10648         * mini-amd64.c (mono_arch_output_basic_block): Sync with the version on the
10649         linear IR branch.
10650
10651         * mini.c (mono_op_imm_to_op): New helper function.
10652
10653         * mini-ops.h: Add some opcodes from linear IR branch.
10654
10655 2008-02-13  Zoltan Varga  <vargaz@gmail.com>
10656
10657         * mini-alpha.h mini-alpha.c tramp-alpha.c: Alpha port updates from Sergey Tikhonov 
10658         <tsv@solvo.ru>.
10659
10660 2008-02-12  Zoltan Varga  <vargaz@gmail.com>
10661
10662         * mini.c (mono_normalize_opcodes): Always convert CEE_CONV_R4/R8 to 
10663         OP_ICONV_TO_R4/R8.
10664
10665         * mini-ia64.c cpu-ia64.md: Add OP_ICONV_TO_R4/R8.
10666
10667 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
10668
10669         * aot-compiler.c (emit_method_code): Add an assert.
10670
10671         * mini-arm.h mini-arm.c exceptions-arm.c: Modify the exception throwing code and
10672         the IMT code so it is AOT friendly. Enable AOT for methods which call interface
10673         methods.
10674
10675 2008-02-08  Zoltan Varga  <vargaz@gmail.com>
10676
10677         * mini-arm.c (mono_arch_output_basic_block): Fix the ordering of arguments for 
10678         some load/store opcodes so they are consistent. 
10679         (mono_arch_emit_prolog): Simplify some code.
10680
10681         * aot-runtime.c (mono_aot_get_plt_entry): Fix a warning.
10682
10683         * objects.cs: Add tests for large argument offsets on ARM.
10684
10685         * mini-arm.c (mono_arch_emit_prolog): Fix handling of arguments with large 
10686         stack offsets. Fixes #359651.
10687
10688         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R4/R8 properly.
10689
10690         * cpu-s390x.md: Add OP_LCONV_TO_R4/R8.
10691
10692         * cpu-ia64.md mini-ia64.h mini-ia64.c: Get rid of CEE_ opcodes.
10693
10694         * mini-ops.h: Add OP_ICONV_TO_R_UN opcode.
10695
10696         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R_UN too.
10697
10698         * cpu-s390x.md cpu-s390.md mini-s390x.c mini-arm.c cpu-arm.md mini-s390.c: Get
10699         rid of CEE_CONV_R_UN.
10700
10701         * mini-s390x.c mini-s390x.h cpu-s390x.md inssel-s390x.brg: Get rid of CEE_ opcodes.
10702
10703 2008-02-07  Zoltan Varga  <vargaz@gmail.com>
10704
10705         * mini-s390.c mini-s390.h cpu-s390.md: Get rid of CEE_ opcodes.
10706
10707         * mini.c (mono_normalize_opcodes): Add some more opcodes.
10708
10709         * mini-arm.c mini-arm.h cpu-arm.md: Get rid of CEE_ opcodes.
10710
10711         * cpu-amd64.md: Remove some unused opcodes.
10712
10713         * mini-sparc.c mini-sparc.h cpu-sparc.md: Get rid of CEE_ opcodes.
10714
10715         * mini-x86.c mini-x86.h cpu-x86.md: Get rid of CEE_ opcodes.
10716
10717         * mini.c mini-<ARCH>.c: Remove mono_arch_local_regalloc (), instead make 
10718         arch specific functions for its parts. Call the peephole pass after local
10719         regalloc so the prolog can compute a more accurate max_offset.
10720         
10721         * mini.c (mono_normalize_opcodes): New mini pass to convert CEE_ opcodes to
10722         the corresponding OP_I/OP_L opcodes.
10723
10724         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of CEE_ opcodes.
10725
10726         * mini-sparc.c (mono_arch_output_basic_block): Fix the sparc build.
10727
10728 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
10729
10730         * mini-s390.c (mono_arch_get_inst_for_method): Remove the Interlocked cases
10731         as they are handled in mini.c.
10732
10733         * mini-s390x.c (mono_arch_get_inst_for_method): Ditto.
10734         
10735         * mini-<ARCH>.c (mono_arch_get_inst_for_method): Remove the MemoryBarrier
10736         case since it is handled in mini.c.
10737
10738         * cpu-sparc.md (sparc_setfreg_float): Fix the sparc build.
10739
10740         * mini-ops.h: Add new opcodes OP_CALL/OP_CALLVIRT.
10741
10742         * *.c: Use the new opcodes in the IR and back end code.
10743
10744         * mini-ops.h cpu-<ARCH>.md: Correct the name of the bgt_un opcodes.
10745
10746         * mini-amd64.c (emit_call_body): Use a far-call for calling dynamic methods.
10747
10748 2008-02-06  Mark Probst  <mark.probst@gmail.com>
10749
10750         * mini-trampolines.c (mono_generic_class_init_trampoline): Removed
10751         an assert because it has a race condition.
10752
10753 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
10754
10755         * tramp-amd64.c (mono_arch_patch_callsite): Add more diagnostics.
10756
10757         * inssel.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused CEE_RET opcode.
10758
10759         * mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused LDIND/STIND opcodes.
10760
10761         * *.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of OP_SETREG/OP_SETFREG/OP_SETREGIMM,
10762         use OP_MOVE/OP_FMOVE/OP_ICONST instead.
10763
10764 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
10765
10766         * cpu-amd64.md (move): Correct the maximum size of move.
10767
10768 2008-02-05  Mark Probst  <mark.probst@gmail.com>
10769
10770         * tramp-amd64.c, tramp-x86.c, mini-trampolines.c: Added a check in
10771         the generic class init trampoline to return quickly if the class
10772         is already inited.
10773
10774 2008-02-04  Zoltan Varga  <vargaz@gmail.com>
10775
10776         * tramp-amd64.c (mono_arch_patch_callsite): Add some diagnostics to help debug
10777         issues where an 32 bit callsite cannot be patched by a 64 bit address.
10778
10779 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
10780
10781         * generics.2.cs generics-variant-types.2.il: Merge some tests from the linear IR
10782         branch.
10783
10784 2008-01-31  Zoltan Varga  <vargaz@gmail.com>
10785
10786         * objects.cs: Add some soft-float tests.
10787
10788         * mini.c: Fix a couple more soft-float issues.
10789
10790         * helpers.c (mono_disassemble_code): Fix disassembly on ARM.
10791
10792         * mini-amd64.c (peephole_pass): Use IXOR instead of LXOR for zeroing a register to
10793         avoid a REX prefix.
10794
10795 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
10796
10797         * exceptions-x86.c (mono_arch_find_jit_info): Fix stack unwinding when an
10798         exception happens while compiling a virtual method.
10799
10800 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
10801
10802         * mini-sparc.c (mono_arch_emit_epilog): Fix folding of negative return values.
10803         
10804         * mini-sparc.c: Fix build.
10805
10806         * mini-sparc.c (get_call_info): Add support for generic sharing.
10807
10808         * mini-exceptions.c: Add a FIXME.
10809
10810 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
10811
10812         * mini-exceptions.c (mono_handle_exception_internal): Remove the old style
10813         altstack handling code.
10814
10815         * mini-s390.c (mono_arch_emit_exceptions): Really fix a warning.
10816         
10817         * mini-s390.c (mono_arch_emit_exceptions): Fix a warning.
10818
10819         * mini-s390.c: Add support for generic sharing.
10820
10821         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
10822         Fix CAS on s390.
10823         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
10824
10825         * mini-s390x.c (mono_arch_emit_exceptions): Fix a warning.
10826
10827         * mini-s390x.c: Add support for generic sharing.
10828         
10829         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
10830         Fix CAS on ia64.
10831         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
10832
10833         * mini-s390x.c: Use is_imm16 instead of is_uimm16 when checking whenever s390_aghi
10834         can be used since it takes a 16 bit signed immediate.
10835
10836         * inssel-s390x.brg: Fix OP_SETRET.
10837
10838         * mini-s390x.c (mono_arch_output_basic_block): Fix OP_BREAK.
10839
10840         * mini-codegen.c (mono_opcode_to_cond): Fix a warning.
10841
10842         * mini-s390x.c cpu-s390x.md: Implement sext.i4 properly by sign extension.
10843
10844         * mini.c (mono_create_delegate_trampoline): Don't use mono_create_ftpntr here.
10845
10846         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_addr_from_ftnptr
10847         in one place.
10848
10849         * mini-ia64.h mini-ia64.c: Add minimal support for the delegate trampoline 
10850         stuff.
10851
10852         * mini.h inssel-x86.brg inssel-amd64.brg tramp-alpha.c tramp-ia64.c: Get rid
10853         of the unused mono_arch_patch_delegate_trampoline stuff.
10854
10855 2008-01-26  Zoltan Varga  <vargaz@gmail.com>
10856
10857         * basic-long.cs: Move the fp related tests to basic-float.cs.
10858
10859         * mini-ops.h (OP_OUTARG_FREG_R4): New opcode.
10860
10861         * mini-ia64.c inssel-ia64.brg: Implement proper R4 argument passing.
10862
10863         * basic-calls.cs: Add a test for proper float argument passing.
10864
10865         * mini-ia64.h (mono_ia64_context_get_ip): Do not substract 1 from the ip
10866         if the context corresponds to an exception received through a signal.
10867
10868         * exceptions.cs: Add a test for nullref handling at the start of a try
10869         clause.
10870
10871         * mini-ia64.c (mono_arch_call_opcode): Fix ia64 argument passing.
10872
10873         * jit-icalls.c (mono_break): New JIT icall.
10874
10875         * mini-<ARCH>.c: Use mono_break instead of mono_arch_break.
10876
10877         * mini-arm.c (arm_patch): Add support for patching the blx calling sequence.
10878
10879 2008-01-25  Zoltan Varga  <vargaz@gmail.com>
10880
10881         * cpu-*.md: Get rid of unused opcodes.
10882
10883         * cpu-g4.md: Rename this to cpu-ppc.md for consistency with other archs.
10884
10885         * Makefile.am: Move mini-trampolines.c to $(common_sources) since it is now used
10886         by all platforms.
10887
10888         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_SPECIFIC_TRAMPOLINE
10889         define.
10890
10891         * mini-s390x.h tramp-s390x.c Makefile.am: Rework the s390x trampoline code to use
10892         the arch independent trampoline code in mini-trampolines.c.
10893
10894         * aot-runtime.c (mono_aot_init_vtable): Fix a warning.
10895
10896         * mini.c (get_runtime_generic_context_ptr): Fix a warning.
10897
10898         * mini-s390.h: Remove an unused define.
10899         
10900         * mini-s390.h tramp-s390.c Makefile.am: Rework the s390 trampoline code to use
10901         the arch independent trampoline code in mini-trampolines.c.
10902
10903         * mini-arm.c (mono_arch_emit_prolog): Fix build.
10904
10905 2008-01-24  Zoltan Varga  <vargaz@gmail.com>
10906
10907         * mini-sparc.c (mono_arch_output_basic_block): Remove some unecessary code.
10908
10909         * mini-s390.c (mono_arch_emit_prolog): Fix build.
10910
10911         * mini-s390x.c (mono_arch_emit_prolog): Fix build.
10912
10913         * mini-ppc.c (mono_arch_emit_prolog): Fix build.
10914
10915         * cpu-amd64.md: Use smaller sizes for int opcodes.
10916
10917         * *.c: Get rid of the NOT_IMPLEMENTED define which is now in mini.h.
10918
10919         * *.cs: Add some tests from the linear-ir branch. Move structs tests to 
10920         objects.cs.
10921
10922         * driver.c (mono_main): Add a --break-at-bb command line argument for JIT
10923         debugging.
10924
10925         * mini.h *.c: Change cfg->vars to contain the MonoMethodVar entries directly
10926         instead of though a pointer to save an indirection when accessing elements of
10927         the array.
10928
10929         * mini.h (MONO_IS_COND_BRANCH_OP): Move these macros here from mini.c. Fix
10930         some typos.
10931         (NOT_IMPLEMENTED): New helper macro.
10932         (MONO_BB_FOR_EACH_INS): New helper macro to iterate through the instructions
10933         of a bb.
10934
10935         * *.c: Use the new helper macro.
10936
10937 2008-01-21  Zoltan Varga  <vargaz@gmail.com>
10938
10939         * mini-x86.h (MONO_ARCH_AOT_SUPPORTED): Disable AOT for apple x86.
10940
10941 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
10942
10943         * mini-amd64.c (mono_arch_emit_prolog): Optimize the omit fp case to save two
10944         stack slots.
10945
10946 2008-01-18  Zoltan Varga  <vargaz@gmail.com>
10947
10948         * mini-amd64.c (mono_arch_emit_prolog): Disable the new optimization if
10949         profiling is enabled.
10950         
10951         * mini-amd64.c (mono_arch_call_opcode): Emit the save_sp_to_lmf instruction at
10952         the end.
10953         (mono_arch_emit_prolog): Add more first bblock optimizations.
10954
10955         * mini-amd64.c (mono_arch_call_opcode): Keep assignments to the arg registers
10956         in order if possible.
10957         (mono_arch_emit_prolog): Optimize assignments to arg registers in the first
10958         bblock, since the arguments are still in their original registers.
10959
10960         * mini.c (type_from_op): Calling add.ovf on floats is not valid IL code.
10961
10962 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
10963
10964         * mini.c (mono_method_to_ir): Use the no-spilling optimization for CEE_CALLI
10965         as well.
10966
10967         * mini-amd64.c (mono_arch_emit_prolog): Save an instruction if the LMF is at
10968         offset 0.
10969
10970         * mini-amd64.h (MONO_ARCH_HAVE_NOTIFY_PENDING_EXC): Turn on this for amd64.
10971
10972         * exceptions-amd64.c (mono_arch_notify_pending_exc): New function to 
10973         process async exceptions received while in unmanaged code.
10974
10975         * mini.c (mini_init): Install a callback with the runtime which will be called
10976         when a thread receives an async exception while in unmanaged code.
10977
10978         * mini.c driver.c: Update after mono_get_native_wrapper () signature change.
10979
10980         * mini-s390x.c (mono_arch_output_basic_block): Fix s390x build.
10981
10982 2008-01-16  Wade Berrier  <wberrier@novell.com>
10983
10984         * cpu-g4.md:
10985         * cpu-arm.md:
10986         * cpu-s390x.md:
10987         fix build
10988
10989 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
10990
10991         * mini-x86.c (mono_arch_output_basic_block): Remove some gccism which prevents
10992         compilation with sun cc.
10993
10994         * cpu-*.md: Fix the build.
10995
10996         * cpu-x86.md: Fix the length of some load membase opcodes. Fixes #354241.
10997
10998         * mini-amd64.h: Add some comments to the MonoLMF structure.
10999
11000         * mini-ops.h cpu-amd64.c: Add a OP_AMD64_SAVE_SP_TO_LMF opcode.
11001         
11002         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Avoid setting the rip field
11003         in the LMF structure if possible. This saves two instructions in the
11004         managed->native wrappers.
11005
11006         * mini-ops.h *.md: Make some opcodes names uniform by removing the op_ prefix.
11007
11008 2008-01-16  Mark Probst  <mark.probst@gmail.com>
11009
11010         * generic-sharing.c: New type argument lookup code which uses the
11011         runtime generic context template.
11012
11013 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
11014
11015         * mini.c (mono_method_to_ir): Avoid emitting a write barrier when storing NULL.
11016
11017         * mini-arm.c (add_general): Fix arm eabi parameter passing.
11018         (mono_arch_output_basic_block): Fix localloc implementation.
11019
11020         * mini-amd64.c (peephole_pass): Sync store+load optimizations with the x86 version.
11021
11022         * mini-ia64.c (peephole_pass): Fix ia64 build.
11023
11024         * mini-amd64.c (peephole_pass): Fix a warning.
11025         
11026         * mini-amd64.c (mono_arch_allocate_vars): Make sure the LMF is always stored
11027         at a constant offset from sp/fp.
11028
11029         * exceptions-amd64.c (mono_arch_find_jit_info): Compute the LMF address from fp/sp
11030         instead of obtaining it from *lmf in the managed method case.
11031
11032 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
11033
11034         * exceptions-amd64.c (mono_arch_find_jit_info): Remove some duplicate code.
11035
11036 Mon Jan 14 12:33:06 CET 2008  David S. Miller  <davem@davemloft.net>
11037
11038         * mini.h (MonoInstList): New type.
11039         (MONO_INST_LIST_INIT, MONO_INST_LIST_EMPTY,
11040         __MONO_INST_LIST_ADD, MONO_INST_LIST_ADD,
11041         MONO_INST_LIST_ADD_TAIL, __MONO_INST_LIST_DEL,
11042         __MONO_INST_LIST_SPLICE, MONO_INST_LIST_SPLICE,
11043         MONO_INST_LIST_SPLICE_TAIL, MONO_INST_LIST_SPLICE_INIST,
11044         MONO_INST_LIST_SPLICE_TAIL_INIT, mono_container_of,
11045         MONO_INST_LIST_ENTRY, MONO_INST_LIST_FIRST_ENTRY,
11046         MONO_INST_LIST_LAST_ENTRY, MONO_INST_LIST_FOR_EACH,
11047         MONO_INST_LIST_FOR_EACH_PREV, MONO_INST_LIST_FOR_EACH_SAFE,
11048         MONO_INST_LIST_FOR_EACH_PREV_SAFE,
11049         MONO_INST_LIST_FOR_EACH_ENTRY,
11050         MONO_INST_LIST_FOR_EACH_ENTRY_REVERSE,
11051         MONO_INST_LIST_FOR_EACH_ENTRY_SAFE,
11052         mono_inst_list_first, mono_inst_list_last,
11053         mono_inst_list_next, mono_inst_list_prev): New instruction
11054         list handling interfaces.
11055         (MonoBasicBlock): Remove 'last_ins' and 'code', replace with
11056         list head 'ins_list'.
11057         (MonoInst): Replace next pointer with list head 'node'.
11058         (MonoCallInst): Make 'out_args' a MonoInstList.
11059         (MONO_INST_NEW_CALL): Explicitly init ->out_args.
11060         (MonoCompile): Delete reverse_inst_list and
11061         reverse_inst_list_len.
11062         * mini-hppa.c (mono_arch_call_opcode, NEW_INS,
11063         mono_arch_lowering_pass, mono_arch_local_regalloc,
11064         mono_arch_output_basic_block, mono_arch_emit_prolog):
11065         Convert to new instruction lists.
11066         (insert_after_ins): Delete.
11067         * inssel.brg (MONO_EMIT_NEW_BRANCH_BLOCK): Convert to new
11068         instruction lists.
11069         * mini-hppa.h (MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Likewise.
11070         * mini.c (NEW_BBLOCK, ADD_BBLOCK, CHECK_BBLOCK,
11071         split_bblock, mono_add_ins_to_end, mono_emit_call_args,
11072         mono_emulate_opcode, mono_emit_load_got_addr,
11073         inline_method, mono_method_to_ir, mono_print_bb_code,
11074         print_dfn, decompose_pass, nullify_basic_block,
11075         replace_out_block_in_code, remove_block_if_useless,
11076         merge_basic_blocks, move_basic_block_to_end,
11077         try_unsigned_compare, optimize_branches, mono_print_code,
11078         mini_select_instructions, remove_critical_edges): Likewise.
11079         * mini-amd64.c (emit_sig_cookie, mono_arch_call_opcode,
11080         peephole_pass_1, peephole_pass, mono_arch_lowering_pass,
11081         mono_arch_output_basic_block, mono_arch_emit_prolog):
11082         Likewise.
11083         * mini-mips.c (mono_arch_call_opcode, peephole_pass,
11084         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
11085         mono_arch_output_basic_block): Likewise.
11086         (inst_list_prepend, insert_after_ins): Delete.
11087         * mini-mips.h (MONO_EMIT_NEW_BRANCH_NONZERO_LABEL,
11088         MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Convert to new
11089         instruction lists.
11090         * mini-x86.c (emit_sig_cookie, mono_arch_call_opcode,
11091         peephole_pass_1, peephole_pass, mono_arch_output_basic_block,
11092         mono_arch_emit_prolog): Likewise.
11093         * cfold.c (mono_constant_fold): Likewise.
11094         * liveness.c (visit_bb, mono_analyze_liveness,
11095         optimize_initlocals): Likewise.
11096         * ssapre.c (dump_code, process_bb, code_motion): Likewise.
11097         * graph.c (mono_draw_code_cfg): Likewise.
11098         * ssa.c (mono_ssa_rename_vars, mono_ssa_compute,
11099         mono_ssa_remove, mono_ssa_avoid_copies, mono_ssa_create_def_use,
11100         mono_ssa_cprop): Likewise.
11101         * abcremoval (get_relations_from_previous_bb, process_block):
11102         Likewise.
11103         * local-propagation (mono_cprop_invalidate_values,
11104         mono_local_cprop_bb): Likewise.
11105         * mini-s390x.c (mono_arch_call_opcode, emit_sig_cookie,
11106         peephole_pass, mono_arch_output_basic_block,
11107         mono_arch_emit_prolog): Likewise.
11108         * mini-arm.c (mono_arch_call_opcode, peephole_pass,
11109         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
11110         mono_arch_emit_prolog): Likewise.
11111         (insert_after_ins): Delete.
11112         * aliasing.c (print_code_with_aliasing_information,
11113         mono_build_aliasing_information, mono_aliasing_deadce):
11114         Convert to new instruction lists.
11115         * mini-ia64.c (emit_sig_cookie, mono_arch_call_opcode,
11116         peephole_pass, NEW_INS, mono_arch_lowering_pass,
11117         mono_arch_local_regalloc, mono_arch_output_basic_block):
11118         Likewise.
11119         (insert_after_ins): Delete.
11120         * mini-sparc.c (emit_sig_cookie, mono_arch_call_opcode,
11121         peephole_pass, mono_arch_output_basic_block): Convert to
11122         new instruction lists.
11123         * mini-codegen (InstList, inst_list_prepend,
11124         insert_after_ins): Delete.
11125         (insert_before_ins, get_register_force_spilling,
11126         get_register_spilling, free_up_ireg, free_up_reg,
11127         create_copy_ins, create_spilled_store, alloc_int_reg,
11128         alloc_float_reg, alloc_reg, mono_local_regalloc): Convert
11129         to new instruction lists.
11130         * mini-ppc.c (mono_arch_call_opcode, peephole_pass,
11131         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
11132         mono_arch_output_basic_block, mono_arch_emit_prolog): Likewise.
11133         (insert_after_ins): Delete.
11134         * mini-alpha.c (NEW_INS, peephole_pass, mono_arch_lowering_pass,
11135         mono_arch_local_regalloc, mono_arch_output_basic_block,
11136         mono_arch_call_opcode): Convert to new instruction lists.
11137         (insert_after_ins): Delete.
11138         * mini-s390.c (mono_arch_call_opcode, emit_sig_cookie,
11139         peephole_pass, mono_arch_output_basic_block,
11140         mono_arch_emit_prolog): Convert to new instruction lists.
11141
11142 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
11143
11144         * mini-amd64.c (mono_arch_output_basic_block): Use a 4 byte load in OP_CHECK_THIS.
11145
11146         * mini-sparc.c (mono_arch_output_basic_block): Use a byte load in CHECK_THIS.
11147         Fixes #353182.
11148
11149         * Makefile.am (version.h): Make this work with non-bash shells.
11150
11151 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
11152
11153         * mini.c (handle_delegate_ctor): Optimize away setting of NULL target.
11154
11155 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
11156
11157         * mini.c (mono_method_to_ir): Fix possible reading of invalid memory in 
11158         the InitializeArray optimization.
11159
11160 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
11161
11162         * mini.c driver.c: Don't include os/gc_wrapper.h.
11163
11164 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
11165
11166         * mini.c (print_jit_stats): Print GC statistics if available.
11167
11168 2008-01-04  Zoltan Varga  <vargaz@gmail.com>
11169
11170         * mini-amd64.c (mono_arch_allocate_vars): Align argument storage offsets to 8.
11171
11172 2007-12-29  Zoltan Varga  <vargaz@gmail.com>
11173
11174         * mini-ppc.c (mono_arch_get_delegate_invoke_impl): Fix flushing of icache.
11175
11176 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
11177
11178         * mini.c (mini_init): Move the setting of GC_stackbottom to mono_gc_base_init ().
11179         
11180         * mini.c (mini_init): Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
11181
11182         * driver.c (mono_main): Ditto.
11183
11184 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
11185
11186         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_delegate_invoke ().
11187
11188         * aot-compiler.c (emit_klass_info): Avoid emitting info if one of the methods
11189         in the vtable can't be encoded.
11190         (compile_method): Ditto.
11191
11192 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
11193
11194         * mini.c (setup_jit_tls_data): Use the MONO_ARCH_INIT_TOP_LMF_ENTRY macro if
11195         defined.
11196
11197         * mini-amd64.h mini-amd64.c exceptions-amd64.c tramp-amd64.c: Rename lmf->ebp to 
11198         lmf->rbp.
11199
11200         * exceptions-amd64.c (mono_arch_find_jit_info): Fix the detection of whenever
11201         the top LMF entry belongs to the current method.
11202
11203         * mini.c: Update after renaming of mono_thread_get_pending_exception ().
11204
11205 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
11206
11207         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix a warning.
11208         
11209         * tramp-ia64.c (mono_arch_create_trampoline_code): Ditto.
11210
11211         * tramp-sparc.c (mono_arch_create_trampoline_code): Check for thread interruption.
11212
11213         * tramp-amd64.c (mono_arch_create_trampoline_code): Ditto.
11214
11215         * tramp-x86.c (mono_arch_create_trampoline_code): Check for thread interruption.
11216
11217         * cpu-amd64.md mini-amd64.h mini-amd64.c inssel-amd64.brg: Add ulong->double 
11218         implementation.
11219
11220         * basic-float.cs: Add an ulong->double cast test.
11221
11222 2007-12-15  Zoltan Varga  <vargaz@gmail.com>
11223
11224         * mini.c (mono_method_to_ir): Fix a warning.
11225
11226 2007-12-14  Zoltan Varga  <vargaz@gmail.com>
11227
11228         * mini-ops.h: Add OP_SWITCH.
11229
11230         * mini.c graph.c ssa.c aliasing.c mini-<ARCH>.c inssel-<ARCH>.brg: Avoid using
11231         CEE_SWITCH in back-end code, use OP_SWITCH instead.
11232
11233 2007-12-11  Geoff Norton  <gnorton@novell.com>
11234
11235         * mini-s390x.c: Minor change to the MAX() define to allow
11236         it to compile with other gcc versions.
11237
11238 2007-12-11  Geoff Norton  <gnorton@novell.com>
11239
11240         * cpu-s390x.md:
11241         * mini-s390x.c: Implement sext_i4 to fix the build on s390x
11242
11243 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
11244
11245         exceptions-arm.c (mono_arch_get_restore_context): Restore
11246         the frame pointer.
11247
11248         exceptions-arm.c (throw_exception): Save the frame pointer.
11249         This is a partial fix for #323747. Only the client side is
11250         fixed.
11251
11252 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
11253
11254         * mini.c (mono_method_to_ir): Verbose message in CEE_NEWOBJ
11255         was using an unrelated variable to log the class which
11256         needed the cctor to be called. This was crashing on arm.
11257
11258 2007-12-09  Robert Jordan  <robertj@gmx.net>
11259
11260         * mini-x86.c (mono_arch_emit_epilog):
11261         Consider all kinds of 64-bit types. Fixes #323114.
11262
11263 2007-12-08  Zoltan Varga  <vargaz@gmail.com>
11264
11265         * tramp-amd64.c (mono_arch_create_trampoline_code): Clean up the code a bit.
11266
11267 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
11268
11269         * mini-amd64.c (peephole_pass): Add a missing instruction check.
11270
11271 Fri Dec 7 22:08:23 CET 2007 Paolo Molaro <lupus@ximian.com>
11272
11273         * mini.c: run type ctor before allocating an object, not only
11274         when running it's constructor method (fixes at least part of bug #342507).
11275
11276 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
11277         
11278         * mini-trampolines.c (mono_delegate_trampoline): Fix a warning.
11279         
11280         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove a debug printf.
11281         * mini.h mini-amd64.c mini-x86.c: Get rid of the mono_arch_find_vtable () 
11282         function.
11283
11284         * tramp-x86.c tramp-amd64.c mini-trampolines.c: Pass the vtable argument to
11285         mono_generic_class_init_trampoline () the same as it is done with the other
11286         trampolines.
11287
11288         * mini-arm.h mini-arm.c tramp-arm.c inssel-arm.brg cpu-arm.md 
11289         aot-runtime.c aot-compiler.c: Implement AOT support.    
11290
11291 2007-12-07  Mark Probst  <mark.probst@gmail.com>
11292
11293         * mini-trampolines.c (mono_generic_class_init_trampoline): Fixed
11294         build for archs which don't have the vtable trampoline defined
11295         yet.
11296
11297 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
11298
11299         * tramp-x86.c (mono_arch_create_trampoline_code): Fix the build.
11300
11301         * tramp-ppc.c (mono_arch_create_trampoline_code): Use the new helper function.
11302
11303         * mini-trampolines.c (mono_get_trampoline_func): New helper function.
11304
11305         * tramp-<ARCH>.c: Use the new helper function.
11306
11307 2007-12-07  Mark Probst  <mark.probst@gmail.com>
11308
11309         * inssel.brg: Added a pattern for the OP_TRAMPCALL_VTABLE
11310         trampoline call, which takes a vtable argument.
11311
11312         * graph.c, mini-ops.h, local-propagation.c, aliasing.c: Treat
11313         OP_TRAMPCALL_VTABLEs like other calls.
11314
11315         * mini-amd64.c, mini-amd64.h, mini-x86.c, mini-x86.h: Designated a
11316         register to hold the vtable argument to the OP_TRAMPCALL_VTABLE
11317         call.  Implemented a support function which fetches the vtable
11318         from a register set.
11319
11320         * mini.c, mini.h, tramp-amd64.c, tramp-x86.c, mini-trampolines.c:
11321         Implemented a generic class init trampoline, using the
11322         OP_TRAMPCALL_VTABLE opcode.
11323
11324         * mini.c: Implemented static field access when sharing generic
11325         code.  This implies initing the class using the new
11326         OP_TRAMPCALL_VTABLE call.
11327
11328 2007-12-07  Mark Probst  <mark.probst@gmail.com>
11329
11330         * mini.c: Don't compile methods with sharing enabled if their
11331         classes are disabled for sharing.
11332
11333 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
11334
11335         * inssel.brg: Add a missing sign extension to the GETCHR and array access
11336         opcodes. Fixes #346563.
11337
11338         * objects.cs: Add a new test.
11339
11340         * aot-compiler.c (emit_method_code): Put back an #ifdef which is needed.
11341
11342         * mini-<ARCH>.h mini.c aot-compiler.c aot-runtime.c: Get rid of the
11343         HAVE_PIC_AOT define and use AOT_SUPPORTED instead.
11344
11345 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
11346
11347         * mini-arm.h mini-arm.c: Add support for the common vtable trampoline.
11348
11349 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
11350
11351         * mini-arm.c (mono_arch_emit_exceptions): Avoid uninitialized memory in the
11352         code stream.
11353
11354 2007-12-02  Zoltan Varga  <vargaz@gmail.com>
11355
11356         * patch-info.h (PATCH_INFO): Add DELEGATE_TRAMPOLINE.
11357
11358         * mini.c aot-compiler.c aot-runtime.c: Implement the delegate creation 
11359         optimization in the AOT case.
11360         
11361 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
11362
11363         * aot-runtime (mono_aot_get_method_from_vt_slot): Add support for multi-byte method ref encodings.
11364         
11365         * aot-runtime.c (decode_klass_ref): Implement decoding of generic instances.
11366
11367         * aot-compiler.c (encode_klass_ref): Implement proper encoding of generic instances.
11368
11369         * mini.c (mono_method_to_ir): Optimize the common ldftn+create delegate combination.
11370
11371         * mini-trampolines.c (mono_delegate_trampoline): Add some code to handle the case when the delegate
11372         is created by the inlined delegate ctor.
11373
11374         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.  
11375
11376         * mini.c (mono_jit_compile_method_inner): Replace calls to delegate invoke with the trampoline here too.
11377
11378 2007-11-29  Zoltan Varga  <vargaz@gmail.com>
11379
11380         * cpu-x86.md: Fix the length of ckfinite.
11381
11382 2007-11-28  Zoltan Varga  <vargaz@gmail.com>
11383
11384         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.
11385         
11386         * mini-x86.c (mono_arch_output_basic_block): Clean up the fp stack properly in CKFINITE.
11387         (mono_arch_output_basic_block): Get rid of unused last_ins and last_offset.
11388
11389         * mini-x86.c (mono_arch_output_basic_block): Add some micro optimizations.
11390
11391         * mini-x86.c inssel-x86.brg cpu-x86.md: Move the implementation of the 
11392         OP_START_HANDLER/OP_ENDFINALLY/OP_ENDFILTER opcodes to mini-x86.c.
11393
11394 2007-11-28  Martin Baulig  <martin@ximian.com>
11395
11396         * mini-x86.c
11397         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline()
11398         after creating the trampoline.
11399
11400 2007-11-27  Zoltan Varga  <vargaz@gmail.com>
11401
11402         * aot-runtime.c (load_aot_module): Check runtime version if needed.
11403
11404         * aot-compiler.c: Add bind-to-runtime-version for producing AOT files which only load into a runtime with
11405         the same version.
11406
11407         * generic-sharing.c (mono_helper_get_rgctx_other_ptr): Change the signature to take the calling class
11408         instead of the calling method to help AOT.
11409
11410         * mini.c (get_runtime_generic_context_other_ptr): Update after the change.
11411
11412 2007-11-26  Zoltan Varga  <vargaz@gmail.com>
11413
11414         * aot-runtime.c (mono_aot_init_vtable): Simplify this if MONO_ARCH_COMMON_VTABLE_TRAMPOLINE
11415         is defined.
11416
11417 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
11418
11419         * aot-compiler.c (emit_class_name_table): Properly encode generic class names.
11420         
11421         * aot-compiler.c (compile_method): Correct check for generic method definitions.
11422         (encode_method_ref): No need to handle generic method definitions specially.
11423
11424         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
11425
11426         * aot-runtime.c (decode_klass_ref): Clean this up and rename from 
11427         decode_klass_info.
11428
11429         * aot-compiler.c (encode_klass_ref): Clean this up and rename from
11430         encode_klass_info.
11431         (compile_method): Enable generic sharing.
11432
11433 2007-11-22  Zoltan Varga  <vargaz@gmail.com>
11434
11435         * mini.c (get_runtime_generic_context_other_ptr): Disable AOT here.
11436         (mini_method_compile): Add preliminary support for AOTing shared generic code.
11437
11438         * aot-compiler.c (compile_method): Add preliminary support for AOTing shared
11439         generic code.
11440
11441         * mini-trampolines.c: Fix a warning.
11442
11443         * mini.c (get_runtime_generic_context_other_ptr): Use NEW_METHODCONST instead of
11444         NEW_PCONST.
11445         (mono_method_to_ir): Use NEW_DOMAINCONST in one place.
11446         (generic_class_is_reference_type): Remove unused function.
11447
11448         * mini-trampolines.c (mono_magic_trampoline): Avoid loading metadata if possible
11449         in the generic vtable trampoline case.
11450
11451         * aot-runtime.c (mono_aot_init_vtable): Use the generic vtable trampoline.
11452         
11453         * aot-runtime.c (mono_aot_get_method_from_vt_slot): New helper function to
11454         return an AOT method based on a vtable slot.
11455
11456         * aot-compiler.c (compile_method): Avoid AOTing synchronized methods for now.
11457
11458         * mini.c (mini_get_vtable_trampoline): Export this.
11459
11460 2007-11-22  Martin Baulig  <martin@ximian.com>
11461
11462         * debug-debugger.h
11463         (MonoDebuggerInfo): Move `debugger_version' up.
11464
11465 2007-11-22  Martin Baulig  <martin@ximian.com>
11466
11467         * mini-amd64.c
11468         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline().
11469
11470         * mini-trampolines.c
11471         (mono_delegate_trampoline): Call mono_debugger_trampoline_compiled()
11472         after compiling the method.
11473
11474 2007-11-20  Martin Baulig  <martin@ximian.com>
11475
11476         * debug-mini.c
11477         (mono_debugger_insert_method_breakpoint): Moved into mono-debug-debugger.c.
11478         (mono_debugger_remove_breakpoint): Likewise.
11479         (mono_debugger_check_breakpoints): Likewise.
11480
11481         * debug-debugger.c: Implement the new breakpoint interface here.
11482
11483 2007-11-18  Zoltan Varga  <vargaz@gmail.com>
11484
11485         * mini-amd64.c (mono_arch_output_basic_block): Unify the implementation of
11486         CEE_CONV_I1/SEXT_I1 and I2 since they are the same.
11487
11488         * mini-x86.c (mono_arch_output_basic_block): Ditto.     
11489
11490 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
11491
11492         * mini-amd64.c (mono_arch_output_basic_block): Fix a typo.
11493
11494         * mini-x86.c (mono_arch_get_inst_for_method): Remove code which is now in
11495         mini.c.
11496
11497         * mini-ia64.c (mono_arch_get_inst_for_method): Remove code which is now in
11498         mini.c.
11499
11500         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for methods
11501         returning a vtype in a register.
11502
11503         * mini.c (mini_get_inst_for_method): Move the handling of the atomic operations
11504         here from the arch specific code.
11505
11506         * mini-amd64.c (mono_arch_get_inst_for_method): Remove code which is now in
11507         mini.c.
11508
11509         * mini-amd64.c (mono_arch_output_basic_block): Add some micro optimizations.
11510         (mono_arch_emit_prolog): Increment maximum prolog size.
11511
11512         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Move the implementation of the
11513         START_HANDLER/ENDFINALLY/ENDFILTER opcodes to mini-amd64.c.
11514
11515         * mini-x86.c (get_call_info): Receive a MonoCompile instead of a 
11516         MonoGenericSharingContext.
11517
11518         * mini-ia64.c (get_call_info): Receive a MonoCompile instead of a 
11519         MonoGenericSharingContext. Allocate memory from the cfg mempool.
11520
11521 2007-11-15  Mark Probst  <mark.probst@gmail.com>
11522
11523         * mini.c, mini.h, generic-sharing.c: Functions for producing code
11524         which extract fields out of the runtime generic context.  Full
11525         sharing of the NEWARR opcode.
11526
11527 Thu Nov 15 14:20:21 CET 2007 Paolo Molaro <lupus@ximian.com>
11528
11529         * abcremoval.c, mini.c, ssa.c, ssapre.c: updated to implement
11530         --enable-minimal=ssa.
11531
11532 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
11533
11534         * mini-trampolines.c (mono_delegate_trampoline): Update after 
11535         mono_marshal_get_delegate_invoke () signature change.
11536
11537 2007-11-13  Mark Probst  <mark.probst@gmail.com>
11538
11539         * mini.c: Removed the shared context in favor of the generic
11540         sharing context.  Allocate the MonoJitInfo structure with room for
11541         the generic sharing context if it's needed.
11542
11543         * mini.h: Remove MonoGenericSharingContext declaration.  It's in
11544         domain-internals.h now.
11545
11546         * mini-x86.c: Pass the generic sharing context to get_call_info ().
11547
11548         * generic-sharing.c: Several changes for working without a shared
11549         context and instead operating on open types instead.
11550
11551 2007-11-12  David S. Miller  <davem@davemloft.net>
11552
11553        * inssel-sparc.brg: Fix double instruction emit.
11554
11555 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
11556
11557         * mini.c (mono_jit_runtime_invoke): Avoid trying to compile the Array 
11558         Get/Set/Address methods.
11559         
11560         * mini.c debug-debugger.c mini-trampolines.c: Update after 
11561         mono_marshal_get_delegate_invoke signature change.
11562
11563 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
11564
11565         * cpu-arm.md: Increase the max size of OP_THROW to 24 bytes.
11566         This can happens with dynamic methods. Fixes the other bug in #322722.
11567
11568 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
11569
11570         * tramp-arm.c (mono_arch_patch_callsite): Support patching
11571         BX call sequence.
11572
11573         * mini-arm.c (arm_patch): Implement patching of BX call
11574         sequence. Fixes one of the bugs in #322722.
11575
11576 2007-11-03  David S. Miller  <davem@huronp11.davemloft.net>
11577
11578        * mini-sparc.c (mono_arch_flush_icache): Make more efficient
11579        under Linux.  We only need to flush every 32-byte cache line.    
11580
11581 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
11582
11583         * mini.c:
11584         move_basic_block_to_end: Add branches when needed, eventually creating
11585         a new BB.
11586         optimize_branches: added a parameter that tells if it's ok to create
11587         new BBs (doing is "df_visit" has been called is (IMHO) a nightmare),
11588         and avoid calling move_basic_block_to_end when it's not ok.
11589         Fixes bug 318677.
11590
11591 2007-11-07  Mark Probst  <mark.probst@gmail.com>
11592
11593         * mini.c: Abort inlining call to InitializeArray if something
11594         looks wrong.  Let the icall handle it, which now has proper safety
11595         checks.
11596
11597 2007-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
11598
11599         * mini.c (mono_spill_call): add support for soft-float.
11600
11601         * mini.c (mono_method_to_ir): add support for soft-float
11602         to inlined functions that return float.
11603
11604         * mini.c (mono_method_to_ir): add support for soft-float
11605         to cee_stsfld opcode on float fields.
11606
11607 2007-11-05  Geoff Norton  <gnorton@novell.com>
11608
11609         * mini-x86.h: Fix the structure access for X86 Leopard.
11610
11611
11612 2007-11-05  Martin Baulig  <martin@ximian.com>
11613
11614         * mini-trampolines.c
11615         (mono_magic_trampoline): Call mono_debugger_trampoline_compiled()
11616         after compiling the method to notify the debugger.
11617
11618 2007-11-05  Martin Baulig  <martin@ximian.com>
11619
11620         * debug-debugger.h (MonoDebuggerInfo): Use the new breakpoint tables.
11621
11622 2007-11-02  Zoltan Varga  <vargaz@gmail.com>
11623
11624         * mini-sparc.c (EMIT_COND_SYSTEM_EXCEPTION_GENERAL): Applied patch from
11625         David Miller <davem@davemloft.net>. Allow larger offsets in branches.
11626
11627 2007-11-01  Zoltan Varga  <vargaz@gmail.com>
11628
11629         * mini-amd64.c (mono_arch_emit_prolog): Check the domain as well for
11630         native-to-managed wrappers.
11631         
11632 2007-11-01  Geoff Norton  <gnorton@novell.com>
11633
11634         * mini-ppc.h, mini-x86.h:  Handle Leopards renaming of some structure 
11635         members.
11636
11637 Wed Oct 31 20:23:14 CET 2007 Paolo Molaro <lupus@ximian.com>
11638
11639         * mini.c, mini-x86.c: when getting back from unmanaged code
11640         to managed via a marshaled delegate we also need to set the
11641         right domain.
11642
11643 Wed Oct 31 19:53:33 CET 2007 Paolo Molaro <lupus@ximian.com>
11644
11645         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: breakpoint table support
11646         for amd64.
11647
11648 Wed Oct 31 19:29:30 CET 2007 Paolo Molaro <lupus@ximian.com>
11649
11650         * mini.c, mini.h, mini-x86, tramp-x86.c, mini-x86.h: added API to
11651         let the debugger or other external agents to tell the JIT when
11652         a sw breakpoint has been inserted in the code that the JIT needs
11653         to be able to inspect.
11654
11655 2007-10-31  Martin Baulig  <martin@ximian.com>
11656
11657         * debug-debugger.h
11658         (MonoDebuggerInfo): Remove `runtime_class_init'.
11659
11660 2007-10-30  Martin Baulig  <martin@ximian.com>
11661
11662         * debug-mini.h
11663         (mono_debugger_thread_created): Added `MonoThread *' argument.
11664         (mono_debugger_extended_notification): New public method.
11665         (mono_debugger_trampoline_compiled): New public method.
11666
11667         * debug-mini.c
11668         (MonoDebuggerThreadInfo): Added `thread' and
11669         `extended_notifications' fields.
11670
11671         * debug-debugger.c
11672         (debugger_executable_code_buffer): New static variable.
11673
11674         * debug-debugger.h
11675         (MonoDebuggerInfo): Added `executable_code_buffer',
11676         `executable_code_buffer_size', `breakpoint_info_area',
11677         `breakpoint_table' and `breakpoint_table_size'.
11678
11679 2007-10-26  Rodrigo Kumpera  <rkumpera@novell.com>
11680
11681         * mini-arm.c (mono_arch_build_imt_thunk): Take the advantage
11682         that IP  either is an unused value or the vtable pointer. IMT 
11683         calls use vtable + offset now. Reduced by almost half the size
11684         of IMT entries.
11685
11686 2007-10-26  Jonathan Chambers <joncham@gmail.com>
11687
11688         * mini-amd64.c: Begin Win64 port. Use AMD64_ARG_REG#
11689         defines to access param registers. Replace long usage with
11690         gsize as sizeof(long) != sizeof(void*) on Win64.
11691
11692         * mini-amd64.h: Add %rdi and %rsi to MonoLMF structure
11693         on Win64. Fix intrinsic, use _AddressOfReturnAddress
11694         instead of non-existant _GetAddressOfReturnAddress.
11695
11696         * tramp-amd64.c: Use AMD64_ARG_REG#     defines to access 
11697         param registers. Save/restore %rdi and %rsi in MonoLMF.
11698
11699         * exceptions-amd64.c: Use AMD64_ARG_REG# defines to access 
11700         param registers. Modify (throw_exception) signature to take 
11701         %rdi and %rsi on Win64. 
11702
11703         Code is contributed under MIT/X11 license.
11704
11705 Thu Oct 25 23:06:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
11706
11707         * helpers.c: unlink debugging output files.
11708
11709 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
11710
11711         * mini.c: Move mono_create_ftnptr () to object.c.
11712
11713 2007-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
11714
11715         * helpers.c (mono_disassemble_code): MonoCompile parameter is now
11716         optional. This function can now be used to disassemble code generated
11717         outside the JIT such as trampolines and IMT thunks.
11718
11719         * mini-arm.h: defined MONO_ARCH_HAVE_IMT.
11720
11721         * mini-arm.c (decode_vcall_slot_from_ldr): added, extract the
11722         vtable pointer from a ldr instruction.
11723
11724         * mini-arm.c (mono_arch_get_vcall_slot_addr): support the
11725         new IMT call sequence.
11726
11727         * mini-arm.c (mono_arch_output_basic_block): emit the IMT
11728         call sequence for interface invocations.
11729
11730         * mini-arm.c (mono_arch_emit_imt_argument): added, required
11731         for imt support. This function is empty since IMT on ARM requires no
11732         special handling on the IR side.
11733
11734         * mini-arm.c (mono_arch_find_imt_method): added, required for
11735         imt support.
11736
11737         * mini-arm.c (mono_arch_find_this_argument): added, required
11738         for imt support.
11739
11740         * mini-arm.c (arm_emit_value_and_patch_ldr): added, patches
11741         a ldr instruction to load a value stored in the code stream.
11742
11743         * mini-arm.c (mono_arch_build_imt_thunk):added, required
11744         for imt support.
11745
11746
11747 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
11748
11749         * mini.c (mini_init): Install the jump trampoline callback.
11750
11751 Tue Oct 23 17:07:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
11752
11753         * mini-trampolines.c: handle synchronized methods with the common
11754         vtable trampoline (bug #335601).
11755
11756 2007-10-17  Zoltan Varga  <vargaz@gmail.com>
11757
11758         * mini-ia64.h mini-amd64.c: Add support for the common vtable trampoline.
11759
11760         * inssel.brg (mini_emit_virtual_call): Fix the computation of ins->inst_offset on
11761         64 bit platforms.
11762
11763         * mini-ia64.h mini-ia64.c: Add support for IMT.
11764
11765         * mini-x86.c (mono_arch_emit_prolog): Increase the size allocated for the
11766         prolog. Fixes #331958.
11767
11768 2007-10-15  Zoltan Varga  <vargaz@gmail.com>
11769
11770         * mini-sparc.h mini-sparc.c: Add support for the common vtable trampoline.
11771
11772 Mon Oct 15 11:18:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
11773
11774         * mini-ppc.c, mini-ppc.h: ppc support for the common vtable
11775         trampoline.
11776
11777 Mon Oct 15 10:41:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
11778
11779         * mini-amd64.c, mini-amd64.h: amd64 support for the common vtable
11780         trampoline.
11781
11782 Mon Oct 15 10:39:26 CEST 2007 Paolo Molaro <lupus@ximian.com>
11783
11784         * mini-x86.c, mini-x86.h: x86 support for the common vtable
11785         trampoline.
11786
11787 Mon Oct 15 10:37:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
11788
11789         * mini-trampolines.c: changed the magic rampoline to understand
11790         the common vtable trampoline method: the method to invoke is
11791         determined by the vtable displacement of the call.
11792
11793 Mon Oct 15 10:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
11794
11795         * mini.c, mini.h: register the common vtable trampoline if the
11796         architecture supports it.
11797
11798 Mon Oct 15 09:50:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
11799
11800         * cpu-amd64.md: use the correct max length for tls_get.
11801
11802 2007-10-14  Zoltan Varga  <vargaz@gmail.com>
11803
11804         * mini.c (mono_method_to_ir): Use mini_get_class in CEE_LDELEM_ANY and
11805         CEE_STELEM_ANY. Fixes #333696.
11806
11807 Thu Oct 11 18:04:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
11808
11809         * exceptions-x86.c: provide more graceful handling of the case where
11810         we followed a bogus function pointer from managed code (bug #332866).
11811
11812 2007-10-11  Mark Probst  <mark.probst@gmail.com>
11813
11814         * mini.h, mini.c: Introduced the MonoGenericSharingContext, which
11815         replaces the generic_shared flag and will carry more information
11816         in the future.
11817
11818         * generic-sharing.c: Added mini_type_stack_size() which allows
11819         allows open types if given a generic sharing context.
11820         mini_get_basic_type_from_generic() takes a
11821         MonoGenericSharingContext* instead of a MonoCompile* now.
11822
11823         * mini-alpha.c, mini-amd64.c, mini-arm.c, mini-hppa.c,
11824         mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c, mini-s390x.c,
11825         mini-sparc.c, mini-x86.c: Trivial changes required by the two
11826         changes above.  Just passing arguments through to the right
11827         places.
11828
11829 Wed Oct 10 19:44:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
11830
11831         * mini-arm.c: unify the call emission to emit_code_seq().
11832
11833 Wed Oct 10 13:05:46 CEST 2007 Paolo Molaro <lupus@ximian.com>
11834
11835         * tramp-arm.c: reduced the trampoline size.
11836
11837 2007-10-10  Mark Probst  <mark.probst@gmail.com>
11838
11839         * generic-sharing.c, mini.h, mini-amd64.c, mini-x86.c: Moved type
11840         variable handling out of arch-specific code.
11841
11842 Wed Oct 10 10:49:28 CEST 2007 Paolo Molaro <lupus@ximian.com>
11843
11844         * mini-arm.c: implemented fast delegate dispatch.
11845
11846 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
11847
11848         * mini-amd64.c (mono_arch_compute_omit_fp): Add more checks to ensure
11849         that fp elimination is turned off if the space required by locals is too
11850         big. Fixes #331958.
11851
11852 Tue Oct 9 21:01:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
11853
11854         * Makefile.am, mini-arm.c, mini-arm.h, tramp-arm.c: ported
11855         ARM to the new style trampoline.
11856
11857 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
11858
11859         * tramp-amd64.c: Rework the specific trampoline code to make it smaller.
11860
11861         * mini-amd64.h mini-amd64.c: Export amd64_patch as mono_amd64_patch.
11862
11863 2007-10-09  Martin Baulig  <martin@ximian.com>
11864
11865         * debug-debugger.h
11866         (MonoDebuggerMetadataInfo): Added `field_info_type_offset' and
11867         `field_info_offset_offset'.     
11868
11869 Tue Oct 9 09:47:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
11870
11871         * mini-ppc.c, mini-ppc.h, mini-ops.h, inssel-ppc.brg, cpu-g4.md:
11872         removed more internal usage of the r11 register and made it available
11873         to the register allocator.
11874
11875 2007-10-08  Mark Probst  <mark.probst@gmail.com>
11876
11877         * mini.c, mini-amd64.c, mini-x86.c: Allow open generic contexts
11878         when sharing generics and treat type variables as references.
11879
11880 Mon Oct 8 10:55:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
11881
11882         * mini-ppc.c: started removing the internal uses of register r11
11883         to eventually allow the register allocator to manage it as an
11884         additional available register.
11885
11886 Mon Oct 8 14:25:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
11887
11888         * tramp-amd64.c: fixed memory corruption in the trampoline generation.
11889
11890 Mon Oct 8 12:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
11891
11892         * tramp-ppc.c, tramp-x86.c: reduce the alignment requirements for
11893         specific trampolines as they are not performance critical as a jump
11894         target (maybe align as before only for AOT code?). This saves about
11895         200 KB of native code on x86 for monodevelop startup.
11896
11897 Mon Oct 8 10:04:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
11898
11899         * tramp-ppc.c: reduce the size of the trampolines, saves 160KB on
11900         monodevelop startup.
11901
11902 2007-10-06  Zoltan Varga  <vargaz@gmail.com>
11903
11904         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Allow signed displacements.
11905
11906         * mini-sparc.h mini-sparc.c: Implement IMT support.
11907
11908         * tramp-sparc.c (mono_arch_create_trampoline_code): Rework the trampoline code so
11909         its smaller and doesn't clobber sparc_g1.
11910
11911         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Update after trampoline changes.
11912
11913 Fri Oct 5 18:28:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
11914
11915         * mini-ppc.c: optimized the size of the IMT thunks a bit.
11916
11917 Fri Oct 5 18:08:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
11918
11919         * mini-ppc.c: implemented fast delegate invocation.
11920
11921 Fri Oct 5 00:01:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
11922
11923         * mini-ppc.h, mini-ppc.c: IMT support for the PPC architecture.
11924
11925 Thu Oct 4 22:04:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
11926
11927         * mini-ppc.c, mini-ppc.h, tramp-ppc.c, Makefile.am: port the PPC
11928         code to the new style trampoline in preparation for IMT support.
11929
11930 Thu Oct 4 19:01:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
11931
11932         * mini-ppc.c, tramp-ppc.c: don't use r13 as it's used by the PPC EABI
11933         systems already. This also reduces the specific trampiline sizes and
11934         prepares for the use of r12 as the IMT identifier register.
11935
11936 Thu Oct 4 16:38:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
11937
11938         * mini-mips.h: endianess fix (simplified from a patch by
11939         Thomas Kunze <thommy@tabao.de>, bug #323737).
11940
11941 Thu Oct 4 14:43:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
11942
11943         * exceptions-ppc.c, mini-ppc.h: refactor to use macros
11944         to access ucontext fields and enable netbsd support
11945         (partially from Magnus Henoch <mange@freemail.hu>).
11946
11947 Thu Oct 4 12:35:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
11948
11949         * genmdesc.pl: patch from Henryk Plotz <henryk@openmoko.org> to
11950         use the preprocessor from the CPP env var if it is set.
11951
11952 Wed Oct 3 17:11:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
11953
11954         * mini-trampolines.c: fixed an assertion and moved it earlier in the
11955         code, before interface_offset gets used.
11956
11957 2007-10-02  Zoltan Varga  <vargaz@gmail.com>
11958
11959         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call 
11960         mono_class_setup_vtable () before accessing klass->vtable.
11961
11962 2007-10-01  Zoltan Varga  <vargaz@gmail.com>
11963
11964         * aot-compiler.c (get_plt_index): Rework the handling of wrappers to be not so
11965         hackish.
11966
11967 Mon Oct 1 15:00:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
11968
11969         * mini.c, mini-trampolines.c, mini.h: enable the lazy filling of the
11970         IMT slots (this saves hundreds of KB of memory in programs like
11971         IronPython and Monodevelop).
11972
11973 Mon Oct 1 14:44:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
11974
11975         * mini.c: print the delegate counter.
11976
11977 Mon Oct 1 14:36:50 CEST 2007 Paolo Molaro <lupus@ximian.com>
11978
11979         * mini-x86.c: make it easier to enable the debugging code for IMT
11980         slots.
11981
11982 2007-09-28  Martin Baulig  <martin@ximian.com>
11983
11984         * debug-debugger.h
11985         (MonoDebuggerMetadataInfo): Add `klass_image_offset',
11986         `mono_method_klass_offset' and `mono_method_token_offset'.
11987
11988 2007-09-20  Mark Probst  <mark.probst@gmail.com>
11989
11990         * mini.c: First generics sharing implementation.  Can only share
11991         in very simple cases.  If sharing doesn't work it falls back to
11992         dedicated compilation.
11993
11994         * mini.h: Flag in MonoCompile to specify whether generic
11995         compilation is shared.  Flags enum for marking which generic inst
11996         of a context is used.  Prototypes for helper functions.
11997
11998         * generic-sharing.c: Helper functions for generic method sharing.
11999
12000         * optflags-def.h: Optimization flag (gshared) for enabling generic
12001         method sharing added.
12002
12003         * Makefile.am: generic-sharing.c added.
12004
12005 2007-09-19 Daniel Nauck <dna@mono-project.de>
12006
12007         * mini.c (mono_thread_abort): fixed typo in r86014. It should be '==' instead of '!='.
12008
12009 2007-09-19  Massimiliano Mantione  <massi@ximian.com>
12010         * mini.c (mono_thread_abort): Correctly handle ThreadAbortException,
12011         fixes bug 325507.
12012
12013 2007-09-19  Martin Baulig  <martin@ximian.com>
12014
12015         * mini.c (mini_cleanup): Only call mono_debugger_cleanup() here;
12016         mono_debug_cleanup() is now part of mono_cleanup().
12017
12018 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
12019
12020         * driver.c (mono_main): Fix a warning.
12021
12022 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
12023
12024         * aot-compiler.c: Optimize various parts when processing large assemblies.
12025         Fixes ##325568.
12026
12027         * mini.c (mono_patch_info_hash): Improve hash function.
12028
12029 2007-09-14  Jonathan Chambers <joncham@gmail.com>
12030
12031         * mini-exceptions.c: Add HAVE_UNISTD_H check around include.
12032         
12033         Code is contributed under MIT/X11 license.
12034
12035 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
12036
12037         * mini.c (mini_init): Fix a leak.
12038
12039         * debug-mini.c (mono_debug_free_method_jit_info): Fix a leak.
12040
12041 Fri Sep 14 12:53:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
12042
12043         * mini.c: redirect string.InternalAllocStr() to the managed allocator.
12044
12045 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
12046
12047         * mini-amd64.c (mono_arch_find_imt_method): Add support for AOT code.
12048
12049 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
12050
12051         * Makefile.am generics-variant-types.2.il generics.cs: Add some generics
12052         variance tests.
12053
12054         * inssel.brg: Reorganize the isinst/castclass code to reduce code duplication.
12055
12056         * mini.c (handle_alloc): Enable managed allocators in AOT code.
12057
12058         * aot-compiler.c (encode_patch): Add support for MONO_WRAPPER_ALLOC.
12059
12060         * aot-runtime.c (decode_patch_info): Ditto.
12061
12062 2007-09-12  Jonathan Chambers <joncham@gmail.com>
12063
12064         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement
12065         static case. Cache delegates in architecture specific code, 
12066         based on number of parameters.
12067         
12068         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Cache delegates
12069         in architecture specific code, based on number of parameters.
12070         
12071         * mini-trampolines.c (mono_delegate_trampoline): Architecture specific 
12072         caching happen in architecture specific code now.
12073         
12074         Code is contributed under MIT/X11 license.
12075
12076 2007-09-12  Jonathan Chambers <joncham@gmail.com>
12077
12078         * mini.h, mini.c, mini-x86.c, mini-amd64.c, mini-hppa.c, mini-mips.c,
12079         mini-s390x.c, mini-arm.c, mini-ia64.c, mini-sparc.c, mini-ppc.c, mini-alpha.c,
12080         mini-s390.c: Add mono_arch_init and mono_arch_cleanup methods.
12081
12082         Code is contributed under MIT/X11 license.
12083
12084 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
12085         * mini.c: (mono_thread_abort) Fixed bug #82416.
12086
12087 Tue Sep 11 16:15:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
12088
12089         * mini.: hook the new managed GC allocation feature into the JIT.
12090
12091 Tue Sep 11 16:14:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
12092
12093         * mini.c: implementation for the new runtime tls opcode.
12094
12095 2007-09-11  Martin Baulig  <martin@ximian.com>
12096
12097         * debug-debugger.h
12098         (MonoDebuggerMetadataInfo): Add `mono_method_flags_offset' and
12099         `mono_method_inflated_offset'.
12100
12101 2007-09-07  Zoltan Varga  <vargaz@gmail.com>
12102
12103         * driver.c mini.h mini.c: Add a new devel command line option for injecting
12104         async exceptions into a method.
12105
12106         * mini-amd64.h mini-amd64.c: Implement injecting of async exceptions for the
12107         purpose of testing whenever the unwinder works at every instruction.
12108
12109 Thu Sep 6 12:42:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
12110
12111         * mini.c: check accessibility of method used in ldftn (fixes
12112         bug #82635).
12113
12114 2007-09-04  Zoltan Varga  <vargaz@gmail.com>
12115
12116         * mini-amd64.c (mono_arch_output_basic_block): Fix a warning.
12117
12118         * inssel.brg: Fix a warning.
12119
12120 2007-09-03  Martin Baulig  <martin@ximian.com>
12121
12122         * debug-debugger.c: `MONO_DEBUGGER_EVENT_INITIALIZE_MANAGED_CODE'
12123         now takes the `main_method' as argument.
12124
12125 2007-09-02  Zoltan Varga  <vargaz@gmail.com>
12126
12127         * cpu-sparc.md (endfilter): Add missing src1:i argument.
12128
12129 2007-08-30  Jonathan Chambers <joncham@gmail.com>
12130
12131         * driver.c: include the cil-coff.h header on Windows.
12132         
12133         Code is contributed under MIT/X11 license.
12134
12135 Thu Aug 30 16:17:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
12136
12137         * mini.c, driver.c: don't include the cil-coff.h header.
12138
12139 Thu Aug 30 14:50:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
12140
12141         * mini.c: flag places that needs fixes fo soft-float support.
12142
12143 Wed Aug 29 18:26:20 CEST 2007 Paolo Molaro <lupus@ximian.com>
12144
12145         * mini.h, inssel-float.brg: fix soft-float constant loads on big
12146         endian systems (partially from Dean Jenkins, bug #81924).
12147
12148 2007-08-28  Mark Probst  <mark.probst@gmail.com>
12149
12150         * mini.c (check_linkdemand): Remove embedded reference object in
12151         call to LinkDemandSecurityException.
12152         (mono_jit_compile_method_inner): Call LinkDemandSecurityException
12153         with an IntPtr instead of a reference object.
12154
12155 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
12156
12157         * mini.c (handle_initobj): Handle alignment properly.
12158
12159         * inssel.brg (mini_emit_memset): Ditto. 
12160
12161         * inssel.brg (mini_emit_memcpy): Ditto. 
12162
12163         * inssel-sparc.brg: Ditto.              
12164
12165         * mini.h mini.c inssel-*.brg: Pass alignment information to OP_MEMCPY/MEMSET.
12166
12167 2007-08-26  Zoltan Varga  <vargaz@gmail.com>
12168
12169         * mini-exceptions.c (mono_handle_exception_internal): Skip the first frame for
12170         exceptions raised in unmanaged code. Fixes part of #82594.
12171
12172 2007-08-24  Mark Probst  <mark.probst@gmail.com>
12173
12174         * mini.c (mono_method_to_ir), declsec.c
12175         (mono_declsec_linkdemand_aptc): Fixed custom attr leaks.
12176
12177 2007-08-22  Martin Baulig  <martin@ximian.com>
12178
12179         * debug-mini.h
12180         (MonoDebuggerThreadInfo): New typedef.
12181         (mono_debugger_thread_table): New global variable.
12182         (mono_debugger_thread_created): New public function.
12183         (mono_debugger_thread_cleanup): New public function.
12184
12185         * debug-debugger.h
12186         (MonoDebuggerInfo):
12187         - removed `get_current_thread' and `lookup_assembly'.
12188         - removed `data_table'.
12189         - added `thread_table'.
12190
12191         * mini.c
12192         (mono_thread_start_cb): Call mono_debugger_thread_created().
12193         (mono_thread_attach_cb): Likewise.
12194         (mini_thread_cleanup): Call mono_debugger_thread_cleanup().
12195         (mini_cleanup): Move mono_debug_cleanup() down, after free'ing the
12196         initial domain.
12197
12198         * driver.c (mono_main): Move mono_debug_init() up, before calling
12199         mini_init(); mono_debug_init_1() and mono_debug_init_2() are gone.
12200
12201 Tue Aug 21 16:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
12202
12203         * mini-x86.c, inssel-x86.brg: group multiple stack adjustments
12204         together when passing several arguments of type double (gives a small
12205         speedup and saves a few bytes of generated code).
12206
12207 2007-08-20  Jb Evain  <jbevain@novell.com>
12208
12209         * mini.c (mono_method_to_ir): fix leak on InvalidProgramException.
12210
12211 2007-08-20  Jb Evain  <jbevain@novell.com>
12212
12213         * mini.c (mono_method_to_ir): throw MethodAccessException
12214         and FieldAccessException instead of InvalidProgramException.
12215
12216 2007-08-20  Mark Probst  <mark.probst@gmail.com>
12217
12218         * mini.c: CoreCLR security checks.
12219
12220         * mini.h: Removed MonoSecurityMode (moved to
12221         metadata/security-manager.h) and mono_security_mode global var
12222         (replaced by set/get functions in security-manager.h).
12223
12224         * driver.c: Added "core-clr-test" security mode for testing.  Used
12225         set-function for setting security mode.
12226
12227 2007-08-17  Mark Probst  <mark.probst@gmail.com>
12228
12229         * mini.c: MonoJitInfo's are freed hazardously now.  Statistics for
12230         the new jit_info_table.
12231
12232         * driver.c: Test code for the new jit_info_table (enabled by the
12233         define MONO_JIT_INFO_TABLE_TEST).
12234
12235 2007-08-14  Zoltan Varga  <vargaz@gmail.com>
12236
12237         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
12238         detection of call <REG> instruction sequence. Fixes build on freebsd.
12239
12240 2007-08-13  Zoltan Varga  <vargaz@gmail.com>
12241
12242         * mini-exceptions.c: Fix a warning.
12243
12244 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
12245
12246         * exceptions-amd64.c (mono_arch_handle_altstack_exception): Enable the new
12247         stack overflow handling code on amd64 too.
12248
12249         * mini-exceptions.c (mono_setup_altstack): Make this use 
12250         mono_thread_get_stack_bounds ().
12251
12252         * mini-x86.h: Disable sigaltstack on solaris x86.
12253
12254 2007-08-10  Zoltan Varga  <vargaz@gmail.com>
12255
12256         * mini-exceptions.c (mono_setup_altstack): Enable this to work on solaris x86.
12257
12258 2007-08-10  Geoff Norton  <gnorton@customerdna.com>
12259
12260         * tramp-x86.c: Remove some unneeded alignment changes on Apple.  Fixes #82387.
12261
12262 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
12263
12264         * mini-exceptions.c (mono_print_thread_dump): Enable this on amd64 too.
12265
12266         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Fix a warning.
12267
12268 2007-08-03  Neale Ferguson <neale@sinenomine.net>
12269
12270         * mini-s390.c (add_general): Adjust offset calculation to take into account of rounding up
12271         due to alignment.
12272
12273 Thu Aug 2 17:36:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
12274
12275         * mini-ppc.c: avoid an invalid encoding of unsigned right shift by 0
12276         to be emitted (bug #82281).
12277
12278 2007-08-01  Martin Baulig  <martin@ximian.com>
12279
12280         Merged the `debugger-dublin' branch.
12281
12282         * debug-debugger.h (MonoDebuggerInfo):
12283         Removed the `old_*' compatibility entries.
12284         Added `debugger_version' and `data_table'.
12285         Renamed `get_method_addr_or_bpt' -> `insert_breakpoint'.
12286         Renamed `remove_method_breakpoint' -> `remove_breakpoint'.
12287
12288         * debug-mini.c
12289         (MiniDebugMethodBreakpointInfo): Add `address_list'.
12290         (mono_debugger_check_breakpoints): Take a `MonoDebugMethodAddress *'
12291         instead of a `gconstpointer'.
12292         (mono_debugger_insert_method_breakpoint): Return a
12293         `MonoDebugMethodAddressList *'.
12294
12295 2007-06-28  Martin Baulig  <martin@ximian.com>
12296
12297         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
12298
12299 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
12300
12301         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Avoid using 
12302         __builtin_frame_address () since it is broken on older gcc versions.
12303
12304 Tue Jul 31 17:34:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
12305
12306         * mini.c, mini.h, mini-exceptions.c: added a bit of documentation
12307         on the stack overflow handling and made the managed stack overflows
12308         catchable in most cases using soft guard pages.
12309         * exceptions-x86.c: added code to restore the protection in the soft
12310         guard pages at the end of exception handling.
12311
12312 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
12313
12314         * mini.c (SIG_HANDLER_SIGNATURE): Fix a warning.
12315
12316 Mon Jul 30 17:43:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
12317
12318         * exceptions-ppc.c, mini-ppc.h: arch-specific stack overflow
12319         exception handling.
12320
12321 Mon Jul 30 17:38:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
12322
12323         * mini-alpha.h, mini-ia64.h, mini-sparc.h: disable the altstack
12324         signal handling support until it has been ported to the new mechanism.
12325         * mini.c: fixed stack overflow detection and use the new
12326         architecture code  to handle signals on the altstack.
12327
12328 Mon Jul 30 17:33:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
12329
12330         * exceptions-amd64.c, mini-amd64.h: amd64 code to handle
12331         stack overflows on the alt stack.
12332
12333 Mon Jul 30 17:29:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
12334
12335         * exceptions-x86.c, mini-x86.h, mini.h: new code to handle
12336         stack overflows on the alt stack.
12337
12338 Mon Jul 30 11:50:06 CEST 2007 Paolo Molaro <lupus@ximian.com>
12339
12340         * exceptions-ppc.c: cleanup preparing for altstack support.
12341
12342 Mon Jul 30 11:31:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
12343
12344         * exceptions-arm.c: cleanup preparing for altstack support.
12345
12346 2007-07-27  Mark Probst  <mark.probst@gmail.com>
12347
12348         * mini.c (print_jit_stats): Output hazard pointer stats.
12349
12350 2007-07-26  Mark Probst  <mark.probst@gmail.com>
12351
12352         * driver.c, mini.c: Replaced security mode flags with a single
12353         enum variable.
12354
12355 Thu Jul 26 20:12:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
12356
12357         * mini.c, mini-exceptions.c: cleanup the sigaltstack code.
12358
12359 2007-07-25  Mark Probst  <mark.probst@gmail.com>
12360
12361         * mini.c, mini.h, driver.c (mono_main): Added command-line flag
12362         (which doesn't do anything yet) for activating Core CLR
12363         (Silverlight) security.
12364
12365 Tue Jul 24 21:16:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
12366
12367         * mini-codegen.c: work around a possible gcc bug on arm.
12368
12369 Tue Jul 24 17:20:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
12370
12371         * driver.c, mini-x86.h, mini-amd64.h: print a nice error
12372         message for platforms that don't support AOT compilation.
12373
12374 Mon Jul 23 10:29:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
12375
12376         * mini.h, mini.c, driver.c: temporary smcs hack.
12377
12378 Mon Jul 23 09:29:34 CEST 2007 Paolo Molaro <lupus@ximian.com>
12379
12380         * mini-arm.h, mini-arm.c: arm EABI fixes.
12381
12382 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
12383
12384         * exceptions-x86.c (mono_arch_find_jit_info): Handle the lmf->method == NULL
12385         case.
12386
12387         * tramp-x86.c (mono_arch_create_trampoline_code): Only set lmf->method for
12388         trampolines taking a method argument.
12389
12390         * mini-x86.h (MonoLMF): Add an 'esp' field plus comments.
12391
12392         * mini-x86.c (mono_arch_emit_prolog): Update after changes to the LMF structure.
12393         * tramp-x86.c (mono_arch_create_trampoline_code): Ditto.
12394
12395         * exceptions-x86.c (mono_arch_get_jit_info): Properly clean up the stack after
12396         JIT compilation throws an exception. Fixes #82050.
12397
12398 2007-07-19  Mark Probst  <mark.probst@gmail.com>
12399
12400         * mini.c: Removed the MonoLoaderErrorKind enum and replaced it
12401         with the MONO_EXCEPTION_ defines.
12402
12403 2007-07-17  Zoltan Varga  <vargaz@gmail.com>
12404
12405         * mini-amd64.c (mono_arch_find_imt_method): Handle mov reg,IMM64 case. Fixes
12406         #82117.
12407         
12408         * mini-amd64.c (mono_arch_find_imt_method): Add some debug code to help find out
12409         the cause of an assertion.
12410
12411 Mon Jul 16 19:31:21 CEST 2007 Paolo Molaro <lupus@ximian.com>
12412
12413         * mini.c, jit-icalls.c: mono_get_inflated_method() is obsolete,
12414         removed.
12415
12416 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
12417
12418         * mini-amd64.c (mono_arch_build_imt_thunk): Remove the non-32bit MonoMethod
12419         assert. Should fix #82103.
12420
12421 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
12422
12423         * mini-exceptions.c (mono_jit_walk_stack_from_ctx): Use MONO_CONTEXT_GET_SP ()
12424         here too. Fixes #82095.
12425
12426         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for non-32bit MonoMethod
12427         addresses.
12428
12429         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a couple asserts.
12430
12431         * mini-amd64.h: Enable IMT for amd64.
12432         
12433         * mini-amd64.c (mono_arch_build_imt_thunk): Optimize IMT thunk size.
12434
12435 2007-07-12  Zoltan Varga  <vargaz@gmail.com>
12436
12437         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for IMT call sequences.
12438
12439 2007-07-12  Mark Probst  <mark.probst@gmail.com>
12440
12441         * mini.c (check_linkdemand, mono_method_to_ir): Abort compilation
12442         as soon as check_linkdemand sets an exception_type.
12443
12444 Thu Jul 12 12:18:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
12445
12446         * mini-x86.c: fixed offsets for IMT call sequence.
12447         * mini-x86.h: enable IMT again.
12448
12449 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
12450
12451         * trace.c (mono_trace_enter_method): Decode MonoType too.
12452
12453         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Handle signed displacements too.
12454
12455         * mini.h mini-x86.h mini-trampolines.c: Change the signature of mono_arch_find_imt_method () to pass the calling code address too.
12456
12457         * mini-amd64.c: Add preliminary IMT implementation.
12458         
12459 Wed Jul 11 18:21:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
12460
12461         * mini-x86.c: adjusted mono_arch_get_vcall_slot_addr () to
12462         understand the new IMT-base interface invocation (thanks to
12463         Daniel Nauck for the report and the remote debugging session).
12464
12465 Wed Jul 11 14:54:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
12466
12467         * mini-x86.c: size and speed optimizations for the IMT bsearch.
12468
12469 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
12470
12471         * Makefile.am (aotcheck): Make this actually use the AOTed code.
12472
12473 Wed Jul 11 12:41:32 CEST 2007 Paolo Molaro <lupus@ximian.com>
12474
12475         * mini-trampolines.c: implement AOT IMT support.
12476         * mini-x86.h: enable IMT support for wider testing.
12477
12478 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
12479
12480         * inssel.brg (emit_imt_argument): Add aot support here.
12481
12482         * aot-runtime.c (decode_patch_info): Fix reading of MONO_PATCH_INFO_METHOD.
12483
12484 Tue Jul 10 17:50:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
12485
12486         * mini-x86.c, mini-x86.h, tramp-x86.c: x86 arch-specific changes
12487         of the IMT implementation, partially from massi, with my
12488         implementation of the bsearch sequence. Disabled by default until
12489         the AOT code is implemented.
12490
12491 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
12492
12493         * cpu-x86.md: The source argument of sext_i1/i2 must by a byte reg.
12494
12495         * inssel-x86.brg: Add reg:ldind.i1(regvar) rules. Fixes #82056.
12496
12497 Tue Jul 10 17:33:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
12498
12499         * inssel.brg, mini.c, mini.h, mini-trampolines.c:
12500         arch-independent IMT JIT code from Massimiliano
12501         Mantione (massi@ximian.com) with small cleanups from me.
12502
12503 Tue Jul 10 13:07:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
12504
12505         * Makefile.am: fix svn invocation to get the svn revision to be
12506         independent of the local language (build fix).
12507
12508 2007-07-09  Mark Probst  <mark.probst@gmail.com>
12509
12510         * mini.c (inline_method): Reset cfg->exception_type if the
12511         inlining is aborted.  Fixes: 82049.
12512
12513 Mon Jul 9 17:26:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
12514
12515         * mini.c: remove assert from exception handling code when exception_ptr
12516         is not set.
12517
12518 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
12519
12520         * mini.c (mono_codegen): Add an assert.
12521
12522         * mini-x86.c (mono_arch_emit_prolog): Allocate space for the profiler method 
12523         enter and leave code.
12524         * mini-amd64.c (mono_arch_emit_prolog): Likewise.
12525
12526 Thu Jul 5 20:12:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
12527
12528         * mini-ppc.c: fixed memory corruption for localloc(0)
12529         (bug #81852).
12530
12531 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
12532         
12533         * mini.c: Fix warnings.
12534
12535 Wed Jul 4 15:30:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
12536
12537         * optflags-def.h, mini-x86.c: added sse2 optimization flag and use it
12538         to emit better double->int conversions.
12539
12540 Tue Jul 3 19:42:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
12541
12542         * mini.c: the provided Min/Max optimizations are valid for unisgned
12543         ints.
12544
12545 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
12546
12547         * 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
12548
12549 2007-06-28  Miguel de Icaza  <miguel@novell.com>
12550
12551         * mini.c (mono_running_on_valgrind): Add support for reporting the
12552         method and  its boundaries to valgrind.
12553
12554 2007-06-28  Martin Baulig  <martin@ximian.com>
12555
12556         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
12557
12558 2007-06-25  Zoltan Varga  <vargaz@gmail.com>
12559
12560         * ssa.c (visit_inst): Add support for OP_BR. Fixes #81946.
12561
12562         * generic.2.cs: Add new test case.
12563
12564 2007-06-25  Martin Baulig  <martin@ximian.com>
12565
12566         Merged the `debugger-dublin' branch.
12567
12568         * debug-mini.c
12569         (mono_debugger_insert_method_breakpoint): New public method.
12570         (mono_debugger_remove_method_breakpoint): Likewise.
12571         (mono_debugger_check_breakpoints): New static method.
12572         (mono_debug_close_method): Call mono_debugger_check_breakpoints().
12573
12574         * debug-debugger.h (MonoDebuggerInfo):
12575         Renamed (to keep backward compatibility in the vtable):
12576         `insert_breakpoint' -> `old_insert_breakpoint'.
12577         `remove_breakpoint' -> `old_remove_breakpoint'.
12578         `create_string' -> `old_create_string'.
12579         `lookup_class' -> `old_lookup_class'.
12580         `lookup_type' -> removed; changed into a dummy field.
12581         `lookup_assembly' -> `old_lookup_assembly'.
12582         Added (same functionality, but different signature):
12583         `create_string', `lookup_class', `lookup_assembly'
12584         Added new:
12585         `get_method_addr_or_bpt', `remove_method_breakpoint',
12586         `runtime_class_init'.
12587
12588         * debug-debugger.c: Merged the `debugger-dublin' branch.
12589
12590 2007-06-23  Zoltan Varga  <vargaz@gmail.com>
12591
12592         * mini-amd64.c (peephole_pass_1): Optimize away moves at the beginning of the bb as
12593         well.
12594         (peephole_pass): Likewise.
12595
12596 Fri Jun 22 09:17:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
12597
12598         * driver.c: hopefully make setaffinity work also for ancient
12599         versions of linux.
12600
12601 2007-06-22  Atsushi Enomoto  <atsushi@ximian.com>
12602
12603         * driver.c : win32 build fix.
12604
12605 Thu Jun 21 19:24:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
12606
12607         * driver.c: check for the MONO_NO_SMP env var and bind to a single
12608         processor if it is set.
12609
12610 2007-06-21  Martin Baulig  <martin@ximian.com>
12611
12612         * debug-mini.h: New file.
12613
12614         * debug-mini.c
12615         (mono_debugger_insert_breakpoint_full): Moved here from
12616         ../metadata/mono-debug-debugger.c.
12617         (mono_debugger_remove_breakpoint): Likewise.
12618         (mono_debugger_breakpoint_callback): Likewise.
12619
12620 2007-06-15  Raja R Harinath  <rharinath@novell.com>
12621
12622         * jit-icalls.c (mono_helper_compile_generic_method): Update to
12623         changes in MonoGenericClass.
12624
12625 2007-06-14  Zoltan Varga  <vargaz@gmail.com>
12626
12627         * mini-codegen.c (mono_opcode_to_type): Fix ia64 build.
12628
12629 2007-06-14  Raja R Harinath  <rharinath@novell.com>
12630
12631         * jit-icalls.c (mono_helper_compile_generic_method): Update to
12632         removal of MonoGenericMethod.
12633
12634 Thu Jun 14 12:42:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
12635
12636         * mini-exceptions.c: hooks for the exception events profiling API.
12637
12638 2007-06-14  Randolph Chung  <tausq@debian.org>
12639
12640         * Makefile.ma: Add hppa target.
12641         * mini-arch.h: Include mini-hppa.h
12642         * cpu-hppa.md, exceptions-hppa.c, inssel-hppa.brg, mini-hppa.c,
12643         mini-hppa.h, tramp-hppa.c: New files for 32-bit HPPA port.
12644         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
12645
12646 2007-06-14  Randolph Chung  <tausq@debian.org>
12647
12648         * inssel.brg: Add rules for "chained" compare-branch operations so that
12649         a single compare op can affect multiple branches.  Adjust cost for
12650         OP_CEQ/OP_CGT/OP_CGT_UN/OP_CLT/OP_CLT_UN.
12651         * inssel-long32.brg: Update rules to use compare-branch macros.  Adjust
12652         cost for some rules so that they can more easily be overridden by
12653         per-arch rules (with fixes from lupus).
12654         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
12655
12656 2007-06-13  Randolph Chung  <tausq@debian.org>
12657
12658         * mini-ops.h: Reorder branch ops so that they match the order of the
12659         corresponding CEE_* ops.  The code expects them this way.
12660         Add new ops for HPPA target.
12661         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
12662
12663 2007-06-13  Randolph Chung  <tausq@debian.org>
12664
12665         * mini-exceptions.c: Handle cases where the stack grows towards
12666         larger addresses.
12667         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
12668
12669 Wed Jun 13 19:13:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
12670
12671         * jit-icalls.c, mini.h, mini.c: added virtual generic invoke
12672         counter.
12673         * driver.c: explain where a non-matching corlib is found.
12674
12675 2007-06-13  Mark Probst  <mark.probst@gmail.com>
12676
12677         * mini.c (print_jit_stats): Output dynamic code allocation stats.
12678
12679 2007-06-10  Sanghyeon Seo <sanxiyn@gmail.com>
12680
12681         * mini-exceptions.c: Generate a method profile leave event during
12682         an exception to ensure that the profiler gets notified.
12683
12684 2007-06-07  Zoltan Varga  <vargaz@gmail.com>
12685
12686         * mini-amd64.c (peephole_pass): Merge some small changes from the linear-ir 
12687         branch.
12688
12689         * cpu-amd64.md: Add long_and/or/xor opcodes.
12690
12691 2007-06-06  Wade Berrier  <wberrier@novell.com>
12692
12693         * cpu-s390x.md (shr_imm): Correct the length of shr_imm instruction.
12694         (./class/lib/monolite/mcs.exe:25498): WARNING **: wrong maximal instruction 
12695         length of instruction shr_imm (expected 8, got 10)
12696
12697 2007-06-06  Zoltan Varga  <vargaz@gmail.com>
12698
12699         * mini-ia64.c (mono_arch_output_basic_block): Really fix the build.
12700
12701 2007-06-06  Mark Probst  <mark.probst@gmail.com>
12702
12703         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
12704         MonoInternalHashTable again (fixed bug in the internal hash table
12705         code).
12706
12707 2007-06-06  Mark Probst  <mark.probst@gmail.com>
12708
12709         * mini.c, driver.c: Reverted the MonoInternalHashTable changes.
12710         Have to figure out what makes it crash the SWF regression.
12711
12712 2007-06-05  Zoltan Varga  <vargaz@gmail.com>
12713
12714         * mini-ia64.c (mono_arch_lowering_pass): Fix ia64 build.
12715
12716 Tue Jun 5 17:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
12717
12718         * mini.c: optimize out the type check when storing null in a
12719         reference array.
12720
12721 2007-06-04  Mark Probst  <mark.probst@gmail.com>
12722
12723         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
12724         MonoInternalHashTable.
12725
12726 Mon Jun 4 11:29:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
12727
12728         * inssel.brg, mini.c, mini-ops.h: optimized Math.Mini/Max
12729         signed integer methods.
12730
12731 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
12732
12733         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case 
12734         permanently since the current approach doesn't work.
12735
12736 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
12737
12738         * inssel.brg (stmt): Only call delegate->invoke_impl if 
12739         MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE is defined.
12740
12741 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
12742
12743         * mini-amd64.c (mono_arch_output_basic_block): Unify div/rem opcodes and handle
12744         the sreg2==rdx case.
12745         
12746         * mini-amd64.c cpu-amd64.md: Correct length of r4const instruction and take into
12747         account if it contains a rex prefix.
12748         (peephole_pass): Handle OP_FMOVE as well.
12749
12750 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
12751
12752         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case for now
12753         as it causes regressions.
12754
12755 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
12756
12757         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement support for the
12758         static case as well.
12759
12760         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix ia64 build.
12761
12762         * mini-x86.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
12763         (mono_arch_get_this_arg_from_call): Ditto.
12764
12765         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Removed.
12766
12767         * inssel.brg (mini_emit_virtual_call): Call delegate->Invoke through the delegate's
12768         invoke_impl field.
12769
12770         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
12771         (mono_arch_get_this_arg_from_call): Ditto.
12772
12773         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Removed.
12774         
12775         * mini-trampolines.c (mono_delegate_trampoline): Complete rewrite. On first call,
12776         try to create optimized invoke code and use that for further invocations. 
12777         Otherwise, use the original mono_marshal_get_delegate_invoke () implementation.
12778
12779         * mini-x86.h mini-ia64.h: Remove MONO_ARCH_HAS_CREATE_DELEGATE_TRAMPOLINE for now.
12780
12781 2007-05-29  Rodrigo Kumpera  <kumpera@gmail.com>
12782
12783         * inssel.brg (mini_emit_virtual_call): Statically dispatch virtual calls to
12784         sealed classes or methods.
12785         *devirtualization.cs: tests for the new optimization
12786
12787 2007-05-29  Zoltan Varga  <vargaz@gmail.com>
12788
12789         * liveness.c (update_gen_kill_set): No need to set VOLATILE flags here, it is done
12790         by the update_volatile () function.
12791
12792 2007-05-27  Zoltan Varga  <vargaz@gmail.com>
12793
12794         * driver.c (mono_main): Call g_thread_init () early since newer glib versions
12795         require it.
12796
12797         * abcremoval.c (mono_perform_abc_removal): Avoid using alloca.
12798
12799 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
12800
12801         * mini.c: Add configure checks for header files.
12802         * mini-x86.c: Add configure checks for header files.
12803         * trace.c: Add configure checks for header files.
12804         * aot-runtime.c: Add configure checks for header files.
12805         * aot-compiler.c: Add configure checks for header files.
12806         * driver.c: Add configure checks for header files.
12807         * mini-codegen.c: Add configure checks for header files.
12808         
12809         Code is contributed under MIT/X11 license.
12810
12811 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
12812
12813         * mini-ia64.c (mono_arch_lowering_pass): Fix the handling of
12814         icompare_imm -128 + op_iclt. Fixes #81703.
12815
12816 2007-05-19  Zoltan Varga  <vargaz@gmail.com>
12817
12818         * mini-codegen.c (mono_local_regalloc): Fix long-shift-regalloc on amd64.
12819
12820 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
12821
12822         * inssel.brg: added "mini_emit_load_intf_bit_reg_vtable", and used it
12823         inside "mini_emit_isninst_iface_cast" and "mini_emit_castclass_iface"
12824         so that all isinst checks now use "interface_bitmap".
12825
12826 2007-05-15  Zoltan Varga  <vargaz@gmail.com>
12827
12828         * cpu-amd64.md (jmp): Fix a warning.
12829
12830         * inssel.brg (CEE_SWITCH): Hopefully fix #80738.
12831
12832         * basic.cs: Add new regression test.
12833
12834         * basic.cs: Remove test which is now in basic-long.cs.
12835
12836         * mini-ia64.c (mono_arch_output_basic_block): Sign extend in CEE_CONV_I8/CEE_CONV_I.
12837
12838         * basic-long.cs: Add new test.
12839         
12840 2007-05-13  Zoltan Varga  <vargaz@gmail.com>
12841
12842         * mini-sparc.c (mono_spillvar_offset_float): Fix sparc build.
12843
12844 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
12845
12846         * cpu-x86.md minix-86.c: Add a peephole_pass_1 () as on amd64.
12847
12848         * mini-x86.c (mono_arch_output_basic_block): Use mono_opcode_to_cond () in a few
12849         places.
12850         
12851         * mini-x86.c (mono_arch_emit_exceptions): Decrease the size of the exception 
12852         throwing code a bit.
12853
12854         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Decrease the size of 
12855         the exception throwing code a bit.
12856
12857         * mini-x86.c (get_call_info): Allocate result from a mempool.
12858
12859 2007-05-11  Zoltan Varga  <vargaz@gmail.com>
12860
12861         * aot-compiler.c (find_typespec_for_class): Fix the assert.
12862
12863         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
12864
12865         * mini.h (MonoCompile): Add 'token_info_hash' field.
12866
12867         * mini.c: Save token->method associations during compilation so the AOT 
12868         compiler can use it.
12869         
12870         * aot-compiler.c aot-runtime.c: Add support for compiling non-generic methods
12871         which reference generic classes and methods.
12872
12873 2007-05-10  Zoltan Varga  <vargaz@gmail.com>
12874
12875         * mini.h mini-<ARCH>.h: Get rid of MONO_ARCH_HAS_XP_LOCAL_REGALLOC.
12876
12877         * aot-compiler.c (compile_method): Fix a typo in a comment.
12878
12879         * aot-runtime.c (decode_cached_class_info): Skip generic types.
12880
12881         * aot-compiler.c: Add minimal support for AOTing generic code by skipping 
12882         everything generic.
12883
12884         * mini.c (mono_method_to_ir): Disable AOT when calling helper_compile_generic_method.
12885
12886 2007-05-09  Zoltan Varga  <vargaz@gmail.com>
12887
12888         * mini.h (MonoCompile): Add 'args' field.
12889
12890         * mini.c (mono_compile_create_vars): Store variables representing the arguments
12891         into cfg->args.
12892
12893         * mini-<ARCH>.c: Use cfg->args for accessing the method arguments.
12894
12895 2007-05-08  Zoltan Varga  <vargaz@gmail.com>
12896
12897         * mini.c (mono_compile_get_interface_var): Remove this unused function.
12898
12899         * mini-ops.h inssel.brg mini-<ARCH>.c: Add a new opcode for ckfinite as well.
12900
12901         * mini-ops.h: Introduce new opcodes used in the IR instead of the original CEE_
12902         opcodes for some opcodes.
12903
12904         * mini.h *.brg *.c: Use the new opcodes.
12905
12906 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
12907
12908         * mini.h: Bumped aot revision.
12909
12910         * inssel.brg: modified code generation of type checks for interfaces
12911         to use the new "MonoClass.interface_bitmap" instead of the old
12912         "MonoClass.interface_offsets".
12913
12914 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
12915
12916         * cpu-amd64.md (jmp): Increase the maximum size of the jmp opcode to 128.
12917
12918 2007-04-29  Zoltan Varga  <vargaz@gmail.com>
12919
12920         * abcremoval.c (summarize_integer_value): Handle OP_LCONV_TO_I4 to fix abcrem on
12921         64 bit platforms.
12922
12923 2007-04-27  Neale Ferguson <neale@sinenomine.net>
12924
12925         * mini-s390x.c: Fix MONO_TYPE_VALUETYPE processing.
12926
12927 2007-04-27  Wade Berrier  <wberrier@novell.com>
12928
12929         * mini-s390x.c: Remove redeclaration of CompRelation and CompType (defined in 
12930         mini.h) to fix build.
12931
12932 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
12933
12934         * mini-amd64.c (peephole_pass_1): Fix and reenable this pass.
12935         
12936         * mini-amd64.c (mono_arch_local_regalloc): Disable the new peephole_pass_1 as it
12937         causes the corlib unit tests to fail.
12938
12939 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
12940
12941         * mini-codegen.c (mono_opcode_to_type): Fix a bug in the previous patch.
12942
12943         * mini-amd64.c (peephole_pass_1): New pass to perform before local regalloc.
12944
12945         * mini-codegen.c (mono_opcode_to_cond): New helper function to convert conditional 
12946         opcodes to the comparison relations.
12947
12948         * mini-codegen.c (mono_opcode_to_type): New helper function to convert conditional 
12949         opcodes to their types.
12950         
12951         * mini-ia64.c mini-amd64.c: Use mono_opcode_to_cond and mono_opcode_to_type.
12952
12953         * mini-amd64.c (get_call_info): Allocate the result from the cfg mempool and cache 
12954         it in cfg->arch.cinfo.
12955
12956         * local-propagation.c (mono_local_cprop_bb): Fix a warning.
12957
12958         * mini.h mini.c branch-opts.c: Change bbhash to be an array and store it in 
12959         cfg->cil_offset_to_bb.
12960
12961 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
12962
12963         * liveness.c (optimize_initlocals): New mini-pass to optimize away dead assignments
12964         created becase of initlocals.
12965
12966 2007-04-23  Zoltan Varga  <vargaz@gmail.com>
12967
12968         * mini-alpha.c cpu-alpha.md: More alpha port work from 
12969         Sergey Tikhonov <tsv@solvo.ru>.
12970
12971 2007-04-21  Andreas Faerber  <andreas.faerber@web.de>
12972
12973         * Makefile.am (BUILT_SOURCES): Fix for automake 1.6.x. Fixes #81417.
12974
12975 2007-04-19  Zoltan Varga  <vargaz@gmail.com>
12976
12977         * cpu-s390.md (break): Correct the length of break instruction.
12978
12979 Thu Apr 19 16:28:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
12980
12981         * mini.c: fix a couple of soft-float issues and comments.
12982
12983 2007-04-15  Miguel de Icaza  <miguel@novell.com>
12984
12985         * trace.c (is_filenamechar): - is also a filename char.
12986
12987 2007-04-15  Neale Ferguson <neale@sinenomine.net>
12988
12989         * mini-s390.c: Correct checking for enum type in return value processing.
12990
12991 2007-04-14  Raja R Harinath  <rharinath@novell.com>
12992
12993         * Makefile.am (BUILT_SOURCES): Add 'version.h'.
12994         (version.h): Makefile is in the build directory.
12995
12996 2007-04-06  Andreas Faerber  <andreas.faerber@web.de>
12997
12998         * mini-amd64.h: fix for assertion failure on Solaris/amd64
12999
13000 2007-04-11  Martin Baulig  <martin@ximian.com>
13001
13002         * mini.c (can_access_member): Fix handling of generic classes;
13003         fixes #81259.
13004
13005 2007-04-10  Zoltan Varga  <vargaz@gmail.com>
13006
13007         * aot-runtime.c (mono_aot_plt_resolve): Fix disabling of AOT. Fixes #81316.
13008
13009 2007-04-05  Zoltan Varga  <vargaz@gmail.com>
13010
13011         * aot-runtime.c: Fix disabling of AOT. Fixes #81316.
13012
13013 Fri Mar 23 20:25:31 CET 2007 Paolo Molaro <lupus@ximian.com>
13014
13015         * mini-codegen.c: make sure the right spill amount is
13016         used for fp or integer registers (fixes the float_sub_spill() on ppc).
13017
13018 Fri Mar 23 19:43:35 CET 2007 Paolo Molaro <lupus@ximian.com>
13019
13020         * mini-ppc.c: fixes for the fp_branch_nan test.
13021
13022 2007-03-23  Zoltan Varga  <vargaz@gmail.com>
13023
13024         * basic.cs: Comment out new test which still fails on ia64.
13025
13026 Fri Mar 23 15:54:23 CET 2007 Paolo Molaro <lupus@ximian.com>
13027
13028         * mini.c: immediate shifted or fix (mono_metadata_user_string assert).
13029
13030 Fri Mar 23 12:53:28 CET 2007 Paolo Molaro <lupus@ximian.com>
13031
13032         * mini-ppc.c, mini-ppc.h: struct passing ABI fix (bug #77968).
13033
13034 2007-03-22  Zoltan Varga  <vargaz@gmail.com>
13035
13036         * cfold.c (FOLD_BINOP): Cast the result to gint32 to prevent overflow problems
13037         on 64 bit machines. Fixes part of #80738.
13038
13039         * basic.cs: Add regression test.
13040
13041 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
13042
13043         * inssel.brg basic.cs: Revert previous change to fix build.
13044
13045         * inssel.brg (SWITCH): Clean out the upper word of the switch value on 64 bit
13046         platforms.
13047         
13048         * inssel.brg (SWITCH): Use an integer comparison. Fixes #80738.
13049
13050         * basic.cs: Add new regression test.
13051
13052 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
13053
13054         * mini-ia64.c (mono_arch_emit_prolog): Fix an assert when a function has too
13055         many arguments.
13056
13057 2007-03-16  Neale Ferguson <neale@sinenomine.net>
13058
13059         * cpu-s390x.md: Correct length of break instruction.
13060
13061 2007-03-16  Neale Ferguson <neale@sinenomine.net>
13062
13063         * mini-s390x.c, cpu-s390x.md: Fix #80507 for s390x.
13064         * mini-s390.c, cpu-s390.md: Fix #80507 for s390.
13065
13066 2007-03-15  Jonathan Chambers  <joncham@gmail.com>
13067
13068         * *.c: Begin WIN64 port.
13069         * mini.c:  Use correct register in profiler.
13070         * mini-amd64.c: No inline assembly on Win64.
13071         * mini-amd64.h: Implement MONO_INIT_CONTEXT_FROM_FUNC for Win64.
13072         Only define MONO_ARCH_USE_SIGACTION on non-windows platforms.
13073         * exceptions-amd64.c: Only need gregs_from_ucontext if MONO_ARCH_USE_SIGACTION
13074         is defined. Implement mono_arch_sigctx_to_monoctx, mono_arch_monoctx_to_sigctx, and
13075         mono_arch_ip_from_context for Win64.
13076         
13077         Contributed under MIT/X11 license.
13078
13079 2007-03-15  Zoltan Varga  <vargaz@gmail.com>
13080
13081         * exceptions-amd64.c (seh_handler): Ditto.
13082
13083         * exceptions-x86.c (seh_handler): Fix a memory leak.
13084
13085 Thu Mar 15 13:47:59 CET 2007 Paolo Molaro <lupus@ximian.com>
13086
13087         * mini-arm.c, mini-mips.c, mini-ppc.c, mini-s390.c,
13088         mini-s390x.c: fixed peephole optimizations to deal
13089         correctly with 1 and 2 byte reload avoidance.
13090
13091 Thu Mar 15 10:17:54 CET 2007 Paolo Molaro <lupus@ximian.com>
13092
13093         * cpu-s390.md, cpu-s390x.md: update localloc length.
13094
13095 Wed Mar 14 21:00:19 CET 2007 Paolo Molaro <lupus@ximian.com>
13096
13097         * cpu-g4.md: added missing descriptions.
13098
13099 2007-03-14  Miguel de Icaza  <miguel@novell.com>
13100
13101         *  Makefile.am: Add support so the tail tests are not executed on
13102         PowerPC as that is a known limitation of the PowerPC port.
13103
13104 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
13105
13106         * runmdesc.bat:  Move to msvc directory.
13107         
13108 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
13109
13110         * runmdesc.bat:  Run executable that was produced by the current
13111         target and sent via an argument.
13112         
13113 2007-03-11  Zoltan Varga  <vargaz@gmail.com>
13114
13115         * mini.c (mono_method_to_ir): Fix box+brtrue optimization. Fixes
13116         #81102.
13117
13118         * generics.2.cs: Add regression test.
13119
13120 2007-03-09  Wade berrier  <wberrier@novell.com>
13121
13122         * mini-ppc.h: Undo typo of MONO_CONTEXT_SET_SP (ppc doesn't define this symbol)
13123
13124 2007-03-09  Zoltan Varga  <vargaz@gmail.com>
13125
13126         * aot-runtime.c (load_aot_module): Load all dependent assemblies eagerly since all
13127         AOT code depends on this.
13128
13129 Thu Mar 8 19:36:13 CET 2007 Paolo Molaro <lupus@ximian.com>
13130
13131         * mini.c: more precise tracking of types in the eval stack
13132         (part of fix for bug #81044).
13133
13134 2007-03-07  Zoltan Varga  <vargaz@gmail.com>
13135
13136         * aot-runtime.c (mono_aot_get_class_from_name): Add a cache.
13137
13138         * aot-compiler.c (encode_patch): Remove an obsolete comment.
13139
13140 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
13141
13142         * mini-exceptions.c (mono_handle_native_sigsegv): Fix a warning.
13143
13144         * mini.c (mono_method_to_ir): Add a workaround for bug #80733.
13145
13146 2007-02-22  Zoltan Varga  <vargaz@gmail.com>
13147
13148         * mini.c (type_from_op): Convert CEE_CONV_U to OP_LCONV_TO_U when the argument is
13149         a pointer on 64 bit systems. Fixes #80190.
13150
13151         * iltests.il: Add new regression test.
13152
13153 Tue Feb 20 11:33:28 CET 2007 Paolo Molaro <lupus@ximian.com>
13154
13155         * mini.c: inline a constant for Environment.IsRunningOnWindows.
13156
13157 2007-02-19  Geoff Norton  <gnorton@customerdna.com>
13158
13159         * trace.c: Remove an erroneous alignemnt check when tracing.
13160           Fixes --trace on OSX86.
13161
13162 Wed Feb 14 19:45:56 CET 2007 Paolo Molaro <lupus@ximian.com>
13163
13164         * mini-$(arch).h: initialize SP in context for all the archs.
13165
13166 2007-02-14  Sebastien Pouliot  <sebastien@ximian.com>
13167
13168         * mini-x86.h: Initialize SP in MONO_INIT_CONTEXT_FROM_FUNC. Fix CAS
13169         regressions in the thread tests.
13170
13171 2007-02-14  Zoltan Varga  <vargaz@gmail.com>
13172
13173         * *-alpha.*: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>:
13174         - fixed implementation of LOCALLOC opcode
13175         - implemented non-un compare for floats
13176         - code cleanup
13177         - implementation of FDIV and CKFINITE opcodes
13178         - fixes for latest mono updates
13179         - additional arch opcodes
13180
13181 Mon Feb 12 11:54:16 CET 2007 Paolo Molaro <lupus@ximian.com>
13182
13183         * Makefile.am: simplify and merge rules for cross-compilation.
13184
13185 2007-02-07  Massimiliano Mantione  <massi@ximian.com>
13186
13187         * local-propagation.c: Actually *apply* the fix for bug 80591...
13188
13189 Tue Feb 6 19:03:19 CET 2007 Paolo Molaro <lupus@ximian.com>
13190
13191         * mini-exceptions.c: backuot part of the last change
13192         (fixes cas tests on amd64 related to GetExecutingAssembly ()).
13193
13194 2007-02-06  Massimiliano Mantione  <massi@ximian.com>
13195         * inssel.brg: Fix bug 59286.
13196
13197
13198 Tue Feb 6 12:23:50 CET 2007 Paolo Molaro <lupus@ximian.com>
13199
13200         * mini-exceptions.c: patch from Zoltan to correctly check for
13201         stack boundaries (using the stack register, not the frame register),
13202         fixes bugs #80724, #79717.
13203
13204 2007-02-03  Zoltan Varga  <vargaz@gmail.com>
13205
13206         * mini-ia64.c inssel-sparc.brg mini-sparc.c cpu-sparc.md: Get rid of OP_SETREG/
13207         OP_SETREGIMM, use OP_MOVE/OP_ICONST instead.
13208
13209         * mini-amd64.c (mono_arch_output_basic_block): Fix ATOMIC_EXCHANGE in the
13210         presence of frame pointer elimination.
13211
13212 2007-02-01  Geoff Norton  <gnorton@customerdna.com>
13213         
13214         * mini-x86.h: NetBSD UCONTEX_REG defines.
13215
13216 2007-02-01  Zoltan Varga  <vargaz@gmail.com>
13217
13218         * inssel-amd64.brg: Fix amd64 build.
13219
13220 Thu Feb 1 14:02:09 CET 2007 Paolo Molaro <lupus@ximian.com>
13221
13222         * mini.h: remove extern to workaround what looks likes gcc bug 26905
13223         on amd64.
13224
13225 2007-01-31  Zoltan Varga  <vargaz@gmail.com>
13226
13227         * mini-codegen.c (mono_is_regsize_var): New helper function usable by the back
13228         ends.
13229
13230         * mini-<ARCH>.c: Use mono_is_regsize_var ().
13231
13232 2007-01-30 Mark Mason <mason@broadcom.com>
13233
13234            * exceptions-mips.c: Lots of exception handling fixes, LMFs now work, some cleanups.
13235            * mini-mips.h: Add LMF magic numbers, and fix context set/get macros.
13236            * mini-mips.c: Cleanups, LMF handling now works, optimize store of zero, implement localloc
13237            beginning support for CEE_JMP [not quite working yet]
13238            * tramp-mips.c: LMF handling now works
13239         
13240 2007-01-30  Zoltan Varga  <vargaz@gmail.com>
13241
13242         * mini-amd64.c (peephole_pass): Optimize code common in initlocals blocks.
13243
13244         * mini.h (NULLIFY_INS): New macro.
13245
13246 Tue Jan 30 16:33:33 CET 2007 Paolo Molaro <lupus@ximian.com>
13247
13248         * mini.c: statistical profiler fix for windows, patch
13249         from Tor Lillqvist (tml@novell.com).
13250
13251 2007-01-30  Massimiliano Mantione  <massi@ximian.com>
13252         * local-propagation.c: Fix bug 80591.
13253
13254 Mon Jan 29 12:14:34 CET 2007 Paolo Molaro <lupus@ximian.com>
13255
13256         * Makefile.am: put back the --export-dynamic option as with
13257         the previous gmodule flags (thanks to Robert Jordan).
13258
13259 2007-01-28  Zoltan Varga  <vargaz@gmail.com>
13260
13261         * mini-sparc.c (peephole_pass): Fix #80622 for sparc as well.
13262
13263         mini.h *.c: Allocate fp vregs from the same pool as the int vregs. Use this to
13264         simplify and speed up the local register allocator. Also rename some fields
13265         like iassign->vassign.
13266         
13267         * regalloc.c: Remove some functions which are no longer used since their
13268         inlined version is in mini-codegen.c.
13269         
13270         * mini-codegen.c: Rename mono_regstate2_ functions to mono_regstate_.
13271
13272         * basic.cs objects.cs iltests.il: Merge tests from the linear IL branch.
13273
13274 2007-01-27  Zoltan Varga  <vargaz@gmail.com>
13275
13276         * mini-amd64.c (peephole_pass): Remove optimizations which omit a 
13277         narrowing. Fixes #80622.
13278
13279         * iltests.il: Add new regresssion test. 
13280
13281 Fri Jan 26 18:31:45 CET 2007 Paolo Molaro <lupus@ximian.com>
13282
13283         * mini.h, mini-trampolines.c, aliasing.c, mini-codegen.c,
13284         debug-debugger.c, debug-debugger.h: warning fixes.
13285         * driver.c: updated copyright year and made it fit in one line.
13286
13287 Fri Jan 26 12:48:39 CET 2007 Paolo Molaro <lupus@ximian.com>
13288
13289         * aot-runtime.c: updated to use mono-dl instead of gmodule.
13290
13291 2007-01-25  Zoltan Varga  <vargaz@gmail.com>
13292
13293         * mini-x86.c (mono_arch_output_basic_block): Fix #80507 for x86.
13294
13295         * mini-amd64.c (mono_arch_output_basic_block): Fix #80507 for amd64.
13296
13297         * iltests.il: Add new test for bug #80507.
13298
13299 Wed Jan 24 19:10:28 CET 2007 Paolo Molaro <lupus@ximian.com>
13300
13301         * mini-arm.h: use soft-float also on vfp for now.
13302
13303 Wed Jan 24 14:54:40 CET 2007 Paolo Molaro <lupus@ximian.com>
13304
13305         * mini.c: fix some more soft-float issues.
13306
13307 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
13308
13309         * mini-sparc.h (MONO_ARCH_FRAME_ALIGNMENT): Fix sparc build.
13310
13311 2007-01-24  Massimiliano Mantione  <massi@ximian.com>
13312         * mini-arch.h, , inssel-amd64.brg, mini-x86.c, inssel-x86.brg,
13313         mini-ia64.c, mini-sparc.c, mini-alpha.c: Introduced
13314         MONO_ARCH_LOCALLOC_ALIGNMEENT to fix bug 80498.
13315
13316 Wed Jan 24 12:04:39 GMT 2007 Paolo Molaro <lupus@ximian.com>
13317
13318         * mini-arm.c: typo fix.
13319
13320 2007-01-23  Neale Ferguson <neale@sinenomine.net>
13321
13322         * mini-s390x.c: Use lgb instructions for I1 type variables instead of lb.
13323
13324 2007-01-21  Zoltan Varga  <vargaz@gmail.com>
13325
13326         * mini.c (mono_allocate_stack_slots_full): Allocate memory from the cfg mempool.
13327         Share stack slots for scalar types. Avoid expensive g_list_free () calls.
13328
13329         * mini-x86.c (mono_arch_allocate_vars): Don't free the result of allocate_stack_slots_full.
13330
13331         * mini-amd64.c mini-ia64.c mini-alpha.c: Ditto. 
13332
13333         * mini.h (MonoJitStats): Add a new JIT statistics: locals_stack_size.
13334         
13335         * inssel.brg: Fix a warning.
13336
13337         * mini.h (MonoBasicBlock): Make bb->dominated a GSList.
13338
13339         * abcremoval.c ssa.c ssapre.c: Update after this change.
13340         
13341         * dominators.c (compute_dominators): Allocate bb->dominated from the cfg mempool.
13342
13343         * dominators.c (df_set): Use mono_bitset_union_fast.    
13344
13345 Sat Jan 20 16:59:01 CET 2007 Paolo Molaro <lupus@ximian.com>
13346
13347         * mini.h, genmdesc.c, genmdesc.pl, mini-${arch}.c, cprop.c,
13348         mini-codegen.c: reduce relocations and memory usage for the cpu
13349         description.
13350
13351 2007-01-20  Zoltan Varga  <vargaz@gmail.com>
13352
13353         * mini-codegen.c (mono_regstate2_alloc_int): Optimize this using bsfq on amd64.
13354
13355         * genmdesc.c genmdesc.pl mini.h: Remove some unused fields from the mdesc tables
13356         to reduce their size.
13357
13358 2007-01-19 Mark Mason <mason@broadcom.com>
13359
13360         * exceptions-mips.c: fix mono_arch_ip_from_context(), increase exception debug support.
13361         * mini-mips.c: more configuration macros, support long conditional branches, additional
13362         asserts, fix epilog instrumentation.
13363         * mini-mips.h: use standard stack walk
13364         * cpu-mips.md: increase size of div, rem and conditional branches
13365         
13366 Fri Jan 19 17:23:32 CET 2007 Paolo Molaro <lupus@ximian.com>
13367
13368         * mini.h, mini-codegen.c, mini-$(arch).h: claenup references
13369         to cpu spec data.
13370
13371 2007-01-19  Zoltan Varga  <vargaz@gmail.com>
13372
13373         * aot-compiler.c (encode_klass_info): Allow classes of the form <Type>[][].
13374         (compile_method): Ditto.
13375
13376         * aot-runtime.c (decode_klass_info): Ditto.
13377
13378         * mini.c (mono_method_to_ir): Call mono_get_got_var () in a place where it is
13379         needed by the code generated by inssel.brg. Also fix a warning.
13380
13381 Thu Jan 18 17:55:22 CET 2007 Paolo Molaro <lupus@ximian.com>
13382
13383         * mini.c: deal with enums that become genericinsts by
13384         being nested in a generic class (bug #79956).
13385
13386 Thu Jan 18 16:52:56 CET 2007 Paolo Molaro <lupus@ximian.com>
13387
13388         * mini.c: match the generic definition to check for
13389         private access with generic types (bug #78431).
13390
13391 Thu Jan 18 11:50:13 CET 2007 Paolo Molaro <lupus@ximian.com>
13392
13393         * genmdesc.pl, Makefile.am: perl implementation of genmdesc,
13394         to make life easier for people cross-compiling that insist on not
13395         using scratchbox.
13396
13397 2007-01-17 Mark Mason <mason@broadcom.com>
13398
13399         * inssel-long.brg: patch to deal with mips missing flags
13400         * inssel-long32-mips.brg: implement overflow checks
13401         * insset-mips.brg: implement overflow checks
13402         * mini-mips.h: implement conditional exception handling
13403         * mini-mips.c: add mips_emit_exc_by_name(), implement conditional exception handling.
13404           Remove unused code, minor cleanups.
13405         * exceptions-mips.c: minor cleanups
13406         * mini-ops.h: add mips conditional exception ops
13407         * cpu-mips.md: add mips conditional exception ops
13408
13409         
13410 Wed Jan 17 19:22:34 CET 2007 Paolo Molaro <lupus@ximian.com>
13411
13412         * inssel.brg: patch from Mark Mason <mason@broadcom.com>
13413         to deal with mips missing of flags.
13414
13415 Tue Jan 16 20:01:01 CET 2007 Paolo Molaro <lupus@ximian.com>
13416
13417         * exceptions-ppc.c: execute fault handlers.
13418
13419 Tue Jan 16 19:54:44 CET 2007 Paolo Molaro <lupus@ximian.com>
13420
13421         * mini-ppc.c: handle missing call locationss with FORCE_INDIR_CALL.
13422
13423 Tue Jan 16 13:14:31 CET 2007 Paolo Molaro <lupus@ximian.com>
13424
13425         * mini.c: handle also floating point values in initialize_array.
13426
13427 Tue Jan 16 12:42:40 CET 2007 Paolo Molaro <lupus@ximian.com>
13428
13429         * mini.c, aot-runtime.c, aot-compiler.c: enable aot compilation of
13430         array initialization and make it conditional on the intrins option.
13431
13432 Tue Jan 16 11:28:45 CET 2007 Paolo Molaro <lupus@ximian.com>
13433
13434         * mini.h, patch-info.h, Makefile.am, aot-compiler.c: reduce
13435         relocations and put the patch info names close to the enum definition.
13436
13437 2007-01-15 Mark Mason <mason@broadcom.com>
13438
13439         * basic.cs, exceptions.cs: break up large tests to increase debugability.
13440
13441 Mon Jan 15 18:57:14 CET 2007 Paolo Molaro <lupus@ximian.com>
13442
13443         * mini.c: optimized RuntimeHelpers::InitializeArray () calls.
13444
13445 2007-01-12  Raja R Harinath  <rharinath@novell.com>
13446
13447         * mini.c (mono_method_to_ir): Use new MonoGenericContext accessor.
13448
13449 Thu Jan 11 11:16:42 CET 2007 Paolo Molaro <lupus@ximian.com>
13450
13451         * Makefile.am: distribute the mips sources.
13452
13453 Wed Jan 10 19:49:33 CET 2007 Paolo Molaro <lupus@ximian.com>
13454
13455         * mini-codegen.h: handle bug #80489 here, by excluding ecx
13456         directly.
13457
13458 Wed Jan 10 19:08:05 CET 2007 Paolo Molaro <lupus@ximian.com>
13459
13460         * cpu-x86.md: back out for now as this triggers other regressions.
13461
13462 Wed Jan 10 18:33:16 CET 2007 Paolo Molaro <lupus@ximian.com>
13463
13464         * cpu-x86.md: force src1 and dest regpair for long shift instructions
13465         to eax:edx, so ecx can't get allocated to them (bug #80489).
13466
13467 Tue Jan 9 12:36:11 CET 2007 Paolo Molaro <lupus@ximian.com>
13468
13469         * mini.c, mini-exceptions.c: enabled running fault handlers
13470         (bug #80469).
13471
13472 2007-01-03  Miguel de Icaza  <miguel@novell.com>
13473
13474         * driver.c: If nothing fail, do not use the string "failed",
13475         because it makes it very annoying to view test result logs on the
13476         web. 
13477
13478 2006-12-30  Miguel de Icaza  <miguel@novell.com>
13479
13480         * debug-debugger.c (mono_debugger_main): Rename "main" to
13481         "main_method" to prevent a warning.
13482
13483         Remove a warning for unused field.
13484
13485 2006-12-28  Martin Baulig  <martin@ximian.com>
13486
13487         * debug-debugger.c
13488         (MONO_DEBUGGER__debugger_info): Add `get_lmf_addr'.
13489
13490 2006-12-22  Martin Baulig  <martin@ximian.com>
13491
13492         * mdb-debug-info32.s, mdb-debug-info64.s: New files.
13493         Put a pointer to the `MONO_DEBUGGER__debugger_info' into a
13494         seperate `.mdb_debug_info' section, so we can access it from the
13495         debugger even if the binary is stripped.
13496
13497         * debug-debug.c: Reference the `MONO_DEBUGGER__debugger_info_ptr'
13498         from the `.mdb_debug_info' here to prevent the linker from
13499         removing that section.
13500
13501         * Makefile.am (mono_debugger_sources): Add mdb-debug-info32.s /
13502         mdb-debug-info64.s.
13503
13504 2006-12-19  Robert Jordan  <robertj@gmx.net>
13505
13506         * mini-x86: enable the code to return small structures in
13507         registers for FreeBSD as well. Fixes bug #80278.
13508         * aot-runtime.c: Include sys/wait.h for WEXITSTATUS/WIFEXITED.
13509
13510 Mon Dec 18 19:47:17 CET 2006 Paolo Molaro <lupus@ximian.com>
13511
13512         * mini-x86.c: align the stack when calling the profiler
13513         function instrumenting the prolog (on OSX).
13514
13515 Thu Dec 14 15:22:43 CET 2006 Paolo Molaro <lupus@ximian.com>
13516
13517         * mini.c: emit a break opcode where Debugger.Break () is called.
13518
13519 2006-12-13  Miguel de Icaza  <miguel@novell.com>
13520
13521         * mini.c (mono_method_to_ir): Provide useful information on this
13522         assert, to prevent others from debugging like I did.
13523
13524 Tue Dec 12 17:01:38 CET 2006 Paolo Molaro <lupus@ximian.com>
13525
13526         * mini.c: enable code which was incorrectly commented
13527         (bug #80235).
13528
13529 Tue Dec 12 16:28:15 CET 2006 Paolo Molaro <lupus@ximian.com>
13530
13531         * mini-x86.c: enable on OSX, too, the code to return small
13532         structures in registers.
13533
13534 Mon Dec 11 19:22:35 CET 2006 Paolo Molaro <lupus@ximian.com>
13535
13536         * mini-x86.c: remove the use of the dynamic code manager here, too.
13537
13538 Mon Dec 11 19:08:33 CET 2006 Paolo Molaro <lupus@ximian.com>
13539
13540         * mini.h, debug-debugger.c, tramp-*.c: fixed 
13541         mono_debugger_create_notification_function() to use
13542         mono_global_codeman_reserve () instead of a dynamic code manager.
13543
13544 Tue Dec 5 17:54:50 CET 2006 Paolo Molaro <lupus@ximian.com>
13545
13546         * mini.c, jit-icalls.h, jit-icalls.c: remove the 
13547         ves_array_element_address() jit icall and use a generated
13548         managed method instead (which is about 4 times faster for a rank 3
13549         array access).
13550
13551 2006-11-29  Mark Mason  <mason@broadcom.com>
13552
13553         * basic-calls.cs: additional tests for passing
13554         structures as function arguments.
13555
13556 2006-11-29  Mark Mason  <mason@broadcom.com>
13557
13558         * mini-mips.h: disable custom exception handling
13559         * mini-mips.c: throw/rethrow should use jalr to call
13560         exception stubs.  Fixed bug with passing structures
13561         by value. More support for tracing floating point
13562         functions.
13563
13564 Wed Nov 29 20:28:17 CET 2006 Paolo Molaro <lupus@ximian.com>
13565
13566         * mini.c: fixed typo in the soft-float ldind.r4 handling
13567         (bug #80086).
13568
13569 Wed Nov 29 11:33:03 CET 2006 Paolo Molaro <lupus@ximian.com>
13570
13571         * mini.c, mini.h, driver.c: added --runtime command line
13572         option to select a different runtime than the autodetected one.
13573         * jit.h: added API for embedders to initialize with a specific
13574         runtime version.
13575
13576 Tue Nov 28 21:24:55 CET 2006 Paolo Molaro <lupus@ximian.com>
13577
13578         * mini.c: handle also boxing of r4 values (bug #80024).
13579
13580 Tue Nov 28 19:45:44 CET 2006 Paolo Molaro <lupus@ximian.com>
13581
13582         * mini-ppc.c: force indirect calls until we reserve
13583         enough address space for all the generated code.
13584
13585 Tue Nov 28 20:04:34 GMT 2006 Paolo Molaro <lupus@ximian.com>
13586
13587         * exceptions-arm.c: workaround bugs in the libc definition
13588         of struct ucontext.
13589
13590 Mon Nov 27 15:13:41 CET 2006 Paolo Molaro <lupus@ximian.com>
13591
13592         * inssel.brg: fixes from me and Mark Mason.
13593
13594 2006-11-23  Dick Porter  <dick@ximian.com>
13595
13596         * wapihandles.c (mini_wapi_seminfo): No need to adjust the counter
13597         semaphore display now we've fixed the initial value
13598
13599 Wed Nov 22 11:04:37 CET 2006 Paolo Molaro <lupus@ximian.com>
13600
13601         * inssel.brg: partially revert the last change to fix the build.
13602
13603 2006-11-21  Mark Mason  <mason@broadcom.com>
13604
13605         * inssel.brg: Add and use compare-and-branch macros to support
13606         architectures that do not have condition code registers (ie. MIPS).
13607         * *-mips.{c,brg,md}: Fix copyright statements
13608
13609 2006-11-20  Mark Mason  <mason@broadcom.com>
13610
13611         * Makefile.am: remove mini-codegen.c from list of MIPS sources
13612         * mini.c: Allow GET_CONTEXT to be specified by the arch port
13613         * mini.h: Added declaration for mono_print_ins()
13614         * mini-codegen.c: added ins_spec initializer for MIPS
13615         * mini-codegen.c (mono_call_inst_add_outarg_reg): added asserts for
13616         vreg to be virtual and hreg to be non-virtual.
13617         * mini-codegen.c (mono_spillvar_offset): assert if MIPS - spilling
13618         is not yet working/implemented correctly.
13619         * mini-codegen.c (print_ins): rename to mono_print_ins(), make
13620         non-static, fixup calls to print_ins() from other parts in the file.
13621
13622 2006-11-20  Mark Mason  <mason@broadcom.com>
13623
13624         * basic-calls.cs: added tests for passing structures as arguments
13625         to calls.
13626
13627 Mon Nov 20 19:40:11 CET 2006 Paolo Molaro <lupus@ximian.com>
13628
13629         * inssel-long32.brg: optimize signed division by power of two.
13630
13631 Mon Nov 20 17:37:58 CET 2006 Paolo Molaro <lupus@ximian.com>
13632
13633         * mini-arm.c: added support for interworking with thumb code
13634         (mono must be still be built using the ARM instruction encoding).
13635
13636 2006-11-19  Miguel de Icaza  <miguel@novell.com>
13637
13638         * mini.c (type_from_op): Separate the conditions for OP_EQ as the
13639         verifier has different rules for it.   Fixes a few verifier issues
13640         in the test suite.
13641
13642         * mini-exceptions.c (mono_handle_native_sigsegv): Put the message
13643         at the end, so people know what happened.
13644
13645 Thu Nov 16 14:07:18 CET 2006 Paolo Molaro <lupus@ximian.com>
13646
13647         * brach-opts.c: in optimize_exception_target() make sure we
13648         are in a catch clause (fixes bug #79871).
13649
13650 Thu Nov 16 12:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
13651
13652         * jit-icalls.c, jit-icalls.h, mini-arm.c, mini.c:
13653         more soft-float support fixes.
13654
13655 Wed Nov 15 18:45:47 GMT 2006 Paolo Molaro <lupus@ximian.com>
13656
13657         * mini-arm.c, inssel-arm.brg: ABI fix for longs and doubles
13658         that are passed half on the stack and half in registers.
13659
13660 Wed Nov 15 17:00:27 CET 2006 Paolo Molaro <lupus@ximian.com>
13661
13662         * mini-ops.h, mini-arch.h, helpers.c, Makefile.am:
13663         more mips integration work from Mark E Mason 
13664         <mark.e.mason@broadcom.com>.
13665
13666 Wed Nov 15 16:34:03 CET 2006 Paolo Molaro <lupus@ximian.com>
13667
13668         * exceptions-mips.c, inssel-mips.brg, mini-mips.h,
13669         cpu-mips.md, inssel-long32-mips.brg, mini-mips.c,
13670         tramp-mips.c: added sources for the mips port, not
13671         integrated in the build yet. Contributed by
13672         Mark E Mason <mark.e.mason@broadcom.com>.
13673
13674 2006-11-14  Neale Ferguson <neale@sinenomine.net>
13675
13676         * mini-s390[x].c (is_regsize_var): Support PTR/FNPTR too.
13677
13678 Tue Nov 14 16:06:37 CET 2006 Paolo Molaro <lupus@ximian.com>
13679
13680         * Makefile.am, inssel-float.brg, inssel-softfloat.brg:
13681         put the soft-float rules in its own file since it seems to
13682         break s390 compilation.
13683
13684 Mon Nov 13 15:54:38 CET 2006 Paolo Molaro <lupus@ximian.com>
13685
13686         * mini-arm.c: fixed wrnings.
13687
13688 Fri Nov 10 19:18:32 CET 2006 Paolo Molaro <lupus@ximian.com>
13689
13690         * mini-arm.c, mini-arm.h, cpu-arm.md, inssel-float.brg,
13691         inssel-arm.brg: ARM support for soft-float.
13692
13693 Fri Nov 10 18:38:15 CET 2006 Paolo Molaro <lupus@ximian.com>
13694
13695         * mini.c, jit-icalls.c, jit-icalls.h: added first cut at handling
13696         loads and stores of 32 bit fp values.
13697
13698 2006-11-10  Zoltan Varga  <vargaz@gmail.com>
13699
13700         * mini-sparc.c (is_regsize_var): Support PTR/FNPTR too.
13701
13702         * tramp-sparc.c (mono_arch_patch_callsite): Fix this function so it actually
13703         works. Fixes #79852 and #79463.
13704
13705 Thu Nov 9 16:56:13 CET 2006 Paolo Molaro <lupus@ximian.com>
13706
13707         * mini.c, mini-codegen.c, jit-icalls.c, jit-icalls.h:
13708         more soft-float support WIP and fixes.
13709
13710 Wed Nov 8 16:40:02 CET 2006 Paolo Molaro <lupus@ximian.com>
13711
13712         * mini-arm.c: some VFP updates.
13713
13714 Tue Nov 7 19:45:51 CET 2006 Paolo Molaro <lupus@ximian.com>
13715
13716         * mini-exceptions.c: 0 is a valid local var offset in some
13717         architectures, don't assert (bug #78508).
13718
13719 Tue Nov 7 18:17:52 GMT 2006 Paolo Molaro <lupus@ximian.com>
13720
13721         * exceptions-arm.c: fixed off by one error in stack walk code.
13722
13723 Tue Nov 7 11:27:26 CET 2006 Paolo Molaro <lupus@ximian.com>
13724
13725         * mini.h, mini.c: more precise tracking of type load exceptions.
13726
13727 2006-11-03  Robert Jordan  <robertj@gmx.net>
13728
13729         * Makefile.am: [WIN32] Add monow.exe target.
13730         * driver.c: [WIN32] Don't detach the console when debugging.
13731         Fixes bug #79797.
13732         
13733 2006-10-30  Miguel de Icaza  <miguel@novell.com>
13734
13735         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Eliminate warning.
13736
13737 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
13738
13739         * aot-compiler.c (emit_method_info): Add a case missed earlier.
13740
13741         * driver.c (mini_regression): Fix --regression with AOT.
13742
13743         * aot-compiler.c (emit_method_info): Fix AOT on amd64.
13744
13745 2006-10-17  Zoltan Varga  <vargaz@gmail.com>
13746
13747         * mini.c (GET_CONTEXT): Correct the definition of this for sparc/linux.
13748
13749         * mini-sparc.h: Don't use sigaction on sparc/linux.
13750
13751         * exceptions-sparc.c: Call mono_arch_flush_icache () in a couple of places.
13752
13753         * mini-sparc.c (mono_sparc_flushw): Call mono_arch_flush_icache ().
13754
13755         * mini-exceptions.c: Add proper include files for getpid ().
13756
13757 2006-10-16  Zoltan Varga  <vargaz@gmail.com>
13758
13759         * aot-runtime.c (mono_aot_get_method): Change this to return the native code
13760         address instead of a MonoJitInfo* to avoid decoding the exception info for the
13761         method.
13762
13763         * aot-runtime.c aot-compiler.c: Use uint16 instead of uint32 entries in the
13764         name cache to reduce its size.
13765
13766         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
13767
13768 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
13769
13770         * mini-x86.c: Save/restore the current LMF structure more efficiently using
13771         the mono_lmf TLS variable.
13772
13773         * exceptions-x86.c (mono_arch_find_jit_info): Only access lmf->method in 
13774         trampoline lmf frames.  
13775
13776         * mini-sparc.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Define this on sparc as well.
13777
13778 2006-10-14  Zoltan Varga  <vargaz@gmail.com>
13779
13780         * mini-amd64.c: Save/restore the current LMF structure more efficiently using
13781         the mono_lmf TLS variable.
13782
13783         * mini-exceptions.c: Access the LMF structure through accessors.
13784
13785         * mini.c: Allow the backends the option for storing the lmf in a dedicated TLS 
13786         variable instead of in jit_tls->lmf.
13787
13788         * mini-x86.c mini-amd64.c: Update after lmf->lmf_addr name change.
13789         
13790         * exceptions-amd64.c (mono_arch_find_jit_info): Only access lmf->method in 
13791         trampoline lmf frames.
13792
13793         * mini-amd64.c (mono_arch_emit_prolog): Do not set lmf->method as it is not needed.
13794
13795 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
13796
13797        * mini.c trace.c mini-x86.c: Revert these too.
13798         
13799        * mini.c trace.c mini-x86.c: Remove warning workarounds after the mono_type_size ()
13800        signature change.
13801
13802 Tue Oct 10 11:35:20 CEST 2006 Paolo Molaro <lupus@ximian.com>
13803
13804         * genmdesc.c: removed now dead code.
13805
13806 2006-10-09  Robert Jordan <robertj@gmx.net>
13807
13808         * mini.c: Disable the CrashReporter on MacOS X; Fixes #74869
13809
13810 Mon Oct 9 17:06:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
13811
13812         * mini.h: do not leave gaps in the opcode values.
13813
13814 Mon Oct 9 16:08:51 CEST 2006 Paolo Molaro <lupus@ximian.com>
13815
13816         * jit-icalls.h: flag functions as internal here, too.
13817
13818 Mon Oct 9 15:58:18 CEST 2006 Paolo Molaro <lupus@ximian.com>
13819
13820         * mini.h, aliasing.h, declsec.h, regalloc.h, trace.h: mark internal
13821         functions with the internal attribute.
13822
13823 Mon Oct 9 15:52:45 CEST 2006 Paolo Molaro <lupus@ximian.com>
13824
13825         * aot-compiler.c: fclose the file descriptor in the profile read loop.
13826
13827 Fri Oct 6 16:01:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
13828
13829         * mini.c, jit-icalls.c, inssel-float.brg: beginnings of support
13830         for soft-float.
13831
13832 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
13833
13834         * mini-x86.c (emit_load_volatile_arguments): New function to handle arguments of
13835         tail calls as on other platforms.
13836
13837         * mini.c (mono_method_to_ir): Fix a few tailcall problems. Fixes #79557.
13838
13839         * iltests.il: Add a few tailcall tests.
13840
13841 Tue Oct 3 16:33:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
13842
13843         * driver.c: fix loop for old compilers (bug #79521).
13844
13845 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
13846
13847         * mini-exceptions.c (ves_icall_get_trace): Remove debug printf.
13848
13849         * aot-runtime.c (mono_aot_get_class_from_name): Avoid a memory allocation.
13850
13851         * aot-compiler.c: Add a new option 'metadata-only' to only emit the cached
13852         metadata without any code.
13853
13854         * mini-exceptions.c (mono_handle_native_sigsegv): Add some code to print out
13855         more precise debugging information using gdb.
13856
13857 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
13858
13859         * inssel-ia64.brg: Make the helper methods static.
13860
13861 Thu Sep 28 16:40:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
13862
13863         * inssel-x86.brg: make the helper methods static.
13864
13865 Thu Sep 28 16:31:32 CEST 2006 Paolo Molaro <lupus@ximian.com>
13866
13867         * inssel-amd64.brg, mini-amd64.c: small cleanup, use inst_call.
13868
13869 Thu Sep 28 15:36:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
13870
13871         * mini.c: updates for monoburg changes.
13872         * inssel.brg: make a few helper functions static as they should.
13873
13874 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
13875
13876         * Makefile.am: Move mini-codegen.c to common_sources.
13877
13878 Wed Sep 27 15:07:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
13879
13880         * mini.h: instroduce inst_call in MonoInst for use in OUTARG
13881         instructions.
13882         * Makefile.am, cpu-g4.md, inssel-ppc.brg, mini-codegen.c, mini-ppc.c,
13883         mini-ppc.h: port to use the common local register allocator.
13884
13885 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
13886
13887         * mini.h: Remove the comment too then.
13888
13889 Tue Sep 26 14:02:58 CEST 2006 Paolo Molaro <lupus@ximian.com>
13890
13891         * mini.h: put back backend.data which is to be used shortly and
13892         doesn't increase the size of MonoInst. If any 64 bit arch aligned
13893         pointers on 4 byte boundaries it'd have much bigger issues running
13894         and you can ifdef it out anyway.
13895
13896 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
13897
13898         * mini.h (MonoInst): Remove backend.data field since it is unused and increases
13899         MonoInst size by 4 bytes on 64 bit machines.
13900
13901 Tue Sep 26 11:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
13902
13903         * *.{c,h,brg}: long due removal of the unused field in MonoInst and
13904         replacement with more meaningful field names. Arch maintainers, please
13905         check the assigned names are good enough for your arch.
13906
13907 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
13908
13909         * cpu-ia64.md mini-ia64.c inssel-ia64.brg mini-ops.h: Get rid of the 
13910         OP_IA64_FETCHADD opcodes, use OP_ATOMIC_ADD_IMM_NEW opcodes instead.
13911
13912 Mon Sep 25 11:05:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
13913
13914         * mini.h, driver.c, optflags-def.h, Makefile.am: reduce runtime
13915         relocations and memory requirements, put the optimization flags
13916         definitions in their own file.
13917
13918 2006-09-24  Zoltan Varga  <vargaz@gmail.com>
13919
13920         * jit-icalls.c (mono_helper_stelem_ref): Remove this unused helper function.
13921
13922         * mini.c (mini_init): Remove reference to mono_helper_stelem_ref.
13923
13924 2006-09-22  Zoltan Varga  <vargaz@gmail.com>
13925
13926         * mini-amd64.c (add_valuetype): Fix an uninitialized memory issue.
13927
13928 Thu Sep 21 19:06:09 CEST 2006 Paolo Molaro <lupus@ximian.com>
13929
13930         * inssel.brg: use the correct function to get the size of an item
13931         in an array, given an element class.
13932         * aot-compiler.c: do not access class->class_size directly.
13933
13934 Thu Sep 21 12:10:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
13935
13936         * mini.h, debug-mini.c: added a debugging function to print
13937         info about local variables and arguments in a jitted method.
13938
13939 2006-09-20  Zoltan Varga  <vargaz@gmail.com>
13940
13941         * mini-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
13942
13943         * exceptions-ia64.c: Fix some problems reported by Bill Seurer <seurer@us.ibm.com>.
13944
13945 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
13946
13947         * mini-ia64.c (mono_arch_call_opcode): Avoid using the same loop index in the
13948         inner and outer loops when passing vtypes.
13949
13950 Tue Sep 19 17:53:40 CEST 2006 Paolo Molaro <lupus@ximian.com>
13951
13952         * mini-ppc.c: take into account the cpu errata for cache flushing
13953         which caused some random errors (bug #79381).
13954
13955 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
13956
13957         * mini-amd64.c (mono_arch_emit_exceptions): Emit the call to 
13958         mono_arch_throw_corlib_exception using emit_call () too. Fixes #79271.
13959
13960 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
13961
13962         * aot-runtime.c (load_aot_module): Return immeditely if the AOT module was already
13963         loaded.
13964
13965         * exceptions-amd64.c (gregs_from_ucontext): Apply another patch from the
13966         freebsd ports tree.
13967
13968         * mini-amd64.c (emit_call): Avoid near calls on freebsd.
13969         (mono_arch_patch_code): Remove the unused handling of MONO_PATCH_INFO_CLASS_INIT.
13970
13971         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix check for 32 bitness of
13972         displacement.
13973
13974 2006-09-13  Zoltan Varga  <vargaz@gmail.com>
13975
13976         * aot-runtime.c (load_aot_module_from_cache): Fix PPC build.
13977
13978 2006-09-12  Zoltan Varga  <vargaz@gmail.com>
13979
13980         * mini.c (UNVERIFIED): Add a 'break-on-unverified' MONO_DEBUG option so this 
13981         macro does not have to be changed during debugging.
13982
13983         * 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>.
13984
13985         * cpu-pentium.md: Rename this to cpu-x86.md for consistency with other platforms.
13986
13987         * Makefile.am mini-x86.c mini-codegen.c: Rename pentium_desc to x86_desc.
13988         
13989         * mini.c (mini_get_ldelema_ins): Allow ldelema2d optimization if 
13990         MONO_ARCH_NO_EMULATE_MUL is defined.
13991
13992         * mini-ia64.h (MONO_ARCH_CALLEE_FREGS): Reserve f33 for use by instructions.
13993
13994         * mini-ia64.h: Define MONO_ARCH_NO_EMULATE_MUL.
13995
13996         * mini-ia64.c: Implement CEE_MUL based on gcc emitted code.
13997
13998         * mini-ia64.c (mono_arch_lowering_pass): Optimize store_membase_imm with offset==0.
13999         
14000 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
14001
14002         * mini-x86.h mini-amd64.h mini-exceptions.c: Move the bsd specific MAP_ANON
14003         stuff to mini-exceptions.c where it is used.
14004
14005         * mini-sparc.c (mono_arch_setup_jit_tls_data): Remove the duplicate altstack
14006         setup code, the real one is in mini-exceptions.c.
14007
14008         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Move all dependencies on the
14009         layout of ucontext_t to helper functions in exceptions-amd64.c, as on x86. Add
14010         some changes from the freebsd ports tree.
14011
14012         * mini-amd64.h exceptions-amd64.c: Fix the amd64 build. Get rid of the SC_
14013         constants.
14014         
14015         * mini-amd64.h: Freebsd has MAP_ANON instead of MAP_ANONYMOUS.
14016
14017 Mon Sep 11 13:18:55 CEST 2006 Paolo Molaro <lupus@ximian.com>
14018
14019         * mini.c: on Linux, check for /proc to be mounted
14020         (bug# 79351, novell bug#201204).
14021
14022 Mon Sep 11 13:10:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
14023
14024         * mini.c: handle cases where pthread_attr_getstack() behaves
14025         incorrectly (bug #78096).
14026
14027 Mon Sep 11 11:31:10 BST 2006 Paolo Molaro <lupus@ximian.com>
14028
14029         * mini-arm.c: support larger stack frames (bug #79272).
14030
14031 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
14032
14033         * aot-runtime.c (mono_aot_get_class_from_name): Remove a debug printf.
14034
14035         * aot-compiler.c: Add a hash table to the AOT file mapping class names to typedef 
14036         tokens.
14037
14038         * aot-runtime.c (mono_aot_get_class_from_name): New function used by 
14039         mono_class_from_name () to find a class from its name.
14040
14041         * mini.c (mini_init): Register mono_aot_get_class_from_name () with the runtime.
14042
14043 2006-09-07  Zoltan Varga  <vargaz@gmail.com>
14044
14045         * mini-amd64.c (emit_call): Avoid strstr () call if possible.
14046
14047 2006-09-05  Kornel Pal  <kornelpal@gmail.com>
14048
14049         * Makefile.am: Renamed mono-1.dll to mono.dll. (-avoid-version)
14050
14051 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
14052
14053         * mini.c (mono_icall_get_wrapper): Fix a race condition on initializing
14054         callinfo->trampoline.
14055
14056         * mini-amd64.c (emit_call): Special case calls to the vararg array icalls. Hopefully
14057         fixes #79271.
14058         (mono_arch_patch_code): Add some debug code to help track down similar failures in the
14059         future.
14060
14061 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
14062
14063         * aot-runtime.c (mono_aot_plt_resolve): Add an assert.
14064
14065 2006-09-02  Zoltan Varga  <vargaz@gmail.com>
14066
14067         * tramp-x86.c (mono_arch_create_specific_trampoline): Don't increase
14068         stats.method_trampolines, it is already done by the generic trampoline code.
14069
14070         * tramp-amd64.c (mono_arch_create_specific_trampoline): Ditto.
14071         
14072 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
14073
14074         * mini.c: Remove some references to mono_compile_aot, and use cfg->compile_aot instead.
14075
14076         * aot-runtime.c: Add some tweaks to the MONO_AOT_CACHE functionality.
14077
14078         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix a FIXME.
14079
14080         * mini.c (print_jit_stats): Print mscorlib mempool size too.
14081         
14082         * mini.c (print_jit_stats): Print new stats.
14083
14084         * *-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
14085
14086 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
14087
14088         * mini.c (mini_get_ldelema_ins): Fix verifier error when calling
14089         Address on two dimensional arrays. Fixes #78729.
14090
14091         * mini.h (MonoCompile): Add a 'skip_visibility' field.
14092
14093         * mini.c (method_to_ir): Disable visibility checks if skip_visibility is set on
14094         a method.
14095
14096         * mini-amd64.c (mono_arch_emit_exceptions): Fix assertion introduced by the last change.
14097
14098         * mini.c (mono_runtime_cleanup_handlers): Clean up signal handlers on unix. Fixes
14099         #79130.
14100         
14101         * mini.c (handle_array_new): Applied patch from "briaeros007". Fix
14102         a race condition.
14103         (mini_get_ldelema_ins): Ditto.
14104
14105 2006-08-30  Zoltan Varga  <vargaz@gmail.com>
14106
14107         * mini-amd64.c (mono_arch_emit_exceptions): Align fp constants to 16 bytes.
14108         (mono_arch_output_basic_block): Avoid unaligned accesses in FNEG implementation. 
14109         Fixes #79213.
14110
14111 2006-08-29 Neale Ferguson <neale@sinenomine.net>
14112
14113         * mini-s390.c, mini-s390x.c: Fix VARARG case processing with 0 arguments. Add
14114         mono_arch_get_patch_offset as a dummy entry point to allow successful link. 
14115
14116         * exceptions-s390x.c: Cosmetic change.
14117
14118         * tramp-s390.c: Fix warning.
14119
14120         * cpu-s390.md: Correct length of mul_imm.
14121
14122 Wed Aug 23 19:24:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
14123
14124         * aot-compiler.c: added binary writer with ELF backend
14125         implementation (only on Linux/x86 for now).
14126
14127 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
14128
14129         * Makefile.am: Don't run net 2.0 AOT tests.
14130
14131         * aot-compiler.c (compile_method): Skip methods with tail calls as well.
14132         (mono_compile_assembly): Skip net 2.0 assemblies as well.
14133
14134         * aot-runtime.c (load_patch_info): Fix an uninitialized memory error.
14135
14136 Fri Aug 18 19:38:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
14137
14138         * aot-compiler.c: simplified and refactored the asm-writing code
14139         to allow different backends.
14140
14141 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
14142
14143         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
14144
14145         * aot-compiler.c aot-runtime.c: Reorg the GOT slot allocation code a 
14146         little. Share patches of type TYPE_FROM_HANDLE as well.
14147
14148         * mini.c (mono_patch_info_equal): New helper function.
14149         (mono_patch_info_hash): Ditto.
14150
14151         * aot-compiler.c (emit_method_code): Fix s390 build.
14152
14153         * mini.c (mono_allocate_stack_slots_full): Fix yet another place where byref
14154         is not handled because it is stored as a flag and not as a type ctor. Fixes
14155         #79016.
14156
14157 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
14158
14159         * aot-compiler.c: Fix computation of GOT slot statistics.
14160         
14161         * aot-compiler.c aot-runtime.c: Implement sharing of GOT slots for classes/fields.
14162         Also remove support for not PIC AOT.
14163
14164         * mini.h: Bump AOT file format version.
14165
14166         * objects.cs: Add a test for #78990.
14167
14168         * mini-x86.c (mono_arch_output_basic_block): Applied patch from Peter Dettman
14169         (peter.dettman@iinet.net.au). Fixes #79087.
14170
14171         * basic-long.cs: Add a test for the above.
14172
14173 2006-08-16  Zoltan Varga  <vargaz@gmail.com>
14174
14175         * aot-compiler.c (get_got_offset): Add a cache for GOT entries, not yet used.
14176         
14177         * aot-compiler.c (get_plt_index): Add a cache for wrappers too. Simplify the
14178         code somewhat.
14179
14180 2006-08-15  Zoltan Varga  <vargaz@gmail.com>
14181
14182         * mini.c (mini_init): Fix registration of idiv/imul opcodes which can throw
14183         exceptions.
14184
14185 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
14186
14187         * mini.c: Don't verify COM proxy invoke calls
14188         
14189
14190 2006-08-10  Dick Porter  <dick@ximian.com>
14191
14192         * wapihandles.c (mini_wapi_seminfo): More info, to help track down
14193         which process is holding semaphores locked.
14194
14195 2006-08-08  Zoltan Varga  <vargaz@gmail.com>
14196
14197         * mini-ia64.c mini-amd64.c: Fix #79027.
14198
14199         * mini-sparc.c (mono_arch_call_opcode): Fix the previous patch.
14200
14201         * mini-sparc.c (mono_arch_call_opcode): Fix #79027.
14202
14203         * mini-x86.c (mono_arch_call_opcode): Handle the case where there are no
14204         implicit arguments in a vararg call. Fixes #79027.
14205
14206 2006-08-07  Zoltan Varga  <vargaz@freemail.hu>
14207
14208         * mini.c (mono_get_element_address_signature): Use CDECL calling convention on windows. Fixes #78969.
14209         (mono_get_array_new_va_signature): Ditto.
14210
14211 2006-08-05  Zoltan Varga  <vargaz@gmail.com>
14212
14213         * aot-runtime.c: Call init_plt lazily.
14214
14215         * inssel-long.brg: Fix unsigned long->int conversion.
14216
14217         * aot-runtime.c (init_plt): Remove a redundant make_writable () call.
14218
14219         * aot-compiler.c aot-runtime.c: Reorganize the file structure in the amd64 case so
14220         that most data is now in the .rss/.data section.
14221
14222 2006-08-04  Zoltan Varga  <vargaz@gmail.com>
14223
14224         * aot-compiler.c: Correct the computation of the 'direct-calls' statistic.      
14225
14226         * aot-compiler.c: Print the number of methods without GOT slots as a statistics.
14227
14228         * aot-compiler.c aot-runtime.c tramp-amd64.c: Resurrect amd64 AOT support.
14229
14230         * tramp-amd64.c (mono_arch_patch_callsite): Fix a warning.
14231
14232         * jit-icalls.c (mono_helper_compile_generic_method): Unbox vtypes since this is a
14233         virtual call. Fixes #79010.
14234
14235         * mini.c (mono_method_to_ir): Pass an additional out arg to compile_generic_method 
14236         and use the result as the this argument in the real call.
14237
14238         * generics.2.cs: Add a new test for #79010.
14239         
14240 2006-08-03  Zoltan Varga  <vargaz@gmail.com>
14241
14242         * mini-x86.c: Fix a warning.
14243
14244         * aot-compiler.c: Add a bunch of statistics.
14245
14246         * mini.c (inline_method): Disable inlining in out-of-line bblocks.
14247
14248 2006-08-02  Zoltan Varga  <vargaz@gmail.com>
14249
14250         * mini-arch.h Makefile.am mini-ops.h mini-codegen.c: More alpha updates.
14251
14252 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
14253
14254         * 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>.
14255
14256 2006-07-13  Miguel de Icaza  <miguel@novell.com>
14257
14258         * mini.c (mono_method_to_ir): Obtain the original method in the
14259         CIL stream and use this to perform validation.
14260
14261         Fixed: #78816
14262
14263 2006-07-19  Zoltan Varga  <vargaz@gmail.com>
14264
14265         * mini-x86.c (mono_arch_get_argument_info): Fix a warning.
14266         (mono_arch_call_opcode): Ditto.
14267
14268         * mini.c (mono_method_to_ir): Clear ins_flag at the end of CEE_CALL. Fixes
14269         #78826.
14270
14271         * mini.c (mono_patch_info_dup_mp): New helper function.
14272         
14273         * aot-compiler.c (compile_method): Fix some of the memory allocated during
14274         compilation. Fixes #78827.
14275
14276 2006-07-18  Kornel Pal  <kornelpal@gmail.com>
14277
14278         * declsec.c: Use original security informations for
14279           MONO_WRAPPER_MANAGED_TO_MANAGED.
14280
14281 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
14282
14283         * mini.c: Allow Com Interop methods/classes and
14284         don't verify COM wrapper calls
14285         
14286
14287 2006-07-13  Zoltan Varga  <vargaz@gmail.com>
14288
14289         * inssel-long32.brg: Fix long->i4 checked conversion.
14290
14291         * exceptions.cs: Add a test for the above.
14292
14293 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
14294
14295         * mini-exceptions.c (mono_setup_altstack): Fix a memory leak.
14296
14297         * mini.c: Applied patch from Joachim Ante (joe@otee.dk). Fix some shutdown 
14298         leaks.
14299
14300         * helpers.c (mono_disassemble_code): Avoid using fixed temporary files. Fixes
14301         #78775.
14302
14303 2006-07-03  Zoltan Varga  <vargaz@gmail.com>
14304
14305         * mini.c: Fix solaris/x86 exception handling.
14306
14307         * Makefile.am: Get rid of $(ICU_LIBS).
14308
14309 2006-07-02  Zoltan Varga  <vargaz@gmail.com>
14310
14311         * mini-exceptions.c: Fix handling of unhandled SIGSEGV exceptions on ia64.
14312         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Use MONO_INIT_CONTEXT_FROM_CURRENT.
14313         (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): Ditto.
14314
14315         * mini-ia64.h (MONO_CONTEXT_SET_FUNC): New macro.
14316
14317         * mini-exceptions.c (mono_handle_native_sigsegv): Prevent infinite loops if
14318         this function causes a SIGSEGV.
14319
14320 2006-06-22  Zoltan Varga  <vargaz@gmail.com>
14321
14322         * mini.c: Remove unused solaris/x86 includes.
14323
14324 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
14325
14326         * jit.h: Add G_BEGIN_DECLS/G_END_DECLS.
14327
14328 2006-06-20  Jb Evain  <jbevain@gmail.com>
14329
14330         * cpu-g4.md: fix max length of start_handler instruction.
14331
14332 2006-06-20  Massimiliano Mantione  <massi@ximian.com>
14333         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78656.
14334
14335 2006-06-16  Massimiliano Mantione  <massi@ximian.com>
14336         * ssa.c: Fixed bug 78653 for SSA based deadce.
14337         * mini.h: added MONO_INST_DEFINITION_HAS_SIDE_EFFECTS flag go
14338         MonoInst.flags, used in SSA based deadce.
14339         * aliasing.c: Fixed bug 78653 for "fastpath" deadce.
14340         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78653.
14341
14342 Thu Jun 15 16:52:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
14343
14344         * tramp-ppc.c: don't use malloc () for trampoline code, sometimes
14345         it can end up using non executable memory on ppc64 systems
14346         running ppc32 userspace (fix from Johannes Berg).
14347
14348 2006-06-14  Dick Porter  <dick@ximian.com>
14349
14350         * wapihandles.c: Fix a bunch of signed/unsigned warnings from gcc
14351         4.1.1
14352
14353 2006-06-13  Massimiliano Mantione  <massi@ximian.com>
14354         * mini.c: Made so that inline is locally disabled if it would
14355         trigger a .cctor, because too many apps depend on this behavior
14356         (which seems to be also the one of the MS CLR).
14357
14358 2006-06-13  Zoltan Varga  <vargaz@gmail.com>
14359
14360         * mini-amd64.c (mono_emit_stack_alloc): Fix initialization of localloc'ed memory.
14361         No idea why this worked before.
14362
14363         * branch-opts.c (mono_branch_optimize_exception_target): Avoid branches
14364         which branch to outer exception clauses since they could skip the
14365         inner finally clauses. Fixes #78633.
14366
14367         * exceptions.cs: Add a test for the above.
14368
14369         * mini.c (merge_basic_blocks): Nullify the branch at the end of the first bb.
14370         Fixes #78629.
14371
14372         * iltests.il: Add a test for the above.
14373
14374 2006-06-12  Zoltan Varga  <vargaz@gmail.com>
14375
14376         * mini.c (remove_block_if_useless): Do not remove the bblock immediately
14377         after the end of a try bblock, to prevent asserts in mini_method_compile ().
14378
14379         * iltests.il: Add a test for the above.
14380
14381 2006-06-10  Zoltan Varga  <vargaz@gmail.com>
14382
14383         * mini-ia64.c (mono_arch_lowering_pass): Remove some code duplication.
14384         
14385         * mini-ia64.c inssel-ia64.brg: Implement the new net 2.0 Interlocked.Add
14386         methods as instrinsics.
14387
14388 2006-06-09  Wade Berrier <wberrier@novell.com>
14389
14390         * Makefile.am: Fix sources list for svn rename so that make dist succeeds
14391         (simple-cee-ops.h ssapre-mini-ops.h)
14392
14393 2006-06-09  Neale Ferguson <neale@sinenomine.net>
14394
14395         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on s390/s390x.
14396         * mini-s390x.c, mini-s390.c: Correct ATOMIC operations (incorrect register for CS
14397         instruction).
14398         * mini-s390x.h, mini-s390.h: Simplify MCONTEXT_GET_BP.
14399         * cpu-s390x.md: Fix max. length values for a couple of instructions.
14400
14401 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
14402
14403         * mini-exceptions.c: Minor fix for building mono in Visual Studio.
14404
14405 2006-06-08  Massimiliano Mantione  <massi@ximian.com>
14406
14407         * ssapre-cee-ops.h: Renamed as "simple-cee-ops.h"
14408         * simple-cee-ops.h: Was "ssapre-cee-ops.h" (renamed).
14409         * ssapre-mini-ops.h: Renamed as "simple-mini-ops.h"
14410         * simple-mini-ops.h: Was "ssapre-mini-ops.h" (renamed).
14411         * local-propagation.c: In mono_cprop_invalidate_values use a whitelist
14412         of opcodes, so that bug 78549 should not happen again.
14413         * ssapre.c: Updated to use the renamed files.
14414
14415 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
14416
14417         * mini-amd64.c (mono_arch_output_basic_block): Fix a wrong reg-reg move 
14418         in OP_ATOMIC_EXCHANGE_I4.
14419
14420 2006-06-07  Wade Berrier <wberrier@novell.com>
14421
14422         * tramp-s390.c: Fix s390 build (add missing pointer declarations 
14423         in mono_debugger_create_notification_function)
14424
14425 2006-06-06  Zoltan Varga  <vargaz@gmail.com>
14426
14427         * mini.c (NEW_AOTCONST_TOKEN): Fix amd64 build.
14428         
14429         * mini.c (type_from_stack_type): Disable some changes which do not
14430         seem to work.
14431
14432         * driver.c: Reenable opts.
14433
14434         * mini.h (MonoStackSlot): New structure to keep track of the verification state
14435         of the evaluation stack.
14436         
14437         * mini.h (MonoBasicBlock): Add a 'stack_state' field to keep track of the
14438         evaluation stack trace at entry to the bblock.
14439
14440         * mini.c (merge_stacks): New function to perform verification of stack merges.
14441         Turned off by default.
14442
14443         * mini.c: Fill up ins->klass for instructions whose type is STACK_OBJ or
14444         STACK_MP.
14445         
14446 2006-06-06  Massimiliano Mantione  <massi@ximian.com>
14447
14448         * local-propagation.c: Fixed bug 78549.
14449
14450 2006-06-04  Zoltan Varga  <vargaz@gmail.com>
14451
14452         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on ia64.
14453
14454 2006-06-02  Miguel de Icaza  <miguel@novell.com>
14455
14456         * tramp-sparc.c, tramp-ppc.c, tramp-s390.c, tramp-s390x.c,
14457         tramp-arm.c, tramp-ia64.c
14458         (mono_debugger_create_notification_function): Update signature to
14459         new signature and use new protocol for creating the notification
14460         function.  
14461
14462         Should fix the build.
14463
14464 2006-06-02  Geoff Norton  <gnorton@customerdna.com>
14465
14466         * exceptions-ppc.c (mono_jit_walk_stack)
14467         (ves_icall_get_frame_info): Fix the build
14468
14469 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
14470
14471         * mini.c (mono_set_defaults): Fix the handling of -O=-all.
14472
14473 2006-05-31  Raja R Harinath  <rharinath@novell.com>
14474
14475         * il2tests.2.il: New file for generics CIL tests.  Add test for
14476         #78019.
14477         * Makefile.am: Update.
14478
14479         Fix #78019
14480         * mini.c (mono_method_to_ir): Don't apply box+brtrue optimization
14481         to nullable types.
14482
14483 2006-05-30  Massimiliano Mantione  <massi@ximian.com>
14484
14485         * aliasing.c: Fixed bug 78311.
14486
14487 2006-05-29  Martin Baulig  <martin@ximian.com>
14488
14489         * mini-exceptions.c (mono_find_jit_info): When computing the
14490         native offset, check whether we're actually inside the method's
14491         code; call mono_debug_print_stack_frame() to format the frame.
14492         (ves_icall_System_Exception_get_trace): Call
14493         mono_debug_print_stack_frame() to format the stack frame.
14494         (ves_icall_get_trace): Update to the new debugging API.
14495         (mono_jit_walk_stack_from_ctx): Likewise.
14496         (ves_icall_get_frame_info): Likewise.
14497
14498         * mini.c (get_method_from_ip): Use the new debugging API.
14499         (mono_print_method_from_ip): Likewise.
14500
14501         * exceptions-ppc.c
14502         (mono_jit_walk_stack): Use the new debugging API.
14503         (ves_icall_get_frame_info): Likewise.   
14504
14505 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
14506
14507         * mini-amd64.c (mono_arch_output_basic_block): Fix MONO_PROFILE_COVERAGE.
14508
14509 2006-05-25  Massimiliano Mantione  <massi@ximian.com>
14510
14511         * mini.c: Added "limitator" to inline for debugging.
14512
14513 2006-05-24  Martin Baulig  <martin@ximian.com>
14514
14515         * debug-debugger.c (mono_debugger_init): Create a private,
14516         malloc()-based code manager for the notification function and
14517         intentionally leak it on exit.  This fixes the crash-on-exit race
14518         condition.
14519
14520         * tramp-amd64.c
14521         (mono_debugger_create_notification_function): Added
14522         `MonoCodeManager *' argument.
14523
14524         * tramp-x86.c
14525         (mono_debugger_create_notification_function): Added
14526         `MonoCodeManager *' argument.
14527
14528 2006-05-23  Massimiliano Mantione  <massi@ximian.com>
14529
14530         * aliasing.c: Fixed 64 bit issue.
14531         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
14532         default since all known bugs are fixed (one more time!).
14533
14534 Tue May 23 13:47:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
14535
14536         * mini.c: write barrier support.
14537
14538 2006-05-23  Martin Baulig  <martin@ximian.com>
14539
14540         * debug-debugger.c: Revert Paolo's change.  Add comment and #error
14541         check at the top of the file.
14542
14543 Sun May 21 12:22:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
14544
14545         * debug-debugger.c: fix the build. Again. Hopefully Martin will stop
14546         reverting changes without reason and without changelog entries.
14547
14548 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
14549
14550         * mini-sparc.c (mono_arch_output_basic_block): Add support for large stack offets
14551         to a few opcodes. Fixes #78439.
14552
14553         * mini-sparc.c: Rename mono_sparch_break () to mono_arch_break () to improve
14554         consistency with other archs.
14555
14556         * mini-ia64.c (mono_arch_emit_prolog): Remove debug stuff left in by mistake.
14557
14558 Wed May 17 18:07:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
14559
14560         * debug-debugger.c: fix the build.
14561
14562 2006-05-17  Martin Baulig  <martin@ximian.com>
14563
14564         * debug-debugger.c
14565         (debugger_thread_vtable): Moved here from ../metadata/threads.c.
14566         (debugger_init_threads): Formerly known as mono_debugger_init_threads().
14567         (debugger_finalize_threads): Formaly known as mono_debugger_finalize_threads().
14568         (debugger_attach): Call GC_mono_debugger_add_all_threads().
14569
14570 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
14571
14572         * mini.c (mini_init): Call pthread_attr_destroy () to fix a small memory leak.
14573
14574 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
14575
14576         * mini-x86.c (mono_arch_instrument_epilog): Fix handling of 
14577         MONO_TYPE_GENERICINST.
14578         
14579         * mini-amd64.c (mono_arch_instrument_epilog): Fix handling of 
14580         MONO_TYPE_GENERICINST.
14581
14582 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
14583
14584         * mini-x86.c (mono_arch_get_vcall_slot_addr): Add a missing call sequence. Fixes
14585         #78325.
14586
14587 2006-05-08  Zoltan Varga  <vargaz@gmail.com>
14588
14589         * mini.c (mono_create_jump_trampoline): Allocate MonoJitInfo from the domain
14590         mempool.
14591         (mono_jit_free_method): Remove the method from jump_trampoline_hash as well.
14592
14593 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
14594
14595         * mini.c (mini_cleanup): Applied patch from Joachim Ante (joe@otee.dk). Call
14596         mono_trace_cleanup ().
14597
14598         * iltests.il: Fix problem with the newly added test.
14599
14600         * mini-codegen.c (mono_local_regalloc): When changing the dreg of an instruction
14601         due to register constraints, free up the previous hreg. Fixes #78314.
14602
14603         * iltests.il: Add new test for #78314.  
14604
14605         * mini-x86.c (mono_arch_get_inst_for_method): Use OP_ATOMIC_ADD_NEW_I4 for
14606         Interlocked.Add. Fixes #78312.
14607
14608         * mini-amd64.c (mono_arch_get_inst_for_method): Ditto.
14609         
14610 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
14611
14612         * inssel.brg (mini_emit_virtual_call): Fix a warning.
14613
14614 2006-05-05  Martin Baulig  <martin@ximian.com>
14615
14616         * debug-mini.c (mono_debug_open_block): New method.
14617
14618         * mini-amd64.c
14619         (mono_arch_output_basic_block): Call mono_debug_open_block() at
14620         the beginning of each basic block.
14621
14622         * mini-x86.c
14623         (mono_arch_output_basic_block): Call mono_debug_open_block() at
14624         the beginning of each basic block.
14625
14626 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
14627
14628         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
14629         default until I understand why they break the build on amd64.
14630
14631 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
14632
14633         * mini.c (mini_cleanup): Call mono_cleanup ().
14634
14635         * mini.c (UNVERIFIED): New macro to make it easier to track down verification
14636         errors.
14637
14638 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
14639
14640         * aliasing.c: Fixed shameful cut&paste error that caused JIT crashes.
14641         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
14642         default since all known bugs are fixed, and I cannot reproduce bug
14643         77944... I'm asking Matt Hargett to test again after this commit.
14644
14645 2006-04-28  Massimiliano Mantione  <massi@ximian.com>
14646
14647         * mini-codegen.c: Fixed typo that thrashed inline.
14648
14649 2006-04-28  Zoltan Varga  <vargaz@gmail.com>
14650
14651         * dominators.c (compute_dominators): Avoid using a worklist since
14652         it is not correct in some cases. Instead, iterate over all bblocks as
14653         in the original paper. Fixes --compile-all -O=all System.Xml.dll.
14654
14655 2006-04-28  Miguel de Icaza  <miguel@novell.com>
14656
14657         * mini.c (mono_jit_compile_method_inner): Use
14658         mono_prepare_exception_from_error that resets the value
14659         internally.
14660
14661 2006-04-27  Miguel de Icaza  <miguel@novell.com>
14662
14663         * mini.c: Move the mini_loader_error_to_exception to metadata. 
14664         
14665 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
14666
14667         * aliasing.c: Fixed bug 78210.
14668
14669 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
14670
14671         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
14672         default until all their problems (or the ones they trigger) are fixed.
14673
14674 2006-04-26  Zoltan Varga  <vargaz@gmail.com>
14675
14676         * aot-runtime.c (mono_aot_get_method_from_token_inner): Fix the previous patch.
14677         
14678         * aot-runtime.c (mono_aot_get_method_from_token_inner): Mark the method
14679         as loaded only after resolving patches since that could invoke the same method.
14680
14681         * aot-runtime.c (mono_aot_plt_resolve): Fix ppc etc. builds.
14682
14683         * aot-compiler.c: Refactor mono_aot_compile_aot () into a bunch of smaller
14684         functions.
14685
14686         * aot-runtime.c (init_plt): Use a normal trampoline to transfer code to the
14687         AOT loader.
14688
14689         * aot-compiler.c (emit_plt): Pass the plt offset in %eax instead of on the
14690         stack.
14691
14692         * mini-trampolines.c (mono_aot_plt_trampoline): New trampoline to handle calls
14693         made from AOT code through the PLT table.
14694
14695         * mini-x86.h mini-amd64.h: Define MONO_ARCH_AOT_PLT_OFFSET_REG to the register
14696         holding the plt offset when a call is made to the aot plt trampoline.
14697         
14698 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
14699
14700         * aot-runtime.c aot-compiler.c cpu-amd64.md mini-amd64.c: Update parts of the 
14701         amd64 AOT support.
14702
14703         * Makefile.am (common_sources): Fix build breakage.
14704
14705         * aot-runtime.c aot-compiler.c: Reorganize the AOT code yet again: Make all
14706         calls through a jump table similar to the ELF PLT table. Avoid indirect calls for
14707         intra-assembly calls if possible.
14708         
14709         * tramp-*.c: Add new functions for patching/nullifying PLT entries.
14710
14711         * mini-trampolines.c: Handle PLT entries.
14712
14713         * mini.c: Avoid creating a GOT var for calls.
14714
14715         * jit-icalls.c (helper_ldstr_mscorlib): New helper function for loading strings
14716         from mscorlib code.
14717
14718         * jit-icalls.c (helper_newobj_mscorlib): New helper function to create objects
14719         from mscorlib code.
14720
14721         * mini.c (mono_method_to_ir): Use the new helper functions in throw bblocks in
14722         AOT code.       
14723
14724         * mini.h: Bump AOT file format version.
14725         
14726         * mini.c (get_basic_blocks): Fix the calculation of bb->out_of_line so it
14727         covers more cases.
14728
14729 2006-04-25  Martin Baulig  <martin@ximian.com>
14730
14731         * driver.c: Disable copyprop, consprop and inline when running
14732         inside the debugger.
14733
14734 2006-04-25  Martin Baulig  <martin@ximian.com>
14735
14736         * debug-debugger.h (MonoDebuggerInfo): Replaced `get_thread_id'
14737         with `get_current_thread' and added `detach'.
14738         (MonoDebuggerMetadataInfo): Added `thread_size',
14739         `thread_tid_offset', `thread_stack_ptr_offset' and
14740         `thread_end_stack_offset'.
14741
14742 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
14743
14744         * aot.c Makefile.am: Split aot.c into two new files aot-compiler.c and 
14745         aot-runtime.c.
14746
14747         * inssel.brg (mini_emit_load_intf_reg_vtable): Use a new kind of AOT constant
14748         ADJUSTED_IID to avoid the need for adjusting the IID at runtime.
14749
14750         * mini.h (MonoJumpInfoType): Add MONO_PATCH_INFO_ADJUSTED_IID.
14751
14752         * mini.c (mono_resolve_patch_target): Handle ADJUSTED_IID.
14753
14754         * aot.c: Add support for ADJUSTED_IID.  
14755
14756 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
14757
14758         * aot.c (emit_method_order): Don't align method_order_end.
14759
14760         * inssel.brg (stmt): Fix interface calls in AOT code which got broken by
14761         the interface ID changes.
14762
14763 2006-04-21  Dick Porter  <dick@ximian.com>
14764
14765         * mini.c (mini_thread_cleanup): Clear the JIT TLS data when
14766         cleaning up a thread.  Fixes the new part of bug 77470.
14767
14768 2006-04-20  Geoff Norton  <gnorton@customerdna.com>
14769
14770         * mini-ppc.c: Call mono_jit_thread_attach when transitioning a native
14771         to managed wrapper.
14772                      
14773 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
14774
14775         * mini.h mini.c: Remove mono_type_to_ldind/stind () which are now in marshal.c.
14776         
14777         * mini.c (mono_runtime_install_handlers): Handle SIGABRT similarly to
14778         SIGSEGV. Fixes #78072.
14779
14780         * mini-exceptions.c (mono_handle_native_sigsegv): Add a 'signal' argument,
14781         unregister our SIGABRT handler.
14782
14783 2006-04-19  Massimiliano Mantione  <massi@ximian.com>
14784
14785         * mini.c: Disabled inline where it can alter the call stack in a
14786         way visible from managed code.
14787         * driver.c: enabled inline,consprop,copyprop,treeprop,deadce by
14788         default.
14789
14790 2006-04-16  Zoltan Varga  <vargaz@gmail.com>
14791
14792         * mini-amd64.c (mono_arch_emit_prolog): Attach the thread to the runtime as it is done
14793         on other platforms. Fixes #78089.
14794
14795 2006-04-13  Martin Baulig  <martin@ximian.com>
14796
14797         * driver.c: Also check a `MONO_INSIDE_MDB' environment variable to
14798         determine whether we're inside the debugger.
14799
14800         * debug-debugger.h
14801         (MonoDebuggerMetadataInfo): Added all offsets from `MonoDefaults'.
14802
14803 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
14804
14805         * mini.c (mono_method_to_ir): Handle multiple LEAVE statements inside a single
14806         handler clauses. Fixes #78024.
14807
14808         * mini-sparc.c (mono_arch_output_basic_block): Handle large offsets
14809         in the CALL_MEMBASE opcodes. Fixes #78088.
14810         (mono_arch_get_vcall_slot_addr): Ditto.
14811
14812 2006-04-10  Martin Baulig  <martin@ximian.com>
14813
14814         * debug-debugger.c: The thread handling code has now been moved
14815         into ../metadata/threads.c.
14816
14817 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
14818
14819         * driver.c (mono_main): Fix --with-gc=none build.
14820
14821         * mini-codegen.c (mono_spillvar_offset): Improve alignment.
14822         (mono_spillvar_offset_float): Ditto.
14823         (mono_local_regalloc): Only do the OP_MOVE optimization if ins->dreg is a local
14824         hreg, not when its !global, since on ia64, there is a third category: stacked
14825         registers.      
14826
14827 Mon Apr 10 14:39:49 CEST 2006 Paolo Molaro <lupus@ximian.com>
14828
14829         * mini.c: set MonoInst->klass for load field address and a few other
14830         places.
14831
14832 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
14833
14834         * helpers.c (mono_disassemble_code): Emit debug info on amd64 as well.
14835
14836 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
14837
14838         * dominators.c (compute_dominators): Fix yet another bug which surfaced after
14839         the branch opt changes.
14840
14841 2006-04-06  Dick Porter  <dick@ximian.com>
14842
14843         * wapihandles.c (mini_wapi_semdel): Fix parameters in semctl () call.
14844         
14845         * wapihandles.c (mini_wapi_seminfo): 
14846         * driver.c (mono_main): Add semaphore info option
14847
14848 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
14849
14850         * dominators.c (compute_dominators): Fix a bug which surfaced after the recent
14851         branch optimization changes. Fixes #78009.
14852
14853 Wed Apr 5 16:40:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
14854
14855         * mini.c: ignore accessibility of methods in managed->native wrappers.
14856
14857 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
14858
14859         * mini.c (mini_cleanup): Call print_jit_stats () earlier since it accesses metadata.
14860         
14861         * mini.c (mini_cleanup): Free 'emul_opcode_map' as well.
14862
14863 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
14864
14865         * mini.c: Modify the branch optimizations to preserve the invariant that
14866         the entries inside the in_bb and out_bb arrays are unique.
14867         (mono_unlink_bblock): Avoid creation of new arrays.
14868
14869 2006-04-02  Zoltan Varga  <vargaz@gmail.com>
14870
14871         * mini.c (mono_unlink_bblock): Fix regression caused by previous
14872         change (#77992).
14873
14874 2006-04-01  Zoltan Varga  <vargaz@gmail.com>
14875
14876         * mini.c (optimize_branches): Remove the "optimizations" in
14877         the cbranch1/cbranch2 -> branch cases which were causing several
14878         problems in the past. Fixes #77986.
14879
14880 2006-03-31  Chris Toshok  <toshok@ximian.com>
14881
14882         * driver.c (DEFAULT_OPTIMIZATIONS): back out the new set of
14883         default optimizations :(
14884
14885 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
14886
14887         * inssel-x86.brg mini-codegen.c mini.c: Merge some changes/fixes from linear-il
14888         branch.
14889
14890 2006-03-31  Massimiliano Mantione  <massi@ximian.com>
14891
14892         * local-propagation.c: Added comments to structs and removed
14893         "Mono" prefixes from local tree mover types.
14894
14895 2006-03-30  Zoltan Varga  <vargaz@gmail.com>
14896
14897         * Makefile.am (arch_sources): Define this for each architecture so 
14898         libmono_la_SOURCES is defined in one place.
14899
14900 Wed Mar 29 20:51:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
14901
14902         * driver.c, wapihandles.c, Makefile.am: integrate the io-layer utils
14903         from handles/.
14904
14905 Wed Mar 29 17:16:57 CEST 2006 Paolo Molaro <lupus@ximian.com>
14906
14907         * driver.c: print the GC name supplied by configure.
14908
14909 2006-03-29  Massimiliano Mantione  <massi@ximian.com>
14910
14911         * local-propagation.c: Added tree mover, and moved here all the
14912         local propagation code from mini.c
14913         * mini.c: Added support for treeprop, and moved all the local
14914         propagation code to local-propagation.c
14915         * mini.h: Added support for treeprop
14916         * driver.c: Added support for treeprop, enabled consprop, copyprop,
14917         treeprop, inline and deadce by default
14918         * Makefile.am: Added local-propagation.c
14919
14920 2006-03-25  Zoltan Varga  <vargaz@gmail.com>
14921
14922         * exceptions-sparc.c: Applied patch from David S. Miller  <davem@sunset.davemloft.net>: Implement correct support for sparc/linux.
14923
14924 Fri Mar 24 20:07:19 CET 2006 Paolo Molaro <lupus@ximian.com>
14925
14926         * debug-debugger.c: make it compile without the Boehm GC.
14927
14928 Wed Mar 22 18:25:18 CET 2006 Paolo Molaro <lupus@ximian.com>
14929
14930         * mini.c: fixed issue with mismatch when an icall is registered
14931         with multiple names but same address.
14932
14933 Tue Mar 21 15:59:57 CET 2006 Paolo Molaro <lupus@ximian.com>
14934
14935         * declsec.c, mini-exceptions.c: use write barrier to set reference
14936         fields of managed objects.
14937
14938 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
14939
14940         * mini.c (mono_print_method_from_ip): Recognize JIT trampolines as well.
14941         (can_access_internals): Fix a warning.
14942
14943         * mini.c (print_method_from_ip): Rename this to 
14944         mono_print_method_from_ip so it gets exported.
14945
14946         * trace.c: Deal with strings inside StringBuilder's containing garbage
14947         and fix memory leaks. Fixes #77848.
14948
14949 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
14950
14951         * mini.c (mini_init): Disable the setting of GC_stackbottom on ia64. Hopefully
14952         fixes #77787.
14953
14954 2006-03-16 Neale Ferguson <neale@sinenomine.net>
14955         
14956         * mini-s390.c: Remove OP_X86_TEST_NULL.
14957
14958 Thu Mar 16 17:19:04 CET 2006 Paolo Molaro <lupus@ximian.com>
14959
14960         * mini.c: use the correct GetHashCode() for the moving collector.
14961
14962 2006-03-16  Massimiliano Mantione  <massi@ximian.com>
14963
14964         * liveness.c: Regalloc spill cost tuning.
14965
14966 2006-03-15 Neale Ferguson <neale@sinenomine.net>
14967         
14968         * mini-s390x.h: Correct S390_LONG macro.
14969
14970         * mini-s390x.c: Cleanup unused code.
14971
14972 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
14973
14974         * jit-icalls.h: New file.
14975
14976         * Makefile.am mini.c jit-icalls.c: Use a proper include file for the jit
14977         icalls and include that instead of including jit-icalls.c.
14978
14979         * mini-ppc.c (mono_arch_output_basic_block): Remove references to
14980         OP_X86 opcodes.
14981
14982 Tue Mar 14 20:23:53 CET 2006 Paolo Molaro <lupus@ximian.com>
14983
14984         * mini.c: when checking for member accessibility, also check for
14985         friend assemblies and for explicit interface implementations.
14986
14987 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
14988
14989         * mini-codegen.c (mono_local_regalloc): Remove incorrect g_free () calls.
14990
14991         * cpu-arm.md cpu-g4.md: Remove x86_ opcodes.
14992
14993         * mini-x86.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
14994         common cases are done first.    
14995
14996         * mini-ops.h: Only define platform specific opcodes on the given platform.
14997
14998         * mini.h regalloc.h mini-codegen.c: Merge optimizations from the linear-il
14999         branch.
15000         
15001 2006-03-14  Martin Baulig  <martin@ximian.com>
15002
15003         Revert Paolo's change from r57348:
15004
15005         * mini.h: don't use gboolean for bitfields.
15006         * mini.c: verifier changes for fields and methods accessibility.
15007
15008 2006-03-13  Neale Ferguson <neale@sinenomine.net>
15009
15010         * mini-s390.h, mini-s390x.h: Fix calls to mono_call_inst_add_outarg_reg.
15011
15012         * mini-s390x.c: Fix conv_r_un.
15013
15014         * cpu-s390, cpu-s390x.md: Fix lengths.
15015
15016 Sun Mar 12 17:31:22 CET 2006 Paolo Molaro <lupus@ximian.com>
15017
15018         * mini.c: nested types have access to all the nesting
15019         levels, not just the enclosing types.
15020
15021 Sun Mar 12 16:23:11 CET 2006 Paolo Molaro <lupus@ximian.com>
15022
15023         * mini.c: added a few more verification checks.
15024
15025 2006-03-12  Zoltan Varga  <vargaz@gmail.com>
15026
15027         * liveness.c: Merge optimizations from the linear-il branch.
15028
15029 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
15030
15031         * mini-ia64.c (emit_call): Add a comment.
15032
15033         * tramp-ia64.c (mono_arch_patch_callsite): Handle indirect calls as well.
15034
15035         * tramp-ia64.c: Fix some warnings.
15036
15037 Sat Mar 11 20:15:59 CET 2006 Paolo Molaro <lupus@ximian.com>
15038
15039         * mini.h: don't use gboolean for bitfields.
15040         * mini.c: verifier changes for fields and methods accessibility.
15041
15042 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
15043
15044         * mini.c (mono_icall_get_wrapper): Fix an ia64 bug introduced by the
15045         lazy icall wrapper changes.
15046
15047         * dominators.c: Replace all the dominator algorithms with faster
15048         ones from the linear-il branch.
15049
15050         * inssel-*.brg: Allocate call->out_ireg_args and call->out_freg_args from
15051         the mempool.
15052
15053         * mini-amd64.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
15054         common cases are done first.
15055
15056         * mini-amd64.c: Fix some warnings.
15057
15058         * mini-codegen.c mini-*.c: Allocate call->out_ireg_args and call->out_freg_args
15059         from the mempool.
15060
15061         * mini.c (mono_jit_compile_method_with_opt): Fix a race in the newly
15062         added code.
15063
15064         * mini.h: Add a missing prototype.
15065
15066 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
15067
15068         * mini.c: Compile icall wrappers lazily.
15069
15070         * mini-codegen.c: Use printf instead of g_print since its much faster.
15071
15072         * mini.h (mono_bitset_foreach_bit): Use the faster mono_bitset_find_start ()
15073         function.
15074
15075         * mini.c (optimize_branches): Cache the negative result from 
15076         remove_block_if_useless ().
15077
15078         * mini.c (optimize_branches): Avoid restarting the iteration after each change. 
15079         Also fix some bblock linking issues.
15080
15081         * helpers.c (mono_disassemble_code): Reduce the size of the temporary
15082         assembly files.
15083
15084         * mini.h: Define G_LIKELY/G_UNLIKELY macros for older glib versions.
15085
15086         * mini.h (MonoBasicBlock): Reorganize the fields, putting more frequently
15087         accessed fields first, for better cache behavior.
15088         
15089 Fri Mar 10 18:21:41 CET 2006 Paolo Molaro <lupus@ximian.com>
15090
15091         * mini.c: speedup IList<T> array accesses.
15092
15093 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
15094
15095         * mini.c (mono_method_to_ir): Handle large methods overflowing the 
15096         inline_costs counter. Fixes #77190.
15097
15098 2006-03-06  Zoltan Varga  <vargaz@gmail.com>
15099
15100         * mini-exceptions.c: Call mono_trace_is_enabled () before printing
15101         trace messages. Fixes #77706.
15102
15103 2006-03-04  Martin Baulig  <martin@ximian.com>
15104
15105         * tramp-amd64.c, tramp-x86.c
15106         (mono_debugger_create_notification_function): Use
15107         mono_global_codeman_reserve() to allocate a buffer at runtime and
15108         return it.
15109
15110         * debug-debugger.h (MonoDebuggerInfo): Added `initialize'.
15111
15112         * debug-debugger.c (mono_debugger_init): Dynamically allocate the
15113         notification function at runtime and then call `initialize' in the
15114         `MONO_DEBUGGER__debugger_info' vtable.
15115
15116 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
15117
15118         * iltests.il: Fix a visibility problem.
15119
15120 Wed Mar 1 15:55:25 CET 2006 Paolo Molaro <lupus@ximian.com>
15121
15122         * driver.c, mini.c: add hooks for the counters API.
15123
15124 Wed Mar 1 12:28:04 CET 2006 Paolo Molaro <lupus@ximian.com>
15125
15126         * driver.c: show disabled options.
15127
15128 Wed Mar 1 12:18:51 CET 2006 Paolo Molaro <lupus@ximian.com>
15129
15130         * linear-scan.c: always use cost-driven selection.
15131
15132 2006-02-28  Raja R Harinath  <rharinath@novell.com>
15133
15134         * jit-icalls.c (helper_compile_generic_method): Revert change from
15135         2006-02-24.
15136
15137 Mon Feb 27 18:58:19 GMT 2006 Paolo Molaro <lupus@ximian.com>
15138
15139         * cpu-arm.md, mini-arm.c: implemented MemoryBarrier.
15140
15141 Sat Feb 25 17:39:21 CET 2006 Paolo Molaro <lupus@ximian.com>
15142
15143         * inssel.brg: style fixes, mostly to force the updated monoburg
15144         to run for people using svn.
15145
15146 Sat Feb 25 17:07:42 CET 2006 Paolo Molaro <lupus@ximian.com>
15147
15148         * mini.c: match monoburg changes.
15149
15150 Sat Feb 25 16:04:33 CET 2006 Paolo Molaro <lupus@ximian.com>
15151
15152         * mini.h, mini.c, abcremoval.c, aliasing.c, liveness.c,
15153         ssapre.c, graph.c, ssa.c: put the mono_burg_arity[]
15154         declaration in the header file.
15155
15156 Sat Feb 25 14:19:31 CET 2006 Paolo Molaro <lupus@ximian.com>
15157
15158         * helpers.c: reduce relocations and mem usage.
15159
15160 Sat Feb 25 11:58:16 CET 2006 Paolo Molaro <lupus@ximian.com>
15161
15162         * mini.h, mini-codegen.c: disable logging features if
15163         requested by configure.
15164
15165 Sat Feb 25 11:54:49 CET 2006 Paolo Molaro <lupus@ximian.com>
15166
15167         * mini.c: tiny verifier changes.
15168
15169 Fri Feb 24 18:17:52 CET 2006 Paolo Molaro <lupus@ximian.com>
15170
15171         * mini-ops.h, inssel-x86.brg, tramp-x86.c, mini-x86.c,
15172         cpu-pentium.md: stack alignment changes for osx/x86,
15173         partially from Geoff Norton <gnorton@customerdna.com>.
15174
15175 2006-02-24  Raja R Harinath  <harinath@gmail.com>
15176
15177         * jit-icalls.c (helper_compile_generic_method): Update to changes
15178         in metadata/class.c.
15179
15180 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
15181         
15182         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a missing check.
15183         
15184         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for
15185         interface calls with large offsets.
15186
15187 2006-02-23  Raja R Harinath  <rharinath@novell.com>
15188
15189         * jit-icalls.c (helper_compile_generic_method): Document the
15190         special-case we depend on so that we can inflate the method twice
15191         with the same context with no bad side-effects.
15192
15193 Thu Feb 23 13:45:46 CET 2006 Paolo Molaro <lupus@ximian.com>
15194
15195         * mini-x86.c, mini-amd64.c: fix for case when xen support
15196         is disabled.
15197
15198 Wed Feb 22 19:38:40 CET 2006 Paolo Molaro <lupus@ximian.com>
15199
15200         * mini-x86.c, mini-amd64.c: generate code to access tls items
15201         in a faster way for Xen systems.
15202
15203 Wed Feb 22 10:31:25 CET 2006 Paolo Molaro <lupus@ximian.com>
15204
15205         * exceptions-x86.c, mini-x86.h, driver.c, mini-codegen.c:
15206         updates and compilation fixes for the OSX/x86 port, mostly from
15207         Geoff Norton <gnorton@customerdna.com>.
15208
15209 Tue Feb 21 19:56:55 CET 2006 Paolo Molaro <lupus@ximian.com>
15210
15211         * inssel.brg: faster interface call implementation
15212         to sync with the interface_offsets MonoVTable changes.
15213
15214 Mon Feb 20 10:37:57 CET 2006 Paolo Molaro <lupus@ximian.com>
15215
15216         * mini.c: more verification checks.
15217
15218 Fri Feb 17 19:47:29 CET 2006 Paolo Molaro <lupus@ximian.com>
15219
15220         * mini.c: added a few more verification checks.
15221
15222 2006-02-17      Neale Ferguson <neale@sinenomine.net>
15223
15224         * mini-s390x.c, mini-s390x.h: Check for presence of long displacement
15225         facility on the processor and use it if available.
15226
15227 Fri Feb 17 16:12:52 CET 2006 Paolo Molaro <lupus@ximian.com>
15228
15229         * driver.c, aot.c, mini.c: throw exception if the IL code is
15230         invalid or unverifiable.
15231
15232 2006-02-17  Raja R Harinath  <rharinath@novell.com>
15233
15234         * generics.2.cs (test_0_ldfld_stfld_mro): Use m.struct_field, not
15235         m.StructField.
15236
15237 2006-02-16  Zoltan Varga  <vargaz@gmail.com>
15238
15239         * generics.2.cs: Add some tests for generics ldfld/stfld wrappers.
15240
15241 Wed Feb 15 16:23:17 CET 2006 Paolo Molaro <lupus@ximian.com>
15242
15243         * mini-s390x.c, mini-s390.c, mini.c, mini-amd64.c, mini-arm.c,
15244         mini-ia64.c, mini-sparc.c, mini-x86.c, mini-ppc.c: fixed
15245         handling of instantiated generic valuetypes.
15246
15247 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
15248
15249         * mini-exceptions.c mini-x86.h mini-x86.c: Get rid of 
15250         MONO_INIT_CONTEXT_FROM_CALLER, and use MONO_INIT_CONTEXT_FROM_FUNC
15251         instead.
15252
15253         * generics.2.cs: Revert the nullable reftypes tests.
15254
15255 2006-02-10  Zoltan Varga  <vargaz@gmail.com>
15256
15257         * mini-exceptions.c (MONO_INIT_CONTEXT_FROM_CALLER): Avoid
15258         using __builtin_frame_address (1) as it doesn't work in the presence
15259         of optimizations. Hopefully fixes #77273.
15260
15261         * Makefile.am generics.cs generics.2.cs: Revert the generics.2.cs
15262         -> generics.cs change as it doesn't work with some automake versions.
15263
15264 Thu Feb 9 16:24:44 CET 2006 Paolo Molaro <lupus@ximian.com>
15265
15266         * mini.c: handle systems that sue a different way to
15267         retrieve the stack address of the current thread.
15268
15269 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
15270
15271         * Makefile.am generics.2.cs: Rename this to generics.cs and handle
15272         it specially in the makefile.
15273
15274         * generics.2.cs: Add tests for nullable reference types.
15275
15276 Wed Feb 8 19:33:17 CET 2006 Paolo Molaro <lupus@ximian.com>
15277
15278         * mini.c: always handle the case when mono_jit_init()
15279         is called in a thread different from the main thread,
15280         confusing libgc (bug #77309).
15281
15282 Mon Feb 6 09:01:24 EST 2006 Paolo Molaro <lupus@ximian.com>
15283
15284         * mini-ppc.c: fix handling of exceptions in large methods (bug #74932).
15285
15286 Fri Feb 3 18:51:35 CET 2006 Paolo Molaro <lupus@ximian.com>
15287
15288         * mini.c: change optimize_branches () to use a single loop
15289         and introduce a new optimization to simplify some range checks.
15290
15291 2006-02-03  Martin Baulig  <martin@ximian.com>
15292
15293         * debug-debugger.c (debugger_thread_manager_thread_created): Removed
15294         and merged with debugger_thread_manager_add_thread().
15295         (mono_debugger_main): Call debugger_thread_manager_add_thread() to
15296         inform the debugger about the main thread.
15297
15298 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
15299
15300         * basic.cs: Add test for div.un/rem.un constant folding.
15301
15302 2006-02-03  Neale Ferguson <neale@sinenomine.net>
15303
15304         * cpu-s390x.md: correct int_xor_imm length
15305
15306 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
15307
15308         * generics.2.cs: New test for #77442.
15309
15310         * jit-icalls.c (helper_compile_generic_method): Check for null. Fixes
15311         #77442.
15312
15313 2006-02-02  Martin Baulig  <martin@ximian.com>
15314
15315         * tramp-x86.c, tramp-amd64.c: It's now safe to #include
15316         <mono/metadata/mono-debug-debugger.h>   
15317
15318         * debug-mini.c: Don't #define _IN_THE_MONO_DEBUGGER.
15319
15320 2006-02-02  Martin Baulig  <martin@ximian.com>
15321
15322         * debug-debugger.h: New header file for debug-debugger.c.
15323
15324         * debug-debugger.c: Big API cleanup; don't run the managed Main()
15325         function is a separate thread anymore; add support for attaching.
15326
15327 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
15328
15329         * tramp-x86.c: Fix a warning.
15330
15331 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
15332
15333         * mini-amd64.c (mono_arch_compute_omit_fp): Avoid hitting an assertion
15334         on very large methods.
15335
15336         * aot.c (load_patch_info): Fix a warning.
15337
15338 Mon Jan 30 12:51:10 CET 2006 Paolo Molaro <lupus@ximian.com>
15339
15340         * cpu-pentium.md, mini-x86.c, inssel.brg, inssel-x86.brg,
15341         mini-ops.h: alu membase optimizations.
15342
15343 Fri Jan 27 21:11:08 CET 2006 Paolo Molaro <lupus@ximian.com>
15344
15345         * mini-ops.h, mini.c, inssel.brg, inssel-x86.brg: opcode
15346         to speedup StringBuilder.
15347
15348 2006-01-27  Zoltan Varga  <vargaz@gmail.com>
15349
15350         * dominators.c (mono_compute_natural_loops): Fix detection of
15351         loop body start blocks.
15352
15353         * mini-exceptions.c (mono_print_thread_dump): Fix non x86 builds.
15354
15355 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
15356
15357         * mini.h mini.c mini-exceptions.c: Add thread dump support. Fixes
15358         #75145.
15359
15360 2006-01-25  Massimiliano Mantione  <massi@ximian.com>
15361
15362         * aliasing.c: Fixed aliasing issue on 64 bit archs.
15363
15364 2006-01-25  Martin Baulig  <martin@ximian.com>
15365
15366         * debug-debugger.c: Moved the `MonoDebuggerManager' and
15367         `MonoDebuggerThread' typedefs here from mono-debug-debugger.h and
15368         started to cleanup this file a little bit.
15369
15370 Tue Jan 24 18:20:48 CET 2006 Paolo Molaro <lupus@ximian.com>
15371
15372         * mini.c: optimize a codepath frequently happening in generics code.
15373
15374 2006-01-23  Martin Baulig  <martin@ximian.com>
15375
15376         * Makefile.am: Only compile debug-debugger.c on supported platforms.
15377
15378         * debug-debugger.c: Kill the IO_LAYER() hack and use the io-layer
15379         functions directly.
15380
15381         * driver.c: debug-debugger.c is only available if
15382         `MONO_DEBUGGER_SUPPORTED' is defined.   
15383
15384 2006-01-23  Martin Baulig  <martin@ximian.com>
15385
15386         * debug-debugger.c: Only enable this on platforms where the Mono
15387         Debugger is working (x86 and x86_64).
15388
15389 2006-01-21  Martin Baulig  <martin@ximian.com>
15390
15391         The Mono Debugger is now using the normal `mono' instead of the
15392         `mono-debugger-mini-wrapper' when executing managed code.
15393
15394         * debug-debugger.c: New file; previously known as
15395         debugger/wrapper/wrapper.c.
15396
15397         * debug-mini.c (mono_init_debugger): Removed.
15398
15399         * driver.c (mono_main): Added new `--inside-mdb' command line
15400         argument which is used when running inside the debugger.
15401
15402 2006-01-20  Zoltan Varga  <vargaz@gmail.com>
15403
15404         * liveness.c (mono_analyze_liveness): Remove some unused data
15405         structures.
15406
15407 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
15408
15409         * mini.h: Move mono_bitset_test_fast macro to monobitset.h where it belongs.
15410
15411 2006-01-16  Zoltan Varga  <vargaz@gmail.com>
15412
15413         * mini.h (mono_bitset_test_fast): Disable the 'fast' implementation which
15414         depends on implementation details of monobitset.
15415
15416         * mini.c (mini_get_ldelema_ins): Fix handling of 1 dimensional arrays.
15417         Fixes #77271.
15418
15419 2006-01-15  Zoltan Varga  <vargaz@gmail.com>
15420
15421         * liveness.c: Update after monobitset changes.
15422
15423 2006-01-14  Zoltan Varga  <vargaz@gmail.com>
15424
15425         * mini-amd64.c (mono_arch_compute_omit_fp): Fix a leak.
15426
15427 2006-01-11 Neale Ferguson <neale@sinenomine.net>
15428
15429         * inssel-s390x.brg: Fix reg: OP_LDADDR(OP_S390_LOADARG) register setting.
15430
15431         * mini-s390x.c: Remove warning messages.
15432
15433 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
15434
15435         * mini.c: pass the jitinfo to mono_profiler_method_end_jit.
15436
15437 2006-01-10  Zoltan Varga  <vargaz@gmail.com>
15438
15439         * generics.2.cs: Add ldelem/stelem_any test.
15440
15441 2006-01-10 Neale Ferguson <neale@sinenomine.net>
15442
15443         * mini-s390.c: Fix ATOMIC_ADD_I4 operation.
15444
15445 2006-01-07  Zoltan Varga  <vargaz@gmail.com>
15446
15447         * inssel-long.brg: Fix int->long ovf conversion rules. Fixes #77172.
15448         
15449 2006-01-06  Zoltan Varga  <vargaz@gmail.com>
15450
15451         * generics.2.cs: Reenable vtype tests.
15452
15453         * inssel-x86.brg: Remove an icorrect valuetype rule.
15454
15455 2006-01-06 Neale Ferguson <neale@sinenomine.net>
15456
15457         * mini-s390x.c, inssel-s390x.brg, cpu-s390x.md: Fix ATOMIC_I8 operations. Provide
15458         initial support for OP_ABS.
15459
15460 2006-01-05 Neale Ferguson <neale@sinenomine.net>
15461
15462         * mini-s390x.c (emit_float_to_int): Correct r8 to unsigned int algorithm.
15463
15464 2006-01-05 Neale Ferguson <neale@sinenomine.net>
15465
15466         * mini-s390.c, mini-s390.h, inssel-s390.brg, cpu-s390.md: Fix r8 to unsigned int 
15467         conversion and implement LADD/LSUB.
15468
15469         * exceptions-s390.c: Standardize mono_arch_find_jit_info to match other
15470         architectures.
15471
15472 2006-01-05 Neale Ferguson <neale@sinenomine.net>
15473
15474         * mini-s390x.c, mini-s390x.h: Fix r8 to unsigned int conversion.
15475
15476         * exceptions-s390x.c: Standardize mono_arch_find_jit_info to match other
15477         architectures.
15478
15479 2006-01-05 Neale Ferguson <neale@sinenomine.net>
15480
15481         * mini-s390x.c, mini-s390x.h, mini-s390.c, mini-s390.h: Fix lmf handling when 
15482         localloc is encountered.  Fixes crash in test-183.cs when using gmcs 
15483         (stack walk problem).
15484
15485 2006-01-04  Zoltan Varga  <vargaz@gmail.com>
15486
15487         * aot.c (mono_aot_load_method): Fix a warning.
15488
15489 2006-01-03  Neale Ferguson <neale@sinenomine.net>
15490
15491         * mini-s390x.h, exceptions-s390x.c, inssel-s390x.brg: Fix compiler warnings
15492
15493 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
15494
15495         * iltests.il: Add test for #77148.
15496
15497         * mini.c (mini_get_ldelema_ins): Handle arrays with rank 1 too. Fixes
15498         #77148.
15499
15500 2006-01-03  Neale Ferguson <neale@sinenomine.net>
15501
15502         * mini-s390x.c, inssel-s390x.brg: Remove debug statements
15503
15504 2006-01-03  Neale Ferguson <neale@sinenomine.net>
15505
15506         * mini-s390x.c, mini-s390x.h, exceptions-s390x.c, tramp-s390x.c, inssel-s390x.brg,
15507         cpu-s390x.md, mini-codegen.c, Makefile.am: add 64-bit s390 support to JIT.
15508
15509         * basic-long.cs: Add lconv-to-r4/r8 tests.
15510
15511 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
15512
15513         * mini.c (mono_method_to_ir): Fix DynamicMethod support in some opcodes.
15514
15515         * mini-sparc.c (mono_arch_call_opcode): Use mono_class_value_size ()
15516         here as on other archs.
15517
15518 2005-12-29 Neale Ferguson <neale@sinenomine.net>
15519
15520         * mini-s390.c (mono_arch_get_inst_for_method): Add memory_barrier support.
15521
15522 2005-12-29 Neale Ferguson <neale@sinenomine.net>
15523
15524         * inssel-s390.brg: Correct register assignment; Rework L[ADD|SUB]_OVF[_UN] for s390.
15525         
15526         * cpu-s390.md: Fix lengths of a couple of long instructions; Add memory_barrier.
15527
15528         * mini-s390.c: Fix long add/sub overflow instructions; Fix displacement handling in
15529         instrument_prolog; Add memory_barrier instruction.
15530
15531 2005-12-26  Zoltan Varga  <vargaz@gmail.com>
15532
15533         * exceptions-x86.c mini-x86.h: Fix solaris/x86 exception handling.
15534
15535 2005-12-23  Zoltan Varga  <vargaz@gmail.com>
15536
15537         * tramp-ia64.c (mono_arch_get_unbox_trampoline): Flush icache.
15538
15539         * aliasing.c inssel.brg: Fix warnings.
15540
15541         * inssel-ia64.brg (OP_MEMSET): Fix an optimization which previously
15542         could skip initialization of some parts of memory.
15543
15544         * mini.c mini-ia64.c: Fix warnings.
15545
15546         * inssel-sparc.brg: Add an implementation of lneg which actually works.
15547
15548 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
15549
15550         * aliasing.c (mono_build_aliasing_information): Add a workaround for
15551         a crash seen on sparc.
15552
15553         * mini-sparc.c: Add implementation of Thread.MemoryBarrier.
15554         
15555         * cpu-sparc.md: Add memory_barrier opcode. Remove unused opcodes.
15556
15557 2005-12-21 Neale Ferguson <neale@sinenomine.net>
15558
15559         * mini-ops.h: Add s390_backchain instruction
15560
15561         * inssel-s390.brg: Use backchaining instruction for LOADARG/STKARG operations.
15562
15563         * cpu-s390.md: Add s390_backchain instruction
15564
15565         * mini-s390.c: Significant ABI changes
15566
15567         * mini-s390.h: Cater for zero length structures
15568
15569 2005-12-20 Neale Ferguson <neale@sinenomine.net>
15570
15571         * mini-s390.c: ABI fixes
15572
15573         * inssel-s390.brg: Remove debug statements
15574
15575         * cpu-s390.md: Fix length of ATOMIC_xx operations
15576
15577 2005-12-19  Zoltan Varga  <vargaz@gmail.com>
15578
15579         * basic-float.cs: Add float<->long conversion tests.
15580
15581 2005-12-16 Neale Ferguson <neale@sinenomine.net>
15582
15583         * mini-s390.c: Fix LOCALLOC processing.
15584
15585         * tramp-s390.c (s390_magic_trampoline): Fix base calculation.
15586
15587 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
15588
15589         * iltests.il: Add tests for some opcodes not covered by the other
15590         tests.
15591
15592 2005-12-15 Neale Ferguson <neale@sinenomine.net>
15593
15594         * mini-s390.c: Fix ADDCC/SBB bug revealed by test_0_ulong_regress; Correct 
15595         register loading for Tail processing; Correct trace output.
15596
15597         * inssel-s390.brg: Reimplement LSUB_OVF due to s390 implementation of signed math.
15598
15599         * cpu-s390.md: Correct size of jmp instruction. 
15600
15601 2005-12-13 Neale Ferguson <neale@sinenomine.net>
15602
15603         * mini-s390.c (mono_arch_emit_prolog): Remove some debugging bits.
15604
15605 2005-12-13 Neale Ferguson <neale@sinenomine.net>
15606
15607         * inssel-s390.brg tramp-s390.c cpu-s390.md mini-s390.c mini-s390.h:
15608           Bring s390 up to current level.
15609
15610 2005-12-12  Zltan Varga  <vargaz@gmail.com>
15611
15612         * generics.2.cs: Disable the newly added tests as they do not work yet.
15613         
15614         * generics.2.cs: Add valuetype tests.
15615
15616 2005-12-09  Zoltan Varga  <vargaz@gmail.com>
15617
15618         * basic-long.cs: Add i4->u8 test.
15619
15620         * objects.cs: Add tests for JIT intrinsic.
15621
15622         * mini.c (mini_get_inst_for_method): Resurrect the array Rank/Length
15623         optimizations lost by a mistake.
15624
15625 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
15626
15627         * basic-long.cs: Remove a test moved to objects.cs.
15628
15629         * arrays.cs: Add more array tests.
15630
15631 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
15632
15633         * arrays.cs: Add new tests for multi-dimensional arrays.
15634
15635 2005-12-06  Raja R Harinath  <rharinath@novell.com>
15636
15637         * Makefile.am (test_sources2): Add generics.2.cs.
15638         (EXTRA_DIST): Add test_sources2.
15639
15640 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
15641
15642         Support for boxing and unboxing nullable types as well as the
15643         isinst operation on nullables, per the CLI ammendment.
15644
15645         * inssel.brg (CEE_ISINST): Special case for nullable
15646
15647         * mini.c (handle_unbox_nullable): new method
15648         (handle_box): Special case for nullable types
15649         (mono_method_to_ir): Call handle_unbox_nullable in correct
15650         places.
15651
15652         * generics.2.cs: New test suite
15653
15654         * Makefile.am: Support for regression tests with generics.
15655
15656 2005-12-03  Zoltan Varga  <vargaz@gmail.com>
15657
15658         * mini-amd64.c (emit_load_volatile_arguments): Add loading of arguments
15659         allocated to registers. Fixes #76800.
15660
15661 Thu Dec 1 12:59:40 EST 2005 Paolo Molaro <lupus@ximian.com>
15662
15663         * mini-ppc.c, inssel-ppc.brg: fix ABI issue (pinvoke3.cs).
15664
15665 2005-11-30  Zoltan Varga  <vargaz@gmail.com>
15666
15667         * exceptions.cs: Disable test_0_long_cast () test, since it fails on a lot 
15668         of platforms.
15669
15670 2005-11-29  Zoltan Varga  <vargaz@gmail.com>
15671
15672         * objects.cs basic-calls.cs: Move a test depending on valuetypes to
15673         objects.cs.
15674
15675         * inssel-long32.brg (CEE_CONV_I8): Remove unused labels.
15676         
15677         * inssel-long32.brg (CEE_CONV_I8): Convert this to a branchless version.
15678 Tue Nov 29 05:41:34 EST 2005 Paolo Molaro <lupus@ximian.com>
15679
15680         * mini-ppc.c, cpu-g4.md: ensure a fp register is converted to
15681         single precision before storing to a single precision location.
15682
15683 2005-11-28  Raja R Harinath  <rharinath@novell.com>
15684
15685         * Makefile.am (ILASM): Use profile-dependent location of ilasm.
15686
15687 2005-11-27  Zoltan Varga  <vargaz@gmail.com>
15688
15689         * basic-long.cs basic-calls.cs objects.cs: Move some tests to the
15690         correct files.
15691
15692         * basic.cs: Remove test_0_byte_compares test which was moved to
15693         objects.cs a long time ago.
15694
15695 2005-11-22  Massimiliano Mantione  <massi@ximian.com>
15696
15697         * aliasing.c: Fixed aliasing issue on 64 bit archs.
15698
15699 2005-11-20  Zoltan Varga  <vargaz@gmail.com>
15700
15701         * mini-ia64.c exceptions-ia64.c: Simplify the way filters/finally
15702         handlers are called.
15703
15704         * mini-ia64.c (mono_arch_emit_exceptions): Optimize size of exception
15705         throwing code.
15706
15707          * mini-ia64.c: Add support for the throw->branch exception 
15708         optimization.   
15709
15710         * driver.c (DEFAULT_OPTIMIZATIONS): Add MONO_OPT_EXCEPTION.
15711
15712 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
15713
15714         * mini.c: Enabled "fastpath" deadce :-)
15715         
15716 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
15717
15718         * mini.c: Added "fastpath" deadce (deadce without SSA), and a simple
15719         alias analysis pass to support it.
15720         * mini.h: Likewise.
15721         * ssa.c: Likewise.
15722         * liveness.c: Likewise (liveness computation can use aliasing
15723         information to be more accurate).
15724         * driver.c: Added an "ssa" option go tell the JIT to use SSA, and
15725         moreover made so that "--compile-all" uses the given optimization
15726         flags and not the default ones.
15727         * aliasing.c: Alias analysis (new file).
15728         * aliasing.h: Likewise.
15729         * Makefile.am: added "aliasing.c" and "aliasing.h".
15730         
15731 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
15732
15733         * mini-ops.h: Add missing OP_I opcodes so it is in synch with the
15734         OP_L opcodes.
15735
15736 2005-11-13  Zoltan Varga  <vargaz@gmail.com>
15737
15738         * mini-exceptions.c (mono_handle_exception_internal): Remove the 
15739         fp >= end_of_stack exit condition, as it is not needed, and it might
15740         become true for fp eliminated frames.
15741
15742 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
15743
15744         * mini-x86.c (mono_arch_emit_epilog): Use G_STRUCT_OFFSET instead of hard
15745         coded offsets.
15746
15747 Tue Nov 8 11:28:20 GMT 2005 Paolo Molaro <lupus@ximian.com>
15748
15749         * mini-arm.c: fixed alignment of doubles/longs to match
15750         the C ABI (bug #76635).
15751
15752 Mon Nov 7 16:13:21 CET 2005 Paolo Molaro <lupus@ximian.com>
15753
15754         * aot.c: fix compilation with --enable-minimal=aot.
15755
15756 Fri Nov 4 12:34:15 GMT 2005 Paolo Molaro <lupus@ximian.com>
15757
15758         * mini-arm.c: fixed compatibility with the new
15759         floating point emulator package for compares.
15760
15761 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com?
15762
15763         * mini.c : reverted sig->pinvoke changes (r51396-51397).
15764
15765 2005-11-01  Zoltan Varga  <vargaz@freemail.hu>
15766
15767         * mini-exceptions.c (print_stack_frame): Output to stderr.
15768         (mono_handle_native_sigsegv): Ditto.
15769
15770 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
15771
15772         * mini-amd64.c (mono_arch_output_basic_block): Remove unused
15773         OP_LCONV_TO_OVF_I implementation.
15774
15775         * mini-amd64.c: Add support for the throw->branch exception 
15776         optimization.
15777
15778         * branch-opts.c (mono_branch_optimize_exception_target): Allow the case
15779         when the catch clause catches a more general exception, i.e. Object.
15780
15781 2005-10-30  Zoltan Varga  <vargaz@gmail.com>
15782
15783         * cpu-ia64.md: Remove unused opcodes.
15784
15785         * mini.c (GET_CONTEXT): Simplify this somewhat by removing arch
15786         specific defines for architectures defining USE_SIGACTION.
15787
15788         * mini-ia64.c: Fix some warnings.
15789
15790         * exceptions-ia64.c (mono_arch_ip_from_context): Fix this, the previous
15791         version seemed to skip a frame.
15792
15793 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
15794
15795         * mini.c: Clean up the usage of sig->pinvoke flag. Now
15796         only calls which are made to native code use this flag.
15797
15798 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
15799
15800         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for
15801         varargs methods as well.
15802         
15803         * mini-amd64.c exceptions-amd64.c: Allow fp elimination in methods
15804         which have save_lmf set. Reorganize methods prologs a bit.
15805
15806         * mini-amd64.c (mono_arch_compute_omit_fp): Move the check for the
15807         debugger to the proper place.
15808
15809 2005-10-29  Martin Baulig  <martin@ximian.com>
15810
15811         * mini-amd64.c (debug_omit_fp): Temporarily disable fp elimination
15812         when running inside the debugger until the debugger has support
15813         for it.
15814
15815 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
15816
15817         * mini.h: Fix a warning.
15818
15819 2005-10-24  Miguel de Icaza  <miguel@novell.com>
15820
15821         * mini.c (mono_pmip): Just a wrapper for get_method_from_ip which
15822         we expose publicly, this returns the string.
15823
15824 2005-10-22  Zoltan Varga  <vargaz@freemail.hu>
15825
15826         * exceptions-amd64.c (mono_arch_find_jit_info): Fix some corner cases
15827         with fp elimination.
15828
15829 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
15830
15831         * mini-exceptions.c (mono_handle_native_sigsegv): Try to print a
15832         native stacktrace using the glibc 'backtrace' function if available.
15833
15834 2005-10-20  Zoltan Varga  <vargaz@gmail.com>
15835
15836         * mini.h (MonoDebugOptions): Remove 'abort_on_sigsegv' option.
15837
15838         * mini-exceptions.c (mono_handle_native_sigsegv): New function to 
15839         handle SIGSEGVs received while in native code.
15840
15841         * mini.c (sigsegv_signal_handler): If the SIGSEGV happened in native
15842         code, call mono_handle_native_sigsegv which will abort the runtime
15843         after printing some diagnostics, instead of converting it into a
15844         confusing NullReferenceException.
15845
15846 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
15847
15848         * cpu-pentium.md: Remove unused opcodes.
15849
15850 2005-10-18  Zoltan Varga  <vargaz@freemail.hu>
15851
15852         * mini-amd64.h (MonoLMF): Add rsp field.
15853
15854         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Save the sp reg into
15855         the lmf too.
15856
15857 2005-10-17  Zoltan Varga  <vargaz@gmail.com>
15858
15859         * mini-codegen.c (get_register_spilling): Fix some warnings.
15860
15861 2005-10-16  Zoltan Varga  <vargaz@freemail.hu>
15862
15863         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Add support for fp
15864         elimination during exception handling. Enable fp elimination by
15865         default.
15866
15867         * mini-amd64.h mini-amd64.c: Add preliminary support for frame pointer
15868         elimination.
15869
15870 2005-10-16  Martin Baulig  <martin@ximian.com>
15871
15872         * mini-exceptions.c
15873         (mono_debugger_run_finally): New public method for the debugger.
15874
15875 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
15876
15877         * debug-mini.c (mono_debug_init_method): Fix warning.
15878
15879         * mini.h branch-opts.c (mono_branch_optimize_exception_target): Make
15880         the 'exname' parameter const to fix some warnings.
15881
15882 2005-10-09  Zoltan Varga  <vargaz@freemail.hu>
15883
15884         * mini-exceptions.c (mono_handle_exception_internal): Fix another bug
15885         introduced by the previous patch.
15886
15887 2005-10-08  Zoltan Varga  <vargaz@gmail.com>
15888
15889         * basic-float.cs: Add test for precision of float arithmetic.
15890
15891         * mini-ia64.c (mono_arch_output_basic_block): Convert to/from doubles
15892         when loading/storing single values from/to memory.
15893
15894         * mini.c (mono_jit_compile_method_with_opt): Create the function
15895         pointers in the correct domain.
15896
15897 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
15898
15899         * mini-exceptions.c (mono_handle_exception_internal): Fix bug 
15900         introduced by previous patch.
15901         
15902         * mini-exceptions.c (mono_handle_exception_internal): Handle the case
15903         when out_filter_idx is NULL.
15904
15905         * mini-exceptions.c: Don't run filter clauses twice during exception
15906         handling. Fixes #75755.
15907
15908 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
15909
15910         * aot.c: Add support for ldflda wrappers.
15911
15912         * mini.c (mono_method_to_ir): Use ldflda wrappers for CEE_LDFLDA. Fixes
15913         #75902.
15914
15915 Tue Oct 4 20:23:25 CEST 2005 Paolo Molaro <lupus@ximian.com>
15916
15917         * mini.c, mini.h: do not consider exception handlers blocks when
15918         setting up interface variables.
15919
15920 2005-10-04  Zoltan Varga  <vargaz@freemail.hu>
15921
15922         * aot.c (emit_section_change): Fix emitting of sections on win32. Fixes #76322.
15923
15924 2005-10-03  Zoltan Varga  <vargaz@gmail.com>
15925
15926         * liveness.c (mono_analyze_liveness): Revert parts of r51051 since it
15927         causes a regression.
15928
15929         * mini.c (mini_thread_cleanup): Fix reading of freed memory.
15930
15931 2005-10-02  Zoltan Varga  <vargaz@freemail.hu>
15932
15933         * mini.h (OP_PCONST): Move the definition of OP_PCONST into the rest
15934         of the OP_P definitions.
15935
15936         * TODO: Add a proposal for dealing with the CEE/OP mess.
15937
15938         * mini-amd64.c (mono_arch_output_basic_block): Merge mul_imm 
15939         optimizations from the x86 port.
15940
15941         * cpu-amd64.md: Ditto.
15942
15943         * basic.cs basic-long.cs: Add tests.
15944
15945 Fri Sep 30 20:07:20 CEST 2005 Paolo Molaro <lupus@ximian.com>
15946
15947         * Makefile.am, driver.c, mini-x86.c, mini.c, mini.h, branch-opts.c:
15948         Patrik Torstensson's implementation of my exception-handling
15949         optimization idea, when the exception object is not used
15950         (bug #62150).
15951
15952 Fri Sep 30 19:10:29 CEST 2005 Paolo Molaro <lupus@ximian.com>
15953
15954         * mini-x86.c, cpu-pentium.md: Patrik Torstensson's port
15955         of the mul_imm optimizations from the old jit.
15956
15957 Fri Sep 30 11:37:51 EDT 2005 Paolo Molaro <lupus@ximian.com>
15958
15959         * mini.c, liveness.c: patch by Patrik Torstensson and
15960         Zoltan Varga to improve performance in methods with
15961         exception clauses.
15962
15963 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
15964
15965         * driver.c: Remove 'Globalization' entry from --version.
15966
15967 2005-09-28  Zoltan Varga  <vargaz@gmail.com>
15968
15969         * mini.c (mono_jit_compile_method_inner): Do not load AOT code when
15970         there is a profiler interested in JIT events.
15971
15972         * aot.c: Load profile files produced by the AOT profiling module, and
15973         reorder methods based on the profiling info. Add a 'method_order' table
15974         to the AOT file to make mono_aot_find_jit_info work with the reordered
15975         methods.
15976
15977         * mini.h: Bump AOT file version info.
15978
15979 Wed Sep 28 17:12:48 CEST 2005 Paolo Molaro <lupus@ximian.com>
15980
15981         * mini-arm.h: work around what looks like a gcc bug when optimizations
15982         are enabled.
15983
15984 2005-09-28  Raja R Harinath  <rharinath@novell.com>
15985
15986         * Makefile.am (AM_CFLAGS): Don't use += to append inside
15987         conditionals.  Use ...
15988         (PLATFORM_CFLAGS, ARCH_CFLAGS): ... these.
15989
15990 2005-09-27  Zoltan Varga  <vargaz@freemail.hu>
15991
15992         * mini-amd64.c (mono_arch_call_opcode): Use mono_class_value_size ()
15993         to determine the amount of memory to copy when passing valuetypes.
15994
15995         * inssel-amd64.brg: Remove PUSH(LDIND4) rules since they convert an
15996         4 byte load into a 8 byte load. Fix aligning of size in OP_OUTARG_VT.
15997
15998 2005-09-27  Zoltan Varga  <vargaz@gmail.com>
15999
16000         * mini.h mini.c aot.c: Add infrastructure to collect pagefault 
16001         information about aot.
16002
16003 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
16004
16005         * *.c: Replace the use of {Enter,Leave}CriticalSection with
16006         macros. This will allow a deadlock debugger to easily be plugged
16007         in.
16008
16009 Tue Sep 27 09:32:11 EDT 2005 Paolo Molaro <lupus@ximian.com>
16010
16011         * mini-ppc.c, cpu-g4.md: added memory barrier instruction.
16012
16013 2005-09-27  Raja R Harinath  <rharinath@novell.com>
16014
16015         * Makefile.am (AM_CFLAGS): Rename from INCLUDES.
16016         (AM_CFLAGS) [PLATFORM_WIN32): Append to it, don't set it.
16017         (AM_CFLAGS) [ARM]: Add arch/arm directory from the build tree.
16018         ($(arch_built)) [CROSS_COMPILING]: Error out.
16019
16020 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
16021
16022         * aot.c: Add support for the no_special_static flag for classes.
16023
16024 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
16025
16026         * Reapply reverted patches.
16027
16028         * *: Revert r50174 as well.
16029
16030         * mini-amd64.c cpu-amd64.md inssel-amd64.brg: Revert r50170 as well.
16031
16032 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
16033
16034         * mini-amd64.c: Revert r50342 to see if this fixed buildbot.
16035
16036 2005-09-23  Miguel de Icaza  <miguel@novell.com>
16037
16038         * mini.c (SIG_HANDLER_SIGNATURE): Only dereference info if it is
16039         part of the SIG_HANDLER_SIGNATURE.  
16040
16041 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
16042
16043         * mini.h mini.c: Add a new MONO_DEBUG option to collect metadata pagefault
16044         statistics.
16045
16046         * mini-x86.c (mono_arch_call_opcode): Fix vararg calling convention 
16047         introduced by previous patch.
16048
16049 2005-09-21  Zoltan Varga  <vargaz@gmail.com>
16050
16051         * tramp-x86.c (mono_arch_create_trampoline_code): Restore caller
16052         saved registers too.
16053
16054         * mini-x86.c (mono_arch_allocate_vars): Rewrite this so it works based 
16055         upon the information returned by get_call_info ().
16056         
16057         * mini-x86.c (add_float): Fix stack size calculation.
16058         (mono_arch_call_opcode): Rewrite this so it works based up the
16059         information returned by get_call_info ().
16060         (mono_arch_get_this_vret_args): Ditto.
16061
16062 2005-09-21  Zoltan Varga  <vargaz@freemail.hu>
16063
16064         * mini-amd64.c (mono_arch_emit_this_vret_args): Use the information
16065         in cinfo to determine the registers which need to be used.
16066
16067 2005-09-20  Miguel de Icaza  <miguel@novell.com>
16068
16069         * driver.c (mono_main): Add --server and --desktop flags. 
16070
16071 2005-09-16  Zoltan Varga  <vargaz@gmail.com>
16072
16073         * mini-ia64.h: Make register masks 64 bit. Don't treat argument
16074         registers as global registers.
16075
16076         * inssel-ia64.brg (stmt): Remove OP_OUTARG_REG () rules which are no 
16077         longer needed with the new register allocator.
16078
16079         * mini-ia64.c: Use OP_MOVE instead of OP_SETREG for reg-reg moves.
16080
16081         * cpu-ia64.md: Remove unused opcodes.
16082         
16083         * regalloc.c mini-codegen.c: Make register masks 64 bit on ia64.
16084         
16085 2005-09-16  Zoltan Varga  <vargaz@freemail.hu>
16086
16087         * cpu-amd64.md: Remove unused opcodes.
16088
16089         * inssel-amd64.brg: Remove OP_OUTARG_REG () rules which are no longer
16090         needed with the new register allocator.
16091
16092         * inssel-amd64.brg mini-amd64.c: Use OP_MOVE instead of OP_SETREG for
16093         reg-reg moves.
16094
16095 2005-09-16  Raja R Harinath  <rharinath@novell.com>
16096
16097         * Makefile.am (check-local): Don't invoke semdel-wrapper.
16098
16099 2005-09-16  Martin Baulig  <martin@ximian.com>
16100
16101         * exceptions-amd64.c
16102         (throw_exception): Don't call mono_debugger_throw_exception() if
16103         we're a rethrow - see the FIXME in the code.
16104
16105 2005-09-15  Geoff Norton  <gnorton@customerdna.com>
16106
16107         * mini.c (mono_init_exceptions): This only works on some architectures.
16108         
16109 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
16110
16111         * mini.c (mono_method_to_ir): Add OP_LMUL imm -> OP_LMUL_IMM conversion
16112         on ia64.
16113
16114         * inssel-long.brg mini-ia64.c: Add OP_LMUL_IMM rules.
16115
16116         * mini-ia64.h mini-ia64.c: Remove the altstack support code which is
16117         now in mini-exceptions.c.
16118
16119 2005-09-15  Zoltan Varga  <vargaz@freemail.hu>
16120
16121         * mini-amd64.h mini-am64.c: Remove the altstack support code which is
16122         now in mini-exceptions.c.
16123
16124 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
16125
16126         * exceptions-x86.c: Applied patch from Patrik Torstensson 
16127         <patrik.torstensson@gmail.com>. Add stack overflow handling support for win32.
16128
16129         * mini-exceptions.c mini-x86.c mini.c: Move the altstack setup/teardown
16130         code into mini-exceptions.c. Add some assertions to it.
16131
16132 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
16133
16134         * aot.c (emit_section_change): Applied patch from "The Software Team" 
16135         (<software@solmersa.com>). Fix as errors on windows.
16136
16137 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
16138
16139         * tramp-amd64.c (mono_arch_create_trampoline_code): Fix saving of
16140         method info into the LMF.
16141
16142 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
16143         
16144         * mini-ia64.c: Add proper unwind info for method epilogs.
16145
16146         * exceptions-ia64.c: Add some code to help debugging.
16147         
16148         * mini-ia64.c mini-ia64.h: Add sigaltstack support.
16149
16150         * mini-exceptions.c: Fix warning.
16151
16152 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
16153
16154         * mini.c: Really fix build.
16155
16156         * mini-x86.c mini-amd64.c: Fix build.
16157
16158 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
16159
16160         * mini-ia64.c inssel-ia64.brg: Add InterlockedExchange instrinsics.
16161
16162         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Implement
16163         some Interlocked methods as intrinsics.
16164
16165         * mini.c (mini_get_inst_for_method): Call arch_get_inst_for_method
16166         for Thread methods as well.
16167
16168         * mini-ops.h: Add OP_MEMORY_BARRIER opcode.
16169
16170         * inssel.brg: Add rule for OP_MEMORY_BARRIER.
16171
16172         * mini-ia64.c mini-x86.c mini-amd64.c 
16173         cpu-ia64.md cpu-pentium.md cpu-amd64.md: Add implementation of 
16174         OP_MEMORY_BARRIER.
16175         
16176         * mini.c (mono_init_exceptions): Fix build breakage.
16177
16178 2005-09-10  Zoltan Varga  <vargaz@gmail.com>
16179
16180         * mini-ia64.c exceptions-ia64.c tramp-ia64.c: Remove 'manual' emitting
16181         of instructions. Use the new ia64_unw_op macros for emitting unwind
16182         info.
16183
16184         * mini.c (mono_init_exceptions): Initialize exception handling
16185         related trampolines at startup.
16186
16187 Fri Sep 9 19:30:37 BST 2005 Paolo Molaro <lupus@ximian.com>
16188
16189         * cpu-arm.md, mini-arm.c: fix for dynamic code (Gtk# apps).
16190
16191 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
16192
16193         * mini.c: Handle type loading errors gracefully during compilation and
16194         throw the appropriate exception.
16195
16196 Fri Sep 9 09:49:14 CEST 2005 Paolo Molaro <lupus@ximian.com>
16197
16198         * ldscript.mono, Makefile.am: use anonymous versions in the ldscript
16199         for the mono binary.
16200
16201 2005-09-09  Martin Baulig  <martin@ximian.com>
16202
16203         * mini.c (mono_method_to_ir): Comment out the G_BREAKPOINT()'s for
16204         the release.
16205
16206 Thu Sep 8 14:53:45 BST 2005 Paolo Molaro <lupus@ximian.com>
16207
16208         * mini-arm.h: use emulation for conv.r.un for the release.
16209
16210 Thu Sep 8 11:28:45 BST 2005 Paolo Molaro <lupus@ximian.com>
16211
16212         * mini-arm.c, objects.cs: more fixes and tests for them.
16213
16214 Wed Sep 7 17:14:26 BST 2005 Paolo Molaro <lupus@ximian.com>
16215
16216         * mini-arm.c: align structures to at least 4 bytes to be able
16217         to keep our current optimized memcpy.
16218
16219 Tue Sep 6 22:51:08 BST 2005 Paolo Molaro <lupus@ximian.com>
16220
16221         * mini-arm.c, cpu-arm.md, inssel-arm.brg: bugfixes.
16222
16223 2005-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16224
16225         * mini.c: ignore SIGPIPE.
16226
16227 2005-09-04  Zoltan Varga  <vargaz@gmail.com>
16228
16229         * mini-ia64.c (mono_arch_lowering_pass): Convert 'and_imm 255' to zext1.
16230
16231         * mini-ia64.h mini-ia64.c: Add some minor optimizations.
16232
16233 2005-09-02  Zoltan Varga  <vargaz@gmail.com>
16234
16235         * mini.h: Add prototype for mono_allocate_stack_slots_full.
16236
16237 Thu Sep 1 21:05:26 BST 2005 Paolo Molaro <lupus@ximian.com>
16238
16239         * exceptions-arm.c, mini.c, mini-arm.c, mini-arm.h:
16240         exception handling support.
16241         * mini-arm.c, mini-arm.h: bigendian fixes (partially from a
16242         patch by Brian Koropoff <briank@marakicorp.com>).
16243
16244 Thu Sep 1 10:22:44 EDT 2005 Paolo Molaro <lupus@ximian.com>
16245
16246         * mini.c: revert another 'optimization' which breaks when
16247         items on the eval stack need to be saved at a basic block end
16248         (bug #75940).
16249
16250 Wed Aug 31 17:29:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
16251
16252         * jit-icalls.c: for arrays, ensure we always provide
16253         lower bounds.
16254
16255 2005-08-30  Zoltan Varga  <vargaz@gmail.com>
16256
16257         * mini.c (mono_allocate_stack_slots_full): Fix ia64 build.
16258         
16259         * mini.c (mini_get_inst_for_method): Special case Object:.ctor as well.
16260
16261 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
16262
16263         * mini-ia64.h mini-ia64.c: Implement frame pointer elimination. Keep
16264         arguments in their original register.
16265
16266 2005-08-28  Zoltan Varga  <vargaz@gmail.com>
16267
16268         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Optimize
16269         memset/memcpy.
16270
16271         * mini.c (mono_method_to_ir): Disable the MUL->MUL_IMM optimization
16272         when ssapre is enabled.
16273
16274         * inssel-long.brg: Fix bug in previous patch.
16275
16276         * mini-ia64.c mini-ia64.h mini.c inssel-long.brg: Optimize 
16277         multiplication by a constant.
16278
16279 2005-08-27  Zoltan Varga  <vargaz@gmail.com>
16280
16281         * mini-ia64.c (mono_arch_setup_jit_tls_data): Add support for intel
16282         icc.
16283
16284         * tramp-ia64.c (mono_arch_create_trampoline_code): Use st8.spill for
16285         saving registers.
16286
16287 Fri Aug 26 11:09:28 BST 2005 Paolo Molaro <lupus@ximian.com>
16288
16289         * inssel-arm.brg: apply changes tested by Brian Koropoff
16290         <briank@marakicorp.com>.
16291
16292 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
16293
16294         * mini-x86.c (mono_arch_emit_prolog): Fix calling of mono_jit_thread_attach () under windows.
16295         
16296 2005-08-24  Zoltan Varga  <vargaz@gmail.com>
16297
16298         * mini-codegen.c (mono_local_regalloc): Avoid allocating dreg and sreg1/2
16299         to the same register if dreg is just a base register.
16300         (print_ins): Improve printing of membase opcodes.
16301
16302         * inssel-x86.brg: Add optimized ldind(reg) rules.
16303
16304         * mini-x86.c cpu-pentium.md: Changes required to support the new rules.
16305
16306 Wed Aug 24 19:39:36 CEST 2005 Paolo Molaro <lupus@ximian.com>
16307
16308         * mini.c: when running under valgrind, set the stack bottom for
16309         the GC at the actual approximate stack for the app (fixes running
16310         mono with valgrind).
16311
16312 Tue Aug 23 21:38:50 CEST 2005 Paolo Molaro <lupus@ximian.com>
16313
16314         * mini.c: do no break at the first valuetype to init found
16315         (fixes bug #75791).
16316
16317 Tue Aug 23 16:53:21 BST 2005 Paolo Molaro <lupus@ximian.com>
16318
16319         * cpu-arm.md, mini-arm.c: more fixes and LMF support.
16320
16321 Tue Aug 23 15:11:44 CEST 2005 Paolo Molaro <lupus@ximian.com>
16322
16323         * cpu-g4.md: fixed instruction length exposed by the nemerle compiler.
16324
16325 2005-08-23  Zoltan Varga  <vargaz@freemail.hu>
16326
16327         * inssel-amd64.brg inssel-x86.brg: Fix the fcall rules.
16328
16329 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
16330
16331         * inssel-x86.brg: Fix assert in patch_delegate_trampoline.
16332
16333         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Add some debug
16334         code.
16335
16336         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Add some debug
16337         code.
16338
16339         * mini.c (optimize_branches): Don't quit after 1000 iterations on large
16340         methods.
16341
16342 Mon Aug 22 19:16:29 BST 2005 Paolo Molaro <lupus@ximian.com>
16343
16344         * tramp-arm.c: allocate less memory for the trampoline and fix typo.
16345
16346 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
16347
16348         * mini.c (mono_method_to_ir): Remove instructions inserted after a branch
16349         in the tail recursion optimization.
16350
16351         * mini.h helpers.c (mono_disassemble_code): Emit starts of basic blocks as 
16352         debug info into the assembly file.
16353
16354         * iltests.il: Add test for filter regions.
16355
16356         * mini.c (mono_method_to_ir): Fix handling of nested FILTER clauses. Fix
16357         initial stack of filter regions. Fixes #75755.
16358
16359 Mon Aug 22 17:49:16 BST 2005 Paolo Molaro <lupus@ximian.com>
16360
16361         * mini-arm.c, cpu-arm.c: fixes and support for methods with bigger
16362         stack requirements.
16363
16364 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
16365
16366         * mini.c (mono_create_delegate_trampoline): Fix memory leak. Put back
16367         the check for an already compiled method on non-ia64 platforms.
16368         (mono_create_jump_trampoline): Store the MonoJitInfo structure into the
16369         proper domain.
16370
16371         * mini-x86.h tramp-x86.c: Add support for delegate trampolines.
16372
16373         * inssel-x86.brg: Add some optimized call rules.
16374
16375 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
16376
16377         * mini.c (mono_create_delegate_trampoline): Do not return an already compiled
16378         method here.
16379
16380         * mini.h mini-trampolines.c: Pass the trampoline argument to 
16381         mono_arch_patch_delegate_trampoline.
16382
16383         * mini-ia64.h mini-ia64.c tramp-ia64.c: Add support for delegate trampolines.
16384
16385         * mini-trampolines.c: Fix build.
16386
16387         * mini-amd64.h: Add delegate trampolines.
16388
16389         * mini.h mini.c mini-trampolines.c tramp-amd64.c: Add delegate trampolines.
16390
16391         * inssel-amd64.brg: Add optimized call rules.
16392         
16393         * mini-ia64.c tramp-ia64.c: Improve instruction scheduling.
16394
16395         * inssel-ia64.brg: Add optimized ldind(reg) rules.
16396
16397 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
16398
16399         * mini.c (mono_create_class_init_trampoline): Fix bug caused by last
16400         change.
16401
16402         * mini-ia64.c: Remove LMF fixmes.
16403
16404         * mini-ia64.h: Remove most fields from LMF.
16405
16406         * inssel-ia64.brg (stmt): Fix unaligned access errors.
16407
16408         * mini-trampolines.c: Add support for IA64 function descriptors.
16409
16410         * mini.h mini.c jit-icalls.c exceptions-ia64.cdriver.c: Add support
16411         for IA64 function descriptors.
16412
16413 Sat Aug 20 16:51:44 BST 2005 Paolo Molaro <lupus@ximian.com>
16414
16415         * tramp-arm.c: patch the vtable for virtual calls. Added
16416         support code to register/unregister the LMF.
16417         * mini-arm.c, mini-arm.h: warning fixes, fixes, speedups,
16418         more LMF work.
16419
16420 2005-08-19  Dick Porter  <dick@ximian.com>
16421
16422         * mini.c: Use a gsize to store the thread ID, so it can hold a 64
16423         bit value if needed.
16424
16425 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
16426
16427         * mini.c (mini_get_method): Move handling of wrapper data here.
16428
16429         * mini.c (mono_method_to_ir): Add support for dynamic methods.
16430
16431         * mini.c (mono_method_to_ir): Convert nonvirtual calls to abstract methods into
16432         virtual.
16433
16434         * mini.c (mono_method_to_ir): Emit IR for CEE_NOP as well, so 
16435         bblock->code does not remain empty.
16436
16437 2005-08-17  Zoltan Varga  <vargaz@freemail.hu>
16438
16439         * arrays.cs: Add regression test for #75832.
16440
16441         * inssel-amd64.brg cpu-amd64.md mini-amd64.c: Fix LDELEMA optimization
16442         rules. Fixes #75832.
16443
16444         * mini-ia64.c tramp-ia64.c exceptions-ia64.c: Implement improved
16445         instruction scheduling.
16446
16447 2005-08-12  Zoltan Varga  <vargaz@freemail.hu>
16448
16449         * mini-exceptions.c (ves_icall_get_frame_info): Fix IA64 build.
16450
16451 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
16452
16453         * mini-exceptions.c mini-x86.h: Move VC stuff into macros in mini-x86.h.
16454
16455         * mini-codegen.c: Fix VC build.
16456
16457         * cpu-pentium.md: Increase length of atomic_exhange_i4.
16458
16459 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16460
16461         * mini.h: fix signature for mono_register_opcode_emulation.
16462
16463 2005-08-09  Zoltan Varga  <vargaz@freemail.hu>
16464
16465         * mini.c: Get rid of most of the helper_sig_... constants using
16466         mono_create_icall_signature ().
16467
16468 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
16469
16470         * jit-icalls.c (helper_ldstr): New helper function.
16471
16472         * mini.c (get_basic_blocks): Set out_of_line for bblocks containing a throw.
16473
16474         * mini.c (mono_method_to_ir): If an LDSTR instruction is in a bblock with a
16475         throw, load the string using a helper call instead of creating a string object.
16476
16477         * aot.c: Update after LDSTR changes.
16478
16479         * mini.h: Bump AOT file version.
16480         
16481         * aot.c: Save class size info into the AOT file. Print more statistics during
16482         compilation.
16483
16484         * mini.h: Bump AOT file version.
16485
16486         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
16487         ordering of disasm cases. Fixes #74957.
16488
16489 Thu Aug 4 19:47:24 BST 2005 Paolo Molaro <lupus@ximian.com>
16490
16491         * mini-ops.h, mini-arch.h, inssel.brg, mini.c, mini.h,
16492         jit-icalls.c, mini-codegen.c, Makefile.am: changes in
16493         the generic code needed for the ARM port.
16494
16495 Thu Aug 4 19:42:54 BST 2005 Paolo Molaro <lupus@ximian.com>
16496
16497         * exceptions-arm.c, tramp-arm.c, mini-arm.c, mini-arm.h, cpu-arm.md,
16498         inssel-arm.brg: more ARM features and fixes.
16499
16500 Mon Aug 1 18:37:38 BST 2005 Paolo Molaro <lupus@ximian.com>
16501
16502         * tramp-arm.c, mini-arm.c, cpu-arm.md, inssel-arm.brg: more
16503         ARM port work in progress.
16504
16505 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
16506
16507         * mini-ia64.c (mono_arch_call_opcode): Ongoing IA64 work.
16508
16509         * mini-exceptions.c mini-ia64.h: Ongoing IA64 work.
16510
16511         * mini-ia64.c (ia64_emit_bundle): Ongoing IA64 work.
16512
16513         * inssel.brg (mini_emit_memset): Add support for unaligned access.
16514
16515         * *-ia64.*: Ongoing IA64 work.
16516         
16517         * mini-ia64.c exceptions-ia64.c: Ongoing IA64 work.
16518
16519 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
16520
16521         * TODO: Remove out-of-data todo stuff.
16522
16523         * mini.h mini.c (mono_create_jit_trampoline_from_token): Remove some
16524         dead code.
16525
16526         * aot.c: Save/load MonoCachedClassInfo->has_nested_classes.
16527
16528         * mini.h: Bump corlib version.
16529
16530 2005-07-27  Martin Baulig  <martin@ximian.com>
16531
16532         * mini-codegen.c
16533         (create_copy_ins): Added `const unsigned char *ip' argument; set
16534         `copy->cil_code' from it.
16535
16536 2005-07-27  Martin Baulig  <martin@ximian.com>
16537
16538         * mini-exceptions.c (mono_handle_exception): Don't call
16539         mono_debugger_handle_exception() for filters.
16540
16541 2005-07-27  Zoltan Varga  <vargaz@freemail.hu>
16542
16543         * mini-trampolines.c (mono_aot_trampoline): Handle AppDomain:InvokeInDomain
16544         as well.
16545
16546 2005-07-26  Martin Baulig  <martin@ximian.com>
16547
16548         Committing a patch from Michal Moskal <michal.moskal@gmail.com>.
16549
16550         * mini.c (mono_method_to_ir): In `CEE_CALLI', only use
16551         helper_compile_generic_method() if the method is actually virtual
16552         and non-final.
16553
16554 2005-07-26  Martin Baulig  <martin@ximian.com>
16555
16556         * mini.c
16557         (trampoline_code): Renamed to `mono_trampoline_code' and made it
16558         public; this is now accessed directly by the debugger.
16559         (mono_generic_trampoline_code): Removed.
16560
16561         * debug-mini.c
16562         (mono_debug_init_method): Also add interncalls and wrappers.
16563
16564 2005-07-23  Zoltan Varga  <vargaz@freemail.hu>
16565
16566         * mini-ia64.c mini-ia64.h: Add support for tracing/profiling.
16567
16568 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
16569
16570         * aot.c (mono_aot_get_method_from_token): Fix a potential crash here.
16571
16572 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
16573
16574         * aot.c (load_patch_info): Fix handling of stfld_remote wrapper.
16575
16576 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
16577
16578         * mini-amd64.c (mono_arch_setup_jit_tls_data): Use the nice way of
16579         getting TLS offsets on AMD64 too.
16580
16581 2005-07-20  Kornel Pal <kornelpal@hotmail.com>
16582
16583         * driver.c: Detach console when executing IMAGE_SUBSYSTEM_WINDOWS_GUI on win32
16584
16585 Wed Jul 20 18:05:19 BST 2005 Paolo Molaro <lupus@ximian.com>
16586
16587         * exceptions-arm.c, mini-arm.c, tramp-arm.c, cpu-arm.md,
16588         inssel-arm.brg, mini-arm.h: ARM port work in progress.
16589
16590 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
16591
16592         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix build.
16593
16594         * mini.h mini.c mini-*.h tramp-*.c: Move more cross platform trampoline code
16595         to mini.c.
16596
16597         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Call 
16598         mono_sparc_is_virtual_call ().
16599         
16600         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix warning.
16601
16602         * tramp-sparc.c (mono_arch_create_trampoline_code): Fix order of
16603         trampoline parameters.
16604
16605         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix signature.
16606         
16607         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Rename this
16608         to mono_arch_get_vcall_slot_addr.
16609
16610         * Makefile.am tramp-sparc.c: Update the sparc port to use the generic
16611         trampoline code.
16612
16613         * *-sparc.*: Merge the mini-xp-regalloc branch for sparc.
16614
16615 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
16616
16617         * mini-ia64.h mini-ia64.c: Finish pinvoke support.
16618
16619 2005-07-19  Martin Baulig  <martin@ximian.com>
16620
16621         * exceptions-amd64.c (throw_exception): Call
16622         mono_debugger_throw_exception() here like we're doing it on i386.
16623
16624 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
16625
16626         * mini-ia64.c: Add optimized TLS access support.
16627
16628 2005-07-18  Zoltan Varga  <vargaz@freemail.hu>
16629
16630         * mini-exceptions.c: Ongoing IA64 work.
16631
16632         * mini-ia64.c inssel-long.brg: Ongoing IA64 work.
16633
16634         * mini.c: Use the default optimization set when embedding. Fixes
16635         #75194.
16636
16637 2005-07-11  Zoltan Varga  <vargaz@freemail.hu>
16638
16639         * tramp-amd64.c tramp-ia64.c Makefile.am: Move arch independent parts 
16640         of trampolines to a separate file.
16641
16642         * mini-trampolines.c: New file.
16643
16644         * mini.h tramp-x86.c: Move arch independent parts of trampolines to a 
16645         separate file.
16646         
16647         * tramp-x86.c: Reorganize the trampoline code to be similar to the 
16648         amd64/ia64 code.
16649
16650         * mini-codegen.c: Fix cygwin build.
16651
16652 2005-07-10  Zoltan Varga  <vargaz@freemail.hu>
16653
16654         * mini.c: Add some minor changes needed by the IA64 port.
16655
16656         * *-ia64.*: Ongoing IA64 work.
16657
16658 2005-07-09  Zoltan Varga  <vargaz@freemail.hu>
16659
16660         * tramp-amd64.c mini-amd64.c: Update after latest AOT changes. Split 
16661         trampolines into arch-independent and arch-dependent parts.
16662
16663         * mini-amd64.c (mono_arch_lowering_pass): Fix store_membase_imm -> store_membase_reg rule.
16664
16665 2005-07-08  Zoltan Varga  <vargaz@freemail.hu>
16666
16667         * cpu-amd64.md: Merge the xp-regalloc-branch for amd64.
16668
16669         * mini-ops.h mini-amd64.h mini-amd64.c inssel-amd64.brg Makefile.am: Merge
16670         the xp-regalloc-branch for amd64.
16671
16672         * mini-x86.h mini-x86.c cpu-pentium.md Makefile.am: Merge the
16673         xp-regalloc-branch for x86.
16674
16675 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
16676
16677         * inssel.brg (OP_THROW_OR_NULL): Allways rethrow the abort exception.
16678
16679 2005-07-06  Martin Baulig  <martin@ximian.com>
16680
16681         * mini.c
16682         (mono_jit_compile_method_inner): Call mono_get_inflated_method().
16683         (mono_jit_runtime_invoke): Likewise.
16684
16685 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
16686
16687         * aot.c (mono_compile_assembly): Allocate the GOT in the .bss segment
16688         on x86 too.
16689         
16690         * aot.c: Add new mono_aot_get_method_from_token () function to load AOT methods
16691         without loading their metadata. Reorganize the file format so exception handling+
16692         debug info is kept separate from normal method info. Create MonoJitInfo 
16693         structures for methods lazily.
16694
16695         * tramp-x86.c (x86_aot_trampoline): Use the new from_token method to avoid
16696         loading metadata.
16697         (x86_class_init_trampoline): Patch AOT class init trampolines too.
16698
16699         * mini.c (mini_init): Install the new mono_aot_find_jit_info hook.
16700
16701         * mini.c (mono_method_to_ir): Reduce the number of class init trampoline calls
16702         in AOT code.
16703
16704         * mini.h: Bump AOT file version.
16705
16706 2005-07-04  Zoltan Varga  <vargaz@freemail.hu>
16707
16708         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
16709
16710 2005-07-01  Raja R Harinath  <rharinath@novell.com>
16711
16712         * Makefile.am (check-local): Call semdel-wrapper.
16713
16714 2005-06-29  Zoltan Varga  <vargaz@freemail.hu>
16715
16716         * mini-x86.c: Revert the last change as it seems to break the build..
16717
16718 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
16719
16720         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
16721         
16722         * mini-x86.c (mono_arch_cpu_init): Fix setting of fp precision in the VC build.
16723
16724 2005-06-27  Ben Maurer  <bmaurer@ximian.com>
16725
16726         * mini.c (NEW_AOTCONST): make sure to call mono_get_got_var
16727         outside of the macro, so strange stuff doesn't happen with gcc4
16728         (NEW_AOTCONST_TOKEN): Likewise.
16729
16730 2005-06-28  Martin Baulig  <martin@ximian.com>
16731
16732         * mini.c (mini_class_is_system_array): New static method; use this
16733         instead of `klass->parent == mono_defaults.array_class' everywhere
16734         since this also works for the new generic array class.
16735
16736 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
16737
16738         * inssel.brg: Remove warnings.
16739
16740 2005-06-24  Zoltan Varga  <vargaz@freemail.hu>
16741
16742         * mini-ia64.c: Ongoing IA64 work.
16743
16744         * basic-float.cs: Add float->i1 conversion test.
16745
16746         * iltests.il: Add conv.u4 test.
16747
16748 2005-06-23  Zoltan Varga  <vargaz@freemail.hu>
16749
16750         * inssel-long.brg: Fix bug caused by last change.
16751
16752 2005-06-23  Geoff Norton  <gnorton@customerdna.com>
16753
16754         * mini-x86.h: Add __APPLE__ to the SC_* redefines with the other 
16755         BSDs.  Allows the x86 JIT to work on OSX86
16756
16757 2005-06-22  Zoltan Varga  <vargaz@freemail.hu>
16758
16759         * inssel-long.brg: Use OP_LSHR_UN_IMM instead of OP_SHR_UN_IMM in
16760         u4->i8 conversion.
16761
16762         * mini-ia64.c: Ongoing IA64 work.
16763
16764 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
16765
16766         * mini-ia64.c: Ongoing IA64 work.
16767
16768         * driver.c: Clean up jit_code_hash as well when using --regression.
16769
16770         * inssel-long.brg: Fix long->i4/u4 conversion rules.
16771
16772         * basic-long.cs: Add tests for long->u4 conversion.
16773
16774 2005-06-18  Ben Maurer  <bmaurer@ximian.com>
16775
16776         * mini.c: Take mono_get_domainvar out of macros. This makes sure
16777         that we do not depend on undefined C behavior: the order stuff
16778         gets evaluated within an expression. Fixes mono when compiled on
16779         GCC 4.
16780
16781 2005-06-18  Zoltan Varga  <vargaz@freemail.hu>
16782
16783         * *-ia64.*: Ongoing IA64 work.
16784
16785         * aot.c: Lower memory usage while loading AOT methods.
16786
16787         * tramp-x86.c: Avoid allocating+freeing MonoJitInfo structures.
16788
16789         * mini.h: Bump AOT file format version.
16790
16791 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
16792
16793         * mini.c (mono_method_to_ir): Allow STACK_PTR as input to SWITCH.
16794
16795 2005-06-16  Sebastien Pouliot  <sebastien@ximian.com>
16796
16797         * declsec.c: Fixed APTC to check for FullTrust on caller assembly (and
16798         not on callee assembly). Fixed some comments.
16799
16800 2005-06-16  Zoltan Varga  <vargaz@freemail.hu>
16801
16802         * aot.c (mono_compile_assembly): Mark the "methods" symbol as a function so
16803         it gets proper disassembly.
16804         (emit_method_info): Remove some dead code.
16805
16806         * mini.c (mini_method_compile): Allways allocate the GOT var in
16807         mono_method_to_ir for emulating opcodes.
16808
16809 2005-06-13  Zoltan Varga  <vargaz@freemail.hu>
16810
16811         * mini.c (mono_jit_free_method): Remove the method from the JitInfo table
16812         before freeing the code memory. Fixes #74990.
16813
16814         * objects.cs: Add regression test for #74992.
16815
16816         * liveness.c: Extend live ranges of arguments to the beginning of the
16817         method. Fixes #74992.
16818
16819         * exceptions-ia64.c mini-ia64.h: Modify ip during exception handling
16820         so it points into the faulting instruction.
16821
16822 2005-06-12  Zoltan Varga  <vargaz@freemail.hu>
16823
16824         * jit-icalls.c (mono_imul_ovf): Add exception handling.
16825
16826         * *-ia64.*: Ongoing IA64 work.
16827
16828         * mini.c (mini_init): Fix signature of mono_delegate_ctor.
16829
16830 2005-06-11  Zoltan Varga  <vargaz@freemail.hu>
16831
16832         * mini-ia64.h exceptions-ia64.c: Ongoing IA64 work.
16833
16834         * *-ia64.*: Ongoing IA64 work.
16835
16836 2005-06-10  Zoltan Varga  <vargaz@freemail.hu>
16837
16838         * basic-long.cs: Add tests for add/sub.ovf.
16839
16840         * basic.cs: Add tests for sub.ovf.
16841
16842         * *-ia64.*: Ongoing IA64 work.
16843
16844 2005-06-09  Zoltan Varga  <vargaz@freemail.hu>
16845
16846         * *-ia64.*: Ongoing IA64 work.
16847
16848         * basic.cs: Add conv.ovf.i4.un test.
16849
16850 2005-06-09  Massimiliano Mantione  <massi@ximian.com>
16851
16852         * mini.c: (remove_block_if_useless) Fixed bug 75061.
16853         
16854 2005-06-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16855
16856         * mini.c: no SIGUSR2 on windows. Remove it for PLATFORM_WIN32.
16857
16858 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
16859
16860         * *-ia64.*: Ongoing IA64 work.
16861
16862 2005-06-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16863
16864         * trace.[ch]:
16865         * mini.c: added the ability to toggle trace on/off using SIGUSR2.
16866
16867 2005-06-04  Zoltan Varga  <vargaz@freemail.hu>
16868
16869         * mini-ia64.c mini-ia64.h: Fix cleanup of memory stack.
16870
16871 2005-06-03  Zoltan Varga  <vargaz@freemail.hu>
16872
16873         * mini-amd64.c (emit_call): Fix yet another bug in the near call optimization.
16874
16875         * mini-amd64.c (amd64_patch): Add an assert to check that the destination
16876         of a call is callable by a near call.
16877
16878 2005-05-31  Zoltan Varga  <vargaz@freemail.hu>
16879
16880         * mini-ia64.c: Ongoing IA64 work.
16881
16882 2005-05-29  Zoltan Varga  <vargaz@freemail.hu>
16883
16884         * genmdesc.c: Make the generated array non-static.
16885
16886         * inssel-long.brg: Fix LSHR_IMM rule.
16887
16888         * *-ia64.*: Ongoing IA64 work.
16889
16890         * *-ia64.*: Ongoing IA64 work.
16891
16892 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
16893
16894         * *-ia64.*: Ongoing IA64 work.
16895
16896         * *-ia64.*: Ongoing IA64 work.
16897         
16898         * mini-ia64.c: Ongoing IA64 work.
16899
16900         * *-ia64.* jit-icalls.c mini-codegen.c: Ongoing IA64 work.
16901
16902 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
16903
16904         * objects.cs basic-calls.cs: Move some tests to objects.cs.
16905         
16906         * objects.cs basic-long.cs: Move some tests to objects.cs.
16907
16908 2005-05-26  Zoltan Varga  <vargaz@freemail.hu>
16909
16910         * *-ia64.*: Ongoing IA64 work.
16911
16912         * iltests.il: Add a new test.
16913
16914         * mini.c (mono_method_to_ir): Initialize valuetypes when created using
16915         newobj. Fixes #75042.
16916
16917 2005-05-22  Zoltan Varga  <vargaz@freemail.hu>
16918
16919         * *-ia64.*: Ongoing IA64 work.
16920         
16921         * *-ia64.*: Ongoing IA64 work.
16922         
16923         * *-ia64.*: Ongoing IA64 work.
16924
16925         * basic.cs objects.cs: Move tests accessing static variables as well.
16926
16927         * basic.cs objects.cs: Move test_0_pin_string to objects.cs.
16928
16929 2005-05-21  Zoltan Varga  <vargaz@freemail.hu>
16930
16931         * mini.c (SIG_HANDLER_SIGNATURE): Fix warning.
16932
16933         * driver.c: Always print failed tests.
16934
16935         * mini-codegen.c: Use cfg->frame_reg instead of a macro for the
16936         frame pointer.
16937
16938         * *ia64*: Ongoing IA64 work.
16939
16940 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
16941
16942         * basic.cs: Add tests for add.ovf. Fix warnings.
16943
16944 2005-05-18  Miguel de Icaza  <miguel@novell.com>
16945
16946         * driver.c (mono_main): Avoid crash if no argument is passed to
16947         --break;  Do not use g_error, but f_printf.   And fix all other
16948         ocurrences of the same crash.
16949
16950 2005-05-17  Zoltan Varga  <vargaz@freemail.hu>
16951
16952         * mini.h mini.c: Generalize the existing uses of the MONO_DEBUG env variable
16953         and add a new one: aborting when a SIGSEGV is raised while in unmanaged code.
16954         Fixes #74742.
16955
16956 2005-05-14  Zoltan Varga  <vargaz@freemail.hu>
16957
16958         * *-ia64.*: Add beginnings of IA64 backend.
16959
16960         * Makefile.am mini-arch.h mini-codegen.c: Add IA64 support.     
16961
16962 2005-05-13  Zoltan Varga  <vargaz@freemail.hu>
16963
16964         * inssel-long.brg: Add missing ulong->{i1, i2} checked conversions.
16965         Fixes #74925.
16966
16967         * basic-long.cs exceptions.cs: Add new tests. Fix some warnings.
16968
16969         * mini-amd64.c: Fix a warning.
16970
16971 2005-05-10  Zoltan Varga  <vargaz@freemail.hu>
16972
16973         * mini-amd64.c (mono_arch_output_basic_block): Fix stack space leakage
16974         in float_neg. Fixes #74897.
16975
16976         * mini-amd64.c (emit_call): Fix another near call bug.
16977
16978 2005-05-06  Sebastien Pouliot  <sebastien@ximian.com>
16979
16980         * declsec.c: Keep the appdomain information in the structure. Added a 
16981         missing "return FALSE" for Unmanaged if FullTrust is set (or else the
16982         value gets overwritten).
16983         * declsec.h: Set the default MonoArray for the the stack to 6. Added
16984         an MonoAppDomain member to MonoSecurityFrame.
16985         * mini-exceptions.c: Do not use a glist to keep GC allocated objects
16986         used in the stack walk. Now use a MonoArray which grow (double) when
16987         it gets full.
16988
16989 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
16990
16991         * mini.c: Re-enabled runtime cleanup, since running threads should
16992         now properly stop when exiting.
16993
16994 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
16995
16996         * mini-codegen.c: New file contaning the arch-independent local
16997         register allocator. Not used by any architectures yet.
16998
16999         * mini.h linear-scan.c: Merge some changes from the 
17000         mini-xp-local-regalloc branch.
17001
17002 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
17003
17004         * mini-amd64.c (emit_call): Fix calls to native functions when the
17005         runtime is compiled as a shared library. Fixes #74756.
17006
17007         * mini.c (mono_method_to_ir): Assert if ldsfld and friends are used
17008         on a literal field. Fixes #74751.
17009
17010 2005-04-25  Raja R Harinath  <rharinath@novell.com>
17011
17012         * Makefile.am (RUNTIME): Add MONO_CFG_DIR.
17013
17014 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
17015
17016         * objects.cs: Add missing null casting test.
17017
17018 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
17019
17020         * mini-exceptions.c (mono_find_jit_info): Fix native offset calculation
17021         in wrapper methods. Also rename 'address' variable to 'offset'.
17022
17023 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
17024
17025         * mini.c debug-mini.c aot.c tramp-x86.c driver.c: Fix some gcc 4.0
17026         warnings.
17027         
17028         * Makefile.am (MCS): Use -unsafe instead of --unsafe.
17029
17030         * aot.c: Applied patch from "The Software Team" <software@solmersa.com>. Make AOT compilation
17031         work on windows.
17032
17033 Mon Apr 18 16:20:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
17034
17035         * exceptions-ppc.c: update code to handle stack traces (fixes bug #74452).
17036
17037 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
17038
17039         * mini-x86.c (mono_emit_stack_alloc): Initialize the whole allocated area not
17040         just the last bytes.
17041
17042 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
17043
17044         * aot.c (mono_compile_assembly): Fix warning.
17045
17046         * mini-exceptions.c (ves_icall_get_frame_info): Fix bug introduced
17047         by the _MSC_VER stuff.
17048
17049 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
17050
17051         * inssel-long.brg: Fix #74588.
17052
17053         * cpu-amd64.md: Fix #74591.
17054
17055         * iltests.il: Add new regression tests.
17056
17057 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
17058
17059         * trace.c (mono_trace_enter_method): Print enums as an int, not as a
17060         valuetype.
17061
17062 2005-04-11  Zoltan Varga  <vargaz@freemail.hu>
17063
17064         * mini-x86.c (setup_stack): Unconditionally call pthread_attr_init ().
17065
17066         * exceptions-x86.c mini-x86.h mini-x86.c: Applied some freebsd patches 
17067         from Bill Middleton <flashdict@gmail.com>.
17068
17069 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
17070
17071         * arrays.cs: Add new regression test. Fix warnings.
17072
17073 2005-04-09  Zoltan Varga  <vargaz@freemail.hu>
17074
17075         * mini-amd64.c (mono_arch_output_basic_block): Fix stack alignment
17076         and leakage in CKFINITE.
17077
17078         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Change
17079         this to a null op since it is called on amd64 too.
17080
17081         * exceptions-amd64.c (get_throw_trampoline): Align stack.
17082
17083         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Remove
17084         body since this is not used on amd64.
17085         
17086         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Remove duplicate define.
17087
17088         * mini-amd64.c: Remove obsolete fixmes.
17089
17090         * mini.c (print_method_from_ip): Fix debugging support.
17091
17092 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
17093
17094         * ssapre.c: Fix a subtle bug about availability, and limit SSAPRE
17095         so that expressions that don't give much gain are not reduced.
17096         * ssapre.h: Likewise.
17097
17098 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
17099
17100         * exceptions-x86.c (mono_arch_find_jit_info): Remove last SC_EBP reference.
17101
17102         * mini-x86.c (mono_emit_stack_alloc): Fix localloc under windows.
17103
17104         * mini-x86.h exceptions-x86.c: Hopefully fix compilation on *BSD.
17105
17106 2005-04-01  Zoltan Varga  <vargaz@freemail.hu>
17107
17108         * mini-sparc.c mini-sparc.h: Add asserts when running with sigaltstack.
17109
17110         * exceptions-x86.c (mono_arch_monoctx_to_sigctx): Fix cygwin build.
17111
17112 2005-03-31  Zoltan Varga  <vargaz@freemail.hu>
17113
17114         * mini-x86.c: If sigaltstack support is enabled, perform win32 style
17115         stack touching.
17116
17117         * mini.h (mono_arch_sigctx_to_monoctx): New arch-specific function.
17118
17119         * mini.h (mono_arch_monoctx_to_sigctx): New arch-specific function.
17120
17121         * mini.c: sigaltstack support requires MONO_ARCH_USE_SIGACTION.
17122
17123         * mini-x86.h mini-x86.c exceptions-x86.c: Add support for 
17124         MONO_ARCH_USE_SIGACTION. Fixes #74252.
17125
17126         * mini-x86.h: Enable MONO_ARCH_USE_SIGACTION on linux.
17127
17128         * mini-x86.c: Fix up stack overflow handling.   
17129
17130         * exceptions.cs: Add new regression test.
17131
17132 2005-03-30  Zoltan Varga  <vargaz@freemail.hu>
17133
17134         * mini-x86.c (mono_arch_emit_prolog): Adjust stack after calls to
17135         mono_jit_thread_attach.
17136
17137         * mini.c (mono_method_to_ir): Verify called method is not abstract.
17138
17139 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
17140
17141         * mini.c (mono_method_to_ir): Applied Ben's patch from bug #61441 to
17142         avoid calling constructors using callvirt.
17143
17144         * inssel.brg: Fix #74073.
17145
17146 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
17147
17148         * aot.c, mini.h: Added mono-compiler.h header to allow/ease 
17149         compilation with non-GCC compilers.
17150         * mini-exceptions.c, mini-x86.c|h: Patches to make compilation of mono
17151         possible using VS.NET. Adapted from the work of J Lothian (for VC6).
17152
17153 Tue Mar 29 11:43:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
17154
17155         * inssel.brg, arrays.cs: fix long standing 64 bit issue in access to
17156         klass->interface_offsets (will likely fix bug#74073).
17157
17158 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
17159
17160         * mini-amd64.c (mono_arch_is_int_overflow): Fix rex handling.
17161
17162 2005-03-28  Zoltan Varga  <vargaz@freemail.hu>
17163
17164         * mini-amd64.c (mono_arch_output_basic_block): Fix order of parameters
17165         to amd64_div_reg_size ().
17166         
17167         * mini-amd64.c (mono_arch_emit_exceptions): Emit a near call here too.
17168
17169 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
17170
17171         * cpu-amd64.md (store_membase_reg): Fix length of storer8 opcodes.
17172
17173 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
17174
17175         * driver.c: Turn off automatic command line globbing under windows. Fixes #73763.
17176
17177 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
17178
17179         * mini.c (mono_method_to_ir): Remove debugging stuff left in by mistake.
17180         
17181         * mini.c (mono_precompile_assembly): Load and precompile referenced
17182         assemblies as well. Fixes #74015.
17183
17184 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
17185
17186         * cpu-amd64.md (sin): Fix up maximum lengths of some opcodes.
17187
17188 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
17189
17190         * declsec.c: Skip linkdemand checks for intra-corlib calls. This skips
17191         a lot of checks and (anyway) permissions cannot work until corlib is 
17192         loaded.
17193
17194 Wed Mar 23 14:29:49 CET 2005 Paolo Molaro <lupus@ximian.com>
17195
17196         * mini-ppc.c: fixed ABI issue on sysv/ppc.
17197
17198 Tue Mar 22 19:03:17 CET 2005 Paolo Molaro <lupus@ximian.com>
17199
17200         * tramp-ppc.c, exceptions-ppc.c: added missing icache flush
17201         calls (fixes bug#72824).
17202
17203 Tue Mar 22 16:28:48 CET 2005 Paolo Molaro <lupus@ximian.com>
17204
17205         * mini.c: fix tail recursion elimination (see test in bug#73936).
17206
17207 2005-03-21  Zoltan Varga  <vargaz@freemail.hu>
17208
17209         * mini-amd64.c (mono_arch_output_basic_block): Add inline versions of
17210         some fp functions in sse2 mode.
17211
17212 2005-03-20  Zoltan Varga  <vargaz@freemail.hu>
17213
17214         * mini-x86.c (emit_tls_get): Move tls handling into a separate helper function.
17215
17216 2005-03-19  Zoltan Varga  <vargaz@freemail.hu>
17217
17218         * mini.h mini.c: Add mono_get_jit_tls_key ().
17219
17220         * mini-x86.c: Enable fast TLS support on windows.
17221
17222 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
17223
17224         * declsec.c: Renamed aptc to allowpartiallytrustedcallers.
17225         * mini.c: Check for p/invoke method when generating code. If a
17226         p/invoke method, or it's class, isn't decorated with [Suppress
17227         UnmanagedCodeSecurity] then generate code to call System.Security.
17228         UnmanagedDemand (only if the security manager is active).
17229
17230 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
17231
17232         * tramp-amd64.c (create_specific_trampoline): Revert parts of the 
17233         last change as it seems to cause strange crashes.
17234         
17235 Wed Mar 16 16:24:11 CET 2005 Paolo Molaro <lupus@ximian.com>
17236
17237         * *.c: handle unsafe function pointers where needed.
17238
17239 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
17240
17241         * mini.c (mono_jit_free_method): Remove the fixme too.
17242
17243 2005-03-15  Miguel de Icaza  <miguel@novell.com>
17244
17245         * mini.c: As discussed, make the code actually free the delegate
17246         thunk now, to enable the debugging of delegate problems, use
17247         MONO_DEBUG=1 when running Mono. 
17248
17249         This takes also care of parts of the leaks as seen by Joe.
17250
17251 2005-03-15  Zoltan Varga  <vargaz@freemail.hu>
17252
17253         * mini-amd64.c (mono_arch_setup_jit_tls_data): Enable 
17254         thread_tls_offset calculation.
17255
17256 2005-03-14  Sebastien Pouliot  <sebastien@ximian.com>
17257
17258         * declsec.c: Reworked linkdemand checks for icall. The previous code
17259         was using the declaration code (untrusted) and didn't work as expected
17260         with the CLR 2.0. We're now more compatible with 2.0 than 1.x for this
17261         specific case.
17262
17263 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
17264
17265         * iltests.il: Add new localloc test.
17266
17267         * mini-amd64.c: Handle large stack allocations the same way as on
17268         windows if stack overflow handling is working.
17269         
17270         * mini-amd64.c: Allocate the signal stack using mmap.
17271
17272         * mini.c (sigsegv_signal_handler): Fix reading of context.
17273
17274         * mini-exceptions.c: Fix up stack overflow handling.
17275
17276         * mini-amd64.h mini-amd64.c: Fix up stack overflow handling.
17277
17278         * tramp-amd64.c (create_specific_trampoline): Optimize trampoline size.
17279
17280         * exceptions-amd64.c (mono_amd64_exceptions_init): Remove this.
17281
17282         * mini.h mini.c tramp-*.c: Move common trampoline code to mini.c.
17283
17284         * mini-x86.h mini-x86.c mini-amd64.h mini-amd64.c: Get rid of the
17285         tramp_init functions as they are no longer needed.
17286
17287 2005-03-12  Zoltan Varga  <vargaz@freemail.hu>
17288
17289         * tramp-amd64.c (mono_amd64_tramp_init): Fix typo.
17290         
17291         * tramp-amd64.c (mono_amd64_tramp_init): Init AOT trampoline as well.
17292
17293         * mini-amd64.h mini-amd64.c (mono_amd64_exceptions_init): Remove this.
17294         
17295         * mini.c mini-*.h: Remove OUT_OF_LINE_BBLOCK defines since all arches
17296         support that now.
17297
17298         * mini-ops.h: Add OP_LMUL_IMM.
17299
17300         * mini.c jit-icalls.cmini-amd64.h mini-amd64.c cpu-amd64.md: Implement
17301         long mul/div opcodes as intrinsic.
17302
17303         * mini-amd64.c (emit_call): Handle the case when the callee might be
17304         an AOT method.
17305
17306 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
17307
17308         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Reorder cases to be
17309         extra safe.
17310         
17311         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Fix ordering of cases.
17312
17313         * aot.c (mono_aot_load_method): Get rid of bogus make_writable call.
17314
17315 2005-03-09  Ben Maurer  <bmaurer@ximian.com>
17316
17317         * mini.c (mono_codegen): Don't leak here, to help people running
17318         monogrind.
17319
17320 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
17321
17322         * mini-amd64.c (mono_arch_output_basic_block): Fix int->float 
17323         conversions in sse2 mode.
17324
17325         * basic-float.cs: Add regression test.
17326         
17327         * mini-amd64.c: Reenable sse2.
17328
17329 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
17330
17331         * mini-amd64.c: Disable sse2 until some regressions are fixed.
17332
17333 2005-03-07      Joerg Rosenkranz <joergr@voelcker.com>
17334
17335         * driver.c: Copyright text should include 2005.
17336         
17337 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
17338
17339         * cpu-amd64.md (load_membase): Fix more max lengths.
17340
17341 2005-03-06  Zoltan Varga  <vargaz@freemail.hu>
17342
17343         * cpu-amd64.md (load_membase): Fix max length.
17344
17345         * mini-ops.h: Add OP_F<xx>_MEMBASE opcodes.
17346
17347         * inssel.brg: Add MONO_EMIT_BIALU_MEMBASE macro.
17348
17349         * cpu-amd64.md inssel-amd64.brg mini-amd64.h mini-amd64.brg: Finish SSE2
17350         support and enable it by default. Also add OP_F<xxx>_MEMBASE opcodes.
17351
17352         * basic-float.cs: Add rounding regression test.
17353
17354         * mini-amd64.c (INST_IGNORES_CFLAGS): Add more instructions.
17355
17356 2005-03-04  Neale Ferguson <NealeFerguson@earthlink.net>
17357
17358         * inssel-s390.brg, mini-s390.c: Add support for passing/returning small
17359         structures in registers for pinvoke wrappers.
17360
17361 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
17362
17363         * mini-exceptions.c (ves_icall_get_trace): Return wrapper info as well.
17364
17365 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
17366
17367         * mini.h mini.c mini-x86.c: Pass the domain of the native->managed
17368         wrapper to mono_jit_thread_attach.
17369
17370         * mini.c (mini_jit_thread_attach): New jit icall.
17371
17372         * mini-x86.c (mono_arch_emit_prolog): Attach to the VM in 
17373         native->managed wrappers.
17374
17375         * exceptions.cs: Add new regression test.
17376
17377         * mini.c (optimize_branches): Check regions in the cbranch to throw
17378         block case as well. Fixes #73242.
17379
17380 Tue Mar 1 18:35:27 CET 2005 Paolo Molaro <lupus@ximian.com>
17381
17382         * mini.c: thread safety fixes.
17383
17384 2005-02-27  Zoltan Varga  <vargaz@freemail.hu>
17385
17386         * tramp-amd64.c (amd64_magic_trampoline): Disable the method_ptr
17387         patching stuff, since delegates use jump trampolines so there is
17388         no caller.
17389
17390         * tramp-amd64.c (create_trampoline_code): Pass NULL as 'code' in 
17391         jump trampolines.
17392         
17393         * tramp-amd64.c: Fix build.
17394
17395         * mini-x86.c tramp-x86.c: Moved get_vtable_slot_addr into mini-x86.c and rename
17396         it to mono_arch_.... Add get_delegate_method_ptr implementation for x86.
17397
17398         * mini-amd64.h mini.h mini-amd64.c tramp-amd64.c (mono_amd64_get_vcall_slot_addr):
17399         Rename this to mono_arch....
17400         (mono_amd64_get_delegate_method_ptr_addr): Ditto.
17401
17402         * mini-amd64.c (mono_amd64_get_delegate_method_ptr_addr): New helper function.
17403
17404         * mini-amd64.c (emit_call): If both the caller and the callee is
17405         guaranteed to have 32 bit addresses, emit a normal call.
17406
17407         * tramp-amd64.c: Adapt to changes in mini-amd64.c.
17408
17409         * tramp-amd64.c (amd64_magic_trampoline): Remove patching of trampolines. 
17410         * tramp-amd64.c (amd64_magic_trampoline): Add support for patching the
17411         method_ptr inside delegates.
17412
17413 2005-02-26  Zoltan Varga  <vargaz@freemail.hu>
17414
17415         * mini.c (mono_jit_free_method): Free the method info even if the native code is
17416         invalidated. Fixes #73001.
17417
17418         * mini.c: Add a proper icall wrapper for mono_delegate_ctor.
17419
17420         * mini-x86.c: Only use stdcall for pinvokes on windows.
17421
17422 Thu Feb 24 15:22:30 CET 2005 Paolo Molaro <lupus@ximian.com>
17423
17424         * mini.c, mini.h: make mono_lmf_addr a fast-access thread var.
17425         * mini-x86.c: remove unreliable __thread var offset detection,
17426         use the correct accessors and enable by default.
17427
17428 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
17429
17430         * mini.c (mono_jit_free_method): Fix memory leak.
17431
17432 2005-02-22  Zoltan Varga  <vargaz@freemail.hu>
17433
17434         * mini.c (mono_method_to_ir): Allocate a GOT var for THROW and RETHROW. 
17435
17436 2005-02-21  Zoltan Varga  <vargaz@freemail.hu>
17437
17438         * cpu-amd64.md: Fix lengths of atomic opcodes.
17439
17440 Mon Feb 21 16:52:20 CET 2005 Paolo Molaro <lupus@ximian.com>
17441
17442         * driver.c: try to not imply using ICU is any good.
17443
17444 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
17445
17446         * mini-amd64.c (mono_arch_get_inst_for_method): Implement more 
17447         functions as inline ops.
17448
17449         * mini-ops.h inssel-amd64.brg cpu-amd64.md mini-amd64.c: Implement
17450         some Interlocked functions as inline ops.
17451
17452         * mini.c (move_basic_block_to_end): Fix bug in last patch.
17453
17454         * mini.h (MonoBasicBlock): Reorganize fields a bit.
17455
17456         * mini-ops.h inssel.brg: Add OP_NOT_REACHED.
17457
17458         * mini.c: Add support for OP_NOT_TAKEN.
17459
17460         * mini-amd64.h mini-amd64.c: Add support for passing/returning small 
17461         structures in registers for pinvoke wrappers.
17462
17463         * mini-amd64.c: Fix warnings.
17464
17465 2005-02-19  Zoltan Varga  <vargaz@freemail.hu>
17466
17467         * mini.h (MonoCompile): Add 'ret_var_is_local' field.
17468
17469         * mini.h mini.c (mono_arch_create_vars): Add new arch specific hook.
17470
17471         * mini.c (NEW_RETLOADA): If the ret variable is a local, use its 
17472         address instead of loading the address from it.
17473
17474         * mini-x86.c: Add support for returning small structs in registers
17475         on Win32. Fixes part of #70864.
17476         
17477 2005-02-18  Zoltan Varga  <vargaz@freemail.hu>
17478
17479         * trace.c (get_token): Improve error checking.
17480
17481 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
17482
17483         * jit-icalls.c (mono_ldvirtfn): Explicitly check for a NULL obj here.
17484
17485 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com> 
17486  
17487         * mini.h: Moved MONO_EXCEPTION_* enum to metadata/class-internals.h so
17488         it can be reused for MonoClass.
17489         * mini.c: Renamed MONO_EXCEPTION_SECURITY to MONO_EXCEPTION_SECURITY
17490         _LINKDEMAND.
17491
17492 2005-02-15  Sebastien Pouliot  <sebastien@ximian.com>
17493
17494         * mini.c: Fixed 2 cases where I sent a MonoMethod to managed code 
17495         instead of a MonoReflectionMethod. The method information wasn't used
17496         when displaying SecurityException details (but will be now).
17497
17498 2005-02-15  Atsushi Enomoto  <atsushi@ximian.com>
17499
17500         * Makefile.am : windows build fix.
17501
17502 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
17503
17504         * iltests.il: Add new regression test.
17505
17506         * mini.c (mono_method_to_ir): Allocate a GOT var in CEE_NEWOBJ. Fixes
17507         #72522.
17508
17509 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com> 
17510  
17511         * mini.c: Moved linkdemand check into helper function check_linkdemand
17512         to allow reuse for all intructions (CALL, CALLVIRT, NEWOBJ, JMP, 
17513         LDFTN, LDVIRTFTN).
17514
17515 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com>
17516
17517         * declsec.c: Added statistics counter for different kinds of 
17518         LinkDemands.
17519         * mini.h: Added CAS statistic counters to MonoJitStats. Removed unused
17520         (and commented) declaration.
17521         * mini.c: Added statistics counter for security Demand code 
17522         generation. Added display of security statistics.
17523
17524 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
17525
17526         * declsec.c (mono_declsec_linkdemand_aptc): Applied patch from Robert Jordan (robertj@gmx.net).
17527         Fix compilation errors under gcc-2.95.
17528
17529 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
17530
17531         * mini.c, driver.c: Use the new jit trampoline hashtable
17532
17533 Fri Feb 11 18:47:11 CET 2005 Paolo Molaro <lupus@ximian.com>
17534
17535         * mini.c, jit-icalls.c: use the managed implementation of memcpy, too.
17536
17537 2005-02-11  Martin Baulig  <martin@ximian.com>
17538
17539         * debug-mini.c (mono_debug_close_method): Free the line number array.
17540
17541 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
17542
17543         * aot.c: Break up large methods into smaller ones. Share GOT slots for
17544         icalls.
17545
17546         * mini.h: Bump AOT file format version. 
17547
17548 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
17549
17550         * declsec.c: Added LinkDemand support and it's special cases for ECMA,
17551         APTC and P/Invoke.
17552         * declsec.h: Added macros to get/set lazyly initialized security 
17553         informations about assemblies. Added new enum for different type of
17554         possible LinkDemand violation. Added function to check LinkDemands.
17555         * mini.h: Added a field to MonoCompile to hold any security violation
17556         detected when JITting a method (so it can be thrown later).
17557         * mini.c: Added LinkDemand checks in mono_method_to_ir for CEE_CALL 
17558         and CEE_CALLVIRT. Added code to throw exception at the end of
17559         mini_method_compile (note: the exception is unhandled right now).
17560
17561 Thu Feb 10 15:49:44 CET 2005 Paolo Molaro <lupus@ximian.com>
17562
17563         * mini.c, jit-icalls.c: use the managed implementation of
17564         memset for initobj and memset, to avoid managed <-> unmanaged
17565         transitions.
17566
17567 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
17568
17569         * inssel.brg (mini_emit_virtual_call): Disable the virtual->nonvirtual
17570         optimization if it would need a GOT var.
17571
17572         * basic.cs: Add tests for constant propagation and switch statements.
17573
17574         * ssa.c: Fix out-of-range constant propagation and switch statements.
17575
17576 2005-02-09    <vargaz@freemail.hu>
17577
17578         * inssel-x86.brg (reg): Align the allocation size in the localloc(imm) case too.
17579
17580 2005-02-08  Zoltan Varga  <vargaz@freemail.hu>
17581
17582         * cpu-amd64.md (load_membase): Fix max length of load_membase.
17583
17584 Tue Feb 8 18:21:11 CET 2005 Paolo Molaro <lupus@ximian.com>
17585
17586         * mini.c: update to new signature of mono_class_get_allocation_ftn().
17587
17588 2005-02-06  Neale Ferguson <NealeFerguson@earthlink.net>
17589
17590         * cpu-s390.md,  mini-s390.c: Correct bug with register usage on certain 
17591         arithmetic operations.
17592
17593 Sun Feb 6 07:10:12 EST 2005 Paolo Molaro <lupus@ximian.com>
17594
17595         * mini-ppc.c: add a workaround for broken user code that
17596         DllImports vararg functions with non-vararg signatures.
17597
17598 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
17599
17600         * mini.c (mono_jit_compile_method_inner): Add detection and a 
17601         meaningfull error message for assemblies written in Managed C++.
17602
17603         * tramp-amd64.c mini-amd64.h: Add support for 
17604         create_trampoline_from_token ().
17605
17606         * aot.c mini-x86.c abcremoval.c: Applied patch from
17607         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
17608
17609 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
17610
17611         * mini.h mini.c mini-x86.h tramp-x86.c: Add a new kind of trampoline 
17612         which takes a MonoImage/token as parameter instead of a MonoMethod.
17613
17614         * aot.c: Use the new trampoline for initializing vtables.
17615
17616         * aot.c: Add support for ldfld/stfld_remote wrappers.
17617
17618         * mini-ops.h cpu-pentium.md inssel-x86.brg mini-x86.c: Add optimized
17619         rules for compare <MEM>, IMM.
17620
17621         * mini.h (MONO_AOT_FILE_VERSION): Bump it.
17622
17623         * aot.c: Handle inherited finalizers correctly.
17624
17625 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
17626
17627         * inssel.brg (stmt): Add a missing _setup_... ().
17628
17629         * aot.c: Save some parts of the class state to the AOT file and use it
17630         to recompute that state when a class is initialized.
17631
17632         * mini.c: Install AOT hooks into the runtime.
17633
17634         * mini.h: Bump AOT file format version.
17635         
17636         * mini.c (mono_method_to_ir): Initialize pointer type locals correctly.
17637         Fixes #72148.
17638
17639         * iltests.il: Add new test.
17640
17641 Wed Feb 2 16:53:59 CET 2005 Paolo Molaro <lupus@ximian.com>
17642
17643         * mini.c: fix typo.
17644
17645 Wed Feb 2 16:37:13 CET 2005 Paolo Molaro <lupus@ximian.com>
17646
17647         * mini.c: setup the statistical profiler in the thread attach
17648         callback to cope with the new single thread code.
17649
17650 Wed Feb 2 15:43:58 CET 2005 Paolo Molaro <lupus@ximian.com>
17651
17652         * mini-ppc.c: ensure we have enough room for the profiler
17653         calls (fixed bug#72084).
17654
17655 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
17656
17657         * aot.c: Get rid of the MonoAotMethod structure and the hashtable holding 
17658         it.
17659
17660 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
17661
17662         * driver.c: Re-enabled SSAPRE (two commits, I was just dumb).
17663
17664 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
17665
17666         * ssapre.c: Fixed an issue with down safety (this allows IronPython
17667         to succesfully execute parrotbench).
17668         * ssapre.h: Likewise.
17669
17670 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
17671
17672         * ssa.c: In mono_ssa_rename_vars, forced the creation of a new SSA
17673         variable for stores to method arguments (fixes a SSAPRE issue).
17674
17675 Tue Feb 1 15:52:26 CET 2005 Paolo Molaro <lupus@ximian.com>
17676
17677         * mini.c: handle value types in dup, fixes gen-112.cs.
17678
17679 Tue Feb 1 11:45:19 CET 2005 Paolo Molaro <lupus@ximian.com>
17680
17681         * mini-ppc.c, cpu-g4.md, tramp-ppc.c: use a slower code
17682         sequence for calls in dynamic methods to avoid thunks.
17683
17684 Tue Feb 1 11:44:01 CET 2005 Paolo Molaro <lupus@ximian.com>
17685
17686         * mini.c: correctly remove dynamic methods from the hashtable.
17687
17688 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
17689
17690         * driver.c: Disabled SSAPRE until fix the bug that appears
17691         in IronPython's parrotbench.
17692
17693 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
17694
17695         * aot.c (mono_compile_assembly): Get rid of Skip (other) messages.
17696
17697         * mini.c (mono_method_to_ir): Revert the previous change.
17698         
17699         * mini.c (mono_method_to_ir): Do not inline ldfld and stfld wrappers
17700         when AOT compiling.
17701
17702         * tramp-x86.c (x86_magic_trampoline): Avoid calls to 
17703         mono_jit_info_table_find () etc. when running under valgrind.
17704
17705         * inssel.brg: Fix warnings.
17706
17707         * mini-exceptions.c: Fix warnings.
17708
17709 2005-01-31  Martin Baulig  <martin@ximian.com>
17710
17711         * driver.c (compile_all_methods_thread_main): Don't try to compile
17712         generic methods or anything which has type parameters.
17713
17714 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
17715
17716         * aot.c: Avoid costly calls to mono_method_full_name in tracing code and fix memory leaks.
17717
17718         * TestDriver.cs: Add --verbose flags.
17719
17720         * graph.c ssa.c: Fix 64 bit warnings.
17721         
17722         * abcremoval.h ssapre.h abcremoval.c ssapre.c mini.c tramp-amd64.c 
17723         trace.c mini-exceptions.c linear-scan.c inssel-amd64.brg inssel.brg:
17724         Fix 64 bit warnings.
17725
17726         * mini-amd64.c (mono_arch_output_basic_block): Fix uninitialized
17727         variable not spotted by gcc.
17728         
17729         * mini-amd64.c inssel-amd64.brg: Applied patch from  
17730         Willibald Krenn <Willibald.Krenn@gmx.at>. Clean up usage of 
17731         X86_COMPARE_MEMBASE opcodes.
17732
17733         * exceptions-amd64.c (mono_arch_find_jit_info): Fix AMD64 build.
17734
17735 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
17736
17737         * *: MonoMethod->signature might be NULL now. You *MUST* use
17738         mono_method_signature.
17739
17740 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
17741
17742         * driver.c (compile_all_methods_thread_main): Compile the methods
17743         without invoking cctors.
17744
17745 Fri Jan 28 18:28:26 CET 2005 Paolo Molaro <lupus@ximian.com>
17746
17747         * mini.c: remove ben's "optimizations" to dup+stloc (bug #71905).
17748         * basic-calls.cs: test for the above.
17749
17750 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
17751
17752         * mini.c mini-exceptions.c aot.c exceptions-*.c: Update after 
17753         MonoJitInfo changes.
17754
17755 2005-01-27  Zoltan Varga  <vargaz@freemail.hu>
17756
17757         * mini-exceptions.c (mono_handle_exception): Compute the stack trace
17758         eagerly if it contains dynamic methods.
17759         
17760         * mini-exceptions.c (ves_icall_System_Exception_get_trace): New icall.
17761
17762         * mini-exceptions.c (mono_handle_exception): Avoid computing the stack
17763         trace, it is now computed by an icall from trace_ips.
17764         
17765         * mini-exceptions.c: Fix a warning.
17766
17767 Thu Jan 27 13:38:34 CET 2005 Paolo Molaro <lupus@ximian.com>
17768
17769         * mini-exceptions.c: don't bother getting stack trace info if
17770         it's not going to be used.
17771
17772 2005-01-27  Raja R Harinath  <rharinath@novell.com>
17773
17774         * Makefile.am (common_sources): Add ssapre-cee-ops.h and
17775         ssapre-mini-ops.h.
17776
17777 2005-01-26  Zoltan Varga  <vargaz@freemail.hu>
17778
17779         * mini.c (remove_block_if_useless): Only print debug stuff with -v -v.
17780
17781         * aot.c: Avoid calling mono_method_get_header () if not needed.
17782
17783         * mini.h: Bump AOT file format version.
17784         
17785         * mini.c (mono_emit_native_call): Allocate a GOT var here.
17786
17787         * mini.c (mono_print_tree): Print more info for calls.
17788
17789 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
17790
17791         * declsec.h: Remove warning by adding missing include for marshal.h
17792
17793 2005-01-26  Martin Baulig  <martin@ximian.com>
17794
17795         * mini.c (mono_method_to_ir): In CEE_UNBOX_ANY, don't increase
17796         `ip' twice.
17797
17798 2005-01-25  Zoltan Varga  <vargaz@freemail.hu>
17799
17800         * mini-amd64.c (mono_arch_call_opcode): Add missing MONO_SSA_LOAD/STORE
17801         flags.
17802
17803         * ssa.c (mono_ssa_compute): Fix crashes when using AOT.
17804
17805         * aot.c (mono_compile_assembly): Fix a warning.
17806
17807 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com>
17808
17809         * declsec.c: Look for security attributes on the original MonoMethod 
17810         (and not the wrapped one). This fix permissions on icalls.
17811
17812 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
17813
17814         * mini-amd64.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
17815
17816         * mini.c (mono_allocate_stack_slots): Add a fixme.
17817
17818         * mini-x86.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
17819
17820 Sun Jan 23 16:16:48 CET 2005 Paolo Molaro <lupus@ximian.com>
17821
17822         * inssel.brg: optimize casts of sealed types (more
17823         optimizations waiting for fixes in remoting).
17824
17825 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
17826
17827         * inssel.brg (stmt): Add another dummy rule.
17828
17829         * driver.c: Fix warnings.
17830
17831         * driver.c (mono_main): If running under valgrind, instruct glib to use
17832         the system allocation functions so valgrind can track the memory
17833         allocated by the g_... functions.
17834
17835         * inssel.brg (stmt): Add DUMMY rule for OP_DUMMY_STORE.
17836
17837         * mini-ops.h: Add OP_DUMMY_STORE opcode.
17838
17839         * mini.h (MONO_BBLOCK_IS_IN_REGION): New helper macro.
17840
17841         * liveness.c: Handle OP_DUMMY_STORE. Enable register allocation for
17842         variables in try regions.
17843
17844         * mini.c (mini_method_compile): Don't disable optimizations on large
17845         methods when AOT compiling.
17846
17847         * mini.c (mono_allocate_stack_slots): New arch independent method to 
17848         allocate stack slots. Not yet used.
17849
17850 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
17851
17852         * debug-mini.c (mono_debug_close_method): Plug some leaks.
17853
17854 Sat Jan 22 13:41:51 EST 2005 Paolo Molaro <lupus@ximian.com>
17855
17856         * mini-ppc.c: make the branch info relative as the code
17857         buffer can be reallocated.
17858
17859 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
17860
17861         * aot.c: Allow decoding of the new  MONO_PATCH_INFO_DECLSEC.
17862         * driver.c: Removed the AOT/security restriction. Now initialize the
17863         security manager (in metadata) if --security is used.
17864         * mini.c|h: Add the MONO_PATCH_INFO_DECLSEC code to use the index,
17865         rather than the pointer to declarative security, when AOT is used.
17866
17867 Sat Jan 22 09:35:19 EST 2005 Paolo Molaro <lupus@ximian.com>
17868
17869         * mini.h, mini-ppc.h, mini-ppc.c: updated to use out of line
17870         basic blocks, reduced intrinsic exception throwing code size.
17871
17872 2005-01-22  Miguel de Icaza  <miguel@ximian.com>
17873
17874         * driver.c (mini_usage): Reorder the usage screen.
17875
17876 2005-01-21  Zoltan Varga  <vargaz@freemail.hu>
17877
17878         * mini.c (mono_resolve_patch_target): Fix warning.
17879
17880 2005-01-20  Zoltan Varga  <vargaz@freemail.hu>
17881
17882         * mini-x86.c (mono_arch_local_regalloc): Fix bug introduced by
17883         previous patch.
17884
17885         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
17886
17887         * mini-amd64.c (mono_arch_local_regalloc): Revert last patch as it
17888         breaks the amd64 build.
17889
17890         * mini-x86.c (mono_arch_local_regalloc): Fix bug in div/rem 
17891         register allocation. Fixes #71454.
17892
17893         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
17894
17895         * arrays.cs: Add new regression test.   
17896
17897 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
17898
17899         * ssapre.c: Turned usage of snprintf to GString.
17900         * ssapre.h: disabled MONO_APPLY_SSAPRE_TO_SINGLE_METHOD
17901         (I left it on by mistake in my previous commit).
17902
17903 Thu Jan 20 12:00:45 CET 2005 Paolo Molaro <lupus@ximian.com>
17904
17905         * mini.c, cfold.c, basic-calls.cs: preserve side effects
17906         on cond branch optimization (fixes bug# 71515).
17907
17908 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
17909
17910         * abcremoval.c: Fixed bug 71062.
17911         * abcremoval.h: Likewise.
17912
17913 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
17914
17915         * mini.c: Added a new functionality to optimize_branches, the removal
17916         of useless basic blocks, and fixed some problem in the removal of
17917         critical edges; some utility functions added for both purposes.
17918         * ssapre.c: Added complex expression support, and fixed bug 70637.
17919         * ssapre.h: Likewise.
17920         * ssapre-cee-ops.h: Added file with list of "CEE_*" opcodes
17921         enabled in SSAPRE.
17922         * ssapre-mini-ops.h: Likewise, but for "OP_*" opcodes.
17923         * driver.c: Re-enabled SSAPRE.
17924
17925 2005-01-19  Martin Baulig  <martin@ximian.com>
17926
17927         * mini.c (mono_method_to_ir): Call mono_get_inflated_method() on
17928         the result of mono_get_method_constrained().
17929
17930 2005-01-18  Neale Ferguson <NealeFerguson@earthlink.net>
17931
17932         * exceptions-s390.c tramp-s390.c: Allocate code using the global code
17933         manager.
17934
17935 2005-01-18  Geoff Norton  <gnorton@customerdna.com>
17936
17937         * jit-icalls.c (mono_llmult_ovf): Fix other overflow conditions to
17938         be detected.  Fixes #59296.
17939
17940 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
17941
17942         * mini-amd64.c (mono_arch_output_basic_block): Remove some assertions
17943         which can happen. Fixes #71361.
17944
17945 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
17946
17947         * exceptions-sparc.c tramp-sparc.c: Allocate code using the global code
17948         manager.
17949
17950 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
17951
17952         * mini.c (mono_create_jump_trampoline): Revert last change as it causes
17953         appdomain-unload.exe to fail.
17954         
17955         * mini.c: Fix some memory leaks.
17956
17957 Mon Jan 17 16:16:23 CET 2005 Paolo Molaro <lupus@ximian.com>
17958
17959         * inssel.brg: handle the new size of rank, idepth, max_interface_id.
17960         Fixed bug and sped up some codepaths.
17961
17962 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
17963
17964         * mini.c: Fix some memory leaks.
17965
17966         * exceptions.cs basic-long.cs: Add test for checked ulong->int 
17967         conversion.
17968
17969         * inssel-long.brg: Implement long_conv_to_ovf_i4_un. Fixes #71319.
17970
17971         * inssel-long.brg: Fix conv.ovf.i8 when run on an int32. Fixes
17972         #71320.
17973
17974         * iltests.il: Add regression test for #71320.
17975
17976 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
17977
17978         * mini.c (mono_codegen): Fix installation of profiler hooks.
17979
17980         * mini-sparc.c mini-amd64.c: Don't allocate stack space for dead vars.
17981
17982 Sun Jan 16 12:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
17983
17984         * mini.h, mini.c, cfold.c: optimize access to enum
17985         readonly fields, too. Eval conditional branches if possible
17986         to perform unreachable code removal in more cases.
17987
17988 2005-01-15  Zoltan Varga  <vargaz@freemail.hu>
17989
17990         * tramp-amd64.c exceptions-amd64.c: Use the new global code manager.
17991
17992         * mini.c (mono_global_codeman_reserve): New function to allocate code memory from a global
17993         code manager.
17994
17995         * tramp-x86.c mini-x86.c exceptions-x86.c: Allocate all code memory so mono works with
17996         WinXP DEP. Fixes #71244.
17997
17998 2005-01-14  Zoltan Varga  <vargaz@freemail.hu>
17999
18000         * inssel.brg: Allways convert CEE_CONV_OVF_I4 to a move on 64 bit platforms. Fixes #71236.
18001
18002 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
18003
18004         * mini-x86.c (mono_arch_output_basic_block): Fix OP_ATOMIC_ADD_NEW_I4.
18005
18006 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
18007
18008         * mini-exceptions.c exceptions-ppc.c aot.c: Cope with MonoJitInfo 
18009         changes.
18010
18011         * mini.h: Bump AOT version.
18012
18013         * mini.h (MonoCompile): Change exvar to a hash table.
18014
18015         * mini.c: Allocate a separate exvar for each handler block.
18016
18017         * mini.c: Get rid of the computation of filter_lengths, its not needed.
18018
18019         * mini.c inssel.brg: Change OP_THROW_OR_NULL to compare the current
18020         ex var with the pending exception and only throw if the two are equal.
18021         Fixes #68552.
18022         
18023         * exceptions.cs: Add tests for rethrow and nested catch clauses.
18024
18025         * mini-x86.c: Fix warnings.
18026
18027         * Makefile.am (common_sources): Move mini-exceptions.c here as it is
18028         used by all the ports now.
18029
18030         * aot.c: Add write-symbols and save-temps options.
18031
18032 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
18033
18034         * mini-x86.c: Add support for returning structs in registers from pinvoke functions on WIN32.
18035
18036 Mon Jan 10 16:11:16 EST 2005 Neale Ferguson <nealeferguson@earthlink.net>
18037
18038         * mini-ops.h, inssel-s390.brg, cpu-s390.md: Support OP_ATOMIC__xxx 
18039         operations.
18040
18041         * tramp-s390.c: Check vtable slot belongs to the domain.
18042
18043         * mini-exceptions.c, exceptions-s390.c: Standardize exception handling
18044         as per other platforms.
18045
18046         * mini-s390.c, mini-s390.h: Enable out-of-line bblock support.
18047
18048 Mon Jan 10 18:53:05 CET 2005 Paolo Molaro <lupus@ximian.com>
18049
18050         * driver.c: we don't run the Main() code in a subthread anymore.
18051
18052 Mon Jan 10 17:54:16 CET 2005 Paolo Molaro <lupus@ximian.com>
18053
18054         * mini.c: added experimental rtc support in the statistical
18055         profiler: if the user has the permission, more accurate statistics
18056         are gathered. Run with: MONO_RTC=4096 mono --profiler=default:stat ....
18057         The MONO_RTC value must be restricted to what the linux rtc allows:
18058         power of two from 64 to 8192 Hz.
18059
18060 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
18061
18062         * mini-x86.c (mono_arch_emit_exceptions): Fix #71121.
18063
18064 Mon Jan 10 05:20:49 EST 2005 Paolo Molaro <lupus@ximian.com>
18065
18066         * mini-ppc.c: better icache flush for smp.
18067
18068 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
18069
18070         * mini-amd64.c (emit_move_return_value): Fix memory leak.
18071
18072         * mini-x86.c (get_call_info): Add the get_call_info () code from the
18073         amd64 port, not yet used.
18074
18075 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
18076
18077         * mini.c (mono_method_to_ir): Disable inlining of ldfld wrappers with
18078         a struct type.
18079
18080 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
18081
18082         * driver.c: Added --security option to activate the security manager.
18083         Right now this will allow code generation for declarative demands and
18084         is disabled when AOT is specified.
18085         * mini.c: Add code generation for declarative security demands.
18086         * mini.h: Add mono_use_security_manager as an extern gboolean.
18087
18088 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
18089
18090         * aot.c (mono_compile_assembly): Speed up compilation a bit by
18091         emitting more dense assembly code.
18092
18093         * mini-sparc.c mini-sparc.h exceptions-sparc.c: Enable optimized corlib
18094         exception throwing stuff.
18095
18096 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
18097
18098         * mini-sparc.c (mono_arch_emit_exceptions): Fix typo in previous patch. Remove
18099         dead code.
18100
18101         * mini-amd64.c (mono_arch_emit_exceptions): Remove duplicate epilog stuff
18102         left in by mistake.
18103
18104         * driver.c (EXCLUDED_FROM_ALL): Disable SSAPRE until bug #70637 is 
18105         fixed.
18106
18107         * mini-sparc.h mini-sparc.c: Enable out-of-line bblock support.
18108
18109         * tramp-*.c: Only patch vtable slots if the object is in the current
18110         domain. Fixes appdomain-unload.exe.
18111
18112         * mini-amd64.c mini-amd64.h: Enable out-of-line bblock support.
18113         
18114         * mini-amd64.c (mono_arch_local_regalloc): Port regalloc fix from
18115         x86 branch.
18116
18117 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
18118
18119         * mini.c (reverse_branch_op): New helper function.
18120
18121         * mini.c (optimize_branches): Run the new optimization only on 
18122         platforms which support it. Also reverse all kinds of branches.
18123
18124         * mini.h (MonoBasicBlock): Add 'out_of_line' field.
18125
18126         * mini.c (mono_method_to_ir): Set 'out_of_line' for bblocks which have
18127         a throw statement.
18128
18129         * mini.c (optimize_branches): Reverse not-equals branches if the false
18130         bblock is a throw. This happens a lot of time with argument checking in
18131         corlib.
18132
18133         * mini.c (mono_codegen): Add support for placing basic blocks after
18134         the function epilogue.
18135
18136         * mini-x86.c mini-x86.h: Add support for placing basic blocks after the
18137         function epilogue.
18138         
18139 2005-01-05  Miguel de Icaza  <miguel@ximian.com>
18140
18141         * mini.c (setup_stat_profiler): Only set this up if the platform
18142         supports ITIMER_PROF.
18143
18144 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
18145
18146         * mini-x86.c (mono_arch_local_regalloc): Fix a bug introduced by the
18147         previous patch.
18148
18149         * inssel.brg: Fix a warning.
18150
18151 Wed Jan 5 16:40:18 CET 2005 Paolo Molaro <lupus@ximian.com>
18152
18153         * mini.c: added support for statistical profiler 
18154         (run with: --profile=default:stat).
18155
18156 2005-01-04  Zoltan Varga  <vargaz@freemail.hu>
18157
18158         * mini-x86.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Enable this on x86.
18159
18160         * mini-x86.c cpu-pentium.md: More fixes for usage of global registers.
18161
18162         * mini-amd64.c (mono_arch_local_regalloc): Port some regalloc fixes 
18163         related to global registers from the amd64 port.
18164
18165 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
18166
18167         * mini.c (mono_method_to_ir): Handle MONO_CLASSCONST.
18168
18169         * mini-amd64.c (mono_arch_local_regalloc): Fix some regalloc problems
18170         with global registers.
18171         (mono_arch_output_basic_block): Fix SWITCH in the AOT case.
18172
18173         * aot.c (emit_method_code): Fix the 'method emitted as' messages.
18174
18175 2004-12-31  Zoltan Varga  <vargaz@freemail.hu>
18176
18177         * debug-mini.c (encode_value): Fix off-by-one.
18178
18179         * aot.c (encode_value): Likewise.
18180
18181         * mini.c (mono_method_to_ir): Disable AOT for methods containing LDPTR.
18182
18183 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
18184
18185         * mini.c linear-scan.c: Add a workaround for the mcs crash when using 
18186         AOT.
18187
18188         * aot.c (mono_aot_load_method): Free up patch info if no longer needed.
18189         
18190         * aot.c (emit_method_info): Increase size of temp buffer.
18191
18192         * mini-x86.c cpu-pentium.md mini.c: Load fp constants differently in 
18193         the AOT case.
18194
18195 2004-12-28  Zoltan Varga  <vargaz@freemail.hu>
18196
18197         * aot.c (emit_method_info): Fix build.
18198         
18199         * aot.c: Further rework of the AOT file format to reduce the size of
18200         the method info data.
18201
18202         * mini.h: Bump AOT file format version.
18203
18204 2004-12-27  Martin Baulig  <martin@ximian.com>
18205
18206         * mini.c (mini_get_method): New static method; call
18207         mono_get_method_full() and mono_get_inflated_method().
18208         (mono_method_to_ir): Use mini_get_method() instead of
18209         mono_get_method_full(). 
18210
18211 2004-12-26  Patrik Torstensson  <patrik.torstensson@gmail.com>
18212
18213         * mini-x86.c (atomic ops): fixed bug interlocked bug #70784. 
18214
18215 2004-12-25  Zoltan Varga  <vargaz@freemail.hu>
18216
18217         * inssel.brg (ldind_to_load_membase): Handle CEE_LDIND_I8.
18218
18219         * inssel-amd64.brg: Add some optimization rules.
18220
18221 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
18222
18223         * aot.c: Remove the use of MonoGHashTable and other GC stuff. The
18224         standard not GC'd stuff is fine.
18225
18226 2004-12-24  Zoltan Varga  <vargaz@freemail.hu>
18227
18228         * aot.c: Rework the AOT file format to get rid of most of the global
18229         symbols. This reduces the size of the mscorlib.dll.so by 1MB.
18230
18231         * mini.h: Bump AOT file format version.
18232         
18233 2004-12-23  Zoltan Varga  <vargaz@freemail.hu>
18234
18235         * mini.h: Bump AOT file format version.
18236
18237         * aot.c (mono_aot_is_got_entry): New function to determine if an 
18238         address is inside a GOT.
18239
18240         * aot.c mini-x86.c tramp-x86.c: Make all patches use the GOT.
18241
18242         * cpu-pentium.md: Increase the maximum size of some instructions which
18243         might involve a got access.
18244         
18245         * mini.c (get_method_from_ip): Another debug helper function.
18246
18247         * mini.c: Call mono_get_got_var () in a couple places. Handle the case
18248         when got var accesses are created during the decompose phase.
18249
18250         * mini-sparc.c: Change mono_compile_aot to cfg->compile_aot.
18251
18252         * mini.h mini.c mini-x86.c aot.c mini-sparc.c: Add a 'compile_corlib'
18253         argument mini_compile_method and to MonoCompile, and use this to
18254         determine whenever a given method is compiled for AOT. This allows the
18255         other methods compiled during AOT compilation to be free of AOT stuff,
18256         so the backends does not need to add special support for them by
18257         creating a fake GOT etc.
18258
18259         * mini-x86.c (mono_arch_patch_code): Remove fake got stuff as it is no
18260         longer needed.
18261
18262 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
18263
18264         * mini.c (mono_method_to_ir): It turns out that some of the
18265         x-appdomain wrappers are lax with types, so just ignore this for
18266         all wrappers.
18267
18268         * inssel.brg (OP_CHECK_ARRAY_TYPE): Optimize this by only looking
18269         at the vtable->klass. If it is non-shared code we can just use the
18270         vtable.
18271
18272 Tue Dec 21 17:43:06 CET 2004 Paolo Molaro <lupus@ximian.com>
18273
18274         * mini-ppc.c: access MonoDomain from tls, too.
18275
18276 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com>
18277
18278         * declsec.c: Removed unused variable (and related warning ;-)
18279
18280 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
18281
18282         * iltests.il: New test for LDELEMA on an array of ref types.
18283
18284         * mini.c (CEE_LDELEMA): We need to emit OP_CHECK_ARRAY_TYPE for
18285         all ldelema's on reftypes.
18286         (check_call_signature): Remove the OP_CHECK_ARRAY_TYPE from here,
18287         it was the wrong place to put it.
18288
18289         * mini-x86.c (mono_arch_output_basic_block): Just use ecx as the
18290         register to pop to make this cleaner, at the request of Paolo.
18291
18292 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
18293
18294         * mini-ops.h (OP_GETHASHCODE): New op.
18295
18296         * inssel.brg (OP_GETHASHCODE): Emit code for the new opcode
18297
18298         * mini.c (mini_get_inst_for_method): Create the intrinsic hash
18299         operation.
18300
18301         For a microbenchmark, this reduces the cost of Hashtable.get_Item
18302         by 25%.
18303         
18304         * mini-x86.c (mono_arch_output_basic_block): Rather than
18305
18306         add ebp, 4
18307
18308         Emit
18309
18310         pop edx
18311
18312         The first is 3 bytes while the second is 1. This saves 36 kb on
18313         mscorlib, quite a big saving. When bootstraping mcs, I was able to
18314         see a small boost because of icache locality.
18315
18316         * cfold.c (FOLD_BINOPCOMM): Kill add foo, 0
18317
18318 Mon Dec 20 12:19:40 EST 2004 Paolo Molaro <lupus@ximian.com>
18319
18320         * Makefile.am, mini-ppc.h, mini-exceptions.c, exceptions-ppc.c:
18321         started code sharing with the generic code.
18322
18323 Mon Dec 20 11:08:06 EST 2004 Paolo Molaro <lupus@ximian.com>
18324
18325         * mini-ppc.c, cpu-g4.md: added code for direct access to
18326         tls data slots.
18327
18328 Mon Dec 20 10:58:28 EST 2004 Paolo Molaro <lupus@ximian.com>
18329
18330         * mini-ops.h, inssel-x86.brg, cpu-amd64.md, inssel.brg, inssel-amd64.brg,
18331          mini-amd64.c, mini-x86.c, cpu-pentium.md: renamed OP_X86_TLS_GET
18332         to OP_TLS_GET.
18333
18334 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
18335
18336         * declsec.c|h: Added functions to cache the declarative stack modifiers
18337         in MonoJitInfo and to create a security frame from a MonoJitInfo 
18338         structure.
18339         * mini.c: Initialize jinfo->cas_inited to FALSE when MonoJitInfo is
18340         created. Register internal calls for System.Security.SecurityFrame::
18341         _GetSecurityFrame and _GetSecurityStack.
18342         * mini.h: Added definition for new icalls (in mini-exceptions.c) and
18343         the definitions for the new stack walk/callback mechanism.
18344         * mini-exceptions.c: Added internal call GetSecurityFrame (to get the 
18345         first security frame for LinkDemands and InheritanceDemands) and
18346         GetSecurityStack for Demands. Both use the new mono_walk_stack code
18347         from lupus.
18348         * mini-x86.h, mini-amd64.h, mini-sparc.h: Architecture specific stack
18349         walk initialization (lupus).
18350
18351 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
18352
18353         * mini.c (mono_method_to_ir): In CEE_DUP, handle the dup / stloc
18354         idiom.
18355         (handle_loaded_temps): Do not create a temporary variable for
18356         things that we know are temps. They will never be modified.
18357         (mono_spill_call): Set MONO_INST_IS_TEMP
18358         (mono_emulate_opcode): ditto
18359         (emit_tree): ditto
18360         (mono_method_to_ir.CEE_DUP): ditto
18361
18362 2004-12-19  Ben Maurer  <bmaurer@ximian.com>
18363
18364         * mini.c (type_to_eval_stack_type): Make this handle the void type
18365         (mono_emit_call_args): set the call->type with type_to_eval_stack_type
18366         (emit_tree): use ip_in_bb to special case some common idioms
18367         Update all callers to pass in the IP.
18368         (mono_method_to_ir): Make CEE_CALL* do the above as well.
18369
18370         This gives us a nice 2% speedup in mcs bootstrap.
18371
18372         * mini-x86.c (peephole_pass): Peephole pass to make
18373         mov  [foo], eax
18374         push [foo]
18375
18376         into
18377
18378         mov [foo], eax
18379         push eax
18380
18381         * mini.c (ip_in_bb): new method.
18382         (mono_method_to_ir): use this method rather than doing the hash
18383         lookup ourselves.
18384
18385         * linear-scan.c (mono_linear_scan): When expiring actives, you
18386         don't need to keep around variables that expire on this
18387         instruction. This makes it so that:
18388              a = b + 1
18389         will turn into:
18390              store (ebx add (ebx, 1))
18391         which will become
18392              add ebx, 1
18393
18394 2004-12-19  Zoltan Varga  <vargaz@freemail.hu>
18395
18396         * mini.c (mono_method_to_ir): Optimize the common ldobj+stloc 
18397         combination to avoid doing two copies. Fix up problems with previous
18398         patch.
18399
18400         * mini.c: Fix 64 bit warnings.
18401
18402         * mini-x86.c (INST_IGNORES_CFLAGS): Add OP_STOREI4_MEMBASE_REG.
18403
18404 2004-12-17  Zoltan Varga  <vargaz@freemail.hu>
18405
18406         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Port exception handling
18407         changes from the x86 code.
18408
18409         * mini.h: Add prototype for mono_arch_get_throw_corlib_exception ().
18410
18411 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
18412
18413         * mini-x86.c (mono_arch_emit_epilog): Optimize the corlib exception
18414         throwing code to reduce its size, unify the AOT and non-aot code and 
18415         get rid of relocations in the AOT case.
18416
18417         * mini-x86.h mini.c exceptions-x86.c 
18418         (mono_arch_get_throw_corlib_exception): New arch specific function to 
18419         raise corlib exceptions which doesn't require relocations in the 
18420         caller.
18421
18422         * aot.c (emit_method): Handle PATCH_INFO_NONE as well.
18423
18424 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
18425
18426         * mini.c (mono_emit_method_call): Only allocate the got var when it is
18427         needed.
18428
18429         * mini-x86.c (mono_arch_patch_code): Add missing PATCH_INFO_METHOD_REL
18430         in the AOT case.
18431
18432 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
18433
18434         * mini-x86.c, cpu-pentium.md, inssel-x86.brg: Fixed bug
18435         with add function when used from Inc/dec atomic 
18436         functions. Re-enabled optimization on x86.
18437         * mini-ops.h: renamed atomic_add functions to
18438         allow _add to match the Interlocked::Add and
18439         _add_next to match Interlocked::Inc/Dec.
18440
18441 2004-12-15  Massimiliano Mantione  <massi@ximian.com>
18442
18443         * mini.c: Fixed a subtle bug in mono_method_to_ir, about the
18444         linking of BBs to the end BB, and enabled SSAPRE also with
18445         consprop and copyprop (which was prevented by that bug).
18446
18447 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
18448
18449         * mini-x86.c: disabling the Interlocked optimizing code. 
18450
18451 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
18452
18453         * aot.c (load_aot_module): Move reading of got_addr after the AOT
18454         file version check.
18455         
18456 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
18457
18458         * mini-x86.c, inssel-x86.brg, cpu-pentium.md: removed _imm 
18459         interlocked optimization due lack of support on x86, rewrote 
18460         exchange to take into account that base may be in eax.
18461         
18462         xsp works again; activated Interlocked optimizing code.
18463         
18464 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
18465
18466         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
18467
18468 2004-12-13  Zoltan Varga  <vargaz@freemail.hu>
18469
18470         * mini-ops.h: Add new opcodes.
18471
18472         * mini.h: Add new patch types. Add got_var to MonoCompile.
18473
18474         * mini.h mini-x86.c mini-amd64.c aot.c: Rename 
18475         mono_arch_get_aot_patch_offset () to mono_arch_get_patch_offset () and
18476         make it work with all kinds of patchable code.
18477
18478         * inssel.brg inssel-x86.brg: Add new rules dealing with computing the
18479         address of the GOT, and referencing entries in the GOT.
18480
18481         * mini.c: Add code to load the GOT address if needed by an opcode.
18482
18483         * aot.c mini-x86.h mini-x86.c cpu-pentium.md: Add support for position 
18484         independent AOT code on the x86 using an elf-style Global Offset Table.
18485
18486 2004-12-14  Raja R Harinath  <rharinath@novell.com>
18487
18488         * Makefile.am (RUNTIME): Set MONO_SHARED_DIR.
18489
18490 2004-12-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18491
18492         * mini-x86.c: disabling the Interlocked optimizing code. It segfaults
18493         when running xsp.
18494
18495 2004-12-13  Patrik Torstensson  <patrik.torstensson@gmail.com>
18496
18497         * mini-x86.c,mini-ops.h,inssel-x86.brg,cpu-pentium.md: Implementation
18498         of Interlocked:Increment/Decrement/Add as inline ops.
18499         (mini-x86.c (mono_arch_get_inst_for_method and mono_arch_output_basic_block))
18500
18501 2004-12-12  Geoff Norton  <gnorton@customerdna.com>
18502
18503         * exceptions-ppc.c: Reorder code so gcc3.4 can compile it
18504         * mini-ppc.c: Unify mono_arch_patch_code with changes in r37636.
18505
18506 2004-12-12  Duncan Mak  <duncan@ximian.com>
18507
18508         * mini-ppc.c (mono_arch_patch_code): Hopefully made this build
18509         again. `patch_info->table_size' is no longer valid after Zoltan's
18510         commit #37636.
18511
18512 2004-12-12  Martin Baulig  <martin@ximian.com>
18513
18514         * mini.c (mono_method_to_ir): Only call mono_debug_init_method()
18515         if we are the "real" method, ie. not an inlined method inside it.
18516
18517 2004-12-11  Ben Maurer  <bmaurer@ximian.com>
18518
18519         * mini.c (CEE_LDSFLD): Make sure that the vtable has been init'd
18520         before we look in the special fields table. This fixes
18521         ../tests/thread-static-init.cs.
18522
18523 2004-12-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18524
18525         * mini.c: return immediately after setting OP_ARRAY_RANK or CEE_LDLEN
18526         for Array get_Rank and get_Length. Fixes bug #70465.
18527
18528 2004-12-11  Zoltan Varga  <vargaz@freemail.hu>
18529
18530         * mini.h mini.c aot.c: Put the bblock table for a SWITCH patch into a
18531         separate structure to reduce the size of MonoJumpInfo.
18532
18533 Fri Dec 10 18:09:22 CET 2004 Paolo Molaro <lupus@ximian.com>
18534
18535         * mini.c, mini.h, aot.c, driver.c: allow disabling the aot code.
18536
18537 2004-12-10  Patrik Torstensson  <patrik.torstensson@gmail.com>
18538
18539         * mini.c (mini_get_inst_for_method): Changed to allow ports
18540         to return a MonoInst instead of opcode 
18541         (renamed mini_get_opcode_for_method to better reflect the new functionality)
18542         
18543         * mini-[x86|s390|s390x|ppc|sparc].c (mono_arch_get_inst_for_method): 
18544         Allow ports to return a created MonoInst instead of op-code, will enable
18545         new optimizations.
18546         (renamed mini_get_opcode_for_method to better reflected the functionality)
18547
18548 2004-12-09  Zoltan Varga  <vargaz@freemail.hu>
18549
18550         * mini.c (NEW_AOTCONST): Share some code between the different NEW_AOTCONST macros.
18551
18552 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
18553
18554         * mini.c jit-icalls.c: Pass generic_context to mono_ldtoken_wrapper.
18555         Fixes #69985.
18556
18557 2004-12-08  Martin Baulig  <martin@ximian.com>
18558
18559         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use `fsig->signature'
18560         if we're a CEE_CONSTRAINED call.  Fixes gen-118.cs.
18561
18562 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
18563
18564         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_<X>
18565         correctly.
18566
18567         * exceptions.cs: Disable some tests which depend on properties of x86 fp
18568         arithmetic.
18569
18570 2004-12-08  Raja R Harinath  <rharinath@novell.com>
18571
18572         * Makefile.am (CLEANFILES): Add *.exe, *.dll.
18573
18574 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
18575
18576         * mini-sparc.c (mono_arch_output_basic_block): Fix LOCALLOC_IMM
18577         bug introduced by the previous patch.
18578
18579 Tue Dec 7 11:44:39 CET 2004 Paolo Molaro <lupus@ximian.com>
18580
18581         * mini-ppc.c, objectc.cs: handle large structs passed by value
18582         (fixes bug #69972).
18583
18584 Tue Dec 7 10:43:31 CET 2004 Paolo Molaro <lupus@ximian.com>
18585
18586         * mini-ppc.c: OP_ARGLIST implementation from
18587         Geoff Norton  <gnorton@customerdna.com>.
18588
18589 Tue Dec 7 10:14:25 CET 2004 Paolo Molaro <lupus@ximian.com>
18590
18591         * inssel-x86.brg, inssel-ppc.brg: fix reference to register
18592         in stmt: OP_OUTARG_VT (reg) (should fix bug #69785).
18593
18594 Tue Dec 7 10:06:39 CET 2004 Paolo Molaro <lupus@ximian.com>
18595
18596         * exceptions-ppc.c: avoid calling ppc_patch in exception trampolines.
18597
18598 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
18599
18600         * inssel-s390.brgi, mini-ops.h, mini-s390.c : Add stubs for support of tls offset
18601         support.
18602
18603 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
18604
18605         * mini-sparc.c: Zero out localled-ed memory.
18606
18607         * iltests.il: Add tests for zeroing out localloc-ed memory.
18608
18609 2004-12-04  Martin Baulig  <martin@ximian.com>
18610
18611         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use the new
18612         mono_method_get_signature_full().       
18613
18614 2004-12-03  Massimiliano Mantione  <massi@ximian.com>
18615
18616         * mini.c: Added removal of critical edges (prerequisite for SSAPRE),
18617         and some utility functions (always for SSAPRE), integrated SSAPRE.
18618         * mini.h: Likewise.
18619         * driver.c: Added ssapre option.
18620         * ssa.c: Small fix on OP_ARG handling.
18621         * ssapre.c, ssapre.h: Added files containing SSAPRE implementation.
18622         * Makefile.am: Likewise.
18623
18624 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
18625
18626         * tramp-x86.c (mono_arch_create_jit_trampoline): Remove code which is
18627         now in the xp code.
18628
18629         * mini.c (mini_init): Register mono_thread_force_interruption_checkpoint
18630         icall.
18631
18632 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
18633
18634         * inssel-s390.brg : Add OP_OUTARG_VT (OP_REFANYTYPE (reg)) rule.
18635         
18636         * cpu-s390.md : Increase instruction length of oparglist.
18637
18638         * mini-s390.c : Implement vararg and TYPEDEBYREF support.
18639
18640 2004-11-30  Martin Baulig  <martin@ximian.com>
18641
18642         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, added support for
18643         virtual generic methods.  We call a special helper_compile_generic_method()
18644         icall to retrieve the method from the vtable, inflate and compile
18645         it and then do a CEE_CALLI.  Thanks a lot to Paolo for this idea.
18646
18647         * jit-icalls.c (helper_compile_generic_method): New JIT icall.
18648
18649 2004-11-30  Zoltan Varga  <vargaz@freemail.hu>
18650
18651         * mini-sparc.c: Fix up vararg corner cases. Fixes #70019.
18652
18653 2004-11-29  Zoltan Varga  <vargaz@freemail.hu>
18654
18655         * cpu-sparc.md mini-sparc.c (long_conv_to_ovf_i): Fill missing delay slot.
18656         Fixes #69929.
18657
18658 2004-11-27  Ben Maurer  <bmaurer@ximian.com>
18659
18660         * inssel.brg (CEE_SWITCH): The AOT stuff Zoltan added is only for
18661         platforms with PIC aot.
18662
18663 2004-11-28  Martin Baulig  <martin@ximian.com>
18664
18665         * mini.c (mono_method_to_ir): In CEE_DUP, added handle_stobj().
18666         Fixes gen-112.cs.
18667
18668 2004-11-28  Martin Baulig  <martin@ximian.com>
18669
18670         * mini-x86.c (mono_arch_call_opcode): Use the original type, not
18671         the result of mono_type_get_underlying_type() to check whether
18672         we're byref.
18673
18674 2004-11-26  Martin Baulig  <martin@ximian.com>
18675
18676         * mini.c
18677         (mono_method_to_ir): Use `!method->signature->has_type_parameters'
18678         in the g_assert().
18679
18680 2004-11-26  Zoltan Varga  <vargaz@freemail.hu>
18681
18682         * mini-amd64.c (mono_arch_emit_this_vret_args): Handle this and vret
18683         the same way as the other arguments so they won't get clobbered.
18684
18685         * mini-amd64.c (mono_arch_output_basic_block): Avoid doing virtual 
18686         calls through R11 since it is clobbered by the trampoline code.
18687
18688 2004-11-26  Raja R Harinath  <rharinath@novell.com>
18689
18690         * Makefile.am: Consistently use $(RUNTIME) rather than ./mono to
18691         pick up in-tree mscorlib.dll.
18692
18693 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
18694
18695         * aot.c: Rename MonoAOTModule->cleanup to out_of_date.
18696
18697         * mini-amd64.c aot.c: Switch to PIC relative AOT code. References to 
18698         runtime data/code are now stored in a table similar to the GOT in ELF. 
18699         This allows the code itself to be position independent.
18700
18701         * aot.c: Fix loading of referenced assemblies after the lazy assembly
18702         loading changes.
18703
18704         * aot.c: Attach ELF type (object/function) directives to all global
18705         symbols.
18706
18707         * tramp-amd64.c (amd64_magic_trampoline): Patch RIP relative calls too.
18708
18709         * inssel.brg (SWITCH): Emit an AOT_CONST in the aot case.
18710
18711         * mini-amd64.h: Turn on PIC AOT code.
18712
18713         * mini.h (mono_arch_get_aot_patch_offset): New arch specific function
18714         returning the offset within an OP_AOTCONST instruction where the GOT
18715         offset needs to be added.
18716
18717         * mini.h: Bump AOT file format version.
18718
18719 2004-11-25  Martin Baulig  <martin@ximian.com>
18720
18721         * mini.c (mono_method_to_ir): In CEE_CALL, don't allow calling any
18722         uninflated generic methods.
18723
18724 2004-11-25  Martin Baulig  <martin@ximian.com>
18725
18726         * mini.c (mono_method_to_ir): Don't allow any uninflated generic methods.
18727
18728 2004-11-24  Martin Baulig  <martin@ximian.com>
18729
18730         * minit.c (type_to_eval_stack_type): Set `inst->klass' to the
18731         original klass (this only applies for generic instances).
18732
18733 2004-11-24  Martin Baulig  <martin@ximian.com>
18734
18735         * mini.c (mono_method_to_ir): Use `STACK_OBJ' instead of
18736         `ldind_type [CEE_LDIND_REF]' (which would be beyond the end of
18737         that array).
18738
18739 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
18740
18741         * mini.c (mono_method_to_ir): Disable inlining for methods containing
18742         localloc. Fixes #69678.
18743
18744         * iltests.il (test_0_localloc_inline): Add regression test for #69678.
18745         
18746 2004-11-23  Zoltan Varga  <vargaz@freemail.hu>
18747
18748         * mini-amd64.c (mono_arch_output_basic_block): Set %al to the number of
18749         used SSE registers on pinvoke calls. Fixes #69774.
18750
18751 2004-11-23  Geoff Norton  <gnorton@customerdna.com>
18752
18753         * inssel-ppc.brg, mini-ppc.c: Use mono_class_from_mono_type instead of
18754         vt->inst_vtype->data.klass.  This fixes generic structs and bug #69766
18755
18756 2004-11-23  Raja R Harinath  <rharinath@novell.com>
18757
18758         * Makefile.am (MCS,ILASM): Don't refer to runtime/ directory.
18759         Refer directly to the mcs/ tree.
18760
18761 2004-11-19  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
18762
18763         * mini-s390.c, tramp-s390.c, mini-s390.h: Add LMF processing for trampolines.
18764         Check if a trampoline for a synchronized method is required. 
18765
18766 Fri Nov 19 17:34:21 CET 2004 Paolo Molaro <lupus@ximian.com>
18767
18768         * mini-ppc.c, cpu-g4.md: set to zero the memory allocated
18769         with localloc if needed. Throe arithmetric exception in
18770         div an rem if needed. Implement ovf checks in OP_LCONV_TO_OVF_I.
18771         Adapted from a patch by Geoff Norton  <gnorton@customerdna.com>.
18772
18773 2004-11-19  Geoff Norton  <gnorton@customerdna.com>
18774
18775         * mini-ppc.c: Call mono_type_get_underlying_type to unwrap generic
18776         types before switching on type.  Fixes #69622.
18777
18778 2004-11-19  Raja R Harinath  <rharinath@novell.com>
18779
18780         * Makefile.am (check-local): New.  Integrate into 'make check'.
18781         (MCS,RUNTIME): Define using in-tree mono and mcs.
18782         (ILASM): New.
18783         (%.exe): Use $(ILASM).
18784
18785 Fri Nov 19 14:54:07 CET 2004 Paolo Molaro <lupus@ximian.com>
18786
18787         * mini-ppc.c: adjust initial prolog size (bug #69691).
18788
18789 2004-11-18  Zoltan Varga  <vargaz@freemail.hu>
18790
18791         * cpu-pentium.md (localloc): Increase max instruction len. Fixes
18792         #69664.
18793
18794 2004-11-17  Raja R Harinath  <rharinath@novell.com>
18795
18796         * Makefile.am (clean-local): Rename from 'clean'.
18797
18798 2004-11-15  Nelae Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
18799
18800         * mini.c, mini-x86.c, mini-amd64.c, exceptions-s390.c: Add siginfo_t parameter
18801         to mono_arch_is_int_overflow. 
18802         * exceptions-s390.c: Add mono_arch_is_int_overflow routine to discern between
18803         SIGFPE events.
18804
18805 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
18806
18807         * declsec.c|h: New files to support declarative security attributes.
18808         Added function to check if a method has (applicable) security.
18809         * mini.c|h: Add check for declarative security attributes in
18810         mono_method_check_inlining.
18811         * Makefile.am: Added declsec.c and declsec.h to the build.
18812
18813 Mon Nov 15 11:53:46 CET 2004 Paolo Molaro <lupus@ximian.com>
18814
18815         * mini.c, mini.h: update to keep dynamic code info per-domain.
18816
18817 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
18818
18819         * mini.c mini-*.h: Get rid of MONO_ARCH_HAVE_RETHROW since all architectures support it now.
18820         (mini_init): Get rid of it from here too.
18821
18822 Thu Nov 11 20:17:17 CET 2004 Paolo Molaro <lupus@ximian.com>
18823
18824         * mini-ppc.c, mini-ppc,h, cpu-g5.md, exceptions-ppc.c:
18825         implemented OP_RETHROW (patch by Geoff Norton
18826         <gnorton@customerdna.com>).
18827
18828 2004-11-10  Geoff Norton  <gnorton@customerdna.com>
18829
18830         * tramp-ppc.c (ppc_magic_trampoline): Don't trampoline methods
18831         between appdomains.  Fixes appdomain-unload on PPC.
18832
18833 2004-10-26  Lluis Sanchez Gual  <lluis@novell.com>
18834
18835         * exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
18836         mini-exceptions.c: handle the new wrapper types.
18837         * mini.c: The CEE_ISINST and CEE_CASTCLASS opcodes now take the
18838         token value as a MonoClass* when compiling a wrapper.
18839         mono_jit_create_remoting_trampoline now takes an additional
18840         MonoRemotingTarget parameter.
18841         
18842 2004-11-10  Martin Baulig  <martin@localhost>
18843
18844         * mini.c (mono_method_to_ir): Use `generic_container->context'
18845         rather than creating a new one.
18846
18847 2004-11-09  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
18848
18849         * exceptions-s390.c, mini-s390, cpu-s390.md: Add support for OP_RETHROW.
18850
18851         * inssel-390.md, mini-s390.c: Correct register allocation for globals.
18852
18853 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
18854
18855         * aot.c (mono_aot_init): Add MONO_AOT_CACHE env variable to turn on
18856         the experimental aot cache stuff.
18857
18858 Tue Nov 9 17:30:20 CET 2004 Paolo Molaro <lupus@ximian.com>
18859
18860         * aot.c, mini.c, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
18861         mini-exceptions.c: update to exception clause structure changes.
18862
18863 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
18864
18865         * exceptions-x86.c (throw_exception): Fix warnings.
18866
18867         * mini-x86.h mini-x86.c cpu-pentium.md exceptions-x86.c: Add support 
18868         for OP_RETHROW.
18869
18870 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
18871
18872         * exceptions-sparc.c (get_throw_exception): Really fix this.
18873
18874 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
18875
18876         * tramp-*.c: we no longer support icalls without wrappers, so
18877         a bit of code can be removed here
18878
18879 2004-11-07  Zoltan Varga  <vargaz@freemail.hu>
18880
18881         * exceptions-sparc.c (get_throw_exception): Fix more bugs in previous
18882         patch.
18883
18884         * cpu-sparc.md: Add op_rethrow.
18885
18886         * exceptions-sparc.c (get_throw_exception): Fix bug in previous patch.
18887
18888         * mini-sparc.h mini-sparc.c exceptions-sparc.c: Add support for OP_RETHROW.
18889
18890         * mini.h: Add mono_arch_get_rethrow_exception () arch specific function.
18891         * mini-ops.h: Add OP_RETHROW.
18892
18893         * mini.c inssel.brg: Distinguish between THROW and RETHROW.
18894
18895         * cpu-amd64.c mini-amd64.c exceptions-amd64.c: Add support for OP_RETHROW.
18896
18897 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
18898         
18899         * helpers.c: Change otool arguments from -V -v -t to -v -t on Darwin
18900         Makes the output much easier to read
18901
18902 2004-11-05  Ben Maurer  <bmaurer@ximian.com>
18903
18904         * ssa.c: allocate MonoMethodVar.uses from the mempool. First, this
18905         prevents another huge leak when compiling with ssa. Secondly, the
18906         performance of doing this rather than freeing the lists is much
18907         better. GList does a lock every time you allocate a list link,
18908         so that it can use a memory pool. So, it is better to just use
18909         a memory pool of our own.
18910         
18911         * ssa.c, linear-scan.c: replace g_list_remove_link with
18912         g_list_delete.  The remove one does not free the GList, so we were
18913         leaking memory. On -O=all --compile-all with corlib, this cut down
18914         3 MB of allocations.
18915
18916 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
18917
18918         * tramp-sparc.c (mono_arch_create_jit_trampoline): Fix sparc build.
18919
18920         * tramp-amd64.c (mono_arch_create_jit_trampoline): Fix amd64 build.
18921
18922         * mini.h mini.c tramp-*.c: Moved xp parts of JIT trampoline creation
18923         into a new function mono_create_jit_trampoline ().
18924
18925 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
18926
18927         * trace.c (get_spec): Allow tracing of classes without a namespace.
18928
18929 2004-11-02  Sebastien Pouliot  <sebastien@ximian.com>
18930
18931         * mini.c: Fix pointer overwrite in mini_method_compile.
18932
18933 2004-11-2  Geoff Norton  <gnorton@customerdna.com>
18934
18935         * inssel-ppc.brg (OP_OUTARG_VT (CEE_LDOBJ (base))):
18936         The darwin ABI needs some special handling for 1 and 2 byte structs
18937         Lets use lbz/lhz instead of lwz everywhere.
18938         * mini-ppc.c (calculate_sizes):  The Darwin ABI needs from special handling
18939         for 1 and 2 byte structs and struct which are size >= 3 || size % 4 != 0.
18940         Use stb/sth for the former, and put the latter always on stack instead of in
18941         argument registers.
18942
18943 2004-10-30  Zoltan Varga  <vargaz@freemail.hu>
18944
18945         * trace.c (is_filenamechar): Add '_'.
18946
18947 2004-10-29  Neale Ferguson  <Neale.Ferguson@SoftwareAG-usa.com>
18948
18949         * mini-s390.c: Fix prolog length to allow for large trace requirements.
18950
18951         * exceptions-s390.c: Remove dwarf unwinding stuff that was unused.
18952
18953 2004-10-29  Zoltan Varga  <vargaz@freemail.hu>
18954
18955         * Makefile.am (libgc_libs): Do some automake magic so libmono/mono
18956         depends on libmonogc. Fixes #68805.
18957
18958 2004-10-26  Miguel de Icaza  <miguel@ximian.com>
18959
18960         * mini.c (mono_jit_free_method): Provide extra information for
18961         this error.  Currently this leaks, but will be turned into a
18962         developer option in the future.
18963
18964 2004-10-26  Zoltan Varga  <vargaz@freemail.hu>
18965
18966         * driver.c (mono_main): Applied patch from Willibald Krenn <willibald.krenn@gmx.at>. Make --graph work for icalls and pinvoke methods.
18967
18968 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
18969
18970         * aot.c (mono_aot_load_method): Align PATCH_INFO_R8 on an 8 byte 
18971         boundary. Fixes reading of PATCH_INFO_R4 and R8.
18972         (mono_aot_load_method): Do not allocate MonoAotMethod in the GC heap.
18973
18974 2004-10-24  Zoltan Varga  <vargaz@freemail.hu>
18975
18976         * mini-amd64.c (mono_arch_patch_code): Fix patching of class init
18977         trampolines for AOT code.
18978
18979 2004-10-22    <vargaz@freemail.hu>
18980
18981         * aot.c (mono_compile_assembly): Disable AOT for methods containing calls to methods of
18982         constructed types. Fixes #68136.
18983
18984 2004-10-21  Martin Baulig  <martin@ximian.com>
18985
18986         * exceptions-x86.c (throw_exception): Call mono_debugger_throw_exception();
18987         if it returns true, unwind the stack to the call instruction.
18988
18989 2004-10-21    <vargaz@freemail.hu>
18990
18991         * aot.c: Reorganize the AOT file format to avoid relocations. Fix warnings.
18992
18993         * mini.h: Bump AOT version number.
18994
18995         * objects.cs: Add another test for unbox trampolines.
18996
18997         * tramp-amd64.c (amd64_magic_trampoline): Disable patching of trampolines for 
18998         valuetype methods.
18999
19000 2004-10-20    <vargaz@freemail.hu>
19001
19002         * driver.c: Add SHARED to the set of optimizations tested.
19003
19004         * tramp-amd64.c (amd64_magic_trampoline): Patch trampoline code as well.
19005
19006         * mini.c (mono_method_to_ir): Mark the domainvar as volatile when it is implicitly
19007         used by CEE_NEWARR.
19008
19009         * ssa.c (mono_ssa_deadce): Do not optimize away accesses to volatile variables.
19010
19011 2004-10-20  Martin Baulig  <martin@ximian.com>
19012
19013         * mini-exceptions.c (mono_handle_exception): Call
19014         mono_debugger_handle_exception() to tell the debugger about
19015         catch/finally clauses.
19016
19017 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
19018
19019         * exceptions-amd64.c (mono_arch_find_jit_info): Pop arguments of the stack.
19020
19021         * mini-amd64.c (mono_amd64_get_vcall_slot_addr): Handle extended registers. Fixes
19022         #68447.
19023
19024 2004-10-15  Geoff Norton  <gnorton@customerdna.com>
19025
19026         * mini-ppc.c (calculate_sizes): Marshal valuetypes for pinvoke
19027         methods as their native size, fixed bug #57543, #57545.
19028         * mini-ppc.c (mono_arch_output_basic_block): Use mulli for imm16 types
19029         This saves a temporary register and mullw call down into 1 (minor perf
19030         increase for cases like sum = sum * 5;  This use to translate into:
19031             li r11,5
19032             mullw r28,r28,r11
19033         It now translates to
19034             mulli r28,r28,5
19035
19036 2004-10-15  Zoltan Varga  <vargaz@freemail.hu>
19037
19038         * trace.c (mono_trace_eval): Use mono_method_desc_full_match. Fixes
19039         #68388.
19040
19041 2004-10-11  Martin Baulig  <martin@ximian.com>
19042
19043         * mini.c (mono_method_to_ir): If we're a generic method, get the
19044         MonoGenericContainer from our MonoMethodNormal and create a
19045         MonoGenericContext from it.
19046
19047 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
19048
19049         * inssel-long32.brg (OP_LCONV_TO_OVF_I2): Fix CONV_I1 -> CONV_I2.
19050
19051         * basic-long.cs: Add test for checked i8->i2 cast.
19052
19053 Wed Oct 6 12:40:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
19054
19055         * inssel-ppc.brg: added a couple of speedup rules.
19056
19057 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
19058
19059         * Makefile.am (genmdesc_LDADD): Don't link this against libmetadata
19060         to speed up rebuilds.
19061
19062 2004-10-04  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
19063
19064         * mini-s390.c: Minor fix to OP_OR_IMM.
19065
19066 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
19067
19068         * tramp-sparc.c (sparc_magic_trampoline): Handle appdomain stuff
19069         better. Fixes appdomain-unload.exe on sparc.
19070
19071 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
19072
19073         * ssa.c: Fixed casts to unsigned where the value was of 64 bits in
19074         simulate_long_compare, patch by will@exomi.com (Ville-Pertti Keinonen),
19075         see bug 67324.
19076
19077 2004-10-02  Zoltan Varga  <vargaz@freemail.hu>
19078
19079         * jit-icalls.c: Handle a nonexisting trunc function more correctly.
19080
19081 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
19082
19083         * mini.c: Always generate a field read/write wrapper for members
19084         of the class MarshalByRefObject since the actual instance could
19085         be a CBO.
19086
19087 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
19088
19089         * mini.c: Use mono_thread_exit() to stop threads, instead of ExitThread.
19090
19091 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
19092
19093         * driver.c mini.h trace.c: Move the setting of the main assembly into
19094         a separate function called mono_trace_set_assembly () and call it after
19095         actually loading the main assembly. Fixes #66872.
19096
19097 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
19098
19099         * mini-amd64.h mini-amd64.c tramp-amd64.c: Allocate trampoline memory
19100         using the code manager.
19101
19102 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
19103
19104         * tramp-amd64.c mini-amd64.h: Add support for MONO_ARCH_HAVE_INVALIDATE_METHOD.
19105
19106 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
19107
19108         * cpu-amd64.md: Fix bug in previous patch.
19109         
19110         * cpu-amd64.md: Fix instruction lengths of membase opcodes. Fixes
19111         #66650.
19112
19113 Wed Sep 22 19:03:20 CEST 2004 Paolo Molaro <lupus@ximian.com>
19114
19115         * mini.h, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
19116         mini-exceptions.c: updates for changed stack walk interface.
19117
19118 2004-09-21  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
19119
19120         * mini-s390.c, cpu-s390.md: Minor changes to OP_ARGLIST handling
19121
19122 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
19123
19124         * mini.c (mono_method_to_ir): Fix LDSTR in dynamic methods. Fixes #66132.
19125
19126 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
19127
19128         * driver.c (mini_regression_list): Do not call mono_assembly_close 
19129         since assemblies can't be unloaded.
19130         
19131 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
19132
19133         * cpu-amd64.md: Fix more instruction lengths.
19134
19135         * cpu-amd64.md: Fix lengths of some instructions.
19136
19137 2004-09-11 Ben Maurer  <bmaurer@users.sourceforge.net>
19138
19139         * inssel.brg: Make the array ldelema check aot friendly.
19140
19141 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
19142
19143         * mini-amd64.c (mono_arch_get_argument_info): Fix stack_unwind test.
19144
19145         * cpu-amd64.md inssel-long.brg inssel-amd64.brg: Small optimizations.
19146
19147 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
19148
19149         * mini-x86.c: Fix build.
19150
19151         * mini-sparc.c mini-x86.c mini-amd64.c: Use the new 
19152         mono_type_get_underlying_type () helper function to simplify code.
19153         
19154 2004-09-09  Martin Baulig  <martin@ximian.com>
19155
19156         * mini-amd64.c: Don't access `type->data.klass' directly, call
19157         mono_class_from_mono_type() instead since the type may be a
19158         generic instance.
19159
19160 2004-09-09  Martin Baulig  <martin@ximian.com>
19161
19162         * mini-amd64.c (get_call_info): Fix support for generic instances.
19163         (add_valuetype): Use mono_class_from_mono_type() to get the class
19164         since we can be a generic instance.
19165
19166 Thu Sep 9 01:43:53 PDT 2004 Paolo Molaro <lupus@ximian.com>
19167
19168         * mini-ppc.c, mini.h, regalloc.c, regalloc.h: powerpc speedups.
19169
19170 2004-09-07 Ben Maurer  <bmaurer@users.sourceforge.net>
19171
19172         * liveness.c: reset spill costs on each scan: bug 62107
19173
19174 2004-09-07  Bernie Solomon  <bernard@ugsolutions.com>
19175
19176         * exceptions-sparc.c (mono_arch_find_jit_info): remove
19177         unnecessary line that doesn't compile
19178
19179 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
19180
19181         * mini.c mini.h mini-x86.h tramp-x86.c: Instead of freeing delegate
19182         trampolines, make them call an error function so people can fix their
19183         code.
19184
19185 2004-09-06  Martin Baulig  <martin@ximian.com>
19186
19187         * mini.c (mono_method_to_ir): When initializing locals, handle a
19188         generic instances like a valuetype if it's a valuetype and like a
19189         class if it's a class.
19190
19191 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
19192
19193         * exceptions-x86.c (mono_arch_find_jit_info): Pop arguments off the
19194         stack. Fixes #64674.
19195
19196         * exceptions.cs: Add test for unwinding of call arguments.
19197
19198 Mon Sep 6 05:50:02 PDT 2004 Paolo Molaro <lupus@ximian.com>
19199
19200         * mini-*.c, mini-ops.h, inssel-long32.brg: introduced
19201         OP_ADDCC_IMM and OP_SUBCC_IMM (add/sub immediate that will
19202         set the carry/borrow flag). The sparc and s390 implementations
19203         can now use optimized versions (and simplify the code). ppc bugfixes.
19204
19205 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
19206
19207         * exceptions-ppc.c (mono_arch_find_jit_info): Fix memory leak.
19208
19209 2004-09-05  Zoltan Varga  <vargaz@freemail.hu>
19210
19211         * inssel-amd64.brg: Remove leftover 32 bit rule.
19212
19213         * mini-amd64.c (mono_arch_instrument_prolog): Fix tracing support.
19214
19215 2004-09-04  Zoltan Varga  <vargaz@freemail.hu>
19216
19217         * mini-exceptions.c (mono_find_jit_info): Refactor common code from
19218         mono_arch_find_jit_info functions into a new function. Fix a memory
19219         leak.
19220
19221         * exceptions-x86.c exceptions-amd64.c exceptions-sparc.c: Remove
19222         refactored code.
19223         
19224 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
19225
19226         * exceptions.cs inssel-long32.brg: Handle the OP_LCONV_TO_OVF_I2 case
19227         as well.
19228         
19229         * exceptions.cs: Add array size tests.
19230
19231         * mini.c: Allocate a separate icall wrapper for each arity of 
19232         mono_array_new_va. Fixes #59509.
19233
19234         * exceptions.cs: Add testcase for 64578.
19235
19236         * inssel-long32.brg: Fix OP_LCONV_TO_OVF_I1 rule. Fixes #64578.
19237
19238         * trace.c (is_filenamechar): Allow 0..9 in strings. Fixes #65094.
19239         
19240 2004-09-02  Martin Baulig  <martin@ximian.com>
19241
19242         * mini.c (mono_method_to_ir): When initializing the locals, call
19243         handle_initobj() on the generic instance itself, not its
19244         underlying type.
19245
19246 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
19247
19248         * mini.h (MonoJitDynamicMethodInfo): New structure, extension of 
19249         MonoJitInfo for dynamic methods.
19250
19251         * mini.c: Rename trampoline_hash_mutex to jit_mutex.
19252
19253         * mini.c: Add support for freeing JIT data for dynamic methods.
19254         
19255 2004-09-01  Martin Baulig  <martin@ximian.com>
19256
19257         * mini-x86.c (is_regsize_var): Added support for generic
19258         instances.
19259         (mono_arch_emit_prolog): Make this compile again, use
19260         `x86_push_imm_template (code)'.
19261
19262 2004-08-30 Ben Maurer  <bmaurer@users.sourceforge.net>
19263
19264         * mini-x86.c: make all push_imm instructions that get
19265         patched always emit the long form
19266
19267 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
19268
19269         * mini.c (mono_create_jump_trampoline): Store the jump trampolines 
19270         in a per-domain hash.
19271
19272         * mini-amd64.c (merge_argument_class_from_type): Handle generic
19273         types.
19274
19275 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
19276
19277         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: Ongoing SSE
19278         work.
19279         
19280         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: More SSE
19281         work.
19282
19283         * mini-amd64.c cpu-amd64.md: Implement checked int<->uint casts.
19284         Beginnings of SSE2 support.
19285
19286         * exceptions.cs: Add more tests for checked int<->uint casts.
19287
19288 2004-08-28  Martin Baulig  <martin@ximian.com>
19289
19290         * mini-x86.c (mono_arch_instrument_epilog): Added support for
19291         generic instances.
19292
19293         * mini.c
19294         (mono_type_to_ldind, mono_type_to_stind, type_to_eval_stack_type):
19295         Handle generic instances recursively.
19296
19297 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
19298
19299         * iltests.il: test for conv.u8 on a constant
19300
19301 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
19302
19303         * inssel-long32.brg: c&p rules for LCONV_x4 (membase) and
19304         LCONV_x4 (shrun_32 (membase)).
19305
19306 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
19307
19308         * inssel-x86.brg: c&p rules for push/setret of long
19309
19310 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
19311
19312         * inssel-x86.brg: c&p rules for compare (base, regvar) and
19313         compare (regvar, base)
19314
19315         * inssel-x86.brg: more burg love
19316
19317         * inssel.brg: more cleanup
19318
19319         * inssel-x86.brg, inssel-long32.brg: burg cleanup.
19320
19321 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
19322
19323         * basic-long.cs, basic-calls.cs: new tests for optimization.
19324
19325 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
19326
19327         * mini-amd64.c (read_tls_offset_from_method): Fix typo in previous
19328         patch.
19329
19330 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
19331
19332         * mini-amd64.c (read_tls_offset_from_method): Add another case.
19333         
19334 2004-08-25  Bernie Solomon  <bernard@ugsolutions.com>
19335
19336         * inssel.brg (mini_emit_memcpy): use 
19337         NO_UNALIGNED_ACCESS to disable memcpy optimization
19338
19339 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
19340
19341         * mini-amd64.c: Handle generic types in various places.
19342
19343         * mini.c (mono_method_to_ir): Handle generic types in init locals.
19344
19345 2004-08-24  Zoltan Varga  <vargaz@freemail.hu>
19346
19347         * mini.c (handle_box): Fix warning.
19348
19349         * mini-amd64.c (mono_arch_local_regalloc): Fix regalloc problem.
19350
19351         * mini-amd64.h: Enable the emit_state optimization.
19352
19353         * mini-ops.h cpu-amd64.md: Add new amd64_test_null opcode.
19354
19355         * mini-amd64.c: Add some new 64 bit peephole opts.
19356
19357         * inssel.brg (mini_emit_memcpy): Optimize for 64 bit architectures.
19358
19359         * cpu-amd64.md: sreg1 of div instructions must be %rax.
19360
19361         * mini-amd64.c: Register allocator fixes.
19362
19363         * mini.c: Add an optimization to emit_state to avoid allocation of new
19364         registers on some platforms.
19365
19366 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
19367
19368         * inssel-x86.brg inssel-amd64: Add yet another missing tree->dreg assignment.
19369
19370         * mini-x86.c (mono_arch_local_regalloc): Fix bug in long register
19371         allocation. Fixes #63085.
19372
19373         * basic-long.cs: Add new regression test.
19374
19375         * mini-amd64.c: Register allocator improvements.
19376
19377 2004-08-21  Zoltan Varga  <vargaz@freemail.hu>
19378
19379         * mini-amd64.c (read_tls_offset_from_method): Add another code
19380         sequence.
19381
19382         * tramp-amd64.c (amd64_class_init_trampoline): Use a more efficient
19383         instruction sequence for nullifying class init trampolines.
19384
19385         * objects.cs: Add new regalloc test.
19386
19387         * mini-amd64.c inssel-amd64.brg: Optimize parameter passing.
19388
19389 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
19390
19391         * mini-amd64.c (mono_arch_call_opcode): Refactor this a little.
19392         
19393         * mini-amd64.c (mono_arch_regalloc_cost): Adjust regalloc costs for
19394         arguments.
19395
19396         * driver.c: Fix profiling after TLS changes.
19397         
19398         * driver.c (mono_main): Set mono_stats.enabled if needed.
19399
19400         * mini.c (handle_alloc): New helper function used by CEE_NEWOBJ and
19401         CEE_BOX.
19402
19403 2004-08-20 Ben Maurer  <bmaurer@users.sourceforge.net>
19404
19405         * mini-x86.c: use a 1 op rather than a 2 op tls access
19406         instruction -> faster.
19407
19408 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
19409
19410         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from
19411         x86 backend.
19412
19413 2004-08-19 Bernie Solomon <bernard@ugsolutions.com>
19414
19415         * exceptions-sparc.c (throw_exception): fix typo
19416
19417 2004-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
19418
19419         * mini-x86.c, cpu-pentium.md, inssel-x86.brg:
19420         set tree->dreg correctly with tls. Allow any
19421         register to be used.
19422
19423         * mini-x86.c (read_tls_offset_from_method): add new code
19424         generation pattern seen with GCC.
19425
19426
19427 Thu Aug 19 17:26:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
19428
19429         * mini-exceptions.c, exceptions-x86.c, exceptions-amd64.c,
19430         exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
19431         exceptions-sparc.c: fix some performance issues in exception
19432         handling and setting of the stack trace for exceptions that were
19433         already thrown.
19434
19435 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
19436
19437         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from 
19438         x86 backend.
19439         
19440         * mini-amd64.c (mono_arch_is_int_overflow): Handle all possible 
19441         registers.
19442
19443 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
19444
19445         This patch inlines tls access, when possible.
19446         
19447         * mini.h: new arch functions for TLS intrinsics.
19448         All platforms updated with a stub.
19449
19450         * mini.c: use the new intrinsics
19451
19452         * mini-x86.c, cpu-pentium.md, inssel-x86.brg, mini-ops.h:
19453         arch specific intrinsic for tls variables
19454
19455 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
19456
19457         * Makefile.am (libmono_la_LDFLAGS): Enable creating of libmono dll
19458         under windows.
19459
19460 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
19461
19462         * mini.c: thread local allocation
19463
19464 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
19465
19466         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Enable.
19467
19468         * Makefile.am: Link against the static version of libmonogc.
19469         
19470         * Makefile.am: Link the static versions of the convenience libraries
19471         into the mono executable.
19472
19473         * mini-x86.h mini-x86.c: Throw the correct exception on integer overflow.
19474
19475 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
19476
19477         * mini.h mini.c mini-amd64.h mini-amd64.c: Throw the correct exception
19478         on integer overflow.
19479
19480         * mini-amd64.c: Reorganize function call code.
19481
19482         * mini-amd64.c (peephole_pass): Merge changes from mini-x86.c.
19483
19484 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
19485
19486         * inssel-x86.brg: use xor eax,eax.
19487         
19488         * basic.cs: new tests
19489
19490 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
19491
19492         * mini-amd64.c (mono_arch_emit_epilog): Use RIP relative addressing
19493         in exception throwing code.
19494         
19495 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
19496
19497         * inssel-x86.brg: use xor esi,esi.
19498
19499 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
19500
19501         * driver.c (mono_main): Call mono_trace_parse_options earlier so it
19502         can trace methods compiled during mini_init () too.
19503
19504         * cpu-amd64.md mini-amd64.c (mono_arch_output_basic_block): Handle 
19505         CEE_CONV_U4.
19506
19507 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
19508
19509         * Makefile.am: static link on x86 (r=zoltan)
19510
19511 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
19512
19513         * tramp-amd64.c (amd64_magic_trampoline): Avoid patching the trampoline
19514         code since it causes some programs to fail.
19515
19516 2004-08-12  Zoltan Varga  <vargaz@freemail.hu>
19517
19518         * mini-amd64.c (bb_is_loop_start): Merge changes from mini-x86.c.
19519
19520 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
19521
19522         * mini.c: ovfops_op_map - add STACK_OBJ case for
19523         CONV_I 
19524         * basic.cs: add test_0_pin_string as test
19525         case for above.
19526
19527 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
19528
19529         * Makefile.am: build C# if srcdir != builddir
19530
19531 Tue Aug 10 19:23:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
19532
19533         * dominators.c, mini.h, mini-x86.c: fix loop alignment with
19534         fall-through blocks.
19535
19536 Tue Aug 10 16:18:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
19537
19538         * driver.c: enable loop by default again and include abcrem in -O=all.
19539
19540 2004-08-08  Zoltan Varga  <vargaz@freemail.hu>
19541
19542         * iltests.il: Add some localloc tests.
19543
19544         * mini.c (mono_method_to_ir): Set stack type of LOCALLOC correctly.
19545
19546         * inssel-amd64.brg inssel-x86.brg: Set dreg of LOCALLOC correctly. 
19547         Fixes #62574.
19548
19549         * inssel-amd64.brg: Add some optimizations.
19550
19551         * mini-amd64.c (mono_arch_setup_jit_tls_data): Add tls offset detection
19552         for gcc-3.4.
19553
19554         * Makefile.am: Statically link mono against libmono on AMD64.
19555         
19556         * mini-amd64.c inssel-amd64.brg: Optimizations.
19557
19558 2004-08-07  Zoltan Varga  <vargaz@freemail.hu>
19559
19560         * mini-amd64.c (mono_arch_emit_prolog): Optimize lmf saving a bit.
19561
19562         * tramp-amd64.c: Patch calling code in trampolines.
19563
19564 2004-08-06  Zoltan Varga  <vargaz@freemail.hu>
19565
19566         * mini-amd64.c: pinvoke struct passing fixes.
19567
19568 2004-08-05  Bernie Solomon  <bernard@ugsolutions.com>
19569
19570         * mini-sparc.c: redo change, make mono_arch_cpu_init call
19571         mono_arch_cpu_optimizazions so sparcv9 is initialized when embedded
19572
19573 2004-08-05  Duncan Mak  <duncan@ximian.com>
19574
19575         * mini.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
19576         CEE_LDELEM_ANY.
19577
19578 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
19579
19580         * mini-amd64.c (emit_move_return_value): Move return value for normal
19581         calls too.
19582
19583 2004-08-05  Martin Baulig  <martin@ximian.com>
19584
19585         * mini.c (ret_type_to_call_opcode): Don't use a `t' variable for
19586         `type->type'; just modify `type' itself when dealing with enums
19587         and generic instances.
19588         (check_call_signature): Make `simple_type' a `MonoType *'.
19589
19590 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
19591
19592         * mini.c: Use OP_PADD to add offsets to addresses.
19593
19594         * mini-amd64.h: Disable SIGSEGV_ON_ALTSTACK.
19595
19596 2004-08-04  Bernie Solomon  <bernard@ugsolutions.com>
19597
19598         * mini-sparc.c (mono_arch_emit_epilog): fix check
19599         for folding last op into restore instruction
19600
19601 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
19602
19603         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Allocate
19604         helper methods using the code manager.
19605         
19606         * exceptions-amd64.c (mono_arch_get_throw_exception): Fix maximum length.
19607
19608         * mini-amd64.c (mono_arch_allocate_vars): Fix tls offset detection.
19609
19610 Tue Aug 3 23:50:00 EST 2004 Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
19611         
19612         * mini-s390x.c mini-s390x.h tramp-s390x.c inssel-s390x.brg
19613           cpu-s390x.md exceptions-s390x.c Makefile.am: S/390 64-bit JIT
19614
19615         * mini-s390.c: fix tail processing
19616
19617 Tue Aug 3 01:35:44 PDT 2004 Paolo Molaro <lupus@ximian.com>
19618
19619         * mini-ppc.c: mul.ovf.un exception name fix.
19620
19621 2004-08-03  Martin Baulig  <martin@ximian.com>
19622
19623         * mini-x86.c (mono_arch_call_opcode): Correctly handle generic
19624         instances; before jumping to `handle_enum', also modify `ptype'.
19625
19626 2004-08-02  Bernie Solomon  <bernard@ugsolutions.com>
19627
19628         * cpu-sparc.md: fcall maximal length too small.
19629
19630 2004-08-02  Zoltan Varga  <vargaz@freemail.hu>
19631
19632         * mini-amd64.c mini.h: Add initial support for passing/returning 
19633         structures to/from pinvoked methods.
19634
19635 Mon Aug 2 11:59:35 PDT 2004 Paolo Molaro <lupus@ximian.com>
19636
19637         * mini-ppc.c: reg allocator fix.
19638
19639 2004-07-31  Zoltan Varga  <vargaz@freemail.hu>
19640
19641         * mini-amd64.c (mono_arch_output_basic_block): Fix OP_X86_PUSH_OBJ.
19642
19643         * inssel.brg: Optimize memset on 64 bit machines.
19644
19645         * mini-amd64.c: Fix some vararg cases.
19646
19647 2004-07-30  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
19648
19649         * mini-s390.c: Corrected macro in emit_float_to_int
19650
19651         * s390-abi.cs: Tests to exercise the s390 ABI
19652
19653 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
19654
19655         * exceptions-amd64.c (mono_arch_find_jit_info): Fix restoring of
19656         caller saved regs.
19657
19658         * basic.cs: Add a test for add.ovf.un.
19659
19660 2004-07-30  Bernie Solomon  <bernard@ugsolutions.com>
19661
19662         * mini-sparc.c: add case for OP_IDIV_UN
19663
19664 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
19665
19666         * mini-amd64.c mini-amd64.h mini.c: Add support for vararg pinvoke calls.
19667         
19668         * mini-amd64.c cpu-amd64.md: Ongoing JIT work.
19669
19670 2004-07-30  Ben Maurer  <bmaurer@ximian.com>
19671
19672         * basic.cs: regression tests.
19673
19674         * inssel-x86.brg: Disable cmp BYTE PTR [eax], imm, it causes various
19675         regressions.
19676
19677 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
19678
19679         * basic.cs: Add a new test.
19680
19681         * mini-amd64.c aot.c cpu-amd64.md: Add support for tracing, profiling 
19682         and AOT. Various fixes and optimizations.
19683
19684         * inssel.brg (CALL_REG): Add 64 bit versions of call_reg rules.
19685
19686 Fri Jul 30 15:49:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
19687
19688         * mini-ppc.c: make sure temp regs are not used for global reg
19689         allocation.
19690
19691 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
19692
19693         * cpu-sparc.md: conv_i8 fix for 64bits
19694
19695         * mini-sparc.c: add cases for OP_IXXX codes for 64bits
19696
19697 2004-07-29  Ben Maurer  <bmaurer@ximian.com>
19698         
19699         * cpu-pentium.md, mini-x86.c, inssel-x86.brg, mini-ops.h:
19700         add opcode for cmp BYTE PTR [eax], imm.
19701
19702         * inssel.brg: Make memcpy and memset takes bases.
19703
19704 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
19705
19706         * *-amd64.*: More AMD64 work.
19707         
19708 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
19709
19710         * cpu-pentium.md, inssel-x86.brg, mini-ops.h, mini-x86.c:
19711         add a compare-not-equal opcode.
19712         
19713 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
19714
19715         * mini.c: Use mono_init_from_assembly instead of mono_init.
19716         
19717 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
19718
19719         * mini.c: Fix opcode mapping for STACK_MP on 64 bit platforms.
19720
19721         * mini.c (CEE_NEWOBJ): Call mono_array_new_va using the correct signature.
19722
19723         * mini.c: Use MONO_ARCH_SIGACTION on AMD64 as well.
19724
19725         * inssel.brg: 64 bit fixes.
19726
19727         * mini.h (MonoCallInst): Add some AMD64 specific data.
19728
19729         * mini.h: Add some OP_P opcodes.
19730
19731 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
19732
19733         * basic.cs: tests for 61797 and 61740
19734
19735 Tue Jul 27 16:05:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
19736
19737         * mini-ppc.c, mini-sparc.c, mini-s390.c: keep track of line
19738         numbers in the debug info (spotted by Geoff Norton, <gnorton@customerdna.com>).
19739
19740 2004-07-24  Zoltan Varga  <vargaz@freemail.hu>
19741
19742         * mini-sparc.c (mono_arch_output_basic_block): Add CEE_CONV_U8/I8.
19743
19744         * *-amd64*.*: Ongoing AMD64 work.
19745
19746 2004-07-23 Zoltan Varga <vargaz@freemail.hu>
19747
19748         * inssel-long.brg: Implement CONV_I8/CONV_U8 in the backends.
19749
19750         * *-amd64*: Ongoing AMD64 work.
19751
19752         * mini-arch.h: Add AMD64 support.
19753
19754         * mini-sparc.c (mono_arch_is_inst_imm): New arch dependent function.
19755
19756         * mini.h: Add new arch dependent function mono_arch_is_inst_imm.
19757
19758         * mini-ops.h: Add new opcodes.
19759
19760         * Makefile.am: Add AMD64 support.
19761
19762         * inssel.brg inssel-long32.brg inssel-long.brg: Move mul/div and shift
19763         rules into the inssel-long*.brg files.
19764
19765         * *-amd64.*: Add beginnings of AMD64 backend.
19766
19767 2004-07-22  Ben Maurer  <bmaurer@ximian.com>
19768
19769         * mini.c (print_dfn): commenting out the code that prints
19770         the cil. With -O=deadce, this makes -v -v crash.
19771         
19772         * cpu-pentium.md: make checkthis have a length of 2
19773
19774 2004-04-21  Bernie Solomon  <bernard@ugsolutions.com>
19775
19776         * mini-sparc.h: fix implementations of __builtin
19777         functions for Sun compiler for V9.
19778
19779 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
19780
19781         * mini.c: use the new stelem.ref wrapper
19782         * exceptions.cs, arrays.cs: new stelem.ref tests
19783
19784 Wed Jul 14 19:08:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
19785
19786         * mini-ppc.c, exceptions-ppc.c: cleanups and fixes (the
19787         new XSP should work with these changes).
19788
19789 2004-07-14  Ben Maurer  <bmaurer@ximain.com>
19790         
19791         * inssel-{long32,x86,}.brg: trivial optimizations.
19792         
19793 Mon Jul 12 20:25:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
19794
19795         * mini.c: load value when emitting box operation in
19796         constrained calls.
19797
19798 2004-07-12  Ben Maurer  <bmaurer@ximian.com>
19799
19800         * mini-x86.c (OP_CHECK_THIS): cmp DWORD PTR [eax], eax
19801         is one byte shorter than cmp DWORD PTR [eax], 0.
19802
19803 Mon Jul 12 17:47:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
19804
19805         * inssel-ppc.brg: arguments on the stack are always
19806         relative to the stack pointer (spotted by Neale Ferguson).
19807
19808 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19809
19810         * exceptions-x86.c: delay appending the method name to the trace until
19811         after mono_jit_info_table_find is called, as this gets the real
19812         MonoMethod.
19813
19814 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
19815
19816         * aot.c: register roots
19817
19818 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
19819
19820         * aot.c : I could just use PLATFORM_WIN32 flag.
19821
19822 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
19823
19824         * aot.c : Reverting the previous fix. This time it broke linux build.
19825
19826 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
19827
19828         * aot.c : quick cygwin build fix. mkdir() with two args does not exist.
19829
19830 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
19831
19832         * mini.c (handle_stack_args): Remove some more debugging code.
19833         
19834         * mini.c (handle_stack_args): Remove debug output left in by mistake.
19835
19836         * driver.c mini.h aot.c: Allow additional options to be specified with
19837         --aot and pass them to mono_compile_assembly.
19838
19839         * aot.c: Add experimental code to AOT compile all loaded assemblies
19840         on demand and save the code into a cache in the filesystem.
19841
19842         * aot.c: Add support for more wrapper methods.
19843         
19844         * mini.c (handle_stack_args): Handle some corner cases. Fixes 
19845         58863.
19846
19847         * cpu-*.md: Remove removed opcodes.
19848
19849         * mini.h mini.c: Move JIT icall handling to icall.c. Replace usage of
19850         CEE_MONO_PROC<x> with CEE_MONO_ICALL. Move registration of marshalling
19851         related icalls to marshal.c.
19852
19853 2004-07-06  Zoltan Varga  <vargaz@freemail.hu>
19854
19855         * mini-ops.h: Add OP_SAVE_LMF and OP_RESTORE_LMF.
19856
19857         * Makefile.am (EXTRA_DIST): Add inssel-long[32].brg.
19858
19859         * inssel.brg: Fix warning. Add rules for SAVE_LMF and RESTORE_LMF.
19860
19861 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
19862         * liveness.c: If liveness is recomputated we need to reset the information
19863         for each variable. This way, if the liveness range has been narrowed
19864         by optimizations that happened after the last computation, we can return
19865         a smaller range.
19866         
19867         For example, if you have
19868         
19869         {
19870                 int i = 0;
19871                 
19872                 // Tons of code that does not affect i
19873                 
19874                 i = foo ();
19875                 ...
19876         }
19877         
19878         i = 0 is dead code and will be removed by SSA. However, when
19879         linear scan gets to the code, i will still appear to be live
19880         throughout the entire block. This prevents good register allocation.
19881
19882 2004-07-06  Martin Baulig  <martin@ximian.com>
19883
19884         * debug-mini.c (mono_debug_init_method): Allow
19885         MONO_WRAPPER_MANAGED_TO_NATIVE wrappers.
19886         (mono_debug_add_icall_wrapper): New method.
19887
19888         * mini.c (mono_icall_get_wrapper): Call mono_debug_add_icall_wrapper().
19889
19890 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
19891
19892         * mini.c (optimize_branches): Fix linking of bblocks in branch->branch
19893         optimization.
19894
19895 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
19896
19897         * aot.c (mono_aot_load_method): Fix loading of debug info.
19898
19899 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
19900
19901         * aot.c: Add logging support.
19902
19903 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
19904
19905         * mini.h: Add prototype for mono_print_method_from_ip.
19906
19907         * mini.c: 64 bit fixes. Use LCOMPARE for comparing longs.
19908
19909         * inssel.brg: 64 bit fixes.
19910
19911         * inssel.brg inssel-long32.brg: Move 32 bit arithmetic rules to 
19912         inssel-long32.brg.
19913
19914         * Makefile.am: Add SPARC64 support.
19915
19916 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
19917
19918         * aot.c: Fix alignment problems on 32 bit platforms.
19919
19920 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
19921
19922         * helpers.c (mono_disassemble_code): Pass -xarch=v9 to assembler on
19923         SPARC64.
19924
19925         * aot.c: Add SPARC64 support. Reorganize patch table to fix alignment
19926         problems.
19927
19928         * mini.h: Bump AOT file version. Some 64 bit fixes.
19929
19930 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
19931
19932         * inssel-sparc.brg: Add new rule to avoid register moves.
19933
19934         * inssel.brg: Add ldind_to_load_membase helper function.
19935
19936 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
19937
19938         * mini.c: OffsetToStringData intrinsic.
19939         
19940 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
19941
19942         * ssa.c: Handle OP_LCOMPARE the same as OP_COMPARE.
19943
19944         * objects.cs exceptions.cs basic.cs basic-long.cs basic-calls.cs: New
19945         regression tests.
19946
19947         * mini-ops.h cpu-sparc.md mini-sparc.h mini-sparc.c exceptions-sparc.c tramp-sparc.c inssel-long.brg: Add SPARC64 support.
19948 Mon Jun 28 18:05:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
19949
19950         * mini.c: reinstated mono_compile_get_interface_var()
19951         on x86, too, since the change breaks the Gtk# build there as well.
19952
19953 Fri Jun 25 17:36:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
19954
19955         * driver.c: remove loop from the default optimizations: it seems to
19956         interact badly with some of the other options (see bug #60613).
19957
19958 2004-06-25  Zoltan Varga  <vargaz@freemail.hu>
19959
19960         * mini.c mini-x86.h mini-x86.c: Applied patch from Guenter Feldmann 
19961         (fld@informatik.uni-bremen.de): Add Solaris x86 support.
19962
19963 Tue Jun 22 21:29:11 CEST 2004 Paolo Molaro <lupus@ximian.com>
19964
19965         * mini-ppc.c, cpu-g4.md: small updates to be able to compile
19966         vararg-using methods.
19967
19968 2004-06-21  Martin Baulig  <martin@ximian.com>
19969
19970         * mini/mini-exceptions.c
19971         (mono_handle_exception): Added `gpointer original_ip' argument.
19972         After calling mono_unhandled_exception(), call
19973         mono_debugger_unhandled_exception() and if that returns true,
19974         restore the context and return.
19975
19976 Mon Jun 21 19:26:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
19977
19978         * mini-ppc.c: prefer the use of relative branches so
19979         they won't need to be patched in aot code (patch from Patrick Beard).
19980
19981 Mon Jun 21 19:03:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
19982
19983         * aot.c: patch from Patrick Beard to make the output assembly
19984         more correct for the MacOSX assembler. Small tweak to
19985         generate sane images on Linux/PPC, too.
19986
19987 Fri Jun 18 18:24:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
19988
19989         * mini.c, mini.h, mini-ppc.c: handle varargs methods with a special
19990         case until bug #59509 is fixed (shows up in #60332).
19991
19992 Tue Jun 15 16:36:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
19993
19994         * mini.c: make sure the needed wrappers are compiled, too, with
19995         precomp.
19996
19997 Mon Jun 14 18:36:08 CEST 2004 Paolo Molaro <lupus@ximian.com>
19998
19999         * driver.c: remove NPTL reference in --version output.
20000
20001 Sun Jun 13 17:25:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
20002
20003         * aot.c: patch from Patrick Beard (pcbeard@mac.com) to
20004         generate valid assembly for the Mach-O assembler.
20005
20006 Sun Jun 13 15:59:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
20007
20008         * driver.c: don't include abcrem in the all optimization specifier
20009         since it slows down jit compilation too much for now.
20010
20011 2004-06-12 Ben Maurer  <bmaurer@users.sourceforge.net>
20012
20013         * mini.c: use BIGMUL only if both operands have the same signage.
20014         * iltests.il: Test for bug 60056. (errors related to signage in
20015         BIGMUL).
20016
20017         r=lupus.
20018
20019 Thu Jun 10 16:06:42 CEST 2004 Paolo Molaro <lupus@ximian.com>
20020
20021         * mini.c, aot.c: memory leak fixes.
20022
20023 Tue Jun 8 16:37:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
20024
20025         * inssel-long32.brg: implemented a few missing ulong cast opcodes.
20026
20027 Tue Jun 8 15:36:30 CEST 2004 Paolo Molaro <lupus@ximian.com>
20028
20029         * Makefile.am: remove the -static hack completely, it links in
20030         statically glib as well.
20031
20032 Sat Jun 5 16:32:33 CEST 2004 Paolo Molaro <lupus@ximian.com>
20033
20034         * iltests.il, mini.c: fixed bug#59580 in branch optimization.
20035         * exceptions.cs: make it compile with new mcs/csc.
20036
20037 2004-06-03 Massimiliano Mantione <massi@ximian.com>
20038         * cpu-pentium.md basic-float.cs Fixed bug on fpu spills (see bug 54467),
20039         and added relevant test case.
20040
20041 Mon May 31 19:41:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
20042
20043         * mini.c revert Zoltan's fix to bug#58863 on ppc, since it causes
20044         regressions in gtk-sharp.
20045
20046 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
20047
20048         * exceptions.cs: New regression tests.
20049
20050         * jit-icalls.c (mono_llmult_ovf): Fix some boundary conditions.
20051
20052 Sat May 29 10:45:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
20053
20054         * mini.c: emit castclass/isinst in their own trees (bug #54209/59057).
20055
20056 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
20057
20058         * mini-sparc.h (MONO_ARCH_NEED_DIV_CHECK): Define this.
20059
20060         * cpu-sparc.md mini-sparc.c: Add overflow detection to div opcodes.
20061
20062 2004-05-28      Patrik Torstensson <totte@hiddenpeaks.com>
20063
20064         * mini.c (mono_jit_runtime_invoke): Init class in this
20065         method instead of trusting mono_jit_compile_method to
20066         do the work (because wrappers can be in object class)
20067
20068 2004-05-27  Zoltan Varga  <vargaz@freemail.hu>
20069
20070         * mini-sparc.c (mono_arch_output_basic_block): Fix sub.imm.
20071
20072         * basic-long.cs: New regression test.
20073
20074 Thu May 27 15:50:52 CEST 2004 Paolo Molaro <lupus@ximian.com>
20075
20076         * cpu-g4.md, mini-ppc.c: fixes to long add/sub ovf opcodes
20077         and div/rem checks.
20078
20079 Thu May 27 12:36:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
20080
20081         * Makefile.am: fix miguel's change to build mono statically against
20082         libmono (track build dependencies).
20083
20084 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
20085
20086         * cfold.c: Some glib versions do not have G_MININT32.
20087
20088 2004-05-26  Massimiliano Mantione  <massi@ximian.com>
20089
20090         * mini-x86.c cpu-pentium.md Makefile.am basic-math.cs: Fixed problem
20091         with precision of tan, atan, sin and cos, and implemented related
20092         regressions tests (fixes bug 54467, but one new problem appeared and
20093         is not fixed yet).
20094
20095 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
20096
20097         * cfold.c (FOLD_BINOPZ): Avoid division by zero.
20098
20099         * exceptions.cs: Add test for constant folding && division by zero.
20100
20101         * driver.c mini.h mini.c mini-x86.c: Revert most of the previous patch
20102         since driver.c is in libmono too, so the optimization was useless.
20103
20104         * driver.c mini.h mini.c mini-x86.c: Moved the mono_lmf_addr TLS 
20105         variable to driver.c so the compiler can emit more efficient code to
20106         access them.
20107
20108 2004-05-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20109
20110         * Makefile.am: don't distribute generated inssel.[ch] files.
20111
20112 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
20113
20114         * mini.c (mono_jit_compile_method_with_opt): Really emit icall wrappers
20115         into the default appdomain. Fixes #58707.
20116
20117         * jit-icalls.c: Remove the broken approximation for truncl, doing
20118         no conversion is better.
20119
20120         * mini.c (handle_stack_args): Avoid reusing variables for stack slots.
20121         Fixes #58863.
20122
20123 Tue May 25 14:33:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
20124
20125         * mini-ops.h, mini-ppc.c, cpu-g4.md, inssel-ppc.brg: eliminate the use
20126         of the mcrxr instruction which is not available on some processors
20127         even if it's documented to be. Implement add and sub overflow correctly
20128         (still not complete for long unsigned). Speed up icalls a bit.
20129
20130 2004-05-25 13:01 CET Patrik Torstenson <totte@hiddenpeaks.com>
20131
20132         * mini.c (mono_jit_compile_method_with_opt): Make sure that
20133         we run .cctor in the current domain instead of target_domain.
20134         
20135         Fixes bug #58558, .cctor not being called in -O=shared.
20136
20137 Tue May 25 12:46:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
20138
20139         * mini-ppc.h, jit-icalls.c: added explicit checks for divide by zero.
20140
20141 2004-05-24 Ben Maurer  <bmaurer@users.sourceforge.net>
20142
20143         * mini-x86.c (EMIT_COND_BRANCH): If an OP_LABEL has an offset
20144         which can be done with an imm8, do it that way.
20145         (mono_arch_output_basic_block): ditto for a jmp
20146         (mono_arch_emit_prolog): Computate maximum offset of a label.
20147
20148 2004-05-24 18:18 CET Patrik Torstenson <totte@hiddenpeaks.com>
20149
20150         * mini-x86.c (mono_arch_local_regalloc): the reg allocator
20151         now tries to allocate prefered physical reg's for virtual
20152         regs. This reduces the number of emited spills/loads with
20153         20-30% on our core assemblies.
20154
20155 Mon May 24 18:21:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
20156
20157         * jit-icalls.c: truncl() is not needed and trunc() is
20158         the correct thing to do anyway (bug #58287).
20159
20160 2004-05-24  Zoltan Varga  <vargaz@freemail.hu>
20161
20162         * mini-sparc.c (mono_arch_flush_icache): Call sync_instruction_memory
20163         if available.
20164
20165 Mon May 24 12:49:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
20166
20167         * driver.c: enable loop optimizations by default.
20168
20169 Mon May 24 11:13:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
20170
20171         * mini-x86.c: fix calc of max loop size when aligning loops start.
20172
20173 2004-05-23  Zoltan Varga  <vargaz@freemail.hu>
20174
20175         * ssa.c (mono_ssa_cprop): Allocate carray dynamically instead of on
20176         the stack.
20177
20178 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
20179
20180         * mini-sparc.c (mono_arch_output_basic_block): ADD_IMM and SUB_IMM
20181         should set carry.
20182
20183         * basic-long.cs: Add tests for add/subtract of immediates with carry.
20184
20185         * mini.c exceptions-x86.c: Remove MONO_USE_EXC_TABLES stuff.
20186         
20187         * mini.c (inline_method): Allways inline some wrappers even if the cost
20188         is too large. Fixes #58785.
20189
20190         * mini.c: Add support for MARSHAL_CONV_FTN_DEL.
20191         
20192 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
20193
20194         * mini-sparc.c exceptions-sparc.c: Applied patch from Mark Crichton
20195         (crichton@gimp.org). Beginning of support for sparc/linux.
20196
20197         * mini-sparc.c: Optimize retrieval of LMF address.
20198
20199 Fri May 21 08:00:12 EDT 2004 Paolo Molaro <lupus@ximian.com>
20200
20201         * exceptions-ppc.c:  handle alloca in methods with clauses.
20202
20203 Fri May 21 07:35:30 EDT 2004 Paolo Molaro <lupus@ximian.com>
20204
20205         * mini-ppc.c: cleanups, off-by-one fixes, avoid recursive thunks.
20206
20207 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
20208
20209         * mini.c: Delegate most of the abort signal work to 
20210           mono_thread_request_interruption, which also handles Stop and Suspend
20211           states.
20212
20213 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
20214
20215         * mini.c mini.h: Allow inlining of icall wrappers if the backend 
20216         supports the save/restore lmf opcodes.
20217
20218 2004-05-19  Zoltan Varga  <vargaz@freemail.hu>
20219
20220         * mini-x86.c (mono_arch_setup_jit_tls_data): Handle code generated
20221         by gcc-3.4 as well.
20222
20223         * mini-x86.h mini-x86.c tramp-x86.c: Optimize lmf restoring code.
20224
20225 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
20226
20227         * mini.h mini.c (mini_method_compile): Only run abc removal pass on 
20228         methods which contain array accesses.
20229
20230         * mini.c (CEE_LDTOKEN): Handle this instruction correctly on bb
20231         boundaries. Fixes #58537.
20232
20233         * iltests.il: Add regression test for #58537.
20234
20235 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
20236
20237         * mini-x86.c (mono_arch_local_regalloc): Last part of
20238         fix for bug #58633 (releasing register to early).
20239
20240 2004-05-18  Miguel de Icaza  <miguel@ximian.com>
20241
20242         * basic-long.cs: Add new regression test.
20243
20244 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
20245
20246         * mini-x86.c (mono_arch_local_regalloc): Avoid releasing a
20247         register too early on the chain.
20248
20249 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
20250
20251         * mini.c (create_helper_signature): Use a helper function to reduce
20252         the code which needs to be written. Also set the calling convention of
20253         icalls on windows. Fixes #57840.
20254
20255 Tue May 18 11:05:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
20256
20257         * mini.h, exceptions-x86.c, exceptions-sparc.c, exceptions-s390.c,
20258         exceptions-ppc.c: added helper function to get the instruction address
20259         from a signal handler context.
20260
20261 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
20262
20263         * helpers.c: use g_get_tmp_dir. Invokes happyness 
20264         from gonzalo.
20265
20266 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
20267
20268         * helpers.c: Add new env variable to pass args to objdump.
20269         Specifically for those of us who love -Mintel. r=miguel, gonzalo.
20270
20271 2004-05-17  Radek Doulik  <rodo@ximian.com>
20272
20273         * Makefile.am (common_sources): added abcremoval.h so it get
20274         disted and daily mono packages on go-mono.com will build again
20275
20276 2004-05-17  Massimiliano Mantione  <massi@ximian.com>
20277
20278         * abcremoval.c: Fixed coding style, added copyright header.
20279
20280         * abcremoval.h: Fixed style and moved prototype to mini.h, added copyright header.
20281
20282         * mini.h: Added prototype for abc removal main function.
20283
20284         * build_relations_propagation_table.pl: Added copyright header.
20285
20286 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
20287
20288         * basic-long.cs: reg test for complex ceq_long bug.
20289
20290 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
20291
20292         * mini-x86.c (mono_arch_local_regalloc): Correctly free 
20293         reg in long and clob case (bug #58343). Fixed/added comments.
20294
20295 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
20296
20297         * mini.c (mono_jit_runtime_invoke): Follow new convention
20298         of calling the invoke method with an function pointer.
20299
20300 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
20301
20302         * ChangeLog: Fix author of memory leak patch.
20303
20304 Fri May 14 15:13:06 CEST 2004 Paolo Molaro <lupus@ximian.com>
20305
20306         * Makefile.am: fix make dist as well...
20307
20308
20309 2004-05-14  Massimiliano Mantione  <massi@ximian.com>
20310
20311         * cfold.c: Made so that conversions from pointer to int4 are no-ops
20312         on archs where pointers are 4 bytes long.
20313
20314         * Makefile.am: Added abcremoval.c source file.
20315
20316         * abcremoval.c: Added abcremoval.c.
20317
20318         * abcremoval.h: Added abcremoval.h.
20319
20320         * build_relations_propagation_table.pl: Added build_relations_propagation_table.pl.
20321
20322         * inssel.brg: Enabled bounds check removal.
20323
20324         * mini.c: Added support for abcrem optimization.
20325
20326         * mini.h: Added abcrem optimization label.
20327
20328         * driver.c: Added support for abcrem optimization.
20329
20330         * propagated_relations_table.def: Added propagated_relations_table.def.
20331
20332 Fri May 14 14:30:13 CEST 2004 Paolo Molaro <lupus@ximian.com>
20333
20334         * mini.c, cfold.c: fix style.
20335
20336 Fri May 14 14:28:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
20337
20338         * mini.c: handle issue with the low-level implementation of
20339         some long opcodes (bug #54209).
20340
20341 2004-05-13 Ben Maurer  <bmaurer@users.sourceforge.net>
20342
20343         * basic.cs: test for my new cmov stuff.
20344
20345 2004-05-13      Patrik Torstensson
20346
20347         * mini-x86.c: added OP_X86_COMPARE_MEMBASE_IMM peephole
20348         opt and added peephole documentation.
20349
20350 Thu May 13 11:41:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
20351
20352         * tramp-ppc.c: rewrote the generic trampoline code.
20353
20354 2004-05-11      Patrik Torstensson
20355
20356         * mini-x86.c: optimize long shl/shr asm code (one less branch)
20357
20358 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
20359
20360         * basic.cs basic-long.cs objects.cs: Make these compile under MS csc.
20361
20362         * mini.h mini.c dominators.c: Applied patch from Derek Woo
20363         (derek@eecg.toronto.edu): Fix memory leaks in loop optimizations.
20364
20365         * mini.c: Add new icalls for AsAny marshalling.
20366
20367 Tue May 11 16:00:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
20368
20369         * tramp-ppc.c, mini-ppc.c: more cleanups.
20370
20371 2004-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20372
20373         * mini.c: no warnings.
20374
20375 Tue May 11 13:59:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
20376
20377         * mini-ppc.c, mini.c: use mono_resolve_patch_target ().
20378
20379 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
20380
20381         * mini.c: In the thread abort signal handler, if the thread is in the
20382         process of being stoped, don't throw the Abort exception, just stop the
20383         thread.
20384
20385 Tue May 11 12:15:24 CEST 2004 Paolo Molaro <lupus@ximian.com>
20386
20387         * tramp-ppc.c: removed old code.
20388
20389 Tue May 11 12:02:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
20390
20391         * mini.h, mini-ppc.c, cfold.c: export mono_is_power_of_two().
20392         do some simple speed optimizations on ppc.
20393
20394 Mon May 10 17:21:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
20395
20396         * mini-ppc.c, cpu-g4.md: fixes to handle large stack frames
20397         and large offsets in load/store.
20398
20399 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
20400
20401         * mini-x86.c (mono_arch_local_regalloc): Remove the previous fix, since
20402         it causes regressions.
20403
20404 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
20405
20406         * mini-sparc.c: Fix vararg support + add beginnings of sigaltstack
20407         support.
20408
20409 Fri May 7 13:25:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
20410
20411         * jit-icalls.c: remove warnings.
20412         * inssel-x86.brg, inssel.brg, mini-x86.c, cfold.c: some simple
20413         speedups for unsafe code.
20414
20415 2004-05-07 Ben Maurer  <bmaurer@users.sourceforge.net>
20416
20417         * inssel.brg: Optimize Stind.[ui][12]. r=zoltan.
20418
20419 2004-05-06  Zoltan Varga  <vargaz@freemail.hu>
20420
20421         * basic-calls.cs: Add new regression test.
20422
20423         * mini.c (mono_runtime_install_handlers): Use SA_ONSTACK since it is
20424         more portable.
20425
20426         * mini.c (mono_method_to_ir): Handle opcode emulation for *_OVF opcodes.
20427
20428         * mini-x86.c (mono_arch_local_regalloc): Free new_dest register when it
20429         is no longer used.
20430
20431 2004-05-06      Patrik Torstensson
20432
20433         * mini-x86.[c|h], inssel-x86.brg, cpu-pentium.md, mini.c: enabled
20434         long reg allocation in any reg (not only eax:edx) and implemented 
20435         long shl/shr ops in asm instead of helpers.
20436
20437 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
20438
20439         * mini-sparc.h: Fix warnings.
20440
20441         * exceptions-sparc.c (mono_arch_find_jit_info): Pop unused lfm off the
20442         stack.
20443
20444         * mini-exceptions.c (mono_handle_exception): Call the filter in a
20445         separate statement for clarity.
20446
20447         * mini-sparc.c: Update status.
20448
20449 2004-05-04  Zoltan Varga  <vargaz@freemail.hu>
20450
20451         * mini-exceptions.c (ves_icall_get_frame_info): Flush register windows
20452         here.
20453
20454 Mon May 3 22:58:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
20455
20456         * inssel-ppc.brg: another small pre-release workaround:
20457         we don't do overflow detection for long_sub_un.
20458
20459 Sun May 2 20:12:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
20460
20461         * mini.c, mini-ops, inssel-long32.brg: speedup ulong >> 32
20462         (also works around a weird ppc bug: 57957).
20463
20464 Sat May 1 16:56:10 EDT 2004 Paolo Molaro <lupus@ximian.com>
20465
20466         * tramp-ppc.c: trampoline fixes.
20467
20468 Fri Apr 30 15:54:26 EDT 2004    Paolo Molaro <lupus@ximian.com>
20469
20470         * mini-ppc.c: fixed typos.
20471
20472 Thu Apr 29 20:15:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
20473
20474         * mini-ppc.c, exceptions-ppc.c: more code saves registers
20475         at the top of the stack. Fixed typos. Use a frame registers
20476         for all the methods with exception clauses.
20477
20478 Thu Apr 29 18:52:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
20479
20480         * exceptions-ppc.c: restore fp registers.
20481
20482 Thu Apr 29 18:26:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
20483
20484         * mini-ppc.c, exceptions-ppc.c: save the registers in reverse
20485         order from the stack top (moved the stack room to save the
20486         return value for trace after the param area). Fixed corruption
20487         in restoring registers on unwind.
20488
20489 Thu Apr 29 16:47:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
20490
20491         * mini-ppc.c, cpu-g4.md: fixed unisgned -> double conversion.
20492
20493 Thu Apr 29 13:50:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
20494
20495         * exceptions-ppc.c, mini-ppc.h, mini-ppc.c: fixed localloc
20496         and prolog/epilog for methods that use it. Allow
20497         enough param area room for varargs methods. Fix miguel's
20498         breakage in exception handling.
20499
20500 Thu Apr 29 12:06:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
20501
20502         * Makefile.am: run genmdesc only on current arch.
20503
20504 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20505
20506         * exceptions-x86.c:
20507         * mini-x86.h: fix the build on windows.
20508
20509 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
20510
20511         * 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.
20512
20513         * exceptions-sparc.c exceptions-ppc.c exceptions-s390.c mini-ppc.h mini-s390.h mini-sparc.h: Fix up ports after changes.
20514
20515         * mini-exceptions.c: New file.
20516         
20517         * mini.c mini-exceptions.c mini-x86.h exceptions-x86.c Makefile.am:
20518         Move some parts of the x86 exception handling code to an 
20519         arch-independent file so it can be shared with other ports.
20520
20521 Tue Apr 27 12:15:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
20522
20523         * trace.c, cpu-g4.md, inssel-ppc.brg, mini-ppc.c: some fixes for FP code.
20524
20525 2004-04-26  David Waite  <mass@akuma.org>
20526
20527         * driver.c: remove comma from end of enumeration declaration
20528
20529 2004-04-26  Jackson Harper  <jackson@ximian.com>
20530
20531         * driver.c: parse config file before loading first assembly. This
20532         allows the user gac to be enabled/disabled. 
20533         
20534 2004-04-23  Miguel de Icaza  <miguel@ximian.com>
20535
20536         * mini-ppc.c (ppc_patch): Replaced the branch code patching with a
20537         simpler mechanism: we do not care what is encoded initially
20538         (branch absolute or relative), we care about the code and its
20539         target.  I kept the old code for reference for now.
20540
20541         The new code tries first to determine if the jump is anywhere in
20542         the -/+32 absolute meg range, if it succeeds, it encodes using the
20543         absolute branch;  If not, it tried to find something in the
20544         relative range, if not, it uses the handle_thunk code. 
20545
20546 Fri Apr 23 14:20:40 EDT 2004 Paolo Molaro <lupus@ximian.com>
20547
20548         * exceptions-ppc.c: use the correct ip register on macosx.
20549
20550 Thu Apr 22 13:23:16 EDT 2004 Paolo Molaro <lupus@ximian.com>
20551
20552         * exceptions.c, mini.c, mini-ppc.h: adapt code to macosx.
20553
20554 Thu Apr 22 18:08:37 CEST 2004 Paolo Molaro <lupus@ximian.com>
20555
20556         * mini-ppc.c, cpu-g4.md: made the branch macros more flexible.
20557         Raise exception on integer divide by zero by hand since the hw
20558         doesn't support it. Handle NaNs in FP compares.
20559
20560 Thu Apr 22 16:10:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
20561
20562         * exceptions-ppc.c, mini-ppc.h, mini.c: simplified some
20563         code reducing duplication between the platforms and enabled
20564         signal exception handling (on linux for now).
20565
20566 Wed Apr 21 12:27:48 EDT 2004 Paolo Molaro <lupus@ximian.com>
20567
20568         * exceptions-ppc.c: more macosx support.
20569
20570 Wed Apr 21 16:38:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
20571
20572         * mini-ppc.h, mini-ppc.c, cpu-g4.md: enable bigmul optimization.
20573
20574 Wed Apr 21 16:20:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
20575
20576         * mini.h, mini-ppc.c, cpu-g4.md: support for implicit exceptions.
20577
20578 2004-04-19 Ben Maurer  <bmaurer@users.sourceforge.net>
20579
20580         * iltests.il: more tests.
20581
20582 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
20583
20584         * mini-*.c (mono_arch_get_allocatable_int_vars): Skip written-only
20585         vars as well.
20586
20587 Mon Apr 19 19:39:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
20588
20589         * mini-ppc.c: some fixes to bootstrap mcs/corlib/etc.
20590
20591 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
20592
20593         * liveness.c: Mark variables as volatile in all basic blocks reachable
20594         from exception clauses.
20595
20596 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
20597
20598         * exceptions.cs (test_0_rethow_stacktrace): Make this work with
20599         inlining.
20600
20601 2004-04-18 Ben Maurer  <bmaurer@users.sourceforge.net>
20602
20603         * iltests.il, basic.cs: more tests for regalloc.
20604
20605 2004-04-17 Ben Maurer  <bmaurer@users.sourceforge.net>
20606
20607         * iltests.il: Some tests for register allocation modifications
20608         I have locally.
20609
20610 2004-04-16  Zoltan Varga  <vargaz@freemail.hu>
20611
20612         * exceptions.cs: Add regression test for bug #56782.
20613
20614         * exceptions-*.c (mono_arch_handle_exception): Do not overwrite the
20615         original stack trace if an exception is rethrown. Fixes #56782. Oh,
20616         the beauty of fixing the same thing in 5 different files...
20617
20618 2004-04-15  Zoltan Varga  <vargaz@freemail.hu>
20619
20620         * mini.c (mono_method_to_ir): Do not compute coverage for inlined
20621         methods.
20622
20623 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
20624
20625         * mini.c: Add support for STRWLPARRAY marshalling convention.
20626
20627 Wed Apr 14 18:15:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
20628
20629         * exceptions-ppc.c: missing fixes in mono_jit_walk_stack (need
20630         to init the context to setup the regs pointer).
20631
20632 Wed Apr 14 17:59:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
20633
20634         * exceptions-ppc.c: more exceptions work.
20635
20636 Wed Apr 14 17:46:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
20637
20638         * mini.c: avoid reusing the same MonoInst on multiple trees: this is
20639         not allowed.
20640
20641 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
20642
20643         * inssel-x86.brg (reg): Add new rules for add, sub and mul that
20644         can use the memory directly.
20645
20646         * cpu-pentium.md: Update documentation from a post from Zoltan. 
20647
20648         add x86_add_membase, x86_sub_membase, x86_mul_membase
20649
20650 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
20651
20652         * mini-ppc.c: Remove unused definitions FLOAT_REGS and
20653         GENERAL_REGS they were also hardcoded for all PPC ports.
20654
20655         (add_general): Use PPC_NUM_REG_ARGS instead of GENERAL_REGS.
20656
20657         Remove hard-coded limit for floating point registers, use
20658         PPC_LAST_FPARG_REG instead in MONO_TYPE_R4 and MONO_TYPE_R8.
20659
20660         Notice that in MacOS X calling conventions you can fit a lot more
20661         floating point values in registers, so I should update the PInvoke
20662         test to excercise the passing of floating point values on the
20663         stack (currently broken).
20664         
20665 2004-04-06  Miguel de Icaza  <miguel@ximian.com>
20666
20667         * tramp-ppc.c (create_trampoline_code): Added
20668         JUMP_TRAMPOLINE_SIZE. 
20669         (ppc_magic_trampoline): Follow the pattern from
20670         x86_magic_trampoline: if code is set to zero, return. 
20671         (create_trampoline_code): Always pass MonoMethod to the jump
20672         trampoline, before it was passing a null.
20673         (mono_arch_create_jump_trampoline): Implement the jump stub, could
20674         share the code with mono_arch_create_jit_trampoline. 
20675
20676         * mini-ppc.c (mono_arch_output_basic_block): CEE_JMP opcode
20677         implemented.
20678         (mono_arch_patch_code): MONO_PATCH_INFO_METHOD_JUMP patch type
20679         implemented.  
20680
20681         * cpu-g4.md: Added length for jmp instruction, the worst case
20682         scenario is 92 bytes (4 mandatory bytes, potential 19 registers
20683         for save_lmf).
20684
20685 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
20686
20687         * aot.c (mono_compile_assembly): Add back unlink removed by mistake.
20688
20689 2004-04-07  Zoltan Varga  <vargaz@freemail.hu>
20690
20691         * mini.c: Only set bblock->real_offset when adding a new bblock, and
20692         before each IL instruction.
20693
20694         * mini.c (CEE_BOX): Fix warnings.
20695
20696 2004-04-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20697
20698         * mini.c: removed a few unused vars and extra whitespace.
20699
20700 2004-04-05 Ben Maurer  <bmaurer@users.sourceforge.net>
20701
20702         * inssel.brg (MONO_EMIT_BOUNDS_CHECK): a new macro to emit bounds
20703         checks.
20704         (MONO_EMIT_BOUNDS_CHECK_IMM): the above, but when you know the
20705         index.
20706         (OP_GETCHR): use the above
20707         (CEE_LDELEMA): use the above.
20708
20709         * inseel-x86.brg (MONO_EMIT_BOUNDS_CHECK): a faster and smaller
20710         version of the generic impl.
20711         (MONO_EMIT_BOUNDS_CHECK_IMM): the same
20712         (CEE_LDELEMA): use the above.
20713
20714 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
20715
20716         * inssel-long32.brg (CEE_CONV_OVF_I8): Sign extend the i4 value to i8.
20717         Fixes #56317.
20718
20719         * iltests.il: Added new regression test for #56317.
20720
20721 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
20722
20723         * mini-x86.c (mono_arch_setup_jit_tls_data): Use pthread_attr_get_np
20724         under NetBSD. Fixes #56450.
20725
20726         * liveness.c (update_gen_kill_set): Fix previous patch.
20727
20728 2004-04-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20729
20730         * mini-x86.h: SA_STACK defined as SA_ONSTACK. Fixed build under NetBSD.
20731
20732 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
20733
20734         * mini.c (mono_method_to_ir): Avoid handle_loaded_temps in
20735         ldsfld and ldsflda.
20736
20737         * inssel-sparc.brg: Add more optimizations.
20738
20739         * mini-sparc.c: Replace multiply/divide with shifts if possible.
20740
20741 2004-04-01  Martin Baulig  <martin@ximian.com>
20742
20743         * mini.c (handle_box): New static function; moved the
20744         implementation of CEE_BOX here.
20745         (mono_method_to_ir): Added `constrained_call' variable.
20746         (mono_method_to_ir:CEE_CONSTRAINED_): Set it.
20747         (mono_method_to_ir:CEE_CALL): If `constrained_call' is set, use
20748         mono_method_get_constrained() to get the method.
20749
20750 2004-04-01  Martin Baulig  <martin@ximian.com>
20751
20752         * mini.c (TYPE_PARAM_TO_TYPE, TYPE_PARAM_TO_CLASS): Removed.
20753         (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): Removed.
20754         (mono_method_to_ir): We don't need these macros anymore since
20755         mono_class_get_full() already takes care of it. 
20756
20757 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20758
20759         * aot.c: set aot_verbose to 0, fixed format string that caused sigsegv,
20760         use @function (as doesn't accept #function here) and check the return
20761         value of system and stop if fails.
20762
20763 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20764
20765         * mini.c: set the timeout to 2s when calling mono_domain_finalize.
20766
20767 2004-03-31  Zoltan Varga  <vargaz@freemail.hu>
20768
20769         * mini-ppc.c (mono_arch_patch_code): Fix ppc build.
20770
20771         * inssel-sparc.brg mini-sparc.c aot.c: Implement AOT support.
20772
20773         * inssel-long32.brg (OP_LNEG): Use ADC instead of ADD here. Fixes
20774         #56223.
20775
20776         * basic-long.cs: Add test for negation of Int64.MinValue.
20777
20778 2004-03-30  Zoltan Varga  <vargaz@freemail.hu>
20779
20780         * mini-sparc.c: Update status.
20781
20782         * mini-sparc.c tramp-sparc.c: Save lmf in trampolines.
20783
20784         * exceptions-sparc.c: Fix return value in filters.
20785
20786         * inssel-sparc.brg: Fix register allocation in some rules.
20787
20788 2004-03-28  Martin Baulig  <martin@ximian.com>
20789
20790         * mini.c (mmono_method_to_ir): In CEE_STELEM, do a handle_stobj()
20791         if neccessary.  
20792
20793 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
20794
20795         * mini-x86.c (mono_arch_patch_code): Fix warnings.
20796         
20797         * mini-x86.c (mono_arch_output_basic_block): Fix CEE_MUL_OVF_UN if 
20798         dreg is not EAX. Thanks to Willibard Krenn for spotting this. Also
20799         remove unused conv_u4 opcode.
20800
20801         * mini-x86.c: Remove valgrind workaround since it slows down things
20802         even when mono is not run under valgrind.
20803
20804 2004-03-26  Zoltan Varga  <vargaz@freemail.hu>
20805
20806         * mini-sparc.c: Update status.
20807
20808         * inssel-sparc.brg: Add some optimizations.
20809
20810         * inssel-sparc.brg mini-sparc.c: Rework branch instructions to allow
20811         future delay slot filling. Add support for varargs, tail calls and JMP.
20812
20813         * inssel.brg mini-ops.h mini.c: Use OP_REFANYTYPE instead of 
20814         CEE_REFANYTYPE, since CEE_REFANYTYPE needs a prefix to be unique.
20815
20816         * inssel.brg: Fix register allocation in OP_ARGLIST.
20817
20818         * inssel.brg: Fix warnings.
20819
20820 2004-03-25  Martin Baulig  <martin@ximian.com>
20821
20822         * mini.c (inflate_generic_field): Removed.
20823         (mini_get_method): Removed, use mono_get_method_full(),
20824         (mini_get_class): Removed, use mono_class_get_full().
20825         (mono_method_to_ir): Pass our generic context to
20826         mono_field_from_token().        
20827
20828 2004-03-25  Martin Baulig  <martin@ximian.com>
20829
20830         * mini.c (mini_get_class): Take a `MonoGenericContext *' instead
20831         of a `MonoMethod *'.
20832         (mini_get_method): Take a `MonoGenericContext *' instead
20833         of a `MonoMethod *'.
20834         (TYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_TYPE): mono_method_to_ir() has
20835         a new local variable called `generic_context' which holds the
20836         current `MonoGenericContext *'; use it to lookup things.
20837
20838 2004-03-24  Martin Baulig  <martin@ximian.com>
20839
20840         * mini.c (mini_get_class): New static method; if we're inside a
20841         generic instance, inflate the class if neccessary.
20842         (mono_method_to_ir): Use mini_get_class() instead of mono_class_get().
20843
20844 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
20845
20846         * iltests.il: New regression test for #55976.
20847
20848         * mini.c (mono_method_to_ir): Empty the stack in endfinally. Fixes
20849         #55976.
20850
20851 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
20852
20853         * exceptions-sparc.c (mono_sparc_handle_exception): Remove debugging
20854         output.
20855
20856 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
20857
20858         * liveness.c: Consider SSA stores as well as loads when making vars
20859         volatile.
20860
20861         * exceptions.cs: New regression tests for register allocation.
20862         
20863 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
20864
20865         * mini-ppc.c, tramp-ppc.c: Added lock for accessing the domain code manager.
20866         * mini.c: Removed domain lock from mono_jit_compile_method_with_opt. Use
20867           domain lock only to protect puntual access to data structures.
20868           Added access lock for sighash, jit_icall_hash_name, 
20869           jit_icall_hash_addr and domain->code_mp.
20870
20871 2004-03-20  Zoltan Varga  <vargaz@freemail.hu>
20872
20873         * driver.c: Print SIGSEGV handling method.
20874
20875         * mini-x86.c (mono_arch_free_jit_tls_data): Add missing ifdef.
20876
20877         * mini.c (setup_jit_tls_data): Handle case when this is called
20878         multiple times for a thread.
20879
20880         * mini-x86.c cpu-pentium.md: Fix floating point branch opcodes so fbxx 
20881         is different from fbxx_un. Fixes #54303. Also use constants instead of
20882         magic numbers in a lot of places.
20883
20884 2004-03-19  Zoltan Varga  <vargaz@freemail.hu>
20885
20886         * exceptions.cs: Fix cctor test when --regression is used.
20887
20888 Thu Mar 18 19:57:56 CET 2004 Paolo Molaro <lupus@ximian.com>
20889
20890         * mini-ppc.c, exceptions-ppc.c: basic exceptions support 
20891         for Linux/ppc.
20892
20893 Thu Mar 18 19:56:19 CET 2004 Paolo Molaro <lupus@ximian.com>
20894
20895         * inssel-ppc.brg: fixed register assignments for some rules.
20896
20897 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
20898
20899         * exceptions.cs: Add test for exceptions in static constructors.
20900
20901         * mini.c (mono_jit_compile_method_with_out): Move the calling of
20902         static constructors outside the domain lock. Fixes #55720.
20903
20904 2004-03-17  Martin Baulig  <martin@ximian.com>
20905
20906         * mini.c (get_generic_field_inst): Removed, this'll never happen.
20907         (inflate_generic_field): Take the `MonoMethod *' instead of the
20908         `MonoClass *' and added support for generic method.
20909         (mono_method_to_ir): In CEE_LDSFLD and CEE_STSFLD, assert we never
20910         have a `field->parent->gen_params', only inflate the field if it's
20911         an open constructed type.
20912
20913 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
20914
20915         * exceptions-x86.c (mono_arch_handle_exception): Allocate a new
20916         exception object instead of the preconstructed ones.
20917
20918 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20919
20920         * mini.c: reverted changed to sigsegv_signal_handler commited
20921         accidentally in the previous patch.
20922
20923 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20924
20925         * mini.c:
20926         (mono_method_to_ir): CEE_CALLVIRT, abort if no method. It hanged when
20927         running --aot with an old assembly.
20928
20929 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
20930
20931         * mini-sparc.c (mono_arch_instrument_epilog): Fix handling of floating
20932         point values.
20933
20934         * mini-sparc.c: Add support for v9 branches with prediction.
20935
20936 2004-03-15  Bernie Solomon  <bernard@ugsolutions.com>
20937
20938         * mini.c (mini_init): #warning is GNUC only
20939
20940         * mini-sparc.h: implement __builtin_frame_address
20941         and __builtin_return_address for Sun C compiler
20942
20943 2004-03-15  Zoltan Varga  <vargaz@freemail.hu>
20944
20945         * exceptions-sparc.c (mono_arch_has_unwind_info): Add missing function.
20946
20947 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
20948
20949         * basic-calls.cs: Add test for unaligned byref long argument passing.
20950
20951         * mini-ops.h: Add sparcv9 compare and branch instructions.
20952
20953         * inssel-sparc.brg mini-sparc.h mini-sparc.c cpu-sparc.md: Use some
20954         v9 instructions if we have a v9 cpu.
20955
20956         * mini-sparc.c (mono_arch_get_global_int_regs): Use unused input
20957         registers for global allocation.
20958
20959         * exceptions-sparc.c: Fixes.
20960         
20961 2004-03-11  Zoltan Varga  <vargaz@freemail.hu>
20962
20963         * liveness.c (mono_analyze_liveness): Optimized version.
20964
20965         * inssel-sparc.brg cpu-sparc.md: Ongoing sparc work.
20966
20967         * mini-sparc.h mini-sparc.c tramp-sparc.c exceptions-sparc.c: Ongoing
20968         sparc work.
20969
20970         * basic-float.cs basic-calls.cs: New regression tests.
20971
20972 2004-03-10  Zoltan Varga  <vargaz@freemail.hu>
20973
20974         * mini-x86.h: Define SIGSEGV_ON_ALTSTACK only if we have a working
20975         sigaltstack implementation.
20976
20977         * mini-x86.c (mono_arch_setup_jit_tls_data): Fix previous patch.
20978         
20979         * mini-x86.c (mono_arch_setup_jit_tls_data): Turn off the sigaltstack
20980         stuff if SIGSEGV_ON_ALTSTACK is not defined.
20981
20982 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
20983
20984         * mini.c: Fix warnings.
20985         
20986         * mini.c (mono_resolve_patch_target): New function which contains the
20987         arch independent part of the patching process.
20988
20989         * mini-x86.c (mono_arch_patch_code): Move arch independent parts of the
20990         patching code to a separate function.
20991
20992 2004-03-09  Bernie Solomon  <bernard@ugsolutions.com>
20993
20994         * mini.c (add_signal_handler): ifdef out on Windows
20995
20996 2004-03-08  Zoltan Varga  <vargaz@freemail.hu>
20997
20998         * mini-sparc.h mini-sparc.c inssel-sparc.brg exceptions-sparc.c 
20999         cpu-sparc.md: Add exception handling support + other fixes.
21000
21001         * driver.c: Print --help output to stdout. Fixes #55261. Also fix
21002         typed GC detection in --version.
21003
21004         * basic.cs exceptions.cs: New regression tests.
21005
21006         * mini.h mini-x86.h mini-ppc.h: Add MonoCompileArch structure where
21007         the arch specific code can store data during a compilation.
21008
21009         * mini-ops.h: Add OP_SETFRET.
21010
21011         * mini.c (mini_get_ldelema_ins): Instead of allways calling the same
21012         function, register a separate icall for each arity, so the icalls can
21013         get a wrapper.
21014         
21015         * mini.c (mono_print_tree): Print negative offsets in a more readable
21016         form.
21017         
21018         * mini.c: Make signal handling work on sparc.
21019         
21020         * mini.c (mini_init): Add emulation for lconv_to_r8_un.
21021
21022         * inssel-long32.brg: Fix OP_LSUB_OVF_UN rule.
21023
21024         * jit-icalls.c: Emulate truncl by aintl on solaris.
21025
21026         * jit-icalls.c (mono_lconv_to_r8_un): New icall emulation function.
21027
21028 2004-03-05  Zoltan Varga  <vargaz@freemail.hu>
21029
21030         * mini.c (mini_init): fconv_to_ovf can raise exceptions.
21031
21032 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
21033
21034         * mini.c: In CEE_ISINST and CEE_CASTCLASS, if the type is an interface or
21035         a MarshalByRef type, inline a method that performs the check, taking into
21036         account that the object can be a proxy. Also implemented tow new opcodes:
21037         CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
21038         * inssel.brg: Implemented two new opcodes, mini-ops.h: OP_CISINST and 
21039         OP_CCASTCLASS, which implement CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
21040
21041 Tue Mar 2 17:23:48 CET 2004 Paolo Molaro <lupus@ximian.com>
21042
21043         * mini-ppc.c: if a relative branch displacement is too big
21044         but it points to and area reachable with an absolute branch, 
21045         avoid the thunks.
21046
21047 Tue Mar 2 16:59:40 CET 2004 Paolo Molaro <lupus@ximian.com>
21048
21049         * mini.c: optimize small copies in cpblk.
21050
21051 2004-03-01  Zoltan Varga  <vargaz@freemail.hu>
21052
21053         * basic-calls.cs basic-float.cs: New regression tests.
21054
21055         * mini-sparc.c inssel-sparc.brg mini-ops.h: Access local variables at 
21056         negative offsets from %fp. Implement localloc. Fix local register 
21057         allocation. Fix the case when the this argument needs to be saved to
21058         the stack. Implement some missing opcodes.
21059
21060 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
21061
21062         * mini.c (mini_method_compile): Reenable global regalloc in methods
21063         with exception handlers.
21064
21065         * linear-scan.c (mono_varlist_sort): Fix warning.
21066
21067         * linear-scan.c (mono_linear_scan): Fix computation of used_regs.
21068
21069         * mini-x86.c (mono_arch_regalloc_cost): Reenable precise computation of
21070         regalloc costs.
21071
21072         * liveness.c: Make all variables uses in exception clauses volatile, to
21073         prevent them from being allocated to registers. Fixes #42136.
21074
21075 2004-02-25  Zoltan Varga  <vargaz@freemail.hu>
21076
21077         * mini-x86.c (mono_arch_regalloc_cost): Revert this change since it
21078         causes regressions.
21079
21080         * mini.h linear-scan.c mini-x86.c mini-sparc.c mini-ppc.c: Add 'cfg'
21081         argument to mono_arch_regalloc_cost.
21082
21083         * mini-x86.c (mono_arch_regalloc_cost): Compute regalloc costs 
21084         precisely.
21085
21086 2004-02-24  Zoltan Varga  <vargaz@freemail.hu>
21087
21088         * mini.h mini-x86.c mini-ppc.c mini-sparc.c linear-scan.c: 
21089         Make the cost of allocating a variable to a register arch dependent.
21090
21091         * basic-calls.cs: Fix compilation of tests.
21092         
21093         * mini.h mini.c tramp-x86.c mini-x86.c: Add mono_running_on_valgrind ()
21094         helper function to cut back on the number of #ifdefs needed.
21095
21096         * mini-ppc.c: Fix compilation.
21097
21098         * basic-calls.cs: New regression tests.
21099
21100         * mini-sparc.c (mono_sparc_is_virtual_call): New helper function.
21101
21102         * tramp-sparc.c (create_specific_trampoline): Use g5 register instead
21103         of l0 since that is callee saved.
21104
21105         * tramp-sparc.c (sparc_magic_trampoline): Apply unbox trampoline only
21106         to virtual calls.
21107
21108         * mini-sparc.c: Ongoing work + flag virtual calls with a special kind 
21109         of delay instruction.
21110
21111         * inssel.brg (OP_CHECK_THIS): Set tree->sreg1 and dreg correctly.
21112
21113         * mini.h (MonoCallInst): Add 'virtual' flag.
21114
21115         * inssel.brg (mini_emit_virtual_call): Set 'virtual' flag.
21116
21117 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
21118
21119         * *.cs: New regression tests.
21120
21121         * mini-sparc.c inssel-sparc.brg: Update after latest changes. Ongoing sparc 
21122         work.
21123
21124         * mini.c (mono_runtime_install_handlers): Fix build.
21125
21126         * mini.h (MonoJitTlsData): Add 'stack_size', 'signal_stack' and
21127         'signal_stack_size' members.
21128
21129         * mini.h mini.c mini-x86.h mini-x86.c: Run sigsegv handlers on an 
21130         alternate signal stack.
21131
21132         * exceptions-x86.c: Add stack overflow handling.
21133
21134         * mini.h mini.c mini-x86.c mini-ppc.c trace.h trace.c: Move tracing 
21135         functions to arch independent code.
21136
21137         * mini.c (mono_print_tree): Print more detailed info for load_membase
21138         opcodes.
21139         
21140 2004-02-23  Martin Baulig  <martin@ximian.com>
21141
21142         * mini.c (mini_get_method): Set `gmethod->generic_inst'.
21143
21144 Sun Feb 22 22:25:19 CET 2004 Paolo Molaro <lupus@ximian.com>
21145
21146         * mini-x86.c: fixed reg allocation for div/rem.
21147
21148 2004-02-22  Miguel de Icaza  <miguel@ximian.com>
21149
21150         * driver.c (mono_main): Report some configuratio options on --version.
21151
21152 Fri Feb 20 11:01:44 PST 2004 Paolo Molaro <lupus@ximian.com>
21153
21154         * mini-ppc.c: fixed clt.un, cgt.un. Optimized calls to functions
21155         low in the address space. Correctly flush memory in thunks where we
21156         output native code.
21157
21158 2004-02-20  Martin Baulig  <martin@ximian.com>
21159
21160         * mini.c (mini_get_method): New static method; inflate all generic
21161         methods and methods in open generic instances.
21162         (mono_method_to_ir): Use mini_get_method() instead of mono_get_method().
21163         (ret_type_to_call_opcode): Added support for MONO_TYPE_GENERICINST.
21164
21165 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
21166
21167         * mini-sparc.c (mono_arch_patch_code): Update after domain->code_mp changes.
21168
21169         * tramp-sparc.c (mono_arch_create_jump_trampoline): Set ji->method.
21170
21171 2004-02-19  Bernie Solomon  <bernard@ugsolutions.com>
21172
21173         * helpers.c (mono_disassemble_code): use Sun's dis if not using gcc
21174
21175         * mini-sparc.c (flushi mono_arch_output_basic_block): make
21176         it compile using Sun's compiler.
21177
21178 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
21179
21180         * 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.
21181
21182         * basic-calls.cs basic-float.cs basic-long.cs objects.cs: New regression tests.
21183
21184 Tue Feb 17 21:41:20 CET 2004 Paolo Molaro <lupus@ximian.com>
21185
21186         * aot.c, mini-x86.c, mini.c: use the code manager instead of a mempool to hold native
21187         code.
21188         * mini-ppc.c: handle calls outside of the allowed range with thunks
21189         allocated using the code manager.
21190         * tramp-ppc.c: use the code manager to hold generated native code.
21191         Fixed the magic trampoline to just patch vtable entries.
21192
21193 2004-02-17  Zoltan Varga  <vargaz@freemail.hu>
21194
21195         * inssel.brg inssel-x86.brg: Move call(immediate) rules to the platform
21196         independent file.
21197
21198 2004-02-16  Zoltan Varga  <vargaz@freemail.hu>
21199
21200         * tramp-ppc.c (mono_arch_create_jump_trampoline): Fix compilation on
21201         PPC.
21202
21203         * mini-x86.c: Call mono_arch_get_lmf_addr instead of mono_get_lmf_addr
21204         if we have a working __thread implementation.
21205
21206         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Remove 
21207         OP_CALL_IMM opcodes, since the CALL opcodes handles immediates as well.
21208
21209 2004-02-15  Zoltan Varga  <vargaz@freemail.hu>
21210
21211         * mini-x86.c: Fix compilation under gcc 2.
21212         
21213 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
21214
21215         * mini.c (mono_codegen): Avoid infinite loop when an icall wrapper
21216         contains a call to the wrapped function.
21217
21218         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Add 
21219         OP_<CALL>_IMM opcodes, and use them under X86.
21220         
21221         * mini.c (mono_jit_find_compiled_method): Fix warning.
21222
21223         * cpu-pentium.md: Fix length of opcodes which use x86_alu_membase_imm.
21224
21225         * jit-icalls.c (mono_ldftn_nosync): New JIT icall.
21226
21227         * tramp-x86.c (mono_arch_create_jump_trampoline): Move arch independent
21228         functionality to mini.c.
21229
21230         * mini.c (mono_create_jump_trampoline): New function to create a jump
21231         trampoline. Return a compiled method instead of a trampoline if it
21232         exists. Add a cache for jump trampolines.
21233
21234         * mini.c (mono_jit_find_compiled_method): New function to return a
21235         compiled method if it exists.
21236
21237         * mini-x86.c: Call mono_create_jump_trampoline instead of 
21238         mono_arch_create_jit_trampoline.
21239
21240         * jit-icalls.c (mono_ldftn): Do not compile the method. Instead, return
21241         a jump trampoline. Fixes #52092.
21242         
21243 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
21244
21245         * debug-mini.c (mono_init_debugger): Remove call to mono_verify_corlib,
21246         which is not up-to-date. Add check_corlib_version () instead.
21247
21248         * mini.c (mini_init): Call mono_thread_attach () so embedders do not 
21249         have to call it.
21250         
21251         * mini.c (mono_runtime_install_handlers): Remove check for valgrind
21252         since newer valgrind versions do not need it.
21253
21254         * mini.c (mono_jit_compile_method_with_opt): New helper function to
21255         compile a method with a given set of optimizations.
21256
21257         * mini.c: Compile icall wrappers on-demand instead of at startup.
21258
21259         * mini-sparc.c mini-ppc.c: Call mono_icall_get_wrapper to obtain the
21260         wrapper for an icall.
21261
21262 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
21263
21264         * mini.c (mono_method_to_ir): Handle switch with non-empty stack. Fixes
21265         #54063.
21266
21267         * iltests.il: Add test for non-empty stack before switch instruction.
21268
21269 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
21270
21271         * mini.c: Add support for new stringbuilder marshalling conventions.
21272
21273         * mini.c (mono_method_to_ir): Fix stack management of generic CEE_BOX.
21274
21275 2004-02-01  Martin Baulig  <martin@ximian.com>
21276
21277         * mini.c (MTYPE_PARAM_TO_TYPE): Method type arguments are stored
21278         in `ginst->mtype_argv'.
21279
21280 2004-01-31  Miguel de Icaza  <miguel@ximian.com>
21281
21282         * mini.c: Add comments, replace CEE_XXX+128 with OP_XXX to
21283         facilitate grepping.
21284
21285 Wed Jan 28 14:04:58 CET 2004 Paolo Molaro <lupus@ximian.com>
21286
21287         * mini.c: fixed buglet in initobj generic implementation for references.
21288
21289 Fri Jan 23 16:10:44 EST 2004 Paolo Molaro <lupus@ximian.com>
21290
21291         * Makefile.am: make the version script conditional.
21292         * jit-icalls.c: handle missing truncl().
21293
21294 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
21295
21296         * exceptions.cs: Add more tests for double->int conversion.
21297
21298         * jit-icalls.c (mono_fconv_ovf_i8): Call truncl before comparison, so
21299         we don't throw exceptions when converting 1.1 to a long. Fixes #53250.
21300
21301 Fri Jan 23 17:12:08 CET 2004 Paolo Molaro <lupus@ximian.com>
21302
21303         * driver.c: make --verbose --version emit an error
21304         if the loaded corlib doesn't match the runtime version.
21305
21306 Mon Jan 19 17:44:50 CET 2004 Paolo Molaro <lupus@ximian.com>
21307
21308         * mini-ppc.h: export ppc_patch().
21309         * mini-ppc.c: call convention fixes. Added assert in ppc_patch().
21310         * tramp-ppc.c: call convention fixes: Linux/PPC support should be
21311         on par or better than on MacOSX.
21312
21313 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
21314
21315         * mini.c tramp-x86.c tramp-sparc.c: Updated after changes to
21316         mono_lookup_pinvoke_call.
21317
21318         * mini-x86.c: Under windows, the default pinvoke calling convention is
21319         stdcall. Fixes #52834.
21320
21321         * mini.c (optimize_branches): Add an upper bound to the number of
21322         iterations to prevent infinite loops on strange loops. Fixes #53003.
21323
21324 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
21325
21326         * inssel.brg: Add vectors<->one dimensional array checking to CASTCLASS
21327         and ISINST. Fixes #52093.
21328
21329         * objects.cs (test_0_vector_array_cast): New tests.
21330         
21331 2004-01-15  Zoltan Varga  <vargaz@freemail.hu>
21332
21333         * jit-icalls.c (helper_stelem_ref_check): New jit icall for array type
21334         checking in Array.Set ().
21335
21336         * mini.c (method_to_ir): Add array type checking in Array.Set (). Fixes
21337         #52590.
21338
21339         * object.cs (test_0_multi_array_cast): New regression test.
21340
21341 Thu Jan 15 16:30:24 CET 2004 Paolo Molaro <lupus@ximian.com>
21342
21343         * exceptions-ppc.c: fix build on Linux/PPC.
21344
21345 2004-01-14  Zoltan Varga  <vargaz@freemail.hu>
21346
21347         * tramp-x86.c (x86_magic_trampoline): Disable code patching when
21348         running under valgrind.
21349         (x86_magic_trampoline): Fix build bustage.
21350
21351         * debug-mini.c: Modify the debug info serialize/deserialize code so it handles
21352         negative values as well. This is needed for the encoding of the line number
21353         info, since sometimes the line numbers are not in increasing order.
21354
21355 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
21356
21357         * cpu-pentium.md (localloc): Increase the size of the localloc 
21358         instruction since it is a loop under Win32.
21359
21360         * debug-mini.c (record_line_number): Get rid of unneccesary memory
21361         allocation.
21362
21363 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
21364
21365         * exceptions-ppc.c exceptions-x86.c exceptions-sparc.c 
21366         tramp-x86.c tramp-ppc.c tramp-sparc.c: Applied patch from 
21367         Max Horn (max@quendi.de). Fix file names in comments.
21368
21369 2004-01-03  Zoltan Varga  <vargaz@freemail.hu>
21370
21371         * ssa.c (mono_ssa_rename_vars): Allocate new_stack on the heap to
21372         avoid stack overflow.
21373         (replace_usage): Avoid uninitialized variable warnings.
21374
21375         * mini.c (mono_method_to_ir): Avoid disabling SSA for array operations
21376         and taking the address of valuetype variables.
21377
21378 2004-01-03  Patrik Torstensson
21379
21380         * mini-x86.c: renamed fpflags to flags in RegTrack, going to be used
21381         for other purposes than FP later on.
21382
21383 2004-01-02  Zoltan Varga  <vargaz@freemail.hu>
21384
21385         * mini.c (mono_method_to_ir): Prevent register allocation for arguments
21386         of tail calls.
21387
21388 Fri Jan 2 13:37:25 CET 2004 Paolo Molaro <lupus@ximian.com>
21389
21390         * mini-ops.h, mini.c, inssel.brg: Object.GetType () speedup.
21391
21392 2003-12-30  Patrik Torstensson <p@rxc.se>
21393
21394         * mini-x86.h: Decreased number of availiable fp regs.
21395         Solves corner cases with FP spilling.
21396
21397 2003-12-23  Patrik Torstensson <p@rxc.se>
21398
21399         * mini-x86.c, mini-ops.h, cpu-pentium.md: Added support
21400         for floating point stack tracking / spilling on x86. 
21401         Fixes bug #49012.
21402         
21403         * basic-float.cs: added float mul overflow test.
21404
21405 2003-12-23  Zoltan Varga  <vargaz@freemail.hu>
21406
21407         * mini.c (mono_method_to_ir): Add workaround for bug #51126.
21408
21409 Sun Dec 21 19:53:16 CET 2003 Paolo Molaro <lupus@ximian.com>
21410
21411         * mini.h, mini-ppc.c, mini-ppc.h: small cleanups and
21412         supports for cond branches that overflow the immediate
21413         overflow offset. mcs can compile simple programs.
21414
21415 Fri Dec 19 21:17:16 CET 2003 Paolo Molaro <lupus@ximian.com>
21416
21417         * exceptions-ppc.c: exception handling support wip:
21418         finally handlers get run on exception.
21419
21420 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
21421
21422         * aot.c (mono_aot_get_method_inner): Avoid loading AOT code while 
21423         profiling.
21424
21425 Fri Dec 19 17:58:28 CET 2003 Paolo Molaro <lupus@ximian.com>
21426
21427         * cpu-g4.md, mini-ppc.c, exceptions-ppc.c, mini-ppc.h:
21428         initial support for stack walking and unwinding.
21429
21430 2003-12-18  Zoltan Varga  <vargaz@freemail.hu>
21431
21432         * driver.c (mono_main): Make corlib-out-of-sync message more 
21433         descriptive. Also remove verify_corlib call.
21434
21435 Wed Dec 17 15:31:41 CET 2003 Paolo Molaro <lupus@ximian.com>
21436
21437         * mini.c: make CEE_NEWARR calls and other emulated opcodes 
21438         not overlap with other call's arguments, too.
21439
21440 Wed Dec 17 12:49:23 CET 2003 Paolo Molaro <lupus@ximian.com>
21441
21442         * mini.h, mini.c, mini-ppc.c, mini-sparc.c, mini-x86.c: 
21443         move to arch-specific code the choice of arch-specific
21444         intrinsics (from Laurent Morichetti (l_m@pacbell.net)).
21445         * mini.c: ensure emulation calls will not interleave
21446         with other calls.
21447
21448 Wed Dec 17 12:27:26 CET 2003 Paolo Molaro <lupus@ximian.com>
21449
21450         * tramp-ppc.c, basic-calls.cs: rework trampolines so that
21451         the magic trampoline stack frame is dropped before executing
21452         the new method.
21453
21454 Mon Dec 15 18:13:57 CET 2003 Paolo Molaro <lupus@ximian.com>
21455
21456         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed some opcode lengths
21457         and integer to fp conversions. Added support for overflowing
21458         arguments on the stack. Reserve a couple more registers as temps.
21459         Added support for aot compilation (as output still needs to be
21460         tweaked, though).
21461
21462 Sat Dec 13 17:49:10 CET 2003 Paolo Molaro <lupus@ximian.com>
21463
21464         * mini-ppc.c, basic-long.cs: fix jumps to known labels.
21465         Don't overwrite return register in some corner cases.
21466
21467 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
21468
21469         * mini.h mini.c driver.c mini-x86.c mini-ppc.c aot.c: Do not run
21470         static constructors when AOT compiling.
21471
21472         * driver.c (mono_main): Call mono_check_corlib_version.
21473
21474 Sat Dec 13 10:31:12 CET 2003 Paolo Molaro <lupus@ximian.com>
21475
21476         * cpu-g4.md, basic.cs: fixed div target register.
21477
21478 Sat Dec 13 09:45:56 CET 2003 Paolo Molaro <lupus@ximian.com>
21479
21480         * mini-ppc.c, basic.cs: shl_imm fix with test.
21481
21482 Fri Dec 12 21:25:14 CET 2003 Paolo Molaro <lupus@ximian.com>
21483
21484         * inssel-ppc.brg, mini-ppc.h, mini-ppc.c: support for passing 
21485         structures by value. Misc fixes.
21486         * objects.cs: more tests.
21487
21488 Fri Dec 12 10:11:49 CET 2003 Paolo Molaro <lupus@ximian.com>
21489
21490         * mini-ppc.c: lconv.ovf.i implemented.
21491
21492 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21493
21494         * mini.c:
21495         (mini_init): don't error out if someone already called g_thread_init.
21496
21497 Tue Dec 9 17:27:14 CET 2003 Paolo Molaro <lupus@ximian.com>
21498
21499         * exceptions-x86.c, exceptions-ppc.c: allow the exception object
21500         to be any type per the spec. Fix abnormal memory usage when
21501         the same object is repeatedly thrown.
21502
21503 Tue Dec 9 15:39:54 CET 2003 Paolo Molaro <lupus@ximian.com>
21504
21505         * mini.c: check for overruns in IL code.
21506
21507 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
21508
21509         * TODO: Add/remove some todo entries.
21510
21511 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
21512
21513         * driver.c (mono_main): Call mono_verify_corlib.
21514
21515 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
21516
21517         * inssel.brg: In CEE_ISINST and CEE_CASTCLASS, removed check for proxy. 
21518         This has been moved to mini.c
21519         * mini.c: in mono_method_to_ir, CEE_ISINST and CEE_CASTCLASS cases, if the
21520         type being casted is marshalbyref it could be a proxy, so instead of
21521         emitting the type check code, emit a call to a runtime method that will
21522         perform the check by calling CanCastTo if needed.
21523
21524 2003-12-06  Zoltan Varga  <vargaz@freemail.hu>
21525
21526         * mini-x86.c (mono_arch_emit_prolog): Fix stack space allocation for
21527         methods with large stack frames under Win32.
21528
21529 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
21530
21531         * Makefile.am: Distribute regression tests.
21532
21533         * mini-x86.c (mono_arch_get_allocatable_int_vars): Sort the var list
21534         at the end instead of inserting each variable into the sorted list.
21535
21536         * linear-scan.c (mono_varlist_sort): New helper function.
21537         
21538 Wed Dec 3 20:46:28 CET 2003 Paolo Molaro <lupus@ximian.com>
21539
21540         * mini.c: ensure arguments and locals are within bounds.
21541
21542 Wed Dec 3 17:59:10 CET 2003 Paolo Molaro <lupus@ximian.com>
21543
21544         * mini-ppc.c, cpu-g4.md, basic.cs, basic-long.cs: more tests and 
21545         related fixes.
21546
21547 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
21548
21549         * mini.c (mono_cprop_copy_values): Fix crash.
21550
21551         * aot.c: Set verbosity back to 0.
21552         
21553 Wed Dec 3 15:42:27 CET 2003 Paolo Molaro <lupus@ximian.com>
21554
21555         * regalloc.c: complete memory leak fix by Laurent Morichetti
21556         (l_m@pacbell.net).
21557
21558 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
21559
21560         * driver.c (main_thread_handler): Revert the previous patch.
21561
21562         * tramp-x86.c (x86_class_init_trampoline): Avoid patching when running
21563         under valgrind.
21564
21565         * mini-x86.c (mono_arch_local_regalloc): Do not allocate transient
21566         memory from the memory pool.
21567
21568         * driver.c (main_thread_handler): Turn on all optimizations when
21569         --aot is used.
21570
21571         * mini.c (mono_find_jit_opcode_emulation): Turn emul_opcode_hash into
21572         an array for better performance.
21573
21574         * regalloc.c (mono_regstate_assign): Fix memory leak.
21575
21576         * debug-mini.c (mono_debug_serialize_debug_info): New function to
21577         serialize the debug info.
21578
21579         * debug-mini.c (mono_debug_add_aot_method): New function to load the
21580         debug info from the serialized representation.
21581
21582         * aot.c: Save debug info into the generated file and load it when 
21583         loading a method.
21584
21585         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
21586
21587 Mon Dec 1 16:54:05 CET 2003 Paolo Molaro <lupus@ximian.com>
21588
21589         * mini-ppc.c, tramp-ppc.c: save FP arguments in the trampoline.
21590         More FP-related fixes.
21591
21592 Sun Nov 30 19:13:52 CET 2003 Paolo Molaro <lupus@ximian.com>
21593
21594         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed finally handlers
21595         and register allocation buglet. Hello world now runs.
21596
21597 Fri Nov 28 23:03:05 CET 2003 Paolo Molaro <lupus@ximian.com>
21598
21599         * cpu-g4.md, inssel-ppc.brg, mini-ppc.c: better long return support.
21600         * tramp-ppc.c: fixed class init trampoline.
21601         * inssel-ppc.brg, mini.c, jit-icalls.c, mini-ppc.h: more emulation.
21602
21603 Fri Nov 28 16:36:29 CET 2003 Paolo Molaro <lupus@ximian.com>
21604
21605         * cpu-g4.md, inssel-ppc.brg, jit-icalls.c, mini-ppc.c, mini-ppc.h,
21606         mini.c: more ppc changes/fixes.
21607
21608 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
21609
21610         * mini.c (mono_method_to_ir): Fix tail calls with valuetype arguments.
21611         Also optimize the case when the arguments are the same in the caller 
21612         and in the callee.
21613
21614         * iltests.il: Add tests for tail calls with valuetype arguments.
21615
21616 Thu Nov 27 21:06:37 CET 2003 Paolo Molaro <lupus@ximian.com>
21617
21618         * mini-ppc.c: fixes for struct return type.
21619
21620 Thu Nov 27 19:02:07 CET 2003 Paolo Molaro <lupus@ximian.com>
21621
21622         * mini.h, mini.c, mini-x86.c, mini-ppc.c, mini-sparc.c: move 
21623         mono_spillvar_offset() to arch-specific code.
21624
21625 Thu Nov 27 18:30:42 CET 2003 Paolo Molaro <lupus@ximian.com>
21626
21627         * mini-ppc.h, mini-ppc.c: handle some different ABI call convention issues.
21628
21629 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
21630
21631         * exceptions-x86.c: Fix stack space leaks.
21632         
21633         * exceptions-x86.c (mono_arch_find_jit_info): Restore callee saved
21634         registers from the lmf if the method has save_lmf set.
21635
21636 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
21637
21638         * tramp-x86.c (x86_magic_trampoline): Avoid patching in the addresses
21639         of icall wrappers into InvokeInDomain, since these are now per-domain.
21640
21641 Wed Nov 26 20:15:04 CET 2003 Paolo Molaro <lupus@ximian.com>
21642
21643         * mini-ppc.h, mini-x86.h, mini.c, inssel-ppc.brg, jit-icalls.c:
21644         make some opcode emulation and intrinsic ops enabled/disabled 
21645         according to the architecture. More fixes.
21646
21647 Wed Nov 26 19:59:09 CET 2003 Paolo Molaro <lupus@ximian.com>
21648
21649         * mini-ppc.c, mini-sparc.c, cpu-g4.md: more bug fixes.
21650
21651 Wed Nov 26 19:18:29 CET 2003 Paolo Molaro <lupus@ximian.com>
21652
21653         * mini.h, inssel.brg, mini-x86.c, mini-ppc.c, mini-sparc.c: move
21654         arch-specific handling for 'this' and struct return type to
21655         arch-specific code.
21656
21657 2003-11-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21658
21659         * aot.c: prevent divide by zero error when reporting (it happened with
21660         Accessibility.dll).
21661
21662 2003-11-25  Zoltan Varga  <vargaz@freemail.hu>
21663
21664         * mini.h (inst_switch): Remove unused macro.
21665
21666 2003-11-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21667
21668         * aot.c:
21669         (load_aot_module): free 'info->methods' and 'info' properly. No more
21670         "free(): invalid pointer blah" messages when you have an old aot
21671         compiled assembly.
21672
21673 2003-11-21  Lluis Sanchez Gual <lluis@ximian.com>
21674
21675         * jit-icalls.c, mini.c: Added support for context static fields.
21676
21677 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
21678
21679         * mini.c (mono_method_blittable): Methods which set LastError are not 
21680         blittable either. Fixes #51108.
21681         
21682 Tue Nov 18 16:41:37 CET 2003 Paolo Molaro <lupus@ximian.com>
21683
21684         * mini.c: flush icache.
21685         * cpu-g4.md, mini-ppc.c, inssel.brg: more fixes. Trace support.
21686
21687 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
21688
21689         * mini.c (mono_type_blittable): OBJECT is not blittable. Fixes #47842.
21690
21691 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
21692
21693         * tramp-x86.c (x86_class_init_trampoline): Make code patching thread
21694         safe on IA32.
21695
21696         * mini-x86.c (mono_arch_call_opcode): Disable AOT for methods with 
21697         vararg calls.
21698
21699         * inssel.brg (CEE_MKREFANY): Fix AOT case.
21700
21701 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
21702
21703         * mini-x86.c (mono_arch_local_regalloc): Fix regalloc for div 
21704         instruction when the result is discarded.
21705
21706         * iltests.il (test_0_div_regalloc): New regression test.
21707
21708         * arrays.cs: Fix compilation error.
21709
21710 Fri Nov 14 21:34:06 CET 2003 Paolo Molaro <lupus@ximian.com>
21711
21712         * inssel-x86.brg, inssel-float.brg, mini-ops.h: move x86-specific
21713         float rules to inssel-x86.brg: sane architectures with FP registers
21714         don't need to implement these rules.
21715
21716 Fri Nov 14 20:52:12 CET 2003 Paolo Molaro <lupus@ximian.com>
21717
21718         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: updates and fixes to the ppc port.
21719
21720 Fri Nov 14 17:58:27 CET 2003 Paolo Molaro <lupus@ximian.com>
21721
21722         * mini.h, inssel-long32.brg: fixed endianess issues in int64
21723         implementation of 32 bit systems.
21724
21725 Thu Nov 13 16:14:41 CET 2003 Paolo Molaro <lupus@ximian.com>
21726
21727         * exceptions-ppc.c: fix build on Linux/ppc from Jeroen@xs4all.nl
21728         (Jeroen Zwartepoorte).
21729
21730 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
21731
21732         * mini.c (mono_method_to_ir): Use CEE_JMP only if the signature of
21733         the caller and the callee matches.
21734         
21735         * mini.c (mono_method_to_ir): Add comment.
21736
21737         * mini-x86.c (mono_arch_output_basic_block): Use mono_signbit, since
21738         signbit is missing on some platforms.
21739
21740 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
21741
21742         * mini.h (mono_arch_setup_jit_tls_data): New arch specific function.
21743
21744         * mini.c (setup_jit_tls_data): Call the new function.
21745         
21746         * mini-x86.c mini-ppc.c mini-sparc.c: Define the new function.
21747
21748         * mini-x86.c: Add experimental support for fast access to the lmf
21749         structure under NPTL/Linux 2.6.x.
21750
21751 2003-11-06  Martin Baulig  <martin@ximian.com>
21752
21753         * ldscript: Make `GC_push_all_stack', `GC_start_blocking',
21754         `GC_end_blocking' and 'gc_thread_vtable' public; they're used by
21755         the debugger.
21756
21757 2003-11-02  Martin Baulig  <martin@ximian.com>
21758
21759         * mini.c (inflate_generic_field): New static method.
21760         (mono_method_to_ir): In CEE_LDFLD and CEE_LDSFLD: if we're a
21761         generic instance and the field is declared in a generic type, call
21762         inflate_generic_field() to inflate it.  Fixes gen-28.cs.
21763
21764 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
21765
21766         * mini.h mini.c (mono_method_same_domain): New function to return
21767         whenever the caller and the callee are in the same domain.
21768
21769         * tramp-x86.c (x86_magic_trampoline): Use the new function.     
21770
21771 2003-10-30  Martin Baulig  <martin@ximian.com>
21772
21773         * mini.c (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): New macros;
21774         similar to TYPE_PARAM_TO_TYPE and TYPE_PARAM_TO_CLASS, but for
21775         method parameters.
21776         (mono_method_to_ir): Added support for MONO_TYPE_MVAR; similar to
21777         MONO_TYPE_VAR, we the actual types from MTYPE_PARAM_TO_CLASS(). 
21778
21779 2003-10-29  Zoltan Varga  <vargaz@freemail.hu>
21780
21781         * mini.c mini-ops.h inssel.brg: Implement undeniable exception 
21782         propagation.
21783
21784         * mini.c (sigusr1_signal_handler): Move creation of the thread abort
21785         object here, so it is in the correct appdomain etc.
21786
21787 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
21788
21789         * mini.c (mono_jit_compile_method_inner): Lookup icalls here if not
21790         already done.
21791         (mono_method_to_ir): Avoid freeing the type created returned from
21792         mono_type_create_from_typespec, since it is put into an internal cache
21793         by the function. Fixes pointer.exe.
21794
21795         * mini.c tramp-x86.c tramp-sparc.c tramp-ppc.c: Use the normal 
21796         trampolines for icalls and pinvokes as well. Fixes #33569.
21797
21798 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
21799
21800         * mini.c: Update after appdomain changes.
21801
21802         * mini.c (mono_jit_compile_method_inner): Allways compile native
21803         method wrappers in the root domain, since there can only be one
21804         instance of them, whose address is stored in method->info.
21805
21806 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
21807
21808         * mini.c (mono_runtime_install_handlers): Get rid of the MONO_VALGRIND
21809         environment variable. Instead detect automatically whenever running
21810         under valgrind using the magic macro RUNNING_ON_VALGRIND from
21811         valgrind.h.
21812
21813 2003-10-16  Miguel de Icaza  <miguel@ximian.com>
21814
21815         * trace.c, trace.h: New files that implement the new trace option
21816         parsing. 
21817
21818         * driver.c: Document new --trace options.
21819
21820         * exceptions-ppc.c, exceptions-x86.c, mini-ppc.c, mini-sparc.c,
21821         mini-x86.c: Apply:
21822
21823         -       if (mono_jit_trace_calls)
21824         +       if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
21825
21826         * mini.h: prototypes.
21827         
21828 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
21829
21830         * mini.c (mono_method_to_ir): Fix initialization of typedbyref locals.
21831
21832         * mini.c inssel.brg: Implement typedefbyref opcodes.
21833
21834         * mini.c (mono_jit_compile_method): Remove unused local variable.
21835
21836         * mini.c (mono_jit_compile_method_inner): Ditto.
21837         
21838 2003-10-12  Zoltan Varga  <vargaz@freemail.hu>
21839
21840         * tramp-x86.c (x86_class_init_trampoline): Fix build.
21841         
21842         * tramp-x86.c (x86_class_init_trampoline): Thread safety fixes.
21843
21844 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
21845
21846         * mini.c (mono_no_aot): Remove unused global variable.
21847
21848         * mini.c: Thread safety fixes.
21849
21850 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
21851
21852         * mini.c (mono_create_class_init_trampoline): Add a lock around
21853         class_init_hash_addr.
21854
21855         * arrays.cs (test_0_newarr_emulation): Add new regression test for
21856         #30073.
21857
21858         * mini.c: Decompose the NEWARR instruction before decomposing its
21859         arguments. Fixes #30073.
21860
21861 2003-10-08  Zoltan Varga  <vargaz@freemail.hu>
21862
21863         * mini-x86.c (mono_arch_emit_epilog): Add support for stdcall calling
21864         convention.
21865
21866 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
21867
21868         * mini.c (mono_method_to_ir): Allow wrapper data for CEE_LDELEMA.
21869
21870         * inssel-x86.brg (OP_LOCALLOC): Fix register assignment for localloc.
21871
21872         * driver.c: Add support for compiling icall wrappers to --compile.
21873
21874 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
21875
21876         * inssel.brg: The empty value in class->interface_offsets is -1, not
21877         0. Fixes #49287.
21878
21879 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
21880
21881         * objects.cs: New test for 'is' operator on an array of interfaces.
21882
21883 Wed Oct 1 19:40:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
21884
21885         * tramp-ppc.c: update trampoline code to support jumps
21886         and class initialization.
21887
21888 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
21889
21890         * mini.c (mono_jit_compile_method): Fix reading of freed memory.
21891
21892         * inssel.brg (OP_UNBOXCAST): Fix #46027.
21893
21894         * inssel.brg (OP_UNBOX): Remove unused rule.
21895
21896         * mini.h mini.c inssel-x86.brg: Allocate one SP variable for each
21897         region instead of one for each method. Fixes #47813.
21898
21899 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
21900
21901         * exceptions.cs (test_0_nested_finally): New regression test for
21902         nested exception handlers.
21903
21904         * mini.c (mono_jit_runtime_invoke): Fix for the previous fix.
21905
21906         * mini.c (mono_method_to_ir): Avoid inlining tail calls.
21907
21908         * mini.c (mono_method_to_ir): Fix tail recursion in the presence of 
21909         inlining.
21910
21911         * mini.c (mono_method_check_inlining): Make the inlining limit 
21912         configurable by an environment variable.
21913         
21914         * mini.c (mono_jit_runtime_invoke): Add Gonzalo's fix for #36545.
21915
21916         * mini.h: Bump AOT file version.
21917
21918         * mini.h mini.c aot.c mini-x86.c: For relocations which refer to a 
21919         token, store the image along with the token, since the token might not 
21920         refer to the same image as the method containing the relocation, 
21921         because of inlining.
21922
21923 2003-09-27  Zoltan Varga  <vargaz@freemail.hu>
21924
21925         * mini.c (mono_precompile_assemblies): New function to compile
21926         all methods in all loaded assemblies.
21927
21928         * mini.h driver.c: Added new optimization flag MONO_OPT_PRECOMP.
21929
21930         * regalloc.h regalloc.c (MonoRegState): Change the type of 
21931         iassign and fassign to int*, since they can contain large negative
21932         values if the register is spilled. Also added some comments. Fixes
21933         #45817.
21934
21935         * exceptions-x86.c (seh_handler): Fix handling of system exceptions
21936         under Win32. Fixes #42964.
21937
21938 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
21939
21940         * mini.h (MONO_PATCH_INFO_WRAPPER): New patch type.
21941
21942         * aot.c: Added support for AOT compiling methods which contain calls
21943         to wrappers. Currently, only remoting-invoke-with-check wrappers are
21944         handled.
21945         
21946         * driver.c (compile_all_methods): Run the compilation in a thread
21947         managed by mono. Fixes #44023.
21948
21949         * mini.c (mono_codegen): Print full method name in verbose output.
21950
21951         * mini-x86.c (mono_arch_patch_code): Fix warning.
21952         
21953         * mini-x86.c (mono_arch_patch_code): Allways create a trampoline for
21954         jumps, since the method we are jumping to might be domain-specific.
21955
21956         * aot.c: Added support for MONO_PATCH_INFO_METHOD_JUMP.
21957
21958 Tue Sep 23 10:50:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
21959
21960         * inssel.brg: string chars are unsigned.
21961
21962 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
21963
21964         * TODO: New todo item.
21965
21966         * tramp-x86.c (x86_class_init_trampoline): New trampoline function
21967         which calls mono_runtime_class_init and patches the call site to
21968         avoid further calls.
21969         (mono_arch_create_class_init_trampoline): New arch specific function 
21970         to create a class init trampoline.
21971         (create_trampoline_code): Generalized so it can create
21972         class init trampolines as well.
21973
21974         * mini.c (helper_sig_class_init_trampoline): New helper variable.
21975         (mono_create_class_init_trampoline): New function to create and cache
21976         class init trampolines.
21977         (mono_find_class_init_trampoline_by_addr): New function to lookup the
21978         vtable given the address of a class init trampoline. Used by the
21979         patching process.
21980         (mono_codegen): Generate a call to a trampoline instead of
21981         mono_runtime_class_init in LDSFLD[A].
21982         (mono_codegen): Add relocations for the new trampoline.
21983         
21984         * mini.h mini-x86.c aot.c: Added a new relocation type: 
21985         MONO_PATCH_INFO_CLASS_INIT.
21986
21987         * mini.h: Bump AOT version number.
21988
21989         * aot.c: Create a copy of the loaded code instead of using the original
21990         so methods which call each other will be close in memory, improving
21991         cache behaviour.
21992         
21993         * exceptions-x86.c (mono_arch_has_unwind_info): Back out the previous
21994         patch since it breaks the regression tests.
21995         
21996         * exceptions-x86.c (mono_arch_has_unwind_info): Added explicit check
21997         for the register saving instruction sequence since the 
21998         frame_state_for function in glibc 2.3.2 don't seem to detect it.
21999
22000 2003-09-14  Zoltan Varga  <vargaz@freemail.hu>
22001
22002         * TODO: Fix todo item && remove another.
22003
22004 2003-09-12  Zoltan Varga  <vargaz@freemail.hu>
22005
22006         * mini-x86.c (mono_arch_patch_code): Fix tail calls broken by a
22007         previous checkin.
22008
22009         * aot.c: Moved the check for MONO_LASTAOT into the initialization
22010         function of the module.
22011
22012         * mini.h mini.c aot.c: Added a new optimization flag OPT_AOT for
22013         turning on/off the usage of AOT code. Got rid of mono_no_aot and the
22014         --no-aot command line option.
22015
22016 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
22017
22018         * helpers.c (mono_disassemble_code): Make this work under cygwin. Patch
22019         by Bernie Solomon (bernard@ugsolutions.com).
22020
22021         * inssel.brg: Refactor the interface offset table related code into
22022         its separate functions and add support for the AOT case.
22023
22024 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
22025
22026         * aot.c (mono_aot_get_method_inner): Fix memory leak.
22027         
22028         * aot.c: Added mono_aot_verbose variable and made all debugging
22029         output depend on the value of this variable.
22030
22031         * aot.c (mono_aot_get_method_inner): Avoid dynamic allocation of
22032         method_label and info_label.
22033
22034         * mini.h mini-x86.c aot.c: Added a new relocation type 
22035         MONO_PATCH_INFO_IID for klass->interface_id.
22036
22037         * mini.h mini.c driver.c aot.c: Changed mono_aot_get_method to return
22038         the MonoJitInfo structure.
22039
22040         * mini.c (mono_jit_compile_method): Avoid using non-shared AOT in
22041         a non-root appdomain in shared mode.
22042
22043 Tue Sep 9 16:33:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
22044
22045         * aot.c: make aot loader less verbose. Remove free of unused variable.
22046
22047 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
22048
22049         * aot.c (mono_aot_get_method_inner): Fix MONO_PATCH_INFO_IMAGE.
22050
22051         * .cvsignore: Added *.dll.
22052
22053         * mini.c (mono_print_tree_nl): New function callable while debugging.
22054
22055         * mini.c (mono_print_code): Export this.
22056
22057         * tramp-x86.c (x86_magic_trampoline): Tell valgrind to recompile the
22058         patched code.
22059
22060 2003-09-05  Zoltan Varga  <vargaz@freemail.hu>
22061
22062         * mini.h (MonoCompile): Added 'jit_info' field.
22063
22064         * mini.c (mini_method_compile): Save the generated MonoJitInfo into
22065         the cfg structure, since it is needed by the AOT compiler.
22066
22067         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
22068
22069         * aot.c: A major rewrite. Changes include:
22070         - save exception tables for methods which have them.
22071         - cache failed lookups in aot_get_method () to avoid the (slow) calls 
22072         to g_module_symbol.
22073         - reworked the file format so it is now much smaller and needs
22074         fewer relocation entries.
22075         
22076 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
22077
22078         * aot.c (load_aot_module): Fix build bustage on platforms without
22079         Boehm GC.
22080
22081 2003-09-04  Martin Baulig  <martin@ximian.com>
22082
22083         * Makefile.am (INCLUDES): Added $(LIBGC_CFLAGS).
22084
22085 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
22086
22087         * TODO: Some new optimization ideas.
22088
22089         * aot.c: Move AOT module loading logic here from mono_assembly_open.
22090
22091         * aot.c: Save the optimization flags used to compile the code into
22092         the AOT module.
22093
22094         * mini.h mini-x86.c mini.c aot.c: Added new types of relocations to
22095         support emitting domain specific code.
22096         
22097         * mini.h mini.c aot.c: Modified the JIT so the generated AOT code is 
22098         no longer domain neutral. It can be made domain neutral by compiling 
22099         with --optimize=shared.
22100
22101         * aot.c (mono_aot_get_method_inner): Allow sharing of AOT methods
22102         between appdomains.
22103
22104         * driver.c mini.h mini.c: New --no-aot debugging option which disables
22105         loading of AOT code.
22106
22107         * inssel-x86.brg: Added missing AOTCONST -> OUTARG_VT rule.
22108         
22109         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling method
22110         if there is no domain neutrality information.
22111
22112 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
22113
22114         * aot.c (mono_compile_assembly): Emit a symbol containing the file 
22115         format version into the generated library.
22116
22117         * mini-x86.c (mono_arch_patch_code): Do not emit the address of the
22118         callee method into the caller since one of them could be shared.
22119
22120         * mini.h mini-x86.c aot.c: Added two new relocations so throwing
22121         system exceptions from AOT code now works.
22122
22123         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling 
22124         method if it is domain neutral and the callee is not.
22125
22126         * graph.c (cfg_emit_one_loop_level): Fix warning.
22127
22128 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
22129
22130         * aot.c (mono_compile_assembly): Oops. Remove debugging cruft from
22131         last checkin.
22132
22133 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
22134
22135         * mini.c (mini_init): Call mono_marshal_init () explicitly since it
22136         is needed  by code which is executed before mono_runtime_init ().
22137         Thanks to Bernie Solomon (bernard@ugsolutions.com) for noticing this.
22138         
22139         * mini.c (mono_thread_abort): Fix warning.
22140         (mono_jit_compile_method): Call static constructor in the AOT case too.
22141
22142         * aot.c (mono_compile_assembly): Fix warning.
22143
22144 2003-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22145
22146         * mini.c: register a SIGINT handler if MONO_DEBUG is defined.
22147
22148 2003-08-28  Zoltan Varga  <vargaz@freemail.hu>
22149
22150         * inssel.brg (OP_UNBOXCAST): Add support for the AOT case.
22151
22152         * cpu-pentium.md: Fix the length of call opcodes so they include the
22153         ESP restoring instruction. Fixes #47968.
22154
22155 2003-08-28  Martin Baulig  <martin@ximian.com>
22156
22157         * mini-x86.c (mono_arch_call_opcode): Added support for
22158         MONO_TYPE_GENERICINST.
22159
22160         * mini.c (check_call_signature): Added support for MONO_TYPE_GENERICINST.       
22161
22162 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
22163
22164         * Makefile.am (BUILT_SOURCES): Fix compilation on platforms without
22165         a JIT. Patch by Bernie Solomon (bernard@ugsolutions.com).
22166
22167         * mini.c jit-icalls.c tramp-x86.c tramp-ppc.c tramp-sparc.c: Get rid of
22168         metadata_section.
22169
22170 2003-08-26  Martin Baulig  <martin@ximian.com>
22171
22172         * mini.c (get_basic_blocks): Added `unsigned char **pos' argument;
22173         when reporting an error, set this to the actual error location.
22174         (mono_method_to_ir): Report the correct error location if
22175         get_basic_blocks() returned an error.
22176
22177 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
22178
22179         * mini.c (mono_type_blittable): OBJECT is not blittable.
22180         (mono_method_blittable): Methods which have marshalling descriptors
22181         are not blittable either. Fixes #47842.
22182
22183 2003-08-22  Zoltan Varga  <vargaz@freemail.hu>
22184
22185         * driver.c mini.c: Use an environment variable instead of a global 
22186         variable. Also fix the build.
22187
22188         * mini.c (mini_init): Call g_thread_init () to make glib thread-safe. 
22189         Fixes #47682. Thanks to Laurent Morichetti (l_m@pacbell.net) for 
22190         reporting this. 
22191
22192         * driver.c mini.c: Added --with-valgrind option to turn off some
22193         code which prevents mono from running under valgrind.
22194
22195         * mini.c (mono_emit_call_args): Fixed warning.
22196
22197         * mini.c (mono_emulate_opcode): Fixed warning.
22198
22199 Thu Aug 21 19:10:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
22200
22201         * inssel.brg: 64bit fixes from Laurent Morichetti <l_m@pacbell.net>.
22202         * linear-scan.c, mini-ppc.h, mini-sparc.h, mini-x86.h, mini.h,
22203         regalloc.c, regalloc.h: specify available registers in arch-specific
22204         code and support floats in the regallocator (patch by Laurent Morichetti 
22205         <l_m@pacbell.net>)
22206
22207 Wed Aug 20 19:02:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
22208
22209         * mini.c: mono_thread_current() can be called only after
22210         mono_runtime_init(): rearrange code to not call it early on.
22211
22212 Wed Aug 20 13:14:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
22213
22214         * mini.c: allocate jump tables in the code mempools.
22215
22216 Wed Aug 20 13:04:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
22217
22218         * mini.c, mini.h: make sure per-thread data allocated by the jit is
22219         freed.
22220
22221 2003-08-10  Miguel de Icaza  <miguel@ximian.com>
22222
22223         * cpu-pentium.md (ldtoken): Change the length for mul.ovf.un from
22224         12 to 16.  This fixes bug #47453.
22225
22226
22227 Thu Aug 7 15:59:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
22228
22229         * mini-ppc.c: fixed indexed load and unsigned compares.
22230
22231 2003-08-06  Lluis Sanchez Gual  <lluis@ximian.com>
22232
22233         * mini.c: reenabled installation of handler for
22234           thread abort signal.
22235
22236 Tue Aug 5 12:21:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
22237
22238         * cprop.c, mini-x86.c, cpu-pentium.md: fix buglets spotted
22239         by Laurent Morichetti <l_m@pacbell.net>. Disabled local cprop
22240         until it's fixed and actually useful.
22241
22242 Mon Aug 4 12:12:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
22243
22244         * inssel-long32.brg: couple more opcodes implemented.
22245
22246 Thu Jul 31 22:43:02 EDT 2003 Mark Crichton <crichton@gimp.org>
22247         
22248         * mini-sparc.c: Even more opcodes implemeted.
22249
22250 Thu Jul 31 19:36:03 EDT 2003 Mark Crichton <crichton@gimp.org>
22251
22252         * mini-sparc.c: More opcodes implemented.
22253
22254 Thu Jul 31 15:16:26 EDT 2003 Mark Crichton <crichton@gimp.org>
22255
22256         * mini-sparc.c: More opcodes implemented.
22257
22258 Wed Jul 30 22:31:02 EDT 2003 Mark Crichton <crichton@gimp.org>
22259
22260         * inssel-sparc.brg: Add some needed rules.  Direct
22261         copy from PPC.
22262         * Makefile.am: Use inssel-sparc.brg
22263         * exceptions-sparc.c: 0xdeadbeef/0xdecafbad to keep
22264         an assert happy for now.
22265
22266 Wed Jul 30 20:44:07 EDT 2003 Mark Crichton <crichton@gimp.org>
22267
22268         * mini-sparc.c: Fixed compile errors.
22269         * exceptions-sparc.c: Same.  We now produce a mono binary 
22270         on sparc-linux.  Yea.
22271
22272 Wed Jul 30 14:10:12 EDT 2003 Mark Crichton <crichton@gimp.org>
22273
22274         * mini-sparc.c: Renamed registers.  Also some macro cleanups.
22275         * exceptions-sparc.c, tramp-sparc.c: Various compile fixes.
22276         They compile, but do not work.
22277
22278 Wed Jul 30 17:52:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
22279
22280         * Makefile.am, cpu-sparc.md, exceptions-sparc.c, mini-sparc.c,
22281         mini-sparc.h, tramp-sparc.c: Beginning of sparc support
22282         from Mark Crichton <crichton@gimp.org> and Christopher Taylor
22283         (ct@gentoo.org).
22284
22285 Tue Jul 29 12:43:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
22286
22287         * mini.c: more opcodes implemented and better support for generics.
22288
22289 Fri Jul 25 18:51:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
22290
22291         * cpu-g4.md, cpu-pentium.md: updates for new instructions.
22292         * mini.c, mini.h: first cut at generics support: some new instructions 
22293         added and changed the behaviour of some of the existing ones.
22294
22295 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
22296
22297         * mini.c: Removed definition of metadata_shared mutex here.
22298
22299 Tue Jul 22 15:21:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
22300
22301         * mini-x86.c: make vararg calls work for instance methods.
22302
22303 Fri Jul 18 19:26:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
22304
22305         * mini.c, mini.h, mini-x86.c, mini-ppc.c: mono_arch_call_opcode()
22306         returns the arguments in a separte list, now.
22307
22308 Fri Jul 18 13:16:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
22309
22310         * aot.c, mini.c: updates for array type representation changes.
22311
22312 Fri Jul 18 11:28:28 CEST 2003 Paolo Molaro <lupus@ximian.com>
22313
22314         * mini.c: register function to perform jit shutdown.
22315
22316 Thu Jul 17 16:02:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
22317
22318         * mini.c: use a faster allocator if possible.
22319
22320 Thu Jul 17 16:00:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
22321
22322         * aot.c: some cleanups and portability changes.
22323
22324 Wed Jul 2 11:08:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
22325
22326         * mini.c: use faster allocation for CEE_BOX if possible.
22327
22328 Mon Jun 30 19:16:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
22329
22330         * mini.c, mini-ops.h, inssel.brg, mini-x86.c: optimized access to fields.
22331         Moved inlined mempcy code to its own function so that is can be
22332         reused. Added an inline memset function as well (optimized initobj).
22333         * cpu-pentium.md, inssel-x86.brg: add and use lea_membase.
22334
22335 Fri Jun 27 11:19:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
22336
22337         * mini.c, mini-ops.h, inssel.brg: optimized a couple of Array methods.
22338
22339 Wed Jun 25 13:19:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
22340
22341         * mini.c, mini.h, mini.x86.c, mini-ppc.c: added facility so that
22342         arch code can setup the cpu for CLR execution, if needed.
22343         We use it on x86 to set the precision of FP operations.
22344
22345 Tue Jun 17 19:02:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
22346
22347         * mini.c: disable some optimizations if we can guess they'll cost too
22348         much for a given method.
22349
22350 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
22351
22352         * mini.h mini.c: Rework last patch based on suggestions by Paolo.
22353         
22354 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
22355         * mini.h mini.c mini-x86.c: Added instruction level coverage 
22356         info collection support.
22357
22358 Mon Jun 16 18:13:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
22359
22360         * driver.c, mini-ppc.c, mini-x86.c, mini.c, mini.h: the coverage stuff
22361         is now implemented in the profiling API. Get rid of a couple of
22362         unnecessary global variables.
22363
22364 2003-06-15  Nick Drochak <ndrochak@gol.com>
22365
22366         * basic-long.cs: tests for negative values for bigmul, and unsigned.
22367         * cpu-g4.md: add op_bigmul and op_bigmul_un
22368         * cpu_pentium.md: add op_bigmul_un
22369         * inssel-long32.brg: add rule for unsigned bigmul
22370         * mini-ops.h: define OP_BIGMUL_UN
22371         * mini-x86.c: THE BUG: handle (un)signed properly
22372         * mini.c: choose unsigned opcode if needed.
22373         This set of patches fixes bug #44291
22374
22375 2003-06-13  Dietmar Maurer  <dietmar@ximian.com>
22376
22377         * mini.c (optimize_branches): improved to handle all kinds of
22378         conditional branches.
22379
22380 Wed Jun 11 18:01:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
22381
22382         * mini.c, mini.h, jit-icalls.c: speedup emulation of opcodes that
22383         don't raise exceptions.
22384
22385 Tue Jun 10 19:00:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
22386
22387         * tramp-x86.c, tramp-ppc.c, debug-mini.c: move arch-specific code
22388         to arch-specific files.
22389
22390 2003-06-09  Martin Baulig  <martin@ximian.com>
22391
22392         * Makefile.am (libs): Added $(LIBGC_LIBS).
22393
22394 Mon Jun 9 20:21:47 CEST 2003 Paolo Molaro <lupus@ximian.com>
22395
22396         * cpu-pentium.md, mini-x86.c: fix (well, actually implement) OP_TAN
22397         and OP_ATAN (fixes bug#44293).
22398
22399 Mon Jun 9 19:00:56 CEST 2003 Paolo Molaro <lupus@ximian.com>
22400
22401         * Makefile.am, mini-x86.c: rename cpu description array to
22402         pentium_desc, since some compilers define the 'pentium' preprocessor
22403         symbol.
22404
22405 2003-05-28  Dietmar Maurer  <dietmar@ximian.com>
22406
22407         * mini.c (mini_select_instructions): add explicit branch if the
22408         following block is not the false target of a conditional branch -
22409         we need this with any optimization that reorder or remove bblocks
22410
22411         * mini.c (optimize_branches): bug fixes
22412
22413 2003-06-06  Dietmar Maurer  <dietmar@ximian.com>
22414
22415         * mini.c (mono_method_to_ir): inline static readonly fields
22416
22417         * ssa.c (fold_tree): start cfold support for long (very simple
22418         cases only)
22419
22420         * cfold.c (mono_constant_fold_inst): opt. CEE_CONV_I8 (OP_ICONST)
22421
22422 Fri Jun 6 11:41:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
22423
22424         * inssel.brg: fixed memcpy (bug #44219).
22425
22426 2003-06-05  Dick Porter  <dick@ximian.com>
22427
22428         * driver.c: Set the glib log levels to not abort if g_message
22429         recurses.
22430
22431         g_set_prgname() has to happen before mini_init() so that the
22432         process handle gets the info.
22433         
22434 Thu Jun 5 20:11:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
22435
22436         * driver.c: add intrins to the default optimizations to get wider
22437         exposure.
22438
22439 Wed Jun 4 19:47:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
22440
22441         * mini.h: some large basic blocks will overflow a 16-bit
22442         integers for symbolic registers.
22443
22444 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
22445
22446         * mini-x86.c (mono_arch_output_basic_block): revert previous fprem changes.
22447         (mono_arch_output_basic_block): fix bug 43499 
22448
22449 Wed Jun 4 13:13:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
22450
22451         * mini.c: kill duplicated definition of mono_debug_format.
22452
22453 Wed Jun 4 13:09:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
22454
22455         * mini-x86.c, arrays.cs: fixed register allocation bug.
22456
22457 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
22458
22459         * mini-x86.c (mono_arch_output_basic_block): use IEEE compatible fprem1
22460
22461         * mini.c (mini_get_opcode_for_method): inline IEEERemainder
22462
22463 2003-06-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22464
22465         * mini.c:
22466         (print_method_from_ip): also print source location information if
22467         available.
22468
22469 2003-06-02  Dietmar Maurer  <dietmar@ximian.com>
22470
22471         * mini.c (mono_find_block_region): bug fix in region code
22472         (mini_method_compile): enable removing unreachable code again, but
22473         only in methods without exception clauses.
22474
22475 Fri May 30 18:40:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
22476
22477         * mini.c, mini-ops.h, cpu-pentium.md, inssel.brg, mini-x86.c, mini.h:
22478         Implemented arglist opcode and handling of TypedReference type.
22479         Fixed x86 call convention when a structure is returned.
22480         Minimal support for calling static vararg methods.
22481
22482 2003-05-30  Dietmar Maurer  <dietmar@ximian.com>
22483
22484         * mini.c (mini_method_compile):  always remove unreachable code,
22485         because the code in them may be inconsistent  (access to dead
22486         variables for example).
22487
22488 Thu May 29 11:44:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
22489
22490         * driver.c, debug-mini.c: warning fixes.
22491
22492 Wed May 28 11:19:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
22493
22494         * Makefile.am, jit.h, mini.h: install header for embedding mono.
22495
22496 Tue May 27 17:56:12 CEST 2003 Paolo Molaro <lupus@ximian.com>
22497
22498         * mini.c: thread-static fields are registered in mono_class_vtable(),
22499         so ensure the function is called before checking for them.
22500
22501 2003-05-27  Dietmar Maurer  <dietmar@ximian.com>
22502
22503         * mini.c (optimize_branches): fix for bug 43586
22504
22505         * jit-icalls.c (mono_llmult_ovf): added an additional check for
22506         overflow (fixes Bug #43639)
22507
22508 Tue May 27 11:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
22509
22510         * mini.c, objects.cs: allow the use of stobj for primitive types.
22511
22512 Tue May 27 10:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
22513
22514         * mini.c: be less strict about argument checking until we support
22515         running the verifier.
22516
22517 2003-05-27  Nick Drochak <ndrochak@gol.com>
22518
22519         * basic-long.cs: tests for (ulong)int * (ulong)int also
22520         * mini.c: use the same trick for (ulong)int * (ulong)int
22521
22522 2003-05-27  Nick Drochak <ndrochak@gol.com>
22523
22524         * basic-long.cs: add regression test for (long)int * (long)int
22525         * cpu-pentium.md: add op_bigmul specification
22526         * inssel-long32.brg: add OP_BIGMUL rule
22527         * mini-ops.h: add OP_BIGMUL
22528         * mini-x86.c: register allocator: handle case where src1 needs to be
22529         in EAX.
22530         * mini.c: substitute special BIGMUL opcode in the tree for 
22531         (long)int * (long)int
22532
22533 Mon May 26 20:20:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
22534
22535         * jit-icalls.c: call the type ctor on field access if needed.
22536
22537 Mon May 26 15:21:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
22538
22539         * mini-ops.h, mini.c, inssel.brg, exceptions.cs: validate arguments passed
22540         to a method (including results of ldelema, bug#43207).
22541
22542 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
22543
22544         * graph.c (cfg_emit_one_loop_level): loop over all blocks. use
22545         colors to show exception handler blocks.
22546
22547         * inssel-x86.brg (OP_OUTARG_VT): dont push zero sized structures
22548         (fix for pinvoke7.cs).
22549
22550 Mon May 26 12:11:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
22551
22552         * mini.h, mini.c: ensure correct initialization order for types that
22553         require it. Prepare for lazy compilation of jit icall wrappers.
22554         Provide a name for opcode emulation to reduce unneeded mallocing.
22555
22556 Fri May 23 16:08:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
22557
22558         * mini-x86.c: better register restoring code and profiling
22559         support for tail calls.
22560
22561 Fri May 23 15:30:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
22562
22563         * mini.h, driver.c: prepare for leaf methods optimization.
22564
22565 Fri May 23 15:28:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
22566
22567         * mini.c: get targets of branches before converting a method.
22568
22569 2003-05-23  Dietmar Maurer  <dietmar@ximian.com>
22570
22571         * mini.c (optimize_branches): added some experimental code (disbaled) 
22572
22573 2003-05-22  Dietmar Maurer  <dietmar@ximian.com>
22574
22575         * mini.c (optimize_branches): fix branch to branch optimization 
22576
22577         * exceptions-x86.c (mono_arch_handle_exception): bug fix.
22578
22579         * mini-x86.c (mono_arch_output_basic_block): cleanup up exception code
22580
22581         * inssel-x86.brg: added OP_START_HANDLER, CEE_ENDFINALLY, OP_ENDFILTER
22582
22583         * mini-x86.c (mono_arch_allocate_vars): only reserve space for lmf
22584         if needed.
22585
22586 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
22587
22588         * mini.c (mono_method_to_ir): call handle_loaded_temps before inlining.
22589         enable use of interface variables again.
22590
22591         * mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate
22592         I1 to registers because there is no simply way to sign extend 8bit
22593         quantities in caller saved registers on x86.
22594
22595         * inssel-float.brg: set costs of some rules to 2 so
22596         that monobure always select the arch. specific ones if supplied,
22597         regardless of the order we pass the files to monoburg.
22598
22599 Tue May 20 17:19:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
22600
22601         * mini.c, mini-x86.c: since the magic trampoline for jumps
22602         can't patch the code directly, we do it as soon as the
22603         method gets compiled.
22604
22605 Tue May 20 16:02:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
22606
22607         * mini-x86.c, mini.h: introduce a new patching method
22608         to support CEE_JMP and tail calls.
22609         * mini.c: obey tail.call. Don't precompile methods target
22610         of CEE_JMP.
22611         * tramp-x86.c: new trampoline code to handle methods
22612         reached through a jump.
22613
22614 2003-05-20  Dietmar Maurer  <dietmar@ximian.com>
22615
22616         * mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16
22617         bit values to registers
22618
22619 2003-05-19  Dietmar Maurer  <dietmar@ximian.com>
22620
22621         * mini.c (mono_compile_get_interface_var): share interface
22622         variables if possible.
22623
22624 2003-05-16  Martin Baulig  <martin@ximian.com>
22625
22626         * debug-mini.c (mono_init_debugger): New function to initialize
22627         the debugger.  This is not in the debugger since it needs to
22628         access some of mini's internals.
22629
22630 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
22631
22632         * mini.c (mono_method_to_ir): inlining fixes/cleanups
22633
22634 Fri May 16 13:27:23 CEST 2003 Paolo Molaro <lupus@ximian.com>
22635
22636         * mini.c, mini-opts.h, inssel.brg: inline small memcpy
22637         for value type handling.
22638
22639 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
22640
22641         * mini.c (mono_method_to_ir): inline LDFLD/STFLD wrappers
22642         (mono_method_check_inlining): enable inlining of all kinds of wrappers
22643
22644 2003-05-15  Lluis Sanchez Gual  <lluis@ideary.com>
22645
22646         * mini.c: fixed little bug in CEE_NEWOBJ case when calling
22647           the constructor through a proxy.
22648
22649 Thu May 15 17:17:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
22650
22651         * jit-icalls.c, inssel.brg: fixes to array element address
22652         calculations.
22653
22654 2003-05-15  Dietmar Maurer  <dietmar@ximian.com>
22655
22656         * mini-x86.c (is_regsize_var): allocate pointer to registers
22657
22658 Thu May 15 13:04:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
22659
22660         * driver.c: fixed typo, added intrins to the set of optimizations
22661         tested with regressions.
22662
22663 Thu May 15 11:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
22664
22665         * mini-ops.h, mini.c, inssel.brg: optimize access to 2D arrays.
22666         * jit-icalls.c, exceptions.cs: fixed index out of range checks, added
22667         test case.
22668
22669 2003-05-14  Dietmar Maurer  <dietmar@ximian.com>
22670
22671         * inssel.brg: remove some common pop instructions without side effects
22672
22673 Wed May 14 12:40:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
22674
22675         * inssel-x86.brg: fixed thinko in int to double conversions.
22676
22677 Wed May 14 12:01:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
22678
22679         * mini.c, jit-icalls.c: added runtime thread-static variable support.
22680
22681 Tue May 13 22:02:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
22682
22683         * inssel-long32.brg: two more missing instructions.
22684
22685 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
22686
22687         * mini.c (mono_emit_call_args): set the cil_code for all arguments
22688         if not already set.
22689
22690 2003-05-12  Zoltan Varga  <vargaz@freemail.hu>
22691
22692         * mini-x86.c (mono_arch_output_basic_block): Handle negative zero
22693         correctly.
22694
22695         * basic-float.cs: Added tests for negative zero.
22696
22697 Sun May 11 14:56:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
22698
22699         * inssel-long32.brg, basic-long.cs, exceptions.cs: handle
22700         a couple of missing operations for long casts, with test cases.
22701
22702 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22703
22704         * exceptions-x86.c: fixed small leaks in mono_arch_handle_exception.
22705
22706 2003-05-09  Dietmar Maurer  <dietmar@ximian.com>
22707
22708         * mini-x86.c (mono_arch_emit_prolog): avoid reallocs with better
22709         code size estimation.
22710
22711 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
22712
22713         * mini.c (mono_jit_create_remoting_trampoline): make it work with
22714         abstract methods (fix bug 42542)
22715
22716         * aot.c: add ability to handle array types
22717         
22718 2003-05-08  Zoltan Varga  <vargaz@freemail.hu>
22719
22720         * mini.c: Call the _specific versions of the object allocation
22721         functions if possible.
22722
22723 Tue May 6 17:18:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
22724
22725         * driver.c: call setlocale ().
22726
22727 Tue May 6 14:38:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
22728
22729         * mini.h, mini.c, aot.c, debug-mini.c, exceptions.c: build fixes for
22730         windows build.
22731
22732 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
22733
22734         * mini.c (optimize_branches): dont touch code inside exception clauses (fix bug 38136)
22735
22736         * exceptions-x86.c (ves_icall_get_frame_info): also skip remoting
22737         wrappers (fix bug 42122)
22738
22739 2003-05-04  Martin Baulig  <martin@ximian.com>
22740
22741         * mini.h (mono_jit_init, mono_jit_cleanup): Added prototypes.
22742
22743         * driver.c: s/MONO_OPT_SAHRED/MONO_OPT_SHARED/g.
22744         s/mini_set_defaults/mono_set_defaults/g.
22745
22746 2003-05-04  Martin Baulig  <martin@ximian.com>
22747
22748         * driver.c: s/mini_parse_default_optimizations/mono_parse_default_optimizations/g.
22749
22750 Sun May 4 11:48:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
22751
22752         * inssel-long32.brg: add missing lreg: OP_LCONV_TO_U8 (lreg) rule
22753         (reported by Don Roberts).
22754
22755 Fri May 2 18:36:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
22756
22757         * mini.c: temporarily work around two bugs for this release.
22758
22759 Fri May 2 17:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
22760
22761         * Makefile.am: avoid linking libmono with GMODULE_LIBS, because
22762         that contains -export-dynamic and it makes using the ld script
22763         useless.
22764         * mini.h, main.c, driver.c: s/mini_main/mono_main/g.
22765
22766 Fri May 2 12:52:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
22767
22768         * mini.h, mini-x86.c, driver.c: disable optimizations not available on a
22769         specific cpu.
22770
22771 Thu May 1 15:28:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
22772
22773         * mini.c: make sure leave calls all the needed finally blocks,
22774         even when the target jumps out of multiple exception clauses.
22775
22776 Thu May 1 15:18:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
22777
22778         * ldscript, Makefile.am: add linker script to reduce the number of
22779         exported symbols (should also fix the issues with libwine defining
22780         some of the same symbols in io-layer).
22781
22782 2003-05-01  Zoltan Varga  <vargaz@freemail.hu>
22783
22784         * driver.c (mini_main): Avoid assertion when no file name is given on 
22785         the command line.
22786
22787 Wed Apr 30 15:33:11 CEST 2003 Paolo Molaro <lupus@ximian.com>
22788
22789         * driver.c: added --version/-V command line option.
22790         Added the inline optimization in the regression tests.
22791
22792 Wed Apr 30 15:16:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
22793
22794         * mini.c, basic-calls.cs: when inlining, save arguments to locals according 
22795         to the type in the method signature (fixes bug#42134).
22796
22797 Wed Apr 30 12:38:44 CEST 2003 Paolo Molaro <lupus@ximian.com>
22798
22799         * mini.c: when inlining, check this is not null only when needed (bug #42135).
22800
22801 Wed Apr 30 11:44:36 CEST 2003 Paolo Molaro <lupus@ximian.com>
22802
22803         * mini-ppc.h, tramp-pcc.c: type fixes from Max Horn <max@quendi.de>.
22804
22805 2003-04-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22806
22807         * driver.c: fixed bug #42100.
22808
22809 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
22810
22811         * mini.c (mono_method_to_ir): UNBOX need to CAST objects first
22812
22813 Mon Apr 28 17:03:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
22814
22815         * mini.c: moved most of the code required to do inlining to its own
22816         function so it can be reused. Inline also ctors if appropriate.
22817
22818 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
22819
22820         * Makefile.am: Link with -export-dynamic so shared libs loaded by
22821         the runtime can call mono API functions.
22822
22823 2003-04-27  Martin Baulig  <martin@ximian.com>
22824
22825         * debug-mini.c (mono_debug_init_method): Added
22826         `guint32 breakpoint_id' argument; if the method has a breakpoint,
22827         send a notification to the debugger.
22828
22829         * mini.c (mono_method_to_ir): Don't insert a breakpoint if we're
22830         running in the Mono Debugger, just pass the breakpoint number to
22831         mono_debug_init_method().
22832
22833         * tramp-x86.c, tramp-ppc.c: Removed the breakpoint trampolines.
22834
22835 Sun Apr 27 13:18:04 CEST 2003 Paolo Molaro <lupus@ximian.com>
22836
22837         * mini.c: allow some more unsafe compares.
22838
22839 Sat Apr 26 11:55:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
22840
22841         * mini-x86.c, Makefile.am: make distcheck works (partially from
22842         a patch by Richard Lee <r.h.lee@attbi.com>).
22843         * regset.c, regset.h: removed, they are unused.
22844
22845 2003-04-25  Dick Porter  <dick@ximian.com>
22846
22847         * driver.c: Usage reports the name as 'mono' not 'mini'
22848         * exceptions-x86.c: Build and run on freebsd
22849
22850 Thu Apr 24 17:09:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
22851
22852         * Makefile.am: install the program with the 'mono' name and
22853         the library as libmono instead of mini and libmini.
22854
22855 Thu Apr 24 17:08:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
22856
22857         * driver.c: provide the APIs for the embedding interface of the old jit.
22858
22859 2003-04-23  Dietmar Maurer  <dietmar@ximian.com>
22860
22861         * jit-icalls.c (helper_stelem_ref): impl. (fix bug 41775)
22862
22863 2003-04-23  Martin Baulig  <martin@ximian.com>
22864
22865         * tramp-x86.c, tramp-ppc.c: Reenable the debugger breakpoint interface.
22866
22867         * driver.c: Added `--debug' command line argument to enable
22868         debugging support.
22869
22870 2003-04-23  Martin Baulig  <martin@ximian.com>
22871
22872         * debug.[ch]: Removed.  The code is now in
22873         ../metadata/mono-debug.[ch] and mono-debug-debugger.[ch].
22874
22875         * debug-stabs.c, debug-dwarf2.c: Removed; nobody used this for the
22876         last six months.
22877
22878 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
22879
22880         * mini.c (mono_method_to_ir): set the cil_code address (fix bug 41525)
22881
22882 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22883
22884         * mini.c:
22885         (mini_cleanup): moved mono_runtime_cleanup call after the call to
22886         mono_domain_finalize.
22887         (mini_method_compile): use mono_method_profile* if the the option is
22888         enabled.
22889
22890 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
22891
22892         * tramp-x86.c (mono_arch_create_jit_trampoline): Subsitute synchronized
22893         methods with their wrapper.
22894
22895         * tramp-ppc.c (mono_arch_create_jit_trampoline): Subsitute synchronized
22896         methods with their wrapper.
22897
22898         * jit-icalls.c (mono_ldvirtfn): Subsitute synchronized methods with
22899         their wrapper.
22900
22901         * mini.c (mono_method_to_ir): Subsitute synchronized methods with their
22902         wrapper.
22903
22904         * mini.c (mono_method_check_inlining): Avoid inlining synchronized
22905         methods.
22906
22907 2003-04-17  Dietmar Maurer  <dietmar@ximian.com>
22908
22909         * exceptions-x86.c (mono_arch_handle_exception): fix for bug 36252
22910
22911 2003-04-16  Dietmar Maurer  <dietmar@ximian.com>
22912
22913         * mini.c (mono_compile_create_var): use g_malloc/g_realloc instead
22914         of the mempool. This is slightly faster and uses less memory
22915
22916 Wed Apr 16 12:53:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
22917
22918         * mini.c: avoid O(n) allocation for variables.
22919
22920 Tue Apr 15 19:13:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
22921
22922         * mini.c: handle items on the stack after inlining methods.
22923
22924 Tue Apr 15 14:17:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
22925
22926         * mini.c: make the method->opcode optimization dependent
22927         on MONO_OPT_INSTRINS and do it lazily.
22928
22929 Tue Apr 15 14:15:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
22930
22931         * driver.c: print overall results at the end of regression run.
22932
22933 Tue Apr 15 11:18:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
22934
22935         * inssel.brg: don't overwrite symbolic registers.
22936
22937 Mon Apr 14 17:41:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
22938
22939         * inssel-x86.brg: fix conversion from long to float.
22940
22941 2003-04-11  Dietmar Maurer  <dietmar@ximian.com>
22942
22943         * mini.c (mini_init): use an opcode for get_Chars (OP_GETCHR)
22944
22945 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
22946
22947         * mini.c (mono_type_blittable): MONO_TYPE_OBJECT is blittable.
22948
22949         * driver.c: Added --print-vtable option as in the old JIT.
22950
22951 Thu Apr 10 17:43:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
22952
22953         * inssel-long32.brg, exceptions.cs: fix conversions from long, too.
22954
22955 Thu Apr 10 16:27:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
22956
22957         * inssel.brg, basic.cs: fixed checked conversions to byte and short.
22958
22959 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
22960
22961         * mini.c regalloc.c regalloc.h: Fix memory leak.
22962
22963 2003-04-09  Dietmar Maurer  <dietmar@ximian.com>
22964
22965         * aot.c (mono_aot_get_method): register all used strings
22966
22967 Wed Apr 9 15:22:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
22968
22969         * mini.c: always intern strings references with ldstr at compile time.
22970
22971 Tue Apr 8 11:41:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
22972
22973         * Makefile.am: add BUILT_SOURCES.
22974
22975 Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
22976
22977         * driver.c: give a better error message when the assembly to execute
22978         doesn't have an entry point.
22979
22980 2003-04-07  Dietmar Maurer  <dietmar@ximian.com>
22981
22982         * Makefile.am: added hack for automake
22983
22984         * mono/mini/mini.c (mono_save_args): always copy arguments to keep
22985         correct sematics.
22986
22987         * mono/mini/ssa.c (mono_ssa_avoid_copies): don't optimize calls
22988
22989 22003-04-07  Martin Baulig  <martin@ximian.com>
22990
22991         * Makefile.am: Added Makefile.am.
22992
22993         * debugger-main.c: Removed, this is now in the debugger where it
22994         belongs.
22995
22996         * mini.pc.in: Call this package `mini' for the moment.
22997
22998
22999
23000
23001
23002
23003
23004
23005
23006
23007
23008
23009
23010
23011