2010-01-03 Zoltan Varga <vargaz@gmail.com>
[mono.git] / mono / mini / ChangeLog
1 2010-01-03  Zoltan Varga  <vargaz@gmail.com>
2
3         * mini-codegen.c abcremoval.c: Remove the duplicate g_slist_append_mempool
4         functions which are now defined in mempool-internals.h.
5
6         * mini.c (mini_free_jit_domain_info): Free the seq point hash tables.
7
8         * mini-llvm.c (mono_llvm_emit_method): Handle OP_ABS.
9
10 2009-12-30  Rodrigo Kumpera  <rkumpera@novell.com>
11
12         * mini.c:
13         * method-to.ir.c:
14         * mini-*.c: Properly handle generic enums.
15
16         Fixes #566294
17
18 2009-12-28  Zoltan Varga  <vargaz@gmail.com>
19
20         * method-to-ir.c (mono_method_to_ir): Handle the failure of mono_class_vtable ()
21         in a few more places.
22
23 2009-12-27  Zoltan Varga  <vargaz@gmail.com>
24
25         * aot-compiler.c (add_wrappers): Don't use dyn runtime invoke for methods with
26         nullable parameters. Fixes #567351.
27
28 2009-12-26  Rodrigo Kumpera  <rkumpera@novell.com>
29
30         * mini-trampolines.c (common_call_trampoline): Add assert for NULL resolved generic method.
31
32 2009-12-26  Zoltan Varga  <vargaz@gmail.com>
33
34         * mini-trampolines.c: Use mono_arch_get_this_arg_from_call () to avoid the slow
35         mono_get_generic_context_from_code () call.
36
37         * mini-<ARCH>.c: Get rid of mono_arch_find_this_arg (), it is no longer used.
38
39 2009-12-25  Zoltan Varga  <vargaz@gmail.com>
40
41         * aot-runtime.c (decode_klass_ref): Don't call mono_class_init (), its not
42         needed.
43
44 2009-12-24  Sebastien Pouliot  <sebastien@ximian.com>
45
46         * method-to-ir.c (mono_method_to_ir): Avoid SIGSEGV when
47         mono_method_get_signature returns NULL. Fix #567084
48
49 2009-12-25  Zoltan Varga  <vargaz@gmail.com>
50
51         * aot-runtime.c (find_extra_method): Call mono_aot_wrapper_name only once,
52         instead of once for each module.
53
54 2009-12-22  Zoltan Varga  <vargaz@gmail.com>
55
56         * debugger-agent.c (ss_start): Implement step over for the last sequence
57         point in methods.
58
59         * mini.c (mono_save_seq_point_info): Don't link sequence points which don't
60         have the STEP_LOC flag set.
61
62         * aot-runtime.c (decode_klass_ref): Avoid a crash if a decode_klass_ref () call
63         fails. Fixes #566689.
64
65 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
66
67         * mini.c (mono_add_seq_point): New helper function.
68         (mono_save_seq_point_info): New function to save sequence point info, extracted
69         from mini_method_compile ().
70
71         * mini-<ARCH>.c: Call mono_add_seq_point to remember sequence points.
72
73         * mini.h (MonoSeqPointInfo): New structure containing information about
74         the sequence points of a JITted method.
75         (MonoBasicBlock): Add 'seq_points' and 'last_seq_point' fields. Remove unused
76         'bucket' field.
77
78         * mini.c debugger-agent.c aot-compiler.c aot-runtime.c: Change the way sequence
79         point information is stored, use a MonoSeqPointInfo structure instead of a
80         GPtrArray. For each seq point, compute a list of successor seq points.
81
82         * debugger-agent.c: Use the successor list to implement step-over more
83         efficiently: instead of single stepping until a different line/IL offset is
84         reached, place breakpoints into all successor seq points.
85
86         * mini.h: Bump AOT file format version.
87
88 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
89
90         * Makefile.am (AM_CFLAGS): Include LLVM_CFLAGS.
91
92         * mini-llvm.c: Avoid defining the __STDC_... macros if already defined.
93
94 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
95
96         * exceptions-ppc.c (mono_ppc_set_func_into_sigctx): Fix the cross-compiler
97         build.
98
99 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
100
101         * mini-x86.c (mono_arch_get_argument_info): Allocate memory for CallInfo using
102         alloca as g_malloc is not signal safe.
103
104 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
105
106         * tramp-x86.c (mono_arch_patch_callsite): Fix the call to
107         VALGRIND_DISCARD_TRANSLATIONS.
108
109         * *.c: Include mono/utils/memcheck.h, and remove #ifdef HAVE_VALGRIND_MEMCHECK_H
110         checks, they are no longer needed.
111
112         * exceptions-ppc.c (mono_ppc_set_func_into_sigctx): New helper function to set
113         a function into a sigctx which can handle function pointers.
114
115         * mini-ppc.c: Implement soft debugger support on ppc64.
116
117         * mini-ppc.c: Implement soft debugger support.
118
119 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
120
121         * mini-llvm.c: Handle OP_LADD_OVF_UN. Place all alloca's into the entry bb.
122
123 2009-12-17  Marek Habersack  <mhabersack@novell.com>
124
125         * mini.c (mono_get_runtime_build_info): include Mono version in
126         the returned value.
127
128         * driver.c (mono_main): VERSION is now included in the string
129         returned from mono_get_runtime_build_info()
130
131 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
132
133         * method-to-ir.c (mono_method_to_ir): Add support for CALLI with unmanaged
134         signatures. Fixes #565143.
135
136         * jit-icalls.c (mono_get_native_calli_wrapper): New JIT icall.
137
138 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
139
140         * aot-compiler.c (arch_emit_autoreg): Align code to 4 in the ppc case.
141
142 2009-12-16 Rodrigo Kumpera  <rkumpera@novell.com>
143
144         * mini-x86.h: Forgot to add a 0x to MONO_ARCH_MAX_FRAME_SIZE define
145         making max stack 10x smaller.
146
147 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
148
149         * mini.c (mono_resolve_patch_target): Comment out an assert which could be hit.
150
151 2009-12-15 Rodrigo Kumpera  <rkumpera@novell.com>
152
153         * method-to-ir.c (mini_emit_memcpy): Assert if size is too big.
154
155 2009-12-15 Rodrigo Kumpera  <rkumpera@novell.com>
156
157         * mini-x86.c (mono_arch_allocate_vars): Fail compilation if the frame size is
158         bigger than MONO_ARCH_MAX_FRAME_SIZE.
159
160         * mini-x86.c (mono_arch_emit_prolog): Handle huge frames.
161
162         * mini-x86.h: Define MONO_ARCH_MAX_FRAME_SIZE to be 1Mb.
163
164         * mini-amd64.c / mini-amd64.h: Same fixes as of above.
165
166         * mini.c (mini_method_compile): Check if mono_arch_allocate_vars failed
167         the compilation.
168
169 2009-12-14  Miguel de Icaza  <miguel@novell.com>
170
171         * method-to-ir.c (mono_method_to_ir): CEE_UNUSUED opcodes now
172         raise an invalid program exception.   
173
174         For other opcodes that we might not handle use a g_warning and
175         raise the exception.   Beats termination.
176
177         Fixes #561724
178
179 2009-12-14  Zoltan Varga  <vargaz@gmail.com>
180
181         * method-to-ir.c (mono_emit_rgctx_method_call_full): Fix a warning.
182
183         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix the LLVM support
184         by merging the LLVM and !MAP_32BIT cases.
185
186 2009-12-13 Jonathan Chambers <joncham@gmail.com>
187
188         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Handle a NULL
189         sigctx being passed in, as we have no CONTEXT available in the APC.
190
191         (mono_debugger_agent_cleanup): Use explicit cond wait implementation
192         for now.
193
194         Code contributed under MIT/X11 license.
195
196 2009-12-13  Zoltan Varga  <vargaz@gmail.com>
197
198         * method-to-ir.c mini-llvm.c: Fix support for monitor enter/exit trampolines
199         in the LLVM backend on AMD64.
200
201         * aot-runtime.c (decode_eh_frame): Initialize the clauses from the info in the
202         FDE.
203
204         * unwind.c (mono_unwind_decode_fde): Implement decoding of a couple more formats.
205
206         * mini-llvm.c: Export mono_personality for AOT.
207
208         * mini.c (mini_method_compile): Fix some problems with llvm+aot+clauses.
209
210         * mini-ops.h (OP_IMPLICIT_EXCEPTION): New opcode marking the place where an
211         implicit exception can occur.
212
213         * ir-emit.h (MONO_EMIT_NEW_IMPLICIT_EXCEPTION): New macro to emit an
214         OP_IMPLICIT_EXCEPTION instruction.
215
216         * ir-emit.h (MONO_EMIT_NEW_CHECK_THIS): New macro.
217
218         * method-to-ir.c: Use MONO_EMIT_NEW_CHECK_THIS in a few places.
219
220         * mini-llvm.c: Handle OP_IMPLICIT_EXCEPTION by disabling llvm if it occurs
221         inside a protected block.
222
223         * mini-llvm.c: Revert the last change, the signature of monitor entry/exit
224         trampolines doesn't include the argument.
225
226         * mini-llvm.c (mono_llvm_emit_method): Enable calls to monitor entry/exit
227         trampolines on amd64.
228
229         * mini-amd64.h (MONO_ARCH_MONITOR_OBJECT_REG): Use MONO_AMD64_ARG_REG1 instead
230         of RDI.
231
232         * mini.c (mini_method_compile): Add some comments as to why LLVM is currently
233         disabled for methods with clauses.
234
235         * mini-llvm.c: Enable support for catch clauses.
236
237         * mini-exceptions.c (mono_resume_unwind): New function to resume unwinding at the
238         end of an LLVM compiled finally clause.
239         (mono_handle_exception_internal): Save the exception handling state in TLS
240         before calling an LLVM compiled finally clause, so mono_resume_unwind () can
241         resume unwinding from that point.
242
243         * unwind.c (mono_unwind_get_ops_from_fde): Rename this to
244         mono_unwind_decode_fde, decode the Language Specific Data Area (LSDA) too,
245         to obtain the addresses of the exception handling regions.
246
247         * mini-llvm.c: Add beginnings of support for exception handling, currently only
248         finally clauses are supported.
249
250         * mini.c (mini_method_compile): Add support for LLVM code with exception
251         handlers.
252
253 2009-12-12  Zoltan Varga  <vargaz@gmail.com>
254
255         * mini-llvm.c (mono_llvm_emit_method): Allocate the 'pindexes' array with the
256         proper size.
257
258 2009-12-12  Zoltan Varga  <vargaz@gmail.com>
259
260         * debugger-agent.c: Encode the this argument of vtype methods as a struct, not
261         as a primitive type.
262
263 2009-12-11  Zoltan Varga  <vargaz@gmail.com>
264
265         * driver.c: Applied patch from Matt McClellan (matt@mc-c.net). Add a check
266         for 2 parameter sched_setaffinity in older glibc versions. Fixes
267         #564000.
268
269 2009-12-11  Marek Habersack  <mhabersack@novell.com>
270
271         * method-to-ir.c (mini_redirect_call): do not redirect the
272         InternalAllocateStr internal call if string profiling is enabled.
273
274 2009-12-10  Zoltan Varga  <vargaz@gmail.com>
275
276         * aot-compiler.c (add_wrappers): Avoid generating synchronized wrappers for
277         generic methods.
278
279         * unwind.h: Rename this to mini-unwind.h to avoid conflicts with the gcc
280         unwind.h header file.
281
282         * tramp-x86.c (mono_arch_patch_callsite): Patch the code when using valgrind,
283         newer valgrind versions seems to handle this fine.
284
285 2009-12-09  Zoltan Varga  <vargaz@gmail.com>
286
287         * debugger-agent.c (start_runtime_invoke): Fix a crash if this is called
288         on the debugger thread.
289
290 2009-12-08  Zoltan Varga  <vargaz@gmail.com>
291
292         * mini-llvm.c (mono_llvm_emit_method): Add more SIMD opcodes.
293
294         * mini.c (mono_print_method_from_ip): Fix the lookup of trampolines.
295
296         * mini-codegen.c (mono_local_regalloc): Allow non-call opcodes with cloc:c.
297
298         * cpu-<ARCH>.md: Make call_handler clob:c.
299
300         * mini.c: Reenable SSA for methods with clauses.
301
302         * mini.c (mini_method_compile): Disable SSA for now for methods with clauses,
303         as it causes failures on x86.
304
305 2009-12-08  Sebastien Pouliot  <sebastien@ximian.com>
306
307         * driver.c: Fail gracefully with --compile-all if mono_method_signature
308         returns NULL (e.g. a bad assembly).
309
310 2009-12-08  Geoff Norton  <gnorton@novell.com>
311
312         * debugger-agent.c:  Refactor the mono_runtime_invoke guarding against
313         stepping out into native code.  There were issues with nested invokes
314         like .cctors.
315
316 2009-12-07  Zoltan Varga  <vargaz@gmail.com>
317
318         * mini.c (mini_method_compile): Do the disable_llvm checks early
319         and avoid the LLVM compile pass if the checks fail.
320
321         * mini.c ssa.c abcremoval.c: Enable SSA for methods with exception clauses.
322
323         * mini-llvm.c: Put our methods/globals into the 'llvm.used' array, so the
324         LLVM optimizations don't try to remove them.
325
326         * aot-compiler.c (emit_llvm_file): Save the result of opt into a
327         different file so the original remains.
328
329 2009-12-06  Zoltan Varga  <vargaz@gmail.com>
330
331         * mini-llvm.c mini.c: Fix alignment issues with SIMD vars.
332
333         * aot-runtime.c (decode_arm_exidx): Handle most descriptors created by gas.
334
335         * aot-runtime.c (decode_arm_exidx): Refactor this into two functions, add
336         support for non-inline unwind descriptors.
337
338 2009-12-07  Geoff Norton  <gnorton@novell.com>
339
340         * debugger-agent.c:  Darwin can colesce signals, so we need to handle
341         the interrupt_count slightly differently.  Native threads were never
342         marked as resumed.
343
344 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
345
346         * aot-runtime.c (decode_arm_exidx): New function to initialize a MonoJitInfo
347         based on the contents of the ARM .exidx section. Not yet used since llvm doesn't
348         yet generate this info.
349
350         * mini-llvm.c: Fix the conversion of call results if they are unsigned.
351
352         * debugger-agent.c (buffer_add_value): Treat I/U as a valuetype, so the
353         client can distinguish between intptrs and longs.
354
355 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
356
357         * aot-compiler.c (emit_trampoline): Emit the trampoline info into the global
358         blob.
359
360         * aot-runtime.c (load_function): Update after the change above.
361
362         * mini.h: Bump AOT file format version.
363
364         * method-to-ir.c (mono_method_to_ir): Disallow the delegate optimization
365         if the delegate class is dynamic.
366
367         * method-to-ir.c (handle_delegate_ctor): Allow the method_code optimization
368         in gshared code too using the new rgctx info type
369         MONO_RGCTX_INFO_METHOD_DELEGATE_CODE.
370
371 2009-12-04  Geoff Norton  <gnorton@novell.com>
372
373         * debugger-agent.c: When doing a func-eval invoke on a suspended runtime,
374         we need to track the original suspend count so the thread properly
375         wakes up in resume_thread.
376
377 2009-12-04  Zoltan Varga  <vargaz@gmail.com>
378
379         * method-to-ir.c (handle_delegate_ctor): Add support for using this from gshared
380         code.
381
382         * generics.cs: Add a test.
383
384         * method-to-ir.c (emit_get_rgctx_method): Make this work even if context_used
385         is 0. Simplify a lot of code using this.
386
387         * mini-trampolines.c (mono_delegate_trampoline): Call
388         mono_create_static_rgctx_trampoline () before saving the final address in
389         delegate->method_code, to avoid calling it each time a delegate is first called.
390
391         * method-to-ir.c (mono_method_to_ir): Allow fast delegate creation for methods
392         which need static rgctx trampolines.
393
394         * mini-trampolines.c (mono_create_static_rgctx_trampoline): Use a cache
395         keyed on the method+addr pair, since addr could be either the method addr or
396         an unbox trampoline in the AOT case. Fixes #560246.
397
398 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
399
400         * mini.c (mini_method_compile): Call handle_exception_clauses () in the same
401         place it was called before too.
402
403 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
404
405         * mini.c (mono_jit_runtime_invoke): Avoid the call to mono_class_setup_vtable ()
406         if no security manager is present, to speed up the AOT case. Call
407         mono_class_vtable () full with raise_on_error == TRUE instead.
408
409 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
410
411         * mini.c (mini_method_compile): Call handle_exception_clauses earlier so
412         the local optimization passes can take its result into account. Fixes
413         #559876.
414
415         * exceptions.cs: Add a test.
416
417 2009-01-24  Steven Munroe  <munroesj@us.ibm.com>
418
419         This patch is contributed under the terms of the MIT/X11 license
420
421         * cpu-ppc64.md (load_memindex): Add loadi8_memindex.
422
423 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
424
425         * mini.h (MonoInst): Remove unused 'ssa_op' field.
426
427         * debugger-agent.c: Rework the handling of stack traces of running threads to
428         avoid crashes if compute_frames () tries to walk the stack of running thread.
429
430         * mini.c (mono_print_method_from_ip): Use mini_jit_info_table_find.
431
432         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): Set frame->lmf.
433
434         * mini.h (StackFrameInfo): Add an 'lmf' field.
435
436 2009-12-02  Zoltan Varga  <vargaz@gmail.com>
437
438         * debugger-agent.c (suspend_current): Always set really_suspended.
439
440         * debugger-agent.c (clear_event_request): Clear method entry/exit requests too.
441
442         * exceptions-x86.c (mono_arch_get_restore_context): Restore EAX too.
443
444 2009-12-01  Zoltan Varga  <vargaz@gmail.com>
445
446         * debugger-agent.c (vm_commands): Don't allow invokes on threads which are not
447         really suspended.
448
449 2009-12-01  Zoltan Varga  <vargaz@gmail.com>
450
451         * cpu-ppc64.md (store_memindex): Add storei8_memindex.
452
453 2009-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
454
455         * mini-trampolines.c: Fix MSVC build.
456
457 2009-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
458
459         * mini-trampolines.c: Check for mono_method_get_vtable_slot failures.
460
461 2009-11-30  Zoltan Varga  <vargaz@gmail.com>
462
463         * mini-arm.c (mono_arch_lowering_pass): Fix an assert which is hit when
464         the instruction following an OP_FCOMPARE is optimized away.
465
466 2009-11-30  Zoltan Varga  <vargaz@gmail.com>
467
468         * aot-compiler.c (arch_emit_autoreg): Extract the auto-registration code from
469         emit_autoreg () into this arch-specific function.
470
471         * aot-compiler.c (emit_exception_debug_info): Don't emit the length of the
472         code, it is no longer needed.
473
474         * aot-runtime.c (decode_exception_debug_info): Don't read the code length.
475
476         * mini.h: Bump AOT file format version.
477
478         * aot-runtime.c (mono_aot_find_jit_info): Compute the length of the method
479         using the sorted_code_offsets array, instead of reading it from the
480         exception debug info.
481         (load_method): Call mono_aot_find_jit_info instead of
482         decode_exception_debug_info ().
483
484         * aot-compiler.c (emit_exception_debug_info): Emit whenever the method was
485         LLVM compiled as a flag.
486
487 2009-11-29  Zoltan Varga  <vargaz@gmail.com>
488
489         * debugger-agent.c (resume_thread): Fix a warning.
490
491         * aot-compiler.c: Add an option to set the number of static rgctx trampolines
492         generated.
493
494 2009-11-28  Zoltan Varga  <vargaz@gmail.com>
495
496         * aot-compiler.c aot-runtime.c: Get rid of a few global symbols, move their
497         contents to MonoAotFileInfo.
498
499 2009-11-27  Zoltan Varga  <vargaz@gmail.com>
500
501         * aot-compiler.c aot-runtime.c: Reorganize the AOT file format once again.
502         Put all binary data into a giant blob, similarly to the way .net assemblies
503         store binary data. Emit offset tables in a compact form to reduce their size.
504
505         * mini.h: Bump AOT file format version.
506
507         * aot-compiler.c (emit_globals_table): Use temp_prefix instead of .L in a few
508         places.
509
510         * aot-compiler.c (emit_globals_table): Emit a hash table for the globals, to
511         avoid linear searches at runtime.
512
513         * aot-runtime.c (find_symbol): Update this to use the hash.
514
515         * mini.h: Bump AOT file format version.
516
517 2009-11-26  Zoltan Varga  <vargaz@gmail.com>
518
519         * aot-compiler.c (emit_klass_info): Save whenever the class has a generic
520         container.
521
522         * aot-runtime.c (decode_cached_class_info): Set the is_generic_container field
523         too.
524
525         * aot-compiler.c (mono_compile_assembly): Add a 'stats' option to print out
526         the distribution of got slot types.
527
528         * mini.h (MonoDebugOptions): Add 'explicit_null_checks' option.
529
530         * method-to-ir.c: Add support for generating explicit null checks.
531
532 2009-11-25  Zoltan Varga  <vargaz@gmail.com>
533
534         * debugger-agent.c (vm_commands): Implement EXIT by invoking Environment.Exit ()
535         on a random thread if possible.
536
537         * aot-runtime.c (mono_aot_plt_resolve): Clean up the handling of function
538         descriptors a bit, add comments, handle RGCTX_FETCH/GENERIC_CLASS_INIT_TRAMPOLINE
539         correctly.
540
541         * exceptions-ppc.c (mono_arch_find_jit_info_ext): Use mgreg_t as the type of
542         regs. Pass the real size of the regs array to mono_unwind_frame ().
543
544         * unwind.c (mono_unwind_frame): Remove an incorrect assert, add more correct
545         ones instead.
546
547 2009-11-24  Geoff Norton  <gnorton@novell.com>
548
549         * mini-darwin.c: Work around apple bug rdar://7209349  See
550         http://openradar.appspot.com/7209349 for details.  Synopsis,
551         CoreFoundation SIGTRAP's if you dlopen it off the main thread if its
552         never been initialized before.
553
554 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
555
556         * tramp-arm.c: Use blx instead of mov pc, reg to improve support for thumb.
557
558         * mini-arm.c (mono_arm_thumb_supported): New helper function.
559
560 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
561
562         * cfold.c (mono_constant_fold_ins): Fix a problem in the previous change,
563         OP_SHL_IMM is not 32 bit.
564
565 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
566
567         * aot-compiler.c (encode_patch): Fix the encoding of R8 on big-endian systems.
568
569 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
570
571         * aot-compiler.c: Avoid infinite recursion when generic virtual recursion is
572         encountered.
573
574         * debugger-agent.c (resume_vm): Signal the suspend_cond even if suspend_count
575         > 0 since some threads can resume if their resume_count is > 0.
576         (invoke_method): Avoid reading freed memory.
577
578         * debugger-agent.c (process_suspend): Extract the suspend code from
579         process_single_step_inner () to a separate function. Rework the code to prevent
580         races between this function and thread interrupts.
581
582         * debugger-agent.c (suspend_current): Check the resume_count field instead
583         of resume_one so suspends+resumes during single threaded invokes work
584         correctly.
585
586 2009-11-23  Zoltan Varga  <vargaz@gmail.com>
587
588         * aot-compiler.c (emit_llvm_file): Enable some llvm optimizations which seem
589         to make the generated code smaller.
590
591         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Add a code
592         sequence generated by recent LLVM versions.
593
594         * mini-llvm.c: Add support for a few simple cases which weren't supported
595         before.
596
597         * mini-trampolines.c (mono_magic_trampoline): Don't call
598         mono_arch_get_vcall_slot () when llvm is enabled.
599
600         * aot-compiler.c (emit_llvm_file): Add code to run the 'opt' llvm tool.
601
602         * mini-trampolines.c (mono_magic_trampoline): Extract the bulk of this function
603         into a new function called common_call_trampoline () which is used by the
604         llvm vcall trampoline as well.
605
606         * debugger-agent.c: Implement single threaded invokes.
607
608         * debugger-agent.c: Revert change which broke the agent on linux.
609
610         * method-to-ir.c (inline_method): Prevent infinite recursion. Fixes
611         #557606.
612
613         * generics.cs: Add a test.
614
615 2009-11-22  Zoltan Varga  <vargaz@gmail.com>
616
617         * debugger-agent.c: Fix the cygwin build.
618
619 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
620
621         * cprop.c: Remove this unused file.
622
623 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
624
625         * cfold.c (mono_constant_fold_ins): Fix constant folding of shr_imm. Fixes
626         #557262.
627
628         * basic.cs: Add a test.
629
630 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
631
632         * method-to-ir.c (mono_method_to_ir): Use mono_use_llvm instead of ENABLE_LLVM
633         in one more place.
634
635 2009-11-20  Zoltan Varga  <vargaz@gmail.com>
636
637         * mini.c mini-trampolines.c driver.c: Add a 'mono_use_llvm' flag to control
638         whenever the runtime uses LLVM code. Add a '--llvm' command line option to set
639         it. Use this flag to control llvm related code paths instead of #ifdef
640         ENABLE_LLVM, so a runtime configured without --enable-llvm can use LLVM compiled
641         AOT code.
642
643         * aot-runtime.c aot-compiler.c: Add a 'flag' field to MonoAotFileInfo.
644
645         * mini.h: Bump AOT file format version.
646
647         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline_full): These
648         receive their argument in MONO_ARCH_VTABLE_REG, not in the first argument reg.
649
650         * debugger-agent.c (create_event_list): Fix a crash if an empty assembly list
651         was used as an assembly filter.
652
653 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
654
655         * unwind.c: Fix support for ppc.
656
657         * exceptions-ppc.c (mono_arch_find_jit_info): Change this to use dwarf frame
658         unwind info. Change to the mono_arch_find_jit_info_ext () interface.
659
660 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
661
662         * mini-ppc.c (mono_arch_emit_prolog): Fix a copy-paste error to fix the ppc64
663         port.
664         (mono_arch_cpu_init): Don't set cpu_hw_flags to 0 at the end, this was somehow
665         added by the ps3 changes.
666
667 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
668
669         * mini-gc.c: Resurrect this, so at least it compiles.
670
671         * debugger-agent.c (assembly_commands): Implement GET_NAME command.
672
673 2009-11-18  Zoltan Varga  <vargaz@gmail.com>
674
675         * debugger-agent.c (mono_debugger_agent_handle_exception): Pass a MonoJitInfo to
676         create_event_list () so assembly filters can be used.
677
678         * exceptions-ppc.c (mono_arch_find_jit_info): Fix the restoration of registers
679         from the LMF.
680
681 2009-11-17  Zoltan Varga  <vargaz@gmail.com>
682
683         * debugger-agent.c (mono_debugger_agent_breakpoint_hit): Fix a warning.
684         (mono_debugger_agent_thread_interrupt): Make this return FALSE if the agent
685         is disabled.
686
687         * aot-compiler.c (add_generic_instances): Emit instances of common generic
688         classes for char/bool too.
689
690         * debugger-agent.c (DebuggerTlsData): Honor the DISABLE_SOFT_DEBUG option.
691
692         * debugger-agent.c (DebuggerTlsData): Add a 'really_suspended' flag, not yet
693         used.
694
695         * debugger-agent.c: Add some definitions to make backporting to 2.6 easier.
696         Fix warnings.
697
698 2009-11-15  Andreas Faerber  <andreas.faerber@web.de>
699
700         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Signature fix.
701         
702         Code contributed under MIT/X11 license.
703
704 2009-11-14  Zoltan Varga  <vargaz@gmail.com>
705
706         (mono_debugger_agent_thread_interrupt): Save the context so stacktraces for
707         threads in native code work.
708
709         * debugger-agent.c: Pass the 'flags' argument to VM_INVOKE_METHOD earlier in
710         the parameter list, so it can be acted upon by vm_commands (). Bump protocol
711         version.
712
713 2009-11-13 Jonathan Chambers <joncham@gmail.com>
714
715         * debugger-agent.c: Implementation for Windows platform.
716
717         * mini-x86.c: Add support for Windows. Use mono-* synchronization
718         primitives. Use SEH to implement breakpoints and single stepping.
719
720         * mini-x86.h: Enable soft debugger on Windows.
721
722         Code contributed under MIT/X11 license.
723
724 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
725
726         * mini-amd64.c (emit_call_body): Disable usage of near calls when running
727         under XEN. Fixes #522894.
728
729         * patch-info.h: Add LLVM_IMT_TRAMPOLINE.
730
731         * mini-llvm.c aot-compiler.c aot-runtime.c mini.c: Add support for making
732         interface calls in LLVM AOT code.
733
734         * aot-compiler.c mini-llvm.c: Abort llvm compilation if a non-encodable patch
735         is found.
736
737         * mini-llvm.c: Add support for OP_VPHI.
738
739         * objects.cs: Add a test.
740
741 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
742
743         * debugger-agent.c (mono_debugger_agent_single_step_event): Avoid a crash if
744         this is called on the debugger thread.
745
746 2009-11-12  Zoltan Varga  <vargaz@gmail.com>
747
748         * mini-llvm.c: Add soft-float support.
749
750         * method-to-ir.c (mono_decompose_soft_float): Restart after decomposing an
751         FCALL which returns an R4.
752
753         * driver.c (mono_main): Add a missing '\n'.
754
755         * mini-trampolines.c (mono_create_llvm_imt_trampoline): Fix the build on
756         platforms which doesn't support the LLVM IMT trampoline.
757
758 2009-11-11  Zoltan Varga  <vargaz@gmail.com>
759
760         * mini-llvm.c (mono_llvm_emit_method): Fix LOCALLOC.
761
762         * mini-llvm-cpp.cpp: Update to latest LLVM SVN.
763
764         * mini-llvm.c (mono_llvm_emit_method): Avoid creating plt entries for
765         virtual calls.
766
767         * aot-runtime.c: Don't define HAVE_DL_ITERATE_PHDR, configure now does that.
768
769 2009-11-10  Zoltan Varga  <vargaz@gmail.com>
770
771         * aot-compiler.c aot-runtime.c: Change how mono_arch_find_jit_info () works.
772         Instead of emitting a method_order table, sort the contents of the code_offsets
773         table and do a binary search in the sorted table. The previous approach doesn't
774         work with LLVM which emits methods in a arbitrary order.
775
776         * aot-runtime.c: Add support for creating MonoJitInfo structures by searching
777         in the .eh_frame section in ELF files.
778
779         * mini.h: Bump corlib file format version.
780
781         * mini-llvm.c aot-compiler.c: Add support for AOT to the LLVM back end.
782
783         * exceptions-arm.c (mono_arch_get_call_filter_full): Update after the
784         LDMIA->LDM macro name change.
785
786 2009-11-09  Zoltan Varga  <vargaz@gmail.com>
787
788         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Fix and enable this for
789         x86.
790
791         * mini-llvm-cpp.cpp (JITMemoryManager): Fix compilation with LLVM 2.7
792         SVN.
793
794         * aot-compiler.c: Ditto.
795
796         * mini-arm.c (mono_arch_allocate_vars): Fix the previous change by passing
797         &align to mini_type_stack_size_full ().
798
799         * mini-arm.c (mono_arch_emit_prolog): Implement support for varargs.
800
801         * mini-ops.h: Add documentation for the OP_ARGLIST opcode.
802
803 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
804
805         * mini-arm.c: Compute the stack space used by arguments using
806         mini_type_stack_size_full ().
807
808 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
809
810         * optflags-def.h: Remove dead TREEPROP optimization.
811
812 2009-11-08  Rodrigo Kumpera  <rkumpera@novell.com>
813
814         * mini-ppc.h: Make mono compiler under FreeBSD/ppc64. 
815
816         Patch by Justin Hibbits <chmeeedalf@gmail.com>.
817
818 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
819
820         * driver.c (mono_jit_parse_options): New public API function to parse options
821         as done by the runtime executable.
822
823         * debugger-agent.c (buffer_add_cattrs): Fix reading an uninitialized variable
824         when handling named arguments.
825
826 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
827
828         * mini-arm.c: Implement support for returning vtypes in registers, fix support
829         for passing small vtypes in registers, make the CallInfo structures more
830         similar to the code on the other platforms.
831
832         * mini-arm.c (mono_arch_allocate_vars): Align small vtypes to 4 bytes too since
833         the code in the prolog requires it.
834
835 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
836
837         * mini-arm.c debugger-agent.c: Android changes from Koushik K. Dutta
838         (koush@koushikdutta.com).
839
840         * mini-arm.c (handle_thunk): Add a domain argument to control the domain
841         where the thunk memory should be allocated from. Fixes appdomain unloading
842         on arm.
843
844 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
845
846         * mini-arm.c exceptions-arm.c: Make ctx->regs map directly to the 16 hardware
847         registers, instead of r4..r11,ip,lr. Make restore_context () restore r0..r3 too.
848
849 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
850
851         * mini-amd64.c (mono_arch_output_basic_block): Don't allow OP_SEQ_POINT in
852         AOT, as it is not implemented yet.
853
854         * mini-x86.c (mono_arch_output_basic_block): Ditto.
855
856 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
857
858         * debugger-agent.c: Fix windows build.
859
860 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
861
862         * debugger-agent.c (debugger_thread): Call mono_set_is_debugger_attached ()
863         after the client connects/disconnects.
864
865         * debugger-agent.c: Add an 'onthrow' option to start the debugger agent
866         when an exception of a given type is thrown.
867
868         * debugger-agent.c: Add a 'onuncaught' option to start the debugger agent
869         only on an uncaught exception.
870
871         * mini-exceptions.c: Notify the debugger agent on an uncaught exception.
872
873         * debugger-agent.c: Add a 'launch' option.
874
875 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
876
877         * debugger-agent.c: Add a 'timeout' option.
878
879 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
880
881         * debugger-agent.c: Implement the 'server' and 'suspend' options supported by
882         the JDWP agent.
883
884 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
885
886         * debugger-agent.c (set_breakpoint): Emit a log message.
887
888 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
889
890         * mini-arm.c: Fix the arm build.
891
892 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
893
894         * aot-compiler.c: don't leak the value returned from
895         mono_type_full_name().
896
897 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
898
899         * debugger-agent.c: defer including mono-mutex.h until we know the
900         agent is supported.
901
902 2009-11-04 Jonathan Chambers <joncham@gmail.com>
903
904         * debugger-agent.c: Changes to build on windows. Use mono-mutex instead
905         of pthreads directly.
906
907         * mini.c (mono_sigfpe_signal_handler): Changed signature of Windows
908         exception handlers. Pass info argument.
909
910         * mini.h: Adjust signatures of soft debugger functions to pass void*
911         instead of siginfo_t. Adjust SIG_HANDLER_SIGNATURE on Windows.
912
913         * mini-amd64.c (mono_arch_is_single_step_event): Adjust signature to pass void*
914         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
915         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
916         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
917
918         * mini-amd64.h: Adjust MonoW32ExceptionHandler signature.
919
920         * mini-x86.c (mono_arch_is_single_step_event): Adjust signature to pass void*
921         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
922         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
923         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
924
925         * mini-x86.h: Adjust MonoW32ExceptionHandler signature.
926
927         * exceptions-x86.c: Adjust W32_SEH_HANDLE_EX for new signature.
928
929         * exceptions-amd64.c: Adjust W32_SEH_HANDLE_EX for new signature.
930
931         * mono-semaphore.h: Skeleton implementation for Windows.
932
933         Code contributed under MIT/X11 license.
934
935 2009-11-04 Jonathan Chambers <joncham@gmail.com>
936
937         * simd-intrinsics.c (simd_intrinsic_emit_setter): Unfix my fix.
938
939         Code contributed under MIT/X11 license.
940
941 2009-11-04 Jonathan Chambers <joncham@gmail.com>
942
943         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix windows build.
944
945         Code contributed under MIT/X11 license.
946
947 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
948
949         * aot-compiler.c (mono_save_xdebug_info): Bump the threshold for flushing
950         debug info to 100 because 10 still slows down gdb too much.
951
952         * method-to-ir.c (mono_method_to_ir): Avoid rethrowing thread abort exceptions
953         inside runtime invoke wrappers. This avoids the need to call ResetAbort () on
954         them in the wrappers.
955
956 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
957
958         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
959
960         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix a warning.
961
962         * aot-runtime.c (mono_aot_get_method): Refactor some code into a new helper
963         function mono_aot_get_array_helper_from_wrapper ().
964
965         * aot-compiler.c (add_generic_class): Refactor the code a bit, really emit
966         array helper methods.
967
968 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
969
970         * simd-intrinsics.c (load_simd_vreg): Add extra argument to signal if
971         the value was loaded from memory.
972
973         * simd-intrinsics.c (simd_intrinsic_emit_setter): Store back to memory if
974         the value was loader from there.
975
976         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Fail correctly for Shuffle
977         without constant swizzle.
978
979 2009-11-02 Jonathan Chambers <joncham@gmail.com>
980
981         * mini-amd64.c: Put soft debugger functions behind a
982         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
983
984         * mini-amd64.h: disable the soft debugger in windows.
985
986         Code contributed under MIT/X11 license.
987
988 2009-11-02 Jonathan Chambers <joncham@gmail.com>
989
990         * mini-x86.c: Put soft debugger functions behind a
991         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
992
993         Code contributed under MIT/X11 license.
994
995 2009-11-02 Jonathan Chambers <joncham@gmail.com>
996
997         * exceptions-x86.c (win32_handle_stack_overflow): Fix parameters
998         to mono_arch_find_jit_info_ext.
999
1000         Code contributed under MIT/X11 license.
1001
1002 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
1003
1004         * debugger-agent.c: Include netinet/in.h to fix the bsd build.
1005
1006         * debugger-agent.c: Add support for filtering events by assemblies.
1007
1008         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Return false if
1009         the agent is not enabled.
1010
1011 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
1012
1013         * exceptions-x86.c: hopefully last change to fix the windows build.
1014         This one courtesy of Jonathan Chambers.
1015
1016 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
1017
1018         * debugger-agent.c: remove unused function.
1019
1020 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
1021
1022         * debugger-agent.c: add #ifdefs for a few header files.
1023         * mini-x86.h: disable the soft debugger in windows.
1024         Step 1 of 2 to make this compile on windows with gcc.
1025
1026 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
1027
1028         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Comment this out for now
1029         as it breaks the build.
1030
1031 2009-07-01  Zoltan Varga  <vargaz@gmail.com>
1032
1033         Merge the soft debugger branch.
1034
1035         * debugger-agent.h debugger-agent.c: New files containing the soft
1036         mode debugger module.
1037
1038         * method-to-ir.c (mono_method_to_ir): Generate OP_SEQ_POINT opcodes
1039         at the appropriate locations.
1040
1041         * mini-<ARCH>.c (mono_arch_output_basic_block): Handle OP_SEQ_POINT
1042         opcode.
1043
1044         * mini-<ARCH>.c: Add new arch-specific functions to set/clear breakpoints,
1045         enable/disable single stepping.
1046
1047         * exceptions-<ARCH>.c (mono_arch_find_jit_info_ext): New stack unwinding api
1048         which returns all information in a StackFrameInfo structure, and can handle the
1049         LMF frames added by the debugger.
1050
1051         * mini-<ARCH>.h (MonoLMFExt): New structure containing additional information
1052         about an LMF frame.
1053
1054         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): New stack
1055         walker function which works on a specific thread and passes a StackFrameInfo
1056         structure to its callback.
1057
1058         * mini.c (mini_init): Initialize the debugger agent.
1059
1060         * aot-compiler.c aot-runtime.c: Add soft-debug support.
1061
1062         * mini-ops.h: Add OP_SEQ_POINT opcode.
1063
1064         * driver.c (mono_main): Add new '--debugger-agent' option for passing
1065         arguments to the debugger agent.
1066
1067 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
1068
1069         * mini.c (mini_method_compile): Disable llvm for methods with an lmf here to
1070         speed things up.
1071
1072         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOCALLOC.
1073
1074         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Implement this for x86.
1075
1076         * mini.c (mini_init): Avoid using the IMT trampoline in the LLVM case.
1077
1078         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add a static rgctx trampoline
1079         if needed.
1080         (mono_create_llvm_imt_trampoline): New function to create a trampoline which
1081         sets the IMT argument and makes a virtual call.
1082
1083         * mini-llvm.c: Enable interface calls using the llvm imt trampoline.
1084
1085 2009-11-01  Zoltan Varga  <vargaz@gmail.com>
1086
1087         * Makefile.am (llvm_sources): Enable the llvm option since it no longer breaks
1088         the windows build.
1089
1090 2009-10-30  Zoltan Varga  <vargaz@gmail.com>
1091
1092         * mini.c (mini_cleanup): Call profiler shutdown before shutting down the
1093         runtime. Fixes #551228.
1094
1095 2009-10-29  Zoltan Varga  <vargaz@gmail.com>
1096
1097         * mini-x86.c (mono_arch_output_basic_block): Fix % 1. Fixes #550970.
1098
1099         * basic.cs: Add a test.
1100
1101         * method-to-ir.c (mono_method_to_ir): Use EMIT_NEW_LOAD_MEMBASE_TYPE to
1102         load vtypes instead if OP_LOADV_MEMBASE in the implementation of
1103         CONSTRAINED. Fixes #550964.
1104
1105         * generics.cs: Add a test.
1106
1107 2009-10-28  Mark Probst  <mark.probst@gmail.com>
1108
1109         * mini-posix.c (add_signal_handler): Use
1110         mono_gc_get_suspend_signal() instead of GC_get_suspend_signal().
1111
1112 2009-10-28 Jerry Maine <crashfourit@gmail.com>
1113
1114         Contributed under the terms of the MIT/X11 license by
1115         Jerry Maine <crashfourit@gail.com>.
1116
1117         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
1118         sse4a for simd intrinsics.
1119
1120         * mini-amd64.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
1121         sse4a for simd intrinsics.
1122
1123 2009-10-27  Zoltan Varga  <vargaz@gmail.com>
1124
1125         * ir-emit.h method-to-ir.c: Change a few _IMM macros to assign to inst_imm
1126         instead of inst_p1 which is not the same on ILP32 platforms.
1127
1128 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
1129
1130         * mini-ppc.c (mono_arch_emit_prolog): Load the current got address,
1131         not the mscorlib one before calling mono_get_lmf_addr.
1132
1133         * tramp-ppc.c (mono_arch_create_trampoline_code_full): Fix the storing
1134         of the ip to the LMF.
1135
1136         * method-to-ir.c (mono_method_to_ir): Fix the handling of the
1137         immediate in the op->op_imm optimization.
1138
1139         * mini-ppc.c: Add a 'vtregs' field to ArgInfo to make the code easier to
1140         understand. VTypes now work, but are not abi compliant, as they are
1141         split into 4 byte parts instead of 8.
1142         (emit_memcpy): Fix the unrolled case to work on the PS3.
1143
1144         * mini-ppc.c (get_delegate_invoke_impl): Fix this for the PS3.
1145
1146         * aot-compiler.c (mono_compile_assembly): Make the autoreg option
1147         the default when static linking.
1148
1149         * mini-ppc.c (mono_arch_emit_prolog): Fix handling of I8 arguments.
1150
1151         * aot-compiler.c: Add an autoreg option to automatically register
1152         statically linked aot modules using ELF .ctors.
1153
1154         * genmdesc.pl: Add __ppc64__ to allowed defines.
1155
1156 2009-10-25  Zoltan Varga  <vargaz@gmail.com>
1157
1158         * mini-posix.c (add_signal_handler): Delay the GC suspend signal while
1159         executing a SIGSEGV handler on an altstack, since libgc can't handle that.
1160
1161 2009-10-24  Mark Probst  <mark.probst@gmail.com>
1162
1163         * exceptions-x86.c (mono_arch_find_jit_info): Fix build.
1164
1165 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
1166
1167         * mini-exceptions.c (mini_jit_info_table_find): Add an 'out_domain' argument
1168         which will contain the domain where the method was found.
1169
1170         * exceptions-<ARCH>.c mini-exceptions.c: Update callers of
1171         mini_jit_info_table_find ().
1172
1173         * aot-compiler.c (xdebug_end_emit): Remove so stray debug code.
1174
1175         * branch-opts.c (mono_if_conversion): Avoid running deadce if it is disabled.
1176
1177 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
1178
1179         * mini-x86.c (mono_arch_emit_prolog): Disable aot for methods with save_lmf
1180         set, its not supported yet.
1181
1182 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
1183
1184         * aot-runtime.c (mono_aot_get_method): Avoid asserting if a array generic
1185         iface wrapper is not found.
1186         (mono_aot_get_method): Ditto for GetGenericValueImpl.
1187
1188 2009-10-21  Zoltan Varga  <vargaz@gmail.com>
1189
1190         * aot-runtime.c (mono_aot_get_method): Fix support for the IList<T> wrappers,
1191         which have a different name.
1192
1193         * aot-runtime.c (mono_aot_get_method): Special case the array generic iface
1194         wrappers and Array.GetGenericValueImpl ().
1195
1196         * aot-compiler.c: Avoid emitting some wrappers which are not needed anymore
1197         because of the change above.
1198
1199         * generics.cs: Add a test for full aot + generic array ifaces.
1200
1201 2009-10-19  Sebastien Pouliot  <sebastien@ximian.com>
1202
1203         * aot-compiler.c (emit_plt): Remove duplicate 'debug_sym' variable 
1204         that hides the previous one.
1205
1206 2009-10-18  Zoltan Varga  <vargaz@gmail.com>
1207
1208         * aot-compiler.c (can_marshal_struct): Allow some System.dll structs to be
1209         marshalled. Fixes #541623.
1210
1211 2009-10-16  Zoltan Varga  <vargaz@gmail.com>
1212
1213         * aot-compiler.c (emit_extra_methods): Remove some asserts which are not needed.
1214
1215 2009-10-15  Zoltan Varga  <vargaz@gmail.com>
1216
1217         * mini.c (mono_op_imm_to_op): Handle OP_AND/OR/XOR_IMM.
1218
1219 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
1220
1221         * mini-posix.c (sigprof_signal_handler):
1222         Implemented support for building stat call chans in different ways.
1223
1224 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
1225
1226         * mini-exceptions.c (mono_find_jit_info):
1227         Also check that a jit info has been found (fixes a profiler crash).
1228
1229 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
1230
1231         * mini.c (mono_codegen):
1232         Call mono_profiler_code_buffer_new with correct code address.
1233
1234 2009-10-14  Zoltan Varga  <vargaz@gmail.com>
1235
1236         * driver.c (mono_main): Change the date in the copyright.
1237
1238 2009-10-14  Mark Probst  <mark.probst@gmail.com>
1239
1240         * method-to-ir.c (mono_method_to_ir): Don't use a managed array
1241         allocator in shared generic code for open classes, because we
1242         can't get those classes' vtables.  We need to make managed
1243         allocators not depend on the vtable at compile-time to solve this.
1244
1245 2009-10-13  Martin Baulig  <martin@ximian.com>
1246
1247         * debug-mini.c (mono_debugger_trampoline_compiled): Add
1248         `const guint8 *trampoline' argument; send both the old and the new
1249         notification.
1250
1251 2009-09-30  Zoltan Varga  <vargaz@gmail.com>
1252
1253         * aot-compiler.c (add_wrappers): Add a runtime invoke wrapper which is used by
1254         mono_runtime_capture_context () without calling mono_runtime_invoke ().
1255         (can_marshal_struct): Skip structures with auto layout.
1256
1257         * tramp-arm.c (GEN_TRAMP_SIZE): Increase this by 4.
1258
1259 2009-10-02  Zoltan Varga  <vargaz@gmail.com>
1260
1261         * mini-sparc.c (mono_arch_emit_setret): Emit long return values using OP_LMOVE.
1262         (mono_arch_create_vars): Instead of allocating a stack slot by hand, allocate
1263         a variable to hold the stack slot used by the int<->float conversion opcodes.
1264
1265         * mini-sparc.c (mono_arch_build_imt_thunk): Implement support for fail_tramp.
1266
1267 2009-10-04  Zoltan Varga  <vargaz@gmail.com>
1268
1269         * aot-compiler.c (add_generic_class): Only add GetGenericValueImpl wrappers
1270         when using full-aot.
1271
1272 2009-10-06  Zoltan Varga  <vargaz@gmail.com>
1273
1274         * aot-compiler.c (add_generic_class): Add an instance of GenericComparer<T> for
1275         each instance of Comparer<T>.
1276
1277         * generics.cs: Add a new test.
1278
1279 2009-10-09  Zoltan Varga  <vargaz@gmail.com>
1280
1281         * driver.c (parse_debug_options): Add a 'gdb' option.
1282
1283         * mini.c (mini_parse_debug_options): Add a 'gdb' option.
1284
1285         * image-writer.c: Add support for emitting the image into a memory buffer.
1286
1287         * dwarfwriter.c: Add support for sharing one IL file between multiple images.
1288
1289         * aot-compiler.c: Add support for registering debug info with GDB using the
1290         new JIT debugging interface in GDB 7.0. It can be turned on by setting
1291         MONO_XDEBUG to 'gdb'.
1292
1293 2009-10-10  Zoltan Varga  <vargaz@gmail.com>
1294
1295         * aot-compiler.c (mono_save_trampoline_xdebug_info): Implement this for the
1296         gdb mode.
1297
1298 2009-10-11  Zoltan Varga  <vargaz@gmail.com>
1299
1300         * aot-compiler.c (mono_save_xdebug_info): Emit a symbol for the method which
1301         can be used to set breakpoints in gdb.
1302
1303         * image-writer.c (bin_writer_emit_writeout): Add support for setting the text
1304         segment to an absolute address.
1305
1306 2009-10-13  Mark Probst  <mark.probst@gmail.com>
1307
1308         * method-to-ir.c: Use the managed array allocator method if
1309         available.
1310
1311 2009-10-13  Bill Holmes  <billholmes54@gmail.com>
1312
1313         * aot-compiler.c : Fix the MSVC builds
1314
1315         Code is contributed under MIT/X11 license.
1316
1317 2009-10-13  Zoltan Varga  <vargaz@gmail.com>
1318
1319         * aot-compiler.c (mono_save_xdebug_info): Group methods into groups of 10 to
1320         avoid registering 1 symbol file per method with gdb.
1321
1322 2009-09-29  Zoltan Varga  <vargaz@gmail.com>
1323
1324         * mini-sparc.c: Fix the handling of enums with base type long.
1325
1326         * mini-sparc.c (mono_arch_output_basic_block): Fix IREM_UN_IMM.
1327
1328         * mini-sparc.c (mono_arch_allocate_vars): Use mono_class_from_mono_type ()
1329         instead of using type->data.klass as the later doesn't work with generics.
1330
1331 2009-09-25  Mark Probst  <mark.probst@gmail.com>
1332
1333         * method-to-ir.c, mini.h, mini-alpha.c, mini-amd64.c, mini-arm.c,
1334         mini-hppa.c, mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c,
1335         mini-s390x.c, mini-sparc.c, mini-x86.c: Thread.get_CurrentThread
1336         works differently now and we don't handle it in the JIT anymore.
1337
1338         * mini.c, mini-exceptions.c, mini-posix.c, debug-debugger.c,
1339         debug-mini.c, tramp-amd64.c, tramp-x86.c: Changes resulting from
1340         the Thread class split.
1341
1342 2009-09-25  Zoltan Varga  <vargaz@gmail.com>
1343
1344         * driver.c: Don't run tests with the obsolete treeprop optimization.
1345
1346         * mini-sparc.c (mono_arch_create_vars): Make the component vars of a long ret
1347         variable volatile. Fixes #541577.
1348
1349         * basic-calls.cs: Add a new test.
1350
1351         * basic-long.cs: Remove tests which are now in basic-calls.cs.
1352
1353 2009-09-24  Zoltan Varga  <vargaz@gmail.com>
1354
1355         * dwarfwriter.c (emit_debug_info_end): Disable this as it doesn't seem to
1356         work/required with recent iphone sdk versions.
1357
1358         * aot-compiler.c (add_wrappers): Generate PtrToStructure wrappers for more
1359         structures.
1360
1361         * decompose.c (mono_decompose_vtype_opts): Avoid reading uninitialized memory
1362         in the VCALL decomposition code.
1363
1364 2009-09-22  Zoltan Varga  <vargaz@gmail.com>
1365
1366         * mini-ia64.c (mono_arch_output_basic_block): Fix ISHR/ISHR_IMM.
1367
1368         * basic.cs: Add a test.
1369
1370         * mini-ia64.c (mono_arch_build_imt_thunk): Implement support the virtual
1371         generic invokes.
1372
1373         * mini-exceptions.c (mini_jit_info_table_find): New helper function which
1374         searches all the domains of the current thread.
1375
1376         * exceptions-<ARCH>.c: Use it. Fixes #539394.
1377
1378 2009-09-21  Zoltan Varga  <vargaz@gmail.com>
1379
1380         * exceptions-arm.c (mono_arm_throw_exception): Set ctx->ebp to fp instead of sp
1381         so catching exceptions thrown in the same method works. Fixes exception17.exe.
1382
1383         * tramp-arm.c (mono_arch_create_trampoline_code_full): Store NULL into lmf->method
1384         for non-jit trampolines.
1385
1386         * mini.c (mono_jit_runtime_invoke): Allow string ctors with dyn runtime invoke.
1387
1388         * aot-compiler.c (add_wrappers): Ditto.
1389
1390         * mini-arm.c: Implement support for passing vtypes and floats, and increase
1391         the size of the param area used by dyn_call to 6 which covers the majority of
1392         methods.
1393
1394         * mini.c aot-compiler.c: Allow dyn_call for string methods except ctors.
1395
1396         * mini-arm.c: Implement support for passing/receiving
1397         longs and receiving floats in the dyn_call code.
1398
1399         * mini-amd64.c: Implement support for receiving vtypes in registers in
1400         the dyn_call code.
1401
1402         * mini.c mini-amd64.c: Implement partial support for passing vtypes in
1403         the dyn_call code.
1404
1405 2009-09-20  Zoltan Varga  <vargaz@gmail.com>
1406
1407         * mini-arm.c (get_call_info): Return more precise information in
1408         ArgInfo->regtype.
1409         (dyn_call_supported): Use the information in CallInfo.
1410
1411         * mini-arm.c: Enable support for returning vtypes in the dyn_call code.
1412
1413         * mini.c mini-amd64.c: Enable support for returning vtypes in the dyn_call
1414         code.
1415
1416         * mini-arm.c: Update after the dyn_call api changes.
1417
1418         * mini.c (mini_create_jit_domain_info): Register a destructor function
1419         for the runtime_invoke_hash.
1420
1421         * mini-amd64.c (mono_arch_get_dyn_call_args): Rename this to
1422         'mono_arch_dyn_call_start'. Pass the pointer to the return value buffer to
1423         this function.
1424         (mono_arch_get_dyn_call_ret): Rename this to 'mono_arch_dyn_call_finish'.
1425         (dyn_call_supported): Simplify this by using get_call_info ().
1426         (mono_arch_dyn_call_free): New destructor function.
1427
1428         * generics.cs: Remove a printf.
1429
1430         * method-to-ir.c (mono_method_to_ir): Allocate some param area for DYN_CALL.
1431
1432         * mini-arm.c: Add support for enum return values and passing a few arguments
1433         on the stack.
1434         
1435         * mini.c (mono_jit_runtime_invoke): Add support for enum return values to
1436         dyn invoke.
1437
1438         * mini-amd64.c (mono_arch_get_dyn_call_ret): Ditto.
1439
1440         * aot-compiler.c (add_wrappers): Add a few restrictions for the use of
1441         the dynamic invoke wrappers.
1442
1443         * mini-arm.c: Implement OP_DYN_CALL for arm.
1444
1445         * aot-compiler.c (add_wrappers): Avoid aot-ing runtime invoke wrappers
1446         supported by the dynamic runtime invoke wrapper.
1447
1448         * aot-compiler.c aot-runtime.c: Add support for encoding the dynamic
1449         runtime invoke wrapper.
1450
1451         * mini.c (mono_jit_runtime_invoke): Use the dynamic runtime invoke wrappers
1452         if possible when running with full-aot.
1453
1454         * mini-ops.h: Add OP_DYN_CALL opcode.
1455
1456         * mini-amd64.c method-to-ir.c: Add infrastructure for making method calls
1457         with dynamic arguments lists similar to libffi.
1458
1459 2009-09-19  Zoltan Varga  <vargaz@gmail.com>
1460
1461         * method-to-ir.c: Fix the previous change on 64 bit platforms.
1462         
1463         * method-to-ir.c: Applied patch from Rodrigo Kumpera. Allow an i8 argument
1464         to NEWARR.
1465
1466         * iltests.il.in: Add a new test.
1467         
1468 2009-09-18  Zoltan Varga  <vargaz@gmail.com>
1469
1470         * aot-compiler.c (add_generic_instances): Add more instances of
1471         GenericEqualityComparer.
1472
1473 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
1474
1475         * mini.c: Add asserts for mono_class_vtable calls that are not meant to fail.
1476
1477 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
1478
1479         * method-to-ir.c: Handle failures from mono_class_vtable. Added some
1480         comments on some functions that now can fail.
1481
1482 2009-09-17  Andrew Jorgensen  <ajorgensen@novell.com>
1483
1484         * Makefile.am: Add Info.plist to EXTRA_DIST
1485
1486 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
1487
1488         * method-to-ir.c (mono_method_to_ir): Allow AOT for CEE_LDTOKEN in
1489         static synchronized wrappers. Fixes #539500.
1490
1491 2009-09-14  Rodrigo Kumpera  <rkumpera@novell.com>
1492
1493         * jit-icalls.c (mono_class_static_field_address): handle vtable failure
1494         properly.
1495
1496 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
1497
1498         * mini-exceptions.c (mono_handle_exception_internal): Store the computed
1499         lmf before calling filter clauses as well. Fixes #539550.
1500
1501         * exceptions.cs: Add a test.
1502         
1503 2009-09-14  Zoltan Varga  <vargaz@gmail.com>
1504
1505         * aot-compiler.c (add_generic_class): Add instances of
1506         Array.GetGenericValueImpl as well.
1507
1508         * Makefile.am (fullaotcheck): Copy and aot more assemblies so linq
1509         can be tested too.
1510
1511         * generics.cs: Add a fullaot linq test.
1512
1513 2009-09-10  Zoltan Varga  <vargaz@gmail.com>
1514
1515         * aot-compiler.c (arch_emit_static_rgctx_trampoline): Don't clobber argument
1516         reg r1 on arm.
1517
1518 2009-09-10  Bill Holmes  <billholmes54@gmail.com>
1519
1520         * mini-trampolines.c (mono_delegate_trampoline) : Call
1521           mono_cominterop_get_invoke if the delegate target object
1522           is a COM object.
1523
1524         Code is contributed under MIT/X11 license.
1525
1526 2009-09-09  Sebastien Pouliot  <sebastien@ximian.com>
1527
1528         * method-to-ir.c: For CoreCLR throw a SecurityException if an 
1529         internal call is defined outside platform code. Reduce code 
1530         duplication with existing [Method|Field]AccessException
1531
1532 2009-09-08  Rodrigo Kumpera  <rkumpera@novell.com>
1533
1534         * mini-x86.c (mono_arch_emit_call): Don't reduce stack usage by 4
1535         if the return value is a small struct passed on regs.
1536
1537 2009-09-09  Zoltan Varga  <vargaz@gmail.com>
1538
1539         * cpu-arm.md mini-arm.c: Remove unused opcodes.
1540
1541         * mini-codegen.c: Enable the cpu description validation for arm.
1542
1543 2009-09-08  Zoltan Varga  <vargaz@gmail.com>
1544
1545         * basic-calls.cs: Move the test_0_float_load_and_store_with_big_offset ()
1546         test which depends on structs to objects.cs.
1547         
1548         * basic-calls.cs: Remove calls to Console.WriteLine and throws, since those
1549         require object model related stuff working.
1550
1551         * cpu-x86.md mini-x86.c: Remove more unused opcodes.
1552
1553         * mini-ops.h: Fix OP_BIGMUL instruction descriptions.
1554
1555         * mini-codegen.c (mono_local_regalloc): Validate the cpu description 
1556         against the instruction metadata in mini-ops.h. amd64 only for now.
1557
1558         * mini-ops.h: Fix some instruction descriptions.
1559
1560         * mini-ops.h mini-x86.c mini-amd64.c cpu-<ARCH>.md: Remove some
1561         unused instructions.
1562
1563 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
1564
1565         * exceptions.cs: Add a new test.
1566
1567 2009-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
1568
1569         * mini-x86.c (needs_stack_frame): OSX requires full frames to keep proper alignment.
1570
1571 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
1572
1573         * mini-llvm.c (mono_llvm_emit_method): Add a few more missing casts,
1574         skip empty phi opcodes.
1575         
1576         * mini-llvm.c (mono_llvm_emit_method): Handle unsigned volatile variables
1577         correctly by zero extending after loads. Skip methods containing calls
1578         to the monitor enter/exit trampolines.
1579
1580         * tramp-x86.c (mono_arch_create_trampoline_code): Align the stack
1581         when calling mono_thread_force_interruption_checkpoint ().
1582
1583         * mini.c (mini_method_compile): Disable llvm when AOT compiling.
1584
1585         * tramp-amd64.c (mono_arch_patch_callsite): Add support for 32 bit ->
1586         64 bit thunks.
1587         (mono_arch_nullify_class_init_trampoline): Read 'buf' instead of 'code'.
1588
1589         * mini-llvm.c (mono_llvm_emit_method): Add a few missing conversions so a 
1590         bootstrap could run.
1591
1592 2009-09-04  Zoltan Varga  <vargaz@gmail.com>
1593
1594         * mini.c (mini_init): Set callbacks.get_runtime_build_info ().
1595
1596 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
1597
1598         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass the start
1599         of the method to
1600         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
1601         LLVM might be very short.
1602
1603         * mini-x86.c (mono_arch_output_basic_block): Maintain stack alignment
1604         in OP_THROW/RETHROW.
1605
1606         * exceptions-x86.c: Rewrite the throw trampolines so they maintain stack
1607         alignment on osx.
1608
1609 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
1610
1611         * mini-amd64.c (mono_arch_get_vcall_slot): Pass the start of the method to
1612         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
1613         LLVM might be very short.
1614
1615 2009-09-01  Zoltan Varga  <vargaz@gmail.com>
1616
1617         * exceptions-x86.c (throw_exception): Fix the previous change by substracting
1618         the alignment for the value of sp.
1619
1620 2009-09-01  Geoff Norton  <gnorton@novell.com>
1621
1622         * mini.c (mono_get_lmf_addr): Fix jit_thread_attach for native to 
1623         managed wrappers in full aot.
1624
1625 2009-08-31  Zoltan Varga  <vargaz@gmail.com>
1626
1627         * exceptions-x86.c (get_throw_exception): Align the stack on osx.
1628
1629 2009-08-28  Zoltan Varga  <vargaz@gmail.com>
1630
1631         * mini-llvm-cpp.cpp mini-llvm.c: Update to latest llvm api.
1632
1633 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
1634
1635         * aot-compiler.c (emit_exception_debug_info): Emit ei->flags too.
1636
1637         * aot-runtime.c (decode_exception_debug_info): Decode ei->flags from the
1638         saved info.
1639
1640         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
1641
1642         * aot-runtime.c aot-compiler.c: Emit exception causes fully so we don't
1643         depend on the info MonoMethodHeader which could be missing in IL stripped
1644         assemblies.
1645
1646 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
1647
1648         * mini-arm.c (add_general): Fix the passing of 64 bit values on darwin, where
1649         they are only 4 byte aligned.
1650
1651 2009-08-21  Zoltan Varga  <vargaz@gmail.com>
1652
1653         * mini-arm.c (mono_arch_allocate_vars): Use FP as the frame pointer as
1654         was done previously, since using SP causes too many problems.
1655
1656         * exceptions-arm.c: Fix the handling of sp/fp so unwinding through
1657         frames without a frame pointer works.
1658
1659         * mini-arm.c (mono_arch_get_global_int_regs): Avoid using V5 as a
1660         global register in methods with calls, since the calls can go through
1661         a static rgctx trampoline which doesn't save it.
1662
1663 2009-08-19  Zoltan Varga  <vargaz@gmail.com>
1664
1665         * mini-arm.c (mono_arch_context_get_int_reg): Handle SP as well.
1666
1667 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
1668
1669         * aot-compiler.c (add_generic_instances): Fix the net 1.1 build.
1670
1671 2009-08-18  Christian Hergert  <chris@dronelabs.com>
1672
1673         * method-to-ir.c: Fix warnings for uninitialized variables.
1674
1675 2009-08-18  Christian Hergert  <chris@dronelabs.com>
1676
1677         * mini-exceptions.c:
1678         * aot-compiler.c: Fix printf warnings.
1679
1680 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
1681
1682         * aot-compiler.c (add_generic_instances): Add string[] wrapper methods.
1683         Add GetGenericValueImpl<string>.
1684         
1685         * aot-compiler.c (add_generic_instances): Add instances of
1686         GenericEqualityComparer<T> for primitive types. Only emit the array
1687         wrappers into the mscorlib image.
1688
1689 2009-08-15  Zoltan Varga  <vargaz@gmail.com>
1690
1691         * aot-runtime.c (load_method): Rename 'aot_module' -> 'amodule'. Allocate
1692         the methods_loaded array using amodule->info->nmethods.
1693
1694         * mini.h (MonoAotFileInfo): Add an 'nmethods' field.
1695         (MONO_AOT_FILE_VERSION): Bump this.
1696
1697         * aot-compiler.c: Emit more generic instances allowing some parts of linq
1698         to work.
1699
1700         * aot-runtime.c (mono_aot_get_unwind_info): Handle the case when the
1701         MonoJitInfo doesn't belong to its methods aot image.
1702
1703 2009-08-14  Zoltan Varga  <vargaz@gmail.com>
1704
1705         * mini-arm.c (mono_arch_allocate_vars): Use SP as the default frame reg.
1706
1707         * mini-arm.c: Fix warnings.
1708         
1709         * mini-arm.c (mono_arm_emit_load_imm): Only emit a movt if needed.
1710
1711         * mini-arm.c (mono_arm_emit_load_imm): Use movt/movw if the cpu
1712         supports it.
1713
1714 2009-08-12  Zoltan Varga  <vargaz@gmail.com>
1715
1716         * aot-compiler.c (arch_emit_imt_thunk): Rework the arm code to
1717         avoid clobbering IP.
1718
1719         * mini-trampolines.c (mono_magic_trampoline): Allocate a local to
1720         hold the trampoline argument, so its initial value is available during
1721         debugging.
1722
1723 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
1724
1725         * exceptions-arm.c:
1726         * exceptions-hppa.c:
1727         * mini.c:
1728         * exceptions-s390x.c:
1729         * exceptions-mips.c:
1730         * exceptions-ppc.c:
1731         * exceptions-sparc.c:
1732         * exceptions-alpha.c:
1733         * aot-runtime.c:
1734         * mini-trampolines.c:
1735         * exceptions-x86.c:
1736         * exceptions-s390.c: add and use #define's instead of sizeof()
1737         for MonoJitInfo and MonoJitInfoTable.
1738
1739 2009-08-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
1740
1741         * tramp-arm.c:
1742         * tramp-amd64.c:
1743         * tramp-ppc.c:
1744         * tramp-x86.c: use a #define instead of sizeof() for a few
1745         structures that use a zero-length array.
1746
1747 2009-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
1748
1749         * method-to-ir.c (mono_method_to_ir/CEE_CONSTRAINED_): Handle the
1750         case when the method is dynamic. Fixes #529238.
1751
1752 2009-08-06  Zoltan Varga  <vargaz@gmail.com>
1753
1754         * mini.c (mono_jit_compile_method_inner): Throw an exception instead
1755         of asserting when a method is JIT compiled in full-aot mode.
1756
1757 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
1758         
1759         Contributed under the terms of the MIT/X11 license by
1760         Jerry Maine <crashfourit@gail.com>.
1761         
1762         * fixed wrong dates in changelog.
1763
1764 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
1765         
1766         Contributed under the terms of the MIT/X11 license by
1767         Jerry Maine <crashfourit@gail.com>.
1768
1769         * basic-simd.cs: added test for packed double square root.
1770         * cpu-amd64.md: added opcode info for packed double square root.
1771         * cpu-x86.md: added opcode info for packed double square root.
1772         * mini-ops.h: added IR opcode for packed double square root.
1773         * mini-x86.c: added IR to native translation code for packed double square root.
1774         * mini-amd64.c: removed todo for packed double square root.
1775         * simd-intrinsics.c: added method to IR opcode converstion for
1776         packed double square root.
1777
1778 2009-08-03 Jerry Maine <crashfourit@gmail.com>
1779
1780         Contributed under the terms of the MIT/X11 license by
1781         Jerry Maine <crashfourit@gail.com>.
1782
1783         * mini-amd64.c: Added a change to help tell the difference as 
1784         to what perpose the xmm register is being used--mainly to help
1785         with debuging.
1786         * mini-amd64.h: Changed callee regs to use 15 out of 16 
1787         (one used for special cases) xmm registers for both fp
1788         and simd ops. Added define to turn on new feature in the regalloc
1789         that allows fp and simd ops to share the xmm regs happily.
1790         * codegen.c: Added code to detect for which perpose an xmm reg is
1791         being used (fp or simd) and to translate back and forth to the
1792         correct logical reg bank (fp or simd) for 'spill load's.
1793
1794 2009-08-03 Jerry Maine <crashfourit@gmail.com>
1795
1796         Contributed under the terms of the MIT/X11 license by
1797         Jerry Maine <crashfourit@gail.com>.
1798
1799         * basic-simd.cs: Added tests for stressing the regalloc when running with
1800         16 simd regs and when simd and fp ops share the same reg bank.
1801
1802 2009-08-01  Mark Probst  <mark.probst@gmail.com>
1803
1804         * method-to-ir.c (mini_emit_stobj): If we call mono_value_copy()
1805         in shared generic code, we might have to look up the class in the
1806         RGCTX.  If we use the class directly, compute its GC descriptor.
1807
1808 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
1809
1810         * mini.c (mono_jit_runtime_invoke): Fix a warning.
1811
1812 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
1813
1814         * mini.c (mono_jit_runtime_invoke): Initialize the class and
1815         check for errors. Fixed the case when the class with the Main
1816         method is broken.
1817
1818 2009-07-31 Jerry Maine <crashfourit@gmail.com>
1819
1820         Contributed under the terms of the MIT/X11 license by
1821         Jerry Maine <crashfourit@gail.com>.
1822
1823         * cpu-amd64.md: Fixed simple bug in machine discrition file.
1824
1825 2009-07-31  Zoltan Varga  <vargaz@gmail.com>
1826
1827         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_IREM_UN_IMM.
1828
1829 2009-08-30  Rodrigo Kumpera  <rkumpera@novell.com>
1830
1831         * method-to-ir.c: Fix naming of stelem and ldelem.
1832
1833 2009-07-30  Zoltan Varga  <vargaz@gmail.com>
1834
1835         * driver.c (main_thread_handler): Check that the assembly loaded
1836         matches the filename when doing AOT.
1837
1838 2009-07-30  Mark Probst  <mark.probst@gmail.com>
1839
1840         * mini.c: get_ip_from_sigctx installer has been removed, so don't
1841         call it anymore.
1842
1843         * mini-x86.h, mini-amd64.h, mini-ppc.h: UCONTEXT macros moved (to
1844         utils/mono-sigcontext.h).
1845
1846         * exceptions-amd64.c: Use the UCONTEXT_GREGS macro instead of an
1847         #ifdef.
1848
1849 2009-07-29  Massimiliano Mantione  <massi@ximian.com>
1850
1851         * mini.c (mono_codegen):
1852         Call profiler hook to keep track of method code buffers.
1853
1854 2009-07-27  Mark Probst  <mark.probst@gmail.com>
1855
1856         * method-to-ir.c: Invoke write barriers for the
1857         Interlocked.(Compare)Exchange JIT intrinsics.
1858
1859 2009-07-26  Raja R Harinath  <harinath@hurrynot.org>
1860
1861         * Makefile.am (version.h): Fix issues when built out of tree.
1862         Remove some redundant 'grep's piped through 'sed's.
1863
1864 Fri Jul 24 17:28:37 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
1865
1866         This patch is contributed under the terms of the MIT/X11 license
1867
1868         * mini-ppc.c (mono_arch_output_basic_block):
1869         (OP_STOREI1_MEMBASE_REG): Handle 32-bit offsets combining addis
1870         for bits 32-47 with signed load/store diplacements for bits
1871         48-63.  Use prefered base/offset order for indexed form.
1872         (OP_STOREI2_MEMBASE_REG, OP_STORE_MEMBASE_REG): Same.
1873         (OP_LOAD_MEMBASE, OP_LOADI4_MEMBASE, OP_LOADU4_MEMBASE,
1874         OP_LOADI1_MEMBASE, OP_LOADU1_MEMBASE, OP_LOADU2_MEMBASE,
1875         OP_LOADI2_MEMBASE): Same.
1876         (OP_STORER8_MEMBASE_REG, OP_LOADR8_MEMBASE,
1877         OP_STORER4_MEMBASE_REG, OP_LOADR4_MEMBASE): Same.
1878         (OP_STOREI1_MEMINDEX): Use prefered base/offset order for
1879         indexed form.
1880         (OP_STOREI2_MEMINDEX, OP_STORE_MEMINDEX): Same.
1881         (OP_LOAD_MEMINDEX, OP_LOADI4_MEMINDEX, OP_LOADU4_MEMINDEX,
1882         OP_LOADU2_MEMINDEX, OP_LOADI2_MEMINDEX, OP_LOADU1_MEMINDEX,
1883         OP_LOADI1_MEMINDEX): Same
1884         (OP_LOADR4_MEMINDEX, OP_LOADR8_MEMINDEX, OP_STORER4_MEMINDEX,
1885         OP_STORER8_MEMINDEX): Same
1886         (OP_JMP): Use addis/addi sequence for int cfg->stack_usage
1887         computations.
1888         (mono_arch_emit_prolog): Handle 32-bit offsets combining addis
1889         for bits 32-47 with signed load/store diplacements for bits
1890         48-63.  Use prefered base/offset order for indexed form.
1891
1892 Fri Jul 24 16:57:12 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
1893
1894 This patch is contributed under the terms of the MIT/X11 license
1895
1896         * mini-ppc.c: Define PPC_MOVE_FPR_GPR and PPC_ISA_64.
1897         (mono_arch_get_vcall_slot): Fx pointer to int cast warning.
1898         (mono_arch_decompose_opts): Make OP_ICONV_TO_R4 and
1899         OP_ICONV_TO_R8 decompose conditional on !PPC_ISA_64.
1900         (mono_arch_output_basic_block) [OP_JMP]: Use ppc_load32 for
1901         cfg->stack_usage to avoid size warnings.
1902         (mono_arch_output_basic_block) [__mono_ppc64__]: Replace
1903         store/load sequence with mffgpr if PPC_MOVE_FPR_GPR is true.
1904         (mono_arch_output_basic_block) [!__mono_ppc64__]: For
1905         OP_ICONV_TO_R4 or OP_ICONV_TO_R8 and PPC_ISA_64 use fcfid
1906         to convert.
1907         (mono_arch_emit_prolog): Move mono_emit_unwind_op_def_cfa 
1908         after code varible is initialized.
1909         Add g_assert ppc_is_imm16 for ainfo->offset. Handle
1910         ainfo->size == 8 when ainfo->offset !ppc_is_imm16.
1911         (mono_arch_emit_epilog): 
1912         Move Use ppc_load32 for cfg->stack_usage to avoid size
1913         warnings.
1914
1915 2009-07-24  Mark Probst  <mark.probst@gmail.com>
1916
1917         * method-to-ir.c: The write barrier doesn't do the store anymore,
1918         so we have always to emit it.  Also, emit the wbarrier after the
1919         store.
1920
1921 2009-07-24  Zoltan Varga  <vargaz@gmail.com>
1922
1923         * mini-arm.c (mono_arch_get_delegate_invoke_impls): Add a trampoline
1924         for argument count 3 too.
1925
1926 2009-07-23  Zoltan Varga  <vargaz@gmail.com>
1927
1928         * mini.c (mono_jit_compile_method_with_opt): Add an 'ex' argument to let
1929         the caller handle the exceptions.
1930         (mono_jit_runtime_invoke): Handle exceptions thrown while compiling the
1931         method. Fixes #524498.
1932
1933 2009-07-22  Geoff Norton  <gnorton@novell.com>
1934
1935         * mini-exceptions.c: Fix build on ia64.
1936
1937 2009-07-22  Mark Probst  <mark.probst@gmail.com>
1938
1939         * mini-exceptions.c (ves_icall_get_frame_info): Use write
1940         barriers.
1941
1942 2009-07-21  Zoltan Varga  <vargaz@gmail.com>
1943
1944         * mini-arm.c (mono_arch_emit_prolog): Fix thread attaching in aot
1945         code.
1946
1947 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
1948
1949         * basic-simd.cs (Main): Pass args to the test driver.
1950
1951 2009-07-20  Geoff Norton  <gnorton@novell.com>
1952
1953         * mini-x86.h: Fix the x86 version guards to use Apple's
1954         properly defined macros.
1955
1956 2009-07-20  Geoff Norton  <gnorton@novell.com>
1957
1958         * mini-x86.c: Fix --trace on darwin-x86 and other systems which require
1959         aligned access.
1960
1961 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
1962
1963         * mini.c (mono_jit_runtime_invoke): Speed this up by adding a hash to
1964         MonoJitDomainInfo which maps MonoMethod's to a structure containing all
1965         the information which is needed for invokes, so only one locking+hash table
1966         lookup is needed.
1967
1968         * aot-compiler.c: Add a 'tool-prefix' option to be used when cross-compiling.
1969         
1970         * aot-compiler.c (add_generic_instances): Emit instances of 
1971         GenericComparer<T> for primitive types.
1972
1973 2009-07-19 Rodrigo Kumpera  <rkumpera@novell.com>
1974
1975         * mini-posix.c: Fix linux build.
1976
1977 2009-07-19  Geoff Norton  <gnorton@novell.com>
1978
1979         * mini.h: Add prototypes for mono_runtime_syscall_fork and
1980         mono_gdb_render_native_backtraces
1981         * mini-darwin.c: Apple's syscall(SYS_fork) is very weird on x86,
1982         so we implement the sane semantics to the runtime here
1983         (mono_gdb_render_native_backtraces).  Apple also uses an ancient gdb
1984         so we need to call it differently (mono_gdb_render_native_backtraces)
1985         * mini-posix.c: Move the old semantics from mini.c to the prototypes
1986         here for default implementations.
1987         * mini.c: Refactor mono_handle_native_sigsegv so that we can properly
1988         support Apple's weird syscall (SYS_fork) implementation and not busy
1989         loop in abort() on native crashes on OSX anymore.
1990
1991 2009-07-18  Zoltan Varga  <vargaz@gmail.com>
1992
1993         * aot-runtime.c (load_method): Change the handling of the
1994         MONO_LASTAOT env variable so MONO_LASTAOT=0 means that no aot methods
1995         are used.
1996
1997         * mini.c (mono_patch_info_equal): Really fix the handling of RGCTX_FETCH.
1998
1999 2009-07-17  Zoltan Varga  <vargaz@gmail.com>
2000
2001         * mini.c (mono_patch_info_equal): Revert the last change for now as it
2002         seems to break the aot tests.
2003         
2004         * mini.c (mono_patch_info_equal): Fix the handling of 
2005         MONO_PATCH_INFO_RGCTX_FETCH.
2006
2007 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
2008
2009         * unwind.c: Use TARGET_AMD64 instead of __x86_64__.
2010
2011         * mini.c (mono_patch_info_hash): Fix the handling of 
2012         MONO_PATCH_INFO_INTERNAL_METHOD.
2013         (mono_patch_info_equal): Ditto.
2014
2015 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
2016
2017         * mini-llvm.c (mono_llvm_emit_method): Use module instead of ctx->module
2018         in a few places.
2019         
2020         * mini-llvm.c: Add some infrastructure for AOT support.
2021
2022 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
2023
2024         * mini-llvm-cpp.c: Update to the latest llvm api.
2025         
2026         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Set the EnablePrettyStackTrace
2027         option to false to prevent llvm from installing signal handlers which
2028         trip up the gc.
2029         
2030 2009-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
2031
2032         * cpu-x86.md:
2033         * cpu-amd64.md: Revert previous change as those instructions
2034         take 2 separate arguments. Remember to read the arch docs more
2035         carefully next time.
2036
2037 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
2038
2039         * mini-llvm-cpp.cpp (mono_llvm_build_alloca): Update to latest llvm api.
2040
2041 Wed Jul 15 17:20:27 CEST 2009 Paolo Molaro <lupus@ximian.com>
2042
2043         * mini-ppc.c: exploit multiple load/store units if available (rest of
2044         the change from Steven Munroe (<munroesj@us.ibm.com>) first patch at 
2045         http://bugzilla.novell.com/show_bug.cgi?id=487846).
2046
2047 Wed Jul 15 16:24:57 CEST 2009 Paolo Molaro <lupus@ximian.com>
2048
2049         * mini-ppc.c: integrate most of Steven Munroe (<munroesj@us.ibm.com>)
2050         first patch at http://bugzilla.novell.com/show_bug.cgi?id=487846.
2051
2052 2009-07-14 Rodrigo Kumpera  <rkumpera@novell.com>
2053
2054         * cpu-x86.md: Fix missing clobbering from trancendental simd
2055         ops.
2056
2057         * cpu-amd64.md: Same.
2058
2059 2009-07-14 Jerry Maine <crashfourit@gmail.com>
2060
2061         Contributed under the terms of the MIT/X11 license by
2062         Jerry Maine <crashfourit@gail.com>.
2063
2064         * basic-simd.cs: Added tests for single and doulble indexers.
2065
2066         * cpu-amd64.md: Added simd opcode information.
2067
2068         * mini-amd64.c: Added IR to native simd generation code.
2069         Added simd register names and function that returns them.
2070
2071         * mini-amd64.h: Added marcos to turn on simd code compilation in
2072         amd64. Added max simd register count marco. Added caller/callee
2073         register mask marcos. Added marcos to use simd register bank.
2074
2075         * mini.h: Added helper marco for shufling dwords and simple
2076         floats.
2077
2078 2009-07-14  Zoltan Varga  <vargaz@gmail.com>
2079
2080         * mini-llvm-cpp.cpp: Update to latest llvm SVN api.
2081
2082         * Makefile.am (mono_LDADD): Pass LLVM_LDFLAGS to the linked.
2083
2084         * unwind.c (mono_unwind_get_ops_from_fde): Make this return
2085         the length of the native code as well.
2086
2087         * basic-simd.cs: Add a test for #521662.
2088
2089 Mon Jul 13 17:58:50 CEST 2009 Paolo Molaro <lupus@ximian.com>
2090
2091         * mini-ppc.c: fixed bug introduced by Steven's TLS changes.
2092
2093 2009-07-13  Mark Probst  <mark.probst@gmail.com>
2094
2095         * mini.c: Register function for getting the IP from a signal
2096         context with metadata.
2097
2098 2009-07-13  Zoltan Varga  <vargaz@gmail.com>
2099
2100         * method-to-ir.c (mono_method_to_ir): When calling a gshared method,
2101         call a generic class init trampoline if needed. Fixes #519336.
2102
2103         * generics.cs: Add a test.
2104         
2105 2009-07-09  Mark Probst  <mark.probst@gmail.com>
2106
2107         * method-to-ir.c: When doing a call which might be remote from
2108         shared generic code to other shared code with open type arguments,
2109         get the remoting invoke wrapper from the RGCTX and do an indirect
2110         call to it.
2111
2112 2009-07-03  Zoltan Varga  <vargaz@gmail.com>
2113
2114         * mini-trampolines.c (get_unbox_trampoline): Add an rgctx trampoline
2115         after the unbox trampoline in the full-aot case.
2116
2117 2009-07-02  jonas echterhoff <jonas@unity3d.com>
2118         
2119         * mini.c: Move initialization of jit_mutex before debugger initialization
2120         
2121         to avoid crashes.
2122         
2123         
2124         * Info.plist: added Info.plist and link flag to enable the mono executable
2125         to access other processes. Requires codesigning of the executable to work.
2126         
2127         * mdb-debug-info32-darwin.s: The same as mdb-debug-info32.s, changed to 
2128         
2129         compile on OS X.
2130         
2131
2132 2009-06-30  Zoltan Varga  <vargaz@gmail.com>
2133
2134         * driver.c (mini_regression): Handle loading errors. Fixes #508869.
2135
2136 2009-06-29  Zoltan Varga  <vargaz@gmail.com>
2137
2138         * mini-exceptions.c (get_generic_context_from_stack_frame): Fix the case
2139         when the generic instance is an instantiation of a subclass of the
2140         methods class. Fixes #517166.
2141
2142 2009-06-26  Zoltan Varga  <vargaz@gmail.com>
2143
2144         * mini-amd64.c (mono_arch_emit_prolog): Fix thread attaching in AOTed
2145         code.
2146
2147         * mini.c (mono_jit_thread_attach): Allow domain to be NULL for calls from
2148         AOTed code.
2149
2150         * CMakeLists.txt: Add minimal support for installation.
2151
2152 2009-06-25  Zoltan Varga  <vargaz@gmail.com>
2153
2154         * aot-compiler.c (emit_and_reloc_code): Factor out the code to
2155         determine whenever a method is directly callable to a separate function.
2156
2157         * mini-<ARCH>.c tramp-<ARCH>.c: Remove needless casts and add new
2158         needed ones as a result of the previous change.
2159
2160         * mini-<ARCH>.c tramp-<ARCH>.c: Use mgreg_t* as the
2161         type of register arrays.
2162
2163         * mini-trampolines.c tramp-<ARCH>.c aot-runtime.c: Use mgreg_t* as the
2164         type of register arrays.
2165
2166 2009-06-24  Jerry Maine  <crashfourit@gmail.com>
2167         
2168         Contributed under the terms of the MIT/X11 license by
2169         Jerry Maine <crashfourit@gail.com>.
2170
2171         * mini-amd64.c: Added code to convert simd IR to native amd64 sse.
2172
2173 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
2174
2175         * aot-compiler.c (emit_plt): Define debug labels for most plt entries.
2176
2177 2009-06-24  Neale Ferguson <neale@sinenomine.net>
2178
2179         * mini-s390x.c: Correct LCONV_TO_Ix and ICONV_TO_Ix routines. Fix leave_method
2180         dump of structure return value. Fix some formatting.
2181         * cpu-s390x.md: Fix lengths of instruction sequences.
2182         * mini-s390.c: Minor formatting changes.
2183
2184 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
2185
2186         * mini-x86.h: Applied patch from Romain Tartiere (romain@blogreen.org).
2187         Use sigaction on freebsd as well.
2188
2189 2009-06-23  Zoltan Varga  <vargaz@gmail.com>
2190
2191         * mini.h: Don't define MONO_ARCH_HAVE_TLS_GET to 0, as some code
2192         uses #ifdef on it.
2193         
2194         * mini.c (mini_init): Revert a change which breaks cross-compilation.
2195
2196 2009-06-22  Mark Probst  <mark.probst@gmail.com>
2197
2198         * mini-ppc.c, cpu-ppc.md: Enable TLS on Darwin/G4.
2199
2200 2009-06-22  Mark Probst  <mark.probst@gmail.com>
2201
2202         * mini.c, mini.h: Tell the runtime whether we support MONO_TLS.
2203
2204 2009-06-20  Martin Baulig  <martin@ximian.com>
2205
2206         * debug-mini.c
2207         (MonoDebuggerThreadFlags): New enum typedef.
2208         (MonoDebuggerThreadInfo): Added `guint32 thread_flags'.
2209         (mono_debugger_thread_created): Added `gpointer func' argument;
2210         initialize the new `thread_flags' field.
2211
2212 2009-06-18  Martin Baulig  <martin@ximian.com>
2213
2214         * debug-debugger.h (MonoDebuggerRuntimeFlags): New enum typedef.
2215         (MonoDebuggerInfo): Renamed the `dummy' field info `runtime_info'.
2216
2217         * debug-debugger.c
2218         (mini_debugger_set_attach_ok): New function; sets the attach-ok
2219         flag in `MONO_DEBUGGER__info.runtime_info'.
2220
2221         * driver.c
2222         (mono_main): Call mini_debugger_set_attach_ok() if generics
2223         sharing is disabled.
2224
2225 2009-06-22  Zoltan Varga  <vargaz@gmail.com>
2226
2227         * aot-compiler.c (add_wrappers): Fix a warning.
2228
2229         * mini-ppc.c tramp-ppc.c exceptions-ppc.c aot-compiler.c: Update after
2230         the ppc load/store macro changes.
2231
2232 2009-06-21  Zoltan Varga  <vargaz@gmail.com>
2233
2234         * tramp-ppc.c (mono_arch_patch_plt_entry): Implement this.
2235
2236         * aot-compiler.c (mono_compile_assembly): Sanitize the plt symbol too,
2237         not just the got symbol.
2238
2239         * mini-ppc.c aot-compiler.c unwind.c: Implement generation of unwind info
2240         on ppc.
2241
2242         * aot-compiler.c unwind.c: Add infrastructure for unwind support on
2243         ppc.
2244         
2245         * aot-compiler.c: Remove some fixmes.
2246
2247         * driver.c (mono_main): Print a helpful message when cross-compiling.
2248
2249         * mini.c (mini_init): Disable signal handlers when cross-compiling.
2250
2251         * method-to-ir.c (initialize_array_data): Do the optimization if the
2252         target byte order is little endian, instead of the host byte order.
2253
2254         * aot-compiler.c: Emit sizes for most symbols, only emit runtime-invoke
2255         wrappers into the mscorlib image, Emit a unique plt symbol for each
2256         image, emit symbols for plt entries.
2257
2258         * image-writer.c (img_writer_emit_symbol_size): New function to emit
2259         a .size directive.
2260         
2261 2009-06-20  Zoltan Varga  <vargaz@gmail.com>
2262
2263         * aot-compiler.c (add_wrappers): Avoid calling 
2264         mono_marshal_get_type_info () since it can assert for some types.
2265
2266         * method-to-ir.c (mono_method_to_ir): Disable aot when some forms of 
2267         ldtoken are used inside wrappers.
2268
2269         * helpers.c: Add support for prefixing tools with the arch name.
2270
2271         * mini.h (OP_LOADR_MEMBASE): New opcodes to load/store pointer sized
2272         quantities when using ilp32.
2273
2274         * mini-codegen.c: Use OP_LOADR_MEMBASE/OP_STORER_MEMBASE for loading/storing
2275         spill slots. Use sizeof(mgreg_t) for the spill slot size.
2276
2277         * image-writer.c: Use .long on ilp32.
2278
2279         * aot-compiler.c: Use 32 bit loads on ilp32.
2280         
2281 2009-06-19  Zoltan Varga  <vargaz@gmail.com>
2282
2283         * tramp-ppc.c (mono_arch_create_trampoline_code): Fix the ppc build.
2284
2285         * mini-ops.h: Use TARGET_POWERPC define for consistency.
2286
2287         * patch-info.h: Add 'MSCORLIB_GOT_ADDR' patch type.
2288
2289         * aot-compiler.c aot-runtime.c: Put the mscorlib got address into the 
2290         second got slot of every aot image.
2291         
2292         * aot-compiler.c aot-runtime.c mini-trampolines.c: Add support for
2293         aot on platforms with function pointers.
2294
2295         * mini-ppc.h mini-ppp.c cpu-ppc.md exceptions-ppc.c tramp-ppc.c: Add
2296         support for aot/full aot on ppc/ppc64.
2297         
2298         * tramp-<ARCH>.c (mono_arch_patch_plt_entry): Add 'got' and 'regs'
2299         arguments which are needed on ppc.
2300
2301         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Add 'regs'
2302         argument.
2303
2304         * mini-trampolines.c aot-runtime.c: Update after the above changes.
2305         
2306         * liveness.c (BITS_PER_CHUNK): Use MONO_BITSET_BITS_PER_CHUNK.
2307
2308         * regalloc2.c (BITS_PER_CHUNK): Ditto.  
2309
2310         * aot-compiler.c (emit_got_info): Fix reading unused memory.
2311
2312         * ir-emit.h (alloc_dreg): Add a 'return -1' to quiet some compilers.
2313
2314 2009-06-17  Geoff Norton  <gnorton@novell.com>
2315
2316         * aot-compiler.c: Ensure we dont try to close a null dwarf writer.
2317
2318 2009-06-17  Zoltan Varga  <vargaz@gmail.com>
2319
2320         * dwarfwriter.c (mono_dwarf_writer_create): Add an 'appending' parameter
2321         to control whenever the dwarf writer is in xdebug or aot mode.
2322         (emit_class_dwarf_info): Use a separate abbrev for structures without
2323         children.
2324
2325         * aot-compiler.c: Pass the appending parameter to 
2326         mono_dwarf_writer_create ().
2327
2328         * branch-opts.c (mono_merge_basic_blocks): Fix the case when bbn
2329         falls through to its next bblock. Fixes #513931.
2330
2331         * iltests.il: Add a test.
2332
2333         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Emit some line number
2334         infor even if emit_line is FALSE, as the apple linker seems to require it.
2335
2336         * image-writer.c (asm_writer_emit_symbol_diff): Call get_label ().
2337
2338         * dwarfwriter.c (emit_cie): Emit a separate symbol for the cie start, as
2339         gcc does.
2340         (emit_fde): Ditto.
2341
2342 2009-06-15  Zoltan Varga  <vargaz@gmail.com>
2343
2344         * exceptions-mips.c (mono_arch_get_throw_exception_by_name): Fix the
2345         mips build.
2346
2347 2009-06-13  Zoltan Varga  <vargaz@gmail.com>
2348
2349         * mini.h (struct MonoBasicBlock): Add 'has_jump_table' and 
2350         'has_call_handler' fields.
2351
2352         * method-to-ir.c (mono_method_to_ir): Set them if needed.
2353
2354         * branch-opts.c (mono_merge_basic_blocks): Avoid iterating through the
2355         first bblock if not needed. Fixes #512790.
2356         
2357 2009-06-11  Zoltan Varga  <vargaz@gmail.com>
2358
2359         * aot-compiler.c (mono_compile_assembly): Fix a warning.
2360         
2361         * aot-compiler.c (add_wrappers): Don't emit remoting-invoke-with-check
2362         wrappers.
2363
2364         * aot-runtime.c (mono_aot_get_method): Use the original method's code for
2365         remoting-invoke-with-check wrappers, which are not needed when running with
2366         full-aot, since it doesn't support remoting.
2367         
2368 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
2369
2370         * aot-compiler.c (emit_got_info): Don't emit offsets for the plt got entries.
2371
2372         * aot-compiler.c aot-runtime.c: Don't emit the first got offset in the
2373         method info, it is not used anymore.
2374
2375         * mini.h: Bump AOT file format version.
2376         
2377         * aot-compiler.c (arch_emit_plt_entry): Make the arm plt entries one
2378         word smaller.
2379
2380         * aot-runtime.c (mono_aot_get_plt_info_offset): Update after the
2381         change above.
2382         
2383         * tramp-arm.c (mono_arch_patch_plt_entry): Ditto.
2384
2385         * mini.h: Bump AOT file format version.
2386         
2387 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
2388
2389         * image-writer.c (asm_writer_emit_symbol_diff): Disable the 
2390         TARGET_ASM_APPLE stuff for now, as it doesn't seem to work on the
2391         iphone.
2392
2393         * mini-arm.c (mono_arch_output_basic_block): Fix the implementation
2394         of CKFINITE and FBGE for VFP.
2395
2396 2009-06-09  Zoltan Varga  <vargaz@gmail.com>
2397
2398         * aot-compiler.c: Don't align code to 16 bytes on arm.
2399         
2400         * aot-compiler.c (emit_method_code): Emit the unbox trampolines right
2401         before the methods they belong to.
2402
2403         * aot-runtime.c (mono_aot_plt_resolve): Avoid creating trampolines in
2404         the full-aot case if possible, since the trampoline will be called right 
2405         away.
2406
2407         * aot-compiler.c (mono_compile_assembly): Decrease the number of full aot
2408         trampolines to 1024 after the change above.
2409
2410         * aot-compiler.c (arch_emit_specific_trampoline): Rework the arm
2411         trampoline to save 8 bytes per trampoline.
2412
2413         * tramp-arm.c (mono_arch_create_trampoline_code_full): Update after the
2414         change above.
2415
2416 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
2417
2418         * aot-compiler.c: Use acfg->temp_prefix instead of .L to prefix labels.
2419
2420 2009-06-08  Martin Baulig  <martin@ximian.com>
2421
2422         * debug-mini.c
2423         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
2424         (_mono_debugger_throw_exception): Don't make this static.
2425         (_mono_debugger_unhandled_exception): Likewise.
2426         (mono_debugger_handle_exception): Moved to mini-exceptions.c
2427
2428         * debug-mini.c
2429         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
2430         (_mono_debugger_throw_exception): Add function prototype.
2431         (_mono_debugger_unhandled_exception): Likewise.
2432
2433         * mini-exceptions.c
2434         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
2435         arg; return the first exception handler if the exception is caught
2436         and we're running inside the debugger.
2437         (mono_debugger_handle_exception): Moved here from debug-mini.c;
2438         improve exception handle inside runtime-invoke, check whether the
2439         exception is actually caught in the method being invoked and not
2440         by the runtime-invoke-wrapper.
2441
2442 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
2443
2444         * image-writer.c: Improve support for the osx assembler.
2445
2446         * dwarfwriter.c: Avoid the usage of subsections if the assembler doesn't
2447         support them.
2448
2449 2009-06-08  Martin Baulig  <martin@ximian.com>
2450
2451         * debug-mini.c
2452         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
2453         (_mono_debugger_throw_exception): Don't make this static.
2454         (_mono_debugger_unhandled_exception): Likewise.
2455         (mono_debugger_handle_exception): Moved to mini-exceptions.c
2456
2457         * debug-mini.c
2458         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
2459         (_mono_debugger_throw_exception): Add function prototype.
2460         (_mono_debugger_unhandled_exception): Likewise.
2461
2462         * mini-exceptions.c
2463         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
2464         arg; return the first exception handler if the exception is caught
2465         and we're running inside the debugger.
2466         (mono_debugger_handle_exception): Moved here from debug-mini.c;
2467         improve exception handle inside runtime-invoke, check whether the
2468         exception is actually caught in the method being invoked and not
2469         by the runtime-invoke-wrapper.
2470
2471 2009-06-07  Zoltan Varga  <vargaz@gmail.com>
2472
2473         * image-writer.c (append_subsection): Don't align subsections of the
2474         debug_line section as a workaround.
2475
2476         * dwarfwriter.c: Emit line number info in the AOT case as well.
2477
2478 2009-06-06  Steven Munroe  <munroesj@us.ibm.com>
2479
2480         This patch is contributed under the terms of the MIT/X11 license
2481
2482        * mini-ppc.c (mono_arch_emit_exceptions): Change assert to
2483        code_len <= code_size
2484
2485 2009-06-06  Zoltan Varga  <vargaz@gmail.com>
2486
2487         * mini-mips.c (mips_emit_exc_by_name): Fix the mips build.
2488
2489 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
2490
2491         * aot-compiler.c aot-runtime.c: Delete references to static rgctx
2492         invoke wrappers, we now use trampolines instead.
2493
2494 2009-06-04  Mark Probst  <mark.probst@gmail.com>
2495
2496         * mini-darwin.c: The exception thread must not be registered with
2497         the GC.
2498
2499 2009-06-04  Mark Probst  <mark.probst@gmail.com>
2500
2501         * mini-gc.c: Disable the code because it makes SGen crash.
2502
2503 2009-06-03  Zoltan Varga  <vargaz@gmail.com>
2504
2505         * aot-compiler.c (mono_compile_assembly): Handle file open errors gracefully
2506         instead of asserting.
2507
2508 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
2509
2510         * aot-compiler.c (mono_compile_assembly): Move the creation of the
2511         output file after the code has been compiled.
2512
2513 2009-05-30  Zoltan Varga  <vargaz@gmail.com>
2514
2515         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Fix 64 bit support.
2516
2517 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
2518
2519         * aot-compiler.c aot-runtime.c: Get rid of the shared/non-shared got
2520         entries distinction to simplify the code.
2521
2522         * mini.h: Bump AOT file format version.
2523         
2524 2009-05-28  Zoltan Varga  <vargaz@gmail.com>
2525
2526         * objects.cs: Fix the signature of one of the tests.
2527
2528         * mini.c (mini_create_ftnptr): New helper function, moved here from
2529         object.c.
2530         (mini_get_addr_from_ftnptr): Ditto.
2531         (mini_init): Install the new helpers.
2532
2533 2009-05-28  Martin Baulig  <martin@ximian.com>
2534
2535         Correctly initialize the debugger when embedding Mono.
2536
2537         * mdb-debug-info32.s, mdb-debug-info64.s: Add a global variable
2538         `MONO_DEBUGGER__using_debugger' to the `.mdb_debug_info' section;
2539         see documentation in mini_debug_running_inside_mdb().
2540
2541         * debug-debugger.c
2542         (mini_debug_running_inside_mdb): New function to check whether
2543         we're running inside mdb.
2544
2545         * mini.c (mini_init): Call mini_debugger_init() if we're running
2546         inside the debugger.
2547
2548         * driver.c (mono_main): Moved the call to mini_debugger_init()
2549         into mini_init() to make this work when embedding Mono.
2550
2551         * debug-debugger.c (mini_debugger_init): Warn about duplicate
2552         calls to mini_debugger_init().
2553
2554         * mini.h: Rename mono_debugger_init() -> mini_debugger_init(),
2555         mono_debugger_main() -> mini_debugger_main() and put them inside a
2556         `MONO_DEBUGGER_SUPPORTED' conditional.
2557
2558 2009-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
2559
2560         * mini-trampolines.c: Kill mono_find_delegate_trampoline_by_addr as
2561         this is no longer in use.
2562         * mini.h: Same.
2563
2564 2009-05-26  Zoltan Varga  <vargaz@gmail.com>
2565
2566         * mini-sparc.c (add_outarg_load): Fix the sparc build.
2567
2568         * aot-compiler.c (emit_method_code): Always write out C style symbols for
2569         methods.
2570
2571 2009-05-27  Martin Baulig  <martin@ximian.com>
2572
2573 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
2574
2575         * mini-x86.c (mono_arch_output_basic_block): Fix the precision of
2576         long_conv_to_r_un to 64 bits.
2577
2578         * cpu-x86.md: Increase the instruction size due to the changes.
2579
2580         * iltests.il.in: Add regression test.
2581
2582         Fixes #467201.
2583
2584 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
2585
2586         * objects.cs: Move the previous test from basic.cs to here.
2587
2588 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
2589
2590         * basic.cs: Add regression test for #506915.
2591
2592 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
2593
2594         * method-to-ir.c (mono_method_to_ir): When doing the ldobj+stobj
2595         optimization we must check the bb of the first byte of stobj as
2596         it's the only one set in cil_offset_to_bb.
2597
2598         Fixes #506915.  
2599
2600 2009-05-25  Zoltan Varga  <vargaz@gmail.com>
2601
2602         * image-writer.c: Fix pointer directive on ppc64.
2603
2604 2009-05-24  Zoltan Varga  <vargaz@gmail.com>
2605
2606         * image-writer.c (asm_writer_emit_section_change): Avoid using
2607         .bss subsections on ppc too.
2608
2609 2009-05-23  Zoltan Varga  <vargaz@gmail.com>
2610
2611         * image-writer.c: Fix the definition of TARGET_ASM_....
2612         
2613         * image-writer.c: Fix the emission of assembler directives in the last
2614         change.
2615
2616         * mini-ppc.c (mono_arch_emit_exceptions): Increase the size of the
2617         exception throwing code to accomodate ppc64.
2618
2619         * tramp-ppc.c (mono_arch_get_nullified_class_init_trampoline): Increase the
2620         size to work on ppc64 too.
2621
2622         * mini-ppc.h (MonoCompileArch): Enable static rgctx trampolines on ppc64
2623         too.
2624
2625         * image-writer.c: Clean up the #ifdef hell a bit by adding defines for
2626         the assembler dialect instead of using platform specific defines.
2627
2628 2009-05-22  Geoff Norton  <gnorton@novell.com>
2629
2630         * mini-arm.c (get_call_info): If a structure is split between the stack
2631         and argument registers, we should not advance the stack pointer by the entire
2632         native size, but just by the amount that spilled.
2633
2634 2009-05-22  Zoltan Varga  <vargaz@gmail.com>
2635
2636         * mini-arm.c (get_call_info): Handle structures with alignment requirements
2637         correctly.
2638
2639 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
2640
2641         * aot-compiler.c (emit_extra_methods): Encode direct runtime invoke
2642         wrappers normally.
2643         
2644         * aot-compiler.c (add_extra_method): Fix up the collection of extra
2645         methods so wrapper don't get added twice.
2646         (add_generic_instances): Don't add methods of arrays.
2647
2648         * generics.cs: Mark one test as !FULLAOT.
2649
2650 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
2651
2652         * mini-x86.c (emit_move_return_value): Remove unused vars.
2653
2654 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
2655
2656         * mini-x86.c (mono_arch_emit_call): The decompose code now supports
2657         decomposing 8 bytes structs into a LCALL.
2658
2659         * mini-x86.c (emit_move_return_value): We no longer push the vtype
2660         pointer for where to store the returned regs.
2661
2662         * decompose.c (mono_decompose_vtype_opts): Fix the comment to properly
2663         state the concern.
2664
2665         Fixes #471747, #471751 and #4734530 (in fact, it's a bunch of dups).
2666
2667 2009-05-20  Miguel de Icaza  <miguel@novell.com>
2668
2669         * aot-runtime.c (mono_aot_init): Use g_getenv to work on systems
2670         without getenv.
2671
2672 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
2673
2674         * aot-compiler.c (add_wrappers): Add StructureToPtr/PtrToStructure wrappers.
2675
2676         * basic.cs: Move the test_2_cprop_bug () test to generics.cs as it involves
2677         generics.
2678
2679 2009-05-20 Rodrigo Kumpera  <rkumpera@novell.com>
2680
2681         * local-propagation.c (mono_local_cprop): Avoid local propagation
2682         across paired add/sub if the first instruction dest reg is it's
2683         source reg. For example:
2684
2685         int_add_imm R12 <- R12 [1] clobbers: 1
2686         int_sub_imm R42 <- R12 [1] clobbers: 1
2687
2688         The cprop pass would wrongly const prop + 1 to int_sub_imm which doesn't
2689         maintain the math identify.
2690
2691         Fixes #505375.
2692
2693 2009-05-20  Andreia Gaita  <avidigal@novell.com>
2694
2695         * Makefile.am: avoid going on the network just to get the revision,
2696         use git log instead
2697
2698 2009-05-19  Massimiliano Mantione  <massi@ximian.com>
2699
2700         Fixed estimate for short branches on amd64 (they were off mark, and
2701         enabling call prolog-epilog instrumentations caused assertions).
2702         * mini.h (struct MonoBasicBlock): added max_length field to hold the
2703         estimate for the maximum length of this basic block.
2704         * mini-amd64.c:
2705         - mono_arch_emit_prolog: compute max_length for each basic block
2706           (instead of max_offset), and inflate size estimate also for entry bb
2707           in case of code instrumentation.
2708         - mono_arch_output_basic_block: get rid of "cpos" (the current
2709           estimated "position" in the code), and always use "offset" instead,
2710           which is accurate; at the beginning of the function quickly recompute
2711           max_offset for all the remaining blocks, starting from the current
2712           cfg->code_len (which is correct, and not estimated) and using the
2713           estimated block lengths computed previously.
2714
2715 2009-05-17  Zoltan Varga  <vargaz@gmail.com>
2716
2717         * exceptions-ppc.c: Remove the caching from the trampoline creation 
2718         functions, it is already done in the caller.
2719
2720         * mini-trampolines.c (mono_llvm_vcall_trampoline): Fix the llvm build.
2721
2722         * mini-ppc.h mini-arm.h mini-x86.h mini-amd64.h: Add 
2723         MONO_ARCH_GSHARED_SUPPORTED define.
2724
2725         * mini.c (mini_init): Use the MONO_ARCH_GSHARED_SUPPORTED define.
2726
2727         * mini-arm.c mini.c: Get rid of the unused mono_arch_fixup_jinfo ()
2728         function.
2729
2730 2009-05-16  Zoltan Varga  <vargaz@gmail.com>
2731
2732         * jit-icalls.c (mono_helper_compile_generic_method): Get rid of the 
2733         call to mono_marshal_get_rgctx_invoke ().
2734
2735         * mini.c method-to-ir.c mini-trampolines.c: Get rid of the usage of
2736         mono_marshal_get_static_rgctx_invoke (), all platforms which support
2737         gshared use the static rgctx trampolines now.
2738         
2739         * mini.c (mini_init): Call mono_set_generic_sharing_supported () if the
2740         platform supports it.
2741
2742 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
2743
2744         * mini-arm.c (mono_arch_allocate_vars): Correctly save R5 when using AOT.
2745
2746         * aot-compiler.c (emit_method_code): Avoid duplicate labels for methods.
2747
2748 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
2749
2750         * mini-ppc.c (mono_arch_emit_exceptions): Nullify the processed patches.
2751
2752         * tramp-ppc.c (mono_arch_nullify_class_init_trampoline): Implement this
2753         for ppc.
2754
2755 2009-05-15  Massimiliano Mantione  <massi@ximian.com>
2756
2757         Made it possible for mono_arch_instrument_epilog to preserve
2758         argument registers, otherwise instrumenting the "epilogue" before
2759         a tail call would clobber them.
2760         * mini.h: Added "mono_arch_instrument_epilog_full" prototype, which
2761         if like mono_arch_instrument_epilog but with an additional parameter
2762         that states if argument registers must be preserved.
2763         * mini.c: implemented mono_arch_instrument_epilog as a call to
2764         mono_arch_instrument_epilog_full without asking to preserve argument
2765         registers (this makes the existing code work as usual).
2766         * mini-amd64.c:
2767         - mono_arch_instrument_epilog: add parameter to transform it into
2768         mono_arch_instrument_epilog_full, and preserve argument registers
2769         when required.
2770         - mono_arch_output_basic_block, OP_TAILCALL case: call
2771         mono_arch_instrument_epilog_full.
2772         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
2773         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-x86.c:
2774         only transformed mono_arch_instrument_epilog into
2775         mono_arch_instrument_epilog_full.
2776
2777 2009-05-15  Geoff Norton  <gnorton@novell.com>
2778
2779         * mini-darwin.c: This works on arm now.
2780
2781 2009-05-14  Geoff Norton  <gnorton@novell.com>
2782
2783         * jit.h, driver.c: Allow full-aot to be decided programatically by the
2784         embedding api.
2785
2786 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
2787
2788         * aot-compiler.c (emit_method_code): Skip a few more characters in the debug
2789         label names.
2790
2791         * mini-trampolines.c (mono_magic_trampoline): Handle static rgctx invoke
2792         wrappers during full aot mode correctly.
2793
2794         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle shared generic
2795         methods correctly.
2796
2797         * aot-compiler.c (mono_aot_method_hash): Use our internal version of
2798         mono_metadata_type_hash ().
2799
2800 2009-05-14  Massimiliano Mantione  <massi@ximian.com>
2801
2802         * mini.h, mini-codegen.c, mini-alpha.c, mini-amd64.c, mini-arm.c,
2803         mini-hppa.h, mini-hppa.c, mini-ia64.c, mini-mips.h, mini-mips.c,
2804         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-886.c:
2805         Removed MONO_INST_BRLABEL from the instruction flags, and the
2806         remaining code that used it, because we do not support branches inside
2807         basic blocks (and branch target labels) anymore.
2808         * Makefile.am: As part of the above cleanup, remove reference to
2809         BURG files which don't exist anymore.
2810
2811 2009-05-14  Zoltan Varga  <vargaz@gmail.com>
2812
2813         * image-writer.c (asm_writer_emit_local_symbol): Make this a nop on
2814         osx.
2815
2816         * mini-mips.c mini-mips.h exceptions-mips.c: Transition the mips backend
2817         to use mono_arch_throw_corlib_exception.
2818
2819         * mini-ppc.c mini-ppc.h exceptions-ppc.c: Use 
2820         mono_arch_throw_corlib_exception for throwing corlib exceptions.
2821
2822         * aot-runtime.c (decode_patch): Allocate the data for R4/R8 from the
2823         domain mempool.
2824
2825         * mini.c (mono_patch_info_dup_mp): Copy the table of switch targets too.
2826
2827         * aot-compiler.c: Emit a local symbol prefixed with the assembly name 
2828         for the got to make debugging easier and to avoid confusing it with the
2829         system got.
2830         
2831         * aot-compiler.c (emit_method_code): Emit a C style symbol for each
2832         method so a breakpoint can be set when using gdb.
2833
2834 2009-05-13  Zoltan Varga  <vargaz@gmail.com>
2835
2836         * aot-compiler.c (mono_aot_method_hash): Implement this properly based
2837         on mono_method_get_imt_slot ().
2838
2839         * aot-runtime.c (find_extra_method_in_amodule): Get rid of the
2840         num_decodes variables.
2841
2842         * aot-compiler.c (mono_aot_method_hash): Revert part of the last
2843         change as it doesn't seem to work.
2844         
2845         * aot-compiler.c (mono_aot_method_hash): Improve the hashing of
2846         wrappers.
2847
2848 2009-05-12  Zoltan Varga  <vargaz@gmail.com>
2849
2850         * aot-compiler.c mini.c mini-amd64.h mini-arm.h: Kill 
2851         MONO_ARCH_FULL_AOT_IMT_SUPPORTED define, both platforms now support imt.
2852
2853         * mini.c (mini_init): Install mono_aot_get_imt_thunk as the IMT thunk
2854         builder when using full aot.
2855
2856         * mini-amd64.c (mono_arch_build_imt_thunk): Don't handle the full-aot case
2857         here, it is already handled.
2858         
2859         * mini-arm.c (mono_arch_emit_imt_argument): Pass the dynamic imt arg
2860         correctly for IMT.
2861
2862         * aot-compiler.c (arch_emit_imt_thunk): Implement this for ARM.
2863
2864         * mini-arm.h: Enable IMT for full aot.
2865         
2866         * aot-compiler.c (mono_compile_assembly): Don't emit imt thunk if the
2867         arch doesn't support it.
2868
2869         * mini.c (mini_init): Don't disable IMT for full aot if the
2870         architecture supports it.
2871
2872         * mini.h (MonoAotTrampoline): New enum containing the different types
2873         of 'numerous' trampolines.
2874         (MONO_AOT_FILE_VERSION): Bump this.
2875
2876         * aot-compiler.c aot-runtime.c: Unify the handling of specific and
2877         static rgctx trampolines. Add support for full-aot IMT thunks.
2878
2879         * mini-amd64.h: Enable IMT for full aot.
2880
2881         * TestDriver.cs: Add a CategoryAttribute class and an --exclude option
2882         to exclude tests belonging to a category.
2883
2884         * generics.cs: Mark some tests with a !FULLAOT category.
2885
2886         * Makefile.am (fullaotcheck): Run tests with --exclude !FULLAOT. Include
2887         generics tests.
2888
2889 2009-05-11  Zoltan Varga  <vargaz@gmail.com>
2890
2891         * aot-compiler.c (emit_and_reloc_code): Move the implementation of
2892         MONO_PATCH_INFO_GOT_OFFSET to a separate arch-specific function.
2893         (emit_plt): Fix a warning.
2894
2895 2009-05-10  Zoltan Varga  <vargaz@gmail.com>
2896
2897         * aot-compiler.c aot-runtime.c: Fix the build by moving is_shared_got_patch
2898         back into aot-compiler.c to a place where the other functions shared by
2899         the runtime and aot compiler are.
2900         
2901         * aot-compiler.c aot-runtime.c: Emit the got addr using a separate symbol,
2902         as done previously, instead of in MonoAotFileInfo, since pointers might have
2903         alignment requirements.
2904
2905         * mini.h: Bump AOT file format version.
2906
2907 2009-05-10  Miguel de Icaza  <miguel@novell.com>
2908
2909         * aot-runtime.c (mono_aot_is_shared_got_patch): Move this routine
2910         that is used at runtime from the aot-compiler.c, this makes it
2911         work on setups that remove the AOT compiler from the output
2912         image. 
2913
2914 2009-05-09  Zoltan Varga  <vargaz@gmail.com>
2915
2916         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Implement this for
2917         PPC.
2918
2919         * mini-ppc.h: Enable static rgctx trampolines for ppc.
2920
2921         * mini-<ARCH>.h: Kill the MONO_ARCH_ENABLE_EMIT_STATE_OPT define.
2922
2923         * decompose.c (mono_decompose_long_opts): Move the ppc/sparc specific 
2924         stuff to mono_arch_decompose_long_opts ().
2925         (mono_decompose_opcode): Remove some dead code.
2926
2927 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
2928
2929         * method-to-ir.c (mono_method_to_ir): Fix boostrap of non amd64 builds
2930         cmethod can be null for quite a some reasons.
2931
2932 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
2933
2934         * method-to-ir.c (mono_method_to_ir): Fix non amd64 builds.
2935
2936 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
2937
2938         * aot-compiler.c (arch_emit_got_access): Fix the aot-not-supported build.
2939
2940 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
2941
2942         * method-to-ir.c (mono_emit_call_args): Add a 'tail' flag argument.
2943         (mono_method_to_ir): Use MONO_ARCH_USE_OP_TAIL_CALL macro to determine
2944         whenever to make tail calls using OP_TAIL_CALL. Enable support for tail
2945         calls returning structures by addr on amd64.
2946
2947         * mini-amd64.h (MONO_ARCH_USE_OP_TAIL_CALL): New arch-specific macro.
2948
2949         * iltests.il.in: Restructure the tail call tests a bit.
2950         
2951 2009-05-07  Zoltan Varga  <vargaz@gmail.com>
2952
2953         * aot-compiler.c (add_wrappers): Add remoting-invoke-with-check wrappers
2954         for virtual methods too.
2955
2956 2009-05-06  Raja R Harinath  <harinath@hurrynot.org>
2957
2958         * method-to-ir.c (mono_method_to_ir): Revert change of 2009-05-02
2959         due to regression in verifying System.dll.
2960
2961 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
2962
2963         * debug-mini.c (mono_debugger_method_has_breakpoint): Allow breakpoints
2964         in dynamic methods.
2965
2966         * dwarfwriter.c (emit_class_dwarf_info): Add support for generic
2967         instances.
2968
2969         * aot-compiler.c aot-runtime.c: Use our own hash function instead of
2970         g_str_hash () which can change.
2971
2972         * driver.c (mini_regression): Disable optimizations not supported by
2973         the cpu. Fixes #500019.
2974
2975         * aot-runtime.c (mono_aot_get_unwind_info): Fix the --enable-minimal=aot
2976         build.
2977
2978 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
2979
2980         * mini-llvm.c (mono_llvm_emit_method): Update the OP_TLS_GET implementation
2981         to the latest LLVM code.
2982
2983 2009-05-05  Zoltan Varga  <vargaz@gmail.com>
2984
2985         * genmdesc.pl (load_opcodes): Fix this after the TARGET_... changes.
2986
2987 2009-05-04  Zoltan Varga  <vargaz@gmail.com>
2988
2989         * mini-llvm.c (mono_llvm_emit_method): Implement TLS support on 
2990         x86/amd64.
2991
2992         * aot-compiler.c (encode_patch_list): Simplify this considerably as we are
2993         no longer saving offsets, so just save the patch types along with the other
2994         info.
2995         * aot-runtime.c (load_patch_info): Update after the changes to 
2996         encode_patch_list ().
2997         (decode_got_entry): Removed, merged into load_patch_info ().
2998         (is_shared_got_patch): Removed, call the same function from
2999         aot-compiler.c.
3000
3001         * mini.h: Bump aot file format version.
3002         
3003         * aot-compiler.c aot-runtime.c: Resurrect static linking support. Kill the
3004         half-finished no-dlsym code.
3005
3006         * aot-runtime.c (load_method): Kill the old and bit-rotten use_loaded_code
3007         option.
3008
3009         * mini-<ARCH>.h mini-trampolines.c aot-runtime.c: Kill the 
3010         MONO_ARCH_HAVE_CREATE_TRAMPOLINE_FROM_TOKEN define.
3011
3012 2009-05-02  Zoltan Varga  <vargaz@gmail.com>
3013
3014         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Increase the
3015         buffer length to work with AOT code.
3016
3017         * method-to-ir.c (mono_method_to_ir): Handle loading errors in the
3018         ldfld/stfld opcodes.
3019
3020         * exceptions-x86.c (mono_arch_get_throw_exception_by_name): Simplify this
3021         as it is not used.
3022
3023         * mini-llvm.c mini-x86.c: Implement 32 bit and x86 support.
3024
3025         * ssa.c (mono_ssa_compute): Don't skip I8 values when using LLVM.
3026
3027         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Update to the latest
3028         LLVM API.
3029
3030         * mini.c (mini_method_compile): Set the from_llvm flag in MonoJitInfo
3031         if needed. Don't decompose long operations when using llvm.
3032
3033 2009-05-01  Zoltan Varga  <vargaz@gmail.com>
3034
3035         * aot-compiler.c aot-runtime.c: Use mono_pagesize () instead of the
3036         PAGESIZE constant.
3037
3038         * aot-runtime.c (load_aot_module): Get rid of another mprotect call.
3039
3040 2009-05-03  Martin Baulig  <martin@ximian.com>
3041
3042         * debug-debugger.c (debugger_insert_source_breakpoint): Don't call
3043         mono_debugger_insert_method_breakpoint() since the class init
3044         handler we're inserting at the top of the method already gives us
3045         a notification.
3046
3047 2009-04-30  Zoltan Varga  <vargaz@gmail.com>
3048
3049         * decompose.c (mono_decompose_long_opts): Move the implementation of LNEG
3050         to mono_arch_decompose_long_opts () for x86 and arm.
3051
3052 2009-04-29  Zoltan Varga  <vargaz@gmail.com>
3053
3054         * mini-codegen.c (mono_regstate_alloc_int): Use __x86_64__ instead of
3055         TARGET_AMD64 here.
3056
3057 2009-04-28  Zoltan Varga  <vargaz@gmail.com>
3058
3059         * *.h *.c: Use TARGET_<ARCH> defines instead of __<arch>__ defines in the
3060         JIT code.
3061
3062 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
3063
3064         * aot-runtime.c (mono_aot_create_specific_trampoline): Add a stat for the
3065         number of trampolines used in full-aot mode.
3066
3067         * aot-compiler.c: Add an ntrampolines option to set the number of 
3068         trampolines emitted in full-aot mode.
3069
3070 2009-04-27  Zoltan Varga  <vargaz@gmail.com>
3071
3072         * mini-llvm.c (mono_llvm_emit_method): Implement OP_CHECK_THIS using
3073         a volatile load. Get rid of get_tempname (), llvm assigns names
3074         automatically.
3075
3076         * mini-llvm-cpp.cpp (mono_llvm_build_volatile_load): New instruction
3077         builder function.
3078
3079         * mini-llvm.c (mono_llvm_emit_method): Don't call LLVMGetParam on
3080         a value.
3081
3082         * abcremoval.c (REPORT_ABC_REMOVAL): Don't output messages at verbose
3083         level 1.
3084
3085         * mini-codegen.c (mono_local_regalloc): Prevent sreg1/dreg to be allocated
3086         to the same register as a fixed sreg2. Fixes #497271.
3087
3088         * iltests.il.in: Add a new test.
3089
3090 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
3091
3092         * mini-amd64.c: Use moves instead of pushes for passing arguments on the
3093         stack, since pushes complicate exception handling.
3094
3095         * exceptions-amd64.c (mono_arch_find_jit_info): Don't pop the arguments of
3096         the stack if they are passed using moves.
3097
3098         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
3099
3100         * method-to-ir.c (mono_method_to_ir): Disable fast virtual generic methods
3101         when using llvm.
3102
3103         * mini-llvm.c (mono_llvm_emit_method): Call jit icall wrappers, not the 
3104         icalls themselves. Convert arguments of FCOMPARE. Convert the destination
3105         of FMOVE if it is an R4.
3106
3107 2009-04-25  Zoltan Varga  <vargaz@gmail.com>
3108
3109         * mini-ops.h: Add OP_LLVM_OUTARG_VT opcode.
3110
3111         * mini.h (LLVMCallInfo): New structure to store calling convention 
3112         information for the LLVM back end similar to the CallInfo structures in 
3113         the back-ends.
3114
3115         * mini-amd64.c (mono_arch_get_llvm_call_info): New arch function to return
3116         call information in a format usable by LLVM.
3117         (mono_arch_emit_call): Move the LLVM handling code to mono_llvm_emit_call ().
3118
3119         * method-to-ir.c (mono_emit_call_args): Emit calls using 
3120         mono_llvm_emit_call () when compiling using LLVM.
3121
3122         * mini-llvm.c: Implement support for passing/receiving valuetypes. Add
3123         comments to all functions. Fix memory leaks. Add a public init/cleanup
3124         function.
3125
3126         * mini.c: Call the llvm init/cleanup functions in mini_init()/cleanup().
3127
3128         * method-to-ir.c (handle_array_new): Disable llvm when calling the vararg
3129         mono_array_new_va () jit icall.
3130         
3131 Fri Apr 24 16:44:08 CEST 2009 Paolo Molaro <lupus@ximian.com>
3132
3133         * Makefile.am, genmdesc.c, genmdesc.pl: tiny refactor to allow
3134         multiple machine description files to be specified.
3135         * mini-ops.h: fixes for cross-compilation.
3136
3137 2009-04-22  Miguel de Icaza  <miguel@novell.com>
3138
3139         * aot-runtime.c (make_writable): Use mono_mprotect to simplify
3140         some porting work.
3141
3142 2009-04-22  Zoltan Varga  <vargaz@gmail.com>
3143
3144         * method-to-ir.c (mono_method_to_ir): Force init_locals to be TRUE
3145         to prevent asserts in various passes. Fixes #497220.
3146
3147 2009-04-21  Zoltan Varga  <vargaz@gmail.com>
3148
3149         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove
3150         a racy assert.
3151
3152         * aot-compiler.c aot-runtime.c: Emit the unwind info into a separate
3153         table to avoid duplicates.
3154
3155         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
3156         
3157         * aot-compiler.c (emit_method_code): Avoid writing symbols if the nodebug
3158         option is used.
3159
3160 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
3161
3162         * mini.c (mini_method_verify): Fail fulltrust code if the exception
3163         is for method or field access.
3164
3165 2009-04-20  Zoltan Varga  <vargaz@gmail.com>
3166
3167         * mini-llvm-cpp.cpp (mono_llvm_dump_value): New helper function to print
3168         a Value to stdout.
3169
3170         * mini-llvm.c (mono_llvm_emit_method): Use it.
3171         
3172         * mini-llvm.c (type_to_llvm_type): Fix the mapping of enums.
3173         (mono_llvm_emit_method): Add support for CAS. Fix handling of CSET opcodes
3174         on volatile values.
3175
3176         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add support for 
3177         synchronized methods.
3178
3179         * mini.c (mini_method_compile): Disable LLVM for dynamic methods.
3180
3181         * mini.c (mini_method_compile): Enable ABCREM when running with LLVM.
3182
3183         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOADI4_MEM/
3184         OP_LOADI8_MEM.
3185
3186         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add a MONO_LLVM env variable
3187         allowing some options to be set dynamically.
3188
3189 2009-04-19  Zoltan Varga  <vargaz@gmail.com>
3190
3191         * mini-llvm.c (mono_llvm_emit_method): Handle compares followed by an
3192         unconditional branch.
3193
3194         * mini.h (MonoTrampolineType): Add new trampoline type 
3195         'MONO_TRAMPOLINE_LLVM_VCALL' which handles virtual calls made from LLVM
3196         compiled code.
3197
3198         * mini-trampolines.c (mono_llvm_vcall_trampoline): New C trampoline 
3199         function.
3200
3201         * mini-trampolines.c (mono_create_llvm_vcall_trampoline): New trampoline
3202         creation function.
3203
3204         * mini.c (mini_init): Avoid using the common vtable trampoline when LLVM
3205         is enabled. Instead, use the llvm vcall trampoline.
3206         
3207         * mini-trampolines.c (mono_get_vcall_slot_addr): New helper function.
3208
3209         * mini-trampolines.c tramp-amd64.c tramp-x86.c: Use it.
3210         
3211         * mini-<ARCH>.c: Get rid of the identical mono_arch_get_vcall_slot_addr ()
3212         functions.
3213
3214         * mini-<ARCH>.h mini-trampolines.c mini.c: Get rid of 
3215         MONO_ARCH_COMMON_VTABLE_TRAMPOLINE, it is supported by all archs.
3216
3217         * mini-ia64.c (mono_arch_lowering_pass): Null out the sregs of the
3218         OP_IA64_CSET opcode.
3219
3220         * mini.c: Fix a warning.
3221
3222         * mini-llvm.c (mono_llvm_emit_method): Convert arguments of SWITCH and
3223         THROW to the appropriate llvm type.
3224
3225 2009-04-18  Zoltan Varga  <vargaz@gmail.com>
3226
3227         * mini.c (mini_method_compile): Add statistics for methods JITted
3228         with/without LLVM.
3229
3230 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
3231
3232         * method-to-ir.c: Fix the computation of ins_sreg_counts for ia64
3233         OP_IA64_CMP_<cond>_IMM opcodes.
3234
3235 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
3236
3237         * mini-llvm.c (emit_cond_system_exception): Implement throwing of
3238         corlib exceptions.
3239
3240         * dwarfwriter.c (mono_dwarf_writer_emit_method): Handle --regression
3241         correctly.
3242
3243         * mini-llvm.c (type_to_llvm_type): Avoid accessing t->data.klass for
3244         GENERICINST.
3245
3246 2009-04-17  Atsushi Enomoto  <atsushi@ximian.com>
3247
3248         * mini-exceptions.c : add thread id to EXCEPTION trace message.
3249
3250 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
3251
3252         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Fix AOT
3253         support.
3254
3255         * tramp-x86.c (mono_arch_get_unbox_trampoline): Implement static
3256         rgctx invoke trampolines for x86.
3257
3258         * mini-x86.c (mono_arch_output_basic_block): Add a few nops before
3259         indirect calls to simplify get_vcall_slot_addr (). Fixes #494567.
3260         (mono_arch_get_vcall_slot): Simplify this.
3261
3262 2009-04-16  Zoltan Varga  <vargaz@gmail.com>
3263
3264         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Move the calls to
3265         mono_debug_add_delegate_trampoline () to get_delegate_invoke_impl ().
3266
3267 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
3268
3269         * aot-compiler.c tramp-arm.c mini-arm.c: Implement static rgctx 
3270         trampolines for ARM. Add full-aot support for delegate invokes for ARM.
3271
3272         * mini-trampolines.c (mono_magic_trampoline): Fix the build.
3273
3274         * liveness.c (visit_bb): Remove a needless assert.
3275
3276 2009-04-13  Zoltan Varga  <vargaz@gmail.com>
3277
3278         * mini-trampolines.c (mono_create_delegate_trampoline): Delegate the
3279         full aot support to the arch specific code.
3280
3281         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Add full-aot support.
3282
3283         * aot-compiler.c (emit_trampolines): Emit delegate invoke impl trampolines.
3284
3285         * aot-compiler.c (emit_named_code): Rename this to 'emit_trampoline'.
3286         
3287         * mini-amd64.c (mono_arch_get_delegate_invoke_impls): New function to
3288         collect information about the delegate invoke impl trampolines.
3289
3290         * mini.h (MonoAotTrampInfo): New structure collecting the information needed
3291         to save trampolines during full-aot mode.
3292
3293         * mini-trampolines.c (mono_create_static_rgctx_trampoline): New trampoline
3294         creation function which returns a trampoline which sets the rgctx
3295         argument.
3296         (mono_magic_trampoline): Use the rgctx trampoline instead of an rgctx
3297         wrapper if possible.
3298         (mono_delegate_trampoline): Ditto.
3299
3300         * mini.c (mono_jit_runtime_invoke): Ditto.
3301
3302         * tramp-amd64.c: Add an implemention of static rgctx trampolines for AMD64.
3303         
3304         * aot-compiler.c aot-runtime.c: Add support for static rgctx trampolines.
3305
3306         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
3307         
3308 2009-04-12  Zoltan Varga  <vargaz@gmail.com>
3309
3310         * mini-ia64.c (mono_arch_lowering_pass): Use NULLIFY_INS instead of
3311         just setting the opcode to OP_NOP.
3312
3313 2009-04-11  Zoltan Varga  <vargaz@gmail.com>
3314
3315         * mini.c (mini_method_compile): Put the last change inside an 
3316         #ifdef MONO_ARCH_HAVE_LIVERANGE_OPS.
3317         
3318         * mini.c (mini_method_compile): Disable sharing of stack slots/registers
3319         and extend live ranges to cover the whole method when using xdb.
3320
3321         * jit-icalls.c (ldvirtfn_internal): Avoid creating rgctx wrappers here,
3322         do it in the trampolines.
3323
3324         * mini-trampolines.c (mono_magic_trampoline): Add an rgctx wrapper if
3325         needed.
3326
3327         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
3328         
3329         * method-to-ir.c (mono_method_to_ir): Avoid using the fast virtual method
3330         call code in full-aot mode since IMT is disabled there.
3331         (mono_method_to_ir): Inline ldfld wrappers which return structures too, the
3332         new JIT no longer has that restriction.
3333
3334         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
3335
3336         * aot-compiler.c (emit_extra_methods): Emit the wrapper method names in
3337         a more compact format.
3338         (mono_aot_wrapper_name): New function to return a unique name for a
3339         wrapper method, also used by the AOT runtime.
3340
3341         * aot-runtime.c (find_extra_method_in_amodule): Update after the changes to
3342         aot-compiler.c.
3343
3344         * aot-compiler.c (add_generic_class): Add the helper methods from T[]
3345         when a ICollection<T> etc is encountered.
3346         (add_generic_instances): Process method arguments/locals too.
3347         (emit_trampolines): Emit unbox trampolines for extra methods too. Shorten
3348         trampoline names.
3349
3350         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle extra methods too.
3351         
3352 2009-04-10  Zoltan Varga  <vargaz@gmail.com>
3353
3354         * aot-compiler.c: Disable the AOT compiler if the JIT is disabled.
3355
3356         * dwarfwriter.c (emit_type): Emit byref to reference types as 'int' for now.
3357
3358         * decompose.c (mono_decompose_opcode): Make this return a MonoInst*
3359         representing the result of the decomposition. Nullify instructions
3360         instead of setting them to OP_NOP since nops can't have registers
3361         set.
3362
3363 2009-04-09  Zoltan Varga  <vargaz@gmail.com>
3364
3365         * aot-compiler.c (mono_compile_assembly): Split this huge function into
3366         smaller parts. Add 'nodebug' option to prevent generation of DWARF debug
3367         info. Strip 'mapping symbols' on ARM.
3368
3369         * iltests.il.in (test_0_fconv_to_i): Disable this on ARM too.
3370         
3371         * genmdesc.pl: Applied patch by Martin Fuzzey (mfuzzey@parkeon.com). Sync
3372         this with the native genmdesc.
3373
3374 2009-04-08  Bill Holmes  <billholmes54@gmail.com>
3375
3376         * aot-runtime.c:  Fixing the MSVC build.
3377
3378         Code is contributed under MIT/X11 license.
3379
3380 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
3381
3382         * mini-llvm.c (mono_llvm_emit_method): Pass i1/i2 arguments as i4 since 
3383         JITted code depends on it.
3384
3385 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
3386
3387         * aot-compiler.c: Use new MonoGenericParam accessors.
3388
3389 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
3390
3391         Reduce memory usage and improve correctness wrt MonoGenericParam
3392         * aot-runtime.c (decode_klass_ref): Simplify generic parameter
3393         handing.  Avoid allocating MonoGenericParams, but use the ones in
3394         the container itself.
3395
3396 2009-04-07  Miguel de Icaza  <miguel@novell.com>
3397
3398         * tasklets.c: Return exceptions in the out argument.
3399
3400 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
3401
3402         * mini-llvm.c (mono_llvm_emit_method): Fix alignment in the LOCALLOC_IMM
3403         opcode. Use pointer types in more places instead of casting them to 
3404         integers.
3405
3406         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Create a pass manager to run
3407         optimizations.
3408         (mono_llvm_optimize_method): New helper function to optimize a method.
3409
3410         * method-to-ir.c (mono_emit_widen_call_res): Extract the call result 
3411         widening code so it could be called from more places.
3412         (mono_method_to_ir): Call mono_emit_widne_call_res () in several more
3413         code paths in the call opcodes.
3414
3415 Mon Apr 6 14:19:54 CEST 2009 Paolo Molaro <lupus@ximian.com>
3416
3417         * exceptions-amd64.c, mini-amd64.h: amd64 support code for continuations.
3418
3419 2009-04-06  Zoltan Varga  <vargaz@gmail.com>
3420
3421         * dwarfwriter.c: Use _ to separate class name 
3422         components as gdb can't handle '.'. Represent reference variables
3423         as 'class <NAME>&'.
3424         
3425         * mini.h (MonoCompile): Add locals_min_stack_offset/locals_max_stack_offset.
3426
3427         * mini-amd64.c (mono_arch_allocate_vars): Save min/max stack offset.
3428         
3429         * mini-gc.c: New file, contains the SGEN GC related parts of the JIT.
3430
3431         * gc-test.cs: New file with GC stack marking tests.
3432         
3433         * mini-arm.c (mono_arch_output_basic_block): Fix int->float conversion of
3434         negative numbers for vfp.
3435
3436         * basic-float.cs: Add a test.
3437         
3438 Mon Apr 6 14:12:10 CEST 2009 Paolo Molaro <lupus@ximian.com>
3439
3440         * exceptions-x86.c, mini-x86.h: x86 support code for continuations.
3441
3442 Mon Apr 6 14:09:53 CEST 2009 Paolo Molaro <lupus@ximian.com>
3443
3444         * tasklets.h, tasklets.c, mini.h, mini.c, Makefile.am: arch-indep
3445         part of tasklet/continuation support.
3446
3447 2009-04-05  Zoltan Varga  <vargaz@gmail.com>
3448
3449         * mini-llvm.c (mono_llvm_emit_method): Move the handling of
3450         amd64 opcodes inside an ifdef.
3451
3452         * dwarfwriter.c: Emit inheritance information for classes, emit fields
3453         of complex types.
3454         
3455         * dwarfwriter.c (emit_type): Emit the class info for classes.
3456
3457 2009-04-04  Zoltan Varga  <vargaz@gmail.com>
3458
3459         * Makefile.am (AM_CXXFLAGS): Add GLIB_CFLAGS to this.
3460
3461         * mini-llvm-cpp.h: New header file for mini-llvm-cpp.cpp.
3462
3463         * mini-llvm.c: Remove unused fields from EmitContext, fix memory leaks.
3464
3465         * ssa.c (mono_ssa_compute): Fix some memory leaks.
3466
3467 2009-04-03  Zoltan Varga  <vargaz@gmail.com>
3468
3469         * mini.c mini-amd64.c method-to-ir.c: Use COMPILE_LLVM in a few more places.
3470
3471         * mini-llvm.c: Update comments.
3472
3473         * mini.h (COMPILE_LLVM): New macro.
3474
3475         * decompose.c (mono_decompose_opcode): Use the COMPILE_LLVM macro.
3476
3477         * ssa.c (mono_ssa_compute): Ditto.
3478         
3479         * unwind.c (mono_unwind_get_ops_from_fde): New helper function to extract
3480         the unwind ops from a DWARF FDE.
3481
3482         * mini-llvm.c: Implement generation of unwind info for LLVM compiled
3483         methods by extracting the dwarf unwind ops from the unwind info generated
3484         by LLVM.
3485         
3486         * mini-llvm.c (mono_llvm_emit_method): Enable support for non-IMT virtual
3487         calls.
3488
3489         * mini-amd64.c (mono_arch_get_vcall_slot): Handle more kinds of the SIB
3490         addressing modes.
3491
3492 2009-04-02  Zoltan Varga  <vargaz@gmail.com>
3493
3494         * Makefile.am (llvm_sources): Enable this.
3495
3496         * mini.c (mini_method_compile): Add support for compiling with LLVM, 
3497         failing back to the JIT if something cannot be handled.
3498
3499         * mini-amd64.c (mono_arch_emit_call): Emit the arguments more simple when
3500         compiling with LLVM.
3501
3502         * decompose.c (mono_decompose_opcode): Avoid decomposing some opcodes when
3503         compiling with LLVM.
3504
3505         * method-to-ir.c (mono_method_to_ir): Avoid decomposing SWITCH when 
3506         compiling with LLVM.
3507
3508         * mini-ops.h: Add a few opcodes needed by LLVM.
3509
3510         * dwarfwriter.c (mono_dwarf_writer_emit_method): Avoid crashes if the method
3511         has no unwind info.
3512
3513         * mini-llvm.c mini-llvm-cpp.cpp: New files containing the experimental llvm
3514         backend.
3515
3516         * mini-arm.c (mono_arch_output_basic_block): Fix the ARM_FPU_NONE build.
3517
3518         * mini-arm.h mini-arm.c cpu-arm.md: Finish VFP support.
3519
3520 2009-04-01  Mark Probst  <mark.probst@gmail.com>
3521
3522         * regalloc.h, mini-codegen.c: Make vassign members gint32 to fix
3523         ridiculously large methods.
3524
3525 2009-03-31  Martin Baulig  <martin@ximian.com>
3526
3527         * debug-debugger.c (debugger_remove_breakpoint): Call
3528         mono_debugger_remove_class_init_callback ().
3529
3530 2009-03-31  Zoltan Varga  <vargaz@gmail.com>
3531
3532         * aot-compiler.c (mono_compile_assembly): Call img_writer_emit_start ()
3533         right before emitting code, not at the start.
3534
3535         * mini.c (mono_postprocess_patches): Extract this into a separate function
3536         from mono_codegen ().
3537
3538         * ssa.c (mono_ssa_compute): Set ins->klass for every PHI node, handle
3539         byref types correctly.
3540
3541 2009-03-30  Zoltan Varga  <vargaz@gmail.com>
3542
3543         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix a crash introduced
3544         by the last change.
3545
3546 2009-03-29  Zoltan Varga  <vargaz@gmail.com>
3547
3548         * mini-amd64.c (mono_arch_output_basic_block): Emit a few nops before 
3549         indirect calls, this avoids problems where get_vcall_slot () would get
3550         confused by the native code for the instruction preceeding the call.
3551         (mono_arch_get_vcall_slot): Simplify this.
3552         (mono_arch_emit_imt_argument): Remove this, it is no longer needed.
3553
3554         * mini-ops.h: Fix the definitions of the OP_IA64 opcodes, since the local
3555         register allocator now seems to depend on them instead of the data in
3556         cpu-<ARCH>.md.
3557
3558         * mini.c (mini_method_compile): Throw the correct type of exception if
3559         mono_method_get_header () fails because of a loading error.
3560
3561 2009-03-28  Zoltan Varga  <vargaz@gmail.com>
3562
3563         * mini.c (mini_method_compile): Clear the loader error if the method
3564         header cannot be decoded.
3565
3566         * mini-trampolines.c (mono_magic_trampoline): Handle generic virtual 
3567         interface methods on proxies correctly.
3568
3569         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix handling of the
3570         this argument for vtype methods. Add precise liveness info for arguments.
3571
3572         * mini-codegen.c (mono_print_ins_index): Print the vreg of the
3573         LIVERANGE_START/END opcodes.
3574
3575         * method-to-ir.c (mono_spill_global_vars): Fix liverange calculation
3576         for arguments and values in registers.
3577
3578 2009-03-27  Zoltan Varga  <vargaz@gmail.com>
3579
3580         * method-to-ir.c (mono_method_to_ir): Disable tail calls for calls which
3581         return a valuetype. Fixes #487518.
3582
3583         * iltests.il: Add a test.
3584         
3585         * aot-compiler.c: Use mono_thread_create () to create helper threads.
3586
3587         * mini-trampolines.c (mono_delegate_trampoline): Handle static delegates
3588         closed over a null reference correctly.
3589
3590 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
3591
3592         * method-to-ir.c (mono_handle_global_vregs): Fix support for ternary ops.
3593
3594 2009-03-25  Mark Probst  <mark.probst@gmail.com>
3595
3596         * mini-codegen.c (mono_local_regalloc): Don't let sregs get
3597         allocated to the same registers as fixed sregs.
3598
3599 2009-03-24  Mark Probst  <mark.probst@gmail.com>
3600
3601         * mini-ops.h: New ternary ATOMIC_CAS ops replace the old
3602         ATOMIC_CAS_IMM ops.
3603
3604         * method-to-ir.c: Handle more cases for
3605         Interlocked.CompareExchange.
3606
3607         * cpu-x86.md, mini-x86.c, mini-x86.h, cpu-amd64.md, mini-amd64.c,
3608         mini-amd64.h, cpu-ppc.md, cpu-ppc64.md, mini-ppc.c, mini-ppc.h:
3609         ATOMIC_CAS implementations for x86, AMD64, PPC and PPC64.
3610
3611 2009-03-23  Zoltan Varga  <vargaz@gmail.com>
3612
3613         * aot-runtime.c (decode_method_ref): Fix a warning.
3614
3615         * unwind.c (mono_unwind_frame): Ditto.  
3616
3617 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
3618
3619         * aot-compiler.c (arch_emit_unbox_trampoline): Fix the binary writer support.
3620         (mono_compile_assembly): Enable the binary writer for full-aot as well.
3621
3622         * image-writer.c (do_reloc): Add support for the JUMP24 relocation,
3623         fix the handling of large values in the ALU_PC_G0_NC relocation.
3624
3625 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
3626
3627         * local-propagation.c method-to-ir.c local-propagation.c: Fix warnings.
3628
3629 2009-03-22  Mark Probst  <mark.probst@gmail.com>
3630
3631         * method-to-ir.c (mono_spill_global_vars): Support for ternary
3632         ops.
3633
3634 2009-03-22  Mark Probst  <mark.probst@gmail.com>
3635
3636         * method-to-ir.c: MINI_OP3 needs a comma.
3637
3638         * method-to-ir.c, mini.h, mini.c: Remove
3639         mono_init_op_sreg_counts ().
3640
3641 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
3642
3643         * mini-arm.c (mono_arch_output_basic_block): Fix aot support in
3644         OP_JMP.
3645         
3646         * mini-arm.c (mono_arch_build_imt_thunk): Disable the !fail_tramp
3647         assertion.
3648
3649         * mini-ops.h: Fix arguments of the MEMINDEX opcodes.
3650
3651         * mini-amd64.c (mono_arch_build_imt_thunk): Simplify the fail handling
3652         code somewhat.
3653
3654 2009-03-21  Mark Probst  <mark.probst@gmail.com>
3655
3656         * cfold.c, cprop.c, decompose.c, genmdesc.c, helpers.c, ir-emit.h,
3657         liveness.c, local-propagation.c, method-to-ir.c, mini-codegen.c,
3658         mini.c, mini.h, simd-intrinsics.c, ssa.c: Support for ternary IR
3659         operations.
3660
3661 2009-03-20  Zoltan Varga  <vargaz@gmail.com>
3662
3663         * driver.c: Change location of gc_wrapper.h.
3664
3665         * method-to-ir.c (mono_find_block_region): Handle try clauses nested
3666         inside finally clauses correctly. Fixes #485721.
3667
3668         * mini.c (mono_find_spvar_for_region): This needs to handle try regions
3669         after the change above.
3670
3671         * exceptions.cs: Add a test.
3672         
3673 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
3674
3675         * unwind.c (mono_unwind_ops_encode): Increase the size of the encode buffer.
3676
3677         * mini-amd64.c (mono_arch_emit_epilog): Remove the encoding of stack size
3678         into cfg->used_int_regs, it is not needed with the dwarf unwinder.
3679         (mono_arch_compute_omit_fp): Remove the emit_epilog () workaround.
3680
3681         * mini-amd64.c (mono_arch_compute_omit_fp): Add another check to avoid hitting
3682         the stack_alloc_size < (1 << 16) assertion in emit_prolog ().
3683
3684 2009-03-19  Sebastien Pouliot  <sebastien@ximian.com>
3685
3686         * method-to-ir.c: Allow CoreCLR to throw FieldAccessException. 
3687         Simplify logic for ensure_method_is_allowed_to_call_method. 
3688         Handle wrappers on callers.
3689
3690 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
3691
3692         * Makefile.am (fullaotcheck): Don't run the generics tests, some of
3693         them don't run yet.
3694
3695         * basic-simd.cs: Fix the names of some test methods.
3696
3697 2009-03-18  Geoff Norton  <gnorton@novell.com>
3698
3699         * mini.c: Only chain sigfpe if it wasn't generated in mangaed code.
3700
3701 2009-03-18  Zoltan Varga  <vargaz@gmail.com>
3702
3703         * dwarfwriter.c (token_handler): Fix a crash caused by the last change.
3704
3705 2009-03-17  Jb Evain  <jbevain@novell.com>
3706
3707         * driver.c: remove now uneeded call to mono_gc_base_init before
3708         mono_profiler_load.
3709
3710 2009-03-17  Jb Evain  <jbevain@novell.com>
3711
3712         * dwarfwriter.c (token_handler): handle more cases.
3713
3714 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com> 
3715
3716         * method-to-ir.c: Remove more dead code (that was required only
3717         because of method_is_safe). Fix compiler warnings.
3718
3719 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com>
3720
3721         * method-to-ir.c: Remove unneeded/useless method_is_safe
3722         http://lists.ximian.com/archives/public/mono-devel-list/2009-March/031404.html
3723
3724 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
3725
3726         * mini.c (mini_method_compile): Print the method been compiled with
3727         verbose level 1 instead of 3 as this helps a lot debugging JIT crashes
3728         for people not familiar with the runtime.
3729
3730 2009-03-17  Zoltan Varga  <vargaz@gmail.com>
3731
3732         * mini-exceptions.c (get_generic_info_from_stack_frame): Avoid returning
3733         a managed object which is later put into a GList. Return its class instead.
3734
3735         * mini.c (mono_allocate_stack_slots_full): Avoid sharing ref and non-ref
3736         stack slots when using sgen.
3737
3738 2009-03-16  Zoltan Varga  <vargaz@gmail.com>
3739
3740         * dwarfwriter.c (emit_line_number_info): Really fix the eglib build.
3741
3742 2009-03-14  Zoltan Varga  <vargaz@gmail.com>
3743
3744         * local-propagation.c (reg_is_softreg_no_fpstack): Use >= instead of
3745         > so it works on the first vreg as well.
3746
3747 2009-03-13  Zoltan Varga  <vargaz@gmail.com>
3748
3749         * dwarfwriter.c (emit_line_number_info): Disable an assert which seems to
3750         trigger randomly.
3751
3752         * aot-compiler.c: Get rid of xdebug_lock (), use the loader lock instead.
3753         
3754         * dwarfwriter.c (emit_line_number_info): Fix eglib build as eglib doesn't
3755         implement GArray.
3756
3757 2009-03-12  Zoltan Varga  <vargaz@gmail.com>
3758
3759         * dwarfwriter.c (emit_line_number_info): Optimize the computation of the
3760         native->IL offset mapping.
3761
3762 2009-03-11  Zoltan Varga  <vargaz@gmail.com>
3763
3764         * mini-amd64.c (mono_arch_output_basic_block): Fix % 1. Fixes #484323.
3765
3766         * basic.cs: Add a test.
3767
3768 2009-03-11  Mark Probst  <mark.probst@gmail.com>
3769
3770         * mini-x86.c (mono_arch_output_basic_block): Use different
3771         registers in case the ones we want to overwrite are used by the
3772         other operand.  Fixes regression in #480807.
3773
3774 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
3775
3776         * aot-compiler.c (mono_compile_assembly): Make the output less verbose.
3777
3778         * dwarfwriter.c (emit_line_number_info): The line number info for
3779         IL code was off by one. Fix that.
3780
3781         * mini-s390x.c: Fix support for vtypes whose addresses are passed on the
3782         stack.
3783
3784 2009-03-09  Mark Probst  <mark.probst@gmail.com>
3785
3786         Contributed under the terms of the MIT/X11 license by Steven
3787         Munroe <munroesj@us.ibm.com>.
3788
3789         * mini-ppc.c: Correct handling of OP_LOADI4_MEMINDEX for ppc64.
3790         Fixes #483462.
3791
3792 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
3793
3794         * dwarfwriter.c (token_handler): Decode method references in non-wrappers
3795         as well.
3796
3797 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
3798
3799         * method-to-ir.c (mono_method_to_ir): Check for type load exceptions in
3800         the delegate ctor handling code. Fixes #482638.
3801         
3802         * method-to-ir.c (mini_emit_memset): Fix the handling of size '3'. Fixes
3803         #481458.
3804
3805         * iltests.il.in: Add a test.
3806         
3807         * mini-darwin.c (mono_chain_signal): Remove this, it is already in
3808         mini-posix.c.
3809
3810 2009-03-05  Mark Probst  <mark.probst@gmail.com>
3811
3812         * mini-trampolines.c (mono_create_jump_trampoline): If the method
3813         is shared generic code, return the trampoline, even if the method
3814         has already been compiled.  Fixes #479763.
3815
3816         * mini.c, mini.h: New function
3817         mono_jit_find_compiled_method_with_jit_info() which is the same as
3818         mono_jit_find_compiled_method() but also returns the jit info.
3819
3820 2009-03-05  Mark Probst  <mark.probst@gmail.com>
3821
3822         * method-to-ir.c (mono_method_to_ir): Only force the vtable var
3823         for methods which actually have one.  For all other methods, make
3824         sure the this argument var is live the whole method.
3825
3826         * mini.c (mini_method_compile): Every shared method has a
3827         this/vtable/mrgctx info.  Fixes #480807.
3828
3829 2009-03-05  Mark Probst  <mark.probst@gmail.com>
3830
3831         * mini-ppc.c (mono_arch_build_imt_thunk): Add support for mixed
3832         generic/imt thunks where some entries branch through the vtable,
3833         while other entries branch directly.
3834
3835 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
3836
3837         * mini-darwin.c (mono_chain_signal): Define this to fix the build.
3838
3839         * mini-windows.c: Ditto.
3840         
3841         * mini.c (mono_jit_runtime_invoke): Speed up the invoking of parameterless
3842         ctors.
3843
3844 2009-03-04  Zoltan Varga  <vargaz@gmail.com>
3845
3846         * dwarfwriter.c (emit_line_number_info): Add some debug code to help track
3847         down an assert.
3848
3849 2009-03-04  Mark Probst  <mark.probst@gmail.com>
3850
3851         * method-to-ir.c: Don't inline methods that use JMP.  Fixes
3852         #481403.
3853
3854 2009-03-04  Mark Probst  <mark.probst@gmail.com>
3855
3856         * exceptions-x86.c: Include debug-mini.h - fixes build.
3857
3858 2009-03-04  Martin Baulig  <martin@ximian.com>
3859
3860         * debug-mini.c: Clean up the exception API and add documentation.
3861         (mono_debugger_handle_exception): New public method; this is
3862         called when throwing an exception or encountering an unhandled one.
3863         (mono_debugger_call_exception_handler): Formerly known as
3864         mono_debugger_handle_exception(); this is used to tell the
3865         debugger that we're about to invoke an exception handler.
3866
3867 2009-03-04  Martin Baulig  <martin@ximian.com>
3868
3869         * debug-mini.c (mono_debugger_runtime_invoke): Moved here from
3870         ../metadata/mono-debug-debugger.c; save and reset exception state.
3871
3872 2009-03-02  Martin Baulig  <martin@ximian.com>
3873
3874         * debug-mini.c: Moved the debugger exception handling here from
3875         ../metadata/mono-debug-debugger.c.
3876
3877         * debug-mini.h
3878         (MonoDebuggerExceptionAction): New exception typedef.
3879
3880         * debug-mini.c
3881         (MonoDebuggerThreadInfo): Added `MonoObject *last_exception'.
3882
3883         * exceptions-amd64.c
3884         (mono_amd64_throw_exception): Use the new debugger exception
3885         handling code.
3886
3887         * mini-exceptions.c
3888         (mono_handle_exception_internal): Don't call
3889         mono_debugger_unhandled_exception() here.
3890
3891 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
3892
3893         * mini.c aot-compiler.c: Update after the changes to 
3894         mono_marshal_get_runtime_invoke ().
3895
3896         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): 
3897         Virtual generic methods might not have method->slot set, work around
3898         that.
3899
3900         * generics.cs: Add a test.
3901
3902 2009-03-02  Geoff Norton  <gnorton@novell.com>
3903
3904         * mini.c:
3905         * driver.c: Allow signal chaining of SIGFPE as well.
3906
3907 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
3908
3909         * mini-trampolines.c (mono_generic_virtual_remoting_trampoline): Update
3910         this since it now receives the method not its generic context in the
3911         IMT reg.
3912
3913         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for mixed
3914         generic/imt thunks where some entries branch through the vtable, while
3915         other entries branch directly.
3916
3917         * mini-x86.c (mono_arch_build_imt_thunk): Ditto.
3918
3919         * method-to-ir.c (mono_method_to_ir): Enable fast virtual generic call 
3920         support for interface methods as well.
3921
3922         * mini-trampolines.c: Add support for virtual generic methods in interfaces
3923         using the normal IMT thunks.
3924
3925         generics.cs: Add new tests.
3926         
3927         * method-to-ir.c (mono_method_to_ir): Pass the method instead of
3928         the generic inst to the generic imt thunks. This fixes AOT support, 
3929         improves consistency with the normal IMT thunks, and makes it easier to
3930         add support for interface generic virtual methods later.
3931
3932         * mini-trampolines.c (mono_magic_trampoline): Ditto.    
3933         
3934 2009-02-28  Zoltan Varga  <vargaz@gmail.com>
3935
3936         * driver.c (mono_set_signal_chaining): New public API function to enable
3937         signal chaining on POSIX platforms.
3938
3939         * mini-posix.c mini.c: Applied a variant of a patch by Simon Rowland 
3940         (si@lindenlab.com) to implement signal chaining. The original patch was
3941         contributed under the MIT X/11 license:
3942         https://bugzilla.novell.com/show_bug.cgi?id=318894
3943
3944 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
3945
3946         * iltests.il.in (test_0_implicit_float_to_double_conversion): Disable this
3947         too until it can be made to run on amd64.
3948
3949 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
3950
3951         * mini-x86.c (mono_arch_get_this_arg_from_call): Avoid expensive calls
3952         to  get_generic_context_from_code () + get_call_info () if possible.
3953
3954 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
3955
3956         * mini-exceptions.c (mono_handle_native_sigsegv): Implement the
3957         suspend-on-sigsegv functionality.
3958
3959         * mini.c (mini_parse_debug_options): Add a new 'suspend-on-sigsegv' option
3960         to suspend when a native SIGSEGV is received. This is useful for debugging
3961         crashes which don't happen under gdb, since a live process contains more
3962         information than a core file.
3963
3964         * mini-exceptions.c (mono_print_thread_dump): Use 
3965         MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX instead of platform defines.
3966
3967         * mini-x86.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): New define.
3968
3969         * mini-amd64.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): Ditto.
3970         
3971         * basic-float.cs: Disable the tests which currently fail on amd64.
3972
3973         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass a non-null 
3974         value to mono_arch_patch_callsite () to fix crashes.
3975         
3976         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix a warning.
3977
3978 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
3979
3980         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Replace the
3981         nop code by patching the call address to point to the nullified class init
3982         trampoline, as the former does not seem to be safe on SMP machines.
3983
3984 2009-02-23  Mark Probst  <mark.probst@gmail.com>
3985
3986         * mini-ops.h: Fix the argument types for a few x86 opcodes where
3987         they were wrong.
3988
3989 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
3990
3991         * basic-float.cs basic-calls.cs: Fix warnings.
3992
3993 2009-02-22  Mark Probst  <mark.probst@gmail.com>
3994
3995         * tramp-ppc.c (mono_arch_create_trampoline_code): Store the
3996         correct frame pointer in the LMF.  Should fix #478394.
3997
3998 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
3999
4000         * Makefile.am (fullaotcheck): Copy Mono.Simd.dll as well.
4001
4002         * image-writer.c: Make the binary writer less verbose.
4003
4004 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
4005
4006         * method-to-ir.c (mono_method_to_ir): Don't assert if string ctors
4007         are called from runtime invoke wrappers.
4008
4009 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
4010
4011         * cpu-ppc.md (store_memindex): Increase the size of this.
4012
4013 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
4014
4015         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
4016
4017         * cpu-x86.md: Fix the sizes for long_conv_to_r_un and long_conv_to_r_un_2.
4018
4019         * mini-x86.c (mono_arch_output_basic_block): Use only 64bits of precision for
4020         OP_LCONV_TO_R_UN.
4021
4022         Last fix for of #467201.
4023
4024
4025 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
4026
4027         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
4028
4029         * cpu-x86.md: Fix the sizes for fcall(_reg,_membase), long_conv_to_r4_2
4030         and long_conv_to_r8_2:
4031
4032         Fixed part of #467201.
4033
4034 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
4035
4036         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
4037
4038         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of int to float
4039         conversion to 32 bits.
4040
4041         * cpu-x86.md: Increase the size of int_conv_to_r4.
4042
4043         * basic-float.cs: Add a test for this.
4044
4045         Fixed part of #467201.
4046
4047 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
4048
4049         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
4050
4051         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of long to double
4052         conversion to 64 bits.
4053
4054         * basic-float.cs: Add a test for this.
4055
4056         Fixed part of #467201.
4057
4058 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
4059
4060         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
4061
4062         * mini-x86.c (emit_move_return_value): Don't reduce precision of functions returning float.
4063         This behavior is compatible with MS.
4064
4065         * iltest.il.in: Add a test for this.
4066
4067         Fixed part of #467201.
4068
4069 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
4070
4071         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
4072
4073         * mini-x86.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_R4, it must
4074         change the precision of the value.
4075
4076         * cpu-x86.md: Define len for float_conv_to_r4.
4077
4078         * basic-float.cs: Add a test for this.
4079
4080         Fixed part of #467201.
4081
4082 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
4083
4084         * mini.c: Adjust locking order to the new semantics where the loader lock
4085         comes first.
4086
4087 2009-02-18  Rodrigo Kumpera  <rkumpera@novell.com>
4088
4089         * aot-runtime.c:
4090         * mini-amd64.c:
4091         * mini-arm.c:
4092         * mini-ia64.c:
4093         * mini-mips.c:
4094         * mini-ppc.c:
4095         * mini-sparc.c:
4096         * mini-trampolines.c:
4097         * mini-x86.c:
4098         * mini.c:
4099         * tramp-alpha.c:
4100         * tramp-amd64.c:
4101         * tramp-arm.c:
4102         * tramp-hppa.c:
4103         * tramp-ia64.c:
4104         * tramp-mips.c:
4105         * tramp-ppc.c:
4106         * tramp-s390.c:
4107         * tramp-s390x.c:
4108         * tramp-sparc.c:
4109         * tramp-x86.c: Use mono_domain_code_* functions instead of using MonoDomain::code_mp directly.
4110
4111 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
4112
4113         * mini-codegen.c (mono_local_regalloc): Remove a ! from if (!dest_sreg1)
4114         as it is incorrect.
4115
4116 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
4117
4118         * aot-compiler.c (add_generic_class): Only add rgctx invoke wrappers
4119         for cctors if needed.
4120
4121 2009-02-17  Mark Probst  <mark.probst@gmail.com>
4122
4123         * mini-ppc.c: Fix build on Darwin.
4124
4125 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
4126
4127         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Use 2 as the DWARF
4128         version instead of 3 as valgrind doesn't like version 3.
4129
4130         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
4131
4132         * aot-compiler.c (mono_aot_method_hash): New function to return a hash
4133         usable for hashing methods.
4134         (emit_extra_methods): Use the new hash to avoid putting every method in the
4135         same hash bucket.
4136
4137         * aot-runtime.c (find_extra_method_in_amodule): Use the new hash.
4138
4139         * aot-runtime.c (can_method_ref_match_method): New function to quickly check
4140         whenever a method ref could match a method.
4141         
4142         * aot-runtime.c (load_image): Revert the previous change, it causes an AOT
4143         test to fail.
4144         
4145         * aot-runtime.c (find_extra_method_in_amodule): Add a cache for decoded 
4146         methods refs.
4147
4148         * aot-runtime.c (load_image): Pass our basedir to mono_assembly_load.
4149
4150         * aot-compiler.c (emit_exception_debug_info): Bump the maximum size of
4151         the encoding buffer.
4152
4153         * method-to-ir.c (mono_method_check_inlining): Avoid calling 
4154         mono_method_get_header () on inflated methods as an optimization.
4155
4156 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
4157
4158         * ssa.c (fold_ins): Fix another crash if the instruction following the
4159         switch was optimized away.
4160
4161 2009-02-16  Mark Probst  <mark.probst@gmail.com>
4162
4163         Contributed under the terms of the MIT/X11 license by Steven
4164         Munroe <munroesj@us.ibm.com>.
4165
4166         * mini-ppc.c, mini-ppc.h: Implement TLS for PPC64.
4167
4168 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
4169
4170         * mini.c method-to-ir.c mini-trampolines.c aot-runtime.c: Remove locking
4171         around the mono_domain_alloc calls, it is now done by the functions
4172         themselves.
4173
4174         * aot-compiler.c (compile_method): Only add wrappers referenced by
4175         the method if compiling with full AOT.
4176         (mono_compile_assembly): Error out if --aot=full is specified on
4177         a platform where it is not supported.
4178
4179         * aot-compiler.c (emit_trampolines): Emit generic class init trampolines
4180         on ARM too.
4181
4182         * tramp-arm.c (mono_arch_create_generic_class_init_trampoline_full): Add
4183         AOT support.
4184
4185         * aot-runtime.c (load_named_code): Handle 
4186         mono_arm_throw_exception_by_token.
4187
4188         * mini-arm.h: Add declaration of mono_arm_throw_exception_by_token.
4189
4190         * image-writer.c (asm_writer_emit_pointer_unaligned): Make this really
4191         unaligned.
4192
4193         * Makefile.am (fullaotcheck): Exit if a test fails.
4194
4195         * aot-compiler.c (mono_compile_assembly): Use the ASM writer for full aot
4196         on ARM.
4197         (mono_compile_assembly): Handle the assembler failing.
4198
4199         * image-writer.c (asm_writer_emit_section_change): Handle ARM gas not
4200         accepting subsections of .bss.
4201
4202         * ssa.c (visit_inst): Fix a crash if the instruction following a switch
4203         was optimized away.
4204
4205         * aot-compiler.c: Remove some unused includes.
4206         
4207         * aot-compiler.c (MonoAotCompile): Remove some unused fields which are
4208         now in MonoImageWriter.
4209
4210         * mini-x86.c (mono_arch_get_vcall_slot): Handle yet another
4211         code sequence which matches a non-virtual call. Fixes #472654.
4212
4213 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
4214
4215         * aot-compiler.c: Use xdebug_lock ()/unlock () macros for locking in the
4216         xdebug code.
4217         
4218         * aot-compiler.c: Make the xdebug code not depend on the AOT compiler,
4219         use the image/dwarf writers directly.
4220
4221         * image-writer.c (struct _MonoImageWriter): Remove the unused 'image'
4222         field.
4223
4224         * aot-compiler.c (MonoAotCompile): Remove fields which are now in
4225         MonoDwarfWriter.
4226
4227         * image-writer.h: Fix some typos.
4228
4229         * dwarfwriter.h dwarfwriter.c: New files.
4230         
4231         * aot-compiler.c: Extract the DWARF info writing functionality into a 
4232         separate module.
4233
4234         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add a 'out_unwind_ops'
4235         argument to return unwind info.
4236
4237         * tramp-arm.c (mono_arch_create_trampoline_code_full): Ditto.
4238
4239         * aot-compiler.c: Emit unwind info for trampolines in full-aot mode.
4240         
4241         * aot-runtime.c (decode_method_ref): Add a case for 
4242         MONO_AOT_METHODREF_WRAPPER_NAME.
4243
4244         * mini.h: Add constants for the magic numbers used in encode_method_ref ()
4245         for AOT.
4246
4247         * aot-compiler.c (encode_method_ref): Use the new constants.
4248
4249         * aot-runtime.c (decode_method_ref): Ditto.
4250
4251         * aot-compiler.c (compile_method): For generic icalls, queue the wrapper to
4252         be compiled, not the icall itself.
4253
4254 2009-02-14  Zoltan Varga  <vargaz@gmail.com>
4255
4256         * aot-runtime.c (find_extra_method_in_amodule): Avoid decoding wrapper names
4257         using decode_method_ref ().
4258
4259         * method-to-ir.c (mini_emit_ldelema_1_ins): If the array index is a long,
4260         convert it to an in32. Fixes #475859.
4261
4262         * arrays.cs: Add a test.
4263
4264 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
4265
4266         * mini-s390x.c (mono_arch_output_basic_block): Fix the shift amounts in 
4267         OP_LCONV_TO_U2.
4268
4269         * basic-long.cs: Add a test.
4270
4271 2009-02-12  Mark Probst  <mark.probst@gmail.com>
4272
4273         * mini-x86.c, mini-x86.h: Very simple frame pointer removal.  We
4274         remove the frame pointer in leaf methods which don't receive any
4275         arguments, don't throw exceptions and don't do dynamic stack
4276         allocations.
4277
4278 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
4279
4280         * mini-amd64.c (mono_arch_build_imt_thunk): Fix size calculation after
4281         the fail_tramp changes. Hopefully fixes #475132.
4282
4283 2009-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
4284
4285         * method-to-ir.c (mono_emit_method_call_full): Use mono_metadata_signature_dup_mempool
4286         instead of mono_metadata_signature_dup_full.
4287
4288 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
4289
4290         * ssa.c (fold_ins): Use MONO_IS_JUMP_TABLE () and MONO_JUMP_TABLE_FROM_INS ()
4291         for processing jump tables. Fixes #473787.
4292
4293 2009-02-11  Mark Probst  <mark.probst@gmail.com>
4294
4295         * mini-generic-sharing.c: mini_method_get_context() just calls
4296         mono_method_get_context_general() now.
4297
4298         * mini.c, mini.h: Moved get_object_generic_inst(),
4299         construct_object_context_for_method() and
4300         mono_domain_lookup_shared_generic() to metadata/generic-sharing.c.
4301
4302 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
4303
4304         * branch-opts.c (mono_if_conversion): Handle the case where the merged 
4305         basic block fell through to its successor bblock without a branch. Fixes
4306         #474718.
4307
4308         * iltests.il.in: Add a test.
4309         
4310         * aot-compiler.c (encode_method_ref): Encode methods of array types.
4311         (can_encode_patch): We can now handle arrays of generic parameters and
4312         array methods.
4313
4314         * aot-runtime.c (decode_method_ref_2): Handle methods of array types.
4315
4316         * aot-compiler.c aot-runtime.c: Emit the size of specific trampolines into
4317         the AOT file to avoid some #ifdefs in aot-runtime.c
4318
4319         * mini.h: Bump AOT file format version.
4320
4321 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
4322
4323         * Makefile.am (fullaotcheck): Make this run the tests.
4324
4325         * aot-compiler.c: Make the printing of skipped methods runtime configurable.
4326
4327 2009-02-10  Mark Probst  <mark.probst@gmail.com>
4328
4329         * mini-x86.c (mono_arch_context_get_int_reg): Handle all registers
4330         individually.  Fixes #473482.
4331
4332 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
4333
4334         * mini-arm.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
4335
4336 2009-02-09  Jeffrey Stedfast  <fejj@novell.com>
4337
4338         * aot-compiler.c (arch_emit_plt_entry): Fixed to compile.
4339         (mono_compile_assembly): Hush compile warnings about
4340         uninitialized [tmp_]outfile_name variables in the !use_bin_writer
4341         code path.
4342
4343 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
4344
4345         * exceptions-arm.c (mono_arch_find_jit_info): Fix aot support.
4346
4347         * mini-arm.c: Checkin unwind related changes missing from an earlier commit.
4348
4349         * aot-compiler.c: Fix arm support.
4350
4351         * image-writer.c: Move the R_ARM constants to image-writer.h. Export a
4352         img_writer_emit_unset_mode () function.
4353
4354         * unwind.c (mono_unwind_get_dwarf_data_align): New helper function.
4355         (mono_unwind_get_dwarf_pc_reg): Ditto.
4356
4357         * aot-compiler.c (emit_dwarf_abbrev): Another large reorganization.
4358         Move almost all platform specific code to a set of arch_ functions, 
4359         and document them to ease porting.
4360         
4361         * aot-compiler.c (mono_xdebug_init): Fix xdebug support.
4362
4363         * image-writer.h image-writer.c: New files, extracted from aot-compiler.c.
4364
4365         * aot-compiler.c: Extract the image writing functionality into a separate
4366         module to reduce the size of this file.
4367
4368 2009-02-09  Geoff Norton  <gnorton@novell.com>
4369
4370         * mini-s390.c: Fix the signature of emit_sig_cookie.
4371
4372 2009-02-09  Zoltan Varga  <vargaz@gmail.com>
4373
4374         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_IMAGE.
4375
4376         * aot-runtime.c (is_shared_got_patch): Ditto.
4377
4378         * aot-runtime.c (load_named_code): Cope with the fact that 
4379         decode_got_entry () won't decode the patch fully if its corresponding got
4380         entry is already filled.
4381         
4382         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): 
4383         Initialize *ji.
4384         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
4385
4386         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code'
4387         as the moving pointer instead of 'buf' for consistency with the rest of the
4388         codebase.
4389         (mono_arch_create_monitor_exit_trampoline): Ditto.
4390
4391         * aot-compiler.c (emit_trampolines): Add throw_pending_exception/
4392         generic_class_init trampolines.
4393         (add_generic_class): Extract some code from add_generic_instances () into a
4394         separate function so it can be called from other places too.
4395         (compile_method): Call add_generic_class () for the classes of inflated methods
4396         referenced by the method.
4397         (can_encode_patch): Allow references to generic parameters.
4398
4399         * aot-runtime.c: Add support the patches required by the new trampolines.
4400         
4401         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Add full-aot
4402         support.
4403
4404         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline_full): Add
4405         full-aot support.
4406
4407         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Rename
4408         this from get_throw_pending_exception, make the signature full aot compatible.
4409
4410         * Makefile.am (fullaotcheck): New target to run full-aot tests.
4411
4412         * method-to-ir.c (inline_method): Save/Restore cfg->ret_var_set too.
4413
4414         * exceptions.cs: Add a test.
4415
4416 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
4417
4418         * unwind.c (mono_unwind_frame): Eliminate the data_align_factor argument,
4419         use the DWARF_DATA_ALIGN constant instead.
4420
4421         * exception-<ARCH>.c: Update after the above change.
4422
4423         * exceptions-arm.c (mono_arch_find_jit_info): Transition this to use the
4424         dwarf unwinder.
4425
4426         * mini-arm.c: Enable the dwarf unwinder.
4427
4428         * mini-trampolines.c (mono_magic_trampoline): Use mono_class_get_vtable_entry ()
4429         instead of mono_class_setup_vtable ().
4430
4431 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
4432
4433         * exceptions-x86.c (mono_arch_find_jit_info): Transition this to use the
4434         dwarf unwinder.
4435
4436         * mini-x86.h: Enable the dwarf unwinder.
4437
4438 2009-02-06  Raja R Harinath  <harinath@hurrynot.org>
4439
4440         Fix mcs/tests/test-7.cs
4441         * mini-amd64.c (mono_arch_allocate_vars): Revert change from
4442         2009-02-03.
4443
4444 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
4445
4446         * mini.c (print_jit_stats): Remove some unused statistics.
4447
4448 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
4449
4450         * aot-compiler.c (emit_klass_info): Update after MonoClass changes.
4451
4452 2009-02-05  Mark Probst  <mark.probst@gmail.com>
4453
4454         * jit-icalls.c (mono_helper_compile_generic_method): Don't inflate
4455         the method we get from mono_object_get_virtual_method() because
4456         that function does it properly, now.
4457
4458 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
4459
4460         * unwind.c (mono_unwind_ops_encode): Handle offsets greater than 32 between
4461         opcodes. Fixes #472775.
4462
4463 2009-02-05  Mark Probst  <mark.probst@gmail.com>
4464
4465         * mini-exceptions.c (ves_icall_get_frame_info): Account for the
4466         fact that mono_find_jit_info() sometimes returns the context
4467         corresponding to the jit info in new_ctx.  Fixes #472600.
4468
4469 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
4470
4471         * method-to-ir.c mini-hppa.c mini.c trace.c mini-s390x.c aot-compiler.c
4472         mini-s390.c: Use mono_class_enum_basetype () instead of accessing
4473         klass->enum_basetype directly.
4474
4475         * aot-compiler.c (emit_class_dwarf_info): Add support for all possible
4476         enum subtypes.
4477
4478         * unwind.c: Avoid 0 sized arrays.
4479
4480 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
4481
4482         * mini-exceptions.c (mono_setup_altstack): Use a more reasonable altstack
4483         size on systems with 64k pages. Fixes #471389.
4484
4485 2009-02-04  Mark Probst  <mark.probst@gmail.com>
4486
4487         Contributed under the terms of the MIT/X11 license by Steven
4488         Munroe <munroesj@us.ibm.com>.
4489
4490         * mini-ppc.c (mono_arch_output_basic_block): Generate better code
4491         for LOADI4_MEMBASE.  Use addi instead of addic if it's not
4492         necessary.
4493
4494 2009-02-04  Mark Probst  <mark.probst@gmail.com>
4495
4496         Contributed under the terms of the MIT/X11 license by Steven
4497         Munroe <munroesj@us.ibm.com>.
4498
4499         * exceptions-ppc.c (mono_arch_get_restore_context): Code size
4500         comparison fix.
4501
4502         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline):
4503         The trampoline can be longer on PPC64.
4504
4505 2009-02-04  Mark Probst  <mark.probst@gmail.com>
4506
4507         Contributed under the terms of the MIT/X11 license by Steven
4508         Munroe <munroesj@us.ibm.com>.
4509
4510         * mini-ppc.c: Compiler warning fixes and trivial code
4511         simplifications.
4512
4513 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
4514
4515         * method-to-ir.c (mono_spill_global_vars): Fix problems caused by reading
4516         ins->dreg which could be a hardware register, not a vreg.
4517
4518         * aot-compiler.c (emit_method_dwarf_info): Ditto.
4519         
4520         * mini.h (MonoCompile): Remove vreg_to_var_num array, it is no longer used.
4521         (struct MonoMethodVar): Add a vreg field, holding the vreg of variable.
4522
4523         * mini.c (mono_compile_create_var_for_vreg): Set var->vreg.
4524         
4525         * mini-amd64.c (mono_arch_output_basic_block): Avoid reading cfg->varinfo[..]
4526         ->dreg, that is not the vreg we are looking for.
4527
4528         * mini-amd64.h mini-x86.h: Enable MONO_ARCH_LIVENESS_OPS again.
4529
4530         * mini-x86.c (mono_arch_output_basic_block): Add support for LIVERANGE_START/
4531         LIVERANGE_END.
4532
4533         * method-to-ir.c (mono_spill_global_vars): Add an assert to help track down
4534         strange crashes.
4535
4536 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
4537
4538         * mini-x86.c (mono_arch_emit_prolog): Emit unwind info.
4539
4540         * aot-compiler.c (emit_line_number_info): Fix line number emission when
4541         the line diff is 0.
4542
4543         * aot-compiler.c: Add xdebug support on x86.
4544
4545         * unwind.c: Add x86 support.
4546         
4547         * aot-compiler.c (emit_exception_debug_info): Control the emission of
4548         unwind info using a new MONO_ARCH_HAVE_XP_UNWIND define.
4549
4550         * mini.c (mini_method_compile): Ditto.
4551         
4552         * mini-amd64.c (mono_arch_allocate_vars): Avoid setting cfg->ret->dreg to
4553         the variable index.
4554
4555         * aot-compiler.c: Add emit_push_section ()/emit_pop_section () helper functions
4556         which mimic .push_section/.pop_section in GAS.
4557         
4558         * aot-compiler.c: Emit precise live range information for variables.
4559
4560         * mini-amd64.c (mono_arch_output_basic_block): Add OP_LIVERANGE_START/END.
4561
4562         * method-to-ir.c (mono_spill_global_vars): Compute the instructions marking
4563         the live ranges of variables, and emit OP_LIVERANGE_START/END opcodes for
4564         them.
4565
4566         * mini-ops.h: Add OP_LIVERANGE_START/END opcodes to mark
4567         the live ranges of variables.
4568
4569         * mini.h (struct MonoMethodVar): Add two fields containing the live range
4570         of the variable in terms of native offsets.
4571
4572 2009-02-03  Rodrigo Kumpera  <rkumpera@novell.com>
4573
4574         * arrays.cs: Test for Get/SetValue of array with negate lower bounds.
4575         
4576 2009-02-02  Mark Probst  <mark.probst@gmail.com>
4577
4578         Contributed under the terms of the MIT/X11 license by Steven
4579         Munroe <munroesj@us.ibm.com>.
4580
4581         * exceptions-ppc.c (restore_regs_from_context): Correct operand
4582         order (offset then base reg) for ppc_load_multiple_regs.
4583         (emit_save_saved_regs) Correct operand order for
4584         ppc_store_multiple_regs.
4585         (mono_arch_get_call_filter): Correct operand order for
4586         ppc_load_multiple_regs.
4587
4588         * mini-ppc.c (emit_memcpy): Fix operand order for
4589         ppc_load_reg_update and ppc_store_reg_update.
4590         (mono_arch_output_basic_block): Correct operand order for ppc_lha.
4591         (mono_arch_emit_epilog): Correct operand order for
4592         ppc_load_multiple_regs.
4593
4594         * tramp-ppc.c (mono_arch_create_trampoline_code): Correct operand
4595         order for ppc_store_multiple_regs and ppc_load_multiple_regs.
4596
4597 2009-02-02  Mark Probst  <mark.probst@gmail.com>
4598
4599         * cpu-ppc64.md: Fixed storer4_memindex length.
4600
4601 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
4602
4603         * aot-compiler.c (emit_line_number_info): Optimize the size of the emitted
4604         line number info.
4605         
4606         * aot-compiler.c (emit_line_number_info): Optimize this.
4607
4608 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
4609
4610         * aot-compiler.c: Disassemble tokens in the IL disassembly.
4611         
4612         * aot-compiler.c: Add debug info for methods without debug info by
4613         emitting an IL file and having the line number info referencing that file.
4614
4615         * aot-compiler.c: Optimize the size of the generated line number info.
4616
4617         * aot-compiler.c: Emit line number info in xdebug mode.
4618
4619         * aot-compiler.c (mono_save_xdebug_info): Receive a MonoCompile instead of a
4620         million arguments.
4621
4622 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
4623
4624         * aot-compiler.c (emit_method_dwarf_info): Emit names for local variables.
4625
4626         * driver.c (mono_main): Enable debugging support automatically if XDEBUG
4627         is used.
4628
4629 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
4630
4631         * basic-calls.cs: Test for the weird crash found on arm.
4632         
4633 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
4634
4635         * cpu-arm.md: Increase the size of storer8_membase_reg and
4636         loadr8_membase_reg to 24 bytes to accomodate the extra add.
4637
4638         * mini-arm.c (mono_arch_output_basic_block): Under FPA, when emitting
4639         OP_STORER8_MEMBASE_REG and OP_LOADR8_MEMBASE_REG, add the original
4640         reg to LR otherwise we'll be loading/storing from just the offset.
4641
4642 2009-01-30  Miguel de Icaza  <miguel@novell.com>
4643
4644         Question: if we are storing gint32's inside the "*native_offset",
4645         should we change the signature to "gint32 *native_offset" to
4646         ensure that we do not have type definition problems?
4647         
4648         * mini-exceptions.c (ves_icall_get_frame_info): Cast the gint32 to
4649         an int * as this is what the other function expects, causes
4650         problems with Freescale's compiler that defined int32_t to be a
4651         long and makes int incompatible 
4652
4653 2009-01-30  Miguel de Icaza  <miguel@novell.com>
4654
4655         * Rename generic-sharing.c to mini-generic-sharing.c to avoid the
4656         filename conflict with bjam.
4657
4658 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
4659
4660         * cpu-arm.md: Increase the size of storer8_membase_reg to 20 bytes
4661         as it might use decomposed ops.
4662
4663 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
4664
4665         * jit-icalls.c (mono_imul_ovf): Fix one of the literals.
4666
4667         * mini.c (mini_init): Emulate mul.ovf opcodes if MONO_ARCH_EMULATE_MUL_OVF
4668         is defined.
4669
4670         * mini-arm.h (MONO_ARCH_EMULATE_MUL_OVF): New define.
4671
4672         * mini-arm.c (mono_arch_build_imt_thunk): Rewrite this to allow large vtable
4673         offsets.
4674
4675         * mini-arm.c (mono_arch_context_get_int_reg): Adapt this to the "clever"
4676         way registers are stored in MonoContext on arm.
4677
4678         * unwind.c: Rewrite the handling of the cached_info array to use hazard pointers
4679         instead of locking so mono_get_cached_unwind_info () becomes signal safe.
4680
4681         * mini.c (mini_init): Emuate OP_FCONV_TO_I when using soft float.
4682
4683         * mini-arm.c (emit_load_volatile_arguments): Avoid an unneccesary assert.
4684
4685         * mini.c (mini_init): Register mono_isfinite.
4686
4687         * jit-icalls.c (mono_isfinite): New jit icall.
4688
4689         * method-to-ir.c (mono_decompose_soft_float): Add support for OP_CKFINITE.
4690         
4691         * exceptions-arm.c (mono_arch_find_jit_info): When unwinding using the LMF,
4692         set esp to ARMREG_FP instead of R12, since R12 stores the value of sp for
4693         the parent frame.
4694
4695 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
4696
4697         * exceptions-arm.c (mono_arch_find_jit_info): The frame layout on arm have
4698         separate frame and stack pointers, so we must use FP to find the register
4699         spill area.
4700         The FP reg is retrieved from the MonoContext::regs array.
4701
4702 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
4703
4704         * mini-arm.c (mono_arch_output_basic_block): Emit two cond ops for OP_FBGE
4705         as FPA requires it.
4706
4707 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
4708
4709         * mini-arm.c (mono_arch_emit_setret): Emit OP_FMOVE for methods that
4710         return R4 and R8 when not running under softfloat.
4711
4712         Fixes basic-calls.exe
4713
4714 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
4715
4716         * mini-arm.c: Implement some overflow opcodes.
4717
4718 2009-01-29  Miguel de Icaza  <miguel@novell.com>
4719
4720         * ssa.c: handle another alloca.h
4721
4722         * mini-exceptions.c (mono_handle_native_sigsegv): Do not use
4723         PLATFORM_WIN32 for detecting if we have sigaction.   Instead use
4724         MONO_ARCH_USE_SIGACTION. 
4725
4726         * aot-runtime.c, mini-exceptions.c: Replace platform define with
4727         capability defines.
4728
4729         * method-to-ir.c (mono_method_to_ir): Type cast fix on some platforms.
4730
4731         * mini-ppc.h (MONO_ARCH_USE_SIGACTION): Do not define this for all
4732         PPC targets as sigaction does not exist on all platforms, define
4733         this on a per-platform basis.
4734
4735         Instead of erroring out if the platform is not defined, include
4736         mini-ppc-os.h, and expect that the OS specific setting provides
4737         the required information.   
4738
4739 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
4740
4741         * aot-compiler.c: Fix --enable-minimal=aot.
4742
4743 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
4744
4745         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Fix the
4746         previous change.
4747
4748 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
4749
4750         * exceptions-arm.c: Fix warnings.
4751
4752         * tramp-arm.c aot-compiler.c unwind.h unwind.c: Implement xdebug support for
4753         ARM.
4754
4755         * mini-x86.c: Fix --enable-minimal=jit build.
4756
4757         * mini.c: Really fix --enable-minimal=jit build.
4758         
4759         * mini.c (construct_object_context_for_method): Move this outside
4760         the DISABLE_JIT block to fix the --enable-minimal=jit build.
4761
4762         "Backported" of r124984 from 2.0 branch.
4763         
4764         * aot-compiler.c aot-runtime.c: Add full-aot support delegate BeginInvoke/EndInvoke.
4765
4766         "Backport" of r124977 + r124978 from 2.0 branch.
4767         
4768         * exceptions-arm.c (mono_arm_throw_exception_by_token): New helper function
4769         to avoid calling mono_exception_from_token () from the throw trampoline.
4770         (mono_arch_get_throw_exception_generic): call throw_exception_by_token
4771         for throwing corlib exceptions, this fixes full-aot support for corlib
4772         exceptions.
4773
4774         * aot-compiler.c (compile_method): Make a copy of cfg->locals to fix the build.
4775
4776 2009-01-29  Miguel de Icaza  <miguel@novell.com>
4777
4778         * mini-darwin.c, mini-windows.c, mini-posix.c: Commit the first
4779         part of the changes to split the code in mini into operating
4780         system specific files.
4781
4782         This patch was done by copying mini.c to the respective files to
4783         preserve SVN history.
4784
4785 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
4786
4787         * aot-compiler.c (emit_method_dwarf_info): Add minimal support for locals.
4788
4789 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
4790
4791         * method-to-ir.c (mono_method_to_ir): Avoid generic sharing for calls made to
4792         remoting-invoke-with-check wrappers of shared methods.
4793
4794         * mini.c (print_jit_stats): Print out major gc count/time for libgc too.
4795
4796 2009-01-27  Mark Probst  <mark.probst@gmail.com>
4797
4798         * method-to-ir.c (emit_stloc_ir): Only apply the reg-reg move
4799         optimization if the top of stack is the last instruction in the
4800         bblock.  Otherwise it might have been used after its definition.
4801         Fixes #469742.
4802
4803 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
4804
4805         * mini-trampolines.c (mono_magic_trampoline): Print out the caller
4806         method as well when get_vcall_slot () fails to match a code sequence.
4807
4808         * mini-arm.c: Fix the android build, which doesn't have
4809         __aeabi_read_tp.
4810
4811 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
4812
4813         * mini-s390x.c: Remove a stray declaration of emit_sig_cookie () to fix
4814         the s390x build.
4815
4816 2009-01-26  Rodrigo Kumpera  <rkumpera@novell.com>
4817
4818         * unwind.c (mono_unwind_cleanup): Don't crash if cached_info is NULL.
4819
4820 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
4821
4822         * mini.c (mini_method_compile): Save the unwind info generated by the JIT
4823         and put its id into jinfo->used_regs. This is only used on amd64,
4824         which is currently the only platform generating unwind info.
4825
4826         * exceptions-amd64.c: Instead of unwinding based on a register mask, use
4827         the dwarf unwinder. This is required to correctly handle async exceptions
4828         like thread abort and stack overflows, which can happen while a method
4829         is in the middle of its prolog or epilog.
4830         
4831         * aot-runtime.c (mono_aot_get_unwind_info): New helper function to obtain
4832         the unwind info belonging to an AOTed method.
4833
4834         * aot-compiler.c aot-runtime.c: Save/Load the unwind info emitted by the JIT
4835         into cfg->unwind_ops.
4836         
4837         * unwind.c (mono_unwind_frame): Use <= instead of < for the loop exit check.
4838
4839         * mini.c (mini_init): Call mono_unwind_init ().
4840         (mini_cleanup): Call mono_unwind_cleanup ().
4841
4842         * unwind.c: Add functions for managing a set of unwind info entries, allowing
4843         unwind info to be shared between methods.
4844
4845         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info for the registers
4846         saved in the LMF.
4847
4848         * exceptions-amd64.c (mono_arch_exceptions_init): Call 
4849         get_throw_pending_exception () to avoid initialization races.
4850
4851         * mini-exceptions.c (mono_exceptions_init): Call an arch specific
4852         mono_arch_exceptions_init () function.
4853
4854         * mini.h (MONO_INST_NEW): Remove duplicate setting of cil_code.
4855
4856 2009-01-25  Zoltan Varga  <vargaz@gmail.com>
4857
4858         * mini.c (mono_get_domain_intrinsic): New helper function.
4859         (mono_get_thread_intrinsic): Ditto.
4860
4861         * mini-arm.c mini-ia64.c: Use the new helper functions.
4862         
4863         * method-to-ir.c (mono_method_to_ir): Fix the comment for
4864         the last constrained_call change, since it is needed in the non-AOT
4865         case as well.
4866
4867         * mini-arm.c: Implement OP_TLS_GET on arm eabi linux.
4868         
4869         * mini-arm.c (mono_arch_emit_prolog): Add an inlined version of 
4870         mono_get_lmf_addr () on arm eabi linux.
4871
4872 2009-01-24  Zoltan Varga  <vargaz@gmail.com>
4873
4874         * mini-amd64.c (mono_arch_get_vcall_slot): Handle yet another
4875         code sequence which matches a non-virtual call.
4876
4877 2009-01-23  Mark Probst  <mark.probst@gmail.com>
4878
4879         * mini-ppc.c (mono_arch_context_get_int_reg): Allow access to the
4880         stack pointer (r1).
4881
4882 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
4883
4884         * aot-compiler.c aot-runtime.c: Treat delegate-invoke wrappers similarly to
4885         runtime-invoke wrappers, since they are also shared based on signature.
4886
4887 2009-01-22  Mark Probst  <mark.probst@gmail.com>
4888
4889         * mini-exceptions.c (ves_icall_get_frame_info): Fetch the generic
4890         info from the (correct) context.
4891
4892 2009-01-22  Zoltan Varga  <vargaz@gmail.com>
4893
4894         * unwind.c (mono_unwind_frame): Remove a stray g_free ().
4895         
4896         * unwind.c (mono_unwind_frame): New function to unwind through a frame
4897         using dwarf unwinding info. Not yet used.
4898
4899         * mini.c (mini_init): When using xdebug, disable freeing of domains.
4900
4901 2009-01-21  Mark Probst  <mark.probst@gmail.com>
4902
4903         * mini-ppc.c (mono_arch_delegate_invoke_impl): Return function
4904         descriptors.
4905
4906         * mini-trampolines.c (mono_delegate_trampoline): Remove the PPC64
4907         special case and handle mono_arch_delegate_invoke_impl() returning
4908         function descriptors.
4909
4910         * tramp-ppc.c (mono_arch_create_trampoline_code): Delegate
4911         trampolines return function descriptors, too.
4912
4913 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
4914
4915         * method-to-ir.c (handle_alloc): Avoid generic instances in the
4916         out_of_line optimization.
4917
4918 2009-01-21  Martin Baulig  <martin@ximian.com>
4919
4920         * mini.h
4921         (MonoCompile): Added `disable_deadce_vars' to disable removing
4922         unused variables.
4923
4924         * mini.c
4925         (mini_method_compile): Set `cfg->disable_deadce_vars' when running
4926         inside the debugger.
4927
4928         * liveness.c (mono_analyze_liveness): Don't remove any unused
4929         variables if `cfg->disable_deadce_vars' is set.
4930
4931 2009-01-21  Mark Probst  <mark.probst@gmail.com>
4932
4933         * method-to-ir.c: Only apply exception constructor optimization if
4934         the the method actually belongs to an exception class.  Fixes
4935         #467456.
4936
4937 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
4938
4939         * mini-trampolines.c (mono_delegate_trampoline): Put back the previous
4940         change inside a #ifdef __mono_ppc64__.
4941
4942         * aot-compiler.c (compile_method): Remove the previous limitation.
4943
4944         * method-to-ir.c (method-to-ir.c): Add support for the constrained prefix
4945         on type variables in AOTed code.
4946         
4947         * aot-compiler.c (compile_method): Skip generic methods having type 
4948         constraints on their generic parameters.
4949
4950         * aot-compiler.c (compile_method): Check for methods which cannot be
4951         encoded inside RGCTX_FETCH patches as well.
4952
4953         * mini-exceptions.c (mono_print_thread_dump): Fix the windows
4954         build.
4955
4956 2009-01-20  Mark Probst  <mark.probst@gmail.com>
4957
4958         * method-to-ir.c: Force the vtable variable in shared generic code
4959         for the case that they might show up on a stack trace where they
4960         are needed.
4961
4962         * mini-exceptions.c: Save and use generic sharing info as well as
4963         IP in stack traces to resolve shared generic instantiations.
4964
4965 2009-01-20  Zoltan Varga  <vargaz@gmail.com>
4966
4967         * mini-trampolines.c (mono_delegate_trampoline): Revert the change which
4968         added a mono_get_addr_from_ftnptr () as it breaks the ia64 build.
4969
4970 2009-01-20  Mark Probst  <mark.probst@gmail.com>
4971
4972         * method-to-ir.c: Do generic sharing for array constructors.
4973
4974 2009-01-20  Rodrigo Kumpera  <rkumpera@novell.com>
4975
4976         * mini-exceptions.c (mono_print_thread_dump): Add information
4977         about the thread state using wapi_current_thread_desc.
4978
4979 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
4980
4981         * basic-simd.cs: Tests for the new constructors. 
4982
4983 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
4984
4985         * mini-ops.h: Added OP_EXPAND_*
4986
4987         * cpu-x86.md: Same.
4988
4989         * mini-x86.c (mono_arch_output_basic_block): Same.
4990         
4991         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for single element constructors.
4992
4993 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
4994
4995         * iltests.il.in: Add a test for #467385.
4996
4997 2009-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
4998
4999         * mini.c (mini_thread_cleanup): Don't cleanup TLS storage if the
5000         thread been cleaned up is not the same currently in execution.
5001
5002         Fixes appdomain-unload crashes on windows, osx and linux variants
5003         without the __thread keyword.
5004
5005 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
5006
5007         * mini-arm.c (mono_arch_flush_icache): Applied patch from Koushik Dutta
5008         (koush@koushikdutta.com). Implement this for android.
5009
5010         * helpers.c (mono_disassemble_code): Avoid assembler errors if the id
5011         begins with a digit.
5012
5013         * method-to-ir.c: Call mono_gc_get_write_barrier () instead of
5014         mono_marshal_get_write_barrier ().
5015
5016 2009-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
5017
5018         * decompose.c (mono_decompose_vtype_opts): Fix the decomposition
5019         of OP_VCALL_* ops for 8 bytes vtypes on 32 bits archs and platorms
5020         that pass them on a register pair.
5021
5022         This affects windows, OSX and FreeBSD. The mono/tests/handleref.exe
5023         test was crashing due to that.
5024
5025 Fri Jan 16 15:21:21 CET 2009 Paolo Molaro <lupus@ximian.com>
5026
5027         * exceptions-ppc.c: tweaks from malc (OV-Soft) to fix the size of the
5028         trampoline code. Include ucontext.h only if available.
5029
5030 2009-01-15  Mark Probst  <mark.probst@gmail.com>
5031
5032         * mini.c: mono_domain_lookup_shared_generic() takes an open method
5033         and doesn't check whether it's sharable, like it was before
5034         removing the shared generics hash.  This brings IronPython
5035         performance back to what it was before that change.
5036
5037 2009-01-14  Mark Probst  <mark.probst@gmail.com>
5038
5039         * method-to-ir.c: Handle delegate invocation optimization earlier,
5040         otherwise it would be handled (much more slowly) by the
5041         final/sealed optimization.
5042
5043 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
5044
5045         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes when the current thread or
5046         domain is not set. Fixes #465864.
5047
5048 2009-01-12  Mark Probst  <mark.probst@gmail.com>
5049
5050         * method-to-ir.c: Don't stop sharing of generic methods with catch
5051         clauses - we already handle those.
5052
5053 2009-01-12  Mark Probst  <mark.probst@gmail.com>
5054
5055         * mini.c, mini.h: lookup_generic_method() is now
5056         mono_domain_lookup_shared_generic() and uses the jit_code_hash,
5057         making the shared_generics_hash obsolete.
5058
5059 2009-01-12  Mark Probst  <mark.probst@gmail.com>
5060
5061         * mini-ppc.c, exceptions-ppc.c, cpu-ppc.md, cpu-ppc64.md: Don't
5062         use the red zone.  Make room on the stack first and then use it,
5063         not the other way around.
5064
5065 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
5066
5067         * mini.c (mini_init): Call mono_xdebug_init ().
5068
5069         * aot-compiler.c (mono_xdebug_init): Make this non-static.
5070
5071 2009-01-11  Zoltan Varga  <vargaz@gmail.com>
5072
5073         * TestDriver.cs: Add an --iter argument to run tests multiple times.
5074
5075         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Emit debug info for
5076         trampolines.
5077
5078         * aot-compiler.c (mono_save_trampoline_xdebug_info): New function to emit
5079         debug+unwind info for trampolines.
5080
5081         * mini.c (mono_create_unwind_op): New helper function.
5082
5083         * unwind.h: Add macros for emitting unwind ops without a MonoCompile.
5084
5085 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
5086
5087         * aot-compiler.c: Fix the build.
5088
5089 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
5090
5091         * Makefile.am: Update dtrace-prelink.sh location.
5092
5093 2009-01-08  Zoltan Varga  <vargaz@gmail.com>
5094
5095         * method-to-ir.c (mono_method_to_ir): Fix the check for the mscorlib ldstr 
5096         optimization. Fixes #464520.
5097
5098 2009-01-07  Bill Holmes  <billholmes54@gmail.com>
5099
5100         * mini-amd64.c : Adding code to save/restore non-volatile registers
5101            on Winx64.
5102
5103         * exceptions-amd64.c : Adding code to save/restore non-volatile 
5104           registers on Winx64.
5105
5106         Contributed under MIT/X11 license.
5107
5108 2009-01-07  Zoltan Varga  <vargaz@gmail.com>
5109
5110         * mini-arm.c (mono_arch_flush_icache): Use __GNUC_PREREQ instead of checking
5111         __GNUC_MINOR__ which can break when the major version changes.
5112
5113 2009-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
5114
5115         * basic-simd.cs: Add tests for usage of the sizeof opcode.
5116
5117 2009-01-07  Geoff Norton  <gnorton@novell.com>
5118
5119         * helpers.c:  Allow mono -v -v -v to work on darwin.
5120
5121 2009-01-05  Bill Holmes  <billholmes54@gmail.com>
5122
5123         * mini-amd64.c (mono_arch_get_vcall_slot) : Handle an additional instruction
5124           pattern. 
5125
5126         Contributed under MIT/X11 license.
5127
5128 2009-01-05  Zoltan Varga  <vargaz@gmail.com>
5129
5130         * mini.c (mono_allocate_stack_slots_full2): Use mono_class_from_mono_type
5131         instead of directly accessing type->data.klass. Fixes #462016.
5132         (mono_allocate_stack_slots_full): Ditto.
5133
5134         * mini-arm.c (mono_arch_flush_icache): Applied patch from Riku Voipio 
5135         <novell@kos.to>. Fix cache flush on kernels without OLDABI compat option.
5136
5137         * aot-compiler.c (emit_plt): Fix ARM build.
5138
5139 2009-01-04  Zoltan Varga  <vargaz@gmail.com>
5140
5141         * branch-opts.c (mono_if_conversion): Optimize this using ins->prev.
5142         
5143         * branch-opts.c (mono_if_conversion): Fix an assert introduced by the last
5144         change.
5145
5146         * branch-opts.c (mono_if_conversion): Use branch->inst_true_bb/inst_false_bb
5147         instead of bblock->out_bb [0]/[1], the two might not be the same. Fixes
5148         #463357.
5149
5150         * iltests.il.in: Add a regression test.
5151
5152 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
5153
5154         * mini-codegen.c (mono_print_ins_index): Pretty print XPHI and VPHI.
5155
5156 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
5157
5158         * basic-simd.cs: Add a regression test for #462457.
5159
5160 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
5161
5162         * mini-ops.h: Add a definition of XPHI.
5163
5164         * mini.h (MONO_IS_PHI): Make is aware of simd instrincs. 
5165
5166         * ssa.c (op_phi_to_move): Handle XPHI.
5167
5168         * ssa.c (mono_ssa_compute): Generate a XPHI for simd intrinsics instead of VPHI.
5169
5170         Fixes #462457
5171
5172 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
5173
5174         * method-to-ir.c (mono_emit_rgctx_calli): Fix a warning.
5175
5176 2008-12-31  Geoff Norton  <gnorton@novell.com>
5177
5178         * mini-ppc.c: The prolog size allocated can be too small for darwin
5179         ppc32 under certain circumstances.  Also fix a small logic bug.
5180
5181 2008-12-29  Zoltan Varga  <vargaz@gmail.com>
5182
5183         * mini.c (mono_jit_compile_method_inner): Avoid holding the domain lock
5184         while loading AOT methods.
5185
5186         * mini-exceptions.c: Check jit_tls->class_cast_from instead of class_cast_to
5187         since only the former is nulled out after a successful cast. This prevents
5188         crashes with rethrown exceptions when using --debug=casts.
5189
5190 2008-12-24  Mark Probst  <mark.probst@gmail.com>
5191
5192         * mini.h: New macro for checking whether a method is final,
5193         i.e. whether the method or its class is marked final.
5194
5195         * method-to-ir.c: Use the new macro for all final-checks
5196         consistently.  Fixes the crash in the System.ServiceModel tests.
5197
5198 2008-12-23  Mark Probst  <mark.probst@gmail.com>
5199
5200         * mini-exceptions.c (get_exception_catch_class): Corrected another
5201         overly strict assertion.
5202
5203 2008-12-23  Mark Probst  <mark.probst@gmail.com>
5204
5205         * mini-ppc.c (mono_arch_build_imt_thunk): Save and restore r11.
5206         Clobbering it is not allowed because the caller might use it as
5207         the vtable register in the interface call.
5208
5209 2008-12-19  Mark Probst  <mark.probst@gmail.com>
5210
5211         * mini-exceptions.c (get_exception_catch_class): Corrected an
5212         overly strict assertion.
5213
5214 2008-12-18  Mark Mason  <mmason@upwardaccess.com>
5215         
5216         * method-to-ir.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P or sizeof(gpointer) when appropriate.
5217
5218         * mini.h: Move typedef to mgreg_t up above include of mini-arch.h
5219
5220         * local-propogation.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P when appropriate
5221
5222         * cpu-mips.md: correct lengths for certain long_ opcodes.
5223
5224         * mini-mips.h: Only emulate long operations when SIZEOF_REGISTER==4. Add missing func decl.
5225
5226         * 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().
5227         
5228 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
5229
5230         * exceptions-mips.c (mono_arch_find_jit_info): decode sd instructions as well when looking for registers.
5231         
5232 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
5233         
5234         * mini-mips.c (mono_arch_output_basic_block): OP_JUMP_TABLE stores patch type in inst_c1, not inst_i1.
5235         
5236 2008-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
5237
5238         * branch-opts.c (remove_block_if_useless): Even if BB0 falls through, don't add a br to the
5239         next basic block.
5240         
5241 2008-12-16  Mark Mason  <mmason@upwardaccess.com>
5242
5243         * 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
5244
5245         * 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)
5246         
5247 2008-12-15  Mark Mason  <mmason@upwardaccess.com>
5248         
5249         * trace.c (mono_trace_enter_method): correctly handle arguments smaller than the stack slot size on big endian systems.
5250         
5251 2008-12-14  Zoltan Varga  <vargaz@gmail.com>
5252
5253         * liveness.c (mono_analyze_liveness): Avoid eliminating the 'this' var in
5254         gshared code. Fixes #458947.
5255
5256         * generics.cs: Add a test.
5257
5258 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
5259         
5260         * method-to-ir.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
5261         
5262         * mini-mips.c: first pass n32 code generation.
5263
5264         * mini-mips.h: datatypes and defines for n32 support.
5265
5266         * exceptions-mips.c: first pass n32 code generation.
5267         
5268         * tramp-mips.c: first pass n32 code generation.
5269         
5270         * cpu-mips.md: add long_ opcodes.
5271         
5272 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
5273
5274         * liveness.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
5275
5276         * cfold.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
5277         
5278         * local-propogation.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
5279         
5280         * regalloc2.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
5281
5282         * mini.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
5283
5284         * mini-codegen.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
5285
5286         * ssa.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
5287
5288         * decompose.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
5289
5290         * helpers.c: for mips/n32, don't pass -mips32 to objdump
5291
5292 2008-12-12  Zoltan Varga  <vargaz@gmail.com>
5293
5294         * mini-arm.c tramp-arm.c: Fix calls to mono_arch_flush_icache.
5295
5296 2008-12-12  Andres G. Aragoneses  <aaragoneses@novell.com>
5297
5298         * driver.c: Sync --help-trace with man page (EXPR,EXPR).
5299
5300 2008-12-12  Mark Probst  <mark.probst@gmail.com>
5301
5302         * mini-ppc.h, exceptions-ppc.c, tramp-ppc.c: Create function
5303         descriptors for helper functions directly in front of the code.
5304
5305 2008-12-11  Mark Probst  <mark.probst@gmail.com>
5306
5307         * method-to-ir.c: Removed an unnecessary assertion.
5308
5309 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
5310
5311         * method-to-ir.c: Merge SGEN changes from the old JIT.
5312
5313 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
5314
5315         * driver.c (compile_all_methods_thread_main): Handle failure of
5316         mono_get_method ().
5317
5318 2008-12-10  Mark Probst  <mark.probst@gmail.com>
5319
5320         * mini-ppc.c: Merged with mini-ppc64.c.
5321
5322         * mini-ppc.h: Define PPC_MINIMAL_PARAM_AREA_SIZE on all targets.
5323
5324         * Makefile.am: Use the same sources for PPC and PPC64.
5325
5326         * mini-ppc64.c: Removed.
5327
5328 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
5329
5330         * branch-opts.c (remove_block_if_useless): Extract fall through detection
5331         code to mono_bb_is_fall_through.
5332         
5333         * branch-opts.c (mono_remove_critical_edges): Same.
5334
5335 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
5336
5337         * ssa.c (fold_ins): branch opt can kill dummy switch ops so we can't
5338         expect that an OP_BR_REG will be there.
5339
5340 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
5341
5342         * branch-opts.c (remove_block_if_useless): Use MONO_IS_BRANCH_OP instead of checking
5343         for the many branch ops. The original check miss OP_BR_REG.
5344
5345         Fixes #457574.
5346         
5347 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
5348
5349         * mini-mips.h mini-mips.c exceptions-mips.c tramp-mips.c: first round of changes necessary to eventually support n32.
5350
5351 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
5352
5353         * aot-runtime.c (load_method): Avoid calling decode_exception_debug_info
5354         while holding the aot lock.
5355
5356 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
5357
5358         * mini-mips.c (mono_arch_output_basic_block): use mfc1/lwc1 instead of mfc1d/ldc1
5359         
5360 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
5361
5362         * mini.c (mini_cleanup) : Adding a call to cominterop_release_all_rcws 
5363           to release all runtime callable wrappers held by the runtime.
5364
5365         Contributed under MIT/X11 license.
5366
5367 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
5368
5369         * tramp-amd64.c (mono_arch_create_trampoline_code_full) : Increase the code size for
5370           for Winx64.
5371
5372         Contributed under MIT/X11 license.
5373
5374 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
5375
5376         * aot-runtime.c (decode_exception_debug_info): Acquire the domain
5377         lock when calling mono_domain_alloc (). Hopefully fixes #415608.
5378
5379 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
5380
5381         * cpu-mips.md: fix ckfinite length
5382
5383         * mini-mips.c: at least recognize n32 ABI when used (not yet supported)
5384         (mono_arch_lowering_pass): cleanup, rearrange for clarity
5385         (mono_arch_output_basic_block): implement OP_CKFINITE, add more asserts
5386         
5387 2008-12-08  Mark Mason   <mmason@upwardaccess.com>
5388
5389         * exceptions-mips.c (mono_arch_find_jit_info): init new_ctx with ctx, dont' call setup_context.
5390         
5391 2008-12-08  Geoff Norton  <gnorton@novell.com>
5392
5393         * tramp-amd64.c: r120895 stores RAX, so we need to increase the window
5394         size by 8 bytes as well.
5395
5396 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
5397
5398         * basic-simd.cs: Fix method names for Vector16b.
5399         
5400 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
5401
5402         * basic-simd.cs: Fix method names for Vector16sb.
5403
5404 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
5405
5406         * basic-simd.cs: Fix method names for Vector8us.
5407         
5408 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
5409
5410         * basic-simd.cs: Fix method names for Vector8s.
5411         
5412 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
5413
5414         * basic-simd.cs: Fix method names for Vector4ui.
5415
5416 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
5417
5418         * basic-simd.cs: Fix method names for Vector2l.
5419
5420 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
5421
5422         * basic-simd.cs: Fix method names for Vector2d.
5423
5424 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
5425
5426         * simd-intrinsics.c (mono_emit_simd_intrinsics): Add support for intrinsics
5427         that are extension methods.
5428
5429 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
5430
5431         * basic-simd.cs: Fix method names for Vector4f.
5432
5433 2008-12-08  Zoltan Varga  <vargaz@gmail.com>
5434
5435         * mini-exceptions.c (mono_print_thread_dump): Mark threadpool threads
5436         as such. Fixes #456669.
5437
5438 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
5439
5440         * mini-mips.c (mono_arch_emit_call): narrow float arguments when passing as args.
5441         
5442 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
5443
5444         * mini-mips.c (mono_arch_lowering_pass): don't handle OP_ICONV_TO_R* or OP_R*CONST
5445         (mono_arch_emit_setret): use OP_MIPS_CVTSD to return SP floats
5446         (mono_arch_output_basic_block): simplify FP load/store, handle OP_MIPS_FBLT_UN
5447         (mips_adjust_stackframe): handle FP spills
5448                 
5449         * mini-ops.h: add mips_mtc1_s2
5450         
5451         * cpu-mips.md: add mips_mtc1_s2
5452         
5453 2008-12-07  Zoltan Varga  <vargaz@gmail.com>
5454
5455         * unwind.c: New file, move the unwind info encoding functions here from
5456         aot-compiler.c, so they could be used at runtime too.
5457
5458 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
5459
5460         * mini-mips.c (mono_arch_lowering_pass): handle OP_IMUL_IMM as well
5461         (mono_arch_output_basic_block): fix OP_LOCALLOC code generation
5462         
5463 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
5464
5465         * mini-mips.c: cleanup warnings
5466         (mono_arch_lowering_pass): handle OP_LOCALLOC_IMM
5467         (mips_adjust_stackframe): handle case of taking the address of stack locals
5468         
5469 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
5470
5471         * aot-compiler.c: Implement a few functions missing from the asm writer.
5472         (emit_method_code): Only write symbols for methods when using the bin
5473         writer, since the assembler can't deal with the characters in our method
5474         names.
5475
5476         * aot-compiler.c (is_plt_patch): ICALL_ADDR is also a plt patch.
5477
5478         * method-to-ir.c (mono_method_to_ir): Transform aotconst+calli into a direct
5479         call.
5480
5481         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Rework the code
5482         a bit to also restore %rax.
5483
5484 2008-12-05  Mark Probst  <mark.probst@gmail.com>
5485
5486         * mini-ppc.c: Some simple merges from mini-ppc64.c.
5487
5488 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
5489
5490         * ssa.c (mono_ssa_compute): Only add an implicit reference at start for
5491         arguments.
5492
5493 2008-12-05  Mark Probst  <mark.probst@gmail.com>
5494
5495         * exceptions-ppc.c: Merged with exceptions-ppc64.c.
5496
5497         * mini-ppc.c, mini-ppc.h: Remove PPC_STACK_ALIGNMENT and use
5498         MONO_ARCH_FRAME_ALIGNMENT.  Struct for PPC64 function descriptors.
5499
5500         * exceptions-ppc64.c: Removed.
5501
5502         * Makefile.am: Use exceptions-ppc.c instead of exceptions-ppc64.c.
5503
5504 2008-12-05  Mark Probst  <mark.probst@gmail.com>
5505
5506         * tramp-ppc.c, mini-ppc.c, mini-ppc.h: Merged tramp-ppc.c with
5507         tramp-ppc64.c.
5508
5509         * Makefile.am: Use tramp-ppc.c instead of tramp-ppc64.c.
5510
5511         * tramp-ppc64.c: Removed.
5512
5513 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
5514
5515         * aot-compiler.c (add_generic_instances): Skip non-generic classes in
5516         the TYPESPEC table.
5517
5518 2008-12-05  Mark Probst  <mark.probst@gmail.com>
5519
5520         * mini-ppc.h: Merged mini-ppc64.h with mini-ppc.h.
5521
5522         * exceptions-ppc64.c, tramp-ppc64.c, mini-arch.h, Makefile.am: Use
5523         mini-ppc.h instead of mini-ppc64.h.
5524
5525         * mini-ppc64.h: Removed.
5526
5527 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
5528
5529         * mini-mips.c: introduce USE_LDC_SDC: use ldc1/sdc1 to load/store doubles, disabled by default
5530         
5531         * mini-mips.c (mono_arch_emit_outarg_vt): fix offset calculation for memcpy in structure passing.
5532         
5533 2008-12-05  Mark Probst  <mark.probst@gmail.com>
5534
5535         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c:
5536         Removed FIRST/LAST_[GF]REG macros, to make merging PPC64 with PPC
5537         code easier.
5538
5539 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
5540
5541         * basic-simd.cs: Tests for operator == and != on  Vector8us and Vector16b.
5542
5543 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
5544
5545         * simd-intrinsics.c: Add support for operator == and != to Vector8(u)s and Vector16(s)b.
5546
5547 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
5548
5549         * basic-simd.cs: Tests for operator == and != on Vector4f.
5550
5551 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
5552
5553         * simd-intrinsics.c (simd_intrinsic_emit_equality): Adapt to support Vector4f.
5554
5555         * simd-intrinsics.c: Kill useless enum.
5556
5557 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
5558
5559         * cpu-mips.md: add long_conv_to_ovf_i4_2
5560         * mini-mips.c: update/add various _OVF_ opcodes to fix test failures
5561
5562 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
5563
5564         * mini-mips.c: ifdef protect automatic promotions of R4 to R8.
5565         
5566         * mini-mips.c (mono_arch_emit_setret): handle R4 case with FCONV_TO_R4 instead of FMOVE
5567
5568 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
5569
5570         * mini-mips.c (mono_arch_output_basic_block): fix codegen for OP_OR_IMM/OP_IOR_IMM
5571         
5572 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
5573
5574         * basic-simd.cs: Add tests for new methods.
5575
5576 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
5577
5578         * simd-intrinsics.c: Add support for operator == and !=
5579         on Vector4(u)i.
5580
5581         * simd-methods.h: Add SN_op_Inequality and SN_op_Equality.
5582
5583 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
5584
5585         * simd-intrinsics.c: Remove ExtractByteMask intrinsics.
5586
5587 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
5588
5589         * aot-compiler.c (add_wrappers): Add pinvoke wrappers.
5590
5591         * mini.c (mono_resolve_patch_target): Allow pinvoke methods in 
5592         MONO_PATCH_INFO_ICALL_ADDR.
5593
5594         * aot-runtime.c (MonoAotFileInfo): Correct order of fields.
5595
5596         * aot-compiler.c: Resurrect full-aot support.
5597
5598 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
5599
5600         * mini-mips.c (mono_arch_lowering_pass): handle OP_COMPARE and OP_ICOMPARE
5601         
5602 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
5603
5604         * mini-mips.c (mono_arch_output_basic_block): fix OP_IREM_UN code generation
5605         
5606 2008-12-03  Rodrigo Kumpera  <rkumpera@novell.com>
5607
5608         * basic-simd.cs: Fix tests to work under ppc.
5609         Remove tests for methods that will be removed.
5610
5611 2008-12-03  Mark Probst  <mark.probst@gmail.com>
5612
5613         * method-to-ir.c (mono_method_to_ir): Handle ldtoken of an open
5614         generic type (via a typedef or typeref) correctly.
5615
5616 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
5617
5618         * mini-trampolines.c (mono_magic_trampoline): Add some debugging code to help
5619         diagnose an assertion failure.
5620
5621 2008-12-02  Mark Probst  <mark.probst@gmail.com>
5622
5623         * tramp-ppc64.c (mono_arch_create_rgctx_lazy_fetch_trampoline):
5624         Fix trampoline size.
5625
5626         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: A few floating point
5627         conversion opcodes are implemented natively instead via emulation.
5628
5629 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
5630
5631         * cpu-mips.md: remove mips_xori
5632
5633         * mini-ops.h:  remove mips_xori
5634
5635         * mini-mips.h: replace OP_MIPS_XORI with OP_IXOR
5636
5637         * mini-mips.c (mono_arch_decompose_long_opts): Add ladd_imm, lsub, lsub_imm, lneg, lsub_ovf, lsub_ovf_un.
5638         
5639         * mini-mips.c (mono_arch_lowering_pass, mono_arch_output_basic_block): fix IXOR handling
5640         
5641 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
5642
5643         * cpu-mips.md: fix instruction lengths.
5644
5645         * mini-mips.h: define MONO_ARCH_NO_IOV_CHECK
5646
5647         * mini-mips.c: move most instruction rewriting into decompose_ops. Implement conditional branches and exceptions. Fix jump table patch handling. Implement add/sub OVF.
5648
5649         * mini-ops.h: fix slti / sltiu op profiles.
5650         
5651 2008-12-02  Martin Baulig  <martin@ximian.com>
5652
5653         * method-to-ir.c (mono_method_to_ir): Disable debugging
5654         information for the init locals block to make the debugger stop
5655         after all locals have been initalized.
5656
5657 2008-12-02  Martin Baulig  <martin@ximian.com>
5658
5659         * mini.c (mini_method_compile): Disable MONO_OPT_DEADCE when
5660         running inside the debugger.
5661
5662 2008-12-01  Zoltan Varga  <vargaz@gmail.com>
5663
5664         * mini.c (mini_method_compile): Only run local deadce if MONO_OPT_DEADCE
5665         is enabled.
5666
5667         * method-to-ir.c (mono_method_to_ir): Fix invalid code generated by the 
5668         alu->alu imm optimization which only shows if deadce is disabled.
5669
5670         * aot-compiler.c: Rename the function names for the binary and asm writers
5671         so they can coexist in the same process. Rework the xdebug code to use the
5672         asm writer. This avoids the need to call into the runtime to dump the
5673         debugging info. Add more debugging info for types.
5674
5675         * mini-<ARCH>.h: Kill MONO_ARCH_HAVE_NORMALIZE_OPCODES define.
5676
5677         * genmdesc.c genmdesc.pl mini.h: Don't put the CEE_ opcodes into the
5678         cpu description tables, they can't occur in cpu-<ARCH>.md.
5679
5680         * method-to-ir.c (mono_method_to_ir): Set the type of the value pushed on
5681         the stack in CEE_LDFLDA. Fixes #450542.
5682
5683         * generics.cs: Add a new test.
5684
5685 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
5686
5687         * mini-ops.h: updated MIPS opcodes
5688         * mini-mips.c: decompose long opts
5689         * mini-mips.h: decompose long opts
5690         
5691 2008-11-29  Mark Mason   <mmason@upwardaccess.com>
5692
5693         * cpu-mips.md: fix length on int_rem_un
5694         * mini-mips.c (mips_stackframe_adjust): fix insertion of spillvars region in MIPS stackframes.
5695         
5696 2008-11-29  Zoltan Varga  <vargaz@gmail.com>
5697
5698         * mini.h aot-runtime.c: Fix building with DISABLE_AOT.
5699
5700         * mini-codegen.c (mono_print_ins_index): Handle OP_VOIDCALL_MEMBASE.
5701
5702 2008-11-29  Martin Baulig  <martin@ximian.com>
5703
5704         * mini-exceptions.c (mono_handle_native_sigsegv): Check
5705         mono_debug_using_mono_debugger() in addition to the
5706         `no_gdb_backtrace' flag in the `MonoDebugOptions'.
5707
5708 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
5709
5710         * mini-ops.h: updated more MIPS opcodes
5711         * mini-mips.c: FP compare/branch working again, clean up last of CEE_ -> OP_ mappings
5712         * cpu-mips.md: Added MIPS versions of new FP compare/branch opcodes.
5713         
5714 2008-11-28  Mark Probst  <mark.probst@gmail.com>
5715
5716         * mini-ppc64.c: Patch the RGCTX fetch trampoline correctly.
5717
5718 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
5719
5720         * mini-mips.c (mono_arch_emit_call): adding missing conversion to fp single when passing in integer arg register.
5721         * mini-mips.c (mips_adjust_stackframe): compensate for spill-down logic.
5722         * mini-ops.h: correct selected mips opcode entries
5723         
5724 2008-11-28  Mark Probst  <mark.probst@gmail.com>
5725
5726         * mini-ppc64.c, mini-ppc64.h: Enable generalized IMT thunks and
5727         make them work.
5728
5729 2008-11-28  Mark Probst  <mark.probst@gmail.com>
5730
5731         * mini-ppc64.h, tramp-ppc64.c: Make generic code sharing work.
5732
5733 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
5734
5735         * method-to-ir.c, mini-trampolines.c: protect IMG code with #ifdef MONO_ARCH_HAVE_IMT to fix compile errors.
5736         * mini-mips.c: Fixup stackframe assignments after allocation of spillvars.
5737         * mini-mips.h: disable IMT
5738         * tramp-mips.c (mono_arch_get_vcall_slot): fix offset extraction
5739         
5740 2008-11-28  Mark Probst  <mark.probst@gmail.com>
5741
5742         * mini-ppc64.c, mini-ppc64.h: Don't emulate long ops.
5743
5744 2008-11-28  Mark Probst  <mark.probst@gmail.com>
5745
5746         * mini-ppc64.c, exceptions-ppc64.c: Several fixes.
5747
5748 2008-11-28  Zoltan Varga  <vargaz@gmail.com>
5749
5750         * method-to-ir.c (handle_isinst): Use PCONST instead of ICONST for
5751         consistency.
5752
5753 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
5754
5755         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
5756         for Set/GetVector aligned versions.
5757
5758 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
5759
5760         * basic-simd.cs: Add tests for Get/SetVector.
5761
5762 2008-11-27  Mark Probst  <mark.probst@gmail.com>
5763
5764         * mini.c: Removed g_slist_append_mempool().  Now in
5765         metadata/mempool.c.
5766
5767 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
5768
5769         * simd-intrinsics.c (mono_emit_vector_ldelema): Extract the element
5770         size properly and make the bounds check optional.
5771
5772         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
5773         for SetVector and IsAligned.
5774
5775 2008-11-27  Zoltan Varga  <vargaz@gmail.com>
5776
5777         * mini.c: Remove unused mono_normalize_opcodes () function.
5778
5779 2008-11-26  Mark Probst  <mark.probst@gmail.com>
5780
5781         * method-to-ir.c (mini_emit_inst_for_method): Small fix: we're
5782         using the new atomic add ops now.
5783
5784         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Implemented atomic
5785         add.
5786
5787 2008-11-26  Mark Probst  <mark.probst@gmail.com>
5788
5789         * mini-ppc64.c: Several fixes.
5790
5791 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
5792
5793         * cpu-mips.md: added jump_table
5794         * mini-mips.c: added jump_table. Eliminate compare-imm when lowering. Remove dead function.             
5795
5796 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
5797
5798         * mini-mips.c, mini-mips.h, tramp-mips.c, cpu-mips.md: Initial upgrade of MIPS port to new IR.
5799
5800 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
5801
5802         * mini-ops.h: corrected a handful of MIPS opcodes.
5803
5804 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
5805
5806         * aot-compiler.c: MIPS to use ELF writer
5807
5808 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
5809
5810         * mini-codegen.c: remove MIPS specific assert.
5811
5812 2008-11-25  Mark Probst  <mark.probst@gmail.com>
5813
5814         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Several
5815         fixes.  PPC64 now passes most of the runtime regressions.
5816
5817 2008-11-24  Zoltan Varga  <vargaz@gmail.com>
5818
5819         * regalloc2.c: Distinguish between use/def positions. Optimize the creation of
5820         volatile intervals a bit.
5821
5822 2008-11-24  Mark Probst  <mark.probst@gmail.com>
5823
5824         * basic-long.cs: New test case.
5825
5826 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
5827
5828         * mini.c (mini_method_compile): Disable globalra for large methods for 
5829         now.
5830
5831         * regalloc2.c (order_moves): Add fp support.
5832
5833         * branch-opts.c (mono_remove_critical_edges): Split non-critical edges whose
5834         source bblock ends with an OP_BR_REG.
5835
5836         * ratests.cs: Add a new test.
5837
5838 2008-11-23  Mark Probst  <mark.probst@gmail.com>
5839
5840         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c: Disable generic code
5841         sharing.  PPC64 now passes generics.exe.
5842
5843 2008-11-23  Mark Probst  <mark.probst@gmail.com>
5844
5845         * mini-ppc64.c: Several fixes.  PPC64 now runs iltests.exe.
5846
5847 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
5848
5849         * exceptions-x86.c (mono_arch_find_jit_info): Avoid reading uninitialized
5850         memory when mono_jit_info_table_find () can't find the method in the
5851         LMF case.
5852
5853         * aot-compiler.c (mono_save_xdebug_info): Emit complete debug info for
5854         AOTed code too.
5855         
5856         * aot-compiler.c (mono_save_xdebug_info): Make this work with the assembly
5857         writer too.
5858
5859 2008-11-23  Mark Probst  <mark.probst@gmail.com>
5860
5861         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, cpu-ppc64.md:
5862         Several fixes.  PPC64 now runs exceptions.exe and
5863         devirtualization.exe.
5864
5865 2008-11-22  Mark Probst  <mark.probst@gmail.com>
5866
5867         * mini-ppc64.c, tramp-ppc64.c: Small fixes.  PPC64 now runs
5868         arrays.exe and basic-math.exe.
5869
5870 2008-11-22  Mark Probst  <mark.probst@gmail.com>
5871
5872         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c,
5873         cpu-ppc64.md: Several fixes.  PPC64 now runs objects.exe.
5874
5875 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
5876
5877         * simd-intrinsics.c: Add support ArrayExtension intrinsics.
5878
5879 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
5880
5881         * method-to-ir.c: Move bounds checking macros to ir-emit.h
5882
5883         * ir-emit.h: Move macros from method-to-ir.c to here.
5884
5885 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
5886
5887         * mini-ops.h: Correct the long simd ops to use LREG.
5888
5889 2008-11-21  Zoltan Varga  <vargaz@gmail.com>
5890
5891         * mini-ops.h: Correct the dreg type of OP_LOADI8_MEMBASE.
5892         
5893         * mini-ops.h: Correct the dreg type of a few long opcodes.
5894
5895         * mini-amd64.h: Applied patch from Mihai Chelaru <kefren@ngnetworks.ro>.
5896         Add netbsd support.
5897
5898 Fri Nov 21 12:52:23 CET 2008 Paolo Molaro <lupus@ximian.com>
5899
5900         * mini-ppc.c: remove negative stack references in epilog
5901         for platforms that don't support the red zone.
5902
5903 2008-11-21  Mark Probst  <mark.probst@gmail.com>
5904
5905         * mini-ppc64.h, cpu-ppc64.md: Fixed caller/callee saved floating
5906         point regs.  Now PPC64 passes basic-calls.exe.
5907
5908 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
5909
5910         * basic-simd.cs: Add tests for accessors of Vector2l.
5911
5912 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
5913
5914         * mini-ops.h: Added OP_INSERTX_I8_SLOW,.
5915
5916         * mini-x86.c (mono_arch_decompose_long_opts): Decompose OP_INSERTX_I8_SLOW.
5917         
5918         * simd-intrinsics.c: Add support for Vector2l and Vector2ul.
5919
5920 2008-11-21  Mark Probst  <mark.probst@gmail.com>
5921
5922         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Several fixes.  Now
5923         PPC64 passes basic-long.exe.
5924
5925 2008-11-20  Mark Probst  <mark.probst@gmail.com>
5926
5927         * decompose.c: Decompose carry and overflow add on PPC64 like on
5928         other 64 bit archs.  Don't decompose sub at all on PPC64.
5929
5930         * mini-ppc64.c, exceptions-ppc64.c, tramp-ppc64.c, cpu-ppc64.md:
5931         Several fixes and new opcodes.  Now PPC64 runs (but doesn't pass)
5932         basic-long.exe.
5933
5934 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
5935
5936         * basic-simd.cs: Add tests for accessors of Vector2d.
5937
5938 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
5939
5940         * mini-ops.h: Added OP_INSERTX_R8_SLOW,.
5941
5942         * cpu-x86.md: Same.
5943
5944         * mini-x86.c (mono_arch_output_basic_block): Same.
5945         
5946         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector2d.
5947
5948 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
5949
5950         * basic-simd.cs: Add tests for accessors of Vector4f.
5951
5952 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
5953
5954         * mini-ops.h: Added OP_INSERTX_R4_SLOW,.
5955
5956         * cpu-x86.md: Same.
5957
5958         * mini-x86.c (mono_arch_output_basic_block): Same.
5959         
5960         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4f.
5961
5962 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
5963
5964         * basic-simd.cs: Add tests for accessors of Vector4i and Vector4ui.
5965
5966 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
5967
5968         * mini-ops.h: Added OP_INSERTX_I4_SLOW,.
5969
5970         * cpu-x86.md: Same.
5971
5972         * mini-x86.c (mono_arch_output_basic_block): Same.
5973         
5974         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4i and Vector4ui.
5975
5976 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
5977
5978         * cpu-x86.md: Use reasonable sizes for extractx_u2 and insertx_u1_slow.
5979
5980 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
5981
5982         * simd-intrinsics.c: Enable setters for Vector16sb.
5983
5984 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
5985
5986         * mini-ops.h: Added OP_EXTRACTX_U2, OP_INSERTX_U1_SLOW.
5987
5988         * cpu-x86.md: Same.
5989
5990         * mini-x86.c (mono_arch_output_basic_block): Same.
5991         
5992         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector16b.
5993
5994 2008-11-19  Rodrigo Kumpera  <rkumpera@novell.com>
5995
5996         * simd-intrinsics.c: Implement setter for Vector8us.
5997
5998 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
5999
6000         * aot-compiler.c (mono_save_xdebug_info): Emit correct location info
6001         for dead variables.
6002
6003 Wed Nov 19 18:27:41 CET 2008 Paolo Molaro <lupus@ximian.com>
6004
6005         * mini-ppc.c: remove references to the red zone in the prolog
6006         (for systems that don't support it).
6007
6008 2008-11-19  Mark Probst  <mark.probst@gmail.com>
6009
6010         * cpu-ppc64.md: Fixed a few instruction lengths.
6011
6012         * mini-ppc64.c: Don't emit SETLRET.  PPC64 passes basic-float.exe,
6013         now.
6014
6015 2008-11-19  Mark Probst  <mark.probst@gmail.com>
6016
6017         * mini-ppc64.c, cpu-ppc64.md: Fixed some opcodes.  PPC64 passes
6018         basic.exe now.
6019
6020 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
6021
6022         * aot-compiler.c (mono_save_xdebug_info): Add more parameter types.
6023
6024 2008-11-18  Rodrigo Kumpera  <rkumpera@novell.com>
6025
6026         * mini-ops.h: Added OP_INSERT_I2.
6027
6028         * cpu-x86.md: Same.
6029
6030         * mini-x86.c (mono_arch_output_basic_block): Same.
6031         
6032         * simd-intrinsics.c: Implement setter for Vector8s.
6033
6034         * simd-methods.h: Add the names of get setters of Vector8s.
6035
6036 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
6037
6038         * aot-compiler.c (mono_save_xdebug_info): Add support for parameters.
6039         
6040         * aot-compiler.c (mono_save_xdebug_info): Add preliminary support for
6041         parameters.
6042
6043         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
6044
6045 2008-11-18  Mark Probst  <mark.probst@gmail.com>
6046
6047         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Changes
6048         for PPC64.  An empty program runs now.
6049
6050 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
6051
6052         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
6053
6054         * aot-compiler.c mini.c mini.h: Add a JIT debugging mode modelled after
6055         a similar mode in Kaffe: When the the MONO_XDEBUG env var is set, debugging
6056         info for JITted code is emitted into a shared library, loadable into gdb.
6057
6058 2008-11-18  Mark Probst  <mark.probst@gmail.com>
6059
6060         * Makefile.am: Changes to build PPC64.
6061
6062         * mini-arch.h: Include mini-ppc64.h on PPC64.
6063
6064 2008-11-18  Mark Probst  <mark.probst@gmail.com>
6065
6066         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Updated with changes
6067         in PPC code up to r119147.
6068
6069 2008-11-18  Mark Probst  <mark.probst@gmail.com>
6070
6071         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
6072         cpu-ppc64.md: Changes for PPC64.
6073
6074         Based on code submitted by andreas.faerber@web.de at
6075         https://bugzilla.novell.com/show_bug.cgi?id=324134 under the
6076         X11/MIT license.
6077
6078 2008-11-18  Mark Probst  <mark.probst@gmail.com>
6079
6080         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
6081         cpu-ppc64.md: Copied from the corresponding PPC files from
6082         r118846.
6083
6084 2008-11-18  Scott Peterson  <lunchtimemama@novell.com>
6085
6086         * mini-ops.h: Added OP_ROUND.
6087
6088         * cpu-x86.md: Added round.
6089
6090         * mini-x86.c: Added support for intrinsicing Math.Round (double).
6091
6092         * basic-math.cs: Added test_0_round to test rounding.
6093
6094         Contributed under MIT/X11 license.
6095
6096 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
6097
6098         * aot-compiler.c : Fix the Winx64 build.
6099
6100         Contributed under MIT/X11 license.
6101
6102 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
6103
6104         * mini-x86.c (mono_arch_output_basic_block): Use movsd instead of monvups
6105         in OP_EXTRACT_R8 to avoid possible stack corruption.
6106
6107 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
6108
6109         * mini-ops.h: Added OP_EXTRACT_R8/I8.
6110
6111         * cpu-x86.md: Added extract_r8.
6112
6113         * mini-x86.c (mono_arch_output_basic_block): Emmit OP_EXTRACT_R8.
6114         
6115         * mini-x86.c: Added mono_arch_decompose_long_opts to break OP_EXTRACT_I8 into
6116         a couple of OP_EXTRACT_I4.
6117
6118         * mini-x86.h: Define MONO_ARCH_HAVE_DECOMPOSE_LONG_OPTS if simd is enabled.
6119
6120         * simd-intrinsics.c: Implement getters for Vector2l/2ul/2d.
6121
6122 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
6123
6124         * simd-intrinsics.c (vector2l_intrinsics): CompareGreaterThan requires sse 4.2
6125         and not 4.1. 
6126
6127 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
6128
6129         * method-to-ir.c (handle_delegate_ctor): Emit the address of the delegate
6130         trampoline as an AOT const of the proper type instead of MONO_PATCH_INFO_ABS.
6131
6132         * mini.c (mono_codegen): Remove the handling of delegate trampolines, they
6133         are not needed any more.
6134
6135         * mini.h: Remove the unused INS_LIST macros.
6136
6137         * mini.c (mini_method_compile): Remove a disable globalra case which is no
6138         longer needed.
6139
6140         * *.h *.c: Remove duplicate MonoInst emission macros, use the ones in
6141         ir-emit.h.
6142
6143         * regalloc.h *.c: Remove references to mono_regstate_next_int (), use
6144         mono_alloc_ireg () instead.
6145
6146         * mini-<ARCH>.c: Include ir-emit.h. Remove duplicate MonoInst emission
6147         macros.
6148
6149         * mini-amd64.c (emit_load_volatile_arguments): Removed, not needed
6150         on amd64.
6151
6152         * aot-runtime.c (load_aot_module): Disable AOT when running under
6153         CAS.
6154
6155         * mini-amd64.h: Change the monitor fastpath defines to check for
6156         !PLATFORM_WIN32 so they work on *bsd too.
6157
6158         * mini.h mini.c mini-hhpa.c: Remove more unused code.
6159
6160         * mini-s390.c mini-s390x.c: Remove !cfg->new_ir code.
6161
6162         * mini.h (MonoCompile): Remove new_ir flag.
6163
6164         * regalloc.h regalloc.c: Remove unused code.
6165
6166         * cpu-*.md: Remove more unused opcodes.
6167
6168         * simple-cee-ops.h simple-mini-ops.h: Removed.
6169
6170         * mini-ops.h *.c cpu-<ARCH>.md: Remove more unused opcodes.
6171         
6172 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
6173
6174         * aliasing.h: Removed.
6175
6176         * *.c: Remove references to aliasing.h and inssel.h.
6177
6178         * mini.c: Remove additional unused functions.
6179
6180         * mini-ops.h cpu-*.md: Remove unused opcodes.
6181
6182 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
6183
6184         Remove the old JIT code.
6185
6186         * inssel*.brg: Removed.
6187
6188         * ssa.c abcremoval.c aliasing.c: Removed.
6189
6190         * ssa2.c: Renamed to ssa.c.
6191
6192         * abcremoval2.c: Renamed to abcremoval.c.
6193
6194         * *.c: Removed all !cfg->new_ir code.
6195
6196         * mini-<ARCH>.c: Removed mono_arch_call_opcode (), 
6197         mono_arch_emit_this_vret_args (), and mono_arch_get_inst_for_method ().
6198
6199         * mini.c: Removed the old mono_method_to_ir () and all the code used by it.
6200         
6201 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
6202
6203         * aot-compiler.c aot-runtime.c: Emit most of the non-table data in a structure
6204         to simplify the code and cut back on the number of global symbols in the AOT
6205         file.
6206         
6207         * aot-compiler.c aot-runtime.c: Get rid of the unused plt_jump_table.
6208
6209 2008-11-15  Zoltan Varga  <vargaz@gmail.com>
6210
6211         * aot-runtime.c aot-compiler.c: Unify the plt_jump_table/plt_info tables
6212         with the got/got_info tables.
6213
6214         * mini.h: Bump AOT file format version.
6215         
6216         * unwind.h: New file, contains definitions for stack unwinding.
6217
6218         * mini.c (mono_emit_unwind_op): New helper function to append an unwind op
6219         to cfg->unwind_ops.
6220         
6221         * aot-compiler.c: Generalize the emitting of unwind information to use the
6222         information in cfg->unwind_ops.
6223
6224         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info.
6225
6226         * aot-compiler.c: Emit dwarf unwind information so gdb can unwind through
6227         AOT method frames. Enable writing symbols for methods by default.
6228
6229 2008-11-14  Rodrigo Kumpera  <rkumpera@novell.com>
6230
6231         * simd-intrinsics.c (simd_intrinsic_emit_getter): Generalize this code
6232         and make it work with vectors of element sizes 1, 2 and 4.
6233
6234         * simd-intrinsics.c: Enable getter for all vectors with element size
6235         1, 2 or 4.
6236
6237         * simd-methods.h: Add the names of other getters.
6238
6239         * mini-ops.h: Added OP_EXTRACT_I2/U2/I1/U1.
6240
6241         * cpu-x86.md: Same.
6242
6243         * mini-x86.c: Same.
6244
6245 Fri Nov 14 15:54:18 CET 2008 Paolo Molaro <lupus@ximian.com>
6246
6247         * mini-ppc.h: portability fix.
6248
6249 Fri Nov 14 15:39:50 CET 2008 Paolo Molaro <lupus@ximian.com>
6250
6251         * mini-ppc.h, mini-ppc.c: avoid using the red zone as some kernels are
6252         buggy and will overwrite it.
6253
6254 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
6255
6256         * aot-compiler.c: Add functionality to emit local symbols to the elf writer.
6257         Use it to emit local symbols for all methods so AOTed methods show up with
6258         their full name in gdb/valgrind output.
6259
6260 Fri Nov 14 12:56:27 CET 2008 Paolo Molaro <lupus@ximian.com>
6261
6262         * mini-ppc.c: portability fixes.
6263
6264 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
6265
6266         * mini-trampolines.c (mono_magic_trampoline): Move the patching of plt
6267         entries out of the if (!generic_shared...) code so it is always done.
6268         (mono_class_init_trampoline): Do the patching when running under valgrind
6269         too, newer versions of valgrind have no problems with it.
6270
6271 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
6272
6273         * aot-compiler.c (emit_writeout): Rework this to make it easier to add
6274         further sections.
6275
6276 2008-11-13  Mark Probst  <mark.probst@gmail.com>
6277
6278         * mini-ppc.c, cpu-ppc.md: Reserve space for the parameter area in
6279         filters.
6280
6281 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
6282
6283         * simd-intrinsics.c: Add getter support for Vector4i and Vector4ui. 
6284
6285 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
6286
6287         * mini-ops.h: Kill diplicated ops OP_SHUFLEPS.
6288
6289         * cpu-x86.md: Same.
6290
6291         * mini-x86.c: Same.
6292
6293         * simd-intrinsics.c: Same.
6294
6295 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
6296
6297         * simd-intrinsics.c: Enable constructor intrinsics for all types.
6298
6299 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
6300
6301         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Generalize this method
6302         to work with more Vector types.
6303
6304 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
6305
6306         * simd-intrinsics.c (simd_intrinsic_emit_ctor): If the target is already a pointer
6307         store the elemens directly instead of using and intermediate.
6308
6309 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
6310
6311         * mini-amd64.c (emit_call_body): Avoid aligning call sites in AOTed code.
6312
6313         * tramp-x86.c (mono_arch_create_trampoline_code): Rework the return sequence
6314         to preserve %eax for aot plt trampolines.
6315
6316         * aot-compiler.c (compile_method): Don't skip synchronized methods.
6317         (encode_method_ref): Flag synchronized methods so they won't go through
6318         the AOT trampoline.
6319
6320         * aot-compiler.c: Additional work to support AOTing synchronized methods/
6321         wrappers.
6322
6323         * cpu-ia64.md (jmp): Increase max length.
6324
6325 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
6326
6327         * aot-runtime.c (load_method): Avoid calling runtime_class_init () for
6328         open generic classes.
6329
6330         * aot-compiler.c: Enable the ELF writer on ELF platforms.
6331
6332         * method-to-ir.c (mono_method_to_ir2): Revert the last change to the
6333         box+brtrue optimization since it causes test failures on x86.
6334
6335 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
6336
6337         * mini-ops.h: Remove OP_PUSH_R4 and OP_LOADX_STACK.
6338
6339         * cpu-x86.md: Same.
6340
6341         * mini-x86.c: Same.
6342
6343         * mini.h (struct MonoCompile): Add simd_ctor_var to be used as storage
6344         for simd ctor values. 
6345
6346         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Use simd_ctor_var for the constructor
6347         instead of directly pushing the values on stack. This saves about 15 bytes of generated code.
6348
6349 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
6350
6351         * simd-methods.h: Rename SubWithSaturation, ArithmeticRightShift and
6352         LogicalRightShift.
6353
6354         * simd-instrincs.c: Same.
6355
6356         * basic-simd.cs: Same.
6357
6358 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
6359
6360         * ratests.cs: Add more tests.
6361
6362         * regalloc2.c (add_spill_code): Handle more corner cases.
6363
6364 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
6365
6366         * regalloc2.c (INS_POS_INTERVAL): Decrease this to 8 to avoid overflows.
6367         (update_liveness): Avoid holes in the liveness ranges of hregs if they are
6368         both the source an destination of an instruction.
6369
6370 Tue Nov 11 19:30:50 CET 2008 Paolo Molaro <lupus@ximian.com>
6371
6372         * jit-icalls.c, local-propagation.c, mini.c, ssa.c, ssapre.c, trace.c,
6373         wapihandles.c: more portability changes.
6374
6375 Tue Nov 11 18:56:33 CET 2008 Paolo Molaro <lupus@ximian.com>
6376
6377         * aot-compiler.c, aliasing.c, abcremoval.c: portability changes.
6378         * mini.c mini.h, aot-runtime.c: the aot segfault-handling code is not
6379         safe to execute in a signal handler and the kernel provides better
6380         the info in /proc/self/smaps. Avoid the assert on sigaction during
6381         cleanup.
6382
6383 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
6384
6385         * method-to-ir.c (mono_method_to_ir2): In the box+brtrue optimization, only
6386         do the bblock linking hack if it is actually needed.
6387
6388         * Makefile.am (patch-libtool): New helper target to patch libtool to speed
6389         up linking.
6390
6391         * liveness.c (ENABLE_LIVENESS2): Reenable this for 64 bit archs as the
6392         crash problem is fixed.
6393
6394         * branch-opts.c (mono_remove_critical_edges): Link up newly added
6395         bblocks.
6396
6397         * mini.c (mini_method_compile): Compute unreachable bblocks properly even
6398         for catch clauses.
6399         (mini_method_compile): Set the starting value of next_vreg to 
6400         MAX_IREGS + MAX_FREGS when using globalra.
6401
6402         * method-to-ir.c (mono_method_to_ir2): Mark bblocks starting
6403         filter clauses with BB_EXCEPTION_HANDLER.
6404
6405         * regalloc2.c (assign_spill_slots): Set cfg->rgctx_var.
6406
6407 2008-11-10  Mark Probst  <mark.probst@gmail.com>
6408
6409         * mini-x86.c (mono_arch_get_argument_info): Don't align argument
6410         space for stdcall.  Fixes regressions on Win32.
6411
6412 2008-11-10  Zoltan Varga  <vargaz@gmail.com>
6413
6414         * regalloc2.c (handle_reg_constraints): Avoid adding code to unreachable
6415         bblocks.
6416         (linear_scan): Remove an assert which doesn't seem to be needed.
6417
6418         * local-propagation.c (mono_local_deadce): Avoid a call to
6419         MONO_DELETE_INS which would screw up the instruction linking.
6420
6421         * mini.c (mono_decompose_op_imm): Make this work with globalra.
6422
6423         * regalloc2.c: Upgrade to work the current JIT code.
6424
6425 2008-11-09  Zoltan Varga  <vargaz@gmail.com>
6426
6427         * method-to-ir.c (inline_method): Merge more basic blocks to help the AOT
6428         case.
6429
6430         * aot-runtime.c: Remove some dead code.
6431
6432         * tramp-arm.c: Use 'code' as the runnning pointer in code generation for
6433         consistency.
6434         (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Implement aot support.
6435
6436         * aot-runtime.c (load_named_code): Decode the offset of lazy fetch
6437         trampolines using sscanf since atoi doesn't work on large unsigned values.
6438
6439         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): 
6440         Initialize code_size.
6441
6442 2008-11-08  Mark Probst  <mark.probst@gmail.com>
6443
6444         * method-to-ir.c (mini_emit_inst_for_method): Make
6445         Interlocked.CompareExchange work for Int arguments on 32 bit
6446         archs, as well.
6447
6448 2008-11-07  Mark Probst  <mark.probst@gmail.com>
6449
6450         * method-to-ir.c (mono_method_to_ir2): Fixed a funny commit error.
6451
6452 2008-11-06  Bill Holmes  <billholmes54@gmail.com>
6453
6454         * main.c Fix MSVC build.
6455
6456         Contributed under MIT/X11 license.
6457
6458 2008-11-06  Mark Probst  <mark.probst@gmail.com>
6459
6460         * mini-x86.c (mono_arch_allocate_vars): Make sure locals that need
6461         alignment larger than 8 bytes are aligned correctly, too.
6462
6463         * mini.c: Honor the min_align field of MonoClass when laying out
6464         the stack.
6465
6466 2008-11-06  Zoltan Varga  <vargaz@gmail.com>
6467
6468         * method-to-ir.c (mono_method_to_ir2): Fix AOT support for CEE_SWITCH on arm.
6469
6470         * aot-compiler.c (emit_plt): Fix a warning.
6471         
6472         * aot-compiler.c: Implement ARM support in the binary writer.
6473
6474 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
6475
6476         * basic-simd.cs: Add test for getter with byref arg.
6477         Fix the naming of a few tests.
6478         Add missing checks to a test.
6479
6480 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
6481
6482         * aot-compiler.c (emit_plt): Make the arm code work with the binary writer.
6483
6484         * aot-compiler.c aot-runtime.c mini-trampolines.c tramp-amd64.c: Implement
6485         most of the full-aot support for monitor enter/exit trampolines.
6486
6487         * tramp-x86.c tramp_amd64.c: Add AOT compatible variants of the monitor
6488         enter/exit trampoline creation functions.
6489
6490         * Makefile.am: Fix the generation of buildver.h so it is not invoked during
6491         make dist.
6492
6493 Wed Nov 5 16:28:53 CET 2008 Paolo Molaro <lupus@ximian.com>
6494
6495         * mini.h, aot-compiler.c, method-to-ir.c, aot-runtime.c: remove the
6496         incorrectly added MONO_WRAPPER_MONITOR_* (in r117651-r117652) and
6497         implement the needed functionality without adding crap to the runtime.
6498
6499 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
6500
6501         * mini-trampolines.c (mono_create_monitor_enter_trampoline): Fix the
6502         non-x86 builds.
6503
6504         * mini.c (mono_build_date): New global version holding the build date in
6505         string format.
6506         
6507         * Makefile.am (buildver.c): Generate a file containing the build date.
6508
6509         * main.c: Set the build date from the generated file.
6510
6511         * mini.c (mono_get_runtime_build_info): New helper function returning build
6512         information in a string format.
6513         
6514         * driver.c (mono_main): Print the build date in --version.
6515
6516         * aot-compiler.c aot-runtime.c: Embed the build information into the AOT
6517         file when the bind-to-runtime-version option is used.
6518
6519 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
6520
6521         * simd-intrinsics.c: Fix bug when using getters and byref args. 
6522
6523 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
6524
6525         * simd-methods.h: Rename prefetch methods.
6526
6527         * simd-intrinsics.c: Same.      
6528
6529 2008-11-05  Mark Probst  <mark.probst@gmail.com>
6530
6531         * tramp-amd64.c: Enlarge the Monitor.Enter/Exit trampoline code
6532         sizes.
6533
6534 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
6535
6536         * aot-compiler.c: Use the bundled elf header files instead of depending on
6537         the system one.
6538         
6539         * aot-compiler.c (emit_symbol_diff): Allocate memory from the acfg
6540         mempool.
6541
6542         * method-to-ir.c (mono_method_check_inlining): Avoid a getenv () call
6543         on every call.
6544
6545 2008-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
6546
6547         * cpu-x86.md: Add store nta ops.
6548
6549         * mini-ops.h: Same.
6550
6551         * mini-x86.c: Same.
6552
6553         * mini.h: Add an enum for simd prefetch modes.
6554
6555         * simd-methods.h: Refactor the store_aligned code to handle multiple kinds
6556         of store. Use the changed code to support store nta.
6557
6558         * simd-intrinsics.c: Add prefetch ops for all vector types.
6559
6560 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
6561
6562         * aot-compiler.c: Add an option for JIT compiling the methods by multiple 
6563         threads.
6564         
6565         * aot-compiler.c: Use statically allocated buffers for constructing symbol 
6566         names.
6567
6568         * aot-runtime.c aot-compiler.c: Add support for the MONITOR_ENTER/EXIT
6569         trampolines.
6570
6571 2008-11-04  Mark Probst  <mark.probst@gmail.com>
6572
6573         * mini-x86.c: Fixed commit.
6574
6575 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
6576
6577         * aot-compiler.c (emit_plt): Align the plt section only on x86.
6578
6579 2008-11-04  Mark Probst  <mark.probst@gmail.com>
6580
6581         * mini-trampolines.c, mini.h: Two new trampolines: MONITOR_ENTER
6582         and MONITOR_EXIT, for the ASM fastpaths.
6583
6584         * method-to-ir.c: Use the ASM fastpath for Monitor.Enter/Exit if
6585         available.
6586
6587         * mini.c, patch-info.h: Signature and patch infos for
6588         Monitor.Enter/Exit trampolines.
6589
6590         * mini-amd64.c, mini-x86.c: Make emit_tls_get() non-static.
6591
6592         * tramp-amd64.c, tramp-x86.c, mini-amd64.h, mini-amd64.h:
6593         Monitor.Enter/Exit ASM fastpath for Linux.
6594
6595 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
6596
6597         * mini.c (mono_method_to_ir): Fix soft-float support in Array.Get/Set.
6598
6599         * objects.cs: Add a new test.
6600         
6601         * aot-compiler.c: Use mono_100ns_ticks () for computing the profiling info.
6602
6603         * aot-runtime.c (load_method): Run class initialization in the PLT case even
6604         if MONO_LOG_LEVEL is set.
6605
6606         * debug-mini.c (serialize_variable): Fix the encoding of dead variables.
6607
6608         * aot-runtime.c (mono_aot_get_method): Skip out-of-date AOT modules.
6609
6610         * aot-compiler.c (emit_and_reloc_code): Speed this up a little.
6611         
6612         * aot-compiler.c: Change the relocation code to use virtual addresses instead
6613         of file offsets. Align the sections belonging to the data segment to 
6614         PAGESIZE.
6615
6616 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
6617
6618         * aot-compiler.c: Simplify the elf writer by depending on the definitions in
6619         elf.h. Port it to amd64.
6620
6621 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
6622
6623         * driver.c: Enable SIMD by default.
6624
6625 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
6626
6627         * cpu-x86.md: Add prefetch op.
6628
6629         * mini-ops.h: Same.
6630
6631         * mini-x86.c: Same.
6632
6633         * mini.h: Add an enum for simd prefetch modes.
6634
6635         * simd-methods.h: Add prefetch function names.
6636
6637         * simd-intrinsics.c: Add prefetch ops for all vector types.
6638
6639 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
6640
6641         * aot-compiler.c (emit_bytes): Speed this up a little.
6642
6643 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
6644
6645         * aot-compiler.c: Add JIT time etc. statistics.
6646         
6647         * aot-compiler.c (compile_method): Fix the copying of the cfgs array.
6648
6649         * mini.h (MonoCompile): Add 'got_offset' field.
6650
6651         * aot-compiler.c: Store the got offset in MonoCompile, get rid of the
6652         method_got_offsets array.
6653
6654         * aot-compiler.c aot-runtime.c: Add support for the monitor enter/exit
6655         wrappers.
6656
6657         * aot-compiler.c (compile_method): Add generic method instances referenced
6658         by the method to the list of methods to be compiled, this is required so if
6659         A<T> references B<T>, and another assembly references A<int>, then it will
6660         also get a copy of B<int>.
6661
6662         * method-to-ir.c (mini_emit_inst_for_method): Use the proper wrapper type
6663         when checking for monitor enter/exit.
6664
6665 2008-10-30  Mark Probst  <mark.probst@gmail.com>
6666
6667         * method-to-ir.c (mini_emit_inst_for_method): Use the IL fastpaths
6668         for Monitor.Enter and Monitor.Exit if enabled.
6669
6670         * mini-x86.h, mini-amd64.h: Enable the IL fastpaths for Linux and
6671         Solaris.
6672
6673 2008-10-30  Zoltan Varga  <vargaz@gmail.com>
6674
6675         * method-to-ir.c (type_from_op): Convert CEE_CONV_U on OP_ICONV_TO_U instead
6676         of an OP_MOVE. Fixes #440046.
6677
6678         * basic-long.cs: Add a new test.
6679
6680 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
6681
6682         * mini.h: Add synchronization note for the managed counter-part.
6683
6684         * simd-intrinsics.c: Add SimdRuntime.get_AccelMode intrinsic that
6685         returns the simd caps of the current cpu.
6686
6687 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
6688
6689         * basic-simd.cs: Remove Console.WriteLine.
6690
6691 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
6692
6693         * basic-simd.cs: New tests for Vector2ul.
6694
6695 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
6696
6697         * simd-intrinsics.c: Add new vector type Vector2ul.
6698
6699 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
6700
6701         * basic-simd.cs: New tests for Vector2l.
6702
6703 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
6704
6705         * cpu-x86.md: Add long version of most packed int ops.
6706
6707         * mini-ops.h: Same.
6708
6709         * mini-x86.h: Same.
6710
6711         * simd-intrinsics.c: Add new vector type Vector2l.
6712
6713 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
6714
6715         * simd-intrinsics.c: Replace SN_op_BitwiseXor with SN_op_ExclusiveOr.
6716
6717         * simd-methods.h: Remove SN_op_BitwiseXor.
6718
6719 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
6720
6721         * mini.c (mono_allocate_stack_slots_full): Align the size of vtypes to their
6722         alignment.
6723
6724 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
6725
6726         * basic-simd.cs: Test for Vector2d.
6727
6728         * basic-simd.cs (test_vector8s_pack_signed_sat): Fixed broken
6729         value.
6730
6731 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
6732
6733         * cpu-x86.md: Add double version of all packed float ops.
6734
6735         * mini-ops.h: Same.
6736
6737         * mini-x86.h: Same.
6738
6739         * simd-intrinsics.c: Add new vector type Vector2d.
6740
6741         * simd-intrinsics.c (vector4f_intrinsics): Fix ordering.
6742
6743         * simd-methods.h: Add Duplicate.
6744
6745 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
6746
6747         * basic-simd.cs: Test for packing with signed saturation.
6748
6749 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
6750
6751         * aot-compiler.c (add_generic_instances): Add all methods of generic instances
6752         found in the TYPESPEC table.
6753
6754 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
6755
6756         * aot-runtime.c (mono_aot_get_method): Log not found methods for extra methods
6757         too.
6758
6759         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
6760
6761         * mini.c (mono_method_to_ir): For MONO_PATCH_INFO_RVA, save field the token
6762         instead of the RVA, since the RVA can be changed by tools like the cil 
6763         stripper.
6764
6765         * method-to-ir.c (mono_method_to_ir2): Ditto.
6766
6767         * debug-mini.c (serialize_variable): Handle ADDRESS_MODE_DEAD.
6768         (deserialize_variable): Ditto.
6769
6770 2008-10-25  Martin Baulig  <martin@ximian.com>
6771
6772         * debug-mini.c (write_variable): Use
6773         `MONO_DEBUG_VAR_ADDRESS_MODE_DEAD' for dead variables.
6774
6775 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
6776
6777         * cpu-x86.md: Add unsigned variants of packd and packw.
6778
6779         * mini-ops.h: Same.
6780
6781         * mini-x86.h: Emit the right instruction for packd and packw.
6782         Add unsigned variants of packd and packw.
6783
6784         * simd-intrinsics.c: Packd and packw were used in place of their
6785         unsigned variants. Change that.
6786         Add intrinsics for (Signed)PackWithSignedSaturation.
6787
6788         * simd-methods.h: Add (Signed)PackWithSignedSaturation.
6789
6790 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
6791
6792         * simd-intrinsics.c (vector4i_intrinsics): New table of intrinsic type.
6793
6794 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
6795
6796         * mini-ops.h: Remove dword packed add/sub with saturation ops.
6797
6798         * cpu-x86.md: Remove dword packed add/sub with saturation ops.
6799
6800         * simd-intrinsics.c (vector4ui_intrinsics): Remove methods without
6801         sse instructions.
6802
6803         * simd-intrinsics.c (vector8s_intrinsics): Fix ordering.
6804
6805 2008-10-24  Mark Probst  <mark.probst@gmail.com>
6806
6807         * method-to-ir.c, mini.c: Special casing for the synchronized
6808         wrapper for the ldtoken+GetTypeFromHandle case.
6809
6810 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
6811
6812         * mini.c (mono_replace_ins): Move this to branch-opts.c.
6813
6814         * mini.c (mono_replace_ins): Propagate has_array_access flag to the newly
6815         created/split bblocks.
6816
6817 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
6818
6819         * mini-ops.h: Add packed signed mul high.
6820         
6821         * cpu-x86.md: Same.
6822
6823         * mini-x86.c (mono_arch_output_basic_block): Same.
6824
6825         * simd-methods.h: Add PackWithUnsignedSaturation and ShiftRightLogic.
6826
6827         * simd-intrinsics.c (vector8s_intrinsics): New table of intrinsic type.
6828
6829 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
6830
6831         * basic-simd.cs: Tests for Vector16sb.
6832
6833 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
6834
6835         * inssel.brg (stmt): Fix OP_HARD_NOP rule.
6836
6837 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
6838
6839         * mini-ops.h: Add packed signed min, max and compare greater.
6840         
6841         * cpu-x86.md: Same.
6842
6843         * mini-x86.c (mono_arch_output_basic_block): Same. Add packed add/sub with
6844         saturation.
6845
6846         * simd-methods.h: Add CompareGreaterThan.
6847
6848         * simd-methods.h: Remove CompareEquals.
6849
6850         * simd-intrinsics.c: Add new TODO entry and some cosmetic changes.
6851
6852         * simd-intrinsics.c (vector16sb_intrinsics): New table of intrinsic type.
6853
6854         * simd-intrinsics.c (vector4f_intrinsics): Rename CompareEquals to
6855         CompareEqual.
6856
6857 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
6858
6859         * basic-simd.cs: Fix tests due to change in the API.
6860
6861 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
6862
6863         * mini.c method-to-ir.c: Use mono_field_get_name () for accessing field->name.
6864
6865 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
6866
6867         * basic-simd.cs: Fix name change in Vector4f::CompareEqual.
6868
6869         * simd-intrinsics.c (simd_intrinsic_emit_store_aligned): Don't use
6870         inst_offset as this has invalid values for LDADDR.
6871
6872 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
6873
6874         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
6875
6876         * simd-intrinsics.c (vector4ui_intrinsics): Add SignedPackWithUnsignedSaturation.
6877
6878 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
6879
6880         * method-to-ir.c (initialize_array_data): Use mono_field_get_data ()
6881         for accessing field->data.
6882
6883 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
6884
6885         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
6886
6887 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
6888
6889         * simd-methods.h: Add SignedPackWithUnsignedSaturation.
6890
6891         * simd-intrinsics.c (vector8us_intrinsics): Add SignedPackWithUnsignedSaturation.
6892
6893 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
6894
6895         * dominators.c (mono_compute_natural_loops): Allocate GList enties
6896         from the cfg mempool.
6897
6898 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
6899
6900         * basic-simd.cs: Tests for new methods in Vector8us.
6901
6902 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
6903
6904         * mini-ops.h: Add multiply and store high.
6905         
6906         * cpu-x86.md: Same.
6907
6908         * mini-x86.c (mono_arch_output_basic_block): Same.
6909
6910         * simd-methods.h: Same.
6911
6912         * simd-intrinsics.c (vector8us_intrinsics): Add MultiplyStoreHigh
6913         and CompareEqual.
6914
6915 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
6916
6917         * method-to-ir.c (mono_emit_method_call_full): Remove a needless call to
6918         mono_class_setup_vtable ().
6919
6920         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Use
6921         mono_class_get_vtable_entry () for accessing klass->vtable.
6922
6923         * aot-runtime.c (load_method): Avoid a crash when using MONO_LOG_LEVEL.
6924
6925         * aot-compiler.c (add_generic_instances): Avoid a crash if a class is not
6926         found.
6927
6928         * method-to-ir.c (mono_save_token_info): Don't save references made from
6929         wrappers.
6930
6931         * aot-compiler.c (add_generic_instances): Add static rgctx wrappers for cctors
6932         of generic instances.
6933
6934         * aot-runtime.c (find_extra_method): Search in all loaded AOT images.
6935
6936 2008-10-19  Mark Probst  <mark.probst@gmail.com>
6937
6938         * cpu-ppc.md, mini-ppc.c: The length of the code generated for
6939         OP_JMP depends on the method signature.  Calculate it properly.
6940
6941 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
6942         
6943         * aot-runtime.c (mono_aot_find_jit_info): Handle extra methods which are
6944         called directly.
6945
6946         * aot-compiler.c (emit_and_reloc_code): Allow direct calling of generic
6947         instances.
6948         (emit_extra_methods): Add another table mapping method indexes to 
6949         offsets in the extra_method_info table.
6950
6951         * mini.h: Bump AOT file format version.
6952         
6953         * aot-runtime.c: Merge most of the code from mono_aot_get_method
6954         and mono_aot_get_method_from_token () into one function.
6955
6956 2008-10-19  Mark Probst  <mark.probst@gmail.com>
6957
6958         * mini-ppc.c (emit_load_volatile_arguments): Inner loop needs a
6959         separate counter.
6960
6961 2008-10-18  Zoltan Varga  <vargaz@gmail.com>
6962
6963         * aot-compiler.c aot-runtime.c: Fix the hash function used for the extra
6964         methods.
6965
6966         * method-to-ir.c (mono_method_to_ir2): Change a !compile_aot assert to
6967         disable_aot.
6968
6969         * mini.c (mono_patch_info_equal): Compare the generic context as well.
6970
6971         * mini.h: Bump aot file format version.
6972
6973         * aot-compiler.c aot-runtime.c: Generalize the wrapper handling code so the
6974         AOT file can contain native code for methods which are not in the METHOD
6975         table. Generate code for non-sharable generic instances of generic methods
6976         found in the METHODSPEC table.
6977         
6978         * method-to-ir.c (mono_method_to_ir2): Remove the aot restriction when
6979         encoding generic type handles.
6980
6981         * ir-emit.h (NEW_AOTCONST_TOKEN): Add a generic_context argument.
6982         (NEW_TYPE_FROM_HANDLE_CONST): Add a generic_context argument.
6983
6984         * ir-emit.h: Rewrite the EMIT_NEW_XXXCONST macros to use the NEW_XXXCONST
6985         macros + MONO_ADD_INS.
6986
6987         * mini.c (mono_jump_info_token_new2): New function which takes a generic
6988         context as well.
6989
6990         * mini.h (MonoJumpInfoToken): Include fields for a generic context.
6991
6992         * mini.h: Bump aot file format version.
6993
6994         * aot-compiler.c aot-runtime.c: Update after changes to MonoJumpInfoToken.
6995
6996 2008-10-17  Mark Probst  <mark.probst@gmail.com>
6997
6998         * mini-x86.h, mini-x86.c, exceptions-x86.c: Align stack on all
6999         platforms, with definable stack alignment value.  Set to 16 now
7000         for all platforms.
7001
7002         * mini.c, mini.h, driver.c: Command line option for disabling
7003         stack alignment.
7004
7005 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
7006
7007         * basic-simd.cs: Tests for new methods in Vector4ui.
7008
7009 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
7010
7011         * mini-ops.h: Add packed int shuffle.
7012         
7013         * cpu-x86.md: Same.
7014
7015         * mini-x86.c (mono_arch_output_basic_block): Same.
7016
7017         * simd-intrinsics.c (vector4ui_intrinsics): Add compare equal,
7018         extract mask, max, min, shuffle.
7019
7020         * simd-intrinsics.c (vector8us_intrinsics): Add max and min.
7021
7022 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
7023
7024         * basic-simd.cs: Tests for new methods in Vector8us.
7025
7026 2008-10-17  Mark Probst  <mark.probst@gmail.com>
7027
7028         * method-to-ir.c (mono_method_to_ir2): "refanytype" produces a
7029         RuntimeTypeHandle, not a TypedReference.
7030
7031 Fri Oct 17 14:40:50 CEST 2008 Paolo Molaro <lupus@ximian.com>
7032
7033         * simd-intrinsics.c: remove relocations.
7034
7035 2008-10-17  Zoltan Varga  <vargaz@gmail.com>
7036
7037         * mini-amd64.c (mono_arch_output_basic_block): Port the IREM_IMM 
7038         optimizations from the x86 backend.
7039
7040 Fri Oct 17 12:00:51 CEST 2008 Paolo Molaro <lupus@ximian.com>
7041
7042         * simd-methods.h, simd-intrinsics.c: debloat method names and
7043         prepare for no relocations.
7044
7045 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
7046
7047         * mini-ops.h: Add packed min/equal and sum of absolute differences.
7048         
7049         * cpu-x86.md: Same.
7050
7051         * mini-x86.c (mono_arch_output_basic_block): Same.
7052
7053         * simd-intrinsics.c (vector16b_intrinsics): Add average, compare equal,
7054         extract mask, max, min and sum of absolute differences.
7055
7056         * simd-intrinsics.c: Increase SIMD_INTRINSIC_NAME_MAX due to new huge
7057         method name.
7058
7059 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
7060
7061         * basic-simd.cs: Test for the other mono_simd_simplify_indirection bug.
7062         Renamed one test for consistency.
7063
7064 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
7065
7066         * simd-intrinsics.c (mono_simd_simplify_indirection): Apply the previous
7067         fix to the code that deal with other blocks.
7068
7069 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
7070
7071         * basic-simd.cs: Test for the mono_simd_simplify_indirection bug.
7072
7073 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
7074
7075         * simd-intrinsics.c (mono_simd_simplify_indirection): Simplify the code
7076         that deals with vreg interference. Explicitly check for OP_LDADDR to be
7077         able to process the source reg.
7078
7079 2008-10-16  Martin Baulig  <martin@ximian.com>
7080
7081         * mini-ops.h, cpu-amd64.md, cpu-x86.md: Added new `hard_nop' opcode.
7082
7083         * inssel.brg: Add `OP_HARD_NOP'.
7084
7085         * mini.h (MonoCompile): Added `keep_cil_nops' flag.
7086
7087         * mini.c (mono_method_to_ir): In `CEE_NOP': generate a
7088         `OP_HARD_NOP' instruction when running inside the debugger.
7089
7090         * method-to-ir.c (mono_method_to_ir2): In `CEE_NOP': generate a
7091         `OP_HARD_NOP' instruction when running inside the debugger.
7092
7093 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
7094
7095         * simd-intrinsics.c (get_simd_vreg): Using sreg1 of OP_XMOVE
7096         now works. The issue with the regalloc tripping up no longer
7097         happens.
7098
7099         * simd-intrinsics.c (load_simd_vreg): Same.
7100
7101 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
7102         
7103         * basic-simd.cs: Tests for new Vector8ui methods.
7104
7105 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
7106
7107         * simd-intrinsics.c (get_simd_vreg): Simplify code and test
7108         only for type. This fixes crashes where MonoInst::klass is checked
7109         for ops of type != VTYPE or OBJ.
7110
7111         * simd-intrinsics.c (load_simd_vreg): Same.
7112
7113 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
7114
7115         * mini-ops.h: Add ops for packed shuffle/max/avg and
7116         extract mask.
7117         
7118         * cpu-x86.md: Same.
7119
7120         * mini-x86.c (mono_arch_output_basic_block): Same.
7121
7122         * simd-intrinsics.c (vector8us_intrinsics): Add avg, shuffle and
7123         extract mask.
7124
7125         * simd-intrinsics.c (simd_intrinsic_emit_extract_mask): New function
7126         to emit extract mask op.
7127
7128         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Retrofic this function
7129         to emit word shuffles.
7130
7131 2008-10-15  Mark Probst  <mark.probst@gmail.com>
7132
7133         * mini.c (mono_allocate_stack_slots_full): Align stack frame to
7134         the largest alignment needed by a variable, but at least
7135         sizeof(gpointer).
7136
7137 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
7138
7139         * basic-simd.cs: Tests for the fixes in the last commit.
7140
7141 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
7142
7143         * simd-intrinsics.c (get_simd_vreg): Drop the is_this_ptr, this function
7144         no longer handles STACK_PTR input.
7145
7146         * simd-intrinsics.c (get_simd_vreg): Don't crash when MonoInst::klass == -1.
7147
7148         * simd-intrinsics.c (load_simd_vreg): New function that works like 
7149         get_simd_vreg   but handles STACK_PTR input.
7150
7151         * simd-intrinsics.c (simd_intrinsic_emit_getter): Use load_simd_vreg
7152         as the input can be an arbitrary pointer.
7153
7154         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Try the
7155         LDADDR local optimization directly otherwise use a store op.
7156
7157 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
7158
7159         * basic-simd.cs: Tests for dup low and dup high.
7160
7161 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
7162
7163         * mini-ops.h: Add dup low and dup high ops.
7164         
7165         * cpu-x86.md: Same.
7166
7167         * mini-x86.c (mono_arch_output_basic_block): Same.
7168
7169         * simd-intrinsics.c (vector4f_intrinsics): Same.
7170
7171 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
7172
7173         * basic-simd.cs: Tests for recently added functionality.
7174
7175 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
7176
7177         * mini-ops.h: Add remaining sse1 fp ops.
7178         
7179         * cpu-x86.md: Add remaining sse1 fp ops.
7180
7181         * mini-x86.c (mono_arch_output_basic_block): Same.
7182
7183         * mini.h: Add enum for simd FP compare conditions.
7184
7185         * simd-intrinsics.c (vector4f_intrinsics): Add all new ops.
7186
7187         * simd-intrinsics.c (simd_intrinsic_emit_binary): Set inst_c0 to flags
7188         so the backed can generate the appropriate op.
7189
7190 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
7191         This patch squeese one more byte from the SimdIntrinsc struct.
7192
7193         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions: Use the version number
7194         a a shift amount intead of simply or'ing it.
7195
7196         * mini.h: Change SIMD_VERSION_* values to be sequential intead of masks.
7197
7198         * simd-intrinsics.c (struct SimdIntrinsc): Squeese simd_version and simd_emit_mode into a single
7199         byte so we can have an aditional flags field without increasing struct size.
7200
7201         * simd-intrinsics.c (emit_intrinsics): Use the value of simd_version as a shift amount before checking
7202         against the simd_supported_versions bitmask.
7203
7204         * simd-intrinsics.c: Set SIMD_INTRINSIC_NAME_MAX to an appropriate value.
7205
7206 Mon Oct 13 10:58:10 CEST 2008 Paolo Molaro <lupus@ximian.com>
7207
7208         * mini.c: remove rawbuffer code (the only use here is unsafe because
7209         it takes locks during signal handling and the kernel now provides much
7210         better info in proc/pid/smaps these days).
7211
7212 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
7213
7214         * mini-amd64.c (mono_arch_output_basic_block): Fix the changes to
7215         OP_X86_PUSH_OBJ. Fixes #434620.
7216
7217         * objects.cs: Add a test.
7218         
7219 2008-10-12  Rodrigo Kumpera  <rkumpera@novell.com>
7220
7221         * basic-simd.cs: Remove PackWithUnsignedSaturation tests as it turns out
7222         that the packuswb/packusdw don't work with unsigned numbers for what
7223         would be negative numbers in signed format.
7224
7225         * cpu-x86.md: Add doubleword forms of many ops and packing ones.
7226         Fix the len of fconv_to_r8_x and xconv_r8_to_i4.
7227
7228         * mini-ops.h: Add doubleword forms of many ops and packing ones.
7229
7230         * mini-x86.c: Emit doubleword forms of many ops and packing ones.
7231
7232         * simd-intrinsics.c (SimdIntrinsc): Rename the flags field to simd_version.
7233
7234         * simd-intrinsics.c (vector4f_intrinsics): Use simd_version field for sse3 ops.
7235
7236         * simd-intrinsics.c (vector4u_intrinsics): Rename to vector4ui_intrinsics and
7237         add more ops.
7238
7239         * simd-intrinsics.c (simd_version_name): New function, returns the name of the
7240         version as the enum in mini.h.
7241
7242         * simd-intrinsics.c (emit_intrinsics): Instead of having a special emit mode
7243         for sse3 ops, check the simd_version field if present. This way the code
7244         works with all versions of sse.
7245
7246 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
7247
7248         * simd-intrinsics.c: Fixed intrinsic name typo.
7249
7250         * mini.h: Added missing simd exported function.
7251
7252         * basic-simd.cs: Added tests for Vector4ui.
7253         Fixed broken test for Vector16b.
7254
7255 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
7256
7257         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Increase
7258         the max length to 64.
7259
7260 2008-10-10  Mark Probst  <mark.probst@gmail.com>
7261
7262         * method-to-ir.c: Only do the fast virtual generic method call for
7263         non-wrapper methods.
7264
7265         * mini.h, mini-trampolines.c: The new generic virtual remoting
7266         trampoline handles virtual method calls via the vtable (as done by
7267         the fast virtual generic method calls) to remoting proxies.
7268
7269         * mini.c (mono_jit_create_remoting_trampoline): For generic
7270         methods reate a generic virtual remoting trampoline.
7271
7272         * mini-amd64.h: Enable fast virtual generic method calls again.
7273
7274 2008-10-10  Mark Probst  <mark.probst@gmail.com>
7275
7276         * mini-ppc.c: Use SP (r1), not frame_reg (which might be r31) to
7277         restore registers when doing tail calls.
7278
7279 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
7280
7281         * simd-intrinsics.c (emit_intrinsics): Vector4u was renamed to
7282         Vector4ui.
7283
7284 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
7285
7286         * basic-simd.cs: Add test for Vecto16b.PackWithUnsignedSaturation.
7287
7288 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
7289
7290         * simd-intrinsics.c (emit_intrinsics): Retrofit to new type names.
7291
7292 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
7293
7294         * basic-simd.cs: Retrofit for API changes.
7295
7296 2008-10-10  Mark Probst  <mark.probst@gmail.com>
7297
7298         * mini-ppc.c: Handle integer stack arguments for tail calls.
7299
7300 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
7301
7302         * optflags-def.h: Removed sse3 optimization.
7303
7304         * driver.c: Same.
7305
7306         * mini-x86.c (mono_arch_cpu_optimizazions): Remove detection of
7307         sse3.
7308
7309         * mini-x86.c: Added mono_arch_cpu_enumerate_simd_versions.
7310
7311         * mini.h: Added enumeration with simd versions.
7312
7313         * simd-intrinsics.c (emit_intrinsics): Use the new static var
7314         for detecting SSE3.
7315
7316         * simd-intrinsics.c: Added mono_simd_intrinsics_init.
7317
7318         * mini.c (mini_init): Call mono_simd_intrinsics_init.
7319
7320 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
7321
7322         * basic-simd.cs: Added tests for Vector8u and Vector16u.
7323
7324         * basic-simd.cs: Fixed test naming.
7325
7326 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
7327
7328         * mini-ops.h: Added ops for packed and saturated math, shifts
7329         and packing/unpacking.
7330
7331         * cpu-x86.md: Added descriptors for the above ops.
7332
7333         * mini-x86.c: Added code to emmit the above ops.
7334
7335         * simd-intrinsics.c: Added support for Vector16u and Vector8u.
7336
7337 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
7338
7339         * aot-compiler.c (compile_method): Enable AOT for generic code.
7340
7341         * ir-emit.h (NEW_DOMAINCONST): Use domainvars in AOT code as well.
7342
7343 Wed Oct 8 16:35:43 CEST 2008 Paolo Molaro <lupus@ximian.com>
7344
7345         * mini.c: add a workaround for a common screwup that ends up blamed
7346         to mono (other processes blocking signal delivery).
7347
7348 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
7349
7350         * method-to-ir.c (mono_method_to_ir2): Clear ins_flag on all code paths
7351         in the LDFLD/STFLD opcodes. Fixes #432673.
7352
7353         * iltests.il.in: Add a new test.
7354
7355 Tue Oct 7 19:59:07 CEST 2008 Paolo Molaro <lupus@ximian.com>
7356
7357         * mini-arm.c: attach the thread in unmanaged->managed transitions
7358         using delegates (bug #433148).
7359
7360 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
7361
7362        * basic-simd.cs: Use new ShuffleSel constants.
7363
7364 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
7365
7366         * driver.c (opt_sets): Added combinations of simd, sse2 and sse3.
7367
7368         * mini-x86.c (mono_arch_cpu_optimizazions): Detect sse3 and now
7369         only disable simd intrinsics if no sse2 is detected.
7370
7371         * optflags-def.h: Added sse3.
7372
7373         * simd-intrinsics.c: Avoid generated sse3 intrinsics if the optimization
7374         is disabled.
7375
7376 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
7377
7378         * aot-compiler.c (add_wrappers): Fix Delegate/MulticastDelegate classes
7379         when adding delegate-invoke wrappers.
7380
7381 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
7382
7383         * Makefile.am: Reenable the simd tests.
7384
7385 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
7386
7387         * mini-amd64.c (mono_arch_emit_outarg_vt) : In the ArgValuetypeAddrInIReg case,
7388           add a call to mono_call_inst_add_outarg_reg for the arg->dreg to make sure that no
7389           other vreg is allocated to that hreg.
7390
7391         Contributed under MIT/X11 license.
7392
7393 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
7394
7395         * Makefile.am: Disable the simd tests for now as Mono.Simd is not
7396         yet checked in.
7397
7398 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
7399
7400         * basic-simd.cs: New test suite for SIMD intrinsics.
7401
7402         * Makefile.am: Added new tests.
7403
7404 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
7405
7406         * cpu-x86.md: Added new instructions to handle float to int using SSE regs.
7407
7408         * mini-ops.h: Same.
7409
7410         * mini-x86.h: Enable mono_arch_decompose_opts if simd intrinsics are enabled.
7411
7412         * mini-x86.c (mono_arch_decompose_opts): Decompose float to int conversion
7413         using SSE2 aware opcodes.
7414
7415         * mini-x86.c (emit_float_to_int): Disable the SSE2 optimization if OPT_SIMD
7416         is enabled, this code path is only reachable if conversion ops are emmited after
7417         mono_method_to_ir.
7418
7419         * mini.h: Added MonoCompile::fconv_to_r8_x_var to hold the float to int var.
7420
7421         This optimization saves 6 bytes per conversion against the old version.
7422
7423 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
7424
7425         * aot-compiler.c (compile_method): Don't skip methods referencing 
7426         generic methods without a corresponding entry in token_info_hash, since
7427         encode_method_ref () can handle all generic methods now.
7428
7429         * method-to-ir.c (mono_save_token_info): Don't save the token info if a 
7430         generic context is set.
7431         
7432         * method-to-ir.c (mono_method_to_ir2): Put back a disable_aot for
7433         generic sharing of LDTOKEN.
7434
7435 2008-10-06  Mark Probst  <mark.probst@gmail.com>
7436
7437         * mini-amd64.h: Temporarily disabled fast virtual generic method
7438         calls because it breaks the System.Runtime.Remoting tests.
7439
7440 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
7441
7442         * aot-compiler.c (add_wrappers): Add delegate-invoke wrappers.
7443
7444         * method-to-ir.c (check_inline_called_method_name_limit): Return TRUE
7445         so inlining actually works.
7446         (check_inline_caller_method_name_limit): Ditto.
7447
7448 Mon Oct 6 11:04:38 CEST 2008 Paolo Molaro <lupus@ximian.com>
7449
7450         * mini-ppc.c: mono_arch_flush_icache () cast pointer using gsize for
7451         64 bit safety (from Olaf Hering and Andreas Farber).
7452
7453 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
7454         
7455         * mini-trampolines.c (mono_aot_trampoline): Delegate processing to
7456         mono_magic_trampoline () if aot_get_method_from_token () fails. Remove
7457         unused virtual call support code.
7458
7459         * aot-runtime.c (decode_method_ref): Add a 'no_aot_trampoline' out argument.
7460         
7461         * aot-runtime.c (mono_aot_get_method_from_vt_slot): Return NULL for methods
7462         which can't use aot trampolines.
7463         (decode_patch): Don't create aot trampolines for methods which can't use
7464         them.
7465
7466         * aot-compiler.c (encode_method_ref): Add a marker for methods which can't
7467         use aot trampolines.
7468
7469         * mini.h: Bump AOT image format version.
7470         
7471 2008-10-05  Zoltan Varga  <vargaz@gmail.com>
7472
7473         * method-to-ir.c (mono_method_to_ir2): Pass cil_method instead of cmethod
7474         to save_token_info () since cmethod is inflated for constrained calls.
7475
7476         * mini-<ARCH>.h mini-x86.c: Remove some unused defines.
7477
7478 2008-10-04  Andreas Farber  <andreas.faerber@web.de>
7479
7480         * Makefile.am: Add build rules for ppc64.
7481         This avoids the build failing at pedump with unresolved symbols
7482         due to lack of arch_sources. Instead it will now fail earlier
7483         due to lack of cpu-ppc64.md.
7484
7485         Contributed under MIT/X11 license.
7486
7487 2008-10-04  Mark Probst  <mark.probst@gmail.com>
7488
7489         * mini-amd64.c (mono_arch_emit_call): Support stack arguments for
7490         tail calls.
7491
7492         * iltests.il.in: Add test case for tail call with many arguments.
7493
7494 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
7495
7496         * method-to-ir.c (mono_method_to_ir2): Add an !cfg->compile_aot assert
7497         to the fast virtual generic method code until the aot case is fixed.
7498
7499 2008-10-03  Mark Probst  <mark.probst@gmail.com>
7500
7501         * mini-ppc.c, mini-ppc.h: Implement generic virtual method thunks.
7502
7503 2008-10-03  Mark Probst  <mark.probst@gmail.com>
7504
7505         * mini-amd64.c, mini-amd64.h: Implement generic virtual method
7506         thunks.
7507
7508 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
7509         
7510         * simd-intrinsics.c: Forgot to add this one.
7511
7512         * mini-codegen.c: Fix macro in case SIMD is not supported.
7513
7514 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
7515         
7516         This patch land initial JIT support for simd intrinsics.
7517
7518         * mini-x86.h: Added new define to make --enable_minimal work on x86.
7519
7520         * Makefile.am: Added simd-intrinsics.c
7521
7522         * simd-intrinsics.c: New file with simd instrinsic related
7523         code.
7524
7525         * cfold.c (mono_constant_fold_ins2): Fold XZERO.
7526
7527         * cpu-x86.md: Add simd related instructions.
7528
7529         * driver.c: Added MONO_OPT_SIMD to the default set of optimizations.
7530
7531         * driver.c: Added two new --regression variants.
7532
7533         * ir-emit.h (MONO_EMIT_NEW_VZERO): Emit XZERO if the type is a simd intrinsic.
7534
7535         * local-propagation.c (mono_local_cprop2): Eliminate useless XMOVE.
7536
7537         * local-propagation.c (mono_local_deadce): Use new macro MONO_IS_NON_FP_MOVE and
7538         extract some complicated logic to helper functions.
7539
7540         * method-to-ir.c (mono_type_to_regmove): Handle simd intrinsics.
7541
7542         * method-to-ir.c (mini_emit_inst_for_method): Emit simd intrinsics.
7543
7544         * method-to-ir.c (mono_handle_global_vregs): If a simd intrinsic was found, apply
7545         the specialized simplification pass.
7546
7547         * method-to-ir.c (mono_spill_global_vars): Use new macro.
7548
7549         * mini-codegen.c: Added SIMD constants to all regbanks arrays.
7550
7551         * mini-codegen.c: Added reg_bank_table_init to initialize the reg desc -> bank
7552         table.
7553
7554         * mini-codegen.c: Define a version of the reg_bank macro that uses desc_to_reg_type
7555         if MONO_ARCH_NEED_SIMD_BANK is defined.
7556
7557         * mini-ops.h: Added the new simd ops.
7558
7559         * mini-x86.c: Added mono_arch_xregname.
7560
7561         * mini-x86.c (mono_arch_cpu_optimizazions): Disable MONO_OPT_SIMD if SSE3 is not detected.
7562
7563         * mini-x86.c (mono_arch_output_basic_block): Add simd related opcodes.
7564
7565         * mini-x86.h: Define simd related MONO_ARCH macros.
7566
7567         * mini.c (mono_type_to_load_membase): Handle simd intrinsics.
7568
7569         * mini.c (mono_type_to_store_membase): Handle simd intrinsics.
7570
7571         * mini.h: Added new macros MONO_IS_NON_FP_MOVE, MONO_IS_REAL_MOVE, MONO_IS_ZERO and
7572         MONO_CLASS_IS_SIMD to deal with simd related IR.
7573
7574         * mini.h (MonoInst): Added spill_var to the backend union.
7575
7576         * mini.h (MonoCompile): Added uses_simd_intrinsics and iconv_raw_var.
7577
7578         * mini.h: Added forward declarations of the new simd fuctions.
7579
7580         * optflags-def.h: Added new optimization names SIMD.
7581
7582         * regalloc.c (mono_regstate_reset): Set next vreg to be the max value of the 3 reg banks.
7583
7584         * regalloc.h: Added support for working with 3 register banks.
7585
7586         * regalloc.h (MonoRegState): Added xsymbolic field if a third regbank is required.
7587
7588         * ssa2.c (mono_ssa_deadce2): Use new MONO_IS_ZERO macro.
7589
7590 Fri Oct 3 16:03:22 CEST 2008 Paolo Molaro <lupus@ximian.com>
7591
7592         * mini-exceptions.c: remove 64 bit related ifdef clutter.
7593
7594 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
7595
7596         * mini-exceptions.c (mono_handle_soft_stack_ovf): Unprotect two pages
7597         instead of one on 64 bit systems.
7598
7599         * method-to-ir.c: Remove unused includes.
7600
7601 2008-10-02  Zoltan Varga  <vargaz@gmail.com>
7602
7603         * aot-compiler.c (emit_exception_debug_info): Use jinfo->used_regs instead of
7604         cfg->used_int_regs, since the two are different on arm.
7605
7606 2008-10-02  Mark Probst  <mark.probst@gmail.com>
7607
7608         * method-to-ir.c, inssel.brg, mini-trampolines.c: Use
7609         mono_method_get_vtable_index() to get the vtable index.
7610
7611 2008-10-02  Mark Probst  <mark.probst@gmail.com>
7612
7613         * method-to-ir.c (mono_method_to_ir2): Don't create native
7614         wrappers for array methods, because they're never called (and if
7615         they were called they wouldn't work).
7616
7617 2008-10-02  Mark Probst  <mark.probst@gmail.com>
7618
7619         * method-to-ir.c (mono_method_to_ir2): Array methods are
7620         special-cased and must not be invoked indirectly via the (M)RGCTX
7621         when generic sharing is turned on.  Fixes #431413.
7622
7623 2008-10-01  Mark Probst  <mark.probst@gmail.com>
7624
7625         * method-to-ir.c: When generic sharing is active, call
7626         non-interface virtual generic methods via the standard trampoline.
7627
7628         * mini-trampolines.c: Handle virtual generic shared methods.
7629
7630         * mini.h, mini-x86.c, mini-x86.h: New argument for
7631         mono_arch_build_imt_thunk() which is non-NULL for virtual generic
7632         method thunks and which is the trampoline to call if the lookup
7633         fails.  Enable the virtual generic method thunk for x86.
7634
7635         * mini-amd64.c, mini-arm.c, mini-ia64.c, mini-sparc.c,
7636         mini-ppc.c (mono_arch_build_imt_thunk): Add the additional
7637         argument but assert that it's NULL, because these archs don't yet
7638         implement the virtual generic method thunk.  Changes in the IMT
7639         thunk data structures.
7640
7641 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
7642
7643         * aot-compiler.c (emit_globals): Avoid invalid characters in
7644         the static linking symbol.
7645
7646         * objects.cs: Add a test for the range check optimization. Fix warnings.
7647
7648         * branch-opts.c (mono_if_conversion): Add back the 'optimize range checks'
7649         optimization from the current JIT.
7650
7651         * method-to-ir.c (mini_emit_inst_for_method): Decompose String.Length
7652         later in decompose_array_access_opts () to allow more optimizations.
7653
7654         * method-to-ir.c (mono_handle_soft_float): Rename this to 
7655         mono_decompose_soft_float () for consistency.
7656
7657         * mini-ops.h: Fix arguments of OP_STRLEN.
7658
7659         * method-to-ir.c (save_cast_details): Extract the cast details saving code
7660         into a separate function.
7661         (reset_cast_details): Ditto.
7662         (handle_unbox): Save cast details. Fixes #431254.
7663
7664         * method-to-ir.c: Remove some obsolete FIXMEs.
7665
7666 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
7667
7668         * ir-emit.h (alloc_dreg): Write a warning before crashing.
7669
7670 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
7671
7672         * mini-codegen.c: More work on macros to make them
7673         ready for multiple regbanks.
7674
7675 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
7676
7677         * method-to.ir.c (mono_type_to_regmove): Remove static modifier.
7678
7679         * mini.h: Export mono_type_to_regmove. Fix signature of mono_regname_full.
7680
7681 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
7682
7683         * mini-codegen.c (mono_spillvar_offset): Proper support for
7684         multiple regbanks.
7685
7686 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
7687
7688         * mini-amd64.c (mono_arch_emit_epilog): Remove some duplicated code from
7689         the stack overflow changes.
7690
7691 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
7692
7693         * mini-codegen.c: Make all bank macros depend on reg_bank.
7694
7695         * mini-codegen.c (mono_local_regalloc): Make free mask
7696         initialization regbank aware.
7697
7698 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
7699
7700         * mini-codegen.c (mono_local_regalloc): Extract callee
7701         mask selection to a function and make it regbank aware.
7702
7703 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
7704
7705         * mini-codegen.c (mono_local_regalloc): Changed the cloberring
7706         code to deal with many regbanks.
7707
7708 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
7709
7710         * mini-codegen.c: More fp->regbank changes.
7711
7712 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
7713
7714         * mini-codegen.c: Change asserts to use MONO_NUM_REGBANKS instead
7715         of a hardcoded constant.
7716
7717 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
7718
7719         * method-to-ir.c (type_from_stack_type): Fix typo.
7720
7721 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
7722
7723         * mini-ia64.c (emit_move_return_value): Convert float return values to
7724         double.
7725
7726         * objects.cs: Add a new test.
7727         
7728         * mini-ia64.c (mono_arch_allocate_vars): Disable fp elimination for
7729         VARARG methods to fix an assert later.
7730
7731         * mini-mips.h mini-mips.c mini-ops.h cpu-mips.md: Update the mips back
7732         end so it at least compiles.
7733
7734 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
7735
7736         * method-to-ir.c (emit_optimized_ldloca_ir): Fix this.
7737
7738 2008-09-28  Rodrigo Kumpera  <rkumpera@novell.com>
7739
7740         * method-to-ir.c (mono_method_to_ir2): Extract the ldloca + initobj
7741         optimization to a new function (emit_optimized_ldloca_ir) and enable
7742         it for both ldloca and ldloca_s.
7743
7744 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
7745
7746         * method-to-ir.c (mono_method_to_ir2): Remove an unnecessary assert in the
7747         gshared CASTCLASS code.
7748
7749         * driver.c (mono_main): Add a workaround for shutdown crashes seen on
7750         amd64, where the libc stack unwinder encounters stack frames referring to
7751         native code in unmapped memory.
7752
7753         * method-to-ir.c (mini_emit_check_array_type): Add support for generic
7754         sharing.
7755
7756         * generics.cs: Add new test.
7757
7758 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
7759
7760         * mini-arm.h driver.c: Print the fp model when using --version on arm. Also,
7761         add a check that one of the ARM_FPU_ constants is defined.
7762
7763         * mini-exceptions.c (mono_handle_soft_stack_ovf): Really fix the build.
7764         
7765         * mini-exceptions.c: Fix build on non-altstack platforms.
7766
7767         * method-to-ir.c (mono_method_to_ir2): Fix aot support for the
7768         sharing of vtypes.
7769
7770         * ir-emit.h: Add a comment to NEW_PCONST.
7771
7772         * mini-exceptions.c (mono_altstack_restore_prot): Fix a warning.
7773
7774         * mini.h (MonoJitDomainInfo): Move some fields here from MonoDomain.
7775
7776         * mini.c aot-runtime.c method-to-ir.c driver.c mini-trampolines.c: Update
7777         after the changes to MonoJitDomainInfo.
7778
7779 2008-09-27  Mark Probst  <mark.probst@gmail.com>
7780
7781         * mini-ppc.c, tramp-ppc.c, mini-ppc.h: Implement generic code sharing.
7782
7783 2008-09-27  Mark Probst  <mark.probst@gmail.com>
7784
7785         * mini-ppc.c: Compiler warning fixes.
7786
7787 2008-09-27  Mark Probst  <mark.probst@gmail.com>
7788
7789         * mini-ppc.c: Special handling for 1/2 byte structs on Darwin only
7790         for pinvokes.
7791
7792 2008-09-27  Mark Probst  <mark.probst@gmail.com>
7793
7794         * exceptions-ppc.c, mini-ppc.h: Compile
7795         mono_arch_handle_altstack_exception() on Darwin, too.
7796
7797 2008-09-27  Mark Probst  <mark.probst@gmail.com>
7798
7799         * method-to-ir.c (mono_emit_rgctx_method_call_full): Must also
7800         work on archs which don't have generic sharing implemented, only
7801         without the vtable_arg.
7802
7803 2008-09-26  Mark Probst  <mark.probst@gmail.com>
7804
7805         * mini.c: Added comment explaining why delegate ctor icall
7806         wrappers are compiled.
7807
7808 2008-09-26  Mark Probst  <mark.probst@gmail.com>
7809
7810         * mini.c: Don't produce trampolines to delegate ctor icall
7811         wrappers but compile them upfront.
7812
7813 Fri Sep 26 17:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
7814
7815         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: amd64 support code for calling a
7816         runtime-set function when going back to managed code. Currently this
7817         is used to set back the protection on the soft ovf pages and/or to
7818         throw the stack overflow exception that happened in unmanaged code.
7819
7820 Fri Sep 26 16:46:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
7821
7822         * tramp-x86.c, mini-x86.h, mini-x86.c: x86 support code for calling a
7823         runtime-set function when going back to managed code. Currently this
7824         is used to set back the protection on the soft ovf pages and/or to
7825         throw the stack overflow exception that happened in unmanaged code.
7826
7827 Fri Sep 26 16:34:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
7828
7829         * mini.h, mini.c, mini-trampolines.c, mini-exceptions.c: added
7830         the support code for restoring stack protection after stack overflows
7831         that happen in unmanaged code. Don't set the exec permission on the
7832         soft overflow area.
7833
7834 2008-09-26  Zoltan Varga  <vargaz@gmail.com>
7835
7836         * mini-trampolines.c (mono_delegate_trampoline): Add wrappers even if
7837         delegate->method_ptr is set. Fixes #428054.
7838
7839 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
7840
7841         * tests.cs: Rename to ratests.cs.
7842
7843         * method-to-ir.c: Merge the emit_get_rgctx () calls into the 
7844         emit_get_rgctx_... functions.
7845
7846 2008-09-25  Mark Probst  <mark.probst@gmail.com>
7847
7848         * method-to-ir.c: Eliminated macro EMIT_GET_RGCTX.
7849
7850 2008-09-25  Mark Probst  <mark.probst@gmail.com>
7851
7852         * mini-trampolines.c (mono_magic_trampoline): Unwrap wrappers
7853         before asserting that method is sharable.
7854
7855 2008-09-25  Mark Probst  <mark.probst@gmail.com>
7856
7857         * method-to-ir.c, mini.c, jit-icalls.c: New function for checking
7858         whether method needs a static RGCTX wrapper used instead of
7859         complex conditions.
7860
7861         * generic-sharing.c, mini.h: A few functions moved to
7862         metadata/generic-sharing.c.
7863
7864 2008-09-25  Mark Probst  <mark.probst@gmail.com>
7865
7866         * method-to-ir.c, mini.c, mini-exceptions.c, mini-trampolines.c:
7867         Generic code sharing for value types, which essentially means
7868         treating value type methods like static methods.  The RGCTX is
7869         passed in the same way.
7870
7871 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
7872
7873         * method-to-ir.c (mono_method_to_ir2): Avoid an assert in the NEWOBJ
7874         opcode when creating multi-dimensional arrays of open types.
7875
7876         * generic-sharing.c (mono_method_check_context_used): Handle arrays of
7877         open generic types.
7878
7879         * generics.cs: Add a test.
7880
7881         * mini-codegen.c: Use macros everywhere for checking floats instead of == 'f'.
7882
7883 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
7884
7885         * mini.h (MonoCompile): Add 'disable_vreg_to_lvreg' flag.
7886
7887         * mini.c (mini_method_compile): Set it when running under the debugger. 
7888
7889         * method-to-ir.c (mono_handle_global_vregs): Disable global->local
7890         vreg optimization if the flag is set.
7891
7892         * driver.c (mono_main): Add --attach= option to pass options to
7893         the attach agent.
7894
7895         * mini.c (sigquit_signal_handler): Start the attach agent.
7896
7897         * ssapre.c: Disable this to save space since it is not yet ported to
7898         linear IR.
7899
7900         * regalloc2.c: Disable this to save space.
7901
7902         * mini.h (MonoJitStats): Remove unused analyze_stack_repeat.
7903
7904 Wed Sep 24 16:01:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
7905
7906         * decompose.c, method-to-ir.c, mini-codegen.c, regalloc2.c: make
7907         the -v option useful again.
7908
7909 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
7910
7911         * mini-amd64.c (mono_arch_output_basic_block): Add support for
7912         --break-at-bb.
7913
7914         * inssel.brg (mini_emit_castclass): Avoid the szarray!=array checks for
7915         arrays of arrays. Fixes #428406.
7916
7917         * method-to-ir.c (mini_emit_castclass): Ditto.
7918
7919         * objects.cs: Add new test.
7920         
7921 2008-09-23  Rodrigo Kumpera  <rkumpera@novell.com>
7922
7923         * method-to-ir.c (type_to_eval_stack_type): The code path for the new JIT
7924         was wrong at it choked against target_type_is_incompatible for byref types.
7925
7926 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
7927
7928         * mini-codegen.c: Use 'bank' macros instead of 'is_fp' macros in most 
7929         places.
7930
7931 Tue Sep 23 15:31:45 CEST 2008 Paolo Molaro <lupus@ximian.com>
7932
7933         * mini-exceptions.c: update a few more exceptions-related counters.
7934
7935 Tue Sep 23 15:28:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
7936
7937         * aot-runtime.c, method-to-ir.c, mini.c, mini-trampolines.c: use the
7938         new functions to allocate from persistent mempools.
7939
7940 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
7941
7942         * mini.h regalloc.h mini-codegen.c: Generalize the regalloc code to allow 
7943         multiple register banks in the future.
7944
7945         * mini-codegen.c (mono_local_regalloc): Fix a warning.
7946
7947 2008-09-22  Rodrigo Kumpera  <rkumpera@novell.com>
7948
7949         * mini.c (type_to_eval_stack_type): Remove duplicated function.
7950
7951         * method-to-ir.c (type_to_eval_stack_type): Make this version compatible with both JIT.
7952
7953         * mini.h: Export type_to_eval_stack_type.
7954
7955         This function was nearly duplicated in method-to-ir.c and mini.c. The difference
7956         is only ins->klass of byref types.
7957
7958 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
7959
7960         * method-to-ir.c (mini_emit_memset): Use a default alignment of 4.
7961         (mini_emit_memcpy2): Ditto.
7962
7963         * mini-amd64.c: Fix a warning.
7964
7965 2008-09-21  Mark Probst  <mark.probst@gmail.com>
7966
7967         * exceptions-ppc.c (mono_arch_get_call_filter): Fixed stack frame
7968         linking.
7969
7970 2008-09-19  Rodrigo Kumpera  <rkumpera@novell.com>
7971
7972         * method-to-ir.c: Extract stloc micro-optimization to a
7973         function and apply it to all cases.
7974
7975 2008-09-19  Mark Probst  <mark.probst@gmail.com>
7976
7977         * method-to-ir.c: Don't fail generic code sharing in cases we
7978         already support.
7979
7980 2008-09-18  Mark Probst  <mark.probst@gmail.com>
7981
7982         * mini-ppc.c: Handle structs in tailcalls on Darwin.
7983
7984 Tue Sep 16 21:07:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
7985
7986         * *.c, *.md, mini-ops.h: introduced relaxed_nop opcode for spin wait
7987         implementation.
7988
7989 Tue Sep 16 16:39:16 CEST 2008 Paolo Molaro <lupus@ximian.com>
7990
7991         * trace.c: make tracing more useful and correct, with per-thread
7992         id and indent info.
7993
7994 2008-09-15  Mark Probst  <mark.probst@gmail.com>
7995
7996         * mini-ppc.c (mono_arch_emit_call): Convert floats to R4 when
7997         doing a method call and the argument is an R4.
7998
7999 2008-09-14  Zoltan Varga  <vargaz@gmail.com>
8000
8001         * aot-compiler.c (add_wrappers): Do not generate runtime invoke wrappers for
8002         generic methods.
8003
8004 2008-09-13  Mark Probst  <mark.probst@gmail.com>
8005
8006         * mini-ppc.c: Convert result to single for OP_ICONV_TO_R4.
8007
8008 2008-09-12  Zoltan Varga  <vargaz@gmail.com>
8009
8010         * mini.h (MONO_IS_JUMP_TABLE): Handle GOT_ENTRY.
8011         (MONO_JUMP_TABLE_FROM_INS): Ditto.
8012
8013 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
8014
8015         * driver.c: Add a --agent argument (not supported yet) to load managed
8016         agent assemblies before loading the main assembly, similarly to how the
8017         Java VM handles agents.
8018
8019 2008-09-11  Mark Probst  <mark.probst@gmail.com>
8020
8021         * mini-ppc.c (mono_arch_allocate_vars): Use arch-independent
8022         function to do stack layout of local variables.
8023
8024 2008-09-11  Mark Probst  <mark.probst@gmail.com>
8025
8026         * mini-ppc.c (calculate_sizes): Bugfix in sigcookie position
8027         calculation.
8028
8029 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
8030
8031         * method-to-ir.c ssa2.c mini.c mini-amd64.c decompose.c ssa.c abcremoval.c
8032         abcremoval2.c branch-opts.c driver.c dominators.c: Disable parts of the
8033         JIT if DISABLE_JIT is defined.
8034
8035         * Makefile.am: Avoid compiling/linking in inssel.c if DISABLE_JIT is
8036         defined.
8037
8038 2008-09-10  Mark Probst  <mark.probst@gmail.com>
8039
8040         * iltests.il.in: Disable the fconv test on PPC (the result is
8041         undefined according to ECMA).
8042
8043 2008-09-10  Mark Probst  <mark.probst@gmail.com>
8044
8045         * iltests.il.in: Enable tail call tests for PPC.
8046
8047         * mini.h: Add variable for storing incoming valuetype argument
8048         addresses for tail calls.
8049
8050         * mini-ppc.c: Implement valuetype arguments and return values for
8051         tailcalls on Linux.
8052
8053 2008-09-09  Mark Probst  <mark.probst@gmail.com>
8054
8055         * mini-ppc.c: Partially implement tail calls (struct arguments and
8056         return values not supported).
8057
8058         * method-to-ir.c: Enable tail calls on PPC.
8059
8060 2008-09-08  Zoltan Varga  <vargaz@gmail.com>
8061
8062         * aot-compiler.c (emit_wrapper_info): Omit the klass name from
8063         runtime-invoke wrappers to work around the problem of them getting
8064         assigned to a random class.
8065
8066         * aot-runtime.c (mono_aot_get_method): Ditto.
8067         
8068 2008-09-07  Zoltan Varga  <vargaz@gmail.com>
8069
8070         * mini-exceptions.c mini-mips.h mini-s390.h exceptions-mips.c: Kill
8071         the CUSTOM_EXCEPTION_HANDLING and CUSTOM_STACK_WALK defines.
8072
8073 2008-09-07  Mark Probst  <mark.probst@gmail.com>
8074
8075         * method-to-ir.c (mono_method_to_ir2): Disable tail calls for PPC
8076         until they're implemented properly.
8077
8078         * exceptions-ppc.c: Use arch-independent exception-handling code
8079         instead of custom one.
8080
8081         * exceptions-ppc.c, mini-ppc.c, mini-ppc.h: Bug fixes and changes
8082         for Linear IR.
8083
8084         * tramp-ppc.c, mini-ppc.c: Fixed warnings.
8085
8086         * decompose.c, aot-runtime.c, aot-compiler.c: PPC code also
8087         applies when __powerpc__ is defined.
8088
8089 2008-09-06  Zoltan Varga  <vargaz@gmail.com>
8090
8091         * aot-runtime.c (mono_aot_get_method): Add another cache mapping wrapper
8092         methods to their code to avoid computing the full name of wrappers and
8093         doing a lookup in a string hash table.
8094
8095 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
8096
8097         * method-to-ir.c: Remove the CHECK_BBLOCK () stuff it is not needed since
8098         we identify bblocks before method_to_ir () is ran.
8099
8100         * branch-opts.c (mono_optimize_branches): Avoid nullifying the exit bblock.
8101         Also avoid optimizing branches pointing to themselves.
8102
8103         * mini.c (mini_method_compile): Ditto. Fixes #422947.
8104
8105 2008-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
8106
8107         * driver.c (mono_main): Enable the new verifier under core-clr and cas.
8108
8109 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
8110
8111         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Implement this.
8112         (mono_arch_patch_plt_entry): Fix the calculation of the jump_entry.
8113         (mono_arch_get_nullified_class_init_trampoline): Return 'code' instead of
8114         'buf'.
8115
8116         * aot-compiler.c (emit_plt): Fix the arm plt entries, previously they all 
8117         jumped to the same entry in plt_jump_table.
8118
8119 2008-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
8120
8121         * method-to-ir.c (initialize_array_data): Handle field with RVA from
8122         dynamic images.
8123
8124 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
8125
8126         * method-to-ir.c (handle_isinst): Do the assignment at the beginning, so the
8127         other assignment can be if converted. Saves 1.5% on corlib size and fixes
8128         #421807.
8129
8130 2008-08-29  Geoff Norton  <gnorton@novell.com>
8131
8132         * aot-compiler.c: The Mach/ARM compiler doesn't understand the bss
8133         segment, and doesn't properly handle .space as .text.  Fixes
8134         AOT Mach/ARM
8135
8136 2008-08-29  Geoff Norton  <gnorton@novell.com>
8137
8138         * mini.c: Disable the mach exception handler when running on 
8139         ARM
8140
8141 2008-08-29  Geoff Norton  <gnorton@novell.com>
8142
8143         * aot-compiler.c: Patch from Renaldas Zioma to properly register 
8144         globals on Darwin/ARM
8145
8146 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
8147
8148         * mini.c: Avoid not initializing the runtime when doing AOT compilation, 
8149         since too many things depend on it. Instead, call 
8150         mono_runtime_set_no_exec ().
8151         
8152         * mini.c (mono_create_tls_get): Call mono_alloc_preg (cfg) when running with
8153         the new JIT.
8154
8155         * aot-compiler.c: Add an 'asm-only' AOT option.
8156
8157         * mini.c: Avoid initializing the runtime when doing AOT compilation.
8158                 
8159         * aot-compiler.c (compile_method): Disable gshared support for now as it
8160         doesn't yet work.
8161
8162 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
8163
8164         * mini-amd64.h : Fix a compiler warning.
8165
8166         * exceptions-amd64.c (mono_arch_unwindinfo_install_unwind_info) :
8167           Changed to use a callback function to retrieve the unwind info.
8168           This avoids problems observed when code blocks were removed by
8169           unloading an app domain.
8170
8171         * mini-amd64.c (mono_arch_cpu_optimizazions) : Removing the peephole 
8172           and branch excludes for Winx64.  The fix in exceptions-amd64.c allows them
8173           to work properly.
8174
8175         Contributed under MIT/X11 license.
8176
8177 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
8178
8179         * mini-amd64.c (mono_arch_output_basic_block) : Fix the OP_X86_PUSH_OBJ
8180           case to keep the stack aligned to 8.
8181
8182         Contributed under MIT/X11 license.
8183
8184 2008-08-26  Zoltan Varga  <vargaz@gmail.com>
8185
8186         * aot-runtime.c (mono_aot_get_method): Add a cache for wrapper names to
8187         avoid repeated linear searches.
8188
8189 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
8190
8191         * aot-compiler.c (add_wrappers): Avoid calling get_runtime_invoke with
8192         methods it can't handle.
8193         
8194         * aot-compiler.c (add_method): Avoid adding a method twice.
8195         (add_wrappers): Add runtime invoke wrappers for all methods.
8196
8197         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): New
8198         function to create an aot-compatible version of this trampoline.
8199
8200         * aot-compiler.c aot-runtime.c: Add support for AOT rgctx fetch trampolines.
8201
8202 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
8203
8204         * aot-compiler.c (compile_method): Skip wrappers of generic icalls.
8205
8206         * method-to-ir.c (mono_method_to_ir2): Replace an assert in UNBOX_ANY
8207         with a generic sharing failure.
8208
8209         * aot-compiler.c (emit_klass_info): Call mono_class_get_nested_types ().
8210
8211         * method-to-ir.c (mono_method_to_ir2): Rethrow the correct exception in
8212         CEE_RETHROW. Fixes #419634.
8213
8214         * mini.c (mono_method_to_ir): Ditto.
8215
8216         * exceptions.cs: Add a new test.
8217         
8218         * generic-sharing.c (mini_type_stack_size): Always pass TRUE as allow_open
8219         to mono_type_stack_size_internal () since some callers might not pass in
8220         an rgctx.
8221
8222         * mini-x86.c (mono_arch_emit_prolog): Store the rgctx before calling
8223         instrument_prolog. Fixes #419878.
8224
8225         * mini.c (mono_compile_create_var_for_vreg): Make the lvars representing
8226         doubles in soft float mode volatile.
8227
8228 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
8229
8230         * ir-emit.h (NEW_ARGSTORE): Use cfg->args and cfg->arg_types to fix the build.
8231
8232         * method-to-ir.c (mono_save_args): Use ARGSTORE instead of TEMPSTORE
8233         to handle soft float correctly.
8234
8235         * tramp-arm.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Implement
8236         the fast path.
8237
8238         * mini.h (struct MonoCallInst): Add dynamic_imt_arg boolean field.
8239
8240         * exceptions-arm.c (mono_arch_find_jit_info): Set ctx->regs [ARMREG_R11]
8241         to sp, since the generics catch code requires it.
8242
8243         * mini-arm.h (MONO_ARCH_VTABLE_REG): Use R0 for this to avoid needless
8244         copying.
8245
8246         * method-to-ir.c (emit_imt_argument): Pass imt_arg to 
8247         mono_arch_emit_imt_argument ().
8248
8249         * mini-<ARCH>.c (mono_arch_emit_imt_argument): Add an 'imt_arg' argument.
8250
8251         * mini-arm.c tramp-arm.c: Generic sharing updates.
8252
8253 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
8254
8255         * mini-arm.c: Fix the arm build.
8256
8257         * generic-sharing.c (mini_type_get_underlying_type): New helper function
8258         handling enums, generic instances and generic sharing.
8259         (mini_type_stack_size_full): Ditto.
8260
8261         * mini-amd64.c mini-x86.c mini-arm.c: Use the new functions.
8262         
8263         * mini.h (struct): Add 'uses_rgctx_reg' and 'uses_vtable_reg' fields.
8264
8265         * method-to-ir.c: Set the new fields when using RGCTX_REG/VTABLE_REG.
8266
8267         * tramp-arm.c: Implement the rgctx fetch and the generic class init 
8268         trampolines.
8269
8270         * mini-arm.c: Various small generic sharing changes.
8271
8272         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline): Implement
8273         this for x86.
8274         (mono_arch_create_trampoline_code): Remove most of the GENERIC_CLASS_INIT
8275         custom code.
8276
8277         * mini-trampolines.c (mono_create_generic_class_init_trampoline): New
8278         helper function to return a generic class init trampoline.
8279
8280         * method-to-ir.c mini.c: Use it.
8281         
8282         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline): New
8283         arch-specfic function to return a generic class init trampoline.
8284
8285         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Remove most of
8286         the GENERIC_CLASS_INIT custom code.
8287
8288         * method-to-ir.c (mono_method_to_ir2): If RGCTX_REG is not defined, that is
8289         a fatal error, not a sharing failure.
8290
8291         * tramp-<ARCH>.c (mono_arch_get_rgctx_lazy_fetch_offset): Removed, no longer
8292         needed.
8293
8294         * mini-trampolines.c (mono_rgctx_lazy_fetch_trampoline): Get the additional
8295         trampoline argument from MONO_ARCH_VTABLE_REG.
8296
8297         * tramp-x86.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
8298         order of the arguments to the C trampoline: pass 'slot' as the trampoline
8299         argument, and pass the vtable in VTABLE_REG.
8300
8301         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
8302         order of the arguments to the C trampoline: pass 'slot' as the trampoline
8303         argument, and pass the vtable in VTABLE_REG.
8304         (mono_arch_create_trampoline_code_full): Remove some special casing for
8305         the rgctx fetch trampoline.
8306
8307         * mini.c (mono_method_to_ir): Fix the STELEM_ANY+null value optimization.
8308         Fixes #419273.
8309
8310         * iltests.il: Add a test for it.
8311
8312 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
8313
8314         * aot-compiler.c (compile_method): Enable AOT support for generics sharing.
8315
8316         * method-to-ir.c (mono_method_to_ir2): Remove an aot restriction which is
8317         no longer needed.
8318
8319         * mini-trampolines.c (mono_magic_trampoline): Add a sync wrapper here,
8320         use mono_jit_info_table_find () to avoid recursion.
8321         (mono_delegate_trampoline): Add a sync wrapper here.
8322
8323         * method-to-ir.c (mono_method_to_ir2): Don't call mono_ldftn_nosyc
8324         here.
8325
8326         * mini.c (mono_method_to_ir): Ditto.
8327         
8328         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Remove
8329         add_sync_wrapper argument. Don't add a sync wrapper here.
8330         (mono_create_jump_trampoline): Don't add a sync wrapper here.
8331
8332         * jit-icalls.c (mono_ldftn_nosync): Removed, no longer needed.
8333         
8334 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
8335
8336         * exceptions-amd64.c (seh_handler):  For Winx64 adding missing copy 
8337           of nonvolatile registers back from MonoContext to CONTEXT.
8338
8339         Contributed under MIT/X11 license.
8340
8341 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
8342
8343         * mini-amd64.c (mono_arch_get_delegate_invoke_impl):  When shifting the
8344           arguments on Winx64 there are only 4 argument registers.  For this
8345           logic to work the last argument must be pulled from the stack.  
8346
8347         Contributed under MIT/X11 license.
8348
8349 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
8350
8351         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
8352
8353         * aot-runtime.c aot-compiler.c patch-info.h mini.c: Get rid of
8354         MONO_PATCH_INFO_WRAPPER, encode/decode wrapper methods like the others in
8355         encode/decode_method_ref ().
8356
8357         * aot-compiler.c (encode_patch): Handle STATIC_RGCTX_INVOKE wrappers.
8358
8359         * aot-runtime.c (decode_patch): Ditto.  
8360
8361         * mini.c (mono_resolve_patch_target): Handle RGCTX_FETCH sub-patches of type
8362         MONO_PATCH_INFO_METHOD.
8363
8364         * aot-runtime.c (decode_exception_debug_info): Decode the contents of
8365         MonoGenericJitInfo.
8366
8367         * aot-compiler.c (emit_exception_debug_info): Emit the contents of
8368         MonoGenericJitInfo.
8369
8370         * method-to-ir.c (emit_imt_argument): Fix AOT+gshared support.
8371
8372         * mini-amd64.c (add_valuetype): Use a dummy gsctx if we didn't receive
8373         one from the caller.
8374
8375         * aot-runtime.c (decode_generic_inst): New function to decode and
8376         return a interned generic inst.
8377         (decode_klass_ref): Use it.
8378         (decode_method_ref): Ditto.
8379
8380         * aot-compiler.c (emit_exception_debug_info): Save 
8381         jinfo->has_generic_jit_info too.
8382
8383 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
8384
8385         * mini-ia64.c (mono_arch_output_basic_block): Add OP_FCONV_TO_I.
8386
8387         * iltests.il.in: Add a test for fconv_to_i.
8388
8389         * liveness.c: Disable the liveness2 pass for now to save space.
8390
8391         * regalloc2.c: Include mempool-internals.h to fix warnings.
8392
8393         * aot-compiler.c (encode_method_ref): Encode the context of generic
8394         instance methods.
8395
8396         * aot-runtime.c (decode_method_ref): Inflate generic methods using
8397         the context saved in the aot file.
8398
8399         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
8400
8401         * mini-x86.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
8402
8403         * method-to-ir.c (mono_method_to_ir2): When using CEE_JMP, make arguments
8404         volatile so they won't be optimized away.
8405
8406 2008-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
8407
8408         * ssa.c:
8409         * ssa2.c:
8410         * mini.c:
8411         * regalloc2.c:
8412         * dominators.c: Remove duplicated functions that now are in
8413         mempool-internals.h.
8414
8415 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
8416
8417         * aot-compiler.c: Fix warnings.
8418
8419         * aot-runtime.c (decode_klass_ref): Add support for VARs/MVARs.
8420
8421         * aot-compiler.c (encode_klass_ref): Encode is_method too for VARs/MVARs.
8422
8423         * method-to-ir.c (emit_get_rgctx_method): Use MONO_PATCH_INFO_METHODCONST
8424         as the patch type.
8425
8426         * mini.c (mono_resolve_patch_target): Ditto.
8427         
8428         * aot-compiler.c (encode_patch): Add support for RGCTX_FETCH.
8429         (encode_klass_ref): Add support for encoding VARs/MVARs.
8430
8431         * mini.c (mono_patch_info_dup_mp): Handle RGCTX_FETCH.
8432
8433         * aot-runtime.c (decode_patch_info): Rename to 'decode_patch'. Split out
8434         the handling of the got entries into a separate 'decode_got_entry' function.
8435         Add support for RGCTX_FETCH.
8436
8437         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RDI since RAX is
8438         clobbered by the trampoline code.
8439
8440         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RAX since that is
8441         not clobbered by the indirect calling code.
8442
8443 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
8444
8445         * mini-x86.c (mono_arch_patch_code): Handle RGCTX_FETCH/GENERIC_CLASS_INIT
8446         to fix the build.
8447
8448 2008-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
8449
8450         * method-to-ir.c (mono_emit_method_call_full): Alloc the constructor
8451         signature using the compilation mempool otherwise we would leak it.
8452
8453 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
8454
8455         * method-to-ir.c (mono_method_to_ir2): Emit the generic class inits using
8456         mono_emit_abs_call ().
8457
8458         * patch-info.h: Add GENERIC_CLASS_INIT.
8459
8460         * mini.c (mono_resolve_patch_target): Handle GENERIC_CLASS_INIT.
8461
8462         * mini-amd64.c (emit_call_body): Treat abs calls which have a patch info
8463         as their target as a near call.
8464
8465         * mini.c (mono_codegen): Handle patches stored in cfg->abs_patches in the
8466         ABS handling code.
8467         (mono_resolve_patch_target): Add support for MONO_PATCH_INFO_RGCTX_FETCH.
8468
8469         * method-to-ir.c (mono_emit_abs_call): New helper function which emits a
8470         call to a runtime function described by a patch.
8471
8472         * method-to-ir.c: Emit rgctx entry fetches and class init trampolines using
8473         mono_emit_abs_call, this has the advantage that the ABS handling code in
8474         mono_codegen () can handle them both, and can handle other stuff in the
8475         future without additional code.
8476
8477         * mini.h (struct MonoJumpInfoRgctxEntry): New structure describing an rgctx
8478         entry.
8479         (MonoCompile): Add 'abs_patches' hashtable, which contains patches describing
8480         abs addresses.
8481
8482         * mini.h: Add missing bblock related prototypes.
8483
8484         * mini.h (MonoCompile): Remove unused reverse_inst_list and
8485         reverse_inst_list_len fields.
8486
8487         * mini.c: Refactor this file a bit by moving branch optimizations to 
8488         branch-opts.c.
8489
8490         * method-to-ir.c: Merge generic sharing changes missed earlier.
8491
8492         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST.
8493
8494         * aot-runtime.c (decode_patch_info): Refactor the code dealing with the
8495         shared patches. Process METHODCONST as a shared patch.
8496
8497         * liveness.c (mono_analyze_liveness): Disable the liveness2 code for now
8498         as it crashes on the 2.0 mscorlib.
8499
8500         * aot-compiler.c (is_shared_got_patch): Revert the last change as it seems
8501         to cause crashes.
8502         
8503         * aot-compiler.c: Use is_plt_patch () in a few additional places.
8504         (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST, which is generated
8505         by IMT.
8506
8507         * aot-compiler.c: Reorganize the got handling code to be a bit more
8508         understandable.
8509
8510 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
8511
8512         * aot-compiler.c: Make the patch_to_plt_offset hash table use 
8513         mono_patch_info_equals/hash, and use it to massively simplify
8514         get_plt_index ().
8515
8516         * mini.c (mono_patch_info_hash): Simplify this and add support for
8517         more patch types.
8518
8519         * patch-info.h: Rename RGCTX_LAZY_FETCH_TRAMPOLINE to just RGCTX_FETCH.
8520
8521         * mini.c aot-compiler.c aot-runtime.c: Revert the LAZY_FETCH_TRAMPOLINE
8522         handling code, since an offset is not enough to identify a trampoline.
8523
8524         * method-to-ir.c: Remove some g_assert (!cfg->compile_aot) lines.
8525
8526 2008-08-17  Mark Probst  <mark.probst@gmail.com>
8527
8528         * mini.c (mono_op_imm_to_op): Add case for OP_IMUL_IMM.
8529
8530         * method-to-ir.c (mono_method_to_ir2): Decompose OP_CKFINITE.
8531
8532         * mini-ops.h: Argument and result types for OVF_CARRY ops.
8533
8534         * decompose.c: PPC decompositions for various ops.
8535
8536         * cpu-ppc.md, inssel-ppc.brg, mini-ppc.c: PPC changes for Linear IL.
8537
8538 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
8539
8540         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Make this
8541         call the generic trampoline code using a call, instead of a jump, to
8542         remove some special casing from the generic trampoline code.
8543
8544         * mini.c (mono_resolve_patch_target): Handle LAZY_FETCH_TRAMPOLINE.
8545         (mono_codegen): Ditto.
8546
8547         * aot-compiler.c aot-runtime.c: Ditto.
8548
8549         * patch-info.h: Add MONO_PATCH_INFO_RGCTX_LAZY_FETCH_TRAMPOLINE.
8550
8551         * mini-trampolines.c (mono_find_rgctx_lazy_fetch_trampoline_by_addr): New
8552         helper function to find the offset corresponding to a lazy fetch trampoline.
8553
8554         * mini.h (MonoCompile): Add 'orig_method' field to hold the original method
8555         when doing generic sharing.
8556
8557         * aot-compiler.c: Use cfg->orig_method instead of cfg->method in a lot of
8558         places.
8559         
8560         * mini.c (mono_create_rgctx_lazy_fetch_trampoline): Move this to
8561         mini-trampolines.c to be with the other trampoline creation functions.
8562
8563         * method-to-ir.c (mono_emit_method_call): Remove the 'signature' argument
8564         as it is equal to method->signature in most cases, add a 
8565         mono_emit_method_call_full variant which takes a signature and an imt
8566         argument as well.
8567
8568 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
8569
8570         * jit-icalls.c (mono_helper_compile_generic_method): Don't pass the context
8571         to this function, since it could be computed easily from the method 
8572         argument.
8573         (mono_helper_compile_generic_method_wo_context): Removed, not needed any
8574         more.
8575
8576         * method-to-ir.c mini.c: Remove references to 
8577         compile_generic_method_wo_context.
8578
8579         * method-to-ir.c (mono_method_to_ir2): Enable AOT for virtual
8580         generic method calls.
8581         
8582         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_1 for 1
8583         dimensional non-szarrays.
8584
8585         * mini.c (mini_init): Register mono_array_new_1.
8586
8587         * jit-icalls.c (mono_array_new_1): New jit icall.
8588
8589         * mini-trampolines.c (mono_magic_trampoline): For jumps, patch the GOT entries
8590         pointing to the method.
8591
8592         * aot-runtime.c (mono_aot_get_method_from_token): Register GOT slots holding
8593         method addresses belonging to METHOD_JUMP patches in the 
8594         jump_target_got_slot_hash.
8595         (mono_aot_load_method): Ditto.
8596
8597         * aot-compiler.c (compile_method): Allow AOT compilation of methods with
8598         METHOD_JUMP patches.
8599
8600         * mini.c (mini_create_jit_domain_info): New helper function which 
8601         initializes/frees domain->runtime_info.
8602         (mini_free_jit_domain_info): Ditto.
8603         (mini_init): Install the domain hook functions with the runtime.
8604
8605         * mini.h (MonoJitDomainInfo): New structure which stores the domain specific
8606         information maintained by the JIT.
8607
8608         * mini.c (mono_resolve_patch_target): For PATCH_INFO_METHOD_JUMP, move the
8609         insertion into jump_table_hash into mono_codegen (), also implement proper
8610         locking.
8611
8612         * method-to-ir.c (mono_method_to_ir2): Don't disable AOT for CEE_JMP and
8613         tail calls, it is already done by the aot code.
8614         
8615         * method-to-ir.c (mono_method_to_ir2): Handle CEE_JMP using the tail call
8616         mechanism on amd64.
8617
8618         * iltests.il.in: Make the jmp test a bit more complex.
8619
8620         * aot-compiler.c (encode_method_ref): Handle references to normal methods of
8621         generic instances which doesn't have a token.
8622
8623         * aot-runtime.c (decode_method_ref): Ditto.
8624         
8625         * method-to-ir.c (handle_unbox_nullable): Don't disable AOT, the aot code
8626         can handle this case now.
8627         (handle_box): Ditto.
8628
8629 2008-08-15  Geoff Norton  <gnorton@novell.com>
8630
8631         * mini-x86.c: Fix alignment on Apple x86, and re-disable the alignment
8632         debugging check.
8633
8634 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
8635
8636         * method-to-ir.c (mono_method_to_ir2): Allow AOT compilation of methods
8637         calling generic methods.
8638
8639         * aot-compiler.c (encode_patch): Handle MONO_PATCH_INFO_METHOD_RGCTX.
8640
8641         * aot-runtime.c (decode_patch_info): Ditto.
8642
8643         * mini.c (mono_resolve_patch_target): Ditto.
8644         
8645         * patch-info.h: Add METHOD_RGCTX.
8646
8647         * mini-amd64.c (mono_arch_output_basic_block): Optimize LOCALLOC_IMM.
8648
8649 2008-08-14  Zoltan Varga  <vargaz@gmail.com>
8650
8651         * mini-amd64.c (mono_arch_emit_call): Nullify call->vret_var if returning
8652         arguments in registers.
8653
8654         * decompose.c (mono_decompose_vtype_opts): Create a var for the vreg in
8655         OP_VCALL too, don't depend on OP_OUTARG_VTRETADDR doing it.
8656
8657         * mini.c (mini_method_compile): Abort aot compilation for generic
8658         methods if generic sharing is disabled.
8659         
8660         * mini.c (mono_method_to_ir): Disable AOT for virtual calls requiring
8661         an mrgctx.
8662
8663         * method-to-ir.c (mono_method_to_ir2): Disable AOT for virtual calls 
8664         requiring an mrgctx.
8665
8666         * decompose.c (mono_decompose_vtype_opts): Emit the correct sized
8667         store instructions when converting a vcall to a normal call.
8668
8669         * mini.c (sigprof_signal_handler): Call mono_find_jit_info instead of
8670         mono_arch_find_jit_info.
8671
8672 2008-08-13  Zoltan Varga  <vargaz@gmail.com>
8673
8674         * method-to-ir.c (check_inline_called_method_name_limit): Optimize this to
8675         avoid calling mono_method_full_name () for every method even if the
8676         env var is not set.
8677         (check_inline_caller_method_name_limit): Ditto.
8678
8679 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
8680
8681         * driver.c (main_thread_handler): Allow AOT compilation of multiple 
8682         assemblies in one run.
8683
8684         * aot-compiler.c (mono_compile_assembly): Only print out a count of
8685         skipped methods if it is not 0.
8686
8687         * Makefile.am (aotcheck): AOT compile all test assemblies in one run.
8688
8689 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
8690
8691         * mini.c (mono_codegen):  Changing a preprocessor check from WIN64 to
8692           MONO_ARCH_HAVE_UNWIND_TABLE.
8693
8694         Contributed under MIT/X11 license.
8695
8696 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
8697
8698         * mini-amd64.c (mono_arch_cpu_optimizazions):  Remove peephole and branch
8699           from default optimizaton list on Winx64.
8700
8701         * mini-amd64.c (emit_tls_get):  Added Winx64 specific implementation for GetTLS.
8702
8703         * mini-amd64.c (mono_arch_emit_prolog):  Adding an offset on Winx64 to get
8704           the LMF from the MonoJitTlsData structure.
8705
8706         * mini-amd64.c (mono_arch_setup_jit_tls_data):  Added Winx64 implementation.
8707
8708         Contributed under MIT/X11 license.
8709
8710 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
8711
8712         * mini.c (sigsegv_signal_handler): Fix the build.
8713
8714         * mini-amd64.c (emit_call_body): Use image->aot_module instead of 
8715         assembly->aot_module.
8716
8717         * aot-runtime.c: Use image->aot_module instead of searching in the aot_modules
8718         hash table. This simplifies and speeds up a lot of code, and fixes support
8719         for .netmodules.
8720
8721         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes if the thread is not registered
8722         with the runtime.
8723
8724         * mini-exceptions.c: Ditto.
8725         
8726         * exceptions-*c.c (mono_arch_find_jit_info): Remove unused 'trace' and
8727         'native_offset' argument, since these are computed in the 
8728         mono_find_jit_info () function.
8729
8730         * mini-exceptions.c (mono_find_jit_info): Make this non-static, as it
8731         is used by exceptions-ppc.c.
8732
8733         * exceptions-ppc.c: Call mono_find_jit_info () instead of 
8734         mono_arch_find_jit_info ().
8735         
8736         * mini-ppc.h exceptions-ppc.c mini-mips.h mini-mips.c exceptions-mips.c
8737         mini-exceptions.c: Get rid of the CUSTOM_STACK_WALK stuff, use the
8738         generic code in mini-exceptions.c.
8739
8740 2008-08-11  Zoltan Varga  <vargaz@gmail.com>
8741
8742         * mini-ppc.c (mono_arch_flush_register_windows): Add this for ppc.
8743
8744         * aot-runtime.c (mono_aot_get_plt_info_offset): Fix a warning.
8745         
8746         * aot-runtime.c (mono_aot_get_method): Avoid doing all the loading inside
8747         the aot lock, to avoid deadlocks when mono_aot_get_class_from_name () is
8748         called while holding the loader lock. Fixes #415608.
8749         (mono_aot_get_method_from_token_inner): Ditto.
8750
8751 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
8752
8753         * exceptions-ppc.c (mono_jit_walk_stack): Use MONO_INIT_CONTEXT_FROM_CURRENT
8754         to reduce differences between this and the generic implementation in
8755         mini-exceptions.c.
8756         (ves_icall_get_frame_info): Ditto.
8757
8758         * mini-ppc.h (MONO_INIT_CONTEXT_FROM_CURRENT): Define this for ppc too.
8759
8760         * mini-exceptions.c (mono_exceptions_init): Remove an #ifdef which is no
8761         longer neccesarry.
8762
8763         * exceptions-ppc.c (arch_get_call_filter): Rename this to 
8764         mono_arch_get_call_filter () and make it non-static, for consistency with the
8765         other architectures.
8766
8767 2008-08-09  Rodrigo Kumpera  <rkumpera@novell.com>
8768
8769         * mini.c:
8770         * local-propagation.c:
8771         * mini-x86.c: Correct the name of arch defines.
8772
8773 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
8774
8775         * method-to-ir.c (mono_op_to_op_imm_noemul): Correct name of
8776         NO_EMULATE_LONG_SHIFT_OPS define.
8777
8778 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
8779
8780         * method-to-ir.c (mono_method_to_ir2): Remove some code from CEE_MONO_LDPTR
8781         now that aot-ed icall wrappers use CEE_MONO_ICALL_ADDR.
8782
8783         * aot-compiler.c aot-runtime.c: Add support for static aot compilation.
8784         MACH fixes. Merged from the 2.0 branch.
8785
8786         * method-to-ir.c (mono_method_to_ir2): Handle CEE_MONO_ICALL_ADDR.
8787
8788         * mini.c (mono_resolve_patch_target): Error out if an icall is not found.
8789         (mono_method_to_ir): Handle CEE_MONO_ICALL_ADDR.
8790
8791         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Add AOT support.
8792
8793         * method-to-ir.c mini.c driver.c aot-compiler.c: Update after
8794         mono_marshal_get_native_wrapper () signature changes.
8795
8796 2008-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
8797
8798         * jit-icalls.c (mono_fconv_ovf_u8): Work around soft-float double to long
8799         conversion bug under arm.
8800
8801 2008-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
8802
8803         * cpu-arm.md: Increase long_conv_to_ovf_i4_2 max length to 36.
8804
8805         * mini-arm.c (mono_arch_output_basic_block): Implement long to int conversion
8806         with overflow checking.
8807
8808 2008-08-05  Marek Habersack  <mhabersack@novell.com>
8809
8810         * Makefile.am (GENMDESC_PRG): when cross-compiling use full path
8811         to the genmdesc.pl file
8812
8813 2008-08-05  Zoltan Varga  <vargaz@gmail.com>
8814
8815         * ir-emit.h (EMIT_NEW_ARGSTORE): Fix the usage of param_types and
8816         arg_array in the soft-float versions of the LOAD/STORE macros.
8817
8818         * method-to-ir.c (mono_method_to_ir2): Fix a warning in the arm switch
8819         implementation.
8820
8821         * ir-emit.h (NEW_VARLOADA): Handle SOFT_FLOAT correctly.
8822
8823 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
8824
8825         * mini-ia64.c (add_valuetype): Only reserve half parameter slot for each member of
8826         a float HFA. Fixes #413621.
8827
8828 2008-08-02  Gert Driesen  <drieseng@users.sourceforge.net>
8829
8830         * mini-x86.c (mono_arg_get_argument_info): Rename last occurrence of
8831         frame_size to args_size. Fixes build.
8832
8833 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
8834
8835         * mini-x86.c (mono_arch_get_argument_info): Rename frame_size to args_size,
8836         and don't align it to MONO_ARCH_FRAME_ALIGNMENT.
8837
8838         * mini-x86.h: Change MONO_ARCH_FRAME_ALIGNMENT to 8 so doubles stored on
8839         the stack are not unaligned. Fixes #413247.
8840         
8841 Fri Aug 1 18:46:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
8842
8843         * mini.c: update jitted methods performance counters.
8844
8845 Fri Aug 1 16:30:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
8846
8847         * mini-exceptions.c: increase the exceptions thrown performance
8848         counter in mono_handle_exception ().
8849
8850 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
8851
8852         * aot-runtime.c: Use MonoImage's as keys in the aot_modules hash so the aot
8853         can work with netmodules.
8854
8855 2008-07-28  Geoff Norton  <gnorton@novell.com>
8856
8857         * mini-x86.h: Correct the frame alignment on OSX.  Fixes the jit 
8858         regression tests.
8859
8860 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
8861
8862         * mini-x86.c (mono_arch_emit_call): Emi the osx stack alignment at the
8863         correct place.
8864
8865 2008-07-28  Bill Holmes  <billholmes54@gmail.com>
8866
8867         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
8868           The float param registers and other param registers must be the 
8869           same index on Windows x64.
8870
8871         * mini-amd64.c (mono_arch_allocate_vars) : Implementing the 
8872           ArgValuetypeAddrInIReg argument case.  Setting the argument
8873           op to OP_VTARG_ADDR (OP_REGOFFSET)).
8874
8875         * mini-amd64.c (mono_arch_call_opcode) : Winx64 fix.  Use the size
8876           variable computed above as the copy length for arguments of storage
8877           type ArgValuetypeAddrInIReg.
8878
8879         * mini-amd64.c (mono_arch_emit_call) :  Implementing the 
8880           ArgValuetypeAddrInIReg argument case.  This case will rely on
8881           mono_arch_emit_outarg_vt to emit the correct code later in the process.
8882
8883         * mini-amd64.c (mono_arch_emit_call) :  On Winx64 there always needs to be
8884           a 32 byte stack allocation for all calls.  We will omit the adjustment for
8885           jump and tail call instructoins as they do not follow the typical call behavior.
8886
8887         * mini-amd64.c (mono_arch_emit_outarg_vt) :  Implementing the case for
8888           ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
8889           local variable and pass the local variable by reference to the called method.
8890
8891         * mini-amd64.c (mono_arch_emit_prolog, emit_load_volatile_arguments) :
8892           Implementing the ArgValuetypeAddrInIReg argument case.  When the address
8893           of a struct is passed in a register it must be saved with the other
8894           volatile argument on the stack.
8895
8896         * mini-amd64.c (mono_arch_emit_prolog) : Winx64 fix.  When omitting the
8897           frame pointer the stack adjustment value must be saved to the unwind 
8898           info structure.
8899
8900         Contributed under MIT/X11 license.
8901
8902 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
8903
8904         * inssel-x86.brg (stmt): Add missing OP_X86_OUTARG_ALIGN_STACK rule
8905         which got lost in the merge.
8906
8907 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
8908
8909         * method-to-ir.c: Make the helper_sig variables extern to fix the ppc
8910         build.
8911
8912         * mini-amd64.c (emit_call_body): Add a no_patch case missed earlier.
8913         
8914         * mini-amd64.c (emit_call_body): Avoid aligning the call instruction on
8915         icalls, since they won't be patched.
8916
8917         * exceptions-amd64.c (mono_arch_get_restore_context_full): Use a slightly
8918         different code sequence when running under valgrind to prevent some valgrind
8919         errors.
8920
8921         * iltests.il.in: Add new regression test.
8922
8923         * method-to-ir.c (mono_method_to_ir2): Fix handling of inlined methods which
8924         end with a throw.
8925
8926         * method-to-ir.c (mono_method_to_ir2): Use get_vreg_to_inst () instead of
8927         accessing cfg->vreg_to_inst directly to prevent a crash in LDFLD.
8928
8929         * iltests.il.in: Add new test.
8930
8931         * aot-compiler.c: Fix some warnings.
8932
8933         * decompose.c (mono_decompose_long_opts): Implement OP_ICONV_TO_OVF_I8_UN.
8934         Fixes #412494.
8935
8936 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
8937
8938         * driver.c (mono_main): Fix the --gc=none build. Fixes #412482.
8939         (mini_usage_jitdeveloper): Add a missing --wapi option.
8940
8941 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
8942
8943         * mini-codegen.c: Simplify the is_fp macros.
8944         (free_up_ireg): Remove, use free_up_reg instead.
8945         (free_up_reg): Fix the fp case.
8946
8947 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
8948
8949         * cpu-arm.md (loadr8_membase): Increase the length of this as this is not
8950         lowered earlier.
8951
8952         * exceptions-x86.c: Merge some changes which seemed to have got lost
8953         in the linear-ir merge.
8954
8955         * liveness.c: Disable the liveness2 pass on 32 bit platforms.
8956
8957         * method-to-ir.c (mono_handle_global_vregs): Make the component vregs of a
8958         long vreg volatile even if the variable was already created.
8959
8960         * liveness.c (update_liveness2): Avoid eliminating dead definitions of
8961         volatile variables.
8962
8963 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
8964
8965         * cpu-x86.md (fcall_membase): Increase the size of the fcall opcodes.
8966
8967         * mini.c (mono_jit_compile_method_inner): Add support for 
8968         MONO_EXCEPTION_BAD_IMAGE.
8969
8970         * method-to-ir.c (mono_method_to_ir2): Avoid a crash if 
8971         mini_method_get_context () returns NULL. Fixes #356531.
8972
8973         * mini.c (mono_method_to_ir): Ditto.
8974         
8975         * method-to-ir.c (mono_method_to_ir2): Create a variable if needed when
8976         accessing a field of a valuetype in LDFLD/STFLD. Fixes #412399.
8977
8978 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
8979
8980         * method-to-ir.c (mono_method_to_ir2): Initialize an uninitialized variable
8981         in the LDFTN implementation.
8982
8983 2008-07-25  Mark Probst  <mark.probst@gmail.com>
8984
8985         * mini-trampolines.c (mono_magic_trampoline): When sharing generic
8986         code, patch calls to icalls, too, even if they're not in the
8987         shared generic code hash.  Fixes #411962.
8988
8989 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
8990
8991         * cpu-x86.md: Increase the length of the fcall opcodes.
8992
8993         * mini-x86.c (emit_move_return_value): Avoid some precision issues for
8994         calls returning floats.
8995
8996         * method-to-ir.c (mono_method_to_ir2): Remove the generic sharing restrictions
8997         on NEWARR.
8998         
8999         * method-to-ir.c (mono_method_to_ir2): Merge some LDFTN gsharing changes
9000         missed earlier.
9001
9002         * method-to-ir.c (handle_delegate_ctor): Avoid putting dynamic methods
9003         into the domain->method_code_hash.
9004
9005         * aot-compiler.c: Fix win32 build.
9006
9007         * method-to-ir.c (EMIT_GET_RGCTX): Call EMIT_NEW_LDARG in emit_get_rgctx ().
9008         
9009         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_specific in the
9010         gshared NEWARR implementation.
9011
9012         * cpu-sparc.md: Remove duplicate localloc_imm opcode.
9013
9014         * ir-emit.h (NEW_ARGLOAD): Use cfg->args and cfg->arg_types so this macro
9015         can be used outside of method_to_ir.
9016
9017         * mini.h (MonoCompile): Add arg_types field.
9018
9019         * method-to-ir.c (inline_method): Save/Restore cfg->args and cfg->arg_types.
9020         
9021         * method-to-ir.c (mono_method_to_ir2): Set cfg->args and cfg->arg_types to
9022         the values of the local arg_array and param_types array.
9023
9024 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
9025
9026         * method-to-ir.c (mono_method_to_ir2): Allocate a GOT var for NEWOBJ, since
9027         got accesses might only get generated later when NEWOBJ is decomposed.
9028         
9029         * method-to-ir.c (handle_delegate_ctor): Add an optimization to avoid
9030         looking up the native code of the target method when a delegate is called
9031         for the first time.
9032
9033         * mini-trampolines.c (mono_delegate_trampoline): Add the other half of the
9034         optimization.
9035
9036         * debug-debugger.c (MONO_DEBUGGER__debugger_info): Fix a warning.
9037
9038         * aot-runtime.c aot-compiler.c: Add a new option 'no-dlsym' which makes
9039         AOT work on platforms without a working dlsym implementation.
9040
9041         * mini.h: Bump AOT image format version.
9042         
9043 2008-07-24  Mark Probst  <mark.probst@gmail.com>
9044
9045         * mini-exceptions.c: Free a MonoType with
9046         mono_metadata_free_type() instead of g_free().
9047
9048         * aot-runtime.c: Free a MonoType.
9049
9050 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
9051
9052         * method-to-ir.c (mono_method_to_ir2): Add a comment for the box+brtrue
9053         optimization.
9054
9055         * mini-codegen.c (mono_local_regalloc): Remove the remaining items from the
9056         fp stack on x86.
9057
9058 2008-07-23  Massimiliano Mantione  <massi@ximian.com>
9059         * mini.c (sigprof_signal_handler): call the new "runtime initialized"
9060         profiler hook.
9061
9062 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
9063
9064         * method-to-ir.c (mono_method_to_ir2): Set the stack type properly for
9065         NEWOBJ calls on valuetypes.
9066
9067         * iltests.il.in: Add new test.
9068
9069         * mini-x86.c (mono_arch_emit_call): Use mini_type_stack_size ().
9070
9071 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
9072
9073         * mini-exceptions.c: Fix some warnings. Remove one ia64 special case as it
9074         is no longer needed.
9075
9076         * mini-ia64.c (mono_arch_emit_prolog): In native-to-managed wrappers, widen
9077         non register sized integer arguments.
9078         (mono_arch_call_opcode): Add support for ArgInFloatRegR4.
9079         (mono_arch_emit_outarg_vt): Pass a more reasonable alignment to 
9080         emit_memcpy2 ().
9081
9082         * method-to-ir.c (mono_method_to_ir2): Handle the ret_var_is_local case in
9083         CEE_MONO_RETOBJ.
9084         
9085         * method-to-ir.c (ADD_WIDEN_OP): New macro to insert a widening op when
9086         two a binop with different sized arguments is emitted.
9087
9088         * mini.c (mono_bblock_insert_after_ins): Properly link up with the next
9089         instruction in the ins==NULL case.
9090
9091 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
9092
9093         * mini-ops.h: Add OP_X86_OUTARG_ALIGN_STACK.
9094
9095         * mini-x86.c: Fix osx build.
9096
9097         * mini-amd64.c (mono_arch_output_basic_block): Handle varargs in the CALL_REG
9098         opcodes as well.
9099
9100         * method-to-ir.c (mono_spill_global_vars): Avoid fusing a load+store into the
9101         instruction for non int sized variables.
9102
9103         * method-to-ir.c (mono_method_to_ir2): Fix an assert in the LDFLD
9104         implementation.
9105
9106 2008-07-23  Robert Jordan  <robertj@gmx.net>
9107
9108         * method-to-ir.c: Fix MSVC build.
9109
9110 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
9111
9112         * method-to-ir.c (mono_method_to_ir2): When calling native code which returns
9113         a non int sized type, widen it to an int since newer versions of gcc seem to
9114         generate code which needs this.
9115
9116         * ssa2.c abcremoval2.c: Fix warnings.
9117
9118         * *: Merge the Linear IR branch.
9119
9120         The original branch is at trunk/branches/vargaz/mini-linear-il, and
9121         the ChangeLog file there describes all the changes done over the years. 
9122         Further documentation can be found at www.mono-project.com/Linear_IL.
9123
9124 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
9125
9126         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
9127           The float param registers and other param registers must be the 
9128           same index on Windows x64.
9129
9130         Contributed under MIT/X11 license.
9131
9132 2008-07-21  Rodrigo Kumpera  <rkumpera@novell.com>
9133
9134         * mini.c: Make the previous fix GC safe.
9135
9136 2008-07-21  Raja R Harinath  <harinath@hurrynot.org>
9137
9138         * Makefile.am (version.h): Allow a trailing '/' in the repository URL.
9139
9140 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
9141
9142         * mini-amd64.c (get_call_info): Correcting the case for MONO_TYPE_TYPEDBYREF
9143           on Winx64.  This type will not be passed on the stack (ArgOnStack), but 
9144           ArgValuetypeAddrInIReg instead.
9145
9146         Contributed under MIT/X11 license.
9147
9148 2008-07-21  Zoltan Varga  <vargaz@gmail.com>
9149
9150         * mini-codegen.c (get_register_spilling): Fix a warning.
9151
9152 2008-07-17  Rodrigo Kumpera  <rkumpera@novell.com>
9153
9154         * mini.c: Use mono_runtime_class_init_full to avoid leaking memory
9155         for types which the initialization fails. Raises the provided exception
9156         at the right stop after cleanup.
9157
9158 2008-07-16  Zoltan Varga  <vargaz@gmail.com>
9159
9160         * aot-compiler.c: Free most of the memory allocated during compilation.
9161
9162         * mini.c (mini_parse_debug_options): Fix a leak.
9163         
9164         * mini.c (mini_method_compile): Don't add the method to the jit info tables
9165         during aot compilation.
9166
9167 2008-07-14  Zoltan Varga  <vargaz@gmail.com>
9168
9169         * mini.c (mono_method_to_ir): Disable aot for code using CCASTCLASS on x86 as 
9170         it has too much register pressure.
9171
9172 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
9173
9174         * inssel.brg (CEE_CASTCLASS): Remove some dead code.
9175
9176 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
9177
9178         * mini-x86.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
9179         on x86.
9180
9181         * mini-amd64.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
9182         on amd64 similar to the way it is done on arm.
9183
9184         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
9185
9186         * aot-runtime.c (load_aot_module): Rename 'info' to 'amodule' for 
9187         consistency, normalize error messages, avoid loading aot-only modules in
9188         normal mode.
9189
9190         * driver.c (mono_main): Rename --aot-only command line option to --full-aot
9191         for consistency.
9192
9193         * aot-compiler.c aot-runtime.c tramp-arm.c: Implement aot-only support.
9194
9195 2008-07-11  Martin Baulig  <martin@ximian.com>
9196
9197         * debug-debugger.h
9198         (MonoDebuggerInfo): Add `interruption_request'.
9199
9200 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
9201
9202         * aot-compiler.c (emit_plt): Remove some dead code.
9203
9204         * exceptions-arm.c (mono_arch_get_call_filter_full): Initialize ji.
9205
9206         * aot-runtime.c (mono_aot_get_plt_info_offset): New helper function to
9207         return the plt info offset belonging to a given plt entry.
9208
9209         * mini-trampolines.c (mono_aot_plt_trampoline): Use 
9210         mono_aot_get_plt_info_offset.
9211         
9212         * aot-runtime.c aot-compiler.c tramp-arm.c: Change the arm plt code to be
9213         similar to the amd64 code by makeing jumps through a separate jump table 
9214         instead of embedding the jump addresses into the code.
9215
9216 2008-07-11  Zoltan Varga  <vargaz@gmail.com>
9217
9218         * mini.c (mono_method_to_ir): Disable aot for calling ldtoken in a generic
9219         method.
9220
9221 2008-07-10  Martin Baulig  <martin@ximian.com>
9222
9223         * mini.c (mini_method_compile): Disable generics sharing when
9224         running in the debugger.
9225
9226 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
9227
9228         * mini.c (mono_method_to_ir): Create the got var in CEE_REFANYVAL.
9229
9230         * inssel.brg (CEE_CASTCLASS): Avoid reusing temporary registers to prevent
9231         the local register allocator from running out of registers on x86 when 
9232         using aot.
9233
9234 2008-07-10  Bill Holmes  <billholmes54@gmail.com>
9235
9236         * inssel-long.brg For OP_LCONV_TO_OVF_I4 an int cast is needed when 
9237         expressing IntMin for the VS Compiler.  See Compiler Warning (level 2) 
9238         C4146.
9239
9240         Contributed under MIT/X11 license.
9241
9242 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
9243
9244         * aot-compiler.c: Get rid of whitespace in the generated assembly file to
9245         speed up the assembler.
9246
9247 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
9248
9249         * mini-arm.h tramp-arm.c exceptions-arm.c aot-compiler.c: Beginnings of aot-only
9250         support.
9251
9252         * mini.c: Move the soft float handling macros a bit earlier, add 
9253         NEW_TEMPSTORE_SOFT_FLOAT macro, fix warnings, add soft-float support in one
9254         place.
9255
9256         * mini.h: Add prototype for mono_arch_fixup_jinfo.
9257
9258         * mini.c (mini_init): In aot-only mode, set the root domain code manager to
9259         read-only to help catch code allocation requests.
9260         
9261         * mini.c inssel.brg aot-compiler.c: Make the use of IMT runtime configurable,
9262         and turn it off when using --aot-only or when compiling with --aot=full.
9263
9264         * mini.c (mono_resolve_patch_target): In aot-only mode, allocate the
9265         jump table for switches from the normal domain mempool, not the code
9266         manager.
9267
9268         * mini-trampolines.c (get_unbox_trampoline): New function to return an
9269         unbox trampoline which handles aot-only mode too.
9270
9271         * aot-runtime.c (mono_aot_get_unbox_trampoline): New function to lookup
9272         an AOTed unbox trampoline.
9273
9274         * aot-compiler.c (emit_trampolines): Emit unbox trampolines.
9275
9276 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
9277
9278         * wapihandles.c: Fixing MSVC builds.  Include statement changed from <> to
9279         ""
9280
9281         Contributed under MIT/X11 license.
9282
9283 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
9284
9285         * mini.c (mono_codegen):  Allocate space at the end of the code block and store
9286           the unwind information for the method at the end of the allocated block.
9287           
9288         * mini-amd64.h: Added declarations for the unwind routines and adding field to 
9289           MonoCompileArch to hold the unwind info for SEH on Winx64
9290         
9291         * mini-amd64.c (mono_arch_emit_prolog): Calls to the unwind routines added to store
9292           frame pointer info for the method being compiled.
9293           
9294         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception): Added a stack adjustment before
9295           the call to mono_exception_from_token.
9296           
9297         * exceptions-amd64.c: Added mono_arch_unwindinfo* implementations.  This code is responsible
9298           storing the method prolog information in a format that the Winx64 SEH can understand.  This
9299           information is stored a the end of the method block because it is all 32-bit offset based.
9300
9301         Contributed under MIT/X11 license.
9302
9303 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
9304
9305         * mini.h: Remove duplicate definitions of the mini_wapi_ functions.
9306
9307         * wapihandles.c: Fix warnings.
9308
9309         * aot-runtime.c (load_aot_module): Add a missing error message in aot-only
9310         mode.
9311
9312         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Avoid calling 
9313         mono_jit_compile_method in aot-only mode since that calls the type 
9314         initializer.
9315         
9316         * mini-trampolines.c (mono_create_delegate_trampoline): Avoid calling
9317         get_delegate_invoke_impl in aot-only mode.
9318
9319         * mini.c (mono_global_codeman_reserve): Reenable the aot-only check.
9320
9321 2008-07-08  Zoltan Varga  <vargaz@gmail.com>
9322
9323         * trace.c (mono_trace_enter_method): Fix printing of Type instances.
9324
9325         * aot-compiler.c (compile_method): Disable the check for GSHARED since it
9326         is on by default.
9327
9328         * inssel-long.brg (reg): Add a rule for LCALL_REG (OP_I8CONST).
9329
9330         * tramp-amd64.c (mono_arch_nullify_plt_entry): Read the nullified class
9331         init trampoline from the AOT file as well.
9332
9333         * mini-amd64.c (mono_arch_register_lowlevel_calls): Register
9334         mono_amd64_throw_exception as a jit icall since it is needed by the aot-only
9335         code.
9336
9337         * mini.c (mini_init): Move the call to mono_exceptions_init () after 
9338         mono_init.
9339
9340         * exceptions-amd64.c: Add _full variants for the remaining exception code
9341         creation functions as well, allow emission of relocatable code, remove
9342         caching since that is now done by the caller.
9343
9344         * mini-exceptions.c: Add _full variants for the remaining exception code
9345         creation functions as well, add aot-only support.
9346
9347         * aot-compiler.c (compile_method): Allow calls to methods of constructed types
9348         if we can determine a proper token for them.
9349         (add_wrappers): Add a few more wrappers.
9350         (emit_method_code): Remove some dead code.
9351         (emit_trampolines): Emit exception code too.
9352
9353         * mini.c (mono_method_to_ir): Call mono_array_new_2 if possible.
9354
9355         * jit-icalls.c (mono_array_new_2): New jit icall, specialized version of
9356         mono_array_new_va which avoids varargs.
9357
9358         * mini-exceptions.c (mono_exceptions_init): Fix the ppc build.
9359
9360         * mini-trampolines.c: Call mono_create_specific_trampoline () instead of
9361         mono_arch_create_specific_trampoline () in all places.
9362
9363         * aot-compiler.c aot-runtime.c: Refactor the trampoline emitting/loading code
9364         a bit so it can be used for other things as well.
9365         
9366         * mini-exceptions.c (mono_exceptions_init): Initialize throw_exception_by_name
9367         on demand as well.
9368
9369         * exceptions-amd64.c: Rename the caching from the exception code creation
9370         functions, it is done by the caller instead.
9371         
9372         * exceptions-amd64.c: Change the signature of the exception code creation 
9373         functions to allow the creation of relocatable code later.
9374
9375         * mini-exceptions.c: Add a set of functions to query the various 
9376         runtime-generated exception functions.
9377
9378         * mini.c mini-exceptions.c: Use the newly added functions instead of the
9379         mono_arch_.. () functions.
9380         
9381 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
9382
9383         * mini-trampolines.c (mono_aot_get_trampoline_code): Removed, no longer used.
9384
9385         * aot-runtime.c aot-compiler.c: AOT the generic trampolines in aot-only mode.
9386
9387         * mini.c (mini_get_imt_trampoline): Call mono_create_specific_trampoline ().
9388         (mini_get_vtable_trampoline): Ditto.
9389
9390         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Create relocatable
9391         code in the AOT case by returning the code size and a list of relocations to
9392         the caller.
9393
9394         * mini-trampolines.c (mono_create_specific_trampoline): New helper function.
9395
9396 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
9397
9398         * mini-amd64.c:  On Winx64 the calling convention always requires the caller to 
9399           clean the stack.
9400
9401         Contributed under MIT/X11 license.
9402
9403 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
9404
9405         * aot-compiler.c (emit_exception_debug_info): Serialize the debug info first
9406         so the buffer size can be computed correctly. Fixes #404735.
9407
9408         * debug-mini.c (mono_debug_serialize_debug_info): Lookup the debug info
9409         normally as cfg->debug_info is already freed.
9410
9411 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
9412
9413         * mini-amd64.c: For calls returning vtypes in registers, don't store
9414         the return address on the stack, instead allocate a separate local for
9415         it. Fixes #404729.
9416
9417 2008-07-05  Mark Probst  <mark.probst@gmail.com>
9418
9419         * mini-trampolines.c, mini.h: Add an argument to
9420         mono_create_jit_trampoline_in_domain() for turning off the adding
9421         of the sync wrapper.
9422
9423         * mini.c: Use the JIT trampoline without sync instead of
9424         ldftn_nosync in static RGCTX invoke wrappers so that the call can
9425         be patched.
9426
9427 2008-07-04  Mark Probst  <mark.probst@gmail.com>
9428
9429         * driver.c: Turn on GSHARED optimization by default.
9430
9431 2008-07-04  Zoltan Varga  <vargaz@gmail.com>
9432
9433         * mini-trampolines.c mini.c mini.h tramp-<ARCH>.c: Rename MONO_TRAMPOLINE_GENERIC
9434         to MONO_TRAMPOLINE_JIT since it better reflects what it does.
9435
9436         * mini-trampolines.c (mono_get_aot_trampoline_code): New internal function to
9437         create a variant of the generic trampoline code callable from AOTed trampolines.
9438
9439         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add support for generic
9440         trampoline code callable from AOTed trampolines.
9441
9442         * aot-compiler.c aot-runtime.c: Add support for AOTing trampolines.
9443
9444 2008-07-04  Mark Probst  <mark.probst@gmail.com>
9445
9446         * inssel.brg, mini-ops.h: New opcode for doing CHECK_THIS in a
9447         pass-through manner.
9448
9449         * mini.c: Generic method sharing.  Pass MRGCTX to generic methods
9450         and don't fail sharing for them anymore.
9451
9452         * mini-exceptions.c: Handle exceptions in shared generic methods.
9453
9454         * generic-sharing.c: When checking the context of a generic
9455         method, also check its class's context.  Don't treat wrappers as
9456         sharable.
9457
9458         * mini-trampolines.c: Some code factored out to
9459         metadata/generic-sharing.c.  Handle the MRGCTX case.
9460
9461         * jit-icalls.c, jit-icalls.h: ldvirtfn icall for generic sharing -
9462         we must deal with the method being of another instantiation of the
9463         class.  Add static rgctx invoke wrappers to generic methods.
9464
9465 2008-07-04  Mark Probst  <mark.probst@gmail.com>
9466
9467         * mini.c: Provide all jit infos of generic shared methods with a
9468         generic jit info.
9469
9470         * mini-exceptions.c: Handle the new situation that a generic info
9471         might be available, but not info about the this/vtable/mrgctx
9472         variable.
9473
9474 2008-07-03  Mark Probst  <mark.probst@gmail.com>
9475
9476         * mini.c: Don't accept ldftn and ldvirtftn with uninstantiated
9477         generic methods.
9478
9479 2008-07-03  Zoltan Varga  <vargaz@gmail.com>
9480
9481         * dominators.c (check_dominance_frontier): Fix a warning.
9482
9483         * mini.h: Add some missing prototypes.
9484
9485         * ssa.c local-propagation.c debug-debuger.c: Fix warnings.
9486
9487         * driver.c (mono_jit_init_version): Correct the comments since the first
9488         argument should be the name of the root domain, not a filename.
9489
9490         * aot-runtime.c (make_writable): Error out if this is called while running
9491         with --aot-only.
9492         (load_aot_module): Ditto.
9493
9494         * aot-compiler.c: Really fix the computation of method indexes.
9495
9496         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Remove the previous 
9497         optimizations as this is no longer called frequently.
9498
9499         * mini-trampolines.c (mono_create_delegate_trampoline): Precompute the invoke
9500         method and the invoke impl code and pass it to the delegate trampoline instead of
9501         just the delegate class.
9502
9503 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
9504
9505         * aot-compiler.c: Fixup the computation of method indexes.
9506         (add_wrappers): Create the base methods of the runtime invoke wrappers using
9507         the method builder infrastructure.
9508
9509         * aot-runtime.c (decode_exception_debug_info): Don't crash if the method
9510         has no header.
9511
9512         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): In aot-only
9513         mode, load the method right away instead of creating a trampoline.
9514
9515         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Eliminate locking.
9516
9517         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Eliminate locking, speed up
9518         some checks a bit.
9519
9520 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
9521
9522         * aot-runtime.c (decode_patch_info): Don't create trampolines in aot_only mode.
9523         (mono_aot_load_method): Use method_index instead of method->token.
9524
9525         * mini.c (mono_jit_compile_method_inner): Move the aot_only check down, so it
9526         can handle icalls etc. properly.
9527
9528         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
9529
9530         * aot-compiler.c aot-runtime.c: Allow AOTing many wrapper types.
9531
9532         * mini.c (mono_resolve_patch_target): Handle JIT_ICALL_ADDR.
9533         (mono_codegen): Convert calls made by JIT icall wrappers to the icalls into
9534         JIT_ICALL_ADDR patch type.
9535
9536         * patch-info.h: Add JIT_ICALL_ADDR patch type.
9537
9538         * mini.c (mono_method_to_ir): Allow AOTing methods which access the interruption
9539         request flag.
9540         (mono_resolve_patch_target): Handle INTERRUPTION_REQUEST_FLAG.
9541
9542         * patch-info.h: Add INTERRUPTION_REQUEST_FLAG.
9543
9544 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
9545
9546         * mini.c: Use domain->jit_code_hash_lock for controlling access to
9547         domain->jit_code_hash.
9548
9549 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
9550
9551         * mini.c (mini_parse_debug_options): Add 'dont-free-domains' option.
9552
9553 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
9554
9555         * mini-trampolines.c (mono_delegate_trampoline): Don't pass a gsctx to
9556         get_this_arg_from_call, let it compute it when needed.
9557
9558         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'code' argument, compute
9559         gsctx from code only when needed.
9560
9561         * mini-trampolines.c (get_generic_context): Rename this to 
9562         mono_get_generic_context_from_code (), and move it to generic-sharing.c, where
9563         it can be called by the arch backends.
9564
9565         * mini-exceptions.c (mono_print_thread_dump): Allow the argument to be NULL.
9566
9567 2008-06-26  Zoltan Varga  <vargaz@gmail.com>
9568
9569         * driver.c (mono_main): Add experimental --aot-only command line option.
9570
9571         * mini.c: Error out when creating trampolines or JIT compiling if --aot-only is
9572         set.
9573
9574 2008-06-26  Kornel Pal  <kornelpal@gmail.com>
9575
9576         * driver.c (DllMain): Remove mono_module_handle.
9577
9578         Contributed under MIT/X11 license.
9579
9580 2008-06-25  Zoltan Varga  <vargaz@gmail.com>
9581
9582         * aot-compiler.c: Add not-yet-usable 'full' option. Add some infrastructure code
9583         for emitting methods which are not in the source assembly. Detect and report
9584         failure of assembling+linking.
9585         
9586         * aot-compiler.c (emit_klass_info): Call mono_class_setup_vtable ().
9587
9588         * aot-compiler.c: Move the contents of the has_glot_slots array to MonoCompile.
9589
9590 2008-06-24  Rodrigo Kumpera  <rkumpera@novell.com>
9591
9592         * mini.c: Check if stats is enabled so we don't allocate memory when not needed.
9593
9594 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
9595
9596         * mini.h: Remove some obsolete prototypes.
9597
9598         * mini.c: Avoid storing MonoMethod pointers in the JIT stats, store their string format instead.
9599
9600 2008-06-24  Mark Probst  <mark.probst@gmail.com>
9601
9602         * mini.c (get_object_generic_inst): Variable-sized arrays are not
9603         supported by Visual Studio, so use alloca().
9604
9605 2008-06-23  Zoltan Varga  <vargaz@gmail.com>
9606
9607         * mini-ia64.c (add_valuetype): Increase *gr too when passing a HFA to be in sync with the ABi.
9608         Fixes #402585.
9609
9610 2008-06-23  Mark Probst  <mark.probst@gmail.com>
9611
9612         * mini.c: Fail sharing of a generic method if it contains an open
9613         catch clause (because we don't pass MRGCTXs yet).
9614
9615 2008-06-23  Mark Probst  <mark.probst@gmail.com>
9616
9617         * mini.c: When compiling a method with generic sharing, insert the
9618         method instantiated with an all-Object generic context into the
9619         jit info table, instead of the context of the first instantiation
9620         of the method we happen to compile.
9621
9622 2008-06-18  Martin Baulig  <martin@ximian.com>
9623
9624         * debug-debugger.h (MonoDebuggerInfo): Replaced `version' with
9625         `major_version' and `minor_version'.
9626
9627 2008-06-17  Mark Probst  <mark.probst@gmail.com>
9628
9629         * generic-sharing.c, mini.c, mini.h, aot-runtime.c:
9630         mono_method_is_generic_sharable_impl() takes an additional
9631         argument specifying whether to treat type variables as reference
9632         types.
9633
9634 2008-06-17  Mark Probst  <mark.probst@gmail.com>
9635
9636         * mini.h: Removed obsolete prototypes.
9637
9638 2008-06-17  Mark Probst  <mark.probst@gmail.com>
9639
9640         * mini.c: Don't fail generic sharing for initobj and sizeof - we
9641         already handle them.
9642
9643 2008-06-17  Mark Probst  <mark.probst@gmail.com>
9644
9645         * mini.h, mini-trampolines.c, tramp-alpha.c, tramp-amd64.c,
9646         tramp-arm.c, tramp-hppa.c, tramp-ia64.c, tramp-mips.c,
9647         tramp-ppc.c, tramp-s390.c, tramp-s390x.c, tramp-sparc.c,
9648         tramp-x86.c: Added a MonoGenericContext* argument to
9649         mono_arch_get_unbox_trampoline() so that it can call other
9650         functions which require it.
9651
9652 2008-06-17  Mark Probst  <mark.probst@gmail.com>
9653
9654         * mini.h, mini-trampolines.c, mini-amd64.c, mini-x86.c,
9655         mini-alpha.c, mini-arm.c, mini-ia64.c, mini-ppc.c:
9656         mono_arch_get_this_arg_from_call() takes a
9657         MonoGenericSharingContext* as well.
9658
9659 2008-06-17  Mark Probst  <mark.probst@gmail.com>
9660
9661         * mini.c: Factor out code for emitting unbox into emit_unbox() and
9662         implement generic sharing of unbox.
9663
9664 2008-06-17  Mark Probst  <mark.probst@gmail.com>
9665
9666         * mini.c: Don't compute the vtable to determine whether a field is
9667         special static, because it might not work for open types.
9668
9669 2008-06-17  Mark Probst  <mark.probst@gmail.com>
9670
9671         * mini.c: Removed the unused token_type and token_source arguments
9672         from get_runtime_generic_context_ptr().
9673
9674 2008-06-17  Marek Habersack  <mhabersack@novell.com>
9675
9676         * mini.c (ADD_BINOP): fix the build
9677
9678 2008-06-16  Zoltan Varga  <vargaz@gmail.com>
9679
9680         * mini.c (ADD_BINOP): When operating on a native int and an int32, insert
9681         a widening op.
9682
9683 2008-06-16  Mark Probst  <mark.probst@gmail.com>
9684
9685         * mini.h: Removed class relations enum that's not used anymore.
9686
9687 2008-06-16  Mark Probst  <mark.probst@gmail.com>
9688
9689         * tramp-x86.c, tramp-amd64.c: Slot access code for MRGCTXs.
9690
9691         * mini-trampolines.c: Distinguish between RGCTXs and MRGCTXs in
9692         the lazy fetch trampoline access code.
9693
9694 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
9695
9696         * mini-codegen.c (mono_local_regalloc): Add some micro optimizations.
9697
9698 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
9699
9700         * mini.c: Fix some soft-float bugs. Fixes #378735 and #398348.
9701
9702         * mini.h (MONO_INST_LIST_ENTRY): Fix warnings on arm.
9703
9704         * mini.c (mono_method_to_ir): Check call signature for NEWOBJ as well.
9705
9706 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
9707
9708         * mini-x86.c inssel-x86.brg cpu-x86.md: Implement unsigned min/max
9709         intrinsics.
9710
9711         * mini-ops.h: Add MIN/MAX_UN opcodes.
9712
9713         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Implement unsigned min/max
9714         intrinsics.
9715
9716         * basic-math.cs: Add more min/max tests.
9717
9718         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
9719
9720 2008-06-13  Mark Probst  <mark.probst@gmail.com>
9721
9722         * mini.c: Small fix in the prologue of emit_castclass.
9723
9724 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
9725
9726         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
9727
9728         * mini.c (mini_get_inst_for_method): Remove the Min/Max intrinsics, they
9729         do not work even for unsigned types. Fixes #400014.
9730
9731         * basic-math.cs: Add regression tests for unsigned Min/Max.
9732
9733 2008-06-13  Mark Probst  <mark.probst@gmail.com>
9734
9735         * mini.c: Added additional context_used argument to several
9736         functions, which will be needed for sharing generic methods.  Use
9737         GET_RGCTX macro wherever appropriate.  Declare only one
9738         context_used in mono_method_to_ir().
9739
9740 2008-06-13  Mark Probst  <mark.probst@gmail.com>
9741
9742         * mini.c, generic-sharing.c: Removed generic class relations.
9743
9744         * mini.c, tramp-amd64.c, tramp-x86.c: Additional arguments to
9745         functions due to MRGCTX changes.
9746
9747 2008-06-13  Mark Probst  <mark.probst@gmail.com>
9748
9749         * inssel.brg, inssel-long.brg, inssel-long32.brg, mini-ops.h,
9750         graph.c, local-propagation.c, aliasing.c: New opcodes for calls
9751         with calculated IMT.
9752
9753         * mini.c: Generic sharing of calls via generic interfaces.
9754
9755         * jit-icalls.c, jit-icalls.h: Helper function for compiling a
9756         generic method with non-constant MonoGenericContext*.  Instead,
9757         the context is taken out of the method itself.
9758
9759 2008-06-13  Mark Probst  <mark.probst@gmail.com>
9760
9761         * mini.c: Generic sharing of ldvirtftn.
9762
9763 2008-06-13  Mark Probst  <mark.probst@gmail.com>
9764
9765         * mini.c: Generic sharing of ldftn.
9766
9767 2008-06-13  Mark Probst  <mark.probst@gmail.com>
9768
9769         * mini.c: Do pass VTable/RGCTX argument to static generic methods.
9770
9771 2008-06-13  Mark Probst  <mark.probst@gmail.com>
9772
9773         * mini.c: Generic sharing of the special case of ldtoken followed
9774         by a call to GetTypeFromHandle.
9775
9776 2008-06-13  Mark Probst  <mark.probst@gmail.com>
9777
9778         * mini.c: Generic sharing of box for nullable types.
9779
9780 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
9781
9782         * mini-s390x.c (add_stackParm): Fix computation of offsets when arguments
9783         are passed on the stack. Fixes #324807.
9784
9785 2008-06-12  Bill Holmes  <billholmes54@gmail.com>
9786
9787         * mini-amd64.c:add_valuetype: Adding Winx64 code to fill the ArgInfo
9788         for the ArgValuetypeAddrInIReg case.
9789
9790         * mini-amd64.c:mono_arch_allocate_vars:  Adding a case for 
9791         ArgValuetypeAddrInIReg to avoid asserts.  Code needs to be added here.
9792
9793         * mini-amd64.c: mono_arch_call_opcode:  Adding Winx64 code for an ArgInfo of 
9794         type ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
9795         local variable and pass the local variable by reference to the called method.
9796           
9797         * mini-amd64.c: mono_arch_emit_prolog:  Adjust the stack for calls to
9798         mono_jit_thread_attach and mono_get_lmf_addr for Winx64.
9799
9800         Contributed under MIT/X11 license.
9801
9802 2008-06-10  Rodrigo Kumpera  <rkumpera@novell.com>
9803
9804         * debug-mini.c (mono_debug_free_method_jit_info): Moved to metadata/mono-debug.c.
9805
9806         * debug-mini.c (mono_debug_print_vars): Release memory after printing
9807         everything.
9808
9809 2008-06-10  Martin Baulig  <martin@ximian.com>
9810
9811         * debug-mini.c
9812         (mono_debug_close_method): Check whether `cfg->epilogue_begin != NULL'.
9813
9814 2008-06-09  Kornel Pal  <kornelpal@gmail.com>
9815
9816         * main.c: Add and set argv [argc] to NULL to match C specification that fixes
9817         possible error when no arguments are passed.
9818
9819         Contributed under MIT/X11 license.
9820
9821 2008-06-09  Rodrigo Kumpera  <rkumpera@novell.com>
9822
9823         * mini-exceptions.c (ves_icall_get_trace): Skip source locations
9824         where the file name is NULL.
9825
9826 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
9827
9828         * mini.c: Fix s390 build.
9829
9830 2008-06-08  Zoltan Varga  <vargaz@gmail.com>
9831
9832         * trace.c (mono_trace_parse_options): Fix warnings.
9833
9834         * mini-amd64.c: Revert most of the last patch for now as it breaks the build.
9835
9836 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
9837
9838         * mini.c (remove_block_if_useless): Avoid printing the method name.
9839         
9840         * mini.c: Remove needless setting of ins->cil_code which is now done by 
9841         MONO_INST_NEW.
9842
9843         * mini-amd64.c: Add some code to avoid saving callee saved registers in the
9844         LMF. Not yet used.
9845
9846         * tramp-amd64.c (mono_arch_patch_callsite): Tell valgrind to discard the
9847         translated code after it has been patched.
9848
9849 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
9850
9851         * mini-amd64.c (emit_call_body): Align the call displacement to 4 bytes to
9852         avoid problems during code patching on SMP systems.
9853         (emit_call): Avoid adding a patch info which is already added by 
9854         emit_call_body.
9855         (mono_arch_emit_exceptions): Ditto.
9856
9857 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
9858
9859         * tramp-*.c (mono_arch_get_unbox_trampoline): No need to check for ret->byref,
9860         MONO_TYPE_ISSTRUCT already checks for it.
9861
9862 2008-06-05  Bill Holmes  <billholmes54@gmail.com>
9863
9864         * mini-amd64.c:merge_argument_class_from_type: When marshaling 
9865           structs with floats on Winx64 the float registers are not used.  
9866           The integer registers are always used..
9867         * mini-amd64.c:add_valuetype:  When marshaling structs on Winx64 
9868           only one register will be used and only if the size of the struct 
9869           is 1,2,4, or 8 bytes.
9870
9871         * tramp-amd64.c :  Adjusting size used for mono_global_codeman_reserve
9872           to work for Winx64.
9873
9874         Contributed under MIT/X11 license.
9875
9876 2008-06-05  Martin Baulig  <martin@ximian.com>
9877
9878         * debug-debugger.c (debugger_lookup_class): Also call
9879         mono_class_setup_methods() here; we're only called from RTI.
9880
9881 2008-06-05  Andreas Farber  <andreas.faerber@web.de>
9882
9883         * mini.c (mini_init): Add DTrace probes ves-init-{begin,end}.
9884         (mini_method_compile) Add DTrace probes method-compile-{begin,end}.
9885         * Makefile.am (libmono_la_LIBADD,libmono_static_la_LIBADD,mono_LDADD):
9886         Post-process object files and add dtrace-generated object, if necessary.
9887
9888         Contributed under MIT/X11 license.
9889
9890 2008-06-04  Mark Probst  <mark.probst@gmail.com>
9891
9892         * inssel.brg, mini-ops.h: Added opcode for unboxcast with computed
9893         element class.
9894
9895         * mini.c: Generic sharing for unbox.any and castclass.
9896
9897 2008-06-04  Mark Probst  <mark.probst@gmail.com>
9898
9899         * mini.c: Ignore tailcall prefix in shared generic code and when
9900         doing calls which require a vtable/rgctx argument.
9901
9902 2008-06-04  Mark Probst  <mark.probst@gmail.com>
9903
9904         * mini.c: Don't free the JIT info.
9905
9906         * driver.c: Changes in the JIT info table testing code.
9907
9908 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
9909
9910         * tramp-arm.c (mono_arch_create_trampoline_code): Check for thread 
9911         interruption. Fix some warnings.
9912
9913         * tramp-*.c (mono_arch_create_trampoline_code): Call the _force_ variant of
9914         interruption_checkpoint.
9915
9916 Tue Jun 3 13:07:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
9917
9918         * jit.h, mini.h, trace.c, driver.c: introduce an API to enable tracing
9919         from embedding applications.
9920
9921 2008-06-02  William Holmes  <billholmes54@gmail.com>
9922
9923         * mini-amd64.c :  Correcting some of the issues for Winx64 dealing with
9924           reserving 32 bytes on the stack when making calls. 
9925
9926         Contributed under MIT/X11 license.
9927
9928 2008-06-01  Zoltan Varga  <vargaz@gmail.com>
9929
9930         * mini-arm.c (mono_arch_output_basic_block): Merge some small fixes from
9931         the linear IL branch.
9932
9933         * driver.c: Print out more information for --version on arm.
9934
9935 2008-05-30  Zoltan Varga  <vargaz@gmail.com>
9936
9937         * mini-amd64.c (mono_arch_emit_prolog): Increase max_offset when processing
9938         bb_exit instead, since out of line bblocks might not actually be emitted
9939         out-of-line.
9940         
9941         * mini-amd64.c (mono_arch_emit_prolog): Increase bb->max_offset by the
9942         maximum epilog size for out of line bblocks if tracing is enabled.
9943
9944         * iltests.il.in: Merge tests/long-shift.regalloc.il into this file.
9945
9946 2008-05-28  Rodrigo Kumpera  <rkumpera@novell.com>
9947
9948         * arrays.cs: Regression tests for allocating arrays with negative sizes.
9949
9950 2008-05-28  Zoltan Varga  <vargaz@gmail.com>
9951
9952         * mini-x86.h mini-x86.c inssel-x86.brg cpu-x86.md: Add support for
9953         CAS instrinsics. Optimize the implementation of the ATOMIC_EXCHANGE 
9954         opcodes.
9955
9956 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
9957
9958         * mini.c (mini_get_inst_for_method): Add support for CAS instrinsics when
9959         the 'value' to store is a constant.
9960
9961         * mini-ops.h: Add OP_ATOMIC_CAS_IMM opcodes.
9962
9963         * mini-amd64.c (mono_arch_output_basic_block): Optimize the the implementation
9964         of ATOMIC_EXCHANGE opcodes, add support for the CAS opcodes.
9965
9966 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
9967
9968         * mini.c generic-sharing.c jit-icalls.c aot-compiler.c: Use accessor functions
9969         for accessing method->generic_container.
9970
9971 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
9972
9973         * mini.c (mono_method_check_inlining): Avoid creating vtables if possible.
9974         
9975         * mini.c (SIG_HANDLER_SIGNATURE): Fix sparc build too.
9976
9977         * mini.c (SIG_HANDLER_SIGNATURE): Fix IA64 build.
9978
9979         * mini.c (mono_jit_compile_method_inner): Avoid a crash if mono_class_vtable ()
9980         fails.
9981
9982 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
9983
9984         * driver.c (mono_main): Set mono_setup_vtable_in_class_init to FALSE.
9985
9986         * mini.c: Handle the case when mono_class_vtable () fails.
9987
9988 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
9989         * mini.c (sigprof_signal_handler): Support call chains (backtrace) in
9990         the stat profiler.
9991
9992 2008-05-22  Mark Probst  <mark.probst@gmail.com>
9993
9994         * mini.c, jit-icalls.c, jit-icalls.h: Make generic sharing work
9995         together with domain sharing.
9996
9997 2008-05-22  Mark Probst  <mark.probst@gmail.com>
9998
9999         * mini.c: Treat callvirts to final methods like non-virtual calls
10000         when doing generic sharing, i.e. look them up in the runtime
10001         generic context.
10002
10003 2008-05-22  Mark Probst  <mark.probst@gmail.com>
10004
10005         * inssel.brg, mini-ops.h: Added opcodes for mkrefany and refanyval
10006         with computed types (for generic sharing).
10007
10008         * mini.c: Generic sharing for mkrefany and refanyval.
10009
10010 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
10011
10012         * inssel.brg (mini_emit_virtual_call): Avoid constructing a generic vtable if
10013         possible.
10014
10015         * mini-trampolines.c (mono_magic_trampoline): Avoid calling setup_methods () in
10016         the generic sharing code.
10017         
10018         * mini-trampolines.c (mono_magic_trampoline): Call mono_class_setup_methods ()
10019         when needed.
10020
10021 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
10022
10023         * mini.h: Remove the declaration of mono_aot_init_vtable ().
10024
10025 2008-05-21  C.J. Adams-collier <cjac@colliertech.org>
10026
10027         * driver.c: updated copyright date
10028
10029 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
10030
10031         * aot-runtime.c mini.c: Remove the AOT init_vtable stuff as it is no longer
10032         needed.
10033
10034 2008-05-19  Martin Baulig  <martin@ximian.com>
10035
10036         * debug-debugger.h (MonoDebuggerInfo): Add `using_mono_debugger'
10037         pointing to the new `_mono_debug_using_mono_debugger' variable.
10038
10039         * driver.c
10040         (mono_main): Check mono_debug_using_mono_debugger() rather than
10041         the `MONO_INSIDE_MDB' environment variable to check whether we're
10042         inside the debugger.
10043
10044 2008-05-19  Zoltan Varga  <vargaz@gmail.com>
10045
10046         * mini.c (mini_method_compile): Use cfg->args [0] for accessing the this
10047         argument.
10048
10049 2008-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
10050
10051         * declsec.h: Move MONO_SECMAN_FLAG to metadata/metadata-internals.h.
10052
10053         * mini.c: Added mini_assembly_can_skip_verification. This
10054         function checks if the assembly requested to skip verification. 
10055         Fixes part of #387274.
10056
10057 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
10058
10059         * mini.c (mini_get_method): Disable the check for open generic classes when
10060         using generic sharing.
10061
10062         * generics.cs: Add a test for #387034.
10063
10064         * mini.c (mini_get_method): Check whenever the method class is an open generic
10065         type, and return NULL in that case, causing a verification error. Fixes
10066         #384123.
10067
10068 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
10069
10070         * driver.c (mono_main): Revert r102623. The right
10071         thing to do is to enable the verifier under verifiable
10072         unless a --security flag was passed.
10073
10074         We need this non-trivial behavior for --verify-all otherwise
10075         mcs-compileall won't be able to use it. As it needs everything to
10076         be verified under validil.
10077
10078 2008-05-06  Martin Baulig  <martin@ximian.com>
10079
10080         Fix #383749.
10081
10082         * debug-mini.c (mono_debugger_thread_created): Add proper locking.
10083         (mono_debugger_thread_cleanup): Likewise.
10084         (mono_debugger_extended_notification): Likewise.
10085
10086 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
10087
10088         * mini.c (mono_method_to_ir): Verify visibility of call related opcodes
10089         against both inflated and non-inflated methods. We need to check against the
10090         generic definition for cases where the instantiated method is not visible.
10091         We need to check against the inflated types for cases where the instantiation
10092         changes any super type. This fixes #382986.
10093
10094         Note that this doesn't need to be applied to other parts of mono_method_to_ir
10095         that check for visibiliy as generic params only appears as the type subject
10096         of tokens on call opcodes. Field manipulation and ldftn must always
10097         target an exact type.
10098
10099 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
10100
10101         * driver.c (mono_main): Using --verify-all enables the verifier under validil mode
10102         if no related --security flag is passed.
10103
10104 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
10105
10106         * mini-arch.h: Prepare support for ppc64.
10107
10108         Contributed under MIT/X11 license.
10109
10110 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
10111
10112         * aot-runtime.c: Prepare support for ppc64.
10113
10114         Contributed under MIT/X11 license.
10115
10116 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
10117
10118         * mini-ops.h: Prepare support for ppc64.
10119
10120         Contributed under MIT/X11 license.
10121
10122 2008-05-04  Andreas Farber  <andreas.faerber@web.de>
10123
10124         * helpers.c: Add support for OSX/ppc64 and Linux/ppc64 (dis)assemblers.
10125
10126         Contributed under MIT/X11 license.
10127
10128 2008-05-03  Zoltan Varga  <vargaz@gmail.com>
10129
10130         * aot-runtime.c (load_aot_module): Avoid trying to load aot code for dynamic
10131         assemblies, since aot_name is not a full path, causing us to load MS.NET 
10132         assemblies on windows.
10133
10134 ?2008-04-28  Kornel Pal  <kornelpal@gmail.com>
10135
10136         * mini.c (mono_jit_compile_method_inner): Use g_warning instead of g_error
10137         for unsupported METHOD_IMPL_ATTRIBUTE_NATIVE.
10138         * main.c: Use UTF-8 encoded command line instead of Windows default code
10139         page on Windows to support Unicode.
10140         * driver.c (DllMain): New function for mixed-mode assembly support.
10141         * Makefile.am: Add -Wl,--kill-at to libmono_la_LDFLAGS on Windows to
10142         export __stdcall functions without decoration.
10143
10144         Contributed under MIT/X11 license.
10145
10146 2008-04-28  Mark Probst  <mark.probst@gmail.com>
10147
10148         * tramp-amd64.c, mini-amd64.c: Preserve R11 in the trampoline by
10149         saving it very early.
10150
10151 2008-04-28  Mark Probst  <mark.probst@gmail.com>
10152
10153         * mini.h, mini.c: Lots of code for accessing the old RGCTX
10154         deleted.  The only way to access the new RGCTX is via the
10155         trampline.
10156
10157         * mini.c, mini-amd64, mini-x86.c, mini-exceptions.c: Pass the
10158         vtable instead of the RGCTX to static methods.
10159
10160         * mini-tramplines.c, tramp-amd64.c, tramp-x86.c: Trampoline for
10161         accessing the new RGCTX.
10162
10163         * generic-sharing.c: There is no separation between self, type
10164         arguments and other types in the RGCTX anymore.
10165
10166 2008-04-25  Jonathan Chambers <joncham@gmail.com>
10167
10168         * mini-amd64.c (add_general): Remove previous stack adjustment.
10169         (mono_arch_call_opcode): Remove OP_OUTARG_MEMBASE and instead simply
10170         adjust stack pointer after pushing args. Adjust ARGS_OFFSET to account
10171         for 32 bytes of stack space reserved for all calls.
10172         
10173         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Remove.
10174         (OP_AMD64_OUTARG_ALIGN_STACK): Take argument to specify size of stack 
10175         adjustment.
10176         
10177         Code contributed under MIT/X11 license.
10178
10179 2008-04-23  Rodrigo Kumpera  <rkumpera@novell.com>
10180
10181         * mini.c (mini_method_verify): Only verify non-inflated methods, check
10182         against the root definition, peeling out method and type instantiations.
10183         Cache verify success results, code that fails verification is still
10184         checked multiple times.
10185
10186 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
10187
10188         * mini.c (mono_method_to_ir): Avoid inserting write barriers for stores of null.
10189
10190 2008-04-23  Jonathan Chambers <joncham@gmail.com>
10191
10192         * mini-amd64.c (add_general): Always increment stack on Win64.
10193         (mono_arch_call_opcode): Use OP_OUTARG_MEMBASE instead of OP_OUTARG
10194         on Win64.
10195         
10196         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Add OP_OUTARG_MEMBASE for 
10197         stack based argument handling on Win64.
10198         
10199         Code contributed under MIT/X11 license.
10200
10201 2008-04-23  Raja R Harinath  <harinath@hurrynot.org>
10202
10203         * Makefile.am (version.h): Add support for git-svn.
10204
10205 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
10206
10207         * mini-exceptions.c (mono_handle_native_sigsegv): Rework the gdb calling code
10208         so instead of calling g_spawn_command_line_sync, we do everything by hand, 
10209         avoiding allocations and libc functions which might deadlock.
10210         
10211         * mini-exceptions.c (mono_handle_native_sigsegv): Avoid calling gdb if the
10212         'no-gdb-backtrace' option is set.
10213
10214         * mini.c (mini_parse_debug_options): Parse 'no-gdb-backtrace' option.
10215
10216         * mini.h (MonoDebugOptions): Add 'no_gdb_backtrace' option.
10217
10218 2008-04-21  Martin Baulig  <martin@ximian.com>
10219
10220         * debug-debugger.h (MonoDebuggerInfo): Removed `attach', `detach'
10221         and `get_lmf_addr'; `notification_address' is no longer a pointer.
10222
10223 2008-04-21  Martin Baulig  <martin@ximian.com>
10224
10225         * debug-debugger.h (MonoDebuggerInfo): Added `thread_vtable_ptr',
10226         `thread_vtable', `event_handler_ptr' and `event_handler'.
10227
10228 2008-04-21  Martin Baulig  <martin@ximian.com>
10229
10230         * debug-debugger.h (MonoDebuggerInfo): Added `init_code_buffer';
10231         allows delayed initialization of the `executable_code_buffer' when
10232         attaching.
10233
10234 2008-04-21  Martin Baulig  <martin@ximian.com>
10235
10236         * mini.h (mono_debugger_create_notification_function): Removed.
10237         * tramp-*.c (mono_debugger_create_notification_function): Removed.
10238
10239         * mdb-debug-info64.s
10240         (MONO_DEBUGGER__notification_function): Added this in the .text section.
10241
10242         * mdb-debug-info32.s
10243         (MONO_DEBUGGER__notification_function): Added this in the .text section.
10244
10245         * Makefile.am: Fix the mdb-debug-info*.s logic; the debugger
10246         currently only works on x86 and x86_64, so don't create it on ppc.
10247
10248 2008-04-21  Martin Baulig  <martin@ximian.com>
10249
10250         * mini.h (MonoDebugOptions): Added `mdb_optimizations'.
10251
10252         * mini.c
10253         (mini_method_compile): In the fp elimination check, check
10254         `debug_options.mdb_optimizations' in addition to
10255         mono_debug_using_mono_debugger().       
10256
10257         * driver.c (mono_main): Added `--debug=mdb-optimizations' option to
10258         disable some JIT optimizations which are only disabled when
10259         running inside the debugger.
10260         Added `--help-debug' option to describe the debugging options.
10261         (parse_debug_options): New static function to parse the `--debug'
10262         options, so we can easily add more stuff in future.
10263
10264 2008-04-20  Zoltan Varga  <vargaz@gmail.com>
10265
10266         * mini.c (set_exception_type_from_invalid_il): Avoid reading invalid memory when
10267         the method has no body.
10268
10269 2008-04-19  Jonathan Chambers <joncham@gmail.com>
10270
10271         * mini-amd64.c (cpuid): Implement with MSVC intrinsic as inline
10272         assembly is not allowed in MSVC 64-bit compiler. 
10273         (mono_arch_cpu_init): Don't set floating point precision on MSVC build
10274         as we get floating point exceptions everywhere.
10275         
10276         * exceptions-amd64.c (get_throw_trampoline): Push empty args on stack to
10277         correctly align arguments for call to throw_exception.
10278         (prepare_for_guard_pages): Cast to guint64 instead of unsigned long.
10279         
10280         Code contributed under MIT/X11 license.
10281
10282 2008-04-19  Zoltan Varga  <vargaz@gmail.com>
10283
10284         * mini-amd64.c (amd64_patch): Make the check for (%rip) addressing more strict.
10285
10286 2008-04-17  Zoltan Varga  <vargaz@gmail.com>
10287
10288         * inssel.brg (OP_SWITCH): Use (gint64) instead of (long) to cast a large constant.
10289
10290         * mini-amd64.c (NEW_INS): Set cil_code.
10291
10292         * mini.c (mini_method_compile): Move the disabling of fp elimination to here
10293         from mini-amd64.c so all debugger related logic is in one place.
10294
10295         * mini.c: Set cfg->ip to NULL after passes which set it so instructions created
10296         later won't have a random ip assigned to them.
10297
10298 2008-04-16  Zoltan Varga  <vargaz@gmail.com>
10299
10300         * mini-trampolines.c (mono_create_jump_trampoline): Add an assert to check that
10301         the arch specific function initializes code_size.
10302         (mono_create_delegate_trampoline): Ditto.
10303
10304         * mini-mips.h mini-mips.c inssel-mips.brg inssel-long32-mips.brg cpu-mips.md
10305         tramp-mips.c: Resurrect MIPS port and also fix the issues on little-endian
10306         platforms.
10307
10308         * liveness.c (mono_analyze_liveness): Disable the initlocals optimization if 
10309         running under the debugger.
10310
10311         * linear-scan.c (mono_linear_scan): Avoid sharing registers if running under the
10312         debugger.
10313
10314         * mini.c (mini_method_compile): Set a few flags in cfg if running under the
10315         debugger. Also move the disabling of optimizations here from driver.c.
10316         (mono_allocate_stack_slots_full): Avoid sharing stack slots if running under the
10317         debugger.
10318
10319         * mini.h (MonoCompile): Add a few new flags.
10320
10321 2008-04-15  Zoltan Varga  <vargaz@gmail.com>
10322
10323         * mini.c (mono_method_to_ir): Set cfg->ip before processing an IL instruction
10324         so the cil_code field of created MonoInst's is properly set.
10325         (mini_select_instructions): Ditto.
10326
10327         * mini.h (MONO_INST_NEW): Initialize the cil_code field using cfg->ip.
10328         (MONO_INST_NEW_CALL): Ditto.
10329
10330         * mini.c inssel.brg inssel-x86.brg inssel-amd64.brg: Use MONO_INST_NEW ()
10331         in many places so the ins->cil_code field is properly initialized.
10332
10333         * mini.c (mono_bblock_add_inst): Call MONO_ADD_INS () so the logic is in one
10334         place.
10335
10336 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
10337
10338         * mini.c (mini_method_compile): Print a different message when compiling a 
10339         shared method.
10340         
10341         * mini.c (GENERIC_SHARING_FAILURE): Print a failure message when verbose_level
10342         > 1.
10343
10344 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
10345
10346         * mini-amd64.c (mono_arch_output_basic_block): Implement OP_ABS directly using
10347         SSE2 instructions.
10348
10349         * basic-math.cs: Fix warnings. Add a test for Math.Abs ().
10350         
10351 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
10352
10353         * mini.c (handle_stack_args): Make this return void since its return value was
10354         never used. Also set cfg->unverifiable for invalid IL instead of calling
10355         G_BREAKPOINT ().
10356
10357 2008-04-10  Mark Probst  <mark.probst@gmail.com>
10358
10359         * mini.c: Make sure "this" is live in catch clauses with type
10360         variables in shared generic code.
10361
10362 2008-04-08  Mark Probst  <mark.probst@gmail.com>
10363
10364         * mini.c: Replaced uses of MONO_TYPE_IS_REFERENCE with calls to
10365         generic_class_is_reference_type() to ensure the proper behaviour
10366         when sharing generic code and the type in question is a type
10367         argument.
10368
10369 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
10370
10371         * mini-exceptions.c: Applied patch from Mark Spruiell (mes@zeroc.com). Fix
10372         race conditions when printing thread dumps. Fixes #377738.
10373
10374 2008-04-08  Massimiliano Mantione  <massi@ximian.com>
10375         
10376         aliasing.c (update_aliasing_information_on_inst): Fixed a bug which
10377         shows up when both MonoInst arguments can cause aliasig.
10378         There is likely no way in the current JIT to trigger this problem, but
10379         it showed up in the development of generics sharing, when in a new
10380         opcode both args of an OP_GROUP can be aliases (addresses of a local).
10381         When the generics sharing code will be committed, its tests will be
10382         valid also for this bug.
10383
10384 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
10385
10386         * aot-runtime.c (decode_patch_info): Always transform PATCH_INFO_WRAPPER to
10387         PATCH_INFO_METHOD.
10388
10389         * mini.c (mono_resolve_patch_target): Fix a crash in the AOT case if method is
10390         NULL.
10391
10392 2008-04-07  Zoltan Varga  <vargaz@gmail.com>
10393
10394         * mini-exceptions.c (mono_handle_exception_internal): When --debug=casts is used,
10395         use a more detailed exception message for InvalidCastException.
10396
10397         * mini.h (MonoJitTlsData): Add 'class_cast_from' and 'class_cast_to' fields.
10398
10399         * driver.c (mono_main): Add --debug=casts option to turn on better 
10400         InvalidCastException message details.
10401
10402         * mini.c (mini_get_debug_options): New helper function to return the address of
10403         the debug_options variable.
10404
10405         * mini.c (mono_get_jit_tls_intrinsic): New helper function to create a load of
10406         the jit_tls TLS variable.
10407
10408         * mini.c (mono_jit_tls): New TLS variable.
10409
10410         * inssel.brg: Save the details of a cast to a TLS variable when the --debug=casts
10411         option is used.
10412
10413 2008-04-07  Rodrigo Kumpera  <rkumpera@novell.com>
10414
10415         * mini.h: Removed verifer related stuff. This code was moved to verify.c
10416
10417         * mini.c: Removed verifer related stuff, code moved to verify.c.
10418
10419         * driver.c: Using code from verify.c instead of mini.c.
10420
10421 2008-04-05  Zoltan Varga  <vargaz@gmail.com>
10422
10423         * mini.c (check_for_method_verify): Remove the mscorlib comment since it is no
10424         longer valid.
10425
10426 2008-04-04  Rodrigo Kumpera  <rkumpera@novell.com>
10427
10428         * mini.c (check_for_method_verify): Enabling verification of
10429         corlib if mono_verify_all is set. Bugs in the verifier preventing that
10430         have been fixed.
10431
10432 2008-04-04  Zoltan Varga  <vargaz@gmail.com>
10433
10434         * exceptions-amd64.c (throw_exception): Unify the win32/non-win32 cases, save
10435         caller saved registers as well.
10436         
10437         * exceptions-amd64.c (mono_arch_get_restore_context): Restore most caller
10438         saved registers as well.
10439
10440 2008-03-30  Zoltan Varga  <vargaz@gmail.com>
10441
10442         * mini-x86.c cpu-x86.md inssel-x86.brg: Add min/max intrinsics.
10443
10444         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of the non-SSE2 floating point
10445         code.
10446
10447 2008-03-27  Zoltan Varga  <vargaz@gmail.com>
10448
10449         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'gsctx' argument and pass it
10450         to get_call_info.
10451         (get_call_info): Take a gsctx argument instead of 'cfg'.
10452
10453 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
10454
10455         * mini.c (check_for_method_verify): Avoid verifying mscorlib methods even if
10456         mono_verify_all is set.
10457
10458         * driver.c (compile_all_methods_thread_main): Don't exit at the first error.
10459
10460         * mini.c mini.h: Remove the unused and incomplete stack merge verification code.
10461
10462 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
10463
10464         * driver.c (compile_all_methods_thread_main): Error out if compilation fails with
10465         an exception.
10466
10467         * driver.c mini.c mini.h: Add a --verify-all development option to test the
10468         verifier and the code generated by the compiler.
10469
10470 2008-03-25  Mark Probst  <mark.probst@gmail.com>
10471
10472         * mini.c: Generic sharing of the non-nullable case of the box
10473         instruction.
10474
10475 2008-03-24  Zoltan Varga  <vargaz@gmail.com>
10476
10477         * inssel.brg: Fix the build.
10478
10479         * iltests.il.in: Add a test for lconv.ovf.u8.un.
10480
10481 2008-03-24  Rodrigo Kumpera  <rkumpera@novell.com>
10482
10483         * mini.c (mono_method_to_ir): Implement readonly for ldelema and
10484         Array:Address. Fixes #372410.
10485
10486         * iltests.il.in: New tests for readonly prefix.
10487
10488 2008-03-23  Zoltan Varga  <vargaz@gmail.com>
10489
10490         * mini.h mini.c mini-trampolines.c: Move trampoline related code to 
10491         mini-trampolines.c.
10492
10493         * mini.h mini.c mini-exceptions.c: Move mini_init_exceptions () to 
10494         mini-exceptions.c.
10495
10496         * mini-amd64.c mini-s390.c (mono_arch_lowering_pass): Use mono_decompose_op_imm ().
10497         
10498         * mini.c (mono_decompose_op_imm): New helper function.
10499
10500         * mini-s390x.c (calculate_sizes): Rename this to get_call_info for consistency
10501         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
10502         return value.
10503
10504         * mini-s390x.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
10505         mono_arch_output_basic_block. Fix warnings.
10506
10507         * inssel-s390x.brg: Remove the unneccesary OP_LMUL_IMM rule to fix the s390x build
10508         for now.
10509
10510 2008-03-22  Zoltan Varga  <vargaz@gmail.com>
10511
10512         * mini-exceptions.c (ves_icall_get_frame_info): Remove the ia64/s390 workarounds
10513         since the extra frame is now detected automatically inside the loop.
10514
10515         * mini-s390.c (mono_arch_peephole_pass_2): Remove the arch independent peephole 
10516         opts which are now in mono_peephole_ins ().
10517         
10518         * mini-s390.c (mono_arch_output_basic_block): Fix OP_FCALL_MEMBASE.
10519
10520         * mini-exceptions.c (ves_icall_get_frame_info): Skip native-to-managed wrapper
10521         frames and skip duplicate managed-to-native frames. Fixes #367665.
10522
10523         * mini-x86.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
10524         opts which are now in mono_peephole_ins ().
10525         (mono_arch_peephole_pass_2): Ditto.
10526
10527         * mini-codegen.c (mono_peephole_ins): Fix a problem on 32 bit platforms.
10528
10529         * mini-codegen.c (mono_peephole_ins): New helper function containing the
10530         arch independent peephole optimizations.
10531
10532         * mini-amd64.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
10533         opts which are now in mono_peephole_ins ().
10534
10535         * mini-amd64.c (mono_arch_peephole_pass_2): Ditto.
10536         
10537         * mini-s390.c (mono_arch_output_basic_block): Fix build.
10538
10539         * tramp-s390.c (mono_arch_get_vcall_slot): Handle an additional instruction
10540         pattern.
10541
10542         * mini-s390.c (mono_arch_output_basic_block): Handle big offsets in the
10543         CALL_MEMBASE opcodes. Fix setting of the destination in the OP_LCONV_TO_OVF_I
10544         opcode. 
10545
10546 2008-03-21  Zoltan Varga  <vargaz@gmail.com>
10547
10548         * mini-s390.c (calculate_sizes): Rename this to get_call_info for consistency
10549         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
10550         return value.
10551
10552         * mini-s390.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
10553         mono_arch_output_basic_block. Fix warnings.
10554
10555 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
10556
10557         * inssel-long32.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
10558         conv.ovf.u.un.
10559
10560 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
10561
10562         * inssel-long.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
10563         conv.ovf.u.un.
10564
10565         * iltests.il: Add new tests.
10566
10567 2008-03-20  Kornel Pal  <kornelpal@gmail.com>
10568
10569         * mini.c: Removed Windows version macros.
10570
10571 2008-03-20  Mark Probst  <mark.probst@gmail.com>
10572
10573         * generic-sharing.c: Put reflection types in the extensible part
10574         of the runtime generic context.
10575
10576         * mini.c: Generic sharing of the GetTypeHandle special case of the
10577         ldtoken instruction.
10578
10579 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
10580
10581         * mini.h (MONO_BB_FOR_EACH_INS_SAFE): New helper macro.
10582
10583         * mini-<ARCH>.c: Use the new macro instead in the peephole/lowering passes.
10584         
10585         * mini.h (MONO_DEL_INS): Rename to MONO_DELETE_INS and Add a 'bb' argument for 
10586         consistency with the other version on the linear IR branch.
10587
10588         * mini-<ARCH>.c: Update callers of MONO_DEL_INS.
10589
10590         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i/conv.ovf.u.
10591
10592         * iltests.il.in: Add new tests.
10593
10594 2008-03-19  Zoltan Varga  <vargaz@gmail.com>
10595
10596         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i.un/conv.ovf.u.un.
10597
10598         * iltests.il.in: Add new tests.
10599
10600 2008-03-19  Mark Probst  <mark.probst@gmail.com>
10601
10602         * mini.c: Two variables with the same name were declared in
10603         nesting contexts and one wasn't initialized.  Fixed.
10604
10605 2008-03-19  Mark Probst  <mark.probst@gmail.com>
10606
10607         * mini.c: Generic sharing of the initobj instruction.
10608
10609 Tue Mar 18 20:18:02 CET 2008 Paolo Molaro <lupus@ximian.com>
10610
10611         * mini.c: make the test to optimize ldtoken from typeof() more
10612         precise.
10613
10614 2008-03-18  Mark Probst  <mark.probst@gmail.com>
10615
10616         * mini.c: Generic sharing of the initobj instruction for reference
10617         types.
10618
10619 Tue Mar 18 12:39:27 CET 2008 Paolo Molaro <lupus@ximian.com>
10620
10621         * mini.h, mini-amd64.c, mini-x86.c, tramp-amd64.c, tramp-x86.c: change
10622         the mono_breakpoint_clean_code() code to perform bound checks.
10623
10624 Tue Mar 18 11:50:14 CET 2008 Paolo Molaro <lupus@ximian.com>
10625
10626         * mini.h, mini-trampolines.c, tramp-*.c: change the signature of
10627         mono_arch_patch_callsite() to include the start of the managed method
10628         to be able to perform bound checks.
10629
10630 2008-03-17  Mark Probst  <mark.probst@gmail.com>
10631
10632         * mini.c: Generic sharing for the isinst instruction.
10633
10634 2008-03-17  Mark Probst  <mark.probst@gmail.com>
10635
10636         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
10637         inssel-long32-mips.brg: Added opcodes for doing indirect calls
10638         with the runtime generic context argument.
10639
10640         * mini.c: Share calls to several types of unsharable methods by
10641         putting the address of the method code in the runtime generic
10642         context and doing an indirect call.
10643
10644         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
10645         to switches.
10646
10647 2008-03-16  Mark Probst  <mark.probst@gmail.com>
10648
10649         * generic-sharing.c: Change due to a change in the runtime genric
10650         context API.
10651
10652 2008-03-15  Martin Baulig  <martin@ximian.com>
10653
10654         * tramp-x86.c
10655         (mono_arch_nullify_class_init_trampoline): Add call to
10656         mono_breakpoint_clean_code() to make things work when running
10657         inside the debugger.
10658
10659         * tramp-amd64.c
10660         (mono_arch_nullify_class_init_trampoline): Add call to
10661         mono_breakpoint_clean_code() to make things work when running
10662         inside the debugger.
10663
10664 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
10665
10666         * inssel-long.brg (reg): Fix 64 bit build.
10667
10668 2008-03-14  Mark Probst  <mark.probst@gmail.com>
10669
10670         * mini.c, mini.h: Share static generic code by passing it an
10671         implicit argument pointing to the runtime generic context.
10672
10673         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
10674         inssel-long32-mips.brg: New opcodes for calling shared static,
10675         which need to be passed the runtime generic context.
10676
10677         * mini-amd64.c, mini-x86.c: Save the runtime generic context
10678         argument on the stack in the prologue if needed.  New function for
10679         finding the runtime generic context argument from the registers
10680         saved by the trampoline.
10681
10682         * mini-amd64.h, mini-x86.h: Specify which register to use for the
10683         runtime generic context argument.
10684
10685         * tramp-amd64.c: Also restore the register used for the runtime
10686         generic context argument.
10687
10688         * mini-trampoline.c: Resolve shared static calls by consulting the
10689         runtime generic context via the new argument.
10690
10691         * generic-sharing.c: Add an argument to sharability-checking
10692         functions that specifies whether type variables should be treated
10693         as sharable type arguments.
10694
10695         * inssel-x86.brg: Removed a superfluous, buggy rule.
10696
10697         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
10698         to switches.
10699
10700 2008-03-14  Martin Baulig  <martin@ximian.com>
10701
10702         * debug-debugger.c (main_thread_handler): Call
10703         mono_runtime_run_main() without sending any notifications.
10704
10705         * debug-debugger.h (MonoDebuggerInfo): Added `get_method_signature.
10706
10707 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
10708
10709         * mini-trampolines.c (mono_magic_trampoline): Fix build on platforms without IMT.
10710
10711 2008-03-14  Mark Probst  <mark.probst@gmail.com>
10712
10713         * tramp-x86.c: Fixed register restore offsets in the trampoline
10714         code for ECX and EDX.
10715
10716 2008-03-12  Geoff Norton  <gnorton@novell.com>
10717
10718         * mini-arm.h: Add some #defines for locating sp, pc, r4 with
10719         different ucontext_t implementations.
10720         * exceptions-arm.c: Use the above defines to get exceptions working on 
10721         iPhone (based on a patch by Luke Howard lukeh@padl.com)
10722         * mini-arm.c: Implement iPhone icache support (based on a patch by
10723         Luke Howard lukeh@padl.com)
10724
10725 2008-03-12  Mark Probst  <mark.probst@gmail.com>
10726
10727         * mini.c: Enable generic sharing of calls to non-static
10728         non-interface non-generic non-value-type methods.
10729
10730         * mini-trampolines.c: Resolve calls from shared generic code.
10731
10732 2008-03-11  Zoltan Varga  <vargaz@gmail.com>
10733
10734         * Makefile.am il2tests.il iltests.il.in: Delete il2tests, merge it into iltests.
10735
10736         * tramp-amd64.c (mono_arch_create_trampoline_code): Correctly save RBP as well.
10737
10738 Mon Mar 10 11:59:34 CET 2008 Paolo Molaro <lupus@ximian.com>
10739
10740         * mini.c: some fixes for the AOT compiler.
10741
10742 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
10743
10744         * cpu-amd64.md: Add clob:1 to some float opcodes.
10745
10746 2008-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
10747
10748         * mini.h: Added MiniVerifierMode enumeration.
10749
10750         * mini.c: Added mini_verifier_set_mode to control
10751         the usage of the new verifier.
10752
10753         * mini.c (mono_method): Integrated the new verifier.
10754
10755         * driver.c: Extended --security option with validil and
10756         verifiable options to activate the new verifier.
10757
10758 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
10759
10760         * mini.c jit-icalls.h jit-icalls.c: Generalize the exception creation 
10761         optimization to ctors taking 0 or 2 arguments too.
10762
10763         * mini.c (mono_method_to_ir): Optimalize the size of the exception throwing code
10764         a bit.
10765
10766         * jit-icalls.h (mono_create_corlib_exception): New JIT icall.
10767
10768         * mini-amd64.c (mono_arch_emit_prolog): Improve the first_bb optimization a bit.
10769
10770 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
10771
10772         * mini.c (mono_method_to_ir): Apply one of the ldstr optimizations in the
10773         non-aot case as well.
10774
10775         * cpu-amd64.md: Reduce the max size of some frequently used opcodes.
10776
10777         * aot-runtime.c (decode_patch_info): Update this after the ldfld/stfld wrapper
10778         changes.
10779
10780         * aot-compiler.c (encode_patch): Ditto.
10781
10782         * mini.h (G_MININT32): Fix the definition of this.
10783
10784 2008-03-05  Zoltan Varga  <vargaz@gmail.com>
10785
10786         * mini.h: Define G_MININT32/G_MAXINT32 if using an older glib version.
10787
10788         * cfold.c: Remove definition of G_MININT32 which is now in mini.h.
10789
10790 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
10791
10792         * mini-amd64.c (mono_arch_compute_omit_fp): Don't disable fp elimination for 
10793         methods returning vtypes in registers.
10794         (mono_arch_allocate_vars): Ditto.
10795
10796         * mini-amd64.c (mono_arch_get_this_arg_reg): New arch specific helper function.
10797
10798         * tramp-amd64.c (mono_arch_get_unbox_trampoline): Use mono_arch_get_this_arg_reg ().    
10799
10800         * generics.cs: Add a test from the linear IR branch.
10801
10802         * mini-amd64.c (emit_load_volatile_arguments): Handle vtypes passed in regs too.
10803
10804         * mini.c (inline_method): Cache failed inline attempts.
10805
10806 2008-03-04  Mark Probst  <mark.probst@gmail.com>
10807
10808         * mini.c: For shared methods of generic classes put the location
10809         of "this" into the MonoGenericJitInfo.
10810
10811         * mini-x86.c, mini-amd64.c, mini.h: Added function for fetching a
10812         register out of a MonoContext by register number.  Add the generic
10813         sharing context as an argument to mono_arch_find_this_argument().
10814
10815         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
10816         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c: Added stub
10817         for new arch function.
10818
10819         * mini-exception.c: Handle open exception clauses in shared
10820         generic code.
10821
10822         * mini-trampolines.c: Supply additional argument to
10823         mono_arch_find_this_argument().
10824
10825 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
10826
10827         * Makefile.am (regtests): Run the bench.exe tests last.
10828
10829 2008-03-03  Zoltan Varga  <vargaz@gmail.com>
10830
10831         * mini-amd64.c (mono_arch_emit_prolog): Improve the first bblock optimization
10832         a bit.
10833
10834 2008-03-02  Zoltan Varga  <vargaz@gmail.com>
10835
10836         * mini.c (mono_method_to_ir): Allow callvirt on static methods for compatibility
10837         with MS.
10838
10839         * mini-amd64.c (mono_arch_emit_prolog): Fix tracing after the last change.
10840         
10841         * mini-amd64.c (mono_arch_emit_prolog): Avoid saving dead arguments.
10842
10843         * mini.c (mono_method_check_inlining): Avoid disabling inlining for methods
10844         whose class has no cctor.
10845
10846         * liveness.c (mono_analyze_liveness): Mark dead arguments with MONO_INST_IS_DEAD.
10847
10848 2008-03-01  Zoltan Varga  <vargaz@gmail.com>
10849
10850         * mini.c (mono_method_to_ir): Report calling a static method using callvirt as
10851         unverified.
10852
10853 2008-02-29  Zoltan Varga  <vargaz@gmail.com>
10854
10855         * mini-ops.h: Remove OP_SPARC_INARG_VT, add a new OP_VTARG_ADDR opcode instead
10856         to be in sync with the code on the linear IR branch.
10857
10858         * mini-sparc.c inssel-sparc.brg: Use OP_VTARG_ADDR.
10859
10860         * inssel-s390.brg (OP_SETRET (freg)): Set dreg correctly.
10861
10862 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
10863
10864         * mini-mips.c: Use cfg->vret_addr instead of cfg->ret.
10865
10866         * mini-s390x.c: Use cfg->vret_addr instead of cfg->ret.
10867
10868         * mini-s390.c: Use cfg->vret_addr instead of cfg->ret.
10869
10870         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_VARS define.
10871
10872         * mini-<ARCH>.c (mono_arch_create_vars): Define this for all architectures.
10873         
10874         * mini.c (mono_method_to_ir): Avoid invalid memory reads for methods without a
10875         body.
10876
10877 2007-11-14  Yoichi NAKAYAMA  <nakayama@pixela.co.jp>
10878
10879         * inssel-mips.brg (OP_OUTARG_MEMBASE (CEE_LDIND_R4 (base))): Add missing
10880         OP_LOADR4_MEMBASE emission.
10881
10882         * mini-codegen.c (mono_spillvar_offset_int): Remove assertion.
10883         (mono_spillvar_offset_float): Ditto.
10884
10885         * mini-mips.c (mono_arch_emit_prolog): Ditto.
10886
10887         * inssel-long32-mips.brg: Fix wrong branching, reduce redundant code
10888         emission.
10889
10890         * basic-long.cs: Add regression tests for them.
10891
10892         * mini-mips.c (add_float32_arg): Respect o32 calling convention in gr
10893         use.
10894         (mono_arch_allocate_vars): Fix representation of single-precision float
10895         argument.
10896         (mono_arch_output_basic_block): Ditto.
10897
10898         * inssel-mips.brg: Ditto, remove duplicate items.
10899
10900         * mini-mips.c (emit_load_volatile_arguments): New function to handle
10901         arguments of tail calls as on other platforms.
10902         (mono_arch_output_basic_block): Handle tail calls.
10903
10904         * inssel-mips.brg (OP_OUTARG_VT (CEE_LDOBJ (base))): Correct destination
10905         register.
10906
10907         * objects.cs (test_5_pass_static_struct): Add test for it.
10908
10909         Contributed under MIT/X11 license.
10910
10911 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
10912
10913         * Makefile.am: Use gmcs for compiling the regression tests.
10914
10915         * *.2.cs *.2.il: Rename to *.cs and *.il.
10916
10917 2008-02-24  Zoltan Varga  <vargaz@gmail.com>
10918
10919         * regalloc.h: Make the vassign array smaller.
10920
10921         * mini.c (mini_method_compile): Remove an unused field in cfg.
10922
10923         * mini-codegen.c: Add a bunch of micro optimizations.
10924
10925 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
10926
10927         * regalloc.h: Remove some unused fields.
10928
10929 2008-02-22  Zoltan Varga  <vargaz@gmail.com>
10930
10931         * mini-amd64.c (mono_arch_patch_code): Fix a warning.
10932
10933         * ssa.c (mono_ssa_remove): Avoid declaring volatile variables dead.
10934
10935 2008-02-22  Mark Probst  <mark.probst@gmail.com>
10936
10937         * mini.h: New trampoline type (RGCTX_LAZY_FETCH).
10938
10939         * mini-trampolines.c, tramp-amd64.c, tramp-x86.c: RGCTX lazy fetch
10940         trampoline: Fetch an entry from the runtime generic context.  If
10941         it's NULL, jump to the actual trampoline to fill the runtime
10942         generic context.  Otherwise, return it.
10943
10944         * mini.c: Call the lazy fetch trampoline to get entries out of the
10945         runtime generic context.
10946
10947         * tramp-ia64.c, tramp-arm.c, tramp-alpha.c, tramp-s390.c,
10948         tramp-s390x.c, tramp-ppc.c, tramp-hppa.c, tramp-mips.c,
10949         tramp-sparc.c: Stubs for the lazy fetch trampoline.
10950
10951 2008-02-21  Mark Probst  <mark.probst@gmail.com>
10952
10953         * mini.c: Fetch data out of the extensible part of the runtime
10954         generic context instead of calling a helper function.
10955
10956         * generic-sharing.c: Some functions moved into
10957         metadata/generic-sharing.c.  Helper function for fetching other
10958         types now checks and asserts against extensible rgctx (just for
10959         debugging purposes - the helper function isn't called anymore
10960         unless for debugging).
10961
10962 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
10963
10964         * mini-arm.c (mono_arch_output_basic_block): Implement proper argument passing
10965         for tail calls up to the point that the tests in iltests.exe run. Also add a
10966         dummy CKFINITE implementation.
10967         (mono_arch_emit_prolog): Avoid saving the method in the LMF since it is only
10968         needed for trampoline LMF frames.
10969
10970         * exceptions-arm.c (mono_arch_find_jit_info): Only read lmf->method for 
10971         trampoline LMF frames.
10972
10973 2008-02-21  Rodrigo Kumpera  <rkumpera@novell.com>
10974
10975         * mini.c (inline_method): clean any pending loader error when inlining fail.
10976         Otherwise loader errors in mono_method_to_ir leaks and cause spurious errors.
10977
10978 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
10979
10980         * aot-compiler.c (encode_patch): Handle ICALL_ADDR patch type.
10981
10982         * aot-runtime.c (decode_patch_info): Ditto.
10983
10984         * mini.c (mono_resolve_patch_target): Ditto.
10985         
10986         * aot-compiler.c (compile_method): Add some experimental code for AOT compiling
10987         icall wrappers.
10988
10989         * patch-info.h (PATCH_INFO): Add 'ICALL_ADDR' patch type.
10990         
10991         * mini.c (mono_method_to_ir): Convert a CEE_MONO_LDPTR opcode to an AOT constant
10992         if it references an icall address.
10993
10994 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
10995
10996         * cpu-s390x.md: Remove some more unused opcodes.
10997         
10998         * cpu-s390x.md: Remove some unused opcodes.
10999
11000         * mini-ia64.c (mono_arch_lowering_pass): Add some more opcodes. Use
11001         mono_op_imm_to_op ().
11002
11003         * mini-sparc.c (opcode_to_sparc_cond): Use the mono_opcode_to_cond () functions
11004         instead of a switch statement.
11005         
11006         * mini-sparc.c (mono_arch_allocate_vars): Allocate a stack slot for use by
11007         the int<->float conversion opcodes instead of using mono_spillvar_offset_float ().
11008
11009         * mini-codegen.c: Eliminate rassign macro which is no longer needed.
11010         
11011         * mini-codegen.c: Remove unused mono_regstate2_... functions.
11012
11013         * mini-codegen.c (mono_print_ins_index): Avoid printing an index when it is
11014         -1.
11015
11016 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
11017
11018         * driver.c (mono_main): Improve error reporting when an assembly cannot be
11019         opened. Fixes #362607.
11020
11021         * cpu-ia64.md cpu-s390x.md: Remove some unused opcodes.
11022
11023         * iltests.il.in: Add a test for static methods in interfaces.
11024
11025 2008-02-18  Zoltan Varga  <vargaz@gmail.com>
11026
11027         * genmdesc.c (build_table): Fix a crash on older glib versions.
11028
11029         * cpu-sparc.md: Remove some unused opcodes.
11030         
11031         * genmdesc.c: Error out if the .md contains CEE_ opcodes if 
11032         MONO_ARCH_ENABLE_NORMALIZE_OPCODES is defined.
11033
11034         * cpu-amd64.md: Remove some unused opcodes.
11035
11036         * mini.h mini-ops.h mini.c: Define the OP_Ccc opcodes in mini-ops.h normally
11037         like the other opcodes.
11038
11039 2008-02-17  Zoltan Varga  <vargaz@gmail.com>
11040
11041         * mini-ia64.c: Use cfg->vret_addr instead of cfg->ret.
11042
11043         * mini-arm.h mini-arm.c: Use cfg->vret_addr instead of cfg->ret.
11044
11045         * mini-sparc.c: Use cfg->vret_addr instead of cfg->ret. Name the MonoCompile
11046         variables 'cfg' instead of 'm' for consistency.
11047
11048         * mini-x86.c: Use cfg->vret_addr instead of cfg->ret.
11049
11050         * mini.h (MonoCompile): Add new 'vret_addr' field which represents the hidden
11051         argument holding the vtype return address, to avoid the ambigious use of
11052         cfg->ret for this purpose.
11053
11054         * mini.c (NEW_RETLOADA): Use vret_addr if set.
11055
11056         * mini-amd64.c: Use cfg->vret_addr instead of cfg->ret.
11057         
11058         * mini-codegen.c (mono_print_ins): Rename to mono_print_ins_index (), Add a
11059         new mono_print_ins () function which only takes one argument.
11060
11061 2008-02-15  Zoltan Varga  <vargaz@gmail.com>
11062
11063         * mini-s390.h (MONO_OUTPUT_VTR): Use cfg instead of s, avoid assignments to
11064         macro arguments.
11065
11066 2008-02-14  Zoltan Varga  <vargaz@gmail.com>
11067
11068         * mini-ops.h: Get rid of OP_SPARC_LOCALLOC_IMM.
11069
11070         * mini-sparc.c inssel-sparc.brg: Use OP_LOCALLOC_IMM instead of OP_SPARC_LOCALLOC_IMM.
11071
11072         * mini-x86.c: Sync with the version on the linear IR branch by adding new 
11073         opcodes and other small changes.
11074
11075         * mini-ops.h: Add some new opcodes from the linear IR branch.
11076
11077         * mini-ops.h: Get rid of the OP_X86_..._MEMBASE opcodes.
11078
11079         * mini-x86.c inssel-x86.brg cpu-x86.md: Get rid of the confusing _MEMBASE
11080         opcodes, use the REG_MEMBASE opcodes instead.
11081         
11082         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Get rid of the confusing _MEMBASE
11083         opcodes, use the REG_MEMBASE opcodes instead.
11084         
11085         * mini-amd64.c (mono_arch_output_basic_block): Sync with the version on the
11086         linear IR branch.
11087
11088         * mini.c (mono_op_imm_to_op): New helper function.
11089
11090         * mini-ops.h: Add some opcodes from linear IR branch.
11091
11092 2008-02-13  Zoltan Varga  <vargaz@gmail.com>
11093
11094         * mini-alpha.h mini-alpha.c tramp-alpha.c: Alpha port updates from Sergey Tikhonov 
11095         <tsv@solvo.ru>.
11096
11097 2008-02-12  Zoltan Varga  <vargaz@gmail.com>
11098
11099         * mini.c (mono_normalize_opcodes): Always convert CEE_CONV_R4/R8 to 
11100         OP_ICONV_TO_R4/R8.
11101
11102         * mini-ia64.c cpu-ia64.md: Add OP_ICONV_TO_R4/R8.
11103
11104 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
11105
11106         * aot-compiler.c (emit_method_code): Add an assert.
11107
11108         * mini-arm.h mini-arm.c exceptions-arm.c: Modify the exception throwing code and
11109         the IMT code so it is AOT friendly. Enable AOT for methods which call interface
11110         methods.
11111
11112 2008-02-08  Zoltan Varga  <vargaz@gmail.com>
11113
11114         * mini-arm.c (mono_arch_output_basic_block): Fix the ordering of arguments for 
11115         some load/store opcodes so they are consistent. 
11116         (mono_arch_emit_prolog): Simplify some code.
11117
11118         * aot-runtime.c (mono_aot_get_plt_entry): Fix a warning.
11119
11120         * objects.cs: Add tests for large argument offsets on ARM.
11121
11122         * mini-arm.c (mono_arch_emit_prolog): Fix handling of arguments with large 
11123         stack offsets. Fixes #359651.
11124
11125         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R4/R8 properly.
11126
11127         * cpu-s390x.md: Add OP_LCONV_TO_R4/R8.
11128
11129         * cpu-ia64.md mini-ia64.h mini-ia64.c: Get rid of CEE_ opcodes.
11130
11131         * mini-ops.h: Add OP_ICONV_TO_R_UN opcode.
11132
11133         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R_UN too.
11134
11135         * cpu-s390x.md cpu-s390.md mini-s390x.c mini-arm.c cpu-arm.md mini-s390.c: Get
11136         rid of CEE_CONV_R_UN.
11137
11138         * mini-s390x.c mini-s390x.h cpu-s390x.md inssel-s390x.brg: Get rid of CEE_ opcodes.
11139
11140 2008-02-07  Zoltan Varga  <vargaz@gmail.com>
11141
11142         * mini-s390.c mini-s390.h cpu-s390.md: Get rid of CEE_ opcodes.
11143
11144         * mini.c (mono_normalize_opcodes): Add some more opcodes.
11145
11146         * mini-arm.c mini-arm.h cpu-arm.md: Get rid of CEE_ opcodes.
11147
11148         * cpu-amd64.md: Remove some unused opcodes.
11149
11150         * mini-sparc.c mini-sparc.h cpu-sparc.md: Get rid of CEE_ opcodes.
11151
11152         * mini-x86.c mini-x86.h cpu-x86.md: Get rid of CEE_ opcodes.
11153
11154         * mini.c mini-<ARCH>.c: Remove mono_arch_local_regalloc (), instead make 
11155         arch specific functions for its parts. Call the peephole pass after local
11156         regalloc so the prolog can compute a more accurate max_offset.
11157         
11158         * mini.c (mono_normalize_opcodes): New mini pass to convert CEE_ opcodes to
11159         the corresponding OP_I/OP_L opcodes.
11160
11161         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of CEE_ opcodes.
11162
11163         * mini-sparc.c (mono_arch_output_basic_block): Fix the sparc build.
11164
11165 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
11166
11167         * mini-s390.c (mono_arch_get_inst_for_method): Remove the Interlocked cases
11168         as they are handled in mini.c.
11169
11170         * mini-s390x.c (mono_arch_get_inst_for_method): Ditto.
11171         
11172         * mini-<ARCH>.c (mono_arch_get_inst_for_method): Remove the MemoryBarrier
11173         case since it is handled in mini.c.
11174
11175         * cpu-sparc.md (sparc_setfreg_float): Fix the sparc build.
11176
11177         * mini-ops.h: Add new opcodes OP_CALL/OP_CALLVIRT.
11178
11179         * *.c: Use the new opcodes in the IR and back end code.
11180
11181         * mini-ops.h cpu-<ARCH>.md: Correct the name of the bgt_un opcodes.
11182
11183         * mini-amd64.c (emit_call_body): Use a far-call for calling dynamic methods.
11184
11185 2008-02-06  Mark Probst  <mark.probst@gmail.com>
11186
11187         * mini-trampolines.c (mono_generic_class_init_trampoline): Removed
11188         an assert because it has a race condition.
11189
11190 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
11191
11192         * tramp-amd64.c (mono_arch_patch_callsite): Add more diagnostics.
11193
11194         * inssel.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused CEE_RET opcode.
11195
11196         * mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused LDIND/STIND opcodes.
11197
11198         * *.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of OP_SETREG/OP_SETFREG/OP_SETREGIMM,
11199         use OP_MOVE/OP_FMOVE/OP_ICONST instead.
11200
11201 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
11202
11203         * cpu-amd64.md (move): Correct the maximum size of move.
11204
11205 2008-02-05  Mark Probst  <mark.probst@gmail.com>
11206
11207         * tramp-amd64.c, tramp-x86.c, mini-trampolines.c: Added a check in
11208         the generic class init trampoline to return quickly if the class
11209         is already inited.
11210
11211 2008-02-04  Zoltan Varga  <vargaz@gmail.com>
11212
11213         * tramp-amd64.c (mono_arch_patch_callsite): Add some diagnostics to help debug
11214         issues where an 32 bit callsite cannot be patched by a 64 bit address.
11215
11216 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
11217
11218         * generics.2.cs generics-variant-types.2.il: Merge some tests from the linear IR
11219         branch.
11220
11221 2008-01-31  Zoltan Varga  <vargaz@gmail.com>
11222
11223         * objects.cs: Add some soft-float tests.
11224
11225         * mini.c: Fix a couple more soft-float issues.
11226
11227         * helpers.c (mono_disassemble_code): Fix disassembly on ARM.
11228
11229         * mini-amd64.c (peephole_pass): Use IXOR instead of LXOR for zeroing a register to
11230         avoid a REX prefix.
11231
11232 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
11233
11234         * exceptions-x86.c (mono_arch_find_jit_info): Fix stack unwinding when an
11235         exception happens while compiling a virtual method.
11236
11237 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
11238
11239         * mini-sparc.c (mono_arch_emit_epilog): Fix folding of negative return values.
11240         
11241         * mini-sparc.c: Fix build.
11242
11243         * mini-sparc.c (get_call_info): Add support for generic sharing.
11244
11245         * mini-exceptions.c: Add a FIXME.
11246
11247 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
11248
11249         * mini-exceptions.c (mono_handle_exception_internal): Remove the old style
11250         altstack handling code.
11251
11252         * mini-s390.c (mono_arch_emit_exceptions): Really fix a warning.
11253         
11254         * mini-s390.c (mono_arch_emit_exceptions): Fix a warning.
11255
11256         * mini-s390.c: Add support for generic sharing.
11257
11258         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
11259         Fix CAS on s390.
11260         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
11261
11262         * mini-s390x.c (mono_arch_emit_exceptions): Fix a warning.
11263
11264         * mini-s390x.c: Add support for generic sharing.
11265         
11266         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
11267         Fix CAS on ia64.
11268         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
11269
11270         * mini-s390x.c: Use is_imm16 instead of is_uimm16 when checking whenever s390_aghi
11271         can be used since it takes a 16 bit signed immediate.
11272
11273         * inssel-s390x.brg: Fix OP_SETRET.
11274
11275         * mini-s390x.c (mono_arch_output_basic_block): Fix OP_BREAK.
11276
11277         * mini-codegen.c (mono_opcode_to_cond): Fix a warning.
11278
11279         * mini-s390x.c cpu-s390x.md: Implement sext.i4 properly by sign extension.
11280
11281         * mini.c (mono_create_delegate_trampoline): Don't use mono_create_ftpntr here.
11282
11283         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_addr_from_ftnptr
11284         in one place.
11285
11286         * mini-ia64.h mini-ia64.c: Add minimal support for the delegate trampoline 
11287         stuff.
11288
11289         * mini.h inssel-x86.brg inssel-amd64.brg tramp-alpha.c tramp-ia64.c: Get rid
11290         of the unused mono_arch_patch_delegate_trampoline stuff.
11291
11292 2008-01-26  Zoltan Varga  <vargaz@gmail.com>
11293
11294         * basic-long.cs: Move the fp related tests to basic-float.cs.
11295
11296         * mini-ops.h (OP_OUTARG_FREG_R4): New opcode.
11297
11298         * mini-ia64.c inssel-ia64.brg: Implement proper R4 argument passing.
11299
11300         * basic-calls.cs: Add a test for proper float argument passing.
11301
11302         * mini-ia64.h (mono_ia64_context_get_ip): Do not substract 1 from the ip
11303         if the context corresponds to an exception received through a signal.
11304
11305         * exceptions.cs: Add a test for nullref handling at the start of a try
11306         clause.
11307
11308         * mini-ia64.c (mono_arch_call_opcode): Fix ia64 argument passing.
11309
11310         * jit-icalls.c (mono_break): New JIT icall.
11311
11312         * mini-<ARCH>.c: Use mono_break instead of mono_arch_break.
11313
11314         * mini-arm.c (arm_patch): Add support for patching the blx calling sequence.
11315
11316 2008-01-25  Zoltan Varga  <vargaz@gmail.com>
11317
11318         * cpu-*.md: Get rid of unused opcodes.
11319
11320         * cpu-g4.md: Rename this to cpu-ppc.md for consistency with other archs.
11321
11322         * Makefile.am: Move mini-trampolines.c to $(common_sources) since it is now used
11323         by all platforms.
11324
11325         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_SPECIFIC_TRAMPOLINE
11326         define.
11327
11328         * mini-s390x.h tramp-s390x.c Makefile.am: Rework the s390x trampoline code to use
11329         the arch independent trampoline code in mini-trampolines.c.
11330
11331         * aot-runtime.c (mono_aot_init_vtable): Fix a warning.
11332
11333         * mini.c (get_runtime_generic_context_ptr): Fix a warning.
11334
11335         * mini-s390.h: Remove an unused define.
11336         
11337         * mini-s390.h tramp-s390.c Makefile.am: Rework the s390 trampoline code to use
11338         the arch independent trampoline code in mini-trampolines.c.
11339
11340         * mini-arm.c (mono_arch_emit_prolog): Fix build.
11341
11342 2008-01-24  Zoltan Varga  <vargaz@gmail.com>
11343
11344         * mini-sparc.c (mono_arch_output_basic_block): Remove some unecessary code.
11345
11346         * mini-s390.c (mono_arch_emit_prolog): Fix build.
11347
11348         * mini-s390x.c (mono_arch_emit_prolog): Fix build.
11349
11350         * mini-ppc.c (mono_arch_emit_prolog): Fix build.
11351
11352         * cpu-amd64.md: Use smaller sizes for int opcodes.
11353
11354         * *.c: Get rid of the NOT_IMPLEMENTED define which is now in mini.h.
11355
11356         * *.cs: Add some tests from the linear-ir branch. Move structs tests to 
11357         objects.cs.
11358
11359         * driver.c (mono_main): Add a --break-at-bb command line argument for JIT
11360         debugging.
11361
11362         * mini.h *.c: Change cfg->vars to contain the MonoMethodVar entries directly
11363         instead of though a pointer to save an indirection when accessing elements of
11364         the array.
11365
11366         * mini.h (MONO_IS_COND_BRANCH_OP): Move these macros here from mini.c. Fix
11367         some typos.
11368         (NOT_IMPLEMENTED): New helper macro.
11369         (MONO_BB_FOR_EACH_INS): New helper macro to iterate through the instructions
11370         of a bb.
11371
11372         * *.c: Use the new helper macro.
11373
11374 2008-01-21  Zoltan Varga  <vargaz@gmail.com>
11375
11376         * mini-x86.h (MONO_ARCH_AOT_SUPPORTED): Disable AOT for apple x86.
11377
11378 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
11379
11380         * mini-amd64.c (mono_arch_emit_prolog): Optimize the omit fp case to save two
11381         stack slots.
11382
11383 2008-01-18  Zoltan Varga  <vargaz@gmail.com>
11384
11385         * mini-amd64.c (mono_arch_emit_prolog): Disable the new optimization if
11386         profiling is enabled.
11387         
11388         * mini-amd64.c (mono_arch_call_opcode): Emit the save_sp_to_lmf instruction at
11389         the end.
11390         (mono_arch_emit_prolog): Add more first bblock optimizations.
11391
11392         * mini-amd64.c (mono_arch_call_opcode): Keep assignments to the arg registers
11393         in order if possible.
11394         (mono_arch_emit_prolog): Optimize assignments to arg registers in the first
11395         bblock, since the arguments are still in their original registers.
11396
11397         * mini.c (type_from_op): Calling add.ovf on floats is not valid IL code.
11398
11399 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
11400
11401         * mini.c (mono_method_to_ir): Use the no-spilling optimization for CEE_CALLI
11402         as well.
11403
11404         * mini-amd64.c (mono_arch_emit_prolog): Save an instruction if the LMF is at
11405         offset 0.
11406
11407         * mini-amd64.h (MONO_ARCH_HAVE_NOTIFY_PENDING_EXC): Turn on this for amd64.
11408
11409         * exceptions-amd64.c (mono_arch_notify_pending_exc): New function to 
11410         process async exceptions received while in unmanaged code.
11411
11412         * mini.c (mini_init): Install a callback with the runtime which will be called
11413         when a thread receives an async exception while in unmanaged code.
11414
11415         * mini.c driver.c: Update after mono_get_native_wrapper () signature change.
11416
11417         * mini-s390x.c (mono_arch_output_basic_block): Fix s390x build.
11418
11419 2008-01-16  Wade Berrier  <wberrier@novell.com>
11420
11421         * cpu-g4.md:
11422         * cpu-arm.md:
11423         * cpu-s390x.md:
11424         fix build
11425
11426 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
11427
11428         * mini-x86.c (mono_arch_output_basic_block): Remove some gccism which prevents
11429         compilation with sun cc.
11430
11431         * cpu-*.md: Fix the build.
11432
11433         * cpu-x86.md: Fix the length of some load membase opcodes. Fixes #354241.
11434
11435         * mini-amd64.h: Add some comments to the MonoLMF structure.
11436
11437         * mini-ops.h cpu-amd64.c: Add a OP_AMD64_SAVE_SP_TO_LMF opcode.
11438         
11439         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Avoid setting the rip field
11440         in the LMF structure if possible. This saves two instructions in the
11441         managed->native wrappers.
11442
11443         * mini-ops.h *.md: Make some opcodes names uniform by removing the op_ prefix.
11444
11445 2008-01-16  Mark Probst  <mark.probst@gmail.com>
11446
11447         * generic-sharing.c: New type argument lookup code which uses the
11448         runtime generic context template.
11449
11450 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
11451
11452         * mini.c (mono_method_to_ir): Avoid emitting a write barrier when storing NULL.
11453
11454         * mini-arm.c (add_general): Fix arm eabi parameter passing.
11455         (mono_arch_output_basic_block): Fix localloc implementation.
11456
11457         * mini-amd64.c (peephole_pass): Sync store+load optimizations with the x86 version.
11458
11459         * mini-ia64.c (peephole_pass): Fix ia64 build.
11460
11461         * mini-amd64.c (peephole_pass): Fix a warning.
11462         
11463         * mini-amd64.c (mono_arch_allocate_vars): Make sure the LMF is always stored
11464         at a constant offset from sp/fp.
11465
11466         * exceptions-amd64.c (mono_arch_find_jit_info): Compute the LMF address from fp/sp
11467         instead of obtaining it from *lmf in the managed method case.
11468
11469 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
11470
11471         * exceptions-amd64.c (mono_arch_find_jit_info): Remove some duplicate code.
11472
11473 Mon Jan 14 12:33:06 CET 2008  David S. Miller  <davem@davemloft.net>
11474
11475         * mini.h (MonoInstList): New type.
11476         (MONO_INST_LIST_INIT, MONO_INST_LIST_EMPTY,
11477         __MONO_INST_LIST_ADD, MONO_INST_LIST_ADD,
11478         MONO_INST_LIST_ADD_TAIL, __MONO_INST_LIST_DEL,
11479         __MONO_INST_LIST_SPLICE, MONO_INST_LIST_SPLICE,
11480         MONO_INST_LIST_SPLICE_TAIL, MONO_INST_LIST_SPLICE_INIST,
11481         MONO_INST_LIST_SPLICE_TAIL_INIT, mono_container_of,
11482         MONO_INST_LIST_ENTRY, MONO_INST_LIST_FIRST_ENTRY,
11483         MONO_INST_LIST_LAST_ENTRY, MONO_INST_LIST_FOR_EACH,
11484         MONO_INST_LIST_FOR_EACH_PREV, MONO_INST_LIST_FOR_EACH_SAFE,
11485         MONO_INST_LIST_FOR_EACH_PREV_SAFE,
11486         MONO_INST_LIST_FOR_EACH_ENTRY,
11487         MONO_INST_LIST_FOR_EACH_ENTRY_REVERSE,
11488         MONO_INST_LIST_FOR_EACH_ENTRY_SAFE,
11489         mono_inst_list_first, mono_inst_list_last,
11490         mono_inst_list_next, mono_inst_list_prev): New instruction
11491         list handling interfaces.
11492         (MonoBasicBlock): Remove 'last_ins' and 'code', replace with
11493         list head 'ins_list'.
11494         (MonoInst): Replace next pointer with list head 'node'.
11495         (MonoCallInst): Make 'out_args' a MonoInstList.
11496         (MONO_INST_NEW_CALL): Explicitly init ->out_args.
11497         (MonoCompile): Delete reverse_inst_list and
11498         reverse_inst_list_len.
11499         * mini-hppa.c (mono_arch_call_opcode, NEW_INS,
11500         mono_arch_lowering_pass, mono_arch_local_regalloc,
11501         mono_arch_output_basic_block, mono_arch_emit_prolog):
11502         Convert to new instruction lists.
11503         (insert_after_ins): Delete.
11504         * inssel.brg (MONO_EMIT_NEW_BRANCH_BLOCK): Convert to new
11505         instruction lists.
11506         * mini-hppa.h (MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Likewise.
11507         * mini.c (NEW_BBLOCK, ADD_BBLOCK, CHECK_BBLOCK,
11508         split_bblock, mono_add_ins_to_end, mono_emit_call_args,
11509         mono_emulate_opcode, mono_emit_load_got_addr,
11510         inline_method, mono_method_to_ir, mono_print_bb_code,
11511         print_dfn, decompose_pass, nullify_basic_block,
11512         replace_out_block_in_code, remove_block_if_useless,
11513         merge_basic_blocks, move_basic_block_to_end,
11514         try_unsigned_compare, optimize_branches, mono_print_code,
11515         mini_select_instructions, remove_critical_edges): Likewise.
11516         * mini-amd64.c (emit_sig_cookie, mono_arch_call_opcode,
11517         peephole_pass_1, peephole_pass, mono_arch_lowering_pass,
11518         mono_arch_output_basic_block, mono_arch_emit_prolog):
11519         Likewise.
11520         * mini-mips.c (mono_arch_call_opcode, peephole_pass,
11521         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
11522         mono_arch_output_basic_block): Likewise.
11523         (inst_list_prepend, insert_after_ins): Delete.
11524         * mini-mips.h (MONO_EMIT_NEW_BRANCH_NONZERO_LABEL,
11525         MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Convert to new
11526         instruction lists.
11527         * mini-x86.c (emit_sig_cookie, mono_arch_call_opcode,
11528         peephole_pass_1, peephole_pass, mono_arch_output_basic_block,
11529         mono_arch_emit_prolog): Likewise.
11530         * cfold.c (mono_constant_fold): Likewise.
11531         * liveness.c (visit_bb, mono_analyze_liveness,
11532         optimize_initlocals): Likewise.
11533         * ssapre.c (dump_code, process_bb, code_motion): Likewise.
11534         * graph.c (mono_draw_code_cfg): Likewise.
11535         * ssa.c (mono_ssa_rename_vars, mono_ssa_compute,
11536         mono_ssa_remove, mono_ssa_avoid_copies, mono_ssa_create_def_use,
11537         mono_ssa_cprop): Likewise.
11538         * abcremoval (get_relations_from_previous_bb, process_block):
11539         Likewise.
11540         * local-propagation (mono_cprop_invalidate_values,
11541         mono_local_cprop_bb): Likewise.
11542         * mini-s390x.c (mono_arch_call_opcode, emit_sig_cookie,
11543         peephole_pass, mono_arch_output_basic_block,
11544         mono_arch_emit_prolog): Likewise.
11545         * mini-arm.c (mono_arch_call_opcode, peephole_pass,
11546         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
11547         mono_arch_emit_prolog): Likewise.
11548         (insert_after_ins): Delete.
11549         * aliasing.c (print_code_with_aliasing_information,
11550         mono_build_aliasing_information, mono_aliasing_deadce):
11551         Convert to new instruction lists.
11552         * mini-ia64.c (emit_sig_cookie, mono_arch_call_opcode,
11553         peephole_pass, NEW_INS, mono_arch_lowering_pass,
11554         mono_arch_local_regalloc, mono_arch_output_basic_block):
11555         Likewise.
11556         (insert_after_ins): Delete.
11557         * mini-sparc.c (emit_sig_cookie, mono_arch_call_opcode,
11558         peephole_pass, mono_arch_output_basic_block): Convert to
11559         new instruction lists.
11560         * mini-codegen (InstList, inst_list_prepend,
11561         insert_after_ins): Delete.
11562         (insert_before_ins, get_register_force_spilling,
11563         get_register_spilling, free_up_ireg, free_up_reg,
11564         create_copy_ins, create_spilled_store, alloc_int_reg,
11565         alloc_float_reg, alloc_reg, mono_local_regalloc): Convert
11566         to new instruction lists.
11567         * mini-ppc.c (mono_arch_call_opcode, peephole_pass,
11568         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
11569         mono_arch_output_basic_block, mono_arch_emit_prolog): Likewise.
11570         (insert_after_ins): Delete.
11571         * mini-alpha.c (NEW_INS, peephole_pass, mono_arch_lowering_pass,
11572         mono_arch_local_regalloc, mono_arch_output_basic_block,
11573         mono_arch_call_opcode): Convert to new instruction lists.
11574         (insert_after_ins): Delete.
11575         * mini-s390.c (mono_arch_call_opcode, emit_sig_cookie,
11576         peephole_pass, mono_arch_output_basic_block,
11577         mono_arch_emit_prolog): Convert to new instruction lists.
11578
11579 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
11580
11581         * mini-amd64.c (mono_arch_output_basic_block): Use a 4 byte load in OP_CHECK_THIS.
11582
11583         * mini-sparc.c (mono_arch_output_basic_block): Use a byte load in CHECK_THIS.
11584         Fixes #353182.
11585
11586         * Makefile.am (version.h): Make this work with non-bash shells.
11587
11588 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
11589
11590         * mini.c (handle_delegate_ctor): Optimize away setting of NULL target.
11591
11592 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
11593
11594         * mini.c (mono_method_to_ir): Fix possible reading of invalid memory in 
11595         the InitializeArray optimization.
11596
11597 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
11598
11599         * mini.c driver.c: Don't include os/gc_wrapper.h.
11600
11601 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
11602
11603         * mini.c (print_jit_stats): Print GC statistics if available.
11604
11605 2008-01-04  Zoltan Varga  <vargaz@gmail.com>
11606
11607         * mini-amd64.c (mono_arch_allocate_vars): Align argument storage offsets to 8.
11608
11609 2007-12-29  Zoltan Varga  <vargaz@gmail.com>
11610
11611         * mini-ppc.c (mono_arch_get_delegate_invoke_impl): Fix flushing of icache.
11612
11613 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
11614
11615         * mini.c (mini_init): Move the setting of GC_stackbottom to mono_gc_base_init ().
11616         
11617         * mini.c (mini_init): Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
11618
11619         * driver.c (mono_main): Ditto.
11620
11621 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
11622
11623         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_delegate_invoke ().
11624
11625         * aot-compiler.c (emit_klass_info): Avoid emitting info if one of the methods
11626         in the vtable can't be encoded.
11627         (compile_method): Ditto.
11628
11629 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
11630
11631         * mini.c (setup_jit_tls_data): Use the MONO_ARCH_INIT_TOP_LMF_ENTRY macro if
11632         defined.
11633
11634         * mini-amd64.h mini-amd64.c exceptions-amd64.c tramp-amd64.c: Rename lmf->ebp to 
11635         lmf->rbp.
11636
11637         * exceptions-amd64.c (mono_arch_find_jit_info): Fix the detection of whenever
11638         the top LMF entry belongs to the current method.
11639
11640         * mini.c: Update after renaming of mono_thread_get_pending_exception ().
11641
11642 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
11643
11644         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix a warning.
11645         
11646         * tramp-ia64.c (mono_arch_create_trampoline_code): Ditto.
11647
11648         * tramp-sparc.c (mono_arch_create_trampoline_code): Check for thread interruption.
11649
11650         * tramp-amd64.c (mono_arch_create_trampoline_code): Ditto.
11651
11652         * tramp-x86.c (mono_arch_create_trampoline_code): Check for thread interruption.
11653
11654         * cpu-amd64.md mini-amd64.h mini-amd64.c inssel-amd64.brg: Add ulong->double 
11655         implementation.
11656
11657         * basic-float.cs: Add an ulong->double cast test.
11658
11659 2007-12-15  Zoltan Varga  <vargaz@gmail.com>
11660
11661         * mini.c (mono_method_to_ir): Fix a warning.
11662
11663 2007-12-14  Zoltan Varga  <vargaz@gmail.com>
11664
11665         * mini-ops.h: Add OP_SWITCH.
11666
11667         * mini.c graph.c ssa.c aliasing.c mini-<ARCH>.c inssel-<ARCH>.brg: Avoid using
11668         CEE_SWITCH in back-end code, use OP_SWITCH instead.
11669
11670 2007-12-11  Geoff Norton  <gnorton@novell.com>
11671
11672         * mini-s390x.c: Minor change to the MAX() define to allow
11673         it to compile with other gcc versions.
11674
11675 2007-12-11  Geoff Norton  <gnorton@novell.com>
11676
11677         * cpu-s390x.md:
11678         * mini-s390x.c: Implement sext_i4 to fix the build on s390x
11679
11680 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
11681
11682         exceptions-arm.c (mono_arch_get_restore_context): Restore
11683         the frame pointer.
11684
11685         exceptions-arm.c (throw_exception): Save the frame pointer.
11686         This is a partial fix for #323747. Only the client side is
11687         fixed.
11688
11689 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
11690
11691         * mini.c (mono_method_to_ir): Verbose message in CEE_NEWOBJ
11692         was using an unrelated variable to log the class which
11693         needed the cctor to be called. This was crashing on arm.
11694
11695 2007-12-09  Robert Jordan  <robertj@gmx.net>
11696
11697         * mini-x86.c (mono_arch_emit_epilog):
11698         Consider all kinds of 64-bit types. Fixes #323114.
11699
11700 2007-12-08  Zoltan Varga  <vargaz@gmail.com>
11701
11702         * tramp-amd64.c (mono_arch_create_trampoline_code): Clean up the code a bit.
11703
11704 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
11705
11706         * mini-amd64.c (peephole_pass): Add a missing instruction check.
11707
11708 Fri Dec 7 22:08:23 CET 2007 Paolo Molaro <lupus@ximian.com>
11709
11710         * mini.c: run type ctor before allocating an object, not only
11711         when running it's constructor method (fixes at least part of bug #342507).
11712
11713 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
11714         
11715         * mini-trampolines.c (mono_delegate_trampoline): Fix a warning.
11716         
11717         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove a debug printf.
11718         * mini.h mini-amd64.c mini-x86.c: Get rid of the mono_arch_find_vtable () 
11719         function.
11720
11721         * tramp-x86.c tramp-amd64.c mini-trampolines.c: Pass the vtable argument to
11722         mono_generic_class_init_trampoline () the same as it is done with the other
11723         trampolines.
11724
11725         * mini-arm.h mini-arm.c tramp-arm.c inssel-arm.brg cpu-arm.md 
11726         aot-runtime.c aot-compiler.c: Implement AOT support.    
11727
11728 2007-12-07  Mark Probst  <mark.probst@gmail.com>
11729
11730         * mini-trampolines.c (mono_generic_class_init_trampoline): Fixed
11731         build for archs which don't have the vtable trampoline defined
11732         yet.
11733
11734 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
11735
11736         * tramp-x86.c (mono_arch_create_trampoline_code): Fix the build.
11737
11738         * tramp-ppc.c (mono_arch_create_trampoline_code): Use the new helper function.
11739
11740         * mini-trampolines.c (mono_get_trampoline_func): New helper function.
11741
11742         * tramp-<ARCH>.c: Use the new helper function.
11743
11744 2007-12-07  Mark Probst  <mark.probst@gmail.com>
11745
11746         * inssel.brg: Added a pattern for the OP_TRAMPCALL_VTABLE
11747         trampoline call, which takes a vtable argument.
11748
11749         * graph.c, mini-ops.h, local-propagation.c, aliasing.c: Treat
11750         OP_TRAMPCALL_VTABLEs like other calls.
11751
11752         * mini-amd64.c, mini-amd64.h, mini-x86.c, mini-x86.h: Designated a
11753         register to hold the vtable argument to the OP_TRAMPCALL_VTABLE
11754         call.  Implemented a support function which fetches the vtable
11755         from a register set.
11756
11757         * mini.c, mini.h, tramp-amd64.c, tramp-x86.c, mini-trampolines.c:
11758         Implemented a generic class init trampoline, using the
11759         OP_TRAMPCALL_VTABLE opcode.
11760
11761         * mini.c: Implemented static field access when sharing generic
11762         code.  This implies initing the class using the new
11763         OP_TRAMPCALL_VTABLE call.
11764
11765 2007-12-07  Mark Probst  <mark.probst@gmail.com>
11766
11767         * mini.c: Don't compile methods with sharing enabled if their
11768         classes are disabled for sharing.
11769
11770 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
11771
11772         * inssel.brg: Add a missing sign extension to the GETCHR and array access
11773         opcodes. Fixes #346563.
11774
11775         * objects.cs: Add a new test.
11776
11777         * aot-compiler.c (emit_method_code): Put back an #ifdef which is needed.
11778
11779         * mini-<ARCH>.h mini.c aot-compiler.c aot-runtime.c: Get rid of the
11780         HAVE_PIC_AOT define and use AOT_SUPPORTED instead.
11781
11782 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
11783
11784         * mini-arm.h mini-arm.c: Add support for the common vtable trampoline.
11785
11786 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
11787
11788         * mini-arm.c (mono_arch_emit_exceptions): Avoid uninitialized memory in the
11789         code stream.
11790
11791 2007-12-02  Zoltan Varga  <vargaz@gmail.com>
11792
11793         * patch-info.h (PATCH_INFO): Add DELEGATE_TRAMPOLINE.
11794
11795         * mini.c aot-compiler.c aot-runtime.c: Implement the delegate creation 
11796         optimization in the AOT case.
11797         
11798 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
11799
11800         * aot-runtime (mono_aot_get_method_from_vt_slot): Add support for multi-byte method ref encodings.
11801         
11802         * aot-runtime.c (decode_klass_ref): Implement decoding of generic instances.
11803
11804         * aot-compiler.c (encode_klass_ref): Implement proper encoding of generic instances.
11805
11806         * mini.c (mono_method_to_ir): Optimize the common ldftn+create delegate combination.
11807
11808         * mini-trampolines.c (mono_delegate_trampoline): Add some code to handle the case when the delegate
11809         is created by the inlined delegate ctor.
11810
11811         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.  
11812
11813         * mini.c (mono_jit_compile_method_inner): Replace calls to delegate invoke with the trampoline here too.
11814
11815 2007-11-29  Zoltan Varga  <vargaz@gmail.com>
11816
11817         * cpu-x86.md: Fix the length of ckfinite.
11818
11819 2007-11-28  Zoltan Varga  <vargaz@gmail.com>
11820
11821         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.
11822         
11823         * mini-x86.c (mono_arch_output_basic_block): Clean up the fp stack properly in CKFINITE.
11824         (mono_arch_output_basic_block): Get rid of unused last_ins and last_offset.
11825
11826         * mini-x86.c (mono_arch_output_basic_block): Add some micro optimizations.
11827
11828         * mini-x86.c inssel-x86.brg cpu-x86.md: Move the implementation of the 
11829         OP_START_HANDLER/OP_ENDFINALLY/OP_ENDFILTER opcodes to mini-x86.c.
11830
11831 2007-11-28  Martin Baulig  <martin@ximian.com>
11832
11833         * mini-x86.c
11834         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline()
11835         after creating the trampoline.
11836
11837 2007-11-27  Zoltan Varga  <vargaz@gmail.com>
11838
11839         * aot-runtime.c (load_aot_module): Check runtime version if needed.
11840
11841         * aot-compiler.c: Add bind-to-runtime-version for producing AOT files which only load into a runtime with
11842         the same version.
11843
11844         * generic-sharing.c (mono_helper_get_rgctx_other_ptr): Change the signature to take the calling class
11845         instead of the calling method to help AOT.
11846
11847         * mini.c (get_runtime_generic_context_other_ptr): Update after the change.
11848
11849 2007-11-26  Zoltan Varga  <vargaz@gmail.com>
11850
11851         * aot-runtime.c (mono_aot_init_vtable): Simplify this if MONO_ARCH_COMMON_VTABLE_TRAMPOLINE
11852         is defined.
11853
11854 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
11855
11856         * aot-compiler.c (emit_class_name_table): Properly encode generic class names.
11857         
11858         * aot-compiler.c (compile_method): Correct check for generic method definitions.
11859         (encode_method_ref): No need to handle generic method definitions specially.
11860
11861         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
11862
11863         * aot-runtime.c (decode_klass_ref): Clean this up and rename from 
11864         decode_klass_info.
11865
11866         * aot-compiler.c (encode_klass_ref): Clean this up and rename from
11867         encode_klass_info.
11868         (compile_method): Enable generic sharing.
11869
11870 2007-11-22  Zoltan Varga  <vargaz@gmail.com>
11871
11872         * mini.c (get_runtime_generic_context_other_ptr): Disable AOT here.
11873         (mini_method_compile): Add preliminary support for AOTing shared generic code.
11874
11875         * aot-compiler.c (compile_method): Add preliminary support for AOTing shared
11876         generic code.
11877
11878         * mini-trampolines.c: Fix a warning.
11879
11880         * mini.c (get_runtime_generic_context_other_ptr): Use NEW_METHODCONST instead of
11881         NEW_PCONST.
11882         (mono_method_to_ir): Use NEW_DOMAINCONST in one place.
11883         (generic_class_is_reference_type): Remove unused function.
11884
11885         * mini-trampolines.c (mono_magic_trampoline): Avoid loading metadata if possible
11886         in the generic vtable trampoline case.
11887
11888         * aot-runtime.c (mono_aot_init_vtable): Use the generic vtable trampoline.
11889         
11890         * aot-runtime.c (mono_aot_get_method_from_vt_slot): New helper function to
11891         return an AOT method based on a vtable slot.
11892
11893         * aot-compiler.c (compile_method): Avoid AOTing synchronized methods for now.
11894
11895         * mini.c (mini_get_vtable_trampoline): Export this.
11896
11897 2007-11-22  Martin Baulig  <martin@ximian.com>
11898
11899         * debug-debugger.h
11900         (MonoDebuggerInfo): Move `debugger_version' up.
11901
11902 2007-11-22  Martin Baulig  <martin@ximian.com>
11903
11904         * mini-amd64.c
11905         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline().
11906
11907         * mini-trampolines.c
11908         (mono_delegate_trampoline): Call mono_debugger_trampoline_compiled()
11909         after compiling the method.
11910
11911 2007-11-20  Martin Baulig  <martin@ximian.com>
11912
11913         * debug-mini.c
11914         (mono_debugger_insert_method_breakpoint): Moved into mono-debug-debugger.c.
11915         (mono_debugger_remove_breakpoint): Likewise.
11916         (mono_debugger_check_breakpoints): Likewise.
11917
11918         * debug-debugger.c: Implement the new breakpoint interface here.
11919
11920 2007-11-18  Zoltan Varga  <vargaz@gmail.com>
11921
11922         * mini-amd64.c (mono_arch_output_basic_block): Unify the implementation of
11923         CEE_CONV_I1/SEXT_I1 and I2 since they are the same.
11924
11925         * mini-x86.c (mono_arch_output_basic_block): Ditto.     
11926
11927 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
11928
11929         * mini-amd64.c (mono_arch_output_basic_block): Fix a typo.
11930
11931         * mini-x86.c (mono_arch_get_inst_for_method): Remove code which is now in
11932         mini.c.
11933
11934         * mini-ia64.c (mono_arch_get_inst_for_method): Remove code which is now in
11935         mini.c.
11936
11937         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for methods
11938         returning a vtype in a register.
11939
11940         * mini.c (mini_get_inst_for_method): Move the handling of the atomic operations
11941         here from the arch specific code.
11942
11943         * mini-amd64.c (mono_arch_get_inst_for_method): Remove code which is now in
11944         mini.c.
11945
11946         * mini-amd64.c (mono_arch_output_basic_block): Add some micro optimizations.
11947         (mono_arch_emit_prolog): Increment maximum prolog size.
11948
11949         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Move the implementation of the
11950         START_HANDLER/ENDFINALLY/ENDFILTER opcodes to mini-amd64.c.
11951
11952         * mini-x86.c (get_call_info): Receive a MonoCompile instead of a 
11953         MonoGenericSharingContext.
11954
11955         * mini-ia64.c (get_call_info): Receive a MonoCompile instead of a 
11956         MonoGenericSharingContext. Allocate memory from the cfg mempool.
11957
11958 2007-11-15  Mark Probst  <mark.probst@gmail.com>
11959
11960         * mini.c, mini.h, generic-sharing.c: Functions for producing code
11961         which extract fields out of the runtime generic context.  Full
11962         sharing of the NEWARR opcode.
11963
11964 Thu Nov 15 14:20:21 CET 2007 Paolo Molaro <lupus@ximian.com>
11965
11966         * abcremoval.c, mini.c, ssa.c, ssapre.c: updated to implement
11967         --enable-minimal=ssa.
11968
11969 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
11970
11971         * mini-trampolines.c (mono_delegate_trampoline): Update after 
11972         mono_marshal_get_delegate_invoke () signature change.
11973
11974 2007-11-13  Mark Probst  <mark.probst@gmail.com>
11975
11976         * mini.c: Removed the shared context in favor of the generic
11977         sharing context.  Allocate the MonoJitInfo structure with room for
11978         the generic sharing context if it's needed.
11979
11980         * mini.h: Remove MonoGenericSharingContext declaration.  It's in
11981         domain-internals.h now.
11982
11983         * mini-x86.c: Pass the generic sharing context to get_call_info ().
11984
11985         * generic-sharing.c: Several changes for working without a shared
11986         context and instead operating on open types instead.
11987
11988 2007-11-12  David S. Miller  <davem@davemloft.net>
11989
11990        * inssel-sparc.brg: Fix double instruction emit.
11991
11992 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
11993
11994         * mini.c (mono_jit_runtime_invoke): Avoid trying to compile the Array 
11995         Get/Set/Address methods.
11996         
11997         * mini.c debug-debugger.c mini-trampolines.c: Update after 
11998         mono_marshal_get_delegate_invoke signature change.
11999
12000 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
12001
12002         * cpu-arm.md: Increase the max size of OP_THROW to 24 bytes.
12003         This can happens with dynamic methods. Fixes the other bug in #322722.
12004
12005 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
12006
12007         * tramp-arm.c (mono_arch_patch_callsite): Support patching
12008         BX call sequence.
12009
12010         * mini-arm.c (arm_patch): Implement patching of BX call
12011         sequence. Fixes one of the bugs in #322722.
12012
12013 2007-11-03  David S. Miller  <davem@huronp11.davemloft.net>
12014
12015        * mini-sparc.c (mono_arch_flush_icache): Make more efficient
12016        under Linux.  We only need to flush every 32-byte cache line.    
12017
12018 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
12019
12020         * mini.c:
12021         move_basic_block_to_end: Add branches when needed, eventually creating
12022         a new BB.
12023         optimize_branches: added a parameter that tells if it's ok to create
12024         new BBs (doing is "df_visit" has been called is (IMHO) a nightmare),
12025         and avoid calling move_basic_block_to_end when it's not ok.
12026         Fixes bug 318677.
12027
12028 2007-11-07  Mark Probst  <mark.probst@gmail.com>
12029
12030         * mini.c: Abort inlining call to InitializeArray if something
12031         looks wrong.  Let the icall handle it, which now has proper safety
12032         checks.
12033
12034 2007-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
12035
12036         * mini.c (mono_spill_call): add support for soft-float.
12037
12038         * mini.c (mono_method_to_ir): add support for soft-float
12039         to inlined functions that return float.
12040
12041         * mini.c (mono_method_to_ir): add support for soft-float
12042         to cee_stsfld opcode on float fields.
12043
12044 2007-11-05  Geoff Norton  <gnorton@novell.com>
12045
12046         * mini-x86.h: Fix the structure access for X86 Leopard.
12047
12048
12049 2007-11-05  Martin Baulig  <martin@ximian.com>
12050
12051         * mini-trampolines.c
12052         (mono_magic_trampoline): Call mono_debugger_trampoline_compiled()
12053         after compiling the method to notify the debugger.
12054
12055 2007-11-05  Martin Baulig  <martin@ximian.com>
12056
12057         * debug-debugger.h (MonoDebuggerInfo): Use the new breakpoint tables.
12058
12059 2007-11-02  Zoltan Varga  <vargaz@gmail.com>
12060
12061         * mini-sparc.c (EMIT_COND_SYSTEM_EXCEPTION_GENERAL): Applied patch from
12062         David Miller <davem@davemloft.net>. Allow larger offsets in branches.
12063
12064 2007-11-01  Zoltan Varga  <vargaz@gmail.com>
12065
12066         * mini-amd64.c (mono_arch_emit_prolog): Check the domain as well for
12067         native-to-managed wrappers.
12068         
12069 2007-11-01  Geoff Norton  <gnorton@novell.com>
12070
12071         * mini-ppc.h, mini-x86.h:  Handle Leopards renaming of some structure 
12072         members.
12073
12074 Wed Oct 31 20:23:14 CET 2007 Paolo Molaro <lupus@ximian.com>
12075
12076         * mini.c, mini-x86.c: when getting back from unmanaged code
12077         to managed via a marshaled delegate we also need to set the
12078         right domain.
12079
12080 Wed Oct 31 19:53:33 CET 2007 Paolo Molaro <lupus@ximian.com>
12081
12082         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: breakpoint table support
12083         for amd64.
12084
12085 Wed Oct 31 19:29:30 CET 2007 Paolo Molaro <lupus@ximian.com>
12086
12087         * mini.c, mini.h, mini-x86, tramp-x86.c, mini-x86.h: added API to
12088         let the debugger or other external agents to tell the JIT when
12089         a sw breakpoint has been inserted in the code that the JIT needs
12090         to be able to inspect.
12091
12092 2007-10-31  Martin Baulig  <martin@ximian.com>
12093
12094         * debug-debugger.h
12095         (MonoDebuggerInfo): Remove `runtime_class_init'.
12096
12097 2007-10-30  Martin Baulig  <martin@ximian.com>
12098
12099         * debug-mini.h
12100         (mono_debugger_thread_created): Added `MonoThread *' argument.
12101         (mono_debugger_extended_notification): New public method.
12102         (mono_debugger_trampoline_compiled): New public method.
12103
12104         * debug-mini.c
12105         (MonoDebuggerThreadInfo): Added `thread' and
12106         `extended_notifications' fields.
12107
12108         * debug-debugger.c
12109         (debugger_executable_code_buffer): New static variable.
12110
12111         * debug-debugger.h
12112         (MonoDebuggerInfo): Added `executable_code_buffer',
12113         `executable_code_buffer_size', `breakpoint_info_area',
12114         `breakpoint_table' and `breakpoint_table_size'.
12115
12116 2007-10-26  Rodrigo Kumpera  <rkumpera@novell.com>
12117
12118         * mini-arm.c (mono_arch_build_imt_thunk): Take the advantage
12119         that IP  either is an unused value or the vtable pointer. IMT 
12120         calls use vtable + offset now. Reduced by almost half the size
12121         of IMT entries.
12122
12123 2007-10-26  Jonathan Chambers <joncham@gmail.com>
12124
12125         * mini-amd64.c: Begin Win64 port. Use AMD64_ARG_REG#
12126         defines to access param registers. Replace long usage with
12127         gsize as sizeof(long) != sizeof(void*) on Win64.
12128
12129         * mini-amd64.h: Add %rdi and %rsi to MonoLMF structure
12130         on Win64. Fix intrinsic, use _AddressOfReturnAddress
12131         instead of non-existant _GetAddressOfReturnAddress.
12132
12133         * tramp-amd64.c: Use AMD64_ARG_REG#     defines to access 
12134         param registers. Save/restore %rdi and %rsi in MonoLMF.
12135
12136         * exceptions-amd64.c: Use AMD64_ARG_REG# defines to access 
12137         param registers. Modify (throw_exception) signature to take 
12138         %rdi and %rsi on Win64. 
12139
12140         Code is contributed under MIT/X11 license.
12141
12142 Thu Oct 25 23:06:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
12143
12144         * helpers.c: unlink debugging output files.
12145
12146 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
12147
12148         * mini.c: Move mono_create_ftnptr () to object.c.
12149
12150 2007-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
12151
12152         * helpers.c (mono_disassemble_code): MonoCompile parameter is now
12153         optional. This function can now be used to disassemble code generated
12154         outside the JIT such as trampolines and IMT thunks.
12155
12156         * mini-arm.h: defined MONO_ARCH_HAVE_IMT.
12157
12158         * mini-arm.c (decode_vcall_slot_from_ldr): added, extract the
12159         vtable pointer from a ldr instruction.
12160
12161         * mini-arm.c (mono_arch_get_vcall_slot_addr): support the
12162         new IMT call sequence.
12163
12164         * mini-arm.c (mono_arch_output_basic_block): emit the IMT
12165         call sequence for interface invocations.
12166
12167         * mini-arm.c (mono_arch_emit_imt_argument): added, required
12168         for imt support. This function is empty since IMT on ARM requires no
12169         special handling on the IR side.
12170
12171         * mini-arm.c (mono_arch_find_imt_method): added, required for
12172         imt support.
12173
12174         * mini-arm.c (mono_arch_find_this_argument): added, required
12175         for imt support.
12176
12177         * mini-arm.c (arm_emit_value_and_patch_ldr): added, patches
12178         a ldr instruction to load a value stored in the code stream.
12179
12180         * mini-arm.c (mono_arch_build_imt_thunk):added, required
12181         for imt support.
12182
12183
12184 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
12185
12186         * mini.c (mini_init): Install the jump trampoline callback.
12187
12188 Tue Oct 23 17:07:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
12189
12190         * mini-trampolines.c: handle synchronized methods with the common
12191         vtable trampoline (bug #335601).
12192
12193 2007-10-17  Zoltan Varga  <vargaz@gmail.com>
12194
12195         * mini-ia64.h mini-amd64.c: Add support for the common vtable trampoline.
12196
12197         * inssel.brg (mini_emit_virtual_call): Fix the computation of ins->inst_offset on
12198         64 bit platforms.
12199
12200         * mini-ia64.h mini-ia64.c: Add support for IMT.
12201
12202         * mini-x86.c (mono_arch_emit_prolog): Increase the size allocated for the
12203         prolog. Fixes #331958.
12204
12205 2007-10-15  Zoltan Varga  <vargaz@gmail.com>
12206
12207         * mini-sparc.h mini-sparc.c: Add support for the common vtable trampoline.
12208
12209 Mon Oct 15 11:18:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
12210
12211         * mini-ppc.c, mini-ppc.h: ppc support for the common vtable
12212         trampoline.
12213
12214 Mon Oct 15 10:41:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
12215
12216         * mini-amd64.c, mini-amd64.h: amd64 support for the common vtable
12217         trampoline.
12218
12219 Mon Oct 15 10:39:26 CEST 2007 Paolo Molaro <lupus@ximian.com>
12220
12221         * mini-x86.c, mini-x86.h: x86 support for the common vtable
12222         trampoline.
12223
12224 Mon Oct 15 10:37:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
12225
12226         * mini-trampolines.c: changed the magic rampoline to understand
12227         the common vtable trampoline method: the method to invoke is
12228         determined by the vtable displacement of the call.
12229
12230 Mon Oct 15 10:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
12231
12232         * mini.c, mini.h: register the common vtable trampoline if the
12233         architecture supports it.
12234
12235 Mon Oct 15 09:50:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
12236
12237         * cpu-amd64.md: use the correct max length for tls_get.
12238
12239 2007-10-14  Zoltan Varga  <vargaz@gmail.com>
12240
12241         * mini.c (mono_method_to_ir): Use mini_get_class in CEE_LDELEM_ANY and
12242         CEE_STELEM_ANY. Fixes #333696.
12243
12244 Thu Oct 11 18:04:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
12245
12246         * exceptions-x86.c: provide more graceful handling of the case where
12247         we followed a bogus function pointer from managed code (bug #332866).
12248
12249 2007-10-11  Mark Probst  <mark.probst@gmail.com>
12250
12251         * mini.h, mini.c: Introduced the MonoGenericSharingContext, which
12252         replaces the generic_shared flag and will carry more information
12253         in the future.
12254
12255         * generic-sharing.c: Added mini_type_stack_size() which allows
12256         allows open types if given a generic sharing context.
12257         mini_get_basic_type_from_generic() takes a
12258         MonoGenericSharingContext* instead of a MonoCompile* now.
12259
12260         * mini-alpha.c, mini-amd64.c, mini-arm.c, mini-hppa.c,
12261         mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c, mini-s390x.c,
12262         mini-sparc.c, mini-x86.c: Trivial changes required by the two
12263         changes above.  Just passing arguments through to the right
12264         places.
12265
12266 Wed Oct 10 19:44:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
12267
12268         * mini-arm.c: unify the call emission to emit_code_seq().
12269
12270 Wed Oct 10 13:05:46 CEST 2007 Paolo Molaro <lupus@ximian.com>
12271
12272         * tramp-arm.c: reduced the trampoline size.
12273
12274 2007-10-10  Mark Probst  <mark.probst@gmail.com>
12275
12276         * generic-sharing.c, mini.h, mini-amd64.c, mini-x86.c: Moved type
12277         variable handling out of arch-specific code.
12278
12279 Wed Oct 10 10:49:28 CEST 2007 Paolo Molaro <lupus@ximian.com>
12280
12281         * mini-arm.c: implemented fast delegate dispatch.
12282
12283 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
12284
12285         * mini-amd64.c (mono_arch_compute_omit_fp): Add more checks to ensure
12286         that fp elimination is turned off if the space required by locals is too
12287         big. Fixes #331958.
12288
12289 Tue Oct 9 21:01:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
12290
12291         * Makefile.am, mini-arm.c, mini-arm.h, tramp-arm.c: ported
12292         ARM to the new style trampoline.
12293
12294 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
12295
12296         * tramp-amd64.c: Rework the specific trampoline code to make it smaller.
12297
12298         * mini-amd64.h mini-amd64.c: Export amd64_patch as mono_amd64_patch.
12299
12300 2007-10-09  Martin Baulig  <martin@ximian.com>
12301
12302         * debug-debugger.h
12303         (MonoDebuggerMetadataInfo): Added `field_info_type_offset' and
12304         `field_info_offset_offset'.     
12305
12306 Tue Oct 9 09:47:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
12307
12308         * mini-ppc.c, mini-ppc.h, mini-ops.h, inssel-ppc.brg, cpu-g4.md:
12309         removed more internal usage of the r11 register and made it available
12310         to the register allocator.
12311
12312 2007-10-08  Mark Probst  <mark.probst@gmail.com>
12313
12314         * mini.c, mini-amd64.c, mini-x86.c: Allow open generic contexts
12315         when sharing generics and treat type variables as references.
12316
12317 Mon Oct 8 10:55:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
12318
12319         * mini-ppc.c: started removing the internal uses of register r11
12320         to eventually allow the register allocator to manage it as an
12321         additional available register.
12322
12323 Mon Oct 8 14:25:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
12324
12325         * tramp-amd64.c: fixed memory corruption in the trampoline generation.
12326
12327 Mon Oct 8 12:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
12328
12329         * tramp-ppc.c, tramp-x86.c: reduce the alignment requirements for
12330         specific trampolines as they are not performance critical as a jump
12331         target (maybe align as before only for AOT code?). This saves about
12332         200 KB of native code on x86 for monodevelop startup.
12333
12334 Mon Oct 8 10:04:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
12335
12336         * tramp-ppc.c: reduce the size of the trampolines, saves 160KB on
12337         monodevelop startup.
12338
12339 2007-10-06  Zoltan Varga  <vargaz@gmail.com>
12340
12341         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Allow signed displacements.
12342
12343         * mini-sparc.h mini-sparc.c: Implement IMT support.
12344
12345         * tramp-sparc.c (mono_arch_create_trampoline_code): Rework the trampoline code so
12346         its smaller and doesn't clobber sparc_g1.
12347
12348         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Update after trampoline changes.
12349
12350 Fri Oct 5 18:28:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
12351
12352         * mini-ppc.c: optimized the size of the IMT thunks a bit.
12353
12354 Fri Oct 5 18:08:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
12355
12356         * mini-ppc.c: implemented fast delegate invocation.
12357
12358 Fri Oct 5 00:01:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
12359
12360         * mini-ppc.h, mini-ppc.c: IMT support for the PPC architecture.
12361
12362 Thu Oct 4 22:04:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
12363
12364         * mini-ppc.c, mini-ppc.h, tramp-ppc.c, Makefile.am: port the PPC
12365         code to the new style trampoline in preparation for IMT support.
12366
12367 Thu Oct 4 19:01:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
12368
12369         * mini-ppc.c, tramp-ppc.c: don't use r13 as it's used by the PPC EABI
12370         systems already. This also reduces the specific trampiline sizes and
12371         prepares for the use of r12 as the IMT identifier register.
12372
12373 Thu Oct 4 16:38:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
12374
12375         * mini-mips.h: endianess fix (simplified from a patch by
12376         Thomas Kunze <thommy@tabao.de>, bug #323737).
12377
12378 Thu Oct 4 14:43:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
12379
12380         * exceptions-ppc.c, mini-ppc.h: refactor to use macros
12381         to access ucontext fields and enable netbsd support
12382         (partially from Magnus Henoch <mange@freemail.hu>).
12383
12384 Thu Oct 4 12:35:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
12385
12386         * genmdesc.pl: patch from Henryk Plotz <henryk@openmoko.org> to
12387         use the preprocessor from the CPP env var if it is set.
12388
12389 Wed Oct 3 17:11:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
12390
12391         * mini-trampolines.c: fixed an assertion and moved it earlier in the
12392         code, before interface_offset gets used.
12393
12394 2007-10-02  Zoltan Varga  <vargaz@gmail.com>
12395
12396         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call 
12397         mono_class_setup_vtable () before accessing klass->vtable.
12398
12399 2007-10-01  Zoltan Varga  <vargaz@gmail.com>
12400
12401         * aot-compiler.c (get_plt_index): Rework the handling of wrappers to be not so
12402         hackish.
12403
12404 Mon Oct 1 15:00:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
12405
12406         * mini.c, mini-trampolines.c, mini.h: enable the lazy filling of the
12407         IMT slots (this saves hundreds of KB of memory in programs like
12408         IronPython and Monodevelop).
12409
12410 Mon Oct 1 14:44:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
12411
12412         * mini.c: print the delegate counter.
12413
12414 Mon Oct 1 14:36:50 CEST 2007 Paolo Molaro <lupus@ximian.com>
12415
12416         * mini-x86.c: make it easier to enable the debugging code for IMT
12417         slots.
12418
12419 2007-09-28  Martin Baulig  <martin@ximian.com>
12420
12421         * debug-debugger.h
12422         (MonoDebuggerMetadataInfo): Add `klass_image_offset',
12423         `mono_method_klass_offset' and `mono_method_token_offset'.
12424
12425 2007-09-20  Mark Probst  <mark.probst@gmail.com>
12426
12427         * mini.c: First generics sharing implementation.  Can only share
12428         in very simple cases.  If sharing doesn't work it falls back to
12429         dedicated compilation.
12430
12431         * mini.h: Flag in MonoCompile to specify whether generic
12432         compilation is shared.  Flags enum for marking which generic inst
12433         of a context is used.  Prototypes for helper functions.
12434
12435         * generic-sharing.c: Helper functions for generic method sharing.
12436
12437         * optflags-def.h: Optimization flag (gshared) for enabling generic
12438         method sharing added.
12439
12440         * Makefile.am: generic-sharing.c added.
12441
12442 2007-09-19 Daniel Nauck <dna@mono-project.de>
12443
12444         * mini.c (mono_thread_abort): fixed typo in r86014. It should be '==' instead of '!='.
12445
12446 2007-09-19  Massimiliano Mantione  <massi@ximian.com>
12447         * mini.c (mono_thread_abort): Correctly handle ThreadAbortException,
12448         fixes bug 325507.
12449
12450 2007-09-19  Martin Baulig  <martin@ximian.com>
12451
12452         * mini.c (mini_cleanup): Only call mono_debugger_cleanup() here;
12453         mono_debug_cleanup() is now part of mono_cleanup().
12454
12455 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
12456
12457         * driver.c (mono_main): Fix a warning.
12458
12459 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
12460
12461         * aot-compiler.c: Optimize various parts when processing large assemblies.
12462         Fixes ##325568.
12463
12464         * mini.c (mono_patch_info_hash): Improve hash function.
12465
12466 2007-09-14  Jonathan Chambers <joncham@gmail.com>
12467
12468         * mini-exceptions.c: Add HAVE_UNISTD_H check around include.
12469         
12470         Code is contributed under MIT/X11 license.
12471
12472 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
12473
12474         * mini.c (mini_init): Fix a leak.
12475
12476         * debug-mini.c (mono_debug_free_method_jit_info): Fix a leak.
12477
12478 Fri Sep 14 12:53:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
12479
12480         * mini.c: redirect string.InternalAllocStr() to the managed allocator.
12481
12482 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
12483
12484         * mini-amd64.c (mono_arch_find_imt_method): Add support for AOT code.
12485
12486 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
12487
12488         * Makefile.am generics-variant-types.2.il generics.cs: Add some generics
12489         variance tests.
12490
12491         * inssel.brg: Reorganize the isinst/castclass code to reduce code duplication.
12492
12493         * mini.c (handle_alloc): Enable managed allocators in AOT code.
12494
12495         * aot-compiler.c (encode_patch): Add support for MONO_WRAPPER_ALLOC.
12496
12497         * aot-runtime.c (decode_patch_info): Ditto.
12498
12499 2007-09-12  Jonathan Chambers <joncham@gmail.com>
12500
12501         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement
12502         static case. Cache delegates in architecture specific code, 
12503         based on number of parameters.
12504         
12505         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Cache delegates
12506         in architecture specific code, based on number of parameters.
12507         
12508         * mini-trampolines.c (mono_delegate_trampoline): Architecture specific 
12509         caching happen in architecture specific code now.
12510         
12511         Code is contributed under MIT/X11 license.
12512
12513 2007-09-12  Jonathan Chambers <joncham@gmail.com>
12514
12515         * mini.h, mini.c, mini-x86.c, mini-amd64.c, mini-hppa.c, mini-mips.c,
12516         mini-s390x.c, mini-arm.c, mini-ia64.c, mini-sparc.c, mini-ppc.c, mini-alpha.c,
12517         mini-s390.c: Add mono_arch_init and mono_arch_cleanup methods.
12518
12519         Code is contributed under MIT/X11 license.
12520
12521 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
12522         * mini.c: (mono_thread_abort) Fixed bug #82416.
12523
12524 Tue Sep 11 16:15:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
12525
12526         * mini.: hook the new managed GC allocation feature into the JIT.
12527
12528 Tue Sep 11 16:14:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
12529
12530         * mini.c: implementation for the new runtime tls opcode.
12531
12532 2007-09-11  Martin Baulig  <martin@ximian.com>
12533
12534         * debug-debugger.h
12535         (MonoDebuggerMetadataInfo): Add `mono_method_flags_offset' and
12536         `mono_method_inflated_offset'.
12537
12538 2007-09-07  Zoltan Varga  <vargaz@gmail.com>
12539
12540         * driver.c mini.h mini.c: Add a new devel command line option for injecting
12541         async exceptions into a method.
12542
12543         * mini-amd64.h mini-amd64.c: Implement injecting of async exceptions for the
12544         purpose of testing whenever the unwinder works at every instruction.
12545
12546 Thu Sep 6 12:42:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
12547
12548         * mini.c: check accessibility of method used in ldftn (fixes
12549         bug #82635).
12550
12551 2007-09-04  Zoltan Varga  <vargaz@gmail.com>
12552
12553         * mini-amd64.c (mono_arch_output_basic_block): Fix a warning.
12554
12555         * inssel.brg: Fix a warning.
12556
12557 2007-09-03  Martin Baulig  <martin@ximian.com>
12558
12559         * debug-debugger.c: `MONO_DEBUGGER_EVENT_INITIALIZE_MANAGED_CODE'
12560         now takes the `main_method' as argument.
12561
12562 2007-09-02  Zoltan Varga  <vargaz@gmail.com>
12563
12564         * cpu-sparc.md (endfilter): Add missing src1:i argument.
12565
12566 2007-08-30  Jonathan Chambers <joncham@gmail.com>
12567
12568         * driver.c: include the cil-coff.h header on Windows.
12569         
12570         Code is contributed under MIT/X11 license.
12571
12572 Thu Aug 30 16:17:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
12573
12574         * mini.c, driver.c: don't include the cil-coff.h header.
12575
12576 Thu Aug 30 14:50:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
12577
12578         * mini.c: flag places that needs fixes fo soft-float support.
12579
12580 Wed Aug 29 18:26:20 CEST 2007 Paolo Molaro <lupus@ximian.com>
12581
12582         * mini.h, inssel-float.brg: fix soft-float constant loads on big
12583         endian systems (partially from Dean Jenkins, bug #81924).
12584
12585 2007-08-28  Mark Probst  <mark.probst@gmail.com>
12586
12587         * mini.c (check_linkdemand): Remove embedded reference object in
12588         call to LinkDemandSecurityException.
12589         (mono_jit_compile_method_inner): Call LinkDemandSecurityException
12590         with an IntPtr instead of a reference object.
12591
12592 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
12593
12594         * mini.c (handle_initobj): Handle alignment properly.
12595
12596         * inssel.brg (mini_emit_memset): Ditto. 
12597
12598         * inssel.brg (mini_emit_memcpy): Ditto. 
12599
12600         * inssel-sparc.brg: Ditto.              
12601
12602         * mini.h mini.c inssel-*.brg: Pass alignment information to OP_MEMCPY/MEMSET.
12603
12604 2007-08-26  Zoltan Varga  <vargaz@gmail.com>
12605
12606         * mini-exceptions.c (mono_handle_exception_internal): Skip the first frame for
12607         exceptions raised in unmanaged code. Fixes part of #82594.
12608
12609 2007-08-24  Mark Probst  <mark.probst@gmail.com>
12610
12611         * mini.c (mono_method_to_ir), declsec.c
12612         (mono_declsec_linkdemand_aptc): Fixed custom attr leaks.
12613
12614 2007-08-22  Martin Baulig  <martin@ximian.com>
12615
12616         * debug-mini.h
12617         (MonoDebuggerThreadInfo): New typedef.
12618         (mono_debugger_thread_table): New global variable.
12619         (mono_debugger_thread_created): New public function.
12620         (mono_debugger_thread_cleanup): New public function.
12621
12622         * debug-debugger.h
12623         (MonoDebuggerInfo):
12624         - removed `get_current_thread' and `lookup_assembly'.
12625         - removed `data_table'.
12626         - added `thread_table'.
12627
12628         * mini.c
12629         (mono_thread_start_cb): Call mono_debugger_thread_created().
12630         (mono_thread_attach_cb): Likewise.
12631         (mini_thread_cleanup): Call mono_debugger_thread_cleanup().
12632         (mini_cleanup): Move mono_debug_cleanup() down, after free'ing the
12633         initial domain.
12634
12635         * driver.c (mono_main): Move mono_debug_init() up, before calling
12636         mini_init(); mono_debug_init_1() and mono_debug_init_2() are gone.
12637
12638 Tue Aug 21 16:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
12639
12640         * mini-x86.c, inssel-x86.brg: group multiple stack adjustments
12641         together when passing several arguments of type double (gives a small
12642         speedup and saves a few bytes of generated code).
12643
12644 2007-08-20  Jb Evain  <jbevain@novell.com>
12645
12646         * mini.c (mono_method_to_ir): fix leak on InvalidProgramException.
12647
12648 2007-08-20  Jb Evain  <jbevain@novell.com>
12649
12650         * mini.c (mono_method_to_ir): throw MethodAccessException
12651         and FieldAccessException instead of InvalidProgramException.
12652
12653 2007-08-20  Mark Probst  <mark.probst@gmail.com>
12654
12655         * mini.c: CoreCLR security checks.
12656
12657         * mini.h: Removed MonoSecurityMode (moved to
12658         metadata/security-manager.h) and mono_security_mode global var
12659         (replaced by set/get functions in security-manager.h).
12660
12661         * driver.c: Added "core-clr-test" security mode for testing.  Used
12662         set-function for setting security mode.
12663
12664 2007-08-17  Mark Probst  <mark.probst@gmail.com>
12665
12666         * mini.c: MonoJitInfo's are freed hazardously now.  Statistics for
12667         the new jit_info_table.
12668
12669         * driver.c: Test code for the new jit_info_table (enabled by the
12670         define MONO_JIT_INFO_TABLE_TEST).
12671
12672 2007-08-14  Zoltan Varga  <vargaz@gmail.com>
12673
12674         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
12675         detection of call <REG> instruction sequence. Fixes build on freebsd.
12676
12677 2007-08-13  Zoltan Varga  <vargaz@gmail.com>
12678
12679         * mini-exceptions.c: Fix a warning.
12680
12681 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
12682
12683         * exceptions-amd64.c (mono_arch_handle_altstack_exception): Enable the new
12684         stack overflow handling code on amd64 too.
12685
12686         * mini-exceptions.c (mono_setup_altstack): Make this use 
12687         mono_thread_get_stack_bounds ().
12688
12689         * mini-x86.h: Disable sigaltstack on solaris x86.
12690
12691 2007-08-10  Zoltan Varga  <vargaz@gmail.com>
12692
12693         * mini-exceptions.c (mono_setup_altstack): Enable this to work on solaris x86.
12694
12695 2007-08-10  Geoff Norton  <gnorton@customerdna.com>
12696
12697         * tramp-x86.c: Remove some unneeded alignment changes on Apple.  Fixes #82387.
12698
12699 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
12700
12701         * mini-exceptions.c (mono_print_thread_dump): Enable this on amd64 too.
12702
12703         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Fix a warning.
12704
12705 2007-08-03  Neale Ferguson <neale@sinenomine.net>
12706
12707         * mini-s390.c (add_general): Adjust offset calculation to take into account of rounding up
12708         due to alignment.
12709
12710 Thu Aug 2 17:36:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
12711
12712         * mini-ppc.c: avoid an invalid encoding of unsigned right shift by 0
12713         to be emitted (bug #82281).
12714
12715 2007-08-01  Martin Baulig  <martin@ximian.com>
12716
12717         Merged the `debugger-dublin' branch.
12718
12719         * debug-debugger.h (MonoDebuggerInfo):
12720         Removed the `old_*' compatibility entries.
12721         Added `debugger_version' and `data_table'.
12722         Renamed `get_method_addr_or_bpt' -> `insert_breakpoint'.
12723         Renamed `remove_method_breakpoint' -> `remove_breakpoint'.
12724
12725         * debug-mini.c
12726         (MiniDebugMethodBreakpointInfo): Add `address_list'.
12727         (mono_debugger_check_breakpoints): Take a `MonoDebugMethodAddress *'
12728         instead of a `gconstpointer'.
12729         (mono_debugger_insert_method_breakpoint): Return a
12730         `MonoDebugMethodAddressList *'.
12731
12732 2007-06-28  Martin Baulig  <martin@ximian.com>
12733
12734         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
12735
12736 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
12737
12738         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Avoid using 
12739         __builtin_frame_address () since it is broken on older gcc versions.
12740
12741 Tue Jul 31 17:34:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
12742
12743         * mini.c, mini.h, mini-exceptions.c: added a bit of documentation
12744         on the stack overflow handling and made the managed stack overflows
12745         catchable in most cases using soft guard pages.
12746         * exceptions-x86.c: added code to restore the protection in the soft
12747         guard pages at the end of exception handling.
12748
12749 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
12750
12751         * mini.c (SIG_HANDLER_SIGNATURE): Fix a warning.
12752
12753 Mon Jul 30 17:43:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
12754
12755         * exceptions-ppc.c, mini-ppc.h: arch-specific stack overflow
12756         exception handling.
12757
12758 Mon Jul 30 17:38:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
12759
12760         * mini-alpha.h, mini-ia64.h, mini-sparc.h: disable the altstack
12761         signal handling support until it has been ported to the new mechanism.
12762         * mini.c: fixed stack overflow detection and use the new
12763         architecture code  to handle signals on the altstack.
12764
12765 Mon Jul 30 17:33:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
12766
12767         * exceptions-amd64.c, mini-amd64.h: amd64 code to handle
12768         stack overflows on the alt stack.
12769
12770 Mon Jul 30 17:29:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
12771
12772         * exceptions-x86.c, mini-x86.h, mini.h: new code to handle
12773         stack overflows on the alt stack.
12774
12775 Mon Jul 30 11:50:06 CEST 2007 Paolo Molaro <lupus@ximian.com>
12776
12777         * exceptions-ppc.c: cleanup preparing for altstack support.
12778
12779 Mon Jul 30 11:31:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
12780
12781         * exceptions-arm.c: cleanup preparing for altstack support.
12782
12783 2007-07-27  Mark Probst  <mark.probst@gmail.com>
12784
12785         * mini.c (print_jit_stats): Output hazard pointer stats.
12786
12787 2007-07-26  Mark Probst  <mark.probst@gmail.com>
12788
12789         * driver.c, mini.c: Replaced security mode flags with a single
12790         enum variable.
12791
12792 Thu Jul 26 20:12:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
12793
12794         * mini.c, mini-exceptions.c: cleanup the sigaltstack code.
12795
12796 2007-07-25  Mark Probst  <mark.probst@gmail.com>
12797
12798         * mini.c, mini.h, driver.c (mono_main): Added command-line flag
12799         (which doesn't do anything yet) for activating Core CLR
12800         (Silverlight) security.
12801
12802 Tue Jul 24 21:16:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
12803
12804         * mini-codegen.c: work around a possible gcc bug on arm.
12805
12806 Tue Jul 24 17:20:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
12807
12808         * driver.c, mini-x86.h, mini-amd64.h: print a nice error
12809         message for platforms that don't support AOT compilation.
12810
12811 Mon Jul 23 10:29:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
12812
12813         * mini.h, mini.c, driver.c: temporary smcs hack.
12814
12815 Mon Jul 23 09:29:34 CEST 2007 Paolo Molaro <lupus@ximian.com>
12816
12817         * mini-arm.h, mini-arm.c: arm EABI fixes.
12818
12819 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
12820
12821         * exceptions-x86.c (mono_arch_find_jit_info): Handle the lmf->method == NULL
12822         case.
12823
12824         * tramp-x86.c (mono_arch_create_trampoline_code): Only set lmf->method for
12825         trampolines taking a method argument.
12826
12827         * mini-x86.h (MonoLMF): Add an 'esp' field plus comments.
12828
12829         * mini-x86.c (mono_arch_emit_prolog): Update after changes to the LMF structure.
12830         * tramp-x86.c (mono_arch_create_trampoline_code): Ditto.
12831
12832         * exceptions-x86.c (mono_arch_get_jit_info): Properly clean up the stack after
12833         JIT compilation throws an exception. Fixes #82050.
12834
12835 2007-07-19  Mark Probst  <mark.probst@gmail.com>
12836
12837         * mini.c: Removed the MonoLoaderErrorKind enum and replaced it
12838         with the MONO_EXCEPTION_ defines.
12839
12840 2007-07-17  Zoltan Varga  <vargaz@gmail.com>
12841
12842         * mini-amd64.c (mono_arch_find_imt_method): Handle mov reg,IMM64 case. Fixes
12843         #82117.
12844         
12845         * mini-amd64.c (mono_arch_find_imt_method): Add some debug code to help find out
12846         the cause of an assertion.
12847
12848 Mon Jul 16 19:31:21 CEST 2007 Paolo Molaro <lupus@ximian.com>
12849
12850         * mini.c, jit-icalls.c: mono_get_inflated_method() is obsolete,
12851         removed.
12852
12853 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
12854
12855         * mini-amd64.c (mono_arch_build_imt_thunk): Remove the non-32bit MonoMethod
12856         assert. Should fix #82103.
12857
12858 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
12859
12860         * mini-exceptions.c (mono_jit_walk_stack_from_ctx): Use MONO_CONTEXT_GET_SP ()
12861         here too. Fixes #82095.
12862
12863         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for non-32bit MonoMethod
12864         addresses.
12865
12866         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a couple asserts.
12867
12868         * mini-amd64.h: Enable IMT for amd64.
12869         
12870         * mini-amd64.c (mono_arch_build_imt_thunk): Optimize IMT thunk size.
12871
12872 2007-07-12  Zoltan Varga  <vargaz@gmail.com>
12873
12874         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for IMT call sequences.
12875
12876 2007-07-12  Mark Probst  <mark.probst@gmail.com>
12877
12878         * mini.c (check_linkdemand, mono_method_to_ir): Abort compilation
12879         as soon as check_linkdemand sets an exception_type.
12880
12881 Thu Jul 12 12:18:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
12882
12883         * mini-x86.c: fixed offsets for IMT call sequence.
12884         * mini-x86.h: enable IMT again.
12885
12886 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
12887
12888         * trace.c (mono_trace_enter_method): Decode MonoType too.
12889
12890         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Handle signed displacements too.
12891
12892         * mini.h mini-x86.h mini-trampolines.c: Change the signature of mono_arch_find_imt_method () to pass the calling code address too.
12893
12894         * mini-amd64.c: Add preliminary IMT implementation.
12895         
12896 Wed Jul 11 18:21:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
12897
12898         * mini-x86.c: adjusted mono_arch_get_vcall_slot_addr () to
12899         understand the new IMT-base interface invocation (thanks to
12900         Daniel Nauck for the report and the remote debugging session).
12901
12902 Wed Jul 11 14:54:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
12903
12904         * mini-x86.c: size and speed optimizations for the IMT bsearch.
12905
12906 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
12907
12908         * Makefile.am (aotcheck): Make this actually use the AOTed code.
12909
12910 Wed Jul 11 12:41:32 CEST 2007 Paolo Molaro <lupus@ximian.com>
12911
12912         * mini-trampolines.c: implement AOT IMT support.
12913         * mini-x86.h: enable IMT support for wider testing.
12914
12915 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
12916
12917         * inssel.brg (emit_imt_argument): Add aot support here.
12918
12919         * aot-runtime.c (decode_patch_info): Fix reading of MONO_PATCH_INFO_METHOD.
12920
12921 Tue Jul 10 17:50:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
12922
12923         * mini-x86.c, mini-x86.h, tramp-x86.c: x86 arch-specific changes
12924         of the IMT implementation, partially from massi, with my
12925         implementation of the bsearch sequence. Disabled by default until
12926         the AOT code is implemented.
12927
12928 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
12929
12930         * cpu-x86.md: The source argument of sext_i1/i2 must by a byte reg.
12931
12932         * inssel-x86.brg: Add reg:ldind.i1(regvar) rules. Fixes #82056.
12933
12934 Tue Jul 10 17:33:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
12935
12936         * inssel.brg, mini.c, mini.h, mini-trampolines.c:
12937         arch-independent IMT JIT code from Massimiliano
12938         Mantione (massi@ximian.com) with small cleanups from me.
12939
12940 Tue Jul 10 13:07:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
12941
12942         * Makefile.am: fix svn invocation to get the svn revision to be
12943         independent of the local language (build fix).
12944
12945 2007-07-09  Mark Probst  <mark.probst@gmail.com>
12946
12947         * mini.c (inline_method): Reset cfg->exception_type if the
12948         inlining is aborted.  Fixes: 82049.
12949
12950 Mon Jul 9 17:26:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
12951
12952         * mini.c: remove assert from exception handling code when exception_ptr
12953         is not set.
12954
12955 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
12956
12957         * mini.c (mono_codegen): Add an assert.
12958
12959         * mini-x86.c (mono_arch_emit_prolog): Allocate space for the profiler method 
12960         enter and leave code.
12961         * mini-amd64.c (mono_arch_emit_prolog): Likewise.
12962
12963 Thu Jul 5 20:12:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
12964
12965         * mini-ppc.c: fixed memory corruption for localloc(0)
12966         (bug #81852).
12967
12968 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
12969         
12970         * mini.c: Fix warnings.
12971
12972 Wed Jul 4 15:30:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
12973
12974         * optflags-def.h, mini-x86.c: added sse2 optimization flag and use it
12975         to emit better double->int conversions.
12976
12977 Tue Jul 3 19:42:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
12978
12979         * mini.c: the provided Min/Max optimizations are valid for unisgned
12980         ints.
12981
12982 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
12983
12984         * 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
12985
12986 2007-06-28  Miguel de Icaza  <miguel@novell.com>
12987
12988         * mini.c (mono_running_on_valgrind): Add support for reporting the
12989         method and  its boundaries to valgrind.
12990
12991 2007-06-28  Martin Baulig  <martin@ximian.com>
12992
12993         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
12994
12995 2007-06-25  Zoltan Varga  <vargaz@gmail.com>
12996
12997         * ssa.c (visit_inst): Add support for OP_BR. Fixes #81946.
12998
12999         * generic.2.cs: Add new test case.
13000
13001 2007-06-25  Martin Baulig  <martin@ximian.com>
13002
13003         Merged the `debugger-dublin' branch.
13004
13005         * debug-mini.c
13006         (mono_debugger_insert_method_breakpoint): New public method.
13007         (mono_debugger_remove_method_breakpoint): Likewise.
13008         (mono_debugger_check_breakpoints): New static method.
13009         (mono_debug_close_method): Call mono_debugger_check_breakpoints().
13010
13011         * debug-debugger.h (MonoDebuggerInfo):
13012         Renamed (to keep backward compatibility in the vtable):
13013         `insert_breakpoint' -> `old_insert_breakpoint'.
13014         `remove_breakpoint' -> `old_remove_breakpoint'.
13015         `create_string' -> `old_create_string'.
13016         `lookup_class' -> `old_lookup_class'.
13017         `lookup_type' -> removed; changed into a dummy field.
13018         `lookup_assembly' -> `old_lookup_assembly'.
13019         Added (same functionality, but different signature):
13020         `create_string', `lookup_class', `lookup_assembly'
13021         Added new:
13022         `get_method_addr_or_bpt', `remove_method_breakpoint',
13023         `runtime_class_init'.
13024
13025         * debug-debugger.c: Merged the `debugger-dublin' branch.
13026
13027 2007-06-23  Zoltan Varga  <vargaz@gmail.com>
13028
13029         * mini-amd64.c (peephole_pass_1): Optimize away moves at the beginning of the bb as
13030         well.
13031         (peephole_pass): Likewise.
13032
13033 Fri Jun 22 09:17:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
13034
13035         * driver.c: hopefully make setaffinity work also for ancient
13036         versions of linux.
13037
13038 2007-06-22  Atsushi Enomoto  <atsushi@ximian.com>
13039
13040         * driver.c : win32 build fix.
13041
13042 Thu Jun 21 19:24:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
13043
13044         * driver.c: check for the MONO_NO_SMP env var and bind to a single
13045         processor if it is set.
13046
13047 2007-06-21  Martin Baulig  <martin@ximian.com>
13048
13049         * debug-mini.h: New file.
13050
13051         * debug-mini.c
13052         (mono_debugger_insert_breakpoint_full): Moved here from
13053         ../metadata/mono-debug-debugger.c.
13054         (mono_debugger_remove_breakpoint): Likewise.
13055         (mono_debugger_breakpoint_callback): Likewise.
13056
13057 2007-06-15  Raja R Harinath  <rharinath@novell.com>
13058
13059         * jit-icalls.c (mono_helper_compile_generic_method): Update to
13060         changes in MonoGenericClass.
13061
13062 2007-06-14  Zoltan Varga  <vargaz@gmail.com>
13063
13064         * mini-codegen.c (mono_opcode_to_type): Fix ia64 build.
13065
13066 2007-06-14  Raja R Harinath  <rharinath@novell.com>
13067
13068         * jit-icalls.c (mono_helper_compile_generic_method): Update to
13069         removal of MonoGenericMethod.
13070
13071 Thu Jun 14 12:42:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
13072
13073         * mini-exceptions.c: hooks for the exception events profiling API.
13074
13075 2007-06-14  Randolph Chung  <tausq@debian.org>
13076
13077         * Makefile.ma: Add hppa target.
13078         * mini-arch.h: Include mini-hppa.h
13079         * cpu-hppa.md, exceptions-hppa.c, inssel-hppa.brg, mini-hppa.c,
13080         mini-hppa.h, tramp-hppa.c: New files for 32-bit HPPA port.
13081         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
13082
13083 2007-06-14  Randolph Chung  <tausq@debian.org>
13084
13085         * inssel.brg: Add rules for "chained" compare-branch operations so that
13086         a single compare op can affect multiple branches.  Adjust cost for
13087         OP_CEQ/OP_CGT/OP_CGT_UN/OP_CLT/OP_CLT_UN.
13088         * inssel-long32.brg: Update rules to use compare-branch macros.  Adjust
13089         cost for some rules so that they can more easily be overridden by
13090         per-arch rules (with fixes from lupus).
13091         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
13092
13093 2007-06-13  Randolph Chung  <tausq@debian.org>
13094
13095         * mini-ops.h: Reorder branch ops so that they match the order of the
13096         corresponding CEE_* ops.  The code expects them this way.
13097         Add new ops for HPPA target.
13098         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
13099
13100 2007-06-13  Randolph Chung  <tausq@debian.org>
13101
13102         * mini-exceptions.c: Handle cases where the stack grows towards
13103         larger addresses.
13104         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
13105
13106 Wed Jun 13 19:13:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
13107
13108         * jit-icalls.c, mini.h, mini.c: added virtual generic invoke
13109         counter.
13110         * driver.c: explain where a non-matching corlib is found.
13111
13112 2007-06-13  Mark Probst  <mark.probst@gmail.com>
13113
13114         * mini.c (print_jit_stats): Output dynamic code allocation stats.
13115
13116 2007-06-10  Sanghyeon Seo <sanxiyn@gmail.com>
13117
13118         * mini-exceptions.c: Generate a method profile leave event during
13119         an exception to ensure that the profiler gets notified.
13120
13121 2007-06-07  Zoltan Varga  <vargaz@gmail.com>
13122
13123         * mini-amd64.c (peephole_pass): Merge some small changes from the linear-ir 
13124         branch.
13125
13126         * cpu-amd64.md: Add long_and/or/xor opcodes.
13127
13128 2007-06-06  Wade Berrier  <wberrier@novell.com>
13129
13130         * cpu-s390x.md (shr_imm): Correct the length of shr_imm instruction.
13131         (./class/lib/monolite/mcs.exe:25498): WARNING **: wrong maximal instruction 
13132         length of instruction shr_imm (expected 8, got 10)
13133
13134 2007-06-06  Zoltan Varga  <vargaz@gmail.com>
13135
13136         * mini-ia64.c (mono_arch_output_basic_block): Really fix the build.
13137
13138 2007-06-06  Mark Probst  <mark.probst@gmail.com>
13139
13140         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
13141         MonoInternalHashTable again (fixed bug in the internal hash table
13142         code).
13143
13144 2007-06-06  Mark Probst  <mark.probst@gmail.com>
13145
13146         * mini.c, driver.c: Reverted the MonoInternalHashTable changes.
13147         Have to figure out what makes it crash the SWF regression.
13148
13149 2007-06-05  Zoltan Varga  <vargaz@gmail.com>
13150
13151         * mini-ia64.c (mono_arch_lowering_pass): Fix ia64 build.
13152
13153 Tue Jun 5 17:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
13154
13155         * mini.c: optimize out the type check when storing null in a
13156         reference array.
13157
13158 2007-06-04  Mark Probst  <mark.probst@gmail.com>
13159
13160         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
13161         MonoInternalHashTable.
13162
13163 Mon Jun 4 11:29:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
13164
13165         * inssel.brg, mini.c, mini-ops.h: optimized Math.Mini/Max
13166         signed integer methods.
13167
13168 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
13169
13170         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case 
13171         permanently since the current approach doesn't work.
13172
13173 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
13174
13175         * inssel.brg (stmt): Only call delegate->invoke_impl if 
13176         MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE is defined.
13177
13178 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
13179
13180         * mini-amd64.c (mono_arch_output_basic_block): Unify div/rem opcodes and handle
13181         the sreg2==rdx case.
13182         
13183         * mini-amd64.c cpu-amd64.md: Correct length of r4const instruction and take into
13184         account if it contains a rex prefix.
13185         (peephole_pass): Handle OP_FMOVE as well.
13186
13187 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
13188
13189         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case for now
13190         as it causes regressions.
13191
13192 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
13193
13194         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement support for the
13195         static case as well.
13196
13197         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix ia64 build.
13198
13199         * mini-x86.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
13200         (mono_arch_get_this_arg_from_call): Ditto.
13201
13202         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Removed.
13203
13204         * inssel.brg (mini_emit_virtual_call): Call delegate->Invoke through the delegate's
13205         invoke_impl field.
13206
13207         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
13208         (mono_arch_get_this_arg_from_call): Ditto.
13209
13210         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Removed.
13211         
13212         * mini-trampolines.c (mono_delegate_trampoline): Complete rewrite. On first call,
13213         try to create optimized invoke code and use that for further invocations. 
13214         Otherwise, use the original mono_marshal_get_delegate_invoke () implementation.
13215
13216         * mini-x86.h mini-ia64.h: Remove MONO_ARCH_HAS_CREATE_DELEGATE_TRAMPOLINE for now.
13217
13218 2007-05-29  Rodrigo Kumpera  <kumpera@gmail.com>
13219
13220         * inssel.brg (mini_emit_virtual_call): Statically dispatch virtual calls to
13221         sealed classes or methods.
13222         *devirtualization.cs: tests for the new optimization
13223
13224 2007-05-29  Zoltan Varga  <vargaz@gmail.com>
13225
13226         * liveness.c (update_gen_kill_set): No need to set VOLATILE flags here, it is done
13227         by the update_volatile () function.
13228
13229 2007-05-27  Zoltan Varga  <vargaz@gmail.com>
13230
13231         * driver.c (mono_main): Call g_thread_init () early since newer glib versions
13232         require it.
13233
13234         * abcremoval.c (mono_perform_abc_removal): Avoid using alloca.
13235
13236 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
13237
13238         * mini.c: Add configure checks for header files.
13239         * mini-x86.c: Add configure checks for header files.
13240         * trace.c: Add configure checks for header files.
13241         * aot-runtime.c: Add configure checks for header files.
13242         * aot-compiler.c: Add configure checks for header files.
13243         * driver.c: Add configure checks for header files.
13244         * mini-codegen.c: Add configure checks for header files.
13245         
13246         Code is contributed under MIT/X11 license.
13247
13248 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
13249
13250         * mini-ia64.c (mono_arch_lowering_pass): Fix the handling of
13251         icompare_imm -128 + op_iclt. Fixes #81703.
13252
13253 2007-05-19  Zoltan Varga  <vargaz@gmail.com>
13254
13255         * mini-codegen.c (mono_local_regalloc): Fix long-shift-regalloc on amd64.
13256
13257 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
13258
13259         * inssel.brg: added "mini_emit_load_intf_bit_reg_vtable", and used it
13260         inside "mini_emit_isninst_iface_cast" and "mini_emit_castclass_iface"
13261         so that all isinst checks now use "interface_bitmap".
13262
13263 2007-05-15  Zoltan Varga  <vargaz@gmail.com>
13264
13265         * cpu-amd64.md (jmp): Fix a warning.
13266
13267         * inssel.brg (CEE_SWITCH): Hopefully fix #80738.
13268
13269         * basic.cs: Add new regression test.
13270
13271         * basic.cs: Remove test which is now in basic-long.cs.
13272
13273         * mini-ia64.c (mono_arch_output_basic_block): Sign extend in CEE_CONV_I8/CEE_CONV_I.
13274
13275         * basic-long.cs: Add new test.
13276         
13277 2007-05-13  Zoltan Varga  <vargaz@gmail.com>
13278
13279         * mini-sparc.c (mono_spillvar_offset_float): Fix sparc build.
13280
13281 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
13282
13283         * cpu-x86.md minix-86.c: Add a peephole_pass_1 () as on amd64.
13284
13285         * mini-x86.c (mono_arch_output_basic_block): Use mono_opcode_to_cond () in a few
13286         places.
13287         
13288         * mini-x86.c (mono_arch_emit_exceptions): Decrease the size of the exception 
13289         throwing code a bit.
13290
13291         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Decrease the size of 
13292         the exception throwing code a bit.
13293
13294         * mini-x86.c (get_call_info): Allocate result from a mempool.
13295
13296 2007-05-11  Zoltan Varga  <vargaz@gmail.com>
13297
13298         * aot-compiler.c (find_typespec_for_class): Fix the assert.
13299
13300         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
13301
13302         * mini.h (MonoCompile): Add 'token_info_hash' field.
13303
13304         * mini.c: Save token->method associations during compilation so the AOT 
13305         compiler can use it.
13306         
13307         * aot-compiler.c aot-runtime.c: Add support for compiling non-generic methods
13308         which reference generic classes and methods.
13309
13310 2007-05-10  Zoltan Varga  <vargaz@gmail.com>
13311
13312         * mini.h mini-<ARCH>.h: Get rid of MONO_ARCH_HAS_XP_LOCAL_REGALLOC.
13313
13314         * aot-compiler.c (compile_method): Fix a typo in a comment.
13315
13316         * aot-runtime.c (decode_cached_class_info): Skip generic types.
13317
13318         * aot-compiler.c: Add minimal support for AOTing generic code by skipping 
13319         everything generic.
13320
13321         * mini.c (mono_method_to_ir): Disable AOT when calling helper_compile_generic_method.
13322
13323 2007-05-09  Zoltan Varga  <vargaz@gmail.com>
13324
13325         * mini.h (MonoCompile): Add 'args' field.
13326
13327         * mini.c (mono_compile_create_vars): Store variables representing the arguments
13328         into cfg->args.
13329
13330         * mini-<ARCH>.c: Use cfg->args for accessing the method arguments.
13331
13332 2007-05-08  Zoltan Varga  <vargaz@gmail.com>
13333
13334         * mini.c (mono_compile_get_interface_var): Remove this unused function.
13335
13336         * mini-ops.h inssel.brg mini-<ARCH>.c: Add a new opcode for ckfinite as well.
13337
13338         * mini-ops.h: Introduce new opcodes used in the IR instead of the original CEE_
13339         opcodes for some opcodes.
13340
13341         * mini.h *.brg *.c: Use the new opcodes.
13342
13343 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
13344
13345         * mini.h: Bumped aot revision.
13346
13347         * inssel.brg: modified code generation of type checks for interfaces
13348         to use the new "MonoClass.interface_bitmap" instead of the old
13349         "MonoClass.interface_offsets".
13350
13351 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
13352
13353         * cpu-amd64.md (jmp): Increase the maximum size of the jmp opcode to 128.
13354
13355 2007-04-29  Zoltan Varga  <vargaz@gmail.com>
13356
13357         * abcremoval.c (summarize_integer_value): Handle OP_LCONV_TO_I4 to fix abcrem on
13358         64 bit platforms.
13359
13360 2007-04-27  Neale Ferguson <neale@sinenomine.net>
13361
13362         * mini-s390x.c: Fix MONO_TYPE_VALUETYPE processing.
13363
13364 2007-04-27  Wade Berrier  <wberrier@novell.com>
13365
13366         * mini-s390x.c: Remove redeclaration of CompRelation and CompType (defined in 
13367         mini.h) to fix build.
13368
13369 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
13370
13371         * mini-amd64.c (peephole_pass_1): Fix and reenable this pass.
13372         
13373         * mini-amd64.c (mono_arch_local_regalloc): Disable the new peephole_pass_1 as it
13374         causes the corlib unit tests to fail.
13375
13376 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
13377
13378         * mini-codegen.c (mono_opcode_to_type): Fix a bug in the previous patch.
13379
13380         * mini-amd64.c (peephole_pass_1): New pass to perform before local regalloc.
13381
13382         * mini-codegen.c (mono_opcode_to_cond): New helper function to convert conditional 
13383         opcodes to the comparison relations.
13384
13385         * mini-codegen.c (mono_opcode_to_type): New helper function to convert conditional 
13386         opcodes to their types.
13387         
13388         * mini-ia64.c mini-amd64.c: Use mono_opcode_to_cond and mono_opcode_to_type.
13389
13390         * mini-amd64.c (get_call_info): Allocate the result from the cfg mempool and cache 
13391         it in cfg->arch.cinfo.
13392
13393         * local-propagation.c (mono_local_cprop_bb): Fix a warning.
13394
13395         * mini.h mini.c branch-opts.c: Change bbhash to be an array and store it in 
13396         cfg->cil_offset_to_bb.
13397
13398 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
13399
13400         * liveness.c (optimize_initlocals): New mini-pass to optimize away dead assignments
13401         created becase of initlocals.
13402
13403 2007-04-23  Zoltan Varga  <vargaz@gmail.com>
13404
13405         * mini-alpha.c cpu-alpha.md: More alpha port work from 
13406         Sergey Tikhonov <tsv@solvo.ru>.
13407
13408 2007-04-21  Andreas Faerber  <andreas.faerber@web.de>
13409
13410         * Makefile.am (BUILT_SOURCES): Fix for automake 1.6.x. Fixes #81417.
13411
13412 2007-04-19  Zoltan Varga  <vargaz@gmail.com>
13413
13414         * cpu-s390.md (break): Correct the length of break instruction.
13415
13416 Thu Apr 19 16:28:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
13417
13418         * mini.c: fix a couple of soft-float issues and comments.
13419
13420 2007-04-15  Miguel de Icaza  <miguel@novell.com>
13421
13422         * trace.c (is_filenamechar): - is also a filename char.
13423
13424 2007-04-15  Neale Ferguson <neale@sinenomine.net>
13425
13426         * mini-s390.c: Correct checking for enum type in return value processing.
13427
13428 2007-04-14  Raja R Harinath  <rharinath@novell.com>
13429
13430         * Makefile.am (BUILT_SOURCES): Add 'version.h'.
13431         (version.h): Makefile is in the build directory.
13432
13433 2007-04-06  Andreas Faerber  <andreas.faerber@web.de>
13434
13435         * mini-amd64.h: fix for assertion failure on Solaris/amd64
13436
13437 2007-04-11  Martin Baulig  <martin@ximian.com>
13438
13439         * mini.c (can_access_member): Fix handling of generic classes;
13440         fixes #81259.
13441
13442 2007-04-10  Zoltan Varga  <vargaz@gmail.com>
13443
13444         * aot-runtime.c (mono_aot_plt_resolve): Fix disabling of AOT. Fixes #81316.
13445
13446 2007-04-05  Zoltan Varga  <vargaz@gmail.com>
13447
13448         * aot-runtime.c: Fix disabling of AOT. Fixes #81316.
13449
13450 Fri Mar 23 20:25:31 CET 2007 Paolo Molaro <lupus@ximian.com>
13451
13452         * mini-codegen.c: make sure the right spill amount is
13453         used for fp or integer registers (fixes the float_sub_spill() on ppc).
13454
13455 Fri Mar 23 19:43:35 CET 2007 Paolo Molaro <lupus@ximian.com>
13456
13457         * mini-ppc.c: fixes for the fp_branch_nan test.
13458
13459 2007-03-23  Zoltan Varga  <vargaz@gmail.com>
13460
13461         * basic.cs: Comment out new test which still fails on ia64.
13462
13463 Fri Mar 23 15:54:23 CET 2007 Paolo Molaro <lupus@ximian.com>
13464
13465         * mini.c: immediate shifted or fix (mono_metadata_user_string assert).
13466
13467 Fri Mar 23 12:53:28 CET 2007 Paolo Molaro <lupus@ximian.com>
13468
13469         * mini-ppc.c, mini-ppc.h: struct passing ABI fix (bug #77968).
13470
13471 2007-03-22  Zoltan Varga  <vargaz@gmail.com>
13472
13473         * cfold.c (FOLD_BINOP): Cast the result to gint32 to prevent overflow problems
13474         on 64 bit machines. Fixes part of #80738.
13475
13476         * basic.cs: Add regression test.
13477
13478 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
13479
13480         * inssel.brg basic.cs: Revert previous change to fix build.
13481
13482         * inssel.brg (SWITCH): Clean out the upper word of the switch value on 64 bit
13483         platforms.
13484         
13485         * inssel.brg (SWITCH): Use an integer comparison. Fixes #80738.
13486
13487         * basic.cs: Add new regression test.
13488
13489 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
13490
13491         * mini-ia64.c (mono_arch_emit_prolog): Fix an assert when a function has too
13492         many arguments.
13493
13494 2007-03-16  Neale Ferguson <neale@sinenomine.net>
13495
13496         * cpu-s390x.md: Correct length of break instruction.
13497
13498 2007-03-16  Neale Ferguson <neale@sinenomine.net>
13499
13500         * mini-s390x.c, cpu-s390x.md: Fix #80507 for s390x.
13501         * mini-s390.c, cpu-s390.md: Fix #80507 for s390.
13502
13503 2007-03-15  Jonathan Chambers  <joncham@gmail.com>
13504
13505         * *.c: Begin WIN64 port.
13506         * mini.c:  Use correct register in profiler.
13507         * mini-amd64.c: No inline assembly on Win64.
13508         * mini-amd64.h: Implement MONO_INIT_CONTEXT_FROM_FUNC for Win64.
13509         Only define MONO_ARCH_USE_SIGACTION on non-windows platforms.
13510         * exceptions-amd64.c: Only need gregs_from_ucontext if MONO_ARCH_USE_SIGACTION
13511         is defined. Implement mono_arch_sigctx_to_monoctx, mono_arch_monoctx_to_sigctx, and
13512         mono_arch_ip_from_context for Win64.
13513         
13514         Contributed under MIT/X11 license.
13515
13516 2007-03-15  Zoltan Varga  <vargaz@gmail.com>
13517
13518         * exceptions-amd64.c (seh_handler): Ditto.
13519
13520         * exceptions-x86.c (seh_handler): Fix a memory leak.
13521
13522 Thu Mar 15 13:47:59 CET 2007 Paolo Molaro <lupus@ximian.com>
13523
13524         * mini-arm.c, mini-mips.c, mini-ppc.c, mini-s390.c,
13525         mini-s390x.c: fixed peephole optimizations to deal
13526         correctly with 1 and 2 byte reload avoidance.
13527
13528 Thu Mar 15 10:17:54 CET 2007 Paolo Molaro <lupus@ximian.com>
13529
13530         * cpu-s390.md, cpu-s390x.md: update localloc length.
13531
13532 Wed Mar 14 21:00:19 CET 2007 Paolo Molaro <lupus@ximian.com>
13533
13534         * cpu-g4.md: added missing descriptions.
13535
13536 2007-03-14  Miguel de Icaza  <miguel@novell.com>
13537
13538         *  Makefile.am: Add support so the tail tests are not executed on
13539         PowerPC as that is a known limitation of the PowerPC port.
13540
13541 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
13542
13543         * runmdesc.bat:  Move to msvc directory.
13544         
13545 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
13546
13547         * runmdesc.bat:  Run executable that was produced by the current
13548         target and sent via an argument.
13549         
13550 2007-03-11  Zoltan Varga  <vargaz@gmail.com>
13551
13552         * mini.c (mono_method_to_ir): Fix box+brtrue optimization. Fixes
13553         #81102.
13554
13555         * generics.2.cs: Add regression test.
13556
13557 2007-03-09  Wade berrier  <wberrier@novell.com>
13558
13559         * mini-ppc.h: Undo typo of MONO_CONTEXT_SET_SP (ppc doesn't define this symbol)
13560
13561 2007-03-09  Zoltan Varga  <vargaz@gmail.com>
13562
13563         * aot-runtime.c (load_aot_module): Load all dependent assemblies eagerly since all
13564         AOT code depends on this.
13565
13566 Thu Mar 8 19:36:13 CET 2007 Paolo Molaro <lupus@ximian.com>
13567
13568         * mini.c: more precise tracking of types in the eval stack
13569         (part of fix for bug #81044).
13570
13571 2007-03-07  Zoltan Varga  <vargaz@gmail.com>
13572
13573         * aot-runtime.c (mono_aot_get_class_from_name): Add a cache.
13574
13575         * aot-compiler.c (encode_patch): Remove an obsolete comment.
13576
13577 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
13578
13579         * mini-exceptions.c (mono_handle_native_sigsegv): Fix a warning.
13580
13581         * mini.c (mono_method_to_ir): Add a workaround for bug #80733.
13582
13583 2007-02-22  Zoltan Varga  <vargaz@gmail.com>
13584
13585         * mini.c (type_from_op): Convert CEE_CONV_U to OP_LCONV_TO_U when the argument is
13586         a pointer on 64 bit systems. Fixes #80190.
13587
13588         * iltests.il: Add new regression test.
13589
13590 Tue Feb 20 11:33:28 CET 2007 Paolo Molaro <lupus@ximian.com>
13591
13592         * mini.c: inline a constant for Environment.IsRunningOnWindows.
13593
13594 2007-02-19  Geoff Norton  <gnorton@customerdna.com>
13595
13596         * trace.c: Remove an erroneous alignemnt check when tracing.
13597           Fixes --trace on OSX86.
13598
13599 Wed Feb 14 19:45:56 CET 2007 Paolo Molaro <lupus@ximian.com>
13600
13601         * mini-$(arch).h: initialize SP in context for all the archs.
13602
13603 2007-02-14  Sebastien Pouliot  <sebastien@ximian.com>
13604
13605         * mini-x86.h: Initialize SP in MONO_INIT_CONTEXT_FROM_FUNC. Fix CAS
13606         regressions in the thread tests.
13607
13608 2007-02-14  Zoltan Varga  <vargaz@gmail.com>
13609
13610         * *-alpha.*: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>:
13611         - fixed implementation of LOCALLOC opcode
13612         - implemented non-un compare for floats
13613         - code cleanup
13614         - implementation of FDIV and CKFINITE opcodes
13615         - fixes for latest mono updates
13616         - additional arch opcodes
13617
13618 Mon Feb 12 11:54:16 CET 2007 Paolo Molaro <lupus@ximian.com>
13619
13620         * Makefile.am: simplify and merge rules for cross-compilation.
13621
13622 2007-02-07  Massimiliano Mantione  <massi@ximian.com>
13623
13624         * local-propagation.c: Actually *apply* the fix for bug 80591...
13625
13626 Tue Feb 6 19:03:19 CET 2007 Paolo Molaro <lupus@ximian.com>
13627
13628         * mini-exceptions.c: backuot part of the last change
13629         (fixes cas tests on amd64 related to GetExecutingAssembly ()).
13630
13631 2007-02-06  Massimiliano Mantione  <massi@ximian.com>
13632         * inssel.brg: Fix bug 59286.
13633
13634
13635 Tue Feb 6 12:23:50 CET 2007 Paolo Molaro <lupus@ximian.com>
13636
13637         * mini-exceptions.c: patch from Zoltan to correctly check for
13638         stack boundaries (using the stack register, not the frame register),
13639         fixes bugs #80724, #79717.
13640
13641 2007-02-03  Zoltan Varga  <vargaz@gmail.com>
13642
13643         * mini-ia64.c inssel-sparc.brg mini-sparc.c cpu-sparc.md: Get rid of OP_SETREG/
13644         OP_SETREGIMM, use OP_MOVE/OP_ICONST instead.
13645
13646         * mini-amd64.c (mono_arch_output_basic_block): Fix ATOMIC_EXCHANGE in the
13647         presence of frame pointer elimination.
13648
13649 2007-02-01  Geoff Norton  <gnorton@customerdna.com>
13650         
13651         * mini-x86.h: NetBSD UCONTEX_REG defines.
13652
13653 2007-02-01  Zoltan Varga  <vargaz@gmail.com>
13654
13655         * inssel-amd64.brg: Fix amd64 build.
13656
13657 Thu Feb 1 14:02:09 CET 2007 Paolo Molaro <lupus@ximian.com>
13658
13659         * mini.h: remove extern to workaround what looks likes gcc bug 26905
13660         on amd64.
13661
13662 2007-01-31  Zoltan Varga  <vargaz@gmail.com>
13663
13664         * mini-codegen.c (mono_is_regsize_var): New helper function usable by the back
13665         ends.
13666
13667         * mini-<ARCH>.c: Use mono_is_regsize_var ().
13668
13669 2007-01-30 Mark Mason <mason@broadcom.com>
13670
13671            * exceptions-mips.c: Lots of exception handling fixes, LMFs now work, some cleanups.
13672            * mini-mips.h: Add LMF magic numbers, and fix context set/get macros.
13673            * mini-mips.c: Cleanups, LMF handling now works, optimize store of zero, implement localloc
13674            beginning support for CEE_JMP [not quite working yet]
13675            * tramp-mips.c: LMF handling now works
13676         
13677 2007-01-30  Zoltan Varga  <vargaz@gmail.com>
13678
13679         * mini-amd64.c (peephole_pass): Optimize code common in initlocals blocks.
13680
13681         * mini.h (NULLIFY_INS): New macro.
13682
13683 Tue Jan 30 16:33:33 CET 2007 Paolo Molaro <lupus@ximian.com>
13684
13685         * mini.c: statistical profiler fix for windows, patch
13686         from Tor Lillqvist (tml@novell.com).
13687
13688 2007-01-30  Massimiliano Mantione  <massi@ximian.com>
13689         * local-propagation.c: Fix bug 80591.
13690
13691 Mon Jan 29 12:14:34 CET 2007 Paolo Molaro <lupus@ximian.com>
13692
13693         * Makefile.am: put back the --export-dynamic option as with
13694         the previous gmodule flags (thanks to Robert Jordan).
13695
13696 2007-01-28  Zoltan Varga  <vargaz@gmail.com>
13697
13698         * mini-sparc.c (peephole_pass): Fix #80622 for sparc as well.
13699
13700         mini.h *.c: Allocate fp vregs from the same pool as the int vregs. Use this to
13701         simplify and speed up the local register allocator. Also rename some fields
13702         like iassign->vassign.
13703         
13704         * regalloc.c: Remove some functions which are no longer used since their
13705         inlined version is in mini-codegen.c.
13706         
13707         * mini-codegen.c: Rename mono_regstate2_ functions to mono_regstate_.
13708
13709         * basic.cs objects.cs iltests.il: Merge tests from the linear IL branch.
13710
13711 2007-01-27  Zoltan Varga  <vargaz@gmail.com>
13712
13713         * mini-amd64.c (peephole_pass): Remove optimizations which omit a 
13714         narrowing. Fixes #80622.
13715
13716         * iltests.il: Add new regresssion test. 
13717
13718 Fri Jan 26 18:31:45 CET 2007 Paolo Molaro <lupus@ximian.com>
13719
13720         * mini.h, mini-trampolines.c, aliasing.c, mini-codegen.c,
13721         debug-debugger.c, debug-debugger.h: warning fixes.
13722         * driver.c: updated copyright year and made it fit in one line.
13723
13724 Fri Jan 26 12:48:39 CET 2007 Paolo Molaro <lupus@ximian.com>
13725
13726         * aot-runtime.c: updated to use mono-dl instead of gmodule.
13727
13728 2007-01-25  Zoltan Varga  <vargaz@gmail.com>
13729
13730         * mini-x86.c (mono_arch_output_basic_block): Fix #80507 for x86.
13731
13732         * mini-amd64.c (mono_arch_output_basic_block): Fix #80507 for amd64.
13733
13734         * iltests.il: Add new test for bug #80507.
13735
13736 Wed Jan 24 19:10:28 CET 2007 Paolo Molaro <lupus@ximian.com>
13737
13738         * mini-arm.h: use soft-float also on vfp for now.
13739
13740 Wed Jan 24 14:54:40 CET 2007 Paolo Molaro <lupus@ximian.com>
13741
13742         * mini.c: fix some more soft-float issues.
13743
13744 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
13745
13746         * mini-sparc.h (MONO_ARCH_FRAME_ALIGNMENT): Fix sparc build.
13747
13748 2007-01-24  Massimiliano Mantione  <massi@ximian.com>
13749         * mini-arch.h, , inssel-amd64.brg, mini-x86.c, inssel-x86.brg,
13750         mini-ia64.c, mini-sparc.c, mini-alpha.c: Introduced
13751         MONO_ARCH_LOCALLOC_ALIGNMEENT to fix bug 80498.
13752
13753 Wed Jan 24 12:04:39 GMT 2007 Paolo Molaro <lupus@ximian.com>
13754
13755         * mini-arm.c: typo fix.
13756
13757 2007-01-23  Neale Ferguson <neale@sinenomine.net>
13758
13759         * mini-s390x.c: Use lgb instructions for I1 type variables instead of lb.
13760
13761 2007-01-21  Zoltan Varga  <vargaz@gmail.com>
13762
13763         * mini.c (mono_allocate_stack_slots_full): Allocate memory from the cfg mempool.
13764         Share stack slots for scalar types. Avoid expensive g_list_free () calls.
13765
13766         * mini-x86.c (mono_arch_allocate_vars): Don't free the result of allocate_stack_slots_full.
13767
13768         * mini-amd64.c mini-ia64.c mini-alpha.c: Ditto. 
13769
13770         * mini.h (MonoJitStats): Add a new JIT statistics: locals_stack_size.
13771         
13772         * inssel.brg: Fix a warning.
13773
13774         * mini.h (MonoBasicBlock): Make bb->dominated a GSList.
13775
13776         * abcremoval.c ssa.c ssapre.c: Update after this change.
13777         
13778         * dominators.c (compute_dominators): Allocate bb->dominated from the cfg mempool.
13779
13780         * dominators.c (df_set): Use mono_bitset_union_fast.    
13781
13782 Sat Jan 20 16:59:01 CET 2007 Paolo Molaro <lupus@ximian.com>
13783
13784         * mini.h, genmdesc.c, genmdesc.pl, mini-${arch}.c, cprop.c,
13785         mini-codegen.c: reduce relocations and memory usage for the cpu
13786         description.
13787
13788 2007-01-20  Zoltan Varga  <vargaz@gmail.com>
13789
13790         * mini-codegen.c (mono_regstate2_alloc_int): Optimize this using bsfq on amd64.
13791
13792         * genmdesc.c genmdesc.pl mini.h: Remove some unused fields from the mdesc tables
13793         to reduce their size.
13794
13795 2007-01-19 Mark Mason <mason@broadcom.com>
13796
13797         * exceptions-mips.c: fix mono_arch_ip_from_context(), increase exception debug support.
13798         * mini-mips.c: more configuration macros, support long conditional branches, additional
13799         asserts, fix epilog instrumentation.
13800         * mini-mips.h: use standard stack walk
13801         * cpu-mips.md: increase size of div, rem and conditional branches
13802         
13803 Fri Jan 19 17:23:32 CET 2007 Paolo Molaro <lupus@ximian.com>
13804
13805         * mini.h, mini-codegen.c, mini-$(arch).h: claenup references
13806         to cpu spec data.
13807
13808 2007-01-19  Zoltan Varga  <vargaz@gmail.com>
13809
13810         * aot-compiler.c (encode_klass_info): Allow classes of the form <Type>[][].
13811         (compile_method): Ditto.
13812
13813         * aot-runtime.c (decode_klass_info): Ditto.
13814
13815         * mini.c (mono_method_to_ir): Call mono_get_got_var () in a place where it is
13816         needed by the code generated by inssel.brg. Also fix a warning.
13817
13818 Thu Jan 18 17:55:22 CET 2007 Paolo Molaro <lupus@ximian.com>
13819
13820         * mini.c: deal with enums that become genericinsts by
13821         being nested in a generic class (bug #79956).
13822
13823 Thu Jan 18 16:52:56 CET 2007 Paolo Molaro <lupus@ximian.com>
13824
13825         * mini.c: match the generic definition to check for
13826         private access with generic types (bug #78431).
13827
13828 Thu Jan 18 11:50:13 CET 2007 Paolo Molaro <lupus@ximian.com>
13829
13830         * genmdesc.pl, Makefile.am: perl implementation of genmdesc,
13831         to make life easier for people cross-compiling that insist on not
13832         using scratchbox.
13833
13834 2007-01-17 Mark Mason <mason@broadcom.com>
13835
13836         * inssel-long.brg: patch to deal with mips missing flags
13837         * inssel-long32-mips.brg: implement overflow checks
13838         * insset-mips.brg: implement overflow checks
13839         * mini-mips.h: implement conditional exception handling
13840         * mini-mips.c: add mips_emit_exc_by_name(), implement conditional exception handling.
13841           Remove unused code, minor cleanups.
13842         * exceptions-mips.c: minor cleanups
13843         * mini-ops.h: add mips conditional exception ops
13844         * cpu-mips.md: add mips conditional exception ops
13845
13846         
13847 Wed Jan 17 19:22:34 CET 2007 Paolo Molaro <lupus@ximian.com>
13848
13849         * inssel.brg: patch from Mark Mason <mason@broadcom.com>
13850         to deal with mips missing of flags.
13851
13852 Tue Jan 16 20:01:01 CET 2007 Paolo Molaro <lupus@ximian.com>
13853
13854         * exceptions-ppc.c: execute fault handlers.
13855
13856 Tue Jan 16 19:54:44 CET 2007 Paolo Molaro <lupus@ximian.com>
13857
13858         * mini-ppc.c: handle missing call locationss with FORCE_INDIR_CALL.
13859
13860 Tue Jan 16 13:14:31 CET 2007 Paolo Molaro <lupus@ximian.com>
13861
13862         * mini.c: handle also floating point values in initialize_array.
13863
13864 Tue Jan 16 12:42:40 CET 2007 Paolo Molaro <lupus@ximian.com>
13865
13866         * mini.c, aot-runtime.c, aot-compiler.c: enable aot compilation of
13867         array initialization and make it conditional on the intrins option.
13868
13869 Tue Jan 16 11:28:45 CET 2007 Paolo Molaro <lupus@ximian.com>
13870
13871         * mini.h, patch-info.h, Makefile.am, aot-compiler.c: reduce
13872         relocations and put the patch info names close to the enum definition.
13873
13874 2007-01-15 Mark Mason <mason@broadcom.com>
13875
13876         * basic.cs, exceptions.cs: break up large tests to increase debugability.
13877
13878 Mon Jan 15 18:57:14 CET 2007 Paolo Molaro <lupus@ximian.com>
13879
13880         * mini.c: optimized RuntimeHelpers::InitializeArray () calls.
13881
13882 2007-01-12  Raja R Harinath  <rharinath@novell.com>
13883
13884         * mini.c (mono_method_to_ir): Use new MonoGenericContext accessor.
13885
13886 Thu Jan 11 11:16:42 CET 2007 Paolo Molaro <lupus@ximian.com>
13887
13888         * Makefile.am: distribute the mips sources.
13889
13890 Wed Jan 10 19:49:33 CET 2007 Paolo Molaro <lupus@ximian.com>
13891
13892         * mini-codegen.h: handle bug #80489 here, by excluding ecx
13893         directly.
13894
13895 Wed Jan 10 19:08:05 CET 2007 Paolo Molaro <lupus@ximian.com>
13896
13897         * cpu-x86.md: back out for now as this triggers other regressions.
13898
13899 Wed Jan 10 18:33:16 CET 2007 Paolo Molaro <lupus@ximian.com>
13900
13901         * cpu-x86.md: force src1 and dest regpair for long shift instructions
13902         to eax:edx, so ecx can't get allocated to them (bug #80489).
13903
13904 Tue Jan 9 12:36:11 CET 2007 Paolo Molaro <lupus@ximian.com>
13905
13906         * mini.c, mini-exceptions.c: enabled running fault handlers
13907         (bug #80469).
13908
13909 2007-01-03  Miguel de Icaza  <miguel@novell.com>
13910
13911         * driver.c: If nothing fail, do not use the string "failed",
13912         because it makes it very annoying to view test result logs on the
13913         web. 
13914
13915 2006-12-30  Miguel de Icaza  <miguel@novell.com>
13916
13917         * debug-debugger.c (mono_debugger_main): Rename "main" to
13918         "main_method" to prevent a warning.
13919
13920         Remove a warning for unused field.
13921
13922 2006-12-28  Martin Baulig  <martin@ximian.com>
13923
13924         * debug-debugger.c
13925         (MONO_DEBUGGER__debugger_info): Add `get_lmf_addr'.
13926
13927 2006-12-22  Martin Baulig  <martin@ximian.com>
13928
13929         * mdb-debug-info32.s, mdb-debug-info64.s: New files.
13930         Put a pointer to the `MONO_DEBUGGER__debugger_info' into a
13931         seperate `.mdb_debug_info' section, so we can access it from the
13932         debugger even if the binary is stripped.
13933
13934         * debug-debug.c: Reference the `MONO_DEBUGGER__debugger_info_ptr'
13935         from the `.mdb_debug_info' here to prevent the linker from
13936         removing that section.
13937
13938         * Makefile.am (mono_debugger_sources): Add mdb-debug-info32.s /
13939         mdb-debug-info64.s.
13940
13941 2006-12-19  Robert Jordan  <robertj@gmx.net>
13942
13943         * mini-x86: enable the code to return small structures in
13944         registers for FreeBSD as well. Fixes bug #80278.
13945         * aot-runtime.c: Include sys/wait.h for WEXITSTATUS/WIFEXITED.
13946
13947 Mon Dec 18 19:47:17 CET 2006 Paolo Molaro <lupus@ximian.com>
13948
13949         * mini-x86.c: align the stack when calling the profiler
13950         function instrumenting the prolog (on OSX).
13951
13952 Thu Dec 14 15:22:43 CET 2006 Paolo Molaro <lupus@ximian.com>
13953
13954         * mini.c: emit a break opcode where Debugger.Break () is called.
13955
13956 2006-12-13  Miguel de Icaza  <miguel@novell.com>
13957
13958         * mini.c (mono_method_to_ir): Provide useful information on this
13959         assert, to prevent others from debugging like I did.
13960
13961 Tue Dec 12 17:01:38 CET 2006 Paolo Molaro <lupus@ximian.com>
13962
13963         * mini.c: enable code which was incorrectly commented
13964         (bug #80235).
13965
13966 Tue Dec 12 16:28:15 CET 2006 Paolo Molaro <lupus@ximian.com>
13967
13968         * mini-x86.c: enable on OSX, too, the code to return small
13969         structures in registers.
13970
13971 Mon Dec 11 19:22:35 CET 2006 Paolo Molaro <lupus@ximian.com>
13972
13973         * mini-x86.c: remove the use of the dynamic code manager here, too.
13974
13975 Mon Dec 11 19:08:33 CET 2006 Paolo Molaro <lupus@ximian.com>
13976
13977         * mini.h, debug-debugger.c, tramp-*.c: fixed 
13978         mono_debugger_create_notification_function() to use
13979         mono_global_codeman_reserve () instead of a dynamic code manager.
13980
13981 Tue Dec 5 17:54:50 CET 2006 Paolo Molaro <lupus@ximian.com>
13982
13983         * mini.c, jit-icalls.h, jit-icalls.c: remove the 
13984         ves_array_element_address() jit icall and use a generated
13985         managed method instead (which is about 4 times faster for a rank 3
13986         array access).
13987
13988 2006-11-29  Mark Mason  <mason@broadcom.com>
13989
13990         * basic-calls.cs: additional tests for passing
13991         structures as function arguments.
13992
13993 2006-11-29  Mark Mason  <mason@broadcom.com>
13994
13995         * mini-mips.h: disable custom exception handling
13996         * mini-mips.c: throw/rethrow should use jalr to call
13997         exception stubs.  Fixed bug with passing structures
13998         by value. More support for tracing floating point
13999         functions.
14000
14001 Wed Nov 29 20:28:17 CET 2006 Paolo Molaro <lupus@ximian.com>
14002
14003         * mini.c: fixed typo in the soft-float ldind.r4 handling
14004         (bug #80086).
14005
14006 Wed Nov 29 11:33:03 CET 2006 Paolo Molaro <lupus@ximian.com>
14007
14008         * mini.c, mini.h, driver.c: added --runtime command line
14009         option to select a different runtime than the autodetected one.
14010         * jit.h: added API for embedders to initialize with a specific
14011         runtime version.
14012
14013 Tue Nov 28 21:24:55 CET 2006 Paolo Molaro <lupus@ximian.com>
14014
14015         * mini.c: handle also boxing of r4 values (bug #80024).
14016
14017 Tue Nov 28 19:45:44 CET 2006 Paolo Molaro <lupus@ximian.com>
14018
14019         * mini-ppc.c: force indirect calls until we reserve
14020         enough address space for all the generated code.
14021
14022 Tue Nov 28 20:04:34 GMT 2006 Paolo Molaro <lupus@ximian.com>
14023
14024         * exceptions-arm.c: workaround bugs in the libc definition
14025         of struct ucontext.
14026
14027 Mon Nov 27 15:13:41 CET 2006 Paolo Molaro <lupus@ximian.com>
14028
14029         * inssel.brg: fixes from me and Mark Mason.
14030
14031 2006-11-23  Dick Porter  <dick@ximian.com>
14032
14033         * wapihandles.c (mini_wapi_seminfo): No need to adjust the counter
14034         semaphore display now we've fixed the initial value
14035
14036 Wed Nov 22 11:04:37 CET 2006 Paolo Molaro <lupus@ximian.com>
14037
14038         * inssel.brg: partially revert the last change to fix the build.
14039
14040 2006-11-21  Mark Mason  <mason@broadcom.com>
14041
14042         * inssel.brg: Add and use compare-and-branch macros to support
14043         architectures that do not have condition code registers (ie. MIPS).
14044         * *-mips.{c,brg,md}: Fix copyright statements
14045
14046 2006-11-20  Mark Mason  <mason@broadcom.com>
14047
14048         * Makefile.am: remove mini-codegen.c from list of MIPS sources
14049         * mini.c: Allow GET_CONTEXT to be specified by the arch port
14050         * mini.h: Added declaration for mono_print_ins()
14051         * mini-codegen.c: added ins_spec initializer for MIPS
14052         * mini-codegen.c (mono_call_inst_add_outarg_reg): added asserts for
14053         vreg to be virtual and hreg to be non-virtual.
14054         * mini-codegen.c (mono_spillvar_offset): assert if MIPS - spilling
14055         is not yet working/implemented correctly.
14056         * mini-codegen.c (print_ins): rename to mono_print_ins(), make
14057         non-static, fixup calls to print_ins() from other parts in the file.
14058
14059 2006-11-20  Mark Mason  <mason@broadcom.com>
14060
14061         * basic-calls.cs: added tests for passing structures as arguments
14062         to calls.
14063
14064 Mon Nov 20 19:40:11 CET 2006 Paolo Molaro <lupus@ximian.com>
14065
14066         * inssel-long32.brg: optimize signed division by power of two.
14067
14068 Mon Nov 20 17:37:58 CET 2006 Paolo Molaro <lupus@ximian.com>
14069
14070         * mini-arm.c: added support for interworking with thumb code
14071         (mono must be still be built using the ARM instruction encoding).
14072
14073 2006-11-19  Miguel de Icaza  <miguel@novell.com>
14074
14075         * mini.c (type_from_op): Separate the conditions for OP_EQ as the
14076         verifier has different rules for it.   Fixes a few verifier issues
14077         in the test suite.
14078
14079         * mini-exceptions.c (mono_handle_native_sigsegv): Put the message
14080         at the end, so people know what happened.
14081
14082 Thu Nov 16 14:07:18 CET 2006 Paolo Molaro <lupus@ximian.com>
14083
14084         * brach-opts.c: in optimize_exception_target() make sure we
14085         are in a catch clause (fixes bug #79871).
14086
14087 Thu Nov 16 12:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
14088
14089         * jit-icalls.c, jit-icalls.h, mini-arm.c, mini.c:
14090         more soft-float support fixes.
14091
14092 Wed Nov 15 18:45:47 GMT 2006 Paolo Molaro <lupus@ximian.com>
14093
14094         * mini-arm.c, inssel-arm.brg: ABI fix for longs and doubles
14095         that are passed half on the stack and half in registers.
14096
14097 Wed Nov 15 17:00:27 CET 2006 Paolo Molaro <lupus@ximian.com>
14098
14099         * mini-ops.h, mini-arch.h, helpers.c, Makefile.am:
14100         more mips integration work from Mark E Mason 
14101         <mark.e.mason@broadcom.com>.
14102
14103 Wed Nov 15 16:34:03 CET 2006 Paolo Molaro <lupus@ximian.com>
14104
14105         * exceptions-mips.c, inssel-mips.brg, mini-mips.h,
14106         cpu-mips.md, inssel-long32-mips.brg, mini-mips.c,
14107         tramp-mips.c: added sources for the mips port, not
14108         integrated in the build yet. Contributed by
14109         Mark E Mason <mark.e.mason@broadcom.com>.
14110
14111 2006-11-14  Neale Ferguson <neale@sinenomine.net>
14112
14113         * mini-s390[x].c (is_regsize_var): Support PTR/FNPTR too.
14114
14115 Tue Nov 14 16:06:37 CET 2006 Paolo Molaro <lupus@ximian.com>
14116
14117         * Makefile.am, inssel-float.brg, inssel-softfloat.brg:
14118         put the soft-float rules in its own file since it seems to
14119         break s390 compilation.
14120
14121 Mon Nov 13 15:54:38 CET 2006 Paolo Molaro <lupus@ximian.com>
14122
14123         * mini-arm.c: fixed wrnings.
14124
14125 Fri Nov 10 19:18:32 CET 2006 Paolo Molaro <lupus@ximian.com>
14126
14127         * mini-arm.c, mini-arm.h, cpu-arm.md, inssel-float.brg,
14128         inssel-arm.brg: ARM support for soft-float.
14129
14130 Fri Nov 10 18:38:15 CET 2006 Paolo Molaro <lupus@ximian.com>
14131
14132         * mini.c, jit-icalls.c, jit-icalls.h: added first cut at handling
14133         loads and stores of 32 bit fp values.
14134
14135 2006-11-10  Zoltan Varga  <vargaz@gmail.com>
14136
14137         * mini-sparc.c (is_regsize_var): Support PTR/FNPTR too.
14138
14139         * tramp-sparc.c (mono_arch_patch_callsite): Fix this function so it actually
14140         works. Fixes #79852 and #79463.
14141
14142 Thu Nov 9 16:56:13 CET 2006 Paolo Molaro <lupus@ximian.com>
14143
14144         * mini.c, mini-codegen.c, jit-icalls.c, jit-icalls.h:
14145         more soft-float support WIP and fixes.
14146
14147 Wed Nov 8 16:40:02 CET 2006 Paolo Molaro <lupus@ximian.com>
14148
14149         * mini-arm.c: some VFP updates.
14150
14151 Tue Nov 7 19:45:51 CET 2006 Paolo Molaro <lupus@ximian.com>
14152
14153         * mini-exceptions.c: 0 is a valid local var offset in some
14154         architectures, don't assert (bug #78508).
14155
14156 Tue Nov 7 18:17:52 GMT 2006 Paolo Molaro <lupus@ximian.com>
14157
14158         * exceptions-arm.c: fixed off by one error in stack walk code.
14159
14160 Tue Nov 7 11:27:26 CET 2006 Paolo Molaro <lupus@ximian.com>
14161
14162         * mini.h, mini.c: more precise tracking of type load exceptions.
14163
14164 2006-11-03  Robert Jordan  <robertj@gmx.net>
14165
14166         * Makefile.am: [WIN32] Add monow.exe target.
14167         * driver.c: [WIN32] Don't detach the console when debugging.
14168         Fixes bug #79797.
14169         
14170 2006-10-30  Miguel de Icaza  <miguel@novell.com>
14171
14172         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Eliminate warning.
14173
14174 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
14175
14176         * aot-compiler.c (emit_method_info): Add a case missed earlier.
14177
14178         * driver.c (mini_regression): Fix --regression with AOT.
14179
14180         * aot-compiler.c (emit_method_info): Fix AOT on amd64.
14181
14182 2006-10-17  Zoltan Varga  <vargaz@gmail.com>
14183
14184         * mini.c (GET_CONTEXT): Correct the definition of this for sparc/linux.
14185
14186         * mini-sparc.h: Don't use sigaction on sparc/linux.
14187
14188         * exceptions-sparc.c: Call mono_arch_flush_icache () in a couple of places.
14189
14190         * mini-sparc.c (mono_sparc_flushw): Call mono_arch_flush_icache ().
14191
14192         * mini-exceptions.c: Add proper include files for getpid ().
14193
14194 2006-10-16  Zoltan Varga  <vargaz@gmail.com>
14195
14196         * aot-runtime.c (mono_aot_get_method): Change this to return the native code
14197         address instead of a MonoJitInfo* to avoid decoding the exception info for the
14198         method.
14199
14200         * aot-runtime.c aot-compiler.c: Use uint16 instead of uint32 entries in the
14201         name cache to reduce its size.
14202
14203         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
14204
14205 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
14206
14207         * mini-x86.c: Save/restore the current LMF structure more efficiently using
14208         the mono_lmf TLS variable.
14209
14210         * exceptions-x86.c (mono_arch_find_jit_info): Only access lmf->method in 
14211         trampoline lmf frames.  
14212
14213         * mini-sparc.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Define this on sparc as well.
14214
14215 2006-10-14  Zoltan Varga  <vargaz@gmail.com>
14216
14217         * mini-amd64.c: Save/restore the current LMF structure more efficiently using
14218         the mono_lmf TLS variable.
14219
14220         * mini-exceptions.c: Access the LMF structure through accessors.
14221
14222         * mini.c: Allow the backends the option for storing the lmf in a dedicated TLS 
14223         variable instead of in jit_tls->lmf.
14224
14225         * mini-x86.c mini-amd64.c: Update after lmf->lmf_addr name change.
14226         
14227         * exceptions-amd64.c (mono_arch_find_jit_info): Only access lmf->method in 
14228         trampoline lmf frames.
14229
14230         * mini-amd64.c (mono_arch_emit_prolog): Do not set lmf->method as it is not needed.
14231
14232 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
14233
14234        * mini.c trace.c mini-x86.c: Revert these too.
14235         
14236        * mini.c trace.c mini-x86.c: Remove warning workarounds after the mono_type_size ()
14237        signature change.
14238
14239 Tue Oct 10 11:35:20 CEST 2006 Paolo Molaro <lupus@ximian.com>
14240
14241         * genmdesc.c: removed now dead code.
14242
14243 2006-10-09  Robert Jordan <robertj@gmx.net>
14244
14245         * mini.c: Disable the CrashReporter on MacOS X; Fixes #74869
14246
14247 Mon Oct 9 17:06:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
14248
14249         * mini.h: do not leave gaps in the opcode values.
14250
14251 Mon Oct 9 16:08:51 CEST 2006 Paolo Molaro <lupus@ximian.com>
14252
14253         * jit-icalls.h: flag functions as internal here, too.
14254
14255 Mon Oct 9 15:58:18 CEST 2006 Paolo Molaro <lupus@ximian.com>
14256
14257         * mini.h, aliasing.h, declsec.h, regalloc.h, trace.h: mark internal
14258         functions with the internal attribute.
14259
14260 Mon Oct 9 15:52:45 CEST 2006 Paolo Molaro <lupus@ximian.com>
14261
14262         * aot-compiler.c: fclose the file descriptor in the profile read loop.
14263
14264 Fri Oct 6 16:01:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
14265
14266         * mini.c, jit-icalls.c, inssel-float.brg: beginnings of support
14267         for soft-float.
14268
14269 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
14270
14271         * mini-x86.c (emit_load_volatile_arguments): New function to handle arguments of
14272         tail calls as on other platforms.
14273
14274         * mini.c (mono_method_to_ir): Fix a few tailcall problems. Fixes #79557.
14275
14276         * iltests.il: Add a few tailcall tests.
14277
14278 Tue Oct 3 16:33:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
14279
14280         * driver.c: fix loop for old compilers (bug #79521).
14281
14282 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
14283
14284         * mini-exceptions.c (ves_icall_get_trace): Remove debug printf.
14285
14286         * aot-runtime.c (mono_aot_get_class_from_name): Avoid a memory allocation.
14287
14288         * aot-compiler.c: Add a new option 'metadata-only' to only emit the cached
14289         metadata without any code.
14290
14291         * mini-exceptions.c (mono_handle_native_sigsegv): Add some code to print out
14292         more precise debugging information using gdb.
14293
14294 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
14295
14296         * inssel-ia64.brg: Make the helper methods static.
14297
14298 Thu Sep 28 16:40:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
14299
14300         * inssel-x86.brg: make the helper methods static.
14301
14302 Thu Sep 28 16:31:32 CEST 2006 Paolo Molaro <lupus@ximian.com>
14303
14304         * inssel-amd64.brg, mini-amd64.c: small cleanup, use inst_call.
14305
14306 Thu Sep 28 15:36:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
14307
14308         * mini.c: updates for monoburg changes.
14309         * inssel.brg: make a few helper functions static as they should.
14310
14311 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
14312
14313         * Makefile.am: Move mini-codegen.c to common_sources.
14314
14315 Wed Sep 27 15:07:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
14316
14317         * mini.h: instroduce inst_call in MonoInst for use in OUTARG
14318         instructions.
14319         * Makefile.am, cpu-g4.md, inssel-ppc.brg, mini-codegen.c, mini-ppc.c,
14320         mini-ppc.h: port to use the common local register allocator.
14321
14322 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
14323
14324         * mini.h: Remove the comment too then.
14325
14326 Tue Sep 26 14:02:58 CEST 2006 Paolo Molaro <lupus@ximian.com>
14327
14328         * mini.h: put back backend.data which is to be used shortly and
14329         doesn't increase the size of MonoInst. If any 64 bit arch aligned
14330         pointers on 4 byte boundaries it'd have much bigger issues running
14331         and you can ifdef it out anyway.
14332
14333 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
14334
14335         * mini.h (MonoInst): Remove backend.data field since it is unused and increases
14336         MonoInst size by 4 bytes on 64 bit machines.
14337
14338 Tue Sep 26 11:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
14339
14340         * *.{c,h,brg}: long due removal of the unused field in MonoInst and
14341         replacement with more meaningful field names. Arch maintainers, please
14342         check the assigned names are good enough for your arch.
14343
14344 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
14345
14346         * cpu-ia64.md mini-ia64.c inssel-ia64.brg mini-ops.h: Get rid of the 
14347         OP_IA64_FETCHADD opcodes, use OP_ATOMIC_ADD_IMM_NEW opcodes instead.
14348
14349 Mon Sep 25 11:05:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
14350
14351         * mini.h, driver.c, optflags-def.h, Makefile.am: reduce runtime
14352         relocations and memory requirements, put the optimization flags
14353         definitions in their own file.
14354
14355 2006-09-24  Zoltan Varga  <vargaz@gmail.com>
14356
14357         * jit-icalls.c (mono_helper_stelem_ref): Remove this unused helper function.
14358
14359         * mini.c (mini_init): Remove reference to mono_helper_stelem_ref.
14360
14361 2006-09-22  Zoltan Varga  <vargaz@gmail.com>
14362
14363         * mini-amd64.c (add_valuetype): Fix an uninitialized memory issue.
14364
14365 Thu Sep 21 19:06:09 CEST 2006 Paolo Molaro <lupus@ximian.com>
14366
14367         * inssel.brg: use the correct function to get the size of an item
14368         in an array, given an element class.
14369         * aot-compiler.c: do not access class->class_size directly.
14370
14371 Thu Sep 21 12:10:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
14372
14373         * mini.h, debug-mini.c: added a debugging function to print
14374         info about local variables and arguments in a jitted method.
14375
14376 2006-09-20  Zoltan Varga  <vargaz@gmail.com>
14377
14378         * mini-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
14379
14380         * exceptions-ia64.c: Fix some problems reported by Bill Seurer <seurer@us.ibm.com>.
14381
14382 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
14383
14384         * mini-ia64.c (mono_arch_call_opcode): Avoid using the same loop index in the
14385         inner and outer loops when passing vtypes.
14386
14387 Tue Sep 19 17:53:40 CEST 2006 Paolo Molaro <lupus@ximian.com>
14388
14389         * mini-ppc.c: take into account the cpu errata for cache flushing
14390         which caused some random errors (bug #79381).
14391
14392 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
14393
14394         * mini-amd64.c (mono_arch_emit_exceptions): Emit the call to 
14395         mono_arch_throw_corlib_exception using emit_call () too. Fixes #79271.
14396
14397 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
14398
14399         * aot-runtime.c (load_aot_module): Return immeditely if the AOT module was already
14400         loaded.
14401
14402         * exceptions-amd64.c (gregs_from_ucontext): Apply another patch from the
14403         freebsd ports tree.
14404
14405         * mini-amd64.c (emit_call): Avoid near calls on freebsd.
14406         (mono_arch_patch_code): Remove the unused handling of MONO_PATCH_INFO_CLASS_INIT.
14407
14408         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix check for 32 bitness of
14409         displacement.
14410
14411 2006-09-13  Zoltan Varga  <vargaz@gmail.com>
14412
14413         * aot-runtime.c (load_aot_module_from_cache): Fix PPC build.
14414
14415 2006-09-12  Zoltan Varga  <vargaz@gmail.com>
14416
14417         * mini.c (UNVERIFIED): Add a 'break-on-unverified' MONO_DEBUG option so this 
14418         macro does not have to be changed during debugging.
14419
14420         * 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>.
14421
14422         * cpu-pentium.md: Rename this to cpu-x86.md for consistency with other platforms.
14423
14424         * Makefile.am mini-x86.c mini-codegen.c: Rename pentium_desc to x86_desc.
14425         
14426         * mini.c (mini_get_ldelema_ins): Allow ldelema2d optimization if 
14427         MONO_ARCH_NO_EMULATE_MUL is defined.
14428
14429         * mini-ia64.h (MONO_ARCH_CALLEE_FREGS): Reserve f33 for use by instructions.
14430
14431         * mini-ia64.h: Define MONO_ARCH_NO_EMULATE_MUL.
14432
14433         * mini-ia64.c: Implement CEE_MUL based on gcc emitted code.
14434
14435         * mini-ia64.c (mono_arch_lowering_pass): Optimize store_membase_imm with offset==0.
14436         
14437 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
14438
14439         * mini-x86.h mini-amd64.h mini-exceptions.c: Move the bsd specific MAP_ANON
14440         stuff to mini-exceptions.c where it is used.
14441
14442         * mini-sparc.c (mono_arch_setup_jit_tls_data): Remove the duplicate altstack
14443         setup code, the real one is in mini-exceptions.c.
14444
14445         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Move all dependencies on the
14446         layout of ucontext_t to helper functions in exceptions-amd64.c, as on x86. Add
14447         some changes from the freebsd ports tree.
14448
14449         * mini-amd64.h exceptions-amd64.c: Fix the amd64 build. Get rid of the SC_
14450         constants.
14451         
14452         * mini-amd64.h: Freebsd has MAP_ANON instead of MAP_ANONYMOUS.
14453
14454 Mon Sep 11 13:18:55 CEST 2006 Paolo Molaro <lupus@ximian.com>
14455
14456         * mini.c: on Linux, check for /proc to be mounted
14457         (bug# 79351, novell bug#201204).
14458
14459 Mon Sep 11 13:10:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
14460
14461         * mini.c: handle cases where pthread_attr_getstack() behaves
14462         incorrectly (bug #78096).
14463
14464 Mon Sep 11 11:31:10 BST 2006 Paolo Molaro <lupus@ximian.com>
14465
14466         * mini-arm.c: support larger stack frames (bug #79272).
14467
14468 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
14469
14470         * aot-runtime.c (mono_aot_get_class_from_name): Remove a debug printf.
14471
14472         * aot-compiler.c: Add a hash table to the AOT file mapping class names to typedef 
14473         tokens.
14474
14475         * aot-runtime.c (mono_aot_get_class_from_name): New function used by 
14476         mono_class_from_name () to find a class from its name.
14477
14478         * mini.c (mini_init): Register mono_aot_get_class_from_name () with the runtime.
14479
14480 2006-09-07  Zoltan Varga  <vargaz@gmail.com>
14481
14482         * mini-amd64.c (emit_call): Avoid strstr () call if possible.
14483
14484 2006-09-05  Kornel Pal  <kornelpal@gmail.com>
14485
14486         * Makefile.am: Renamed mono-1.dll to mono.dll. (-avoid-version)
14487
14488 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
14489
14490         * mini.c (mono_icall_get_wrapper): Fix a race condition on initializing
14491         callinfo->trampoline.
14492
14493         * mini-amd64.c (emit_call): Special case calls to the vararg array icalls. Hopefully
14494         fixes #79271.
14495         (mono_arch_patch_code): Add some debug code to help track down similar failures in the
14496         future.
14497
14498 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
14499
14500         * aot-runtime.c (mono_aot_plt_resolve): Add an assert.
14501
14502 2006-09-02  Zoltan Varga  <vargaz@gmail.com>
14503
14504         * tramp-x86.c (mono_arch_create_specific_trampoline): Don't increase
14505         stats.method_trampolines, it is already done by the generic trampoline code.
14506
14507         * tramp-amd64.c (mono_arch_create_specific_trampoline): Ditto.
14508         
14509 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
14510
14511         * mini.c: Remove some references to mono_compile_aot, and use cfg->compile_aot instead.
14512
14513         * aot-runtime.c: Add some tweaks to the MONO_AOT_CACHE functionality.
14514
14515         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix a FIXME.
14516
14517         * mini.c (print_jit_stats): Print mscorlib mempool size too.
14518         
14519         * mini.c (print_jit_stats): Print new stats.
14520
14521         * *-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
14522
14523 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
14524
14525         * mini.c (mini_get_ldelema_ins): Fix verifier error when calling
14526         Address on two dimensional arrays. Fixes #78729.
14527
14528         * mini.h (MonoCompile): Add a 'skip_visibility' field.
14529
14530         * mini.c (method_to_ir): Disable visibility checks if skip_visibility is set on
14531         a method.
14532
14533         * mini-amd64.c (mono_arch_emit_exceptions): Fix assertion introduced by the last change.
14534
14535         * mini.c (mono_runtime_cleanup_handlers): Clean up signal handlers on unix. Fixes
14536         #79130.
14537         
14538         * mini.c (handle_array_new): Applied patch from "briaeros007". Fix
14539         a race condition.
14540         (mini_get_ldelema_ins): Ditto.
14541
14542 2006-08-30  Zoltan Varga  <vargaz@gmail.com>
14543
14544         * mini-amd64.c (mono_arch_emit_exceptions): Align fp constants to 16 bytes.
14545         (mono_arch_output_basic_block): Avoid unaligned accesses in FNEG implementation. 
14546         Fixes #79213.
14547
14548 2006-08-29 Neale Ferguson <neale@sinenomine.net>
14549
14550         * mini-s390.c, mini-s390x.c: Fix VARARG case processing with 0 arguments. Add
14551         mono_arch_get_patch_offset as a dummy entry point to allow successful link. 
14552
14553         * exceptions-s390x.c: Cosmetic change.
14554
14555         * tramp-s390.c: Fix warning.
14556
14557         * cpu-s390.md: Correct length of mul_imm.
14558
14559 Wed Aug 23 19:24:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
14560
14561         * aot-compiler.c: added binary writer with ELF backend
14562         implementation (only on Linux/x86 for now).
14563
14564 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
14565
14566         * Makefile.am: Don't run net 2.0 AOT tests.
14567
14568         * aot-compiler.c (compile_method): Skip methods with tail calls as well.
14569         (mono_compile_assembly): Skip net 2.0 assemblies as well.
14570
14571         * aot-runtime.c (load_patch_info): Fix an uninitialized memory error.
14572
14573 Fri Aug 18 19:38:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
14574
14575         * aot-compiler.c: simplified and refactored the asm-writing code
14576         to allow different backends.
14577
14578 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
14579
14580         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
14581
14582         * aot-compiler.c aot-runtime.c: Reorg the GOT slot allocation code a 
14583         little. Share patches of type TYPE_FROM_HANDLE as well.
14584
14585         * mini.c (mono_patch_info_equal): New helper function.
14586         (mono_patch_info_hash): Ditto.
14587
14588         * aot-compiler.c (emit_method_code): Fix s390 build.
14589
14590         * mini.c (mono_allocate_stack_slots_full): Fix yet another place where byref
14591         is not handled because it is stored as a flag and not as a type ctor. Fixes
14592         #79016.
14593
14594 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
14595
14596         * aot-compiler.c: Fix computation of GOT slot statistics.
14597         
14598         * aot-compiler.c aot-runtime.c: Implement sharing of GOT slots for classes/fields.
14599         Also remove support for not PIC AOT.
14600
14601         * mini.h: Bump AOT file format version.
14602
14603         * objects.cs: Add a test for #78990.
14604
14605         * mini-x86.c (mono_arch_output_basic_block): Applied patch from Peter Dettman
14606         (peter.dettman@iinet.net.au). Fixes #79087.
14607
14608         * basic-long.cs: Add a test for the above.
14609
14610 2006-08-16  Zoltan Varga  <vargaz@gmail.com>
14611
14612         * aot-compiler.c (get_got_offset): Add a cache for GOT entries, not yet used.
14613         
14614         * aot-compiler.c (get_plt_index): Add a cache for wrappers too. Simplify the
14615         code somewhat.
14616
14617 2006-08-15  Zoltan Varga  <vargaz@gmail.com>
14618
14619         * mini.c (mini_init): Fix registration of idiv/imul opcodes which can throw
14620         exceptions.
14621
14622 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
14623
14624         * mini.c: Don't verify COM proxy invoke calls
14625         
14626
14627 2006-08-10  Dick Porter  <dick@ximian.com>
14628
14629         * wapihandles.c (mini_wapi_seminfo): More info, to help track down
14630         which process is holding semaphores locked.
14631
14632 2006-08-08  Zoltan Varga  <vargaz@gmail.com>
14633
14634         * mini-ia64.c mini-amd64.c: Fix #79027.
14635
14636         * mini-sparc.c (mono_arch_call_opcode): Fix the previous patch.
14637
14638         * mini-sparc.c (mono_arch_call_opcode): Fix #79027.
14639
14640         * mini-x86.c (mono_arch_call_opcode): Handle the case where there are no
14641         implicit arguments in a vararg call. Fixes #79027.
14642
14643 2006-08-07  Zoltan Varga  <vargaz@freemail.hu>
14644
14645         * mini.c (mono_get_element_address_signature): Use CDECL calling convention on windows. Fixes #78969.
14646         (mono_get_array_new_va_signature): Ditto.
14647
14648 2006-08-05  Zoltan Varga  <vargaz@gmail.com>
14649
14650         * aot-runtime.c: Call init_plt lazily.
14651
14652         * inssel-long.brg: Fix unsigned long->int conversion.
14653
14654         * aot-runtime.c (init_plt): Remove a redundant make_writable () call.
14655
14656         * aot-compiler.c aot-runtime.c: Reorganize the file structure in the amd64 case so
14657         that most data is now in the .rss/.data section.
14658
14659 2006-08-04  Zoltan Varga  <vargaz@gmail.com>
14660
14661         * aot-compiler.c: Correct the computation of the 'direct-calls' statistic.      
14662
14663         * aot-compiler.c: Print the number of methods without GOT slots as a statistics.
14664
14665         * aot-compiler.c aot-runtime.c tramp-amd64.c: Resurrect amd64 AOT support.
14666
14667         * tramp-amd64.c (mono_arch_patch_callsite): Fix a warning.
14668
14669         * jit-icalls.c (mono_helper_compile_generic_method): Unbox vtypes since this is a
14670         virtual call. Fixes #79010.
14671
14672         * mini.c (mono_method_to_ir): Pass an additional out arg to compile_generic_method 
14673         and use the result as the this argument in the real call.
14674
14675         * generics.2.cs: Add a new test for #79010.
14676         
14677 2006-08-03  Zoltan Varga  <vargaz@gmail.com>
14678
14679         * mini-x86.c: Fix a warning.
14680
14681         * aot-compiler.c: Add a bunch of statistics.
14682
14683         * mini.c (inline_method): Disable inlining in out-of-line bblocks.
14684
14685 2006-08-02  Zoltan Varga  <vargaz@gmail.com>
14686
14687         * mini-arch.h Makefile.am mini-ops.h mini-codegen.c: More alpha updates.
14688
14689 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
14690
14691         * 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>.
14692
14693 2006-07-13  Miguel de Icaza  <miguel@novell.com>
14694
14695         * mini.c (mono_method_to_ir): Obtain the original method in the
14696         CIL stream and use this to perform validation.
14697
14698         Fixed: #78816
14699
14700 2006-07-19  Zoltan Varga  <vargaz@gmail.com>
14701
14702         * mini-x86.c (mono_arch_get_argument_info): Fix a warning.
14703         (mono_arch_call_opcode): Ditto.
14704
14705         * mini.c (mono_method_to_ir): Clear ins_flag at the end of CEE_CALL. Fixes
14706         #78826.
14707
14708         * mini.c (mono_patch_info_dup_mp): New helper function.
14709         
14710         * aot-compiler.c (compile_method): Fix some of the memory allocated during
14711         compilation. Fixes #78827.
14712
14713 2006-07-18  Kornel Pal  <kornelpal@gmail.com>
14714
14715         * declsec.c: Use original security informations for
14716           MONO_WRAPPER_MANAGED_TO_MANAGED.
14717
14718 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
14719
14720         * mini.c: Allow Com Interop methods/classes and
14721         don't verify COM wrapper calls
14722         
14723
14724 2006-07-13  Zoltan Varga  <vargaz@gmail.com>
14725
14726         * inssel-long32.brg: Fix long->i4 checked conversion.
14727
14728         * exceptions.cs: Add a test for the above.
14729
14730 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
14731
14732         * mini-exceptions.c (mono_setup_altstack): Fix a memory leak.
14733
14734         * mini.c: Applied patch from Joachim Ante (joe@otee.dk). Fix some shutdown 
14735         leaks.
14736
14737         * helpers.c (mono_disassemble_code): Avoid using fixed temporary files. Fixes
14738         #78775.
14739
14740 2006-07-03  Zoltan Varga  <vargaz@gmail.com>
14741
14742         * mini.c: Fix solaris/x86 exception handling.
14743
14744         * Makefile.am: Get rid of $(ICU_LIBS).
14745
14746 2006-07-02  Zoltan Varga  <vargaz@gmail.com>
14747
14748         * mini-exceptions.c: Fix handling of unhandled SIGSEGV exceptions on ia64.
14749         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Use MONO_INIT_CONTEXT_FROM_CURRENT.
14750         (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): Ditto.
14751
14752         * mini-ia64.h (MONO_CONTEXT_SET_FUNC): New macro.
14753
14754         * mini-exceptions.c (mono_handle_native_sigsegv): Prevent infinite loops if
14755         this function causes a SIGSEGV.
14756
14757 2006-06-22  Zoltan Varga  <vargaz@gmail.com>
14758
14759         * mini.c: Remove unused solaris/x86 includes.
14760
14761 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
14762
14763         * jit.h: Add G_BEGIN_DECLS/G_END_DECLS.
14764
14765 2006-06-20  Jb Evain  <jbevain@gmail.com>
14766
14767         * cpu-g4.md: fix max length of start_handler instruction.
14768
14769 2006-06-20  Massimiliano Mantione  <massi@ximian.com>
14770         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78656.
14771
14772 2006-06-16  Massimiliano Mantione  <massi@ximian.com>
14773         * ssa.c: Fixed bug 78653 for SSA based deadce.
14774         * mini.h: added MONO_INST_DEFINITION_HAS_SIDE_EFFECTS flag go
14775         MonoInst.flags, used in SSA based deadce.
14776         * aliasing.c: Fixed bug 78653 for "fastpath" deadce.
14777         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78653.
14778
14779 Thu Jun 15 16:52:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
14780
14781         * tramp-ppc.c: don't use malloc () for trampoline code, sometimes
14782         it can end up using non executable memory on ppc64 systems
14783         running ppc32 userspace (fix from Johannes Berg).
14784
14785 2006-06-14  Dick Porter  <dick@ximian.com>
14786
14787         * wapihandles.c: Fix a bunch of signed/unsigned warnings from gcc
14788         4.1.1
14789
14790 2006-06-13  Massimiliano Mantione  <massi@ximian.com>
14791         * mini.c: Made so that inline is locally disabled if it would
14792         trigger a .cctor, because too many apps depend on this behavior
14793         (which seems to be also the one of the MS CLR).
14794
14795 2006-06-13  Zoltan Varga  <vargaz@gmail.com>
14796
14797         * mini-amd64.c (mono_emit_stack_alloc): Fix initialization of localloc'ed memory.
14798         No idea why this worked before.
14799
14800         * branch-opts.c (mono_branch_optimize_exception_target): Avoid branches
14801         which branch to outer exception clauses since they could skip the
14802         inner finally clauses. Fixes #78633.
14803
14804         * exceptions.cs: Add a test for the above.
14805
14806         * mini.c (merge_basic_blocks): Nullify the branch at the end of the first bb.
14807         Fixes #78629.
14808
14809         * iltests.il: Add a test for the above.
14810
14811 2006-06-12  Zoltan Varga  <vargaz@gmail.com>
14812
14813         * mini.c (remove_block_if_useless): Do not remove the bblock immediately
14814         after the end of a try bblock, to prevent asserts in mini_method_compile ().
14815
14816         * iltests.il: Add a test for the above.
14817
14818 2006-06-10  Zoltan Varga  <vargaz@gmail.com>
14819
14820         * mini-ia64.c (mono_arch_lowering_pass): Remove some code duplication.
14821         
14822         * mini-ia64.c inssel-ia64.brg: Implement the new net 2.0 Interlocked.Add
14823         methods as instrinsics.
14824
14825 2006-06-09  Wade Berrier <wberrier@novell.com>
14826
14827         * Makefile.am: Fix sources list for svn rename so that make dist succeeds
14828         (simple-cee-ops.h ssapre-mini-ops.h)
14829
14830 2006-06-09  Neale Ferguson <neale@sinenomine.net>
14831
14832         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on s390/s390x.
14833         * mini-s390x.c, mini-s390.c: Correct ATOMIC operations (incorrect register for CS
14834         instruction).
14835         * mini-s390x.h, mini-s390.h: Simplify MCONTEXT_GET_BP.
14836         * cpu-s390x.md: Fix max. length values for a couple of instructions.
14837
14838 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
14839
14840         * mini-exceptions.c: Minor fix for building mono in Visual Studio.
14841
14842 2006-06-08  Massimiliano Mantione  <massi@ximian.com>
14843
14844         * ssapre-cee-ops.h: Renamed as "simple-cee-ops.h"
14845         * simple-cee-ops.h: Was "ssapre-cee-ops.h" (renamed).
14846         * ssapre-mini-ops.h: Renamed as "simple-mini-ops.h"
14847         * simple-mini-ops.h: Was "ssapre-mini-ops.h" (renamed).
14848         * local-propagation.c: In mono_cprop_invalidate_values use a whitelist
14849         of opcodes, so that bug 78549 should not happen again.
14850         * ssapre.c: Updated to use the renamed files.
14851
14852 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
14853
14854         * mini-amd64.c (mono_arch_output_basic_block): Fix a wrong reg-reg move 
14855         in OP_ATOMIC_EXCHANGE_I4.
14856
14857 2006-06-07  Wade Berrier <wberrier@novell.com>
14858
14859         * tramp-s390.c: Fix s390 build (add missing pointer declarations 
14860         in mono_debugger_create_notification_function)
14861
14862 2006-06-06  Zoltan Varga  <vargaz@gmail.com>
14863
14864         * mini.c (NEW_AOTCONST_TOKEN): Fix amd64 build.
14865         
14866         * mini.c (type_from_stack_type): Disable some changes which do not
14867         seem to work.
14868
14869         * driver.c: Reenable opts.
14870
14871         * mini.h (MonoStackSlot): New structure to keep track of the verification state
14872         of the evaluation stack.
14873         
14874         * mini.h (MonoBasicBlock): Add a 'stack_state' field to keep track of the
14875         evaluation stack trace at entry to the bblock.
14876
14877         * mini.c (merge_stacks): New function to perform verification of stack merges.
14878         Turned off by default.
14879
14880         * mini.c: Fill up ins->klass for instructions whose type is STACK_OBJ or
14881         STACK_MP.
14882         
14883 2006-06-06  Massimiliano Mantione  <massi@ximian.com>
14884
14885         * local-propagation.c: Fixed bug 78549.
14886
14887 2006-06-04  Zoltan Varga  <vargaz@gmail.com>
14888
14889         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on ia64.
14890
14891 2006-06-02  Miguel de Icaza  <miguel@novell.com>
14892
14893         * tramp-sparc.c, tramp-ppc.c, tramp-s390.c, tramp-s390x.c,
14894         tramp-arm.c, tramp-ia64.c
14895         (mono_debugger_create_notification_function): Update signature to
14896         new signature and use new protocol for creating the notification
14897         function.  
14898
14899         Should fix the build.
14900
14901 2006-06-02  Geoff Norton  <gnorton@customerdna.com>
14902
14903         * exceptions-ppc.c (mono_jit_walk_stack)
14904         (ves_icall_get_frame_info): Fix the build
14905
14906 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
14907
14908         * mini.c (mono_set_defaults): Fix the handling of -O=-all.
14909
14910 2006-05-31  Raja R Harinath  <rharinath@novell.com>
14911
14912         * il2tests.2.il: New file for generics CIL tests.  Add test for
14913         #78019.
14914         * Makefile.am: Update.
14915
14916         Fix #78019
14917         * mini.c (mono_method_to_ir): Don't apply box+brtrue optimization
14918         to nullable types.
14919
14920 2006-05-30  Massimiliano Mantione  <massi@ximian.com>
14921
14922         * aliasing.c: Fixed bug 78311.
14923
14924 2006-05-29  Martin Baulig  <martin@ximian.com>
14925
14926         * mini-exceptions.c (mono_find_jit_info): When computing the
14927         native offset, check whether we're actually inside the method's
14928         code; call mono_debug_print_stack_frame() to format the frame.
14929         (ves_icall_System_Exception_get_trace): Call
14930         mono_debug_print_stack_frame() to format the stack frame.
14931         (ves_icall_get_trace): Update to the new debugging API.
14932         (mono_jit_walk_stack_from_ctx): Likewise.
14933         (ves_icall_get_frame_info): Likewise.
14934
14935         * mini.c (get_method_from_ip): Use the new debugging API.
14936         (mono_print_method_from_ip): Likewise.
14937
14938         * exceptions-ppc.c
14939         (mono_jit_walk_stack): Use the new debugging API.
14940         (ves_icall_get_frame_info): Likewise.   
14941
14942 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
14943
14944         * mini-amd64.c (mono_arch_output_basic_block): Fix MONO_PROFILE_COVERAGE.
14945
14946 2006-05-25  Massimiliano Mantione  <massi@ximian.com>
14947
14948         * mini.c: Added "limitator" to inline for debugging.
14949
14950 2006-05-24  Martin Baulig  <martin@ximian.com>
14951
14952         * debug-debugger.c (mono_debugger_init): Create a private,
14953         malloc()-based code manager for the notification function and
14954         intentionally leak it on exit.  This fixes the crash-on-exit race
14955         condition.
14956
14957         * tramp-amd64.c
14958         (mono_debugger_create_notification_function): Added
14959         `MonoCodeManager *' argument.
14960
14961         * tramp-x86.c
14962         (mono_debugger_create_notification_function): Added
14963         `MonoCodeManager *' argument.
14964
14965 2006-05-23  Massimiliano Mantione  <massi@ximian.com>
14966
14967         * aliasing.c: Fixed 64 bit issue.
14968         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
14969         default since all known bugs are fixed (one more time!).
14970
14971 Tue May 23 13:47:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
14972
14973         * mini.c: write barrier support.
14974
14975 2006-05-23  Martin Baulig  <martin@ximian.com>
14976
14977         * debug-debugger.c: Revert Paolo's change.  Add comment and #error
14978         check at the top of the file.
14979
14980 Sun May 21 12:22:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
14981
14982         * debug-debugger.c: fix the build. Again. Hopefully Martin will stop
14983         reverting changes without reason and without changelog entries.
14984
14985 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
14986
14987         * mini-sparc.c (mono_arch_output_basic_block): Add support for large stack offets
14988         to a few opcodes. Fixes #78439.
14989
14990         * mini-sparc.c: Rename mono_sparch_break () to mono_arch_break () to improve
14991         consistency with other archs.
14992
14993         * mini-ia64.c (mono_arch_emit_prolog): Remove debug stuff left in by mistake.
14994
14995 Wed May 17 18:07:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
14996
14997         * debug-debugger.c: fix the build.
14998
14999 2006-05-17  Martin Baulig  <martin@ximian.com>
15000
15001         * debug-debugger.c
15002         (debugger_thread_vtable): Moved here from ../metadata/threads.c.
15003         (debugger_init_threads): Formerly known as mono_debugger_init_threads().
15004         (debugger_finalize_threads): Formaly known as mono_debugger_finalize_threads().
15005         (debugger_attach): Call GC_mono_debugger_add_all_threads().
15006
15007 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
15008
15009         * mini.c (mini_init): Call pthread_attr_destroy () to fix a small memory leak.
15010
15011 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
15012
15013         * mini-x86.c (mono_arch_instrument_epilog): Fix handling of 
15014         MONO_TYPE_GENERICINST.
15015         
15016         * mini-amd64.c (mono_arch_instrument_epilog): Fix handling of 
15017         MONO_TYPE_GENERICINST.
15018
15019 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
15020
15021         * mini-x86.c (mono_arch_get_vcall_slot_addr): Add a missing call sequence. Fixes
15022         #78325.
15023
15024 2006-05-08  Zoltan Varga  <vargaz@gmail.com>
15025
15026         * mini.c (mono_create_jump_trampoline): Allocate MonoJitInfo from the domain
15027         mempool.
15028         (mono_jit_free_method): Remove the method from jump_trampoline_hash as well.
15029
15030 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
15031
15032         * mini.c (mini_cleanup): Applied patch from Joachim Ante (joe@otee.dk). Call
15033         mono_trace_cleanup ().
15034
15035         * iltests.il: Fix problem with the newly added test.
15036
15037         * mini-codegen.c (mono_local_regalloc): When changing the dreg of an instruction
15038         due to register constraints, free up the previous hreg. Fixes #78314.
15039
15040         * iltests.il: Add new test for #78314.  
15041
15042         * mini-x86.c (mono_arch_get_inst_for_method): Use OP_ATOMIC_ADD_NEW_I4 for
15043         Interlocked.Add. Fixes #78312.
15044
15045         * mini-amd64.c (mono_arch_get_inst_for_method): Ditto.
15046         
15047 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
15048
15049         * inssel.brg (mini_emit_virtual_call): Fix a warning.
15050
15051 2006-05-05  Martin Baulig  <martin@ximian.com>
15052
15053         * debug-mini.c (mono_debug_open_block): New method.
15054
15055         * mini-amd64.c
15056         (mono_arch_output_basic_block): Call mono_debug_open_block() at
15057         the beginning of each basic block.
15058
15059         * mini-x86.c
15060         (mono_arch_output_basic_block): Call mono_debug_open_block() at
15061         the beginning of each basic block.
15062
15063 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
15064
15065         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
15066         default until I understand why they break the build on amd64.
15067
15068 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
15069
15070         * mini.c (mini_cleanup): Call mono_cleanup ().
15071
15072         * mini.c (UNVERIFIED): New macro to make it easier to track down verification
15073         errors.
15074
15075 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
15076
15077         * aliasing.c: Fixed shameful cut&paste error that caused JIT crashes.
15078         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
15079         default since all known bugs are fixed, and I cannot reproduce bug
15080         77944... I'm asking Matt Hargett to test again after this commit.
15081
15082 2006-04-28  Massimiliano Mantione  <massi@ximian.com>
15083
15084         * mini-codegen.c: Fixed typo that thrashed inline.
15085
15086 2006-04-28  Zoltan Varga  <vargaz@gmail.com>
15087
15088         * dominators.c (compute_dominators): Avoid using a worklist since
15089         it is not correct in some cases. Instead, iterate over all bblocks as
15090         in the original paper. Fixes --compile-all -O=all System.Xml.dll.
15091
15092 2006-04-28  Miguel de Icaza  <miguel@novell.com>
15093
15094         * mini.c (mono_jit_compile_method_inner): Use
15095         mono_prepare_exception_from_error that resets the value
15096         internally.
15097
15098 2006-04-27  Miguel de Icaza  <miguel@novell.com>
15099
15100         * mini.c: Move the mini_loader_error_to_exception to metadata. 
15101         
15102 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
15103
15104         * aliasing.c: Fixed bug 78210.
15105
15106 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
15107
15108         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
15109         default until all their problems (or the ones they trigger) are fixed.
15110
15111 2006-04-26  Zoltan Varga  <vargaz@gmail.com>
15112
15113         * aot-runtime.c (mono_aot_get_method_from_token_inner): Fix the previous patch.
15114         
15115         * aot-runtime.c (mono_aot_get_method_from_token_inner): Mark the method
15116         as loaded only after resolving patches since that could invoke the same method.
15117
15118         * aot-runtime.c (mono_aot_plt_resolve): Fix ppc etc. builds.
15119
15120         * aot-compiler.c: Refactor mono_aot_compile_aot () into a bunch of smaller
15121         functions.
15122
15123         * aot-runtime.c (init_plt): Use a normal trampoline to transfer code to the
15124         AOT loader.
15125
15126         * aot-compiler.c (emit_plt): Pass the plt offset in %eax instead of on the
15127         stack.
15128
15129         * mini-trampolines.c (mono_aot_plt_trampoline): New trampoline to handle calls
15130         made from AOT code through the PLT table.
15131
15132         * mini-x86.h mini-amd64.h: Define MONO_ARCH_AOT_PLT_OFFSET_REG to the register
15133         holding the plt offset when a call is made to the aot plt trampoline.
15134         
15135 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
15136
15137         * aot-runtime.c aot-compiler.c cpu-amd64.md mini-amd64.c: Update parts of the 
15138         amd64 AOT support.
15139
15140         * Makefile.am (common_sources): Fix build breakage.
15141
15142         * aot-runtime.c aot-compiler.c: Reorganize the AOT code yet again: Make all
15143         calls through a jump table similar to the ELF PLT table. Avoid indirect calls for
15144         intra-assembly calls if possible.
15145         
15146         * tramp-*.c: Add new functions for patching/nullifying PLT entries.
15147
15148         * mini-trampolines.c: Handle PLT entries.
15149
15150         * mini.c: Avoid creating a GOT var for calls.
15151
15152         * jit-icalls.c (helper_ldstr_mscorlib): New helper function for loading strings
15153         from mscorlib code.
15154
15155         * jit-icalls.c (helper_newobj_mscorlib): New helper function to create objects
15156         from mscorlib code.
15157
15158         * mini.c (mono_method_to_ir): Use the new helper functions in throw bblocks in
15159         AOT code.       
15160
15161         * mini.h: Bump AOT file format version.
15162         
15163         * mini.c (get_basic_blocks): Fix the calculation of bb->out_of_line so it
15164         covers more cases.
15165
15166 2006-04-25  Martin Baulig  <martin@ximian.com>
15167
15168         * driver.c: Disable copyprop, consprop and inline when running
15169         inside the debugger.
15170
15171 2006-04-25  Martin Baulig  <martin@ximian.com>
15172
15173         * debug-debugger.h (MonoDebuggerInfo): Replaced `get_thread_id'
15174         with `get_current_thread' and added `detach'.
15175         (MonoDebuggerMetadataInfo): Added `thread_size',
15176         `thread_tid_offset', `thread_stack_ptr_offset' and
15177         `thread_end_stack_offset'.
15178
15179 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
15180
15181         * aot.c Makefile.am: Split aot.c into two new files aot-compiler.c and 
15182         aot-runtime.c.
15183
15184         * inssel.brg (mini_emit_load_intf_reg_vtable): Use a new kind of AOT constant
15185         ADJUSTED_IID to avoid the need for adjusting the IID at runtime.
15186
15187         * mini.h (MonoJumpInfoType): Add MONO_PATCH_INFO_ADJUSTED_IID.
15188
15189         * mini.c (mono_resolve_patch_target): Handle ADJUSTED_IID.
15190
15191         * aot.c: Add support for ADJUSTED_IID.  
15192
15193 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
15194
15195         * aot.c (emit_method_order): Don't align method_order_end.
15196
15197         * inssel.brg (stmt): Fix interface calls in AOT code which got broken by
15198         the interface ID changes.
15199
15200 2006-04-21  Dick Porter  <dick@ximian.com>
15201
15202         * mini.c (mini_thread_cleanup): Clear the JIT TLS data when
15203         cleaning up a thread.  Fixes the new part of bug 77470.
15204
15205 2006-04-20  Geoff Norton  <gnorton@customerdna.com>
15206
15207         * mini-ppc.c: Call mono_jit_thread_attach when transitioning a native
15208         to managed wrapper.
15209                      
15210 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
15211
15212         * mini.h mini.c: Remove mono_type_to_ldind/stind () which are now in marshal.c.
15213         
15214         * mini.c (mono_runtime_install_handlers): Handle SIGABRT similarly to
15215         SIGSEGV. Fixes #78072.
15216
15217         * mini-exceptions.c (mono_handle_native_sigsegv): Add a 'signal' argument,
15218         unregister our SIGABRT handler.
15219
15220 2006-04-19  Massimiliano Mantione  <massi@ximian.com>
15221
15222         * mini.c: Disabled inline where it can alter the call stack in a
15223         way visible from managed code.
15224         * driver.c: enabled inline,consprop,copyprop,treeprop,deadce by
15225         default.
15226
15227 2006-04-16  Zoltan Varga  <vargaz@gmail.com>
15228
15229         * mini-amd64.c (mono_arch_emit_prolog): Attach the thread to the runtime as it is done
15230         on other platforms. Fixes #78089.
15231
15232 2006-04-13  Martin Baulig  <martin@ximian.com>
15233
15234         * driver.c: Also check a `MONO_INSIDE_MDB' environment variable to
15235         determine whether we're inside the debugger.
15236
15237         * debug-debugger.h
15238         (MonoDebuggerMetadataInfo): Added all offsets from `MonoDefaults'.
15239
15240 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
15241
15242         * mini.c (mono_method_to_ir): Handle multiple LEAVE statements inside a single
15243         handler clauses. Fixes #78024.
15244
15245         * mini-sparc.c (mono_arch_output_basic_block): Handle large offsets
15246         in the CALL_MEMBASE opcodes. Fixes #78088.
15247         (mono_arch_get_vcall_slot_addr): Ditto.
15248
15249 2006-04-10  Martin Baulig  <martin@ximian.com>
15250
15251         * debug-debugger.c: The thread handling code has now been moved
15252         into ../metadata/threads.c.
15253
15254 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
15255
15256         * driver.c (mono_main): Fix --with-gc=none build.
15257
15258         * mini-codegen.c (mono_spillvar_offset): Improve alignment.
15259         (mono_spillvar_offset_float): Ditto.
15260         (mono_local_regalloc): Only do the OP_MOVE optimization if ins->dreg is a local
15261         hreg, not when its !global, since on ia64, there is a third category: stacked
15262         registers.      
15263
15264 Mon Apr 10 14:39:49 CEST 2006 Paolo Molaro <lupus@ximian.com>
15265
15266         * mini.c: set MonoInst->klass for load field address and a few other
15267         places.
15268
15269 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
15270
15271         * helpers.c (mono_disassemble_code): Emit debug info on amd64 as well.
15272
15273 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
15274
15275         * dominators.c (compute_dominators): Fix yet another bug which surfaced after
15276         the branch opt changes.
15277
15278 2006-04-06  Dick Porter  <dick@ximian.com>
15279
15280         * wapihandles.c (mini_wapi_semdel): Fix parameters in semctl () call.
15281         
15282         * wapihandles.c (mini_wapi_seminfo): 
15283         * driver.c (mono_main): Add semaphore info option
15284
15285 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
15286
15287         * dominators.c (compute_dominators): Fix a bug which surfaced after the recent
15288         branch optimization changes. Fixes #78009.
15289
15290 Wed Apr 5 16:40:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
15291
15292         * mini.c: ignore accessibility of methods in managed->native wrappers.
15293
15294 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
15295
15296         * mini.c (mini_cleanup): Call print_jit_stats () earlier since it accesses metadata.
15297         
15298         * mini.c (mini_cleanup): Free 'emul_opcode_map' as well.
15299
15300 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
15301
15302         * mini.c: Modify the branch optimizations to preserve the invariant that
15303         the entries inside the in_bb and out_bb arrays are unique.
15304         (mono_unlink_bblock): Avoid creation of new arrays.
15305
15306 2006-04-02  Zoltan Varga  <vargaz@gmail.com>
15307
15308         * mini.c (mono_unlink_bblock): Fix regression caused by previous
15309         change (#77992).
15310
15311 2006-04-01  Zoltan Varga  <vargaz@gmail.com>
15312
15313         * mini.c (optimize_branches): Remove the "optimizations" in
15314         the cbranch1/cbranch2 -> branch cases which were causing several
15315         problems in the past. Fixes #77986.
15316
15317 2006-03-31  Chris Toshok  <toshok@ximian.com>
15318
15319         * driver.c (DEFAULT_OPTIMIZATIONS): back out the new set of
15320         default optimizations :(
15321
15322 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
15323
15324         * inssel-x86.brg mini-codegen.c mini.c: Merge some changes/fixes from linear-il
15325         branch.
15326
15327 2006-03-31  Massimiliano Mantione  <massi@ximian.com>
15328
15329         * local-propagation.c: Added comments to structs and removed
15330         "Mono" prefixes from local tree mover types.
15331
15332 2006-03-30  Zoltan Varga  <vargaz@gmail.com>
15333
15334         * Makefile.am (arch_sources): Define this for each architecture so 
15335         libmono_la_SOURCES is defined in one place.
15336
15337 Wed Mar 29 20:51:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
15338
15339         * driver.c, wapihandles.c, Makefile.am: integrate the io-layer utils
15340         from handles/.
15341
15342 Wed Mar 29 17:16:57 CEST 2006 Paolo Molaro <lupus@ximian.com>
15343
15344         * driver.c: print the GC name supplied by configure.
15345
15346 2006-03-29  Massimiliano Mantione  <massi@ximian.com>
15347
15348         * local-propagation.c: Added tree mover, and moved here all the
15349         local propagation code from mini.c
15350         * mini.c: Added support for treeprop, and moved all the local
15351         propagation code to local-propagation.c
15352         * mini.h: Added support for treeprop
15353         * driver.c: Added support for treeprop, enabled consprop, copyprop,
15354         treeprop, inline and deadce by default
15355         * Makefile.am: Added local-propagation.c
15356
15357 2006-03-25  Zoltan Varga  <vargaz@gmail.com>
15358
15359         * exceptions-sparc.c: Applied patch from David S. Miller  <davem@sunset.davemloft.net>: Implement correct support for sparc/linux.
15360
15361 Fri Mar 24 20:07:19 CET 2006 Paolo Molaro <lupus@ximian.com>
15362
15363         * debug-debugger.c: make it compile without the Boehm GC.
15364
15365 Wed Mar 22 18:25:18 CET 2006 Paolo Molaro <lupus@ximian.com>
15366
15367         * mini.c: fixed issue with mismatch when an icall is registered
15368         with multiple names but same address.
15369
15370 Tue Mar 21 15:59:57 CET 2006 Paolo Molaro <lupus@ximian.com>
15371
15372         * declsec.c, mini-exceptions.c: use write barrier to set reference
15373         fields of managed objects.
15374
15375 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
15376
15377         * mini.c (mono_print_method_from_ip): Recognize JIT trampolines as well.
15378         (can_access_internals): Fix a warning.
15379
15380         * mini.c (print_method_from_ip): Rename this to 
15381         mono_print_method_from_ip so it gets exported.
15382
15383         * trace.c: Deal with strings inside StringBuilder's containing garbage
15384         and fix memory leaks. Fixes #77848.
15385
15386 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
15387
15388         * mini.c (mini_init): Disable the setting of GC_stackbottom on ia64. Hopefully
15389         fixes #77787.
15390
15391 2006-03-16 Neale Ferguson <neale@sinenomine.net>
15392         
15393         * mini-s390.c: Remove OP_X86_TEST_NULL.
15394
15395 Thu Mar 16 17:19:04 CET 2006 Paolo Molaro <lupus@ximian.com>
15396
15397         * mini.c: use the correct GetHashCode() for the moving collector.
15398
15399 2006-03-16  Massimiliano Mantione  <massi@ximian.com>
15400
15401         * liveness.c: Regalloc spill cost tuning.
15402
15403 2006-03-15 Neale Ferguson <neale@sinenomine.net>
15404         
15405         * mini-s390x.h: Correct S390_LONG macro.
15406
15407         * mini-s390x.c: Cleanup unused code.
15408
15409 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
15410
15411         * jit-icalls.h: New file.
15412
15413         * Makefile.am mini.c jit-icalls.c: Use a proper include file for the jit
15414         icalls and include that instead of including jit-icalls.c.
15415
15416         * mini-ppc.c (mono_arch_output_basic_block): Remove references to
15417         OP_X86 opcodes.
15418
15419 Tue Mar 14 20:23:53 CET 2006 Paolo Molaro <lupus@ximian.com>
15420
15421         * mini.c: when checking for member accessibility, also check for
15422         friend assemblies and for explicit interface implementations.
15423
15424 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
15425
15426         * mini-codegen.c (mono_local_regalloc): Remove incorrect g_free () calls.
15427
15428         * cpu-arm.md cpu-g4.md: Remove x86_ opcodes.
15429
15430         * mini-x86.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
15431         common cases are done first.    
15432
15433         * mini-ops.h: Only define platform specific opcodes on the given platform.
15434
15435         * mini.h regalloc.h mini-codegen.c: Merge optimizations from the linear-il
15436         branch.
15437         
15438 2006-03-14  Martin Baulig  <martin@ximian.com>
15439
15440         Revert Paolo's change from r57348:
15441
15442         * mini.h: don't use gboolean for bitfields.
15443         * mini.c: verifier changes for fields and methods accessibility.
15444
15445 2006-03-13  Neale Ferguson <neale@sinenomine.net>
15446
15447         * mini-s390.h, mini-s390x.h: Fix calls to mono_call_inst_add_outarg_reg.
15448
15449         * mini-s390x.c: Fix conv_r_un.
15450
15451         * cpu-s390, cpu-s390x.md: Fix lengths.
15452
15453 Sun Mar 12 17:31:22 CET 2006 Paolo Molaro <lupus@ximian.com>
15454
15455         * mini.c: nested types have access to all the nesting
15456         levels, not just the enclosing types.
15457
15458 Sun Mar 12 16:23:11 CET 2006 Paolo Molaro <lupus@ximian.com>
15459
15460         * mini.c: added a few more verification checks.
15461
15462 2006-03-12  Zoltan Varga  <vargaz@gmail.com>
15463
15464         * liveness.c: Merge optimizations from the linear-il branch.
15465
15466 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
15467
15468         * mini-ia64.c (emit_call): Add a comment.
15469
15470         * tramp-ia64.c (mono_arch_patch_callsite): Handle indirect calls as well.
15471
15472         * tramp-ia64.c: Fix some warnings.
15473
15474 Sat Mar 11 20:15:59 CET 2006 Paolo Molaro <lupus@ximian.com>
15475
15476         * mini.h: don't use gboolean for bitfields.
15477         * mini.c: verifier changes for fields and methods accessibility.
15478
15479 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
15480
15481         * mini.c (mono_icall_get_wrapper): Fix an ia64 bug introduced by the
15482         lazy icall wrapper changes.
15483
15484         * dominators.c: Replace all the dominator algorithms with faster
15485         ones from the linear-il branch.
15486
15487         * inssel-*.brg: Allocate call->out_ireg_args and call->out_freg_args from
15488         the mempool.
15489
15490         * mini-amd64.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
15491         common cases are done first.
15492
15493         * mini-amd64.c: Fix some warnings.
15494
15495         * mini-codegen.c mini-*.c: Allocate call->out_ireg_args and call->out_freg_args
15496         from the mempool.
15497
15498         * mini.c (mono_jit_compile_method_with_opt): Fix a race in the newly
15499         added code.
15500
15501         * mini.h: Add a missing prototype.
15502
15503 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
15504
15505         * mini.c: Compile icall wrappers lazily.
15506
15507         * mini-codegen.c: Use printf instead of g_print since its much faster.
15508
15509         * mini.h (mono_bitset_foreach_bit): Use the faster mono_bitset_find_start ()
15510         function.
15511
15512         * mini.c (optimize_branches): Cache the negative result from 
15513         remove_block_if_useless ().
15514
15515         * mini.c (optimize_branches): Avoid restarting the iteration after each change. 
15516         Also fix some bblock linking issues.
15517
15518         * helpers.c (mono_disassemble_code): Reduce the size of the temporary
15519         assembly files.
15520
15521         * mini.h: Define G_LIKELY/G_UNLIKELY macros for older glib versions.
15522
15523         * mini.h (MonoBasicBlock): Reorganize the fields, putting more frequently
15524         accessed fields first, for better cache behavior.
15525         
15526 Fri Mar 10 18:21:41 CET 2006 Paolo Molaro <lupus@ximian.com>
15527
15528         * mini.c: speedup IList<T> array accesses.
15529
15530 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
15531
15532         * mini.c (mono_method_to_ir): Handle large methods overflowing the 
15533         inline_costs counter. Fixes #77190.
15534
15535 2006-03-06  Zoltan Varga  <vargaz@gmail.com>
15536
15537         * mini-exceptions.c: Call mono_trace_is_enabled () before printing
15538         trace messages. Fixes #77706.
15539
15540 2006-03-04  Martin Baulig  <martin@ximian.com>
15541
15542         * tramp-amd64.c, tramp-x86.c
15543         (mono_debugger_create_notification_function): Use
15544         mono_global_codeman_reserve() to allocate a buffer at runtime and
15545         return it.
15546
15547         * debug-debugger.h (MonoDebuggerInfo): Added `initialize'.
15548
15549         * debug-debugger.c (mono_debugger_init): Dynamically allocate the
15550         notification function at runtime and then call `initialize' in the
15551         `MONO_DEBUGGER__debugger_info' vtable.
15552
15553 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
15554
15555         * iltests.il: Fix a visibility problem.
15556
15557 Wed Mar 1 15:55:25 CET 2006 Paolo Molaro <lupus@ximian.com>
15558
15559         * driver.c, mini.c: add hooks for the counters API.
15560
15561 Wed Mar 1 12:28:04 CET 2006 Paolo Molaro <lupus@ximian.com>
15562
15563         * driver.c: show disabled options.
15564
15565 Wed Mar 1 12:18:51 CET 2006 Paolo Molaro <lupus@ximian.com>
15566
15567         * linear-scan.c: always use cost-driven selection.
15568
15569 2006-02-28  Raja R Harinath  <rharinath@novell.com>
15570
15571         * jit-icalls.c (helper_compile_generic_method): Revert change from
15572         2006-02-24.
15573
15574 Mon Feb 27 18:58:19 GMT 2006 Paolo Molaro <lupus@ximian.com>
15575
15576         * cpu-arm.md, mini-arm.c: implemented MemoryBarrier.
15577
15578 Sat Feb 25 17:39:21 CET 2006 Paolo Molaro <lupus@ximian.com>
15579
15580         * inssel.brg: style fixes, mostly to force the updated monoburg
15581         to run for people using svn.
15582
15583 Sat Feb 25 17:07:42 CET 2006 Paolo Molaro <lupus@ximian.com>
15584
15585         * mini.c: match monoburg changes.
15586
15587 Sat Feb 25 16:04:33 CET 2006 Paolo Molaro <lupus@ximian.com>
15588
15589         * mini.h, mini.c, abcremoval.c, aliasing.c, liveness.c,
15590         ssapre.c, graph.c, ssa.c: put the mono_burg_arity[]
15591         declaration in the header file.
15592
15593 Sat Feb 25 14:19:31 CET 2006 Paolo Molaro <lupus@ximian.com>
15594
15595         * helpers.c: reduce relocations and mem usage.
15596
15597 Sat Feb 25 11:58:16 CET 2006 Paolo Molaro <lupus@ximian.com>
15598
15599         * mini.h, mini-codegen.c: disable logging features if
15600         requested by configure.
15601
15602 Sat Feb 25 11:54:49 CET 2006 Paolo Molaro <lupus@ximian.com>
15603
15604         * mini.c: tiny verifier changes.
15605
15606 Fri Feb 24 18:17:52 CET 2006 Paolo Molaro <lupus@ximian.com>
15607
15608         * mini-ops.h, inssel-x86.brg, tramp-x86.c, mini-x86.c,
15609         cpu-pentium.md: stack alignment changes for osx/x86,
15610         partially from Geoff Norton <gnorton@customerdna.com>.
15611
15612 2006-02-24  Raja R Harinath  <harinath@gmail.com>
15613
15614         * jit-icalls.c (helper_compile_generic_method): Update to changes
15615         in metadata/class.c.
15616
15617 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
15618         
15619         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a missing check.
15620         
15621         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for
15622         interface calls with large offsets.
15623
15624 2006-02-23  Raja R Harinath  <rharinath@novell.com>
15625
15626         * jit-icalls.c (helper_compile_generic_method): Document the
15627         special-case we depend on so that we can inflate the method twice
15628         with the same context with no bad side-effects.
15629
15630 Thu Feb 23 13:45:46 CET 2006 Paolo Molaro <lupus@ximian.com>
15631
15632         * mini-x86.c, mini-amd64.c: fix for case when xen support
15633         is disabled.
15634
15635 Wed Feb 22 19:38:40 CET 2006 Paolo Molaro <lupus@ximian.com>
15636
15637         * mini-x86.c, mini-amd64.c: generate code to access tls items
15638         in a faster way for Xen systems.
15639
15640 Wed Feb 22 10:31:25 CET 2006 Paolo Molaro <lupus@ximian.com>
15641
15642         * exceptions-x86.c, mini-x86.h, driver.c, mini-codegen.c:
15643         updates and compilation fixes for the OSX/x86 port, mostly from
15644         Geoff Norton <gnorton@customerdna.com>.
15645
15646 Tue Feb 21 19:56:55 CET 2006 Paolo Molaro <lupus@ximian.com>
15647
15648         * inssel.brg: faster interface call implementation
15649         to sync with the interface_offsets MonoVTable changes.
15650
15651 Mon Feb 20 10:37:57 CET 2006 Paolo Molaro <lupus@ximian.com>
15652
15653         * mini.c: more verification checks.
15654
15655 Fri Feb 17 19:47:29 CET 2006 Paolo Molaro <lupus@ximian.com>
15656
15657         * mini.c: added a few more verification checks.
15658
15659 2006-02-17      Neale Ferguson <neale@sinenomine.net>
15660
15661         * mini-s390x.c, mini-s390x.h: Check for presence of long displacement
15662         facility on the processor and use it if available.
15663
15664 Fri Feb 17 16:12:52 CET 2006 Paolo Molaro <lupus@ximian.com>
15665
15666         * driver.c, aot.c, mini.c: throw exception if the IL code is
15667         invalid or unverifiable.
15668
15669 2006-02-17  Raja R Harinath  <rharinath@novell.com>
15670
15671         * generics.2.cs (test_0_ldfld_stfld_mro): Use m.struct_field, not
15672         m.StructField.
15673
15674 2006-02-16  Zoltan Varga  <vargaz@gmail.com>
15675
15676         * generics.2.cs: Add some tests for generics ldfld/stfld wrappers.
15677
15678 Wed Feb 15 16:23:17 CET 2006 Paolo Molaro <lupus@ximian.com>
15679
15680         * mini-s390x.c, mini-s390.c, mini.c, mini-amd64.c, mini-arm.c,
15681         mini-ia64.c, mini-sparc.c, mini-x86.c, mini-ppc.c: fixed
15682         handling of instantiated generic valuetypes.
15683
15684 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
15685
15686         * mini-exceptions.c mini-x86.h mini-x86.c: Get rid of 
15687         MONO_INIT_CONTEXT_FROM_CALLER, and use MONO_INIT_CONTEXT_FROM_FUNC
15688         instead.
15689
15690         * generics.2.cs: Revert the nullable reftypes tests.
15691
15692 2006-02-10  Zoltan Varga  <vargaz@gmail.com>
15693
15694         * mini-exceptions.c (MONO_INIT_CONTEXT_FROM_CALLER): Avoid
15695         using __builtin_frame_address (1) as it doesn't work in the presence
15696         of optimizations. Hopefully fixes #77273.
15697
15698         * Makefile.am generics.cs generics.2.cs: Revert the generics.2.cs
15699         -> generics.cs change as it doesn't work with some automake versions.
15700
15701 Thu Feb 9 16:24:44 CET 2006 Paolo Molaro <lupus@ximian.com>
15702
15703         * mini.c: handle systems that sue a different way to
15704         retrieve the stack address of the current thread.
15705
15706 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
15707
15708         * Makefile.am generics.2.cs: Rename this to generics.cs and handle
15709         it specially in the makefile.
15710
15711         * generics.2.cs: Add tests for nullable reference types.
15712
15713 Wed Feb 8 19:33:17 CET 2006 Paolo Molaro <lupus@ximian.com>
15714
15715         * mini.c: always handle the case when mono_jit_init()
15716         is called in a thread different from the main thread,
15717         confusing libgc (bug #77309).
15718
15719 Mon Feb 6 09:01:24 EST 2006 Paolo Molaro <lupus@ximian.com>
15720
15721         * mini-ppc.c: fix handling of exceptions in large methods (bug #74932).
15722
15723 Fri Feb 3 18:51:35 CET 2006 Paolo Molaro <lupus@ximian.com>
15724
15725         * mini.c: change optimize_branches () to use a single loop
15726         and introduce a new optimization to simplify some range checks.
15727
15728 2006-02-03  Martin Baulig  <martin@ximian.com>
15729
15730         * debug-debugger.c (debugger_thread_manager_thread_created): Removed
15731         and merged with debugger_thread_manager_add_thread().
15732         (mono_debugger_main): Call debugger_thread_manager_add_thread() to
15733         inform the debugger about the main thread.
15734
15735 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
15736
15737         * basic.cs: Add test for div.un/rem.un constant folding.
15738
15739 2006-02-03  Neale Ferguson <neale@sinenomine.net>
15740
15741         * cpu-s390x.md: correct int_xor_imm length
15742
15743 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
15744
15745         * generics.2.cs: New test for #77442.
15746
15747         * jit-icalls.c (helper_compile_generic_method): Check for null. Fixes
15748         #77442.
15749
15750 2006-02-02  Martin Baulig  <martin@ximian.com>
15751
15752         * tramp-x86.c, tramp-amd64.c: It's now safe to #include
15753         <mono/metadata/mono-debug-debugger.h>   
15754
15755         * debug-mini.c: Don't #define _IN_THE_MONO_DEBUGGER.
15756
15757 2006-02-02  Martin Baulig  <martin@ximian.com>
15758
15759         * debug-debugger.h: New header file for debug-debugger.c.
15760
15761         * debug-debugger.c: Big API cleanup; don't run the managed Main()
15762         function is a separate thread anymore; add support for attaching.
15763
15764 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
15765
15766         * tramp-x86.c: Fix a warning.
15767
15768 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
15769
15770         * mini-amd64.c (mono_arch_compute_omit_fp): Avoid hitting an assertion
15771         on very large methods.
15772
15773         * aot.c (load_patch_info): Fix a warning.
15774
15775 Mon Jan 30 12:51:10 CET 2006 Paolo Molaro <lupus@ximian.com>
15776
15777         * cpu-pentium.md, mini-x86.c, inssel.brg, inssel-x86.brg,
15778         mini-ops.h: alu membase optimizations.
15779
15780 Fri Jan 27 21:11:08 CET 2006 Paolo Molaro <lupus@ximian.com>
15781
15782         * mini-ops.h, mini.c, inssel.brg, inssel-x86.brg: opcode
15783         to speedup StringBuilder.
15784
15785 2006-01-27  Zoltan Varga  <vargaz@gmail.com>
15786
15787         * dominators.c (mono_compute_natural_loops): Fix detection of
15788         loop body start blocks.
15789
15790         * mini-exceptions.c (mono_print_thread_dump): Fix non x86 builds.
15791
15792 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
15793
15794         * mini.h mini.c mini-exceptions.c: Add thread dump support. Fixes
15795         #75145.
15796
15797 2006-01-25  Massimiliano Mantione  <massi@ximian.com>
15798
15799         * aliasing.c: Fixed aliasing issue on 64 bit archs.
15800
15801 2006-01-25  Martin Baulig  <martin@ximian.com>
15802
15803         * debug-debugger.c: Moved the `MonoDebuggerManager' and
15804         `MonoDebuggerThread' typedefs here from mono-debug-debugger.h and
15805         started to cleanup this file a little bit.
15806
15807 Tue Jan 24 18:20:48 CET 2006 Paolo Molaro <lupus@ximian.com>
15808
15809         * mini.c: optimize a codepath frequently happening in generics code.
15810
15811 2006-01-23  Martin Baulig  <martin@ximian.com>
15812
15813         * Makefile.am: Only compile debug-debugger.c on supported platforms.
15814
15815         * debug-debugger.c: Kill the IO_LAYER() hack and use the io-layer
15816         functions directly.
15817
15818         * driver.c: debug-debugger.c is only available if
15819         `MONO_DEBUGGER_SUPPORTED' is defined.   
15820
15821 2006-01-23  Martin Baulig  <martin@ximian.com>
15822
15823         * debug-debugger.c: Only enable this on platforms where the Mono
15824         Debugger is working (x86 and x86_64).
15825
15826 2006-01-21  Martin Baulig  <martin@ximian.com>
15827
15828         The Mono Debugger is now using the normal `mono' instead of the
15829         `mono-debugger-mini-wrapper' when executing managed code.
15830
15831         * debug-debugger.c: New file; previously known as
15832         debugger/wrapper/wrapper.c.
15833
15834         * debug-mini.c (mono_init_debugger): Removed.
15835
15836         * driver.c (mono_main): Added new `--inside-mdb' command line
15837         argument which is used when running inside the debugger.
15838
15839 2006-01-20  Zoltan Varga  <vargaz@gmail.com>
15840
15841         * liveness.c (mono_analyze_liveness): Remove some unused data
15842         structures.
15843
15844 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
15845
15846         * mini.h: Move mono_bitset_test_fast macro to monobitset.h where it belongs.
15847
15848 2006-01-16  Zoltan Varga  <vargaz@gmail.com>
15849
15850         * mini.h (mono_bitset_test_fast): Disable the 'fast' implementation which
15851         depends on implementation details of monobitset.
15852
15853         * mini.c (mini_get_ldelema_ins): Fix handling of 1 dimensional arrays.
15854         Fixes #77271.
15855
15856 2006-01-15  Zoltan Varga  <vargaz@gmail.com>
15857
15858         * liveness.c: Update after monobitset changes.
15859
15860 2006-01-14  Zoltan Varga  <vargaz@gmail.com>
15861
15862         * mini-amd64.c (mono_arch_compute_omit_fp): Fix a leak.
15863
15864 2006-01-11 Neale Ferguson <neale@sinenomine.net>
15865
15866         * inssel-s390x.brg: Fix reg: OP_LDADDR(OP_S390_LOADARG) register setting.
15867
15868         * mini-s390x.c: Remove warning messages.
15869
15870 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
15871
15872         * mini.c: pass the jitinfo to mono_profiler_method_end_jit.
15873
15874 2006-01-10  Zoltan Varga  <vargaz@gmail.com>
15875
15876         * generics.2.cs: Add ldelem/stelem_any test.
15877
15878 2006-01-10 Neale Ferguson <neale@sinenomine.net>
15879
15880         * mini-s390.c: Fix ATOMIC_ADD_I4 operation.
15881
15882 2006-01-07  Zoltan Varga  <vargaz@gmail.com>
15883
15884         * inssel-long.brg: Fix int->long ovf conversion rules. Fixes #77172.
15885         
15886 2006-01-06  Zoltan Varga  <vargaz@gmail.com>
15887
15888         * generics.2.cs: Reenable vtype tests.
15889
15890         * inssel-x86.brg: Remove an icorrect valuetype rule.
15891
15892 2006-01-06 Neale Ferguson <neale@sinenomine.net>
15893
15894         * mini-s390x.c, inssel-s390x.brg, cpu-s390x.md: Fix ATOMIC_I8 operations. Provide
15895         initial support for OP_ABS.
15896
15897 2006-01-05 Neale Ferguson <neale@sinenomine.net>
15898
15899         * mini-s390x.c (emit_float_to_int): Correct r8 to unsigned int algorithm.
15900
15901 2006-01-05 Neale Ferguson <neale@sinenomine.net>
15902
15903         * mini-s390.c, mini-s390.h, inssel-s390.brg, cpu-s390.md: Fix r8 to unsigned int 
15904         conversion and implement LADD/LSUB.
15905
15906         * exceptions-s390.c: Standardize mono_arch_find_jit_info to match other
15907         architectures.
15908
15909 2006-01-05 Neale Ferguson <neale@sinenomine.net>
15910
15911         * mini-s390x.c, mini-s390x.h: Fix r8 to unsigned int conversion.
15912
15913         * exceptions-s390x.c: Standardize mono_arch_find_jit_info to match other
15914         architectures.
15915
15916 2006-01-05 Neale Ferguson <neale@sinenomine.net>
15917
15918         * mini-s390x.c, mini-s390x.h, mini-s390.c, mini-s390.h: Fix lmf handling when 
15919         localloc is encountered.  Fixes crash in test-183.cs when using gmcs 
15920         (stack walk problem).
15921
15922 2006-01-04  Zoltan Varga  <vargaz@gmail.com>
15923
15924         * aot.c (mono_aot_load_method): Fix a warning.
15925
15926 2006-01-03  Neale Ferguson <neale@sinenomine.net>
15927
15928         * mini-s390x.h, exceptions-s390x.c, inssel-s390x.brg: Fix compiler warnings
15929
15930 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
15931
15932         * iltests.il: Add test for #77148.
15933
15934         * mini.c (mini_get_ldelema_ins): Handle arrays with rank 1 too. Fixes
15935         #77148.
15936
15937 2006-01-03  Neale Ferguson <neale@sinenomine.net>
15938
15939         * mini-s390x.c, inssel-s390x.brg: Remove debug statements
15940
15941 2006-01-03  Neale Ferguson <neale@sinenomine.net>
15942
15943         * mini-s390x.c, mini-s390x.h, exceptions-s390x.c, tramp-s390x.c, inssel-s390x.brg,
15944         cpu-s390x.md, mini-codegen.c, Makefile.am: add 64-bit s390 support to JIT.
15945
15946         * basic-long.cs: Add lconv-to-r4/r8 tests.
15947
15948 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
15949
15950         * mini.c (mono_method_to_ir): Fix DynamicMethod support in some opcodes.
15951
15952         * mini-sparc.c (mono_arch_call_opcode): Use mono_class_value_size ()
15953         here as on other archs.
15954
15955 2005-12-29 Neale Ferguson <neale@sinenomine.net>
15956
15957         * mini-s390.c (mono_arch_get_inst_for_method): Add memory_barrier support.
15958
15959 2005-12-29 Neale Ferguson <neale@sinenomine.net>
15960
15961         * inssel-s390.brg: Correct register assignment; Rework L[ADD|SUB]_OVF[_UN] for s390.
15962         
15963         * cpu-s390.md: Fix lengths of a couple of long instructions; Add memory_barrier.
15964
15965         * mini-s390.c: Fix long add/sub overflow instructions; Fix displacement handling in
15966         instrument_prolog; Add memory_barrier instruction.
15967
15968 2005-12-26  Zoltan Varga  <vargaz@gmail.com>
15969
15970         * exceptions-x86.c mini-x86.h: Fix solaris/x86 exception handling.
15971
15972 2005-12-23  Zoltan Varga  <vargaz@gmail.com>
15973
15974         * tramp-ia64.c (mono_arch_get_unbox_trampoline): Flush icache.
15975
15976         * aliasing.c inssel.brg: Fix warnings.
15977
15978         * inssel-ia64.brg (OP_MEMSET): Fix an optimization which previously
15979         could skip initialization of some parts of memory.
15980
15981         * mini.c mini-ia64.c: Fix warnings.
15982
15983         * inssel-sparc.brg: Add an implementation of lneg which actually works.
15984
15985 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
15986
15987         * aliasing.c (mono_build_aliasing_information): Add a workaround for
15988         a crash seen on sparc.
15989
15990         * mini-sparc.c: Add implementation of Thread.MemoryBarrier.
15991         
15992         * cpu-sparc.md: Add memory_barrier opcode. Remove unused opcodes.
15993
15994 2005-12-21 Neale Ferguson <neale@sinenomine.net>
15995
15996         * mini-ops.h: Add s390_backchain instruction
15997
15998         * inssel-s390.brg: Use backchaining instruction for LOADARG/STKARG operations.
15999
16000         * cpu-s390.md: Add s390_backchain instruction
16001
16002         * mini-s390.c: Significant ABI changes
16003
16004         * mini-s390.h: Cater for zero length structures
16005
16006 2005-12-20 Neale Ferguson <neale@sinenomine.net>
16007
16008         * mini-s390.c: ABI fixes
16009
16010         * inssel-s390.brg: Remove debug statements
16011
16012         * cpu-s390.md: Fix length of ATOMIC_xx operations
16013
16014 2005-12-19  Zoltan Varga  <vargaz@gmail.com>
16015
16016         * basic-float.cs: Add float<->long conversion tests.
16017
16018 2005-12-16 Neale Ferguson <neale@sinenomine.net>
16019
16020         * mini-s390.c: Fix LOCALLOC processing.
16021
16022         * tramp-s390.c (s390_magic_trampoline): Fix base calculation.
16023
16024 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
16025
16026         * iltests.il: Add tests for some opcodes not covered by the other
16027         tests.
16028
16029 2005-12-15 Neale Ferguson <neale@sinenomine.net>
16030
16031         * mini-s390.c: Fix ADDCC/SBB bug revealed by test_0_ulong_regress; Correct 
16032         register loading for Tail processing; Correct trace output.
16033
16034         * inssel-s390.brg: Reimplement LSUB_OVF due to s390 implementation of signed math.
16035
16036         * cpu-s390.md: Correct size of jmp instruction. 
16037
16038 2005-12-13 Neale Ferguson <neale@sinenomine.net>
16039
16040         * mini-s390.c (mono_arch_emit_prolog): Remove some debugging bits.
16041
16042 2005-12-13 Neale Ferguson <neale@sinenomine.net>
16043
16044         * inssel-s390.brg tramp-s390.c cpu-s390.md mini-s390.c mini-s390.h:
16045           Bring s390 up to current level.
16046
16047 2005-12-12  Zltan Varga  <vargaz@gmail.com>
16048
16049         * generics.2.cs: Disable the newly added tests as they do not work yet.
16050         
16051         * generics.2.cs: Add valuetype tests.
16052
16053 2005-12-09  Zoltan Varga  <vargaz@gmail.com>
16054
16055         * basic-long.cs: Add i4->u8 test.
16056
16057         * objects.cs: Add tests for JIT intrinsic.
16058
16059         * mini.c (mini_get_inst_for_method): Resurrect the array Rank/Length
16060         optimizations lost by a mistake.
16061
16062 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
16063
16064         * basic-long.cs: Remove a test moved to objects.cs.
16065
16066         * arrays.cs: Add more array tests.
16067
16068 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
16069
16070         * arrays.cs: Add new tests for multi-dimensional arrays.
16071
16072 2005-12-06  Raja R Harinath  <rharinath@novell.com>
16073
16074         * Makefile.am (test_sources2): Add generics.2.cs.
16075         (EXTRA_DIST): Add test_sources2.
16076
16077 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
16078
16079         Support for boxing and unboxing nullable types as well as the
16080         isinst operation on nullables, per the CLI ammendment.
16081
16082         * inssel.brg (CEE_ISINST): Special case for nullable
16083
16084         * mini.c (handle_unbox_nullable): new method
16085         (handle_box): Special case for nullable types
16086         (mono_method_to_ir): Call handle_unbox_nullable in correct
16087         places.
16088
16089         * generics.2.cs: New test suite
16090
16091         * Makefile.am: Support for regression tests with generics.
16092
16093 2005-12-03  Zoltan Varga  <vargaz@gmail.com>
16094
16095         * mini-amd64.c (emit_load_volatile_arguments): Add loading of arguments
16096         allocated to registers. Fixes #76800.
16097
16098 Thu Dec 1 12:59:40 EST 2005 Paolo Molaro <lupus@ximian.com>
16099
16100         * mini-ppc.c, inssel-ppc.brg: fix ABI issue (pinvoke3.cs).
16101
16102 2005-11-30  Zoltan Varga  <vargaz@gmail.com>
16103
16104         * exceptions.cs: Disable test_0_long_cast () test, since it fails on a lot 
16105         of platforms.
16106
16107 2005-11-29  Zoltan Varga  <vargaz@gmail.com>
16108
16109         * objects.cs basic-calls.cs: Move a test depending on valuetypes to
16110         objects.cs.
16111
16112         * inssel-long32.brg (CEE_CONV_I8): Remove unused labels.
16113         
16114         * inssel-long32.brg (CEE_CONV_I8): Convert this to a branchless version.
16115 Tue Nov 29 05:41:34 EST 2005 Paolo Molaro <lupus@ximian.com>
16116
16117         * mini-ppc.c, cpu-g4.md: ensure a fp register is converted to
16118         single precision before storing to a single precision location.
16119
16120 2005-11-28  Raja R Harinath  <rharinath@novell.com>
16121
16122         * Makefile.am (ILASM): Use profile-dependent location of ilasm.
16123
16124 2005-11-27  Zoltan Varga  <vargaz@gmail.com>
16125
16126         * basic-long.cs basic-calls.cs objects.cs: Move some tests to the
16127         correct files.
16128
16129         * basic.cs: Remove test_0_byte_compares test which was moved to
16130         objects.cs a long time ago.
16131
16132 2005-11-22  Massimiliano Mantione  <massi@ximian.com>
16133
16134         * aliasing.c: Fixed aliasing issue on 64 bit archs.
16135
16136 2005-11-20  Zoltan Varga  <vargaz@gmail.com>
16137
16138         * mini-ia64.c exceptions-ia64.c: Simplify the way filters/finally
16139         handlers are called.
16140
16141         * mini-ia64.c (mono_arch_emit_exceptions): Optimize size of exception
16142         throwing code.
16143
16144          * mini-ia64.c: Add support for the throw->branch exception 
16145         optimization.   
16146
16147         * driver.c (DEFAULT_OPTIMIZATIONS): Add MONO_OPT_EXCEPTION.
16148
16149 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
16150
16151         * mini.c: Enabled "fastpath" deadce :-)
16152         
16153 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
16154
16155         * mini.c: Added "fastpath" deadce (deadce without SSA), and a simple
16156         alias analysis pass to support it.
16157         * mini.h: Likewise.
16158         * ssa.c: Likewise.
16159         * liveness.c: Likewise (liveness computation can use aliasing
16160         information to be more accurate).
16161         * driver.c: Added an "ssa" option go tell the JIT to use SSA, and
16162         moreover made so that "--compile-all" uses the given optimization
16163         flags and not the default ones.
16164         * aliasing.c: Alias analysis (new file).
16165         * aliasing.h: Likewise.
16166         * Makefile.am: added "aliasing.c" and "aliasing.h".
16167         
16168 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
16169
16170         * mini-ops.h: Add missing OP_I opcodes so it is in synch with the
16171         OP_L opcodes.
16172
16173 2005-11-13  Zoltan Varga  <vargaz@gmail.com>
16174
16175         * mini-exceptions.c (mono_handle_exception_internal): Remove the 
16176         fp >= end_of_stack exit condition, as it is not needed, and it might
16177         become true for fp eliminated frames.
16178
16179 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
16180
16181         * mini-x86.c (mono_arch_emit_epilog): Use G_STRUCT_OFFSET instead of hard
16182         coded offsets.
16183
16184 Tue Nov 8 11:28:20 GMT 2005 Paolo Molaro <lupus@ximian.com>
16185
16186         * mini-arm.c: fixed alignment of doubles/longs to match
16187         the C ABI (bug #76635).
16188
16189 Mon Nov 7 16:13:21 CET 2005 Paolo Molaro <lupus@ximian.com>
16190
16191         * aot.c: fix compilation with --enable-minimal=aot.
16192
16193 Fri Nov 4 12:34:15 GMT 2005 Paolo Molaro <lupus@ximian.com>
16194
16195         * mini-arm.c: fixed compatibility with the new
16196         floating point emulator package for compares.
16197
16198 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com?
16199
16200         * mini.c : reverted sig->pinvoke changes (r51396-51397).
16201
16202 2005-11-01  Zoltan Varga  <vargaz@freemail.hu>
16203
16204         * mini-exceptions.c (print_stack_frame): Output to stderr.
16205         (mono_handle_native_sigsegv): Ditto.
16206
16207 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
16208
16209         * mini-amd64.c (mono_arch_output_basic_block): Remove unused
16210         OP_LCONV_TO_OVF_I implementation.
16211
16212         * mini-amd64.c: Add support for the throw->branch exception 
16213         optimization.
16214
16215         * branch-opts.c (mono_branch_optimize_exception_target): Allow the case
16216         when the catch clause catches a more general exception, i.e. Object.
16217
16218 2005-10-30  Zoltan Varga  <vargaz@gmail.com>
16219
16220         * cpu-ia64.md: Remove unused opcodes.
16221
16222         * mini.c (GET_CONTEXT): Simplify this somewhat by removing arch
16223         specific defines for architectures defining USE_SIGACTION.
16224
16225         * mini-ia64.c: Fix some warnings.
16226
16227         * exceptions-ia64.c (mono_arch_ip_from_context): Fix this, the previous
16228         version seemed to skip a frame.
16229
16230 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
16231
16232         * mini.c: Clean up the usage of sig->pinvoke flag. Now
16233         only calls which are made to native code use this flag.
16234
16235 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
16236
16237         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for
16238         varargs methods as well.
16239         
16240         * mini-amd64.c exceptions-amd64.c: Allow fp elimination in methods
16241         which have save_lmf set. Reorganize methods prologs a bit.
16242
16243         * mini-amd64.c (mono_arch_compute_omit_fp): Move the check for the
16244         debugger to the proper place.
16245
16246 2005-10-29  Martin Baulig  <martin@ximian.com>
16247
16248         * mini-amd64.c (debug_omit_fp): Temporarily disable fp elimination
16249         when running inside the debugger until the debugger has support
16250         for it.
16251
16252 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
16253
16254         * mini.h: Fix a warning.
16255
16256 2005-10-24  Miguel de Icaza  <miguel@novell.com>
16257
16258         * mini.c (mono_pmip): Just a wrapper for get_method_from_ip which
16259         we expose publicly, this returns the string.
16260
16261 2005-10-22  Zoltan Varga  <vargaz@freemail.hu>
16262
16263         * exceptions-amd64.c (mono_arch_find_jit_info): Fix some corner cases
16264         with fp elimination.
16265
16266 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
16267
16268         * mini-exceptions.c (mono_handle_native_sigsegv): Try to print a
16269         native stacktrace using the glibc 'backtrace' function if available.
16270
16271 2005-10-20  Zoltan Varga  <vargaz@gmail.com>
16272
16273         * mini.h (MonoDebugOptions): Remove 'abort_on_sigsegv' option.
16274
16275         * mini-exceptions.c (mono_handle_native_sigsegv): New function to 
16276         handle SIGSEGVs received while in native code.
16277
16278         * mini.c (sigsegv_signal_handler): If the SIGSEGV happened in native
16279         code, call mono_handle_native_sigsegv which will abort the runtime
16280         after printing some diagnostics, instead of converting it into a
16281         confusing NullReferenceException.
16282
16283 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
16284
16285         * cpu-pentium.md: Remove unused opcodes.
16286
16287 2005-10-18  Zoltan Varga  <vargaz@freemail.hu>
16288
16289         * mini-amd64.h (MonoLMF): Add rsp field.
16290
16291         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Save the sp reg into
16292         the lmf too.
16293
16294 2005-10-17  Zoltan Varga  <vargaz@gmail.com>
16295
16296         * mini-codegen.c (get_register_spilling): Fix some warnings.
16297
16298 2005-10-16  Zoltan Varga  <vargaz@freemail.hu>
16299
16300         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Add support for fp
16301         elimination during exception handling. Enable fp elimination by
16302         default.
16303
16304         * mini-amd64.h mini-amd64.c: Add preliminary support for frame pointer
16305         elimination.
16306
16307 2005-10-16  Martin Baulig  <martin@ximian.com>
16308
16309         * mini-exceptions.c
16310         (mono_debugger_run_finally): New public method for the debugger.
16311
16312 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
16313
16314         * debug-mini.c (mono_debug_init_method): Fix warning.
16315
16316         * mini.h branch-opts.c (mono_branch_optimize_exception_target): Make
16317         the 'exname' parameter const to fix some warnings.
16318
16319 2005-10-09  Zoltan Varga  <vargaz@freemail.hu>
16320
16321         * mini-exceptions.c (mono_handle_exception_internal): Fix another bug
16322         introduced by the previous patch.
16323
16324 2005-10-08  Zoltan Varga  <vargaz@gmail.com>
16325
16326         * basic-float.cs: Add test for precision of float arithmetic.
16327
16328         * mini-ia64.c (mono_arch_output_basic_block): Convert to/from doubles
16329         when loading/storing single values from/to memory.
16330
16331         * mini.c (mono_jit_compile_method_with_opt): Create the function
16332         pointers in the correct domain.
16333
16334 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
16335
16336         * mini-exceptions.c (mono_handle_exception_internal): Fix bug 
16337         introduced by previous patch.
16338         
16339         * mini-exceptions.c (mono_handle_exception_internal): Handle the case
16340         when out_filter_idx is NULL.
16341
16342         * mini-exceptions.c: Don't run filter clauses twice during exception
16343         handling. Fixes #75755.
16344
16345 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
16346
16347         * aot.c: Add support for ldflda wrappers.
16348
16349         * mini.c (mono_method_to_ir): Use ldflda wrappers for CEE_LDFLDA. Fixes
16350         #75902.
16351
16352 Tue Oct 4 20:23:25 CEST 2005 Paolo Molaro <lupus@ximian.com>
16353
16354         * mini.c, mini.h: do not consider exception handlers blocks when
16355         setting up interface variables.
16356
16357 2005-10-04  Zoltan Varga  <vargaz@freemail.hu>
16358
16359         * aot.c (emit_section_change): Fix emitting of sections on win32. Fixes #76322.
16360
16361 2005-10-03  Zoltan Varga  <vargaz@gmail.com>
16362
16363         * liveness.c (mono_analyze_liveness): Revert parts of r51051 since it
16364         causes a regression.
16365
16366         * mini.c (mini_thread_cleanup): Fix reading of freed memory.
16367
16368 2005-10-02  Zoltan Varga  <vargaz@freemail.hu>
16369
16370         * mini.h (OP_PCONST): Move the definition of OP_PCONST into the rest
16371         of the OP_P definitions.
16372
16373         * TODO: Add a proposal for dealing with the CEE/OP mess.
16374
16375         * mini-amd64.c (mono_arch_output_basic_block): Merge mul_imm 
16376         optimizations from the x86 port.
16377
16378         * cpu-amd64.md: Ditto.
16379
16380         * basic.cs basic-long.cs: Add tests.
16381
16382 Fri Sep 30 20:07:20 CEST 2005 Paolo Molaro <lupus@ximian.com>
16383
16384         * Makefile.am, driver.c, mini-x86.c, mini.c, mini.h, branch-opts.c:
16385         Patrik Torstensson's implementation of my exception-handling
16386         optimization idea, when the exception object is not used
16387         (bug #62150).
16388
16389 Fri Sep 30 19:10:29 CEST 2005 Paolo Molaro <lupus@ximian.com>
16390
16391         * mini-x86.c, cpu-pentium.md: Patrik Torstensson's port
16392         of the mul_imm optimizations from the old jit.
16393
16394 Fri Sep 30 11:37:51 EDT 2005 Paolo Molaro <lupus@ximian.com>
16395
16396         * mini.c, liveness.c: patch by Patrik Torstensson and
16397         Zoltan Varga to improve performance in methods with
16398         exception clauses.
16399
16400 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
16401
16402         * driver.c: Remove 'Globalization' entry from --version.
16403
16404 2005-09-28  Zoltan Varga  <vargaz@gmail.com>
16405
16406         * mini.c (mono_jit_compile_method_inner): Do not load AOT code when
16407         there is a profiler interested in JIT events.
16408
16409         * aot.c: Load profile files produced by the AOT profiling module, and
16410         reorder methods based on the profiling info. Add a 'method_order' table
16411         to the AOT file to make mono_aot_find_jit_info work with the reordered
16412         methods.
16413
16414         * mini.h: Bump AOT file version info.
16415
16416 Wed Sep 28 17:12:48 CEST 2005 Paolo Molaro <lupus@ximian.com>
16417
16418         * mini-arm.h: work around what looks like a gcc bug when optimizations
16419         are enabled.
16420
16421 2005-09-28  Raja R Harinath  <rharinath@novell.com>
16422
16423         * Makefile.am (AM_CFLAGS): Don't use += to append inside
16424         conditionals.  Use ...
16425         (PLATFORM_CFLAGS, ARCH_CFLAGS): ... these.
16426
16427 2005-09-27  Zoltan Varga  <vargaz@freemail.hu>
16428
16429         * mini-amd64.c (mono_arch_call_opcode): Use mono_class_value_size ()
16430         to determine the amount of memory to copy when passing valuetypes.
16431
16432         * inssel-amd64.brg: Remove PUSH(LDIND4) rules since they convert an
16433         4 byte load into a 8 byte load. Fix aligning of size in OP_OUTARG_VT.
16434
16435 2005-09-27  Zoltan Varga  <vargaz@gmail.com>
16436
16437         * mini.h mini.c aot.c: Add infrastructure to collect pagefault 
16438         information about aot.
16439
16440 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
16441
16442         * *.c: Replace the use of {Enter,Leave}CriticalSection with
16443         macros. This will allow a deadlock debugger to easily be plugged
16444         in.
16445
16446 Tue Sep 27 09:32:11 EDT 2005 Paolo Molaro <lupus@ximian.com>
16447
16448         * mini-ppc.c, cpu-g4.md: added memory barrier instruction.
16449
16450 2005-09-27  Raja R Harinath  <rharinath@novell.com>
16451
16452         * Makefile.am (AM_CFLAGS): Rename from INCLUDES.
16453         (AM_CFLAGS) [PLATFORM_WIN32): Append to it, don't set it.
16454         (AM_CFLAGS) [ARM]: Add arch/arm directory from the build tree.
16455         ($(arch_built)) [CROSS_COMPILING]: Error out.
16456
16457 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
16458
16459         * aot.c: Add support for the no_special_static flag for classes.
16460
16461 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
16462
16463         * Reapply reverted patches.
16464
16465         * *: Revert r50174 as well.
16466
16467         * mini-amd64.c cpu-amd64.md inssel-amd64.brg: Revert r50170 as well.
16468
16469 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
16470
16471         * mini-amd64.c: Revert r50342 to see if this fixed buildbot.
16472
16473 2005-09-23  Miguel de Icaza  <miguel@novell.com>
16474
16475         * mini.c (SIG_HANDLER_SIGNATURE): Only dereference info if it is
16476         part of the SIG_HANDLER_SIGNATURE.  
16477
16478 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
16479
16480         * mini.h mini.c: Add a new MONO_DEBUG option to collect metadata pagefault
16481         statistics.
16482
16483         * mini-x86.c (mono_arch_call_opcode): Fix vararg calling convention 
16484         introduced by previous patch.
16485
16486 2005-09-21  Zoltan Varga  <vargaz@gmail.com>
16487
16488         * tramp-x86.c (mono_arch_create_trampoline_code): Restore caller
16489         saved registers too.
16490
16491         * mini-x86.c (mono_arch_allocate_vars): Rewrite this so it works based 
16492         upon the information returned by get_call_info ().
16493         
16494         * mini-x86.c (add_float): Fix stack size calculation.
16495         (mono_arch_call_opcode): Rewrite this so it works based up the
16496         information returned by get_call_info ().
16497         (mono_arch_get_this_vret_args): Ditto.
16498
16499 2005-09-21  Zoltan Varga  <vargaz@freemail.hu>
16500
16501         * mini-amd64.c (mono_arch_emit_this_vret_args): Use the information
16502         in cinfo to determine the registers which need to be used.
16503
16504 2005-09-20  Miguel de Icaza  <miguel@novell.com>
16505
16506         * driver.c (mono_main): Add --server and --desktop flags. 
16507
16508 2005-09-16  Zoltan Varga  <vargaz@gmail.com>
16509
16510         * mini-ia64.h: Make register masks 64 bit. Don't treat argument
16511         registers as global registers.
16512
16513         * inssel-ia64.brg (stmt): Remove OP_OUTARG_REG () rules which are no 
16514         longer needed with the new register allocator.
16515
16516         * mini-ia64.c: Use OP_MOVE instead of OP_SETREG for reg-reg moves.
16517
16518         * cpu-ia64.md: Remove unused opcodes.
16519         
16520         * regalloc.c mini-codegen.c: Make register masks 64 bit on ia64.
16521         
16522 2005-09-16  Zoltan Varga  <vargaz@freemail.hu>
16523
16524         * cpu-amd64.md: Remove unused opcodes.
16525
16526         * inssel-amd64.brg: Remove OP_OUTARG_REG () rules which are no longer
16527         needed with the new register allocator.
16528
16529         * inssel-amd64.brg mini-amd64.c: Use OP_MOVE instead of OP_SETREG for
16530         reg-reg moves.
16531
16532 2005-09-16  Raja R Harinath  <rharinath@novell.com>
16533
16534         * Makefile.am (check-local): Don't invoke semdel-wrapper.
16535
16536 2005-09-16  Martin Baulig  <martin@ximian.com>
16537
16538         * exceptions-amd64.c
16539         (throw_exception): Don't call mono_debugger_throw_exception() if
16540         we're a rethrow - see the FIXME in the code.
16541
16542 2005-09-15  Geoff Norton  <gnorton@customerdna.com>
16543
16544         * mini.c (mono_init_exceptions): This only works on some architectures.
16545         
16546 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
16547
16548         * mini.c (mono_method_to_ir): Add OP_LMUL imm -> OP_LMUL_IMM conversion
16549         on ia64.
16550
16551         * inssel-long.brg mini-ia64.c: Add OP_LMUL_IMM rules.
16552
16553         * mini-ia64.h mini-ia64.c: Remove the altstack support code which is
16554         now in mini-exceptions.c.
16555
16556 2005-09-15  Zoltan Varga  <vargaz@freemail.hu>
16557
16558         * mini-amd64.h mini-am64.c: Remove the altstack support code which is
16559         now in mini-exceptions.c.
16560
16561 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
16562
16563         * exceptions-x86.c: Applied patch from Patrik Torstensson 
16564         <patrik.torstensson@gmail.com>. Add stack overflow handling support for win32.
16565
16566         * mini-exceptions.c mini-x86.c mini.c: Move the altstack setup/teardown
16567         code into mini-exceptions.c. Add some assertions to it.
16568
16569 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
16570
16571         * aot.c (emit_section_change): Applied patch from "The Software Team" 
16572         (<software@solmersa.com>). Fix as errors on windows.
16573
16574 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
16575
16576         * tramp-amd64.c (mono_arch_create_trampoline_code): Fix saving of
16577         method info into the LMF.
16578
16579 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
16580         
16581         * mini-ia64.c: Add proper unwind info for method epilogs.
16582
16583         * exceptions-ia64.c: Add some code to help debugging.
16584         
16585         * mini-ia64.c mini-ia64.h: Add sigaltstack support.
16586
16587         * mini-exceptions.c: Fix warning.
16588
16589 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
16590
16591         * mini.c: Really fix build.
16592
16593         * mini-x86.c mini-amd64.c: Fix build.
16594
16595 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
16596
16597         * mini-ia64.c inssel-ia64.brg: Add InterlockedExchange instrinsics.
16598
16599         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Implement
16600         some Interlocked methods as intrinsics.
16601
16602         * mini.c (mini_get_inst_for_method): Call arch_get_inst_for_method
16603         for Thread methods as well.
16604
16605         * mini-ops.h: Add OP_MEMORY_BARRIER opcode.
16606
16607         * inssel.brg: Add rule for OP_MEMORY_BARRIER.
16608
16609         * mini-ia64.c mini-x86.c mini-amd64.c 
16610         cpu-ia64.md cpu-pentium.md cpu-amd64.md: Add implementation of 
16611         OP_MEMORY_BARRIER.
16612         
16613         * mini.c (mono_init_exceptions): Fix build breakage.
16614
16615 2005-09-10  Zoltan Varga  <vargaz@gmail.com>
16616
16617         * mini-ia64.c exceptions-ia64.c tramp-ia64.c: Remove 'manual' emitting
16618         of instructions. Use the new ia64_unw_op macros for emitting unwind
16619         info.
16620
16621         * mini.c (mono_init_exceptions): Initialize exception handling
16622         related trampolines at startup.
16623
16624 Fri Sep 9 19:30:37 BST 2005 Paolo Molaro <lupus@ximian.com>
16625
16626         * cpu-arm.md, mini-arm.c: fix for dynamic code (Gtk# apps).
16627
16628 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
16629
16630         * mini.c: Handle type loading errors gracefully during compilation and
16631         throw the appropriate exception.
16632
16633 Fri Sep 9 09:49:14 CEST 2005 Paolo Molaro <lupus@ximian.com>
16634
16635         * ldscript.mono, Makefile.am: use anonymous versions in the ldscript
16636         for the mono binary.
16637
16638 2005-09-09  Martin Baulig  <martin@ximian.com>
16639
16640         * mini.c (mono_method_to_ir): Comment out the G_BREAKPOINT()'s for
16641         the release.
16642
16643 Thu Sep 8 14:53:45 BST 2005 Paolo Molaro <lupus@ximian.com>
16644
16645         * mini-arm.h: use emulation for conv.r.un for the release.
16646
16647 Thu Sep 8 11:28:45 BST 2005 Paolo Molaro <lupus@ximian.com>
16648
16649         * mini-arm.c, objects.cs: more fixes and tests for them.
16650
16651 Wed Sep 7 17:14:26 BST 2005 Paolo Molaro <lupus@ximian.com>
16652
16653         * mini-arm.c: align structures to at least 4 bytes to be able
16654         to keep our current optimized memcpy.
16655
16656 Tue Sep 6 22:51:08 BST 2005 Paolo Molaro <lupus@ximian.com>
16657
16658         * mini-arm.c, cpu-arm.md, inssel-arm.brg: bugfixes.
16659
16660 2005-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16661
16662         * mini.c: ignore SIGPIPE.
16663
16664 2005-09-04  Zoltan Varga  <vargaz@gmail.com>
16665
16666         * mini-ia64.c (mono_arch_lowering_pass): Convert 'and_imm 255' to zext1.
16667
16668         * mini-ia64.h mini-ia64.c: Add some minor optimizations.
16669
16670 2005-09-02  Zoltan Varga  <vargaz@gmail.com>
16671
16672         * mini.h: Add prototype for mono_allocate_stack_slots_full.
16673
16674 Thu Sep 1 21:05:26 BST 2005 Paolo Molaro <lupus@ximian.com>
16675
16676         * exceptions-arm.c, mini.c, mini-arm.c, mini-arm.h:
16677         exception handling support.
16678         * mini-arm.c, mini-arm.h: bigendian fixes (partially from a
16679         patch by Brian Koropoff <briank@marakicorp.com>).
16680
16681 Thu Sep 1 10:22:44 EDT 2005 Paolo Molaro <lupus@ximian.com>
16682
16683         * mini.c: revert another 'optimization' which breaks when
16684         items on the eval stack need to be saved at a basic block end
16685         (bug #75940).
16686
16687 Wed Aug 31 17:29:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
16688
16689         * jit-icalls.c: for arrays, ensure we always provide
16690         lower bounds.
16691
16692 2005-08-30  Zoltan Varga  <vargaz@gmail.com>
16693
16694         * mini.c (mono_allocate_stack_slots_full): Fix ia64 build.
16695         
16696         * mini.c (mini_get_inst_for_method): Special case Object:.ctor as well.
16697
16698 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
16699
16700         * mini-ia64.h mini-ia64.c: Implement frame pointer elimination. Keep
16701         arguments in their original register.
16702
16703 2005-08-28  Zoltan Varga  <vargaz@gmail.com>
16704
16705         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Optimize
16706         memset/memcpy.
16707
16708         * mini.c (mono_method_to_ir): Disable the MUL->MUL_IMM optimization
16709         when ssapre is enabled.
16710
16711         * inssel-long.brg: Fix bug in previous patch.
16712
16713         * mini-ia64.c mini-ia64.h mini.c inssel-long.brg: Optimize 
16714         multiplication by a constant.
16715
16716 2005-08-27  Zoltan Varga  <vargaz@gmail.com>
16717
16718         * mini-ia64.c (mono_arch_setup_jit_tls_data): Add support for intel
16719         icc.
16720
16721         * tramp-ia64.c (mono_arch_create_trampoline_code): Use st8.spill for
16722         saving registers.
16723
16724 Fri Aug 26 11:09:28 BST 2005 Paolo Molaro <lupus@ximian.com>
16725
16726         * inssel-arm.brg: apply changes tested by Brian Koropoff
16727         <briank@marakicorp.com>.
16728
16729 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
16730
16731         * mini-x86.c (mono_arch_emit_prolog): Fix calling of mono_jit_thread_attach () under windows.
16732         
16733 2005-08-24  Zoltan Varga  <vargaz@gmail.com>
16734
16735         * mini-codegen.c (mono_local_regalloc): Avoid allocating dreg and sreg1/2
16736         to the same register if dreg is just a base register.
16737         (print_ins): Improve printing of membase opcodes.
16738
16739         * inssel-x86.brg: Add optimized ldind(reg) rules.
16740
16741         * mini-x86.c cpu-pentium.md: Changes required to support the new rules.
16742
16743 Wed Aug 24 19:39:36 CEST 2005 Paolo Molaro <lupus@ximian.com>
16744
16745         * mini.c: when running under valgrind, set the stack bottom for
16746         the GC at the actual approximate stack for the app (fixes running
16747         mono with valgrind).
16748
16749 Tue Aug 23 21:38:50 CEST 2005 Paolo Molaro <lupus@ximian.com>
16750
16751         * mini.c: do no break at the first valuetype to init found
16752         (fixes bug #75791).
16753
16754 Tue Aug 23 16:53:21 BST 2005 Paolo Molaro <lupus@ximian.com>
16755
16756         * cpu-arm.md, mini-arm.c: more fixes and LMF support.
16757
16758 Tue Aug 23 15:11:44 CEST 2005 Paolo Molaro <lupus@ximian.com>
16759
16760         * cpu-g4.md: fixed instruction length exposed by the nemerle compiler.
16761
16762 2005-08-23  Zoltan Varga  <vargaz@freemail.hu>
16763
16764         * inssel-amd64.brg inssel-x86.brg: Fix the fcall rules.
16765
16766 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
16767
16768         * inssel-x86.brg: Fix assert in patch_delegate_trampoline.
16769
16770         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Add some debug
16771         code.
16772
16773         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Add some debug
16774         code.
16775
16776         * mini.c (optimize_branches): Don't quit after 1000 iterations on large
16777         methods.
16778
16779 Mon Aug 22 19:16:29 BST 2005 Paolo Molaro <lupus@ximian.com>
16780
16781         * tramp-arm.c: allocate less memory for the trampoline and fix typo.
16782
16783 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
16784
16785         * mini.c (mono_method_to_ir): Remove instructions inserted after a branch
16786         in the tail recursion optimization.
16787
16788         * mini.h helpers.c (mono_disassemble_code): Emit starts of basic blocks as 
16789         debug info into the assembly file.
16790
16791         * iltests.il: Add test for filter regions.
16792
16793         * mini.c (mono_method_to_ir): Fix handling of nested FILTER clauses. Fix
16794         initial stack of filter regions. Fixes #75755.
16795
16796 Mon Aug 22 17:49:16 BST 2005 Paolo Molaro <lupus@ximian.com>
16797
16798         * mini-arm.c, cpu-arm.c: fixes and support for methods with bigger
16799         stack requirements.
16800
16801 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
16802
16803         * mini.c (mono_create_delegate_trampoline): Fix memory leak. Put back
16804         the check for an already compiled method on non-ia64 platforms.
16805         (mono_create_jump_trampoline): Store the MonoJitInfo structure into the
16806         proper domain.
16807
16808         * mini-x86.h tramp-x86.c: Add support for delegate trampolines.
16809
16810         * inssel-x86.brg: Add some optimized call rules.
16811
16812 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
16813
16814         * mini.c (mono_create_delegate_trampoline): Do not return an already compiled
16815         method here.
16816
16817         * mini.h mini-trampolines.c: Pass the trampoline argument to 
16818         mono_arch_patch_delegate_trampoline.
16819
16820         * mini-ia64.h mini-ia64.c tramp-ia64.c: Add support for delegate trampolines.
16821
16822         * mini-trampolines.c: Fix build.
16823
16824         * mini-amd64.h: Add delegate trampolines.
16825
16826         * mini.h mini.c mini-trampolines.c tramp-amd64.c: Add delegate trampolines.
16827
16828         * inssel-amd64.brg: Add optimized call rules.
16829         
16830         * mini-ia64.c tramp-ia64.c: Improve instruction scheduling.
16831
16832         * inssel-ia64.brg: Add optimized ldind(reg) rules.
16833
16834 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
16835
16836         * mini.c (mono_create_class_init_trampoline): Fix bug caused by last
16837         change.
16838
16839         * mini-ia64.c: Remove LMF fixmes.
16840
16841         * mini-ia64.h: Remove most fields from LMF.
16842
16843         * inssel-ia64.brg (stmt): Fix unaligned access errors.
16844
16845         * mini-trampolines.c: Add support for IA64 function descriptors.
16846
16847         * mini.h mini.c jit-icalls.c exceptions-ia64.cdriver.c: Add support
16848         for IA64 function descriptors.
16849
16850 Sat Aug 20 16:51:44 BST 2005 Paolo Molaro <lupus@ximian.com>
16851
16852         * tramp-arm.c: patch the vtable for virtual calls. Added
16853         support code to register/unregister the LMF.
16854         * mini-arm.c, mini-arm.h: warning fixes, fixes, speedups,
16855         more LMF work.
16856
16857 2005-08-19  Dick Porter  <dick@ximian.com>
16858
16859         * mini.c: Use a gsize to store the thread ID, so it can hold a 64
16860         bit value if needed.
16861
16862 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
16863
16864         * mini.c (mini_get_method): Move handling of wrapper data here.
16865
16866         * mini.c (mono_method_to_ir): Add support for dynamic methods.
16867
16868         * mini.c (mono_method_to_ir): Convert nonvirtual calls to abstract methods into
16869         virtual.
16870
16871         * mini.c (mono_method_to_ir): Emit IR for CEE_NOP as well, so 
16872         bblock->code does not remain empty.
16873
16874 2005-08-17  Zoltan Varga  <vargaz@freemail.hu>
16875
16876         * arrays.cs: Add regression test for #75832.
16877
16878         * inssel-amd64.brg cpu-amd64.md mini-amd64.c: Fix LDELEMA optimization
16879         rules. Fixes #75832.
16880
16881         * mini-ia64.c tramp-ia64.c exceptions-ia64.c: Implement improved
16882         instruction scheduling.
16883
16884 2005-08-12  Zoltan Varga  <vargaz@freemail.hu>
16885
16886         * mini-exceptions.c (ves_icall_get_frame_info): Fix IA64 build.
16887
16888 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
16889
16890         * mini-exceptions.c mini-x86.h: Move VC stuff into macros in mini-x86.h.
16891
16892         * mini-codegen.c: Fix VC build.
16893
16894         * cpu-pentium.md: Increase length of atomic_exhange_i4.
16895
16896 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16897
16898         * mini.h: fix signature for mono_register_opcode_emulation.
16899
16900 2005-08-09  Zoltan Varga  <vargaz@freemail.hu>
16901
16902         * mini.c: Get rid of most of the helper_sig_... constants using
16903         mono_create_icall_signature ().
16904
16905 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
16906
16907         * jit-icalls.c (helper_ldstr): New helper function.
16908
16909         * mini.c (get_basic_blocks): Set out_of_line for bblocks containing a throw.
16910
16911         * mini.c (mono_method_to_ir): If an LDSTR instruction is in a bblock with a
16912         throw, load the string using a helper call instead of creating a string object.
16913
16914         * aot.c: Update after LDSTR changes.
16915
16916         * mini.h: Bump AOT file version.
16917         
16918         * aot.c: Save class size info into the AOT file. Print more statistics during
16919         compilation.
16920
16921         * mini.h: Bump AOT file version.
16922
16923         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
16924         ordering of disasm cases. Fixes #74957.
16925
16926 Thu Aug 4 19:47:24 BST 2005 Paolo Molaro <lupus@ximian.com>
16927
16928         * mini-ops.h, mini-arch.h, inssel.brg, mini.c, mini.h,
16929         jit-icalls.c, mini-codegen.c, Makefile.am: changes in
16930         the generic code needed for the ARM port.
16931
16932 Thu Aug 4 19:42:54 BST 2005 Paolo Molaro <lupus@ximian.com>
16933
16934         * exceptions-arm.c, tramp-arm.c, mini-arm.c, mini-arm.h, cpu-arm.md,
16935         inssel-arm.brg: more ARM features and fixes.
16936
16937 Mon Aug 1 18:37:38 BST 2005 Paolo Molaro <lupus@ximian.com>
16938
16939         * tramp-arm.c, mini-arm.c, cpu-arm.md, inssel-arm.brg: more
16940         ARM port work in progress.
16941
16942 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
16943
16944         * mini-ia64.c (mono_arch_call_opcode): Ongoing IA64 work.
16945
16946         * mini-exceptions.c mini-ia64.h: Ongoing IA64 work.
16947
16948         * mini-ia64.c (ia64_emit_bundle): Ongoing IA64 work.
16949
16950         * inssel.brg (mini_emit_memset): Add support for unaligned access.
16951
16952         * *-ia64.*: Ongoing IA64 work.
16953         
16954         * mini-ia64.c exceptions-ia64.c: Ongoing IA64 work.
16955
16956 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
16957
16958         * TODO: Remove out-of-data todo stuff.
16959
16960         * mini.h mini.c (mono_create_jit_trampoline_from_token): Remove some
16961         dead code.
16962
16963         * aot.c: Save/load MonoCachedClassInfo->has_nested_classes.
16964
16965         * mini.h: Bump corlib version.
16966
16967 2005-07-27  Martin Baulig  <martin@ximian.com>
16968
16969         * mini-codegen.c
16970         (create_copy_ins): Added `const unsigned char *ip' argument; set
16971         `copy->cil_code' from it.
16972
16973 2005-07-27  Martin Baulig  <martin@ximian.com>
16974
16975         * mini-exceptions.c (mono_handle_exception): Don't call
16976         mono_debugger_handle_exception() for filters.
16977
16978 2005-07-27  Zoltan Varga  <vargaz@freemail.hu>
16979
16980         * mini-trampolines.c (mono_aot_trampoline): Handle AppDomain:InvokeInDomain
16981         as well.
16982
16983 2005-07-26  Martin Baulig  <martin@ximian.com>
16984
16985         Committing a patch from Michal Moskal <michal.moskal@gmail.com>.
16986
16987         * mini.c (mono_method_to_ir): In `CEE_CALLI', only use
16988         helper_compile_generic_method() if the method is actually virtual
16989         and non-final.
16990
16991 2005-07-26  Martin Baulig  <martin@ximian.com>
16992
16993         * mini.c
16994         (trampoline_code): Renamed to `mono_trampoline_code' and made it
16995         public; this is now accessed directly by the debugger.
16996         (mono_generic_trampoline_code): Removed.
16997
16998         * debug-mini.c
16999         (mono_debug_init_method): Also add interncalls and wrappers.
17000
17001 2005-07-23  Zoltan Varga  <vargaz@freemail.hu>
17002
17003         * mini-ia64.c mini-ia64.h: Add support for tracing/profiling.
17004
17005 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
17006
17007         * aot.c (mono_aot_get_method_from_token): Fix a potential crash here.
17008
17009 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
17010
17011         * aot.c (load_patch_info): Fix handling of stfld_remote wrapper.
17012
17013 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
17014
17015         * mini-amd64.c (mono_arch_setup_jit_tls_data): Use the nice way of
17016         getting TLS offsets on AMD64 too.
17017
17018 2005-07-20  Kornel Pal <kornelpal@hotmail.com>
17019
17020         * driver.c: Detach console when executing IMAGE_SUBSYSTEM_WINDOWS_GUI on win32
17021
17022 Wed Jul 20 18:05:19 BST 2005 Paolo Molaro <lupus@ximian.com>
17023
17024         * exceptions-arm.c, mini-arm.c, tramp-arm.c, cpu-arm.md,
17025         inssel-arm.brg, mini-arm.h: ARM port work in progress.
17026
17027 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
17028
17029         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix build.
17030
17031         * mini.h mini.c mini-*.h tramp-*.c: Move more cross platform trampoline code
17032         to mini.c.
17033
17034         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Call 
17035         mono_sparc_is_virtual_call ().
17036         
17037         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix warning.
17038
17039         * tramp-sparc.c (mono_arch_create_trampoline_code): Fix order of
17040         trampoline parameters.
17041
17042         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix signature.
17043         
17044         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Rename this
17045         to mono_arch_get_vcall_slot_addr.
17046
17047         * Makefile.am tramp-sparc.c: Update the sparc port to use the generic
17048         trampoline code.
17049
17050         * *-sparc.*: Merge the mini-xp-regalloc branch for sparc.
17051
17052 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
17053
17054         * mini-ia64.h mini-ia64.c: Finish pinvoke support.
17055
17056 2005-07-19  Martin Baulig  <martin@ximian.com>
17057
17058         * exceptions-amd64.c (throw_exception): Call
17059         mono_debugger_throw_exception() here like we're doing it on i386.
17060
17061 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
17062
17063         * mini-ia64.c: Add optimized TLS access support.
17064
17065 2005-07-18  Zoltan Varga  <vargaz@freemail.hu>
17066
17067         * mini-exceptions.c: Ongoing IA64 work.
17068
17069         * mini-ia64.c inssel-long.brg: Ongoing IA64 work.
17070
17071         * mini.c: Use the default optimization set when embedding. Fixes
17072         #75194.
17073
17074 2005-07-11  Zoltan Varga  <vargaz@freemail.hu>
17075
17076         * tramp-amd64.c tramp-ia64.c Makefile.am: Move arch independent parts 
17077         of trampolines to a separate file.
17078
17079         * mini-trampolines.c: New file.
17080
17081         * mini.h tramp-x86.c: Move arch independent parts of trampolines to a 
17082         separate file.
17083         
17084         * tramp-x86.c: Reorganize the trampoline code to be similar to the 
17085         amd64/ia64 code.
17086
17087         * mini-codegen.c: Fix cygwin build.
17088
17089 2005-07-10  Zoltan Varga  <vargaz@freemail.hu>
17090
17091         * mini.c: Add some minor changes needed by the IA64 port.
17092
17093         * *-ia64.*: Ongoing IA64 work.
17094
17095 2005-07-09  Zoltan Varga  <vargaz@freemail.hu>
17096
17097         * tramp-amd64.c mini-amd64.c: Update after latest AOT changes. Split 
17098         trampolines into arch-independent and arch-dependent parts.
17099
17100         * mini-amd64.c (mono_arch_lowering_pass): Fix store_membase_imm -> store_membase_reg rule.
17101
17102 2005-07-08  Zoltan Varga  <vargaz@freemail.hu>
17103
17104         * cpu-amd64.md: Merge the xp-regalloc-branch for amd64.
17105
17106         * mini-ops.h mini-amd64.h mini-amd64.c inssel-amd64.brg Makefile.am: Merge
17107         the xp-regalloc-branch for amd64.
17108
17109         * mini-x86.h mini-x86.c cpu-pentium.md Makefile.am: Merge the
17110         xp-regalloc-branch for x86.
17111
17112 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
17113
17114         * inssel.brg (OP_THROW_OR_NULL): Allways rethrow the abort exception.
17115
17116 2005-07-06  Martin Baulig  <martin@ximian.com>
17117
17118         * mini.c
17119         (mono_jit_compile_method_inner): Call mono_get_inflated_method().
17120         (mono_jit_runtime_invoke): Likewise.
17121
17122 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
17123
17124         * aot.c (mono_compile_assembly): Allocate the GOT in the .bss segment
17125         on x86 too.
17126         
17127         * aot.c: Add new mono_aot_get_method_from_token () function to load AOT methods
17128         without loading their metadata. Reorganize the file format so exception handling+
17129         debug info is kept separate from normal method info. Create MonoJitInfo 
17130         structures for methods lazily.
17131
17132         * tramp-x86.c (x86_aot_trampoline): Use the new from_token method to avoid
17133         loading metadata.
17134         (x86_class_init_trampoline): Patch AOT class init trampolines too.
17135
17136         * mini.c (mini_init): Install the new mono_aot_find_jit_info hook.
17137
17138         * mini.c (mono_method_to_ir): Reduce the number of class init trampoline calls
17139         in AOT code.
17140
17141         * mini.h: Bump AOT file version.
17142
17143 2005-07-04  Zoltan Varga  <vargaz@freemail.hu>
17144
17145         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
17146
17147 2005-07-01  Raja R Harinath  <rharinath@novell.com>
17148
17149         * Makefile.am (check-local): Call semdel-wrapper.
17150
17151 2005-06-29  Zoltan Varga  <vargaz@freemail.hu>
17152
17153         * mini-x86.c: Revert the last change as it seems to break the build..
17154
17155 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
17156
17157         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
17158         
17159         * mini-x86.c (mono_arch_cpu_init): Fix setting of fp precision in the VC build.
17160
17161 2005-06-27  Ben Maurer  <bmaurer@ximian.com>
17162
17163         * mini.c (NEW_AOTCONST): make sure to call mono_get_got_var
17164         outside of the macro, so strange stuff doesn't happen with gcc4
17165         (NEW_AOTCONST_TOKEN): Likewise.
17166
17167 2005-06-28  Martin Baulig  <martin@ximian.com>
17168
17169         * mini.c (mini_class_is_system_array): New static method; use this
17170         instead of `klass->parent == mono_defaults.array_class' everywhere
17171         since this also works for the new generic array class.
17172
17173 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
17174
17175         * inssel.brg: Remove warnings.
17176
17177 2005-06-24  Zoltan Varga  <vargaz@freemail.hu>
17178
17179         * mini-ia64.c: Ongoing IA64 work.
17180
17181         * basic-float.cs: Add float->i1 conversion test.
17182
17183         * iltests.il: Add conv.u4 test.
17184
17185 2005-06-23  Zoltan Varga  <vargaz@freemail.hu>
17186
17187         * inssel-long.brg: Fix bug caused by last change.
17188
17189 2005-06-23  Geoff Norton  <gnorton@customerdna.com>
17190
17191         * mini-x86.h: Add __APPLE__ to the SC_* redefines with the other 
17192         BSDs.  Allows the x86 JIT to work on OSX86
17193
17194 2005-06-22  Zoltan Varga  <vargaz@freemail.hu>
17195
17196         * inssel-long.brg: Use OP_LSHR_UN_IMM instead of OP_SHR_UN_IMM in
17197         u4->i8 conversion.
17198
17199         * mini-ia64.c: Ongoing IA64 work.
17200
17201 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
17202
17203         * mini-ia64.c: Ongoing IA64 work.
17204
17205         * driver.c: Clean up jit_code_hash as well when using --regression.
17206
17207         * inssel-long.brg: Fix long->i4/u4 conversion rules.
17208
17209         * basic-long.cs: Add tests for long->u4 conversion.
17210
17211 2005-06-18  Ben Maurer  <bmaurer@ximian.com>
17212
17213         * mini.c: Take mono_get_domainvar out of macros. This makes sure
17214         that we do not depend on undefined C behavior: the order stuff
17215         gets evaluated within an expression. Fixes mono when compiled on
17216         GCC 4.
17217
17218 2005-06-18  Zoltan Varga  <vargaz@freemail.hu>
17219
17220         * *-ia64.*: Ongoing IA64 work.
17221
17222         * aot.c: Lower memory usage while loading AOT methods.
17223
17224         * tramp-x86.c: Avoid allocating+freeing MonoJitInfo structures.
17225
17226         * mini.h: Bump AOT file format version.
17227
17228 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
17229
17230         * mini.c (mono_method_to_ir): Allow STACK_PTR as input to SWITCH.
17231
17232 2005-06-16  Sebastien Pouliot  <sebastien@ximian.com>
17233
17234         * declsec.c: Fixed APTC to check for FullTrust on caller assembly (and
17235         not on callee assembly). Fixed some comments.
17236
17237 2005-06-16  Zoltan Varga  <vargaz@freemail.hu>
17238
17239         * aot.c (mono_compile_assembly): Mark the "methods" symbol as a function so
17240         it gets proper disassembly.
17241         (emit_method_info): Remove some dead code.
17242
17243         * mini.c (mini_method_compile): Allways allocate the GOT var in
17244         mono_method_to_ir for emulating opcodes.
17245
17246 2005-06-13  Zoltan Varga  <vargaz@freemail.hu>
17247
17248         * mini.c (mono_jit_free_method): Remove the method from the JitInfo table
17249         before freeing the code memory. Fixes #74990.
17250
17251         * objects.cs: Add regression test for #74992.
17252
17253         * liveness.c: Extend live ranges of arguments to the beginning of the
17254         method. Fixes #74992.
17255
17256         * exceptions-ia64.c mini-ia64.h: Modify ip during exception handling
17257         so it points into the faulting instruction.
17258
17259 2005-06-12  Zoltan Varga  <vargaz@freemail.hu>
17260
17261         * jit-icalls.c (mono_imul_ovf): Add exception handling.
17262
17263         * *-ia64.*: Ongoing IA64 work.
17264
17265         * mini.c (mini_init): Fix signature of mono_delegate_ctor.
17266
17267 2005-06-11  Zoltan Varga  <vargaz@freemail.hu>
17268
17269         * mini-ia64.h exceptions-ia64.c: Ongoing IA64 work.
17270
17271         * *-ia64.*: Ongoing IA64 work.
17272
17273 2005-06-10  Zoltan Varga  <vargaz@freemail.hu>
17274
17275         * basic-long.cs: Add tests for add/sub.ovf.
17276
17277         * basic.cs: Add tests for sub.ovf.
17278
17279         * *-ia64.*: Ongoing IA64 work.
17280
17281 2005-06-09  Zoltan Varga  <vargaz@freemail.hu>
17282
17283         * *-ia64.*: Ongoing IA64 work.
17284
17285         * basic.cs: Add conv.ovf.i4.un test.
17286
17287 2005-06-09  Massimiliano Mantione  <massi@ximian.com>
17288
17289         * mini.c: (remove_block_if_useless) Fixed bug 75061.
17290         
17291 2005-06-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17292
17293         * mini.c: no SIGUSR2 on windows. Remove it for PLATFORM_WIN32.
17294
17295 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
17296
17297         * *-ia64.*: Ongoing IA64 work.
17298
17299 2005-06-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17300
17301         * trace.[ch]:
17302         * mini.c: added the ability to toggle trace on/off using SIGUSR2.
17303
17304 2005-06-04  Zoltan Varga  <vargaz@freemail.hu>
17305
17306         * mini-ia64.c mini-ia64.h: Fix cleanup of memory stack.
17307
17308 2005-06-03  Zoltan Varga  <vargaz@freemail.hu>
17309
17310         * mini-amd64.c (emit_call): Fix yet another bug in the near call optimization.
17311
17312         * mini-amd64.c (amd64_patch): Add an assert to check that the destination
17313         of a call is callable by a near call.
17314
17315 2005-05-31  Zoltan Varga  <vargaz@freemail.hu>
17316
17317         * mini-ia64.c: Ongoing IA64 work.
17318
17319 2005-05-29  Zoltan Varga  <vargaz@freemail.hu>
17320
17321         * genmdesc.c: Make the generated array non-static.
17322
17323         * inssel-long.brg: Fix LSHR_IMM rule.
17324
17325         * *-ia64.*: Ongoing IA64 work.
17326
17327         * *-ia64.*: Ongoing IA64 work.
17328
17329 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
17330
17331         * *-ia64.*: Ongoing IA64 work.
17332
17333         * *-ia64.*: Ongoing IA64 work.
17334         
17335         * mini-ia64.c: Ongoing IA64 work.
17336
17337         * *-ia64.* jit-icalls.c mini-codegen.c: Ongoing IA64 work.
17338
17339 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
17340
17341         * objects.cs basic-calls.cs: Move some tests to objects.cs.
17342         
17343         * objects.cs basic-long.cs: Move some tests to objects.cs.
17344
17345 2005-05-26  Zoltan Varga  <vargaz@freemail.hu>
17346
17347         * *-ia64.*: Ongoing IA64 work.
17348
17349         * iltests.il: Add a new test.
17350
17351         * mini.c (mono_method_to_ir): Initialize valuetypes when created using
17352         newobj. Fixes #75042.
17353
17354 2005-05-22  Zoltan Varga  <vargaz@freemail.hu>
17355
17356         * *-ia64.*: Ongoing IA64 work.
17357         
17358         * *-ia64.*: Ongoing IA64 work.
17359         
17360         * *-ia64.*: Ongoing IA64 work.
17361
17362         * basic.cs objects.cs: Move tests accessing static variables as well.
17363
17364         * basic.cs objects.cs: Move test_0_pin_string to objects.cs.
17365
17366 2005-05-21  Zoltan Varga  <vargaz@freemail.hu>
17367
17368         * mini.c (SIG_HANDLER_SIGNATURE): Fix warning.
17369
17370         * driver.c: Always print failed tests.
17371
17372         * mini-codegen.c: Use cfg->frame_reg instead of a macro for the
17373         frame pointer.
17374
17375         * *ia64*: Ongoing IA64 work.
17376
17377 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
17378
17379         * basic.cs: Add tests for add.ovf. Fix warnings.
17380
17381 2005-05-18  Miguel de Icaza  <miguel@novell.com>
17382
17383         * driver.c (mono_main): Avoid crash if no argument is passed to
17384         --break;  Do not use g_error, but f_printf.   And fix all other
17385         ocurrences of the same crash.
17386
17387 2005-05-17  Zoltan Varga  <vargaz@freemail.hu>
17388
17389         * mini.h mini.c: Generalize the existing uses of the MONO_DEBUG env variable
17390         and add a new one: aborting when a SIGSEGV is raised while in unmanaged code.
17391         Fixes #74742.
17392
17393 2005-05-14  Zoltan Varga  <vargaz@freemail.hu>
17394
17395         * *-ia64.*: Add beginnings of IA64 backend.
17396
17397         * Makefile.am mini-arch.h mini-codegen.c: Add IA64 support.     
17398
17399 2005-05-13  Zoltan Varga  <vargaz@freemail.hu>
17400
17401         * inssel-long.brg: Add missing ulong->{i1, i2} checked conversions.
17402         Fixes #74925.
17403
17404         * basic-long.cs exceptions.cs: Add new tests. Fix some warnings.
17405
17406         * mini-amd64.c: Fix a warning.
17407
17408 2005-05-10  Zoltan Varga  <vargaz@freemail.hu>
17409
17410         * mini-amd64.c (mono_arch_output_basic_block): Fix stack space leakage
17411         in float_neg. Fixes #74897.
17412
17413         * mini-amd64.c (emit_call): Fix another near call bug.
17414
17415 2005-05-06  Sebastien Pouliot  <sebastien@ximian.com>
17416
17417         * declsec.c: Keep the appdomain information in the structure. Added a 
17418         missing "return FALSE" for Unmanaged if FullTrust is set (or else the
17419         value gets overwritten).
17420         * declsec.h: Set the default MonoArray for the the stack to 6. Added
17421         an MonoAppDomain member to MonoSecurityFrame.
17422         * mini-exceptions.c: Do not use a glist to keep GC allocated objects
17423         used in the stack walk. Now use a MonoArray which grow (double) when
17424         it gets full.
17425
17426 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
17427
17428         * mini.c: Re-enabled runtime cleanup, since running threads should
17429         now properly stop when exiting.
17430
17431 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
17432
17433         * mini-codegen.c: New file contaning the arch-independent local
17434         register allocator. Not used by any architectures yet.
17435
17436         * mini.h linear-scan.c: Merge some changes from the 
17437         mini-xp-local-regalloc branch.
17438
17439 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
17440
17441         * mini-amd64.c (emit_call): Fix calls to native functions when the
17442         runtime is compiled as a shared library. Fixes #74756.
17443
17444         * mini.c (mono_method_to_ir): Assert if ldsfld and friends are used
17445         on a literal field. Fixes #74751.
17446
17447 2005-04-25  Raja R Harinath  <rharinath@novell.com>
17448
17449         * Makefile.am (RUNTIME): Add MONO_CFG_DIR.
17450
17451 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
17452
17453         * objects.cs: Add missing null casting test.
17454
17455 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
17456
17457         * mini-exceptions.c (mono_find_jit_info): Fix native offset calculation
17458         in wrapper methods. Also rename 'address' variable to 'offset'.
17459
17460 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
17461
17462         * mini.c debug-mini.c aot.c tramp-x86.c driver.c: Fix some gcc 4.0
17463         warnings.
17464         
17465         * Makefile.am (MCS): Use -unsafe instead of --unsafe.
17466
17467         * aot.c: Applied patch from "The Software Team" <software@solmersa.com>. Make AOT compilation
17468         work on windows.
17469
17470 Mon Apr 18 16:20:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
17471
17472         * exceptions-ppc.c: update code to handle stack traces (fixes bug #74452).
17473
17474 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
17475
17476         * mini-x86.c (mono_emit_stack_alloc): Initialize the whole allocated area not
17477         just the last bytes.
17478
17479 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
17480
17481         * aot.c (mono_compile_assembly): Fix warning.
17482
17483         * mini-exceptions.c (ves_icall_get_frame_info): Fix bug introduced
17484         by the _MSC_VER stuff.
17485
17486 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
17487
17488         * inssel-long.brg: Fix #74588.
17489
17490         * cpu-amd64.md: Fix #74591.
17491
17492         * iltests.il: Add new regression tests.
17493
17494 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
17495
17496         * trace.c (mono_trace_enter_method): Print enums as an int, not as a
17497         valuetype.
17498
17499 2005-04-11  Zoltan Varga  <vargaz@freemail.hu>
17500
17501         * mini-x86.c (setup_stack): Unconditionally call pthread_attr_init ().
17502
17503         * exceptions-x86.c mini-x86.h mini-x86.c: Applied some freebsd patches 
17504         from Bill Middleton <flashdict@gmail.com>.
17505
17506 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
17507
17508         * arrays.cs: Add new regression test. Fix warnings.
17509
17510 2005-04-09  Zoltan Varga  <vargaz@freemail.hu>
17511
17512         * mini-amd64.c (mono_arch_output_basic_block): Fix stack alignment
17513         and leakage in CKFINITE.
17514
17515         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Change
17516         this to a null op since it is called on amd64 too.
17517
17518         * exceptions-amd64.c (get_throw_trampoline): Align stack.
17519
17520         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Remove
17521         body since this is not used on amd64.
17522         
17523         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Remove duplicate define.
17524
17525         * mini-amd64.c: Remove obsolete fixmes.
17526
17527         * mini.c (print_method_from_ip): Fix debugging support.
17528
17529 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
17530
17531         * ssapre.c: Fix a subtle bug about availability, and limit SSAPRE
17532         so that expressions that don't give much gain are not reduced.
17533         * ssapre.h: Likewise.
17534
17535 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
17536
17537         * exceptions-x86.c (mono_arch_find_jit_info): Remove last SC_EBP reference.
17538
17539         * mini-x86.c (mono_emit_stack_alloc): Fix localloc under windows.
17540
17541         * mini-x86.h exceptions-x86.c: Hopefully fix compilation on *BSD.
17542
17543 2005-04-01  Zoltan Varga  <vargaz@freemail.hu>
17544
17545         * mini-sparc.c mini-sparc.h: Add asserts when running with sigaltstack.
17546
17547         * exceptions-x86.c (mono_arch_monoctx_to_sigctx): Fix cygwin build.
17548
17549 2005-03-31  Zoltan Varga  <vargaz@freemail.hu>
17550
17551         * mini-x86.c: If sigaltstack support is enabled, perform win32 style
17552         stack touching.
17553
17554         * mini.h (mono_arch_sigctx_to_monoctx): New arch-specific function.
17555
17556         * mini.h (mono_arch_monoctx_to_sigctx): New arch-specific function.
17557
17558         * mini.c: sigaltstack support requires MONO_ARCH_USE_SIGACTION.
17559
17560         * mini-x86.h mini-x86.c exceptions-x86.c: Add support for 
17561         MONO_ARCH_USE_SIGACTION. Fixes #74252.
17562
17563         * mini-x86.h: Enable MONO_ARCH_USE_SIGACTION on linux.
17564
17565         * mini-x86.c: Fix up stack overflow handling.   
17566
17567         * exceptions.cs: Add new regression test.
17568
17569 2005-03-30  Zoltan Varga  <vargaz@freemail.hu>
17570
17571         * mini-x86.c (mono_arch_emit_prolog): Adjust stack after calls to
17572         mono_jit_thread_attach.
17573
17574         * mini.c (mono_method_to_ir): Verify called method is not abstract.
17575
17576 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
17577
17578         * mini.c (mono_method_to_ir): Applied Ben's patch from bug #61441 to
17579         avoid calling constructors using callvirt.
17580
17581         * inssel.brg: Fix #74073.
17582
17583 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
17584
17585         * aot.c, mini.h: Added mono-compiler.h header to allow/ease 
17586         compilation with non-GCC compilers.
17587         * mini-exceptions.c, mini-x86.c|h: Patches to make compilation of mono
17588         possible using VS.NET. Adapted from the work of J Lothian (for VC6).
17589
17590 Tue Mar 29 11:43:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
17591
17592         * inssel.brg, arrays.cs: fix long standing 64 bit issue in access to
17593         klass->interface_offsets (will likely fix bug#74073).
17594
17595 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
17596
17597         * mini-amd64.c (mono_arch_is_int_overflow): Fix rex handling.
17598
17599 2005-03-28  Zoltan Varga  <vargaz@freemail.hu>
17600
17601         * mini-amd64.c (mono_arch_output_basic_block): Fix order of parameters
17602         to amd64_div_reg_size ().
17603         
17604         * mini-amd64.c (mono_arch_emit_exceptions): Emit a near call here too.
17605
17606 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
17607
17608         * cpu-amd64.md (store_membase_reg): Fix length of storer8 opcodes.
17609
17610 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
17611
17612         * driver.c: Turn off automatic command line globbing under windows. Fixes #73763.
17613
17614 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
17615
17616         * mini.c (mono_method_to_ir): Remove debugging stuff left in by mistake.
17617         
17618         * mini.c (mono_precompile_assembly): Load and precompile referenced
17619         assemblies as well. Fixes #74015.
17620
17621 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
17622
17623         * cpu-amd64.md (sin): Fix up maximum lengths of some opcodes.
17624
17625 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
17626
17627         * declsec.c: Skip linkdemand checks for intra-corlib calls. This skips
17628         a lot of checks and (anyway) permissions cannot work until corlib is 
17629         loaded.
17630
17631 Wed Mar 23 14:29:49 CET 2005 Paolo Molaro <lupus@ximian.com>
17632
17633         * mini-ppc.c: fixed ABI issue on sysv/ppc.
17634
17635 Tue Mar 22 19:03:17 CET 2005 Paolo Molaro <lupus@ximian.com>
17636
17637         * tramp-ppc.c, exceptions-ppc.c: added missing icache flush
17638         calls (fixes bug#72824).
17639
17640 Tue Mar 22 16:28:48 CET 2005 Paolo Molaro <lupus@ximian.com>
17641
17642         * mini.c: fix tail recursion elimination (see test in bug#73936).
17643
17644 2005-03-21  Zoltan Varga  <vargaz@freemail.hu>
17645
17646         * mini-amd64.c (mono_arch_output_basic_block): Add inline versions of
17647         some fp functions in sse2 mode.
17648
17649 2005-03-20  Zoltan Varga  <vargaz@freemail.hu>
17650
17651         * mini-x86.c (emit_tls_get): Move tls handling into a separate helper function.
17652
17653 2005-03-19  Zoltan Varga  <vargaz@freemail.hu>
17654
17655         * mini.h mini.c: Add mono_get_jit_tls_key ().
17656
17657         * mini-x86.c: Enable fast TLS support on windows.
17658
17659 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
17660
17661         * declsec.c: Renamed aptc to allowpartiallytrustedcallers.
17662         * mini.c: Check for p/invoke method when generating code. If a
17663         p/invoke method, or it's class, isn't decorated with [Suppress
17664         UnmanagedCodeSecurity] then generate code to call System.Security.
17665         UnmanagedDemand (only if the security manager is active).
17666
17667 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
17668
17669         * tramp-amd64.c (create_specific_trampoline): Revert parts of the 
17670         last change as it seems to cause strange crashes.
17671         
17672 Wed Mar 16 16:24:11 CET 2005 Paolo Molaro <lupus@ximian.com>
17673
17674         * *.c: handle unsafe function pointers where needed.
17675
17676 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
17677
17678         * mini.c (mono_jit_free_method): Remove the fixme too.
17679
17680 2005-03-15  Miguel de Icaza  <miguel@novell.com>
17681
17682         * mini.c: As discussed, make the code actually free the delegate
17683         thunk now, to enable the debugging of delegate problems, use
17684         MONO_DEBUG=1 when running Mono. 
17685
17686         This takes also care of parts of the leaks as seen by Joe.
17687
17688 2005-03-15  Zoltan Varga  <vargaz@freemail.hu>
17689
17690         * mini-amd64.c (mono_arch_setup_jit_tls_data): Enable 
17691         thread_tls_offset calculation.
17692
17693 2005-03-14  Sebastien Pouliot  <sebastien@ximian.com>
17694
17695         * declsec.c: Reworked linkdemand checks for icall. The previous code
17696         was using the declaration code (untrusted) and didn't work as expected
17697         with the CLR 2.0. We're now more compatible with 2.0 than 1.x for this
17698         specific case.
17699
17700 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
17701
17702         * iltests.il: Add new localloc test.
17703
17704         * mini-amd64.c: Handle large stack allocations the same way as on
17705         windows if stack overflow handling is working.
17706         
17707         * mini-amd64.c: Allocate the signal stack using mmap.
17708
17709         * mini.c (sigsegv_signal_handler): Fix reading of context.
17710
17711         * mini-exceptions.c: Fix up stack overflow handling.
17712
17713         * mini-amd64.h mini-amd64.c: Fix up stack overflow handling.
17714
17715         * tramp-amd64.c (create_specific_trampoline): Optimize trampoline size.
17716
17717         * exceptions-amd64.c (mono_amd64_exceptions_init): Remove this.
17718
17719         * mini.h mini.c tramp-*.c: Move common trampoline code to mini.c.
17720
17721         * mini-x86.h mini-x86.c mini-amd64.h mini-amd64.c: Get rid of the
17722         tramp_init functions as they are no longer needed.
17723
17724 2005-03-12  Zoltan Varga  <vargaz@freemail.hu>
17725
17726         * tramp-amd64.c (mono_amd64_tramp_init): Fix typo.
17727         
17728         * tramp-amd64.c (mono_amd64_tramp_init): Init AOT trampoline as well.
17729
17730         * mini-amd64.h mini-amd64.c (mono_amd64_exceptions_init): Remove this.
17731         
17732         * mini.c mini-*.h: Remove OUT_OF_LINE_BBLOCK defines since all arches
17733         support that now.
17734
17735         * mini-ops.h: Add OP_LMUL_IMM.
17736
17737         * mini.c jit-icalls.cmini-amd64.h mini-amd64.c cpu-amd64.md: Implement
17738         long mul/div opcodes as intrinsic.
17739
17740         * mini-amd64.c (emit_call): Handle the case when the callee might be
17741         an AOT method.
17742
17743 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
17744
17745         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Reorder cases to be
17746         extra safe.
17747         
17748         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Fix ordering of cases.
17749
17750         * aot.c (mono_aot_load_method): Get rid of bogus make_writable call.
17751
17752 2005-03-09  Ben Maurer  <bmaurer@ximian.com>
17753
17754         * mini.c (mono_codegen): Don't leak here, to help people running
17755         monogrind.
17756
17757 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
17758
17759         * mini-amd64.c (mono_arch_output_basic_block): Fix int->float 
17760         conversions in sse2 mode.
17761
17762         * basic-float.cs: Add regression test.
17763         
17764         * mini-amd64.c: Reenable sse2.
17765
17766 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
17767
17768         * mini-amd64.c: Disable sse2 until some regressions are fixed.
17769
17770 2005-03-07      Joerg Rosenkranz <joergr@voelcker.com>
17771
17772         * driver.c: Copyright text should include 2005.
17773         
17774 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
17775
17776         * cpu-amd64.md (load_membase): Fix more max lengths.
17777
17778 2005-03-06  Zoltan Varga  <vargaz@freemail.hu>
17779
17780         * cpu-amd64.md (load_membase): Fix max length.
17781
17782         * mini-ops.h: Add OP_F<xx>_MEMBASE opcodes.
17783
17784         * inssel.brg: Add MONO_EMIT_BIALU_MEMBASE macro.
17785
17786         * cpu-amd64.md inssel-amd64.brg mini-amd64.h mini-amd64.brg: Finish SSE2
17787         support and enable it by default. Also add OP_F<xxx>_MEMBASE opcodes.
17788
17789         * basic-float.cs: Add rounding regression test.
17790
17791         * mini-amd64.c (INST_IGNORES_CFLAGS): Add more instructions.
17792
17793 2005-03-04  Neale Ferguson <NealeFerguson@earthlink.net>
17794
17795         * inssel-s390.brg, mini-s390.c: Add support for passing/returning small
17796         structures in registers for pinvoke wrappers.
17797
17798 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
17799
17800         * mini-exceptions.c (ves_icall_get_trace): Return wrapper info as well.
17801
17802 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
17803
17804         * mini.h mini.c mini-x86.c: Pass the domain of the native->managed
17805         wrapper to mono_jit_thread_attach.
17806
17807         * mini.c (mini_jit_thread_attach): New jit icall.
17808
17809         * mini-x86.c (mono_arch_emit_prolog): Attach to the VM in 
17810         native->managed wrappers.
17811
17812         * exceptions.cs: Add new regression test.
17813
17814         * mini.c (optimize_branches): Check regions in the cbranch to throw
17815         block case as well. Fixes #73242.
17816
17817 Tue Mar 1 18:35:27 CET 2005 Paolo Molaro <lupus@ximian.com>
17818
17819         * mini.c: thread safety fixes.
17820
17821 2005-02-27  Zoltan Varga  <vargaz@freemail.hu>
17822
17823         * tramp-amd64.c (amd64_magic_trampoline): Disable the method_ptr
17824         patching stuff, since delegates use jump trampolines so there is
17825         no caller.
17826
17827         * tramp-amd64.c (create_trampoline_code): Pass NULL as 'code' in 
17828         jump trampolines.
17829         
17830         * tramp-amd64.c: Fix build.
17831
17832         * mini-x86.c tramp-x86.c: Moved get_vtable_slot_addr into mini-x86.c and rename
17833         it to mono_arch_.... Add get_delegate_method_ptr implementation for x86.
17834
17835         * mini-amd64.h mini.h mini-amd64.c tramp-amd64.c (mono_amd64_get_vcall_slot_addr):
17836         Rename this to mono_arch....
17837         (mono_amd64_get_delegate_method_ptr_addr): Ditto.
17838
17839         * mini-amd64.c (mono_amd64_get_delegate_method_ptr_addr): New helper function.
17840
17841         * mini-amd64.c (emit_call): If both the caller and the callee is
17842         guaranteed to have 32 bit addresses, emit a normal call.
17843
17844         * tramp-amd64.c: Adapt to changes in mini-amd64.c.
17845
17846         * tramp-amd64.c (amd64_magic_trampoline): Remove patching of trampolines. 
17847         * tramp-amd64.c (amd64_magic_trampoline): Add support for patching the
17848         method_ptr inside delegates.
17849
17850 2005-02-26  Zoltan Varga  <vargaz@freemail.hu>
17851
17852         * mini.c (mono_jit_free_method): Free the method info even if the native code is
17853         invalidated. Fixes #73001.
17854
17855         * mini.c: Add a proper icall wrapper for mono_delegate_ctor.
17856
17857         * mini-x86.c: Only use stdcall for pinvokes on windows.
17858
17859 Thu Feb 24 15:22:30 CET 2005 Paolo Molaro <lupus@ximian.com>
17860
17861         * mini.c, mini.h: make mono_lmf_addr a fast-access thread var.
17862         * mini-x86.c: remove unreliable __thread var offset detection,
17863         use the correct accessors and enable by default.
17864
17865 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
17866
17867         * mini.c (mono_jit_free_method): Fix memory leak.
17868
17869 2005-02-22  Zoltan Varga  <vargaz@freemail.hu>
17870
17871         * mini.c (mono_method_to_ir): Allocate a GOT var for THROW and RETHROW. 
17872
17873 2005-02-21  Zoltan Varga  <vargaz@freemail.hu>
17874
17875         * cpu-amd64.md: Fix lengths of atomic opcodes.
17876
17877 Mon Feb 21 16:52:20 CET 2005 Paolo Molaro <lupus@ximian.com>
17878
17879         * driver.c: try to not imply using ICU is any good.
17880
17881 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
17882
17883         * mini-amd64.c (mono_arch_get_inst_for_method): Implement more 
17884         functions as inline ops.
17885
17886         * mini-ops.h inssel-amd64.brg cpu-amd64.md mini-amd64.c: Implement
17887         some Interlocked functions as inline ops.
17888
17889         * mini.c (move_basic_block_to_end): Fix bug in last patch.
17890
17891         * mini.h (MonoBasicBlock): Reorganize fields a bit.
17892
17893         * mini-ops.h inssel.brg: Add OP_NOT_REACHED.
17894
17895         * mini.c: Add support for OP_NOT_TAKEN.
17896
17897         * mini-amd64.h mini-amd64.c: Add support for passing/returning small 
17898         structures in registers for pinvoke wrappers.
17899
17900         * mini-amd64.c: Fix warnings.
17901
17902 2005-02-19  Zoltan Varga  <vargaz@freemail.hu>
17903
17904         * mini.h (MonoCompile): Add 'ret_var_is_local' field.
17905
17906         * mini.h mini.c (mono_arch_create_vars): Add new arch specific hook.
17907
17908         * mini.c (NEW_RETLOADA): If the ret variable is a local, use its 
17909         address instead of loading the address from it.
17910
17911         * mini-x86.c: Add support for returning small structs in registers
17912         on Win32. Fixes part of #70864.
17913         
17914 2005-02-18  Zoltan Varga  <vargaz@freemail.hu>
17915
17916         * trace.c (get_token): Improve error checking.
17917
17918 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
17919
17920         * jit-icalls.c (mono_ldvirtfn): Explicitly check for a NULL obj here.
17921
17922 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com> 
17923  
17924         * mini.h: Moved MONO_EXCEPTION_* enum to metadata/class-internals.h so
17925         it can be reused for MonoClass.
17926         * mini.c: Renamed MONO_EXCEPTION_SECURITY to MONO_EXCEPTION_SECURITY
17927         _LINKDEMAND.
17928
17929 2005-02-15  Sebastien Pouliot  <sebastien@ximian.com>
17930
17931         * mini.c: Fixed 2 cases where I sent a MonoMethod to managed code 
17932         instead of a MonoReflectionMethod. The method information wasn't used
17933         when displaying SecurityException details (but will be now).
17934
17935 2005-02-15  Atsushi Enomoto  <atsushi@ximian.com>
17936
17937         * Makefile.am : windows build fix.
17938
17939 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
17940
17941         * iltests.il: Add new regression test.
17942
17943         * mini.c (mono_method_to_ir): Allocate a GOT var in CEE_NEWOBJ. Fixes
17944         #72522.
17945
17946 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com> 
17947  
17948         * mini.c: Moved linkdemand check into helper function check_linkdemand
17949         to allow reuse for all intructions (CALL, CALLVIRT, NEWOBJ, JMP, 
17950         LDFTN, LDVIRTFTN).
17951
17952 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com>
17953
17954         * declsec.c: Added statistics counter for different kinds of 
17955         LinkDemands.
17956         * mini.h: Added CAS statistic counters to MonoJitStats. Removed unused
17957         (and commented) declaration.
17958         * mini.c: Added statistics counter for security Demand code 
17959         generation. Added display of security statistics.
17960
17961 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
17962
17963         * declsec.c (mono_declsec_linkdemand_aptc): Applied patch from Robert Jordan (robertj@gmx.net).
17964         Fix compilation errors under gcc-2.95.
17965
17966 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
17967
17968         * mini.c, driver.c: Use the new jit trampoline hashtable
17969
17970 Fri Feb 11 18:47:11 CET 2005 Paolo Molaro <lupus@ximian.com>
17971
17972         * mini.c, jit-icalls.c: use the managed implementation of memcpy, too.
17973
17974 2005-02-11  Martin Baulig  <martin@ximian.com>
17975
17976         * debug-mini.c (mono_debug_close_method): Free the line number array.
17977
17978 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
17979
17980         * aot.c: Break up large methods into smaller ones. Share GOT slots for
17981         icalls.
17982
17983         * mini.h: Bump AOT file format version. 
17984
17985 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
17986
17987         * declsec.c: Added LinkDemand support and it's special cases for ECMA,
17988         APTC and P/Invoke.
17989         * declsec.h: Added macros to get/set lazyly initialized security 
17990         informations about assemblies. Added new enum for different type of
17991         possible LinkDemand violation. Added function to check LinkDemands.
17992         * mini.h: Added a field to MonoCompile to hold any security violation
17993         detected when JITting a method (so it can be thrown later).
17994         * mini.c: Added LinkDemand checks in mono_method_to_ir for CEE_CALL 
17995         and CEE_CALLVIRT. Added code to throw exception at the end of
17996         mini_method_compile (note: the exception is unhandled right now).
17997
17998 Thu Feb 10 15:49:44 CET 2005 Paolo Molaro <lupus@ximian.com>
17999
18000         * mini.c, jit-icalls.c: use the managed implementation of
18001         memset for initobj and memset, to avoid managed <-> unmanaged
18002         transitions.
18003
18004 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
18005
18006         * inssel.brg (mini_emit_virtual_call): Disable the virtual->nonvirtual
18007         optimization if it would need a GOT var.
18008
18009         * basic.cs: Add tests for constant propagation and switch statements.
18010
18011         * ssa.c: Fix out-of-range constant propagation and switch statements.
18012
18013 2005-02-09    <vargaz@freemail.hu>
18014
18015         * inssel-x86.brg (reg): Align the allocation size in the localloc(imm) case too.
18016
18017 2005-02-08  Zoltan Varga  <vargaz@freemail.hu>
18018
18019         * cpu-amd64.md (load_membase): Fix max length of load_membase.
18020
18021 Tue Feb 8 18:21:11 CET 2005 Paolo Molaro <lupus@ximian.com>
18022
18023         * mini.c: update to new signature of mono_class_get_allocation_ftn().
18024
18025 2005-02-06  Neale Ferguson <NealeFerguson@earthlink.net>
18026
18027         * cpu-s390.md,  mini-s390.c: Correct bug with register usage on certain 
18028         arithmetic operations.
18029
18030 Sun Feb 6 07:10:12 EST 2005 Paolo Molaro <lupus@ximian.com>
18031
18032         * mini-ppc.c: add a workaround for broken user code that
18033         DllImports vararg functions with non-vararg signatures.
18034
18035 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
18036
18037         * mini.c (mono_jit_compile_method_inner): Add detection and a 
18038         meaningfull error message for assemblies written in Managed C++.
18039
18040         * tramp-amd64.c mini-amd64.h: Add support for 
18041         create_trampoline_from_token ().
18042
18043         * aot.c mini-x86.c abcremoval.c: Applied patch from
18044         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
18045
18046 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
18047
18048         * mini.h mini.c mini-x86.h tramp-x86.c: Add a new kind of trampoline 
18049         which takes a MonoImage/token as parameter instead of a MonoMethod.
18050
18051         * aot.c: Use the new trampoline for initializing vtables.
18052
18053         * aot.c: Add support for ldfld/stfld_remote wrappers.
18054
18055         * mini-ops.h cpu-pentium.md inssel-x86.brg mini-x86.c: Add optimized
18056         rules for compare <MEM>, IMM.
18057
18058         * mini.h (MONO_AOT_FILE_VERSION): Bump it.
18059
18060         * aot.c: Handle inherited finalizers correctly.
18061
18062 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
18063
18064         * inssel.brg (stmt): Add a missing _setup_... ().
18065
18066         * aot.c: Save some parts of the class state to the AOT file and use it
18067         to recompute that state when a class is initialized.
18068
18069         * mini.c: Install AOT hooks into the runtime.
18070
18071         * mini.h: Bump AOT file format version.
18072         
18073         * mini.c (mono_method_to_ir): Initialize pointer type locals correctly.
18074         Fixes #72148.
18075
18076         * iltests.il: Add new test.
18077
18078 Wed Feb 2 16:53:59 CET 2005 Paolo Molaro <lupus@ximian.com>
18079
18080         * mini.c: fix typo.
18081
18082 Wed Feb 2 16:37:13 CET 2005 Paolo Molaro <lupus@ximian.com>
18083
18084         * mini.c: setup the statistical profiler in the thread attach
18085         callback to cope with the new single thread code.
18086
18087 Wed Feb 2 15:43:58 CET 2005 Paolo Molaro <lupus@ximian.com>
18088
18089         * mini-ppc.c: ensure we have enough room for the profiler
18090         calls (fixed bug#72084).
18091
18092 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
18093
18094         * aot.c: Get rid of the MonoAotMethod structure and the hashtable holding 
18095         it.
18096
18097 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
18098
18099         * driver.c: Re-enabled SSAPRE (two commits, I was just dumb).
18100
18101 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
18102
18103         * ssapre.c: Fixed an issue with down safety (this allows IronPython
18104         to succesfully execute parrotbench).
18105         * ssapre.h: Likewise.
18106
18107 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
18108
18109         * ssa.c: In mono_ssa_rename_vars, forced the creation of a new SSA
18110         variable for stores to method arguments (fixes a SSAPRE issue).
18111
18112 Tue Feb 1 15:52:26 CET 2005 Paolo Molaro <lupus@ximian.com>
18113
18114         * mini.c: handle value types in dup, fixes gen-112.cs.
18115
18116 Tue Feb 1 11:45:19 CET 2005 Paolo Molaro <lupus@ximian.com>
18117
18118         * mini-ppc.c, cpu-g4.md, tramp-ppc.c: use a slower code
18119         sequence for calls in dynamic methods to avoid thunks.
18120
18121 Tue Feb 1 11:44:01 CET 2005 Paolo Molaro <lupus@ximian.com>
18122
18123         * mini.c: correctly remove dynamic methods from the hashtable.
18124
18125 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
18126
18127         * driver.c: Disabled SSAPRE until fix the bug that appears
18128         in IronPython's parrotbench.
18129
18130 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
18131
18132         * aot.c (mono_compile_assembly): Get rid of Skip (other) messages.
18133
18134         * mini.c (mono_method_to_ir): Revert the previous change.
18135         
18136         * mini.c (mono_method_to_ir): Do not inline ldfld and stfld wrappers
18137         when AOT compiling.
18138
18139         * tramp-x86.c (x86_magic_trampoline): Avoid calls to 
18140         mono_jit_info_table_find () etc. when running under valgrind.
18141
18142         * inssel.brg: Fix warnings.
18143
18144         * mini-exceptions.c: Fix warnings.
18145
18146 2005-01-31  Martin Baulig  <martin@ximian.com>
18147
18148         * driver.c (compile_all_methods_thread_main): Don't try to compile
18149         generic methods or anything which has type parameters.
18150
18151 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
18152
18153         * aot.c: Avoid costly calls to mono_method_full_name in tracing code and fix memory leaks.
18154
18155         * TestDriver.cs: Add --verbose flags.
18156
18157         * graph.c ssa.c: Fix 64 bit warnings.
18158         
18159         * abcremoval.h ssapre.h abcremoval.c ssapre.c mini.c tramp-amd64.c 
18160         trace.c mini-exceptions.c linear-scan.c inssel-amd64.brg inssel.brg:
18161         Fix 64 bit warnings.
18162
18163         * mini-amd64.c (mono_arch_output_basic_block): Fix uninitialized
18164         variable not spotted by gcc.
18165         
18166         * mini-amd64.c inssel-amd64.brg: Applied patch from  
18167         Willibald Krenn <Willibald.Krenn@gmx.at>. Clean up usage of 
18168         X86_COMPARE_MEMBASE opcodes.
18169
18170         * exceptions-amd64.c (mono_arch_find_jit_info): Fix AMD64 build.
18171
18172 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
18173
18174         * *: MonoMethod->signature might be NULL now. You *MUST* use
18175         mono_method_signature.
18176
18177 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
18178
18179         * driver.c (compile_all_methods_thread_main): Compile the methods
18180         without invoking cctors.
18181
18182 Fri Jan 28 18:28:26 CET 2005 Paolo Molaro <lupus@ximian.com>
18183
18184         * mini.c: remove ben's "optimizations" to dup+stloc (bug #71905).
18185         * basic-calls.cs: test for the above.
18186
18187 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
18188
18189         * mini.c mini-exceptions.c aot.c exceptions-*.c: Update after 
18190         MonoJitInfo changes.
18191
18192 2005-01-27  Zoltan Varga  <vargaz@freemail.hu>
18193
18194         * mini-exceptions.c (mono_handle_exception): Compute the stack trace
18195         eagerly if it contains dynamic methods.
18196         
18197         * mini-exceptions.c (ves_icall_System_Exception_get_trace): New icall.
18198
18199         * mini-exceptions.c (mono_handle_exception): Avoid computing the stack
18200         trace, it is now computed by an icall from trace_ips.
18201         
18202         * mini-exceptions.c: Fix a warning.
18203
18204 Thu Jan 27 13:38:34 CET 2005 Paolo Molaro <lupus@ximian.com>
18205
18206         * mini-exceptions.c: don't bother getting stack trace info if
18207         it's not going to be used.
18208
18209 2005-01-27  Raja R Harinath  <rharinath@novell.com>
18210
18211         * Makefile.am (common_sources): Add ssapre-cee-ops.h and
18212         ssapre-mini-ops.h.
18213
18214 2005-01-26  Zoltan Varga  <vargaz@freemail.hu>
18215
18216         * mini.c (remove_block_if_useless): Only print debug stuff with -v -v.
18217
18218         * aot.c: Avoid calling mono_method_get_header () if not needed.
18219
18220         * mini.h: Bump AOT file format version.
18221         
18222         * mini.c (mono_emit_native_call): Allocate a GOT var here.
18223
18224         * mini.c (mono_print_tree): Print more info for calls.
18225
18226 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
18227
18228         * declsec.h: Remove warning by adding missing include for marshal.h
18229
18230 2005-01-26  Martin Baulig  <martin@ximian.com>
18231
18232         * mini.c (mono_method_to_ir): In CEE_UNBOX_ANY, don't increase
18233         `ip' twice.
18234
18235 2005-01-25  Zoltan Varga  <vargaz@freemail.hu>
18236
18237         * mini-amd64.c (mono_arch_call_opcode): Add missing MONO_SSA_LOAD/STORE
18238         flags.
18239
18240         * ssa.c (mono_ssa_compute): Fix crashes when using AOT.
18241
18242         * aot.c (mono_compile_assembly): Fix a warning.
18243
18244 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com>
18245
18246         * declsec.c: Look for security attributes on the original MonoMethod 
18247         (and not the wrapped one). This fix permissions on icalls.
18248
18249 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
18250
18251         * mini-amd64.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
18252
18253         * mini.c (mono_allocate_stack_slots): Add a fixme.
18254
18255         * mini-x86.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
18256
18257 Sun Jan 23 16:16:48 CET 2005 Paolo Molaro <lupus@ximian.com>
18258
18259         * inssel.brg: optimize casts of sealed types (more
18260         optimizations waiting for fixes in remoting).
18261
18262 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
18263
18264         * inssel.brg (stmt): Add another dummy rule.
18265
18266         * driver.c: Fix warnings.
18267
18268         * driver.c (mono_main): If running under valgrind, instruct glib to use
18269         the system allocation functions so valgrind can track the memory
18270         allocated by the g_... functions.
18271
18272         * inssel.brg (stmt): Add DUMMY rule for OP_DUMMY_STORE.
18273
18274         * mini-ops.h: Add OP_DUMMY_STORE opcode.
18275
18276         * mini.h (MONO_BBLOCK_IS_IN_REGION): New helper macro.
18277
18278         * liveness.c: Handle OP_DUMMY_STORE. Enable register allocation for
18279         variables in try regions.
18280
18281         * mini.c (mini_method_compile): Don't disable optimizations on large
18282         methods when AOT compiling.
18283
18284         * mini.c (mono_allocate_stack_slots): New arch independent method to 
18285         allocate stack slots. Not yet used.
18286
18287 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
18288
18289         * debug-mini.c (mono_debug_close_method): Plug some leaks.
18290
18291 Sat Jan 22 13:41:51 EST 2005 Paolo Molaro <lupus@ximian.com>
18292
18293         * mini-ppc.c: make the branch info relative as the code
18294         buffer can be reallocated.
18295
18296 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
18297
18298         * aot.c: Allow decoding of the new  MONO_PATCH_INFO_DECLSEC.
18299         * driver.c: Removed the AOT/security restriction. Now initialize the
18300         security manager (in metadata) if --security is used.
18301         * mini.c|h: Add the MONO_PATCH_INFO_DECLSEC code to use the index,
18302         rather than the pointer to declarative security, when AOT is used.
18303
18304 Sat Jan 22 09:35:19 EST 2005 Paolo Molaro <lupus@ximian.com>
18305
18306         * mini.h, mini-ppc.h, mini-ppc.c: updated to use out of line
18307         basic blocks, reduced intrinsic exception throwing code size.
18308
18309 2005-01-22  Miguel de Icaza  <miguel@ximian.com>
18310
18311         * driver.c (mini_usage): Reorder the usage screen.
18312
18313 2005-01-21  Zoltan Varga  <vargaz@freemail.hu>
18314
18315         * mini.c (mono_resolve_patch_target): Fix warning.
18316
18317 2005-01-20  Zoltan Varga  <vargaz@freemail.hu>
18318
18319         * mini-x86.c (mono_arch_local_regalloc): Fix bug introduced by
18320         previous patch.
18321
18322         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
18323
18324         * mini-amd64.c (mono_arch_local_regalloc): Revert last patch as it
18325         breaks the amd64 build.
18326
18327         * mini-x86.c (mono_arch_local_regalloc): Fix bug in div/rem 
18328         register allocation. Fixes #71454.
18329
18330         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
18331
18332         * arrays.cs: Add new regression test.   
18333
18334 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
18335
18336         * ssapre.c: Turned usage of snprintf to GString.
18337         * ssapre.h: disabled MONO_APPLY_SSAPRE_TO_SINGLE_METHOD
18338         (I left it on by mistake in my previous commit).
18339
18340 Thu Jan 20 12:00:45 CET 2005 Paolo Molaro <lupus@ximian.com>
18341
18342         * mini.c, cfold.c, basic-calls.cs: preserve side effects
18343         on cond branch optimization (fixes bug# 71515).
18344
18345 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
18346
18347         * abcremoval.c: Fixed bug 71062.
18348         * abcremoval.h: Likewise.
18349
18350 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
18351
18352         * mini.c: Added a new functionality to optimize_branches, the removal
18353         of useless basic blocks, and fixed some problem in the removal of
18354         critical edges; some utility functions added for both purposes.
18355         * ssapre.c: Added complex expression support, and fixed bug 70637.
18356         * ssapre.h: Likewise.
18357         * ssapre-cee-ops.h: Added file with list of "CEE_*" opcodes
18358         enabled in SSAPRE.
18359         * ssapre-mini-ops.h: Likewise, but for "OP_*" opcodes.
18360         * driver.c: Re-enabled SSAPRE.
18361
18362 2005-01-19  Martin Baulig  <martin@ximian.com>
18363
18364         * mini.c (mono_method_to_ir): Call mono_get_inflated_method() on
18365         the result of mono_get_method_constrained().
18366
18367 2005-01-18  Neale Ferguson <NealeFerguson@earthlink.net>
18368
18369         * exceptions-s390.c tramp-s390.c: Allocate code using the global code
18370         manager.
18371
18372 2005-01-18  Geoff Norton  <gnorton@customerdna.com>
18373
18374         * jit-icalls.c (mono_llmult_ovf): Fix other overflow conditions to
18375         be detected.  Fixes #59296.
18376
18377 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
18378
18379         * mini-amd64.c (mono_arch_output_basic_block): Remove some assertions
18380         which can happen. Fixes #71361.
18381
18382 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
18383
18384         * exceptions-sparc.c tramp-sparc.c: Allocate code using the global code
18385         manager.
18386
18387 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
18388
18389         * mini.c (mono_create_jump_trampoline): Revert last change as it causes
18390         appdomain-unload.exe to fail.
18391         
18392         * mini.c: Fix some memory leaks.
18393
18394 Mon Jan 17 16:16:23 CET 2005 Paolo Molaro <lupus@ximian.com>
18395
18396         * inssel.brg: handle the new size of rank, idepth, max_interface_id.
18397         Fixed bug and sped up some codepaths.
18398
18399 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
18400
18401         * mini.c: Fix some memory leaks.
18402
18403         * exceptions.cs basic-long.cs: Add test for checked ulong->int 
18404         conversion.
18405
18406         * inssel-long.brg: Implement long_conv_to_ovf_i4_un. Fixes #71319.
18407
18408         * inssel-long.brg: Fix conv.ovf.i8 when run on an int32. Fixes
18409         #71320.
18410
18411         * iltests.il: Add regression test for #71320.
18412
18413 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
18414
18415         * mini.c (mono_codegen): Fix installation of profiler hooks.
18416
18417         * mini-sparc.c mini-amd64.c: Don't allocate stack space for dead vars.
18418
18419 Sun Jan 16 12:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
18420
18421         * mini.h, mini.c, cfold.c: optimize access to enum
18422         readonly fields, too. Eval conditional branches if possible
18423         to perform unreachable code removal in more cases.
18424
18425 2005-01-15  Zoltan Varga  <vargaz@freemail.hu>
18426
18427         * tramp-amd64.c exceptions-amd64.c: Use the new global code manager.
18428
18429         * mini.c (mono_global_codeman_reserve): New function to allocate code memory from a global
18430         code manager.
18431
18432         * tramp-x86.c mini-x86.c exceptions-x86.c: Allocate all code memory so mono works with
18433         WinXP DEP. Fixes #71244.
18434
18435 2005-01-14  Zoltan Varga  <vargaz@freemail.hu>
18436
18437         * inssel.brg: Allways convert CEE_CONV_OVF_I4 to a move on 64 bit platforms. Fixes #71236.
18438
18439 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
18440
18441         * mini-x86.c (mono_arch_output_basic_block): Fix OP_ATOMIC_ADD_NEW_I4.
18442
18443 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
18444
18445         * mini-exceptions.c exceptions-ppc.c aot.c: Cope with MonoJitInfo 
18446         changes.
18447
18448         * mini.h: Bump AOT version.
18449
18450         * mini.h (MonoCompile): Change exvar to a hash table.
18451
18452         * mini.c: Allocate a separate exvar for each handler block.
18453
18454         * mini.c: Get rid of the computation of filter_lengths, its not needed.
18455
18456         * mini.c inssel.brg: Change OP_THROW_OR_NULL to compare the current
18457         ex var with the pending exception and only throw if the two are equal.
18458         Fixes #68552.
18459         
18460         * exceptions.cs: Add tests for rethrow and nested catch clauses.
18461
18462         * mini-x86.c: Fix warnings.
18463
18464         * Makefile.am (common_sources): Move mini-exceptions.c here as it is
18465         used by all the ports now.
18466
18467         * aot.c: Add write-symbols and save-temps options.
18468
18469 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
18470
18471         * mini-x86.c: Add support for returning structs in registers from pinvoke functions on WIN32.
18472
18473 Mon Jan 10 16:11:16 EST 2005 Neale Ferguson <nealeferguson@earthlink.net>
18474
18475         * mini-ops.h, inssel-s390.brg, cpu-s390.md: Support OP_ATOMIC__xxx 
18476         operations.
18477
18478         * tramp-s390.c: Check vtable slot belongs to the domain.
18479
18480         * mini-exceptions.c, exceptions-s390.c: Standardize exception handling
18481         as per other platforms.
18482
18483         * mini-s390.c, mini-s390.h: Enable out-of-line bblock support.
18484
18485 Mon Jan 10 18:53:05 CET 2005 Paolo Molaro <lupus@ximian.com>
18486
18487         * driver.c: we don't run the Main() code in a subthread anymore.
18488
18489 Mon Jan 10 17:54:16 CET 2005 Paolo Molaro <lupus@ximian.com>
18490
18491         * mini.c: added experimental rtc support in the statistical
18492         profiler: if the user has the permission, more accurate statistics
18493         are gathered. Run with: MONO_RTC=4096 mono --profiler=default:stat ....
18494         The MONO_RTC value must be restricted to what the linux rtc allows:
18495         power of two from 64 to 8192 Hz.
18496
18497 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
18498
18499         * mini-x86.c (mono_arch_emit_exceptions): Fix #71121.
18500
18501 Mon Jan 10 05:20:49 EST 2005 Paolo Molaro <lupus@ximian.com>
18502
18503         * mini-ppc.c: better icache flush for smp.
18504
18505 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
18506
18507         * mini-amd64.c (emit_move_return_value): Fix memory leak.
18508
18509         * mini-x86.c (get_call_info): Add the get_call_info () code from the
18510         amd64 port, not yet used.
18511
18512 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
18513
18514         * mini.c (mono_method_to_ir): Disable inlining of ldfld wrappers with
18515         a struct type.
18516
18517 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
18518
18519         * driver.c: Added --security option to activate the security manager.
18520         Right now this will allow code generation for declarative demands and
18521         is disabled when AOT is specified.
18522         * mini.c: Add code generation for declarative security demands.
18523         * mini.h: Add mono_use_security_manager as an extern gboolean.
18524
18525 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
18526
18527         * aot.c (mono_compile_assembly): Speed up compilation a bit by
18528         emitting more dense assembly code.
18529
18530         * mini-sparc.c mini-sparc.h exceptions-sparc.c: Enable optimized corlib
18531         exception throwing stuff.
18532
18533 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
18534
18535         * mini-sparc.c (mono_arch_emit_exceptions): Fix typo in previous patch. Remove
18536         dead code.
18537
18538         * mini-amd64.c (mono_arch_emit_exceptions): Remove duplicate epilog stuff
18539         left in by mistake.
18540
18541         * driver.c (EXCLUDED_FROM_ALL): Disable SSAPRE until bug #70637 is 
18542         fixed.
18543
18544         * mini-sparc.h mini-sparc.c: Enable out-of-line bblock support.
18545
18546         * tramp-*.c: Only patch vtable slots if the object is in the current
18547         domain. Fixes appdomain-unload.exe.
18548
18549         * mini-amd64.c mini-amd64.h: Enable out-of-line bblock support.
18550         
18551         * mini-amd64.c (mono_arch_local_regalloc): Port regalloc fix from
18552         x86 branch.
18553
18554 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
18555
18556         * mini.c (reverse_branch_op): New helper function.
18557
18558         * mini.c (optimize_branches): Run the new optimization only on 
18559         platforms which support it. Also reverse all kinds of branches.
18560
18561         * mini.h (MonoBasicBlock): Add 'out_of_line' field.
18562
18563         * mini.c (mono_method_to_ir): Set 'out_of_line' for bblocks which have
18564         a throw statement.
18565
18566         * mini.c (optimize_branches): Reverse not-equals branches if the false
18567         bblock is a throw. This happens a lot of time with argument checking in
18568         corlib.
18569
18570         * mini.c (mono_codegen): Add support for placing basic blocks after
18571         the function epilogue.
18572
18573         * mini-x86.c mini-x86.h: Add support for placing basic blocks after the
18574         function epilogue.
18575         
18576 2005-01-05  Miguel de Icaza  <miguel@ximian.com>
18577
18578         * mini.c (setup_stat_profiler): Only set this up if the platform
18579         supports ITIMER_PROF.
18580
18581 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
18582
18583         * mini-x86.c (mono_arch_local_regalloc): Fix a bug introduced by the
18584         previous patch.
18585
18586         * inssel.brg: Fix a warning.
18587
18588 Wed Jan 5 16:40:18 CET 2005 Paolo Molaro <lupus@ximian.com>
18589
18590         * mini.c: added support for statistical profiler 
18591         (run with: --profile=default:stat).
18592
18593 2005-01-04  Zoltan Varga  <vargaz@freemail.hu>
18594
18595         * mini-x86.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Enable this on x86.
18596
18597         * mini-x86.c cpu-pentium.md: More fixes for usage of global registers.
18598
18599         * mini-amd64.c (mono_arch_local_regalloc): Port some regalloc fixes 
18600         related to global registers from the amd64 port.
18601
18602 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
18603
18604         * mini.c (mono_method_to_ir): Handle MONO_CLASSCONST.
18605
18606         * mini-amd64.c (mono_arch_local_regalloc): Fix some regalloc problems
18607         with global registers.
18608         (mono_arch_output_basic_block): Fix SWITCH in the AOT case.
18609
18610         * aot.c (emit_method_code): Fix the 'method emitted as' messages.
18611
18612 2004-12-31  Zoltan Varga  <vargaz@freemail.hu>
18613
18614         * debug-mini.c (encode_value): Fix off-by-one.
18615
18616         * aot.c (encode_value): Likewise.
18617
18618         * mini.c (mono_method_to_ir): Disable AOT for methods containing LDPTR.
18619
18620 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
18621
18622         * mini.c linear-scan.c: Add a workaround for the mcs crash when using 
18623         AOT.
18624
18625         * aot.c (mono_aot_load_method): Free up patch info if no longer needed.
18626         
18627         * aot.c (emit_method_info): Increase size of temp buffer.
18628
18629         * mini-x86.c cpu-pentium.md mini.c: Load fp constants differently in 
18630         the AOT case.
18631
18632 2004-12-28  Zoltan Varga  <vargaz@freemail.hu>
18633
18634         * aot.c (emit_method_info): Fix build.
18635         
18636         * aot.c: Further rework of the AOT file format to reduce the size of
18637         the method info data.
18638
18639         * mini.h: Bump AOT file format version.
18640
18641 2004-12-27  Martin Baulig  <martin@ximian.com>
18642
18643         * mini.c (mini_get_method): New static method; call
18644         mono_get_method_full() and mono_get_inflated_method().
18645         (mono_method_to_ir): Use mini_get_method() instead of
18646         mono_get_method_full(). 
18647
18648 2004-12-26  Patrik Torstensson  <patrik.torstensson@gmail.com>
18649
18650         * mini-x86.c (atomic ops): fixed bug interlocked bug #70784. 
18651
18652 2004-12-25  Zoltan Varga  <vargaz@freemail.hu>
18653
18654         * inssel.brg (ldind_to_load_membase): Handle CEE_LDIND_I8.
18655
18656         * inssel-amd64.brg: Add some optimization rules.
18657
18658 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
18659
18660         * aot.c: Remove the use of MonoGHashTable and other GC stuff. The
18661         standard not GC'd stuff is fine.
18662
18663 2004-12-24  Zoltan Varga  <vargaz@freemail.hu>
18664
18665         * aot.c: Rework the AOT file format to get rid of most of the global
18666         symbols. This reduces the size of the mscorlib.dll.so by 1MB.
18667
18668         * mini.h: Bump AOT file format version.
18669         
18670 2004-12-23  Zoltan Varga  <vargaz@freemail.hu>
18671
18672         * mini.h: Bump AOT file format version.
18673
18674         * aot.c (mono_aot_is_got_entry): New function to determine if an 
18675         address is inside a GOT.
18676
18677         * aot.c mini-x86.c tramp-x86.c: Make all patches use the GOT.
18678
18679         * cpu-pentium.md: Increase the maximum size of some instructions which
18680         might involve a got access.
18681         
18682         * mini.c (get_method_from_ip): Another debug helper function.
18683
18684         * mini.c: Call mono_get_got_var () in a couple places. Handle the case
18685         when got var accesses are created during the decompose phase.
18686
18687         * mini-sparc.c: Change mono_compile_aot to cfg->compile_aot.
18688
18689         * mini.h mini.c mini-x86.c aot.c mini-sparc.c: Add a 'compile_corlib'
18690         argument mini_compile_method and to MonoCompile, and use this to
18691         determine whenever a given method is compiled for AOT. This allows the
18692         other methods compiled during AOT compilation to be free of AOT stuff,
18693         so the backends does not need to add special support for them by
18694         creating a fake GOT etc.
18695
18696         * mini-x86.c (mono_arch_patch_code): Remove fake got stuff as it is no
18697         longer needed.
18698
18699 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
18700
18701         * mini.c (mono_method_to_ir): It turns out that some of the
18702         x-appdomain wrappers are lax with types, so just ignore this for
18703         all wrappers.
18704
18705         * inssel.brg (OP_CHECK_ARRAY_TYPE): Optimize this by only looking
18706         at the vtable->klass. If it is non-shared code we can just use the
18707         vtable.
18708
18709 Tue Dec 21 17:43:06 CET 2004 Paolo Molaro <lupus@ximian.com>
18710
18711         * mini-ppc.c: access MonoDomain from tls, too.
18712
18713 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com>
18714
18715         * declsec.c: Removed unused variable (and related warning ;-)
18716
18717 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
18718
18719         * iltests.il: New test for LDELEMA on an array of ref types.
18720
18721         * mini.c (CEE_LDELEMA): We need to emit OP_CHECK_ARRAY_TYPE for
18722         all ldelema's on reftypes.
18723         (check_call_signature): Remove the OP_CHECK_ARRAY_TYPE from here,
18724         it was the wrong place to put it.
18725
18726         * mini-x86.c (mono_arch_output_basic_block): Just use ecx as the
18727         register to pop to make this cleaner, at the request of Paolo.
18728
18729 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
18730
18731         * mini-ops.h (OP_GETHASHCODE): New op.
18732
18733         * inssel.brg (OP_GETHASHCODE): Emit code for the new opcode
18734
18735         * mini.c (mini_get_inst_for_method): Create the intrinsic hash
18736         operation.
18737
18738         For a microbenchmark, this reduces the cost of Hashtable.get_Item
18739         by 25%.
18740         
18741         * mini-x86.c (mono_arch_output_basic_block): Rather than
18742
18743         add ebp, 4
18744
18745         Emit
18746
18747         pop edx
18748
18749         The first is 3 bytes while the second is 1. This saves 36 kb on
18750         mscorlib, quite a big saving. When bootstraping mcs, I was able to
18751         see a small boost because of icache locality.
18752
18753         * cfold.c (FOLD_BINOPCOMM): Kill add foo, 0
18754
18755 Mon Dec 20 12:19:40 EST 2004 Paolo Molaro <lupus@ximian.com>
18756
18757         * Makefile.am, mini-ppc.h, mini-exceptions.c, exceptions-ppc.c:
18758         started code sharing with the generic code.
18759
18760 Mon Dec 20 11:08:06 EST 2004 Paolo Molaro <lupus@ximian.com>
18761
18762         * mini-ppc.c, cpu-g4.md: added code for direct access to
18763         tls data slots.
18764
18765 Mon Dec 20 10:58:28 EST 2004 Paolo Molaro <lupus@ximian.com>
18766
18767         * mini-ops.h, inssel-x86.brg, cpu-amd64.md, inssel.brg, inssel-amd64.brg,
18768          mini-amd64.c, mini-x86.c, cpu-pentium.md: renamed OP_X86_TLS_GET
18769         to OP_TLS_GET.
18770
18771 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
18772
18773         * declsec.c|h: Added functions to cache the declarative stack modifiers
18774         in MonoJitInfo and to create a security frame from a MonoJitInfo 
18775         structure.
18776         * mini.c: Initialize jinfo->cas_inited to FALSE when MonoJitInfo is
18777         created. Register internal calls for System.Security.SecurityFrame::
18778         _GetSecurityFrame and _GetSecurityStack.
18779         * mini.h: Added definition for new icalls (in mini-exceptions.c) and
18780         the definitions for the new stack walk/callback mechanism.
18781         * mini-exceptions.c: Added internal call GetSecurityFrame (to get the 
18782         first security frame for LinkDemands and InheritanceDemands) and
18783         GetSecurityStack for Demands. Both use the new mono_walk_stack code
18784         from lupus.
18785         * mini-x86.h, mini-amd64.h, mini-sparc.h: Architecture specific stack
18786         walk initialization (lupus).
18787
18788 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
18789
18790         * mini.c (mono_method_to_ir): In CEE_DUP, handle the dup / stloc
18791         idiom.
18792         (handle_loaded_temps): Do not create a temporary variable for
18793         things that we know are temps. They will never be modified.
18794         (mono_spill_call): Set MONO_INST_IS_TEMP
18795         (mono_emulate_opcode): ditto
18796         (emit_tree): ditto
18797         (mono_method_to_ir.CEE_DUP): ditto
18798
18799 2004-12-19  Ben Maurer  <bmaurer@ximian.com>
18800
18801         * mini.c (type_to_eval_stack_type): Make this handle the void type
18802         (mono_emit_call_args): set the call->type with type_to_eval_stack_type
18803         (emit_tree): use ip_in_bb to special case some common idioms
18804         Update all callers to pass in the IP.
18805         (mono_method_to_ir): Make CEE_CALL* do the above as well.
18806
18807         This gives us a nice 2% speedup in mcs bootstrap.
18808
18809         * mini-x86.c (peephole_pass): Peephole pass to make
18810         mov  [foo], eax
18811         push [foo]
18812
18813         into
18814
18815         mov [foo], eax
18816         push eax
18817
18818         * mini.c (ip_in_bb): new method.
18819         (mono_method_to_ir): use this method rather than doing the hash
18820         lookup ourselves.
18821
18822         * linear-scan.c (mono_linear_scan): When expiring actives, you
18823         don't need to keep around variables that expire on this
18824         instruction. This makes it so that:
18825              a = b + 1
18826         will turn into:
18827              store (ebx add (ebx, 1))
18828         which will become
18829              add ebx, 1
18830
18831 2004-12-19  Zoltan Varga  <vargaz@freemail.hu>
18832
18833         * mini.c (mono_method_to_ir): Optimize the common ldobj+stloc 
18834         combination to avoid doing two copies. Fix up problems with previous
18835         patch.
18836
18837         * mini.c: Fix 64 bit warnings.
18838
18839         * mini-x86.c (INST_IGNORES_CFLAGS): Add OP_STOREI4_MEMBASE_REG.
18840
18841 2004-12-17  Zoltan Varga  <vargaz@freemail.hu>
18842
18843         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Port exception handling
18844         changes from the x86 code.
18845
18846         * mini.h: Add prototype for mono_arch_get_throw_corlib_exception ().
18847
18848 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
18849
18850         * mini-x86.c (mono_arch_emit_epilog): Optimize the corlib exception
18851         throwing code to reduce its size, unify the AOT and non-aot code and 
18852         get rid of relocations in the AOT case.
18853
18854         * mini-x86.h mini.c exceptions-x86.c 
18855         (mono_arch_get_throw_corlib_exception): New arch specific function to 
18856         raise corlib exceptions which doesn't require relocations in the 
18857         caller.
18858
18859         * aot.c (emit_method): Handle PATCH_INFO_NONE as well.
18860
18861 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
18862
18863         * mini.c (mono_emit_method_call): Only allocate the got var when it is
18864         needed.
18865
18866         * mini-x86.c (mono_arch_patch_code): Add missing PATCH_INFO_METHOD_REL
18867         in the AOT case.
18868
18869 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
18870
18871         * mini-x86.c, cpu-pentium.md, inssel-x86.brg: Fixed bug
18872         with add function when used from Inc/dec atomic 
18873         functions. Re-enabled optimization on x86.
18874         * mini-ops.h: renamed atomic_add functions to
18875         allow _add to match the Interlocked::Add and
18876         _add_next to match Interlocked::Inc/Dec.
18877
18878 2004-12-15  Massimiliano Mantione  <massi@ximian.com>
18879
18880         * mini.c: Fixed a subtle bug in mono_method_to_ir, about the
18881         linking of BBs to the end BB, and enabled SSAPRE also with
18882         consprop and copyprop (which was prevented by that bug).
18883
18884 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
18885
18886         * mini-x86.c: disabling the Interlocked optimizing code. 
18887
18888 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
18889
18890         * aot.c (load_aot_module): Move reading of got_addr after the AOT
18891         file version check.
18892         
18893 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
18894
18895         * mini-x86.c, inssel-x86.brg, cpu-pentium.md: removed _imm 
18896         interlocked optimization due lack of support on x86, rewrote 
18897         exchange to take into account that base may be in eax.
18898         
18899         xsp works again; activated Interlocked optimizing code.
18900         
18901 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
18902
18903         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
18904
18905 2004-12-13  Zoltan Varga  <vargaz@freemail.hu>
18906
18907         * mini-ops.h: Add new opcodes.
18908
18909         * mini.h: Add new patch types. Add got_var to MonoCompile.
18910
18911         * mini.h mini-x86.c mini-amd64.c aot.c: Rename 
18912         mono_arch_get_aot_patch_offset () to mono_arch_get_patch_offset () and
18913         make it work with all kinds of patchable code.
18914
18915         * inssel.brg inssel-x86.brg: Add new rules dealing with computing the
18916         address of the GOT, and referencing entries in the GOT.
18917
18918         * mini.c: Add code to load the GOT address if needed by an opcode.
18919
18920         * aot.c mini-x86.h mini-x86.c cpu-pentium.md: Add support for position 
18921         independent AOT code on the x86 using an elf-style Global Offset Table.
18922
18923 2004-12-14  Raja R Harinath  <rharinath@novell.com>
18924
18925         * Makefile.am (RUNTIME): Set MONO_SHARED_DIR.
18926
18927 2004-12-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18928
18929         * mini-x86.c: disabling the Interlocked optimizing code. It segfaults
18930         when running xsp.
18931
18932 2004-12-13  Patrik Torstensson  <patrik.torstensson@gmail.com>
18933
18934         * mini-x86.c,mini-ops.h,inssel-x86.brg,cpu-pentium.md: Implementation
18935         of Interlocked:Increment/Decrement/Add as inline ops.
18936         (mini-x86.c (mono_arch_get_inst_for_method and mono_arch_output_basic_block))
18937
18938 2004-12-12  Geoff Norton  <gnorton@customerdna.com>
18939
18940         * exceptions-ppc.c: Reorder code so gcc3.4 can compile it
18941         * mini-ppc.c: Unify mono_arch_patch_code with changes in r37636.
18942
18943 2004-12-12  Duncan Mak  <duncan@ximian.com>
18944
18945         * mini-ppc.c (mono_arch_patch_code): Hopefully made this build
18946         again. `patch_info->table_size' is no longer valid after Zoltan's
18947         commit #37636.
18948
18949 2004-12-12  Martin Baulig  <martin@ximian.com>
18950
18951         * mini.c (mono_method_to_ir): Only call mono_debug_init_method()
18952         if we are the "real" method, ie. not an inlined method inside it.
18953
18954 2004-12-11  Ben Maurer  <bmaurer@ximian.com>
18955
18956         * mini.c (CEE_LDSFLD): Make sure that the vtable has been init'd
18957         before we look in the special fields table. This fixes
18958         ../tests/thread-static-init.cs.
18959
18960 2004-12-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18961
18962         * mini.c: return immediately after setting OP_ARRAY_RANK or CEE_LDLEN
18963         for Array get_Rank and get_Length. Fixes bug #70465.
18964
18965 2004-12-11  Zoltan Varga  <vargaz@freemail.hu>
18966
18967         * mini.h mini.c aot.c: Put the bblock table for a SWITCH patch into a
18968         separate structure to reduce the size of MonoJumpInfo.
18969
18970 Fri Dec 10 18:09:22 CET 2004 Paolo Molaro <lupus@ximian.com>
18971
18972         * mini.c, mini.h, aot.c, driver.c: allow disabling the aot code.
18973
18974 2004-12-10  Patrik Torstensson  <patrik.torstensson@gmail.com>
18975
18976         * mini.c (mini_get_inst_for_method): Changed to allow ports
18977         to return a MonoInst instead of opcode 
18978         (renamed mini_get_opcode_for_method to better reflect the new functionality)
18979         
18980         * mini-[x86|s390|s390x|ppc|sparc].c (mono_arch_get_inst_for_method): 
18981         Allow ports to return a created MonoInst instead of op-code, will enable
18982         new optimizations.
18983         (renamed mini_get_opcode_for_method to better reflected the functionality)
18984
18985 2004-12-09  Zoltan Varga  <vargaz@freemail.hu>
18986
18987         * mini.c (NEW_AOTCONST): Share some code between the different NEW_AOTCONST macros.
18988
18989 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
18990
18991         * mini.c jit-icalls.c: Pass generic_context to mono_ldtoken_wrapper.
18992         Fixes #69985.
18993
18994 2004-12-08  Martin Baulig  <martin@ximian.com>
18995
18996         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use `fsig->signature'
18997         if we're a CEE_CONSTRAINED call.  Fixes gen-118.cs.
18998
18999 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
19000
19001         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_<X>
19002         correctly.
19003
19004         * exceptions.cs: Disable some tests which depend on properties of x86 fp
19005         arithmetic.
19006
19007 2004-12-08  Raja R Harinath  <rharinath@novell.com>
19008
19009         * Makefile.am (CLEANFILES): Add *.exe, *.dll.
19010
19011 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
19012
19013         * mini-sparc.c (mono_arch_output_basic_block): Fix LOCALLOC_IMM
19014         bug introduced by the previous patch.
19015
19016 Tue Dec 7 11:44:39 CET 2004 Paolo Molaro <lupus@ximian.com>
19017
19018         * mini-ppc.c, objectc.cs: handle large structs passed by value
19019         (fixes bug #69972).
19020
19021 Tue Dec 7 10:43:31 CET 2004 Paolo Molaro <lupus@ximian.com>
19022
19023         * mini-ppc.c: OP_ARGLIST implementation from
19024         Geoff Norton  <gnorton@customerdna.com>.
19025
19026 Tue Dec 7 10:14:25 CET 2004 Paolo Molaro <lupus@ximian.com>
19027
19028         * inssel-x86.brg, inssel-ppc.brg: fix reference to register
19029         in stmt: OP_OUTARG_VT (reg) (should fix bug #69785).
19030
19031 Tue Dec 7 10:06:39 CET 2004 Paolo Molaro <lupus@ximian.com>
19032
19033         * exceptions-ppc.c: avoid calling ppc_patch in exception trampolines.
19034
19035 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
19036
19037         * inssel-s390.brgi, mini-ops.h, mini-s390.c : Add stubs for support of tls offset
19038         support.
19039
19040 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
19041
19042         * mini-sparc.c: Zero out localled-ed memory.
19043
19044         * iltests.il: Add tests for zeroing out localloc-ed memory.
19045
19046 2004-12-04  Martin Baulig  <martin@ximian.com>
19047
19048         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use the new
19049         mono_method_get_signature_full().       
19050
19051 2004-12-03  Massimiliano Mantione  <massi@ximian.com>
19052
19053         * mini.c: Added removal of critical edges (prerequisite for SSAPRE),
19054         and some utility functions (always for SSAPRE), integrated SSAPRE.
19055         * mini.h: Likewise.
19056         * driver.c: Added ssapre option.
19057         * ssa.c: Small fix on OP_ARG handling.
19058         * ssapre.c, ssapre.h: Added files containing SSAPRE implementation.
19059         * Makefile.am: Likewise.
19060
19061 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
19062
19063         * tramp-x86.c (mono_arch_create_jit_trampoline): Remove code which is
19064         now in the xp code.
19065
19066         * mini.c (mini_init): Register mono_thread_force_interruption_checkpoint
19067         icall.
19068
19069 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
19070
19071         * inssel-s390.brg : Add OP_OUTARG_VT (OP_REFANYTYPE (reg)) rule.
19072         
19073         * cpu-s390.md : Increase instruction length of oparglist.
19074
19075         * mini-s390.c : Implement vararg and TYPEDEBYREF support.
19076
19077 2004-11-30  Martin Baulig  <martin@ximian.com>
19078
19079         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, added support for
19080         virtual generic methods.  We call a special helper_compile_generic_method()
19081         icall to retrieve the method from the vtable, inflate and compile
19082         it and then do a CEE_CALLI.  Thanks a lot to Paolo for this idea.
19083
19084         * jit-icalls.c (helper_compile_generic_method): New JIT icall.
19085
19086 2004-11-30  Zoltan Varga  <vargaz@freemail.hu>
19087
19088         * mini-sparc.c: Fix up vararg corner cases. Fixes #70019.
19089
19090 2004-11-29  Zoltan Varga  <vargaz@freemail.hu>
19091
19092         * cpu-sparc.md mini-sparc.c (long_conv_to_ovf_i): Fill missing delay slot.
19093         Fixes #69929.
19094
19095 2004-11-27  Ben Maurer  <bmaurer@ximian.com>
19096
19097         * inssel.brg (CEE_SWITCH): The AOT stuff Zoltan added is only for
19098         platforms with PIC aot.
19099
19100 2004-11-28  Martin Baulig  <martin@ximian.com>
19101
19102         * mini.c (mono_method_to_ir): In CEE_DUP, added handle_stobj().
19103         Fixes gen-112.cs.
19104
19105 2004-11-28  Martin Baulig  <martin@ximian.com>
19106
19107         * mini-x86.c (mono_arch_call_opcode): Use the original type, not
19108         the result of mono_type_get_underlying_type() to check whether
19109         we're byref.
19110
19111 2004-11-26  Martin Baulig  <martin@ximian.com>
19112
19113         * mini.c
19114         (mono_method_to_ir): Use `!method->signature->has_type_parameters'
19115         in the g_assert().
19116
19117 2004-11-26  Zoltan Varga  <vargaz@freemail.hu>
19118
19119         * mini-amd64.c (mono_arch_emit_this_vret_args): Handle this and vret
19120         the same way as the other arguments so they won't get clobbered.
19121
19122         * mini-amd64.c (mono_arch_output_basic_block): Avoid doing virtual 
19123         calls through R11 since it is clobbered by the trampoline code.
19124
19125 2004-11-26  Raja R Harinath  <rharinath@novell.com>
19126
19127         * Makefile.am: Consistently use $(RUNTIME) rather than ./mono to
19128         pick up in-tree mscorlib.dll.
19129
19130 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
19131
19132         * aot.c: Rename MonoAOTModule->cleanup to out_of_date.
19133
19134         * mini-amd64.c aot.c: Switch to PIC relative AOT code. References to 
19135         runtime data/code are now stored in a table similar to the GOT in ELF. 
19136         This allows the code itself to be position independent.
19137
19138         * aot.c: Fix loading of referenced assemblies after the lazy assembly
19139         loading changes.
19140
19141         * aot.c: Attach ELF type (object/function) directives to all global
19142         symbols.
19143
19144         * tramp-amd64.c (amd64_magic_trampoline): Patch RIP relative calls too.
19145
19146         * inssel.brg (SWITCH): Emit an AOT_CONST in the aot case.
19147
19148         * mini-amd64.h: Turn on PIC AOT code.
19149
19150         * mini.h (mono_arch_get_aot_patch_offset): New arch specific function
19151         returning the offset within an OP_AOTCONST instruction where the GOT
19152         offset needs to be added.
19153
19154         * mini.h: Bump AOT file format version.
19155
19156 2004-11-25  Martin Baulig  <martin@ximian.com>
19157
19158         * mini.c (mono_method_to_ir): In CEE_CALL, don't allow calling any
19159         uninflated generic methods.
19160
19161 2004-11-25  Martin Baulig  <martin@ximian.com>
19162
19163         * mini.c (mono_method_to_ir): Don't allow any uninflated generic methods.
19164
19165 2004-11-24  Martin Baulig  <martin@ximian.com>
19166
19167         * minit.c (type_to_eval_stack_type): Set `inst->klass' to the
19168         original klass (this only applies for generic instances).
19169
19170 2004-11-24  Martin Baulig  <martin@ximian.com>
19171
19172         * mini.c (mono_method_to_ir): Use `STACK_OBJ' instead of
19173         `ldind_type [CEE_LDIND_REF]' (which would be beyond the end of
19174         that array).
19175
19176 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
19177
19178         * mini.c (mono_method_to_ir): Disable inlining for methods containing
19179         localloc. Fixes #69678.
19180
19181         * iltests.il (test_0_localloc_inline): Add regression test for #69678.
19182         
19183 2004-11-23  Zoltan Varga  <vargaz@freemail.hu>
19184
19185         * mini-amd64.c (mono_arch_output_basic_block): Set %al to the number of
19186         used SSE registers on pinvoke calls. Fixes #69774.
19187
19188 2004-11-23  Geoff Norton  <gnorton@customerdna.com>
19189
19190         * inssel-ppc.brg, mini-ppc.c: Use mono_class_from_mono_type instead of
19191         vt->inst_vtype->data.klass.  This fixes generic structs and bug #69766
19192
19193 2004-11-23  Raja R Harinath  <rharinath@novell.com>
19194
19195         * Makefile.am (MCS,ILASM): Don't refer to runtime/ directory.
19196         Refer directly to the mcs/ tree.
19197
19198 2004-11-19  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
19199
19200         * mini-s390.c, tramp-s390.c, mini-s390.h: Add LMF processing for trampolines.
19201         Check if a trampoline for a synchronized method is required. 
19202
19203 Fri Nov 19 17:34:21 CET 2004 Paolo Molaro <lupus@ximian.com>
19204
19205         * mini-ppc.c, cpu-g4.md: set to zero the memory allocated
19206         with localloc if needed. Throe arithmetric exception in
19207         div an rem if needed. Implement ovf checks in OP_LCONV_TO_OVF_I.
19208         Adapted from a patch by Geoff Norton  <gnorton@customerdna.com>.
19209
19210 2004-11-19  Geoff Norton  <gnorton@customerdna.com>
19211
19212         * mini-ppc.c: Call mono_type_get_underlying_type to unwrap generic
19213         types before switching on type.  Fixes #69622.
19214
19215 2004-11-19  Raja R Harinath  <rharinath@novell.com>
19216
19217         * Makefile.am (check-local): New.  Integrate into 'make check'.
19218         (MCS,RUNTIME): Define using in-tree mono and mcs.
19219         (ILASM): New.
19220         (%.exe): Use $(ILASM).
19221
19222 Fri Nov 19 14:54:07 CET 2004 Paolo Molaro <lupus@ximian.com>
19223
19224         * mini-ppc.c: adjust initial prolog size (bug #69691).
19225
19226 2004-11-18  Zoltan Varga  <vargaz@freemail.hu>
19227
19228         * cpu-pentium.md (localloc): Increase max instruction len. Fixes
19229         #69664.
19230
19231 2004-11-17  Raja R Harinath  <rharinath@novell.com>
19232
19233         * Makefile.am (clean-local): Rename from 'clean'.
19234
19235 2004-11-15  Nelae Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
19236
19237         * mini.c, mini-x86.c, mini-amd64.c, exceptions-s390.c: Add siginfo_t parameter
19238         to mono_arch_is_int_overflow. 
19239         * exceptions-s390.c: Add mono_arch_is_int_overflow routine to discern between
19240         SIGFPE events.
19241
19242 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
19243
19244         * declsec.c|h: New files to support declarative security attributes.
19245         Added function to check if a method has (applicable) security.
19246         * mini.c|h: Add check for declarative security attributes in
19247         mono_method_check_inlining.
19248         * Makefile.am: Added declsec.c and declsec.h to the build.
19249
19250 Mon Nov 15 11:53:46 CET 2004 Paolo Molaro <lupus@ximian.com>
19251
19252         * mini.c, mini.h: update to keep dynamic code info per-domain.
19253
19254 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
19255
19256         * mini.c mini-*.h: Get rid of MONO_ARCH_HAVE_RETHROW since all architectures support it now.
19257         (mini_init): Get rid of it from here too.
19258
19259 Thu Nov 11 20:17:17 CET 2004 Paolo Molaro <lupus@ximian.com>
19260
19261         * mini-ppc.c, mini-ppc,h, cpu-g5.md, exceptions-ppc.c:
19262         implemented OP_RETHROW (patch by Geoff Norton
19263         <gnorton@customerdna.com>).
19264
19265 2004-11-10  Geoff Norton  <gnorton@customerdna.com>
19266
19267         * tramp-ppc.c (ppc_magic_trampoline): Don't trampoline methods
19268         between appdomains.  Fixes appdomain-unload on PPC.
19269
19270 2004-10-26  Lluis Sanchez Gual  <lluis@novell.com>
19271
19272         * exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
19273         mini-exceptions.c: handle the new wrapper types.
19274         * mini.c: The CEE_ISINST and CEE_CASTCLASS opcodes now take the
19275         token value as a MonoClass* when compiling a wrapper.
19276         mono_jit_create_remoting_trampoline now takes an additional
19277         MonoRemotingTarget parameter.
19278         
19279 2004-11-10  Martin Baulig  <martin@localhost>
19280
19281         * mini.c (mono_method_to_ir): Use `generic_container->context'
19282         rather than creating a new one.
19283
19284 2004-11-09  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
19285
19286         * exceptions-s390.c, mini-s390, cpu-s390.md: Add support for OP_RETHROW.
19287
19288         * inssel-390.md, mini-s390.c: Correct register allocation for globals.
19289
19290 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
19291
19292         * aot.c (mono_aot_init): Add MONO_AOT_CACHE env variable to turn on
19293         the experimental aot cache stuff.
19294
19295 Tue Nov 9 17:30:20 CET 2004 Paolo Molaro <lupus@ximian.com>
19296
19297         * aot.c, mini.c, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
19298         mini-exceptions.c: update to exception clause structure changes.
19299
19300 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
19301
19302         * exceptions-x86.c (throw_exception): Fix warnings.
19303
19304         * mini-x86.h mini-x86.c cpu-pentium.md exceptions-x86.c: Add support 
19305         for OP_RETHROW.
19306
19307 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
19308
19309         * exceptions-sparc.c (get_throw_exception): Really fix this.
19310
19311 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
19312
19313         * tramp-*.c: we no longer support icalls without wrappers, so
19314         a bit of code can be removed here
19315
19316 2004-11-07  Zoltan Varga  <vargaz@freemail.hu>
19317
19318         * exceptions-sparc.c (get_throw_exception): Fix more bugs in previous
19319         patch.
19320
19321         * cpu-sparc.md: Add op_rethrow.
19322
19323         * exceptions-sparc.c (get_throw_exception): Fix bug in previous patch.
19324
19325         * mini-sparc.h mini-sparc.c exceptions-sparc.c: Add support for OP_RETHROW.
19326
19327         * mini.h: Add mono_arch_get_rethrow_exception () arch specific function.
19328         * mini-ops.h: Add OP_RETHROW.
19329
19330         * mini.c inssel.brg: Distinguish between THROW and RETHROW.
19331
19332         * cpu-amd64.c mini-amd64.c exceptions-amd64.c: Add support for OP_RETHROW.
19333
19334 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
19335         
19336         * helpers.c: Change otool arguments from -V -v -t to -v -t on Darwin
19337         Makes the output much easier to read
19338
19339 2004-11-05  Ben Maurer  <bmaurer@ximian.com>
19340
19341         * ssa.c: allocate MonoMethodVar.uses from the mempool. First, this
19342         prevents another huge leak when compiling with ssa. Secondly, the
19343         performance of doing this rather than freeing the lists is much
19344         better. GList does a lock every time you allocate a list link,
19345         so that it can use a memory pool. So, it is better to just use
19346         a memory pool of our own.
19347         
19348         * ssa.c, linear-scan.c: replace g_list_remove_link with
19349         g_list_delete.  The remove one does not free the GList, so we were
19350         leaking memory. On -O=all --compile-all with corlib, this cut down
19351         3 MB of allocations.
19352
19353 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
19354
19355         * tramp-sparc.c (mono_arch_create_jit_trampoline): Fix sparc build.
19356
19357         * tramp-amd64.c (mono_arch_create_jit_trampoline): Fix amd64 build.
19358
19359         * mini.h mini.c tramp-*.c: Moved xp parts of JIT trampoline creation
19360         into a new function mono_create_jit_trampoline ().
19361
19362 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
19363
19364         * trace.c (get_spec): Allow tracing of classes without a namespace.
19365
19366 2004-11-02  Sebastien Pouliot  <sebastien@ximian.com>
19367
19368         * mini.c: Fix pointer overwrite in mini_method_compile.
19369
19370 2004-11-2  Geoff Norton  <gnorton@customerdna.com>
19371
19372         * inssel-ppc.brg (OP_OUTARG_VT (CEE_LDOBJ (base))):
19373         The darwin ABI needs some special handling for 1 and 2 byte structs
19374         Lets use lbz/lhz instead of lwz everywhere.
19375         * mini-ppc.c (calculate_sizes):  The Darwin ABI needs from special handling
19376         for 1 and 2 byte structs and struct which are size >= 3 || size % 4 != 0.
19377         Use stb/sth for the former, and put the latter always on stack instead of in
19378         argument registers.
19379
19380 2004-10-30  Zoltan Varga  <vargaz@freemail.hu>
19381
19382         * trace.c (is_filenamechar): Add '_'.
19383
19384 2004-10-29  Neale Ferguson  <Neale.Ferguson@SoftwareAG-usa.com>
19385
19386         * mini-s390.c: Fix prolog length to allow for large trace requirements.
19387
19388         * exceptions-s390.c: Remove dwarf unwinding stuff that was unused.
19389
19390 2004-10-29  Zoltan Varga  <vargaz@freemail.hu>
19391
19392         * Makefile.am (libgc_libs): Do some automake magic so libmono/mono
19393         depends on libmonogc. Fixes #68805.
19394
19395 2004-10-26  Miguel de Icaza  <miguel@ximian.com>
19396
19397         * mini.c (mono_jit_free_method): Provide extra information for
19398         this error.  Currently this leaks, but will be turned into a
19399         developer option in the future.
19400
19401 2004-10-26  Zoltan Varga  <vargaz@freemail.hu>
19402
19403         * driver.c (mono_main): Applied patch from Willibald Krenn <willibald.krenn@gmx.at>. Make --graph work for icalls and pinvoke methods.
19404
19405 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
19406
19407         * aot.c (mono_aot_load_method): Align PATCH_INFO_R8 on an 8 byte 
19408         boundary. Fixes reading of PATCH_INFO_R4 and R8.
19409         (mono_aot_load_method): Do not allocate MonoAotMethod in the GC heap.
19410
19411 2004-10-24  Zoltan Varga  <vargaz@freemail.hu>
19412
19413         * mini-amd64.c (mono_arch_patch_code): Fix patching of class init
19414         trampolines for AOT code.
19415
19416 2004-10-22    <vargaz@freemail.hu>
19417
19418         * aot.c (mono_compile_assembly): Disable AOT for methods containing calls to methods of
19419         constructed types. Fixes #68136.
19420
19421 2004-10-21  Martin Baulig  <martin@ximian.com>
19422
19423         * exceptions-x86.c (throw_exception): Call mono_debugger_throw_exception();
19424         if it returns true, unwind the stack to the call instruction.
19425
19426 2004-10-21    <vargaz@freemail.hu>
19427
19428         * aot.c: Reorganize the AOT file format to avoid relocations. Fix warnings.
19429
19430         * mini.h: Bump AOT version number.
19431
19432         * objects.cs: Add another test for unbox trampolines.
19433
19434         * tramp-amd64.c (amd64_magic_trampoline): Disable patching of trampolines for 
19435         valuetype methods.
19436
19437 2004-10-20    <vargaz@freemail.hu>
19438
19439         * driver.c: Add SHARED to the set of optimizations tested.
19440
19441         * tramp-amd64.c (amd64_magic_trampoline): Patch trampoline code as well.
19442
19443         * mini.c (mono_method_to_ir): Mark the domainvar as volatile when it is implicitly
19444         used by CEE_NEWARR.
19445
19446         * ssa.c (mono_ssa_deadce): Do not optimize away accesses to volatile variables.
19447
19448 2004-10-20  Martin Baulig  <martin@ximian.com>
19449
19450         * mini-exceptions.c (mono_handle_exception): Call
19451         mono_debugger_handle_exception() to tell the debugger about
19452         catch/finally clauses.
19453
19454 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
19455
19456         * exceptions-amd64.c (mono_arch_find_jit_info): Pop arguments of the stack.
19457
19458         * mini-amd64.c (mono_amd64_get_vcall_slot_addr): Handle extended registers. Fixes
19459         #68447.
19460
19461 2004-10-15  Geoff Norton  <gnorton@customerdna.com>
19462
19463         * mini-ppc.c (calculate_sizes): Marshal valuetypes for pinvoke
19464         methods as their native size, fixed bug #57543, #57545.
19465         * mini-ppc.c (mono_arch_output_basic_block): Use mulli for imm16 types
19466         This saves a temporary register and mullw call down into 1 (minor perf
19467         increase for cases like sum = sum * 5;  This use to translate into:
19468             li r11,5
19469             mullw r28,r28,r11
19470         It now translates to
19471             mulli r28,r28,5
19472
19473 2004-10-15  Zoltan Varga  <vargaz@freemail.hu>
19474
19475         * trace.c (mono_trace_eval): Use mono_method_desc_full_match. Fixes
19476         #68388.
19477
19478 2004-10-11  Martin Baulig  <martin@ximian.com>
19479
19480         * mini.c (mono_method_to_ir): If we're a generic method, get the
19481         MonoGenericContainer from our MonoMethodNormal and create a
19482         MonoGenericContext from it.
19483
19484 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
19485
19486         * inssel-long32.brg (OP_LCONV_TO_OVF_I2): Fix CONV_I1 -> CONV_I2.
19487
19488         * basic-long.cs: Add test for checked i8->i2 cast.
19489
19490 Wed Oct 6 12:40:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
19491
19492         * inssel-ppc.brg: added a couple of speedup rules.
19493
19494 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
19495
19496         * Makefile.am (genmdesc_LDADD): Don't link this against libmetadata
19497         to speed up rebuilds.
19498
19499 2004-10-04  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
19500
19501         * mini-s390.c: Minor fix to OP_OR_IMM.
19502
19503 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
19504
19505         * tramp-sparc.c (sparc_magic_trampoline): Handle appdomain stuff
19506         better. Fixes appdomain-unload.exe on sparc.
19507
19508 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
19509
19510         * ssa.c: Fixed casts to unsigned where the value was of 64 bits in
19511         simulate_long_compare, patch by will@exomi.com (Ville-Pertti Keinonen),
19512         see bug 67324.
19513
19514 2004-10-02  Zoltan Varga  <vargaz@freemail.hu>
19515
19516         * jit-icalls.c: Handle a nonexisting trunc function more correctly.
19517
19518 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
19519
19520         * mini.c: Always generate a field read/write wrapper for members
19521         of the class MarshalByRefObject since the actual instance could
19522         be a CBO.
19523
19524 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
19525
19526         * mini.c: Use mono_thread_exit() to stop threads, instead of ExitThread.
19527
19528 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
19529
19530         * driver.c mini.h trace.c: Move the setting of the main assembly into
19531         a separate function called mono_trace_set_assembly () and call it after
19532         actually loading the main assembly. Fixes #66872.
19533
19534 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
19535
19536         * mini-amd64.h mini-amd64.c tramp-amd64.c: Allocate trampoline memory
19537         using the code manager.
19538
19539 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
19540
19541         * tramp-amd64.c mini-amd64.h: Add support for MONO_ARCH_HAVE_INVALIDATE_METHOD.
19542
19543 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
19544
19545         * cpu-amd64.md: Fix bug in previous patch.
19546         
19547         * cpu-amd64.md: Fix instruction lengths of membase opcodes. Fixes
19548         #66650.
19549
19550 Wed Sep 22 19:03:20 CEST 2004 Paolo Molaro <lupus@ximian.com>
19551
19552         * mini.h, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
19553         mini-exceptions.c: updates for changed stack walk interface.
19554
19555 2004-09-21  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
19556
19557         * mini-s390.c, cpu-s390.md: Minor changes to OP_ARGLIST handling
19558
19559 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
19560
19561         * mini.c (mono_method_to_ir): Fix LDSTR in dynamic methods. Fixes #66132.
19562
19563 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
19564
19565         * driver.c (mini_regression_list): Do not call mono_assembly_close 
19566         since assemblies can't be unloaded.
19567         
19568 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
19569
19570         * cpu-amd64.md: Fix more instruction lengths.
19571
19572         * cpu-amd64.md: Fix lengths of some instructions.
19573
19574 2004-09-11 Ben Maurer  <bmaurer@users.sourceforge.net>
19575
19576         * inssel.brg: Make the array ldelema check aot friendly.
19577
19578 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
19579
19580         * mini-amd64.c (mono_arch_get_argument_info): Fix stack_unwind test.
19581
19582         * cpu-amd64.md inssel-long.brg inssel-amd64.brg: Small optimizations.
19583
19584 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
19585
19586         * mini-x86.c: Fix build.
19587
19588         * mini-sparc.c mini-x86.c mini-amd64.c: Use the new 
19589         mono_type_get_underlying_type () helper function to simplify code.
19590         
19591 2004-09-09  Martin Baulig  <martin@ximian.com>
19592
19593         * mini-amd64.c: Don't access `type->data.klass' directly, call
19594         mono_class_from_mono_type() instead since the type may be a
19595         generic instance.
19596
19597 2004-09-09  Martin Baulig  <martin@ximian.com>
19598
19599         * mini-amd64.c (get_call_info): Fix support for generic instances.
19600         (add_valuetype): Use mono_class_from_mono_type() to get the class
19601         since we can be a generic instance.
19602
19603 Thu Sep 9 01:43:53 PDT 2004 Paolo Molaro <lupus@ximian.com>
19604
19605         * mini-ppc.c, mini.h, regalloc.c, regalloc.h: powerpc speedups.
19606
19607 2004-09-07 Ben Maurer  <bmaurer@users.sourceforge.net>
19608
19609         * liveness.c: reset spill costs on each scan: bug 62107
19610
19611 2004-09-07  Bernie Solomon  <bernard@ugsolutions.com>
19612
19613         * exceptions-sparc.c (mono_arch_find_jit_info): remove
19614         unnecessary line that doesn't compile
19615
19616 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
19617
19618         * mini.c mini.h mini-x86.h tramp-x86.c: Instead of freeing delegate
19619         trampolines, make them call an error function so people can fix their
19620         code.
19621
19622 2004-09-06  Martin Baulig  <martin@ximian.com>
19623
19624         * mini.c (mono_method_to_ir): When initializing locals, handle a
19625         generic instances like a valuetype if it's a valuetype and like a
19626         class if it's a class.
19627
19628 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
19629
19630         * exceptions-x86.c (mono_arch_find_jit_info): Pop arguments off the
19631         stack. Fixes #64674.
19632
19633         * exceptions.cs: Add test for unwinding of call arguments.
19634
19635 Mon Sep 6 05:50:02 PDT 2004 Paolo Molaro <lupus@ximian.com>
19636
19637         * mini-*.c, mini-ops.h, inssel-long32.brg: introduced
19638         OP_ADDCC_IMM and OP_SUBCC_IMM (add/sub immediate that will
19639         set the carry/borrow flag). The sparc and s390 implementations
19640         can now use optimized versions (and simplify the code). ppc bugfixes.
19641
19642 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
19643
19644         * exceptions-ppc.c (mono_arch_find_jit_info): Fix memory leak.
19645
19646 2004-09-05  Zoltan Varga  <vargaz@freemail.hu>
19647
19648         * inssel-amd64.brg: Remove leftover 32 bit rule.
19649
19650         * mini-amd64.c (mono_arch_instrument_prolog): Fix tracing support.
19651
19652 2004-09-04  Zoltan Varga  <vargaz@freemail.hu>
19653
19654         * mini-exceptions.c (mono_find_jit_info): Refactor common code from
19655         mono_arch_find_jit_info functions into a new function. Fix a memory
19656         leak.
19657
19658         * exceptions-x86.c exceptions-amd64.c exceptions-sparc.c: Remove
19659         refactored code.
19660         
19661 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
19662
19663         * exceptions.cs inssel-long32.brg: Handle the OP_LCONV_TO_OVF_I2 case
19664         as well.
19665         
19666         * exceptions.cs: Add array size tests.
19667
19668         * mini.c: Allocate a separate icall wrapper for each arity of 
19669         mono_array_new_va. Fixes #59509.
19670
19671         * exceptions.cs: Add testcase for 64578.
19672
19673         * inssel-long32.brg: Fix OP_LCONV_TO_OVF_I1 rule. Fixes #64578.
19674
19675         * trace.c (is_filenamechar): Allow 0..9 in strings. Fixes #65094.
19676         
19677 2004-09-02  Martin Baulig  <martin@ximian.com>
19678
19679         * mini.c (mono_method_to_ir): When initializing the locals, call
19680         handle_initobj() on the generic instance itself, not its
19681         underlying type.
19682
19683 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
19684
19685         * mini.h (MonoJitDynamicMethodInfo): New structure, extension of 
19686         MonoJitInfo for dynamic methods.
19687
19688         * mini.c: Rename trampoline_hash_mutex to jit_mutex.
19689
19690         * mini.c: Add support for freeing JIT data for dynamic methods.
19691         
19692 2004-09-01  Martin Baulig  <martin@ximian.com>
19693
19694         * mini-x86.c (is_regsize_var): Added support for generic
19695         instances.
19696         (mono_arch_emit_prolog): Make this compile again, use
19697         `x86_push_imm_template (code)'.
19698
19699 2004-08-30 Ben Maurer  <bmaurer@users.sourceforge.net>
19700
19701         * mini-x86.c: make all push_imm instructions that get
19702         patched always emit the long form
19703
19704 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
19705
19706         * mini.c (mono_create_jump_trampoline): Store the jump trampolines 
19707         in a per-domain hash.
19708
19709         * mini-amd64.c (merge_argument_class_from_type): Handle generic
19710         types.
19711
19712 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
19713
19714         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: Ongoing SSE
19715         work.
19716         
19717         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: More SSE
19718         work.
19719
19720         * mini-amd64.c cpu-amd64.md: Implement checked int<->uint casts.
19721         Beginnings of SSE2 support.
19722
19723         * exceptions.cs: Add more tests for checked int<->uint casts.
19724
19725 2004-08-28  Martin Baulig  <martin@ximian.com>
19726
19727         * mini-x86.c (mono_arch_instrument_epilog): Added support for
19728         generic instances.
19729
19730         * mini.c
19731         (mono_type_to_ldind, mono_type_to_stind, type_to_eval_stack_type):
19732         Handle generic instances recursively.
19733
19734 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
19735
19736         * iltests.il: test for conv.u8 on a constant
19737
19738 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
19739
19740         * inssel-long32.brg: c&p rules for LCONV_x4 (membase) and
19741         LCONV_x4 (shrun_32 (membase)).
19742
19743 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
19744
19745         * inssel-x86.brg: c&p rules for push/setret of long
19746
19747 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
19748
19749         * inssel-x86.brg: c&p rules for compare (base, regvar) and
19750         compare (regvar, base)
19751
19752         * inssel-x86.brg: more burg love
19753
19754         * inssel.brg: more cleanup
19755
19756         * inssel-x86.brg, inssel-long32.brg: burg cleanup.
19757
19758 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
19759
19760         * basic-long.cs, basic-calls.cs: new tests for optimization.
19761
19762 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
19763
19764         * mini-amd64.c (read_tls_offset_from_method): Fix typo in previous
19765         patch.
19766
19767 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
19768
19769         * mini-amd64.c (read_tls_offset_from_method): Add another case.
19770         
19771 2004-08-25  Bernie Solomon  <bernard@ugsolutions.com>
19772
19773         * inssel.brg (mini_emit_memcpy): use 
19774         NO_UNALIGNED_ACCESS to disable memcpy optimization
19775
19776 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
19777
19778         * mini-amd64.c: Handle generic types in various places.
19779
19780         * mini.c (mono_method_to_ir): Handle generic types in init locals.
19781
19782 2004-08-24  Zoltan Varga  <vargaz@freemail.hu>
19783
19784         * mini.c (handle_box): Fix warning.
19785
19786         * mini-amd64.c (mono_arch_local_regalloc): Fix regalloc problem.
19787
19788         * mini-amd64.h: Enable the emit_state optimization.
19789
19790         * mini-ops.h cpu-amd64.md: Add new amd64_test_null opcode.
19791
19792         * mini-amd64.c: Add some new 64 bit peephole opts.
19793
19794         * inssel.brg (mini_emit_memcpy): Optimize for 64 bit architectures.
19795
19796         * cpu-amd64.md: sreg1 of div instructions must be %rax.
19797
19798         * mini-amd64.c: Register allocator fixes.
19799
19800         * mini.c: Add an optimization to emit_state to avoid allocation of new
19801         registers on some platforms.
19802
19803 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
19804
19805         * inssel-x86.brg inssel-amd64: Add yet another missing tree->dreg assignment.
19806
19807         * mini-x86.c (mono_arch_local_regalloc): Fix bug in long register
19808         allocation. Fixes #63085.
19809
19810         * basic-long.cs: Add new regression test.
19811
19812         * mini-amd64.c: Register allocator improvements.
19813
19814 2004-08-21  Zoltan Varga  <vargaz@freemail.hu>
19815
19816         * mini-amd64.c (read_tls_offset_from_method): Add another code
19817         sequence.
19818
19819         * tramp-amd64.c (amd64_class_init_trampoline): Use a more efficient
19820         instruction sequence for nullifying class init trampolines.
19821
19822         * objects.cs: Add new regalloc test.
19823
19824         * mini-amd64.c inssel-amd64.brg: Optimize parameter passing.
19825
19826 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
19827
19828         * mini-amd64.c (mono_arch_call_opcode): Refactor this a little.
19829         
19830         * mini-amd64.c (mono_arch_regalloc_cost): Adjust regalloc costs for
19831         arguments.
19832
19833         * driver.c: Fix profiling after TLS changes.
19834         
19835         * driver.c (mono_main): Set mono_stats.enabled if needed.
19836
19837         * mini.c (handle_alloc): New helper function used by CEE_NEWOBJ and
19838         CEE_BOX.
19839
19840 2004-08-20 Ben Maurer  <bmaurer@users.sourceforge.net>
19841
19842         * mini-x86.c: use a 1 op rather than a 2 op tls access
19843         instruction -> faster.
19844
19845 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
19846
19847         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from
19848         x86 backend.
19849
19850 2004-08-19 Bernie Solomon <bernard@ugsolutions.com>
19851
19852         * exceptions-sparc.c (throw_exception): fix typo
19853
19854 2004-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
19855
19856         * mini-x86.c, cpu-pentium.md, inssel-x86.brg:
19857         set tree->dreg correctly with tls. Allow any
19858         register to be used.
19859
19860         * mini-x86.c (read_tls_offset_from_method): add new code
19861         generation pattern seen with GCC.
19862
19863
19864 Thu Aug 19 17:26:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
19865
19866         * mini-exceptions.c, exceptions-x86.c, exceptions-amd64.c,
19867         exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
19868         exceptions-sparc.c: fix some performance issues in exception
19869         handling and setting of the stack trace for exceptions that were
19870         already thrown.
19871
19872 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
19873
19874         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from 
19875         x86 backend.
19876         
19877         * mini-amd64.c (mono_arch_is_int_overflow): Handle all possible 
19878         registers.
19879
19880 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
19881
19882         This patch inlines tls access, when possible.
19883         
19884         * mini.h: new arch functions for TLS intrinsics.
19885         All platforms updated with a stub.
19886
19887         * mini.c: use the new intrinsics
19888
19889         * mini-x86.c, cpu-pentium.md, inssel-x86.brg, mini-ops.h:
19890         arch specific intrinsic for tls variables
19891
19892 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
19893
19894         * Makefile.am (libmono_la_LDFLAGS): Enable creating of libmono dll
19895         under windows.
19896
19897 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
19898
19899         * mini.c: thread local allocation
19900
19901 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
19902
19903         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Enable.
19904
19905         * Makefile.am: Link against the static version of libmonogc.
19906         
19907         * Makefile.am: Link the static versions of the convenience libraries
19908         into the mono executable.
19909
19910         * mini-x86.h mini-x86.c: Throw the correct exception on integer overflow.
19911
19912 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
19913
19914         * mini.h mini.c mini-amd64.h mini-amd64.c: Throw the correct exception
19915         on integer overflow.
19916
19917         * mini-amd64.c: Reorganize function call code.
19918
19919         * mini-amd64.c (peephole_pass): Merge changes from mini-x86.c.
19920
19921 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
19922
19923         * inssel-x86.brg: use xor eax,eax.
19924         
19925         * basic.cs: new tests
19926
19927 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
19928
19929         * mini-amd64.c (mono_arch_emit_epilog): Use RIP relative addressing
19930         in exception throwing code.
19931         
19932 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
19933
19934         * inssel-x86.brg: use xor esi,esi.
19935
19936 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
19937
19938         * driver.c (mono_main): Call mono_trace_parse_options earlier so it
19939         can trace methods compiled during mini_init () too.
19940
19941         * cpu-amd64.md mini-amd64.c (mono_arch_output_basic_block): Handle 
19942         CEE_CONV_U4.
19943
19944 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
19945
19946         * Makefile.am: static link on x86 (r=zoltan)
19947
19948 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
19949
19950         * tramp-amd64.c (amd64_magic_trampoline): Avoid patching the trampoline
19951         code since it causes some programs to fail.
19952
19953 2004-08-12  Zoltan Varga  <vargaz@freemail.hu>
19954
19955         * mini-amd64.c (bb_is_loop_start): Merge changes from mini-x86.c.
19956
19957 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
19958
19959         * mini.c: ovfops_op_map - add STACK_OBJ case for
19960         CONV_I 
19961         * basic.cs: add test_0_pin_string as test
19962         case for above.
19963
19964 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
19965
19966         * Makefile.am: build C# if srcdir != builddir
19967
19968 Tue Aug 10 19:23:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
19969
19970         * dominators.c, mini.h, mini-x86.c: fix loop alignment with
19971         fall-through blocks.
19972
19973 Tue Aug 10 16:18:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
19974
19975         * driver.c: enable loop by default again and include abcrem in -O=all.
19976
19977 2004-08-08  Zoltan Varga  <vargaz@freemail.hu>
19978
19979         * iltests.il: Add some localloc tests.
19980
19981         * mini.c (mono_method_to_ir): Set stack type of LOCALLOC correctly.
19982
19983         * inssel-amd64.brg inssel-x86.brg: Set dreg of LOCALLOC correctly. 
19984         Fixes #62574.
19985
19986         * inssel-amd64.brg: Add some optimizations.
19987
19988         * mini-amd64.c (mono_arch_setup_jit_tls_data): Add tls offset detection
19989         for gcc-3.4.
19990
19991         * Makefile.am: Statically link mono against libmono on AMD64.
19992         
19993         * mini-amd64.c inssel-amd64.brg: Optimizations.
19994
19995 2004-08-07  Zoltan Varga  <vargaz@freemail.hu>
19996
19997         * mini-amd64.c (mono_arch_emit_prolog): Optimize lmf saving a bit.
19998
19999         * tramp-amd64.c: Patch calling code in trampolines.
20000
20001 2004-08-06  Zoltan Varga  <vargaz@freemail.hu>
20002
20003         * mini-amd64.c: pinvoke struct passing fixes.
20004
20005 2004-08-05  Bernie Solomon  <bernard@ugsolutions.com>
20006
20007         * mini-sparc.c: redo change, make mono_arch_cpu_init call
20008         mono_arch_cpu_optimizazions so sparcv9 is initialized when embedded
20009
20010 2004-08-05  Duncan Mak  <duncan@ximian.com>
20011
20012         * mini.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
20013         CEE_LDELEM_ANY.
20014
20015 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
20016
20017         * mini-amd64.c (emit_move_return_value): Move return value for normal
20018         calls too.
20019
20020 2004-08-05  Martin Baulig  <martin@ximian.com>
20021
20022         * mini.c (ret_type_to_call_opcode): Don't use a `t' variable for
20023         `type->type'; just modify `type' itself when dealing with enums
20024         and generic instances.
20025         (check_call_signature): Make `simple_type' a `MonoType *'.
20026
20027 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
20028
20029         * mini.c: Use OP_PADD to add offsets to addresses.
20030
20031         * mini-amd64.h: Disable SIGSEGV_ON_ALTSTACK.
20032
20033 2004-08-04  Bernie Solomon  <bernard@ugsolutions.com>
20034
20035         * mini-sparc.c (mono_arch_emit_epilog): fix check
20036         for folding last op into restore instruction
20037
20038 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
20039
20040         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Allocate
20041         helper methods using the code manager.
20042         
20043         * exceptions-amd64.c (mono_arch_get_throw_exception): Fix maximum length.
20044
20045         * mini-amd64.c (mono_arch_allocate_vars): Fix tls offset detection.
20046
20047 Tue Aug 3 23:50:00 EST 2004 Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
20048         
20049         * mini-s390x.c mini-s390x.h tramp-s390x.c inssel-s390x.brg
20050           cpu-s390x.md exceptions-s390x.c Makefile.am: S/390 64-bit JIT
20051
20052         * mini-s390.c: fix tail processing
20053
20054 Tue Aug 3 01:35:44 PDT 2004 Paolo Molaro <lupus@ximian.com>
20055
20056         * mini-ppc.c: mul.ovf.un exception name fix.
20057
20058 2004-08-03  Martin Baulig  <martin@ximian.com>
20059
20060         * mini-x86.c (mono_arch_call_opcode): Correctly handle generic
20061         instances; before jumping to `handle_enum', also modify `ptype'.
20062
20063 2004-08-02  Bernie Solomon  <bernard@ugsolutions.com>
20064
20065         * cpu-sparc.md: fcall maximal length too small.
20066
20067 2004-08-02  Zoltan Varga  <vargaz@freemail.hu>
20068
20069         * mini-amd64.c mini.h: Add initial support for passing/returning 
20070         structures to/from pinvoked methods.
20071
20072 Mon Aug 2 11:59:35 PDT 2004 Paolo Molaro <lupus@ximian.com>
20073
20074         * mini-ppc.c: reg allocator fix.
20075
20076 2004-07-31  Zoltan Varga  <vargaz@freemail.hu>
20077
20078         * mini-amd64.c (mono_arch_output_basic_block): Fix OP_X86_PUSH_OBJ.
20079
20080         * inssel.brg: Optimize memset on 64 bit machines.
20081
20082         * mini-amd64.c: Fix some vararg cases.
20083
20084 2004-07-30  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
20085
20086         * mini-s390.c: Corrected macro in emit_float_to_int
20087
20088         * s390-abi.cs: Tests to exercise the s390 ABI
20089
20090 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
20091
20092         * exceptions-amd64.c (mono_arch_find_jit_info): Fix restoring of
20093         caller saved regs.
20094
20095         * basic.cs: Add a test for add.ovf.un.
20096
20097 2004-07-30  Bernie Solomon  <bernard@ugsolutions.com>
20098
20099         * mini-sparc.c: add case for OP_IDIV_UN
20100
20101 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
20102
20103         * mini-amd64.c mini-amd64.h mini.c: Add support for vararg pinvoke calls.
20104         
20105         * mini-amd64.c cpu-amd64.md: Ongoing JIT work.
20106
20107 2004-07-30  Ben Maurer  <bmaurer@ximian.com>
20108
20109         * basic.cs: regression tests.
20110
20111         * inssel-x86.brg: Disable cmp BYTE PTR [eax], imm, it causes various
20112         regressions.
20113
20114 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
20115
20116         * basic.cs: Add a new test.
20117
20118         * mini-amd64.c aot.c cpu-amd64.md: Add support for tracing, profiling 
20119         and AOT. Various fixes and optimizations.
20120
20121         * inssel.brg (CALL_REG): Add 64 bit versions of call_reg rules.
20122
20123 Fri Jul 30 15:49:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
20124
20125         * mini-ppc.c: make sure temp regs are not used for global reg
20126         allocation.
20127
20128 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
20129
20130         * cpu-sparc.md: conv_i8 fix for 64bits
20131
20132         * mini-sparc.c: add cases for OP_IXXX codes for 64bits
20133
20134 2004-07-29  Ben Maurer  <bmaurer@ximian.com>
20135         
20136         * cpu-pentium.md, mini-x86.c, inssel-x86.brg, mini-ops.h:
20137         add opcode for cmp BYTE PTR [eax], imm.
20138
20139         * inssel.brg: Make memcpy and memset takes bases.
20140
20141 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
20142
20143         * *-amd64.*: More AMD64 work.
20144         
20145 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
20146
20147         * cpu-pentium.md, inssel-x86.brg, mini-ops.h, mini-x86.c:
20148         add a compare-not-equal opcode.
20149         
20150 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
20151
20152         * mini.c: Use mono_init_from_assembly instead of mono_init.
20153         
20154 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
20155
20156         * mini.c: Fix opcode mapping for STACK_MP on 64 bit platforms.
20157
20158         * mini.c (CEE_NEWOBJ): Call mono_array_new_va using the correct signature.
20159
20160         * mini.c: Use MONO_ARCH_SIGACTION on AMD64 as well.
20161
20162         * inssel.brg: 64 bit fixes.
20163
20164         * mini.h (MonoCallInst): Add some AMD64 specific data.
20165
20166         * mini.h: Add some OP_P opcodes.
20167
20168 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
20169
20170         * basic.cs: tests for 61797 and 61740
20171
20172 Tue Jul 27 16:05:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
20173
20174         * mini-ppc.c, mini-sparc.c, mini-s390.c: keep track of line
20175         numbers in the debug info (spotted by Geoff Norton, <gnorton@customerdna.com>).
20176
20177 2004-07-24  Zoltan Varga  <vargaz@freemail.hu>
20178
20179         * mini-sparc.c (mono_arch_output_basic_block): Add CEE_CONV_U8/I8.
20180
20181         * *-amd64*.*: Ongoing AMD64 work.
20182
20183 2004-07-23 Zoltan Varga <vargaz@freemail.hu>
20184
20185         * inssel-long.brg: Implement CONV_I8/CONV_U8 in the backends.
20186
20187         * *-amd64*: Ongoing AMD64 work.
20188
20189         * mini-arch.h: Add AMD64 support.
20190
20191         * mini-sparc.c (mono_arch_is_inst_imm): New arch dependent function.
20192
20193         * mini.h: Add new arch dependent function mono_arch_is_inst_imm.
20194
20195         * mini-ops.h: Add new opcodes.
20196
20197         * Makefile.am: Add AMD64 support.
20198
20199         * inssel.brg inssel-long32.brg inssel-long.brg: Move mul/div and shift
20200         rules into the inssel-long*.brg files.
20201
20202         * *-amd64.*: Add beginnings of AMD64 backend.
20203
20204 2004-07-22  Ben Maurer  <bmaurer@ximian.com>
20205
20206         * mini.c (print_dfn): commenting out the code that prints
20207         the cil. With -O=deadce, this makes -v -v crash.
20208         
20209         * cpu-pentium.md: make checkthis have a length of 2
20210
20211 2004-04-21  Bernie Solomon  <bernard@ugsolutions.com>
20212
20213         * mini-sparc.h: fix implementations of __builtin
20214         functions for Sun compiler for V9.
20215
20216 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
20217
20218         * mini.c: use the new stelem.ref wrapper
20219         * exceptions.cs, arrays.cs: new stelem.ref tests
20220
20221 Wed Jul 14 19:08:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
20222
20223         * mini-ppc.c, exceptions-ppc.c: cleanups and fixes (the
20224         new XSP should work with these changes).
20225
20226 2004-07-14  Ben Maurer  <bmaurer@ximain.com>
20227         
20228         * inssel-{long32,x86,}.brg: trivial optimizations.
20229         
20230 Mon Jul 12 20:25:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
20231
20232         * mini.c: load value when emitting box operation in
20233         constrained calls.
20234
20235 2004-07-12  Ben Maurer  <bmaurer@ximian.com>
20236
20237         * mini-x86.c (OP_CHECK_THIS): cmp DWORD PTR [eax], eax
20238         is one byte shorter than cmp DWORD PTR [eax], 0.
20239
20240 Mon Jul 12 17:47:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
20241
20242         * inssel-ppc.brg: arguments on the stack are always
20243         relative to the stack pointer (spotted by Neale Ferguson).
20244
20245 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20246
20247         * exceptions-x86.c: delay appending the method name to the trace until
20248         after mono_jit_info_table_find is called, as this gets the real
20249         MonoMethod.
20250
20251 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
20252
20253         * aot.c: register roots
20254
20255 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
20256
20257         * aot.c : I could just use PLATFORM_WIN32 flag.
20258
20259 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
20260
20261         * aot.c : Reverting the previous fix. This time it broke linux build.
20262
20263 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
20264
20265         * aot.c : quick cygwin build fix. mkdir() with two args does not exist.
20266
20267 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
20268
20269         * mini.c (handle_stack_args): Remove some more debugging code.
20270         
20271         * mini.c (handle_stack_args): Remove debug output left in by mistake.
20272
20273         * driver.c mini.h aot.c: Allow additional options to be specified with
20274         --aot and pass them to mono_compile_assembly.
20275
20276         * aot.c: Add experimental code to AOT compile all loaded assemblies
20277         on demand and save the code into a cache in the filesystem.
20278
20279         * aot.c: Add support for more wrapper methods.
20280         
20281         * mini.c (handle_stack_args): Handle some corner cases. Fixes 
20282         58863.
20283
20284         * cpu-*.md: Remove removed opcodes.
20285
20286         * mini.h mini.c: Move JIT icall handling to icall.c. Replace usage of
20287         CEE_MONO_PROC<x> with CEE_MONO_ICALL. Move registration of marshalling
20288         related icalls to marshal.c.
20289
20290 2004-07-06  Zoltan Varga  <vargaz@freemail.hu>
20291
20292         * mini-ops.h: Add OP_SAVE_LMF and OP_RESTORE_LMF.
20293
20294         * Makefile.am (EXTRA_DIST): Add inssel-long[32].brg.
20295
20296         * inssel.brg: Fix warning. Add rules for SAVE_LMF and RESTORE_LMF.
20297
20298 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
20299         * liveness.c: If liveness is recomputated we need to reset the information
20300         for each variable. This way, if the liveness range has been narrowed
20301         by optimizations that happened after the last computation, we can return
20302         a smaller range.
20303         
20304         For example, if you have
20305         
20306         {
20307                 int i = 0;
20308                 
20309                 // Tons of code that does not affect i
20310                 
20311                 i = foo ();
20312                 ...
20313         }
20314         
20315         i = 0 is dead code and will be removed by SSA. However, when
20316         linear scan gets to the code, i will still appear to be live
20317         throughout the entire block. This prevents good register allocation.
20318
20319 2004-07-06  Martin Baulig  <martin@ximian.com>
20320
20321         * debug-mini.c (mono_debug_init_method): Allow
20322         MONO_WRAPPER_MANAGED_TO_NATIVE wrappers.
20323         (mono_debug_add_icall_wrapper): New method.
20324
20325         * mini.c (mono_icall_get_wrapper): Call mono_debug_add_icall_wrapper().
20326
20327 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
20328
20329         * mini.c (optimize_branches): Fix linking of bblocks in branch->branch
20330         optimization.
20331
20332 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
20333
20334         * aot.c (mono_aot_load_method): Fix loading of debug info.
20335
20336 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
20337
20338         * aot.c: Add logging support.
20339
20340 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
20341
20342         * mini.h: Add prototype for mono_print_method_from_ip.
20343
20344         * mini.c: 64 bit fixes. Use LCOMPARE for comparing longs.
20345
20346         * inssel.brg: 64 bit fixes.
20347
20348         * inssel.brg inssel-long32.brg: Move 32 bit arithmetic rules to 
20349         inssel-long32.brg.
20350
20351         * Makefile.am: Add SPARC64 support.
20352
20353 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
20354
20355         * aot.c: Fix alignment problems on 32 bit platforms.
20356
20357 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
20358
20359         * helpers.c (mono_disassemble_code): Pass -xarch=v9 to assembler on
20360         SPARC64.
20361
20362         * aot.c: Add SPARC64 support. Reorganize patch table to fix alignment
20363         problems.
20364
20365         * mini.h: Bump AOT file version. Some 64 bit fixes.
20366
20367 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
20368
20369         * inssel-sparc.brg: Add new rule to avoid register moves.
20370
20371         * inssel.brg: Add ldind_to_load_membase helper function.
20372
20373 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
20374
20375         * mini.c: OffsetToStringData intrinsic.
20376         
20377 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
20378
20379         * ssa.c: Handle OP_LCOMPARE the same as OP_COMPARE.
20380
20381         * objects.cs exceptions.cs basic.cs basic-long.cs basic-calls.cs: New
20382         regression tests.
20383
20384         * mini-ops.h cpu-sparc.md mini-sparc.h mini-sparc.c exceptions-sparc.c tramp-sparc.c inssel-long.brg: Add SPARC64 support.
20385 Mon Jun 28 18:05:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
20386
20387         * mini.c: reinstated mono_compile_get_interface_var()
20388         on x86, too, since the change breaks the Gtk# build there as well.
20389
20390 Fri Jun 25 17:36:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
20391
20392         * driver.c: remove loop from the default optimizations: it seems to
20393         interact badly with some of the other options (see bug #60613).
20394
20395 2004-06-25  Zoltan Varga  <vargaz@freemail.hu>
20396
20397         * mini.c mini-x86.h mini-x86.c: Applied patch from Guenter Feldmann 
20398         (fld@informatik.uni-bremen.de): Add Solaris x86 support.
20399
20400 Tue Jun 22 21:29:11 CEST 2004 Paolo Molaro <lupus@ximian.com>
20401
20402         * mini-ppc.c, cpu-g4.md: small updates to be able to compile
20403         vararg-using methods.
20404
20405 2004-06-21  Martin Baulig  <martin@ximian.com>
20406
20407         * mini/mini-exceptions.c
20408         (mono_handle_exception): Added `gpointer original_ip' argument.
20409         After calling mono_unhandled_exception(), call
20410         mono_debugger_unhandled_exception() and if that returns true,
20411         restore the context and return.
20412
20413 Mon Jun 21 19:26:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
20414
20415         * mini-ppc.c: prefer the use of relative branches so
20416         they won't need to be patched in aot code (patch from Patrick Beard).
20417
20418 Mon Jun 21 19:03:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
20419
20420         * aot.c: patch from Patrick Beard to make the output assembly
20421         more correct for the MacOSX assembler. Small tweak to
20422         generate sane images on Linux/PPC, too.
20423
20424 Fri Jun 18 18:24:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
20425
20426         * mini.c, mini.h, mini-ppc.c: handle varargs methods with a special
20427         case until bug #59509 is fixed (shows up in #60332).
20428
20429 Tue Jun 15 16:36:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
20430
20431         * mini.c: make sure the needed wrappers are compiled, too, with
20432         precomp.
20433
20434 Mon Jun 14 18:36:08 CEST 2004 Paolo Molaro <lupus@ximian.com>
20435
20436         * driver.c: remove NPTL reference in --version output.
20437
20438 Sun Jun 13 17:25:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
20439
20440         * aot.c: patch from Patrick Beard (pcbeard@mac.com) to
20441         generate valid assembly for the Mach-O assembler.
20442
20443 Sun Jun 13 15:59:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
20444
20445         * driver.c: don't include abcrem in the all optimization specifier
20446         since it slows down jit compilation too much for now.
20447
20448 2004-06-12 Ben Maurer  <bmaurer@users.sourceforge.net>
20449
20450         * mini.c: use BIGMUL only if both operands have the same signage.
20451         * iltests.il: Test for bug 60056. (errors related to signage in
20452         BIGMUL).
20453
20454         r=lupus.
20455
20456 Thu Jun 10 16:06:42 CEST 2004 Paolo Molaro <lupus@ximian.com>
20457
20458         * mini.c, aot.c: memory leak fixes.
20459
20460 Tue Jun 8 16:37:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
20461
20462         * inssel-long32.brg: implemented a few missing ulong cast opcodes.
20463
20464 Tue Jun 8 15:36:30 CEST 2004 Paolo Molaro <lupus@ximian.com>
20465
20466         * Makefile.am: remove the -static hack completely, it links in
20467         statically glib as well.
20468
20469 Sat Jun 5 16:32:33 CEST 2004 Paolo Molaro <lupus@ximian.com>
20470
20471         * iltests.il, mini.c: fixed bug#59580 in branch optimization.
20472         * exceptions.cs: make it compile with new mcs/csc.
20473
20474 2004-06-03 Massimiliano Mantione <massi@ximian.com>
20475         * cpu-pentium.md basic-float.cs Fixed bug on fpu spills (see bug 54467),
20476         and added relevant test case.
20477
20478 Mon May 31 19:41:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
20479
20480         * mini.c revert Zoltan's fix to bug#58863 on ppc, since it causes
20481         regressions in gtk-sharp.
20482
20483 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
20484
20485         * exceptions.cs: New regression tests.
20486
20487         * jit-icalls.c (mono_llmult_ovf): Fix some boundary conditions.
20488
20489 Sat May 29 10:45:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
20490
20491         * mini.c: emit castclass/isinst in their own trees (bug #54209/59057).
20492
20493 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
20494
20495         * mini-sparc.h (MONO_ARCH_NEED_DIV_CHECK): Define this.
20496
20497         * cpu-sparc.md mini-sparc.c: Add overflow detection to div opcodes.
20498
20499 2004-05-28      Patrik Torstensson <totte@hiddenpeaks.com>
20500
20501         * mini.c (mono_jit_runtime_invoke): Init class in this
20502         method instead of trusting mono_jit_compile_method to
20503         do the work (because wrappers can be in object class)
20504
20505 2004-05-27  Zoltan Varga  <vargaz@freemail.hu>
20506
20507         * mini-sparc.c (mono_arch_output_basic_block): Fix sub.imm.
20508
20509         * basic-long.cs: New regression test.
20510
20511 Thu May 27 15:50:52 CEST 2004 Paolo Molaro <lupus@ximian.com>
20512
20513         * cpu-g4.md, mini-ppc.c: fixes to long add/sub ovf opcodes
20514         and div/rem checks.
20515
20516 Thu May 27 12:36:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
20517
20518         * Makefile.am: fix miguel's change to build mono statically against
20519         libmono (track build dependencies).
20520
20521 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
20522
20523         * cfold.c: Some glib versions do not have G_MININT32.
20524
20525 2004-05-26  Massimiliano Mantione  <massi@ximian.com>
20526
20527         * mini-x86.c cpu-pentium.md Makefile.am basic-math.cs: Fixed problem
20528         with precision of tan, atan, sin and cos, and implemented related
20529         regressions tests (fixes bug 54467, but one new problem appeared and
20530         is not fixed yet).
20531
20532 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
20533
20534         * cfold.c (FOLD_BINOPZ): Avoid division by zero.
20535
20536         * exceptions.cs: Add test for constant folding && division by zero.
20537
20538         * driver.c mini.h mini.c mini-x86.c: Revert most of the previous patch
20539         since driver.c is in libmono too, so the optimization was useless.
20540
20541         * driver.c mini.h mini.c mini-x86.c: Moved the mono_lmf_addr TLS 
20542         variable to driver.c so the compiler can emit more efficient code to
20543         access them.
20544
20545 2004-05-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20546
20547         * Makefile.am: don't distribute generated inssel.[ch] files.
20548
20549 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
20550
20551         * mini.c (mono_jit_compile_method_with_opt): Really emit icall wrappers
20552         into the default appdomain. Fixes #58707.
20553
20554         * jit-icalls.c: Remove the broken approximation for truncl, doing
20555         no conversion is better.
20556
20557         * mini.c (handle_stack_args): Avoid reusing variables for stack slots.
20558         Fixes #58863.
20559
20560 Tue May 25 14:33:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
20561
20562         * mini-ops.h, mini-ppc.c, cpu-g4.md, inssel-ppc.brg: eliminate the use
20563         of the mcrxr instruction which is not available on some processors
20564         even if it's documented to be. Implement add and sub overflow correctly
20565         (still not complete for long unsigned). Speed up icalls a bit.
20566
20567 2004-05-25 13:01 CET Patrik Torstenson <totte@hiddenpeaks.com>
20568
20569         * mini.c (mono_jit_compile_method_with_opt): Make sure that
20570         we run .cctor in the current domain instead of target_domain.
20571         
20572         Fixes bug #58558, .cctor not being called in -O=shared.
20573
20574 Tue May 25 12:46:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
20575
20576         * mini-ppc.h, jit-icalls.c: added explicit checks for divide by zero.
20577
20578 2004-05-24 Ben Maurer  <bmaurer@users.sourceforge.net>
20579
20580         * mini-x86.c (EMIT_COND_BRANCH): If an OP_LABEL has an offset
20581         which can be done with an imm8, do it that way.
20582         (mono_arch_output_basic_block): ditto for a jmp
20583         (mono_arch_emit_prolog): Computate maximum offset of a label.
20584
20585 2004-05-24 18:18 CET Patrik Torstenson <totte@hiddenpeaks.com>
20586
20587         * mini-x86.c (mono_arch_local_regalloc): the reg allocator
20588         now tries to allocate prefered physical reg's for virtual
20589         regs. This reduces the number of emited spills/loads with
20590         20-30% on our core assemblies.
20591
20592 Mon May 24 18:21:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
20593
20594         * jit-icalls.c: truncl() is not needed and trunc() is
20595         the correct thing to do anyway (bug #58287).
20596
20597 2004-05-24  Zoltan Varga  <vargaz@freemail.hu>
20598
20599         * mini-sparc.c (mono_arch_flush_icache): Call sync_instruction_memory
20600         if available.
20601
20602 Mon May 24 12:49:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
20603
20604         * driver.c: enable loop optimizations by default.
20605
20606 Mon May 24 11:13:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
20607
20608         * mini-x86.c: fix calc of max loop size when aligning loops start.
20609
20610 2004-05-23  Zoltan Varga  <vargaz@freemail.hu>
20611
20612         * ssa.c (mono_ssa_cprop): Allocate carray dynamically instead of on
20613         the stack.
20614
20615 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
20616
20617         * mini-sparc.c (mono_arch_output_basic_block): ADD_IMM and SUB_IMM
20618         should set carry.
20619
20620         * basic-long.cs: Add tests for add/subtract of immediates with carry.
20621
20622         * mini.c exceptions-x86.c: Remove MONO_USE_EXC_TABLES stuff.
20623         
20624         * mini.c (inline_method): Allways inline some wrappers even if the cost
20625         is too large. Fixes #58785.
20626
20627         * mini.c: Add support for MARSHAL_CONV_FTN_DEL.
20628         
20629 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
20630
20631         * mini-sparc.c exceptions-sparc.c: Applied patch from Mark Crichton
20632         (crichton@gimp.org). Beginning of support for sparc/linux.
20633
20634         * mini-sparc.c: Optimize retrieval of LMF address.
20635
20636 Fri May 21 08:00:12 EDT 2004 Paolo Molaro <lupus@ximian.com>
20637
20638         * exceptions-ppc.c:  handle alloca in methods with clauses.
20639
20640 Fri May 21 07:35:30 EDT 2004 Paolo Molaro <lupus@ximian.com>
20641
20642         * mini-ppc.c: cleanups, off-by-one fixes, avoid recursive thunks.
20643
20644 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
20645
20646         * mini.c: Delegate most of the abort signal work to 
20647           mono_thread_request_interruption, which also handles Stop and Suspend
20648           states.
20649
20650 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
20651
20652         * mini.c mini.h: Allow inlining of icall wrappers if the backend 
20653         supports the save/restore lmf opcodes.
20654
20655 2004-05-19  Zoltan Varga  <vargaz@freemail.hu>
20656
20657         * mini-x86.c (mono_arch_setup_jit_tls_data): Handle code generated
20658         by gcc-3.4 as well.
20659
20660         * mini-x86.h mini-x86.c tramp-x86.c: Optimize lmf restoring code.
20661
20662 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
20663
20664         * mini.h mini.c (mini_method_compile): Only run abc removal pass on 
20665         methods which contain array accesses.
20666
20667         * mini.c (CEE_LDTOKEN): Handle this instruction correctly on bb
20668         boundaries. Fixes #58537.
20669
20670         * iltests.il: Add regression test for #58537.
20671
20672 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
20673
20674         * mini-x86.c (mono_arch_local_regalloc): Last part of
20675         fix for bug #58633 (releasing register to early).
20676
20677 2004-05-18  Miguel de Icaza  <miguel@ximian.com>
20678
20679         * basic-long.cs: Add new regression test.
20680
20681 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
20682
20683         * mini-x86.c (mono_arch_local_regalloc): Avoid releasing a
20684         register too early on the chain.
20685
20686 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
20687
20688         * mini.c (create_helper_signature): Use a helper function to reduce
20689         the code which needs to be written. Also set the calling convention of
20690         icalls on windows. Fixes #57840.
20691
20692 Tue May 18 11:05:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
20693
20694         * mini.h, exceptions-x86.c, exceptions-sparc.c, exceptions-s390.c,
20695         exceptions-ppc.c: added helper function to get the instruction address
20696         from a signal handler context.
20697
20698 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
20699
20700         * helpers.c: use g_get_tmp_dir. Invokes happyness 
20701         from gonzalo.
20702
20703 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
20704
20705         * helpers.c: Add new env variable to pass args to objdump.
20706         Specifically for those of us who love -Mintel. r=miguel, gonzalo.
20707
20708 2004-05-17  Radek Doulik  <rodo@ximian.com>
20709
20710         * Makefile.am (common_sources): added abcremoval.h so it get
20711         disted and daily mono packages on go-mono.com will build again
20712
20713 2004-05-17  Massimiliano Mantione  <massi@ximian.com>
20714
20715         * abcremoval.c: Fixed coding style, added copyright header.
20716
20717         * abcremoval.h: Fixed style and moved prototype to mini.h, added copyright header.
20718
20719         * mini.h: Added prototype for abc removal main function.
20720
20721         * build_relations_propagation_table.pl: Added copyright header.
20722
20723 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
20724
20725         * basic-long.cs: reg test for complex ceq_long bug.
20726
20727 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
20728
20729         * mini-x86.c (mono_arch_local_regalloc): Correctly free 
20730         reg in long and clob case (bug #58343). Fixed/added comments.
20731
20732 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
20733
20734         * mini.c (mono_jit_runtime_invoke): Follow new convention
20735         of calling the invoke method with an function pointer.
20736
20737 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
20738
20739         * ChangeLog: Fix author of memory leak patch.
20740
20741 Fri May 14 15:13:06 CEST 2004 Paolo Molaro <lupus@ximian.com>
20742
20743         * Makefile.am: fix make dist as well...
20744
20745
20746 2004-05-14  Massimiliano Mantione  <massi@ximian.com>
20747
20748         * cfold.c: Made so that conversions from pointer to int4 are no-ops
20749         on archs where pointers are 4 bytes long.
20750
20751         * Makefile.am: Added abcremoval.c source file.
20752
20753         * abcremoval.c: Added abcremoval.c.
20754
20755         * abcremoval.h: Added abcremoval.h.
20756
20757         * build_relations_propagation_table.pl: Added build_relations_propagation_table.pl.
20758
20759         * inssel.brg: Enabled bounds check removal.
20760
20761         * mini.c: Added support for abcrem optimization.
20762
20763         * mini.h: Added abcrem optimization label.
20764
20765         * driver.c: Added support for abcrem optimization.
20766
20767         * propagated_relations_table.def: Added propagated_relations_table.def.
20768
20769 Fri May 14 14:30:13 CEST 2004 Paolo Molaro <lupus@ximian.com>
20770
20771         * mini.c, cfold.c: fix style.
20772
20773 Fri May 14 14:28:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
20774
20775         * mini.c: handle issue with the low-level implementation of
20776         some long opcodes (bug #54209).
20777
20778 2004-05-13 Ben Maurer  <bmaurer@users.sourceforge.net>
20779
20780         * basic.cs: test for my new cmov stuff.
20781
20782 2004-05-13      Patrik Torstensson
20783
20784         * mini-x86.c: added OP_X86_COMPARE_MEMBASE_IMM peephole
20785         opt and added peephole documentation.
20786
20787 Thu May 13 11:41:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
20788
20789         * tramp-ppc.c: rewrote the generic trampoline code.
20790
20791 2004-05-11      Patrik Torstensson
20792
20793         * mini-x86.c: optimize long shl/shr asm code (one less branch)
20794
20795 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
20796
20797         * basic.cs basic-long.cs objects.cs: Make these compile under MS csc.
20798
20799         * mini.h mini.c dominators.c: Applied patch from Derek Woo
20800         (derek@eecg.toronto.edu): Fix memory leaks in loop optimizations.
20801
20802         * mini.c: Add new icalls for AsAny marshalling.
20803
20804 Tue May 11 16:00:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
20805
20806         * tramp-ppc.c, mini-ppc.c: more cleanups.
20807
20808 2004-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20809
20810         * mini.c: no warnings.
20811
20812 Tue May 11 13:59:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
20813
20814         * mini-ppc.c, mini.c: use mono_resolve_patch_target ().
20815
20816 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
20817
20818         * mini.c: In the thread abort signal handler, if the thread is in the
20819         process of being stoped, don't throw the Abort exception, just stop the
20820         thread.
20821
20822 Tue May 11 12:15:24 CEST 2004 Paolo Molaro <lupus@ximian.com>
20823
20824         * tramp-ppc.c: removed old code.
20825
20826 Tue May 11 12:02:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
20827
20828         * mini.h, mini-ppc.c, cfold.c: export mono_is_power_of_two().
20829         do some simple speed optimizations on ppc.
20830
20831 Mon May 10 17:21:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
20832
20833         * mini-ppc.c, cpu-g4.md: fixes to handle large stack frames
20834         and large offsets in load/store.
20835
20836 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
20837
20838         * mini-x86.c (mono_arch_local_regalloc): Remove the previous fix, since
20839         it causes regressions.
20840
20841 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
20842
20843         * mini-sparc.c: Fix vararg support + add beginnings of sigaltstack
20844         support.
20845
20846 Fri May 7 13:25:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
20847
20848         * jit-icalls.c: remove warnings.
20849         * inssel-x86.brg, inssel.brg, mini-x86.c, cfold.c: some simple
20850         speedups for unsafe code.
20851
20852 2004-05-07 Ben Maurer  <bmaurer@users.sourceforge.net>
20853
20854         * inssel.brg: Optimize Stind.[ui][12]. r=zoltan.
20855
20856 2004-05-06  Zoltan Varga  <vargaz@freemail.hu>
20857
20858         * basic-calls.cs: Add new regression test.
20859
20860         * mini.c (mono_runtime_install_handlers): Use SA_ONSTACK since it is
20861         more portable.
20862
20863         * mini.c (mono_method_to_ir): Handle opcode emulation for *_OVF opcodes.
20864
20865         * mini-x86.c (mono_arch_local_regalloc): Free new_dest register when it
20866         is no longer used.
20867
20868 2004-05-06      Patrik Torstensson
20869
20870         * mini-x86.[c|h], inssel-x86.brg, cpu-pentium.md, mini.c: enabled
20871         long reg allocation in any reg (not only eax:edx) and implemented 
20872         long shl/shr ops in asm instead of helpers.
20873
20874 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
20875
20876         * mini-sparc.h: Fix warnings.
20877
20878         * exceptions-sparc.c (mono_arch_find_jit_info): Pop unused lfm off the
20879         stack.
20880
20881         * mini-exceptions.c (mono_handle_exception): Call the filter in a
20882         separate statement for clarity.
20883
20884         * mini-sparc.c: Update status.
20885
20886 2004-05-04  Zoltan Varga  <vargaz@freemail.hu>
20887
20888         * mini-exceptions.c (ves_icall_get_frame_info): Flush register windows
20889         here.
20890
20891 Mon May 3 22:58:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
20892
20893         * inssel-ppc.brg: another small pre-release workaround:
20894         we don't do overflow detection for long_sub_un.
20895
20896 Sun May 2 20:12:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
20897
20898         * mini.c, mini-ops, inssel-long32.brg: speedup ulong >> 32
20899         (also works around a weird ppc bug: 57957).
20900
20901 Sat May 1 16:56:10 EDT 2004 Paolo Molaro <lupus@ximian.com>
20902
20903         * tramp-ppc.c: trampoline fixes.
20904
20905 Fri Apr 30 15:54:26 EDT 2004    Paolo Molaro <lupus@ximian.com>
20906
20907         * mini-ppc.c: fixed typos.
20908
20909 Thu Apr 29 20:15:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
20910
20911         * mini-ppc.c, exceptions-ppc.c: more code saves registers
20912         at the top of the stack. Fixed typos. Use a frame registers
20913         for all the methods with exception clauses.
20914
20915 Thu Apr 29 18:52:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
20916
20917         * exceptions-ppc.c: restore fp registers.
20918
20919 Thu Apr 29 18:26:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
20920
20921         * mini-ppc.c, exceptions-ppc.c: save the registers in reverse
20922         order from the stack top (moved the stack room to save the
20923         return value for trace after the param area). Fixed corruption
20924         in restoring registers on unwind.
20925
20926 Thu Apr 29 16:47:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
20927
20928         * mini-ppc.c, cpu-g4.md: fixed unisgned -> double conversion.
20929
20930 Thu Apr 29 13:50:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
20931
20932         * exceptions-ppc.c, mini-ppc.h, mini-ppc.c: fixed localloc
20933         and prolog/epilog for methods that use it. Allow
20934         enough param area room for varargs methods. Fix miguel's
20935         breakage in exception handling.
20936
20937 Thu Apr 29 12:06:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
20938
20939         * Makefile.am: run genmdesc only on current arch.
20940
20941 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20942
20943         * exceptions-x86.c:
20944         * mini-x86.h: fix the build on windows.
20945
20946 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
20947
20948         * 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.
20949
20950         * exceptions-sparc.c exceptions-ppc.c exceptions-s390.c mini-ppc.h mini-s390.h mini-sparc.h: Fix up ports after changes.
20951
20952         * mini-exceptions.c: New file.
20953         
20954         * mini.c mini-exceptions.c mini-x86.h exceptions-x86.c Makefile.am:
20955         Move some parts of the x86 exception handling code to an 
20956         arch-independent file so it can be shared with other ports.
20957
20958 Tue Apr 27 12:15:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
20959
20960         * trace.c, cpu-g4.md, inssel-ppc.brg, mini-ppc.c: some fixes for FP code.
20961
20962 2004-04-26  David Waite  <mass@akuma.org>
20963
20964         * driver.c: remove comma from end of enumeration declaration
20965
20966 2004-04-26  Jackson Harper  <jackson@ximian.com>
20967
20968         * driver.c: parse config file before loading first assembly. This
20969         allows the user gac to be enabled/disabled. 
20970         
20971 2004-04-23  Miguel de Icaza  <miguel@ximian.com>
20972
20973         * mini-ppc.c (ppc_patch): Replaced the branch code patching with a
20974         simpler mechanism: we do not care what is encoded initially
20975         (branch absolute or relative), we care about the code and its
20976         target.  I kept the old code for reference for now.
20977
20978         The new code tries first to determine if the jump is anywhere in
20979         the -/+32 absolute meg range, if it succeeds, it encodes using the
20980         absolute branch;  If not, it tried to find something in the
20981         relative range, if not, it uses the handle_thunk code. 
20982
20983 Fri Apr 23 14:20:40 EDT 2004 Paolo Molaro <lupus@ximian.com>
20984
20985         * exceptions-ppc.c: use the correct ip register on macosx.
20986
20987 Thu Apr 22 13:23:16 EDT 2004 Paolo Molaro <lupus@ximian.com>
20988
20989         * exceptions.c, mini.c, mini-ppc.h: adapt code to macosx.
20990
20991 Thu Apr 22 18:08:37 CEST 2004 Paolo Molaro <lupus@ximian.com>
20992
20993         * mini-ppc.c, cpu-g4.md: made the branch macros more flexible.
20994         Raise exception on integer divide by zero by hand since the hw
20995         doesn't support it. Handle NaNs in FP compares.
20996
20997 Thu Apr 22 16:10:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
20998
20999         * exceptions-ppc.c, mini-ppc.h, mini.c: simplified some
21000         code reducing duplication between the platforms and enabled
21001         signal exception handling (on linux for now).
21002
21003 Wed Apr 21 12:27:48 EDT 2004 Paolo Molaro <lupus@ximian.com>
21004
21005         * exceptions-ppc.c: more macosx support.
21006
21007 Wed Apr 21 16:38:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
21008
21009         * mini-ppc.h, mini-ppc.c, cpu-g4.md: enable bigmul optimization.
21010
21011 Wed Apr 21 16:20:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
21012
21013         * mini.h, mini-ppc.c, cpu-g4.md: support for implicit exceptions.
21014
21015 2004-04-19 Ben Maurer  <bmaurer@users.sourceforge.net>
21016
21017         * iltests.il: more tests.
21018
21019 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
21020
21021         * mini-*.c (mono_arch_get_allocatable_int_vars): Skip written-only
21022         vars as well.
21023
21024 Mon Apr 19 19:39:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
21025
21026         * mini-ppc.c: some fixes to bootstrap mcs/corlib/etc.
21027
21028 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
21029
21030         * liveness.c: Mark variables as volatile in all basic blocks reachable
21031         from exception clauses.
21032
21033 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
21034
21035         * exceptions.cs (test_0_rethow_stacktrace): Make this work with
21036         inlining.
21037
21038 2004-04-18 Ben Maurer  <bmaurer@users.sourceforge.net>
21039
21040         * iltests.il, basic.cs: more tests for regalloc.
21041
21042 2004-04-17 Ben Maurer  <bmaurer@users.sourceforge.net>
21043
21044         * iltests.il: Some tests for register allocation modifications
21045         I have locally.
21046
21047 2004-04-16  Zoltan Varga  <vargaz@freemail.hu>
21048
21049         * exceptions.cs: Add regression test for bug #56782.
21050
21051         * exceptions-*.c (mono_arch_handle_exception): Do not overwrite the
21052         original stack trace if an exception is rethrown. Fixes #56782. Oh,
21053         the beauty of fixing the same thing in 5 different files...
21054
21055 2004-04-15  Zoltan Varga  <vargaz@freemail.hu>
21056
21057         * mini.c (mono_method_to_ir): Do not compute coverage for inlined
21058         methods.
21059
21060 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
21061
21062         * mini.c: Add support for STRWLPARRAY marshalling convention.
21063
21064 Wed Apr 14 18:15:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
21065
21066         * exceptions-ppc.c: missing fixes in mono_jit_walk_stack (need
21067         to init the context to setup the regs pointer).
21068
21069 Wed Apr 14 17:59:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
21070
21071         * exceptions-ppc.c: more exceptions work.
21072
21073 Wed Apr 14 17:46:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
21074
21075         * mini.c: avoid reusing the same MonoInst on multiple trees: this is
21076         not allowed.
21077
21078 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
21079
21080         * inssel-x86.brg (reg): Add new rules for add, sub and mul that
21081         can use the memory directly.
21082
21083         * cpu-pentium.md: Update documentation from a post from Zoltan. 
21084
21085         add x86_add_membase, x86_sub_membase, x86_mul_membase
21086
21087 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
21088
21089         * mini-ppc.c: Remove unused definitions FLOAT_REGS and
21090         GENERAL_REGS they were also hardcoded for all PPC ports.
21091
21092         (add_general): Use PPC_NUM_REG_ARGS instead of GENERAL_REGS.
21093
21094         Remove hard-coded limit for floating point registers, use
21095         PPC_LAST_FPARG_REG instead in MONO_TYPE_R4 and MONO_TYPE_R8.
21096
21097         Notice that in MacOS X calling conventions you can fit a lot more
21098         floating point values in registers, so I should update the PInvoke
21099         test to excercise the passing of floating point values on the
21100         stack (currently broken).
21101         
21102 2004-04-06  Miguel de Icaza  <miguel@ximian.com>
21103
21104         * tramp-ppc.c (create_trampoline_code): Added
21105         JUMP_TRAMPOLINE_SIZE. 
21106         (ppc_magic_trampoline): Follow the pattern from
21107         x86_magic_trampoline: if code is set to zero, return. 
21108         (create_trampoline_code): Always pass MonoMethod to the jump
21109         trampoline, before it was passing a null.
21110         (mono_arch_create_jump_trampoline): Implement the jump stub, could
21111         share the code with mono_arch_create_jit_trampoline. 
21112
21113         * mini-ppc.c (mono_arch_output_basic_block): CEE_JMP opcode
21114         implemented.
21115         (mono_arch_patch_code): MONO_PATCH_INFO_METHOD_JUMP patch type
21116         implemented.  
21117
21118         * cpu-g4.md: Added length for jmp instruction, the worst case
21119         scenario is 92 bytes (4 mandatory bytes, potential 19 registers
21120         for save_lmf).
21121
21122 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
21123
21124         * aot.c (mono_compile_assembly): Add back unlink removed by mistake.
21125
21126 2004-04-07  Zoltan Varga  <vargaz@freemail.hu>
21127
21128         * mini.c: Only set bblock->real_offset when adding a new bblock, and
21129         before each IL instruction.
21130
21131         * mini.c (CEE_BOX): Fix warnings.
21132
21133 2004-04-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21134
21135         * mini.c: removed a few unused vars and extra whitespace.
21136
21137 2004-04-05 Ben Maurer  <bmaurer@users.sourceforge.net>
21138
21139         * inssel.brg (MONO_EMIT_BOUNDS_CHECK): a new macro to emit bounds
21140         checks.
21141         (MONO_EMIT_BOUNDS_CHECK_IMM): the above, but when you know the
21142         index.
21143         (OP_GETCHR): use the above
21144         (CEE_LDELEMA): use the above.
21145
21146         * inseel-x86.brg (MONO_EMIT_BOUNDS_CHECK): a faster and smaller
21147         version of the generic impl.
21148         (MONO_EMIT_BOUNDS_CHECK_IMM): the same
21149         (CEE_LDELEMA): use the above.
21150
21151 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
21152
21153         * inssel-long32.brg (CEE_CONV_OVF_I8): Sign extend the i4 value to i8.
21154         Fixes #56317.
21155
21156         * iltests.il: Added new regression test for #56317.
21157
21158 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
21159
21160         * mini-x86.c (mono_arch_setup_jit_tls_data): Use pthread_attr_get_np
21161         under NetBSD. Fixes #56450.
21162
21163         * liveness.c (update_gen_kill_set): Fix previous patch.
21164
21165 2004-04-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21166
21167         * mini-x86.h: SA_STACK defined as SA_ONSTACK. Fixed build under NetBSD.
21168
21169 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
21170
21171         * mini.c (mono_method_to_ir): Avoid handle_loaded_temps in
21172         ldsfld and ldsflda.
21173
21174         * inssel-sparc.brg: Add more optimizations.
21175
21176         * mini-sparc.c: Replace multiply/divide with shifts if possible.
21177
21178 2004-04-01  Martin Baulig  <martin@ximian.com>
21179
21180         * mini.c (handle_box): New static function; moved the
21181         implementation of CEE_BOX here.
21182         (mono_method_to_ir): Added `constrained_call' variable.
21183         (mono_method_to_ir:CEE_CONSTRAINED_): Set it.
21184         (mono_method_to_ir:CEE_CALL): If `constrained_call' is set, use
21185         mono_method_get_constrained() to get the method.
21186
21187 2004-04-01  Martin Baulig  <martin@ximian.com>
21188
21189         * mini.c (TYPE_PARAM_TO_TYPE, TYPE_PARAM_TO_CLASS): Removed.
21190         (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): Removed.
21191         (mono_method_to_ir): We don't need these macros anymore since
21192         mono_class_get_full() already takes care of it. 
21193
21194 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21195
21196         * aot.c: set aot_verbose to 0, fixed format string that caused sigsegv,
21197         use @function (as doesn't accept #function here) and check the return
21198         value of system and stop if fails.
21199
21200 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21201
21202         * mini.c: set the timeout to 2s when calling mono_domain_finalize.
21203
21204 2004-03-31  Zoltan Varga  <vargaz@freemail.hu>
21205
21206         * mini-ppc.c (mono_arch_patch_code): Fix ppc build.
21207
21208         * inssel-sparc.brg mini-sparc.c aot.c: Implement AOT support.
21209
21210         * inssel-long32.brg (OP_LNEG): Use ADC instead of ADD here. Fixes
21211         #56223.
21212
21213         * basic-long.cs: Add test for negation of Int64.MinValue.
21214
21215 2004-03-30  Zoltan Varga  <vargaz@freemail.hu>
21216
21217         * mini-sparc.c: Update status.
21218
21219         * mini-sparc.c tramp-sparc.c: Save lmf in trampolines.
21220
21221         * exceptions-sparc.c: Fix return value in filters.
21222
21223         * inssel-sparc.brg: Fix register allocation in some rules.
21224
21225 2004-03-28  Martin Baulig  <martin@ximian.com>
21226
21227         * mini.c (mmono_method_to_ir): In CEE_STELEM, do a handle_stobj()
21228         if neccessary.  
21229
21230 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
21231
21232         * mini-x86.c (mono_arch_patch_code): Fix warnings.
21233         
21234         * mini-x86.c (mono_arch_output_basic_block): Fix CEE_MUL_OVF_UN if 
21235         dreg is not EAX. Thanks to Willibard Krenn for spotting this. Also
21236         remove unused conv_u4 opcode.
21237
21238         * mini-x86.c: Remove valgrind workaround since it slows down things
21239         even when mono is not run under valgrind.
21240
21241 2004-03-26  Zoltan Varga  <vargaz@freemail.hu>
21242
21243         * mini-sparc.c: Update status.
21244
21245         * inssel-sparc.brg: Add some optimizations.
21246
21247         * inssel-sparc.brg mini-sparc.c: Rework branch instructions to allow
21248         future delay slot filling. Add support for varargs, tail calls and JMP.
21249
21250         * inssel.brg mini-ops.h mini.c: Use OP_REFANYTYPE instead of 
21251         CEE_REFANYTYPE, since CEE_REFANYTYPE needs a prefix to be unique.
21252
21253         * inssel.brg: Fix register allocation in OP_ARGLIST.
21254
21255         * inssel.brg: Fix warnings.
21256
21257 2004-03-25  Martin Baulig  <martin@ximian.com>
21258
21259         * mini.c (inflate_generic_field): Removed.
21260         (mini_get_method): Removed, use mono_get_method_full(),
21261         (mini_get_class): Removed, use mono_class_get_full().
21262         (mono_method_to_ir): Pass our generic context to
21263         mono_field_from_token().        
21264
21265 2004-03-25  Martin Baulig  <martin@ximian.com>
21266
21267         * mini.c (mini_get_class): Take a `MonoGenericContext *' instead
21268         of a `MonoMethod *'.
21269         (mini_get_method): Take a `MonoGenericContext *' instead
21270         of a `MonoMethod *'.
21271         (TYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_TYPE): mono_method_to_ir() has
21272         a new local variable called `generic_context' which holds the
21273         current `MonoGenericContext *'; use it to lookup things.
21274
21275 2004-03-24  Martin Baulig  <martin@ximian.com>
21276
21277         * mini.c (mini_get_class): New static method; if we're inside a
21278         generic instance, inflate the class if neccessary.
21279         (mono_method_to_ir): Use mini_get_class() instead of mono_class_get().
21280
21281 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
21282
21283         * iltests.il: New regression test for #55976.
21284
21285         * mini.c (mono_method_to_ir): Empty the stack in endfinally. Fixes
21286         #55976.
21287
21288 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
21289
21290         * exceptions-sparc.c (mono_sparc_handle_exception): Remove debugging
21291         output.
21292
21293 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
21294
21295         * liveness.c: Consider SSA stores as well as loads when making vars
21296         volatile.
21297
21298         * exceptions.cs: New regression tests for register allocation.
21299         
21300 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
21301
21302         * mini-ppc.c, tramp-ppc.c: Added lock for accessing the domain code manager.
21303         * mini.c: Removed domain lock from mono_jit_compile_method_with_opt. Use
21304           domain lock only to protect puntual access to data structures.
21305           Added access lock for sighash, jit_icall_hash_name, 
21306           jit_icall_hash_addr and domain->code_mp.
21307
21308 2004-03-20  Zoltan Varga  <vargaz@freemail.hu>
21309
21310         * driver.c: Print SIGSEGV handling method.
21311
21312         * mini-x86.c (mono_arch_free_jit_tls_data): Add missing ifdef.
21313
21314         * mini.c (setup_jit_tls_data): Handle case when this is called
21315         multiple times for a thread.
21316
21317         * mini-x86.c cpu-pentium.md: Fix floating point branch opcodes so fbxx 
21318         is different from fbxx_un. Fixes #54303. Also use constants instead of
21319         magic numbers in a lot of places.
21320
21321 2004-03-19  Zoltan Varga  <vargaz@freemail.hu>
21322
21323         * exceptions.cs: Fix cctor test when --regression is used.
21324
21325 Thu Mar 18 19:57:56 CET 2004 Paolo Molaro <lupus@ximian.com>
21326
21327         * mini-ppc.c, exceptions-ppc.c: basic exceptions support 
21328         for Linux/ppc.
21329
21330 Thu Mar 18 19:56:19 CET 2004 Paolo Molaro <lupus@ximian.com>
21331
21332         * inssel-ppc.brg: fixed register assignments for some rules.
21333
21334 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
21335
21336         * exceptions.cs: Add test for exceptions in static constructors.
21337
21338         * mini.c (mono_jit_compile_method_with_out): Move the calling of
21339         static constructors outside the domain lock. Fixes #55720.
21340
21341 2004-03-17  Martin Baulig  <martin@ximian.com>
21342
21343         * mini.c (get_generic_field_inst): Removed, this'll never happen.
21344         (inflate_generic_field): Take the `MonoMethod *' instead of the
21345         `MonoClass *' and added support for generic method.
21346         (mono_method_to_ir): In CEE_LDSFLD and CEE_STSFLD, assert we never
21347         have a `field->parent->gen_params', only inflate the field if it's
21348         an open constructed type.
21349
21350 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
21351
21352         * exceptions-x86.c (mono_arch_handle_exception): Allocate a new
21353         exception object instead of the preconstructed ones.
21354
21355 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21356
21357         * mini.c: reverted changed to sigsegv_signal_handler commited
21358         accidentally in the previous patch.
21359
21360 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21361
21362         * mini.c:
21363         (mono_method_to_ir): CEE_CALLVIRT, abort if no method. It hanged when
21364         running --aot with an old assembly.
21365
21366 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
21367
21368         * mini-sparc.c (mono_arch_instrument_epilog): Fix handling of floating
21369         point values.
21370
21371         * mini-sparc.c: Add support for v9 branches with prediction.
21372
21373 2004-03-15  Bernie Solomon  <bernard@ugsolutions.com>
21374
21375         * mini.c (mini_init): #warning is GNUC only
21376
21377         * mini-sparc.h: implement __builtin_frame_address
21378         and __builtin_return_address for Sun C compiler
21379
21380 2004-03-15  Zoltan Varga  <vargaz@freemail.hu>
21381
21382         * exceptions-sparc.c (mono_arch_has_unwind_info): Add missing function.
21383
21384 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
21385
21386         * basic-calls.cs: Add test for unaligned byref long argument passing.
21387
21388         * mini-ops.h: Add sparcv9 compare and branch instructions.
21389
21390         * inssel-sparc.brg mini-sparc.h mini-sparc.c cpu-sparc.md: Use some
21391         v9 instructions if we have a v9 cpu.
21392
21393         * mini-sparc.c (mono_arch_get_global_int_regs): Use unused input
21394         registers for global allocation.
21395
21396         * exceptions-sparc.c: Fixes.
21397         
21398 2004-03-11  Zoltan Varga  <vargaz@freemail.hu>
21399
21400         * liveness.c (mono_analyze_liveness): Optimized version.
21401
21402         * inssel-sparc.brg cpu-sparc.md: Ongoing sparc work.
21403
21404         * mini-sparc.h mini-sparc.c tramp-sparc.c exceptions-sparc.c: Ongoing
21405         sparc work.
21406
21407         * basic-float.cs basic-calls.cs: New regression tests.
21408
21409 2004-03-10  Zoltan Varga  <vargaz@freemail.hu>
21410
21411         * mini-x86.h: Define SIGSEGV_ON_ALTSTACK only if we have a working
21412         sigaltstack implementation.
21413
21414         * mini-x86.c (mono_arch_setup_jit_tls_data): Fix previous patch.
21415         
21416         * mini-x86.c (mono_arch_setup_jit_tls_data): Turn off the sigaltstack
21417         stuff if SIGSEGV_ON_ALTSTACK is not defined.
21418
21419 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
21420
21421         * mini.c: Fix warnings.
21422         
21423         * mini.c (mono_resolve_patch_target): New function which contains the
21424         arch independent part of the patching process.
21425
21426         * mini-x86.c (mono_arch_patch_code): Move arch independent parts of the
21427         patching code to a separate function.
21428
21429 2004-03-09  Bernie Solomon  <bernard@ugsolutions.com>
21430
21431         * mini.c (add_signal_handler): ifdef out on Windows
21432
21433 2004-03-08  Zoltan Varga  <vargaz@freemail.hu>
21434
21435         * mini-sparc.h mini-sparc.c inssel-sparc.brg exceptions-sparc.c 
21436         cpu-sparc.md: Add exception handling support + other fixes.
21437
21438         * driver.c: Print --help output to stdout. Fixes #55261. Also fix
21439         typed GC detection in --version.
21440
21441         * basic.cs exceptions.cs: New regression tests.
21442
21443         * mini.h mini-x86.h mini-ppc.h: Add MonoCompileArch structure where
21444         the arch specific code can store data during a compilation.
21445
21446         * mini-ops.h: Add OP_SETFRET.
21447
21448         * mini.c (mini_get_ldelema_ins): Instead of allways calling the same
21449         function, register a separate icall for each arity, so the icalls can
21450         get a wrapper.
21451         
21452         * mini.c (mono_print_tree): Print negative offsets in a more readable
21453         form.
21454         
21455         * mini.c: Make signal handling work on sparc.
21456         
21457         * mini.c (mini_init): Add emulation for lconv_to_r8_un.
21458
21459         * inssel-long32.brg: Fix OP_LSUB_OVF_UN rule.
21460
21461         * jit-icalls.c: Emulate truncl by aintl on solaris.
21462
21463         * jit-icalls.c (mono_lconv_to_r8_un): New icall emulation function.
21464
21465 2004-03-05  Zoltan Varga  <vargaz@freemail.hu>
21466
21467         * mini.c (mini_init): fconv_to_ovf can raise exceptions.
21468
21469 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
21470
21471         * mini.c: In CEE_ISINST and CEE_CASTCLASS, if the type is an interface or
21472         a MarshalByRef type, inline a method that performs the check, taking into
21473         account that the object can be a proxy. Also implemented tow new opcodes:
21474         CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
21475         * inssel.brg: Implemented two new opcodes, mini-ops.h: OP_CISINST and 
21476         OP_CCASTCLASS, which implement CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
21477
21478 Tue Mar 2 17:23:48 CET 2004 Paolo Molaro <lupus@ximian.com>
21479
21480         * mini-ppc.c: if a relative branch displacement is too big
21481         but it points to and area reachable with an absolute branch, 
21482         avoid the thunks.
21483
21484 Tue Mar 2 16:59:40 CET 2004 Paolo Molaro <lupus@ximian.com>
21485
21486         * mini.c: optimize small copies in cpblk.
21487
21488 2004-03-01  Zoltan Varga  <vargaz@freemail.hu>
21489
21490         * basic-calls.cs basic-float.cs: New regression tests.
21491
21492         * mini-sparc.c inssel-sparc.brg mini-ops.h: Access local variables at 
21493         negative offsets from %fp. Implement localloc. Fix local register 
21494         allocation. Fix the case when the this argument needs to be saved to
21495         the stack. Implement some missing opcodes.
21496
21497 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
21498
21499         * mini.c (mini_method_compile): Reenable global regalloc in methods
21500         with exception handlers.
21501
21502         * linear-scan.c (mono_varlist_sort): Fix warning.
21503
21504         * linear-scan.c (mono_linear_scan): Fix computation of used_regs.
21505
21506         * mini-x86.c (mono_arch_regalloc_cost): Reenable precise computation of
21507         regalloc costs.
21508
21509         * liveness.c: Make all variables uses in exception clauses volatile, to
21510         prevent them from being allocated to registers. Fixes #42136.
21511
21512 2004-02-25  Zoltan Varga  <vargaz@freemail.hu>
21513
21514         * mini-x86.c (mono_arch_regalloc_cost): Revert this change since it
21515         causes regressions.
21516
21517         * mini.h linear-scan.c mini-x86.c mini-sparc.c mini-ppc.c: Add 'cfg'
21518         argument to mono_arch_regalloc_cost.
21519
21520         * mini-x86.c (mono_arch_regalloc_cost): Compute regalloc costs 
21521         precisely.
21522
21523 2004-02-24  Zoltan Varga  <vargaz@freemail.hu>
21524
21525         * mini.h mini-x86.c mini-ppc.c mini-sparc.c linear-scan.c: 
21526         Make the cost of allocating a variable to a register arch dependent.
21527
21528         * basic-calls.cs: Fix compilation of tests.
21529         
21530         * mini.h mini.c tramp-x86.c mini-x86.c: Add mono_running_on_valgrind ()
21531         helper function to cut back on the number of #ifdefs needed.
21532
21533         * mini-ppc.c: Fix compilation.
21534
21535         * basic-calls.cs: New regression tests.
21536
21537         * mini-sparc.c (mono_sparc_is_virtual_call): New helper function.
21538
21539         * tramp-sparc.c (create_specific_trampoline): Use g5 register instead
21540         of l0 since that is callee saved.
21541
21542         * tramp-sparc.c (sparc_magic_trampoline): Apply unbox trampoline only
21543         to virtual calls.
21544
21545         * mini-sparc.c: Ongoing work + flag virtual calls with a special kind 
21546         of delay instruction.
21547
21548         * inssel.brg (OP_CHECK_THIS): Set tree->sreg1 and dreg correctly.
21549
21550         * mini.h (MonoCallInst): Add 'virtual' flag.
21551
21552         * inssel.brg (mini_emit_virtual_call): Set 'virtual' flag.
21553
21554 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
21555
21556         * *.cs: New regression tests.
21557
21558         * mini-sparc.c inssel-sparc.brg: Update after latest changes. Ongoing sparc 
21559         work.
21560
21561         * mini.c (mono_runtime_install_handlers): Fix build.
21562
21563         * mini.h (MonoJitTlsData): Add 'stack_size', 'signal_stack' and
21564         'signal_stack_size' members.
21565
21566         * mini.h mini.c mini-x86.h mini-x86.c: Run sigsegv handlers on an 
21567         alternate signal stack.
21568
21569         * exceptions-x86.c: Add stack overflow handling.
21570
21571         * mini.h mini.c mini-x86.c mini-ppc.c trace.h trace.c: Move tracing 
21572         functions to arch independent code.
21573
21574         * mini.c (mono_print_tree): Print more detailed info for load_membase
21575         opcodes.
21576         
21577 2004-02-23  Martin Baulig  <martin@ximian.com>
21578
21579         * mini.c (mini_get_method): Set `gmethod->generic_inst'.
21580
21581 Sun Feb 22 22:25:19 CET 2004 Paolo Molaro <lupus@ximian.com>
21582
21583         * mini-x86.c: fixed reg allocation for div/rem.
21584
21585 2004-02-22  Miguel de Icaza  <miguel@ximian.com>
21586
21587         * driver.c (mono_main): Report some configuratio options on --version.
21588
21589 Fri Feb 20 11:01:44 PST 2004 Paolo Molaro <lupus@ximian.com>
21590
21591         * mini-ppc.c: fixed clt.un, cgt.un. Optimized calls to functions
21592         low in the address space. Correctly flush memory in thunks where we
21593         output native code.
21594
21595 2004-02-20  Martin Baulig  <martin@ximian.com>
21596
21597         * mini.c (mini_get_method): New static method; inflate all generic
21598         methods and methods in open generic instances.
21599         (mono_method_to_ir): Use mini_get_method() instead of mono_get_method().
21600         (ret_type_to_call_opcode): Added support for MONO_TYPE_GENERICINST.
21601
21602 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
21603
21604         * mini-sparc.c (mono_arch_patch_code): Update after domain->code_mp changes.
21605
21606         * tramp-sparc.c (mono_arch_create_jump_trampoline): Set ji->method.
21607
21608 2004-02-19  Bernie Solomon  <bernard@ugsolutions.com>
21609
21610         * helpers.c (mono_disassemble_code): use Sun's dis if not using gcc
21611
21612         * mini-sparc.c (flushi mono_arch_output_basic_block): make
21613         it compile using Sun's compiler.
21614
21615 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
21616
21617         * 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.
21618
21619         * basic-calls.cs basic-float.cs basic-long.cs objects.cs: New regression tests.
21620
21621 Tue Feb 17 21:41:20 CET 2004 Paolo Molaro <lupus@ximian.com>
21622
21623         * aot.c, mini-x86.c, mini.c: use the code manager instead of a mempool to hold native
21624         code.
21625         * mini-ppc.c: handle calls outside of the allowed range with thunks
21626         allocated using the code manager.
21627         * tramp-ppc.c: use the code manager to hold generated native code.
21628         Fixed the magic trampoline to just patch vtable entries.
21629
21630 2004-02-17  Zoltan Varga  <vargaz@freemail.hu>
21631
21632         * inssel.brg inssel-x86.brg: Move call(immediate) rules to the platform
21633         independent file.
21634
21635 2004-02-16  Zoltan Varga  <vargaz@freemail.hu>
21636
21637         * tramp-ppc.c (mono_arch_create_jump_trampoline): Fix compilation on
21638         PPC.
21639
21640         * mini-x86.c: Call mono_arch_get_lmf_addr instead of mono_get_lmf_addr
21641         if we have a working __thread implementation.
21642
21643         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Remove 
21644         OP_CALL_IMM opcodes, since the CALL opcodes handles immediates as well.
21645
21646 2004-02-15  Zoltan Varga  <vargaz@freemail.hu>
21647
21648         * mini-x86.c: Fix compilation under gcc 2.
21649         
21650 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
21651
21652         * mini.c (mono_codegen): Avoid infinite loop when an icall wrapper
21653         contains a call to the wrapped function.
21654
21655         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Add 
21656         OP_<CALL>_IMM opcodes, and use them under X86.
21657         
21658         * mini.c (mono_jit_find_compiled_method): Fix warning.
21659
21660         * cpu-pentium.md: Fix length of opcodes which use x86_alu_membase_imm.
21661
21662         * jit-icalls.c (mono_ldftn_nosync): New JIT icall.
21663
21664         * tramp-x86.c (mono_arch_create_jump_trampoline): Move arch independent
21665         functionality to mini.c.
21666
21667         * mini.c (mono_create_jump_trampoline): New function to create a jump
21668         trampoline. Return a compiled method instead of a trampoline if it
21669         exists. Add a cache for jump trampolines.
21670
21671         * mini.c (mono_jit_find_compiled_method): New function to return a
21672         compiled method if it exists.
21673
21674         * mini-x86.c: Call mono_create_jump_trampoline instead of 
21675         mono_arch_create_jit_trampoline.
21676
21677         * jit-icalls.c (mono_ldftn): Do not compile the method. Instead, return
21678         a jump trampoline. Fixes #52092.
21679         
21680 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
21681
21682         * debug-mini.c (mono_init_debugger): Remove call to mono_verify_corlib,
21683         which is not up-to-date. Add check_corlib_version () instead.
21684
21685         * mini.c (mini_init): Call mono_thread_attach () so embedders do not 
21686         have to call it.
21687         
21688         * mini.c (mono_runtime_install_handlers): Remove check for valgrind
21689         since newer valgrind versions do not need it.
21690
21691         * mini.c (mono_jit_compile_method_with_opt): New helper function to
21692         compile a method with a given set of optimizations.
21693
21694         * mini.c: Compile icall wrappers on-demand instead of at startup.
21695
21696         * mini-sparc.c mini-ppc.c: Call mono_icall_get_wrapper to obtain the
21697         wrapper for an icall.
21698
21699 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
21700
21701         * mini.c (mono_method_to_ir): Handle switch with non-empty stack. Fixes
21702         #54063.
21703
21704         * iltests.il: Add test for non-empty stack before switch instruction.
21705
21706 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
21707
21708         * mini.c: Add support for new stringbuilder marshalling conventions.
21709
21710         * mini.c (mono_method_to_ir): Fix stack management of generic CEE_BOX.
21711
21712 2004-02-01  Martin Baulig  <martin@ximian.com>
21713
21714         * mini.c (MTYPE_PARAM_TO_TYPE): Method type arguments are stored
21715         in `ginst->mtype_argv'.
21716
21717 2004-01-31  Miguel de Icaza  <miguel@ximian.com>
21718
21719         * mini.c: Add comments, replace CEE_XXX+128 with OP_XXX to
21720         facilitate grepping.
21721
21722 Wed Jan 28 14:04:58 CET 2004 Paolo Molaro <lupus@ximian.com>
21723
21724         * mini.c: fixed buglet in initobj generic implementation for references.
21725
21726 Fri Jan 23 16:10:44 EST 2004 Paolo Molaro <lupus@ximian.com>
21727
21728         * Makefile.am: make the version script conditional.
21729         * jit-icalls.c: handle missing truncl().
21730
21731 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
21732
21733         * exceptions.cs: Add more tests for double->int conversion.
21734
21735         * jit-icalls.c (mono_fconv_ovf_i8): Call truncl before comparison, so
21736         we don't throw exceptions when converting 1.1 to a long. Fixes #53250.
21737
21738 Fri Jan 23 17:12:08 CET 2004 Paolo Molaro <lupus@ximian.com>
21739
21740         * driver.c: make --verbose --version emit an error
21741         if the loaded corlib doesn't match the runtime version.
21742
21743 Mon Jan 19 17:44:50 CET 2004 Paolo Molaro <lupus@ximian.com>
21744
21745         * mini-ppc.h: export ppc_patch().
21746         * mini-ppc.c: call convention fixes. Added assert in ppc_patch().
21747         * tramp-ppc.c: call convention fixes: Linux/PPC support should be
21748         on par or better than on MacOSX.
21749
21750 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
21751
21752         * mini.c tramp-x86.c tramp-sparc.c: Updated after changes to
21753         mono_lookup_pinvoke_call.
21754
21755         * mini-x86.c: Under windows, the default pinvoke calling convention is
21756         stdcall. Fixes #52834.
21757
21758         * mini.c (optimize_branches): Add an upper bound to the number of
21759         iterations to prevent infinite loops on strange loops. Fixes #53003.
21760
21761 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
21762
21763         * inssel.brg: Add vectors<->one dimensional array checking to CASTCLASS
21764         and ISINST. Fixes #52093.
21765
21766         * objects.cs (test_0_vector_array_cast): New tests.
21767         
21768 2004-01-15  Zoltan Varga  <vargaz@freemail.hu>
21769
21770         * jit-icalls.c (helper_stelem_ref_check): New jit icall for array type
21771         checking in Array.Set ().
21772
21773         * mini.c (method_to_ir): Add array type checking in Array.Set (). Fixes
21774         #52590.
21775
21776         * object.cs (test_0_multi_array_cast): New regression test.
21777
21778 Thu Jan 15 16:30:24 CET 2004 Paolo Molaro <lupus@ximian.com>
21779
21780         * exceptions-ppc.c: fix build on Linux/PPC.
21781
21782 2004-01-14  Zoltan Varga  <vargaz@freemail.hu>
21783
21784         * tramp-x86.c (x86_magic_trampoline): Disable code patching when
21785         running under valgrind.
21786         (x86_magic_trampoline): Fix build bustage.
21787
21788         * debug-mini.c: Modify the debug info serialize/deserialize code so it handles
21789         negative values as well. This is needed for the encoding of the line number
21790         info, since sometimes the line numbers are not in increasing order.
21791
21792 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
21793
21794         * cpu-pentium.md (localloc): Increase the size of the localloc 
21795         instruction since it is a loop under Win32.
21796
21797         * debug-mini.c (record_line_number): Get rid of unneccesary memory
21798         allocation.
21799
21800 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
21801
21802         * exceptions-ppc.c exceptions-x86.c exceptions-sparc.c 
21803         tramp-x86.c tramp-ppc.c tramp-sparc.c: Applied patch from 
21804         Max Horn (max@quendi.de). Fix file names in comments.
21805
21806 2004-01-03  Zoltan Varga  <vargaz@freemail.hu>
21807
21808         * ssa.c (mono_ssa_rename_vars): Allocate new_stack on the heap to
21809         avoid stack overflow.
21810         (replace_usage): Avoid uninitialized variable warnings.
21811
21812         * mini.c (mono_method_to_ir): Avoid disabling SSA for array operations
21813         and taking the address of valuetype variables.
21814
21815 2004-01-03  Patrik Torstensson
21816
21817         * mini-x86.c: renamed fpflags to flags in RegTrack, going to be used
21818         for other purposes than FP later on.
21819
21820 2004-01-02  Zoltan Varga  <vargaz@freemail.hu>
21821
21822         * mini.c (mono_method_to_ir): Prevent register allocation for arguments
21823         of tail calls.
21824
21825 Fri Jan 2 13:37:25 CET 2004 Paolo Molaro <lupus@ximian.com>
21826
21827         * mini-ops.h, mini.c, inssel.brg: Object.GetType () speedup.
21828
21829 2003-12-30  Patrik Torstensson <p@rxc.se>
21830
21831         * mini-x86.h: Decreased number of availiable fp regs.
21832         Solves corner cases with FP spilling.
21833
21834 2003-12-23  Patrik Torstensson <p@rxc.se>
21835
21836         * mini-x86.c, mini-ops.h, cpu-pentium.md: Added support
21837         for floating point stack tracking / spilling on x86. 
21838         Fixes bug #49012.
21839         
21840         * basic-float.cs: added float mul overflow test.
21841
21842 2003-12-23  Zoltan Varga  <vargaz@freemail.hu>
21843
21844         * mini.c (mono_method_to_ir): Add workaround for bug #51126.
21845
21846 Sun Dec 21 19:53:16 CET 2003 Paolo Molaro <lupus@ximian.com>
21847
21848         * mini.h, mini-ppc.c, mini-ppc.h: small cleanups and
21849         supports for cond branches that overflow the immediate
21850         overflow offset. mcs can compile simple programs.
21851
21852 Fri Dec 19 21:17:16 CET 2003 Paolo Molaro <lupus@ximian.com>
21853
21854         * exceptions-ppc.c: exception handling support wip:
21855         finally handlers get run on exception.
21856
21857 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
21858
21859         * aot.c (mono_aot_get_method_inner): Avoid loading AOT code while 
21860         profiling.
21861
21862 Fri Dec 19 17:58:28 CET 2003 Paolo Molaro <lupus@ximian.com>
21863
21864         * cpu-g4.md, mini-ppc.c, exceptions-ppc.c, mini-ppc.h:
21865         initial support for stack walking and unwinding.
21866
21867 2003-12-18  Zoltan Varga  <vargaz@freemail.hu>
21868
21869         * driver.c (mono_main): Make corlib-out-of-sync message more 
21870         descriptive. Also remove verify_corlib call.
21871
21872 Wed Dec 17 15:31:41 CET 2003 Paolo Molaro <lupus@ximian.com>
21873
21874         * mini.c: make CEE_NEWARR calls and other emulated opcodes 
21875         not overlap with other call's arguments, too.
21876
21877 Wed Dec 17 12:49:23 CET 2003 Paolo Molaro <lupus@ximian.com>
21878
21879         * mini.h, mini.c, mini-ppc.c, mini-sparc.c, mini-x86.c: 
21880         move to arch-specific code the choice of arch-specific
21881         intrinsics (from Laurent Morichetti (l_m@pacbell.net)).
21882         * mini.c: ensure emulation calls will not interleave
21883         with other calls.
21884
21885 Wed Dec 17 12:27:26 CET 2003 Paolo Molaro <lupus@ximian.com>
21886
21887         * tramp-ppc.c, basic-calls.cs: rework trampolines so that
21888         the magic trampoline stack frame is dropped before executing
21889         the new method.
21890
21891 Mon Dec 15 18:13:57 CET 2003 Paolo Molaro <lupus@ximian.com>
21892
21893         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed some opcode lengths
21894         and integer to fp conversions. Added support for overflowing
21895         arguments on the stack. Reserve a couple more registers as temps.
21896         Added support for aot compilation (as output still needs to be
21897         tweaked, though).
21898
21899 Sat Dec 13 17:49:10 CET 2003 Paolo Molaro <lupus@ximian.com>
21900
21901         * mini-ppc.c, basic-long.cs: fix jumps to known labels.
21902         Don't overwrite return register in some corner cases.
21903
21904 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
21905
21906         * mini.h mini.c driver.c mini-x86.c mini-ppc.c aot.c: Do not run
21907         static constructors when AOT compiling.
21908
21909         * driver.c (mono_main): Call mono_check_corlib_version.
21910
21911 Sat Dec 13 10:31:12 CET 2003 Paolo Molaro <lupus@ximian.com>
21912
21913         * cpu-g4.md, basic.cs: fixed div target register.
21914
21915 Sat Dec 13 09:45:56 CET 2003 Paolo Molaro <lupus@ximian.com>
21916
21917         * mini-ppc.c, basic.cs: shl_imm fix with test.
21918
21919 Fri Dec 12 21:25:14 CET 2003 Paolo Molaro <lupus@ximian.com>
21920
21921         * inssel-ppc.brg, mini-ppc.h, mini-ppc.c: support for passing 
21922         structures by value. Misc fixes.
21923         * objects.cs: more tests.
21924
21925 Fri Dec 12 10:11:49 CET 2003 Paolo Molaro <lupus@ximian.com>
21926
21927         * mini-ppc.c: lconv.ovf.i implemented.
21928
21929 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21930
21931         * mini.c:
21932         (mini_init): don't error out if someone already called g_thread_init.
21933
21934 Tue Dec 9 17:27:14 CET 2003 Paolo Molaro <lupus@ximian.com>
21935
21936         * exceptions-x86.c, exceptions-ppc.c: allow the exception object
21937         to be any type per the spec. Fix abnormal memory usage when
21938         the same object is repeatedly thrown.
21939
21940 Tue Dec 9 15:39:54 CET 2003 Paolo Molaro <lupus@ximian.com>
21941
21942         * mini.c: check for overruns in IL code.
21943
21944 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
21945
21946         * TODO: Add/remove some todo entries.
21947
21948 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
21949
21950         * driver.c (mono_main): Call mono_verify_corlib.
21951
21952 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
21953
21954         * inssel.brg: In CEE_ISINST and CEE_CASTCLASS, removed check for proxy. 
21955         This has been moved to mini.c
21956         * mini.c: in mono_method_to_ir, CEE_ISINST and CEE_CASTCLASS cases, if the
21957         type being casted is marshalbyref it could be a proxy, so instead of
21958         emitting the type check code, emit a call to a runtime method that will
21959         perform the check by calling CanCastTo if needed.
21960
21961 2003-12-06  Zoltan Varga  <vargaz@freemail.hu>
21962
21963         * mini-x86.c (mono_arch_emit_prolog): Fix stack space allocation for
21964         methods with large stack frames under Win32.
21965
21966 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
21967
21968         * Makefile.am: Distribute regression tests.
21969
21970         * mini-x86.c (mono_arch_get_allocatable_int_vars): Sort the var list
21971         at the end instead of inserting each variable into the sorted list.
21972
21973         * linear-scan.c (mono_varlist_sort): New helper function.
21974         
21975 Wed Dec 3 20:46:28 CET 2003 Paolo Molaro <lupus@ximian.com>
21976
21977         * mini.c: ensure arguments and locals are within bounds.
21978
21979 Wed Dec 3 17:59:10 CET 2003 Paolo Molaro <lupus@ximian.com>
21980
21981         * mini-ppc.c, cpu-g4.md, basic.cs, basic-long.cs: more tests and 
21982         related fixes.
21983
21984 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
21985
21986         * mini.c (mono_cprop_copy_values): Fix crash.
21987
21988         * aot.c: Set verbosity back to 0.
21989         
21990 Wed Dec 3 15:42:27 CET 2003 Paolo Molaro <lupus@ximian.com>
21991
21992         * regalloc.c: complete memory leak fix by Laurent Morichetti
21993         (l_m@pacbell.net).
21994
21995 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
21996
21997         * driver.c (main_thread_handler): Revert the previous patch.
21998
21999         * tramp-x86.c (x86_class_init_trampoline): Avoid patching when running
22000         under valgrind.
22001
22002         * mini-x86.c (mono_arch_local_regalloc): Do not allocate transient
22003         memory from the memory pool.
22004
22005         * driver.c (main_thread_handler): Turn on all optimizations when
22006         --aot is used.
22007
22008         * mini.c (mono_find_jit_opcode_emulation): Turn emul_opcode_hash into
22009         an array for better performance.
22010
22011         * regalloc.c (mono_regstate_assign): Fix memory leak.
22012
22013         * debug-mini.c (mono_debug_serialize_debug_info): New function to
22014         serialize the debug info.
22015
22016         * debug-mini.c (mono_debug_add_aot_method): New function to load the
22017         debug info from the serialized representation.
22018
22019         * aot.c: Save debug info into the generated file and load it when 
22020         loading a method.
22021
22022         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
22023
22024 Mon Dec 1 16:54:05 CET 2003 Paolo Molaro <lupus@ximian.com>
22025
22026         * mini-ppc.c, tramp-ppc.c: save FP arguments in the trampoline.
22027         More FP-related fixes.
22028
22029 Sun Nov 30 19:13:52 CET 2003 Paolo Molaro <lupus@ximian.com>
22030
22031         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed finally handlers
22032         and register allocation buglet. Hello world now runs.
22033
22034 Fri Nov 28 23:03:05 CET 2003 Paolo Molaro <lupus@ximian.com>
22035
22036         * cpu-g4.md, inssel-ppc.brg, mini-ppc.c: better long return support.
22037         * tramp-ppc.c: fixed class init trampoline.
22038         * inssel-ppc.brg, mini.c, jit-icalls.c, mini-ppc.h: more emulation.
22039
22040 Fri Nov 28 16:36:29 CET 2003 Paolo Molaro <lupus@ximian.com>
22041
22042         * cpu-g4.md, inssel-ppc.brg, jit-icalls.c, mini-ppc.c, mini-ppc.h,
22043         mini.c: more ppc changes/fixes.
22044
22045 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
22046
22047         * mini.c (mono_method_to_ir): Fix tail calls with valuetype arguments.
22048         Also optimize the case when the arguments are the same in the caller 
22049         and in the callee.
22050
22051         * iltests.il: Add tests for tail calls with valuetype arguments.
22052
22053 Thu Nov 27 21:06:37 CET 2003 Paolo Molaro <lupus@ximian.com>
22054
22055         * mini-ppc.c: fixes for struct return type.
22056
22057 Thu Nov 27 19:02:07 CET 2003 Paolo Molaro <lupus@ximian.com>
22058
22059         * mini.h, mini.c, mini-x86.c, mini-ppc.c, mini-sparc.c: move 
22060         mono_spillvar_offset() to arch-specific code.
22061
22062 Thu Nov 27 18:30:42 CET 2003 Paolo Molaro <lupus@ximian.com>
22063
22064         * mini-ppc.h, mini-ppc.c: handle some different ABI call convention issues.
22065
22066 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
22067
22068         * exceptions-x86.c: Fix stack space leaks.
22069         
22070         * exceptions-x86.c (mono_arch_find_jit_info): Restore callee saved
22071         registers from the lmf if the method has save_lmf set.
22072
22073 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
22074
22075         * tramp-x86.c (x86_magic_trampoline): Avoid patching in the addresses
22076         of icall wrappers into InvokeInDomain, since these are now per-domain.
22077
22078 Wed Nov 26 20:15:04 CET 2003 Paolo Molaro <lupus@ximian.com>
22079
22080         * mini-ppc.h, mini-x86.h, mini.c, inssel-ppc.brg, jit-icalls.c:
22081         make some opcode emulation and intrinsic ops enabled/disabled 
22082         according to the architecture. More fixes.
22083
22084 Wed Nov 26 19:59:09 CET 2003 Paolo Molaro <lupus@ximian.com>
22085
22086         * mini-ppc.c, mini-sparc.c, cpu-g4.md: more bug fixes.
22087
22088 Wed Nov 26 19:18:29 CET 2003 Paolo Molaro <lupus@ximian.com>
22089
22090         * mini.h, inssel.brg, mini-x86.c, mini-ppc.c, mini-sparc.c: move
22091         arch-specific handling for 'this' and struct return type to
22092         arch-specific code.
22093
22094 2003-11-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22095
22096         * aot.c: prevent divide by zero error when reporting (it happened with
22097         Accessibility.dll).
22098
22099 2003-11-25  Zoltan Varga  <vargaz@freemail.hu>
22100
22101         * mini.h (inst_switch): Remove unused macro.
22102
22103 2003-11-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22104
22105         * aot.c:
22106         (load_aot_module): free 'info->methods' and 'info' properly. No more
22107         "free(): invalid pointer blah" messages when you have an old aot
22108         compiled assembly.
22109
22110 2003-11-21  Lluis Sanchez Gual <lluis@ximian.com>
22111
22112         * jit-icalls.c, mini.c: Added support for context static fields.
22113
22114 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
22115
22116         * mini.c (mono_method_blittable): Methods which set LastError are not 
22117         blittable either. Fixes #51108.
22118         
22119 Tue Nov 18 16:41:37 CET 2003 Paolo Molaro <lupus@ximian.com>
22120
22121         * mini.c: flush icache.
22122         * cpu-g4.md, mini-ppc.c, inssel.brg: more fixes. Trace support.
22123
22124 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
22125
22126         * mini.c (mono_type_blittable): OBJECT is not blittable. Fixes #47842.
22127
22128 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
22129
22130         * tramp-x86.c (x86_class_init_trampoline): Make code patching thread
22131         safe on IA32.
22132
22133         * mini-x86.c (mono_arch_call_opcode): Disable AOT for methods with 
22134         vararg calls.
22135
22136         * inssel.brg (CEE_MKREFANY): Fix AOT case.
22137
22138 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
22139
22140         * mini-x86.c (mono_arch_local_regalloc): Fix regalloc for div 
22141         instruction when the result is discarded.
22142
22143         * iltests.il (test_0_div_regalloc): New regression test.
22144
22145         * arrays.cs: Fix compilation error.
22146
22147 Fri Nov 14 21:34:06 CET 2003 Paolo Molaro <lupus@ximian.com>
22148
22149         * inssel-x86.brg, inssel-float.brg, mini-ops.h: move x86-specific
22150         float rules to inssel-x86.brg: sane architectures with FP registers
22151         don't need to implement these rules.
22152
22153 Fri Nov 14 20:52:12 CET 2003 Paolo Molaro <lupus@ximian.com>
22154
22155         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: updates and fixes to the ppc port.
22156
22157 Fri Nov 14 17:58:27 CET 2003 Paolo Molaro <lupus@ximian.com>
22158
22159         * mini.h, inssel-long32.brg: fixed endianess issues in int64
22160         implementation of 32 bit systems.
22161
22162 Thu Nov 13 16:14:41 CET 2003 Paolo Molaro <lupus@ximian.com>
22163
22164         * exceptions-ppc.c: fix build on Linux/ppc from Jeroen@xs4all.nl
22165         (Jeroen Zwartepoorte).
22166
22167 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
22168
22169         * mini.c (mono_method_to_ir): Use CEE_JMP only if the signature of
22170         the caller and the callee matches.
22171         
22172         * mini.c (mono_method_to_ir): Add comment.
22173
22174         * mini-x86.c (mono_arch_output_basic_block): Use mono_signbit, since
22175         signbit is missing on some platforms.
22176
22177 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
22178
22179         * mini.h (mono_arch_setup_jit_tls_data): New arch specific function.
22180
22181         * mini.c (setup_jit_tls_data): Call the new function.
22182         
22183         * mini-x86.c mini-ppc.c mini-sparc.c: Define the new function.
22184
22185         * mini-x86.c: Add experimental support for fast access to the lmf
22186         structure under NPTL/Linux 2.6.x.
22187
22188 2003-11-06  Martin Baulig  <martin@ximian.com>
22189
22190         * ldscript: Make `GC_push_all_stack', `GC_start_blocking',
22191         `GC_end_blocking' and 'gc_thread_vtable' public; they're used by
22192         the debugger.
22193
22194 2003-11-02  Martin Baulig  <martin@ximian.com>
22195
22196         * mini.c (inflate_generic_field): New static method.
22197         (mono_method_to_ir): In CEE_LDFLD and CEE_LDSFLD: if we're a
22198         generic instance and the field is declared in a generic type, call
22199         inflate_generic_field() to inflate it.  Fixes gen-28.cs.
22200
22201 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
22202
22203         * mini.h mini.c (mono_method_same_domain): New function to return
22204         whenever the caller and the callee are in the same domain.
22205
22206         * tramp-x86.c (x86_magic_trampoline): Use the new function.     
22207
22208 2003-10-30  Martin Baulig  <martin@ximian.com>
22209
22210         * mini.c (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): New macros;
22211         similar to TYPE_PARAM_TO_TYPE and TYPE_PARAM_TO_CLASS, but for
22212         method parameters.
22213         (mono_method_to_ir): Added support for MONO_TYPE_MVAR; similar to
22214         MONO_TYPE_VAR, we the actual types from MTYPE_PARAM_TO_CLASS(). 
22215
22216 2003-10-29  Zoltan Varga  <vargaz@freemail.hu>
22217
22218         * mini.c mini-ops.h inssel.brg: Implement undeniable exception 
22219         propagation.
22220
22221         * mini.c (sigusr1_signal_handler): Move creation of the thread abort
22222         object here, so it is in the correct appdomain etc.
22223
22224 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
22225
22226         * mini.c (mono_jit_compile_method_inner): Lookup icalls here if not
22227         already done.
22228         (mono_method_to_ir): Avoid freeing the type created returned from
22229         mono_type_create_from_typespec, since it is put into an internal cache
22230         by the function. Fixes pointer.exe.
22231
22232         * mini.c tramp-x86.c tramp-sparc.c tramp-ppc.c: Use the normal 
22233         trampolines for icalls and pinvokes as well. Fixes #33569.
22234
22235 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
22236
22237         * mini.c: Update after appdomain changes.
22238
22239         * mini.c (mono_jit_compile_method_inner): Allways compile native
22240         method wrappers in the root domain, since there can only be one
22241         instance of them, whose address is stored in method->info.
22242
22243 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
22244
22245         * mini.c (mono_runtime_install_handlers): Get rid of the MONO_VALGRIND
22246         environment variable. Instead detect automatically whenever running
22247         under valgrind using the magic macro RUNNING_ON_VALGRIND from
22248         valgrind.h.
22249
22250 2003-10-16  Miguel de Icaza  <miguel@ximian.com>
22251
22252         * trace.c, trace.h: New files that implement the new trace option
22253         parsing. 
22254
22255         * driver.c: Document new --trace options.
22256
22257         * exceptions-ppc.c, exceptions-x86.c, mini-ppc.c, mini-sparc.c,
22258         mini-x86.c: Apply:
22259
22260         -       if (mono_jit_trace_calls)
22261         +       if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
22262
22263         * mini.h: prototypes.
22264         
22265 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
22266
22267         * mini.c (mono_method_to_ir): Fix initialization of typedbyref locals.
22268
22269         * mini.c inssel.brg: Implement typedefbyref opcodes.
22270
22271         * mini.c (mono_jit_compile_method): Remove unused local variable.
22272
22273         * mini.c (mono_jit_compile_method_inner): Ditto.
22274         
22275 2003-10-12  Zoltan Varga  <vargaz@freemail.hu>
22276
22277         * tramp-x86.c (x86_class_init_trampoline): Fix build.
22278         
22279         * tramp-x86.c (x86_class_init_trampoline): Thread safety fixes.
22280
22281 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
22282
22283         * mini.c (mono_no_aot): Remove unused global variable.
22284
22285         * mini.c: Thread safety fixes.
22286
22287 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
22288
22289         * mini.c (mono_create_class_init_trampoline): Add a lock around
22290         class_init_hash_addr.
22291
22292         * arrays.cs (test_0_newarr_emulation): Add new regression test for
22293         #30073.
22294
22295         * mini.c: Decompose the NEWARR instruction before decomposing its
22296         arguments. Fixes #30073.
22297
22298 2003-10-08  Zoltan Varga  <vargaz@freemail.hu>
22299
22300         * mini-x86.c (mono_arch_emit_epilog): Add support for stdcall calling
22301         convention.
22302
22303 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
22304
22305         * mini.c (mono_method_to_ir): Allow wrapper data for CEE_LDELEMA.
22306
22307         * inssel-x86.brg (OP_LOCALLOC): Fix register assignment for localloc.
22308
22309         * driver.c: Add support for compiling icall wrappers to --compile.
22310
22311 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
22312
22313         * inssel.brg: The empty value in class->interface_offsets is -1, not
22314         0. Fixes #49287.
22315
22316 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
22317
22318         * objects.cs: New test for 'is' operator on an array of interfaces.
22319
22320 Wed Oct 1 19:40:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
22321
22322         * tramp-ppc.c: update trampoline code to support jumps
22323         and class initialization.
22324
22325 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
22326
22327         * mini.c (mono_jit_compile_method): Fix reading of freed memory.
22328
22329         * inssel.brg (OP_UNBOXCAST): Fix #46027.
22330
22331         * inssel.brg (OP_UNBOX): Remove unused rule.
22332
22333         * mini.h mini.c inssel-x86.brg: Allocate one SP variable for each
22334         region instead of one for each method. Fixes #47813.
22335
22336 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
22337
22338         * exceptions.cs (test_0_nested_finally): New regression test for
22339         nested exception handlers.
22340
22341         * mini.c (mono_jit_runtime_invoke): Fix for the previous fix.
22342
22343         * mini.c (mono_method_to_ir): Avoid inlining tail calls.
22344
22345         * mini.c (mono_method_to_ir): Fix tail recursion in the presence of 
22346         inlining.
22347
22348         * mini.c (mono_method_check_inlining): Make the inlining limit 
22349         configurable by an environment variable.
22350         
22351         * mini.c (mono_jit_runtime_invoke): Add Gonzalo's fix for #36545.
22352
22353         * mini.h: Bump AOT file version.
22354
22355         * mini.h mini.c aot.c mini-x86.c: For relocations which refer to a 
22356         token, store the image along with the token, since the token might not 
22357         refer to the same image as the method containing the relocation, 
22358         because of inlining.
22359
22360 2003-09-27  Zoltan Varga  <vargaz@freemail.hu>
22361
22362         * mini.c (mono_precompile_assemblies): New function to compile
22363         all methods in all loaded assemblies.
22364
22365         * mini.h driver.c: Added new optimization flag MONO_OPT_PRECOMP.
22366
22367         * regalloc.h regalloc.c (MonoRegState): Change the type of 
22368         iassign and fassign to int*, since they can contain large negative
22369         values if the register is spilled. Also added some comments. Fixes
22370         #45817.
22371
22372         * exceptions-x86.c (seh_handler): Fix handling of system exceptions
22373         under Win32. Fixes #42964.
22374
22375 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
22376
22377         * mini.h (MONO_PATCH_INFO_WRAPPER): New patch type.
22378
22379         * aot.c: Added support for AOT compiling methods which contain calls
22380         to wrappers. Currently, only remoting-invoke-with-check wrappers are
22381         handled.
22382         
22383         * driver.c (compile_all_methods): Run the compilation in a thread
22384         managed by mono. Fixes #44023.
22385
22386         * mini.c (mono_codegen): Print full method name in verbose output.
22387
22388         * mini-x86.c (mono_arch_patch_code): Fix warning.
22389         
22390         * mini-x86.c (mono_arch_patch_code): Allways create a trampoline for
22391         jumps, since the method we are jumping to might be domain-specific.
22392
22393         * aot.c: Added support for MONO_PATCH_INFO_METHOD_JUMP.
22394
22395 Tue Sep 23 10:50:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
22396
22397         * inssel.brg: string chars are unsigned.
22398
22399 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
22400
22401         * TODO: New todo item.
22402
22403         * tramp-x86.c (x86_class_init_trampoline): New trampoline function
22404         which calls mono_runtime_class_init and patches the call site to
22405         avoid further calls.
22406         (mono_arch_create_class_init_trampoline): New arch specific function 
22407         to create a class init trampoline.
22408         (create_trampoline_code): Generalized so it can create
22409         class init trampolines as well.
22410
22411         * mini.c (helper_sig_class_init_trampoline): New helper variable.
22412         (mono_create_class_init_trampoline): New function to create and cache
22413         class init trampolines.
22414         (mono_find_class_init_trampoline_by_addr): New function to lookup the
22415         vtable given the address of a class init trampoline. Used by the
22416         patching process.
22417         (mono_codegen): Generate a call to a trampoline instead of
22418         mono_runtime_class_init in LDSFLD[A].
22419         (mono_codegen): Add relocations for the new trampoline.
22420         
22421         * mini.h mini-x86.c aot.c: Added a new relocation type: 
22422         MONO_PATCH_INFO_CLASS_INIT.
22423
22424         * mini.h: Bump AOT version number.
22425
22426         * aot.c: Create a copy of the loaded code instead of using the original
22427         so methods which call each other will be close in memory, improving
22428         cache behaviour.
22429         
22430         * exceptions-x86.c (mono_arch_has_unwind_info): Back out the previous
22431         patch since it breaks the regression tests.
22432         
22433         * exceptions-x86.c (mono_arch_has_unwind_info): Added explicit check
22434         for the register saving instruction sequence since the 
22435         frame_state_for function in glibc 2.3.2 don't seem to detect it.
22436
22437 2003-09-14  Zoltan Varga  <vargaz@freemail.hu>
22438
22439         * TODO: Fix todo item && remove another.
22440
22441 2003-09-12  Zoltan Varga  <vargaz@freemail.hu>
22442
22443         * mini-x86.c (mono_arch_patch_code): Fix tail calls broken by a
22444         previous checkin.
22445
22446         * aot.c: Moved the check for MONO_LASTAOT into the initialization
22447         function of the module.
22448
22449         * mini.h mini.c aot.c: Added a new optimization flag OPT_AOT for
22450         turning on/off the usage of AOT code. Got rid of mono_no_aot and the
22451         --no-aot command line option.
22452
22453 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
22454
22455         * helpers.c (mono_disassemble_code): Make this work under cygwin. Patch
22456         by Bernie Solomon (bernard@ugsolutions.com).
22457
22458         * inssel.brg: Refactor the interface offset table related code into
22459         its separate functions and add support for the AOT case.
22460
22461 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
22462
22463         * aot.c (mono_aot_get_method_inner): Fix memory leak.
22464         
22465         * aot.c: Added mono_aot_verbose variable and made all debugging
22466         output depend on the value of this variable.
22467
22468         * aot.c (mono_aot_get_method_inner): Avoid dynamic allocation of
22469         method_label and info_label.
22470
22471         * mini.h mini-x86.c aot.c: Added a new relocation type 
22472         MONO_PATCH_INFO_IID for klass->interface_id.
22473
22474         * mini.h mini.c driver.c aot.c: Changed mono_aot_get_method to return
22475         the MonoJitInfo structure.
22476
22477         * mini.c (mono_jit_compile_method): Avoid using non-shared AOT in
22478         a non-root appdomain in shared mode.
22479
22480 Tue Sep 9 16:33:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
22481
22482         * aot.c: make aot loader less verbose. Remove free of unused variable.
22483
22484 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
22485
22486         * aot.c (mono_aot_get_method_inner): Fix MONO_PATCH_INFO_IMAGE.
22487
22488         * .cvsignore: Added *.dll.
22489
22490         * mini.c (mono_print_tree_nl): New function callable while debugging.
22491
22492         * mini.c (mono_print_code): Export this.
22493
22494         * tramp-x86.c (x86_magic_trampoline): Tell valgrind to recompile the
22495         patched code.
22496
22497 2003-09-05  Zoltan Varga  <vargaz@freemail.hu>
22498
22499         * mini.h (MonoCompile): Added 'jit_info' field.
22500
22501         * mini.c (mini_method_compile): Save the generated MonoJitInfo into
22502         the cfg structure, since it is needed by the AOT compiler.
22503
22504         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
22505
22506         * aot.c: A major rewrite. Changes include:
22507         - save exception tables for methods which have them.
22508         - cache failed lookups in aot_get_method () to avoid the (slow) calls 
22509         to g_module_symbol.
22510         - reworked the file format so it is now much smaller and needs
22511         fewer relocation entries.
22512         
22513 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
22514
22515         * aot.c (load_aot_module): Fix build bustage on platforms without
22516         Boehm GC.
22517
22518 2003-09-04  Martin Baulig  <martin@ximian.com>
22519
22520         * Makefile.am (INCLUDES): Added $(LIBGC_CFLAGS).
22521
22522 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
22523
22524         * TODO: Some new optimization ideas.
22525
22526         * aot.c: Move AOT module loading logic here from mono_assembly_open.
22527
22528         * aot.c: Save the optimization flags used to compile the code into
22529         the AOT module.
22530
22531         * mini.h mini-x86.c mini.c aot.c: Added new types of relocations to
22532         support emitting domain specific code.
22533         
22534         * mini.h mini.c aot.c: Modified the JIT so the generated AOT code is 
22535         no longer domain neutral. It can be made domain neutral by compiling 
22536         with --optimize=shared.
22537
22538         * aot.c (mono_aot_get_method_inner): Allow sharing of AOT methods
22539         between appdomains.
22540
22541         * driver.c mini.h mini.c: New --no-aot debugging option which disables
22542         loading of AOT code.
22543
22544         * inssel-x86.brg: Added missing AOTCONST -> OUTARG_VT rule.
22545         
22546         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling method
22547         if there is no domain neutrality information.
22548
22549 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
22550
22551         * aot.c (mono_compile_assembly): Emit a symbol containing the file 
22552         format version into the generated library.
22553
22554         * mini-x86.c (mono_arch_patch_code): Do not emit the address of the
22555         callee method into the caller since one of them could be shared.
22556
22557         * mini.h mini-x86.c aot.c: Added two new relocations so throwing
22558         system exceptions from AOT code now works.
22559
22560         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling 
22561         method if it is domain neutral and the callee is not.
22562
22563         * graph.c (cfg_emit_one_loop_level): Fix warning.
22564
22565 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
22566
22567         * aot.c (mono_compile_assembly): Oops. Remove debugging cruft from
22568         last checkin.
22569
22570 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
22571
22572         * mini.c (mini_init): Call mono_marshal_init () explicitly since it
22573         is needed  by code which is executed before mono_runtime_init ().
22574         Thanks to Bernie Solomon (bernard@ugsolutions.com) for noticing this.
22575         
22576         * mini.c (mono_thread_abort): Fix warning.
22577         (mono_jit_compile_method): Call static constructor in the AOT case too.
22578
22579         * aot.c (mono_compile_assembly): Fix warning.
22580
22581 2003-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22582
22583         * mini.c: register a SIGINT handler if MONO_DEBUG is defined.
22584
22585 2003-08-28  Zoltan Varga  <vargaz@freemail.hu>
22586
22587         * inssel.brg (OP_UNBOXCAST): Add support for the AOT case.
22588
22589         * cpu-pentium.md: Fix the length of call opcodes so they include the
22590         ESP restoring instruction. Fixes #47968.
22591
22592 2003-08-28  Martin Baulig  <martin@ximian.com>
22593
22594         * mini-x86.c (mono_arch_call_opcode): Added support for
22595         MONO_TYPE_GENERICINST.
22596
22597         * mini.c (check_call_signature): Added support for MONO_TYPE_GENERICINST.       
22598
22599 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
22600
22601         * Makefile.am (BUILT_SOURCES): Fix compilation on platforms without
22602         a JIT. Patch by Bernie Solomon (bernard@ugsolutions.com).
22603
22604         * mini.c jit-icalls.c tramp-x86.c tramp-ppc.c tramp-sparc.c: Get rid of
22605         metadata_section.
22606
22607 2003-08-26  Martin Baulig  <martin@ximian.com>
22608
22609         * mini.c (get_basic_blocks): Added `unsigned char **pos' argument;
22610         when reporting an error, set this to the actual error location.
22611         (mono_method_to_ir): Report the correct error location if
22612         get_basic_blocks() returned an error.
22613
22614 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
22615
22616         * mini.c (mono_type_blittable): OBJECT is not blittable.
22617         (mono_method_blittable): Methods which have marshalling descriptors
22618         are not blittable either. Fixes #47842.
22619
22620 2003-08-22  Zoltan Varga  <vargaz@freemail.hu>
22621
22622         * driver.c mini.c: Use an environment variable instead of a global 
22623         variable. Also fix the build.
22624
22625         * mini.c (mini_init): Call g_thread_init () to make glib thread-safe. 
22626         Fixes #47682. Thanks to Laurent Morichetti (l_m@pacbell.net) for 
22627         reporting this. 
22628
22629         * driver.c mini.c: Added --with-valgrind option to turn off some
22630         code which prevents mono from running under valgrind.
22631
22632         * mini.c (mono_emit_call_args): Fixed warning.
22633
22634         * mini.c (mono_emulate_opcode): Fixed warning.
22635
22636 Thu Aug 21 19:10:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
22637
22638         * inssel.brg: 64bit fixes from Laurent Morichetti <l_m@pacbell.net>.
22639         * linear-scan.c, mini-ppc.h, mini-sparc.h, mini-x86.h, mini.h,
22640         regalloc.c, regalloc.h: specify available registers in arch-specific
22641         code and support floats in the regallocator (patch by Laurent Morichetti 
22642         <l_m@pacbell.net>)
22643
22644 Wed Aug 20 19:02:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
22645
22646         * mini.c: mono_thread_current() can be called only after
22647         mono_runtime_init(): rearrange code to not call it early on.
22648
22649 Wed Aug 20 13:14:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
22650
22651         * mini.c: allocate jump tables in the code mempools.
22652
22653 Wed Aug 20 13:04:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
22654
22655         * mini.c, mini.h: make sure per-thread data allocated by the jit is
22656         freed.
22657
22658 2003-08-10  Miguel de Icaza  <miguel@ximian.com>
22659
22660         * cpu-pentium.md (ldtoken): Change the length for mul.ovf.un from
22661         12 to 16.  This fixes bug #47453.
22662
22663
22664 Thu Aug 7 15:59:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
22665
22666         * mini-ppc.c: fixed indexed load and unsigned compares.
22667
22668 2003-08-06  Lluis Sanchez Gual  <lluis@ximian.com>
22669
22670         * mini.c: reenabled installation of handler for
22671           thread abort signal.
22672
22673 Tue Aug 5 12:21:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
22674
22675         * cprop.c, mini-x86.c, cpu-pentium.md: fix buglets spotted
22676         by Laurent Morichetti <l_m@pacbell.net>. Disabled local cprop
22677         until it's fixed and actually useful.
22678
22679 Mon Aug 4 12:12:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
22680
22681         * inssel-long32.brg: couple more opcodes implemented.
22682
22683 Thu Jul 31 22:43:02 EDT 2003 Mark Crichton <crichton@gimp.org>
22684         
22685         * mini-sparc.c: Even more opcodes implemeted.
22686
22687 Thu Jul 31 19:36:03 EDT 2003 Mark Crichton <crichton@gimp.org>
22688
22689         * mini-sparc.c: More opcodes implemented.
22690
22691 Thu Jul 31 15:16:26 EDT 2003 Mark Crichton <crichton@gimp.org>
22692
22693         * mini-sparc.c: More opcodes implemented.
22694
22695 Wed Jul 30 22:31:02 EDT 2003 Mark Crichton <crichton@gimp.org>
22696
22697         * inssel-sparc.brg: Add some needed rules.  Direct
22698         copy from PPC.
22699         * Makefile.am: Use inssel-sparc.brg
22700         * exceptions-sparc.c: 0xdeadbeef/0xdecafbad to keep
22701         an assert happy for now.
22702
22703 Wed Jul 30 20:44:07 EDT 2003 Mark Crichton <crichton@gimp.org>
22704
22705         * mini-sparc.c: Fixed compile errors.
22706         * exceptions-sparc.c: Same.  We now produce a mono binary 
22707         on sparc-linux.  Yea.
22708
22709 Wed Jul 30 14:10:12 EDT 2003 Mark Crichton <crichton@gimp.org>
22710
22711         * mini-sparc.c: Renamed registers.  Also some macro cleanups.
22712         * exceptions-sparc.c, tramp-sparc.c: Various compile fixes.
22713         They compile, but do not work.
22714
22715 Wed Jul 30 17:52:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
22716
22717         * Makefile.am, cpu-sparc.md, exceptions-sparc.c, mini-sparc.c,
22718         mini-sparc.h, tramp-sparc.c: Beginning of sparc support
22719         from Mark Crichton <crichton@gimp.org> and Christopher Taylor
22720         (ct@gentoo.org).
22721
22722 Tue Jul 29 12:43:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
22723
22724         * mini.c: more opcodes implemented and better support for generics.
22725
22726 Fri Jul 25 18:51:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
22727
22728         * cpu-g4.md, cpu-pentium.md: updates for new instructions.
22729         * mini.c, mini.h: first cut at generics support: some new instructions 
22730         added and changed the behaviour of some of the existing ones.
22731
22732 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
22733
22734         * mini.c: Removed definition of metadata_shared mutex here.
22735
22736 Tue Jul 22 15:21:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
22737
22738         * mini-x86.c: make vararg calls work for instance methods.
22739
22740 Fri Jul 18 19:26:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
22741
22742         * mini.c, mini.h, mini-x86.c, mini-ppc.c: mono_arch_call_opcode()
22743         returns the arguments in a separte list, now.
22744
22745 Fri Jul 18 13:16:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
22746
22747         * aot.c, mini.c: updates for array type representation changes.
22748
22749 Fri Jul 18 11:28:28 CEST 2003 Paolo Molaro <lupus@ximian.com>
22750
22751         * mini.c: register function to perform jit shutdown.
22752
22753 Thu Jul 17 16:02:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
22754
22755         * mini.c: use a faster allocator if possible.
22756
22757 Thu Jul 17 16:00:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
22758
22759         * aot.c: some cleanups and portability changes.
22760
22761 Wed Jul 2 11:08:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
22762
22763         * mini.c: use faster allocation for CEE_BOX if possible.
22764
22765 Mon Jun 30 19:16:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
22766
22767         * mini.c, mini-ops.h, inssel.brg, mini-x86.c: optimized access to fields.
22768         Moved inlined mempcy code to its own function so that is can be
22769         reused. Added an inline memset function as well (optimized initobj).
22770         * cpu-pentium.md, inssel-x86.brg: add and use lea_membase.
22771
22772 Fri Jun 27 11:19:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
22773
22774         * mini.c, mini-ops.h, inssel.brg: optimized a couple of Array methods.
22775
22776 Wed Jun 25 13:19:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
22777
22778         * mini.c, mini.h, mini.x86.c, mini-ppc.c: added facility so that
22779         arch code can setup the cpu for CLR execution, if needed.
22780         We use it on x86 to set the precision of FP operations.
22781
22782 Tue Jun 17 19:02:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
22783
22784         * mini.c: disable some optimizations if we can guess they'll cost too
22785         much for a given method.
22786
22787 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
22788
22789         * mini.h mini.c: Rework last patch based on suggestions by Paolo.
22790         
22791 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
22792         * mini.h mini.c mini-x86.c: Added instruction level coverage 
22793         info collection support.
22794
22795 Mon Jun 16 18:13:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
22796
22797         * driver.c, mini-ppc.c, mini-x86.c, mini.c, mini.h: the coverage stuff
22798         is now implemented in the profiling API. Get rid of a couple of
22799         unnecessary global variables.
22800
22801 2003-06-15  Nick Drochak <ndrochak@gol.com>
22802
22803         * basic-long.cs: tests for negative values for bigmul, and unsigned.
22804         * cpu-g4.md: add op_bigmul and op_bigmul_un
22805         * cpu_pentium.md: add op_bigmul_un
22806         * inssel-long32.brg: add rule for unsigned bigmul
22807         * mini-ops.h: define OP_BIGMUL_UN
22808         * mini-x86.c: THE BUG: handle (un)signed properly
22809         * mini.c: choose unsigned opcode if needed.
22810         This set of patches fixes bug #44291
22811
22812 2003-06-13  Dietmar Maurer  <dietmar@ximian.com>
22813
22814         * mini.c (optimize_branches): improved to handle all kinds of
22815         conditional branches.
22816
22817 Wed Jun 11 18:01:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
22818
22819         * mini.c, mini.h, jit-icalls.c: speedup emulation of opcodes that
22820         don't raise exceptions.
22821
22822 Tue Jun 10 19:00:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
22823
22824         * tramp-x86.c, tramp-ppc.c, debug-mini.c: move arch-specific code
22825         to arch-specific files.
22826
22827 2003-06-09  Martin Baulig  <martin@ximian.com>
22828
22829         * Makefile.am (libs): Added $(LIBGC_LIBS).
22830
22831 Mon Jun 9 20:21:47 CEST 2003 Paolo Molaro <lupus@ximian.com>
22832
22833         * cpu-pentium.md, mini-x86.c: fix (well, actually implement) OP_TAN
22834         and OP_ATAN (fixes bug#44293).
22835
22836 Mon Jun 9 19:00:56 CEST 2003 Paolo Molaro <lupus@ximian.com>
22837
22838         * Makefile.am, mini-x86.c: rename cpu description array to
22839         pentium_desc, since some compilers define the 'pentium' preprocessor
22840         symbol.
22841
22842 2003-05-28  Dietmar Maurer  <dietmar@ximian.com>
22843
22844         * mini.c (mini_select_instructions): add explicit branch if the
22845         following block is not the false target of a conditional branch -
22846         we need this with any optimization that reorder or remove bblocks
22847
22848         * mini.c (optimize_branches): bug fixes
22849
22850 2003-06-06  Dietmar Maurer  <dietmar@ximian.com>
22851
22852         * mini.c (mono_method_to_ir): inline static readonly fields
22853
22854         * ssa.c (fold_tree): start cfold support for long (very simple
22855         cases only)
22856
22857         * cfold.c (mono_constant_fold_inst): opt. CEE_CONV_I8 (OP_ICONST)
22858
22859 Fri Jun 6 11:41:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
22860
22861         * inssel.brg: fixed memcpy (bug #44219).
22862
22863 2003-06-05  Dick Porter  <dick@ximian.com>
22864
22865         * driver.c: Set the glib log levels to not abort if g_message
22866         recurses.
22867
22868         g_set_prgname() has to happen before mini_init() so that the
22869         process handle gets the info.
22870         
22871 Thu Jun 5 20:11:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
22872
22873         * driver.c: add intrins to the default optimizations to get wider
22874         exposure.
22875
22876 Wed Jun 4 19:47:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
22877
22878         * mini.h: some large basic blocks will overflow a 16-bit
22879         integers for symbolic registers.
22880
22881 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
22882
22883         * mini-x86.c (mono_arch_output_basic_block): revert previous fprem changes.
22884         (mono_arch_output_basic_block): fix bug 43499 
22885
22886 Wed Jun 4 13:13:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
22887
22888         * mini.c: kill duplicated definition of mono_debug_format.
22889
22890 Wed Jun 4 13:09:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
22891
22892         * mini-x86.c, arrays.cs: fixed register allocation bug.
22893
22894 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
22895
22896         * mini-x86.c (mono_arch_output_basic_block): use IEEE compatible fprem1
22897
22898         * mini.c (mini_get_opcode_for_method): inline IEEERemainder
22899
22900 2003-06-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22901
22902         * mini.c:
22903         (print_method_from_ip): also print source location information if
22904         available.
22905
22906 2003-06-02  Dietmar Maurer  <dietmar@ximian.com>
22907
22908         * mini.c (mono_find_block_region): bug fix in region code
22909         (mini_method_compile): enable removing unreachable code again, but
22910         only in methods without exception clauses.
22911
22912 Fri May 30 18:40:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
22913
22914         * mini.c, mini-ops.h, cpu-pentium.md, inssel.brg, mini-x86.c, mini.h:
22915         Implemented arglist opcode and handling of TypedReference type.
22916         Fixed x86 call convention when a structure is returned.
22917         Minimal support for calling static vararg methods.
22918
22919 2003-05-30  Dietmar Maurer  <dietmar@ximian.com>
22920
22921         * mini.c (mini_method_compile):  always remove unreachable code,
22922         because the code in them may be inconsistent  (access to dead
22923         variables for example).
22924
22925 Thu May 29 11:44:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
22926
22927         * driver.c, debug-mini.c: warning fixes.
22928
22929 Wed May 28 11:19:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
22930
22931         * Makefile.am, jit.h, mini.h: install header for embedding mono.
22932
22933 Tue May 27 17:56:12 CEST 2003 Paolo Molaro <lupus@ximian.com>
22934
22935         * mini.c: thread-static fields are registered in mono_class_vtable(),
22936         so ensure the function is called before checking for them.
22937
22938 2003-05-27  Dietmar Maurer  <dietmar@ximian.com>
22939
22940         * mini.c (optimize_branches): fix for bug 43586
22941
22942         * jit-icalls.c (mono_llmult_ovf): added an additional check for
22943         overflow (fixes Bug #43639)
22944
22945 Tue May 27 11:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
22946
22947         * mini.c, objects.cs: allow the use of stobj for primitive types.
22948
22949 Tue May 27 10:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
22950
22951         * mini.c: be less strict about argument checking until we support
22952         running the verifier.
22953
22954 2003-05-27  Nick Drochak <ndrochak@gol.com>
22955
22956         * basic-long.cs: tests for (ulong)int * (ulong)int also
22957         * mini.c: use the same trick for (ulong)int * (ulong)int
22958
22959 2003-05-27  Nick Drochak <ndrochak@gol.com>
22960
22961         * basic-long.cs: add regression test for (long)int * (long)int
22962         * cpu-pentium.md: add op_bigmul specification
22963         * inssel-long32.brg: add OP_BIGMUL rule
22964         * mini-ops.h: add OP_BIGMUL
22965         * mini-x86.c: register allocator: handle case where src1 needs to be
22966         in EAX.
22967         * mini.c: substitute special BIGMUL opcode in the tree for 
22968         (long)int * (long)int
22969
22970 Mon May 26 20:20:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
22971
22972         * jit-icalls.c: call the type ctor on field access if needed.
22973
22974 Mon May 26 15:21:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
22975
22976         * mini-ops.h, mini.c, inssel.brg, exceptions.cs: validate arguments passed
22977         to a method (including results of ldelema, bug#43207).
22978
22979 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
22980
22981         * graph.c (cfg_emit_one_loop_level): loop over all blocks. use
22982         colors to show exception handler blocks.
22983
22984         * inssel-x86.brg (OP_OUTARG_VT): dont push zero sized structures
22985         (fix for pinvoke7.cs).
22986
22987 Mon May 26 12:11:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
22988
22989         * mini.h, mini.c: ensure correct initialization order for types that
22990         require it. Prepare for lazy compilation of jit icall wrappers.
22991         Provide a name for opcode emulation to reduce unneeded mallocing.
22992
22993 Fri May 23 16:08:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
22994
22995         * mini-x86.c: better register restoring code and profiling
22996         support for tail calls.
22997
22998 Fri May 23 15:30:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
22999
23000         * mini.h, driver.c: prepare for leaf methods optimization.
23001
23002 Fri May 23 15:28:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
23003
23004         * mini.c: get targets of branches before converting a method.
23005
23006 2003-05-23  Dietmar Maurer  <dietmar@ximian.com>
23007
23008         * mini.c (optimize_branches): added some experimental code (disbaled) 
23009
23010 2003-05-22  Dietmar Maurer  <dietmar@ximian.com>
23011
23012         * mini.c (optimize_branches): fix branch to branch optimization 
23013
23014         * exceptions-x86.c (mono_arch_handle_exception): bug fix.
23015
23016         * mini-x86.c (mono_arch_output_basic_block): cleanup up exception code
23017
23018         * inssel-x86.brg: added OP_START_HANDLER, CEE_ENDFINALLY, OP_ENDFILTER
23019
23020         * mini-x86.c (mono_arch_allocate_vars): only reserve space for lmf
23021         if needed.
23022
23023 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
23024
23025         * mini.c (mono_method_to_ir): call handle_loaded_temps before inlining.
23026         enable use of interface variables again.
23027
23028         * mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate
23029         I1 to registers because there is no simply way to sign extend 8bit
23030         quantities in caller saved registers on x86.
23031
23032         * inssel-float.brg: set costs of some rules to 2 so
23033         that monobure always select the arch. specific ones if supplied,
23034         regardless of the order we pass the files to monoburg.
23035
23036 Tue May 20 17:19:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
23037
23038         * mini.c, mini-x86.c: since the magic trampoline for jumps
23039         can't patch the code directly, we do it as soon as the
23040         method gets compiled.
23041
23042 Tue May 20 16:02:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
23043
23044         * mini-x86.c, mini.h: introduce a new patching method
23045         to support CEE_JMP and tail calls.
23046         * mini.c: obey tail.call. Don't precompile methods target
23047         of CEE_JMP.
23048         * tramp-x86.c: new trampoline code to handle methods
23049         reached through a jump.
23050
23051 2003-05-20  Dietmar Maurer  <dietmar@ximian.com>
23052
23053         * mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16
23054         bit values to registers
23055
23056 2003-05-19  Dietmar Maurer  <dietmar@ximian.com>
23057
23058         * mini.c (mono_compile_get_interface_var): share interface
23059         variables if possible.
23060
23061 2003-05-16  Martin Baulig  <martin@ximian.com>
23062
23063         * debug-mini.c (mono_init_debugger): New function to initialize
23064         the debugger.  This is not in the debugger since it needs to
23065         access some of mini's internals.
23066
23067 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
23068
23069         * mini.c (mono_method_to_ir): inlining fixes/cleanups
23070
23071 Fri May 16 13:27:23 CEST 2003 Paolo Molaro <lupus@ximian.com>
23072
23073         * mini.c, mini-opts.h, inssel.brg: inline small memcpy
23074         for value type handling.
23075
23076 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
23077
23078         * mini.c (mono_method_to_ir): inline LDFLD/STFLD wrappers
23079         (mono_method_check_inlining): enable inlining of all kinds of wrappers
23080
23081 2003-05-15  Lluis Sanchez Gual  <lluis@ideary.com>
23082
23083         * mini.c: fixed little bug in CEE_NEWOBJ case when calling
23084           the constructor through a proxy.
23085
23086 Thu May 15 17:17:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
23087
23088         * jit-icalls.c, inssel.brg: fixes to array element address
23089         calculations.
23090
23091 2003-05-15  Dietmar Maurer  <dietmar@ximian.com>
23092
23093         * mini-x86.c (is_regsize_var): allocate pointer to registers
23094
23095 Thu May 15 13:04:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
23096
23097         * driver.c: fixed typo, added intrins to the set of optimizations
23098         tested with regressions.
23099
23100 Thu May 15 11:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
23101
23102         * mini-ops.h, mini.c, inssel.brg: optimize access to 2D arrays.
23103         * jit-icalls.c, exceptions.cs: fixed index out of range checks, added
23104         test case.
23105
23106 2003-05-14  Dietmar Maurer  <dietmar@ximian.com>
23107
23108         * inssel.brg: remove some common pop instructions without side effects
23109
23110 Wed May 14 12:40:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
23111
23112         * inssel-x86.brg: fixed thinko in int to double conversions.
23113
23114 Wed May 14 12:01:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
23115
23116         * mini.c, jit-icalls.c: added runtime thread-static variable support.
23117
23118 Tue May 13 22:02:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
23119
23120         * inssel-long32.brg: two more missing instructions.
23121
23122 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
23123
23124         * mini.c (mono_emit_call_args): set the cil_code for all arguments
23125         if not already set.
23126
23127 2003-05-12  Zoltan Varga  <vargaz@freemail.hu>
23128
23129         * mini-x86.c (mono_arch_output_basic_block): Handle negative zero
23130         correctly.
23131
23132         * basic-float.cs: Added tests for negative zero.
23133
23134 Sun May 11 14:56:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
23135
23136         * inssel-long32.brg, basic-long.cs, exceptions.cs: handle
23137         a couple of missing operations for long casts, with test cases.
23138
23139 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23140
23141         * exceptions-x86.c: fixed small leaks in mono_arch_handle_exception.
23142
23143 2003-05-09  Dietmar Maurer  <dietmar@ximian.com>
23144
23145         * mini-x86.c (mono_arch_emit_prolog): avoid reallocs with better
23146         code size estimation.
23147
23148 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
23149
23150         * mini.c (mono_jit_create_remoting_trampoline): make it work with
23151         abstract methods (fix bug 42542)
23152
23153         * aot.c: add ability to handle array types
23154         
23155 2003-05-08  Zoltan Varga  <vargaz@freemail.hu>
23156
23157         * mini.c: Call the _specific versions of the object allocation
23158         functions if possible.
23159
23160 Tue May 6 17:18:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
23161
23162         * driver.c: call setlocale ().
23163
23164 Tue May 6 14:38:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
23165
23166         * mini.h, mini.c, aot.c, debug-mini.c, exceptions.c: build fixes for
23167         windows build.
23168
23169 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
23170
23171         * mini.c (optimize_branches): dont touch code inside exception clauses (fix bug 38136)
23172
23173         * exceptions-x86.c (ves_icall_get_frame_info): also skip remoting
23174         wrappers (fix bug 42122)
23175
23176 2003-05-04  Martin Baulig  <martin@ximian.com>
23177
23178         * mini.h (mono_jit_init, mono_jit_cleanup): Added prototypes.
23179
23180         * driver.c: s/MONO_OPT_SAHRED/MONO_OPT_SHARED/g.
23181         s/mini_set_defaults/mono_set_defaults/g.
23182
23183 2003-05-04  Martin Baulig  <martin@ximian.com>
23184
23185         * driver.c: s/mini_parse_default_optimizations/mono_parse_default_optimizations/g.
23186
23187 Sun May 4 11:48:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
23188
23189         * inssel-long32.brg: add missing lreg: OP_LCONV_TO_U8 (lreg) rule
23190         (reported by Don Roberts).
23191
23192 Fri May 2 18:36:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
23193
23194         * mini.c: temporarily work around two bugs for this release.
23195
23196 Fri May 2 17:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
23197
23198         * Makefile.am: avoid linking libmono with GMODULE_LIBS, because
23199         that contains -export-dynamic and it makes using the ld script
23200         useless.
23201         * mini.h, main.c, driver.c: s/mini_main/mono_main/g.
23202
23203 Fri May 2 12:52:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
23204
23205         * mini.h, mini-x86.c, driver.c: disable optimizations not available on a
23206         specific cpu.
23207
23208 Thu May 1 15:28:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
23209
23210         * mini.c: make sure leave calls all the needed finally blocks,
23211         even when the target jumps out of multiple exception clauses.
23212
23213 Thu May 1 15:18:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
23214
23215         * ldscript, Makefile.am: add linker script to reduce the number of
23216         exported symbols (should also fix the issues with libwine defining
23217         some of the same symbols in io-layer).
23218
23219 2003-05-01  Zoltan Varga  <vargaz@freemail.hu>
23220
23221         * driver.c (mini_main): Avoid assertion when no file name is given on 
23222         the command line.
23223
23224 Wed Apr 30 15:33:11 CEST 2003 Paolo Molaro <lupus@ximian.com>
23225
23226         * driver.c: added --version/-V command line option.
23227         Added the inline optimization in the regression tests.
23228
23229 Wed Apr 30 15:16:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
23230
23231         * mini.c, basic-calls.cs: when inlining, save arguments to locals according 
23232         to the type in the method signature (fixes bug#42134).
23233
23234 Wed Apr 30 12:38:44 CEST 2003 Paolo Molaro <lupus@ximian.com>
23235
23236         * mini.c: when inlining, check this is not null only when needed (bug #42135).
23237
23238 Wed Apr 30 11:44:36 CEST 2003 Paolo Molaro <lupus@ximian.com>
23239
23240         * mini-ppc.h, tramp-pcc.c: type fixes from Max Horn <max@quendi.de>.
23241
23242 2003-04-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23243
23244         * driver.c: fixed bug #42100.
23245
23246 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
23247
23248         * mini.c (mono_method_to_ir): UNBOX need to CAST objects first
23249
23250 Mon Apr 28 17:03:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
23251
23252         * mini.c: moved most of the code required to do inlining to its own
23253         function so it can be reused. Inline also ctors if appropriate.
23254
23255 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
23256
23257         * Makefile.am: Link with -export-dynamic so shared libs loaded by
23258         the runtime can call mono API functions.
23259
23260 2003-04-27  Martin Baulig  <martin@ximian.com>
23261
23262         * debug-mini.c (mono_debug_init_method): Added
23263         `guint32 breakpoint_id' argument; if the method has a breakpoint,
23264         send a notification to the debugger.
23265
23266         * mini.c (mono_method_to_ir): Don't insert a breakpoint if we're
23267         running in the Mono Debugger, just pass the breakpoint number to
23268         mono_debug_init_method().
23269
23270         * tramp-x86.c, tramp-ppc.c: Removed the breakpoint trampolines.
23271
23272 Sun Apr 27 13:18:04 CEST 2003 Paolo Molaro <lupus@ximian.com>
23273
23274         * mini.c: allow some more unsafe compares.
23275
23276 Sat Apr 26 11:55:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
23277
23278         * mini-x86.c, Makefile.am: make distcheck works (partially from
23279         a patch by Richard Lee <r.h.lee@attbi.com>).
23280         * regset.c, regset.h: removed, they are unused.
23281
23282 2003-04-25  Dick Porter  <dick@ximian.com>
23283
23284         * driver.c: Usage reports the name as 'mono' not 'mini'
23285         * exceptions-x86.c: Build and run on freebsd
23286
23287 Thu Apr 24 17:09:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
23288
23289         * Makefile.am: install the program with the 'mono' name and
23290         the library as libmono instead of mini and libmini.
23291
23292 Thu Apr 24 17:08:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
23293
23294         * driver.c: provide the APIs for the embedding interface of the old jit.
23295
23296 2003-04-23  Dietmar Maurer  <dietmar@ximian.com>
23297
23298         * jit-icalls.c (helper_stelem_ref): impl. (fix bug 41775)
23299
23300 2003-04-23  Martin Baulig  <martin@ximian.com>
23301
23302         * tramp-x86.c, tramp-ppc.c: Reenable the debugger breakpoint interface.
23303
23304         * driver.c: Added `--debug' command line argument to enable
23305         debugging support.
23306
23307 2003-04-23  Martin Baulig  <martin@ximian.com>
23308
23309         * debug.[ch]: Removed.  The code is now in
23310         ../metadata/mono-debug.[ch] and mono-debug-debugger.[ch].
23311
23312         * debug-stabs.c, debug-dwarf2.c: Removed; nobody used this for the
23313         last six months.
23314
23315 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
23316
23317         * mini.c (mono_method_to_ir): set the cil_code address (fix bug 41525)
23318
23319 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23320
23321         * mini.c:
23322         (mini_cleanup): moved mono_runtime_cleanup call after the call to
23323         mono_domain_finalize.
23324         (mini_method_compile): use mono_method_profile* if the the option is
23325         enabled.
23326
23327 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
23328
23329         * tramp-x86.c (mono_arch_create_jit_trampoline): Subsitute synchronized
23330         methods with their wrapper.
23331
23332         * tramp-ppc.c (mono_arch_create_jit_trampoline): Subsitute synchronized
23333         methods with their wrapper.
23334
23335         * jit-icalls.c (mono_ldvirtfn): Subsitute synchronized methods with
23336         their wrapper.
23337
23338         * mini.c (mono_method_to_ir): Subsitute synchronized methods with their
23339         wrapper.
23340
23341         * mini.c (mono_method_check_inlining): Avoid inlining synchronized
23342         methods.
23343
23344 2003-04-17  Dietmar Maurer  <dietmar@ximian.com>
23345
23346         * exceptions-x86.c (mono_arch_handle_exception): fix for bug 36252
23347
23348 2003-04-16  Dietmar Maurer  <dietmar@ximian.com>
23349
23350         * mini.c (mono_compile_create_var): use g_malloc/g_realloc instead
23351         of the mempool. This is slightly faster and uses less memory
23352
23353 Wed Apr 16 12:53:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
23354
23355         * mini.c: avoid O(n) allocation for variables.
23356
23357 Tue Apr 15 19:13:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
23358
23359         * mini.c: handle items on the stack after inlining methods.
23360
23361 Tue Apr 15 14:17:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
23362
23363         * mini.c: make the method->opcode optimization dependent
23364         on MONO_OPT_INSTRINS and do it lazily.
23365
23366 Tue Apr 15 14:15:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
23367
23368         * driver.c: print overall results at the end of regression run.
23369
23370 Tue Apr 15 11:18:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
23371
23372         * inssel.brg: don't overwrite symbolic registers.
23373
23374 Mon Apr 14 17:41:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
23375
23376         * inssel-x86.brg: fix conversion from long to float.
23377
23378 2003-04-11  Dietmar Maurer  <dietmar@ximian.com>
23379
23380         * mini.c (mini_init): use an opcode for get_Chars (OP_GETCHR)
23381
23382 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
23383
23384         * mini.c (mono_type_blittable): MONO_TYPE_OBJECT is blittable.
23385
23386         * driver.c: Added --print-vtable option as in the old JIT.
23387
23388 Thu Apr 10 17:43:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
23389
23390         * inssel-long32.brg, exceptions.cs: fix conversions from long, too.
23391
23392 Thu Apr 10 16:27:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
23393
23394         * inssel.brg, basic.cs: fixed checked conversions to byte and short.
23395
23396 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
23397
23398         * mini.c regalloc.c regalloc.h: Fix memory leak.
23399
23400 2003-04-09  Dietmar Maurer  <dietmar@ximian.com>
23401
23402         * aot.c (mono_aot_get_method): register all used strings
23403
23404 Wed Apr 9 15:22:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
23405
23406         * mini.c: always intern strings references with ldstr at compile time.
23407
23408 Tue Apr 8 11:41:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
23409
23410         * Makefile.am: add BUILT_SOURCES.
23411
23412 Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
23413
23414         * driver.c: give a better error message when the assembly to execute
23415         doesn't have an entry point.
23416
23417 2003-04-07  Dietmar Maurer  <dietmar@ximian.com>
23418
23419         * Makefile.am: added hack for automake
23420
23421         * mono/mini/mini.c (mono_save_args): always copy arguments to keep
23422         correct sematics.
23423
23424         * mono/mini/ssa.c (mono_ssa_avoid_copies): don't optimize calls
23425
23426 22003-04-07  Martin Baulig  <martin@ximian.com>
23427
23428         * Makefile.am: Added Makefile.am.
23429
23430         * debugger-main.c: Removed, this is now in the debugger where it
23431         belongs.
23432
23433         * mini.pc.in: Call this package `mini' for the moment.
23434
23435
23436
23437
23438
23439
23440
23441
23442
23443
23444
23445
23446
23447
23448