1ddd79a4a1a58b73656a47a97c5515d51e06663b
[mono.git] / mono / mini / ChangeLog
1 2010-01-08  Zoltan Varga  <vargaz@gmail.com>
2
3         * mini-llvm.c (mono_llvm_emit_method): Add some comments about why aot+clauses
4         is not supported yet.
5
6         * unwind.c (DW_EH_PE_absptr): Add more DW_EH_PE_ constants.
7
8 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
9
10         * method-to-ir.c: All types with variant arguments must fallback to the
11         slow path. This makes cast of variant delegates work.
12
13         * mini-trampolines.c (mono_get_vcall_slot_addr): Add new variance_used out
14         argument that is set to TRUE is the returned vtable slot is for a variant
15         interface. Changed a g_print + g_assert_not_reached to a g_error.
16
17         * mini-trampilines.c (common_call_trampoline): Handle variant interfaces in
18         a similar fashion of generic virtual methods.
19
20 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
21
22         * helpers.c (mono_disassemble_code): Fix a g_hash_table warning
23         when cfg is null.
24
25         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Convert a given
26         method using a variance aware function.
27
28         * mini-x86.c: Add support for dumping IMT thunks if DEBUG_IMT is defined.
29
30 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
31
32         * method-to-ir.c (mono_method_to_ir): Casts to variant interfaces
33         do an icall for now.
34
35 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
36
37         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add an ugly hack to fix #564695.
38         If LLVM decides to set the code model to Large, reset it to Default.
39
40 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
41
42         * aot-compiler.c (mono_xdebug_flush): Export it so it is present in
43         stripped binaries as well.
44
45 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
46
47         * mini-trampolines.c (common_call_trampoline): Add an rgctx trampoline if a shared
48         method is called from LLVM compiled code, as that code can't pass an rgctx arg.
49
50         * mini-llvm.c (mono_llvm_emit_method): Enable calls to methods needing an rgctx
51         reg.
52
53 2010-01-06  Zoltan Varga  <vargaz@gmail.com>
54
55         * mini.c (mini_method_compile): Extract the JIT info creation code into a
56         separate function.
57
58         * mini-llvm.c (mono_llvm_emit_method): Pass the info in MonoExceptionClause
59         as the type info to llvm.eh.selector.
60         (exception_cb): Use the type info for filling out some fields of
61         MonoJitExceptionInfo like the flags and the exception class. This is needed
62         because the LLVM produced exception handling clauses might not match the original
63         IL clauses, i.e. there might be more than one LLVM clause for one IL clause.
64
65         * unwind.c (mono_unwind_decode_fde): Extract the LSDA decoding code into a
66         separate function. Add an extra argument which returns the type infos
67         corresponding to the exception clauses.
68
69         * mini.c (mini_method_compile): Enable LLVM compilation of methods having
70         exception handling clauses.
71
72 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
73
74         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call
75         mono_method_get_vtable_slot () instead of accessing imt_method->slot directly,
76         to fix an AOT case.
77
78 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
79
80         * mini.c (mono_compile_is_broken): Skip methods from serialization's
81         internal assembly.
82
83 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
84
85         * mini.c (mini_method_compile): Fix a few memory leaks introduced by the
86         llvm code.
87
88 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
89
90         * mini.c (mini_method_compile): Verify the method before calling
91         mono_compile_create_vars as this might crash since it uses method
92         information.
93
94         Fixes #560196.
95
96 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
97
98         * method-to-ir.c (mono_method_to_ir): Avoid calling mono_class_vtable () in
99         one case if AOTing, since the class might not be a concrete class.
100
101 2010-01-03  Zoltan Varga  <vargaz@gmail.com>
102
103         * mini-codegen.c abcremoval.c: Remove the duplicate g_slist_append_mempool
104         functions which are now defined in mempool-internals.h.
105
106         * mini.c (mini_free_jit_domain_info): Free the seq point hash tables.
107
108         * mini-llvm.c (mono_llvm_emit_method): Handle OP_ABS.
109
110 2009-12-30  Rodrigo Kumpera  <rkumpera@novell.com>
111
112         * mini.c:
113         * method-to.ir.c:
114         * mini-*.c: Properly handle generic enums.
115
116         Fixes #566294
117
118 2009-12-28  Zoltan Varga  <vargaz@gmail.com>
119
120         * method-to-ir.c (mono_method_to_ir): Handle the failure of mono_class_vtable ()
121         in a few more places.
122
123 2009-12-27  Zoltan Varga  <vargaz@gmail.com>
124
125         * aot-compiler.c (add_wrappers): Don't use dyn runtime invoke for methods with
126         nullable parameters. Fixes #567351.
127
128 2009-12-26  Rodrigo Kumpera  <rkumpera@novell.com>
129
130         * mini-trampolines.c (common_call_trampoline): Add assert for NULL resolved generic method.
131
132 2009-12-26  Zoltan Varga  <vargaz@gmail.com>
133
134         * mini-trampolines.c: Use mono_arch_get_this_arg_from_call () to avoid the slow
135         mono_get_generic_context_from_code () call.
136
137         * mini-<ARCH>.c: Get rid of mono_arch_find_this_arg (), it is no longer used.
138
139 2009-12-25  Zoltan Varga  <vargaz@gmail.com>
140
141         * aot-runtime.c (decode_klass_ref): Don't call mono_class_init (), its not
142         needed.
143
144 2009-12-24  Sebastien Pouliot  <sebastien@ximian.com>
145
146         * method-to-ir.c (mono_method_to_ir): Avoid SIGSEGV when
147         mono_method_get_signature returns NULL. Fix #567084
148
149 2009-12-25  Zoltan Varga  <vargaz@gmail.com>
150
151         * aot-runtime.c (find_extra_method): Call mono_aot_wrapper_name only once,
152         instead of once for each module.
153
154 2009-12-22  Zoltan Varga  <vargaz@gmail.com>
155
156         * debugger-agent.c (ss_start): Implement step over for the last sequence
157         point in methods.
158
159         * mini.c (mono_save_seq_point_info): Don't link sequence points which don't
160         have the STEP_LOC flag set.
161
162         * aot-runtime.c (decode_klass_ref): Avoid a crash if a decode_klass_ref () call
163         fails. Fixes #566689.
164
165 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
166
167         * mini.c (mono_add_seq_point): New helper function.
168         (mono_save_seq_point_info): New function to save sequence point info, extracted
169         from mini_method_compile ().
170
171         * mini-<ARCH>.c: Call mono_add_seq_point to remember sequence points.
172
173         * mini.h (MonoSeqPointInfo): New structure containing information about
174         the sequence points of a JITted method.
175         (MonoBasicBlock): Add 'seq_points' and 'last_seq_point' fields. Remove unused
176         'bucket' field.
177
178         * mini.c debugger-agent.c aot-compiler.c aot-runtime.c: Change the way sequence
179         point information is stored, use a MonoSeqPointInfo structure instead of a
180         GPtrArray. For each seq point, compute a list of successor seq points.
181
182         * debugger-agent.c: Use the successor list to implement step-over more
183         efficiently: instead of single stepping until a different line/IL offset is
184         reached, place breakpoints into all successor seq points.
185
186         * mini.h: Bump AOT file format version.
187
188 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
189
190         * Makefile.am (AM_CFLAGS): Include LLVM_CFLAGS.
191
192         * mini-llvm.c: Avoid defining the __STDC_... macros if already defined.
193
194 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
195
196         * exceptions-ppc.c (mono_ppc_set_func_into_sigctx): Fix the cross-compiler
197         build.
198
199 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
200
201         * mini-x86.c (mono_arch_get_argument_info): Allocate memory for CallInfo using
202         alloca as g_malloc is not signal safe.
203
204 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
205
206         * tramp-x86.c (mono_arch_patch_callsite): Fix the call to
207         VALGRIND_DISCARD_TRANSLATIONS.
208
209         * *.c: Include mono/utils/memcheck.h, and remove #ifdef HAVE_VALGRIND_MEMCHECK_H
210         checks, they are no longer needed.
211
212         * exceptions-ppc.c (mono_ppc_set_func_into_sigctx): New helper function to set
213         a function into a sigctx which can handle function pointers.
214
215         * mini-ppc.c: Implement soft debugger support on ppc64.
216
217         * mini-ppc.c: Implement soft debugger support.
218
219 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
220
221         * mini-llvm.c: Handle OP_LADD_OVF_UN. Place all alloca's into the entry bb.
222
223 2009-12-17  Marek Habersack  <mhabersack@novell.com>
224
225         * mini.c (mono_get_runtime_build_info): include Mono version in
226         the returned value.
227
228         * driver.c (mono_main): VERSION is now included in the string
229         returned from mono_get_runtime_build_info()
230
231 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
232
233         * method-to-ir.c (mono_method_to_ir): Add support for CALLI with unmanaged
234         signatures. Fixes #565143.
235
236         * jit-icalls.c (mono_get_native_calli_wrapper): New JIT icall.
237
238 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
239
240         * aot-compiler.c (arch_emit_autoreg): Align code to 4 in the ppc case.
241
242 2009-12-16 Rodrigo Kumpera  <rkumpera@novell.com>
243
244         * mini-x86.h: Forgot to add a 0x to MONO_ARCH_MAX_FRAME_SIZE define
245         making max stack 10x smaller.
246
247 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
248
249         * mini.c (mono_resolve_patch_target): Comment out an assert which could be hit.
250
251 2009-12-15 Rodrigo Kumpera  <rkumpera@novell.com>
252
253         * method-to-ir.c (mini_emit_memcpy): Assert if size is too big.
254
255 2009-12-15 Rodrigo Kumpera  <rkumpera@novell.com>
256
257         * mini-x86.c (mono_arch_allocate_vars): Fail compilation if the frame size is
258         bigger than MONO_ARCH_MAX_FRAME_SIZE.
259
260         * mini-x86.c (mono_arch_emit_prolog): Handle huge frames.
261
262         * mini-x86.h: Define MONO_ARCH_MAX_FRAME_SIZE to be 1Mb.
263
264         * mini-amd64.c / mini-amd64.h: Same fixes as of above.
265
266         * mini.c (mini_method_compile): Check if mono_arch_allocate_vars failed
267         the compilation.
268
269 2009-12-14  Miguel de Icaza  <miguel@novell.com>
270
271         * method-to-ir.c (mono_method_to_ir): CEE_UNUSUED opcodes now
272         raise an invalid program exception.   
273
274         For other opcodes that we might not handle use a g_warning and
275         raise the exception.   Beats termination.
276
277         Fixes #561724
278
279 2009-12-14  Zoltan Varga  <vargaz@gmail.com>
280
281         * method-to-ir.c (mono_emit_rgctx_method_call_full): Fix a warning.
282
283         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix the LLVM support
284         by merging the LLVM and !MAP_32BIT cases.
285
286 2009-12-13 Jonathan Chambers <joncham@gmail.com>
287
288         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Handle a NULL
289         sigctx being passed in, as we have no CONTEXT available in the APC.
290
291         (mono_debugger_agent_cleanup): Use explicit cond wait implementation
292         for now.
293
294         Code contributed under MIT/X11 license.
295
296 2009-12-13  Zoltan Varga  <vargaz@gmail.com>
297
298         * method-to-ir.c mini-llvm.c: Fix support for monitor enter/exit trampolines
299         in the LLVM backend on AMD64.
300
301         * aot-runtime.c (decode_eh_frame): Initialize the clauses from the info in the
302         FDE.
303
304         * unwind.c (mono_unwind_decode_fde): Implement decoding of a couple more formats.
305
306         * mini-llvm.c: Export mono_personality for AOT.
307
308         * mini.c (mini_method_compile): Fix some problems with llvm+aot+clauses.
309
310         * mini-ops.h (OP_IMPLICIT_EXCEPTION): New opcode marking the place where an
311         implicit exception can occur.
312
313         * ir-emit.h (MONO_EMIT_NEW_IMPLICIT_EXCEPTION): New macro to emit an
314         OP_IMPLICIT_EXCEPTION instruction.
315
316         * ir-emit.h (MONO_EMIT_NEW_CHECK_THIS): New macro.
317
318         * method-to-ir.c: Use MONO_EMIT_NEW_CHECK_THIS in a few places.
319
320         * mini-llvm.c: Handle OP_IMPLICIT_EXCEPTION by disabling llvm if it occurs
321         inside a protected block.
322
323         * mini-llvm.c: Revert the last change, the signature of monitor entry/exit
324         trampolines doesn't include the argument.
325
326         * mini-llvm.c (mono_llvm_emit_method): Enable calls to monitor entry/exit
327         trampolines on amd64.
328
329         * mini-amd64.h (MONO_ARCH_MONITOR_OBJECT_REG): Use MONO_AMD64_ARG_REG1 instead
330         of RDI.
331
332         * mini.c (mini_method_compile): Add some comments as to why LLVM is currently
333         disabled for methods with clauses.
334
335         * mini-llvm.c: Enable support for catch clauses.
336
337         * mini-exceptions.c (mono_resume_unwind): New function to resume unwinding at the
338         end of an LLVM compiled finally clause.
339         (mono_handle_exception_internal): Save the exception handling state in TLS
340         before calling an LLVM compiled finally clause, so mono_resume_unwind () can
341         resume unwinding from that point.
342
343         * unwind.c (mono_unwind_get_ops_from_fde): Rename this to
344         mono_unwind_decode_fde, decode the Language Specific Data Area (LSDA) too,
345         to obtain the addresses of the exception handling regions.
346
347         * mini-llvm.c: Add beginnings of support for exception handling, currently only
348         finally clauses are supported.
349
350         * mini.c (mini_method_compile): Add support for LLVM code with exception
351         handlers.
352
353 2009-12-12  Zoltan Varga  <vargaz@gmail.com>
354
355         * mini-llvm.c (mono_llvm_emit_method): Allocate the 'pindexes' array with the
356         proper size.
357
358 2009-12-12  Zoltan Varga  <vargaz@gmail.com>
359
360         * debugger-agent.c: Encode the this argument of vtype methods as a struct, not
361         as a primitive type.
362
363 2009-12-11  Zoltan Varga  <vargaz@gmail.com>
364
365         * driver.c: Applied patch from Matt McClellan (matt@mc-c.net). Add a check
366         for 2 parameter sched_setaffinity in older glibc versions. Fixes
367         #564000.
368
369 2009-12-11  Marek Habersack  <mhabersack@novell.com>
370
371         * method-to-ir.c (mini_redirect_call): do not redirect the
372         InternalAllocateStr internal call if string profiling is enabled.
373
374 2009-12-10  Zoltan Varga  <vargaz@gmail.com>
375
376         * aot-compiler.c (add_wrappers): Avoid generating synchronized wrappers for
377         generic methods.
378
379         * unwind.h: Rename this to mini-unwind.h to avoid conflicts with the gcc
380         unwind.h header file.
381
382         * tramp-x86.c (mono_arch_patch_callsite): Patch the code when using valgrind,
383         newer valgrind versions seems to handle this fine.
384
385 2009-12-09  Zoltan Varga  <vargaz@gmail.com>
386
387         * debugger-agent.c (start_runtime_invoke): Fix a crash if this is called
388         on the debugger thread.
389
390 2009-12-08  Zoltan Varga  <vargaz@gmail.com>
391
392         * mini-llvm.c (mono_llvm_emit_method): Add more SIMD opcodes.
393
394         * mini.c (mono_print_method_from_ip): Fix the lookup of trampolines.
395
396         * mini-codegen.c (mono_local_regalloc): Allow non-call opcodes with cloc:c.
397
398         * cpu-<ARCH>.md: Make call_handler clob:c.
399
400         * mini.c: Reenable SSA for methods with clauses.
401
402         * mini.c (mini_method_compile): Disable SSA for now for methods with clauses,
403         as it causes failures on x86.
404
405 2009-12-08  Sebastien Pouliot  <sebastien@ximian.com>
406
407         * driver.c: Fail gracefully with --compile-all if mono_method_signature
408         returns NULL (e.g. a bad assembly).
409
410 2009-12-08  Geoff Norton  <gnorton@novell.com>
411
412         * debugger-agent.c:  Refactor the mono_runtime_invoke guarding against
413         stepping out into native code.  There were issues with nested invokes
414         like .cctors.
415
416 2009-12-07  Zoltan Varga  <vargaz@gmail.com>
417
418         * mini.c (mini_method_compile): Do the disable_llvm checks early
419         and avoid the LLVM compile pass if the checks fail.
420
421         * mini.c ssa.c abcremoval.c: Enable SSA for methods with exception clauses.
422
423         * mini-llvm.c: Put our methods/globals into the 'llvm.used' array, so the
424         LLVM optimizations don't try to remove them.
425
426         * aot-compiler.c (emit_llvm_file): Save the result of opt into a
427         different file so the original remains.
428
429 2009-12-06  Zoltan Varga  <vargaz@gmail.com>
430
431         * mini-llvm.c mini.c: Fix alignment issues with SIMD vars.
432
433         * aot-runtime.c (decode_arm_exidx): Handle most descriptors created by gas.
434
435         * aot-runtime.c (decode_arm_exidx): Refactor this into two functions, add
436         support for non-inline unwind descriptors.
437
438 2009-12-07  Geoff Norton  <gnorton@novell.com>
439
440         * debugger-agent.c:  Darwin can colesce signals, so we need to handle
441         the interrupt_count slightly differently.  Native threads were never
442         marked as resumed.
443
444 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
445
446         * aot-runtime.c (decode_arm_exidx): New function to initialize a MonoJitInfo
447         based on the contents of the ARM .exidx section. Not yet used since llvm doesn't
448         yet generate this info.
449
450         * mini-llvm.c: Fix the conversion of call results if they are unsigned.
451
452         * debugger-agent.c (buffer_add_value): Treat I/U as a valuetype, so the
453         client can distinguish between intptrs and longs.
454
455 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
456
457         * aot-compiler.c (emit_trampoline): Emit the trampoline info into the global
458         blob.
459
460         * aot-runtime.c (load_function): Update after the change above.
461
462         * mini.h: Bump AOT file format version.
463
464         * method-to-ir.c (mono_method_to_ir): Disallow the delegate optimization
465         if the delegate class is dynamic.
466
467         * method-to-ir.c (handle_delegate_ctor): Allow the method_code optimization
468         in gshared code too using the new rgctx info type
469         MONO_RGCTX_INFO_METHOD_DELEGATE_CODE.
470
471 2009-12-04  Geoff Norton  <gnorton@novell.com>
472
473         * debugger-agent.c: When doing a func-eval invoke on a suspended runtime,
474         we need to track the original suspend count so the thread properly
475         wakes up in resume_thread.
476
477 2009-12-04  Zoltan Varga  <vargaz@gmail.com>
478
479         * method-to-ir.c (handle_delegate_ctor): Add support for using this from gshared
480         code.
481
482         * generics.cs: Add a test.
483
484         * method-to-ir.c (emit_get_rgctx_method): Make this work even if context_used
485         is 0. Simplify a lot of code using this.
486
487         * mini-trampolines.c (mono_delegate_trampoline): Call
488         mono_create_static_rgctx_trampoline () before saving the final address in
489         delegate->method_code, to avoid calling it each time a delegate is first called.
490
491         * method-to-ir.c (mono_method_to_ir): Allow fast delegate creation for methods
492         which need static rgctx trampolines.
493
494         * mini-trampolines.c (mono_create_static_rgctx_trampoline): Use a cache
495         keyed on the method+addr pair, since addr could be either the method addr or
496         an unbox trampoline in the AOT case. Fixes #560246.
497
498 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
499
500         * mini.c (mini_method_compile): Call handle_exception_clauses () in the same
501         place it was called before too.
502
503 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
504
505         * mini.c (mono_jit_runtime_invoke): Avoid the call to mono_class_setup_vtable ()
506         if no security manager is present, to speed up the AOT case. Call
507         mono_class_vtable () full with raise_on_error == TRUE instead.
508
509 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
510
511         * mini.c (mini_method_compile): Call handle_exception_clauses earlier so
512         the local optimization passes can take its result into account. Fixes
513         #559876.
514
515         * exceptions.cs: Add a test.
516
517 2009-01-24  Steven Munroe  <munroesj@us.ibm.com>
518
519         This patch is contributed under the terms of the MIT/X11 license
520
521         * cpu-ppc64.md (load_memindex): Add loadi8_memindex.
522
523 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
524
525         * mini.h (MonoInst): Remove unused 'ssa_op' field.
526
527         * debugger-agent.c: Rework the handling of stack traces of running threads to
528         avoid crashes if compute_frames () tries to walk the stack of running thread.
529
530         * mini.c (mono_print_method_from_ip): Use mini_jit_info_table_find.
531
532         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): Set frame->lmf.
533
534         * mini.h (StackFrameInfo): Add an 'lmf' field.
535
536 2009-12-02  Zoltan Varga  <vargaz@gmail.com>
537
538         * debugger-agent.c (suspend_current): Always set really_suspended.
539
540         * debugger-agent.c (clear_event_request): Clear method entry/exit requests too.
541
542         * exceptions-x86.c (mono_arch_get_restore_context): Restore EAX too.
543
544 2009-12-01  Zoltan Varga  <vargaz@gmail.com>
545
546         * debugger-agent.c (vm_commands): Don't allow invokes on threads which are not
547         really suspended.
548
549 2009-12-01  Zoltan Varga  <vargaz@gmail.com>
550
551         * cpu-ppc64.md (store_memindex): Add storei8_memindex.
552
553 2009-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
554
555         * mini-trampolines.c: Fix MSVC build.
556
557 2009-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
558
559         * mini-trampolines.c: Check for mono_method_get_vtable_slot failures.
560
561 2009-11-30  Zoltan Varga  <vargaz@gmail.com>
562
563         * mini-arm.c (mono_arch_lowering_pass): Fix an assert which is hit when
564         the instruction following an OP_FCOMPARE is optimized away.
565
566 2009-11-30  Zoltan Varga  <vargaz@gmail.com>
567
568         * aot-compiler.c (arch_emit_autoreg): Extract the auto-registration code from
569         emit_autoreg () into this arch-specific function.
570
571         * aot-compiler.c (emit_exception_debug_info): Don't emit the length of the
572         code, it is no longer needed.
573
574         * aot-runtime.c (decode_exception_debug_info): Don't read the code length.
575
576         * mini.h: Bump AOT file format version.
577
578         * aot-runtime.c (mono_aot_find_jit_info): Compute the length of the method
579         using the sorted_code_offsets array, instead of reading it from the
580         exception debug info.
581         (load_method): Call mono_aot_find_jit_info instead of
582         decode_exception_debug_info ().
583
584         * aot-compiler.c (emit_exception_debug_info): Emit whenever the method was
585         LLVM compiled as a flag.
586
587 2009-11-29  Zoltan Varga  <vargaz@gmail.com>
588
589         * debugger-agent.c (resume_thread): Fix a warning.
590
591         * aot-compiler.c: Add an option to set the number of static rgctx trampolines
592         generated.
593
594 2009-11-28  Zoltan Varga  <vargaz@gmail.com>
595
596         * aot-compiler.c aot-runtime.c: Get rid of a few global symbols, move their
597         contents to MonoAotFileInfo.
598
599 2009-11-27  Zoltan Varga  <vargaz@gmail.com>
600
601         * aot-compiler.c aot-runtime.c: Reorganize the AOT file format once again.
602         Put all binary data into a giant blob, similarly to the way .net assemblies
603         store binary data. Emit offset tables in a compact form to reduce their size.
604
605         * mini.h: Bump AOT file format version.
606
607         * aot-compiler.c (emit_globals_table): Use temp_prefix instead of .L in a few
608         places.
609
610         * aot-compiler.c (emit_globals_table): Emit a hash table for the globals, to
611         avoid linear searches at runtime.
612
613         * aot-runtime.c (find_symbol): Update this to use the hash.
614
615         * mini.h: Bump AOT file format version.
616
617 2009-11-26  Zoltan Varga  <vargaz@gmail.com>
618
619         * aot-compiler.c (emit_klass_info): Save whenever the class has a generic
620         container.
621
622         * aot-runtime.c (decode_cached_class_info): Set the is_generic_container field
623         too.
624
625         * aot-compiler.c (mono_compile_assembly): Add a 'stats' option to print out
626         the distribution of got slot types.
627
628         * mini.h (MonoDebugOptions): Add 'explicit_null_checks' option.
629
630         * method-to-ir.c: Add support for generating explicit null checks.
631
632 2009-11-25  Zoltan Varga  <vargaz@gmail.com>
633
634         * debugger-agent.c (vm_commands): Implement EXIT by invoking Environment.Exit ()
635         on a random thread if possible.
636
637         * aot-runtime.c (mono_aot_plt_resolve): Clean up the handling of function
638         descriptors a bit, add comments, handle RGCTX_FETCH/GENERIC_CLASS_INIT_TRAMPOLINE
639         correctly.
640
641         * exceptions-ppc.c (mono_arch_find_jit_info_ext): Use mgreg_t as the type of
642         regs. Pass the real size of the regs array to mono_unwind_frame ().
643
644         * unwind.c (mono_unwind_frame): Remove an incorrect assert, add more correct
645         ones instead.
646
647 2009-11-24  Geoff Norton  <gnorton@novell.com>
648
649         * mini-darwin.c: Work around apple bug rdar://7209349  See
650         http://openradar.appspot.com/7209349 for details.  Synopsis,
651         CoreFoundation SIGTRAP's if you dlopen it off the main thread if its
652         never been initialized before.
653
654 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
655
656         * tramp-arm.c: Use blx instead of mov pc, reg to improve support for thumb.
657
658         * mini-arm.c (mono_arm_thumb_supported): New helper function.
659
660 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
661
662         * cfold.c (mono_constant_fold_ins): Fix a problem in the previous change,
663         OP_SHL_IMM is not 32 bit.
664
665 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
666
667         * aot-compiler.c (encode_patch): Fix the encoding of R8 on big-endian systems.
668
669 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
670
671         * aot-compiler.c: Avoid infinite recursion when generic virtual recursion is
672         encountered.
673
674         * debugger-agent.c (resume_vm): Signal the suspend_cond even if suspend_count
675         > 0 since some threads can resume if their resume_count is > 0.
676         (invoke_method): Avoid reading freed memory.
677
678         * debugger-agent.c (process_suspend): Extract the suspend code from
679         process_single_step_inner () to a separate function. Rework the code to prevent
680         races between this function and thread interrupts.
681
682         * debugger-agent.c (suspend_current): Check the resume_count field instead
683         of resume_one so suspends+resumes during single threaded invokes work
684         correctly.
685
686 2009-11-23  Zoltan Varga  <vargaz@gmail.com>
687
688         * aot-compiler.c (emit_llvm_file): Enable some llvm optimizations which seem
689         to make the generated code smaller.
690
691         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Add a code
692         sequence generated by recent LLVM versions.
693
694         * mini-llvm.c: Add support for a few simple cases which weren't supported
695         before.
696
697         * mini-trampolines.c (mono_magic_trampoline): Don't call
698         mono_arch_get_vcall_slot () when llvm is enabled.
699
700         * aot-compiler.c (emit_llvm_file): Add code to run the 'opt' llvm tool.
701
702         * mini-trampolines.c (mono_magic_trampoline): Extract the bulk of this function
703         into a new function called common_call_trampoline () which is used by the
704         llvm vcall trampoline as well.
705
706         * debugger-agent.c: Implement single threaded invokes.
707
708         * debugger-agent.c: Revert change which broke the agent on linux.
709
710         * method-to-ir.c (inline_method): Prevent infinite recursion. Fixes
711         #557606.
712
713         * generics.cs: Add a test.
714
715 2009-11-22  Zoltan Varga  <vargaz@gmail.com>
716
717         * debugger-agent.c: Fix the cygwin build.
718
719 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
720
721         * cprop.c: Remove this unused file.
722
723 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
724
725         * cfold.c (mono_constant_fold_ins): Fix constant folding of shr_imm. Fixes
726         #557262.
727
728         * basic.cs: Add a test.
729
730 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
731
732         * method-to-ir.c (mono_method_to_ir): Use mono_use_llvm instead of ENABLE_LLVM
733         in one more place.
734
735 2009-11-20  Zoltan Varga  <vargaz@gmail.com>
736
737         * mini.c mini-trampolines.c driver.c: Add a 'mono_use_llvm' flag to control
738         whenever the runtime uses LLVM code. Add a '--llvm' command line option to set
739         it. Use this flag to control llvm related code paths instead of #ifdef
740         ENABLE_LLVM, so a runtime configured without --enable-llvm can use LLVM compiled
741         AOT code.
742
743         * aot-runtime.c aot-compiler.c: Add a 'flag' field to MonoAotFileInfo.
744
745         * mini.h: Bump AOT file format version.
746
747         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline_full): These
748         receive their argument in MONO_ARCH_VTABLE_REG, not in the first argument reg.
749
750         * debugger-agent.c (create_event_list): Fix a crash if an empty assembly list
751         was used as an assembly filter.
752
753 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
754
755         * unwind.c: Fix support for ppc.
756
757         * exceptions-ppc.c (mono_arch_find_jit_info): Change this to use dwarf frame
758         unwind info. Change to the mono_arch_find_jit_info_ext () interface.
759
760 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
761
762         * mini-ppc.c (mono_arch_emit_prolog): Fix a copy-paste error to fix the ppc64
763         port.
764         (mono_arch_cpu_init): Don't set cpu_hw_flags to 0 at the end, this was somehow
765         added by the ps3 changes.
766
767 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
768
769         * mini-gc.c: Resurrect this, so at least it compiles.
770
771         * debugger-agent.c (assembly_commands): Implement GET_NAME command.
772
773 2009-11-18  Zoltan Varga  <vargaz@gmail.com>
774
775         * debugger-agent.c (mono_debugger_agent_handle_exception): Pass a MonoJitInfo to
776         create_event_list () so assembly filters can be used.
777
778         * exceptions-ppc.c (mono_arch_find_jit_info): Fix the restoration of registers
779         from the LMF.
780
781 2009-11-17  Zoltan Varga  <vargaz@gmail.com>
782
783         * debugger-agent.c (mono_debugger_agent_breakpoint_hit): Fix a warning.
784         (mono_debugger_agent_thread_interrupt): Make this return FALSE if the agent
785         is disabled.
786
787         * aot-compiler.c (add_generic_instances): Emit instances of common generic
788         classes for char/bool too.
789
790         * debugger-agent.c (DebuggerTlsData): Honor the DISABLE_SOFT_DEBUG option.
791
792         * debugger-agent.c (DebuggerTlsData): Add a 'really_suspended' flag, not yet
793         used.
794
795         * debugger-agent.c: Add some definitions to make backporting to 2.6 easier.
796         Fix warnings.
797
798 2009-11-15  Andreas Faerber  <andreas.faerber@web.de>
799
800         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Signature fix.
801         
802         Code contributed under MIT/X11 license.
803
804 2009-11-14  Zoltan Varga  <vargaz@gmail.com>
805
806         (mono_debugger_agent_thread_interrupt): Save the context so stacktraces for
807         threads in native code work.
808
809         * debugger-agent.c: Pass the 'flags' argument to VM_INVOKE_METHOD earlier in
810         the parameter list, so it can be acted upon by vm_commands (). Bump protocol
811         version.
812
813 2009-11-13 Jonathan Chambers <joncham@gmail.com>
814
815         * debugger-agent.c: Implementation for Windows platform.
816
817         * mini-x86.c: Add support for Windows. Use mono-* synchronization
818         primitives. Use SEH to implement breakpoints and single stepping.
819
820         * mini-x86.h: Enable soft debugger on Windows.
821
822         Code contributed under MIT/X11 license.
823
824 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
825
826         * mini-amd64.c (emit_call_body): Disable usage of near calls when running
827         under XEN. Fixes #522894.
828
829         * patch-info.h: Add LLVM_IMT_TRAMPOLINE.
830
831         * mini-llvm.c aot-compiler.c aot-runtime.c mini.c: Add support for making
832         interface calls in LLVM AOT code.
833
834         * aot-compiler.c mini-llvm.c: Abort llvm compilation if a non-encodable patch
835         is found.
836
837         * mini-llvm.c: Add support for OP_VPHI.
838
839         * objects.cs: Add a test.
840
841 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
842
843         * debugger-agent.c (mono_debugger_agent_single_step_event): Avoid a crash if
844         this is called on the debugger thread.
845
846 2009-11-12  Zoltan Varga  <vargaz@gmail.com>
847
848         * mini-llvm.c: Add soft-float support.
849
850         * method-to-ir.c (mono_decompose_soft_float): Restart after decomposing an
851         FCALL which returns an R4.
852
853         * driver.c (mono_main): Add a missing '\n'.
854
855         * mini-trampolines.c (mono_create_llvm_imt_trampoline): Fix the build on
856         platforms which doesn't support the LLVM IMT trampoline.
857
858 2009-11-11  Zoltan Varga  <vargaz@gmail.com>
859
860         * mini-llvm.c (mono_llvm_emit_method): Fix LOCALLOC.
861
862         * mini-llvm-cpp.cpp: Update to latest LLVM SVN.
863
864         * mini-llvm.c (mono_llvm_emit_method): Avoid creating plt entries for
865         virtual calls.
866
867         * aot-runtime.c: Don't define HAVE_DL_ITERATE_PHDR, configure now does that.
868
869 2009-11-10  Zoltan Varga  <vargaz@gmail.com>
870
871         * aot-compiler.c aot-runtime.c: Change how mono_arch_find_jit_info () works.
872         Instead of emitting a method_order table, sort the contents of the code_offsets
873         table and do a binary search in the sorted table. The previous approach doesn't
874         work with LLVM which emits methods in a arbitrary order.
875
876         * aot-runtime.c: Add support for creating MonoJitInfo structures by searching
877         in the .eh_frame section in ELF files.
878
879         * mini.h: Bump corlib file format version.
880
881         * mini-llvm.c aot-compiler.c: Add support for AOT to the LLVM back end.
882
883         * exceptions-arm.c (mono_arch_get_call_filter_full): Update after the
884         LDMIA->LDM macro name change.
885
886 2009-11-09  Zoltan Varga  <vargaz@gmail.com>
887
888         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Fix and enable this for
889         x86.
890
891         * mini-llvm-cpp.cpp (JITMemoryManager): Fix compilation with LLVM 2.7
892         SVN.
893
894         * aot-compiler.c: Ditto.
895
896         * mini-arm.c (mono_arch_allocate_vars): Fix the previous change by passing
897         &align to mini_type_stack_size_full ().
898
899         * mini-arm.c (mono_arch_emit_prolog): Implement support for varargs.
900
901         * mini-ops.h: Add documentation for the OP_ARGLIST opcode.
902
903 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
904
905         * mini-arm.c: Compute the stack space used by arguments using
906         mini_type_stack_size_full ().
907
908 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
909
910         * optflags-def.h: Remove dead TREEPROP optimization.
911
912 2009-11-08  Rodrigo Kumpera  <rkumpera@novell.com>
913
914         * mini-ppc.h: Make mono compiler under FreeBSD/ppc64. 
915
916         Patch by Justin Hibbits <chmeeedalf@gmail.com>.
917
918 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
919
920         * driver.c (mono_jit_parse_options): New public API function to parse options
921         as done by the runtime executable.
922
923         * debugger-agent.c (buffer_add_cattrs): Fix reading an uninitialized variable
924         when handling named arguments.
925
926 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
927
928         * mini-arm.c: Implement support for returning vtypes in registers, fix support
929         for passing small vtypes in registers, make the CallInfo structures more
930         similar to the code on the other platforms.
931
932         * mini-arm.c (mono_arch_allocate_vars): Align small vtypes to 4 bytes too since
933         the code in the prolog requires it.
934
935 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
936
937         * mini-arm.c debugger-agent.c: Android changes from Koushik K. Dutta
938         (koush@koushikdutta.com).
939
940         * mini-arm.c (handle_thunk): Add a domain argument to control the domain
941         where the thunk memory should be allocated from. Fixes appdomain unloading
942         on arm.
943
944 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
945
946         * mini-arm.c exceptions-arm.c: Make ctx->regs map directly to the 16 hardware
947         registers, instead of r4..r11,ip,lr. Make restore_context () restore r0..r3 too.
948
949 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
950
951         * mini-amd64.c (mono_arch_output_basic_block): Don't allow OP_SEQ_POINT in
952         AOT, as it is not implemented yet.
953
954         * mini-x86.c (mono_arch_output_basic_block): Ditto.
955
956 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
957
958         * debugger-agent.c: Fix windows build.
959
960 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
961
962         * debugger-agent.c (debugger_thread): Call mono_set_is_debugger_attached ()
963         after the client connects/disconnects.
964
965         * debugger-agent.c: Add an 'onthrow' option to start the debugger agent
966         when an exception of a given type is thrown.
967
968         * debugger-agent.c: Add a 'onuncaught' option to start the debugger agent
969         only on an uncaught exception.
970
971         * mini-exceptions.c: Notify the debugger agent on an uncaught exception.
972
973         * debugger-agent.c: Add a 'launch' option.
974
975 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
976
977         * debugger-agent.c: Add a 'timeout' option.
978
979 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
980
981         * debugger-agent.c: Implement the 'server' and 'suspend' options supported by
982         the JDWP agent.
983
984 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
985
986         * debugger-agent.c (set_breakpoint): Emit a log message.
987
988 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
989
990         * mini-arm.c: Fix the arm build.
991
992 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
993
994         * aot-compiler.c: don't leak the value returned from
995         mono_type_full_name().
996
997 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
998
999         * debugger-agent.c: defer including mono-mutex.h until we know the
1000         agent is supported.
1001
1002 2009-11-04 Jonathan Chambers <joncham@gmail.com>
1003
1004         * debugger-agent.c: Changes to build on windows. Use mono-mutex instead
1005         of pthreads directly.
1006
1007         * mini.c (mono_sigfpe_signal_handler): Changed signature of Windows
1008         exception handlers. Pass info argument.
1009
1010         * mini.h: Adjust signatures of soft debugger functions to pass void*
1011         instead of siginfo_t. Adjust SIG_HANDLER_SIGNATURE on Windows.
1012
1013         * mini-amd64.c (mono_arch_is_single_step_event): Adjust signature to pass void*
1014         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
1015         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
1016         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
1017
1018         * mini-amd64.h: Adjust MonoW32ExceptionHandler signature.
1019
1020         * mini-x86.c (mono_arch_is_single_step_event): Adjust signature to pass void*
1021         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
1022         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
1023         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
1024
1025         * mini-x86.h: Adjust MonoW32ExceptionHandler signature.
1026
1027         * exceptions-x86.c: Adjust W32_SEH_HANDLE_EX for new signature.
1028
1029         * exceptions-amd64.c: Adjust W32_SEH_HANDLE_EX for new signature.
1030
1031         * mono-semaphore.h: Skeleton implementation for Windows.
1032
1033         Code contributed under MIT/X11 license.
1034
1035 2009-11-04 Jonathan Chambers <joncham@gmail.com>
1036
1037         * simd-intrinsics.c (simd_intrinsic_emit_setter): Unfix my fix.
1038
1039         Code contributed under MIT/X11 license.
1040
1041 2009-11-04 Jonathan Chambers <joncham@gmail.com>
1042
1043         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix windows build.
1044
1045         Code contributed under MIT/X11 license.
1046
1047 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
1048
1049         * aot-compiler.c (mono_save_xdebug_info): Bump the threshold for flushing
1050         debug info to 100 because 10 still slows down gdb too much.
1051
1052         * method-to-ir.c (mono_method_to_ir): Avoid rethrowing thread abort exceptions
1053         inside runtime invoke wrappers. This avoids the need to call ResetAbort () on
1054         them in the wrappers.
1055
1056 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
1057
1058         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
1059
1060         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix a warning.
1061
1062         * aot-runtime.c (mono_aot_get_method): Refactor some code into a new helper
1063         function mono_aot_get_array_helper_from_wrapper ().
1064
1065         * aot-compiler.c (add_generic_class): Refactor the code a bit, really emit
1066         array helper methods.
1067
1068 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
1069
1070         * simd-intrinsics.c (load_simd_vreg): Add extra argument to signal if
1071         the value was loaded from memory.
1072
1073         * simd-intrinsics.c (simd_intrinsic_emit_setter): Store back to memory if
1074         the value was loader from there.
1075
1076         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Fail correctly for Shuffle
1077         without constant swizzle.
1078
1079 2009-11-02 Jonathan Chambers <joncham@gmail.com>
1080
1081         * mini-amd64.c: Put soft debugger functions behind a
1082         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
1083
1084         * mini-amd64.h: disable the soft debugger in windows.
1085
1086         Code contributed under MIT/X11 license.
1087
1088 2009-11-02 Jonathan Chambers <joncham@gmail.com>
1089
1090         * mini-x86.c: Put soft debugger functions behind a
1091         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
1092
1093         Code contributed under MIT/X11 license.
1094
1095 2009-11-02 Jonathan Chambers <joncham@gmail.com>
1096
1097         * exceptions-x86.c (win32_handle_stack_overflow): Fix parameters
1098         to mono_arch_find_jit_info_ext.
1099
1100         Code contributed under MIT/X11 license.
1101
1102 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
1103
1104         * debugger-agent.c: Include netinet/in.h to fix the bsd build.
1105
1106         * debugger-agent.c: Add support for filtering events by assemblies.
1107
1108         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Return false if
1109         the agent is not enabled.
1110
1111 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
1112
1113         * exceptions-x86.c: hopefully last change to fix the windows build.
1114         This one courtesy of Jonathan Chambers.
1115
1116 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
1117
1118         * debugger-agent.c: remove unused function.
1119
1120 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
1121
1122         * debugger-agent.c: add #ifdefs for a few header files.
1123         * mini-x86.h: disable the soft debugger in windows.
1124         Step 1 of 2 to make this compile on windows with gcc.
1125
1126 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
1127
1128         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Comment this out for now
1129         as it breaks the build.
1130
1131 2009-07-01  Zoltan Varga  <vargaz@gmail.com>
1132
1133         Merge the soft debugger branch.
1134
1135         * debugger-agent.h debugger-agent.c: New files containing the soft
1136         mode debugger module.
1137
1138         * method-to-ir.c (mono_method_to_ir): Generate OP_SEQ_POINT opcodes
1139         at the appropriate locations.
1140
1141         * mini-<ARCH>.c (mono_arch_output_basic_block): Handle OP_SEQ_POINT
1142         opcode.
1143
1144         * mini-<ARCH>.c: Add new arch-specific functions to set/clear breakpoints,
1145         enable/disable single stepping.
1146
1147         * exceptions-<ARCH>.c (mono_arch_find_jit_info_ext): New stack unwinding api
1148         which returns all information in a StackFrameInfo structure, and can handle the
1149         LMF frames added by the debugger.
1150
1151         * mini-<ARCH>.h (MonoLMFExt): New structure containing additional information
1152         about an LMF frame.
1153
1154         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): New stack
1155         walker function which works on a specific thread and passes a StackFrameInfo
1156         structure to its callback.
1157
1158         * mini.c (mini_init): Initialize the debugger agent.
1159
1160         * aot-compiler.c aot-runtime.c: Add soft-debug support.
1161
1162         * mini-ops.h: Add OP_SEQ_POINT opcode.
1163
1164         * driver.c (mono_main): Add new '--debugger-agent' option for passing
1165         arguments to the debugger agent.
1166
1167 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
1168
1169         * mini.c (mini_method_compile): Disable llvm for methods with an lmf here to
1170         speed things up.
1171
1172         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOCALLOC.
1173
1174         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Implement this for x86.
1175
1176         * mini.c (mini_init): Avoid using the IMT trampoline in the LLVM case.
1177
1178         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add a static rgctx trampoline
1179         if needed.
1180         (mono_create_llvm_imt_trampoline): New function to create a trampoline which
1181         sets the IMT argument and makes a virtual call.
1182
1183         * mini-llvm.c: Enable interface calls using the llvm imt trampoline.
1184
1185 2009-11-01  Zoltan Varga  <vargaz@gmail.com>
1186
1187         * Makefile.am (llvm_sources): Enable the llvm option since it no longer breaks
1188         the windows build.
1189
1190 2009-10-30  Zoltan Varga  <vargaz@gmail.com>
1191
1192         * mini.c (mini_cleanup): Call profiler shutdown before shutting down the
1193         runtime. Fixes #551228.
1194
1195 2009-10-29  Zoltan Varga  <vargaz@gmail.com>
1196
1197         * mini-x86.c (mono_arch_output_basic_block): Fix % 1. Fixes #550970.
1198
1199         * basic.cs: Add a test.
1200
1201         * method-to-ir.c (mono_method_to_ir): Use EMIT_NEW_LOAD_MEMBASE_TYPE to
1202         load vtypes instead if OP_LOADV_MEMBASE in the implementation of
1203         CONSTRAINED. Fixes #550964.
1204
1205         * generics.cs: Add a test.
1206
1207 2009-10-28  Mark Probst  <mark.probst@gmail.com>
1208
1209         * mini-posix.c (add_signal_handler): Use
1210         mono_gc_get_suspend_signal() instead of GC_get_suspend_signal().
1211
1212 2009-10-28 Jerry Maine <crashfourit@gmail.com>
1213
1214         Contributed under the terms of the MIT/X11 license by
1215         Jerry Maine <crashfourit@gail.com>.
1216
1217         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
1218         sse4a for simd intrinsics.
1219
1220         * mini-amd64.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
1221         sse4a for simd intrinsics.
1222
1223 2009-10-27  Zoltan Varga  <vargaz@gmail.com>
1224
1225         * ir-emit.h method-to-ir.c: Change a few _IMM macros to assign to inst_imm
1226         instead of inst_p1 which is not the same on ILP32 platforms.
1227
1228 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
1229
1230         * mini-ppc.c (mono_arch_emit_prolog): Load the current got address,
1231         not the mscorlib one before calling mono_get_lmf_addr.
1232
1233         * tramp-ppc.c (mono_arch_create_trampoline_code_full): Fix the storing
1234         of the ip to the LMF.
1235
1236         * method-to-ir.c (mono_method_to_ir): Fix the handling of the
1237         immediate in the op->op_imm optimization.
1238
1239         * mini-ppc.c: Add a 'vtregs' field to ArgInfo to make the code easier to
1240         understand. VTypes now work, but are not abi compliant, as they are
1241         split into 4 byte parts instead of 8.
1242         (emit_memcpy): Fix the unrolled case to work on the PS3.
1243
1244         * mini-ppc.c (get_delegate_invoke_impl): Fix this for the PS3.
1245
1246         * aot-compiler.c (mono_compile_assembly): Make the autoreg option
1247         the default when static linking.
1248
1249         * mini-ppc.c (mono_arch_emit_prolog): Fix handling of I8 arguments.
1250
1251         * aot-compiler.c: Add an autoreg option to automatically register
1252         statically linked aot modules using ELF .ctors.
1253
1254         * genmdesc.pl: Add __ppc64__ to allowed defines.
1255
1256 2009-10-25  Zoltan Varga  <vargaz@gmail.com>
1257
1258         * mini-posix.c (add_signal_handler): Delay the GC suspend signal while
1259         executing a SIGSEGV handler on an altstack, since libgc can't handle that.
1260
1261 2009-10-24  Mark Probst  <mark.probst@gmail.com>
1262
1263         * exceptions-x86.c (mono_arch_find_jit_info): Fix build.
1264
1265 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
1266
1267         * mini-exceptions.c (mini_jit_info_table_find): Add an 'out_domain' argument
1268         which will contain the domain where the method was found.
1269
1270         * exceptions-<ARCH>.c mini-exceptions.c: Update callers of
1271         mini_jit_info_table_find ().
1272
1273         * aot-compiler.c (xdebug_end_emit): Remove so stray debug code.
1274
1275         * branch-opts.c (mono_if_conversion): Avoid running deadce if it is disabled.
1276
1277 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
1278
1279         * mini-x86.c (mono_arch_emit_prolog): Disable aot for methods with save_lmf
1280         set, its not supported yet.
1281
1282 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
1283
1284         * aot-runtime.c (mono_aot_get_method): Avoid asserting if a array generic
1285         iface wrapper is not found.
1286         (mono_aot_get_method): Ditto for GetGenericValueImpl.
1287
1288 2009-10-21  Zoltan Varga  <vargaz@gmail.com>
1289
1290         * aot-runtime.c (mono_aot_get_method): Fix support for the IList<T> wrappers,
1291         which have a different name.
1292
1293         * aot-runtime.c (mono_aot_get_method): Special case the array generic iface
1294         wrappers and Array.GetGenericValueImpl ().
1295
1296         * aot-compiler.c: Avoid emitting some wrappers which are not needed anymore
1297         because of the change above.
1298
1299         * generics.cs: Add a test for full aot + generic array ifaces.
1300
1301 2009-10-19  Sebastien Pouliot  <sebastien@ximian.com>
1302
1303         * aot-compiler.c (emit_plt): Remove duplicate 'debug_sym' variable 
1304         that hides the previous one.
1305
1306 2009-10-18  Zoltan Varga  <vargaz@gmail.com>
1307
1308         * aot-compiler.c (can_marshal_struct): Allow some System.dll structs to be
1309         marshalled. Fixes #541623.
1310
1311 2009-10-16  Zoltan Varga  <vargaz@gmail.com>
1312
1313         * aot-compiler.c (emit_extra_methods): Remove some asserts which are not needed.
1314
1315 2009-10-15  Zoltan Varga  <vargaz@gmail.com>
1316
1317         * mini.c (mono_op_imm_to_op): Handle OP_AND/OR/XOR_IMM.
1318
1319 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
1320
1321         * mini-posix.c (sigprof_signal_handler):
1322         Implemented support for building stat call chans in different ways.
1323
1324 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
1325
1326         * mini-exceptions.c (mono_find_jit_info):
1327         Also check that a jit info has been found (fixes a profiler crash).
1328
1329 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
1330
1331         * mini.c (mono_codegen):
1332         Call mono_profiler_code_buffer_new with correct code address.
1333
1334 2009-10-14  Zoltan Varga  <vargaz@gmail.com>
1335
1336         * driver.c (mono_main): Change the date in the copyright.
1337
1338 2009-10-14  Mark Probst  <mark.probst@gmail.com>
1339
1340         * method-to-ir.c (mono_method_to_ir): Don't use a managed array
1341         allocator in shared generic code for open classes, because we
1342         can't get those classes' vtables.  We need to make managed
1343         allocators not depend on the vtable at compile-time to solve this.
1344
1345 2009-10-13  Martin Baulig  <martin@ximian.com>
1346
1347         * debug-mini.c (mono_debugger_trampoline_compiled): Add
1348         `const guint8 *trampoline' argument; send both the old and the new
1349         notification.
1350
1351 2009-09-30  Zoltan Varga  <vargaz@gmail.com>
1352
1353         * aot-compiler.c (add_wrappers): Add a runtime invoke wrapper which is used by
1354         mono_runtime_capture_context () without calling mono_runtime_invoke ().
1355         (can_marshal_struct): Skip structures with auto layout.
1356
1357         * tramp-arm.c (GEN_TRAMP_SIZE): Increase this by 4.
1358
1359 2009-10-02  Zoltan Varga  <vargaz@gmail.com>
1360
1361         * mini-sparc.c (mono_arch_emit_setret): Emit long return values using OP_LMOVE.
1362         (mono_arch_create_vars): Instead of allocating a stack slot by hand, allocate
1363         a variable to hold the stack slot used by the int<->float conversion opcodes.
1364
1365         * mini-sparc.c (mono_arch_build_imt_thunk): Implement support for fail_tramp.
1366
1367 2009-10-04  Zoltan Varga  <vargaz@gmail.com>
1368
1369         * aot-compiler.c (add_generic_class): Only add GetGenericValueImpl wrappers
1370         when using full-aot.
1371
1372 2009-10-06  Zoltan Varga  <vargaz@gmail.com>
1373
1374         * aot-compiler.c (add_generic_class): Add an instance of GenericComparer<T> for
1375         each instance of Comparer<T>.
1376
1377         * generics.cs: Add a new test.
1378
1379 2009-10-09  Zoltan Varga  <vargaz@gmail.com>
1380
1381         * driver.c (parse_debug_options): Add a 'gdb' option.
1382
1383         * mini.c (mini_parse_debug_options): Add a 'gdb' option.
1384
1385         * image-writer.c: Add support for emitting the image into a memory buffer.
1386
1387         * dwarfwriter.c: Add support for sharing one IL file between multiple images.
1388
1389         * aot-compiler.c: Add support for registering debug info with GDB using the
1390         new JIT debugging interface in GDB 7.0. It can be turned on by setting
1391         MONO_XDEBUG to 'gdb'.
1392
1393 2009-10-10  Zoltan Varga  <vargaz@gmail.com>
1394
1395         * aot-compiler.c (mono_save_trampoline_xdebug_info): Implement this for the
1396         gdb mode.
1397
1398 2009-10-11  Zoltan Varga  <vargaz@gmail.com>
1399
1400         * aot-compiler.c (mono_save_xdebug_info): Emit a symbol for the method which
1401         can be used to set breakpoints in gdb.
1402
1403         * image-writer.c (bin_writer_emit_writeout): Add support for setting the text
1404         segment to an absolute address.
1405
1406 2009-10-13  Mark Probst  <mark.probst@gmail.com>
1407
1408         * method-to-ir.c: Use the managed array allocator method if
1409         available.
1410
1411 2009-10-13  Bill Holmes  <billholmes54@gmail.com>
1412
1413         * aot-compiler.c : Fix the MSVC builds
1414
1415         Code is contributed under MIT/X11 license.
1416
1417 2009-10-13  Zoltan Varga  <vargaz@gmail.com>
1418
1419         * aot-compiler.c (mono_save_xdebug_info): Group methods into groups of 10 to
1420         avoid registering 1 symbol file per method with gdb.
1421
1422 2009-09-29  Zoltan Varga  <vargaz@gmail.com>
1423
1424         * mini-sparc.c: Fix the handling of enums with base type long.
1425
1426         * mini-sparc.c (mono_arch_output_basic_block): Fix IREM_UN_IMM.
1427
1428         * mini-sparc.c (mono_arch_allocate_vars): Use mono_class_from_mono_type ()
1429         instead of using type->data.klass as the later doesn't work with generics.
1430
1431 2009-09-25  Mark Probst  <mark.probst@gmail.com>
1432
1433         * method-to-ir.c, mini.h, mini-alpha.c, mini-amd64.c, mini-arm.c,
1434         mini-hppa.c, mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c,
1435         mini-s390x.c, mini-sparc.c, mini-x86.c: Thread.get_CurrentThread
1436         works differently now and we don't handle it in the JIT anymore.
1437
1438         * mini.c, mini-exceptions.c, mini-posix.c, debug-debugger.c,
1439         debug-mini.c, tramp-amd64.c, tramp-x86.c: Changes resulting from
1440         the Thread class split.
1441
1442 2009-09-25  Zoltan Varga  <vargaz@gmail.com>
1443
1444         * driver.c: Don't run tests with the obsolete treeprop optimization.
1445
1446         * mini-sparc.c (mono_arch_create_vars): Make the component vars of a long ret
1447         variable volatile. Fixes #541577.
1448
1449         * basic-calls.cs: Add a new test.
1450
1451         * basic-long.cs: Remove tests which are now in basic-calls.cs.
1452
1453 2009-09-24  Zoltan Varga  <vargaz@gmail.com>
1454
1455         * dwarfwriter.c (emit_debug_info_end): Disable this as it doesn't seem to
1456         work/required with recent iphone sdk versions.
1457
1458         * aot-compiler.c (add_wrappers): Generate PtrToStructure wrappers for more
1459         structures.
1460
1461         * decompose.c (mono_decompose_vtype_opts): Avoid reading uninitialized memory
1462         in the VCALL decomposition code.
1463
1464 2009-09-22  Zoltan Varga  <vargaz@gmail.com>
1465
1466         * mini-ia64.c (mono_arch_output_basic_block): Fix ISHR/ISHR_IMM.
1467
1468         * basic.cs: Add a test.
1469
1470         * mini-ia64.c (mono_arch_build_imt_thunk): Implement support the virtual
1471         generic invokes.
1472
1473         * mini-exceptions.c (mini_jit_info_table_find): New helper function which
1474         searches all the domains of the current thread.
1475
1476         * exceptions-<ARCH>.c: Use it. Fixes #539394.
1477
1478 2009-09-21  Zoltan Varga  <vargaz@gmail.com>
1479
1480         * exceptions-arm.c (mono_arm_throw_exception): Set ctx->ebp to fp instead of sp
1481         so catching exceptions thrown in the same method works. Fixes exception17.exe.
1482
1483         * tramp-arm.c (mono_arch_create_trampoline_code_full): Store NULL into lmf->method
1484         for non-jit trampolines.
1485
1486         * mini.c (mono_jit_runtime_invoke): Allow string ctors with dyn runtime invoke.
1487
1488         * aot-compiler.c (add_wrappers): Ditto.
1489
1490         * mini-arm.c: Implement support for passing vtypes and floats, and increase
1491         the size of the param area used by dyn_call to 6 which covers the majority of
1492         methods.
1493
1494         * mini.c aot-compiler.c: Allow dyn_call for string methods except ctors.
1495
1496         * mini-arm.c: Implement support for passing/receiving
1497         longs and receiving floats in the dyn_call code.
1498
1499         * mini-amd64.c: Implement support for receiving vtypes in registers in
1500         the dyn_call code.
1501
1502         * mini.c mini-amd64.c: Implement partial support for passing vtypes in
1503         the dyn_call code.
1504
1505 2009-09-20  Zoltan Varga  <vargaz@gmail.com>
1506
1507         * mini-arm.c (get_call_info): Return more precise information in
1508         ArgInfo->regtype.
1509         (dyn_call_supported): Use the information in CallInfo.
1510
1511         * mini-arm.c: Enable support for returning vtypes in the dyn_call code.
1512
1513         * mini.c mini-amd64.c: Enable support for returning vtypes in the dyn_call
1514         code.
1515
1516         * mini-arm.c: Update after the dyn_call api changes.
1517
1518         * mini.c (mini_create_jit_domain_info): Register a destructor function
1519         for the runtime_invoke_hash.
1520
1521         * mini-amd64.c (mono_arch_get_dyn_call_args): Rename this to
1522         'mono_arch_dyn_call_start'. Pass the pointer to the return value buffer to
1523         this function.
1524         (mono_arch_get_dyn_call_ret): Rename this to 'mono_arch_dyn_call_finish'.
1525         (dyn_call_supported): Simplify this by using get_call_info ().
1526         (mono_arch_dyn_call_free): New destructor function.
1527
1528         * generics.cs: Remove a printf.
1529
1530         * method-to-ir.c (mono_method_to_ir): Allocate some param area for DYN_CALL.
1531
1532         * mini-arm.c: Add support for enum return values and passing a few arguments
1533         on the stack.
1534         
1535         * mini.c (mono_jit_runtime_invoke): Add support for enum return values to
1536         dyn invoke.
1537
1538         * mini-amd64.c (mono_arch_get_dyn_call_ret): Ditto.
1539
1540         * aot-compiler.c (add_wrappers): Add a few restrictions for the use of
1541         the dynamic invoke wrappers.
1542
1543         * mini-arm.c: Implement OP_DYN_CALL for arm.
1544
1545         * aot-compiler.c (add_wrappers): Avoid aot-ing runtime invoke wrappers
1546         supported by the dynamic runtime invoke wrapper.
1547
1548         * aot-compiler.c aot-runtime.c: Add support for encoding the dynamic
1549         runtime invoke wrapper.
1550
1551         * mini.c (mono_jit_runtime_invoke): Use the dynamic runtime invoke wrappers
1552         if possible when running with full-aot.
1553
1554         * mini-ops.h: Add OP_DYN_CALL opcode.
1555
1556         * mini-amd64.c method-to-ir.c: Add infrastructure for making method calls
1557         with dynamic arguments lists similar to libffi.
1558
1559 2009-09-19  Zoltan Varga  <vargaz@gmail.com>
1560
1561         * method-to-ir.c: Fix the previous change on 64 bit platforms.
1562         
1563         * method-to-ir.c: Applied patch from Rodrigo Kumpera. Allow an i8 argument
1564         to NEWARR.
1565
1566         * iltests.il.in: Add a new test.
1567         
1568 2009-09-18  Zoltan Varga  <vargaz@gmail.com>
1569
1570         * aot-compiler.c (add_generic_instances): Add more instances of
1571         GenericEqualityComparer.
1572
1573 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
1574
1575         * mini.c: Add asserts for mono_class_vtable calls that are not meant to fail.
1576
1577 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
1578
1579         * method-to-ir.c: Handle failures from mono_class_vtable. Added some
1580         comments on some functions that now can fail.
1581
1582 2009-09-17  Andrew Jorgensen  <ajorgensen@novell.com>
1583
1584         * Makefile.am: Add Info.plist to EXTRA_DIST
1585
1586 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
1587
1588         * method-to-ir.c (mono_method_to_ir): Allow AOT for CEE_LDTOKEN in
1589         static synchronized wrappers. Fixes #539500.
1590
1591 2009-09-14  Rodrigo Kumpera  <rkumpera@novell.com>
1592
1593         * jit-icalls.c (mono_class_static_field_address): handle vtable failure
1594         properly.
1595
1596 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
1597
1598         * mini-exceptions.c (mono_handle_exception_internal): Store the computed
1599         lmf before calling filter clauses as well. Fixes #539550.
1600
1601         * exceptions.cs: Add a test.
1602         
1603 2009-09-14  Zoltan Varga  <vargaz@gmail.com>
1604
1605         * aot-compiler.c (add_generic_class): Add instances of
1606         Array.GetGenericValueImpl as well.
1607
1608         * Makefile.am (fullaotcheck): Copy and aot more assemblies so linq
1609         can be tested too.
1610
1611         * generics.cs: Add a fullaot linq test.
1612
1613 2009-09-10  Zoltan Varga  <vargaz@gmail.com>
1614
1615         * aot-compiler.c (arch_emit_static_rgctx_trampoline): Don't clobber argument
1616         reg r1 on arm.
1617
1618 2009-09-10  Bill Holmes  <billholmes54@gmail.com>
1619
1620         * mini-trampolines.c (mono_delegate_trampoline) : Call
1621           mono_cominterop_get_invoke if the delegate target object
1622           is a COM object.
1623
1624         Code is contributed under MIT/X11 license.
1625
1626 2009-09-09  Sebastien Pouliot  <sebastien@ximian.com>
1627
1628         * method-to-ir.c: For CoreCLR throw a SecurityException if an 
1629         internal call is defined outside platform code. Reduce code 
1630         duplication with existing [Method|Field]AccessException
1631
1632 2009-09-08  Rodrigo Kumpera  <rkumpera@novell.com>
1633
1634         * mini-x86.c (mono_arch_emit_call): Don't reduce stack usage by 4
1635         if the return value is a small struct passed on regs.
1636
1637 2009-09-09  Zoltan Varga  <vargaz@gmail.com>
1638
1639         * cpu-arm.md mini-arm.c: Remove unused opcodes.
1640
1641         * mini-codegen.c: Enable the cpu description validation for arm.
1642
1643 2009-09-08  Zoltan Varga  <vargaz@gmail.com>
1644
1645         * basic-calls.cs: Move the test_0_float_load_and_store_with_big_offset ()
1646         test which depends on structs to objects.cs.
1647         
1648         * basic-calls.cs: Remove calls to Console.WriteLine and throws, since those
1649         require object model related stuff working.
1650
1651         * cpu-x86.md mini-x86.c: Remove more unused opcodes.
1652
1653         * mini-ops.h: Fix OP_BIGMUL instruction descriptions.
1654
1655         * mini-codegen.c (mono_local_regalloc): Validate the cpu description 
1656         against the instruction metadata in mini-ops.h. amd64 only for now.
1657
1658         * mini-ops.h: Fix some instruction descriptions.
1659
1660         * mini-ops.h mini-x86.c mini-amd64.c cpu-<ARCH>.md: Remove some
1661         unused instructions.
1662
1663 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
1664
1665         * exceptions.cs: Add a new test.
1666
1667 2009-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
1668
1669         * mini-x86.c (needs_stack_frame): OSX requires full frames to keep proper alignment.
1670
1671 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
1672
1673         * mini-llvm.c (mono_llvm_emit_method): Add a few more missing casts,
1674         skip empty phi opcodes.
1675         
1676         * mini-llvm.c (mono_llvm_emit_method): Handle unsigned volatile variables
1677         correctly by zero extending after loads. Skip methods containing calls
1678         to the monitor enter/exit trampolines.
1679
1680         * tramp-x86.c (mono_arch_create_trampoline_code): Align the stack
1681         when calling mono_thread_force_interruption_checkpoint ().
1682
1683         * mini.c (mini_method_compile): Disable llvm when AOT compiling.
1684
1685         * tramp-amd64.c (mono_arch_patch_callsite): Add support for 32 bit ->
1686         64 bit thunks.
1687         (mono_arch_nullify_class_init_trampoline): Read 'buf' instead of 'code'.
1688
1689         * mini-llvm.c (mono_llvm_emit_method): Add a few missing conversions so a 
1690         bootstrap could run.
1691
1692 2009-09-04  Zoltan Varga  <vargaz@gmail.com>
1693
1694         * mini.c (mini_init): Set callbacks.get_runtime_build_info ().
1695
1696 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
1697
1698         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass the start
1699         of the method to
1700         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
1701         LLVM might be very short.
1702
1703         * mini-x86.c (mono_arch_output_basic_block): Maintain stack alignment
1704         in OP_THROW/RETHROW.
1705
1706         * exceptions-x86.c: Rewrite the throw trampolines so they maintain stack
1707         alignment on osx.
1708
1709 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
1710
1711         * mini-amd64.c (mono_arch_get_vcall_slot): Pass the start of the method to
1712         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
1713         LLVM might be very short.
1714
1715 2009-09-01  Zoltan Varga  <vargaz@gmail.com>
1716
1717         * exceptions-x86.c (throw_exception): Fix the previous change by substracting
1718         the alignment for the value of sp.
1719
1720 2009-09-01  Geoff Norton  <gnorton@novell.com>
1721
1722         * mini.c (mono_get_lmf_addr): Fix jit_thread_attach for native to 
1723         managed wrappers in full aot.
1724
1725 2009-08-31  Zoltan Varga  <vargaz@gmail.com>
1726
1727         * exceptions-x86.c (get_throw_exception): Align the stack on osx.
1728
1729 2009-08-28  Zoltan Varga  <vargaz@gmail.com>
1730
1731         * mini-llvm-cpp.cpp mini-llvm.c: Update to latest llvm api.
1732
1733 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
1734
1735         * aot-compiler.c (emit_exception_debug_info): Emit ei->flags too.
1736
1737         * aot-runtime.c (decode_exception_debug_info): Decode ei->flags from the
1738         saved info.
1739
1740         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
1741
1742         * aot-runtime.c aot-compiler.c: Emit exception causes fully so we don't
1743         depend on the info MonoMethodHeader which could be missing in IL stripped
1744         assemblies.
1745
1746 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
1747
1748         * mini-arm.c (add_general): Fix the passing of 64 bit values on darwin, where
1749         they are only 4 byte aligned.
1750
1751 2009-08-21  Zoltan Varga  <vargaz@gmail.com>
1752
1753         * mini-arm.c (mono_arch_allocate_vars): Use FP as the frame pointer as
1754         was done previously, since using SP causes too many problems.
1755
1756         * exceptions-arm.c: Fix the handling of sp/fp so unwinding through
1757         frames without a frame pointer works.
1758
1759         * mini-arm.c (mono_arch_get_global_int_regs): Avoid using V5 as a
1760         global register in methods with calls, since the calls can go through
1761         a static rgctx trampoline which doesn't save it.
1762
1763 2009-08-19  Zoltan Varga  <vargaz@gmail.com>
1764
1765         * mini-arm.c (mono_arch_context_get_int_reg): Handle SP as well.
1766
1767 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
1768
1769         * aot-compiler.c (add_generic_instances): Fix the net 1.1 build.
1770
1771 2009-08-18  Christian Hergert  <chris@dronelabs.com>
1772
1773         * method-to-ir.c: Fix warnings for uninitialized variables.
1774
1775 2009-08-18  Christian Hergert  <chris@dronelabs.com>
1776
1777         * mini-exceptions.c:
1778         * aot-compiler.c: Fix printf warnings.
1779
1780 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
1781
1782         * aot-compiler.c (add_generic_instances): Add string[] wrapper methods.
1783         Add GetGenericValueImpl<string>.
1784         
1785         * aot-compiler.c (add_generic_instances): Add instances of
1786         GenericEqualityComparer<T> for primitive types. Only emit the array
1787         wrappers into the mscorlib image.
1788
1789 2009-08-15  Zoltan Varga  <vargaz@gmail.com>
1790
1791         * aot-runtime.c (load_method): Rename 'aot_module' -> 'amodule'. Allocate
1792         the methods_loaded array using amodule->info->nmethods.
1793
1794         * mini.h (MonoAotFileInfo): Add an 'nmethods' field.
1795         (MONO_AOT_FILE_VERSION): Bump this.
1796
1797         * aot-compiler.c: Emit more generic instances allowing some parts of linq
1798         to work.
1799
1800         * aot-runtime.c (mono_aot_get_unwind_info): Handle the case when the
1801         MonoJitInfo doesn't belong to its methods aot image.
1802
1803 2009-08-14  Zoltan Varga  <vargaz@gmail.com>
1804
1805         * mini-arm.c (mono_arch_allocate_vars): Use SP as the default frame reg.
1806
1807         * mini-arm.c: Fix warnings.
1808         
1809         * mini-arm.c (mono_arm_emit_load_imm): Only emit a movt if needed.
1810
1811         * mini-arm.c (mono_arm_emit_load_imm): Use movt/movw if the cpu
1812         supports it.
1813
1814 2009-08-12  Zoltan Varga  <vargaz@gmail.com>
1815
1816         * aot-compiler.c (arch_emit_imt_thunk): Rework the arm code to
1817         avoid clobbering IP.
1818
1819         * mini-trampolines.c (mono_magic_trampoline): Allocate a local to
1820         hold the trampoline argument, so its initial value is available during
1821         debugging.
1822
1823 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
1824
1825         * exceptions-arm.c:
1826         * exceptions-hppa.c:
1827         * mini.c:
1828         * exceptions-s390x.c:
1829         * exceptions-mips.c:
1830         * exceptions-ppc.c:
1831         * exceptions-sparc.c:
1832         * exceptions-alpha.c:
1833         * aot-runtime.c:
1834         * mini-trampolines.c:
1835         * exceptions-x86.c:
1836         * exceptions-s390.c: add and use #define's instead of sizeof()
1837         for MonoJitInfo and MonoJitInfoTable.
1838
1839 2009-08-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
1840
1841         * tramp-arm.c:
1842         * tramp-amd64.c:
1843         * tramp-ppc.c:
1844         * tramp-x86.c: use a #define instead of sizeof() for a few
1845         structures that use a zero-length array.
1846
1847 2009-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
1848
1849         * method-to-ir.c (mono_method_to_ir/CEE_CONSTRAINED_): Handle the
1850         case when the method is dynamic. Fixes #529238.
1851
1852 2009-08-06  Zoltan Varga  <vargaz@gmail.com>
1853
1854         * mini.c (mono_jit_compile_method_inner): Throw an exception instead
1855         of asserting when a method is JIT compiled in full-aot mode.
1856
1857 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
1858         
1859         Contributed under the terms of the MIT/X11 license by
1860         Jerry Maine <crashfourit@gail.com>.
1861         
1862         * fixed wrong dates in changelog.
1863
1864 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
1865         
1866         Contributed under the terms of the MIT/X11 license by
1867         Jerry Maine <crashfourit@gail.com>.
1868
1869         * basic-simd.cs: added test for packed double square root.
1870         * cpu-amd64.md: added opcode info for packed double square root.
1871         * cpu-x86.md: added opcode info for packed double square root.
1872         * mini-ops.h: added IR opcode for packed double square root.
1873         * mini-x86.c: added IR to native translation code for packed double square root.
1874         * mini-amd64.c: removed todo for packed double square root.
1875         * simd-intrinsics.c: added method to IR opcode converstion for
1876         packed double square root.
1877
1878 2009-08-03 Jerry Maine <crashfourit@gmail.com>
1879
1880         Contributed under the terms of the MIT/X11 license by
1881         Jerry Maine <crashfourit@gail.com>.
1882
1883         * mini-amd64.c: Added a change to help tell the difference as 
1884         to what perpose the xmm register is being used--mainly to help
1885         with debuging.
1886         * mini-amd64.h: Changed callee regs to use 15 out of 16 
1887         (one used for special cases) xmm registers for both fp
1888         and simd ops. Added define to turn on new feature in the regalloc
1889         that allows fp and simd ops to share the xmm regs happily.
1890         * codegen.c: Added code to detect for which perpose an xmm reg is
1891         being used (fp or simd) and to translate back and forth to the
1892         correct logical reg bank (fp or simd) for 'spill load's.
1893
1894 2009-08-03 Jerry Maine <crashfourit@gmail.com>
1895
1896         Contributed under the terms of the MIT/X11 license by
1897         Jerry Maine <crashfourit@gail.com>.
1898
1899         * basic-simd.cs: Added tests for stressing the regalloc when running with
1900         16 simd regs and when simd and fp ops share the same reg bank.
1901
1902 2009-08-01  Mark Probst  <mark.probst@gmail.com>
1903
1904         * method-to-ir.c (mini_emit_stobj): If we call mono_value_copy()
1905         in shared generic code, we might have to look up the class in the
1906         RGCTX.  If we use the class directly, compute its GC descriptor.
1907
1908 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
1909
1910         * mini.c (mono_jit_runtime_invoke): Fix a warning.
1911
1912 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
1913
1914         * mini.c (mono_jit_runtime_invoke): Initialize the class and
1915         check for errors. Fixed the case when the class with the Main
1916         method is broken.
1917
1918 2009-07-31 Jerry Maine <crashfourit@gmail.com>
1919
1920         Contributed under the terms of the MIT/X11 license by
1921         Jerry Maine <crashfourit@gail.com>.
1922
1923         * cpu-amd64.md: Fixed simple bug in machine discrition file.
1924
1925 2009-07-31  Zoltan Varga  <vargaz@gmail.com>
1926
1927         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_IREM_UN_IMM.
1928
1929 2009-08-30  Rodrigo Kumpera  <rkumpera@novell.com>
1930
1931         * method-to-ir.c: Fix naming of stelem and ldelem.
1932
1933 2009-07-30  Zoltan Varga  <vargaz@gmail.com>
1934
1935         * driver.c (main_thread_handler): Check that the assembly loaded
1936         matches the filename when doing AOT.
1937
1938 2009-07-30  Mark Probst  <mark.probst@gmail.com>
1939
1940         * mini.c: get_ip_from_sigctx installer has been removed, so don't
1941         call it anymore.
1942
1943         * mini-x86.h, mini-amd64.h, mini-ppc.h: UCONTEXT macros moved (to
1944         utils/mono-sigcontext.h).
1945
1946         * exceptions-amd64.c: Use the UCONTEXT_GREGS macro instead of an
1947         #ifdef.
1948
1949 2009-07-29  Massimiliano Mantione  <massi@ximian.com>
1950
1951         * mini.c (mono_codegen):
1952         Call profiler hook to keep track of method code buffers.
1953
1954 2009-07-27  Mark Probst  <mark.probst@gmail.com>
1955
1956         * method-to-ir.c: Invoke write barriers for the
1957         Interlocked.(Compare)Exchange JIT intrinsics.
1958
1959 2009-07-26  Raja R Harinath  <harinath@hurrynot.org>
1960
1961         * Makefile.am (version.h): Fix issues when built out of tree.
1962         Remove some redundant 'grep's piped through 'sed's.
1963
1964 Fri Jul 24 17:28:37 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
1965
1966         This patch is contributed under the terms of the MIT/X11 license
1967
1968         * mini-ppc.c (mono_arch_output_basic_block):
1969         (OP_STOREI1_MEMBASE_REG): Handle 32-bit offsets combining addis
1970         for bits 32-47 with signed load/store diplacements for bits
1971         48-63.  Use prefered base/offset order for indexed form.
1972         (OP_STOREI2_MEMBASE_REG, OP_STORE_MEMBASE_REG): Same.
1973         (OP_LOAD_MEMBASE, OP_LOADI4_MEMBASE, OP_LOADU4_MEMBASE,
1974         OP_LOADI1_MEMBASE, OP_LOADU1_MEMBASE, OP_LOADU2_MEMBASE,
1975         OP_LOADI2_MEMBASE): Same.
1976         (OP_STORER8_MEMBASE_REG, OP_LOADR8_MEMBASE,
1977         OP_STORER4_MEMBASE_REG, OP_LOADR4_MEMBASE): Same.
1978         (OP_STOREI1_MEMINDEX): Use prefered base/offset order for
1979         indexed form.
1980         (OP_STOREI2_MEMINDEX, OP_STORE_MEMINDEX): Same.
1981         (OP_LOAD_MEMINDEX, OP_LOADI4_MEMINDEX, OP_LOADU4_MEMINDEX,
1982         OP_LOADU2_MEMINDEX, OP_LOADI2_MEMINDEX, OP_LOADU1_MEMINDEX,
1983         OP_LOADI1_MEMINDEX): Same
1984         (OP_LOADR4_MEMINDEX, OP_LOADR8_MEMINDEX, OP_STORER4_MEMINDEX,
1985         OP_STORER8_MEMINDEX): Same
1986         (OP_JMP): Use addis/addi sequence for int cfg->stack_usage
1987         computations.
1988         (mono_arch_emit_prolog): Handle 32-bit offsets combining addis
1989         for bits 32-47 with signed load/store diplacements for bits
1990         48-63.  Use prefered base/offset order for indexed form.
1991
1992 Fri Jul 24 16:57:12 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
1993
1994 This patch is contributed under the terms of the MIT/X11 license
1995
1996         * mini-ppc.c: Define PPC_MOVE_FPR_GPR and PPC_ISA_64.
1997         (mono_arch_get_vcall_slot): Fx pointer to int cast warning.
1998         (mono_arch_decompose_opts): Make OP_ICONV_TO_R4 and
1999         OP_ICONV_TO_R8 decompose conditional on !PPC_ISA_64.
2000         (mono_arch_output_basic_block) [OP_JMP]: Use ppc_load32 for
2001         cfg->stack_usage to avoid size warnings.
2002         (mono_arch_output_basic_block) [__mono_ppc64__]: Replace
2003         store/load sequence with mffgpr if PPC_MOVE_FPR_GPR is true.
2004         (mono_arch_output_basic_block) [!__mono_ppc64__]: For
2005         OP_ICONV_TO_R4 or OP_ICONV_TO_R8 and PPC_ISA_64 use fcfid
2006         to convert.
2007         (mono_arch_emit_prolog): Move mono_emit_unwind_op_def_cfa 
2008         after code varible is initialized.
2009         Add g_assert ppc_is_imm16 for ainfo->offset. Handle
2010         ainfo->size == 8 when ainfo->offset !ppc_is_imm16.
2011         (mono_arch_emit_epilog): 
2012         Move Use ppc_load32 for cfg->stack_usage to avoid size
2013         warnings.
2014
2015 2009-07-24  Mark Probst  <mark.probst@gmail.com>
2016
2017         * method-to-ir.c: The write barrier doesn't do the store anymore,
2018         so we have always to emit it.  Also, emit the wbarrier after the
2019         store.
2020
2021 2009-07-24  Zoltan Varga  <vargaz@gmail.com>
2022
2023         * mini-arm.c (mono_arch_get_delegate_invoke_impls): Add a trampoline
2024         for argument count 3 too.
2025
2026 2009-07-23  Zoltan Varga  <vargaz@gmail.com>
2027
2028         * mini.c (mono_jit_compile_method_with_opt): Add an 'ex' argument to let
2029         the caller handle the exceptions.
2030         (mono_jit_runtime_invoke): Handle exceptions thrown while compiling the
2031         method. Fixes #524498.
2032
2033 2009-07-22  Geoff Norton  <gnorton@novell.com>
2034
2035         * mini-exceptions.c: Fix build on ia64.
2036
2037 2009-07-22  Mark Probst  <mark.probst@gmail.com>
2038
2039         * mini-exceptions.c (ves_icall_get_frame_info): Use write
2040         barriers.
2041
2042 2009-07-21  Zoltan Varga  <vargaz@gmail.com>
2043
2044         * mini-arm.c (mono_arch_emit_prolog): Fix thread attaching in aot
2045         code.
2046
2047 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
2048
2049         * basic-simd.cs (Main): Pass args to the test driver.
2050
2051 2009-07-20  Geoff Norton  <gnorton@novell.com>
2052
2053         * mini-x86.h: Fix the x86 version guards to use Apple's
2054         properly defined macros.
2055
2056 2009-07-20  Geoff Norton  <gnorton@novell.com>
2057
2058         * mini-x86.c: Fix --trace on darwin-x86 and other systems which require
2059         aligned access.
2060
2061 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
2062
2063         * mini.c (mono_jit_runtime_invoke): Speed this up by adding a hash to
2064         MonoJitDomainInfo which maps MonoMethod's to a structure containing all
2065         the information which is needed for invokes, so only one locking+hash table
2066         lookup is needed.
2067
2068         * aot-compiler.c: Add a 'tool-prefix' option to be used when cross-compiling.
2069         
2070         * aot-compiler.c (add_generic_instances): Emit instances of 
2071         GenericComparer<T> for primitive types.
2072
2073 2009-07-19 Rodrigo Kumpera  <rkumpera@novell.com>
2074
2075         * mini-posix.c: Fix linux build.
2076
2077 2009-07-19  Geoff Norton  <gnorton@novell.com>
2078
2079         * mini.h: Add prototypes for mono_runtime_syscall_fork and
2080         mono_gdb_render_native_backtraces
2081         * mini-darwin.c: Apple's syscall(SYS_fork) is very weird on x86,
2082         so we implement the sane semantics to the runtime here
2083         (mono_gdb_render_native_backtraces).  Apple also uses an ancient gdb
2084         so we need to call it differently (mono_gdb_render_native_backtraces)
2085         * mini-posix.c: Move the old semantics from mini.c to the prototypes
2086         here for default implementations.
2087         * mini.c: Refactor mono_handle_native_sigsegv so that we can properly
2088         support Apple's weird syscall (SYS_fork) implementation and not busy
2089         loop in abort() on native crashes on OSX anymore.
2090
2091 2009-07-18  Zoltan Varga  <vargaz@gmail.com>
2092
2093         * aot-runtime.c (load_method): Change the handling of the
2094         MONO_LASTAOT env variable so MONO_LASTAOT=0 means that no aot methods
2095         are used.
2096
2097         * mini.c (mono_patch_info_equal): Really fix the handling of RGCTX_FETCH.
2098
2099 2009-07-17  Zoltan Varga  <vargaz@gmail.com>
2100
2101         * mini.c (mono_patch_info_equal): Revert the last change for now as it
2102         seems to break the aot tests.
2103         
2104         * mini.c (mono_patch_info_equal): Fix the handling of 
2105         MONO_PATCH_INFO_RGCTX_FETCH.
2106
2107 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
2108
2109         * unwind.c: Use TARGET_AMD64 instead of __x86_64__.
2110
2111         * mini.c (mono_patch_info_hash): Fix the handling of 
2112         MONO_PATCH_INFO_INTERNAL_METHOD.
2113         (mono_patch_info_equal): Ditto.
2114
2115 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
2116
2117         * mini-llvm.c (mono_llvm_emit_method): Use module instead of ctx->module
2118         in a few places.
2119         
2120         * mini-llvm.c: Add some infrastructure for AOT support.
2121
2122 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
2123
2124         * mini-llvm-cpp.c: Update to the latest llvm api.
2125         
2126         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Set the EnablePrettyStackTrace
2127         option to false to prevent llvm from installing signal handlers which
2128         trip up the gc.
2129         
2130 2009-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
2131
2132         * cpu-x86.md:
2133         * cpu-amd64.md: Revert previous change as those instructions
2134         take 2 separate arguments. Remember to read the arch docs more
2135         carefully next time.
2136
2137 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
2138
2139         * mini-llvm-cpp.cpp (mono_llvm_build_alloca): Update to latest llvm api.
2140
2141 Wed Jul 15 17:20:27 CEST 2009 Paolo Molaro <lupus@ximian.com>
2142
2143         * mini-ppc.c: exploit multiple load/store units if available (rest of
2144         the change from Steven Munroe (<munroesj@us.ibm.com>) first patch at 
2145         http://bugzilla.novell.com/show_bug.cgi?id=487846).
2146
2147 Wed Jul 15 16:24:57 CEST 2009 Paolo Molaro <lupus@ximian.com>
2148
2149         * mini-ppc.c: integrate most of Steven Munroe (<munroesj@us.ibm.com>)
2150         first patch at http://bugzilla.novell.com/show_bug.cgi?id=487846.
2151
2152 2009-07-14 Rodrigo Kumpera  <rkumpera@novell.com>
2153
2154         * cpu-x86.md: Fix missing clobbering from trancendental simd
2155         ops.
2156
2157         * cpu-amd64.md: Same.
2158
2159 2009-07-14 Jerry Maine <crashfourit@gmail.com>
2160
2161         Contributed under the terms of the MIT/X11 license by
2162         Jerry Maine <crashfourit@gail.com>.
2163
2164         * basic-simd.cs: Added tests for single and doulble indexers.
2165
2166         * cpu-amd64.md: Added simd opcode information.
2167
2168         * mini-amd64.c: Added IR to native simd generation code.
2169         Added simd register names and function that returns them.
2170
2171         * mini-amd64.h: Added marcos to turn on simd code compilation in
2172         amd64. Added max simd register count marco. Added caller/callee
2173         register mask marcos. Added marcos to use simd register bank.
2174
2175         * mini.h: Added helper marco for shufling dwords and simple
2176         floats.
2177
2178 2009-07-14  Zoltan Varga  <vargaz@gmail.com>
2179
2180         * mini-llvm-cpp.cpp: Update to latest llvm SVN api.
2181
2182         * Makefile.am (mono_LDADD): Pass LLVM_LDFLAGS to the linked.
2183
2184         * unwind.c (mono_unwind_get_ops_from_fde): Make this return
2185         the length of the native code as well.
2186
2187         * basic-simd.cs: Add a test for #521662.
2188
2189 Mon Jul 13 17:58:50 CEST 2009 Paolo Molaro <lupus@ximian.com>
2190
2191         * mini-ppc.c: fixed bug introduced by Steven's TLS changes.
2192
2193 2009-07-13  Mark Probst  <mark.probst@gmail.com>
2194
2195         * mini.c: Register function for getting the IP from a signal
2196         context with metadata.
2197
2198 2009-07-13  Zoltan Varga  <vargaz@gmail.com>
2199
2200         * method-to-ir.c (mono_method_to_ir): When calling a gshared method,
2201         call a generic class init trampoline if needed. Fixes #519336.
2202
2203         * generics.cs: Add a test.
2204         
2205 2009-07-09  Mark Probst  <mark.probst@gmail.com>
2206
2207         * method-to-ir.c: When doing a call which might be remote from
2208         shared generic code to other shared code with open type arguments,
2209         get the remoting invoke wrapper from the RGCTX and do an indirect
2210         call to it.
2211
2212 2009-07-03  Zoltan Varga  <vargaz@gmail.com>
2213
2214         * mini-trampolines.c (get_unbox_trampoline): Add an rgctx trampoline
2215         after the unbox trampoline in the full-aot case.
2216
2217 2009-07-02  jonas echterhoff <jonas@unity3d.com>
2218         
2219         * mini.c: Move initialization of jit_mutex before debugger initialization
2220         
2221         to avoid crashes.
2222         
2223         
2224         * Info.plist: added Info.plist and link flag to enable the mono executable
2225         to access other processes. Requires codesigning of the executable to work.
2226         
2227         * mdb-debug-info32-darwin.s: The same as mdb-debug-info32.s, changed to 
2228         
2229         compile on OS X.
2230         
2231
2232 2009-06-30  Zoltan Varga  <vargaz@gmail.com>
2233
2234         * driver.c (mini_regression): Handle loading errors. Fixes #508869.
2235
2236 2009-06-29  Zoltan Varga  <vargaz@gmail.com>
2237
2238         * mini-exceptions.c (get_generic_context_from_stack_frame): Fix the case
2239         when the generic instance is an instantiation of a subclass of the
2240         methods class. Fixes #517166.
2241
2242 2009-06-26  Zoltan Varga  <vargaz@gmail.com>
2243
2244         * mini-amd64.c (mono_arch_emit_prolog): Fix thread attaching in AOTed
2245         code.
2246
2247         * mini.c (mono_jit_thread_attach): Allow domain to be NULL for calls from
2248         AOTed code.
2249
2250         * CMakeLists.txt: Add minimal support for installation.
2251
2252 2009-06-25  Zoltan Varga  <vargaz@gmail.com>
2253
2254         * aot-compiler.c (emit_and_reloc_code): Factor out the code to
2255         determine whenever a method is directly callable to a separate function.
2256
2257         * mini-<ARCH>.c tramp-<ARCH>.c: Remove needless casts and add new
2258         needed ones as a result of the previous change.
2259
2260         * mini-<ARCH>.c tramp-<ARCH>.c: Use mgreg_t* as the
2261         type of register arrays.
2262
2263         * mini-trampolines.c tramp-<ARCH>.c aot-runtime.c: Use mgreg_t* as the
2264         type of register arrays.
2265
2266 2009-06-24  Jerry Maine  <crashfourit@gmail.com>
2267         
2268         Contributed under the terms of the MIT/X11 license by
2269         Jerry Maine <crashfourit@gail.com>.
2270
2271         * mini-amd64.c: Added code to convert simd IR to native amd64 sse.
2272
2273 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
2274
2275         * aot-compiler.c (emit_plt): Define debug labels for most plt entries.
2276
2277 2009-06-24  Neale Ferguson <neale@sinenomine.net>
2278
2279         * mini-s390x.c: Correct LCONV_TO_Ix and ICONV_TO_Ix routines. Fix leave_method
2280         dump of structure return value. Fix some formatting.
2281         * cpu-s390x.md: Fix lengths of instruction sequences.
2282         * mini-s390.c: Minor formatting changes.
2283
2284 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
2285
2286         * mini-x86.h: Applied patch from Romain Tartiere (romain@blogreen.org).
2287         Use sigaction on freebsd as well.
2288
2289 2009-06-23  Zoltan Varga  <vargaz@gmail.com>
2290
2291         * mini.h: Don't define MONO_ARCH_HAVE_TLS_GET to 0, as some code
2292         uses #ifdef on it.
2293         
2294         * mini.c (mini_init): Revert a change which breaks cross-compilation.
2295
2296 2009-06-22  Mark Probst  <mark.probst@gmail.com>
2297
2298         * mini-ppc.c, cpu-ppc.md: Enable TLS on Darwin/G4.
2299
2300 2009-06-22  Mark Probst  <mark.probst@gmail.com>
2301
2302         * mini.c, mini.h: Tell the runtime whether we support MONO_TLS.
2303
2304 2009-06-20  Martin Baulig  <martin@ximian.com>
2305
2306         * debug-mini.c
2307         (MonoDebuggerThreadFlags): New enum typedef.
2308         (MonoDebuggerThreadInfo): Added `guint32 thread_flags'.
2309         (mono_debugger_thread_created): Added `gpointer func' argument;
2310         initialize the new `thread_flags' field.
2311
2312 2009-06-18  Martin Baulig  <martin@ximian.com>
2313
2314         * debug-debugger.h (MonoDebuggerRuntimeFlags): New enum typedef.
2315         (MonoDebuggerInfo): Renamed the `dummy' field info `runtime_info'.
2316
2317         * debug-debugger.c
2318         (mini_debugger_set_attach_ok): New function; sets the attach-ok
2319         flag in `MONO_DEBUGGER__info.runtime_info'.
2320
2321         * driver.c
2322         (mono_main): Call mini_debugger_set_attach_ok() if generics
2323         sharing is disabled.
2324
2325 2009-06-22  Zoltan Varga  <vargaz@gmail.com>
2326
2327         * aot-compiler.c (add_wrappers): Fix a warning.
2328
2329         * mini-ppc.c tramp-ppc.c exceptions-ppc.c aot-compiler.c: Update after
2330         the ppc load/store macro changes.
2331
2332 2009-06-21  Zoltan Varga  <vargaz@gmail.com>
2333
2334         * tramp-ppc.c (mono_arch_patch_plt_entry): Implement this.
2335
2336         * aot-compiler.c (mono_compile_assembly): Sanitize the plt symbol too,
2337         not just the got symbol.
2338
2339         * mini-ppc.c aot-compiler.c unwind.c: Implement generation of unwind info
2340         on ppc.
2341
2342         * aot-compiler.c unwind.c: Add infrastructure for unwind support on
2343         ppc.
2344         
2345         * aot-compiler.c: Remove some fixmes.
2346
2347         * driver.c (mono_main): Print a helpful message when cross-compiling.
2348
2349         * mini.c (mini_init): Disable signal handlers when cross-compiling.
2350
2351         * method-to-ir.c (initialize_array_data): Do the optimization if the
2352         target byte order is little endian, instead of the host byte order.
2353
2354         * aot-compiler.c: Emit sizes for most symbols, only emit runtime-invoke
2355         wrappers into the mscorlib image, Emit a unique plt symbol for each
2356         image, emit symbols for plt entries.
2357
2358         * image-writer.c (img_writer_emit_symbol_size): New function to emit
2359         a .size directive.
2360         
2361 2009-06-20  Zoltan Varga  <vargaz@gmail.com>
2362
2363         * aot-compiler.c (add_wrappers): Avoid calling 
2364         mono_marshal_get_type_info () since it can assert for some types.
2365
2366         * method-to-ir.c (mono_method_to_ir): Disable aot when some forms of 
2367         ldtoken are used inside wrappers.
2368
2369         * helpers.c: Add support for prefixing tools with the arch name.
2370
2371         * mini.h (OP_LOADR_MEMBASE): New opcodes to load/store pointer sized
2372         quantities when using ilp32.
2373
2374         * mini-codegen.c: Use OP_LOADR_MEMBASE/OP_STORER_MEMBASE for loading/storing
2375         spill slots. Use sizeof(mgreg_t) for the spill slot size.
2376
2377         * image-writer.c: Use .long on ilp32.
2378
2379         * aot-compiler.c: Use 32 bit loads on ilp32.
2380         
2381 2009-06-19  Zoltan Varga  <vargaz@gmail.com>
2382
2383         * tramp-ppc.c (mono_arch_create_trampoline_code): Fix the ppc build.
2384
2385         * mini-ops.h: Use TARGET_POWERPC define for consistency.
2386
2387         * patch-info.h: Add 'MSCORLIB_GOT_ADDR' patch type.
2388
2389         * aot-compiler.c aot-runtime.c: Put the mscorlib got address into the 
2390         second got slot of every aot image.
2391         
2392         * aot-compiler.c aot-runtime.c mini-trampolines.c: Add support for
2393         aot on platforms with function pointers.
2394
2395         * mini-ppc.h mini-ppp.c cpu-ppc.md exceptions-ppc.c tramp-ppc.c: Add
2396         support for aot/full aot on ppc/ppc64.
2397         
2398         * tramp-<ARCH>.c (mono_arch_patch_plt_entry): Add 'got' and 'regs'
2399         arguments which are needed on ppc.
2400
2401         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Add 'regs'
2402         argument.
2403
2404         * mini-trampolines.c aot-runtime.c: Update after the above changes.
2405         
2406         * liveness.c (BITS_PER_CHUNK): Use MONO_BITSET_BITS_PER_CHUNK.
2407
2408         * regalloc2.c (BITS_PER_CHUNK): Ditto.  
2409
2410         * aot-compiler.c (emit_got_info): Fix reading unused memory.
2411
2412         * ir-emit.h (alloc_dreg): Add a 'return -1' to quiet some compilers.
2413
2414 2009-06-17  Geoff Norton  <gnorton@novell.com>
2415
2416         * aot-compiler.c: Ensure we dont try to close a null dwarf writer.
2417
2418 2009-06-17  Zoltan Varga  <vargaz@gmail.com>
2419
2420         * dwarfwriter.c (mono_dwarf_writer_create): Add an 'appending' parameter
2421         to control whenever the dwarf writer is in xdebug or aot mode.
2422         (emit_class_dwarf_info): Use a separate abbrev for structures without
2423         children.
2424
2425         * aot-compiler.c: Pass the appending parameter to 
2426         mono_dwarf_writer_create ().
2427
2428         * branch-opts.c (mono_merge_basic_blocks): Fix the case when bbn
2429         falls through to its next bblock. Fixes #513931.
2430
2431         * iltests.il: Add a test.
2432
2433         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Emit some line number
2434         infor even if emit_line is FALSE, as the apple linker seems to require it.
2435
2436         * image-writer.c (asm_writer_emit_symbol_diff): Call get_label ().
2437
2438         * dwarfwriter.c (emit_cie): Emit a separate symbol for the cie start, as
2439         gcc does.
2440         (emit_fde): Ditto.
2441
2442 2009-06-15  Zoltan Varga  <vargaz@gmail.com>
2443
2444         * exceptions-mips.c (mono_arch_get_throw_exception_by_name): Fix the
2445         mips build.
2446
2447 2009-06-13  Zoltan Varga  <vargaz@gmail.com>
2448
2449         * mini.h (struct MonoBasicBlock): Add 'has_jump_table' and 
2450         'has_call_handler' fields.
2451
2452         * method-to-ir.c (mono_method_to_ir): Set them if needed.
2453
2454         * branch-opts.c (mono_merge_basic_blocks): Avoid iterating through the
2455         first bblock if not needed. Fixes #512790.
2456         
2457 2009-06-11  Zoltan Varga  <vargaz@gmail.com>
2458
2459         * aot-compiler.c (mono_compile_assembly): Fix a warning.
2460         
2461         * aot-compiler.c (add_wrappers): Don't emit remoting-invoke-with-check
2462         wrappers.
2463
2464         * aot-runtime.c (mono_aot_get_method): Use the original method's code for
2465         remoting-invoke-with-check wrappers, which are not needed when running with
2466         full-aot, since it doesn't support remoting.
2467         
2468 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
2469
2470         * aot-compiler.c (emit_got_info): Don't emit offsets for the plt got entries.
2471
2472         * aot-compiler.c aot-runtime.c: Don't emit the first got offset in the
2473         method info, it is not used anymore.
2474
2475         * mini.h: Bump AOT file format version.
2476         
2477         * aot-compiler.c (arch_emit_plt_entry): Make the arm plt entries one
2478         word smaller.
2479
2480         * aot-runtime.c (mono_aot_get_plt_info_offset): Update after the
2481         change above.
2482         
2483         * tramp-arm.c (mono_arch_patch_plt_entry): Ditto.
2484
2485         * mini.h: Bump AOT file format version.
2486         
2487 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
2488
2489         * image-writer.c (asm_writer_emit_symbol_diff): Disable the 
2490         TARGET_ASM_APPLE stuff for now, as it doesn't seem to work on the
2491         iphone.
2492
2493         * mini-arm.c (mono_arch_output_basic_block): Fix the implementation
2494         of CKFINITE and FBGE for VFP.
2495
2496 2009-06-09  Zoltan Varga  <vargaz@gmail.com>
2497
2498         * aot-compiler.c: Don't align code to 16 bytes on arm.
2499         
2500         * aot-compiler.c (emit_method_code): Emit the unbox trampolines right
2501         before the methods they belong to.
2502
2503         * aot-runtime.c (mono_aot_plt_resolve): Avoid creating trampolines in
2504         the full-aot case if possible, since the trampoline will be called right 
2505         away.
2506
2507         * aot-compiler.c (mono_compile_assembly): Decrease the number of full aot
2508         trampolines to 1024 after the change above.
2509
2510         * aot-compiler.c (arch_emit_specific_trampoline): Rework the arm
2511         trampoline to save 8 bytes per trampoline.
2512
2513         * tramp-arm.c (mono_arch_create_trampoline_code_full): Update after the
2514         change above.
2515
2516 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
2517
2518         * aot-compiler.c: Use acfg->temp_prefix instead of .L to prefix labels.
2519
2520 2009-06-08  Martin Baulig  <martin@ximian.com>
2521
2522         * debug-mini.c
2523         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
2524         (_mono_debugger_throw_exception): Don't make this static.
2525         (_mono_debugger_unhandled_exception): Likewise.
2526         (mono_debugger_handle_exception): Moved to mini-exceptions.c
2527
2528         * debug-mini.c
2529         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
2530         (_mono_debugger_throw_exception): Add function prototype.
2531         (_mono_debugger_unhandled_exception): Likewise.
2532
2533         * mini-exceptions.c
2534         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
2535         arg; return the first exception handler if the exception is caught
2536         and we're running inside the debugger.
2537         (mono_debugger_handle_exception): Moved here from debug-mini.c;
2538         improve exception handle inside runtime-invoke, check whether the
2539         exception is actually caught in the method being invoked and not
2540         by the runtime-invoke-wrapper.
2541
2542 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
2543
2544         * image-writer.c: Improve support for the osx assembler.
2545
2546         * dwarfwriter.c: Avoid the usage of subsections if the assembler doesn't
2547         support them.
2548
2549 2009-06-08  Martin Baulig  <martin@ximian.com>
2550
2551         * debug-mini.c
2552         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
2553         (_mono_debugger_throw_exception): Don't make this static.
2554         (_mono_debugger_unhandled_exception): Likewise.
2555         (mono_debugger_handle_exception): Moved to mini-exceptions.c
2556
2557         * debug-mini.c
2558         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
2559         (_mono_debugger_throw_exception): Add function prototype.
2560         (_mono_debugger_unhandled_exception): Likewise.
2561
2562         * mini-exceptions.c
2563         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
2564         arg; return the first exception handler if the exception is caught
2565         and we're running inside the debugger.
2566         (mono_debugger_handle_exception): Moved here from debug-mini.c;
2567         improve exception handle inside runtime-invoke, check whether the
2568         exception is actually caught in the method being invoked and not
2569         by the runtime-invoke-wrapper.
2570
2571 2009-06-07  Zoltan Varga  <vargaz@gmail.com>
2572
2573         * image-writer.c (append_subsection): Don't align subsections of the
2574         debug_line section as a workaround.
2575
2576         * dwarfwriter.c: Emit line number info in the AOT case as well.
2577
2578 2009-06-06  Steven Munroe  <munroesj@us.ibm.com>
2579
2580         This patch is contributed under the terms of the MIT/X11 license
2581
2582        * mini-ppc.c (mono_arch_emit_exceptions): Change assert to
2583        code_len <= code_size
2584
2585 2009-06-06  Zoltan Varga  <vargaz@gmail.com>
2586
2587         * mini-mips.c (mips_emit_exc_by_name): Fix the mips build.
2588
2589 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
2590
2591         * aot-compiler.c aot-runtime.c: Delete references to static rgctx
2592         invoke wrappers, we now use trampolines instead.
2593
2594 2009-06-04  Mark Probst  <mark.probst@gmail.com>
2595
2596         * mini-darwin.c: The exception thread must not be registered with
2597         the GC.
2598
2599 2009-06-04  Mark Probst  <mark.probst@gmail.com>
2600
2601         * mini-gc.c: Disable the code because it makes SGen crash.
2602
2603 2009-06-03  Zoltan Varga  <vargaz@gmail.com>
2604
2605         * aot-compiler.c (mono_compile_assembly): Handle file open errors gracefully
2606         instead of asserting.
2607
2608 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
2609
2610         * aot-compiler.c (mono_compile_assembly): Move the creation of the
2611         output file after the code has been compiled.
2612
2613 2009-05-30  Zoltan Varga  <vargaz@gmail.com>
2614
2615         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Fix 64 bit support.
2616
2617 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
2618
2619         * aot-compiler.c aot-runtime.c: Get rid of the shared/non-shared got
2620         entries distinction to simplify the code.
2621
2622         * mini.h: Bump AOT file format version.
2623         
2624 2009-05-28  Zoltan Varga  <vargaz@gmail.com>
2625
2626         * objects.cs: Fix the signature of one of the tests.
2627
2628         * mini.c (mini_create_ftnptr): New helper function, moved here from
2629         object.c.
2630         (mini_get_addr_from_ftnptr): Ditto.
2631         (mini_init): Install the new helpers.
2632
2633 2009-05-28  Martin Baulig  <martin@ximian.com>
2634
2635         Correctly initialize the debugger when embedding Mono.
2636
2637         * mdb-debug-info32.s, mdb-debug-info64.s: Add a global variable
2638         `MONO_DEBUGGER__using_debugger' to the `.mdb_debug_info' section;
2639         see documentation in mini_debug_running_inside_mdb().
2640
2641         * debug-debugger.c
2642         (mini_debug_running_inside_mdb): New function to check whether
2643         we're running inside mdb.
2644
2645         * mini.c (mini_init): Call mini_debugger_init() if we're running
2646         inside the debugger.
2647
2648         * driver.c (mono_main): Moved the call to mini_debugger_init()
2649         into mini_init() to make this work when embedding Mono.
2650
2651         * debug-debugger.c (mini_debugger_init): Warn about duplicate
2652         calls to mini_debugger_init().
2653
2654         * mini.h: Rename mono_debugger_init() -> mini_debugger_init(),
2655         mono_debugger_main() -> mini_debugger_main() and put them inside a
2656         `MONO_DEBUGGER_SUPPORTED' conditional.
2657
2658 2009-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
2659
2660         * mini-trampolines.c: Kill mono_find_delegate_trampoline_by_addr as
2661         this is no longer in use.
2662         * mini.h: Same.
2663
2664 2009-05-26  Zoltan Varga  <vargaz@gmail.com>
2665
2666         * mini-sparc.c (add_outarg_load): Fix the sparc build.
2667
2668         * aot-compiler.c (emit_method_code): Always write out C style symbols for
2669         methods.
2670
2671 2009-05-27  Martin Baulig  <martin@ximian.com>
2672
2673 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
2674
2675         * mini-x86.c (mono_arch_output_basic_block): Fix the precision of
2676         long_conv_to_r_un to 64 bits.
2677
2678         * cpu-x86.md: Increase the instruction size due to the changes.
2679
2680         * iltests.il.in: Add regression test.
2681
2682         Fixes #467201.
2683
2684 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
2685
2686         * objects.cs: Move the previous test from basic.cs to here.
2687
2688 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
2689
2690         * basic.cs: Add regression test for #506915.
2691
2692 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
2693
2694         * method-to-ir.c (mono_method_to_ir): When doing the ldobj+stobj
2695         optimization we must check the bb of the first byte of stobj as
2696         it's the only one set in cil_offset_to_bb.
2697
2698         Fixes #506915.  
2699
2700 2009-05-25  Zoltan Varga  <vargaz@gmail.com>
2701
2702         * image-writer.c: Fix pointer directive on ppc64.
2703
2704 2009-05-24  Zoltan Varga  <vargaz@gmail.com>
2705
2706         * image-writer.c (asm_writer_emit_section_change): Avoid using
2707         .bss subsections on ppc too.
2708
2709 2009-05-23  Zoltan Varga  <vargaz@gmail.com>
2710
2711         * image-writer.c: Fix the definition of TARGET_ASM_....
2712         
2713         * image-writer.c: Fix the emission of assembler directives in the last
2714         change.
2715
2716         * mini-ppc.c (mono_arch_emit_exceptions): Increase the size of the
2717         exception throwing code to accomodate ppc64.
2718
2719         * tramp-ppc.c (mono_arch_get_nullified_class_init_trampoline): Increase the
2720         size to work on ppc64 too.
2721
2722         * mini-ppc.h (MonoCompileArch): Enable static rgctx trampolines on ppc64
2723         too.
2724
2725         * image-writer.c: Clean up the #ifdef hell a bit by adding defines for
2726         the assembler dialect instead of using platform specific defines.
2727
2728 2009-05-22  Geoff Norton  <gnorton@novell.com>
2729
2730         * mini-arm.c (get_call_info): If a structure is split between the stack
2731         and argument registers, we should not advance the stack pointer by the entire
2732         native size, but just by the amount that spilled.
2733
2734 2009-05-22  Zoltan Varga  <vargaz@gmail.com>
2735
2736         * mini-arm.c (get_call_info): Handle structures with alignment requirements
2737         correctly.
2738
2739 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
2740
2741         * aot-compiler.c (emit_extra_methods): Encode direct runtime invoke
2742         wrappers normally.
2743         
2744         * aot-compiler.c (add_extra_method): Fix up the collection of extra
2745         methods so wrapper don't get added twice.
2746         (add_generic_instances): Don't add methods of arrays.
2747
2748         * generics.cs: Mark one test as !FULLAOT.
2749
2750 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
2751
2752         * mini-x86.c (emit_move_return_value): Remove unused vars.
2753
2754 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
2755
2756         * mini-x86.c (mono_arch_emit_call): The decompose code now supports
2757         decomposing 8 bytes structs into a LCALL.
2758
2759         * mini-x86.c (emit_move_return_value): We no longer push the vtype
2760         pointer for where to store the returned regs.
2761
2762         * decompose.c (mono_decompose_vtype_opts): Fix the comment to properly
2763         state the concern.
2764
2765         Fixes #471747, #471751 and #4734530 (in fact, it's a bunch of dups).
2766
2767 2009-05-20  Miguel de Icaza  <miguel@novell.com>
2768
2769         * aot-runtime.c (mono_aot_init): Use g_getenv to work on systems
2770         without getenv.
2771
2772 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
2773
2774         * aot-compiler.c (add_wrappers): Add StructureToPtr/PtrToStructure wrappers.
2775
2776         * basic.cs: Move the test_2_cprop_bug () test to generics.cs as it involves
2777         generics.
2778
2779 2009-05-20 Rodrigo Kumpera  <rkumpera@novell.com>
2780
2781         * local-propagation.c (mono_local_cprop): Avoid local propagation
2782         across paired add/sub if the first instruction dest reg is it's
2783         source reg. For example:
2784
2785         int_add_imm R12 <- R12 [1] clobbers: 1
2786         int_sub_imm R42 <- R12 [1] clobbers: 1
2787
2788         The cprop pass would wrongly const prop + 1 to int_sub_imm which doesn't
2789         maintain the math identify.
2790
2791         Fixes #505375.
2792
2793 2009-05-20  Andreia Gaita  <avidigal@novell.com>
2794
2795         * Makefile.am: avoid going on the network just to get the revision,
2796         use git log instead
2797
2798 2009-05-19  Massimiliano Mantione  <massi@ximian.com>
2799
2800         Fixed estimate for short branches on amd64 (they were off mark, and
2801         enabling call prolog-epilog instrumentations caused assertions).
2802         * mini.h (struct MonoBasicBlock): added max_length field to hold the
2803         estimate for the maximum length of this basic block.
2804         * mini-amd64.c:
2805         - mono_arch_emit_prolog: compute max_length for each basic block
2806           (instead of max_offset), and inflate size estimate also for entry bb
2807           in case of code instrumentation.
2808         - mono_arch_output_basic_block: get rid of "cpos" (the current
2809           estimated "position" in the code), and always use "offset" instead,
2810           which is accurate; at the beginning of the function quickly recompute
2811           max_offset for all the remaining blocks, starting from the current
2812           cfg->code_len (which is correct, and not estimated) and using the
2813           estimated block lengths computed previously.
2814
2815 2009-05-17  Zoltan Varga  <vargaz@gmail.com>
2816
2817         * exceptions-ppc.c: Remove the caching from the trampoline creation 
2818         functions, it is already done in the caller.
2819
2820         * mini-trampolines.c (mono_llvm_vcall_trampoline): Fix the llvm build.
2821
2822         * mini-ppc.h mini-arm.h mini-x86.h mini-amd64.h: Add 
2823         MONO_ARCH_GSHARED_SUPPORTED define.
2824
2825         * mini.c (mini_init): Use the MONO_ARCH_GSHARED_SUPPORTED define.
2826
2827         * mini-arm.c mini.c: Get rid of the unused mono_arch_fixup_jinfo ()
2828         function.
2829
2830 2009-05-16  Zoltan Varga  <vargaz@gmail.com>
2831
2832         * jit-icalls.c (mono_helper_compile_generic_method): Get rid of the 
2833         call to mono_marshal_get_rgctx_invoke ().
2834
2835         * mini.c method-to-ir.c mini-trampolines.c: Get rid of the usage of
2836         mono_marshal_get_static_rgctx_invoke (), all platforms which support
2837         gshared use the static rgctx trampolines now.
2838         
2839         * mini.c (mini_init): Call mono_set_generic_sharing_supported () if the
2840         platform supports it.
2841
2842 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
2843
2844         * mini-arm.c (mono_arch_allocate_vars): Correctly save R5 when using AOT.
2845
2846         * aot-compiler.c (emit_method_code): Avoid duplicate labels for methods.
2847
2848 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
2849
2850         * mini-ppc.c (mono_arch_emit_exceptions): Nullify the processed patches.
2851
2852         * tramp-ppc.c (mono_arch_nullify_class_init_trampoline): Implement this
2853         for ppc.
2854
2855 2009-05-15  Massimiliano Mantione  <massi@ximian.com>
2856
2857         Made it possible for mono_arch_instrument_epilog to preserve
2858         argument registers, otherwise instrumenting the "epilogue" before
2859         a tail call would clobber them.
2860         * mini.h: Added "mono_arch_instrument_epilog_full" prototype, which
2861         if like mono_arch_instrument_epilog but with an additional parameter
2862         that states if argument registers must be preserved.
2863         * mini.c: implemented mono_arch_instrument_epilog as a call to
2864         mono_arch_instrument_epilog_full without asking to preserve argument
2865         registers (this makes the existing code work as usual).
2866         * mini-amd64.c:
2867         - mono_arch_instrument_epilog: add parameter to transform it into
2868         mono_arch_instrument_epilog_full, and preserve argument registers
2869         when required.
2870         - mono_arch_output_basic_block, OP_TAILCALL case: call
2871         mono_arch_instrument_epilog_full.
2872         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
2873         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-x86.c:
2874         only transformed mono_arch_instrument_epilog into
2875         mono_arch_instrument_epilog_full.
2876
2877 2009-05-15  Geoff Norton  <gnorton@novell.com>
2878
2879         * mini-darwin.c: This works on arm now.
2880
2881 2009-05-14  Geoff Norton  <gnorton@novell.com>
2882
2883         * jit.h, driver.c: Allow full-aot to be decided programatically by the
2884         embedding api.
2885
2886 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
2887
2888         * aot-compiler.c (emit_method_code): Skip a few more characters in the debug
2889         label names.
2890
2891         * mini-trampolines.c (mono_magic_trampoline): Handle static rgctx invoke
2892         wrappers during full aot mode correctly.
2893
2894         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle shared generic
2895         methods correctly.
2896
2897         * aot-compiler.c (mono_aot_method_hash): Use our internal version of
2898         mono_metadata_type_hash ().
2899
2900 2009-05-14  Massimiliano Mantione  <massi@ximian.com>
2901
2902         * mini.h, mini-codegen.c, mini-alpha.c, mini-amd64.c, mini-arm.c,
2903         mini-hppa.h, mini-hppa.c, mini-ia64.c, mini-mips.h, mini-mips.c,
2904         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-886.c:
2905         Removed MONO_INST_BRLABEL from the instruction flags, and the
2906         remaining code that used it, because we do not support branches inside
2907         basic blocks (and branch target labels) anymore.
2908         * Makefile.am: As part of the above cleanup, remove reference to
2909         BURG files which don't exist anymore.
2910
2911 2009-05-14  Zoltan Varga  <vargaz@gmail.com>
2912
2913         * image-writer.c (asm_writer_emit_local_symbol): Make this a nop on
2914         osx.
2915
2916         * mini-mips.c mini-mips.h exceptions-mips.c: Transition the mips backend
2917         to use mono_arch_throw_corlib_exception.
2918
2919         * mini-ppc.c mini-ppc.h exceptions-ppc.c: Use 
2920         mono_arch_throw_corlib_exception for throwing corlib exceptions.
2921
2922         * aot-runtime.c (decode_patch): Allocate the data for R4/R8 from the
2923         domain mempool.
2924
2925         * mini.c (mono_patch_info_dup_mp): Copy the table of switch targets too.
2926
2927         * aot-compiler.c: Emit a local symbol prefixed with the assembly name 
2928         for the got to make debugging easier and to avoid confusing it with the
2929         system got.
2930         
2931         * aot-compiler.c (emit_method_code): Emit a C style symbol for each
2932         method so a breakpoint can be set when using gdb.
2933
2934 2009-05-13  Zoltan Varga  <vargaz@gmail.com>
2935
2936         * aot-compiler.c (mono_aot_method_hash): Implement this properly based
2937         on mono_method_get_imt_slot ().
2938
2939         * aot-runtime.c (find_extra_method_in_amodule): Get rid of the
2940         num_decodes variables.
2941
2942         * aot-compiler.c (mono_aot_method_hash): Revert part of the last
2943         change as it doesn't seem to work.
2944         
2945         * aot-compiler.c (mono_aot_method_hash): Improve the hashing of
2946         wrappers.
2947
2948 2009-05-12  Zoltan Varga  <vargaz@gmail.com>
2949
2950         * aot-compiler.c mini.c mini-amd64.h mini-arm.h: Kill 
2951         MONO_ARCH_FULL_AOT_IMT_SUPPORTED define, both platforms now support imt.
2952
2953         * mini.c (mini_init): Install mono_aot_get_imt_thunk as the IMT thunk
2954         builder when using full aot.
2955
2956         * mini-amd64.c (mono_arch_build_imt_thunk): Don't handle the full-aot case
2957         here, it is already handled.
2958         
2959         * mini-arm.c (mono_arch_emit_imt_argument): Pass the dynamic imt arg
2960         correctly for IMT.
2961
2962         * aot-compiler.c (arch_emit_imt_thunk): Implement this for ARM.
2963
2964         * mini-arm.h: Enable IMT for full aot.
2965         
2966         * aot-compiler.c (mono_compile_assembly): Don't emit imt thunk if the
2967         arch doesn't support it.
2968
2969         * mini.c (mini_init): Don't disable IMT for full aot if the
2970         architecture supports it.
2971
2972         * mini.h (MonoAotTrampoline): New enum containing the different types
2973         of 'numerous' trampolines.
2974         (MONO_AOT_FILE_VERSION): Bump this.
2975
2976         * aot-compiler.c aot-runtime.c: Unify the handling of specific and
2977         static rgctx trampolines. Add support for full-aot IMT thunks.
2978
2979         * mini-amd64.h: Enable IMT for full aot.
2980
2981         * TestDriver.cs: Add a CategoryAttribute class and an --exclude option
2982         to exclude tests belonging to a category.
2983
2984         * generics.cs: Mark some tests with a !FULLAOT category.
2985
2986         * Makefile.am (fullaotcheck): Run tests with --exclude !FULLAOT. Include
2987         generics tests.
2988
2989 2009-05-11  Zoltan Varga  <vargaz@gmail.com>
2990
2991         * aot-compiler.c (emit_and_reloc_code): Move the implementation of
2992         MONO_PATCH_INFO_GOT_OFFSET to a separate arch-specific function.
2993         (emit_plt): Fix a warning.
2994
2995 2009-05-10  Zoltan Varga  <vargaz@gmail.com>
2996
2997         * aot-compiler.c aot-runtime.c: Fix the build by moving is_shared_got_patch
2998         back into aot-compiler.c to a place where the other functions shared by
2999         the runtime and aot compiler are.
3000         
3001         * aot-compiler.c aot-runtime.c: Emit the got addr using a separate symbol,
3002         as done previously, instead of in MonoAotFileInfo, since pointers might have
3003         alignment requirements.
3004
3005         * mini.h: Bump AOT file format version.
3006
3007 2009-05-10  Miguel de Icaza  <miguel@novell.com>
3008
3009         * aot-runtime.c (mono_aot_is_shared_got_patch): Move this routine
3010         that is used at runtime from the aot-compiler.c, this makes it
3011         work on setups that remove the AOT compiler from the output
3012         image. 
3013
3014 2009-05-09  Zoltan Varga  <vargaz@gmail.com>
3015
3016         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Implement this for
3017         PPC.
3018
3019         * mini-ppc.h: Enable static rgctx trampolines for ppc.
3020
3021         * mini-<ARCH>.h: Kill the MONO_ARCH_ENABLE_EMIT_STATE_OPT define.
3022
3023         * decompose.c (mono_decompose_long_opts): Move the ppc/sparc specific 
3024         stuff to mono_arch_decompose_long_opts ().
3025         (mono_decompose_opcode): Remove some dead code.
3026
3027 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
3028
3029         * method-to-ir.c (mono_method_to_ir): Fix boostrap of non amd64 builds
3030         cmethod can be null for quite a some reasons.
3031
3032 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
3033
3034         * method-to-ir.c (mono_method_to_ir): Fix non amd64 builds.
3035
3036 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
3037
3038         * aot-compiler.c (arch_emit_got_access): Fix the aot-not-supported build.
3039
3040 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
3041
3042         * method-to-ir.c (mono_emit_call_args): Add a 'tail' flag argument.
3043         (mono_method_to_ir): Use MONO_ARCH_USE_OP_TAIL_CALL macro to determine
3044         whenever to make tail calls using OP_TAIL_CALL. Enable support for tail
3045         calls returning structures by addr on amd64.
3046
3047         * mini-amd64.h (MONO_ARCH_USE_OP_TAIL_CALL): New arch-specific macro.
3048
3049         * iltests.il.in: Restructure the tail call tests a bit.
3050         
3051 2009-05-07  Zoltan Varga  <vargaz@gmail.com>
3052
3053         * aot-compiler.c (add_wrappers): Add remoting-invoke-with-check wrappers
3054         for virtual methods too.
3055
3056 2009-05-06  Raja R Harinath  <harinath@hurrynot.org>
3057
3058         * method-to-ir.c (mono_method_to_ir): Revert change of 2009-05-02
3059         due to regression in verifying System.dll.
3060
3061 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
3062
3063         * debug-mini.c (mono_debugger_method_has_breakpoint): Allow breakpoints
3064         in dynamic methods.
3065
3066         * dwarfwriter.c (emit_class_dwarf_info): Add support for generic
3067         instances.
3068
3069         * aot-compiler.c aot-runtime.c: Use our own hash function instead of
3070         g_str_hash () which can change.
3071
3072         * driver.c (mini_regression): Disable optimizations not supported by
3073         the cpu. Fixes #500019.
3074
3075         * aot-runtime.c (mono_aot_get_unwind_info): Fix the --enable-minimal=aot
3076         build.
3077
3078 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
3079
3080         * mini-llvm.c (mono_llvm_emit_method): Update the OP_TLS_GET implementation
3081         to the latest LLVM code.
3082
3083 2009-05-05  Zoltan Varga  <vargaz@gmail.com>
3084
3085         * genmdesc.pl (load_opcodes): Fix this after the TARGET_... changes.
3086
3087 2009-05-04  Zoltan Varga  <vargaz@gmail.com>
3088
3089         * mini-llvm.c (mono_llvm_emit_method): Implement TLS support on 
3090         x86/amd64.
3091
3092         * aot-compiler.c (encode_patch_list): Simplify this considerably as we are
3093         no longer saving offsets, so just save the patch types along with the other
3094         info.
3095         * aot-runtime.c (load_patch_info): Update after the changes to 
3096         encode_patch_list ().
3097         (decode_got_entry): Removed, merged into load_patch_info ().
3098         (is_shared_got_patch): Removed, call the same function from
3099         aot-compiler.c.
3100
3101         * mini.h: Bump aot file format version.
3102         
3103         * aot-compiler.c aot-runtime.c: Resurrect static linking support. Kill the
3104         half-finished no-dlsym code.
3105
3106         * aot-runtime.c (load_method): Kill the old and bit-rotten use_loaded_code
3107         option.
3108
3109         * mini-<ARCH>.h mini-trampolines.c aot-runtime.c: Kill the 
3110         MONO_ARCH_HAVE_CREATE_TRAMPOLINE_FROM_TOKEN define.
3111
3112 2009-05-02  Zoltan Varga  <vargaz@gmail.com>
3113
3114         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Increase the
3115         buffer length to work with AOT code.
3116
3117         * method-to-ir.c (mono_method_to_ir): Handle loading errors in the
3118         ldfld/stfld opcodes.
3119
3120         * exceptions-x86.c (mono_arch_get_throw_exception_by_name): Simplify this
3121         as it is not used.
3122
3123         * mini-llvm.c mini-x86.c: Implement 32 bit and x86 support.
3124
3125         * ssa.c (mono_ssa_compute): Don't skip I8 values when using LLVM.
3126
3127         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Update to the latest
3128         LLVM API.
3129
3130         * mini.c (mini_method_compile): Set the from_llvm flag in MonoJitInfo
3131         if needed. Don't decompose long operations when using llvm.
3132
3133 2009-05-01  Zoltan Varga  <vargaz@gmail.com>
3134
3135         * aot-compiler.c aot-runtime.c: Use mono_pagesize () instead of the
3136         PAGESIZE constant.
3137
3138         * aot-runtime.c (load_aot_module): Get rid of another mprotect call.
3139
3140 2009-05-03  Martin Baulig  <martin@ximian.com>
3141
3142         * debug-debugger.c (debugger_insert_source_breakpoint): Don't call
3143         mono_debugger_insert_method_breakpoint() since the class init
3144         handler we're inserting at the top of the method already gives us
3145         a notification.
3146
3147 2009-04-30  Zoltan Varga  <vargaz@gmail.com>
3148
3149         * decompose.c (mono_decompose_long_opts): Move the implementation of LNEG
3150         to mono_arch_decompose_long_opts () for x86 and arm.
3151
3152 2009-04-29  Zoltan Varga  <vargaz@gmail.com>
3153
3154         * mini-codegen.c (mono_regstate_alloc_int): Use __x86_64__ instead of
3155         TARGET_AMD64 here.
3156
3157 2009-04-28  Zoltan Varga  <vargaz@gmail.com>
3158
3159         * *.h *.c: Use TARGET_<ARCH> defines instead of __<arch>__ defines in the
3160         JIT code.
3161
3162 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
3163
3164         * aot-runtime.c (mono_aot_create_specific_trampoline): Add a stat for the
3165         number of trampolines used in full-aot mode.
3166
3167         * aot-compiler.c: Add an ntrampolines option to set the number of 
3168         trampolines emitted in full-aot mode.
3169
3170 2009-04-27  Zoltan Varga  <vargaz@gmail.com>
3171
3172         * mini-llvm.c (mono_llvm_emit_method): Implement OP_CHECK_THIS using
3173         a volatile load. Get rid of get_tempname (), llvm assigns names
3174         automatically.
3175
3176         * mini-llvm-cpp.cpp (mono_llvm_build_volatile_load): New instruction
3177         builder function.
3178
3179         * mini-llvm.c (mono_llvm_emit_method): Don't call LLVMGetParam on
3180         a value.
3181
3182         * abcremoval.c (REPORT_ABC_REMOVAL): Don't output messages at verbose
3183         level 1.
3184
3185         * mini-codegen.c (mono_local_regalloc): Prevent sreg1/dreg to be allocated
3186         to the same register as a fixed sreg2. Fixes #497271.
3187
3188         * iltests.il.in: Add a new test.
3189
3190 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
3191
3192         * mini-amd64.c: Use moves instead of pushes for passing arguments on the
3193         stack, since pushes complicate exception handling.
3194
3195         * exceptions-amd64.c (mono_arch_find_jit_info): Don't pop the arguments of
3196         the stack if they are passed using moves.
3197
3198         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
3199
3200         * method-to-ir.c (mono_method_to_ir): Disable fast virtual generic methods
3201         when using llvm.
3202
3203         * mini-llvm.c (mono_llvm_emit_method): Call jit icall wrappers, not the 
3204         icalls themselves. Convert arguments of FCOMPARE. Convert the destination
3205         of FMOVE if it is an R4.
3206
3207 2009-04-25  Zoltan Varga  <vargaz@gmail.com>
3208
3209         * mini-ops.h: Add OP_LLVM_OUTARG_VT opcode.
3210
3211         * mini.h (LLVMCallInfo): New structure to store calling convention 
3212         information for the LLVM back end similar to the CallInfo structures in 
3213         the back-ends.
3214
3215         * mini-amd64.c (mono_arch_get_llvm_call_info): New arch function to return
3216         call information in a format usable by LLVM.
3217         (mono_arch_emit_call): Move the LLVM handling code to mono_llvm_emit_call ().
3218
3219         * method-to-ir.c (mono_emit_call_args): Emit calls using 
3220         mono_llvm_emit_call () when compiling using LLVM.
3221
3222         * mini-llvm.c: Implement support for passing/receiving valuetypes. Add
3223         comments to all functions. Fix memory leaks. Add a public init/cleanup
3224         function.
3225
3226         * mini.c: Call the llvm init/cleanup functions in mini_init()/cleanup().
3227
3228         * method-to-ir.c (handle_array_new): Disable llvm when calling the vararg
3229         mono_array_new_va () jit icall.
3230         
3231 Fri Apr 24 16:44:08 CEST 2009 Paolo Molaro <lupus@ximian.com>
3232
3233         * Makefile.am, genmdesc.c, genmdesc.pl: tiny refactor to allow
3234         multiple machine description files to be specified.
3235         * mini-ops.h: fixes for cross-compilation.
3236
3237 2009-04-22  Miguel de Icaza  <miguel@novell.com>
3238
3239         * aot-runtime.c (make_writable): Use mono_mprotect to simplify
3240         some porting work.
3241
3242 2009-04-22  Zoltan Varga  <vargaz@gmail.com>
3243
3244         * method-to-ir.c (mono_method_to_ir): Force init_locals to be TRUE
3245         to prevent asserts in various passes. Fixes #497220.
3246
3247 2009-04-21  Zoltan Varga  <vargaz@gmail.com>
3248
3249         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove
3250         a racy assert.
3251
3252         * aot-compiler.c aot-runtime.c: Emit the unwind info into a separate
3253         table to avoid duplicates.
3254
3255         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
3256         
3257         * aot-compiler.c (emit_method_code): Avoid writing symbols if the nodebug
3258         option is used.
3259
3260 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
3261
3262         * mini.c (mini_method_verify): Fail fulltrust code if the exception
3263         is for method or field access.
3264
3265 2009-04-20  Zoltan Varga  <vargaz@gmail.com>
3266
3267         * mini-llvm-cpp.cpp (mono_llvm_dump_value): New helper function to print
3268         a Value to stdout.
3269
3270         * mini-llvm.c (mono_llvm_emit_method): Use it.
3271         
3272         * mini-llvm.c (type_to_llvm_type): Fix the mapping of enums.
3273         (mono_llvm_emit_method): Add support for CAS. Fix handling of CSET opcodes
3274         on volatile values.
3275
3276         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add support for 
3277         synchronized methods.
3278
3279         * mini.c (mini_method_compile): Disable LLVM for dynamic methods.
3280
3281         * mini.c (mini_method_compile): Enable ABCREM when running with LLVM.
3282
3283         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOADI4_MEM/
3284         OP_LOADI8_MEM.
3285
3286         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add a MONO_LLVM env variable
3287         allowing some options to be set dynamically.
3288
3289 2009-04-19  Zoltan Varga  <vargaz@gmail.com>
3290
3291         * mini-llvm.c (mono_llvm_emit_method): Handle compares followed by an
3292         unconditional branch.
3293
3294         * mini.h (MonoTrampolineType): Add new trampoline type 
3295         'MONO_TRAMPOLINE_LLVM_VCALL' which handles virtual calls made from LLVM
3296         compiled code.
3297
3298         * mini-trampolines.c (mono_llvm_vcall_trampoline): New C trampoline 
3299         function.
3300
3301         * mini-trampolines.c (mono_create_llvm_vcall_trampoline): New trampoline
3302         creation function.
3303
3304         * mini.c (mini_init): Avoid using the common vtable trampoline when LLVM
3305         is enabled. Instead, use the llvm vcall trampoline.
3306         
3307         * mini-trampolines.c (mono_get_vcall_slot_addr): New helper function.
3308
3309         * mini-trampolines.c tramp-amd64.c tramp-x86.c: Use it.
3310         
3311         * mini-<ARCH>.c: Get rid of the identical mono_arch_get_vcall_slot_addr ()
3312         functions.
3313
3314         * mini-<ARCH>.h mini-trampolines.c mini.c: Get rid of 
3315         MONO_ARCH_COMMON_VTABLE_TRAMPOLINE, it is supported by all archs.
3316
3317         * mini-ia64.c (mono_arch_lowering_pass): Null out the sregs of the
3318         OP_IA64_CSET opcode.
3319
3320         * mini.c: Fix a warning.
3321
3322         * mini-llvm.c (mono_llvm_emit_method): Convert arguments of SWITCH and
3323         THROW to the appropriate llvm type.
3324
3325 2009-04-18  Zoltan Varga  <vargaz@gmail.com>
3326
3327         * mini.c (mini_method_compile): Add statistics for methods JITted
3328         with/without LLVM.
3329
3330 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
3331
3332         * method-to-ir.c: Fix the computation of ins_sreg_counts for ia64
3333         OP_IA64_CMP_<cond>_IMM opcodes.
3334
3335 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
3336
3337         * mini-llvm.c (emit_cond_system_exception): Implement throwing of
3338         corlib exceptions.
3339
3340         * dwarfwriter.c (mono_dwarf_writer_emit_method): Handle --regression
3341         correctly.
3342
3343         * mini-llvm.c (type_to_llvm_type): Avoid accessing t->data.klass for
3344         GENERICINST.
3345
3346 2009-04-17  Atsushi Enomoto  <atsushi@ximian.com>
3347
3348         * mini-exceptions.c : add thread id to EXCEPTION trace message.
3349
3350 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
3351
3352         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Fix AOT
3353         support.
3354
3355         * tramp-x86.c (mono_arch_get_unbox_trampoline): Implement static
3356         rgctx invoke trampolines for x86.
3357
3358         * mini-x86.c (mono_arch_output_basic_block): Add a few nops before
3359         indirect calls to simplify get_vcall_slot_addr (). Fixes #494567.
3360         (mono_arch_get_vcall_slot): Simplify this.
3361
3362 2009-04-16  Zoltan Varga  <vargaz@gmail.com>
3363
3364         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Move the calls to
3365         mono_debug_add_delegate_trampoline () to get_delegate_invoke_impl ().
3366
3367 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
3368
3369         * aot-compiler.c tramp-arm.c mini-arm.c: Implement static rgctx 
3370         trampolines for ARM. Add full-aot support for delegate invokes for ARM.
3371
3372         * mini-trampolines.c (mono_magic_trampoline): Fix the build.
3373
3374         * liveness.c (visit_bb): Remove a needless assert.
3375
3376 2009-04-13  Zoltan Varga  <vargaz@gmail.com>
3377
3378         * mini-trampolines.c (mono_create_delegate_trampoline): Delegate the
3379         full aot support to the arch specific code.
3380
3381         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Add full-aot support.
3382
3383         * aot-compiler.c (emit_trampolines): Emit delegate invoke impl trampolines.
3384
3385         * aot-compiler.c (emit_named_code): Rename this to 'emit_trampoline'.
3386         
3387         * mini-amd64.c (mono_arch_get_delegate_invoke_impls): New function to
3388         collect information about the delegate invoke impl trampolines.
3389
3390         * mini.h (MonoAotTrampInfo): New structure collecting the information needed
3391         to save trampolines during full-aot mode.
3392
3393         * mini-trampolines.c (mono_create_static_rgctx_trampoline): New trampoline
3394         creation function which returns a trampoline which sets the rgctx
3395         argument.
3396         (mono_magic_trampoline): Use the rgctx trampoline instead of an rgctx
3397         wrapper if possible.
3398         (mono_delegate_trampoline): Ditto.
3399
3400         * mini.c (mono_jit_runtime_invoke): Ditto.
3401
3402         * tramp-amd64.c: Add an implemention of static rgctx trampolines for AMD64.
3403         
3404         * aot-compiler.c aot-runtime.c: Add support for static rgctx trampolines.
3405
3406         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
3407         
3408 2009-04-12  Zoltan Varga  <vargaz@gmail.com>
3409
3410         * mini-ia64.c (mono_arch_lowering_pass): Use NULLIFY_INS instead of
3411         just setting the opcode to OP_NOP.
3412
3413 2009-04-11  Zoltan Varga  <vargaz@gmail.com>
3414
3415         * mini.c (mini_method_compile): Put the last change inside an 
3416         #ifdef MONO_ARCH_HAVE_LIVERANGE_OPS.
3417         
3418         * mini.c (mini_method_compile): Disable sharing of stack slots/registers
3419         and extend live ranges to cover the whole method when using xdb.
3420
3421         * jit-icalls.c (ldvirtfn_internal): Avoid creating rgctx wrappers here,
3422         do it in the trampolines.
3423
3424         * mini-trampolines.c (mono_magic_trampoline): Add an rgctx wrapper if
3425         needed.
3426
3427         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
3428         
3429         * method-to-ir.c (mono_method_to_ir): Avoid using the fast virtual method
3430         call code in full-aot mode since IMT is disabled there.
3431         (mono_method_to_ir): Inline ldfld wrappers which return structures too, the
3432         new JIT no longer has that restriction.
3433
3434         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
3435
3436         * aot-compiler.c (emit_extra_methods): Emit the wrapper method names in
3437         a more compact format.
3438         (mono_aot_wrapper_name): New function to return a unique name for a
3439         wrapper method, also used by the AOT runtime.
3440
3441         * aot-runtime.c (find_extra_method_in_amodule): Update after the changes to
3442         aot-compiler.c.
3443
3444         * aot-compiler.c (add_generic_class): Add the helper methods from T[]
3445         when a ICollection<T> etc is encountered.
3446         (add_generic_instances): Process method arguments/locals too.
3447         (emit_trampolines): Emit unbox trampolines for extra methods too. Shorten
3448         trampoline names.
3449
3450         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle extra methods too.
3451         
3452 2009-04-10  Zoltan Varga  <vargaz@gmail.com>
3453
3454         * aot-compiler.c: Disable the AOT compiler if the JIT is disabled.
3455
3456         * dwarfwriter.c (emit_type): Emit byref to reference types as 'int' for now.
3457
3458         * decompose.c (mono_decompose_opcode): Make this return a MonoInst*
3459         representing the result of the decomposition. Nullify instructions
3460         instead of setting them to OP_NOP since nops can't have registers
3461         set.
3462
3463 2009-04-09  Zoltan Varga  <vargaz@gmail.com>
3464
3465         * aot-compiler.c (mono_compile_assembly): Split this huge function into
3466         smaller parts. Add 'nodebug' option to prevent generation of DWARF debug
3467         info. Strip 'mapping symbols' on ARM.
3468
3469         * iltests.il.in (test_0_fconv_to_i): Disable this on ARM too.
3470         
3471         * genmdesc.pl: Applied patch by Martin Fuzzey (mfuzzey@parkeon.com). Sync
3472         this with the native genmdesc.
3473
3474 2009-04-08  Bill Holmes  <billholmes54@gmail.com>
3475
3476         * aot-runtime.c:  Fixing the MSVC build.
3477
3478         Code is contributed under MIT/X11 license.
3479
3480 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
3481
3482         * mini-llvm.c (mono_llvm_emit_method): Pass i1/i2 arguments as i4 since 
3483         JITted code depends on it.
3484
3485 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
3486
3487         * aot-compiler.c: Use new MonoGenericParam accessors.
3488
3489 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
3490
3491         Reduce memory usage and improve correctness wrt MonoGenericParam
3492         * aot-runtime.c (decode_klass_ref): Simplify generic parameter
3493         handing.  Avoid allocating MonoGenericParams, but use the ones in
3494         the container itself.
3495
3496 2009-04-07  Miguel de Icaza  <miguel@novell.com>
3497
3498         * tasklets.c: Return exceptions in the out argument.
3499
3500 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
3501
3502         * mini-llvm.c (mono_llvm_emit_method): Fix alignment in the LOCALLOC_IMM
3503         opcode. Use pointer types in more places instead of casting them to 
3504         integers.
3505
3506         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Create a pass manager to run
3507         optimizations.
3508         (mono_llvm_optimize_method): New helper function to optimize a method.
3509
3510         * method-to-ir.c (mono_emit_widen_call_res): Extract the call result 
3511         widening code so it could be called from more places.
3512         (mono_method_to_ir): Call mono_emit_widne_call_res () in several more
3513         code paths in the call opcodes.
3514
3515 Mon Apr 6 14:19:54 CEST 2009 Paolo Molaro <lupus@ximian.com>
3516
3517         * exceptions-amd64.c, mini-amd64.h: amd64 support code for continuations.
3518
3519 2009-04-06  Zoltan Varga  <vargaz@gmail.com>
3520
3521         * dwarfwriter.c: Use _ to separate class name 
3522         components as gdb can't handle '.'. Represent reference variables
3523         as 'class <NAME>&'.
3524         
3525         * mini.h (MonoCompile): Add locals_min_stack_offset/locals_max_stack_offset.
3526
3527         * mini-amd64.c (mono_arch_allocate_vars): Save min/max stack offset.
3528         
3529         * mini-gc.c: New file, contains the SGEN GC related parts of the JIT.
3530
3531         * gc-test.cs: New file with GC stack marking tests.
3532         
3533         * mini-arm.c (mono_arch_output_basic_block): Fix int->float conversion of
3534         negative numbers for vfp.
3535
3536         * basic-float.cs: Add a test.
3537         
3538 Mon Apr 6 14:12:10 CEST 2009 Paolo Molaro <lupus@ximian.com>
3539
3540         * exceptions-x86.c, mini-x86.h: x86 support code for continuations.
3541
3542 Mon Apr 6 14:09:53 CEST 2009 Paolo Molaro <lupus@ximian.com>
3543
3544         * tasklets.h, tasklets.c, mini.h, mini.c, Makefile.am: arch-indep
3545         part of tasklet/continuation support.
3546
3547 2009-04-05  Zoltan Varga  <vargaz@gmail.com>
3548
3549         * mini-llvm.c (mono_llvm_emit_method): Move the handling of
3550         amd64 opcodes inside an ifdef.
3551
3552         * dwarfwriter.c: Emit inheritance information for classes, emit fields
3553         of complex types.
3554         
3555         * dwarfwriter.c (emit_type): Emit the class info for classes.
3556
3557 2009-04-04  Zoltan Varga  <vargaz@gmail.com>
3558
3559         * Makefile.am (AM_CXXFLAGS): Add GLIB_CFLAGS to this.
3560
3561         * mini-llvm-cpp.h: New header file for mini-llvm-cpp.cpp.
3562
3563         * mini-llvm.c: Remove unused fields from EmitContext, fix memory leaks.
3564
3565         * ssa.c (mono_ssa_compute): Fix some memory leaks.
3566
3567 2009-04-03  Zoltan Varga  <vargaz@gmail.com>
3568
3569         * mini.c mini-amd64.c method-to-ir.c: Use COMPILE_LLVM in a few more places.
3570
3571         * mini-llvm.c: Update comments.
3572
3573         * mini.h (COMPILE_LLVM): New macro.
3574
3575         * decompose.c (mono_decompose_opcode): Use the COMPILE_LLVM macro.
3576
3577         * ssa.c (mono_ssa_compute): Ditto.
3578         
3579         * unwind.c (mono_unwind_get_ops_from_fde): New helper function to extract
3580         the unwind ops from a DWARF FDE.
3581
3582         * mini-llvm.c: Implement generation of unwind info for LLVM compiled
3583         methods by extracting the dwarf unwind ops from the unwind info generated
3584         by LLVM.
3585         
3586         * mini-llvm.c (mono_llvm_emit_method): Enable support for non-IMT virtual
3587         calls.
3588
3589         * mini-amd64.c (mono_arch_get_vcall_slot): Handle more kinds of the SIB
3590         addressing modes.
3591
3592 2009-04-02  Zoltan Varga  <vargaz@gmail.com>
3593
3594         * Makefile.am (llvm_sources): Enable this.
3595
3596         * mini.c (mini_method_compile): Add support for compiling with LLVM, 
3597         failing back to the JIT if something cannot be handled.
3598
3599         * mini-amd64.c (mono_arch_emit_call): Emit the arguments more simple when
3600         compiling with LLVM.
3601
3602         * decompose.c (mono_decompose_opcode): Avoid decomposing some opcodes when
3603         compiling with LLVM.
3604
3605         * method-to-ir.c (mono_method_to_ir): Avoid decomposing SWITCH when 
3606         compiling with LLVM.
3607
3608         * mini-ops.h: Add a few opcodes needed by LLVM.
3609
3610         * dwarfwriter.c (mono_dwarf_writer_emit_method): Avoid crashes if the method
3611         has no unwind info.
3612
3613         * mini-llvm.c mini-llvm-cpp.cpp: New files containing the experimental llvm
3614         backend.
3615
3616         * mini-arm.c (mono_arch_output_basic_block): Fix the ARM_FPU_NONE build.
3617
3618         * mini-arm.h mini-arm.c cpu-arm.md: Finish VFP support.
3619
3620 2009-04-01  Mark Probst  <mark.probst@gmail.com>
3621
3622         * regalloc.h, mini-codegen.c: Make vassign members gint32 to fix
3623         ridiculously large methods.
3624
3625 2009-03-31  Martin Baulig  <martin@ximian.com>
3626
3627         * debug-debugger.c (debugger_remove_breakpoint): Call
3628         mono_debugger_remove_class_init_callback ().
3629
3630 2009-03-31  Zoltan Varga  <vargaz@gmail.com>
3631
3632         * aot-compiler.c (mono_compile_assembly): Call img_writer_emit_start ()
3633         right before emitting code, not at the start.
3634
3635         * mini.c (mono_postprocess_patches): Extract this into a separate function
3636         from mono_codegen ().
3637
3638         * ssa.c (mono_ssa_compute): Set ins->klass for every PHI node, handle
3639         byref types correctly.
3640
3641 2009-03-30  Zoltan Varga  <vargaz@gmail.com>
3642
3643         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix a crash introduced
3644         by the last change.
3645
3646 2009-03-29  Zoltan Varga  <vargaz@gmail.com>
3647
3648         * mini-amd64.c (mono_arch_output_basic_block): Emit a few nops before 
3649         indirect calls, this avoids problems where get_vcall_slot () would get
3650         confused by the native code for the instruction preceeding the call.
3651         (mono_arch_get_vcall_slot): Simplify this.
3652         (mono_arch_emit_imt_argument): Remove this, it is no longer needed.
3653
3654         * mini-ops.h: Fix the definitions of the OP_IA64 opcodes, since the local
3655         register allocator now seems to depend on them instead of the data in
3656         cpu-<ARCH>.md.
3657
3658         * mini.c (mini_method_compile): Throw the correct type of exception if
3659         mono_method_get_header () fails because of a loading error.
3660
3661 2009-03-28  Zoltan Varga  <vargaz@gmail.com>
3662
3663         * mini.c (mini_method_compile): Clear the loader error if the method
3664         header cannot be decoded.
3665
3666         * mini-trampolines.c (mono_magic_trampoline): Handle generic virtual 
3667         interface methods on proxies correctly.
3668
3669         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix handling of the
3670         this argument for vtype methods. Add precise liveness info for arguments.
3671
3672         * mini-codegen.c (mono_print_ins_index): Print the vreg of the
3673         LIVERANGE_START/END opcodes.
3674
3675         * method-to-ir.c (mono_spill_global_vars): Fix liverange calculation
3676         for arguments and values in registers.
3677
3678 2009-03-27  Zoltan Varga  <vargaz@gmail.com>
3679
3680         * method-to-ir.c (mono_method_to_ir): Disable tail calls for calls which
3681         return a valuetype. Fixes #487518.
3682
3683         * iltests.il: Add a test.
3684         
3685         * aot-compiler.c: Use mono_thread_create () to create helper threads.
3686
3687         * mini-trampolines.c (mono_delegate_trampoline): Handle static delegates
3688         closed over a null reference correctly.
3689
3690 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
3691
3692         * method-to-ir.c (mono_handle_global_vregs): Fix support for ternary ops.
3693
3694 2009-03-25  Mark Probst  <mark.probst@gmail.com>
3695
3696         * mini-codegen.c (mono_local_regalloc): Don't let sregs get
3697         allocated to the same registers as fixed sregs.
3698
3699 2009-03-24  Mark Probst  <mark.probst@gmail.com>
3700
3701         * mini-ops.h: New ternary ATOMIC_CAS ops replace the old
3702         ATOMIC_CAS_IMM ops.
3703
3704         * method-to-ir.c: Handle more cases for
3705         Interlocked.CompareExchange.
3706
3707         * cpu-x86.md, mini-x86.c, mini-x86.h, cpu-amd64.md, mini-amd64.c,
3708         mini-amd64.h, cpu-ppc.md, cpu-ppc64.md, mini-ppc.c, mini-ppc.h:
3709         ATOMIC_CAS implementations for x86, AMD64, PPC and PPC64.
3710
3711 2009-03-23  Zoltan Varga  <vargaz@gmail.com>
3712
3713         * aot-runtime.c (decode_method_ref): Fix a warning.
3714
3715         * unwind.c (mono_unwind_frame): Ditto.  
3716
3717 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
3718
3719         * aot-compiler.c (arch_emit_unbox_trampoline): Fix the binary writer support.
3720         (mono_compile_assembly): Enable the binary writer for full-aot as well.
3721
3722         * image-writer.c (do_reloc): Add support for the JUMP24 relocation,
3723         fix the handling of large values in the ALU_PC_G0_NC relocation.
3724
3725 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
3726
3727         * local-propagation.c method-to-ir.c local-propagation.c: Fix warnings.
3728
3729 2009-03-22  Mark Probst  <mark.probst@gmail.com>
3730
3731         * method-to-ir.c (mono_spill_global_vars): Support for ternary
3732         ops.
3733
3734 2009-03-22  Mark Probst  <mark.probst@gmail.com>
3735
3736         * method-to-ir.c: MINI_OP3 needs a comma.
3737
3738         * method-to-ir.c, mini.h, mini.c: Remove
3739         mono_init_op_sreg_counts ().
3740
3741 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
3742
3743         * mini-arm.c (mono_arch_output_basic_block): Fix aot support in
3744         OP_JMP.
3745         
3746         * mini-arm.c (mono_arch_build_imt_thunk): Disable the !fail_tramp
3747         assertion.
3748
3749         * mini-ops.h: Fix arguments of the MEMINDEX opcodes.
3750
3751         * mini-amd64.c (mono_arch_build_imt_thunk): Simplify the fail handling
3752         code somewhat.
3753
3754 2009-03-21  Mark Probst  <mark.probst@gmail.com>
3755
3756         * cfold.c, cprop.c, decompose.c, genmdesc.c, helpers.c, ir-emit.h,
3757         liveness.c, local-propagation.c, method-to-ir.c, mini-codegen.c,
3758         mini.c, mini.h, simd-intrinsics.c, ssa.c: Support for ternary IR
3759         operations.
3760
3761 2009-03-20  Zoltan Varga  <vargaz@gmail.com>
3762
3763         * driver.c: Change location of gc_wrapper.h.
3764
3765         * method-to-ir.c (mono_find_block_region): Handle try clauses nested
3766         inside finally clauses correctly. Fixes #485721.
3767
3768         * mini.c (mono_find_spvar_for_region): This needs to handle try regions
3769         after the change above.
3770
3771         * exceptions.cs: Add a test.
3772         
3773 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
3774
3775         * unwind.c (mono_unwind_ops_encode): Increase the size of the encode buffer.
3776
3777         * mini-amd64.c (mono_arch_emit_epilog): Remove the encoding of stack size
3778         into cfg->used_int_regs, it is not needed with the dwarf unwinder.
3779         (mono_arch_compute_omit_fp): Remove the emit_epilog () workaround.
3780
3781         * mini-amd64.c (mono_arch_compute_omit_fp): Add another check to avoid hitting
3782         the stack_alloc_size < (1 << 16) assertion in emit_prolog ().
3783
3784 2009-03-19  Sebastien Pouliot  <sebastien@ximian.com>
3785
3786         * method-to-ir.c: Allow CoreCLR to throw FieldAccessException. 
3787         Simplify logic for ensure_method_is_allowed_to_call_method. 
3788         Handle wrappers on callers.
3789
3790 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
3791
3792         * Makefile.am (fullaotcheck): Don't run the generics tests, some of
3793         them don't run yet.
3794
3795         * basic-simd.cs: Fix the names of some test methods.
3796
3797 2009-03-18  Geoff Norton  <gnorton@novell.com>
3798
3799         * mini.c: Only chain sigfpe if it wasn't generated in mangaed code.
3800
3801 2009-03-18  Zoltan Varga  <vargaz@gmail.com>
3802
3803         * dwarfwriter.c (token_handler): Fix a crash caused by the last change.
3804
3805 2009-03-17  Jb Evain  <jbevain@novell.com>
3806
3807         * driver.c: remove now uneeded call to mono_gc_base_init before
3808         mono_profiler_load.
3809
3810 2009-03-17  Jb Evain  <jbevain@novell.com>
3811
3812         * dwarfwriter.c (token_handler): handle more cases.
3813
3814 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com> 
3815
3816         * method-to-ir.c: Remove more dead code (that was required only
3817         because of method_is_safe). Fix compiler warnings.
3818
3819 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com>
3820
3821         * method-to-ir.c: Remove unneeded/useless method_is_safe
3822         http://lists.ximian.com/archives/public/mono-devel-list/2009-March/031404.html
3823
3824 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
3825
3826         * mini.c (mini_method_compile): Print the method been compiled with
3827         verbose level 1 instead of 3 as this helps a lot debugging JIT crashes
3828         for people not familiar with the runtime.
3829
3830 2009-03-17  Zoltan Varga  <vargaz@gmail.com>
3831
3832         * mini-exceptions.c (get_generic_info_from_stack_frame): Avoid returning
3833         a managed object which is later put into a GList. Return its class instead.
3834
3835         * mini.c (mono_allocate_stack_slots_full): Avoid sharing ref and non-ref
3836         stack slots when using sgen.
3837
3838 2009-03-16  Zoltan Varga  <vargaz@gmail.com>
3839
3840         * dwarfwriter.c (emit_line_number_info): Really fix the eglib build.
3841
3842 2009-03-14  Zoltan Varga  <vargaz@gmail.com>
3843
3844         * local-propagation.c (reg_is_softreg_no_fpstack): Use >= instead of
3845         > so it works on the first vreg as well.
3846
3847 2009-03-13  Zoltan Varga  <vargaz@gmail.com>
3848
3849         * dwarfwriter.c (emit_line_number_info): Disable an assert which seems to
3850         trigger randomly.
3851
3852         * aot-compiler.c: Get rid of xdebug_lock (), use the loader lock instead.
3853         
3854         * dwarfwriter.c (emit_line_number_info): Fix eglib build as eglib doesn't
3855         implement GArray.
3856
3857 2009-03-12  Zoltan Varga  <vargaz@gmail.com>
3858
3859         * dwarfwriter.c (emit_line_number_info): Optimize the computation of the
3860         native->IL offset mapping.
3861
3862 2009-03-11  Zoltan Varga  <vargaz@gmail.com>
3863
3864         * mini-amd64.c (mono_arch_output_basic_block): Fix % 1. Fixes #484323.
3865
3866         * basic.cs: Add a test.
3867
3868 2009-03-11  Mark Probst  <mark.probst@gmail.com>
3869
3870         * mini-x86.c (mono_arch_output_basic_block): Use different
3871         registers in case the ones we want to overwrite are used by the
3872         other operand.  Fixes regression in #480807.
3873
3874 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
3875
3876         * aot-compiler.c (mono_compile_assembly): Make the output less verbose.
3877
3878         * dwarfwriter.c (emit_line_number_info): The line number info for
3879         IL code was off by one. Fix that.
3880
3881         * mini-s390x.c: Fix support for vtypes whose addresses are passed on the
3882         stack.
3883
3884 2009-03-09  Mark Probst  <mark.probst@gmail.com>
3885
3886         Contributed under the terms of the MIT/X11 license by Steven
3887         Munroe <munroesj@us.ibm.com>.
3888
3889         * mini-ppc.c: Correct handling of OP_LOADI4_MEMINDEX for ppc64.
3890         Fixes #483462.
3891
3892 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
3893
3894         * dwarfwriter.c (token_handler): Decode method references in non-wrappers
3895         as well.
3896
3897 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
3898
3899         * method-to-ir.c (mono_method_to_ir): Check for type load exceptions in
3900         the delegate ctor handling code. Fixes #482638.
3901         
3902         * method-to-ir.c (mini_emit_memset): Fix the handling of size '3'. Fixes
3903         #481458.
3904
3905         * iltests.il.in: Add a test.
3906         
3907         * mini-darwin.c (mono_chain_signal): Remove this, it is already in
3908         mini-posix.c.
3909
3910 2009-03-05  Mark Probst  <mark.probst@gmail.com>
3911
3912         * mini-trampolines.c (mono_create_jump_trampoline): If the method
3913         is shared generic code, return the trampoline, even if the method
3914         has already been compiled.  Fixes #479763.
3915
3916         * mini.c, mini.h: New function
3917         mono_jit_find_compiled_method_with_jit_info() which is the same as
3918         mono_jit_find_compiled_method() but also returns the jit info.
3919
3920 2009-03-05  Mark Probst  <mark.probst@gmail.com>
3921
3922         * method-to-ir.c (mono_method_to_ir): Only force the vtable var
3923         for methods which actually have one.  For all other methods, make
3924         sure the this argument var is live the whole method.
3925
3926         * mini.c (mini_method_compile): Every shared method has a
3927         this/vtable/mrgctx info.  Fixes #480807.
3928
3929 2009-03-05  Mark Probst  <mark.probst@gmail.com>
3930
3931         * mini-ppc.c (mono_arch_build_imt_thunk): Add support for mixed
3932         generic/imt thunks where some entries branch through the vtable,
3933         while other entries branch directly.
3934
3935 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
3936
3937         * mini-darwin.c (mono_chain_signal): Define this to fix the build.
3938
3939         * mini-windows.c: Ditto.
3940         
3941         * mini.c (mono_jit_runtime_invoke): Speed up the invoking of parameterless
3942         ctors.
3943
3944 2009-03-04  Zoltan Varga  <vargaz@gmail.com>
3945
3946         * dwarfwriter.c (emit_line_number_info): Add some debug code to help track
3947         down an assert.
3948
3949 2009-03-04  Mark Probst  <mark.probst@gmail.com>
3950
3951         * method-to-ir.c: Don't inline methods that use JMP.  Fixes
3952         #481403.
3953
3954 2009-03-04  Mark Probst  <mark.probst@gmail.com>
3955
3956         * exceptions-x86.c: Include debug-mini.h - fixes build.
3957
3958 2009-03-04  Martin Baulig  <martin@ximian.com>
3959
3960         * debug-mini.c: Clean up the exception API and add documentation.
3961         (mono_debugger_handle_exception): New public method; this is
3962         called when throwing an exception or encountering an unhandled one.
3963         (mono_debugger_call_exception_handler): Formerly known as
3964         mono_debugger_handle_exception(); this is used to tell the
3965         debugger that we're about to invoke an exception handler.
3966
3967 2009-03-04  Martin Baulig  <martin@ximian.com>
3968
3969         * debug-mini.c (mono_debugger_runtime_invoke): Moved here from
3970         ../metadata/mono-debug-debugger.c; save and reset exception state.
3971
3972 2009-03-02  Martin Baulig  <martin@ximian.com>
3973
3974         * debug-mini.c: Moved the debugger exception handling here from
3975         ../metadata/mono-debug-debugger.c.
3976
3977         * debug-mini.h
3978         (MonoDebuggerExceptionAction): New exception typedef.
3979
3980         * debug-mini.c
3981         (MonoDebuggerThreadInfo): Added `MonoObject *last_exception'.
3982
3983         * exceptions-amd64.c
3984         (mono_amd64_throw_exception): Use the new debugger exception
3985         handling code.
3986
3987         * mini-exceptions.c
3988         (mono_handle_exception_internal): Don't call
3989         mono_debugger_unhandled_exception() here.
3990
3991 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
3992
3993         * mini.c aot-compiler.c: Update after the changes to 
3994         mono_marshal_get_runtime_invoke ().
3995
3996         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): 
3997         Virtual generic methods might not have method->slot set, work around
3998         that.
3999
4000         * generics.cs: Add a test.
4001
4002 2009-03-02  Geoff Norton  <gnorton@novell.com>
4003
4004         * mini.c:
4005         * driver.c: Allow signal chaining of SIGFPE as well.
4006
4007 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
4008
4009         * mini-trampolines.c (mono_generic_virtual_remoting_trampoline): Update
4010         this since it now receives the method not its generic context in the
4011         IMT reg.
4012
4013         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for mixed
4014         generic/imt thunks where some entries branch through the vtable, while
4015         other entries branch directly.
4016
4017         * mini-x86.c (mono_arch_build_imt_thunk): Ditto.
4018
4019         * method-to-ir.c (mono_method_to_ir): Enable fast virtual generic call 
4020         support for interface methods as well.
4021
4022         * mini-trampolines.c: Add support for virtual generic methods in interfaces
4023         using the normal IMT thunks.
4024
4025         generics.cs: Add new tests.
4026         
4027         * method-to-ir.c (mono_method_to_ir): Pass the method instead of
4028         the generic inst to the generic imt thunks. This fixes AOT support, 
4029         improves consistency with the normal IMT thunks, and makes it easier to
4030         add support for interface generic virtual methods later.
4031
4032         * mini-trampolines.c (mono_magic_trampoline): Ditto.    
4033         
4034 2009-02-28  Zoltan Varga  <vargaz@gmail.com>
4035
4036         * driver.c (mono_set_signal_chaining): New public API function to enable
4037         signal chaining on POSIX platforms.
4038
4039         * mini-posix.c mini.c: Applied a variant of a patch by Simon Rowland 
4040         (si@lindenlab.com) to implement signal chaining. The original patch was
4041         contributed under the MIT X/11 license:
4042         https://bugzilla.novell.com/show_bug.cgi?id=318894
4043
4044 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
4045
4046         * iltests.il.in (test_0_implicit_float_to_double_conversion): Disable this
4047         too until it can be made to run on amd64.
4048
4049 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
4050
4051         * mini-x86.c (mono_arch_get_this_arg_from_call): Avoid expensive calls
4052         to  get_generic_context_from_code () + get_call_info () if possible.
4053
4054 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
4055
4056         * mini-exceptions.c (mono_handle_native_sigsegv): Implement the
4057         suspend-on-sigsegv functionality.
4058
4059         * mini.c (mini_parse_debug_options): Add a new 'suspend-on-sigsegv' option
4060         to suspend when a native SIGSEGV is received. This is useful for debugging
4061         crashes which don't happen under gdb, since a live process contains more
4062         information than a core file.
4063
4064         * mini-exceptions.c (mono_print_thread_dump): Use 
4065         MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX instead of platform defines.
4066
4067         * mini-x86.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): New define.
4068
4069         * mini-amd64.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): Ditto.
4070         
4071         * basic-float.cs: Disable the tests which currently fail on amd64.
4072
4073         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass a non-null 
4074         value to mono_arch_patch_callsite () to fix crashes.
4075         
4076         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix a warning.
4077
4078 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
4079
4080         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Replace the
4081         nop code by patching the call address to point to the nullified class init
4082         trampoline, as the former does not seem to be safe on SMP machines.
4083
4084 2009-02-23  Mark Probst  <mark.probst@gmail.com>
4085
4086         * mini-ops.h: Fix the argument types for a few x86 opcodes where
4087         they were wrong.
4088
4089 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
4090
4091         * basic-float.cs basic-calls.cs: Fix warnings.
4092
4093 2009-02-22  Mark Probst  <mark.probst@gmail.com>
4094
4095         * tramp-ppc.c (mono_arch_create_trampoline_code): Store the
4096         correct frame pointer in the LMF.  Should fix #478394.
4097
4098 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
4099
4100         * Makefile.am (fullaotcheck): Copy Mono.Simd.dll as well.
4101
4102         * image-writer.c: Make the binary writer less verbose.
4103
4104 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
4105
4106         * method-to-ir.c (mono_method_to_ir): Don't assert if string ctors
4107         are called from runtime invoke wrappers.
4108
4109 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
4110
4111         * cpu-ppc.md (store_memindex): Increase the size of this.
4112
4113 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
4114
4115         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
4116
4117         * cpu-x86.md: Fix the sizes for long_conv_to_r_un and long_conv_to_r_un_2.
4118
4119         * mini-x86.c (mono_arch_output_basic_block): Use only 64bits of precision for
4120         OP_LCONV_TO_R_UN.
4121
4122         Last fix for of #467201.
4123
4124
4125 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
4126
4127         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
4128
4129         * cpu-x86.md: Fix the sizes for fcall(_reg,_membase), long_conv_to_r4_2
4130         and long_conv_to_r8_2:
4131
4132         Fixed part of #467201.
4133
4134 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
4135
4136         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
4137
4138         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of int to float
4139         conversion to 32 bits.
4140
4141         * cpu-x86.md: Increase the size of int_conv_to_r4.
4142
4143         * basic-float.cs: Add a test for this.
4144
4145         Fixed part of #467201.
4146
4147 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
4148
4149         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
4150
4151         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of long to double
4152         conversion to 64 bits.
4153
4154         * basic-float.cs: Add a test for this.
4155
4156         Fixed part of #467201.
4157
4158 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
4159
4160         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
4161
4162         * mini-x86.c (emit_move_return_value): Don't reduce precision of functions returning float.
4163         This behavior is compatible with MS.
4164
4165         * iltest.il.in: Add a test for this.
4166
4167         Fixed part of #467201.
4168
4169 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
4170
4171         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
4172
4173         * mini-x86.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_R4, it must
4174         change the precision of the value.
4175
4176         * cpu-x86.md: Define len for float_conv_to_r4.
4177
4178         * basic-float.cs: Add a test for this.
4179
4180         Fixed part of #467201.
4181
4182 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
4183
4184         * mini.c: Adjust locking order to the new semantics where the loader lock
4185         comes first.
4186
4187 2009-02-18  Rodrigo Kumpera  <rkumpera@novell.com>
4188
4189         * aot-runtime.c:
4190         * mini-amd64.c:
4191         * mini-arm.c:
4192         * mini-ia64.c:
4193         * mini-mips.c:
4194         * mini-ppc.c:
4195         * mini-sparc.c:
4196         * mini-trampolines.c:
4197         * mini-x86.c:
4198         * mini.c:
4199         * tramp-alpha.c:
4200         * tramp-amd64.c:
4201         * tramp-arm.c:
4202         * tramp-hppa.c:
4203         * tramp-ia64.c:
4204         * tramp-mips.c:
4205         * tramp-ppc.c:
4206         * tramp-s390.c:
4207         * tramp-s390x.c:
4208         * tramp-sparc.c:
4209         * tramp-x86.c: Use mono_domain_code_* functions instead of using MonoDomain::code_mp directly.
4210
4211 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
4212
4213         * mini-codegen.c (mono_local_regalloc): Remove a ! from if (!dest_sreg1)
4214         as it is incorrect.
4215
4216 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
4217
4218         * aot-compiler.c (add_generic_class): Only add rgctx invoke wrappers
4219         for cctors if needed.
4220
4221 2009-02-17  Mark Probst  <mark.probst@gmail.com>
4222
4223         * mini-ppc.c: Fix build on Darwin.
4224
4225 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
4226
4227         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Use 2 as the DWARF
4228         version instead of 3 as valgrind doesn't like version 3.
4229
4230         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
4231
4232         * aot-compiler.c (mono_aot_method_hash): New function to return a hash
4233         usable for hashing methods.
4234         (emit_extra_methods): Use the new hash to avoid putting every method in the
4235         same hash bucket.
4236
4237         * aot-runtime.c (find_extra_method_in_amodule): Use the new hash.
4238
4239         * aot-runtime.c (can_method_ref_match_method): New function to quickly check
4240         whenever a method ref could match a method.
4241         
4242         * aot-runtime.c (load_image): Revert the previous change, it causes an AOT
4243         test to fail.
4244         
4245         * aot-runtime.c (find_extra_method_in_amodule): Add a cache for decoded 
4246         methods refs.
4247
4248         * aot-runtime.c (load_image): Pass our basedir to mono_assembly_load.
4249
4250         * aot-compiler.c (emit_exception_debug_info): Bump the maximum size of
4251         the encoding buffer.
4252
4253         * method-to-ir.c (mono_method_check_inlining): Avoid calling 
4254         mono_method_get_header () on inflated methods as an optimization.
4255
4256 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
4257
4258         * ssa.c (fold_ins): Fix another crash if the instruction following the
4259         switch was optimized away.
4260
4261 2009-02-16  Mark Probst  <mark.probst@gmail.com>
4262
4263         Contributed under the terms of the MIT/X11 license by Steven
4264         Munroe <munroesj@us.ibm.com>.
4265
4266         * mini-ppc.c, mini-ppc.h: Implement TLS for PPC64.
4267
4268 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
4269
4270         * mini.c method-to-ir.c mini-trampolines.c aot-runtime.c: Remove locking
4271         around the mono_domain_alloc calls, it is now done by the functions
4272         themselves.
4273
4274         * aot-compiler.c (compile_method): Only add wrappers referenced by
4275         the method if compiling with full AOT.
4276         (mono_compile_assembly): Error out if --aot=full is specified on
4277         a platform where it is not supported.
4278
4279         * aot-compiler.c (emit_trampolines): Emit generic class init trampolines
4280         on ARM too.
4281
4282         * tramp-arm.c (mono_arch_create_generic_class_init_trampoline_full): Add
4283         AOT support.
4284
4285         * aot-runtime.c (load_named_code): Handle 
4286         mono_arm_throw_exception_by_token.
4287
4288         * mini-arm.h: Add declaration of mono_arm_throw_exception_by_token.
4289
4290         * image-writer.c (asm_writer_emit_pointer_unaligned): Make this really
4291         unaligned.
4292
4293         * Makefile.am (fullaotcheck): Exit if a test fails.
4294
4295         * aot-compiler.c (mono_compile_assembly): Use the ASM writer for full aot
4296         on ARM.
4297         (mono_compile_assembly): Handle the assembler failing.
4298
4299         * image-writer.c (asm_writer_emit_section_change): Handle ARM gas not
4300         accepting subsections of .bss.
4301
4302         * ssa.c (visit_inst): Fix a crash if the instruction following a switch
4303         was optimized away.
4304
4305         * aot-compiler.c: Remove some unused includes.
4306         
4307         * aot-compiler.c (MonoAotCompile): Remove some unused fields which are
4308         now in MonoImageWriter.
4309
4310         * mini-x86.c (mono_arch_get_vcall_slot): Handle yet another
4311         code sequence which matches a non-virtual call. Fixes #472654.
4312
4313 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
4314
4315         * aot-compiler.c: Use xdebug_lock ()/unlock () macros for locking in the
4316         xdebug code.
4317         
4318         * aot-compiler.c: Make the xdebug code not depend on the AOT compiler,
4319         use the image/dwarf writers directly.
4320
4321         * image-writer.c (struct _MonoImageWriter): Remove the unused 'image'
4322         field.
4323
4324         * aot-compiler.c (MonoAotCompile): Remove fields which are now in
4325         MonoDwarfWriter.
4326
4327         * image-writer.h: Fix some typos.
4328
4329         * dwarfwriter.h dwarfwriter.c: New files.
4330         
4331         * aot-compiler.c: Extract the DWARF info writing functionality into a 
4332         separate module.
4333
4334         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add a 'out_unwind_ops'
4335         argument to return unwind info.
4336
4337         * tramp-arm.c (mono_arch_create_trampoline_code_full): Ditto.
4338
4339         * aot-compiler.c: Emit unwind info for trampolines in full-aot mode.
4340         
4341         * aot-runtime.c (decode_method_ref): Add a case for 
4342         MONO_AOT_METHODREF_WRAPPER_NAME.
4343
4344         * mini.h: Add constants for the magic numbers used in encode_method_ref ()
4345         for AOT.
4346
4347         * aot-compiler.c (encode_method_ref): Use the new constants.
4348
4349         * aot-runtime.c (decode_method_ref): Ditto.
4350
4351         * aot-compiler.c (compile_method): For generic icalls, queue the wrapper to
4352         be compiled, not the icall itself.
4353
4354 2009-02-14  Zoltan Varga  <vargaz@gmail.com>
4355
4356         * aot-runtime.c (find_extra_method_in_amodule): Avoid decoding wrapper names
4357         using decode_method_ref ().
4358
4359         * method-to-ir.c (mini_emit_ldelema_1_ins): If the array index is a long,
4360         convert it to an in32. Fixes #475859.
4361
4362         * arrays.cs: Add a test.
4363
4364 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
4365
4366         * mini-s390x.c (mono_arch_output_basic_block): Fix the shift amounts in 
4367         OP_LCONV_TO_U2.
4368
4369         * basic-long.cs: Add a test.
4370
4371 2009-02-12  Mark Probst  <mark.probst@gmail.com>
4372
4373         * mini-x86.c, mini-x86.h: Very simple frame pointer removal.  We
4374         remove the frame pointer in leaf methods which don't receive any
4375         arguments, don't throw exceptions and don't do dynamic stack
4376         allocations.
4377
4378 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
4379
4380         * mini-amd64.c (mono_arch_build_imt_thunk): Fix size calculation after
4381         the fail_tramp changes. Hopefully fixes #475132.
4382
4383 2009-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
4384
4385         * method-to-ir.c (mono_emit_method_call_full): Use mono_metadata_signature_dup_mempool
4386         instead of mono_metadata_signature_dup_full.
4387
4388 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
4389
4390         * ssa.c (fold_ins): Use MONO_IS_JUMP_TABLE () and MONO_JUMP_TABLE_FROM_INS ()
4391         for processing jump tables. Fixes #473787.
4392
4393 2009-02-11  Mark Probst  <mark.probst@gmail.com>
4394
4395         * mini-generic-sharing.c: mini_method_get_context() just calls
4396         mono_method_get_context_general() now.
4397
4398         * mini.c, mini.h: Moved get_object_generic_inst(),
4399         construct_object_context_for_method() and
4400         mono_domain_lookup_shared_generic() to metadata/generic-sharing.c.
4401
4402 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
4403
4404         * branch-opts.c (mono_if_conversion): Handle the case where the merged 
4405         basic block fell through to its successor bblock without a branch. Fixes
4406         #474718.
4407
4408         * iltests.il.in: Add a test.
4409         
4410         * aot-compiler.c (encode_method_ref): Encode methods of array types.
4411         (can_encode_patch): We can now handle arrays of generic parameters and
4412         array methods.
4413
4414         * aot-runtime.c (decode_method_ref_2): Handle methods of array types.
4415
4416         * aot-compiler.c aot-runtime.c: Emit the size of specific trampolines into
4417         the AOT file to avoid some #ifdefs in aot-runtime.c
4418
4419         * mini.h: Bump AOT file format version.
4420
4421 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
4422
4423         * Makefile.am (fullaotcheck): Make this run the tests.
4424
4425         * aot-compiler.c: Make the printing of skipped methods runtime configurable.
4426
4427 2009-02-10  Mark Probst  <mark.probst@gmail.com>
4428
4429         * mini-x86.c (mono_arch_context_get_int_reg): Handle all registers
4430         individually.  Fixes #473482.
4431
4432 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
4433
4434         * mini-arm.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
4435
4436 2009-02-09  Jeffrey Stedfast  <fejj@novell.com>
4437
4438         * aot-compiler.c (arch_emit_plt_entry): Fixed to compile.
4439         (mono_compile_assembly): Hush compile warnings about
4440         uninitialized [tmp_]outfile_name variables in the !use_bin_writer
4441         code path.
4442
4443 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
4444
4445         * exceptions-arm.c (mono_arch_find_jit_info): Fix aot support.
4446
4447         * mini-arm.c: Checkin unwind related changes missing from an earlier commit.
4448
4449         * aot-compiler.c: Fix arm support.
4450
4451         * image-writer.c: Move the R_ARM constants to image-writer.h. Export a
4452         img_writer_emit_unset_mode () function.
4453
4454         * unwind.c (mono_unwind_get_dwarf_data_align): New helper function.
4455         (mono_unwind_get_dwarf_pc_reg): Ditto.
4456
4457         * aot-compiler.c (emit_dwarf_abbrev): Another large reorganization.
4458         Move almost all platform specific code to a set of arch_ functions, 
4459         and document them to ease porting.
4460         
4461         * aot-compiler.c (mono_xdebug_init): Fix xdebug support.
4462
4463         * image-writer.h image-writer.c: New files, extracted from aot-compiler.c.
4464
4465         * aot-compiler.c: Extract the image writing functionality into a separate
4466         module to reduce the size of this file.
4467
4468 2009-02-09  Geoff Norton  <gnorton@novell.com>
4469
4470         * mini-s390.c: Fix the signature of emit_sig_cookie.
4471
4472 2009-02-09  Zoltan Varga  <vargaz@gmail.com>
4473
4474         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_IMAGE.
4475
4476         * aot-runtime.c (is_shared_got_patch): Ditto.
4477
4478         * aot-runtime.c (load_named_code): Cope with the fact that 
4479         decode_got_entry () won't decode the patch fully if its corresponding got
4480         entry is already filled.
4481         
4482         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): 
4483         Initialize *ji.
4484         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
4485
4486         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code'
4487         as the moving pointer instead of 'buf' for consistency with the rest of the
4488         codebase.
4489         (mono_arch_create_monitor_exit_trampoline): Ditto.
4490
4491         * aot-compiler.c (emit_trampolines): Add throw_pending_exception/
4492         generic_class_init trampolines.
4493         (add_generic_class): Extract some code from add_generic_instances () into a
4494         separate function so it can be called from other places too.
4495         (compile_method): Call add_generic_class () for the classes of inflated methods
4496         referenced by the method.
4497         (can_encode_patch): Allow references to generic parameters.
4498
4499         * aot-runtime.c: Add support the patches required by the new trampolines.
4500         
4501         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Add full-aot
4502         support.
4503
4504         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline_full): Add
4505         full-aot support.
4506
4507         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Rename
4508         this from get_throw_pending_exception, make the signature full aot compatible.
4509
4510         * Makefile.am (fullaotcheck): New target to run full-aot tests.
4511
4512         * method-to-ir.c (inline_method): Save/Restore cfg->ret_var_set too.
4513
4514         * exceptions.cs: Add a test.
4515
4516 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
4517
4518         * unwind.c (mono_unwind_frame): Eliminate the data_align_factor argument,
4519         use the DWARF_DATA_ALIGN constant instead.
4520
4521         * exception-<ARCH>.c: Update after the above change.
4522
4523         * exceptions-arm.c (mono_arch_find_jit_info): Transition this to use the
4524         dwarf unwinder.
4525
4526         * mini-arm.c: Enable the dwarf unwinder.
4527
4528         * mini-trampolines.c (mono_magic_trampoline): Use mono_class_get_vtable_entry ()
4529         instead of mono_class_setup_vtable ().
4530
4531 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
4532
4533         * exceptions-x86.c (mono_arch_find_jit_info): Transition this to use the
4534         dwarf unwinder.
4535
4536         * mini-x86.h: Enable the dwarf unwinder.
4537
4538 2009-02-06  Raja R Harinath  <harinath@hurrynot.org>
4539
4540         Fix mcs/tests/test-7.cs
4541         * mini-amd64.c (mono_arch_allocate_vars): Revert change from
4542         2009-02-03.
4543
4544 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
4545
4546         * mini.c (print_jit_stats): Remove some unused statistics.
4547
4548 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
4549
4550         * aot-compiler.c (emit_klass_info): Update after MonoClass changes.
4551
4552 2009-02-05  Mark Probst  <mark.probst@gmail.com>
4553
4554         * jit-icalls.c (mono_helper_compile_generic_method): Don't inflate
4555         the method we get from mono_object_get_virtual_method() because
4556         that function does it properly, now.
4557
4558 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
4559
4560         * unwind.c (mono_unwind_ops_encode): Handle offsets greater than 32 between
4561         opcodes. Fixes #472775.
4562
4563 2009-02-05  Mark Probst  <mark.probst@gmail.com>
4564
4565         * mini-exceptions.c (ves_icall_get_frame_info): Account for the
4566         fact that mono_find_jit_info() sometimes returns the context
4567         corresponding to the jit info in new_ctx.  Fixes #472600.
4568
4569 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
4570
4571         * method-to-ir.c mini-hppa.c mini.c trace.c mini-s390x.c aot-compiler.c
4572         mini-s390.c: Use mono_class_enum_basetype () instead of accessing
4573         klass->enum_basetype directly.
4574
4575         * aot-compiler.c (emit_class_dwarf_info): Add support for all possible
4576         enum subtypes.
4577
4578         * unwind.c: Avoid 0 sized arrays.
4579
4580 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
4581
4582         * mini-exceptions.c (mono_setup_altstack): Use a more reasonable altstack
4583         size on systems with 64k pages. Fixes #471389.
4584
4585 2009-02-04  Mark Probst  <mark.probst@gmail.com>
4586
4587         Contributed under the terms of the MIT/X11 license by Steven
4588         Munroe <munroesj@us.ibm.com>.
4589
4590         * mini-ppc.c (mono_arch_output_basic_block): Generate better code
4591         for LOADI4_MEMBASE.  Use addi instead of addic if it's not
4592         necessary.
4593
4594 2009-02-04  Mark Probst  <mark.probst@gmail.com>
4595
4596         Contributed under the terms of the MIT/X11 license by Steven
4597         Munroe <munroesj@us.ibm.com>.
4598
4599         * exceptions-ppc.c (mono_arch_get_restore_context): Code size
4600         comparison fix.
4601
4602         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline):
4603         The trampoline can be longer on PPC64.
4604
4605 2009-02-04  Mark Probst  <mark.probst@gmail.com>
4606
4607         Contributed under the terms of the MIT/X11 license by Steven
4608         Munroe <munroesj@us.ibm.com>.
4609
4610         * mini-ppc.c: Compiler warning fixes and trivial code
4611         simplifications.
4612
4613 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
4614
4615         * method-to-ir.c (mono_spill_global_vars): Fix problems caused by reading
4616         ins->dreg which could be a hardware register, not a vreg.
4617
4618         * aot-compiler.c (emit_method_dwarf_info): Ditto.
4619         
4620         * mini.h (MonoCompile): Remove vreg_to_var_num array, it is no longer used.
4621         (struct MonoMethodVar): Add a vreg field, holding the vreg of variable.
4622
4623         * mini.c (mono_compile_create_var_for_vreg): Set var->vreg.
4624         
4625         * mini-amd64.c (mono_arch_output_basic_block): Avoid reading cfg->varinfo[..]
4626         ->dreg, that is not the vreg we are looking for.
4627
4628         * mini-amd64.h mini-x86.h: Enable MONO_ARCH_LIVENESS_OPS again.
4629
4630         * mini-x86.c (mono_arch_output_basic_block): Add support for LIVERANGE_START/
4631         LIVERANGE_END.
4632
4633         * method-to-ir.c (mono_spill_global_vars): Add an assert to help track down
4634         strange crashes.
4635
4636 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
4637
4638         * mini-x86.c (mono_arch_emit_prolog): Emit unwind info.
4639
4640         * aot-compiler.c (emit_line_number_info): Fix line number emission when
4641         the line diff is 0.
4642
4643         * aot-compiler.c: Add xdebug support on x86.
4644
4645         * unwind.c: Add x86 support.
4646         
4647         * aot-compiler.c (emit_exception_debug_info): Control the emission of
4648         unwind info using a new MONO_ARCH_HAVE_XP_UNWIND define.
4649
4650         * mini.c (mini_method_compile): Ditto.
4651         
4652         * mini-amd64.c (mono_arch_allocate_vars): Avoid setting cfg->ret->dreg to
4653         the variable index.
4654
4655         * aot-compiler.c: Add emit_push_section ()/emit_pop_section () helper functions
4656         which mimic .push_section/.pop_section in GAS.
4657         
4658         * aot-compiler.c: Emit precise live range information for variables.
4659
4660         * mini-amd64.c (mono_arch_output_basic_block): Add OP_LIVERANGE_START/END.
4661
4662         * method-to-ir.c (mono_spill_global_vars): Compute the instructions marking
4663         the live ranges of variables, and emit OP_LIVERANGE_START/END opcodes for
4664         them.
4665
4666         * mini-ops.h: Add OP_LIVERANGE_START/END opcodes to mark
4667         the live ranges of variables.
4668
4669         * mini.h (struct MonoMethodVar): Add two fields containing the live range
4670         of the variable in terms of native offsets.
4671
4672 2009-02-03  Rodrigo Kumpera  <rkumpera@novell.com>
4673
4674         * arrays.cs: Test for Get/SetValue of array with negate lower bounds.
4675         
4676 2009-02-02  Mark Probst  <mark.probst@gmail.com>
4677
4678         Contributed under the terms of the MIT/X11 license by Steven
4679         Munroe <munroesj@us.ibm.com>.
4680
4681         * exceptions-ppc.c (restore_regs_from_context): Correct operand
4682         order (offset then base reg) for ppc_load_multiple_regs.
4683         (emit_save_saved_regs) Correct operand order for
4684         ppc_store_multiple_regs.
4685         (mono_arch_get_call_filter): Correct operand order for
4686         ppc_load_multiple_regs.
4687
4688         * mini-ppc.c (emit_memcpy): Fix operand order for
4689         ppc_load_reg_update and ppc_store_reg_update.
4690         (mono_arch_output_basic_block): Correct operand order for ppc_lha.
4691         (mono_arch_emit_epilog): Correct operand order for
4692         ppc_load_multiple_regs.
4693
4694         * tramp-ppc.c (mono_arch_create_trampoline_code): Correct operand
4695         order for ppc_store_multiple_regs and ppc_load_multiple_regs.
4696
4697 2009-02-02  Mark Probst  <mark.probst@gmail.com>
4698
4699         * cpu-ppc64.md: Fixed storer4_memindex length.
4700
4701 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
4702
4703         * aot-compiler.c (emit_line_number_info): Optimize the size of the emitted
4704         line number info.
4705         
4706         * aot-compiler.c (emit_line_number_info): Optimize this.
4707
4708 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
4709
4710         * aot-compiler.c: Disassemble tokens in the IL disassembly.
4711         
4712         * aot-compiler.c: Add debug info for methods without debug info by
4713         emitting an IL file and having the line number info referencing that file.
4714
4715         * aot-compiler.c: Optimize the size of the generated line number info.
4716
4717         * aot-compiler.c: Emit line number info in xdebug mode.
4718
4719         * aot-compiler.c (mono_save_xdebug_info): Receive a MonoCompile instead of a
4720         million arguments.
4721
4722 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
4723
4724         * aot-compiler.c (emit_method_dwarf_info): Emit names for local variables.
4725
4726         * driver.c (mono_main): Enable debugging support automatically if XDEBUG
4727         is used.
4728
4729 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
4730
4731         * basic-calls.cs: Test for the weird crash found on arm.
4732         
4733 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
4734
4735         * cpu-arm.md: Increase the size of storer8_membase_reg and
4736         loadr8_membase_reg to 24 bytes to accomodate the extra add.
4737
4738         * mini-arm.c (mono_arch_output_basic_block): Under FPA, when emitting
4739         OP_STORER8_MEMBASE_REG and OP_LOADR8_MEMBASE_REG, add the original
4740         reg to LR otherwise we'll be loading/storing from just the offset.
4741
4742 2009-01-30  Miguel de Icaza  <miguel@novell.com>
4743
4744         Question: if we are storing gint32's inside the "*native_offset",
4745         should we change the signature to "gint32 *native_offset" to
4746         ensure that we do not have type definition problems?
4747         
4748         * mini-exceptions.c (ves_icall_get_frame_info): Cast the gint32 to
4749         an int * as this is what the other function expects, causes
4750         problems with Freescale's compiler that defined int32_t to be a
4751         long and makes int incompatible 
4752
4753 2009-01-30  Miguel de Icaza  <miguel@novell.com>
4754
4755         * Rename generic-sharing.c to mini-generic-sharing.c to avoid the
4756         filename conflict with bjam.
4757
4758 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
4759
4760         * cpu-arm.md: Increase the size of storer8_membase_reg to 20 bytes
4761         as it might use decomposed ops.
4762
4763 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
4764
4765         * jit-icalls.c (mono_imul_ovf): Fix one of the literals.
4766
4767         * mini.c (mini_init): Emulate mul.ovf opcodes if MONO_ARCH_EMULATE_MUL_OVF
4768         is defined.
4769
4770         * mini-arm.h (MONO_ARCH_EMULATE_MUL_OVF): New define.
4771
4772         * mini-arm.c (mono_arch_build_imt_thunk): Rewrite this to allow large vtable
4773         offsets.
4774
4775         * mini-arm.c (mono_arch_context_get_int_reg): Adapt this to the "clever"
4776         way registers are stored in MonoContext on arm.
4777
4778         * unwind.c: Rewrite the handling of the cached_info array to use hazard pointers
4779         instead of locking so mono_get_cached_unwind_info () becomes signal safe.
4780
4781         * mini.c (mini_init): Emuate OP_FCONV_TO_I when using soft float.
4782
4783         * mini-arm.c (emit_load_volatile_arguments): Avoid an unneccesary assert.
4784
4785         * mini.c (mini_init): Register mono_isfinite.
4786
4787         * jit-icalls.c (mono_isfinite): New jit icall.
4788
4789         * method-to-ir.c (mono_decompose_soft_float): Add support for OP_CKFINITE.
4790         
4791         * exceptions-arm.c (mono_arch_find_jit_info): When unwinding using the LMF,
4792         set esp to ARMREG_FP instead of R12, since R12 stores the value of sp for
4793         the parent frame.
4794
4795 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
4796
4797         * exceptions-arm.c (mono_arch_find_jit_info): The frame layout on arm have
4798         separate frame and stack pointers, so we must use FP to find the register
4799         spill area.
4800         The FP reg is retrieved from the MonoContext::regs array.
4801
4802 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
4803
4804         * mini-arm.c (mono_arch_output_basic_block): Emit two cond ops for OP_FBGE
4805         as FPA requires it.
4806
4807 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
4808
4809         * mini-arm.c (mono_arch_emit_setret): Emit OP_FMOVE for methods that
4810         return R4 and R8 when not running under softfloat.
4811
4812         Fixes basic-calls.exe
4813
4814 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
4815
4816         * mini-arm.c: Implement some overflow opcodes.
4817
4818 2009-01-29  Miguel de Icaza  <miguel@novell.com>
4819
4820         * ssa.c: handle another alloca.h
4821
4822         * mini-exceptions.c (mono_handle_native_sigsegv): Do not use
4823         PLATFORM_WIN32 for detecting if we have sigaction.   Instead use
4824         MONO_ARCH_USE_SIGACTION. 
4825
4826         * aot-runtime.c, mini-exceptions.c: Replace platform define with
4827         capability defines.
4828
4829         * method-to-ir.c (mono_method_to_ir): Type cast fix on some platforms.
4830
4831         * mini-ppc.h (MONO_ARCH_USE_SIGACTION): Do not define this for all
4832         PPC targets as sigaction does not exist on all platforms, define
4833         this on a per-platform basis.
4834
4835         Instead of erroring out if the platform is not defined, include
4836         mini-ppc-os.h, and expect that the OS specific setting provides
4837         the required information.   
4838
4839 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
4840
4841         * aot-compiler.c: Fix --enable-minimal=aot.
4842
4843 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
4844
4845         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Fix the
4846         previous change.
4847
4848 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
4849
4850         * exceptions-arm.c: Fix warnings.
4851
4852         * tramp-arm.c aot-compiler.c unwind.h unwind.c: Implement xdebug support for
4853         ARM.
4854
4855         * mini-x86.c: Fix --enable-minimal=jit build.
4856
4857         * mini.c: Really fix --enable-minimal=jit build.
4858         
4859         * mini.c (construct_object_context_for_method): Move this outside
4860         the DISABLE_JIT block to fix the --enable-minimal=jit build.
4861
4862         "Backported" of r124984 from 2.0 branch.
4863         
4864         * aot-compiler.c aot-runtime.c: Add full-aot support delegate BeginInvoke/EndInvoke.
4865
4866         "Backport" of r124977 + r124978 from 2.0 branch.
4867         
4868         * exceptions-arm.c (mono_arm_throw_exception_by_token): New helper function
4869         to avoid calling mono_exception_from_token () from the throw trampoline.
4870         (mono_arch_get_throw_exception_generic): call throw_exception_by_token
4871         for throwing corlib exceptions, this fixes full-aot support for corlib
4872         exceptions.
4873
4874         * aot-compiler.c (compile_method): Make a copy of cfg->locals to fix the build.
4875
4876 2009-01-29  Miguel de Icaza  <miguel@novell.com>
4877
4878         * mini-darwin.c, mini-windows.c, mini-posix.c: Commit the first
4879         part of the changes to split the code in mini into operating
4880         system specific files.
4881
4882         This patch was done by copying mini.c to the respective files to
4883         preserve SVN history.
4884
4885 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
4886
4887         * aot-compiler.c (emit_method_dwarf_info): Add minimal support for locals.
4888
4889 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
4890
4891         * method-to-ir.c (mono_method_to_ir): Avoid generic sharing for calls made to
4892         remoting-invoke-with-check wrappers of shared methods.
4893
4894         * mini.c (print_jit_stats): Print out major gc count/time for libgc too.
4895
4896 2009-01-27  Mark Probst  <mark.probst@gmail.com>
4897
4898         * method-to-ir.c (emit_stloc_ir): Only apply the reg-reg move
4899         optimization if the top of stack is the last instruction in the
4900         bblock.  Otherwise it might have been used after its definition.
4901         Fixes #469742.
4902
4903 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
4904
4905         * mini-trampolines.c (mono_magic_trampoline): Print out the caller
4906         method as well when get_vcall_slot () fails to match a code sequence.
4907
4908         * mini-arm.c: Fix the android build, which doesn't have
4909         __aeabi_read_tp.
4910
4911 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
4912
4913         * mini-s390x.c: Remove a stray declaration of emit_sig_cookie () to fix
4914         the s390x build.
4915
4916 2009-01-26  Rodrigo Kumpera  <rkumpera@novell.com>
4917
4918         * unwind.c (mono_unwind_cleanup): Don't crash if cached_info is NULL.
4919
4920 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
4921
4922         * mini.c (mini_method_compile): Save the unwind info generated by the JIT
4923         and put its id into jinfo->used_regs. This is only used on amd64,
4924         which is currently the only platform generating unwind info.
4925
4926         * exceptions-amd64.c: Instead of unwinding based on a register mask, use
4927         the dwarf unwinder. This is required to correctly handle async exceptions
4928         like thread abort and stack overflows, which can happen while a method
4929         is in the middle of its prolog or epilog.
4930         
4931         * aot-runtime.c (mono_aot_get_unwind_info): New helper function to obtain
4932         the unwind info belonging to an AOTed method.
4933
4934         * aot-compiler.c aot-runtime.c: Save/Load the unwind info emitted by the JIT
4935         into cfg->unwind_ops.
4936         
4937         * unwind.c (mono_unwind_frame): Use <= instead of < for the loop exit check.
4938
4939         * mini.c (mini_init): Call mono_unwind_init ().
4940         (mini_cleanup): Call mono_unwind_cleanup ().
4941
4942         * unwind.c: Add functions for managing a set of unwind info entries, allowing
4943         unwind info to be shared between methods.
4944
4945         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info for the registers
4946         saved in the LMF.
4947
4948         * exceptions-amd64.c (mono_arch_exceptions_init): Call 
4949         get_throw_pending_exception () to avoid initialization races.
4950
4951         * mini-exceptions.c (mono_exceptions_init): Call an arch specific
4952         mono_arch_exceptions_init () function.
4953
4954         * mini.h (MONO_INST_NEW): Remove duplicate setting of cil_code.
4955
4956 2009-01-25  Zoltan Varga  <vargaz@gmail.com>
4957
4958         * mini.c (mono_get_domain_intrinsic): New helper function.
4959         (mono_get_thread_intrinsic): Ditto.
4960
4961         * mini-arm.c mini-ia64.c: Use the new helper functions.
4962         
4963         * method-to-ir.c (mono_method_to_ir): Fix the comment for
4964         the last constrained_call change, since it is needed in the non-AOT
4965         case as well.
4966
4967         * mini-arm.c: Implement OP_TLS_GET on arm eabi linux.
4968         
4969         * mini-arm.c (mono_arch_emit_prolog): Add an inlined version of 
4970         mono_get_lmf_addr () on arm eabi linux.
4971
4972 2009-01-24  Zoltan Varga  <vargaz@gmail.com>
4973
4974         * mini-amd64.c (mono_arch_get_vcall_slot): Handle yet another
4975         code sequence which matches a non-virtual call.
4976
4977 2009-01-23  Mark Probst  <mark.probst@gmail.com>
4978
4979         * mini-ppc.c (mono_arch_context_get_int_reg): Allow access to the
4980         stack pointer (r1).
4981
4982 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
4983
4984         * aot-compiler.c aot-runtime.c: Treat delegate-invoke wrappers similarly to
4985         runtime-invoke wrappers, since they are also shared based on signature.
4986
4987 2009-01-22  Mark Probst  <mark.probst@gmail.com>
4988
4989         * mini-exceptions.c (ves_icall_get_frame_info): Fetch the generic
4990         info from the (correct) context.
4991
4992 2009-01-22  Zoltan Varga  <vargaz@gmail.com>
4993
4994         * unwind.c (mono_unwind_frame): Remove a stray g_free ().
4995         
4996         * unwind.c (mono_unwind_frame): New function to unwind through a frame
4997         using dwarf unwinding info. Not yet used.
4998
4999         * mini.c (mini_init): When using xdebug, disable freeing of domains.
5000
5001 2009-01-21  Mark Probst  <mark.probst@gmail.com>
5002
5003         * mini-ppc.c (mono_arch_delegate_invoke_impl): Return function
5004         descriptors.
5005
5006         * mini-trampolines.c (mono_delegate_trampoline): Remove the PPC64
5007         special case and handle mono_arch_delegate_invoke_impl() returning
5008         function descriptors.
5009
5010         * tramp-ppc.c (mono_arch_create_trampoline_code): Delegate
5011         trampolines return function descriptors, too.
5012
5013 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
5014
5015         * method-to-ir.c (handle_alloc): Avoid generic instances in the
5016         out_of_line optimization.
5017
5018 2009-01-21  Martin Baulig  <martin@ximian.com>
5019
5020         * mini.h
5021         (MonoCompile): Added `disable_deadce_vars' to disable removing
5022         unused variables.
5023
5024         * mini.c
5025         (mini_method_compile): Set `cfg->disable_deadce_vars' when running
5026         inside the debugger.
5027
5028         * liveness.c (mono_analyze_liveness): Don't remove any unused
5029         variables if `cfg->disable_deadce_vars' is set.
5030
5031 2009-01-21  Mark Probst  <mark.probst@gmail.com>
5032
5033         * method-to-ir.c: Only apply exception constructor optimization if
5034         the the method actually belongs to an exception class.  Fixes
5035         #467456.
5036
5037 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
5038
5039         * mini-trampolines.c (mono_delegate_trampoline): Put back the previous
5040         change inside a #ifdef __mono_ppc64__.
5041
5042         * aot-compiler.c (compile_method): Remove the previous limitation.
5043
5044         * method-to-ir.c (method-to-ir.c): Add support for the constrained prefix
5045         on type variables in AOTed code.
5046         
5047         * aot-compiler.c (compile_method): Skip generic methods having type 
5048         constraints on their generic parameters.
5049
5050         * aot-compiler.c (compile_method): Check for methods which cannot be
5051         encoded inside RGCTX_FETCH patches as well.
5052
5053         * mini-exceptions.c (mono_print_thread_dump): Fix the windows
5054         build.
5055
5056 2009-01-20  Mark Probst  <mark.probst@gmail.com>
5057
5058         * method-to-ir.c: Force the vtable variable in shared generic code
5059         for the case that they might show up on a stack trace where they
5060         are needed.
5061
5062         * mini-exceptions.c: Save and use generic sharing info as well as
5063         IP in stack traces to resolve shared generic instantiations.
5064
5065 2009-01-20  Zoltan Varga  <vargaz@gmail.com>
5066
5067         * mini-trampolines.c (mono_delegate_trampoline): Revert the change which
5068         added a mono_get_addr_from_ftnptr () as it breaks the ia64 build.
5069
5070 2009-01-20  Mark Probst  <mark.probst@gmail.com>
5071
5072         * method-to-ir.c: Do generic sharing for array constructors.
5073
5074 2009-01-20  Rodrigo Kumpera  <rkumpera@novell.com>
5075
5076         * mini-exceptions.c (mono_print_thread_dump): Add information
5077         about the thread state using wapi_current_thread_desc.
5078
5079 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
5080
5081         * basic-simd.cs: Tests for the new constructors. 
5082
5083 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
5084
5085         * mini-ops.h: Added OP_EXPAND_*
5086
5087         * cpu-x86.md: Same.
5088
5089         * mini-x86.c (mono_arch_output_basic_block): Same.
5090         
5091         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for single element constructors.
5092
5093 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
5094
5095         * iltests.il.in: Add a test for #467385.
5096
5097 2009-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
5098
5099         * mini.c (mini_thread_cleanup): Don't cleanup TLS storage if the
5100         thread been cleaned up is not the same currently in execution.
5101
5102         Fixes appdomain-unload crashes on windows, osx and linux variants
5103         without the __thread keyword.
5104
5105 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
5106
5107         * mini-arm.c (mono_arch_flush_icache): Applied patch from Koushik Dutta
5108         (koush@koushikdutta.com). Implement this for android.
5109
5110         * helpers.c (mono_disassemble_code): Avoid assembler errors if the id
5111         begins with a digit.
5112
5113         * method-to-ir.c: Call mono_gc_get_write_barrier () instead of
5114         mono_marshal_get_write_barrier ().
5115
5116 2009-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
5117
5118         * decompose.c (mono_decompose_vtype_opts): Fix the decomposition
5119         of OP_VCALL_* ops for 8 bytes vtypes on 32 bits archs and platorms
5120         that pass them on a register pair.
5121
5122         This affects windows, OSX and FreeBSD. The mono/tests/handleref.exe
5123         test was crashing due to that.
5124
5125 Fri Jan 16 15:21:21 CET 2009 Paolo Molaro <lupus@ximian.com>
5126
5127         * exceptions-ppc.c: tweaks from malc (OV-Soft) to fix the size of the
5128         trampoline code. Include ucontext.h only if available.
5129
5130 2009-01-15  Mark Probst  <mark.probst@gmail.com>
5131
5132         * mini.c: mono_domain_lookup_shared_generic() takes an open method
5133         and doesn't check whether it's sharable, like it was before
5134         removing the shared generics hash.  This brings IronPython
5135         performance back to what it was before that change.
5136
5137 2009-01-14  Mark Probst  <mark.probst@gmail.com>
5138
5139         * method-to-ir.c: Handle delegate invocation optimization earlier,
5140         otherwise it would be handled (much more slowly) by the
5141         final/sealed optimization.
5142
5143 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
5144
5145         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes when the current thread or
5146         domain is not set. Fixes #465864.
5147
5148 2009-01-12  Mark Probst  <mark.probst@gmail.com>
5149
5150         * method-to-ir.c: Don't stop sharing of generic methods with catch
5151         clauses - we already handle those.
5152
5153 2009-01-12  Mark Probst  <mark.probst@gmail.com>
5154
5155         * mini.c, mini.h: lookup_generic_method() is now
5156         mono_domain_lookup_shared_generic() and uses the jit_code_hash,
5157         making the shared_generics_hash obsolete.
5158
5159 2009-01-12  Mark Probst  <mark.probst@gmail.com>
5160
5161         * mini-ppc.c, exceptions-ppc.c, cpu-ppc.md, cpu-ppc64.md: Don't
5162         use the red zone.  Make room on the stack first and then use it,
5163         not the other way around.
5164
5165 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
5166
5167         * mini.c (mini_init): Call mono_xdebug_init ().
5168
5169         * aot-compiler.c (mono_xdebug_init): Make this non-static.
5170
5171 2009-01-11  Zoltan Varga  <vargaz@gmail.com>
5172
5173         * TestDriver.cs: Add an --iter argument to run tests multiple times.
5174
5175         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Emit debug info for
5176         trampolines.
5177
5178         * aot-compiler.c (mono_save_trampoline_xdebug_info): New function to emit
5179         debug+unwind info for trampolines.
5180
5181         * mini.c (mono_create_unwind_op): New helper function.
5182
5183         * unwind.h: Add macros for emitting unwind ops without a MonoCompile.
5184
5185 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
5186
5187         * aot-compiler.c: Fix the build.
5188
5189 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
5190
5191         * Makefile.am: Update dtrace-prelink.sh location.
5192
5193 2009-01-08  Zoltan Varga  <vargaz@gmail.com>
5194
5195         * method-to-ir.c (mono_method_to_ir): Fix the check for the mscorlib ldstr 
5196         optimization. Fixes #464520.
5197
5198 2009-01-07  Bill Holmes  <billholmes54@gmail.com>
5199
5200         * mini-amd64.c : Adding code to save/restore non-volatile registers
5201            on Winx64.
5202
5203         * exceptions-amd64.c : Adding code to save/restore non-volatile 
5204           registers on Winx64.
5205
5206         Contributed under MIT/X11 license.
5207
5208 2009-01-07  Zoltan Varga  <vargaz@gmail.com>
5209
5210         * mini-arm.c (mono_arch_flush_icache): Use __GNUC_PREREQ instead of checking
5211         __GNUC_MINOR__ which can break when the major version changes.
5212
5213 2009-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
5214
5215         * basic-simd.cs: Add tests for usage of the sizeof opcode.
5216
5217 2009-01-07  Geoff Norton  <gnorton@novell.com>
5218
5219         * helpers.c:  Allow mono -v -v -v to work on darwin.
5220
5221 2009-01-05  Bill Holmes  <billholmes54@gmail.com>
5222
5223         * mini-amd64.c (mono_arch_get_vcall_slot) : Handle an additional instruction
5224           pattern. 
5225
5226         Contributed under MIT/X11 license.
5227
5228 2009-01-05  Zoltan Varga  <vargaz@gmail.com>
5229
5230         * mini.c (mono_allocate_stack_slots_full2): Use mono_class_from_mono_type
5231         instead of directly accessing type->data.klass. Fixes #462016.
5232         (mono_allocate_stack_slots_full): Ditto.
5233
5234         * mini-arm.c (mono_arch_flush_icache): Applied patch from Riku Voipio 
5235         <novell@kos.to>. Fix cache flush on kernels without OLDABI compat option.
5236
5237         * aot-compiler.c (emit_plt): Fix ARM build.
5238
5239 2009-01-04  Zoltan Varga  <vargaz@gmail.com>
5240
5241         * branch-opts.c (mono_if_conversion): Optimize this using ins->prev.
5242         
5243         * branch-opts.c (mono_if_conversion): Fix an assert introduced by the last
5244         change.
5245
5246         * branch-opts.c (mono_if_conversion): Use branch->inst_true_bb/inst_false_bb
5247         instead of bblock->out_bb [0]/[1], the two might not be the same. Fixes
5248         #463357.
5249
5250         * iltests.il.in: Add a regression test.
5251
5252 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
5253
5254         * mini-codegen.c (mono_print_ins_index): Pretty print XPHI and VPHI.
5255
5256 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
5257
5258         * basic-simd.cs: Add a regression test for #462457.
5259
5260 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
5261
5262         * mini-ops.h: Add a definition of XPHI.
5263
5264         * mini.h (MONO_IS_PHI): Make is aware of simd instrincs. 
5265
5266         * ssa.c (op_phi_to_move): Handle XPHI.
5267
5268         * ssa.c (mono_ssa_compute): Generate a XPHI for simd intrinsics instead of VPHI.
5269
5270         Fixes #462457
5271
5272 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
5273
5274         * method-to-ir.c (mono_emit_rgctx_calli): Fix a warning.
5275
5276 2008-12-31  Geoff Norton  <gnorton@novell.com>
5277
5278         * mini-ppc.c: The prolog size allocated can be too small for darwin
5279         ppc32 under certain circumstances.  Also fix a small logic bug.
5280
5281 2008-12-29  Zoltan Varga  <vargaz@gmail.com>
5282
5283         * mini.c (mono_jit_compile_method_inner): Avoid holding the domain lock
5284         while loading AOT methods.
5285
5286         * mini-exceptions.c: Check jit_tls->class_cast_from instead of class_cast_to
5287         since only the former is nulled out after a successful cast. This prevents
5288         crashes with rethrown exceptions when using --debug=casts.
5289
5290 2008-12-24  Mark Probst  <mark.probst@gmail.com>
5291
5292         * mini.h: New macro for checking whether a method is final,
5293         i.e. whether the method or its class is marked final.
5294
5295         * method-to-ir.c: Use the new macro for all final-checks
5296         consistently.  Fixes the crash in the System.ServiceModel tests.
5297
5298 2008-12-23  Mark Probst  <mark.probst@gmail.com>
5299
5300         * mini-exceptions.c (get_exception_catch_class): Corrected another
5301         overly strict assertion.
5302
5303 2008-12-23  Mark Probst  <mark.probst@gmail.com>
5304
5305         * mini-ppc.c (mono_arch_build_imt_thunk): Save and restore r11.
5306         Clobbering it is not allowed because the caller might use it as
5307         the vtable register in the interface call.
5308
5309 2008-12-19  Mark Probst  <mark.probst@gmail.com>
5310
5311         * mini-exceptions.c (get_exception_catch_class): Corrected an
5312         overly strict assertion.
5313
5314 2008-12-18  Mark Mason  <mmason@upwardaccess.com>
5315         
5316         * method-to-ir.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P or sizeof(gpointer) when appropriate.
5317
5318         * mini.h: Move typedef to mgreg_t up above include of mini-arch.h
5319
5320         * local-propogation.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P when appropriate
5321
5322         * cpu-mips.md: correct lengths for certain long_ opcodes.
5323
5324         * mini-mips.h: Only emulate long operations when SIZEOF_REGISTER==4. Add missing func decl.
5325
5326         * 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().
5327         
5328 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
5329
5330         * exceptions-mips.c (mono_arch_find_jit_info): decode sd instructions as well when looking for registers.
5331         
5332 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
5333         
5334         * mini-mips.c (mono_arch_output_basic_block): OP_JUMP_TABLE stores patch type in inst_c1, not inst_i1.
5335         
5336 2008-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
5337
5338         * branch-opts.c (remove_block_if_useless): Even if BB0 falls through, don't add a br to the
5339         next basic block.
5340         
5341 2008-12-16  Mark Mason  <mmason@upwardaccess.com>
5342
5343         * 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
5344
5345         * 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)
5346         
5347 2008-12-15  Mark Mason  <mmason@upwardaccess.com>
5348         
5349         * trace.c (mono_trace_enter_method): correctly handle arguments smaller than the stack slot size on big endian systems.
5350         
5351 2008-12-14  Zoltan Varga  <vargaz@gmail.com>
5352
5353         * liveness.c (mono_analyze_liveness): Avoid eliminating the 'this' var in
5354         gshared code. Fixes #458947.
5355
5356         * generics.cs: Add a test.
5357
5358 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
5359         
5360         * method-to-ir.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
5361         
5362         * mini-mips.c: first pass n32 code generation.
5363
5364         * mini-mips.h: datatypes and defines for n32 support.
5365
5366         * exceptions-mips.c: first pass n32 code generation.
5367         
5368         * tramp-mips.c: first pass n32 code generation.
5369         
5370         * cpu-mips.md: add long_ opcodes.
5371         
5372 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
5373
5374         * liveness.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
5375
5376         * cfold.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
5377         
5378         * local-propogation.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
5379         
5380         * regalloc2.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
5381
5382         * mini.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
5383
5384         * mini-codegen.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
5385
5386         * ssa.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
5387
5388         * decompose.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
5389
5390         * helpers.c: for mips/n32, don't pass -mips32 to objdump
5391
5392 2008-12-12  Zoltan Varga  <vargaz@gmail.com>
5393
5394         * mini-arm.c tramp-arm.c: Fix calls to mono_arch_flush_icache.
5395
5396 2008-12-12  Andres G. Aragoneses  <aaragoneses@novell.com>
5397
5398         * driver.c: Sync --help-trace with man page (EXPR,EXPR).
5399
5400 2008-12-12  Mark Probst  <mark.probst@gmail.com>
5401
5402         * mini-ppc.h, exceptions-ppc.c, tramp-ppc.c: Create function
5403         descriptors for helper functions directly in front of the code.
5404
5405 2008-12-11  Mark Probst  <mark.probst@gmail.com>
5406
5407         * method-to-ir.c: Removed an unnecessary assertion.
5408
5409 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
5410
5411         * method-to-ir.c: Merge SGEN changes from the old JIT.
5412
5413 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
5414
5415         * driver.c (compile_all_methods_thread_main): Handle failure of
5416         mono_get_method ().
5417
5418 2008-12-10  Mark Probst  <mark.probst@gmail.com>
5419
5420         * mini-ppc.c: Merged with mini-ppc64.c.
5421
5422         * mini-ppc.h: Define PPC_MINIMAL_PARAM_AREA_SIZE on all targets.
5423
5424         * Makefile.am: Use the same sources for PPC and PPC64.
5425
5426         * mini-ppc64.c: Removed.
5427
5428 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
5429
5430         * branch-opts.c (remove_block_if_useless): Extract fall through detection
5431         code to mono_bb_is_fall_through.
5432         
5433         * branch-opts.c (mono_remove_critical_edges): Same.
5434
5435 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
5436
5437         * ssa.c (fold_ins): branch opt can kill dummy switch ops so we can't
5438         expect that an OP_BR_REG will be there.
5439
5440 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
5441
5442         * branch-opts.c (remove_block_if_useless): Use MONO_IS_BRANCH_OP instead of checking
5443         for the many branch ops. The original check miss OP_BR_REG.
5444
5445         Fixes #457574.
5446         
5447 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
5448
5449         * mini-mips.h mini-mips.c exceptions-mips.c tramp-mips.c: first round of changes necessary to eventually support n32.
5450
5451 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
5452
5453         * aot-runtime.c (load_method): Avoid calling decode_exception_debug_info
5454         while holding the aot lock.
5455
5456 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
5457
5458         * mini-mips.c (mono_arch_output_basic_block): use mfc1/lwc1 instead of mfc1d/ldc1
5459         
5460 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
5461
5462         * mini.c (mini_cleanup) : Adding a call to cominterop_release_all_rcws 
5463           to release all runtime callable wrappers held by the runtime.
5464
5465         Contributed under MIT/X11 license.
5466
5467 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
5468
5469         * tramp-amd64.c (mono_arch_create_trampoline_code_full) : Increase the code size for
5470           for Winx64.
5471
5472         Contributed under MIT/X11 license.
5473
5474 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
5475
5476         * aot-runtime.c (decode_exception_debug_info): Acquire the domain
5477         lock when calling mono_domain_alloc (). Hopefully fixes #415608.
5478
5479 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
5480
5481         * cpu-mips.md: fix ckfinite length
5482
5483         * mini-mips.c: at least recognize n32 ABI when used (not yet supported)
5484         (mono_arch_lowering_pass): cleanup, rearrange for clarity
5485         (mono_arch_output_basic_block): implement OP_CKFINITE, add more asserts
5486         
5487 2008-12-08  Mark Mason   <mmason@upwardaccess.com>
5488
5489         * exceptions-mips.c (mono_arch_find_jit_info): init new_ctx with ctx, dont' call setup_context.
5490         
5491 2008-12-08  Geoff Norton  <gnorton@novell.com>
5492
5493         * tramp-amd64.c: r120895 stores RAX, so we need to increase the window
5494         size by 8 bytes as well.
5495
5496 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
5497
5498         * basic-simd.cs: Fix method names for Vector16b.
5499         
5500 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
5501
5502         * basic-simd.cs: Fix method names for Vector16sb.
5503
5504 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
5505
5506         * basic-simd.cs: Fix method names for Vector8us.
5507         
5508 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
5509
5510         * basic-simd.cs: Fix method names for Vector8s.
5511         
5512 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
5513
5514         * basic-simd.cs: Fix method names for Vector4ui.
5515
5516 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
5517
5518         * basic-simd.cs: Fix method names for Vector2l.
5519
5520 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
5521
5522         * basic-simd.cs: Fix method names for Vector2d.
5523
5524 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
5525
5526         * simd-intrinsics.c (mono_emit_simd_intrinsics): Add support for intrinsics
5527         that are extension methods.
5528
5529 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
5530
5531         * basic-simd.cs: Fix method names for Vector4f.
5532
5533 2008-12-08  Zoltan Varga  <vargaz@gmail.com>
5534
5535         * mini-exceptions.c (mono_print_thread_dump): Mark threadpool threads
5536         as such. Fixes #456669.
5537
5538 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
5539
5540         * mini-mips.c (mono_arch_emit_call): narrow float arguments when passing as args.
5541         
5542 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
5543
5544         * mini-mips.c (mono_arch_lowering_pass): don't handle OP_ICONV_TO_R* or OP_R*CONST
5545         (mono_arch_emit_setret): use OP_MIPS_CVTSD to return SP floats
5546         (mono_arch_output_basic_block): simplify FP load/store, handle OP_MIPS_FBLT_UN
5547         (mips_adjust_stackframe): handle FP spills
5548                 
5549         * mini-ops.h: add mips_mtc1_s2
5550         
5551         * cpu-mips.md: add mips_mtc1_s2
5552         
5553 2008-12-07  Zoltan Varga  <vargaz@gmail.com>
5554
5555         * unwind.c: New file, move the unwind info encoding functions here from
5556         aot-compiler.c, so they could be used at runtime too.
5557
5558 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
5559
5560         * mini-mips.c (mono_arch_lowering_pass): handle OP_IMUL_IMM as well
5561         (mono_arch_output_basic_block): fix OP_LOCALLOC code generation
5562         
5563 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
5564
5565         * mini-mips.c: cleanup warnings
5566         (mono_arch_lowering_pass): handle OP_LOCALLOC_IMM
5567         (mips_adjust_stackframe): handle case of taking the address of stack locals
5568         
5569 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
5570
5571         * aot-compiler.c: Implement a few functions missing from the asm writer.
5572         (emit_method_code): Only write symbols for methods when using the bin
5573         writer, since the assembler can't deal with the characters in our method
5574         names.
5575
5576         * aot-compiler.c (is_plt_patch): ICALL_ADDR is also a plt patch.
5577
5578         * method-to-ir.c (mono_method_to_ir): Transform aotconst+calli into a direct
5579         call.
5580
5581         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Rework the code
5582         a bit to also restore %rax.
5583
5584 2008-12-05  Mark Probst  <mark.probst@gmail.com>
5585
5586         * mini-ppc.c: Some simple merges from mini-ppc64.c.
5587
5588 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
5589
5590         * ssa.c (mono_ssa_compute): Only add an implicit reference at start for
5591         arguments.
5592
5593 2008-12-05  Mark Probst  <mark.probst@gmail.com>
5594
5595         * exceptions-ppc.c: Merged with exceptions-ppc64.c.
5596
5597         * mini-ppc.c, mini-ppc.h: Remove PPC_STACK_ALIGNMENT and use
5598         MONO_ARCH_FRAME_ALIGNMENT.  Struct for PPC64 function descriptors.
5599
5600         * exceptions-ppc64.c: Removed.
5601
5602         * Makefile.am: Use exceptions-ppc.c instead of exceptions-ppc64.c.
5603
5604 2008-12-05  Mark Probst  <mark.probst@gmail.com>
5605
5606         * tramp-ppc.c, mini-ppc.c, mini-ppc.h: Merged tramp-ppc.c with
5607         tramp-ppc64.c.
5608
5609         * Makefile.am: Use tramp-ppc.c instead of tramp-ppc64.c.
5610
5611         * tramp-ppc64.c: Removed.
5612
5613 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
5614
5615         * aot-compiler.c (add_generic_instances): Skip non-generic classes in
5616         the TYPESPEC table.
5617
5618 2008-12-05  Mark Probst  <mark.probst@gmail.com>
5619
5620         * mini-ppc.h: Merged mini-ppc64.h with mini-ppc.h.
5621
5622         * exceptions-ppc64.c, tramp-ppc64.c, mini-arch.h, Makefile.am: Use
5623         mini-ppc.h instead of mini-ppc64.h.
5624
5625         * mini-ppc64.h: Removed.
5626
5627 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
5628
5629         * mini-mips.c: introduce USE_LDC_SDC: use ldc1/sdc1 to load/store doubles, disabled by default
5630         
5631         * mini-mips.c (mono_arch_emit_outarg_vt): fix offset calculation for memcpy in structure passing.
5632         
5633 2008-12-05  Mark Probst  <mark.probst@gmail.com>
5634
5635         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c:
5636         Removed FIRST/LAST_[GF]REG macros, to make merging PPC64 with PPC
5637         code easier.
5638
5639 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
5640
5641         * basic-simd.cs: Tests for operator == and != on  Vector8us and Vector16b.
5642
5643 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
5644
5645         * simd-intrinsics.c: Add support for operator == and != to Vector8(u)s and Vector16(s)b.
5646
5647 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
5648
5649         * basic-simd.cs: Tests for operator == and != on Vector4f.
5650
5651 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
5652
5653         * simd-intrinsics.c (simd_intrinsic_emit_equality): Adapt to support Vector4f.
5654
5655         * simd-intrinsics.c: Kill useless enum.
5656
5657 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
5658
5659         * cpu-mips.md: add long_conv_to_ovf_i4_2
5660         * mini-mips.c: update/add various _OVF_ opcodes to fix test failures
5661
5662 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
5663
5664         * mini-mips.c: ifdef protect automatic promotions of R4 to R8.
5665         
5666         * mini-mips.c (mono_arch_emit_setret): handle R4 case with FCONV_TO_R4 instead of FMOVE
5667
5668 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
5669
5670         * mini-mips.c (mono_arch_output_basic_block): fix codegen for OP_OR_IMM/OP_IOR_IMM
5671         
5672 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
5673
5674         * basic-simd.cs: Add tests for new methods.
5675
5676 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
5677
5678         * simd-intrinsics.c: Add support for operator == and !=
5679         on Vector4(u)i.
5680
5681         * simd-methods.h: Add SN_op_Inequality and SN_op_Equality.
5682
5683 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
5684
5685         * simd-intrinsics.c: Remove ExtractByteMask intrinsics.
5686
5687 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
5688
5689         * aot-compiler.c (add_wrappers): Add pinvoke wrappers.
5690
5691         * mini.c (mono_resolve_patch_target): Allow pinvoke methods in 
5692         MONO_PATCH_INFO_ICALL_ADDR.
5693
5694         * aot-runtime.c (MonoAotFileInfo): Correct order of fields.
5695
5696         * aot-compiler.c: Resurrect full-aot support.
5697
5698 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
5699
5700         * mini-mips.c (mono_arch_lowering_pass): handle OP_COMPARE and OP_ICOMPARE
5701         
5702 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
5703
5704         * mini-mips.c (mono_arch_output_basic_block): fix OP_IREM_UN code generation
5705         
5706 2008-12-03  Rodrigo Kumpera  <rkumpera@novell.com>
5707
5708         * basic-simd.cs: Fix tests to work under ppc.
5709         Remove tests for methods that will be removed.
5710
5711 2008-12-03  Mark Probst  <mark.probst@gmail.com>
5712
5713         * method-to-ir.c (mono_method_to_ir): Handle ldtoken of an open
5714         generic type (via a typedef or typeref) correctly.
5715
5716 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
5717
5718         * mini-trampolines.c (mono_magic_trampoline): Add some debugging code to help
5719         diagnose an assertion failure.
5720
5721 2008-12-02  Mark Probst  <mark.probst@gmail.com>
5722
5723         * tramp-ppc64.c (mono_arch_create_rgctx_lazy_fetch_trampoline):
5724         Fix trampoline size.
5725
5726         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: A few floating point
5727         conversion opcodes are implemented natively instead via emulation.
5728
5729 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
5730
5731         * cpu-mips.md: remove mips_xori
5732
5733         * mini-ops.h:  remove mips_xori
5734
5735         * mini-mips.h: replace OP_MIPS_XORI with OP_IXOR
5736
5737         * mini-mips.c (mono_arch_decompose_long_opts): Add ladd_imm, lsub, lsub_imm, lneg, lsub_ovf, lsub_ovf_un.
5738         
5739         * mini-mips.c (mono_arch_lowering_pass, mono_arch_output_basic_block): fix IXOR handling
5740         
5741 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
5742
5743         * cpu-mips.md: fix instruction lengths.
5744
5745         * mini-mips.h: define MONO_ARCH_NO_IOV_CHECK
5746
5747         * mini-mips.c: move most instruction rewriting into decompose_ops. Implement conditional branches and exceptions. Fix jump table patch handling. Implement add/sub OVF.
5748
5749         * mini-ops.h: fix slti / sltiu op profiles.
5750         
5751 2008-12-02  Martin Baulig  <martin@ximian.com>
5752
5753         * method-to-ir.c (mono_method_to_ir): Disable debugging
5754         information for the init locals block to make the debugger stop
5755         after all locals have been initalized.
5756
5757 2008-12-02  Martin Baulig  <martin@ximian.com>
5758
5759         * mini.c (mini_method_compile): Disable MONO_OPT_DEADCE when
5760         running inside the debugger.
5761
5762 2008-12-01  Zoltan Varga  <vargaz@gmail.com>
5763
5764         * mini.c (mini_method_compile): Only run local deadce if MONO_OPT_DEADCE
5765         is enabled.
5766
5767         * method-to-ir.c (mono_method_to_ir): Fix invalid code generated by the 
5768         alu->alu imm optimization which only shows if deadce is disabled.
5769
5770         * aot-compiler.c: Rename the function names for the binary and asm writers
5771         so they can coexist in the same process. Rework the xdebug code to use the
5772         asm writer. This avoids the need to call into the runtime to dump the
5773         debugging info. Add more debugging info for types.
5774
5775         * mini-<ARCH>.h: Kill MONO_ARCH_HAVE_NORMALIZE_OPCODES define.
5776
5777         * genmdesc.c genmdesc.pl mini.h: Don't put the CEE_ opcodes into the
5778         cpu description tables, they can't occur in cpu-<ARCH>.md.
5779
5780         * method-to-ir.c (mono_method_to_ir): Set the type of the value pushed on
5781         the stack in CEE_LDFLDA. Fixes #450542.
5782
5783         * generics.cs: Add a new test.
5784
5785 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
5786
5787         * mini-ops.h: updated MIPS opcodes
5788         * mini-mips.c: decompose long opts
5789         * mini-mips.h: decompose long opts
5790         
5791 2008-11-29  Mark Mason   <mmason@upwardaccess.com>
5792
5793         * cpu-mips.md: fix length on int_rem_un
5794         * mini-mips.c (mips_stackframe_adjust): fix insertion of spillvars region in MIPS stackframes.
5795         
5796 2008-11-29  Zoltan Varga  <vargaz@gmail.com>
5797
5798         * mini.h aot-runtime.c: Fix building with DISABLE_AOT.
5799
5800         * mini-codegen.c (mono_print_ins_index): Handle OP_VOIDCALL_MEMBASE.
5801
5802 2008-11-29  Martin Baulig  <martin@ximian.com>
5803
5804         * mini-exceptions.c (mono_handle_native_sigsegv): Check
5805         mono_debug_using_mono_debugger() in addition to the
5806         `no_gdb_backtrace' flag in the `MonoDebugOptions'.
5807
5808 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
5809
5810         * mini-ops.h: updated more MIPS opcodes
5811         * mini-mips.c: FP compare/branch working again, clean up last of CEE_ -> OP_ mappings
5812         * cpu-mips.md: Added MIPS versions of new FP compare/branch opcodes.
5813         
5814 2008-11-28  Mark Probst  <mark.probst@gmail.com>
5815
5816         * mini-ppc64.c: Patch the RGCTX fetch trampoline correctly.
5817
5818 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
5819
5820         * mini-mips.c (mono_arch_emit_call): adding missing conversion to fp single when passing in integer arg register.
5821         * mini-mips.c (mips_adjust_stackframe): compensate for spill-down logic.
5822         * mini-ops.h: correct selected mips opcode entries
5823         
5824 2008-11-28  Mark Probst  <mark.probst@gmail.com>
5825
5826         * mini-ppc64.c, mini-ppc64.h: Enable generalized IMT thunks and
5827         make them work.
5828
5829 2008-11-28  Mark Probst  <mark.probst@gmail.com>
5830
5831         * mini-ppc64.h, tramp-ppc64.c: Make generic code sharing work.
5832
5833 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
5834
5835         * method-to-ir.c, mini-trampolines.c: protect IMG code with #ifdef MONO_ARCH_HAVE_IMT to fix compile errors.
5836         * mini-mips.c: Fixup stackframe assignments after allocation of spillvars.
5837         * mini-mips.h: disable IMT
5838         * tramp-mips.c (mono_arch_get_vcall_slot): fix offset extraction
5839         
5840 2008-11-28  Mark Probst  <mark.probst@gmail.com>
5841
5842         * mini-ppc64.c, mini-ppc64.h: Don't emulate long ops.
5843
5844 2008-11-28  Mark Probst  <mark.probst@gmail.com>
5845
5846         * mini-ppc64.c, exceptions-ppc64.c: Several fixes.
5847
5848 2008-11-28  Zoltan Varga  <vargaz@gmail.com>
5849
5850         * method-to-ir.c (handle_isinst): Use PCONST instead of ICONST for
5851         consistency.
5852
5853 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
5854
5855         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
5856         for Set/GetVector aligned versions.
5857
5858 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
5859
5860         * basic-simd.cs: Add tests for Get/SetVector.
5861
5862 2008-11-27  Mark Probst  <mark.probst@gmail.com>
5863
5864         * mini.c: Removed g_slist_append_mempool().  Now in
5865         metadata/mempool.c.
5866
5867 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
5868
5869         * simd-intrinsics.c (mono_emit_vector_ldelema): Extract the element
5870         size properly and make the bounds check optional.
5871
5872         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
5873         for SetVector and IsAligned.
5874
5875 2008-11-27  Zoltan Varga  <vargaz@gmail.com>
5876
5877         * mini.c: Remove unused mono_normalize_opcodes () function.
5878
5879 2008-11-26  Mark Probst  <mark.probst@gmail.com>
5880
5881         * method-to-ir.c (mini_emit_inst_for_method): Small fix: we're
5882         using the new atomic add ops now.
5883
5884         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Implemented atomic
5885         add.
5886
5887 2008-11-26  Mark Probst  <mark.probst@gmail.com>
5888
5889         * mini-ppc64.c: Several fixes.
5890
5891 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
5892
5893         * cpu-mips.md: added jump_table
5894         * mini-mips.c: added jump_table. Eliminate compare-imm when lowering. Remove dead function.             
5895
5896 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
5897
5898         * mini-mips.c, mini-mips.h, tramp-mips.c, cpu-mips.md: Initial upgrade of MIPS port to new IR.
5899
5900 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
5901
5902         * mini-ops.h: corrected a handful of MIPS opcodes.
5903
5904 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
5905
5906         * aot-compiler.c: MIPS to use ELF writer
5907
5908 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
5909
5910         * mini-codegen.c: remove MIPS specific assert.
5911
5912 2008-11-25  Mark Probst  <mark.probst@gmail.com>
5913
5914         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Several
5915         fixes.  PPC64 now passes most of the runtime regressions.
5916
5917 2008-11-24  Zoltan Varga  <vargaz@gmail.com>
5918
5919         * regalloc2.c: Distinguish between use/def positions. Optimize the creation of
5920         volatile intervals a bit.
5921
5922 2008-11-24  Mark Probst  <mark.probst@gmail.com>
5923
5924         * basic-long.cs: New test case.
5925
5926 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
5927
5928         * mini.c (mini_method_compile): Disable globalra for large methods for 
5929         now.
5930
5931         * regalloc2.c (order_moves): Add fp support.
5932
5933         * branch-opts.c (mono_remove_critical_edges): Split non-critical edges whose
5934         source bblock ends with an OP_BR_REG.
5935
5936         * ratests.cs: Add a new test.
5937
5938 2008-11-23  Mark Probst  <mark.probst@gmail.com>
5939
5940         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c: Disable generic code
5941         sharing.  PPC64 now passes generics.exe.
5942
5943 2008-11-23  Mark Probst  <mark.probst@gmail.com>
5944
5945         * mini-ppc64.c: Several fixes.  PPC64 now runs iltests.exe.
5946
5947 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
5948
5949         * exceptions-x86.c (mono_arch_find_jit_info): Avoid reading uninitialized
5950         memory when mono_jit_info_table_find () can't find the method in the
5951         LMF case.
5952
5953         * aot-compiler.c (mono_save_xdebug_info): Emit complete debug info for
5954         AOTed code too.
5955         
5956         * aot-compiler.c (mono_save_xdebug_info): Make this work with the assembly
5957         writer too.
5958
5959 2008-11-23  Mark Probst  <mark.probst@gmail.com>
5960
5961         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, cpu-ppc64.md:
5962         Several fixes.  PPC64 now runs exceptions.exe and
5963         devirtualization.exe.
5964
5965 2008-11-22  Mark Probst  <mark.probst@gmail.com>
5966
5967         * mini-ppc64.c, tramp-ppc64.c: Small fixes.  PPC64 now runs
5968         arrays.exe and basic-math.exe.
5969
5970 2008-11-22  Mark Probst  <mark.probst@gmail.com>
5971
5972         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c,
5973         cpu-ppc64.md: Several fixes.  PPC64 now runs objects.exe.
5974
5975 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
5976
5977         * simd-intrinsics.c: Add support ArrayExtension intrinsics.
5978
5979 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
5980
5981         * method-to-ir.c: Move bounds checking macros to ir-emit.h
5982
5983         * ir-emit.h: Move macros from method-to-ir.c to here.
5984
5985 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
5986
5987         * mini-ops.h: Correct the long simd ops to use LREG.
5988
5989 2008-11-21  Zoltan Varga  <vargaz@gmail.com>
5990
5991         * mini-ops.h: Correct the dreg type of OP_LOADI8_MEMBASE.
5992         
5993         * mini-ops.h: Correct the dreg type of a few long opcodes.
5994
5995         * mini-amd64.h: Applied patch from Mihai Chelaru <kefren@ngnetworks.ro>.
5996         Add netbsd support.
5997
5998 Fri Nov 21 12:52:23 CET 2008 Paolo Molaro <lupus@ximian.com>
5999
6000         * mini-ppc.c: remove negative stack references in epilog
6001         for platforms that don't support the red zone.
6002
6003 2008-11-21  Mark Probst  <mark.probst@gmail.com>
6004
6005         * mini-ppc64.h, cpu-ppc64.md: Fixed caller/callee saved floating
6006         point regs.  Now PPC64 passes basic-calls.exe.
6007
6008 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6009
6010         * basic-simd.cs: Add tests for accessors of Vector2l.
6011
6012 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6013
6014         * mini-ops.h: Added OP_INSERTX_I8_SLOW,.
6015
6016         * mini-x86.c (mono_arch_decompose_long_opts): Decompose OP_INSERTX_I8_SLOW.
6017         
6018         * simd-intrinsics.c: Add support for Vector2l and Vector2ul.
6019
6020 2008-11-21  Mark Probst  <mark.probst@gmail.com>
6021
6022         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Several fixes.  Now
6023         PPC64 passes basic-long.exe.
6024
6025 2008-11-20  Mark Probst  <mark.probst@gmail.com>
6026
6027         * decompose.c: Decompose carry and overflow add on PPC64 like on
6028         other 64 bit archs.  Don't decompose sub at all on PPC64.
6029
6030         * mini-ppc64.c, exceptions-ppc64.c, tramp-ppc64.c, cpu-ppc64.md:
6031         Several fixes and new opcodes.  Now PPC64 runs (but doesn't pass)
6032         basic-long.exe.
6033
6034 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6035
6036         * basic-simd.cs: Add tests for accessors of Vector2d.
6037
6038 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6039
6040         * mini-ops.h: Added OP_INSERTX_R8_SLOW,.
6041
6042         * cpu-x86.md: Same.
6043
6044         * mini-x86.c (mono_arch_output_basic_block): Same.
6045         
6046         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector2d.
6047
6048 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6049
6050         * basic-simd.cs: Add tests for accessors of Vector4f.
6051
6052 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6053
6054         * mini-ops.h: Added OP_INSERTX_R4_SLOW,.
6055
6056         * cpu-x86.md: Same.
6057
6058         * mini-x86.c (mono_arch_output_basic_block): Same.
6059         
6060         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4f.
6061
6062 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6063
6064         * basic-simd.cs: Add tests for accessors of Vector4i and Vector4ui.
6065
6066 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6067
6068         * mini-ops.h: Added OP_INSERTX_I4_SLOW,.
6069
6070         * cpu-x86.md: Same.
6071
6072         * mini-x86.c (mono_arch_output_basic_block): Same.
6073         
6074         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4i and Vector4ui.
6075
6076 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6077
6078         * cpu-x86.md: Use reasonable sizes for extractx_u2 and insertx_u1_slow.
6079
6080 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6081
6082         * simd-intrinsics.c: Enable setters for Vector16sb.
6083
6084 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6085
6086         * mini-ops.h: Added OP_EXTRACTX_U2, OP_INSERTX_U1_SLOW.
6087
6088         * cpu-x86.md: Same.
6089
6090         * mini-x86.c (mono_arch_output_basic_block): Same.
6091         
6092         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector16b.
6093
6094 2008-11-19  Rodrigo Kumpera  <rkumpera@novell.com>
6095
6096         * simd-intrinsics.c: Implement setter for Vector8us.
6097
6098 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
6099
6100         * aot-compiler.c (mono_save_xdebug_info): Emit correct location info
6101         for dead variables.
6102
6103 Wed Nov 19 18:27:41 CET 2008 Paolo Molaro <lupus@ximian.com>
6104
6105         * mini-ppc.c: remove references to the red zone in the prolog
6106         (for systems that don't support it).
6107
6108 2008-11-19  Mark Probst  <mark.probst@gmail.com>
6109
6110         * cpu-ppc64.md: Fixed a few instruction lengths.
6111
6112         * mini-ppc64.c: Don't emit SETLRET.  PPC64 passes basic-float.exe,
6113         now.
6114
6115 2008-11-19  Mark Probst  <mark.probst@gmail.com>
6116
6117         * mini-ppc64.c, cpu-ppc64.md: Fixed some opcodes.  PPC64 passes
6118         basic.exe now.
6119
6120 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
6121
6122         * aot-compiler.c (mono_save_xdebug_info): Add more parameter types.
6123
6124 2008-11-18  Rodrigo Kumpera  <rkumpera@novell.com>
6125
6126         * mini-ops.h: Added OP_INSERT_I2.
6127
6128         * cpu-x86.md: Same.
6129
6130         * mini-x86.c (mono_arch_output_basic_block): Same.
6131         
6132         * simd-intrinsics.c: Implement setter for Vector8s.
6133
6134         * simd-methods.h: Add the names of get setters of Vector8s.
6135
6136 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
6137
6138         * aot-compiler.c (mono_save_xdebug_info): Add support for parameters.
6139         
6140         * aot-compiler.c (mono_save_xdebug_info): Add preliminary support for
6141         parameters.
6142
6143         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
6144
6145 2008-11-18  Mark Probst  <mark.probst@gmail.com>
6146
6147         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Changes
6148         for PPC64.  An empty program runs now.
6149
6150 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
6151
6152         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
6153
6154         * aot-compiler.c mini.c mini.h: Add a JIT debugging mode modelled after
6155         a similar mode in Kaffe: When the the MONO_XDEBUG env var is set, debugging
6156         info for JITted code is emitted into a shared library, loadable into gdb.
6157
6158 2008-11-18  Mark Probst  <mark.probst@gmail.com>
6159
6160         * Makefile.am: Changes to build PPC64.
6161
6162         * mini-arch.h: Include mini-ppc64.h on PPC64.
6163
6164 2008-11-18  Mark Probst  <mark.probst@gmail.com>
6165
6166         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Updated with changes
6167         in PPC code up to r119147.
6168
6169 2008-11-18  Mark Probst  <mark.probst@gmail.com>
6170
6171         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
6172         cpu-ppc64.md: Changes for PPC64.
6173
6174         Based on code submitted by andreas.faerber@web.de at
6175         https://bugzilla.novell.com/show_bug.cgi?id=324134 under the
6176         X11/MIT license.
6177
6178 2008-11-18  Mark Probst  <mark.probst@gmail.com>
6179
6180         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
6181         cpu-ppc64.md: Copied from the corresponding PPC files from
6182         r118846.
6183
6184 2008-11-18  Scott Peterson  <lunchtimemama@novell.com>
6185
6186         * mini-ops.h: Added OP_ROUND.
6187
6188         * cpu-x86.md: Added round.
6189
6190         * mini-x86.c: Added support for intrinsicing Math.Round (double).
6191
6192         * basic-math.cs: Added test_0_round to test rounding.
6193
6194         Contributed under MIT/X11 license.
6195
6196 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
6197
6198         * aot-compiler.c : Fix the Winx64 build.
6199
6200         Contributed under MIT/X11 license.
6201
6202 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
6203
6204         * mini-x86.c (mono_arch_output_basic_block): Use movsd instead of monvups
6205         in OP_EXTRACT_R8 to avoid possible stack corruption.
6206
6207 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
6208
6209         * mini-ops.h: Added OP_EXTRACT_R8/I8.
6210
6211         * cpu-x86.md: Added extract_r8.
6212
6213         * mini-x86.c (mono_arch_output_basic_block): Emmit OP_EXTRACT_R8.
6214         
6215         * mini-x86.c: Added mono_arch_decompose_long_opts to break OP_EXTRACT_I8 into
6216         a couple of OP_EXTRACT_I4.
6217
6218         * mini-x86.h: Define MONO_ARCH_HAVE_DECOMPOSE_LONG_OPTS if simd is enabled.
6219
6220         * simd-intrinsics.c: Implement getters for Vector2l/2ul/2d.
6221
6222 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
6223
6224         * simd-intrinsics.c (vector2l_intrinsics): CompareGreaterThan requires sse 4.2
6225         and not 4.1. 
6226
6227 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
6228
6229         * method-to-ir.c (handle_delegate_ctor): Emit the address of the delegate
6230         trampoline as an AOT const of the proper type instead of MONO_PATCH_INFO_ABS.
6231
6232         * mini.c (mono_codegen): Remove the handling of delegate trampolines, they
6233         are not needed any more.
6234
6235         * mini.h: Remove the unused INS_LIST macros.
6236
6237         * mini.c (mini_method_compile): Remove a disable globalra case which is no
6238         longer needed.
6239
6240         * *.h *.c: Remove duplicate MonoInst emission macros, use the ones in
6241         ir-emit.h.
6242
6243         * regalloc.h *.c: Remove references to mono_regstate_next_int (), use
6244         mono_alloc_ireg () instead.
6245
6246         * mini-<ARCH>.c: Include ir-emit.h. Remove duplicate MonoInst emission
6247         macros.
6248
6249         * mini-amd64.c (emit_load_volatile_arguments): Removed, not needed
6250         on amd64.
6251
6252         * aot-runtime.c (load_aot_module): Disable AOT when running under
6253         CAS.
6254
6255         * mini-amd64.h: Change the monitor fastpath defines to check for
6256         !PLATFORM_WIN32 so they work on *bsd too.
6257
6258         * mini.h mini.c mini-hhpa.c: Remove more unused code.
6259
6260         * mini-s390.c mini-s390x.c: Remove !cfg->new_ir code.
6261
6262         * mini.h (MonoCompile): Remove new_ir flag.
6263
6264         * regalloc.h regalloc.c: Remove unused code.
6265
6266         * cpu-*.md: Remove more unused opcodes.
6267
6268         * simple-cee-ops.h simple-mini-ops.h: Removed.
6269
6270         * mini-ops.h *.c cpu-<ARCH>.md: Remove more unused opcodes.
6271         
6272 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
6273
6274         * aliasing.h: Removed.
6275
6276         * *.c: Remove references to aliasing.h and inssel.h.
6277
6278         * mini.c: Remove additional unused functions.
6279
6280         * mini-ops.h cpu-*.md: Remove unused opcodes.
6281
6282 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
6283
6284         Remove the old JIT code.
6285
6286         * inssel*.brg: Removed.
6287
6288         * ssa.c abcremoval.c aliasing.c: Removed.
6289
6290         * ssa2.c: Renamed to ssa.c.
6291
6292         * abcremoval2.c: Renamed to abcremoval.c.
6293
6294         * *.c: Removed all !cfg->new_ir code.
6295
6296         * mini-<ARCH>.c: Removed mono_arch_call_opcode (), 
6297         mono_arch_emit_this_vret_args (), and mono_arch_get_inst_for_method ().
6298
6299         * mini.c: Removed the old mono_method_to_ir () and all the code used by it.
6300         
6301 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
6302
6303         * aot-compiler.c aot-runtime.c: Emit most of the non-table data in a structure
6304         to simplify the code and cut back on the number of global symbols in the AOT
6305         file.
6306         
6307         * aot-compiler.c aot-runtime.c: Get rid of the unused plt_jump_table.
6308
6309 2008-11-15  Zoltan Varga  <vargaz@gmail.com>
6310
6311         * aot-runtime.c aot-compiler.c: Unify the plt_jump_table/plt_info tables
6312         with the got/got_info tables.
6313
6314         * mini.h: Bump AOT file format version.
6315         
6316         * unwind.h: New file, contains definitions for stack unwinding.
6317
6318         * mini.c (mono_emit_unwind_op): New helper function to append an unwind op
6319         to cfg->unwind_ops.
6320         
6321         * aot-compiler.c: Generalize the emitting of unwind information to use the
6322         information in cfg->unwind_ops.
6323
6324         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info.
6325
6326         * aot-compiler.c: Emit dwarf unwind information so gdb can unwind through
6327         AOT method frames. Enable writing symbols for methods by default.
6328
6329 2008-11-14  Rodrigo Kumpera  <rkumpera@novell.com>
6330
6331         * simd-intrinsics.c (simd_intrinsic_emit_getter): Generalize this code
6332         and make it work with vectors of element sizes 1, 2 and 4.
6333
6334         * simd-intrinsics.c: Enable getter for all vectors with element size
6335         1, 2 or 4.
6336
6337         * simd-methods.h: Add the names of other getters.
6338
6339         * mini-ops.h: Added OP_EXTRACT_I2/U2/I1/U1.
6340
6341         * cpu-x86.md: Same.
6342
6343         * mini-x86.c: Same.
6344
6345 Fri Nov 14 15:54:18 CET 2008 Paolo Molaro <lupus@ximian.com>
6346
6347         * mini-ppc.h: portability fix.
6348
6349 Fri Nov 14 15:39:50 CET 2008 Paolo Molaro <lupus@ximian.com>
6350
6351         * mini-ppc.h, mini-ppc.c: avoid using the red zone as some kernels are
6352         buggy and will overwrite it.
6353
6354 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
6355
6356         * aot-compiler.c: Add functionality to emit local symbols to the elf writer.
6357         Use it to emit local symbols for all methods so AOTed methods show up with
6358         their full name in gdb/valgrind output.
6359
6360 Fri Nov 14 12:56:27 CET 2008 Paolo Molaro <lupus@ximian.com>
6361
6362         * mini-ppc.c: portability fixes.
6363
6364 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
6365
6366         * mini-trampolines.c (mono_magic_trampoline): Move the patching of plt
6367         entries out of the if (!generic_shared...) code so it is always done.
6368         (mono_class_init_trampoline): Do the patching when running under valgrind
6369         too, newer versions of valgrind have no problems with it.
6370
6371 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
6372
6373         * aot-compiler.c (emit_writeout): Rework this to make it easier to add
6374         further sections.
6375
6376 2008-11-13  Mark Probst  <mark.probst@gmail.com>
6377
6378         * mini-ppc.c, cpu-ppc.md: Reserve space for the parameter area in
6379         filters.
6380
6381 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
6382
6383         * simd-intrinsics.c: Add getter support for Vector4i and Vector4ui. 
6384
6385 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
6386
6387         * mini-ops.h: Kill diplicated ops OP_SHUFLEPS.
6388
6389         * cpu-x86.md: Same.
6390
6391         * mini-x86.c: Same.
6392
6393         * simd-intrinsics.c: Same.
6394
6395 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
6396
6397         * simd-intrinsics.c: Enable constructor intrinsics for all types.
6398
6399 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
6400
6401         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Generalize this method
6402         to work with more Vector types.
6403
6404 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
6405
6406         * simd-intrinsics.c (simd_intrinsic_emit_ctor): If the target is already a pointer
6407         store the elemens directly instead of using and intermediate.
6408
6409 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
6410
6411         * mini-amd64.c (emit_call_body): Avoid aligning call sites in AOTed code.
6412
6413         * tramp-x86.c (mono_arch_create_trampoline_code): Rework the return sequence
6414         to preserve %eax for aot plt trampolines.
6415
6416         * aot-compiler.c (compile_method): Don't skip synchronized methods.
6417         (encode_method_ref): Flag synchronized methods so they won't go through
6418         the AOT trampoline.
6419
6420         * aot-compiler.c: Additional work to support AOTing synchronized methods/
6421         wrappers.
6422
6423         * cpu-ia64.md (jmp): Increase max length.
6424
6425 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
6426
6427         * aot-runtime.c (load_method): Avoid calling runtime_class_init () for
6428         open generic classes.
6429
6430         * aot-compiler.c: Enable the ELF writer on ELF platforms.
6431
6432         * method-to-ir.c (mono_method_to_ir2): Revert the last change to the
6433         box+brtrue optimization since it causes test failures on x86.
6434
6435 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
6436
6437         * mini-ops.h: Remove OP_PUSH_R4 and OP_LOADX_STACK.
6438
6439         * cpu-x86.md: Same.
6440
6441         * mini-x86.c: Same.
6442
6443         * mini.h (struct MonoCompile): Add simd_ctor_var to be used as storage
6444         for simd ctor values. 
6445
6446         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Use simd_ctor_var for the constructor
6447         instead of directly pushing the values on stack. This saves about 15 bytes of generated code.
6448
6449 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
6450
6451         * simd-methods.h: Rename SubWithSaturation, ArithmeticRightShift and
6452         LogicalRightShift.
6453
6454         * simd-instrincs.c: Same.
6455
6456         * basic-simd.cs: Same.
6457
6458 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
6459
6460         * ratests.cs: Add more tests.
6461
6462         * regalloc2.c (add_spill_code): Handle more corner cases.
6463
6464 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
6465
6466         * regalloc2.c (INS_POS_INTERVAL): Decrease this to 8 to avoid overflows.
6467         (update_liveness): Avoid holes in the liveness ranges of hregs if they are
6468         both the source an destination of an instruction.
6469
6470 Tue Nov 11 19:30:50 CET 2008 Paolo Molaro <lupus@ximian.com>
6471
6472         * jit-icalls.c, local-propagation.c, mini.c, ssa.c, ssapre.c, trace.c,
6473         wapihandles.c: more portability changes.
6474
6475 Tue Nov 11 18:56:33 CET 2008 Paolo Molaro <lupus@ximian.com>
6476
6477         * aot-compiler.c, aliasing.c, abcremoval.c: portability changes.
6478         * mini.c mini.h, aot-runtime.c: the aot segfault-handling code is not
6479         safe to execute in a signal handler and the kernel provides better
6480         the info in /proc/self/smaps. Avoid the assert on sigaction during
6481         cleanup.
6482
6483 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
6484
6485         * method-to-ir.c (mono_method_to_ir2): In the box+brtrue optimization, only
6486         do the bblock linking hack if it is actually needed.
6487
6488         * Makefile.am (patch-libtool): New helper target to patch libtool to speed
6489         up linking.
6490
6491         * liveness.c (ENABLE_LIVENESS2): Reenable this for 64 bit archs as the
6492         crash problem is fixed.
6493
6494         * branch-opts.c (mono_remove_critical_edges): Link up newly added
6495         bblocks.
6496
6497         * mini.c (mini_method_compile): Compute unreachable bblocks properly even
6498         for catch clauses.
6499         (mini_method_compile): Set the starting value of next_vreg to 
6500         MAX_IREGS + MAX_FREGS when using globalra.
6501
6502         * method-to-ir.c (mono_method_to_ir2): Mark bblocks starting
6503         filter clauses with BB_EXCEPTION_HANDLER.
6504
6505         * regalloc2.c (assign_spill_slots): Set cfg->rgctx_var.
6506
6507 2008-11-10  Mark Probst  <mark.probst@gmail.com>
6508
6509         * mini-x86.c (mono_arch_get_argument_info): Don't align argument
6510         space for stdcall.  Fixes regressions on Win32.
6511
6512 2008-11-10  Zoltan Varga  <vargaz@gmail.com>
6513
6514         * regalloc2.c (handle_reg_constraints): Avoid adding code to unreachable
6515         bblocks.
6516         (linear_scan): Remove an assert which doesn't seem to be needed.
6517
6518         * local-propagation.c (mono_local_deadce): Avoid a call to
6519         MONO_DELETE_INS which would screw up the instruction linking.
6520
6521         * mini.c (mono_decompose_op_imm): Make this work with globalra.
6522
6523         * regalloc2.c: Upgrade to work the current JIT code.
6524
6525 2008-11-09  Zoltan Varga  <vargaz@gmail.com>
6526
6527         * method-to-ir.c (inline_method): Merge more basic blocks to help the AOT
6528         case.
6529
6530         * aot-runtime.c: Remove some dead code.
6531
6532         * tramp-arm.c: Use 'code' as the runnning pointer in code generation for
6533         consistency.
6534         (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Implement aot support.
6535
6536         * aot-runtime.c (load_named_code): Decode the offset of lazy fetch
6537         trampolines using sscanf since atoi doesn't work on large unsigned values.
6538
6539         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): 
6540         Initialize code_size.
6541
6542 2008-11-08  Mark Probst  <mark.probst@gmail.com>
6543
6544         * method-to-ir.c (mini_emit_inst_for_method): Make
6545         Interlocked.CompareExchange work for Int arguments on 32 bit
6546         archs, as well.
6547
6548 2008-11-07  Mark Probst  <mark.probst@gmail.com>
6549
6550         * method-to-ir.c (mono_method_to_ir2): Fixed a funny commit error.
6551
6552 2008-11-06  Bill Holmes  <billholmes54@gmail.com>
6553
6554         * main.c Fix MSVC build.
6555
6556         Contributed under MIT/X11 license.
6557
6558 2008-11-06  Mark Probst  <mark.probst@gmail.com>
6559
6560         * mini-x86.c (mono_arch_allocate_vars): Make sure locals that need
6561         alignment larger than 8 bytes are aligned correctly, too.
6562
6563         * mini.c: Honor the min_align field of MonoClass when laying out
6564         the stack.
6565
6566 2008-11-06  Zoltan Varga  <vargaz@gmail.com>
6567
6568         * method-to-ir.c (mono_method_to_ir2): Fix AOT support for CEE_SWITCH on arm.
6569
6570         * aot-compiler.c (emit_plt): Fix a warning.
6571         
6572         * aot-compiler.c: Implement ARM support in the binary writer.
6573
6574 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
6575
6576         * basic-simd.cs: Add test for getter with byref arg.
6577         Fix the naming of a few tests.
6578         Add missing checks to a test.
6579
6580 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
6581
6582         * aot-compiler.c (emit_plt): Make the arm code work with the binary writer.
6583
6584         * aot-compiler.c aot-runtime.c mini-trampolines.c tramp-amd64.c: Implement
6585         most of the full-aot support for monitor enter/exit trampolines.
6586
6587         * tramp-x86.c tramp_amd64.c: Add AOT compatible variants of the monitor
6588         enter/exit trampoline creation functions.
6589
6590         * Makefile.am: Fix the generation of buildver.h so it is not invoked during
6591         make dist.
6592
6593 Wed Nov 5 16:28:53 CET 2008 Paolo Molaro <lupus@ximian.com>
6594
6595         * mini.h, aot-compiler.c, method-to-ir.c, aot-runtime.c: remove the
6596         incorrectly added MONO_WRAPPER_MONITOR_* (in r117651-r117652) and
6597         implement the needed functionality without adding crap to the runtime.
6598
6599 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
6600
6601         * mini-trampolines.c (mono_create_monitor_enter_trampoline): Fix the
6602         non-x86 builds.
6603
6604         * mini.c (mono_build_date): New global version holding the build date in
6605         string format.
6606         
6607         * Makefile.am (buildver.c): Generate a file containing the build date.
6608
6609         * main.c: Set the build date from the generated file.
6610
6611         * mini.c (mono_get_runtime_build_info): New helper function returning build
6612         information in a string format.
6613         
6614         * driver.c (mono_main): Print the build date in --version.
6615
6616         * aot-compiler.c aot-runtime.c: Embed the build information into the AOT
6617         file when the bind-to-runtime-version option is used.
6618
6619 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
6620
6621         * simd-intrinsics.c: Fix bug when using getters and byref args. 
6622
6623 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
6624
6625         * simd-methods.h: Rename prefetch methods.
6626
6627         * simd-intrinsics.c: Same.      
6628
6629 2008-11-05  Mark Probst  <mark.probst@gmail.com>
6630
6631         * tramp-amd64.c: Enlarge the Monitor.Enter/Exit trampoline code
6632         sizes.
6633
6634 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
6635
6636         * aot-compiler.c: Use the bundled elf header files instead of depending on
6637         the system one.
6638         
6639         * aot-compiler.c (emit_symbol_diff): Allocate memory from the acfg
6640         mempool.
6641
6642         * method-to-ir.c (mono_method_check_inlining): Avoid a getenv () call
6643         on every call.
6644
6645 2008-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
6646
6647         * cpu-x86.md: Add store nta ops.
6648
6649         * mini-ops.h: Same.
6650
6651         * mini-x86.c: Same.
6652
6653         * mini.h: Add an enum for simd prefetch modes.
6654
6655         * simd-methods.h: Refactor the store_aligned code to handle multiple kinds
6656         of store. Use the changed code to support store nta.
6657
6658         * simd-intrinsics.c: Add prefetch ops for all vector types.
6659
6660 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
6661
6662         * aot-compiler.c: Add an option for JIT compiling the methods by multiple 
6663         threads.
6664         
6665         * aot-compiler.c: Use statically allocated buffers for constructing symbol 
6666         names.
6667
6668         * aot-runtime.c aot-compiler.c: Add support for the MONITOR_ENTER/EXIT
6669         trampolines.
6670
6671 2008-11-04  Mark Probst  <mark.probst@gmail.com>
6672
6673         * mini-x86.c: Fixed commit.
6674
6675 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
6676
6677         * aot-compiler.c (emit_plt): Align the plt section only on x86.
6678
6679 2008-11-04  Mark Probst  <mark.probst@gmail.com>
6680
6681         * mini-trampolines.c, mini.h: Two new trampolines: MONITOR_ENTER
6682         and MONITOR_EXIT, for the ASM fastpaths.
6683
6684         * method-to-ir.c: Use the ASM fastpath for Monitor.Enter/Exit if
6685         available.
6686
6687         * mini.c, patch-info.h: Signature and patch infos for
6688         Monitor.Enter/Exit trampolines.
6689
6690         * mini-amd64.c, mini-x86.c: Make emit_tls_get() non-static.
6691
6692         * tramp-amd64.c, tramp-x86.c, mini-amd64.h, mini-amd64.h:
6693         Monitor.Enter/Exit ASM fastpath for Linux.
6694
6695 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
6696
6697         * mini.c (mono_method_to_ir): Fix soft-float support in Array.Get/Set.
6698
6699         * objects.cs: Add a new test.
6700         
6701         * aot-compiler.c: Use mono_100ns_ticks () for computing the profiling info.
6702
6703         * aot-runtime.c (load_method): Run class initialization in the PLT case even
6704         if MONO_LOG_LEVEL is set.
6705
6706         * debug-mini.c (serialize_variable): Fix the encoding of dead variables.
6707
6708         * aot-runtime.c (mono_aot_get_method): Skip out-of-date AOT modules.
6709
6710         * aot-compiler.c (emit_and_reloc_code): Speed this up a little.
6711         
6712         * aot-compiler.c: Change the relocation code to use virtual addresses instead
6713         of file offsets. Align the sections belonging to the data segment to 
6714         PAGESIZE.
6715
6716 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
6717
6718         * aot-compiler.c: Simplify the elf writer by depending on the definitions in
6719         elf.h. Port it to amd64.
6720
6721 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
6722
6723         * driver.c: Enable SIMD by default.
6724
6725 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
6726
6727         * cpu-x86.md: Add prefetch op.
6728
6729         * mini-ops.h: Same.
6730
6731         * mini-x86.c: Same.
6732
6733         * mini.h: Add an enum for simd prefetch modes.
6734
6735         * simd-methods.h: Add prefetch function names.
6736
6737         * simd-intrinsics.c: Add prefetch ops for all vector types.
6738
6739 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
6740
6741         * aot-compiler.c (emit_bytes): Speed this up a little.
6742
6743 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
6744
6745         * aot-compiler.c: Add JIT time etc. statistics.
6746         
6747         * aot-compiler.c (compile_method): Fix the copying of the cfgs array.
6748
6749         * mini.h (MonoCompile): Add 'got_offset' field.
6750
6751         * aot-compiler.c: Store the got offset in MonoCompile, get rid of the
6752         method_got_offsets array.
6753
6754         * aot-compiler.c aot-runtime.c: Add support for the monitor enter/exit
6755         wrappers.
6756
6757         * aot-compiler.c (compile_method): Add generic method instances referenced
6758         by the method to the list of methods to be compiled, this is required so if
6759         A<T> references B<T>, and another assembly references A<int>, then it will
6760         also get a copy of B<int>.
6761
6762         * method-to-ir.c (mini_emit_inst_for_method): Use the proper wrapper type
6763         when checking for monitor enter/exit.
6764
6765 2008-10-30  Mark Probst  <mark.probst@gmail.com>
6766
6767         * method-to-ir.c (mini_emit_inst_for_method): Use the IL fastpaths
6768         for Monitor.Enter and Monitor.Exit if enabled.
6769
6770         * mini-x86.h, mini-amd64.h: Enable the IL fastpaths for Linux and
6771         Solaris.
6772
6773 2008-10-30  Zoltan Varga  <vargaz@gmail.com>
6774
6775         * method-to-ir.c (type_from_op): Convert CEE_CONV_U on OP_ICONV_TO_U instead
6776         of an OP_MOVE. Fixes #440046.
6777
6778         * basic-long.cs: Add a new test.
6779
6780 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
6781
6782         * mini.h: Add synchronization note for the managed counter-part.
6783
6784         * simd-intrinsics.c: Add SimdRuntime.get_AccelMode intrinsic that
6785         returns the simd caps of the current cpu.
6786
6787 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
6788
6789         * basic-simd.cs: Remove Console.WriteLine.
6790
6791 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
6792
6793         * basic-simd.cs: New tests for Vector2ul.
6794
6795 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
6796
6797         * simd-intrinsics.c: Add new vector type Vector2ul.
6798
6799 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
6800
6801         * basic-simd.cs: New tests for Vector2l.
6802
6803 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
6804
6805         * cpu-x86.md: Add long version of most packed int ops.
6806
6807         * mini-ops.h: Same.
6808
6809         * mini-x86.h: Same.
6810
6811         * simd-intrinsics.c: Add new vector type Vector2l.
6812
6813 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
6814
6815         * simd-intrinsics.c: Replace SN_op_BitwiseXor with SN_op_ExclusiveOr.
6816
6817         * simd-methods.h: Remove SN_op_BitwiseXor.
6818
6819 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
6820
6821         * mini.c (mono_allocate_stack_slots_full): Align the size of vtypes to their
6822         alignment.
6823
6824 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
6825
6826         * basic-simd.cs: Test for Vector2d.
6827
6828         * basic-simd.cs (test_vector8s_pack_signed_sat): Fixed broken
6829         value.
6830
6831 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
6832
6833         * cpu-x86.md: Add double version of all packed float ops.
6834
6835         * mini-ops.h: Same.
6836
6837         * mini-x86.h: Same.
6838
6839         * simd-intrinsics.c: Add new vector type Vector2d.
6840
6841         * simd-intrinsics.c (vector4f_intrinsics): Fix ordering.
6842
6843         * simd-methods.h: Add Duplicate.
6844
6845 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
6846
6847         * basic-simd.cs: Test for packing with signed saturation.
6848
6849 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
6850
6851         * aot-compiler.c (add_generic_instances): Add all methods of generic instances
6852         found in the TYPESPEC table.
6853
6854 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
6855
6856         * aot-runtime.c (mono_aot_get_method): Log not found methods for extra methods
6857         too.
6858
6859         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
6860
6861         * mini.c (mono_method_to_ir): For MONO_PATCH_INFO_RVA, save field the token
6862         instead of the RVA, since the RVA can be changed by tools like the cil 
6863         stripper.
6864
6865         * method-to-ir.c (mono_method_to_ir2): Ditto.
6866
6867         * debug-mini.c (serialize_variable): Handle ADDRESS_MODE_DEAD.
6868         (deserialize_variable): Ditto.
6869
6870 2008-10-25  Martin Baulig  <martin@ximian.com>
6871
6872         * debug-mini.c (write_variable): Use
6873         `MONO_DEBUG_VAR_ADDRESS_MODE_DEAD' for dead variables.
6874
6875 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
6876
6877         * cpu-x86.md: Add unsigned variants of packd and packw.
6878
6879         * mini-ops.h: Same.
6880
6881         * mini-x86.h: Emit the right instruction for packd and packw.
6882         Add unsigned variants of packd and packw.
6883
6884         * simd-intrinsics.c: Packd and packw were used in place of their
6885         unsigned variants. Change that.
6886         Add intrinsics for (Signed)PackWithSignedSaturation.
6887
6888         * simd-methods.h: Add (Signed)PackWithSignedSaturation.
6889
6890 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
6891
6892         * simd-intrinsics.c (vector4i_intrinsics): New table of intrinsic type.
6893
6894 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
6895
6896         * mini-ops.h: Remove dword packed add/sub with saturation ops.
6897
6898         * cpu-x86.md: Remove dword packed add/sub with saturation ops.
6899
6900         * simd-intrinsics.c (vector4ui_intrinsics): Remove methods without
6901         sse instructions.
6902
6903         * simd-intrinsics.c (vector8s_intrinsics): Fix ordering.
6904
6905 2008-10-24  Mark Probst  <mark.probst@gmail.com>
6906
6907         * method-to-ir.c, mini.c: Special casing for the synchronized
6908         wrapper for the ldtoken+GetTypeFromHandle case.
6909
6910 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
6911
6912         * mini.c (mono_replace_ins): Move this to branch-opts.c.
6913
6914         * mini.c (mono_replace_ins): Propagate has_array_access flag to the newly
6915         created/split bblocks.
6916
6917 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
6918
6919         * mini-ops.h: Add packed signed mul high.
6920         
6921         * cpu-x86.md: Same.
6922
6923         * mini-x86.c (mono_arch_output_basic_block): Same.
6924
6925         * simd-methods.h: Add PackWithUnsignedSaturation and ShiftRightLogic.
6926
6927         * simd-intrinsics.c (vector8s_intrinsics): New table of intrinsic type.
6928
6929 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
6930
6931         * basic-simd.cs: Tests for Vector16sb.
6932
6933 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
6934
6935         * inssel.brg (stmt): Fix OP_HARD_NOP rule.
6936
6937 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
6938
6939         * mini-ops.h: Add packed signed min, max and compare greater.
6940         
6941         * cpu-x86.md: Same.
6942
6943         * mini-x86.c (mono_arch_output_basic_block): Same. Add packed add/sub with
6944         saturation.
6945
6946         * simd-methods.h: Add CompareGreaterThan.
6947
6948         * simd-methods.h: Remove CompareEquals.
6949
6950         * simd-intrinsics.c: Add new TODO entry and some cosmetic changes.
6951
6952         * simd-intrinsics.c (vector16sb_intrinsics): New table of intrinsic type.
6953
6954         * simd-intrinsics.c (vector4f_intrinsics): Rename CompareEquals to
6955         CompareEqual.
6956
6957 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
6958
6959         * basic-simd.cs: Fix tests due to change in the API.
6960
6961 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
6962
6963         * mini.c method-to-ir.c: Use mono_field_get_name () for accessing field->name.
6964
6965 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
6966
6967         * basic-simd.cs: Fix name change in Vector4f::CompareEqual.
6968
6969         * simd-intrinsics.c (simd_intrinsic_emit_store_aligned): Don't use
6970         inst_offset as this has invalid values for LDADDR.
6971
6972 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
6973
6974         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
6975
6976         * simd-intrinsics.c (vector4ui_intrinsics): Add SignedPackWithUnsignedSaturation.
6977
6978 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
6979
6980         * method-to-ir.c (initialize_array_data): Use mono_field_get_data ()
6981         for accessing field->data.
6982
6983 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
6984
6985         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
6986
6987 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
6988
6989         * simd-methods.h: Add SignedPackWithUnsignedSaturation.
6990
6991         * simd-intrinsics.c (vector8us_intrinsics): Add SignedPackWithUnsignedSaturation.
6992
6993 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
6994
6995         * dominators.c (mono_compute_natural_loops): Allocate GList enties
6996         from the cfg mempool.
6997
6998 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
6999
7000         * basic-simd.cs: Tests for new methods in Vector8us.
7001
7002 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
7003
7004         * mini-ops.h: Add multiply and store high.
7005         
7006         * cpu-x86.md: Same.
7007
7008         * mini-x86.c (mono_arch_output_basic_block): Same.
7009
7010         * simd-methods.h: Same.
7011
7012         * simd-intrinsics.c (vector8us_intrinsics): Add MultiplyStoreHigh
7013         and CompareEqual.
7014
7015 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
7016
7017         * method-to-ir.c (mono_emit_method_call_full): Remove a needless call to
7018         mono_class_setup_vtable ().
7019
7020         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Use
7021         mono_class_get_vtable_entry () for accessing klass->vtable.
7022
7023         * aot-runtime.c (load_method): Avoid a crash when using MONO_LOG_LEVEL.
7024
7025         * aot-compiler.c (add_generic_instances): Avoid a crash if a class is not
7026         found.
7027
7028         * method-to-ir.c (mono_save_token_info): Don't save references made from
7029         wrappers.
7030
7031         * aot-compiler.c (add_generic_instances): Add static rgctx wrappers for cctors
7032         of generic instances.
7033
7034         * aot-runtime.c (find_extra_method): Search in all loaded AOT images.
7035
7036 2008-10-19  Mark Probst  <mark.probst@gmail.com>
7037
7038         * cpu-ppc.md, mini-ppc.c: The length of the code generated for
7039         OP_JMP depends on the method signature.  Calculate it properly.
7040
7041 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
7042         
7043         * aot-runtime.c (mono_aot_find_jit_info): Handle extra methods which are
7044         called directly.
7045
7046         * aot-compiler.c (emit_and_reloc_code): Allow direct calling of generic
7047         instances.
7048         (emit_extra_methods): Add another table mapping method indexes to 
7049         offsets in the extra_method_info table.
7050
7051         * mini.h: Bump AOT file format version.
7052         
7053         * aot-runtime.c: Merge most of the code from mono_aot_get_method
7054         and mono_aot_get_method_from_token () into one function.
7055
7056 2008-10-19  Mark Probst  <mark.probst@gmail.com>
7057
7058         * mini-ppc.c (emit_load_volatile_arguments): Inner loop needs a
7059         separate counter.
7060
7061 2008-10-18  Zoltan Varga  <vargaz@gmail.com>
7062
7063         * aot-compiler.c aot-runtime.c: Fix the hash function used for the extra
7064         methods.
7065
7066         * method-to-ir.c (mono_method_to_ir2): Change a !compile_aot assert to
7067         disable_aot.
7068
7069         * mini.c (mono_patch_info_equal): Compare the generic context as well.
7070
7071         * mini.h: Bump aot file format version.
7072
7073         * aot-compiler.c aot-runtime.c: Generalize the wrapper handling code so the
7074         AOT file can contain native code for methods which are not in the METHOD
7075         table. Generate code for non-sharable generic instances of generic methods
7076         found in the METHODSPEC table.
7077         
7078         * method-to-ir.c (mono_method_to_ir2): Remove the aot restriction when
7079         encoding generic type handles.
7080
7081         * ir-emit.h (NEW_AOTCONST_TOKEN): Add a generic_context argument.
7082         (NEW_TYPE_FROM_HANDLE_CONST): Add a generic_context argument.
7083
7084         * ir-emit.h: Rewrite the EMIT_NEW_XXXCONST macros to use the NEW_XXXCONST
7085         macros + MONO_ADD_INS.
7086
7087         * mini.c (mono_jump_info_token_new2): New function which takes a generic
7088         context as well.
7089
7090         * mini.h (MonoJumpInfoToken): Include fields for a generic context.
7091
7092         * mini.h: Bump aot file format version.
7093
7094         * aot-compiler.c aot-runtime.c: Update after changes to MonoJumpInfoToken.
7095
7096 2008-10-17  Mark Probst  <mark.probst@gmail.com>
7097
7098         * mini-x86.h, mini-x86.c, exceptions-x86.c: Align stack on all
7099         platforms, with definable stack alignment value.  Set to 16 now
7100         for all platforms.
7101
7102         * mini.c, mini.h, driver.c: Command line option for disabling
7103         stack alignment.
7104
7105 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
7106
7107         * basic-simd.cs: Tests for new methods in Vector4ui.
7108
7109 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
7110
7111         * mini-ops.h: Add packed int shuffle.
7112         
7113         * cpu-x86.md: Same.
7114
7115         * mini-x86.c (mono_arch_output_basic_block): Same.
7116
7117         * simd-intrinsics.c (vector4ui_intrinsics): Add compare equal,
7118         extract mask, max, min, shuffle.
7119
7120         * simd-intrinsics.c (vector8us_intrinsics): Add max and min.
7121
7122 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
7123
7124         * basic-simd.cs: Tests for new methods in Vector8us.
7125
7126 2008-10-17  Mark Probst  <mark.probst@gmail.com>
7127
7128         * method-to-ir.c (mono_method_to_ir2): "refanytype" produces a
7129         RuntimeTypeHandle, not a TypedReference.
7130
7131 Fri Oct 17 14:40:50 CEST 2008 Paolo Molaro <lupus@ximian.com>
7132
7133         * simd-intrinsics.c: remove relocations.
7134
7135 2008-10-17  Zoltan Varga  <vargaz@gmail.com>
7136
7137         * mini-amd64.c (mono_arch_output_basic_block): Port the IREM_IMM 
7138         optimizations from the x86 backend.
7139
7140 Fri Oct 17 12:00:51 CEST 2008 Paolo Molaro <lupus@ximian.com>
7141
7142         * simd-methods.h, simd-intrinsics.c: debloat method names and
7143         prepare for no relocations.
7144
7145 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
7146
7147         * mini-ops.h: Add packed min/equal and sum of absolute differences.
7148         
7149         * cpu-x86.md: Same.
7150
7151         * mini-x86.c (mono_arch_output_basic_block): Same.
7152
7153         * simd-intrinsics.c (vector16b_intrinsics): Add average, compare equal,
7154         extract mask, max, min and sum of absolute differences.
7155
7156         * simd-intrinsics.c: Increase SIMD_INTRINSIC_NAME_MAX due to new huge
7157         method name.
7158
7159 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
7160
7161         * basic-simd.cs: Test for the other mono_simd_simplify_indirection bug.
7162         Renamed one test for consistency.
7163
7164 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
7165
7166         * simd-intrinsics.c (mono_simd_simplify_indirection): Apply the previous
7167         fix to the code that deal with other blocks.
7168
7169 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
7170
7171         * basic-simd.cs: Test for the mono_simd_simplify_indirection bug.
7172
7173 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
7174
7175         * simd-intrinsics.c (mono_simd_simplify_indirection): Simplify the code
7176         that deals with vreg interference. Explicitly check for OP_LDADDR to be
7177         able to process the source reg.
7178
7179 2008-10-16  Martin Baulig  <martin@ximian.com>
7180
7181         * mini-ops.h, cpu-amd64.md, cpu-x86.md: Added new `hard_nop' opcode.
7182
7183         * inssel.brg: Add `OP_HARD_NOP'.
7184
7185         * mini.h (MonoCompile): Added `keep_cil_nops' flag.
7186
7187         * mini.c (mono_method_to_ir): In `CEE_NOP': generate a
7188         `OP_HARD_NOP' instruction when running inside the debugger.
7189
7190         * method-to-ir.c (mono_method_to_ir2): In `CEE_NOP': generate a
7191         `OP_HARD_NOP' instruction when running inside the debugger.
7192
7193 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
7194
7195         * simd-intrinsics.c (get_simd_vreg): Using sreg1 of OP_XMOVE
7196         now works. The issue with the regalloc tripping up no longer
7197         happens.
7198
7199         * simd-intrinsics.c (load_simd_vreg): Same.
7200
7201 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
7202         
7203         * basic-simd.cs: Tests for new Vector8ui methods.
7204
7205 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
7206
7207         * simd-intrinsics.c (get_simd_vreg): Simplify code and test
7208         only for type. This fixes crashes where MonoInst::klass is checked
7209         for ops of type != VTYPE or OBJ.
7210
7211         * simd-intrinsics.c (load_simd_vreg): Same.
7212
7213 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
7214
7215         * mini-ops.h: Add ops for packed shuffle/max/avg and
7216         extract mask.
7217         
7218         * cpu-x86.md: Same.
7219
7220         * mini-x86.c (mono_arch_output_basic_block): Same.
7221
7222         * simd-intrinsics.c (vector8us_intrinsics): Add avg, shuffle and
7223         extract mask.
7224
7225         * simd-intrinsics.c (simd_intrinsic_emit_extract_mask): New function
7226         to emit extract mask op.
7227
7228         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Retrofic this function
7229         to emit word shuffles.
7230
7231 2008-10-15  Mark Probst  <mark.probst@gmail.com>
7232
7233         * mini.c (mono_allocate_stack_slots_full): Align stack frame to
7234         the largest alignment needed by a variable, but at least
7235         sizeof(gpointer).
7236
7237 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
7238
7239         * basic-simd.cs: Tests for the fixes in the last commit.
7240
7241 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
7242
7243         * simd-intrinsics.c (get_simd_vreg): Drop the is_this_ptr, this function
7244         no longer handles STACK_PTR input.
7245
7246         * simd-intrinsics.c (get_simd_vreg): Don't crash when MonoInst::klass == -1.
7247
7248         * simd-intrinsics.c (load_simd_vreg): New function that works like 
7249         get_simd_vreg   but handles STACK_PTR input.
7250
7251         * simd-intrinsics.c (simd_intrinsic_emit_getter): Use load_simd_vreg
7252         as the input can be an arbitrary pointer.
7253
7254         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Try the
7255         LDADDR local optimization directly otherwise use a store op.
7256
7257 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
7258
7259         * basic-simd.cs: Tests for dup low and dup high.
7260
7261 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
7262
7263         * mini-ops.h: Add dup low and dup high ops.
7264         
7265         * cpu-x86.md: Same.
7266
7267         * mini-x86.c (mono_arch_output_basic_block): Same.
7268
7269         * simd-intrinsics.c (vector4f_intrinsics): Same.
7270
7271 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
7272
7273         * basic-simd.cs: Tests for recently added functionality.
7274
7275 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
7276
7277         * mini-ops.h: Add remaining sse1 fp ops.
7278         
7279         * cpu-x86.md: Add remaining sse1 fp ops.
7280
7281         * mini-x86.c (mono_arch_output_basic_block): Same.
7282
7283         * mini.h: Add enum for simd FP compare conditions.
7284
7285         * simd-intrinsics.c (vector4f_intrinsics): Add all new ops.
7286
7287         * simd-intrinsics.c (simd_intrinsic_emit_binary): Set inst_c0 to flags
7288         so the backed can generate the appropriate op.
7289
7290 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
7291         This patch squeese one more byte from the SimdIntrinsc struct.
7292
7293         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions: Use the version number
7294         a a shift amount intead of simply or'ing it.
7295
7296         * mini.h: Change SIMD_VERSION_* values to be sequential intead of masks.
7297
7298         * simd-intrinsics.c (struct SimdIntrinsc): Squeese simd_version and simd_emit_mode into a single
7299         byte so we can have an aditional flags field without increasing struct size.
7300
7301         * simd-intrinsics.c (emit_intrinsics): Use the value of simd_version as a shift amount before checking
7302         against the simd_supported_versions bitmask.
7303
7304         * simd-intrinsics.c: Set SIMD_INTRINSIC_NAME_MAX to an appropriate value.
7305
7306 Mon Oct 13 10:58:10 CEST 2008 Paolo Molaro <lupus@ximian.com>
7307
7308         * mini.c: remove rawbuffer code (the only use here is unsafe because
7309         it takes locks during signal handling and the kernel now provides much
7310         better info in proc/pid/smaps these days).
7311
7312 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
7313
7314         * mini-amd64.c (mono_arch_output_basic_block): Fix the changes to
7315         OP_X86_PUSH_OBJ. Fixes #434620.
7316
7317         * objects.cs: Add a test.
7318         
7319 2008-10-12  Rodrigo Kumpera  <rkumpera@novell.com>
7320
7321         * basic-simd.cs: Remove PackWithUnsignedSaturation tests as it turns out
7322         that the packuswb/packusdw don't work with unsigned numbers for what
7323         would be negative numbers in signed format.
7324
7325         * cpu-x86.md: Add doubleword forms of many ops and packing ones.
7326         Fix the len of fconv_to_r8_x and xconv_r8_to_i4.
7327
7328         * mini-ops.h: Add doubleword forms of many ops and packing ones.
7329
7330         * mini-x86.c: Emit doubleword forms of many ops and packing ones.
7331
7332         * simd-intrinsics.c (SimdIntrinsc): Rename the flags field to simd_version.
7333
7334         * simd-intrinsics.c (vector4f_intrinsics): Use simd_version field for sse3 ops.
7335
7336         * simd-intrinsics.c (vector4u_intrinsics): Rename to vector4ui_intrinsics and
7337         add more ops.
7338
7339         * simd-intrinsics.c (simd_version_name): New function, returns the name of the
7340         version as the enum in mini.h.
7341
7342         * simd-intrinsics.c (emit_intrinsics): Instead of having a special emit mode
7343         for sse3 ops, check the simd_version field if present. This way the code
7344         works with all versions of sse.
7345
7346 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
7347
7348         * simd-intrinsics.c: Fixed intrinsic name typo.
7349
7350         * mini.h: Added missing simd exported function.
7351
7352         * basic-simd.cs: Added tests for Vector4ui.
7353         Fixed broken test for Vector16b.
7354
7355 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
7356
7357         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Increase
7358         the max length to 64.
7359
7360 2008-10-10  Mark Probst  <mark.probst@gmail.com>
7361
7362         * method-to-ir.c: Only do the fast virtual generic method call for
7363         non-wrapper methods.
7364
7365         * mini.h, mini-trampolines.c: The new generic virtual remoting
7366         trampoline handles virtual method calls via the vtable (as done by
7367         the fast virtual generic method calls) to remoting proxies.
7368
7369         * mini.c (mono_jit_create_remoting_trampoline): For generic
7370         methods reate a generic virtual remoting trampoline.
7371
7372         * mini-amd64.h: Enable fast virtual generic method calls again.
7373
7374 2008-10-10  Mark Probst  <mark.probst@gmail.com>
7375
7376         * mini-ppc.c: Use SP (r1), not frame_reg (which might be r31) to
7377         restore registers when doing tail calls.
7378
7379 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
7380
7381         * simd-intrinsics.c (emit_intrinsics): Vector4u was renamed to
7382         Vector4ui.
7383
7384 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
7385
7386         * basic-simd.cs: Add test for Vecto16b.PackWithUnsignedSaturation.
7387
7388 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
7389
7390         * simd-intrinsics.c (emit_intrinsics): Retrofit to new type names.
7391
7392 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
7393
7394         * basic-simd.cs: Retrofit for API changes.
7395
7396 2008-10-10  Mark Probst  <mark.probst@gmail.com>
7397
7398         * mini-ppc.c: Handle integer stack arguments for tail calls.
7399
7400 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
7401
7402         * optflags-def.h: Removed sse3 optimization.
7403
7404         * driver.c: Same.
7405
7406         * mini-x86.c (mono_arch_cpu_optimizazions): Remove detection of
7407         sse3.
7408
7409         * mini-x86.c: Added mono_arch_cpu_enumerate_simd_versions.
7410
7411         * mini.h: Added enumeration with simd versions.
7412
7413         * simd-intrinsics.c (emit_intrinsics): Use the new static var
7414         for detecting SSE3.
7415
7416         * simd-intrinsics.c: Added mono_simd_intrinsics_init.
7417
7418         * mini.c (mini_init): Call mono_simd_intrinsics_init.
7419
7420 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
7421
7422         * basic-simd.cs: Added tests for Vector8u and Vector16u.
7423
7424         * basic-simd.cs: Fixed test naming.
7425
7426 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
7427
7428         * mini-ops.h: Added ops for packed and saturated math, shifts
7429         and packing/unpacking.
7430
7431         * cpu-x86.md: Added descriptors for the above ops.
7432
7433         * mini-x86.c: Added code to emmit the above ops.
7434
7435         * simd-intrinsics.c: Added support for Vector16u and Vector8u.
7436
7437 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
7438
7439         * aot-compiler.c (compile_method): Enable AOT for generic code.
7440
7441         * ir-emit.h (NEW_DOMAINCONST): Use domainvars in AOT code as well.
7442
7443 Wed Oct 8 16:35:43 CEST 2008 Paolo Molaro <lupus@ximian.com>
7444
7445         * mini.c: add a workaround for a common screwup that ends up blamed
7446         to mono (other processes blocking signal delivery).
7447
7448 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
7449
7450         * method-to-ir.c (mono_method_to_ir2): Clear ins_flag on all code paths
7451         in the LDFLD/STFLD opcodes. Fixes #432673.
7452
7453         * iltests.il.in: Add a new test.
7454
7455 Tue Oct 7 19:59:07 CEST 2008 Paolo Molaro <lupus@ximian.com>
7456
7457         * mini-arm.c: attach the thread in unmanaged->managed transitions
7458         using delegates (bug #433148).
7459
7460 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
7461
7462        * basic-simd.cs: Use new ShuffleSel constants.
7463
7464 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
7465
7466         * driver.c (opt_sets): Added combinations of simd, sse2 and sse3.
7467
7468         * mini-x86.c (mono_arch_cpu_optimizazions): Detect sse3 and now
7469         only disable simd intrinsics if no sse2 is detected.
7470
7471         * optflags-def.h: Added sse3.
7472
7473         * simd-intrinsics.c: Avoid generated sse3 intrinsics if the optimization
7474         is disabled.
7475
7476 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
7477
7478         * aot-compiler.c (add_wrappers): Fix Delegate/MulticastDelegate classes
7479         when adding delegate-invoke wrappers.
7480
7481 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
7482
7483         * Makefile.am: Reenable the simd tests.
7484
7485 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
7486
7487         * mini-amd64.c (mono_arch_emit_outarg_vt) : In the ArgValuetypeAddrInIReg case,
7488           add a call to mono_call_inst_add_outarg_reg for the arg->dreg to make sure that no
7489           other vreg is allocated to that hreg.
7490
7491         Contributed under MIT/X11 license.
7492
7493 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
7494
7495         * Makefile.am: Disable the simd tests for now as Mono.Simd is not
7496         yet checked in.
7497
7498 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
7499
7500         * basic-simd.cs: New test suite for SIMD intrinsics.
7501
7502         * Makefile.am: Added new tests.
7503
7504 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
7505
7506         * cpu-x86.md: Added new instructions to handle float to int using SSE regs.
7507
7508         * mini-ops.h: Same.
7509
7510         * mini-x86.h: Enable mono_arch_decompose_opts if simd intrinsics are enabled.
7511
7512         * mini-x86.c (mono_arch_decompose_opts): Decompose float to int conversion
7513         using SSE2 aware opcodes.
7514
7515         * mini-x86.c (emit_float_to_int): Disable the SSE2 optimization if OPT_SIMD
7516         is enabled, this code path is only reachable if conversion ops are emmited after
7517         mono_method_to_ir.
7518
7519         * mini.h: Added MonoCompile::fconv_to_r8_x_var to hold the float to int var.
7520
7521         This optimization saves 6 bytes per conversion against the old version.
7522
7523 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
7524
7525         * aot-compiler.c (compile_method): Don't skip methods referencing 
7526         generic methods without a corresponding entry in token_info_hash, since
7527         encode_method_ref () can handle all generic methods now.
7528
7529         * method-to-ir.c (mono_save_token_info): Don't save the token info if a 
7530         generic context is set.
7531         
7532         * method-to-ir.c (mono_method_to_ir2): Put back a disable_aot for
7533         generic sharing of LDTOKEN.
7534
7535 2008-10-06  Mark Probst  <mark.probst@gmail.com>
7536
7537         * mini-amd64.h: Temporarily disabled fast virtual generic method
7538         calls because it breaks the System.Runtime.Remoting tests.
7539
7540 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
7541
7542         * aot-compiler.c (add_wrappers): Add delegate-invoke wrappers.
7543
7544         * method-to-ir.c (check_inline_called_method_name_limit): Return TRUE
7545         so inlining actually works.
7546         (check_inline_caller_method_name_limit): Ditto.
7547
7548 Mon Oct 6 11:04:38 CEST 2008 Paolo Molaro <lupus@ximian.com>
7549
7550         * mini-ppc.c: mono_arch_flush_icache () cast pointer using gsize for
7551         64 bit safety (from Olaf Hering and Andreas Farber).
7552
7553 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
7554         
7555         * mini-trampolines.c (mono_aot_trampoline): Delegate processing to
7556         mono_magic_trampoline () if aot_get_method_from_token () fails. Remove
7557         unused virtual call support code.
7558
7559         * aot-runtime.c (decode_method_ref): Add a 'no_aot_trampoline' out argument.
7560         
7561         * aot-runtime.c (mono_aot_get_method_from_vt_slot): Return NULL for methods
7562         which can't use aot trampolines.
7563         (decode_patch): Don't create aot trampolines for methods which can't use
7564         them.
7565
7566         * aot-compiler.c (encode_method_ref): Add a marker for methods which can't
7567         use aot trampolines.
7568
7569         * mini.h: Bump AOT image format version.
7570         
7571 2008-10-05  Zoltan Varga  <vargaz@gmail.com>
7572
7573         * method-to-ir.c (mono_method_to_ir2): Pass cil_method instead of cmethod
7574         to save_token_info () since cmethod is inflated for constrained calls.
7575
7576         * mini-<ARCH>.h mini-x86.c: Remove some unused defines.
7577
7578 2008-10-04  Andreas Farber  <andreas.faerber@web.de>
7579
7580         * Makefile.am: Add build rules for ppc64.
7581         This avoids the build failing at pedump with unresolved symbols
7582         due to lack of arch_sources. Instead it will now fail earlier
7583         due to lack of cpu-ppc64.md.
7584
7585         Contributed under MIT/X11 license.
7586
7587 2008-10-04  Mark Probst  <mark.probst@gmail.com>
7588
7589         * mini-amd64.c (mono_arch_emit_call): Support stack arguments for
7590         tail calls.
7591
7592         * iltests.il.in: Add test case for tail call with many arguments.
7593
7594 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
7595
7596         * method-to-ir.c (mono_method_to_ir2): Add an !cfg->compile_aot assert
7597         to the fast virtual generic method code until the aot case is fixed.
7598
7599 2008-10-03  Mark Probst  <mark.probst@gmail.com>
7600
7601         * mini-ppc.c, mini-ppc.h: Implement generic virtual method thunks.
7602
7603 2008-10-03  Mark Probst  <mark.probst@gmail.com>
7604
7605         * mini-amd64.c, mini-amd64.h: Implement generic virtual method
7606         thunks.
7607
7608 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
7609         
7610         * simd-intrinsics.c: Forgot to add this one.
7611
7612         * mini-codegen.c: Fix macro in case SIMD is not supported.
7613
7614 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
7615         
7616         This patch land initial JIT support for simd intrinsics.
7617
7618         * mini-x86.h: Added new define to make --enable_minimal work on x86.
7619
7620         * Makefile.am: Added simd-intrinsics.c
7621
7622         * simd-intrinsics.c: New file with simd instrinsic related
7623         code.
7624
7625         * cfold.c (mono_constant_fold_ins2): Fold XZERO.
7626
7627         * cpu-x86.md: Add simd related instructions.
7628
7629         * driver.c: Added MONO_OPT_SIMD to the default set of optimizations.
7630
7631         * driver.c: Added two new --regression variants.
7632
7633         * ir-emit.h (MONO_EMIT_NEW_VZERO): Emit XZERO if the type is a simd intrinsic.
7634
7635         * local-propagation.c (mono_local_cprop2): Eliminate useless XMOVE.
7636
7637         * local-propagation.c (mono_local_deadce): Use new macro MONO_IS_NON_FP_MOVE and
7638         extract some complicated logic to helper functions.
7639
7640         * method-to-ir.c (mono_type_to_regmove): Handle simd intrinsics.
7641
7642         * method-to-ir.c (mini_emit_inst_for_method): Emit simd intrinsics.
7643
7644         * method-to-ir.c (mono_handle_global_vregs): If a simd intrinsic was found, apply
7645         the specialized simplification pass.
7646
7647         * method-to-ir.c (mono_spill_global_vars): Use new macro.
7648
7649         * mini-codegen.c: Added SIMD constants to all regbanks arrays.
7650
7651         * mini-codegen.c: Added reg_bank_table_init to initialize the reg desc -> bank
7652         table.
7653
7654         * mini-codegen.c: Define a version of the reg_bank macro that uses desc_to_reg_type
7655         if MONO_ARCH_NEED_SIMD_BANK is defined.
7656
7657         * mini-ops.h: Added the new simd ops.
7658
7659         * mini-x86.c: Added mono_arch_xregname.
7660
7661         * mini-x86.c (mono_arch_cpu_optimizazions): Disable MONO_OPT_SIMD if SSE3 is not detected.
7662
7663         * mini-x86.c (mono_arch_output_basic_block): Add simd related opcodes.
7664
7665         * mini-x86.h: Define simd related MONO_ARCH macros.
7666
7667         * mini.c (mono_type_to_load_membase): Handle simd intrinsics.
7668
7669         * mini.c (mono_type_to_store_membase): Handle simd intrinsics.
7670
7671         * mini.h: Added new macros MONO_IS_NON_FP_MOVE, MONO_IS_REAL_MOVE, MONO_IS_ZERO and
7672         MONO_CLASS_IS_SIMD to deal with simd related IR.
7673
7674         * mini.h (MonoInst): Added spill_var to the backend union.
7675
7676         * mini.h (MonoCompile): Added uses_simd_intrinsics and iconv_raw_var.
7677
7678         * mini.h: Added forward declarations of the new simd fuctions.
7679
7680         * optflags-def.h: Added new optimization names SIMD.
7681
7682         * regalloc.c (mono_regstate_reset): Set next vreg to be the max value of the 3 reg banks.
7683
7684         * regalloc.h: Added support for working with 3 register banks.
7685
7686         * regalloc.h (MonoRegState): Added xsymbolic field if a third regbank is required.
7687
7688         * ssa2.c (mono_ssa_deadce2): Use new MONO_IS_ZERO macro.
7689
7690 Fri Oct 3 16:03:22 CEST 2008 Paolo Molaro <lupus@ximian.com>
7691
7692         * mini-exceptions.c: remove 64 bit related ifdef clutter.
7693
7694 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
7695
7696         * mini-exceptions.c (mono_handle_soft_stack_ovf): Unprotect two pages
7697         instead of one on 64 bit systems.
7698
7699         * method-to-ir.c: Remove unused includes.
7700
7701 2008-10-02  Zoltan Varga  <vargaz@gmail.com>
7702
7703         * aot-compiler.c (emit_exception_debug_info): Use jinfo->used_regs instead of
7704         cfg->used_int_regs, since the two are different on arm.
7705
7706 2008-10-02  Mark Probst  <mark.probst@gmail.com>
7707
7708         * method-to-ir.c, inssel.brg, mini-trampolines.c: Use
7709         mono_method_get_vtable_index() to get the vtable index.
7710
7711 2008-10-02  Mark Probst  <mark.probst@gmail.com>
7712
7713         * method-to-ir.c (mono_method_to_ir2): Don't create native
7714         wrappers for array methods, because they're never called (and if
7715         they were called they wouldn't work).
7716
7717 2008-10-02  Mark Probst  <mark.probst@gmail.com>
7718
7719         * method-to-ir.c (mono_method_to_ir2): Array methods are
7720         special-cased and must not be invoked indirectly via the (M)RGCTX
7721         when generic sharing is turned on.  Fixes #431413.
7722
7723 2008-10-01  Mark Probst  <mark.probst@gmail.com>
7724
7725         * method-to-ir.c: When generic sharing is active, call
7726         non-interface virtual generic methods via the standard trampoline.
7727
7728         * mini-trampolines.c: Handle virtual generic shared methods.
7729
7730         * mini.h, mini-x86.c, mini-x86.h: New argument for
7731         mono_arch_build_imt_thunk() which is non-NULL for virtual generic
7732         method thunks and which is the trampoline to call if the lookup
7733         fails.  Enable the virtual generic method thunk for x86.
7734
7735         * mini-amd64.c, mini-arm.c, mini-ia64.c, mini-sparc.c,
7736         mini-ppc.c (mono_arch_build_imt_thunk): Add the additional
7737         argument but assert that it's NULL, because these archs don't yet
7738         implement the virtual generic method thunk.  Changes in the IMT
7739         thunk data structures.
7740
7741 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
7742
7743         * aot-compiler.c (emit_globals): Avoid invalid characters in
7744         the static linking symbol.
7745
7746         * objects.cs: Add a test for the range check optimization. Fix warnings.
7747
7748         * branch-opts.c (mono_if_conversion): Add back the 'optimize range checks'
7749         optimization from the current JIT.
7750
7751         * method-to-ir.c (mini_emit_inst_for_method): Decompose String.Length
7752         later in decompose_array_access_opts () to allow more optimizations.
7753
7754         * method-to-ir.c (mono_handle_soft_float): Rename this to 
7755         mono_decompose_soft_float () for consistency.
7756
7757         * mini-ops.h: Fix arguments of OP_STRLEN.
7758
7759         * method-to-ir.c (save_cast_details): Extract the cast details saving code
7760         into a separate function.
7761         (reset_cast_details): Ditto.
7762         (handle_unbox): Save cast details. Fixes #431254.
7763
7764         * method-to-ir.c: Remove some obsolete FIXMEs.
7765
7766 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
7767
7768         * ir-emit.h (alloc_dreg): Write a warning before crashing.
7769
7770 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
7771
7772         * mini-codegen.c: More work on macros to make them
7773         ready for multiple regbanks.
7774
7775 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
7776
7777         * method-to.ir.c (mono_type_to_regmove): Remove static modifier.
7778
7779         * mini.h: Export mono_type_to_regmove. Fix signature of mono_regname_full.
7780
7781 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
7782
7783         * mini-codegen.c (mono_spillvar_offset): Proper support for
7784         multiple regbanks.
7785
7786 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
7787
7788         * mini-amd64.c (mono_arch_emit_epilog): Remove some duplicated code from
7789         the stack overflow changes.
7790
7791 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
7792
7793         * mini-codegen.c: Make all bank macros depend on reg_bank.
7794
7795         * mini-codegen.c (mono_local_regalloc): Make free mask
7796         initialization regbank aware.
7797
7798 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
7799
7800         * mini-codegen.c (mono_local_regalloc): Extract callee
7801         mask selection to a function and make it regbank aware.
7802
7803 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
7804
7805         * mini-codegen.c (mono_local_regalloc): Changed the cloberring
7806         code to deal with many regbanks.
7807
7808 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
7809
7810         * mini-codegen.c: More fp->regbank changes.
7811
7812 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
7813
7814         * mini-codegen.c: Change asserts to use MONO_NUM_REGBANKS instead
7815         of a hardcoded constant.
7816
7817 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
7818
7819         * method-to-ir.c (type_from_stack_type): Fix typo.
7820
7821 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
7822
7823         * mini-ia64.c (emit_move_return_value): Convert float return values to
7824         double.
7825
7826         * objects.cs: Add a new test.
7827         
7828         * mini-ia64.c (mono_arch_allocate_vars): Disable fp elimination for
7829         VARARG methods to fix an assert later.
7830
7831         * mini-mips.h mini-mips.c mini-ops.h cpu-mips.md: Update the mips back
7832         end so it at least compiles.
7833
7834 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
7835
7836         * method-to-ir.c (emit_optimized_ldloca_ir): Fix this.
7837
7838 2008-09-28  Rodrigo Kumpera  <rkumpera@novell.com>
7839
7840         * method-to-ir.c (mono_method_to_ir2): Extract the ldloca + initobj
7841         optimization to a new function (emit_optimized_ldloca_ir) and enable
7842         it for both ldloca and ldloca_s.
7843
7844 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
7845
7846         * method-to-ir.c (mono_method_to_ir2): Remove an unnecessary assert in the
7847         gshared CASTCLASS code.
7848
7849         * driver.c (mono_main): Add a workaround for shutdown crashes seen on
7850         amd64, where the libc stack unwinder encounters stack frames referring to
7851         native code in unmapped memory.
7852
7853         * method-to-ir.c (mini_emit_check_array_type): Add support for generic
7854         sharing.
7855
7856         * generics.cs: Add new test.
7857
7858 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
7859
7860         * mini-arm.h driver.c: Print the fp model when using --version on arm. Also,
7861         add a check that one of the ARM_FPU_ constants is defined.
7862
7863         * mini-exceptions.c (mono_handle_soft_stack_ovf): Really fix the build.
7864         
7865         * mini-exceptions.c: Fix build on non-altstack platforms.
7866
7867         * method-to-ir.c (mono_method_to_ir2): Fix aot support for the
7868         sharing of vtypes.
7869
7870         * ir-emit.h: Add a comment to NEW_PCONST.
7871
7872         * mini-exceptions.c (mono_altstack_restore_prot): Fix a warning.
7873
7874         * mini.h (MonoJitDomainInfo): Move some fields here from MonoDomain.
7875
7876         * mini.c aot-runtime.c method-to-ir.c driver.c mini-trampolines.c: Update
7877         after the changes to MonoJitDomainInfo.
7878
7879 2008-09-27  Mark Probst  <mark.probst@gmail.com>
7880
7881         * mini-ppc.c, tramp-ppc.c, mini-ppc.h: Implement generic code sharing.
7882
7883 2008-09-27  Mark Probst  <mark.probst@gmail.com>
7884
7885         * mini-ppc.c: Compiler warning fixes.
7886
7887 2008-09-27  Mark Probst  <mark.probst@gmail.com>
7888
7889         * mini-ppc.c: Special handling for 1/2 byte structs on Darwin only
7890         for pinvokes.
7891
7892 2008-09-27  Mark Probst  <mark.probst@gmail.com>
7893
7894         * exceptions-ppc.c, mini-ppc.h: Compile
7895         mono_arch_handle_altstack_exception() on Darwin, too.
7896
7897 2008-09-27  Mark Probst  <mark.probst@gmail.com>
7898
7899         * method-to-ir.c (mono_emit_rgctx_method_call_full): Must also
7900         work on archs which don't have generic sharing implemented, only
7901         without the vtable_arg.
7902
7903 2008-09-26  Mark Probst  <mark.probst@gmail.com>
7904
7905         * mini.c: Added comment explaining why delegate ctor icall
7906         wrappers are compiled.
7907
7908 2008-09-26  Mark Probst  <mark.probst@gmail.com>
7909
7910         * mini.c: Don't produce trampolines to delegate ctor icall
7911         wrappers but compile them upfront.
7912
7913 Fri Sep 26 17:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
7914
7915         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: amd64 support code for calling a
7916         runtime-set function when going back to managed code. Currently this
7917         is used to set back the protection on the soft ovf pages and/or to
7918         throw the stack overflow exception that happened in unmanaged code.
7919
7920 Fri Sep 26 16:46:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
7921
7922         * tramp-x86.c, mini-x86.h, mini-x86.c: x86 support code for calling a
7923         runtime-set function when going back to managed code. Currently this
7924         is used to set back the protection on the soft ovf pages and/or to
7925         throw the stack overflow exception that happened in unmanaged code.
7926
7927 Fri Sep 26 16:34:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
7928
7929         * mini.h, mini.c, mini-trampolines.c, mini-exceptions.c: added
7930         the support code for restoring stack protection after stack overflows
7931         that happen in unmanaged code. Don't set the exec permission on the
7932         soft overflow area.
7933
7934 2008-09-26  Zoltan Varga  <vargaz@gmail.com>
7935
7936         * mini-trampolines.c (mono_delegate_trampoline): Add wrappers even if
7937         delegate->method_ptr is set. Fixes #428054.
7938
7939 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
7940
7941         * tests.cs: Rename to ratests.cs.
7942
7943         * method-to-ir.c: Merge the emit_get_rgctx () calls into the 
7944         emit_get_rgctx_... functions.
7945
7946 2008-09-25  Mark Probst  <mark.probst@gmail.com>
7947
7948         * method-to-ir.c: Eliminated macro EMIT_GET_RGCTX.
7949
7950 2008-09-25  Mark Probst  <mark.probst@gmail.com>
7951
7952         * mini-trampolines.c (mono_magic_trampoline): Unwrap wrappers
7953         before asserting that method is sharable.
7954
7955 2008-09-25  Mark Probst  <mark.probst@gmail.com>
7956
7957         * method-to-ir.c, mini.c, jit-icalls.c: New function for checking
7958         whether method needs a static RGCTX wrapper used instead of
7959         complex conditions.
7960
7961         * generic-sharing.c, mini.h: A few functions moved to
7962         metadata/generic-sharing.c.
7963
7964 2008-09-25  Mark Probst  <mark.probst@gmail.com>
7965
7966         * method-to-ir.c, mini.c, mini-exceptions.c, mini-trampolines.c:
7967         Generic code sharing for value types, which essentially means
7968         treating value type methods like static methods.  The RGCTX is
7969         passed in the same way.
7970
7971 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
7972
7973         * method-to-ir.c (mono_method_to_ir2): Avoid an assert in the NEWOBJ
7974         opcode when creating multi-dimensional arrays of open types.
7975
7976         * generic-sharing.c (mono_method_check_context_used): Handle arrays of
7977         open generic types.
7978
7979         * generics.cs: Add a test.
7980
7981         * mini-codegen.c: Use macros everywhere for checking floats instead of == 'f'.
7982
7983 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
7984
7985         * mini.h (MonoCompile): Add 'disable_vreg_to_lvreg' flag.
7986
7987         * mini.c (mini_method_compile): Set it when running under the debugger. 
7988
7989         * method-to-ir.c (mono_handle_global_vregs): Disable global->local
7990         vreg optimization if the flag is set.
7991
7992         * driver.c (mono_main): Add --attach= option to pass options to
7993         the attach agent.
7994
7995         * mini.c (sigquit_signal_handler): Start the attach agent.
7996
7997         * ssapre.c: Disable this to save space since it is not yet ported to
7998         linear IR.
7999
8000         * regalloc2.c: Disable this to save space.
8001
8002         * mini.h (MonoJitStats): Remove unused analyze_stack_repeat.
8003
8004 Wed Sep 24 16:01:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
8005
8006         * decompose.c, method-to-ir.c, mini-codegen.c, regalloc2.c: make
8007         the -v option useful again.
8008
8009 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
8010
8011         * mini-amd64.c (mono_arch_output_basic_block): Add support for
8012         --break-at-bb.
8013
8014         * inssel.brg (mini_emit_castclass): Avoid the szarray!=array checks for
8015         arrays of arrays. Fixes #428406.
8016
8017         * method-to-ir.c (mini_emit_castclass): Ditto.
8018
8019         * objects.cs: Add new test.
8020         
8021 2008-09-23  Rodrigo Kumpera  <rkumpera@novell.com>
8022
8023         * method-to-ir.c (type_to_eval_stack_type): The code path for the new JIT
8024         was wrong at it choked against target_type_is_incompatible for byref types.
8025
8026 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
8027
8028         * mini-codegen.c: Use 'bank' macros instead of 'is_fp' macros in most 
8029         places.
8030
8031 Tue Sep 23 15:31:45 CEST 2008 Paolo Molaro <lupus@ximian.com>
8032
8033         * mini-exceptions.c: update a few more exceptions-related counters.
8034
8035 Tue Sep 23 15:28:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
8036
8037         * aot-runtime.c, method-to-ir.c, mini.c, mini-trampolines.c: use the
8038         new functions to allocate from persistent mempools.
8039
8040 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
8041
8042         * mini.h regalloc.h mini-codegen.c: Generalize the regalloc code to allow 
8043         multiple register banks in the future.
8044
8045         * mini-codegen.c (mono_local_regalloc): Fix a warning.
8046
8047 2008-09-22  Rodrigo Kumpera  <rkumpera@novell.com>
8048
8049         * mini.c (type_to_eval_stack_type): Remove duplicated function.
8050
8051         * method-to-ir.c (type_to_eval_stack_type): Make this version compatible with both JIT.
8052
8053         * mini.h: Export type_to_eval_stack_type.
8054
8055         This function was nearly duplicated in method-to-ir.c and mini.c. The difference
8056         is only ins->klass of byref types.
8057
8058 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
8059
8060         * method-to-ir.c (mini_emit_memset): Use a default alignment of 4.
8061         (mini_emit_memcpy2): Ditto.
8062
8063         * mini-amd64.c: Fix a warning.
8064
8065 2008-09-21  Mark Probst  <mark.probst@gmail.com>
8066
8067         * exceptions-ppc.c (mono_arch_get_call_filter): Fixed stack frame
8068         linking.
8069
8070 2008-09-19  Rodrigo Kumpera  <rkumpera@novell.com>
8071
8072         * method-to-ir.c: Extract stloc micro-optimization to a
8073         function and apply it to all cases.
8074
8075 2008-09-19  Mark Probst  <mark.probst@gmail.com>
8076
8077         * method-to-ir.c: Don't fail generic code sharing in cases we
8078         already support.
8079
8080 2008-09-18  Mark Probst  <mark.probst@gmail.com>
8081
8082         * mini-ppc.c: Handle structs in tailcalls on Darwin.
8083
8084 Tue Sep 16 21:07:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
8085
8086         * *.c, *.md, mini-ops.h: introduced relaxed_nop opcode for spin wait
8087         implementation.
8088
8089 Tue Sep 16 16:39:16 CEST 2008 Paolo Molaro <lupus@ximian.com>
8090
8091         * trace.c: make tracing more useful and correct, with per-thread
8092         id and indent info.
8093
8094 2008-09-15  Mark Probst  <mark.probst@gmail.com>
8095
8096         * mini-ppc.c (mono_arch_emit_call): Convert floats to R4 when
8097         doing a method call and the argument is an R4.
8098
8099 2008-09-14  Zoltan Varga  <vargaz@gmail.com>
8100
8101         * aot-compiler.c (add_wrappers): Do not generate runtime invoke wrappers for
8102         generic methods.
8103
8104 2008-09-13  Mark Probst  <mark.probst@gmail.com>
8105
8106         * mini-ppc.c: Convert result to single for OP_ICONV_TO_R4.
8107
8108 2008-09-12  Zoltan Varga  <vargaz@gmail.com>
8109
8110         * mini.h (MONO_IS_JUMP_TABLE): Handle GOT_ENTRY.
8111         (MONO_JUMP_TABLE_FROM_INS): Ditto.
8112
8113 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
8114
8115         * driver.c: Add a --agent argument (not supported yet) to load managed
8116         agent assemblies before loading the main assembly, similarly to how the
8117         Java VM handles agents.
8118
8119 2008-09-11  Mark Probst  <mark.probst@gmail.com>
8120
8121         * mini-ppc.c (mono_arch_allocate_vars): Use arch-independent
8122         function to do stack layout of local variables.
8123
8124 2008-09-11  Mark Probst  <mark.probst@gmail.com>
8125
8126         * mini-ppc.c (calculate_sizes): Bugfix in sigcookie position
8127         calculation.
8128
8129 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
8130
8131         * method-to-ir.c ssa2.c mini.c mini-amd64.c decompose.c ssa.c abcremoval.c
8132         abcremoval2.c branch-opts.c driver.c dominators.c: Disable parts of the
8133         JIT if DISABLE_JIT is defined.
8134
8135         * Makefile.am: Avoid compiling/linking in inssel.c if DISABLE_JIT is
8136         defined.
8137
8138 2008-09-10  Mark Probst  <mark.probst@gmail.com>
8139
8140         * iltests.il.in: Disable the fconv test on PPC (the result is
8141         undefined according to ECMA).
8142
8143 2008-09-10  Mark Probst  <mark.probst@gmail.com>
8144
8145         * iltests.il.in: Enable tail call tests for PPC.
8146
8147         * mini.h: Add variable for storing incoming valuetype argument
8148         addresses for tail calls.
8149
8150         * mini-ppc.c: Implement valuetype arguments and return values for
8151         tailcalls on Linux.
8152
8153 2008-09-09  Mark Probst  <mark.probst@gmail.com>
8154
8155         * mini-ppc.c: Partially implement tail calls (struct arguments and
8156         return values not supported).
8157
8158         * method-to-ir.c: Enable tail calls on PPC.
8159
8160 2008-09-08  Zoltan Varga  <vargaz@gmail.com>
8161
8162         * aot-compiler.c (emit_wrapper_info): Omit the klass name from
8163         runtime-invoke wrappers to work around the problem of them getting
8164         assigned to a random class.
8165
8166         * aot-runtime.c (mono_aot_get_method): Ditto.
8167         
8168 2008-09-07  Zoltan Varga  <vargaz@gmail.com>
8169
8170         * mini-exceptions.c mini-mips.h mini-s390.h exceptions-mips.c: Kill
8171         the CUSTOM_EXCEPTION_HANDLING and CUSTOM_STACK_WALK defines.
8172
8173 2008-09-07  Mark Probst  <mark.probst@gmail.com>
8174
8175         * method-to-ir.c (mono_method_to_ir2): Disable tail calls for PPC
8176         until they're implemented properly.
8177
8178         * exceptions-ppc.c: Use arch-independent exception-handling code
8179         instead of custom one.
8180
8181         * exceptions-ppc.c, mini-ppc.c, mini-ppc.h: Bug fixes and changes
8182         for Linear IR.
8183
8184         * tramp-ppc.c, mini-ppc.c: Fixed warnings.
8185
8186         * decompose.c, aot-runtime.c, aot-compiler.c: PPC code also
8187         applies when __powerpc__ is defined.
8188
8189 2008-09-06  Zoltan Varga  <vargaz@gmail.com>
8190
8191         * aot-runtime.c (mono_aot_get_method): Add another cache mapping wrapper
8192         methods to their code to avoid computing the full name of wrappers and
8193         doing a lookup in a string hash table.
8194
8195 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
8196
8197         * method-to-ir.c: Remove the CHECK_BBLOCK () stuff it is not needed since
8198         we identify bblocks before method_to_ir () is ran.
8199
8200         * branch-opts.c (mono_optimize_branches): Avoid nullifying the exit bblock.
8201         Also avoid optimizing branches pointing to themselves.
8202
8203         * mini.c (mini_method_compile): Ditto. Fixes #422947.
8204
8205 2008-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
8206
8207         * driver.c (mono_main): Enable the new verifier under core-clr and cas.
8208
8209 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
8210
8211         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Implement this.
8212         (mono_arch_patch_plt_entry): Fix the calculation of the jump_entry.
8213         (mono_arch_get_nullified_class_init_trampoline): Return 'code' instead of
8214         'buf'.
8215
8216         * aot-compiler.c (emit_plt): Fix the arm plt entries, previously they all 
8217         jumped to the same entry in plt_jump_table.
8218
8219 2008-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
8220
8221         * method-to-ir.c (initialize_array_data): Handle field with RVA from
8222         dynamic images.
8223
8224 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
8225
8226         * method-to-ir.c (handle_isinst): Do the assignment at the beginning, so the
8227         other assignment can be if converted. Saves 1.5% on corlib size and fixes
8228         #421807.
8229
8230 2008-08-29  Geoff Norton  <gnorton@novell.com>
8231
8232         * aot-compiler.c: The Mach/ARM compiler doesn't understand the bss
8233         segment, and doesn't properly handle .space as .text.  Fixes
8234         AOT Mach/ARM
8235
8236 2008-08-29  Geoff Norton  <gnorton@novell.com>
8237
8238         * mini.c: Disable the mach exception handler when running on 
8239         ARM
8240
8241 2008-08-29  Geoff Norton  <gnorton@novell.com>
8242
8243         * aot-compiler.c: Patch from Renaldas Zioma to properly register 
8244         globals on Darwin/ARM
8245
8246 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
8247
8248         * mini.c: Avoid not initializing the runtime when doing AOT compilation, 
8249         since too many things depend on it. Instead, call 
8250         mono_runtime_set_no_exec ().
8251         
8252         * mini.c (mono_create_tls_get): Call mono_alloc_preg (cfg) when running with
8253         the new JIT.
8254
8255         * aot-compiler.c: Add an 'asm-only' AOT option.
8256
8257         * mini.c: Avoid initializing the runtime when doing AOT compilation.
8258                 
8259         * aot-compiler.c (compile_method): Disable gshared support for now as it
8260         doesn't yet work.
8261
8262 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
8263
8264         * mini-amd64.h : Fix a compiler warning.
8265
8266         * exceptions-amd64.c (mono_arch_unwindinfo_install_unwind_info) :
8267           Changed to use a callback function to retrieve the unwind info.
8268           This avoids problems observed when code blocks were removed by
8269           unloading an app domain.
8270
8271         * mini-amd64.c (mono_arch_cpu_optimizazions) : Removing the peephole 
8272           and branch excludes for Winx64.  The fix in exceptions-amd64.c allows them
8273           to work properly.
8274
8275         Contributed under MIT/X11 license.
8276
8277 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
8278
8279         * mini-amd64.c (mono_arch_output_basic_block) : Fix the OP_X86_PUSH_OBJ
8280           case to keep the stack aligned to 8.
8281
8282         Contributed under MIT/X11 license.
8283
8284 2008-08-26  Zoltan Varga  <vargaz@gmail.com>
8285
8286         * aot-runtime.c (mono_aot_get_method): Add a cache for wrapper names to
8287         avoid repeated linear searches.
8288
8289 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
8290
8291         * aot-compiler.c (add_wrappers): Avoid calling get_runtime_invoke with
8292         methods it can't handle.
8293         
8294         * aot-compiler.c (add_method): Avoid adding a method twice.
8295         (add_wrappers): Add runtime invoke wrappers for all methods.
8296
8297         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): New
8298         function to create an aot-compatible version of this trampoline.
8299
8300         * aot-compiler.c aot-runtime.c: Add support for AOT rgctx fetch trampolines.
8301
8302 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
8303
8304         * aot-compiler.c (compile_method): Skip wrappers of generic icalls.
8305
8306         * method-to-ir.c (mono_method_to_ir2): Replace an assert in UNBOX_ANY
8307         with a generic sharing failure.
8308
8309         * aot-compiler.c (emit_klass_info): Call mono_class_get_nested_types ().
8310
8311         * method-to-ir.c (mono_method_to_ir2): Rethrow the correct exception in
8312         CEE_RETHROW. Fixes #419634.
8313
8314         * mini.c (mono_method_to_ir): Ditto.
8315
8316         * exceptions.cs: Add a new test.
8317         
8318         * generic-sharing.c (mini_type_stack_size): Always pass TRUE as allow_open
8319         to mono_type_stack_size_internal () since some callers might not pass in
8320         an rgctx.
8321
8322         * mini-x86.c (mono_arch_emit_prolog): Store the rgctx before calling
8323         instrument_prolog. Fixes #419878.
8324
8325         * mini.c (mono_compile_create_var_for_vreg): Make the lvars representing
8326         doubles in soft float mode volatile.
8327
8328 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
8329
8330         * ir-emit.h (NEW_ARGSTORE): Use cfg->args and cfg->arg_types to fix the build.
8331
8332         * method-to-ir.c (mono_save_args): Use ARGSTORE instead of TEMPSTORE
8333         to handle soft float correctly.
8334
8335         * tramp-arm.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Implement
8336         the fast path.
8337
8338         * mini.h (struct MonoCallInst): Add dynamic_imt_arg boolean field.
8339
8340         * exceptions-arm.c (mono_arch_find_jit_info): Set ctx->regs [ARMREG_R11]
8341         to sp, since the generics catch code requires it.
8342
8343         * mini-arm.h (MONO_ARCH_VTABLE_REG): Use R0 for this to avoid needless
8344         copying.
8345
8346         * method-to-ir.c (emit_imt_argument): Pass imt_arg to 
8347         mono_arch_emit_imt_argument ().
8348
8349         * mini-<ARCH>.c (mono_arch_emit_imt_argument): Add an 'imt_arg' argument.
8350
8351         * mini-arm.c tramp-arm.c: Generic sharing updates.
8352
8353 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
8354
8355         * mini-arm.c: Fix the arm build.
8356
8357         * generic-sharing.c (mini_type_get_underlying_type): New helper function
8358         handling enums, generic instances and generic sharing.
8359         (mini_type_stack_size_full): Ditto.
8360
8361         * mini-amd64.c mini-x86.c mini-arm.c: Use the new functions.
8362         
8363         * mini.h (struct): Add 'uses_rgctx_reg' and 'uses_vtable_reg' fields.
8364
8365         * method-to-ir.c: Set the new fields when using RGCTX_REG/VTABLE_REG.
8366
8367         * tramp-arm.c: Implement the rgctx fetch and the generic class init 
8368         trampolines.
8369
8370         * mini-arm.c: Various small generic sharing changes.
8371
8372         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline): Implement
8373         this for x86.
8374         (mono_arch_create_trampoline_code): Remove most of the GENERIC_CLASS_INIT
8375         custom code.
8376
8377         * mini-trampolines.c (mono_create_generic_class_init_trampoline): New
8378         helper function to return a generic class init trampoline.
8379
8380         * method-to-ir.c mini.c: Use it.
8381         
8382         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline): New
8383         arch-specfic function to return a generic class init trampoline.
8384
8385         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Remove most of
8386         the GENERIC_CLASS_INIT custom code.
8387
8388         * method-to-ir.c (mono_method_to_ir2): If RGCTX_REG is not defined, that is
8389         a fatal error, not a sharing failure.
8390
8391         * tramp-<ARCH>.c (mono_arch_get_rgctx_lazy_fetch_offset): Removed, no longer
8392         needed.
8393
8394         * mini-trampolines.c (mono_rgctx_lazy_fetch_trampoline): Get the additional
8395         trampoline argument from MONO_ARCH_VTABLE_REG.
8396
8397         * tramp-x86.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
8398         order of the arguments to the C trampoline: pass 'slot' as the trampoline
8399         argument, and pass the vtable in VTABLE_REG.
8400
8401         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
8402         order of the arguments to the C trampoline: pass 'slot' as the trampoline
8403         argument, and pass the vtable in VTABLE_REG.
8404         (mono_arch_create_trampoline_code_full): Remove some special casing for
8405         the rgctx fetch trampoline.
8406
8407         * mini.c (mono_method_to_ir): Fix the STELEM_ANY+null value optimization.
8408         Fixes #419273.
8409
8410         * iltests.il: Add a test for it.
8411
8412 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
8413
8414         * aot-compiler.c (compile_method): Enable AOT support for generics sharing.
8415
8416         * method-to-ir.c (mono_method_to_ir2): Remove an aot restriction which is
8417         no longer needed.
8418
8419         * mini-trampolines.c (mono_magic_trampoline): Add a sync wrapper here,
8420         use mono_jit_info_table_find () to avoid recursion.
8421         (mono_delegate_trampoline): Add a sync wrapper here.
8422
8423         * method-to-ir.c (mono_method_to_ir2): Don't call mono_ldftn_nosyc
8424         here.
8425
8426         * mini.c (mono_method_to_ir): Ditto.
8427         
8428         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Remove
8429         add_sync_wrapper argument. Don't add a sync wrapper here.
8430         (mono_create_jump_trampoline): Don't add a sync wrapper here.
8431
8432         * jit-icalls.c (mono_ldftn_nosync): Removed, no longer needed.
8433         
8434 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
8435
8436         * exceptions-amd64.c (seh_handler):  For Winx64 adding missing copy 
8437           of nonvolatile registers back from MonoContext to CONTEXT.
8438
8439         Contributed under MIT/X11 license.
8440
8441 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
8442
8443         * mini-amd64.c (mono_arch_get_delegate_invoke_impl):  When shifting the
8444           arguments on Winx64 there are only 4 argument registers.  For this
8445           logic to work the last argument must be pulled from the stack.  
8446
8447         Contributed under MIT/X11 license.
8448
8449 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
8450
8451         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
8452
8453         * aot-runtime.c aot-compiler.c patch-info.h mini.c: Get rid of
8454         MONO_PATCH_INFO_WRAPPER, encode/decode wrapper methods like the others in
8455         encode/decode_method_ref ().
8456
8457         * aot-compiler.c (encode_patch): Handle STATIC_RGCTX_INVOKE wrappers.
8458
8459         * aot-runtime.c (decode_patch): Ditto.  
8460
8461         * mini.c (mono_resolve_patch_target): Handle RGCTX_FETCH sub-patches of type
8462         MONO_PATCH_INFO_METHOD.
8463
8464         * aot-runtime.c (decode_exception_debug_info): Decode the contents of
8465         MonoGenericJitInfo.
8466
8467         * aot-compiler.c (emit_exception_debug_info): Emit the contents of
8468         MonoGenericJitInfo.
8469
8470         * method-to-ir.c (emit_imt_argument): Fix AOT+gshared support.
8471
8472         * mini-amd64.c (add_valuetype): Use a dummy gsctx if we didn't receive
8473         one from the caller.
8474
8475         * aot-runtime.c (decode_generic_inst): New function to decode and
8476         return a interned generic inst.
8477         (decode_klass_ref): Use it.
8478         (decode_method_ref): Ditto.
8479
8480         * aot-compiler.c (emit_exception_debug_info): Save 
8481         jinfo->has_generic_jit_info too.
8482
8483 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
8484
8485         * mini-ia64.c (mono_arch_output_basic_block): Add OP_FCONV_TO_I.
8486
8487         * iltests.il.in: Add a test for fconv_to_i.
8488
8489         * liveness.c: Disable the liveness2 pass for now to save space.
8490
8491         * regalloc2.c: Include mempool-internals.h to fix warnings.
8492
8493         * aot-compiler.c (encode_method_ref): Encode the context of generic
8494         instance methods.
8495
8496         * aot-runtime.c (decode_method_ref): Inflate generic methods using
8497         the context saved in the aot file.
8498
8499         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
8500
8501         * mini-x86.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
8502
8503         * method-to-ir.c (mono_method_to_ir2): When using CEE_JMP, make arguments
8504         volatile so they won't be optimized away.
8505
8506 2008-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
8507
8508         * ssa.c:
8509         * ssa2.c:
8510         * mini.c:
8511         * regalloc2.c:
8512         * dominators.c: Remove duplicated functions that now are in
8513         mempool-internals.h.
8514
8515 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
8516
8517         * aot-compiler.c: Fix warnings.
8518
8519         * aot-runtime.c (decode_klass_ref): Add support for VARs/MVARs.
8520
8521         * aot-compiler.c (encode_klass_ref): Encode is_method too for VARs/MVARs.
8522
8523         * method-to-ir.c (emit_get_rgctx_method): Use MONO_PATCH_INFO_METHODCONST
8524         as the patch type.
8525
8526         * mini.c (mono_resolve_patch_target): Ditto.
8527         
8528         * aot-compiler.c (encode_patch): Add support for RGCTX_FETCH.
8529         (encode_klass_ref): Add support for encoding VARs/MVARs.
8530
8531         * mini.c (mono_patch_info_dup_mp): Handle RGCTX_FETCH.
8532
8533         * aot-runtime.c (decode_patch_info): Rename to 'decode_patch'. Split out
8534         the handling of the got entries into a separate 'decode_got_entry' function.
8535         Add support for RGCTX_FETCH.
8536
8537         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RDI since RAX is
8538         clobbered by the trampoline code.
8539
8540         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RAX since that is
8541         not clobbered by the indirect calling code.
8542
8543 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
8544
8545         * mini-x86.c (mono_arch_patch_code): Handle RGCTX_FETCH/GENERIC_CLASS_INIT
8546         to fix the build.
8547
8548 2008-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
8549
8550         * method-to-ir.c (mono_emit_method_call_full): Alloc the constructor
8551         signature using the compilation mempool otherwise we would leak it.
8552
8553 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
8554
8555         * method-to-ir.c (mono_method_to_ir2): Emit the generic class inits using
8556         mono_emit_abs_call ().
8557
8558         * patch-info.h: Add GENERIC_CLASS_INIT.
8559
8560         * mini.c (mono_resolve_patch_target): Handle GENERIC_CLASS_INIT.
8561
8562         * mini-amd64.c (emit_call_body): Treat abs calls which have a patch info
8563         as their target as a near call.
8564
8565         * mini.c (mono_codegen): Handle patches stored in cfg->abs_patches in the
8566         ABS handling code.
8567         (mono_resolve_patch_target): Add support for MONO_PATCH_INFO_RGCTX_FETCH.
8568
8569         * method-to-ir.c (mono_emit_abs_call): New helper function which emits a
8570         call to a runtime function described by a patch.
8571
8572         * method-to-ir.c: Emit rgctx entry fetches and class init trampolines using
8573         mono_emit_abs_call, this has the advantage that the ABS handling code in
8574         mono_codegen () can handle them both, and can handle other stuff in the
8575         future without additional code.
8576
8577         * mini.h (struct MonoJumpInfoRgctxEntry): New structure describing an rgctx
8578         entry.
8579         (MonoCompile): Add 'abs_patches' hashtable, which contains patches describing
8580         abs addresses.
8581
8582         * mini.h: Add missing bblock related prototypes.
8583
8584         * mini.h (MonoCompile): Remove unused reverse_inst_list and
8585         reverse_inst_list_len fields.
8586
8587         * mini.c: Refactor this file a bit by moving branch optimizations to 
8588         branch-opts.c.
8589
8590         * method-to-ir.c: Merge generic sharing changes missed earlier.
8591
8592         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST.
8593
8594         * aot-runtime.c (decode_patch_info): Refactor the code dealing with the
8595         shared patches. Process METHODCONST as a shared patch.
8596
8597         * liveness.c (mono_analyze_liveness): Disable the liveness2 code for now
8598         as it crashes on the 2.0 mscorlib.
8599
8600         * aot-compiler.c (is_shared_got_patch): Revert the last change as it seems
8601         to cause crashes.
8602         
8603         * aot-compiler.c: Use is_plt_patch () in a few additional places.
8604         (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST, which is generated
8605         by IMT.
8606
8607         * aot-compiler.c: Reorganize the got handling code to be a bit more
8608         understandable.
8609
8610 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
8611
8612         * aot-compiler.c: Make the patch_to_plt_offset hash table use 
8613         mono_patch_info_equals/hash, and use it to massively simplify
8614         get_plt_index ().
8615
8616         * mini.c (mono_patch_info_hash): Simplify this and add support for
8617         more patch types.
8618
8619         * patch-info.h: Rename RGCTX_LAZY_FETCH_TRAMPOLINE to just RGCTX_FETCH.
8620
8621         * mini.c aot-compiler.c aot-runtime.c: Revert the LAZY_FETCH_TRAMPOLINE
8622         handling code, since an offset is not enough to identify a trampoline.
8623
8624         * method-to-ir.c: Remove some g_assert (!cfg->compile_aot) lines.
8625
8626 2008-08-17  Mark Probst  <mark.probst@gmail.com>
8627
8628         * mini.c (mono_op_imm_to_op): Add case for OP_IMUL_IMM.
8629
8630         * method-to-ir.c (mono_method_to_ir2): Decompose OP_CKFINITE.
8631
8632         * mini-ops.h: Argument and result types for OVF_CARRY ops.
8633
8634         * decompose.c: PPC decompositions for various ops.
8635
8636         * cpu-ppc.md, inssel-ppc.brg, mini-ppc.c: PPC changes for Linear IL.
8637
8638 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
8639
8640         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Make this
8641         call the generic trampoline code using a call, instead of a jump, to
8642         remove some special casing from the generic trampoline code.
8643
8644         * mini.c (mono_resolve_patch_target): Handle LAZY_FETCH_TRAMPOLINE.
8645         (mono_codegen): Ditto.
8646
8647         * aot-compiler.c aot-runtime.c: Ditto.
8648
8649         * patch-info.h: Add MONO_PATCH_INFO_RGCTX_LAZY_FETCH_TRAMPOLINE.
8650
8651         * mini-trampolines.c (mono_find_rgctx_lazy_fetch_trampoline_by_addr): New
8652         helper function to find the offset corresponding to a lazy fetch trampoline.
8653
8654         * mini.h (MonoCompile): Add 'orig_method' field to hold the original method
8655         when doing generic sharing.
8656
8657         * aot-compiler.c: Use cfg->orig_method instead of cfg->method in a lot of
8658         places.
8659         
8660         * mini.c (mono_create_rgctx_lazy_fetch_trampoline): Move this to
8661         mini-trampolines.c to be with the other trampoline creation functions.
8662
8663         * method-to-ir.c (mono_emit_method_call): Remove the 'signature' argument
8664         as it is equal to method->signature in most cases, add a 
8665         mono_emit_method_call_full variant which takes a signature and an imt
8666         argument as well.
8667
8668 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
8669
8670         * jit-icalls.c (mono_helper_compile_generic_method): Don't pass the context
8671         to this function, since it could be computed easily from the method 
8672         argument.
8673         (mono_helper_compile_generic_method_wo_context): Removed, not needed any
8674         more.
8675
8676         * method-to-ir.c mini.c: Remove references to 
8677         compile_generic_method_wo_context.
8678
8679         * method-to-ir.c (mono_method_to_ir2): Enable AOT for virtual
8680         generic method calls.
8681         
8682         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_1 for 1
8683         dimensional non-szarrays.
8684
8685         * mini.c (mini_init): Register mono_array_new_1.
8686
8687         * jit-icalls.c (mono_array_new_1): New jit icall.
8688
8689         * mini-trampolines.c (mono_magic_trampoline): For jumps, patch the GOT entries
8690         pointing to the method.
8691
8692         * aot-runtime.c (mono_aot_get_method_from_token): Register GOT slots holding
8693         method addresses belonging to METHOD_JUMP patches in the 
8694         jump_target_got_slot_hash.
8695         (mono_aot_load_method): Ditto.
8696
8697         * aot-compiler.c (compile_method): Allow AOT compilation of methods with
8698         METHOD_JUMP patches.
8699
8700         * mini.c (mini_create_jit_domain_info): New helper function which 
8701         initializes/frees domain->runtime_info.
8702         (mini_free_jit_domain_info): Ditto.
8703         (mini_init): Install the domain hook functions with the runtime.
8704
8705         * mini.h (MonoJitDomainInfo): New structure which stores the domain specific
8706         information maintained by the JIT.
8707
8708         * mini.c (mono_resolve_patch_target): For PATCH_INFO_METHOD_JUMP, move the
8709         insertion into jump_table_hash into mono_codegen (), also implement proper
8710         locking.
8711
8712         * method-to-ir.c (mono_method_to_ir2): Don't disable AOT for CEE_JMP and
8713         tail calls, it is already done by the aot code.
8714         
8715         * method-to-ir.c (mono_method_to_ir2): Handle CEE_JMP using the tail call
8716         mechanism on amd64.
8717
8718         * iltests.il.in: Make the jmp test a bit more complex.
8719
8720         * aot-compiler.c (encode_method_ref): Handle references to normal methods of
8721         generic instances which doesn't have a token.
8722
8723         * aot-runtime.c (decode_method_ref): Ditto.
8724         
8725         * method-to-ir.c (handle_unbox_nullable): Don't disable AOT, the aot code
8726         can handle this case now.
8727         (handle_box): Ditto.
8728
8729 2008-08-15  Geoff Norton  <gnorton@novell.com>
8730
8731         * mini-x86.c: Fix alignment on Apple x86, and re-disable the alignment
8732         debugging check.
8733
8734 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
8735
8736         * method-to-ir.c (mono_method_to_ir2): Allow AOT compilation of methods
8737         calling generic methods.
8738
8739         * aot-compiler.c (encode_patch): Handle MONO_PATCH_INFO_METHOD_RGCTX.
8740
8741         * aot-runtime.c (decode_patch_info): Ditto.
8742
8743         * mini.c (mono_resolve_patch_target): Ditto.
8744         
8745         * patch-info.h: Add METHOD_RGCTX.
8746
8747         * mini-amd64.c (mono_arch_output_basic_block): Optimize LOCALLOC_IMM.
8748
8749 2008-08-14  Zoltan Varga  <vargaz@gmail.com>
8750
8751         * mini-amd64.c (mono_arch_emit_call): Nullify call->vret_var if returning
8752         arguments in registers.
8753
8754         * decompose.c (mono_decompose_vtype_opts): Create a var for the vreg in
8755         OP_VCALL too, don't depend on OP_OUTARG_VTRETADDR doing it.
8756
8757         * mini.c (mini_method_compile): Abort aot compilation for generic
8758         methods if generic sharing is disabled.
8759         
8760         * mini.c (mono_method_to_ir): Disable AOT for virtual calls requiring
8761         an mrgctx.
8762
8763         * method-to-ir.c (mono_method_to_ir2): Disable AOT for virtual calls 
8764         requiring an mrgctx.
8765
8766         * decompose.c (mono_decompose_vtype_opts): Emit the correct sized
8767         store instructions when converting a vcall to a normal call.
8768
8769         * mini.c (sigprof_signal_handler): Call mono_find_jit_info instead of
8770         mono_arch_find_jit_info.
8771
8772 2008-08-13  Zoltan Varga  <vargaz@gmail.com>
8773
8774         * method-to-ir.c (check_inline_called_method_name_limit): Optimize this to
8775         avoid calling mono_method_full_name () for every method even if the
8776         env var is not set.
8777         (check_inline_caller_method_name_limit): Ditto.
8778
8779 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
8780
8781         * driver.c (main_thread_handler): Allow AOT compilation of multiple 
8782         assemblies in one run.
8783
8784         * aot-compiler.c (mono_compile_assembly): Only print out a count of
8785         skipped methods if it is not 0.
8786
8787         * Makefile.am (aotcheck): AOT compile all test assemblies in one run.
8788
8789 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
8790
8791         * mini.c (mono_codegen):  Changing a preprocessor check from WIN64 to
8792           MONO_ARCH_HAVE_UNWIND_TABLE.
8793
8794         Contributed under MIT/X11 license.
8795
8796 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
8797
8798         * mini-amd64.c (mono_arch_cpu_optimizazions):  Remove peephole and branch
8799           from default optimizaton list on Winx64.
8800
8801         * mini-amd64.c (emit_tls_get):  Added Winx64 specific implementation for GetTLS.
8802
8803         * mini-amd64.c (mono_arch_emit_prolog):  Adding an offset on Winx64 to get
8804           the LMF from the MonoJitTlsData structure.
8805
8806         * mini-amd64.c (mono_arch_setup_jit_tls_data):  Added Winx64 implementation.
8807
8808         Contributed under MIT/X11 license.
8809
8810 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
8811
8812         * mini.c (sigsegv_signal_handler): Fix the build.
8813
8814         * mini-amd64.c (emit_call_body): Use image->aot_module instead of 
8815         assembly->aot_module.
8816
8817         * aot-runtime.c: Use image->aot_module instead of searching in the aot_modules
8818         hash table. This simplifies and speeds up a lot of code, and fixes support
8819         for .netmodules.
8820
8821         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes if the thread is not registered
8822         with the runtime.
8823
8824         * mini-exceptions.c: Ditto.
8825         
8826         * exceptions-*c.c (mono_arch_find_jit_info): Remove unused 'trace' and
8827         'native_offset' argument, since these are computed in the 
8828         mono_find_jit_info () function.
8829
8830         * mini-exceptions.c (mono_find_jit_info): Make this non-static, as it
8831         is used by exceptions-ppc.c.
8832
8833         * exceptions-ppc.c: Call mono_find_jit_info () instead of 
8834         mono_arch_find_jit_info ().
8835         
8836         * mini-ppc.h exceptions-ppc.c mini-mips.h mini-mips.c exceptions-mips.c
8837         mini-exceptions.c: Get rid of the CUSTOM_STACK_WALK stuff, use the
8838         generic code in mini-exceptions.c.
8839
8840 2008-08-11  Zoltan Varga  <vargaz@gmail.com>
8841
8842         * mini-ppc.c (mono_arch_flush_register_windows): Add this for ppc.
8843
8844         * aot-runtime.c (mono_aot_get_plt_info_offset): Fix a warning.
8845         
8846         * aot-runtime.c (mono_aot_get_method): Avoid doing all the loading inside
8847         the aot lock, to avoid deadlocks when mono_aot_get_class_from_name () is
8848         called while holding the loader lock. Fixes #415608.
8849         (mono_aot_get_method_from_token_inner): Ditto.
8850
8851 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
8852
8853         * exceptions-ppc.c (mono_jit_walk_stack): Use MONO_INIT_CONTEXT_FROM_CURRENT
8854         to reduce differences between this and the generic implementation in
8855         mini-exceptions.c.
8856         (ves_icall_get_frame_info): Ditto.
8857
8858         * mini-ppc.h (MONO_INIT_CONTEXT_FROM_CURRENT): Define this for ppc too.
8859
8860         * mini-exceptions.c (mono_exceptions_init): Remove an #ifdef which is no
8861         longer neccesarry.
8862
8863         * exceptions-ppc.c (arch_get_call_filter): Rename this to 
8864         mono_arch_get_call_filter () and make it non-static, for consistency with the
8865         other architectures.
8866
8867 2008-08-09  Rodrigo Kumpera  <rkumpera@novell.com>
8868
8869         * mini.c:
8870         * local-propagation.c:
8871         * mini-x86.c: Correct the name of arch defines.
8872
8873 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
8874
8875         * method-to-ir.c (mono_op_to_op_imm_noemul): Correct name of
8876         NO_EMULATE_LONG_SHIFT_OPS define.
8877
8878 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
8879
8880         * method-to-ir.c (mono_method_to_ir2): Remove some code from CEE_MONO_LDPTR
8881         now that aot-ed icall wrappers use CEE_MONO_ICALL_ADDR.
8882
8883         * aot-compiler.c aot-runtime.c: Add support for static aot compilation.
8884         MACH fixes. Merged from the 2.0 branch.
8885
8886         * method-to-ir.c (mono_method_to_ir2): Handle CEE_MONO_ICALL_ADDR.
8887
8888         * mini.c (mono_resolve_patch_target): Error out if an icall is not found.
8889         (mono_method_to_ir): Handle CEE_MONO_ICALL_ADDR.
8890
8891         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Add AOT support.
8892
8893         * method-to-ir.c mini.c driver.c aot-compiler.c: Update after
8894         mono_marshal_get_native_wrapper () signature changes.
8895
8896 2008-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
8897
8898         * jit-icalls.c (mono_fconv_ovf_u8): Work around soft-float double to long
8899         conversion bug under arm.
8900
8901 2008-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
8902
8903         * cpu-arm.md: Increase long_conv_to_ovf_i4_2 max length to 36.
8904
8905         * mini-arm.c (mono_arch_output_basic_block): Implement long to int conversion
8906         with overflow checking.
8907
8908 2008-08-05  Marek Habersack  <mhabersack@novell.com>
8909
8910         * Makefile.am (GENMDESC_PRG): when cross-compiling use full path
8911         to the genmdesc.pl file
8912
8913 2008-08-05  Zoltan Varga  <vargaz@gmail.com>
8914
8915         * ir-emit.h (EMIT_NEW_ARGSTORE): Fix the usage of param_types and
8916         arg_array in the soft-float versions of the LOAD/STORE macros.
8917
8918         * method-to-ir.c (mono_method_to_ir2): Fix a warning in the arm switch
8919         implementation.
8920
8921         * ir-emit.h (NEW_VARLOADA): Handle SOFT_FLOAT correctly.
8922
8923 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
8924
8925         * mini-ia64.c (add_valuetype): Only reserve half parameter slot for each member of
8926         a float HFA. Fixes #413621.
8927
8928 2008-08-02  Gert Driesen  <drieseng@users.sourceforge.net>
8929
8930         * mini-x86.c (mono_arg_get_argument_info): Rename last occurrence of
8931         frame_size to args_size. Fixes build.
8932
8933 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
8934
8935         * mini-x86.c (mono_arch_get_argument_info): Rename frame_size to args_size,
8936         and don't align it to MONO_ARCH_FRAME_ALIGNMENT.
8937
8938         * mini-x86.h: Change MONO_ARCH_FRAME_ALIGNMENT to 8 so doubles stored on
8939         the stack are not unaligned. Fixes #413247.
8940         
8941 Fri Aug 1 18:46:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
8942
8943         * mini.c: update jitted methods performance counters.
8944
8945 Fri Aug 1 16:30:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
8946
8947         * mini-exceptions.c: increase the exceptions thrown performance
8948         counter in mono_handle_exception ().
8949
8950 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
8951
8952         * aot-runtime.c: Use MonoImage's as keys in the aot_modules hash so the aot
8953         can work with netmodules.
8954
8955 2008-07-28  Geoff Norton  <gnorton@novell.com>
8956
8957         * mini-x86.h: Correct the frame alignment on OSX.  Fixes the jit 
8958         regression tests.
8959
8960 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
8961
8962         * mini-x86.c (mono_arch_emit_call): Emi the osx stack alignment at the
8963         correct place.
8964
8965 2008-07-28  Bill Holmes  <billholmes54@gmail.com>
8966
8967         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
8968           The float param registers and other param registers must be the 
8969           same index on Windows x64.
8970
8971         * mini-amd64.c (mono_arch_allocate_vars) : Implementing the 
8972           ArgValuetypeAddrInIReg argument case.  Setting the argument
8973           op to OP_VTARG_ADDR (OP_REGOFFSET)).
8974
8975         * mini-amd64.c (mono_arch_call_opcode) : Winx64 fix.  Use the size
8976           variable computed above as the copy length for arguments of storage
8977           type ArgValuetypeAddrInIReg.
8978
8979         * mini-amd64.c (mono_arch_emit_call) :  Implementing the 
8980           ArgValuetypeAddrInIReg argument case.  This case will rely on
8981           mono_arch_emit_outarg_vt to emit the correct code later in the process.
8982
8983         * mini-amd64.c (mono_arch_emit_call) :  On Winx64 there always needs to be
8984           a 32 byte stack allocation for all calls.  We will omit the adjustment for
8985           jump and tail call instructoins as they do not follow the typical call behavior.
8986
8987         * mini-amd64.c (mono_arch_emit_outarg_vt) :  Implementing the case for
8988           ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
8989           local variable and pass the local variable by reference to the called method.
8990
8991         * mini-amd64.c (mono_arch_emit_prolog, emit_load_volatile_arguments) :
8992           Implementing the ArgValuetypeAddrInIReg argument case.  When the address
8993           of a struct is passed in a register it must be saved with the other
8994           volatile argument on the stack.
8995
8996         * mini-amd64.c (mono_arch_emit_prolog) : Winx64 fix.  When omitting the
8997           frame pointer the stack adjustment value must be saved to the unwind 
8998           info structure.
8999
9000         Contributed under MIT/X11 license.
9001
9002 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
9003
9004         * inssel-x86.brg (stmt): Add missing OP_X86_OUTARG_ALIGN_STACK rule
9005         which got lost in the merge.
9006
9007 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
9008
9009         * method-to-ir.c: Make the helper_sig variables extern to fix the ppc
9010         build.
9011
9012         * mini-amd64.c (emit_call_body): Add a no_patch case missed earlier.
9013         
9014         * mini-amd64.c (emit_call_body): Avoid aligning the call instruction on
9015         icalls, since they won't be patched.
9016
9017         * exceptions-amd64.c (mono_arch_get_restore_context_full): Use a slightly
9018         different code sequence when running under valgrind to prevent some valgrind
9019         errors.
9020
9021         * iltests.il.in: Add new regression test.
9022
9023         * method-to-ir.c (mono_method_to_ir2): Fix handling of inlined methods which
9024         end with a throw.
9025
9026         * method-to-ir.c (mono_method_to_ir2): Use get_vreg_to_inst () instead of
9027         accessing cfg->vreg_to_inst directly to prevent a crash in LDFLD.
9028
9029         * iltests.il.in: Add new test.
9030
9031         * aot-compiler.c: Fix some warnings.
9032
9033         * decompose.c (mono_decompose_long_opts): Implement OP_ICONV_TO_OVF_I8_UN.
9034         Fixes #412494.
9035
9036 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
9037
9038         * driver.c (mono_main): Fix the --gc=none build. Fixes #412482.
9039         (mini_usage_jitdeveloper): Add a missing --wapi option.
9040
9041 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
9042
9043         * mini-codegen.c: Simplify the is_fp macros.
9044         (free_up_ireg): Remove, use free_up_reg instead.
9045         (free_up_reg): Fix the fp case.
9046
9047 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
9048
9049         * cpu-arm.md (loadr8_membase): Increase the length of this as this is not
9050         lowered earlier.
9051
9052         * exceptions-x86.c: Merge some changes which seemed to have got lost
9053         in the linear-ir merge.
9054
9055         * liveness.c: Disable the liveness2 pass on 32 bit platforms.
9056
9057         * method-to-ir.c (mono_handle_global_vregs): Make the component vregs of a
9058         long vreg volatile even if the variable was already created.
9059
9060         * liveness.c (update_liveness2): Avoid eliminating dead definitions of
9061         volatile variables.
9062
9063 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
9064
9065         * cpu-x86.md (fcall_membase): Increase the size of the fcall opcodes.
9066
9067         * mini.c (mono_jit_compile_method_inner): Add support for 
9068         MONO_EXCEPTION_BAD_IMAGE.
9069
9070         * method-to-ir.c (mono_method_to_ir2): Avoid a crash if 
9071         mini_method_get_context () returns NULL. Fixes #356531.
9072
9073         * mini.c (mono_method_to_ir): Ditto.
9074         
9075         * method-to-ir.c (mono_method_to_ir2): Create a variable if needed when
9076         accessing a field of a valuetype in LDFLD/STFLD. Fixes #412399.
9077
9078 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
9079
9080         * method-to-ir.c (mono_method_to_ir2): Initialize an uninitialized variable
9081         in the LDFTN implementation.
9082
9083 2008-07-25  Mark Probst  <mark.probst@gmail.com>
9084
9085         * mini-trampolines.c (mono_magic_trampoline): When sharing generic
9086         code, patch calls to icalls, too, even if they're not in the
9087         shared generic code hash.  Fixes #411962.
9088
9089 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
9090
9091         * cpu-x86.md: Increase the length of the fcall opcodes.
9092
9093         * mini-x86.c (emit_move_return_value): Avoid some precision issues for
9094         calls returning floats.
9095
9096         * method-to-ir.c (mono_method_to_ir2): Remove the generic sharing restrictions
9097         on NEWARR.
9098         
9099         * method-to-ir.c (mono_method_to_ir2): Merge some LDFTN gsharing changes
9100         missed earlier.
9101
9102         * method-to-ir.c (handle_delegate_ctor): Avoid putting dynamic methods
9103         into the domain->method_code_hash.
9104
9105         * aot-compiler.c: Fix win32 build.
9106
9107         * method-to-ir.c (EMIT_GET_RGCTX): Call EMIT_NEW_LDARG in emit_get_rgctx ().
9108         
9109         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_specific in the
9110         gshared NEWARR implementation.
9111
9112         * cpu-sparc.md: Remove duplicate localloc_imm opcode.
9113
9114         * ir-emit.h (NEW_ARGLOAD): Use cfg->args and cfg->arg_types so this macro
9115         can be used outside of method_to_ir.
9116
9117         * mini.h (MonoCompile): Add arg_types field.
9118
9119         * method-to-ir.c (inline_method): Save/Restore cfg->args and cfg->arg_types.
9120         
9121         * method-to-ir.c (mono_method_to_ir2): Set cfg->args and cfg->arg_types to
9122         the values of the local arg_array and param_types array.
9123
9124 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
9125
9126         * method-to-ir.c (mono_method_to_ir2): Allocate a GOT var for NEWOBJ, since
9127         got accesses might only get generated later when NEWOBJ is decomposed.
9128         
9129         * method-to-ir.c (handle_delegate_ctor): Add an optimization to avoid
9130         looking up the native code of the target method when a delegate is called
9131         for the first time.
9132
9133         * mini-trampolines.c (mono_delegate_trampoline): Add the other half of the
9134         optimization.
9135
9136         * debug-debugger.c (MONO_DEBUGGER__debugger_info): Fix a warning.
9137
9138         * aot-runtime.c aot-compiler.c: Add a new option 'no-dlsym' which makes
9139         AOT work on platforms without a working dlsym implementation.
9140
9141         * mini.h: Bump AOT image format version.
9142         
9143 2008-07-24  Mark Probst  <mark.probst@gmail.com>
9144
9145         * mini-exceptions.c: Free a MonoType with
9146         mono_metadata_free_type() instead of g_free().
9147
9148         * aot-runtime.c: Free a MonoType.
9149
9150 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
9151
9152         * method-to-ir.c (mono_method_to_ir2): Add a comment for the box+brtrue
9153         optimization.
9154
9155         * mini-codegen.c (mono_local_regalloc): Remove the remaining items from the
9156         fp stack on x86.
9157
9158 2008-07-23  Massimiliano Mantione  <massi@ximian.com>
9159         * mini.c (sigprof_signal_handler): call the new "runtime initialized"
9160         profiler hook.
9161
9162 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
9163
9164         * method-to-ir.c (mono_method_to_ir2): Set the stack type properly for
9165         NEWOBJ calls on valuetypes.
9166
9167         * iltests.il.in: Add new test.
9168
9169         * mini-x86.c (mono_arch_emit_call): Use mini_type_stack_size ().
9170
9171 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
9172
9173         * mini-exceptions.c: Fix some warnings. Remove one ia64 special case as it
9174         is no longer needed.
9175
9176         * mini-ia64.c (mono_arch_emit_prolog): In native-to-managed wrappers, widen
9177         non register sized integer arguments.
9178         (mono_arch_call_opcode): Add support for ArgInFloatRegR4.
9179         (mono_arch_emit_outarg_vt): Pass a more reasonable alignment to 
9180         emit_memcpy2 ().
9181
9182         * method-to-ir.c (mono_method_to_ir2): Handle the ret_var_is_local case in
9183         CEE_MONO_RETOBJ.
9184         
9185         * method-to-ir.c (ADD_WIDEN_OP): New macro to insert a widening op when
9186         two a binop with different sized arguments is emitted.
9187
9188         * mini.c (mono_bblock_insert_after_ins): Properly link up with the next
9189         instruction in the ins==NULL case.
9190
9191 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
9192
9193         * mini-ops.h: Add OP_X86_OUTARG_ALIGN_STACK.
9194
9195         * mini-x86.c: Fix osx build.
9196
9197         * mini-amd64.c (mono_arch_output_basic_block): Handle varargs in the CALL_REG
9198         opcodes as well.
9199
9200         * method-to-ir.c (mono_spill_global_vars): Avoid fusing a load+store into the
9201         instruction for non int sized variables.
9202
9203         * method-to-ir.c (mono_method_to_ir2): Fix an assert in the LDFLD
9204         implementation.
9205
9206 2008-07-23  Robert Jordan  <robertj@gmx.net>
9207
9208         * method-to-ir.c: Fix MSVC build.
9209
9210 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
9211
9212         * method-to-ir.c (mono_method_to_ir2): When calling native code which returns
9213         a non int sized type, widen it to an int since newer versions of gcc seem to
9214         generate code which needs this.
9215
9216         * ssa2.c abcremoval2.c: Fix warnings.
9217
9218         * *: Merge the Linear IR branch.
9219
9220         The original branch is at trunk/branches/vargaz/mini-linear-il, and
9221         the ChangeLog file there describes all the changes done over the years. 
9222         Further documentation can be found at www.mono-project.com/Linear_IL.
9223
9224 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
9225
9226         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
9227           The float param registers and other param registers must be the 
9228           same index on Windows x64.
9229
9230         Contributed under MIT/X11 license.
9231
9232 2008-07-21  Rodrigo Kumpera  <rkumpera@novell.com>
9233
9234         * mini.c: Make the previous fix GC safe.
9235
9236 2008-07-21  Raja R Harinath  <harinath@hurrynot.org>
9237
9238         * Makefile.am (version.h): Allow a trailing '/' in the repository URL.
9239
9240 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
9241
9242         * mini-amd64.c (get_call_info): Correcting the case for MONO_TYPE_TYPEDBYREF
9243           on Winx64.  This type will not be passed on the stack (ArgOnStack), but 
9244           ArgValuetypeAddrInIReg instead.
9245
9246         Contributed under MIT/X11 license.
9247
9248 2008-07-21  Zoltan Varga  <vargaz@gmail.com>
9249
9250         * mini-codegen.c (get_register_spilling): Fix a warning.
9251
9252 2008-07-17  Rodrigo Kumpera  <rkumpera@novell.com>
9253
9254         * mini.c: Use mono_runtime_class_init_full to avoid leaking memory
9255         for types which the initialization fails. Raises the provided exception
9256         at the right stop after cleanup.
9257
9258 2008-07-16  Zoltan Varga  <vargaz@gmail.com>
9259
9260         * aot-compiler.c: Free most of the memory allocated during compilation.
9261
9262         * mini.c (mini_parse_debug_options): Fix a leak.
9263         
9264         * mini.c (mini_method_compile): Don't add the method to the jit info tables
9265         during aot compilation.
9266
9267 2008-07-14  Zoltan Varga  <vargaz@gmail.com>
9268
9269         * mini.c (mono_method_to_ir): Disable aot for code using CCASTCLASS on x86 as 
9270         it has too much register pressure.
9271
9272 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
9273
9274         * inssel.brg (CEE_CASTCLASS): Remove some dead code.
9275
9276 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
9277
9278         * mini-x86.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
9279         on x86.
9280
9281         * mini-amd64.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
9282         on amd64 similar to the way it is done on arm.
9283
9284         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
9285
9286         * aot-runtime.c (load_aot_module): Rename 'info' to 'amodule' for 
9287         consistency, normalize error messages, avoid loading aot-only modules in
9288         normal mode.
9289
9290         * driver.c (mono_main): Rename --aot-only command line option to --full-aot
9291         for consistency.
9292
9293         * aot-compiler.c aot-runtime.c tramp-arm.c: Implement aot-only support.
9294
9295 2008-07-11  Martin Baulig  <martin@ximian.com>
9296
9297         * debug-debugger.h
9298         (MonoDebuggerInfo): Add `interruption_request'.
9299
9300 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
9301
9302         * aot-compiler.c (emit_plt): Remove some dead code.
9303
9304         * exceptions-arm.c (mono_arch_get_call_filter_full): Initialize ji.
9305
9306         * aot-runtime.c (mono_aot_get_plt_info_offset): New helper function to
9307         return the plt info offset belonging to a given plt entry.
9308
9309         * mini-trampolines.c (mono_aot_plt_trampoline): Use 
9310         mono_aot_get_plt_info_offset.
9311         
9312         * aot-runtime.c aot-compiler.c tramp-arm.c: Change the arm plt code to be
9313         similar to the amd64 code by makeing jumps through a separate jump table 
9314         instead of embedding the jump addresses into the code.
9315
9316 2008-07-11  Zoltan Varga  <vargaz@gmail.com>
9317
9318         * mini.c (mono_method_to_ir): Disable aot for calling ldtoken in a generic
9319         method.
9320
9321 2008-07-10  Martin Baulig  <martin@ximian.com>
9322
9323         * mini.c (mini_method_compile): Disable generics sharing when
9324         running in the debugger.
9325
9326 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
9327
9328         * mini.c (mono_method_to_ir): Create the got var in CEE_REFANYVAL.
9329
9330         * inssel.brg (CEE_CASTCLASS): Avoid reusing temporary registers to prevent
9331         the local register allocator from running out of registers on x86 when 
9332         using aot.
9333
9334 2008-07-10  Bill Holmes  <billholmes54@gmail.com>
9335
9336         * inssel-long.brg For OP_LCONV_TO_OVF_I4 an int cast is needed when 
9337         expressing IntMin for the VS Compiler.  See Compiler Warning (level 2) 
9338         C4146.
9339
9340         Contributed under MIT/X11 license.
9341
9342 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
9343
9344         * aot-compiler.c: Get rid of whitespace in the generated assembly file to
9345         speed up the assembler.
9346
9347 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
9348
9349         * mini-arm.h tramp-arm.c exceptions-arm.c aot-compiler.c: Beginnings of aot-only
9350         support.
9351
9352         * mini.c: Move the soft float handling macros a bit earlier, add 
9353         NEW_TEMPSTORE_SOFT_FLOAT macro, fix warnings, add soft-float support in one
9354         place.
9355
9356         * mini.h: Add prototype for mono_arch_fixup_jinfo.
9357
9358         * mini.c (mini_init): In aot-only mode, set the root domain code manager to
9359         read-only to help catch code allocation requests.
9360         
9361         * mini.c inssel.brg aot-compiler.c: Make the use of IMT runtime configurable,
9362         and turn it off when using --aot-only or when compiling with --aot=full.
9363
9364         * mini.c (mono_resolve_patch_target): In aot-only mode, allocate the
9365         jump table for switches from the normal domain mempool, not the code
9366         manager.
9367
9368         * mini-trampolines.c (get_unbox_trampoline): New function to return an
9369         unbox trampoline which handles aot-only mode too.
9370
9371         * aot-runtime.c (mono_aot_get_unbox_trampoline): New function to lookup
9372         an AOTed unbox trampoline.
9373
9374         * aot-compiler.c (emit_trampolines): Emit unbox trampolines.
9375
9376 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
9377
9378         * wapihandles.c: Fixing MSVC builds.  Include statement changed from <> to
9379         ""
9380
9381         Contributed under MIT/X11 license.
9382
9383 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
9384
9385         * mini.c (mono_codegen):  Allocate space at the end of the code block and store
9386           the unwind information for the method at the end of the allocated block.
9387           
9388         * mini-amd64.h: Added declarations for the unwind routines and adding field to 
9389           MonoCompileArch to hold the unwind info for SEH on Winx64
9390         
9391         * mini-amd64.c (mono_arch_emit_prolog): Calls to the unwind routines added to store
9392           frame pointer info for the method being compiled.
9393           
9394         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception): Added a stack adjustment before
9395           the call to mono_exception_from_token.
9396           
9397         * exceptions-amd64.c: Added mono_arch_unwindinfo* implementations.  This code is responsible
9398           storing the method prolog information in a format that the Winx64 SEH can understand.  This
9399           information is stored a the end of the method block because it is all 32-bit offset based.
9400
9401         Contributed under MIT/X11 license.
9402
9403 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
9404
9405         * mini.h: Remove duplicate definitions of the mini_wapi_ functions.
9406
9407         * wapihandles.c: Fix warnings.
9408
9409         * aot-runtime.c (load_aot_module): Add a missing error message in aot-only
9410         mode.
9411
9412         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Avoid calling 
9413         mono_jit_compile_method in aot-only mode since that calls the type 
9414         initializer.
9415         
9416         * mini-trampolines.c (mono_create_delegate_trampoline): Avoid calling
9417         get_delegate_invoke_impl in aot-only mode.
9418
9419         * mini.c (mono_global_codeman_reserve): Reenable the aot-only check.
9420
9421 2008-07-08  Zoltan Varga  <vargaz@gmail.com>
9422
9423         * trace.c (mono_trace_enter_method): Fix printing of Type instances.
9424
9425         * aot-compiler.c (compile_method): Disable the check for GSHARED since it
9426         is on by default.
9427
9428         * inssel-long.brg (reg): Add a rule for LCALL_REG (OP_I8CONST).
9429
9430         * tramp-amd64.c (mono_arch_nullify_plt_entry): Read the nullified class
9431         init trampoline from the AOT file as well.
9432
9433         * mini-amd64.c (mono_arch_register_lowlevel_calls): Register
9434         mono_amd64_throw_exception as a jit icall since it is needed by the aot-only
9435         code.
9436
9437         * mini.c (mini_init): Move the call to mono_exceptions_init () after 
9438         mono_init.
9439
9440         * exceptions-amd64.c: Add _full variants for the remaining exception code
9441         creation functions as well, allow emission of relocatable code, remove
9442         caching since that is now done by the caller.
9443
9444         * mini-exceptions.c: Add _full variants for the remaining exception code
9445         creation functions as well, add aot-only support.
9446
9447         * aot-compiler.c (compile_method): Allow calls to methods of constructed types
9448         if we can determine a proper token for them.
9449         (add_wrappers): Add a few more wrappers.
9450         (emit_method_code): Remove some dead code.
9451         (emit_trampolines): Emit exception code too.
9452
9453         * mini.c (mono_method_to_ir): Call mono_array_new_2 if possible.
9454
9455         * jit-icalls.c (mono_array_new_2): New jit icall, specialized version of
9456         mono_array_new_va which avoids varargs.
9457
9458         * mini-exceptions.c (mono_exceptions_init): Fix the ppc build.
9459
9460         * mini-trampolines.c: Call mono_create_specific_trampoline () instead of
9461         mono_arch_create_specific_trampoline () in all places.
9462
9463         * aot-compiler.c aot-runtime.c: Refactor the trampoline emitting/loading code
9464         a bit so it can be used for other things as well.
9465         
9466         * mini-exceptions.c (mono_exceptions_init): Initialize throw_exception_by_name
9467         on demand as well.
9468
9469         * exceptions-amd64.c: Rename the caching from the exception code creation
9470         functions, it is done by the caller instead.
9471         
9472         * exceptions-amd64.c: Change the signature of the exception code creation 
9473         functions to allow the creation of relocatable code later.
9474
9475         * mini-exceptions.c: Add a set of functions to query the various 
9476         runtime-generated exception functions.
9477
9478         * mini.c mini-exceptions.c: Use the newly added functions instead of the
9479         mono_arch_.. () functions.
9480         
9481 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
9482
9483         * mini-trampolines.c (mono_aot_get_trampoline_code): Removed, no longer used.
9484
9485         * aot-runtime.c aot-compiler.c: AOT the generic trampolines in aot-only mode.
9486
9487         * mini.c (mini_get_imt_trampoline): Call mono_create_specific_trampoline ().
9488         (mini_get_vtable_trampoline): Ditto.
9489
9490         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Create relocatable
9491         code in the AOT case by returning the code size and a list of relocations to
9492         the caller.
9493
9494         * mini-trampolines.c (mono_create_specific_trampoline): New helper function.
9495
9496 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
9497
9498         * mini-amd64.c:  On Winx64 the calling convention always requires the caller to 
9499           clean the stack.
9500
9501         Contributed under MIT/X11 license.
9502
9503 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
9504
9505         * aot-compiler.c (emit_exception_debug_info): Serialize the debug info first
9506         so the buffer size can be computed correctly. Fixes #404735.
9507
9508         * debug-mini.c (mono_debug_serialize_debug_info): Lookup the debug info
9509         normally as cfg->debug_info is already freed.
9510
9511 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
9512
9513         * mini-amd64.c: For calls returning vtypes in registers, don't store
9514         the return address on the stack, instead allocate a separate local for
9515         it. Fixes #404729.
9516
9517 2008-07-05  Mark Probst  <mark.probst@gmail.com>
9518
9519         * mini-trampolines.c, mini.h: Add an argument to
9520         mono_create_jit_trampoline_in_domain() for turning off the adding
9521         of the sync wrapper.
9522
9523         * mini.c: Use the JIT trampoline without sync instead of
9524         ldftn_nosync in static RGCTX invoke wrappers so that the call can
9525         be patched.
9526
9527 2008-07-04  Mark Probst  <mark.probst@gmail.com>
9528
9529         * driver.c: Turn on GSHARED optimization by default.
9530
9531 2008-07-04  Zoltan Varga  <vargaz@gmail.com>
9532
9533         * mini-trampolines.c mini.c mini.h tramp-<ARCH>.c: Rename MONO_TRAMPOLINE_GENERIC
9534         to MONO_TRAMPOLINE_JIT since it better reflects what it does.
9535
9536         * mini-trampolines.c (mono_get_aot_trampoline_code): New internal function to
9537         create a variant of the generic trampoline code callable from AOTed trampolines.
9538
9539         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add support for generic
9540         trampoline code callable from AOTed trampolines.
9541
9542         * aot-compiler.c aot-runtime.c: Add support for AOTing trampolines.
9543
9544 2008-07-04  Mark Probst  <mark.probst@gmail.com>
9545
9546         * inssel.brg, mini-ops.h: New opcode for doing CHECK_THIS in a
9547         pass-through manner.
9548
9549         * mini.c: Generic method sharing.  Pass MRGCTX to generic methods
9550         and don't fail sharing for them anymore.
9551
9552         * mini-exceptions.c: Handle exceptions in shared generic methods.
9553
9554         * generic-sharing.c: When checking the context of a generic
9555         method, also check its class's context.  Don't treat wrappers as
9556         sharable.
9557
9558         * mini-trampolines.c: Some code factored out to
9559         metadata/generic-sharing.c.  Handle the MRGCTX case.
9560
9561         * jit-icalls.c, jit-icalls.h: ldvirtfn icall for generic sharing -
9562         we must deal with the method being of another instantiation of the
9563         class.  Add static rgctx invoke wrappers to generic methods.
9564
9565 2008-07-04  Mark Probst  <mark.probst@gmail.com>
9566
9567         * mini.c: Provide all jit infos of generic shared methods with a
9568         generic jit info.
9569
9570         * mini-exceptions.c: Handle the new situation that a generic info
9571         might be available, but not info about the this/vtable/mrgctx
9572         variable.
9573
9574 2008-07-03  Mark Probst  <mark.probst@gmail.com>
9575
9576         * mini.c: Don't accept ldftn and ldvirtftn with uninstantiated
9577         generic methods.
9578
9579 2008-07-03  Zoltan Varga  <vargaz@gmail.com>
9580
9581         * dominators.c (check_dominance_frontier): Fix a warning.
9582
9583         * mini.h: Add some missing prototypes.
9584
9585         * ssa.c local-propagation.c debug-debuger.c: Fix warnings.
9586
9587         * driver.c (mono_jit_init_version): Correct the comments since the first
9588         argument should be the name of the root domain, not a filename.
9589
9590         * aot-runtime.c (make_writable): Error out if this is called while running
9591         with --aot-only.
9592         (load_aot_module): Ditto.
9593
9594         * aot-compiler.c: Really fix the computation of method indexes.
9595
9596         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Remove the previous 
9597         optimizations as this is no longer called frequently.
9598
9599         * mini-trampolines.c (mono_create_delegate_trampoline): Precompute the invoke
9600         method and the invoke impl code and pass it to the delegate trampoline instead of
9601         just the delegate class.
9602
9603 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
9604
9605         * aot-compiler.c: Fixup the computation of method indexes.
9606         (add_wrappers): Create the base methods of the runtime invoke wrappers using
9607         the method builder infrastructure.
9608
9609         * aot-runtime.c (decode_exception_debug_info): Don't crash if the method
9610         has no header.
9611
9612         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): In aot-only
9613         mode, load the method right away instead of creating a trampoline.
9614
9615         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Eliminate locking.
9616
9617         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Eliminate locking, speed up
9618         some checks a bit.
9619
9620 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
9621
9622         * aot-runtime.c (decode_patch_info): Don't create trampolines in aot_only mode.
9623         (mono_aot_load_method): Use method_index instead of method->token.
9624
9625         * mini.c (mono_jit_compile_method_inner): Move the aot_only check down, so it
9626         can handle icalls etc. properly.
9627
9628         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
9629
9630         * aot-compiler.c aot-runtime.c: Allow AOTing many wrapper types.
9631
9632         * mini.c (mono_resolve_patch_target): Handle JIT_ICALL_ADDR.
9633         (mono_codegen): Convert calls made by JIT icall wrappers to the icalls into
9634         JIT_ICALL_ADDR patch type.
9635
9636         * patch-info.h: Add JIT_ICALL_ADDR patch type.
9637
9638         * mini.c (mono_method_to_ir): Allow AOTing methods which access the interruption
9639         request flag.
9640         (mono_resolve_patch_target): Handle INTERRUPTION_REQUEST_FLAG.
9641
9642         * patch-info.h: Add INTERRUPTION_REQUEST_FLAG.
9643
9644 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
9645
9646         * mini.c: Use domain->jit_code_hash_lock for controlling access to
9647         domain->jit_code_hash.
9648
9649 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
9650
9651         * mini.c (mini_parse_debug_options): Add 'dont-free-domains' option.
9652
9653 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
9654
9655         * mini-trampolines.c (mono_delegate_trampoline): Don't pass a gsctx to
9656         get_this_arg_from_call, let it compute it when needed.
9657
9658         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'code' argument, compute
9659         gsctx from code only when needed.
9660
9661         * mini-trampolines.c (get_generic_context): Rename this to 
9662         mono_get_generic_context_from_code (), and move it to generic-sharing.c, where
9663         it can be called by the arch backends.
9664
9665         * mini-exceptions.c (mono_print_thread_dump): Allow the argument to be NULL.
9666
9667 2008-06-26  Zoltan Varga  <vargaz@gmail.com>
9668
9669         * driver.c (mono_main): Add experimental --aot-only command line option.
9670
9671         * mini.c: Error out when creating trampolines or JIT compiling if --aot-only is
9672         set.
9673
9674 2008-06-26  Kornel Pal  <kornelpal@gmail.com>
9675
9676         * driver.c (DllMain): Remove mono_module_handle.
9677
9678         Contributed under MIT/X11 license.
9679
9680 2008-06-25  Zoltan Varga  <vargaz@gmail.com>
9681
9682         * aot-compiler.c: Add not-yet-usable 'full' option. Add some infrastructure code
9683         for emitting methods which are not in the source assembly. Detect and report
9684         failure of assembling+linking.
9685         
9686         * aot-compiler.c (emit_klass_info): Call mono_class_setup_vtable ().
9687
9688         * aot-compiler.c: Move the contents of the has_glot_slots array to MonoCompile.
9689
9690 2008-06-24  Rodrigo Kumpera  <rkumpera@novell.com>
9691
9692         * mini.c: Check if stats is enabled so we don't allocate memory when not needed.
9693
9694 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
9695
9696         * mini.h: Remove some obsolete prototypes.
9697
9698         * mini.c: Avoid storing MonoMethod pointers in the JIT stats, store their string format instead.
9699
9700 2008-06-24  Mark Probst  <mark.probst@gmail.com>
9701
9702         * mini.c (get_object_generic_inst): Variable-sized arrays are not
9703         supported by Visual Studio, so use alloca().
9704
9705 2008-06-23  Zoltan Varga  <vargaz@gmail.com>
9706
9707         * mini-ia64.c (add_valuetype): Increase *gr too when passing a HFA to be in sync with the ABi.
9708         Fixes #402585.
9709
9710 2008-06-23  Mark Probst  <mark.probst@gmail.com>
9711
9712         * mini.c: Fail sharing of a generic method if it contains an open
9713         catch clause (because we don't pass MRGCTXs yet).
9714
9715 2008-06-23  Mark Probst  <mark.probst@gmail.com>
9716
9717         * mini.c: When compiling a method with generic sharing, insert the
9718         method instantiated with an all-Object generic context into the
9719         jit info table, instead of the context of the first instantiation
9720         of the method we happen to compile.
9721
9722 2008-06-18  Martin Baulig  <martin@ximian.com>
9723
9724         * debug-debugger.h (MonoDebuggerInfo): Replaced `version' with
9725         `major_version' and `minor_version'.
9726
9727 2008-06-17  Mark Probst  <mark.probst@gmail.com>
9728
9729         * generic-sharing.c, mini.c, mini.h, aot-runtime.c:
9730         mono_method_is_generic_sharable_impl() takes an additional
9731         argument specifying whether to treat type variables as reference
9732         types.
9733
9734 2008-06-17  Mark Probst  <mark.probst@gmail.com>
9735
9736         * mini.h: Removed obsolete prototypes.
9737
9738 2008-06-17  Mark Probst  <mark.probst@gmail.com>
9739
9740         * mini.c: Don't fail generic sharing for initobj and sizeof - we
9741         already handle them.
9742
9743 2008-06-17  Mark Probst  <mark.probst@gmail.com>
9744
9745         * mini.h, mini-trampolines.c, tramp-alpha.c, tramp-amd64.c,
9746         tramp-arm.c, tramp-hppa.c, tramp-ia64.c, tramp-mips.c,
9747         tramp-ppc.c, tramp-s390.c, tramp-s390x.c, tramp-sparc.c,
9748         tramp-x86.c: Added a MonoGenericContext* argument to
9749         mono_arch_get_unbox_trampoline() so that it can call other
9750         functions which require it.
9751
9752 2008-06-17  Mark Probst  <mark.probst@gmail.com>
9753
9754         * mini.h, mini-trampolines.c, mini-amd64.c, mini-x86.c,
9755         mini-alpha.c, mini-arm.c, mini-ia64.c, mini-ppc.c:
9756         mono_arch_get_this_arg_from_call() takes a
9757         MonoGenericSharingContext* as well.
9758
9759 2008-06-17  Mark Probst  <mark.probst@gmail.com>
9760
9761         * mini.c: Factor out code for emitting unbox into emit_unbox() and
9762         implement generic sharing of unbox.
9763
9764 2008-06-17  Mark Probst  <mark.probst@gmail.com>
9765
9766         * mini.c: Don't compute the vtable to determine whether a field is
9767         special static, because it might not work for open types.
9768
9769 2008-06-17  Mark Probst  <mark.probst@gmail.com>
9770
9771         * mini.c: Removed the unused token_type and token_source arguments
9772         from get_runtime_generic_context_ptr().
9773
9774 2008-06-17  Marek Habersack  <mhabersack@novell.com>
9775
9776         * mini.c (ADD_BINOP): fix the build
9777
9778 2008-06-16  Zoltan Varga  <vargaz@gmail.com>
9779
9780         * mini.c (ADD_BINOP): When operating on a native int and an int32, insert
9781         a widening op.
9782
9783 2008-06-16  Mark Probst  <mark.probst@gmail.com>
9784
9785         * mini.h: Removed class relations enum that's not used anymore.
9786
9787 2008-06-16  Mark Probst  <mark.probst@gmail.com>
9788
9789         * tramp-x86.c, tramp-amd64.c: Slot access code for MRGCTXs.
9790
9791         * mini-trampolines.c: Distinguish between RGCTXs and MRGCTXs in
9792         the lazy fetch trampoline access code.
9793
9794 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
9795
9796         * mini-codegen.c (mono_local_regalloc): Add some micro optimizations.
9797
9798 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
9799
9800         * mini.c: Fix some soft-float bugs. Fixes #378735 and #398348.
9801
9802         * mini.h (MONO_INST_LIST_ENTRY): Fix warnings on arm.
9803
9804         * mini.c (mono_method_to_ir): Check call signature for NEWOBJ as well.
9805
9806 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
9807
9808         * mini-x86.c inssel-x86.brg cpu-x86.md: Implement unsigned min/max
9809         intrinsics.
9810
9811         * mini-ops.h: Add MIN/MAX_UN opcodes.
9812
9813         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Implement unsigned min/max
9814         intrinsics.
9815
9816         * basic-math.cs: Add more min/max tests.
9817
9818         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
9819
9820 2008-06-13  Mark Probst  <mark.probst@gmail.com>
9821
9822         * mini.c: Small fix in the prologue of emit_castclass.
9823
9824 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
9825
9826         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
9827
9828         * mini.c (mini_get_inst_for_method): Remove the Min/Max intrinsics, they
9829         do not work even for unsigned types. Fixes #400014.
9830
9831         * basic-math.cs: Add regression tests for unsigned Min/Max.
9832
9833 2008-06-13  Mark Probst  <mark.probst@gmail.com>
9834
9835         * mini.c: Added additional context_used argument to several
9836         functions, which will be needed for sharing generic methods.  Use
9837         GET_RGCTX macro wherever appropriate.  Declare only one
9838         context_used in mono_method_to_ir().
9839
9840 2008-06-13  Mark Probst  <mark.probst@gmail.com>
9841
9842         * mini.c, generic-sharing.c: Removed generic class relations.
9843
9844         * mini.c, tramp-amd64.c, tramp-x86.c: Additional arguments to
9845         functions due to MRGCTX changes.
9846
9847 2008-06-13  Mark Probst  <mark.probst@gmail.com>
9848
9849         * inssel.brg, inssel-long.brg, inssel-long32.brg, mini-ops.h,
9850         graph.c, local-propagation.c, aliasing.c: New opcodes for calls
9851         with calculated IMT.
9852
9853         * mini.c: Generic sharing of calls via generic interfaces.
9854
9855         * jit-icalls.c, jit-icalls.h: Helper function for compiling a
9856         generic method with non-constant MonoGenericContext*.  Instead,
9857         the context is taken out of the method itself.
9858
9859 2008-06-13  Mark Probst  <mark.probst@gmail.com>
9860
9861         * mini.c: Generic sharing of ldvirtftn.
9862
9863 2008-06-13  Mark Probst  <mark.probst@gmail.com>
9864
9865         * mini.c: Generic sharing of ldftn.
9866
9867 2008-06-13  Mark Probst  <mark.probst@gmail.com>
9868
9869         * mini.c: Do pass VTable/RGCTX argument to static generic methods.
9870
9871 2008-06-13  Mark Probst  <mark.probst@gmail.com>
9872
9873         * mini.c: Generic sharing of the special case of ldtoken followed
9874         by a call to GetTypeFromHandle.
9875
9876 2008-06-13  Mark Probst  <mark.probst@gmail.com>
9877
9878         * mini.c: Generic sharing of box for nullable types.
9879
9880 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
9881
9882         * mini-s390x.c (add_stackParm): Fix computation of offsets when arguments
9883         are passed on the stack. Fixes #324807.
9884
9885 2008-06-12  Bill Holmes  <billholmes54@gmail.com>
9886
9887         * mini-amd64.c:add_valuetype: Adding Winx64 code to fill the ArgInfo
9888         for the ArgValuetypeAddrInIReg case.
9889
9890         * mini-amd64.c:mono_arch_allocate_vars:  Adding a case for 
9891         ArgValuetypeAddrInIReg to avoid asserts.  Code needs to be added here.
9892
9893         * mini-amd64.c: mono_arch_call_opcode:  Adding Winx64 code for an ArgInfo of 
9894         type ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
9895         local variable and pass the local variable by reference to the called method.
9896           
9897         * mini-amd64.c: mono_arch_emit_prolog:  Adjust the stack for calls to
9898         mono_jit_thread_attach and mono_get_lmf_addr for Winx64.
9899
9900         Contributed under MIT/X11 license.
9901
9902 2008-06-10  Rodrigo Kumpera  <rkumpera@novell.com>
9903
9904         * debug-mini.c (mono_debug_free_method_jit_info): Moved to metadata/mono-debug.c.
9905
9906         * debug-mini.c (mono_debug_print_vars): Release memory after printing
9907         everything.
9908
9909 2008-06-10  Martin Baulig  <martin@ximian.com>
9910
9911         * debug-mini.c
9912         (mono_debug_close_method): Check whether `cfg->epilogue_begin != NULL'.
9913
9914 2008-06-09  Kornel Pal  <kornelpal@gmail.com>
9915
9916         * main.c: Add and set argv [argc] to NULL to match C specification that fixes
9917         possible error when no arguments are passed.
9918
9919         Contributed under MIT/X11 license.
9920
9921 2008-06-09  Rodrigo Kumpera  <rkumpera@novell.com>
9922
9923         * mini-exceptions.c (ves_icall_get_trace): Skip source locations
9924         where the file name is NULL.
9925
9926 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
9927
9928         * mini.c: Fix s390 build.
9929
9930 2008-06-08  Zoltan Varga  <vargaz@gmail.com>
9931
9932         * trace.c (mono_trace_parse_options): Fix warnings.
9933
9934         * mini-amd64.c: Revert most of the last patch for now as it breaks the build.
9935
9936 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
9937
9938         * mini.c (remove_block_if_useless): Avoid printing the method name.
9939         
9940         * mini.c: Remove needless setting of ins->cil_code which is now done by 
9941         MONO_INST_NEW.
9942
9943         * mini-amd64.c: Add some code to avoid saving callee saved registers in the
9944         LMF. Not yet used.
9945
9946         * tramp-amd64.c (mono_arch_patch_callsite): Tell valgrind to discard the
9947         translated code after it has been patched.
9948
9949 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
9950
9951         * mini-amd64.c (emit_call_body): Align the call displacement to 4 bytes to
9952         avoid problems during code patching on SMP systems.
9953         (emit_call): Avoid adding a patch info which is already added by 
9954         emit_call_body.
9955         (mono_arch_emit_exceptions): Ditto.
9956
9957 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
9958
9959         * tramp-*.c (mono_arch_get_unbox_trampoline): No need to check for ret->byref,
9960         MONO_TYPE_ISSTRUCT already checks for it.
9961
9962 2008-06-05  Bill Holmes  <billholmes54@gmail.com>
9963
9964         * mini-amd64.c:merge_argument_class_from_type: When marshaling 
9965           structs with floats on Winx64 the float registers are not used.  
9966           The integer registers are always used..
9967         * mini-amd64.c:add_valuetype:  When marshaling structs on Winx64 
9968           only one register will be used and only if the size of the struct 
9969           is 1,2,4, or 8 bytes.
9970
9971         * tramp-amd64.c :  Adjusting size used for mono_global_codeman_reserve
9972           to work for Winx64.
9973
9974         Contributed under MIT/X11 license.
9975
9976 2008-06-05  Martin Baulig  <martin@ximian.com>
9977
9978         * debug-debugger.c (debugger_lookup_class): Also call
9979         mono_class_setup_methods() here; we're only called from RTI.
9980
9981 2008-06-05  Andreas Farber  <andreas.faerber@web.de>
9982
9983         * mini.c (mini_init): Add DTrace probes ves-init-{begin,end}.
9984         (mini_method_compile) Add DTrace probes method-compile-{begin,end}.
9985         * Makefile.am (libmono_la_LIBADD,libmono_static_la_LIBADD,mono_LDADD):
9986         Post-process object files and add dtrace-generated object, if necessary.
9987
9988         Contributed under MIT/X11 license.
9989
9990 2008-06-04  Mark Probst  <mark.probst@gmail.com>
9991
9992         * inssel.brg, mini-ops.h: Added opcode for unboxcast with computed
9993         element class.
9994
9995         * mini.c: Generic sharing for unbox.any and castclass.
9996
9997 2008-06-04  Mark Probst  <mark.probst@gmail.com>
9998
9999         * mini.c: Ignore tailcall prefix in shared generic code and when
10000         doing calls which require a vtable/rgctx argument.
10001
10002 2008-06-04  Mark Probst  <mark.probst@gmail.com>
10003
10004         * mini.c: Don't free the JIT info.
10005
10006         * driver.c: Changes in the JIT info table testing code.
10007
10008 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
10009
10010         * tramp-arm.c (mono_arch_create_trampoline_code): Check for thread 
10011         interruption. Fix some warnings.
10012
10013         * tramp-*.c (mono_arch_create_trampoline_code): Call the _force_ variant of
10014         interruption_checkpoint.
10015
10016 Tue Jun 3 13:07:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
10017
10018         * jit.h, mini.h, trace.c, driver.c: introduce an API to enable tracing
10019         from embedding applications.
10020
10021 2008-06-02  William Holmes  <billholmes54@gmail.com>
10022
10023         * mini-amd64.c :  Correcting some of the issues for Winx64 dealing with
10024           reserving 32 bytes on the stack when making calls. 
10025
10026         Contributed under MIT/X11 license.
10027
10028 2008-06-01  Zoltan Varga  <vargaz@gmail.com>
10029
10030         * mini-arm.c (mono_arch_output_basic_block): Merge some small fixes from
10031         the linear IL branch.
10032
10033         * driver.c: Print out more information for --version on arm.
10034
10035 2008-05-30  Zoltan Varga  <vargaz@gmail.com>
10036
10037         * mini-amd64.c (mono_arch_emit_prolog): Increase max_offset when processing
10038         bb_exit instead, since out of line bblocks might not actually be emitted
10039         out-of-line.
10040         
10041         * mini-amd64.c (mono_arch_emit_prolog): Increase bb->max_offset by the
10042         maximum epilog size for out of line bblocks if tracing is enabled.
10043
10044         * iltests.il.in: Merge tests/long-shift.regalloc.il into this file.
10045
10046 2008-05-28  Rodrigo Kumpera  <rkumpera@novell.com>
10047
10048         * arrays.cs: Regression tests for allocating arrays with negative sizes.
10049
10050 2008-05-28  Zoltan Varga  <vargaz@gmail.com>
10051
10052         * mini-x86.h mini-x86.c inssel-x86.brg cpu-x86.md: Add support for
10053         CAS instrinsics. Optimize the implementation of the ATOMIC_EXCHANGE 
10054         opcodes.
10055
10056 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
10057
10058         * mini.c (mini_get_inst_for_method): Add support for CAS instrinsics when
10059         the 'value' to store is a constant.
10060
10061         * mini-ops.h: Add OP_ATOMIC_CAS_IMM opcodes.
10062
10063         * mini-amd64.c (mono_arch_output_basic_block): Optimize the the implementation
10064         of ATOMIC_EXCHANGE opcodes, add support for the CAS opcodes.
10065
10066 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
10067
10068         * mini.c generic-sharing.c jit-icalls.c aot-compiler.c: Use accessor functions
10069         for accessing method->generic_container.
10070
10071 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
10072
10073         * mini.c (mono_method_check_inlining): Avoid creating vtables if possible.
10074         
10075         * mini.c (SIG_HANDLER_SIGNATURE): Fix sparc build too.
10076
10077         * mini.c (SIG_HANDLER_SIGNATURE): Fix IA64 build.
10078
10079         * mini.c (mono_jit_compile_method_inner): Avoid a crash if mono_class_vtable ()
10080         fails.
10081
10082 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
10083
10084         * driver.c (mono_main): Set mono_setup_vtable_in_class_init to FALSE.
10085
10086         * mini.c: Handle the case when mono_class_vtable () fails.
10087
10088 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
10089         * mini.c (sigprof_signal_handler): Support call chains (backtrace) in
10090         the stat profiler.
10091
10092 2008-05-22  Mark Probst  <mark.probst@gmail.com>
10093
10094         * mini.c, jit-icalls.c, jit-icalls.h: Make generic sharing work
10095         together with domain sharing.
10096
10097 2008-05-22  Mark Probst  <mark.probst@gmail.com>
10098
10099         * mini.c: Treat callvirts to final methods like non-virtual calls
10100         when doing generic sharing, i.e. look them up in the runtime
10101         generic context.
10102
10103 2008-05-22  Mark Probst  <mark.probst@gmail.com>
10104
10105         * inssel.brg, mini-ops.h: Added opcodes for mkrefany and refanyval
10106         with computed types (for generic sharing).
10107
10108         * mini.c: Generic sharing for mkrefany and refanyval.
10109
10110 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
10111
10112         * inssel.brg (mini_emit_virtual_call): Avoid constructing a generic vtable if
10113         possible.
10114
10115         * mini-trampolines.c (mono_magic_trampoline): Avoid calling setup_methods () in
10116         the generic sharing code.
10117         
10118         * mini-trampolines.c (mono_magic_trampoline): Call mono_class_setup_methods ()
10119         when needed.
10120
10121 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
10122
10123         * mini.h: Remove the declaration of mono_aot_init_vtable ().
10124
10125 2008-05-21  C.J. Adams-collier <cjac@colliertech.org>
10126
10127         * driver.c: updated copyright date
10128
10129 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
10130
10131         * aot-runtime.c mini.c: Remove the AOT init_vtable stuff as it is no longer
10132         needed.
10133
10134 2008-05-19  Martin Baulig  <martin@ximian.com>
10135
10136         * debug-debugger.h (MonoDebuggerInfo): Add `using_mono_debugger'
10137         pointing to the new `_mono_debug_using_mono_debugger' variable.
10138
10139         * driver.c
10140         (mono_main): Check mono_debug_using_mono_debugger() rather than
10141         the `MONO_INSIDE_MDB' environment variable to check whether we're
10142         inside the debugger.
10143
10144 2008-05-19  Zoltan Varga  <vargaz@gmail.com>
10145
10146         * mini.c (mini_method_compile): Use cfg->args [0] for accessing the this
10147         argument.
10148
10149 2008-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
10150
10151         * declsec.h: Move MONO_SECMAN_FLAG to metadata/metadata-internals.h.
10152
10153         * mini.c: Added mini_assembly_can_skip_verification. This
10154         function checks if the assembly requested to skip verification. 
10155         Fixes part of #387274.
10156
10157 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
10158
10159         * mini.c (mini_get_method): Disable the check for open generic classes when
10160         using generic sharing.
10161
10162         * generics.cs: Add a test for #387034.
10163
10164         * mini.c (mini_get_method): Check whenever the method class is an open generic
10165         type, and return NULL in that case, causing a verification error. Fixes
10166         #384123.
10167
10168 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
10169
10170         * driver.c (mono_main): Revert r102623. The right
10171         thing to do is to enable the verifier under verifiable
10172         unless a --security flag was passed.
10173
10174         We need this non-trivial behavior for --verify-all otherwise
10175         mcs-compileall won't be able to use it. As it needs everything to
10176         be verified under validil.
10177
10178 2008-05-06  Martin Baulig  <martin@ximian.com>
10179
10180         Fix #383749.
10181
10182         * debug-mini.c (mono_debugger_thread_created): Add proper locking.
10183         (mono_debugger_thread_cleanup): Likewise.
10184         (mono_debugger_extended_notification): Likewise.
10185
10186 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
10187
10188         * mini.c (mono_method_to_ir): Verify visibility of call related opcodes
10189         against both inflated and non-inflated methods. We need to check against the
10190         generic definition for cases where the instantiated method is not visible.
10191         We need to check against the inflated types for cases where the instantiation
10192         changes any super type. This fixes #382986.
10193
10194         Note that this doesn't need to be applied to other parts of mono_method_to_ir
10195         that check for visibiliy as generic params only appears as the type subject
10196         of tokens on call opcodes. Field manipulation and ldftn must always
10197         target an exact type.
10198
10199 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
10200
10201         * driver.c (mono_main): Using --verify-all enables the verifier under validil mode
10202         if no related --security flag is passed.
10203
10204 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
10205
10206         * mini-arch.h: Prepare support for ppc64.
10207
10208         Contributed under MIT/X11 license.
10209
10210 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
10211
10212         * aot-runtime.c: Prepare support for ppc64.
10213
10214         Contributed under MIT/X11 license.
10215
10216 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
10217
10218         * mini-ops.h: Prepare support for ppc64.
10219
10220         Contributed under MIT/X11 license.
10221
10222 2008-05-04  Andreas Farber  <andreas.faerber@web.de>
10223
10224         * helpers.c: Add support for OSX/ppc64 and Linux/ppc64 (dis)assemblers.
10225
10226         Contributed under MIT/X11 license.
10227
10228 2008-05-03  Zoltan Varga  <vargaz@gmail.com>
10229
10230         * aot-runtime.c (load_aot_module): Avoid trying to load aot code for dynamic
10231         assemblies, since aot_name is not a full path, causing us to load MS.NET 
10232         assemblies on windows.
10233
10234 ?2008-04-28  Kornel Pal  <kornelpal@gmail.com>
10235
10236         * mini.c (mono_jit_compile_method_inner): Use g_warning instead of g_error
10237         for unsupported METHOD_IMPL_ATTRIBUTE_NATIVE.
10238         * main.c: Use UTF-8 encoded command line instead of Windows default code
10239         page on Windows to support Unicode.
10240         * driver.c (DllMain): New function for mixed-mode assembly support.
10241         * Makefile.am: Add -Wl,--kill-at to libmono_la_LDFLAGS on Windows to
10242         export __stdcall functions without decoration.
10243
10244         Contributed under MIT/X11 license.
10245
10246 2008-04-28  Mark Probst  <mark.probst@gmail.com>
10247
10248         * tramp-amd64.c, mini-amd64.c: Preserve R11 in the trampoline by
10249         saving it very early.
10250
10251 2008-04-28  Mark Probst  <mark.probst@gmail.com>
10252
10253         * mini.h, mini.c: Lots of code for accessing the old RGCTX
10254         deleted.  The only way to access the new RGCTX is via the
10255         trampline.
10256
10257         * mini.c, mini-amd64, mini-x86.c, mini-exceptions.c: Pass the
10258         vtable instead of the RGCTX to static methods.
10259
10260         * mini-tramplines.c, tramp-amd64.c, tramp-x86.c: Trampoline for
10261         accessing the new RGCTX.
10262
10263         * generic-sharing.c: There is no separation between self, type
10264         arguments and other types in the RGCTX anymore.
10265
10266 2008-04-25  Jonathan Chambers <joncham@gmail.com>
10267
10268         * mini-amd64.c (add_general): Remove previous stack adjustment.
10269         (mono_arch_call_opcode): Remove OP_OUTARG_MEMBASE and instead simply
10270         adjust stack pointer after pushing args. Adjust ARGS_OFFSET to account
10271         for 32 bytes of stack space reserved for all calls.
10272         
10273         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Remove.
10274         (OP_AMD64_OUTARG_ALIGN_STACK): Take argument to specify size of stack 
10275         adjustment.
10276         
10277         Code contributed under MIT/X11 license.
10278
10279 2008-04-23  Rodrigo Kumpera  <rkumpera@novell.com>
10280
10281         * mini.c (mini_method_verify): Only verify non-inflated methods, check
10282         against the root definition, peeling out method and type instantiations.
10283         Cache verify success results, code that fails verification is still
10284         checked multiple times.
10285
10286 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
10287
10288         * mini.c (mono_method_to_ir): Avoid inserting write barriers for stores of null.
10289
10290 2008-04-23  Jonathan Chambers <joncham@gmail.com>
10291
10292         * mini-amd64.c (add_general): Always increment stack on Win64.
10293         (mono_arch_call_opcode): Use OP_OUTARG_MEMBASE instead of OP_OUTARG
10294         on Win64.
10295         
10296         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Add OP_OUTARG_MEMBASE for 
10297         stack based argument handling on Win64.
10298         
10299         Code contributed under MIT/X11 license.
10300
10301 2008-04-23  Raja R Harinath  <harinath@hurrynot.org>
10302
10303         * Makefile.am (version.h): Add support for git-svn.
10304
10305 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
10306
10307         * mini-exceptions.c (mono_handle_native_sigsegv): Rework the gdb calling code
10308         so instead of calling g_spawn_command_line_sync, we do everything by hand, 
10309         avoiding allocations and libc functions which might deadlock.
10310         
10311         * mini-exceptions.c (mono_handle_native_sigsegv): Avoid calling gdb if the
10312         'no-gdb-backtrace' option is set.
10313
10314         * mini.c (mini_parse_debug_options): Parse 'no-gdb-backtrace' option.
10315
10316         * mini.h (MonoDebugOptions): Add 'no_gdb_backtrace' option.
10317
10318 2008-04-21  Martin Baulig  <martin@ximian.com>
10319
10320         * debug-debugger.h (MonoDebuggerInfo): Removed `attach', `detach'
10321         and `get_lmf_addr'; `notification_address' is no longer a pointer.
10322
10323 2008-04-21  Martin Baulig  <martin@ximian.com>
10324
10325         * debug-debugger.h (MonoDebuggerInfo): Added `thread_vtable_ptr',
10326         `thread_vtable', `event_handler_ptr' and `event_handler'.
10327
10328 2008-04-21  Martin Baulig  <martin@ximian.com>
10329
10330         * debug-debugger.h (MonoDebuggerInfo): Added `init_code_buffer';
10331         allows delayed initialization of the `executable_code_buffer' when
10332         attaching.
10333
10334 2008-04-21  Martin Baulig  <martin@ximian.com>
10335
10336         * mini.h (mono_debugger_create_notification_function): Removed.
10337         * tramp-*.c (mono_debugger_create_notification_function): Removed.
10338
10339         * mdb-debug-info64.s
10340         (MONO_DEBUGGER__notification_function): Added this in the .text section.
10341
10342         * mdb-debug-info32.s
10343         (MONO_DEBUGGER__notification_function): Added this in the .text section.
10344
10345         * Makefile.am: Fix the mdb-debug-info*.s logic; the debugger
10346         currently only works on x86 and x86_64, so don't create it on ppc.
10347
10348 2008-04-21  Martin Baulig  <martin@ximian.com>
10349
10350         * mini.h (MonoDebugOptions): Added `mdb_optimizations'.
10351
10352         * mini.c
10353         (mini_method_compile): In the fp elimination check, check
10354         `debug_options.mdb_optimizations' in addition to
10355         mono_debug_using_mono_debugger().       
10356
10357         * driver.c (mono_main): Added `--debug=mdb-optimizations' option to
10358         disable some JIT optimizations which are only disabled when
10359         running inside the debugger.
10360         Added `--help-debug' option to describe the debugging options.
10361         (parse_debug_options): New static function to parse the `--debug'
10362         options, so we can easily add more stuff in future.
10363
10364 2008-04-20  Zoltan Varga  <vargaz@gmail.com>
10365
10366         * mini.c (set_exception_type_from_invalid_il): Avoid reading invalid memory when
10367         the method has no body.
10368
10369 2008-04-19  Jonathan Chambers <joncham@gmail.com>
10370
10371         * mini-amd64.c (cpuid): Implement with MSVC intrinsic as inline
10372         assembly is not allowed in MSVC 64-bit compiler. 
10373         (mono_arch_cpu_init): Don't set floating point precision on MSVC build
10374         as we get floating point exceptions everywhere.
10375         
10376         * exceptions-amd64.c (get_throw_trampoline): Push empty args on stack to
10377         correctly align arguments for call to throw_exception.
10378         (prepare_for_guard_pages): Cast to guint64 instead of unsigned long.
10379         
10380         Code contributed under MIT/X11 license.
10381
10382 2008-04-19  Zoltan Varga  <vargaz@gmail.com>
10383
10384         * mini-amd64.c (amd64_patch): Make the check for (%rip) addressing more strict.
10385
10386 2008-04-17  Zoltan Varga  <vargaz@gmail.com>
10387
10388         * inssel.brg (OP_SWITCH): Use (gint64) instead of (long) to cast a large constant.
10389
10390         * mini-amd64.c (NEW_INS): Set cil_code.
10391
10392         * mini.c (mini_method_compile): Move the disabling of fp elimination to here
10393         from mini-amd64.c so all debugger related logic is in one place.
10394
10395         * mini.c: Set cfg->ip to NULL after passes which set it so instructions created
10396         later won't have a random ip assigned to them.
10397
10398 2008-04-16  Zoltan Varga  <vargaz@gmail.com>
10399
10400         * mini-trampolines.c (mono_create_jump_trampoline): Add an assert to check that
10401         the arch specific function initializes code_size.
10402         (mono_create_delegate_trampoline): Ditto.
10403
10404         * mini-mips.h mini-mips.c inssel-mips.brg inssel-long32-mips.brg cpu-mips.md
10405         tramp-mips.c: Resurrect MIPS port and also fix the issues on little-endian
10406         platforms.
10407
10408         * liveness.c (mono_analyze_liveness): Disable the initlocals optimization if 
10409         running under the debugger.
10410
10411         * linear-scan.c (mono_linear_scan): Avoid sharing registers if running under the
10412         debugger.
10413
10414         * mini.c (mini_method_compile): Set a few flags in cfg if running under the
10415         debugger. Also move the disabling of optimizations here from driver.c.
10416         (mono_allocate_stack_slots_full): Avoid sharing stack slots if running under the
10417         debugger.
10418
10419         * mini.h (MonoCompile): Add a few new flags.
10420
10421 2008-04-15  Zoltan Varga  <vargaz@gmail.com>
10422
10423         * mini.c (mono_method_to_ir): Set cfg->ip before processing an IL instruction
10424         so the cil_code field of created MonoInst's is properly set.
10425         (mini_select_instructions): Ditto.
10426
10427         * mini.h (MONO_INST_NEW): Initialize the cil_code field using cfg->ip.
10428         (MONO_INST_NEW_CALL): Ditto.
10429
10430         * mini.c inssel.brg inssel-x86.brg inssel-amd64.brg: Use MONO_INST_NEW ()
10431         in many places so the ins->cil_code field is properly initialized.
10432
10433         * mini.c (mono_bblock_add_inst): Call MONO_ADD_INS () so the logic is in one
10434         place.
10435
10436 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
10437
10438         * mini.c (mini_method_compile): Print a different message when compiling a 
10439         shared method.
10440         
10441         * mini.c (GENERIC_SHARING_FAILURE): Print a failure message when verbose_level
10442         > 1.
10443
10444 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
10445
10446         * mini-amd64.c (mono_arch_output_basic_block): Implement OP_ABS directly using
10447         SSE2 instructions.
10448
10449         * basic-math.cs: Fix warnings. Add a test for Math.Abs ().
10450         
10451 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
10452
10453         * mini.c (handle_stack_args): Make this return void since its return value was
10454         never used. Also set cfg->unverifiable for invalid IL instead of calling
10455         G_BREAKPOINT ().
10456
10457 2008-04-10  Mark Probst  <mark.probst@gmail.com>
10458
10459         * mini.c: Make sure "this" is live in catch clauses with type
10460         variables in shared generic code.
10461
10462 2008-04-08  Mark Probst  <mark.probst@gmail.com>
10463
10464         * mini.c: Replaced uses of MONO_TYPE_IS_REFERENCE with calls to
10465         generic_class_is_reference_type() to ensure the proper behaviour
10466         when sharing generic code and the type in question is a type
10467         argument.
10468
10469 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
10470
10471         * mini-exceptions.c: Applied patch from Mark Spruiell (mes@zeroc.com). Fix
10472         race conditions when printing thread dumps. Fixes #377738.
10473
10474 2008-04-08  Massimiliano Mantione  <massi@ximian.com>
10475         
10476         aliasing.c (update_aliasing_information_on_inst): Fixed a bug which
10477         shows up when both MonoInst arguments can cause aliasig.
10478         There is likely no way in the current JIT to trigger this problem, but
10479         it showed up in the development of generics sharing, when in a new
10480         opcode both args of an OP_GROUP can be aliases (addresses of a local).
10481         When the generics sharing code will be committed, its tests will be
10482         valid also for this bug.
10483
10484 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
10485
10486         * aot-runtime.c (decode_patch_info): Always transform PATCH_INFO_WRAPPER to
10487         PATCH_INFO_METHOD.
10488
10489         * mini.c (mono_resolve_patch_target): Fix a crash in the AOT case if method is
10490         NULL.
10491
10492 2008-04-07  Zoltan Varga  <vargaz@gmail.com>
10493
10494         * mini-exceptions.c (mono_handle_exception_internal): When --debug=casts is used,
10495         use a more detailed exception message for InvalidCastException.
10496
10497         * mini.h (MonoJitTlsData): Add 'class_cast_from' and 'class_cast_to' fields.
10498
10499         * driver.c (mono_main): Add --debug=casts option to turn on better 
10500         InvalidCastException message details.
10501
10502         * mini.c (mini_get_debug_options): New helper function to return the address of
10503         the debug_options variable.
10504
10505         * mini.c (mono_get_jit_tls_intrinsic): New helper function to create a load of
10506         the jit_tls TLS variable.
10507
10508         * mini.c (mono_jit_tls): New TLS variable.
10509
10510         * inssel.brg: Save the details of a cast to a TLS variable when the --debug=casts
10511         option is used.
10512
10513 2008-04-07  Rodrigo Kumpera  <rkumpera@novell.com>
10514
10515         * mini.h: Removed verifer related stuff. This code was moved to verify.c
10516
10517         * mini.c: Removed verifer related stuff, code moved to verify.c.
10518
10519         * driver.c: Using code from verify.c instead of mini.c.
10520
10521 2008-04-05  Zoltan Varga  <vargaz@gmail.com>
10522
10523         * mini.c (check_for_method_verify): Remove the mscorlib comment since it is no
10524         longer valid.
10525
10526 2008-04-04  Rodrigo Kumpera  <rkumpera@novell.com>
10527
10528         * mini.c (check_for_method_verify): Enabling verification of
10529         corlib if mono_verify_all is set. Bugs in the verifier preventing that
10530         have been fixed.
10531
10532 2008-04-04  Zoltan Varga  <vargaz@gmail.com>
10533
10534         * exceptions-amd64.c (throw_exception): Unify the win32/non-win32 cases, save
10535         caller saved registers as well.
10536         
10537         * exceptions-amd64.c (mono_arch_get_restore_context): Restore most caller
10538         saved registers as well.
10539
10540 2008-03-30  Zoltan Varga  <vargaz@gmail.com>
10541
10542         * mini-x86.c cpu-x86.md inssel-x86.brg: Add min/max intrinsics.
10543
10544         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of the non-SSE2 floating point
10545         code.
10546
10547 2008-03-27  Zoltan Varga  <vargaz@gmail.com>
10548
10549         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'gsctx' argument and pass it
10550         to get_call_info.
10551         (get_call_info): Take a gsctx argument instead of 'cfg'.
10552
10553 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
10554
10555         * mini.c (check_for_method_verify): Avoid verifying mscorlib methods even if
10556         mono_verify_all is set.
10557
10558         * driver.c (compile_all_methods_thread_main): Don't exit at the first error.
10559
10560         * mini.c mini.h: Remove the unused and incomplete stack merge verification code.
10561
10562 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
10563
10564         * driver.c (compile_all_methods_thread_main): Error out if compilation fails with
10565         an exception.
10566
10567         * driver.c mini.c mini.h: Add a --verify-all development option to test the
10568         verifier and the code generated by the compiler.
10569
10570 2008-03-25  Mark Probst  <mark.probst@gmail.com>
10571
10572         * mini.c: Generic sharing of the non-nullable case of the box
10573         instruction.
10574
10575 2008-03-24  Zoltan Varga  <vargaz@gmail.com>
10576
10577         * inssel.brg: Fix the build.
10578
10579         * iltests.il.in: Add a test for lconv.ovf.u8.un.
10580
10581 2008-03-24  Rodrigo Kumpera  <rkumpera@novell.com>
10582
10583         * mini.c (mono_method_to_ir): Implement readonly for ldelema and
10584         Array:Address. Fixes #372410.
10585
10586         * iltests.il.in: New tests for readonly prefix.
10587
10588 2008-03-23  Zoltan Varga  <vargaz@gmail.com>
10589
10590         * mini.h mini.c mini-trampolines.c: Move trampoline related code to 
10591         mini-trampolines.c.
10592
10593         * mini.h mini.c mini-exceptions.c: Move mini_init_exceptions () to 
10594         mini-exceptions.c.
10595
10596         * mini-amd64.c mini-s390.c (mono_arch_lowering_pass): Use mono_decompose_op_imm ().
10597         
10598         * mini.c (mono_decompose_op_imm): New helper function.
10599
10600         * mini-s390x.c (calculate_sizes): Rename this to get_call_info for consistency
10601         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
10602         return value.
10603
10604         * mini-s390x.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
10605         mono_arch_output_basic_block. Fix warnings.
10606
10607         * inssel-s390x.brg: Remove the unneccesary OP_LMUL_IMM rule to fix the s390x build
10608         for now.
10609
10610 2008-03-22  Zoltan Varga  <vargaz@gmail.com>
10611
10612         * mini-exceptions.c (ves_icall_get_frame_info): Remove the ia64/s390 workarounds
10613         since the extra frame is now detected automatically inside the loop.
10614
10615         * mini-s390.c (mono_arch_peephole_pass_2): Remove the arch independent peephole 
10616         opts which are now in mono_peephole_ins ().
10617         
10618         * mini-s390.c (mono_arch_output_basic_block): Fix OP_FCALL_MEMBASE.
10619
10620         * mini-exceptions.c (ves_icall_get_frame_info): Skip native-to-managed wrapper
10621         frames and skip duplicate managed-to-native frames. Fixes #367665.
10622
10623         * mini-x86.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
10624         opts which are now in mono_peephole_ins ().
10625         (mono_arch_peephole_pass_2): Ditto.
10626
10627         * mini-codegen.c (mono_peephole_ins): Fix a problem on 32 bit platforms.
10628
10629         * mini-codegen.c (mono_peephole_ins): New helper function containing the
10630         arch independent peephole optimizations.
10631
10632         * mini-amd64.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
10633         opts which are now in mono_peephole_ins ().
10634
10635         * mini-amd64.c (mono_arch_peephole_pass_2): Ditto.
10636         
10637         * mini-s390.c (mono_arch_output_basic_block): Fix build.
10638
10639         * tramp-s390.c (mono_arch_get_vcall_slot): Handle an additional instruction
10640         pattern.
10641
10642         * mini-s390.c (mono_arch_output_basic_block): Handle big offsets in the
10643         CALL_MEMBASE opcodes. Fix setting of the destination in the OP_LCONV_TO_OVF_I
10644         opcode. 
10645
10646 2008-03-21  Zoltan Varga  <vargaz@gmail.com>
10647
10648         * mini-s390.c (calculate_sizes): Rename this to get_call_info for consistency
10649         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
10650         return value.
10651
10652         * mini-s390.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
10653         mono_arch_output_basic_block. Fix warnings.
10654
10655 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
10656
10657         * inssel-long32.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
10658         conv.ovf.u.un.
10659
10660 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
10661
10662         * inssel-long.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
10663         conv.ovf.u.un.
10664
10665         * iltests.il: Add new tests.
10666
10667 2008-03-20  Kornel Pal  <kornelpal@gmail.com>
10668
10669         * mini.c: Removed Windows version macros.
10670
10671 2008-03-20  Mark Probst  <mark.probst@gmail.com>
10672
10673         * generic-sharing.c: Put reflection types in the extensible part
10674         of the runtime generic context.
10675
10676         * mini.c: Generic sharing of the GetTypeHandle special case of the
10677         ldtoken instruction.
10678
10679 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
10680
10681         * mini.h (MONO_BB_FOR_EACH_INS_SAFE): New helper macro.
10682
10683         * mini-<ARCH>.c: Use the new macro instead in the peephole/lowering passes.
10684         
10685         * mini.h (MONO_DEL_INS): Rename to MONO_DELETE_INS and Add a 'bb' argument for 
10686         consistency with the other version on the linear IR branch.
10687
10688         * mini-<ARCH>.c: Update callers of MONO_DEL_INS.
10689
10690         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i/conv.ovf.u.
10691
10692         * iltests.il.in: Add new tests.
10693
10694 2008-03-19  Zoltan Varga  <vargaz@gmail.com>
10695
10696         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i.un/conv.ovf.u.un.
10697
10698         * iltests.il.in: Add new tests.
10699
10700 2008-03-19  Mark Probst  <mark.probst@gmail.com>
10701
10702         * mini.c: Two variables with the same name were declared in
10703         nesting contexts and one wasn't initialized.  Fixed.
10704
10705 2008-03-19  Mark Probst  <mark.probst@gmail.com>
10706
10707         * mini.c: Generic sharing of the initobj instruction.
10708
10709 Tue Mar 18 20:18:02 CET 2008 Paolo Molaro <lupus@ximian.com>
10710
10711         * mini.c: make the test to optimize ldtoken from typeof() more
10712         precise.
10713
10714 2008-03-18  Mark Probst  <mark.probst@gmail.com>
10715
10716         * mini.c: Generic sharing of the initobj instruction for reference
10717         types.
10718
10719 Tue Mar 18 12:39:27 CET 2008 Paolo Molaro <lupus@ximian.com>
10720
10721         * mini.h, mini-amd64.c, mini-x86.c, tramp-amd64.c, tramp-x86.c: change
10722         the mono_breakpoint_clean_code() code to perform bound checks.
10723
10724 Tue Mar 18 11:50:14 CET 2008 Paolo Molaro <lupus@ximian.com>
10725
10726         * mini.h, mini-trampolines.c, tramp-*.c: change the signature of
10727         mono_arch_patch_callsite() to include the start of the managed method
10728         to be able to perform bound checks.
10729
10730 2008-03-17  Mark Probst  <mark.probst@gmail.com>
10731
10732         * mini.c: Generic sharing for the isinst instruction.
10733
10734 2008-03-17  Mark Probst  <mark.probst@gmail.com>
10735
10736         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
10737         inssel-long32-mips.brg: Added opcodes for doing indirect calls
10738         with the runtime generic context argument.
10739
10740         * mini.c: Share calls to several types of unsharable methods by
10741         putting the address of the method code in the runtime generic
10742         context and doing an indirect call.
10743
10744         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
10745         to switches.
10746
10747 2008-03-16  Mark Probst  <mark.probst@gmail.com>
10748
10749         * generic-sharing.c: Change due to a change in the runtime genric
10750         context API.
10751
10752 2008-03-15  Martin Baulig  <martin@ximian.com>
10753
10754         * tramp-x86.c
10755         (mono_arch_nullify_class_init_trampoline): Add call to
10756         mono_breakpoint_clean_code() to make things work when running
10757         inside the debugger.
10758
10759         * tramp-amd64.c
10760         (mono_arch_nullify_class_init_trampoline): Add call to
10761         mono_breakpoint_clean_code() to make things work when running
10762         inside the debugger.
10763
10764 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
10765
10766         * inssel-long.brg (reg): Fix 64 bit build.
10767
10768 2008-03-14  Mark Probst  <mark.probst@gmail.com>
10769
10770         * mini.c, mini.h: Share static generic code by passing it an
10771         implicit argument pointing to the runtime generic context.
10772
10773         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
10774         inssel-long32-mips.brg: New opcodes for calling shared static,
10775         which need to be passed the runtime generic context.
10776
10777         * mini-amd64.c, mini-x86.c: Save the runtime generic context
10778         argument on the stack in the prologue if needed.  New function for
10779         finding the runtime generic context argument from the registers
10780         saved by the trampoline.
10781
10782         * mini-amd64.h, mini-x86.h: Specify which register to use for the
10783         runtime generic context argument.
10784
10785         * tramp-amd64.c: Also restore the register used for the runtime
10786         generic context argument.
10787
10788         * mini-trampoline.c: Resolve shared static calls by consulting the
10789         runtime generic context via the new argument.
10790
10791         * generic-sharing.c: Add an argument to sharability-checking
10792         functions that specifies whether type variables should be treated
10793         as sharable type arguments.
10794
10795         * inssel-x86.brg: Removed a superfluous, buggy rule.
10796
10797         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
10798         to switches.
10799
10800 2008-03-14  Martin Baulig  <martin@ximian.com>
10801
10802         * debug-debugger.c (main_thread_handler): Call
10803         mono_runtime_run_main() without sending any notifications.
10804
10805         * debug-debugger.h (MonoDebuggerInfo): Added `get_method_signature.
10806
10807 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
10808
10809         * mini-trampolines.c (mono_magic_trampoline): Fix build on platforms without IMT.
10810
10811 2008-03-14  Mark Probst  <mark.probst@gmail.com>
10812
10813         * tramp-x86.c: Fixed register restore offsets in the trampoline
10814         code for ECX and EDX.
10815
10816 2008-03-12  Geoff Norton  <gnorton@novell.com>
10817
10818         * mini-arm.h: Add some #defines for locating sp, pc, r4 with
10819         different ucontext_t implementations.
10820         * exceptions-arm.c: Use the above defines to get exceptions working on 
10821         iPhone (based on a patch by Luke Howard lukeh@padl.com)
10822         * mini-arm.c: Implement iPhone icache support (based on a patch by
10823         Luke Howard lukeh@padl.com)
10824
10825 2008-03-12  Mark Probst  <mark.probst@gmail.com>
10826
10827         * mini.c: Enable generic sharing of calls to non-static
10828         non-interface non-generic non-value-type methods.
10829
10830         * mini-trampolines.c: Resolve calls from shared generic code.
10831
10832 2008-03-11  Zoltan Varga  <vargaz@gmail.com>
10833
10834         * Makefile.am il2tests.il iltests.il.in: Delete il2tests, merge it into iltests.
10835
10836         * tramp-amd64.c (mono_arch_create_trampoline_code): Correctly save RBP as well.
10837
10838 Mon Mar 10 11:59:34 CET 2008 Paolo Molaro <lupus@ximian.com>
10839
10840         * mini.c: some fixes for the AOT compiler.
10841
10842 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
10843
10844         * cpu-amd64.md: Add clob:1 to some float opcodes.
10845
10846 2008-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
10847
10848         * mini.h: Added MiniVerifierMode enumeration.
10849
10850         * mini.c: Added mini_verifier_set_mode to control
10851         the usage of the new verifier.
10852
10853         * mini.c (mono_method): Integrated the new verifier.
10854
10855         * driver.c: Extended --security option with validil and
10856         verifiable options to activate the new verifier.
10857
10858 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
10859
10860         * mini.c jit-icalls.h jit-icalls.c: Generalize the exception creation 
10861         optimization to ctors taking 0 or 2 arguments too.
10862
10863         * mini.c (mono_method_to_ir): Optimalize the size of the exception throwing code
10864         a bit.
10865
10866         * jit-icalls.h (mono_create_corlib_exception): New JIT icall.
10867
10868         * mini-amd64.c (mono_arch_emit_prolog): Improve the first_bb optimization a bit.
10869
10870 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
10871
10872         * mini.c (mono_method_to_ir): Apply one of the ldstr optimizations in the
10873         non-aot case as well.
10874
10875         * cpu-amd64.md: Reduce the max size of some frequently used opcodes.
10876
10877         * aot-runtime.c (decode_patch_info): Update this after the ldfld/stfld wrapper
10878         changes.
10879
10880         * aot-compiler.c (encode_patch): Ditto.
10881
10882         * mini.h (G_MININT32): Fix the definition of this.
10883
10884 2008-03-05  Zoltan Varga  <vargaz@gmail.com>
10885
10886         * mini.h: Define G_MININT32/G_MAXINT32 if using an older glib version.
10887
10888         * cfold.c: Remove definition of G_MININT32 which is now in mini.h.
10889
10890 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
10891
10892         * mini-amd64.c (mono_arch_compute_omit_fp): Don't disable fp elimination for 
10893         methods returning vtypes in registers.
10894         (mono_arch_allocate_vars): Ditto.
10895
10896         * mini-amd64.c (mono_arch_get_this_arg_reg): New arch specific helper function.
10897
10898         * tramp-amd64.c (mono_arch_get_unbox_trampoline): Use mono_arch_get_this_arg_reg ().    
10899
10900         * generics.cs: Add a test from the linear IR branch.
10901
10902         * mini-amd64.c (emit_load_volatile_arguments): Handle vtypes passed in regs too.
10903
10904         * mini.c (inline_method): Cache failed inline attempts.
10905
10906 2008-03-04  Mark Probst  <mark.probst@gmail.com>
10907
10908         * mini.c: For shared methods of generic classes put the location
10909         of "this" into the MonoGenericJitInfo.
10910
10911         * mini-x86.c, mini-amd64.c, mini.h: Added function for fetching a
10912         register out of a MonoContext by register number.  Add the generic
10913         sharing context as an argument to mono_arch_find_this_argument().
10914
10915         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
10916         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c: Added stub
10917         for new arch function.
10918
10919         * mini-exception.c: Handle open exception clauses in shared
10920         generic code.
10921
10922         * mini-trampolines.c: Supply additional argument to
10923         mono_arch_find_this_argument().
10924
10925 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
10926
10927         * Makefile.am (regtests): Run the bench.exe tests last.
10928
10929 2008-03-03  Zoltan Varga  <vargaz@gmail.com>
10930
10931         * mini-amd64.c (mono_arch_emit_prolog): Improve the first bblock optimization
10932         a bit.
10933
10934 2008-03-02  Zoltan Varga  <vargaz@gmail.com>
10935
10936         * mini.c (mono_method_to_ir): Allow callvirt on static methods for compatibility
10937         with MS.
10938
10939         * mini-amd64.c (mono_arch_emit_prolog): Fix tracing after the last change.
10940         
10941         * mini-amd64.c (mono_arch_emit_prolog): Avoid saving dead arguments.
10942
10943         * mini.c (mono_method_check_inlining): Avoid disabling inlining for methods
10944         whose class has no cctor.
10945
10946         * liveness.c (mono_analyze_liveness): Mark dead arguments with MONO_INST_IS_DEAD.
10947
10948 2008-03-01  Zoltan Varga  <vargaz@gmail.com>
10949
10950         * mini.c (mono_method_to_ir): Report calling a static method using callvirt as
10951         unverified.
10952
10953 2008-02-29  Zoltan Varga  <vargaz@gmail.com>
10954
10955         * mini-ops.h: Remove OP_SPARC_INARG_VT, add a new OP_VTARG_ADDR opcode instead
10956         to be in sync with the code on the linear IR branch.
10957
10958         * mini-sparc.c inssel-sparc.brg: Use OP_VTARG_ADDR.
10959
10960         * inssel-s390.brg (OP_SETRET (freg)): Set dreg correctly.
10961
10962 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
10963
10964         * mini-mips.c: Use cfg->vret_addr instead of cfg->ret.
10965
10966         * mini-s390x.c: Use cfg->vret_addr instead of cfg->ret.
10967
10968         * mini-s390.c: Use cfg->vret_addr instead of cfg->ret.
10969
10970         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_VARS define.
10971
10972         * mini-<ARCH>.c (mono_arch_create_vars): Define this for all architectures.
10973         
10974         * mini.c (mono_method_to_ir): Avoid invalid memory reads for methods without a
10975         body.
10976
10977 2007-11-14  Yoichi NAKAYAMA  <nakayama@pixela.co.jp>
10978
10979         * inssel-mips.brg (OP_OUTARG_MEMBASE (CEE_LDIND_R4 (base))): Add missing
10980         OP_LOADR4_MEMBASE emission.
10981
10982         * mini-codegen.c (mono_spillvar_offset_int): Remove assertion.
10983         (mono_spillvar_offset_float): Ditto.
10984
10985         * mini-mips.c (mono_arch_emit_prolog): Ditto.
10986
10987         * inssel-long32-mips.brg: Fix wrong branching, reduce redundant code
10988         emission.
10989
10990         * basic-long.cs: Add regression tests for them.
10991
10992         * mini-mips.c (add_float32_arg): Respect o32 calling convention in gr
10993         use.
10994         (mono_arch_allocate_vars): Fix representation of single-precision float
10995         argument.
10996         (mono_arch_output_basic_block): Ditto.
10997
10998         * inssel-mips.brg: Ditto, remove duplicate items.
10999
11000         * mini-mips.c (emit_load_volatile_arguments): New function to handle
11001         arguments of tail calls as on other platforms.
11002         (mono_arch_output_basic_block): Handle tail calls.
11003
11004         * inssel-mips.brg (OP_OUTARG_VT (CEE_LDOBJ (base))): Correct destination
11005         register.
11006
11007         * objects.cs (test_5_pass_static_struct): Add test for it.
11008
11009         Contributed under MIT/X11 license.
11010
11011 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
11012
11013         * Makefile.am: Use gmcs for compiling the regression tests.
11014
11015         * *.2.cs *.2.il: Rename to *.cs and *.il.
11016
11017 2008-02-24  Zoltan Varga  <vargaz@gmail.com>
11018
11019         * regalloc.h: Make the vassign array smaller.
11020
11021         * mini.c (mini_method_compile): Remove an unused field in cfg.
11022
11023         * mini-codegen.c: Add a bunch of micro optimizations.
11024
11025 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
11026
11027         * regalloc.h: Remove some unused fields.
11028
11029 2008-02-22  Zoltan Varga  <vargaz@gmail.com>
11030
11031         * mini-amd64.c (mono_arch_patch_code): Fix a warning.
11032
11033         * ssa.c (mono_ssa_remove): Avoid declaring volatile variables dead.
11034
11035 2008-02-22  Mark Probst  <mark.probst@gmail.com>
11036
11037         * mini.h: New trampoline type (RGCTX_LAZY_FETCH).
11038
11039         * mini-trampolines.c, tramp-amd64.c, tramp-x86.c: RGCTX lazy fetch
11040         trampoline: Fetch an entry from the runtime generic context.  If
11041         it's NULL, jump to the actual trampoline to fill the runtime
11042         generic context.  Otherwise, return it.
11043
11044         * mini.c: Call the lazy fetch trampoline to get entries out of the
11045         runtime generic context.
11046
11047         * tramp-ia64.c, tramp-arm.c, tramp-alpha.c, tramp-s390.c,
11048         tramp-s390x.c, tramp-ppc.c, tramp-hppa.c, tramp-mips.c,
11049         tramp-sparc.c: Stubs for the lazy fetch trampoline.
11050
11051 2008-02-21  Mark Probst  <mark.probst@gmail.com>
11052
11053         * mini.c: Fetch data out of the extensible part of the runtime
11054         generic context instead of calling a helper function.
11055
11056         * generic-sharing.c: Some functions moved into
11057         metadata/generic-sharing.c.  Helper function for fetching other
11058         types now checks and asserts against extensible rgctx (just for
11059         debugging purposes - the helper function isn't called anymore
11060         unless for debugging).
11061
11062 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
11063
11064         * mini-arm.c (mono_arch_output_basic_block): Implement proper argument passing
11065         for tail calls up to the point that the tests in iltests.exe run. Also add a
11066         dummy CKFINITE implementation.
11067         (mono_arch_emit_prolog): Avoid saving the method in the LMF since it is only
11068         needed for trampoline LMF frames.
11069
11070         * exceptions-arm.c (mono_arch_find_jit_info): Only read lmf->method for 
11071         trampoline LMF frames.
11072
11073 2008-02-21  Rodrigo Kumpera  <rkumpera@novell.com>
11074
11075         * mini.c (inline_method): clean any pending loader error when inlining fail.
11076         Otherwise loader errors in mono_method_to_ir leaks and cause spurious errors.
11077
11078 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
11079
11080         * aot-compiler.c (encode_patch): Handle ICALL_ADDR patch type.
11081
11082         * aot-runtime.c (decode_patch_info): Ditto.
11083
11084         * mini.c (mono_resolve_patch_target): Ditto.
11085         
11086         * aot-compiler.c (compile_method): Add some experimental code for AOT compiling
11087         icall wrappers.
11088
11089         * patch-info.h (PATCH_INFO): Add 'ICALL_ADDR' patch type.
11090         
11091         * mini.c (mono_method_to_ir): Convert a CEE_MONO_LDPTR opcode to an AOT constant
11092         if it references an icall address.
11093
11094 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
11095
11096         * cpu-s390x.md: Remove some more unused opcodes.
11097         
11098         * cpu-s390x.md: Remove some unused opcodes.
11099
11100         * mini-ia64.c (mono_arch_lowering_pass): Add some more opcodes. Use
11101         mono_op_imm_to_op ().
11102
11103         * mini-sparc.c (opcode_to_sparc_cond): Use the mono_opcode_to_cond () functions
11104         instead of a switch statement.
11105         
11106         * mini-sparc.c (mono_arch_allocate_vars): Allocate a stack slot for use by
11107         the int<->float conversion opcodes instead of using mono_spillvar_offset_float ().
11108
11109         * mini-codegen.c: Eliminate rassign macro which is no longer needed.
11110         
11111         * mini-codegen.c: Remove unused mono_regstate2_... functions.
11112
11113         * mini-codegen.c (mono_print_ins_index): Avoid printing an index when it is
11114         -1.
11115
11116 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
11117
11118         * driver.c (mono_main): Improve error reporting when an assembly cannot be
11119         opened. Fixes #362607.
11120
11121         * cpu-ia64.md cpu-s390x.md: Remove some unused opcodes.
11122
11123         * iltests.il.in: Add a test for static methods in interfaces.
11124
11125 2008-02-18  Zoltan Varga  <vargaz@gmail.com>
11126
11127         * genmdesc.c (build_table): Fix a crash on older glib versions.
11128
11129         * cpu-sparc.md: Remove some unused opcodes.
11130         
11131         * genmdesc.c: Error out if the .md contains CEE_ opcodes if 
11132         MONO_ARCH_ENABLE_NORMALIZE_OPCODES is defined.
11133
11134         * cpu-amd64.md: Remove some unused opcodes.
11135
11136         * mini.h mini-ops.h mini.c: Define the OP_Ccc opcodes in mini-ops.h normally
11137         like the other opcodes.
11138
11139 2008-02-17  Zoltan Varga  <vargaz@gmail.com>
11140
11141         * mini-ia64.c: Use cfg->vret_addr instead of cfg->ret.
11142
11143         * mini-arm.h mini-arm.c: Use cfg->vret_addr instead of cfg->ret.
11144
11145         * mini-sparc.c: Use cfg->vret_addr instead of cfg->ret. Name the MonoCompile
11146         variables 'cfg' instead of 'm' for consistency.
11147
11148         * mini-x86.c: Use cfg->vret_addr instead of cfg->ret.
11149
11150         * mini.h (MonoCompile): Add new 'vret_addr' field which represents the hidden
11151         argument holding the vtype return address, to avoid the ambigious use of
11152         cfg->ret for this purpose.
11153
11154         * mini.c (NEW_RETLOADA): Use vret_addr if set.
11155
11156         * mini-amd64.c: Use cfg->vret_addr instead of cfg->ret.
11157         
11158         * mini-codegen.c (mono_print_ins): Rename to mono_print_ins_index (), Add a
11159         new mono_print_ins () function which only takes one argument.
11160
11161 2008-02-15  Zoltan Varga  <vargaz@gmail.com>
11162
11163         * mini-s390.h (MONO_OUTPUT_VTR): Use cfg instead of s, avoid assignments to
11164         macro arguments.
11165
11166 2008-02-14  Zoltan Varga  <vargaz@gmail.com>
11167
11168         * mini-ops.h: Get rid of OP_SPARC_LOCALLOC_IMM.
11169
11170         * mini-sparc.c inssel-sparc.brg: Use OP_LOCALLOC_IMM instead of OP_SPARC_LOCALLOC_IMM.
11171
11172         * mini-x86.c: Sync with the version on the linear IR branch by adding new 
11173         opcodes and other small changes.
11174
11175         * mini-ops.h: Add some new opcodes from the linear IR branch.
11176
11177         * mini-ops.h: Get rid of the OP_X86_..._MEMBASE opcodes.
11178
11179         * mini-x86.c inssel-x86.brg cpu-x86.md: Get rid of the confusing _MEMBASE
11180         opcodes, use the REG_MEMBASE opcodes instead.
11181         
11182         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Get rid of the confusing _MEMBASE
11183         opcodes, use the REG_MEMBASE opcodes instead.
11184         
11185         * mini-amd64.c (mono_arch_output_basic_block): Sync with the version on the
11186         linear IR branch.
11187
11188         * mini.c (mono_op_imm_to_op): New helper function.
11189
11190         * mini-ops.h: Add some opcodes from linear IR branch.
11191
11192 2008-02-13  Zoltan Varga  <vargaz@gmail.com>
11193
11194         * mini-alpha.h mini-alpha.c tramp-alpha.c: Alpha port updates from Sergey Tikhonov 
11195         <tsv@solvo.ru>.
11196
11197 2008-02-12  Zoltan Varga  <vargaz@gmail.com>
11198
11199         * mini.c (mono_normalize_opcodes): Always convert CEE_CONV_R4/R8 to 
11200         OP_ICONV_TO_R4/R8.
11201
11202         * mini-ia64.c cpu-ia64.md: Add OP_ICONV_TO_R4/R8.
11203
11204 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
11205
11206         * aot-compiler.c (emit_method_code): Add an assert.
11207
11208         * mini-arm.h mini-arm.c exceptions-arm.c: Modify the exception throwing code and
11209         the IMT code so it is AOT friendly. Enable AOT for methods which call interface
11210         methods.
11211
11212 2008-02-08  Zoltan Varga  <vargaz@gmail.com>
11213
11214         * mini-arm.c (mono_arch_output_basic_block): Fix the ordering of arguments for 
11215         some load/store opcodes so they are consistent. 
11216         (mono_arch_emit_prolog): Simplify some code.
11217
11218         * aot-runtime.c (mono_aot_get_plt_entry): Fix a warning.
11219
11220         * objects.cs: Add tests for large argument offsets on ARM.
11221
11222         * mini-arm.c (mono_arch_emit_prolog): Fix handling of arguments with large 
11223         stack offsets. Fixes #359651.
11224
11225         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R4/R8 properly.
11226
11227         * cpu-s390x.md: Add OP_LCONV_TO_R4/R8.
11228
11229         * cpu-ia64.md mini-ia64.h mini-ia64.c: Get rid of CEE_ opcodes.
11230
11231         * mini-ops.h: Add OP_ICONV_TO_R_UN opcode.
11232
11233         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R_UN too.
11234
11235         * cpu-s390x.md cpu-s390.md mini-s390x.c mini-arm.c cpu-arm.md mini-s390.c: Get
11236         rid of CEE_CONV_R_UN.
11237
11238         * mini-s390x.c mini-s390x.h cpu-s390x.md inssel-s390x.brg: Get rid of CEE_ opcodes.
11239
11240 2008-02-07  Zoltan Varga  <vargaz@gmail.com>
11241
11242         * mini-s390.c mini-s390.h cpu-s390.md: Get rid of CEE_ opcodes.
11243
11244         * mini.c (mono_normalize_opcodes): Add some more opcodes.
11245
11246         * mini-arm.c mini-arm.h cpu-arm.md: Get rid of CEE_ opcodes.
11247
11248         * cpu-amd64.md: Remove some unused opcodes.
11249
11250         * mini-sparc.c mini-sparc.h cpu-sparc.md: Get rid of CEE_ opcodes.
11251
11252         * mini-x86.c mini-x86.h cpu-x86.md: Get rid of CEE_ opcodes.
11253
11254         * mini.c mini-<ARCH>.c: Remove mono_arch_local_regalloc (), instead make 
11255         arch specific functions for its parts. Call the peephole pass after local
11256         regalloc so the prolog can compute a more accurate max_offset.
11257         
11258         * mini.c (mono_normalize_opcodes): New mini pass to convert CEE_ opcodes to
11259         the corresponding OP_I/OP_L opcodes.
11260
11261         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of CEE_ opcodes.
11262
11263         * mini-sparc.c (mono_arch_output_basic_block): Fix the sparc build.
11264
11265 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
11266
11267         * mini-s390.c (mono_arch_get_inst_for_method): Remove the Interlocked cases
11268         as they are handled in mini.c.
11269
11270         * mini-s390x.c (mono_arch_get_inst_for_method): Ditto.
11271         
11272         * mini-<ARCH>.c (mono_arch_get_inst_for_method): Remove the MemoryBarrier
11273         case since it is handled in mini.c.
11274
11275         * cpu-sparc.md (sparc_setfreg_float): Fix the sparc build.
11276
11277         * mini-ops.h: Add new opcodes OP_CALL/OP_CALLVIRT.
11278
11279         * *.c: Use the new opcodes in the IR and back end code.
11280
11281         * mini-ops.h cpu-<ARCH>.md: Correct the name of the bgt_un opcodes.
11282
11283         * mini-amd64.c (emit_call_body): Use a far-call for calling dynamic methods.
11284
11285 2008-02-06  Mark Probst  <mark.probst@gmail.com>
11286
11287         * mini-trampolines.c (mono_generic_class_init_trampoline): Removed
11288         an assert because it has a race condition.
11289
11290 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
11291
11292         * tramp-amd64.c (mono_arch_patch_callsite): Add more diagnostics.
11293
11294         * inssel.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused CEE_RET opcode.
11295
11296         * mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused LDIND/STIND opcodes.
11297
11298         * *.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of OP_SETREG/OP_SETFREG/OP_SETREGIMM,
11299         use OP_MOVE/OP_FMOVE/OP_ICONST instead.
11300
11301 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
11302
11303         * cpu-amd64.md (move): Correct the maximum size of move.
11304
11305 2008-02-05  Mark Probst  <mark.probst@gmail.com>
11306
11307         * tramp-amd64.c, tramp-x86.c, mini-trampolines.c: Added a check in
11308         the generic class init trampoline to return quickly if the class
11309         is already inited.
11310
11311 2008-02-04  Zoltan Varga  <vargaz@gmail.com>
11312
11313         * tramp-amd64.c (mono_arch_patch_callsite): Add some diagnostics to help debug
11314         issues where an 32 bit callsite cannot be patched by a 64 bit address.
11315
11316 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
11317
11318         * generics.2.cs generics-variant-types.2.il: Merge some tests from the linear IR
11319         branch.
11320
11321 2008-01-31  Zoltan Varga  <vargaz@gmail.com>
11322
11323         * objects.cs: Add some soft-float tests.
11324
11325         * mini.c: Fix a couple more soft-float issues.
11326
11327         * helpers.c (mono_disassemble_code): Fix disassembly on ARM.
11328
11329         * mini-amd64.c (peephole_pass): Use IXOR instead of LXOR for zeroing a register to
11330         avoid a REX prefix.
11331
11332 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
11333
11334         * exceptions-x86.c (mono_arch_find_jit_info): Fix stack unwinding when an
11335         exception happens while compiling a virtual method.
11336
11337 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
11338
11339         * mini-sparc.c (mono_arch_emit_epilog): Fix folding of negative return values.
11340         
11341         * mini-sparc.c: Fix build.
11342
11343         * mini-sparc.c (get_call_info): Add support for generic sharing.
11344
11345         * mini-exceptions.c: Add a FIXME.
11346
11347 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
11348
11349         * mini-exceptions.c (mono_handle_exception_internal): Remove the old style
11350         altstack handling code.
11351
11352         * mini-s390.c (mono_arch_emit_exceptions): Really fix a warning.
11353         
11354         * mini-s390.c (mono_arch_emit_exceptions): Fix a warning.
11355
11356         * mini-s390.c: Add support for generic sharing.
11357
11358         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
11359         Fix CAS on s390.
11360         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
11361
11362         * mini-s390x.c (mono_arch_emit_exceptions): Fix a warning.
11363
11364         * mini-s390x.c: Add support for generic sharing.
11365         
11366         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
11367         Fix CAS on ia64.
11368         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
11369
11370         * mini-s390x.c: Use is_imm16 instead of is_uimm16 when checking whenever s390_aghi
11371         can be used since it takes a 16 bit signed immediate.
11372
11373         * inssel-s390x.brg: Fix OP_SETRET.
11374
11375         * mini-s390x.c (mono_arch_output_basic_block): Fix OP_BREAK.
11376
11377         * mini-codegen.c (mono_opcode_to_cond): Fix a warning.
11378
11379         * mini-s390x.c cpu-s390x.md: Implement sext.i4 properly by sign extension.
11380
11381         * mini.c (mono_create_delegate_trampoline): Don't use mono_create_ftpntr here.
11382
11383         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_addr_from_ftnptr
11384         in one place.
11385
11386         * mini-ia64.h mini-ia64.c: Add minimal support for the delegate trampoline 
11387         stuff.
11388
11389         * mini.h inssel-x86.brg inssel-amd64.brg tramp-alpha.c tramp-ia64.c: Get rid
11390         of the unused mono_arch_patch_delegate_trampoline stuff.
11391
11392 2008-01-26  Zoltan Varga  <vargaz@gmail.com>
11393
11394         * basic-long.cs: Move the fp related tests to basic-float.cs.
11395
11396         * mini-ops.h (OP_OUTARG_FREG_R4): New opcode.
11397
11398         * mini-ia64.c inssel-ia64.brg: Implement proper R4 argument passing.
11399
11400         * basic-calls.cs: Add a test for proper float argument passing.
11401
11402         * mini-ia64.h (mono_ia64_context_get_ip): Do not substract 1 from the ip
11403         if the context corresponds to an exception received through a signal.
11404
11405         * exceptions.cs: Add a test for nullref handling at the start of a try
11406         clause.
11407
11408         * mini-ia64.c (mono_arch_call_opcode): Fix ia64 argument passing.
11409
11410         * jit-icalls.c (mono_break): New JIT icall.
11411
11412         * mini-<ARCH>.c: Use mono_break instead of mono_arch_break.
11413
11414         * mini-arm.c (arm_patch): Add support for patching the blx calling sequence.
11415
11416 2008-01-25  Zoltan Varga  <vargaz@gmail.com>
11417
11418         * cpu-*.md: Get rid of unused opcodes.
11419
11420         * cpu-g4.md: Rename this to cpu-ppc.md for consistency with other archs.
11421
11422         * Makefile.am: Move mini-trampolines.c to $(common_sources) since it is now used
11423         by all platforms.
11424
11425         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_SPECIFIC_TRAMPOLINE
11426         define.
11427
11428         * mini-s390x.h tramp-s390x.c Makefile.am: Rework the s390x trampoline code to use
11429         the arch independent trampoline code in mini-trampolines.c.
11430
11431         * aot-runtime.c (mono_aot_init_vtable): Fix a warning.
11432
11433         * mini.c (get_runtime_generic_context_ptr): Fix a warning.
11434
11435         * mini-s390.h: Remove an unused define.
11436         
11437         * mini-s390.h tramp-s390.c Makefile.am: Rework the s390 trampoline code to use
11438         the arch independent trampoline code in mini-trampolines.c.
11439
11440         * mini-arm.c (mono_arch_emit_prolog): Fix build.
11441
11442 2008-01-24  Zoltan Varga  <vargaz@gmail.com>
11443
11444         * mini-sparc.c (mono_arch_output_basic_block): Remove some unecessary code.
11445
11446         * mini-s390.c (mono_arch_emit_prolog): Fix build.
11447
11448         * mini-s390x.c (mono_arch_emit_prolog): Fix build.
11449
11450         * mini-ppc.c (mono_arch_emit_prolog): Fix build.
11451
11452         * cpu-amd64.md: Use smaller sizes for int opcodes.
11453
11454         * *.c: Get rid of the NOT_IMPLEMENTED define which is now in mini.h.
11455
11456         * *.cs: Add some tests from the linear-ir branch. Move structs tests to 
11457         objects.cs.
11458
11459         * driver.c (mono_main): Add a --break-at-bb command line argument for JIT
11460         debugging.
11461
11462         * mini.h *.c: Change cfg->vars to contain the MonoMethodVar entries directly
11463         instead of though a pointer to save an indirection when accessing elements of
11464         the array.
11465
11466         * mini.h (MONO_IS_COND_BRANCH_OP): Move these macros here from mini.c. Fix
11467         some typos.
11468         (NOT_IMPLEMENTED): New helper macro.
11469         (MONO_BB_FOR_EACH_INS): New helper macro to iterate through the instructions
11470         of a bb.
11471
11472         * *.c: Use the new helper macro.
11473
11474 2008-01-21  Zoltan Varga  <vargaz@gmail.com>
11475
11476         * mini-x86.h (MONO_ARCH_AOT_SUPPORTED): Disable AOT for apple x86.
11477
11478 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
11479
11480         * mini-amd64.c (mono_arch_emit_prolog): Optimize the omit fp case to save two
11481         stack slots.
11482
11483 2008-01-18  Zoltan Varga  <vargaz@gmail.com>
11484
11485         * mini-amd64.c (mono_arch_emit_prolog): Disable the new optimization if
11486         profiling is enabled.
11487         
11488         * mini-amd64.c (mono_arch_call_opcode): Emit the save_sp_to_lmf instruction at
11489         the end.
11490         (mono_arch_emit_prolog): Add more first bblock optimizations.
11491
11492         * mini-amd64.c (mono_arch_call_opcode): Keep assignments to the arg registers
11493         in order if possible.
11494         (mono_arch_emit_prolog): Optimize assignments to arg registers in the first
11495         bblock, since the arguments are still in their original registers.
11496
11497         * mini.c (type_from_op): Calling add.ovf on floats is not valid IL code.
11498
11499 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
11500
11501         * mini.c (mono_method_to_ir): Use the no-spilling optimization for CEE_CALLI
11502         as well.
11503
11504         * mini-amd64.c (mono_arch_emit_prolog): Save an instruction if the LMF is at
11505         offset 0.
11506
11507         * mini-amd64.h (MONO_ARCH_HAVE_NOTIFY_PENDING_EXC): Turn on this for amd64.
11508
11509         * exceptions-amd64.c (mono_arch_notify_pending_exc): New function to 
11510         process async exceptions received while in unmanaged code.
11511
11512         * mini.c (mini_init): Install a callback with the runtime which will be called
11513         when a thread receives an async exception while in unmanaged code.
11514
11515         * mini.c driver.c: Update after mono_get_native_wrapper () signature change.
11516
11517         * mini-s390x.c (mono_arch_output_basic_block): Fix s390x build.
11518
11519 2008-01-16  Wade Berrier  <wberrier@novell.com>
11520
11521         * cpu-g4.md:
11522         * cpu-arm.md:
11523         * cpu-s390x.md:
11524         fix build
11525
11526 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
11527
11528         * mini-x86.c (mono_arch_output_basic_block): Remove some gccism which prevents
11529         compilation with sun cc.
11530
11531         * cpu-*.md: Fix the build.
11532
11533         * cpu-x86.md: Fix the length of some load membase opcodes. Fixes #354241.
11534
11535         * mini-amd64.h: Add some comments to the MonoLMF structure.
11536
11537         * mini-ops.h cpu-amd64.c: Add a OP_AMD64_SAVE_SP_TO_LMF opcode.
11538         
11539         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Avoid setting the rip field
11540         in the LMF structure if possible. This saves two instructions in the
11541         managed->native wrappers.
11542
11543         * mini-ops.h *.md: Make some opcodes names uniform by removing the op_ prefix.
11544
11545 2008-01-16  Mark Probst  <mark.probst@gmail.com>
11546
11547         * generic-sharing.c: New type argument lookup code which uses the
11548         runtime generic context template.
11549
11550 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
11551
11552         * mini.c (mono_method_to_ir): Avoid emitting a write barrier when storing NULL.
11553
11554         * mini-arm.c (add_general): Fix arm eabi parameter passing.
11555         (mono_arch_output_basic_block): Fix localloc implementation.
11556
11557         * mini-amd64.c (peephole_pass): Sync store+load optimizations with the x86 version.
11558
11559         * mini-ia64.c (peephole_pass): Fix ia64 build.
11560
11561         * mini-amd64.c (peephole_pass): Fix a warning.
11562         
11563         * mini-amd64.c (mono_arch_allocate_vars): Make sure the LMF is always stored
11564         at a constant offset from sp/fp.
11565
11566         * exceptions-amd64.c (mono_arch_find_jit_info): Compute the LMF address from fp/sp
11567         instead of obtaining it from *lmf in the managed method case.
11568
11569 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
11570
11571         * exceptions-amd64.c (mono_arch_find_jit_info): Remove some duplicate code.
11572
11573 Mon Jan 14 12:33:06 CET 2008  David S. Miller  <davem@davemloft.net>
11574
11575         * mini.h (MonoInstList): New type.
11576         (MONO_INST_LIST_INIT, MONO_INST_LIST_EMPTY,
11577         __MONO_INST_LIST_ADD, MONO_INST_LIST_ADD,
11578         MONO_INST_LIST_ADD_TAIL, __MONO_INST_LIST_DEL,
11579         __MONO_INST_LIST_SPLICE, MONO_INST_LIST_SPLICE,
11580         MONO_INST_LIST_SPLICE_TAIL, MONO_INST_LIST_SPLICE_INIST,
11581         MONO_INST_LIST_SPLICE_TAIL_INIT, mono_container_of,
11582         MONO_INST_LIST_ENTRY, MONO_INST_LIST_FIRST_ENTRY,
11583         MONO_INST_LIST_LAST_ENTRY, MONO_INST_LIST_FOR_EACH,
11584         MONO_INST_LIST_FOR_EACH_PREV, MONO_INST_LIST_FOR_EACH_SAFE,
11585         MONO_INST_LIST_FOR_EACH_PREV_SAFE,
11586         MONO_INST_LIST_FOR_EACH_ENTRY,
11587         MONO_INST_LIST_FOR_EACH_ENTRY_REVERSE,
11588         MONO_INST_LIST_FOR_EACH_ENTRY_SAFE,
11589         mono_inst_list_first, mono_inst_list_last,
11590         mono_inst_list_next, mono_inst_list_prev): New instruction
11591         list handling interfaces.
11592         (MonoBasicBlock): Remove 'last_ins' and 'code', replace with
11593         list head 'ins_list'.
11594         (MonoInst): Replace next pointer with list head 'node'.
11595         (MonoCallInst): Make 'out_args' a MonoInstList.
11596         (MONO_INST_NEW_CALL): Explicitly init ->out_args.
11597         (MonoCompile): Delete reverse_inst_list and
11598         reverse_inst_list_len.
11599         * mini-hppa.c (mono_arch_call_opcode, NEW_INS,
11600         mono_arch_lowering_pass, mono_arch_local_regalloc,
11601         mono_arch_output_basic_block, mono_arch_emit_prolog):
11602         Convert to new instruction lists.
11603         (insert_after_ins): Delete.
11604         * inssel.brg (MONO_EMIT_NEW_BRANCH_BLOCK): Convert to new
11605         instruction lists.
11606         * mini-hppa.h (MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Likewise.
11607         * mini.c (NEW_BBLOCK, ADD_BBLOCK, CHECK_BBLOCK,
11608         split_bblock, mono_add_ins_to_end, mono_emit_call_args,
11609         mono_emulate_opcode, mono_emit_load_got_addr,
11610         inline_method, mono_method_to_ir, mono_print_bb_code,
11611         print_dfn, decompose_pass, nullify_basic_block,
11612         replace_out_block_in_code, remove_block_if_useless,
11613         merge_basic_blocks, move_basic_block_to_end,
11614         try_unsigned_compare, optimize_branches, mono_print_code,
11615         mini_select_instructions, remove_critical_edges): Likewise.
11616         * mini-amd64.c (emit_sig_cookie, mono_arch_call_opcode,
11617         peephole_pass_1, peephole_pass, mono_arch_lowering_pass,
11618         mono_arch_output_basic_block, mono_arch_emit_prolog):
11619         Likewise.
11620         * mini-mips.c (mono_arch_call_opcode, peephole_pass,
11621         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
11622         mono_arch_output_basic_block): Likewise.
11623         (inst_list_prepend, insert_after_ins): Delete.
11624         * mini-mips.h (MONO_EMIT_NEW_BRANCH_NONZERO_LABEL,
11625         MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Convert to new
11626         instruction lists.
11627         * mini-x86.c (emit_sig_cookie, mono_arch_call_opcode,
11628         peephole_pass_1, peephole_pass, mono_arch_output_basic_block,
11629         mono_arch_emit_prolog): Likewise.
11630         * cfold.c (mono_constant_fold): Likewise.
11631         * liveness.c (visit_bb, mono_analyze_liveness,
11632         optimize_initlocals): Likewise.
11633         * ssapre.c (dump_code, process_bb, code_motion): Likewise.
11634         * graph.c (mono_draw_code_cfg): Likewise.
11635         * ssa.c (mono_ssa_rename_vars, mono_ssa_compute,
11636         mono_ssa_remove, mono_ssa_avoid_copies, mono_ssa_create_def_use,
11637         mono_ssa_cprop): Likewise.
11638         * abcremoval (get_relations_from_previous_bb, process_block):
11639         Likewise.
11640         * local-propagation (mono_cprop_invalidate_values,
11641         mono_local_cprop_bb): Likewise.
11642         * mini-s390x.c (mono_arch_call_opcode, emit_sig_cookie,
11643         peephole_pass, mono_arch_output_basic_block,
11644         mono_arch_emit_prolog): Likewise.
11645         * mini-arm.c (mono_arch_call_opcode, peephole_pass,
11646         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
11647         mono_arch_emit_prolog): Likewise.
11648         (insert_after_ins): Delete.
11649         * aliasing.c (print_code_with_aliasing_information,
11650         mono_build_aliasing_information, mono_aliasing_deadce):
11651         Convert to new instruction lists.
11652         * mini-ia64.c (emit_sig_cookie, mono_arch_call_opcode,
11653         peephole_pass, NEW_INS, mono_arch_lowering_pass,
11654         mono_arch_local_regalloc, mono_arch_output_basic_block):
11655         Likewise.
11656         (insert_after_ins): Delete.
11657         * mini-sparc.c (emit_sig_cookie, mono_arch_call_opcode,
11658         peephole_pass, mono_arch_output_basic_block): Convert to
11659         new instruction lists.
11660         * mini-codegen (InstList, inst_list_prepend,
11661         insert_after_ins): Delete.
11662         (insert_before_ins, get_register_force_spilling,
11663         get_register_spilling, free_up_ireg, free_up_reg,
11664         create_copy_ins, create_spilled_store, alloc_int_reg,
11665         alloc_float_reg, alloc_reg, mono_local_regalloc): Convert
11666         to new instruction lists.
11667         * mini-ppc.c (mono_arch_call_opcode, peephole_pass,
11668         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
11669         mono_arch_output_basic_block, mono_arch_emit_prolog): Likewise.
11670         (insert_after_ins): Delete.
11671         * mini-alpha.c (NEW_INS, peephole_pass, mono_arch_lowering_pass,
11672         mono_arch_local_regalloc, mono_arch_output_basic_block,
11673         mono_arch_call_opcode): Convert to new instruction lists.
11674         (insert_after_ins): Delete.
11675         * mini-s390.c (mono_arch_call_opcode, emit_sig_cookie,
11676         peephole_pass, mono_arch_output_basic_block,
11677         mono_arch_emit_prolog): Convert to new instruction lists.
11678
11679 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
11680
11681         * mini-amd64.c (mono_arch_output_basic_block): Use a 4 byte load in OP_CHECK_THIS.
11682
11683         * mini-sparc.c (mono_arch_output_basic_block): Use a byte load in CHECK_THIS.
11684         Fixes #353182.
11685
11686         * Makefile.am (version.h): Make this work with non-bash shells.
11687
11688 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
11689
11690         * mini.c (handle_delegate_ctor): Optimize away setting of NULL target.
11691
11692 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
11693
11694         * mini.c (mono_method_to_ir): Fix possible reading of invalid memory in 
11695         the InitializeArray optimization.
11696
11697 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
11698
11699         * mini.c driver.c: Don't include os/gc_wrapper.h.
11700
11701 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
11702
11703         * mini.c (print_jit_stats): Print GC statistics if available.
11704
11705 2008-01-04  Zoltan Varga  <vargaz@gmail.com>
11706
11707         * mini-amd64.c (mono_arch_allocate_vars): Align argument storage offsets to 8.
11708
11709 2007-12-29  Zoltan Varga  <vargaz@gmail.com>
11710
11711         * mini-ppc.c (mono_arch_get_delegate_invoke_impl): Fix flushing of icache.
11712
11713 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
11714
11715         * mini.c (mini_init): Move the setting of GC_stackbottom to mono_gc_base_init ().
11716         
11717         * mini.c (mini_init): Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
11718
11719         * driver.c (mono_main): Ditto.
11720
11721 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
11722
11723         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_delegate_invoke ().
11724
11725         * aot-compiler.c (emit_klass_info): Avoid emitting info if one of the methods
11726         in the vtable can't be encoded.
11727         (compile_method): Ditto.
11728
11729 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
11730
11731         * mini.c (setup_jit_tls_data): Use the MONO_ARCH_INIT_TOP_LMF_ENTRY macro if
11732         defined.
11733
11734         * mini-amd64.h mini-amd64.c exceptions-amd64.c tramp-amd64.c: Rename lmf->ebp to 
11735         lmf->rbp.
11736
11737         * exceptions-amd64.c (mono_arch_find_jit_info): Fix the detection of whenever
11738         the top LMF entry belongs to the current method.
11739
11740         * mini.c: Update after renaming of mono_thread_get_pending_exception ().
11741
11742 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
11743
11744         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix a warning.
11745         
11746         * tramp-ia64.c (mono_arch_create_trampoline_code): Ditto.
11747
11748         * tramp-sparc.c (mono_arch_create_trampoline_code): Check for thread interruption.
11749
11750         * tramp-amd64.c (mono_arch_create_trampoline_code): Ditto.
11751
11752         * tramp-x86.c (mono_arch_create_trampoline_code): Check for thread interruption.
11753
11754         * cpu-amd64.md mini-amd64.h mini-amd64.c inssel-amd64.brg: Add ulong->double 
11755         implementation.
11756
11757         * basic-float.cs: Add an ulong->double cast test.
11758
11759 2007-12-15  Zoltan Varga  <vargaz@gmail.com>
11760
11761         * mini.c (mono_method_to_ir): Fix a warning.
11762
11763 2007-12-14  Zoltan Varga  <vargaz@gmail.com>
11764
11765         * mini-ops.h: Add OP_SWITCH.
11766
11767         * mini.c graph.c ssa.c aliasing.c mini-<ARCH>.c inssel-<ARCH>.brg: Avoid using
11768         CEE_SWITCH in back-end code, use OP_SWITCH instead.
11769
11770 2007-12-11  Geoff Norton  <gnorton@novell.com>
11771
11772         * mini-s390x.c: Minor change to the MAX() define to allow
11773         it to compile with other gcc versions.
11774
11775 2007-12-11  Geoff Norton  <gnorton@novell.com>
11776
11777         * cpu-s390x.md:
11778         * mini-s390x.c: Implement sext_i4 to fix the build on s390x
11779
11780 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
11781
11782         exceptions-arm.c (mono_arch_get_restore_context): Restore
11783         the frame pointer.
11784
11785         exceptions-arm.c (throw_exception): Save the frame pointer.
11786         This is a partial fix for #323747. Only the client side is
11787         fixed.
11788
11789 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
11790
11791         * mini.c (mono_method_to_ir): Verbose message in CEE_NEWOBJ
11792         was using an unrelated variable to log the class which
11793         needed the cctor to be called. This was crashing on arm.
11794
11795 2007-12-09  Robert Jordan  <robertj@gmx.net>
11796
11797         * mini-x86.c (mono_arch_emit_epilog):
11798         Consider all kinds of 64-bit types. Fixes #323114.
11799
11800 2007-12-08  Zoltan Varga  <vargaz@gmail.com>
11801
11802         * tramp-amd64.c (mono_arch_create_trampoline_code): Clean up the code a bit.
11803
11804 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
11805
11806         * mini-amd64.c (peephole_pass): Add a missing instruction check.
11807
11808 Fri Dec 7 22:08:23 CET 2007 Paolo Molaro <lupus@ximian.com>
11809
11810         * mini.c: run type ctor before allocating an object, not only
11811         when running it's constructor method (fixes at least part of bug #342507).
11812
11813 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
11814         
11815         * mini-trampolines.c (mono_delegate_trampoline): Fix a warning.
11816         
11817         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove a debug printf.
11818         * mini.h mini-amd64.c mini-x86.c: Get rid of the mono_arch_find_vtable () 
11819         function.
11820
11821         * tramp-x86.c tramp-amd64.c mini-trampolines.c: Pass the vtable argument to
11822         mono_generic_class_init_trampoline () the same as it is done with the other
11823         trampolines.
11824
11825         * mini-arm.h mini-arm.c tramp-arm.c inssel-arm.brg cpu-arm.md 
11826         aot-runtime.c aot-compiler.c: Implement AOT support.    
11827
11828 2007-12-07  Mark Probst  <mark.probst@gmail.com>
11829
11830         * mini-trampolines.c (mono_generic_class_init_trampoline): Fixed
11831         build for archs which don't have the vtable trampoline defined
11832         yet.
11833
11834 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
11835
11836         * tramp-x86.c (mono_arch_create_trampoline_code): Fix the build.
11837
11838         * tramp-ppc.c (mono_arch_create_trampoline_code): Use the new helper function.
11839
11840         * mini-trampolines.c (mono_get_trampoline_func): New helper function.
11841
11842         * tramp-<ARCH>.c: Use the new helper function.
11843
11844 2007-12-07  Mark Probst  <mark.probst@gmail.com>
11845
11846         * inssel.brg: Added a pattern for the OP_TRAMPCALL_VTABLE
11847         trampoline call, which takes a vtable argument.
11848
11849         * graph.c, mini-ops.h, local-propagation.c, aliasing.c: Treat
11850         OP_TRAMPCALL_VTABLEs like other calls.
11851
11852         * mini-amd64.c, mini-amd64.h, mini-x86.c, mini-x86.h: Designated a
11853         register to hold the vtable argument to the OP_TRAMPCALL_VTABLE
11854         call.  Implemented a support function which fetches the vtable
11855         from a register set.
11856
11857         * mini.c, mini.h, tramp-amd64.c, tramp-x86.c, mini-trampolines.c:
11858         Implemented a generic class init trampoline, using the
11859         OP_TRAMPCALL_VTABLE opcode.
11860
11861         * mini.c: Implemented static field access when sharing generic
11862         code.  This implies initing the class using the new
11863         OP_TRAMPCALL_VTABLE call.
11864
11865 2007-12-07  Mark Probst  <mark.probst@gmail.com>
11866
11867         * mini.c: Don't compile methods with sharing enabled if their
11868         classes are disabled for sharing.
11869
11870 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
11871
11872         * inssel.brg: Add a missing sign extension to the GETCHR and array access
11873         opcodes. Fixes #346563.
11874
11875         * objects.cs: Add a new test.
11876
11877         * aot-compiler.c (emit_method_code): Put back an #ifdef which is needed.
11878
11879         * mini-<ARCH>.h mini.c aot-compiler.c aot-runtime.c: Get rid of the
11880         HAVE_PIC_AOT define and use AOT_SUPPORTED instead.
11881
11882 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
11883
11884         * mini-arm.h mini-arm.c: Add support for the common vtable trampoline.
11885
11886 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
11887
11888         * mini-arm.c (mono_arch_emit_exceptions): Avoid uninitialized memory in the
11889         code stream.
11890
11891 2007-12-02  Zoltan Varga  <vargaz@gmail.com>
11892
11893         * patch-info.h (PATCH_INFO): Add DELEGATE_TRAMPOLINE.
11894
11895         * mini.c aot-compiler.c aot-runtime.c: Implement the delegate creation 
11896         optimization in the AOT case.
11897         
11898 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
11899
11900         * aot-runtime (mono_aot_get_method_from_vt_slot): Add support for multi-byte method ref encodings.
11901         
11902         * aot-runtime.c (decode_klass_ref): Implement decoding of generic instances.
11903
11904         * aot-compiler.c (encode_klass_ref): Implement proper encoding of generic instances.
11905
11906         * mini.c (mono_method_to_ir): Optimize the common ldftn+create delegate combination.
11907
11908         * mini-trampolines.c (mono_delegate_trampoline): Add some code to handle the case when the delegate
11909         is created by the inlined delegate ctor.
11910
11911         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.  
11912
11913         * mini.c (mono_jit_compile_method_inner): Replace calls to delegate invoke with the trampoline here too.
11914
11915 2007-11-29  Zoltan Varga  <vargaz@gmail.com>
11916
11917         * cpu-x86.md: Fix the length of ckfinite.
11918
11919 2007-11-28  Zoltan Varga  <vargaz@gmail.com>
11920
11921         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.
11922         
11923         * mini-x86.c (mono_arch_output_basic_block): Clean up the fp stack properly in CKFINITE.
11924         (mono_arch_output_basic_block): Get rid of unused last_ins and last_offset.
11925
11926         * mini-x86.c (mono_arch_output_basic_block): Add some micro optimizations.
11927
11928         * mini-x86.c inssel-x86.brg cpu-x86.md: Move the implementation of the 
11929         OP_START_HANDLER/OP_ENDFINALLY/OP_ENDFILTER opcodes to mini-x86.c.
11930
11931 2007-11-28  Martin Baulig  <martin@ximian.com>
11932
11933         * mini-x86.c
11934         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline()
11935         after creating the trampoline.
11936
11937 2007-11-27  Zoltan Varga  <vargaz@gmail.com>
11938
11939         * aot-runtime.c (load_aot_module): Check runtime version if needed.
11940
11941         * aot-compiler.c: Add bind-to-runtime-version for producing AOT files which only load into a runtime with
11942         the same version.
11943
11944         * generic-sharing.c (mono_helper_get_rgctx_other_ptr): Change the signature to take the calling class
11945         instead of the calling method to help AOT.
11946
11947         * mini.c (get_runtime_generic_context_other_ptr): Update after the change.
11948
11949 2007-11-26  Zoltan Varga  <vargaz@gmail.com>
11950
11951         * aot-runtime.c (mono_aot_init_vtable): Simplify this if MONO_ARCH_COMMON_VTABLE_TRAMPOLINE
11952         is defined.
11953
11954 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
11955
11956         * aot-compiler.c (emit_class_name_table): Properly encode generic class names.
11957         
11958         * aot-compiler.c (compile_method): Correct check for generic method definitions.
11959         (encode_method_ref): No need to handle generic method definitions specially.
11960
11961         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
11962
11963         * aot-runtime.c (decode_klass_ref): Clean this up and rename from 
11964         decode_klass_info.
11965
11966         * aot-compiler.c (encode_klass_ref): Clean this up and rename from
11967         encode_klass_info.
11968         (compile_method): Enable generic sharing.
11969
11970 2007-11-22  Zoltan Varga  <vargaz@gmail.com>
11971
11972         * mini.c (get_runtime_generic_context_other_ptr): Disable AOT here.
11973         (mini_method_compile): Add preliminary support for AOTing shared generic code.
11974
11975         * aot-compiler.c (compile_method): Add preliminary support for AOTing shared
11976         generic code.
11977
11978         * mini-trampolines.c: Fix a warning.
11979
11980         * mini.c (get_runtime_generic_context_other_ptr): Use NEW_METHODCONST instead of
11981         NEW_PCONST.
11982         (mono_method_to_ir): Use NEW_DOMAINCONST in one place.
11983         (generic_class_is_reference_type): Remove unused function.
11984
11985         * mini-trampolines.c (mono_magic_trampoline): Avoid loading metadata if possible
11986         in the generic vtable trampoline case.
11987
11988         * aot-runtime.c (mono_aot_init_vtable): Use the generic vtable trampoline.
11989         
11990         * aot-runtime.c (mono_aot_get_method_from_vt_slot): New helper function to
11991         return an AOT method based on a vtable slot.
11992
11993         * aot-compiler.c (compile_method): Avoid AOTing synchronized methods for now.
11994
11995         * mini.c (mini_get_vtable_trampoline): Export this.
11996
11997 2007-11-22  Martin Baulig  <martin@ximian.com>
11998
11999         * debug-debugger.h
12000         (MonoDebuggerInfo): Move `debugger_version' up.
12001
12002 2007-11-22  Martin Baulig  <martin@ximian.com>
12003
12004         * mini-amd64.c
12005         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline().
12006
12007         * mini-trampolines.c
12008         (mono_delegate_trampoline): Call mono_debugger_trampoline_compiled()
12009         after compiling the method.
12010
12011 2007-11-20  Martin Baulig  <martin@ximian.com>
12012
12013         * debug-mini.c
12014         (mono_debugger_insert_method_breakpoint): Moved into mono-debug-debugger.c.
12015         (mono_debugger_remove_breakpoint): Likewise.
12016         (mono_debugger_check_breakpoints): Likewise.
12017
12018         * debug-debugger.c: Implement the new breakpoint interface here.
12019
12020 2007-11-18  Zoltan Varga  <vargaz@gmail.com>
12021
12022         * mini-amd64.c (mono_arch_output_basic_block): Unify the implementation of
12023         CEE_CONV_I1/SEXT_I1 and I2 since they are the same.
12024
12025         * mini-x86.c (mono_arch_output_basic_block): Ditto.     
12026
12027 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
12028
12029         * mini-amd64.c (mono_arch_output_basic_block): Fix a typo.
12030
12031         * mini-x86.c (mono_arch_get_inst_for_method): Remove code which is now in
12032         mini.c.
12033
12034         * mini-ia64.c (mono_arch_get_inst_for_method): Remove code which is now in
12035         mini.c.
12036
12037         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for methods
12038         returning a vtype in a register.
12039
12040         * mini.c (mini_get_inst_for_method): Move the handling of the atomic operations
12041         here from the arch specific code.
12042
12043         * mini-amd64.c (mono_arch_get_inst_for_method): Remove code which is now in
12044         mini.c.
12045
12046         * mini-amd64.c (mono_arch_output_basic_block): Add some micro optimizations.
12047         (mono_arch_emit_prolog): Increment maximum prolog size.
12048
12049         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Move the implementation of the
12050         START_HANDLER/ENDFINALLY/ENDFILTER opcodes to mini-amd64.c.
12051
12052         * mini-x86.c (get_call_info): Receive a MonoCompile instead of a 
12053         MonoGenericSharingContext.
12054
12055         * mini-ia64.c (get_call_info): Receive a MonoCompile instead of a 
12056         MonoGenericSharingContext. Allocate memory from the cfg mempool.
12057
12058 2007-11-15  Mark Probst  <mark.probst@gmail.com>
12059
12060         * mini.c, mini.h, generic-sharing.c: Functions for producing code
12061         which extract fields out of the runtime generic context.  Full
12062         sharing of the NEWARR opcode.
12063
12064 Thu Nov 15 14:20:21 CET 2007 Paolo Molaro <lupus@ximian.com>
12065
12066         * abcremoval.c, mini.c, ssa.c, ssapre.c: updated to implement
12067         --enable-minimal=ssa.
12068
12069 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
12070
12071         * mini-trampolines.c (mono_delegate_trampoline): Update after 
12072         mono_marshal_get_delegate_invoke () signature change.
12073
12074 2007-11-13  Mark Probst  <mark.probst@gmail.com>
12075
12076         * mini.c: Removed the shared context in favor of the generic
12077         sharing context.  Allocate the MonoJitInfo structure with room for
12078         the generic sharing context if it's needed.
12079
12080         * mini.h: Remove MonoGenericSharingContext declaration.  It's in
12081         domain-internals.h now.
12082
12083         * mini-x86.c: Pass the generic sharing context to get_call_info ().
12084
12085         * generic-sharing.c: Several changes for working without a shared
12086         context and instead operating on open types instead.
12087
12088 2007-11-12  David S. Miller  <davem@davemloft.net>
12089
12090        * inssel-sparc.brg: Fix double instruction emit.
12091
12092 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
12093
12094         * mini.c (mono_jit_runtime_invoke): Avoid trying to compile the Array 
12095         Get/Set/Address methods.
12096         
12097         * mini.c debug-debugger.c mini-trampolines.c: Update after 
12098         mono_marshal_get_delegate_invoke signature change.
12099
12100 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
12101
12102         * cpu-arm.md: Increase the max size of OP_THROW to 24 bytes.
12103         This can happens with dynamic methods. Fixes the other bug in #322722.
12104
12105 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
12106
12107         * tramp-arm.c (mono_arch_patch_callsite): Support patching
12108         BX call sequence.
12109
12110         * mini-arm.c (arm_patch): Implement patching of BX call
12111         sequence. Fixes one of the bugs in #322722.
12112
12113 2007-11-03  David S. Miller  <davem@huronp11.davemloft.net>
12114
12115        * mini-sparc.c (mono_arch_flush_icache): Make more efficient
12116        under Linux.  We only need to flush every 32-byte cache line.    
12117
12118 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
12119
12120         * mini.c:
12121         move_basic_block_to_end: Add branches when needed, eventually creating
12122         a new BB.
12123         optimize_branches: added a parameter that tells if it's ok to create
12124         new BBs (doing is "df_visit" has been called is (IMHO) a nightmare),
12125         and avoid calling move_basic_block_to_end when it's not ok.
12126         Fixes bug 318677.
12127
12128 2007-11-07  Mark Probst  <mark.probst@gmail.com>
12129
12130         * mini.c: Abort inlining call to InitializeArray if something
12131         looks wrong.  Let the icall handle it, which now has proper safety
12132         checks.
12133
12134 2007-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
12135
12136         * mini.c (mono_spill_call): add support for soft-float.
12137
12138         * mini.c (mono_method_to_ir): add support for soft-float
12139         to inlined functions that return float.
12140
12141         * mini.c (mono_method_to_ir): add support for soft-float
12142         to cee_stsfld opcode on float fields.
12143
12144 2007-11-05  Geoff Norton  <gnorton@novell.com>
12145
12146         * mini-x86.h: Fix the structure access for X86 Leopard.
12147
12148
12149 2007-11-05  Martin Baulig  <martin@ximian.com>
12150
12151         * mini-trampolines.c
12152         (mono_magic_trampoline): Call mono_debugger_trampoline_compiled()
12153         after compiling the method to notify the debugger.
12154
12155 2007-11-05  Martin Baulig  <martin@ximian.com>
12156
12157         * debug-debugger.h (MonoDebuggerInfo): Use the new breakpoint tables.
12158
12159 2007-11-02  Zoltan Varga  <vargaz@gmail.com>
12160
12161         * mini-sparc.c (EMIT_COND_SYSTEM_EXCEPTION_GENERAL): Applied patch from
12162         David Miller <davem@davemloft.net>. Allow larger offsets in branches.
12163
12164 2007-11-01  Zoltan Varga  <vargaz@gmail.com>
12165
12166         * mini-amd64.c (mono_arch_emit_prolog): Check the domain as well for
12167         native-to-managed wrappers.
12168         
12169 2007-11-01  Geoff Norton  <gnorton@novell.com>
12170
12171         * mini-ppc.h, mini-x86.h:  Handle Leopards renaming of some structure 
12172         members.
12173
12174 Wed Oct 31 20:23:14 CET 2007 Paolo Molaro <lupus@ximian.com>
12175
12176         * mini.c, mini-x86.c: when getting back from unmanaged code
12177         to managed via a marshaled delegate we also need to set the
12178         right domain.
12179
12180 Wed Oct 31 19:53:33 CET 2007 Paolo Molaro <lupus@ximian.com>
12181
12182         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: breakpoint table support
12183         for amd64.
12184
12185 Wed Oct 31 19:29:30 CET 2007 Paolo Molaro <lupus@ximian.com>
12186
12187         * mini.c, mini.h, mini-x86, tramp-x86.c, mini-x86.h: added API to
12188         let the debugger or other external agents to tell the JIT when
12189         a sw breakpoint has been inserted in the code that the JIT needs
12190         to be able to inspect.
12191
12192 2007-10-31  Martin Baulig  <martin@ximian.com>
12193
12194         * debug-debugger.h
12195         (MonoDebuggerInfo): Remove `runtime_class_init'.
12196
12197 2007-10-30  Martin Baulig  <martin@ximian.com>
12198
12199         * debug-mini.h
12200         (mono_debugger_thread_created): Added `MonoThread *' argument.
12201         (mono_debugger_extended_notification): New public method.
12202         (mono_debugger_trampoline_compiled): New public method.
12203
12204         * debug-mini.c
12205         (MonoDebuggerThreadInfo): Added `thread' and
12206         `extended_notifications' fields.
12207
12208         * debug-debugger.c
12209         (debugger_executable_code_buffer): New static variable.
12210
12211         * debug-debugger.h
12212         (MonoDebuggerInfo): Added `executable_code_buffer',
12213         `executable_code_buffer_size', `breakpoint_info_area',
12214         `breakpoint_table' and `breakpoint_table_size'.
12215
12216 2007-10-26  Rodrigo Kumpera  <rkumpera@novell.com>
12217
12218         * mini-arm.c (mono_arch_build_imt_thunk): Take the advantage
12219         that IP  either is an unused value or the vtable pointer. IMT 
12220         calls use vtable + offset now. Reduced by almost half the size
12221         of IMT entries.
12222
12223 2007-10-26  Jonathan Chambers <joncham@gmail.com>
12224
12225         * mini-amd64.c: Begin Win64 port. Use AMD64_ARG_REG#
12226         defines to access param registers. Replace long usage with
12227         gsize as sizeof(long) != sizeof(void*) on Win64.
12228
12229         * mini-amd64.h: Add %rdi and %rsi to MonoLMF structure
12230         on Win64. Fix intrinsic, use _AddressOfReturnAddress
12231         instead of non-existant _GetAddressOfReturnAddress.
12232
12233         * tramp-amd64.c: Use AMD64_ARG_REG#     defines to access 
12234         param registers. Save/restore %rdi and %rsi in MonoLMF.
12235
12236         * exceptions-amd64.c: Use AMD64_ARG_REG# defines to access 
12237         param registers. Modify (throw_exception) signature to take 
12238         %rdi and %rsi on Win64. 
12239
12240         Code is contributed under MIT/X11 license.
12241
12242 Thu Oct 25 23:06:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
12243
12244         * helpers.c: unlink debugging output files.
12245
12246 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
12247
12248         * mini.c: Move mono_create_ftnptr () to object.c.
12249
12250 2007-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
12251
12252         * helpers.c (mono_disassemble_code): MonoCompile parameter is now
12253         optional. This function can now be used to disassemble code generated
12254         outside the JIT such as trampolines and IMT thunks.
12255
12256         * mini-arm.h: defined MONO_ARCH_HAVE_IMT.
12257
12258         * mini-arm.c (decode_vcall_slot_from_ldr): added, extract the
12259         vtable pointer from a ldr instruction.
12260
12261         * mini-arm.c (mono_arch_get_vcall_slot_addr): support the
12262         new IMT call sequence.
12263
12264         * mini-arm.c (mono_arch_output_basic_block): emit the IMT
12265         call sequence for interface invocations.
12266
12267         * mini-arm.c (mono_arch_emit_imt_argument): added, required
12268         for imt support. This function is empty since IMT on ARM requires no
12269         special handling on the IR side.
12270
12271         * mini-arm.c (mono_arch_find_imt_method): added, required for
12272         imt support.
12273
12274         * mini-arm.c (mono_arch_find_this_argument): added, required
12275         for imt support.
12276
12277         * mini-arm.c (arm_emit_value_and_patch_ldr): added, patches
12278         a ldr instruction to load a value stored in the code stream.
12279
12280         * mini-arm.c (mono_arch_build_imt_thunk):added, required
12281         for imt support.
12282
12283
12284 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
12285
12286         * mini.c (mini_init): Install the jump trampoline callback.
12287
12288 Tue Oct 23 17:07:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
12289
12290         * mini-trampolines.c: handle synchronized methods with the common
12291         vtable trampoline (bug #335601).
12292
12293 2007-10-17  Zoltan Varga  <vargaz@gmail.com>
12294
12295         * mini-ia64.h mini-amd64.c: Add support for the common vtable trampoline.
12296
12297         * inssel.brg (mini_emit_virtual_call): Fix the computation of ins->inst_offset on
12298         64 bit platforms.
12299
12300         * mini-ia64.h mini-ia64.c: Add support for IMT.
12301
12302         * mini-x86.c (mono_arch_emit_prolog): Increase the size allocated for the
12303         prolog. Fixes #331958.
12304
12305 2007-10-15  Zoltan Varga  <vargaz@gmail.com>
12306
12307         * mini-sparc.h mini-sparc.c: Add support for the common vtable trampoline.
12308
12309 Mon Oct 15 11:18:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
12310
12311         * mini-ppc.c, mini-ppc.h: ppc support for the common vtable
12312         trampoline.
12313
12314 Mon Oct 15 10:41:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
12315
12316         * mini-amd64.c, mini-amd64.h: amd64 support for the common vtable
12317         trampoline.
12318
12319 Mon Oct 15 10:39:26 CEST 2007 Paolo Molaro <lupus@ximian.com>
12320
12321         * mini-x86.c, mini-x86.h: x86 support for the common vtable
12322         trampoline.
12323
12324 Mon Oct 15 10:37:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
12325
12326         * mini-trampolines.c: changed the magic rampoline to understand
12327         the common vtable trampoline method: the method to invoke is
12328         determined by the vtable displacement of the call.
12329
12330 Mon Oct 15 10:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
12331
12332         * mini.c, mini.h: register the common vtable trampoline if the
12333         architecture supports it.
12334
12335 Mon Oct 15 09:50:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
12336
12337         * cpu-amd64.md: use the correct max length for tls_get.
12338
12339 2007-10-14  Zoltan Varga  <vargaz@gmail.com>
12340
12341         * mini.c (mono_method_to_ir): Use mini_get_class in CEE_LDELEM_ANY and
12342         CEE_STELEM_ANY. Fixes #333696.
12343
12344 Thu Oct 11 18:04:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
12345
12346         * exceptions-x86.c: provide more graceful handling of the case where
12347         we followed a bogus function pointer from managed code (bug #332866).
12348
12349 2007-10-11  Mark Probst  <mark.probst@gmail.com>
12350
12351         * mini.h, mini.c: Introduced the MonoGenericSharingContext, which
12352         replaces the generic_shared flag and will carry more information
12353         in the future.
12354
12355         * generic-sharing.c: Added mini_type_stack_size() which allows
12356         allows open types if given a generic sharing context.
12357         mini_get_basic_type_from_generic() takes a
12358         MonoGenericSharingContext* instead of a MonoCompile* now.
12359
12360         * mini-alpha.c, mini-amd64.c, mini-arm.c, mini-hppa.c,
12361         mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c, mini-s390x.c,
12362         mini-sparc.c, mini-x86.c: Trivial changes required by the two
12363         changes above.  Just passing arguments through to the right
12364         places.
12365
12366 Wed Oct 10 19:44:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
12367
12368         * mini-arm.c: unify the call emission to emit_code_seq().
12369
12370 Wed Oct 10 13:05:46 CEST 2007 Paolo Molaro <lupus@ximian.com>
12371
12372         * tramp-arm.c: reduced the trampoline size.
12373
12374 2007-10-10  Mark Probst  <mark.probst@gmail.com>
12375
12376         * generic-sharing.c, mini.h, mini-amd64.c, mini-x86.c: Moved type
12377         variable handling out of arch-specific code.
12378
12379 Wed Oct 10 10:49:28 CEST 2007 Paolo Molaro <lupus@ximian.com>
12380
12381         * mini-arm.c: implemented fast delegate dispatch.
12382
12383 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
12384
12385         * mini-amd64.c (mono_arch_compute_omit_fp): Add more checks to ensure
12386         that fp elimination is turned off if the space required by locals is too
12387         big. Fixes #331958.
12388
12389 Tue Oct 9 21:01:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
12390
12391         * Makefile.am, mini-arm.c, mini-arm.h, tramp-arm.c: ported
12392         ARM to the new style trampoline.
12393
12394 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
12395
12396         * tramp-amd64.c: Rework the specific trampoline code to make it smaller.
12397
12398         * mini-amd64.h mini-amd64.c: Export amd64_patch as mono_amd64_patch.
12399
12400 2007-10-09  Martin Baulig  <martin@ximian.com>
12401
12402         * debug-debugger.h
12403         (MonoDebuggerMetadataInfo): Added `field_info_type_offset' and
12404         `field_info_offset_offset'.     
12405
12406 Tue Oct 9 09:47:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
12407
12408         * mini-ppc.c, mini-ppc.h, mini-ops.h, inssel-ppc.brg, cpu-g4.md:
12409         removed more internal usage of the r11 register and made it available
12410         to the register allocator.
12411
12412 2007-10-08  Mark Probst  <mark.probst@gmail.com>
12413
12414         * mini.c, mini-amd64.c, mini-x86.c: Allow open generic contexts
12415         when sharing generics and treat type variables as references.
12416
12417 Mon Oct 8 10:55:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
12418
12419         * mini-ppc.c: started removing the internal uses of register r11
12420         to eventually allow the register allocator to manage it as an
12421         additional available register.
12422
12423 Mon Oct 8 14:25:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
12424
12425         * tramp-amd64.c: fixed memory corruption in the trampoline generation.
12426
12427 Mon Oct 8 12:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
12428
12429         * tramp-ppc.c, tramp-x86.c: reduce the alignment requirements for
12430         specific trampolines as they are not performance critical as a jump
12431         target (maybe align as before only for AOT code?). This saves about
12432         200 KB of native code on x86 for monodevelop startup.
12433
12434 Mon Oct 8 10:04:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
12435
12436         * tramp-ppc.c: reduce the size of the trampolines, saves 160KB on
12437         monodevelop startup.
12438
12439 2007-10-06  Zoltan Varga  <vargaz@gmail.com>
12440
12441         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Allow signed displacements.
12442
12443         * mini-sparc.h mini-sparc.c: Implement IMT support.
12444
12445         * tramp-sparc.c (mono_arch_create_trampoline_code): Rework the trampoline code so
12446         its smaller and doesn't clobber sparc_g1.
12447
12448         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Update after trampoline changes.
12449
12450 Fri Oct 5 18:28:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
12451
12452         * mini-ppc.c: optimized the size of the IMT thunks a bit.
12453
12454 Fri Oct 5 18:08:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
12455
12456         * mini-ppc.c: implemented fast delegate invocation.
12457
12458 Fri Oct 5 00:01:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
12459
12460         * mini-ppc.h, mini-ppc.c: IMT support for the PPC architecture.
12461
12462 Thu Oct 4 22:04:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
12463
12464         * mini-ppc.c, mini-ppc.h, tramp-ppc.c, Makefile.am: port the PPC
12465         code to the new style trampoline in preparation for IMT support.
12466
12467 Thu Oct 4 19:01:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
12468
12469         * mini-ppc.c, tramp-ppc.c: don't use r13 as it's used by the PPC EABI
12470         systems already. This also reduces the specific trampiline sizes and
12471         prepares for the use of r12 as the IMT identifier register.
12472
12473 Thu Oct 4 16:38:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
12474
12475         * mini-mips.h: endianess fix (simplified from a patch by
12476         Thomas Kunze <thommy@tabao.de>, bug #323737).
12477
12478 Thu Oct 4 14:43:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
12479
12480         * exceptions-ppc.c, mini-ppc.h: refactor to use macros
12481         to access ucontext fields and enable netbsd support
12482         (partially from Magnus Henoch <mange@freemail.hu>).
12483
12484 Thu Oct 4 12:35:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
12485
12486         * genmdesc.pl: patch from Henryk Plotz <henryk@openmoko.org> to
12487         use the preprocessor from the CPP env var if it is set.
12488
12489 Wed Oct 3 17:11:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
12490
12491         * mini-trampolines.c: fixed an assertion and moved it earlier in the
12492         code, before interface_offset gets used.
12493
12494 2007-10-02  Zoltan Varga  <vargaz@gmail.com>
12495
12496         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call 
12497         mono_class_setup_vtable () before accessing klass->vtable.
12498
12499 2007-10-01  Zoltan Varga  <vargaz@gmail.com>
12500
12501         * aot-compiler.c (get_plt_index): Rework the handling of wrappers to be not so
12502         hackish.
12503
12504 Mon Oct 1 15:00:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
12505
12506         * mini.c, mini-trampolines.c, mini.h: enable the lazy filling of the
12507         IMT slots (this saves hundreds of KB of memory in programs like
12508         IronPython and Monodevelop).
12509
12510 Mon Oct 1 14:44:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
12511
12512         * mini.c: print the delegate counter.
12513
12514 Mon Oct 1 14:36:50 CEST 2007 Paolo Molaro <lupus@ximian.com>
12515
12516         * mini-x86.c: make it easier to enable the debugging code for IMT
12517         slots.
12518
12519 2007-09-28  Martin Baulig  <martin@ximian.com>
12520
12521         * debug-debugger.h
12522         (MonoDebuggerMetadataInfo): Add `klass_image_offset',
12523         `mono_method_klass_offset' and `mono_method_token_offset'.
12524
12525 2007-09-20  Mark Probst  <mark.probst@gmail.com>
12526
12527         * mini.c: First generics sharing implementation.  Can only share
12528         in very simple cases.  If sharing doesn't work it falls back to
12529         dedicated compilation.
12530
12531         * mini.h: Flag in MonoCompile to specify whether generic
12532         compilation is shared.  Flags enum for marking which generic inst
12533         of a context is used.  Prototypes for helper functions.
12534
12535         * generic-sharing.c: Helper functions for generic method sharing.
12536
12537         * optflags-def.h: Optimization flag (gshared) for enabling generic
12538         method sharing added.
12539
12540         * Makefile.am: generic-sharing.c added.
12541
12542 2007-09-19 Daniel Nauck <dna@mono-project.de>
12543
12544         * mini.c (mono_thread_abort): fixed typo in r86014. It should be '==' instead of '!='.
12545
12546 2007-09-19  Massimiliano Mantione  <massi@ximian.com>
12547         * mini.c (mono_thread_abort): Correctly handle ThreadAbortException,
12548         fixes bug 325507.
12549
12550 2007-09-19  Martin Baulig  <martin@ximian.com>
12551
12552         * mini.c (mini_cleanup): Only call mono_debugger_cleanup() here;
12553         mono_debug_cleanup() is now part of mono_cleanup().
12554
12555 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
12556
12557         * driver.c (mono_main): Fix a warning.
12558
12559 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
12560
12561         * aot-compiler.c: Optimize various parts when processing large assemblies.
12562         Fixes ##325568.
12563
12564         * mini.c (mono_patch_info_hash): Improve hash function.
12565
12566 2007-09-14  Jonathan Chambers <joncham@gmail.com>
12567
12568         * mini-exceptions.c: Add HAVE_UNISTD_H check around include.
12569         
12570         Code is contributed under MIT/X11 license.
12571
12572 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
12573
12574         * mini.c (mini_init): Fix a leak.
12575
12576         * debug-mini.c (mono_debug_free_method_jit_info): Fix a leak.
12577
12578 Fri Sep 14 12:53:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
12579
12580         * mini.c: redirect string.InternalAllocStr() to the managed allocator.
12581
12582 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
12583
12584         * mini-amd64.c (mono_arch_find_imt_method): Add support for AOT code.
12585
12586 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
12587
12588         * Makefile.am generics-variant-types.2.il generics.cs: Add some generics
12589         variance tests.
12590
12591         * inssel.brg: Reorganize the isinst/castclass code to reduce code duplication.
12592
12593         * mini.c (handle_alloc): Enable managed allocators in AOT code.
12594
12595         * aot-compiler.c (encode_patch): Add support for MONO_WRAPPER_ALLOC.
12596
12597         * aot-runtime.c (decode_patch_info): Ditto.
12598
12599 2007-09-12  Jonathan Chambers <joncham@gmail.com>
12600
12601         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement
12602         static case. Cache delegates in architecture specific code, 
12603         based on number of parameters.
12604         
12605         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Cache delegates
12606         in architecture specific code, based on number of parameters.
12607         
12608         * mini-trampolines.c (mono_delegate_trampoline): Architecture specific 
12609         caching happen in architecture specific code now.
12610         
12611         Code is contributed under MIT/X11 license.
12612
12613 2007-09-12  Jonathan Chambers <joncham@gmail.com>
12614
12615         * mini.h, mini.c, mini-x86.c, mini-amd64.c, mini-hppa.c, mini-mips.c,
12616         mini-s390x.c, mini-arm.c, mini-ia64.c, mini-sparc.c, mini-ppc.c, mini-alpha.c,
12617         mini-s390.c: Add mono_arch_init and mono_arch_cleanup methods.
12618
12619         Code is contributed under MIT/X11 license.
12620
12621 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
12622         * mini.c: (mono_thread_abort) Fixed bug #82416.
12623
12624 Tue Sep 11 16:15:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
12625
12626         * mini.: hook the new managed GC allocation feature into the JIT.
12627
12628 Tue Sep 11 16:14:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
12629
12630         * mini.c: implementation for the new runtime tls opcode.
12631
12632 2007-09-11  Martin Baulig  <martin@ximian.com>
12633
12634         * debug-debugger.h
12635         (MonoDebuggerMetadataInfo): Add `mono_method_flags_offset' and
12636         `mono_method_inflated_offset'.
12637
12638 2007-09-07  Zoltan Varga  <vargaz@gmail.com>
12639
12640         * driver.c mini.h mini.c: Add a new devel command line option for injecting
12641         async exceptions into a method.
12642
12643         * mini-amd64.h mini-amd64.c: Implement injecting of async exceptions for the
12644         purpose of testing whenever the unwinder works at every instruction.
12645
12646 Thu Sep 6 12:42:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
12647
12648         * mini.c: check accessibility of method used in ldftn (fixes
12649         bug #82635).
12650
12651 2007-09-04  Zoltan Varga  <vargaz@gmail.com>
12652
12653         * mini-amd64.c (mono_arch_output_basic_block): Fix a warning.
12654
12655         * inssel.brg: Fix a warning.
12656
12657 2007-09-03  Martin Baulig  <martin@ximian.com>
12658
12659         * debug-debugger.c: `MONO_DEBUGGER_EVENT_INITIALIZE_MANAGED_CODE'
12660         now takes the `main_method' as argument.
12661
12662 2007-09-02  Zoltan Varga  <vargaz@gmail.com>
12663
12664         * cpu-sparc.md (endfilter): Add missing src1:i argument.
12665
12666 2007-08-30  Jonathan Chambers <joncham@gmail.com>
12667
12668         * driver.c: include the cil-coff.h header on Windows.
12669         
12670         Code is contributed under MIT/X11 license.
12671
12672 Thu Aug 30 16:17:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
12673
12674         * mini.c, driver.c: don't include the cil-coff.h header.
12675
12676 Thu Aug 30 14:50:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
12677
12678         * mini.c: flag places that needs fixes fo soft-float support.
12679
12680 Wed Aug 29 18:26:20 CEST 2007 Paolo Molaro <lupus@ximian.com>
12681
12682         * mini.h, inssel-float.brg: fix soft-float constant loads on big
12683         endian systems (partially from Dean Jenkins, bug #81924).
12684
12685 2007-08-28  Mark Probst  <mark.probst@gmail.com>
12686
12687         * mini.c (check_linkdemand): Remove embedded reference object in
12688         call to LinkDemandSecurityException.
12689         (mono_jit_compile_method_inner): Call LinkDemandSecurityException
12690         with an IntPtr instead of a reference object.
12691
12692 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
12693
12694         * mini.c (handle_initobj): Handle alignment properly.
12695
12696         * inssel.brg (mini_emit_memset): Ditto. 
12697
12698         * inssel.brg (mini_emit_memcpy): Ditto. 
12699
12700         * inssel-sparc.brg: Ditto.              
12701
12702         * mini.h mini.c inssel-*.brg: Pass alignment information to OP_MEMCPY/MEMSET.
12703
12704 2007-08-26  Zoltan Varga  <vargaz@gmail.com>
12705
12706         * mini-exceptions.c (mono_handle_exception_internal): Skip the first frame for
12707         exceptions raised in unmanaged code. Fixes part of #82594.
12708
12709 2007-08-24  Mark Probst  <mark.probst@gmail.com>
12710
12711         * mini.c (mono_method_to_ir), declsec.c
12712         (mono_declsec_linkdemand_aptc): Fixed custom attr leaks.
12713
12714 2007-08-22  Martin Baulig  <martin@ximian.com>
12715
12716         * debug-mini.h
12717         (MonoDebuggerThreadInfo): New typedef.
12718         (mono_debugger_thread_table): New global variable.
12719         (mono_debugger_thread_created): New public function.
12720         (mono_debugger_thread_cleanup): New public function.
12721
12722         * debug-debugger.h
12723         (MonoDebuggerInfo):
12724         - removed `get_current_thread' and `lookup_assembly'.
12725         - removed `data_table'.
12726         - added `thread_table'.
12727
12728         * mini.c
12729         (mono_thread_start_cb): Call mono_debugger_thread_created().
12730         (mono_thread_attach_cb): Likewise.
12731         (mini_thread_cleanup): Call mono_debugger_thread_cleanup().
12732         (mini_cleanup): Move mono_debug_cleanup() down, after free'ing the
12733         initial domain.
12734
12735         * driver.c (mono_main): Move mono_debug_init() up, before calling
12736         mini_init(); mono_debug_init_1() and mono_debug_init_2() are gone.
12737
12738 Tue Aug 21 16:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
12739
12740         * mini-x86.c, inssel-x86.brg: group multiple stack adjustments
12741         together when passing several arguments of type double (gives a small
12742         speedup and saves a few bytes of generated code).
12743
12744 2007-08-20  Jb Evain  <jbevain@novell.com>
12745
12746         * mini.c (mono_method_to_ir): fix leak on InvalidProgramException.
12747
12748 2007-08-20  Jb Evain  <jbevain@novell.com>
12749
12750         * mini.c (mono_method_to_ir): throw MethodAccessException
12751         and FieldAccessException instead of InvalidProgramException.
12752
12753 2007-08-20  Mark Probst  <mark.probst@gmail.com>
12754
12755         * mini.c: CoreCLR security checks.
12756
12757         * mini.h: Removed MonoSecurityMode (moved to
12758         metadata/security-manager.h) and mono_security_mode global var
12759         (replaced by set/get functions in security-manager.h).
12760
12761         * driver.c: Added "core-clr-test" security mode for testing.  Used
12762         set-function for setting security mode.
12763
12764 2007-08-17  Mark Probst  <mark.probst@gmail.com>
12765
12766         * mini.c: MonoJitInfo's are freed hazardously now.  Statistics for
12767         the new jit_info_table.
12768
12769         * driver.c: Test code for the new jit_info_table (enabled by the
12770         define MONO_JIT_INFO_TABLE_TEST).
12771
12772 2007-08-14  Zoltan Varga  <vargaz@gmail.com>
12773
12774         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
12775         detection of call <REG> instruction sequence. Fixes build on freebsd.
12776
12777 2007-08-13  Zoltan Varga  <vargaz@gmail.com>
12778
12779         * mini-exceptions.c: Fix a warning.
12780
12781 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
12782
12783         * exceptions-amd64.c (mono_arch_handle_altstack_exception): Enable the new
12784         stack overflow handling code on amd64 too.
12785
12786         * mini-exceptions.c (mono_setup_altstack): Make this use 
12787         mono_thread_get_stack_bounds ().
12788
12789         * mini-x86.h: Disable sigaltstack on solaris x86.
12790
12791 2007-08-10  Zoltan Varga  <vargaz@gmail.com>
12792
12793         * mini-exceptions.c (mono_setup_altstack): Enable this to work on solaris x86.
12794
12795 2007-08-10  Geoff Norton  <gnorton@customerdna.com>
12796
12797         * tramp-x86.c: Remove some unneeded alignment changes on Apple.  Fixes #82387.
12798
12799 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
12800
12801         * mini-exceptions.c (mono_print_thread_dump): Enable this on amd64 too.
12802
12803         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Fix a warning.
12804
12805 2007-08-03  Neale Ferguson <neale@sinenomine.net>
12806
12807         * mini-s390.c (add_general): Adjust offset calculation to take into account of rounding up
12808         due to alignment.
12809
12810 Thu Aug 2 17:36:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
12811
12812         * mini-ppc.c: avoid an invalid encoding of unsigned right shift by 0
12813         to be emitted (bug #82281).
12814
12815 2007-08-01  Martin Baulig  <martin@ximian.com>
12816
12817         Merged the `debugger-dublin' branch.
12818
12819         * debug-debugger.h (MonoDebuggerInfo):
12820         Removed the `old_*' compatibility entries.
12821         Added `debugger_version' and `data_table'.
12822         Renamed `get_method_addr_or_bpt' -> `insert_breakpoint'.
12823         Renamed `remove_method_breakpoint' -> `remove_breakpoint'.
12824
12825         * debug-mini.c
12826         (MiniDebugMethodBreakpointInfo): Add `address_list'.
12827         (mono_debugger_check_breakpoints): Take a `MonoDebugMethodAddress *'
12828         instead of a `gconstpointer'.
12829         (mono_debugger_insert_method_breakpoint): Return a
12830         `MonoDebugMethodAddressList *'.
12831
12832 2007-06-28  Martin Baulig  <martin@ximian.com>
12833
12834         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
12835
12836 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
12837
12838         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Avoid using 
12839         __builtin_frame_address () since it is broken on older gcc versions.
12840
12841 Tue Jul 31 17:34:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
12842
12843         * mini.c, mini.h, mini-exceptions.c: added a bit of documentation
12844         on the stack overflow handling and made the managed stack overflows
12845         catchable in most cases using soft guard pages.
12846         * exceptions-x86.c: added code to restore the protection in the soft
12847         guard pages at the end of exception handling.
12848
12849 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
12850
12851         * mini.c (SIG_HANDLER_SIGNATURE): Fix a warning.
12852
12853 Mon Jul 30 17:43:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
12854
12855         * exceptions-ppc.c, mini-ppc.h: arch-specific stack overflow
12856         exception handling.
12857
12858 Mon Jul 30 17:38:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
12859
12860         * mini-alpha.h, mini-ia64.h, mini-sparc.h: disable the altstack
12861         signal handling support until it has been ported to the new mechanism.
12862         * mini.c: fixed stack overflow detection and use the new
12863         architecture code  to handle signals on the altstack.
12864
12865 Mon Jul 30 17:33:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
12866
12867         * exceptions-amd64.c, mini-amd64.h: amd64 code to handle
12868         stack overflows on the alt stack.
12869
12870 Mon Jul 30 17:29:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
12871
12872         * exceptions-x86.c, mini-x86.h, mini.h: new code to handle
12873         stack overflows on the alt stack.
12874
12875 Mon Jul 30 11:50:06 CEST 2007 Paolo Molaro <lupus@ximian.com>
12876
12877         * exceptions-ppc.c: cleanup preparing for altstack support.
12878
12879 Mon Jul 30 11:31:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
12880
12881         * exceptions-arm.c: cleanup preparing for altstack support.
12882
12883 2007-07-27  Mark Probst  <mark.probst@gmail.com>
12884
12885         * mini.c (print_jit_stats): Output hazard pointer stats.
12886
12887 2007-07-26  Mark Probst  <mark.probst@gmail.com>
12888
12889         * driver.c, mini.c: Replaced security mode flags with a single
12890         enum variable.
12891
12892 Thu Jul 26 20:12:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
12893
12894         * mini.c, mini-exceptions.c: cleanup the sigaltstack code.
12895
12896 2007-07-25  Mark Probst  <mark.probst@gmail.com>
12897
12898         * mini.c, mini.h, driver.c (mono_main): Added command-line flag
12899         (which doesn't do anything yet) for activating Core CLR
12900         (Silverlight) security.
12901
12902 Tue Jul 24 21:16:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
12903
12904         * mini-codegen.c: work around a possible gcc bug on arm.
12905
12906 Tue Jul 24 17:20:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
12907
12908         * driver.c, mini-x86.h, mini-amd64.h: print a nice error
12909         message for platforms that don't support AOT compilation.
12910
12911 Mon Jul 23 10:29:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
12912
12913         * mini.h, mini.c, driver.c: temporary smcs hack.
12914
12915 Mon Jul 23 09:29:34 CEST 2007 Paolo Molaro <lupus@ximian.com>
12916
12917         * mini-arm.h, mini-arm.c: arm EABI fixes.
12918
12919 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
12920
12921         * exceptions-x86.c (mono_arch_find_jit_info): Handle the lmf->method == NULL
12922         case.
12923
12924         * tramp-x86.c (mono_arch_create_trampoline_code): Only set lmf->method for
12925         trampolines taking a method argument.
12926
12927         * mini-x86.h (MonoLMF): Add an 'esp' field plus comments.
12928
12929         * mini-x86.c (mono_arch_emit_prolog): Update after changes to the LMF structure.
12930         * tramp-x86.c (mono_arch_create_trampoline_code): Ditto.
12931
12932         * exceptions-x86.c (mono_arch_get_jit_info): Properly clean up the stack after
12933         JIT compilation throws an exception. Fixes #82050.
12934
12935 2007-07-19  Mark Probst  <mark.probst@gmail.com>
12936
12937         * mini.c: Removed the MonoLoaderErrorKind enum and replaced it
12938         with the MONO_EXCEPTION_ defines.
12939
12940 2007-07-17  Zoltan Varga  <vargaz@gmail.com>
12941
12942         * mini-amd64.c (mono_arch_find_imt_method): Handle mov reg,IMM64 case. Fixes
12943         #82117.
12944         
12945         * mini-amd64.c (mono_arch_find_imt_method): Add some debug code to help find out
12946         the cause of an assertion.
12947
12948 Mon Jul 16 19:31:21 CEST 2007 Paolo Molaro <lupus@ximian.com>
12949
12950         * mini.c, jit-icalls.c: mono_get_inflated_method() is obsolete,
12951         removed.
12952
12953 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
12954
12955         * mini-amd64.c (mono_arch_build_imt_thunk): Remove the non-32bit MonoMethod
12956         assert. Should fix #82103.
12957
12958 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
12959
12960         * mini-exceptions.c (mono_jit_walk_stack_from_ctx): Use MONO_CONTEXT_GET_SP ()
12961         here too. Fixes #82095.
12962
12963         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for non-32bit MonoMethod
12964         addresses.
12965
12966         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a couple asserts.
12967
12968         * mini-amd64.h: Enable IMT for amd64.
12969         
12970         * mini-amd64.c (mono_arch_build_imt_thunk): Optimize IMT thunk size.
12971
12972 2007-07-12  Zoltan Varga  <vargaz@gmail.com>
12973
12974         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for IMT call sequences.
12975
12976 2007-07-12  Mark Probst  <mark.probst@gmail.com>
12977
12978         * mini.c (check_linkdemand, mono_method_to_ir): Abort compilation
12979         as soon as check_linkdemand sets an exception_type.
12980
12981 Thu Jul 12 12:18:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
12982
12983         * mini-x86.c: fixed offsets for IMT call sequence.
12984         * mini-x86.h: enable IMT again.
12985
12986 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
12987
12988         * trace.c (mono_trace_enter_method): Decode MonoType too.
12989
12990         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Handle signed displacements too.
12991
12992         * mini.h mini-x86.h mini-trampolines.c: Change the signature of mono_arch_find_imt_method () to pass the calling code address too.
12993
12994         * mini-amd64.c: Add preliminary IMT implementation.
12995         
12996 Wed Jul 11 18:21:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
12997
12998         * mini-x86.c: adjusted mono_arch_get_vcall_slot_addr () to
12999         understand the new IMT-base interface invocation (thanks to
13000         Daniel Nauck for the report and the remote debugging session).
13001
13002 Wed Jul 11 14:54:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
13003
13004         * mini-x86.c: size and speed optimizations for the IMT bsearch.
13005
13006 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
13007
13008         * Makefile.am (aotcheck): Make this actually use the AOTed code.
13009
13010 Wed Jul 11 12:41:32 CEST 2007 Paolo Molaro <lupus@ximian.com>
13011
13012         * mini-trampolines.c: implement AOT IMT support.
13013         * mini-x86.h: enable IMT support for wider testing.
13014
13015 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
13016
13017         * inssel.brg (emit_imt_argument): Add aot support here.
13018
13019         * aot-runtime.c (decode_patch_info): Fix reading of MONO_PATCH_INFO_METHOD.
13020
13021 Tue Jul 10 17:50:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
13022
13023         * mini-x86.c, mini-x86.h, tramp-x86.c: x86 arch-specific changes
13024         of the IMT implementation, partially from massi, with my
13025         implementation of the bsearch sequence. Disabled by default until
13026         the AOT code is implemented.
13027
13028 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
13029
13030         * cpu-x86.md: The source argument of sext_i1/i2 must by a byte reg.
13031
13032         * inssel-x86.brg: Add reg:ldind.i1(regvar) rules. Fixes #82056.
13033
13034 Tue Jul 10 17:33:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
13035
13036         * inssel.brg, mini.c, mini.h, mini-trampolines.c:
13037         arch-independent IMT JIT code from Massimiliano
13038         Mantione (massi@ximian.com) with small cleanups from me.
13039
13040 Tue Jul 10 13:07:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
13041
13042         * Makefile.am: fix svn invocation to get the svn revision to be
13043         independent of the local language (build fix).
13044
13045 2007-07-09  Mark Probst  <mark.probst@gmail.com>
13046
13047         * mini.c (inline_method): Reset cfg->exception_type if the
13048         inlining is aborted.  Fixes: 82049.
13049
13050 Mon Jul 9 17:26:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
13051
13052         * mini.c: remove assert from exception handling code when exception_ptr
13053         is not set.
13054
13055 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
13056
13057         * mini.c (mono_codegen): Add an assert.
13058
13059         * mini-x86.c (mono_arch_emit_prolog): Allocate space for the profiler method 
13060         enter and leave code.
13061         * mini-amd64.c (mono_arch_emit_prolog): Likewise.
13062
13063 Thu Jul 5 20:12:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
13064
13065         * mini-ppc.c: fixed memory corruption for localloc(0)
13066         (bug #81852).
13067
13068 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
13069         
13070         * mini.c: Fix warnings.
13071
13072 Wed Jul 4 15:30:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
13073
13074         * optflags-def.h, mini-x86.c: added sse2 optimization flag and use it
13075         to emit better double->int conversions.
13076
13077 Tue Jul 3 19:42:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
13078
13079         * mini.c: the provided Min/Max optimizations are valid for unisgned
13080         ints.
13081
13082 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
13083
13084         * 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
13085
13086 2007-06-28  Miguel de Icaza  <miguel@novell.com>
13087
13088         * mini.c (mono_running_on_valgrind): Add support for reporting the
13089         method and  its boundaries to valgrind.
13090
13091 2007-06-28  Martin Baulig  <martin@ximian.com>
13092
13093         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
13094
13095 2007-06-25  Zoltan Varga  <vargaz@gmail.com>
13096
13097         * ssa.c (visit_inst): Add support for OP_BR. Fixes #81946.
13098
13099         * generic.2.cs: Add new test case.
13100
13101 2007-06-25  Martin Baulig  <martin@ximian.com>
13102
13103         Merged the `debugger-dublin' branch.
13104
13105         * debug-mini.c
13106         (mono_debugger_insert_method_breakpoint): New public method.
13107         (mono_debugger_remove_method_breakpoint): Likewise.
13108         (mono_debugger_check_breakpoints): New static method.
13109         (mono_debug_close_method): Call mono_debugger_check_breakpoints().
13110
13111         * debug-debugger.h (MonoDebuggerInfo):
13112         Renamed (to keep backward compatibility in the vtable):
13113         `insert_breakpoint' -> `old_insert_breakpoint'.
13114         `remove_breakpoint' -> `old_remove_breakpoint'.
13115         `create_string' -> `old_create_string'.
13116         `lookup_class' -> `old_lookup_class'.
13117         `lookup_type' -> removed; changed into a dummy field.
13118         `lookup_assembly' -> `old_lookup_assembly'.
13119         Added (same functionality, but different signature):
13120         `create_string', `lookup_class', `lookup_assembly'
13121         Added new:
13122         `get_method_addr_or_bpt', `remove_method_breakpoint',
13123         `runtime_class_init'.
13124
13125         * debug-debugger.c: Merged the `debugger-dublin' branch.
13126
13127 2007-06-23  Zoltan Varga  <vargaz@gmail.com>
13128
13129         * mini-amd64.c (peephole_pass_1): Optimize away moves at the beginning of the bb as
13130         well.
13131         (peephole_pass): Likewise.
13132
13133 Fri Jun 22 09:17:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
13134
13135         * driver.c: hopefully make setaffinity work also for ancient
13136         versions of linux.
13137
13138 2007-06-22  Atsushi Enomoto  <atsushi@ximian.com>
13139
13140         * driver.c : win32 build fix.
13141
13142 Thu Jun 21 19:24:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
13143
13144         * driver.c: check for the MONO_NO_SMP env var and bind to a single
13145         processor if it is set.
13146
13147 2007-06-21  Martin Baulig  <martin@ximian.com>
13148
13149         * debug-mini.h: New file.
13150
13151         * debug-mini.c
13152         (mono_debugger_insert_breakpoint_full): Moved here from
13153         ../metadata/mono-debug-debugger.c.
13154         (mono_debugger_remove_breakpoint): Likewise.
13155         (mono_debugger_breakpoint_callback): Likewise.
13156
13157 2007-06-15  Raja R Harinath  <rharinath@novell.com>
13158
13159         * jit-icalls.c (mono_helper_compile_generic_method): Update to
13160         changes in MonoGenericClass.
13161
13162 2007-06-14  Zoltan Varga  <vargaz@gmail.com>
13163
13164         * mini-codegen.c (mono_opcode_to_type): Fix ia64 build.
13165
13166 2007-06-14  Raja R Harinath  <rharinath@novell.com>
13167
13168         * jit-icalls.c (mono_helper_compile_generic_method): Update to
13169         removal of MonoGenericMethod.
13170
13171 Thu Jun 14 12:42:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
13172
13173         * mini-exceptions.c: hooks for the exception events profiling API.
13174
13175 2007-06-14  Randolph Chung  <tausq@debian.org>
13176
13177         * Makefile.ma: Add hppa target.
13178         * mini-arch.h: Include mini-hppa.h
13179         * cpu-hppa.md, exceptions-hppa.c, inssel-hppa.brg, mini-hppa.c,
13180         mini-hppa.h, tramp-hppa.c: New files for 32-bit HPPA port.
13181         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
13182
13183 2007-06-14  Randolph Chung  <tausq@debian.org>
13184
13185         * inssel.brg: Add rules for "chained" compare-branch operations so that
13186         a single compare op can affect multiple branches.  Adjust cost for
13187         OP_CEQ/OP_CGT/OP_CGT_UN/OP_CLT/OP_CLT_UN.
13188         * inssel-long32.brg: Update rules to use compare-branch macros.  Adjust
13189         cost for some rules so that they can more easily be overridden by
13190         per-arch rules (with fixes from lupus).
13191         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
13192
13193 2007-06-13  Randolph Chung  <tausq@debian.org>
13194
13195         * mini-ops.h: Reorder branch ops so that they match the order of the
13196         corresponding CEE_* ops.  The code expects them this way.
13197         Add new ops for HPPA target.
13198         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
13199
13200 2007-06-13  Randolph Chung  <tausq@debian.org>
13201
13202         * mini-exceptions.c: Handle cases where the stack grows towards
13203         larger addresses.
13204         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
13205
13206 Wed Jun 13 19:13:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
13207
13208         * jit-icalls.c, mini.h, mini.c: added virtual generic invoke
13209         counter.
13210         * driver.c: explain where a non-matching corlib is found.
13211
13212 2007-06-13  Mark Probst  <mark.probst@gmail.com>
13213
13214         * mini.c (print_jit_stats): Output dynamic code allocation stats.
13215
13216 2007-06-10  Sanghyeon Seo <sanxiyn@gmail.com>
13217
13218         * mini-exceptions.c: Generate a method profile leave event during
13219         an exception to ensure that the profiler gets notified.
13220
13221 2007-06-07  Zoltan Varga  <vargaz@gmail.com>
13222
13223         * mini-amd64.c (peephole_pass): Merge some small changes from the linear-ir 
13224         branch.
13225
13226         * cpu-amd64.md: Add long_and/or/xor opcodes.
13227
13228 2007-06-06  Wade Berrier  <wberrier@novell.com>
13229
13230         * cpu-s390x.md (shr_imm): Correct the length of shr_imm instruction.
13231         (./class/lib/monolite/mcs.exe:25498): WARNING **: wrong maximal instruction 
13232         length of instruction shr_imm (expected 8, got 10)
13233
13234 2007-06-06  Zoltan Varga  <vargaz@gmail.com>
13235
13236         * mini-ia64.c (mono_arch_output_basic_block): Really fix the build.
13237
13238 2007-06-06  Mark Probst  <mark.probst@gmail.com>
13239
13240         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
13241         MonoInternalHashTable again (fixed bug in the internal hash table
13242         code).
13243
13244 2007-06-06  Mark Probst  <mark.probst@gmail.com>
13245
13246         * mini.c, driver.c: Reverted the MonoInternalHashTable changes.
13247         Have to figure out what makes it crash the SWF regression.
13248
13249 2007-06-05  Zoltan Varga  <vargaz@gmail.com>
13250
13251         * mini-ia64.c (mono_arch_lowering_pass): Fix ia64 build.
13252
13253 Tue Jun 5 17:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
13254
13255         * mini.c: optimize out the type check when storing null in a
13256         reference array.
13257
13258 2007-06-04  Mark Probst  <mark.probst@gmail.com>
13259
13260         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
13261         MonoInternalHashTable.
13262
13263 Mon Jun 4 11:29:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
13264
13265         * inssel.brg, mini.c, mini-ops.h: optimized Math.Mini/Max
13266         signed integer methods.
13267
13268 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
13269
13270         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case 
13271         permanently since the current approach doesn't work.
13272
13273 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
13274
13275         * inssel.brg (stmt): Only call delegate->invoke_impl if 
13276         MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE is defined.
13277
13278 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
13279
13280         * mini-amd64.c (mono_arch_output_basic_block): Unify div/rem opcodes and handle
13281         the sreg2==rdx case.
13282         
13283         * mini-amd64.c cpu-amd64.md: Correct length of r4const instruction and take into
13284         account if it contains a rex prefix.
13285         (peephole_pass): Handle OP_FMOVE as well.
13286
13287 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
13288
13289         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case for now
13290         as it causes regressions.
13291
13292 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
13293
13294         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement support for the
13295         static case as well.
13296
13297         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix ia64 build.
13298
13299         * mini-x86.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
13300         (mono_arch_get_this_arg_from_call): Ditto.
13301
13302         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Removed.
13303
13304         * inssel.brg (mini_emit_virtual_call): Call delegate->Invoke through the delegate's
13305         invoke_impl field.
13306
13307         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
13308         (mono_arch_get_this_arg_from_call): Ditto.
13309
13310         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Removed.
13311         
13312         * mini-trampolines.c (mono_delegate_trampoline): Complete rewrite. On first call,
13313         try to create optimized invoke code and use that for further invocations. 
13314         Otherwise, use the original mono_marshal_get_delegate_invoke () implementation.
13315
13316         * mini-x86.h mini-ia64.h: Remove MONO_ARCH_HAS_CREATE_DELEGATE_TRAMPOLINE for now.
13317
13318 2007-05-29  Rodrigo Kumpera  <kumpera@gmail.com>
13319
13320         * inssel.brg (mini_emit_virtual_call): Statically dispatch virtual calls to
13321         sealed classes or methods.
13322         *devirtualization.cs: tests for the new optimization
13323
13324 2007-05-29  Zoltan Varga  <vargaz@gmail.com>
13325
13326         * liveness.c (update_gen_kill_set): No need to set VOLATILE flags here, it is done
13327         by the update_volatile () function.
13328
13329 2007-05-27  Zoltan Varga  <vargaz@gmail.com>
13330
13331         * driver.c (mono_main): Call g_thread_init () early since newer glib versions
13332         require it.
13333
13334         * abcremoval.c (mono_perform_abc_removal): Avoid using alloca.
13335
13336 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
13337
13338         * mini.c: Add configure checks for header files.
13339         * mini-x86.c: Add configure checks for header files.
13340         * trace.c: Add configure checks for header files.
13341         * aot-runtime.c: Add configure checks for header files.
13342         * aot-compiler.c: Add configure checks for header files.
13343         * driver.c: Add configure checks for header files.
13344         * mini-codegen.c: Add configure checks for header files.
13345         
13346         Code is contributed under MIT/X11 license.
13347
13348 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
13349
13350         * mini-ia64.c (mono_arch_lowering_pass): Fix the handling of
13351         icompare_imm -128 + op_iclt. Fixes #81703.
13352
13353 2007-05-19  Zoltan Varga  <vargaz@gmail.com>
13354
13355         * mini-codegen.c (mono_local_regalloc): Fix long-shift-regalloc on amd64.
13356
13357 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
13358
13359         * inssel.brg: added "mini_emit_load_intf_bit_reg_vtable", and used it
13360         inside "mini_emit_isninst_iface_cast" and "mini_emit_castclass_iface"
13361         so that all isinst checks now use "interface_bitmap".
13362
13363 2007-05-15  Zoltan Varga  <vargaz@gmail.com>
13364
13365         * cpu-amd64.md (jmp): Fix a warning.
13366
13367         * inssel.brg (CEE_SWITCH): Hopefully fix #80738.
13368
13369         * basic.cs: Add new regression test.
13370
13371         * basic.cs: Remove test which is now in basic-long.cs.
13372
13373         * mini-ia64.c (mono_arch_output_basic_block): Sign extend in CEE_CONV_I8/CEE_CONV_I.
13374
13375         * basic-long.cs: Add new test.
13376         
13377 2007-05-13  Zoltan Varga  <vargaz@gmail.com>
13378
13379         * mini-sparc.c (mono_spillvar_offset_float): Fix sparc build.
13380
13381 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
13382
13383         * cpu-x86.md minix-86.c: Add a peephole_pass_1 () as on amd64.
13384
13385         * mini-x86.c (mono_arch_output_basic_block): Use mono_opcode_to_cond () in a few
13386         places.
13387         
13388         * mini-x86.c (mono_arch_emit_exceptions): Decrease the size of the exception 
13389         throwing code a bit.
13390
13391         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Decrease the size of 
13392         the exception throwing code a bit.
13393
13394         * mini-x86.c (get_call_info): Allocate result from a mempool.
13395
13396 2007-05-11  Zoltan Varga  <vargaz@gmail.com>
13397
13398         * aot-compiler.c (find_typespec_for_class): Fix the assert.
13399
13400         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
13401
13402         * mini.h (MonoCompile): Add 'token_info_hash' field.
13403
13404         * mini.c: Save token->method associations during compilation so the AOT 
13405         compiler can use it.
13406         
13407         * aot-compiler.c aot-runtime.c: Add support for compiling non-generic methods
13408         which reference generic classes and methods.
13409
13410 2007-05-10  Zoltan Varga  <vargaz@gmail.com>
13411
13412         * mini.h mini-<ARCH>.h: Get rid of MONO_ARCH_HAS_XP_LOCAL_REGALLOC.
13413
13414         * aot-compiler.c (compile_method): Fix a typo in a comment.
13415
13416         * aot-runtime.c (decode_cached_class_info): Skip generic types.
13417
13418         * aot-compiler.c: Add minimal support for AOTing generic code by skipping 
13419         everything generic.
13420
13421         * mini.c (mono_method_to_ir): Disable AOT when calling helper_compile_generic_method.
13422
13423 2007-05-09  Zoltan Varga  <vargaz@gmail.com>
13424
13425         * mini.h (MonoCompile): Add 'args' field.
13426
13427         * mini.c (mono_compile_create_vars): Store variables representing the arguments
13428         into cfg->args.
13429
13430         * mini-<ARCH>.c: Use cfg->args for accessing the method arguments.
13431
13432 2007-05-08  Zoltan Varga  <vargaz@gmail.com>
13433
13434         * mini.c (mono_compile_get_interface_var): Remove this unused function.
13435
13436         * mini-ops.h inssel.brg mini-<ARCH>.c: Add a new opcode for ckfinite as well.
13437
13438         * mini-ops.h: Introduce new opcodes used in the IR instead of the original CEE_
13439         opcodes for some opcodes.
13440
13441         * mini.h *.brg *.c: Use the new opcodes.
13442
13443 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
13444
13445         * mini.h: Bumped aot revision.
13446
13447         * inssel.brg: modified code generation of type checks for interfaces
13448         to use the new "MonoClass.interface_bitmap" instead of the old
13449         "MonoClass.interface_offsets".
13450
13451 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
13452
13453         * cpu-amd64.md (jmp): Increase the maximum size of the jmp opcode to 128.
13454
13455 2007-04-29  Zoltan Varga  <vargaz@gmail.com>
13456
13457         * abcremoval.c (summarize_integer_value): Handle OP_LCONV_TO_I4 to fix abcrem on
13458         64 bit platforms.
13459
13460 2007-04-27  Neale Ferguson <neale@sinenomine.net>
13461
13462         * mini-s390x.c: Fix MONO_TYPE_VALUETYPE processing.
13463
13464 2007-04-27  Wade Berrier  <wberrier@novell.com>
13465
13466         * mini-s390x.c: Remove redeclaration of CompRelation and CompType (defined in 
13467         mini.h) to fix build.
13468
13469 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
13470
13471         * mini-amd64.c (peephole_pass_1): Fix and reenable this pass.
13472         
13473         * mini-amd64.c (mono_arch_local_regalloc): Disable the new peephole_pass_1 as it
13474         causes the corlib unit tests to fail.
13475
13476 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
13477
13478         * mini-codegen.c (mono_opcode_to_type): Fix a bug in the previous patch.
13479
13480         * mini-amd64.c (peephole_pass_1): New pass to perform before local regalloc.
13481
13482         * mini-codegen.c (mono_opcode_to_cond): New helper function to convert conditional 
13483         opcodes to the comparison relations.
13484
13485         * mini-codegen.c (mono_opcode_to_type): New helper function to convert conditional 
13486         opcodes to their types.
13487         
13488         * mini-ia64.c mini-amd64.c: Use mono_opcode_to_cond and mono_opcode_to_type.
13489
13490         * mini-amd64.c (get_call_info): Allocate the result from the cfg mempool and cache 
13491         it in cfg->arch.cinfo.
13492
13493         * local-propagation.c (mono_local_cprop_bb): Fix a warning.
13494
13495         * mini.h mini.c branch-opts.c: Change bbhash to be an array and store it in 
13496         cfg->cil_offset_to_bb.
13497
13498 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
13499
13500         * liveness.c (optimize_initlocals): New mini-pass to optimize away dead assignments
13501         created becase of initlocals.
13502
13503 2007-04-23  Zoltan Varga  <vargaz@gmail.com>
13504
13505         * mini-alpha.c cpu-alpha.md: More alpha port work from 
13506         Sergey Tikhonov <tsv@solvo.ru>.
13507
13508 2007-04-21  Andreas Faerber  <andreas.faerber@web.de>
13509
13510         * Makefile.am (BUILT_SOURCES): Fix for automake 1.6.x. Fixes #81417.
13511
13512 2007-04-19  Zoltan Varga  <vargaz@gmail.com>
13513
13514         * cpu-s390.md (break): Correct the length of break instruction.
13515
13516 Thu Apr 19 16:28:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
13517
13518         * mini.c: fix a couple of soft-float issues and comments.
13519
13520 2007-04-15  Miguel de Icaza  <miguel@novell.com>
13521
13522         * trace.c (is_filenamechar): - is also a filename char.
13523
13524 2007-04-15  Neale Ferguson <neale@sinenomine.net>
13525
13526         * mini-s390.c: Correct checking for enum type in return value processing.
13527
13528 2007-04-14  Raja R Harinath  <rharinath@novell.com>
13529
13530         * Makefile.am (BUILT_SOURCES): Add 'version.h'.
13531         (version.h): Makefile is in the build directory.
13532
13533 2007-04-06  Andreas Faerber  <andreas.faerber@web.de>
13534
13535         * mini-amd64.h: fix for assertion failure on Solaris/amd64
13536
13537 2007-04-11  Martin Baulig  <martin@ximian.com>
13538
13539         * mini.c (can_access_member): Fix handling of generic classes;
13540         fixes #81259.
13541
13542 2007-04-10  Zoltan Varga  <vargaz@gmail.com>
13543
13544         * aot-runtime.c (mono_aot_plt_resolve): Fix disabling of AOT. Fixes #81316.
13545
13546 2007-04-05  Zoltan Varga  <vargaz@gmail.com>
13547
13548         * aot-runtime.c: Fix disabling of AOT. Fixes #81316.
13549
13550 Fri Mar 23 20:25:31 CET 2007 Paolo Molaro <lupus@ximian.com>
13551
13552         * mini-codegen.c: make sure the right spill amount is
13553         used for fp or integer registers (fixes the float_sub_spill() on ppc).
13554
13555 Fri Mar 23 19:43:35 CET 2007 Paolo Molaro <lupus@ximian.com>
13556
13557         * mini-ppc.c: fixes for the fp_branch_nan test.
13558
13559 2007-03-23  Zoltan Varga  <vargaz@gmail.com>
13560
13561         * basic.cs: Comment out new test which still fails on ia64.
13562
13563 Fri Mar 23 15:54:23 CET 2007 Paolo Molaro <lupus@ximian.com>
13564
13565         * mini.c: immediate shifted or fix (mono_metadata_user_string assert).
13566
13567 Fri Mar 23 12:53:28 CET 2007 Paolo Molaro <lupus@ximian.com>
13568
13569         * mini-ppc.c, mini-ppc.h: struct passing ABI fix (bug #77968).
13570
13571 2007-03-22  Zoltan Varga  <vargaz@gmail.com>
13572
13573         * cfold.c (FOLD_BINOP): Cast the result to gint32 to prevent overflow problems
13574         on 64 bit machines. Fixes part of #80738.
13575
13576         * basic.cs: Add regression test.
13577
13578 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
13579
13580         * inssel.brg basic.cs: Revert previous change to fix build.
13581
13582         * inssel.brg (SWITCH): Clean out the upper word of the switch value on 64 bit
13583         platforms.
13584         
13585         * inssel.brg (SWITCH): Use an integer comparison. Fixes #80738.
13586
13587         * basic.cs: Add new regression test.
13588
13589 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
13590
13591         * mini-ia64.c (mono_arch_emit_prolog): Fix an assert when a function has too
13592         many arguments.
13593
13594 2007-03-16  Neale Ferguson <neale@sinenomine.net>
13595
13596         * cpu-s390x.md: Correct length of break instruction.
13597
13598 2007-03-16  Neale Ferguson <neale@sinenomine.net>
13599
13600         * mini-s390x.c, cpu-s390x.md: Fix #80507 for s390x.
13601         * mini-s390.c, cpu-s390.md: Fix #80507 for s390.
13602
13603 2007-03-15  Jonathan Chambers  <joncham@gmail.com>
13604
13605         * *.c: Begin WIN64 port.
13606         * mini.c:  Use correct register in profiler.
13607         * mini-amd64.c: No inline assembly on Win64.
13608         * mini-amd64.h: Implement MONO_INIT_CONTEXT_FROM_FUNC for Win64.
13609         Only define MONO_ARCH_USE_SIGACTION on non-windows platforms.
13610         * exceptions-amd64.c: Only need gregs_from_ucontext if MONO_ARCH_USE_SIGACTION
13611         is defined. Implement mono_arch_sigctx_to_monoctx, mono_arch_monoctx_to_sigctx, and
13612         mono_arch_ip_from_context for Win64.
13613         
13614         Contributed under MIT/X11 license.
13615
13616 2007-03-15  Zoltan Varga  <vargaz@gmail.com>
13617
13618         * exceptions-amd64.c (seh_handler): Ditto.
13619
13620         * exceptions-x86.c (seh_handler): Fix a memory leak.
13621
13622 Thu Mar 15 13:47:59 CET 2007 Paolo Molaro <lupus@ximian.com>
13623
13624         * mini-arm.c, mini-mips.c, mini-ppc.c, mini-s390.c,
13625         mini-s390x.c: fixed peephole optimizations to deal
13626         correctly with 1 and 2 byte reload avoidance.
13627
13628 Thu Mar 15 10:17:54 CET 2007 Paolo Molaro <lupus@ximian.com>
13629
13630         * cpu-s390.md, cpu-s390x.md: update localloc length.
13631
13632 Wed Mar 14 21:00:19 CET 2007 Paolo Molaro <lupus@ximian.com>
13633
13634         * cpu-g4.md: added missing descriptions.
13635
13636 2007-03-14  Miguel de Icaza  <miguel@novell.com>
13637
13638         *  Makefile.am: Add support so the tail tests are not executed on
13639         PowerPC as that is a known limitation of the PowerPC port.
13640
13641 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
13642
13643         * runmdesc.bat:  Move to msvc directory.
13644         
13645 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
13646
13647         * runmdesc.bat:  Run executable that was produced by the current
13648         target and sent via an argument.
13649         
13650 2007-03-11  Zoltan Varga  <vargaz@gmail.com>
13651
13652         * mini.c (mono_method_to_ir): Fix box+brtrue optimization. Fixes
13653         #81102.
13654
13655         * generics.2.cs: Add regression test.
13656
13657 2007-03-09  Wade berrier  <wberrier@novell.com>
13658
13659         * mini-ppc.h: Undo typo of MONO_CONTEXT_SET_SP (ppc doesn't define this symbol)
13660
13661 2007-03-09  Zoltan Varga  <vargaz@gmail.com>
13662
13663         * aot-runtime.c (load_aot_module): Load all dependent assemblies eagerly since all
13664         AOT code depends on this.
13665
13666 Thu Mar 8 19:36:13 CET 2007 Paolo Molaro <lupus@ximian.com>
13667
13668         * mini.c: more precise tracking of types in the eval stack
13669         (part of fix for bug #81044).
13670
13671 2007-03-07  Zoltan Varga  <vargaz@gmail.com>
13672
13673         * aot-runtime.c (mono_aot_get_class_from_name): Add a cache.
13674
13675         * aot-compiler.c (encode_patch): Remove an obsolete comment.
13676
13677 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
13678
13679         * mini-exceptions.c (mono_handle_native_sigsegv): Fix a warning.
13680
13681         * mini.c (mono_method_to_ir): Add a workaround for bug #80733.
13682
13683 2007-02-22  Zoltan Varga  <vargaz@gmail.com>
13684
13685         * mini.c (type_from_op): Convert CEE_CONV_U to OP_LCONV_TO_U when the argument is
13686         a pointer on 64 bit systems. Fixes #80190.
13687
13688         * iltests.il: Add new regression test.
13689
13690 Tue Feb 20 11:33:28 CET 2007 Paolo Molaro <lupus@ximian.com>
13691
13692         * mini.c: inline a constant for Environment.IsRunningOnWindows.
13693
13694 2007-02-19  Geoff Norton  <gnorton@customerdna.com>
13695
13696         * trace.c: Remove an erroneous alignemnt check when tracing.
13697           Fixes --trace on OSX86.
13698
13699 Wed Feb 14 19:45:56 CET 2007 Paolo Molaro <lupus@ximian.com>
13700
13701         * mini-$(arch).h: initialize SP in context for all the archs.
13702
13703 2007-02-14  Sebastien Pouliot  <sebastien@ximian.com>
13704
13705         * mini-x86.h: Initialize SP in MONO_INIT_CONTEXT_FROM_FUNC. Fix CAS
13706         regressions in the thread tests.
13707
13708 2007-02-14  Zoltan Varga  <vargaz@gmail.com>
13709
13710         * *-alpha.*: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>:
13711         - fixed implementation of LOCALLOC opcode
13712         - implemented non-un compare for floats
13713         - code cleanup
13714         - implementation of FDIV and CKFINITE opcodes
13715         - fixes for latest mono updates
13716         - additional arch opcodes
13717
13718 Mon Feb 12 11:54:16 CET 2007 Paolo Molaro <lupus@ximian.com>
13719
13720         * Makefile.am: simplify and merge rules for cross-compilation.
13721
13722 2007-02-07  Massimiliano Mantione  <massi@ximian.com>
13723
13724         * local-propagation.c: Actually *apply* the fix for bug 80591...
13725
13726 Tue Feb 6 19:03:19 CET 2007 Paolo Molaro <lupus@ximian.com>
13727
13728         * mini-exceptions.c: backuot part of the last change
13729         (fixes cas tests on amd64 related to GetExecutingAssembly ()).
13730
13731 2007-02-06  Massimiliano Mantione  <massi@ximian.com>
13732         * inssel.brg: Fix bug 59286.
13733
13734
13735 Tue Feb 6 12:23:50 CET 2007 Paolo Molaro <lupus@ximian.com>
13736
13737         * mini-exceptions.c: patch from Zoltan to correctly check for
13738         stack boundaries (using the stack register, not the frame register),
13739         fixes bugs #80724, #79717.
13740
13741 2007-02-03  Zoltan Varga  <vargaz@gmail.com>
13742
13743         * mini-ia64.c inssel-sparc.brg mini-sparc.c cpu-sparc.md: Get rid of OP_SETREG/
13744         OP_SETREGIMM, use OP_MOVE/OP_ICONST instead.
13745
13746         * mini-amd64.c (mono_arch_output_basic_block): Fix ATOMIC_EXCHANGE in the
13747         presence of frame pointer elimination.
13748
13749 2007-02-01  Geoff Norton  <gnorton@customerdna.com>
13750         
13751         * mini-x86.h: NetBSD UCONTEX_REG defines.
13752
13753 2007-02-01  Zoltan Varga  <vargaz@gmail.com>
13754
13755         * inssel-amd64.brg: Fix amd64 build.
13756
13757 Thu Feb 1 14:02:09 CET 2007 Paolo Molaro <lupus@ximian.com>
13758
13759         * mini.h: remove extern to workaround what looks likes gcc bug 26905
13760         on amd64.
13761
13762 2007-01-31  Zoltan Varga  <vargaz@gmail.com>
13763
13764         * mini-codegen.c (mono_is_regsize_var): New helper function usable by the back
13765         ends.
13766
13767         * mini-<ARCH>.c: Use mono_is_regsize_var ().
13768
13769 2007-01-30 Mark Mason <mason@broadcom.com>
13770
13771            * exceptions-mips.c: Lots of exception handling fixes, LMFs now work, some cleanups.
13772            * mini-mips.h: Add LMF magic numbers, and fix context set/get macros.
13773            * mini-mips.c: Cleanups, LMF handling now works, optimize store of zero, implement localloc
13774            beginning support for CEE_JMP [not quite working yet]
13775            * tramp-mips.c: LMF handling now works
13776         
13777 2007-01-30  Zoltan Varga  <vargaz@gmail.com>
13778
13779         * mini-amd64.c (peephole_pass): Optimize code common in initlocals blocks.
13780
13781         * mini.h (NULLIFY_INS): New macro.
13782
13783 Tue Jan 30 16:33:33 CET 2007 Paolo Molaro <lupus@ximian.com>
13784
13785         * mini.c: statistical profiler fix for windows, patch
13786         from Tor Lillqvist (tml@novell.com).
13787
13788 2007-01-30  Massimiliano Mantione  <massi@ximian.com>
13789         * local-propagation.c: Fix bug 80591.
13790
13791 Mon Jan 29 12:14:34 CET 2007 Paolo Molaro <lupus@ximian.com>
13792
13793         * Makefile.am: put back the --export-dynamic option as with
13794         the previous gmodule flags (thanks to Robert Jordan).
13795
13796 2007-01-28  Zoltan Varga  <vargaz@gmail.com>
13797
13798         * mini-sparc.c (peephole_pass): Fix #80622 for sparc as well.
13799
13800         mini.h *.c: Allocate fp vregs from the same pool as the int vregs. Use this to
13801         simplify and speed up the local register allocator. Also rename some fields
13802         like iassign->vassign.
13803         
13804         * regalloc.c: Remove some functions which are no longer used since their
13805         inlined version is in mini-codegen.c.
13806         
13807         * mini-codegen.c: Rename mono_regstate2_ functions to mono_regstate_.
13808
13809         * basic.cs objects.cs iltests.il: Merge tests from the linear IL branch.
13810
13811 2007-01-27  Zoltan Varga  <vargaz@gmail.com>
13812
13813         * mini-amd64.c (peephole_pass): Remove optimizations which omit a 
13814         narrowing. Fixes #80622.
13815
13816         * iltests.il: Add new regresssion test. 
13817
13818 Fri Jan 26 18:31:45 CET 2007 Paolo Molaro <lupus@ximian.com>
13819
13820         * mini.h, mini-trampolines.c, aliasing.c, mini-codegen.c,
13821         debug-debugger.c, debug-debugger.h: warning fixes.
13822         * driver.c: updated copyright year and made it fit in one line.
13823
13824 Fri Jan 26 12:48:39 CET 2007 Paolo Molaro <lupus@ximian.com>
13825
13826         * aot-runtime.c: updated to use mono-dl instead of gmodule.
13827
13828 2007-01-25  Zoltan Varga  <vargaz@gmail.com>
13829
13830         * mini-x86.c (mono_arch_output_basic_block): Fix #80507 for x86.
13831
13832         * mini-amd64.c (mono_arch_output_basic_block): Fix #80507 for amd64.
13833
13834         * iltests.il: Add new test for bug #80507.
13835
13836 Wed Jan 24 19:10:28 CET 2007 Paolo Molaro <lupus@ximian.com>
13837
13838         * mini-arm.h: use soft-float also on vfp for now.
13839
13840 Wed Jan 24 14:54:40 CET 2007 Paolo Molaro <lupus@ximian.com>
13841
13842         * mini.c: fix some more soft-float issues.
13843
13844 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
13845
13846         * mini-sparc.h (MONO_ARCH_FRAME_ALIGNMENT): Fix sparc build.
13847
13848 2007-01-24  Massimiliano Mantione  <massi@ximian.com>
13849         * mini-arch.h, , inssel-amd64.brg, mini-x86.c, inssel-x86.brg,
13850         mini-ia64.c, mini-sparc.c, mini-alpha.c: Introduced
13851         MONO_ARCH_LOCALLOC_ALIGNMEENT to fix bug 80498.
13852
13853 Wed Jan 24 12:04:39 GMT 2007 Paolo Molaro <lupus@ximian.com>
13854
13855         * mini-arm.c: typo fix.
13856
13857 2007-01-23  Neale Ferguson <neale@sinenomine.net>
13858
13859         * mini-s390x.c: Use lgb instructions for I1 type variables instead of lb.
13860
13861 2007-01-21  Zoltan Varga  <vargaz@gmail.com>
13862
13863         * mini.c (mono_allocate_stack_slots_full): Allocate memory from the cfg mempool.
13864         Share stack slots for scalar types. Avoid expensive g_list_free () calls.
13865
13866         * mini-x86.c (mono_arch_allocate_vars): Don't free the result of allocate_stack_slots_full.
13867
13868         * mini-amd64.c mini-ia64.c mini-alpha.c: Ditto. 
13869
13870         * mini.h (MonoJitStats): Add a new JIT statistics: locals_stack_size.
13871         
13872         * inssel.brg: Fix a warning.
13873
13874         * mini.h (MonoBasicBlock): Make bb->dominated a GSList.
13875
13876         * abcremoval.c ssa.c ssapre.c: Update after this change.
13877         
13878         * dominators.c (compute_dominators): Allocate bb->dominated from the cfg mempool.
13879
13880         * dominators.c (df_set): Use mono_bitset_union_fast.    
13881
13882 Sat Jan 20 16:59:01 CET 2007 Paolo Molaro <lupus@ximian.com>
13883
13884         * mini.h, genmdesc.c, genmdesc.pl, mini-${arch}.c, cprop.c,
13885         mini-codegen.c: reduce relocations and memory usage for the cpu
13886         description.
13887
13888 2007-01-20  Zoltan Varga  <vargaz@gmail.com>
13889
13890         * mini-codegen.c (mono_regstate2_alloc_int): Optimize this using bsfq on amd64.
13891
13892         * genmdesc.c genmdesc.pl mini.h: Remove some unused fields from the mdesc tables
13893         to reduce their size.
13894
13895 2007-01-19 Mark Mason <mason@broadcom.com>
13896
13897         * exceptions-mips.c: fix mono_arch_ip_from_context(), increase exception debug support.
13898         * mini-mips.c: more configuration macros, support long conditional branches, additional
13899         asserts, fix epilog instrumentation.
13900         * mini-mips.h: use standard stack walk
13901         * cpu-mips.md: increase size of div, rem and conditional branches
13902         
13903 Fri Jan 19 17:23:32 CET 2007 Paolo Molaro <lupus@ximian.com>
13904
13905         * mini.h, mini-codegen.c, mini-$(arch).h: claenup references
13906         to cpu spec data.
13907
13908 2007-01-19  Zoltan Varga  <vargaz@gmail.com>
13909
13910         * aot-compiler.c (encode_klass_info): Allow classes of the form <Type>[][].
13911         (compile_method): Ditto.
13912
13913         * aot-runtime.c (decode_klass_info): Ditto.
13914
13915         * mini.c (mono_method_to_ir): Call mono_get_got_var () in a place where it is
13916         needed by the code generated by inssel.brg. Also fix a warning.
13917
13918 Thu Jan 18 17:55:22 CET 2007 Paolo Molaro <lupus@ximian.com>
13919
13920         * mini.c: deal with enums that become genericinsts by
13921         being nested in a generic class (bug #79956).
13922
13923 Thu Jan 18 16:52:56 CET 2007 Paolo Molaro <lupus@ximian.com>
13924
13925         * mini.c: match the generic definition to check for
13926         private access with generic types (bug #78431).
13927
13928 Thu Jan 18 11:50:13 CET 2007 Paolo Molaro <lupus@ximian.com>
13929
13930         * genmdesc.pl, Makefile.am: perl implementation of genmdesc,
13931         to make life easier for people cross-compiling that insist on not
13932         using scratchbox.
13933
13934 2007-01-17 Mark Mason <mason@broadcom.com>
13935
13936         * inssel-long.brg: patch to deal with mips missing flags
13937         * inssel-long32-mips.brg: implement overflow checks
13938         * insset-mips.brg: implement overflow checks
13939         * mini-mips.h: implement conditional exception handling
13940         * mini-mips.c: add mips_emit_exc_by_name(), implement conditional exception handling.
13941           Remove unused code, minor cleanups.
13942         * exceptions-mips.c: minor cleanups
13943         * mini-ops.h: add mips conditional exception ops
13944         * cpu-mips.md: add mips conditional exception ops
13945
13946         
13947 Wed Jan 17 19:22:34 CET 2007 Paolo Molaro <lupus@ximian.com>
13948
13949         * inssel.brg: patch from Mark Mason <mason@broadcom.com>
13950         to deal with mips missing of flags.
13951
13952 Tue Jan 16 20:01:01 CET 2007 Paolo Molaro <lupus@ximian.com>
13953
13954         * exceptions-ppc.c: execute fault handlers.
13955
13956 Tue Jan 16 19:54:44 CET 2007 Paolo Molaro <lupus@ximian.com>
13957
13958         * mini-ppc.c: handle missing call locationss with FORCE_INDIR_CALL.
13959
13960 Tue Jan 16 13:14:31 CET 2007 Paolo Molaro <lupus@ximian.com>
13961
13962         * mini.c: handle also floating point values in initialize_array.
13963
13964 Tue Jan 16 12:42:40 CET 2007 Paolo Molaro <lupus@ximian.com>
13965
13966         * mini.c, aot-runtime.c, aot-compiler.c: enable aot compilation of
13967         array initialization and make it conditional on the intrins option.
13968
13969 Tue Jan 16 11:28:45 CET 2007 Paolo Molaro <lupus@ximian.com>
13970
13971         * mini.h, patch-info.h, Makefile.am, aot-compiler.c: reduce
13972         relocations and put the patch info names close to the enum definition.
13973
13974 2007-01-15 Mark Mason <mason@broadcom.com>
13975
13976         * basic.cs, exceptions.cs: break up large tests to increase debugability.
13977
13978 Mon Jan 15 18:57:14 CET 2007 Paolo Molaro <lupus@ximian.com>
13979
13980         * mini.c: optimized RuntimeHelpers::InitializeArray () calls.
13981
13982 2007-01-12  Raja R Harinath  <rharinath@novell.com>
13983
13984         * mini.c (mono_method_to_ir): Use new MonoGenericContext accessor.
13985
13986 Thu Jan 11 11:16:42 CET 2007 Paolo Molaro <lupus@ximian.com>
13987
13988         * Makefile.am: distribute the mips sources.
13989
13990 Wed Jan 10 19:49:33 CET 2007 Paolo Molaro <lupus@ximian.com>
13991
13992         * mini-codegen.h: handle bug #80489 here, by excluding ecx
13993         directly.
13994
13995 Wed Jan 10 19:08:05 CET 2007 Paolo Molaro <lupus@ximian.com>
13996
13997         * cpu-x86.md: back out for now as this triggers other regressions.
13998
13999 Wed Jan 10 18:33:16 CET 2007 Paolo Molaro <lupus@ximian.com>
14000
14001         * cpu-x86.md: force src1 and dest regpair for long shift instructions
14002         to eax:edx, so ecx can't get allocated to them (bug #80489).
14003
14004 Tue Jan 9 12:36:11 CET 2007 Paolo Molaro <lupus@ximian.com>
14005
14006         * mini.c, mini-exceptions.c: enabled running fault handlers
14007         (bug #80469).
14008
14009 2007-01-03  Miguel de Icaza  <miguel@novell.com>
14010
14011         * driver.c: If nothing fail, do not use the string "failed",
14012         because it makes it very annoying to view test result logs on the
14013         web. 
14014
14015 2006-12-30  Miguel de Icaza  <miguel@novell.com>
14016
14017         * debug-debugger.c (mono_debugger_main): Rename "main" to
14018         "main_method" to prevent a warning.
14019
14020         Remove a warning for unused field.
14021
14022 2006-12-28  Martin Baulig  <martin@ximian.com>
14023
14024         * debug-debugger.c
14025         (MONO_DEBUGGER__debugger_info): Add `get_lmf_addr'.
14026
14027 2006-12-22  Martin Baulig  <martin@ximian.com>
14028
14029         * mdb-debug-info32.s, mdb-debug-info64.s: New files.
14030         Put a pointer to the `MONO_DEBUGGER__debugger_info' into a
14031         seperate `.mdb_debug_info' section, so we can access it from the
14032         debugger even if the binary is stripped.
14033
14034         * debug-debug.c: Reference the `MONO_DEBUGGER__debugger_info_ptr'
14035         from the `.mdb_debug_info' here to prevent the linker from
14036         removing that section.
14037
14038         * Makefile.am (mono_debugger_sources): Add mdb-debug-info32.s /
14039         mdb-debug-info64.s.
14040
14041 2006-12-19  Robert Jordan  <robertj@gmx.net>
14042
14043         * mini-x86: enable the code to return small structures in
14044         registers for FreeBSD as well. Fixes bug #80278.
14045         * aot-runtime.c: Include sys/wait.h for WEXITSTATUS/WIFEXITED.
14046
14047 Mon Dec 18 19:47:17 CET 2006 Paolo Molaro <lupus@ximian.com>
14048
14049         * mini-x86.c: align the stack when calling the profiler
14050         function instrumenting the prolog (on OSX).
14051
14052 Thu Dec 14 15:22:43 CET 2006 Paolo Molaro <lupus@ximian.com>
14053
14054         * mini.c: emit a break opcode where Debugger.Break () is called.
14055
14056 2006-12-13  Miguel de Icaza  <miguel@novell.com>
14057
14058         * mini.c (mono_method_to_ir): Provide useful information on this
14059         assert, to prevent others from debugging like I did.
14060
14061 Tue Dec 12 17:01:38 CET 2006 Paolo Molaro <lupus@ximian.com>
14062
14063         * mini.c: enable code which was incorrectly commented
14064         (bug #80235).
14065
14066 Tue Dec 12 16:28:15 CET 2006 Paolo Molaro <lupus@ximian.com>
14067
14068         * mini-x86.c: enable on OSX, too, the code to return small
14069         structures in registers.
14070
14071 Mon Dec 11 19:22:35 CET 2006 Paolo Molaro <lupus@ximian.com>
14072
14073         * mini-x86.c: remove the use of the dynamic code manager here, too.
14074
14075 Mon Dec 11 19:08:33 CET 2006 Paolo Molaro <lupus@ximian.com>
14076
14077         * mini.h, debug-debugger.c, tramp-*.c: fixed 
14078         mono_debugger_create_notification_function() to use
14079         mono_global_codeman_reserve () instead of a dynamic code manager.
14080
14081 Tue Dec 5 17:54:50 CET 2006 Paolo Molaro <lupus@ximian.com>
14082
14083         * mini.c, jit-icalls.h, jit-icalls.c: remove the 
14084         ves_array_element_address() jit icall and use a generated
14085         managed method instead (which is about 4 times faster for a rank 3
14086         array access).
14087
14088 2006-11-29  Mark Mason  <mason@broadcom.com>
14089
14090         * basic-calls.cs: additional tests for passing
14091         structures as function arguments.
14092
14093 2006-11-29  Mark Mason  <mason@broadcom.com>
14094
14095         * mini-mips.h: disable custom exception handling
14096         * mini-mips.c: throw/rethrow should use jalr to call
14097         exception stubs.  Fixed bug with passing structures
14098         by value. More support for tracing floating point
14099         functions.
14100
14101 Wed Nov 29 20:28:17 CET 2006 Paolo Molaro <lupus@ximian.com>
14102
14103         * mini.c: fixed typo in the soft-float ldind.r4 handling
14104         (bug #80086).
14105
14106 Wed Nov 29 11:33:03 CET 2006 Paolo Molaro <lupus@ximian.com>
14107
14108         * mini.c, mini.h, driver.c: added --runtime command line
14109         option to select a different runtime than the autodetected one.
14110         * jit.h: added API for embedders to initialize with a specific
14111         runtime version.
14112
14113 Tue Nov 28 21:24:55 CET 2006 Paolo Molaro <lupus@ximian.com>
14114
14115         * mini.c: handle also boxing of r4 values (bug #80024).
14116
14117 Tue Nov 28 19:45:44 CET 2006 Paolo Molaro <lupus@ximian.com>
14118
14119         * mini-ppc.c: force indirect calls until we reserve
14120         enough address space for all the generated code.
14121
14122 Tue Nov 28 20:04:34 GMT 2006 Paolo Molaro <lupus@ximian.com>
14123
14124         * exceptions-arm.c: workaround bugs in the libc definition
14125         of struct ucontext.
14126
14127 Mon Nov 27 15:13:41 CET 2006 Paolo Molaro <lupus@ximian.com>
14128
14129         * inssel.brg: fixes from me and Mark Mason.
14130
14131 2006-11-23  Dick Porter  <dick@ximian.com>
14132
14133         * wapihandles.c (mini_wapi_seminfo): No need to adjust the counter
14134         semaphore display now we've fixed the initial value
14135
14136 Wed Nov 22 11:04:37 CET 2006 Paolo Molaro <lupus@ximian.com>
14137
14138         * inssel.brg: partially revert the last change to fix the build.
14139
14140 2006-11-21  Mark Mason  <mason@broadcom.com>
14141
14142         * inssel.brg: Add and use compare-and-branch macros to support
14143         architectures that do not have condition code registers (ie. MIPS).
14144         * *-mips.{c,brg,md}: Fix copyright statements
14145
14146 2006-11-20  Mark Mason  <mason@broadcom.com>
14147
14148         * Makefile.am: remove mini-codegen.c from list of MIPS sources
14149         * mini.c: Allow GET_CONTEXT to be specified by the arch port
14150         * mini.h: Added declaration for mono_print_ins()
14151         * mini-codegen.c: added ins_spec initializer for MIPS
14152         * mini-codegen.c (mono_call_inst_add_outarg_reg): added asserts for
14153         vreg to be virtual and hreg to be non-virtual.
14154         * mini-codegen.c (mono_spillvar_offset): assert if MIPS - spilling
14155         is not yet working/implemented correctly.
14156         * mini-codegen.c (print_ins): rename to mono_print_ins(), make
14157         non-static, fixup calls to print_ins() from other parts in the file.
14158
14159 2006-11-20  Mark Mason  <mason@broadcom.com>
14160
14161         * basic-calls.cs: added tests for passing structures as arguments
14162         to calls.
14163
14164 Mon Nov 20 19:40:11 CET 2006 Paolo Molaro <lupus@ximian.com>
14165
14166         * inssel-long32.brg: optimize signed division by power of two.
14167
14168 Mon Nov 20 17:37:58 CET 2006 Paolo Molaro <lupus@ximian.com>
14169
14170         * mini-arm.c: added support for interworking with thumb code
14171         (mono must be still be built using the ARM instruction encoding).
14172
14173 2006-11-19  Miguel de Icaza  <miguel@novell.com>
14174
14175         * mini.c (type_from_op): Separate the conditions for OP_EQ as the
14176         verifier has different rules for it.   Fixes a few verifier issues
14177         in the test suite.
14178
14179         * mini-exceptions.c (mono_handle_native_sigsegv): Put the message
14180         at the end, so people know what happened.
14181
14182 Thu Nov 16 14:07:18 CET 2006 Paolo Molaro <lupus@ximian.com>
14183
14184         * brach-opts.c: in optimize_exception_target() make sure we
14185         are in a catch clause (fixes bug #79871).
14186
14187 Thu Nov 16 12:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
14188
14189         * jit-icalls.c, jit-icalls.h, mini-arm.c, mini.c:
14190         more soft-float support fixes.
14191
14192 Wed Nov 15 18:45:47 GMT 2006 Paolo Molaro <lupus@ximian.com>
14193
14194         * mini-arm.c, inssel-arm.brg: ABI fix for longs and doubles
14195         that are passed half on the stack and half in registers.
14196
14197 Wed Nov 15 17:00:27 CET 2006 Paolo Molaro <lupus@ximian.com>
14198
14199         * mini-ops.h, mini-arch.h, helpers.c, Makefile.am:
14200         more mips integration work from Mark E Mason 
14201         <mark.e.mason@broadcom.com>.
14202
14203 Wed Nov 15 16:34:03 CET 2006 Paolo Molaro <lupus@ximian.com>
14204
14205         * exceptions-mips.c, inssel-mips.brg, mini-mips.h,
14206         cpu-mips.md, inssel-long32-mips.brg, mini-mips.c,
14207         tramp-mips.c: added sources for the mips port, not
14208         integrated in the build yet. Contributed by
14209         Mark E Mason <mark.e.mason@broadcom.com>.
14210
14211 2006-11-14  Neale Ferguson <neale@sinenomine.net>
14212
14213         * mini-s390[x].c (is_regsize_var): Support PTR/FNPTR too.
14214
14215 Tue Nov 14 16:06:37 CET 2006 Paolo Molaro <lupus@ximian.com>
14216
14217         * Makefile.am, inssel-float.brg, inssel-softfloat.brg:
14218         put the soft-float rules in its own file since it seems to
14219         break s390 compilation.
14220
14221 Mon Nov 13 15:54:38 CET 2006 Paolo Molaro <lupus@ximian.com>
14222
14223         * mini-arm.c: fixed wrnings.
14224
14225 Fri Nov 10 19:18:32 CET 2006 Paolo Molaro <lupus@ximian.com>
14226
14227         * mini-arm.c, mini-arm.h, cpu-arm.md, inssel-float.brg,
14228         inssel-arm.brg: ARM support for soft-float.
14229
14230 Fri Nov 10 18:38:15 CET 2006 Paolo Molaro <lupus@ximian.com>
14231
14232         * mini.c, jit-icalls.c, jit-icalls.h: added first cut at handling
14233         loads and stores of 32 bit fp values.
14234
14235 2006-11-10  Zoltan Varga  <vargaz@gmail.com>
14236
14237         * mini-sparc.c (is_regsize_var): Support PTR/FNPTR too.
14238
14239         * tramp-sparc.c (mono_arch_patch_callsite): Fix this function so it actually
14240         works. Fixes #79852 and #79463.
14241
14242 Thu Nov 9 16:56:13 CET 2006 Paolo Molaro <lupus@ximian.com>
14243
14244         * mini.c, mini-codegen.c, jit-icalls.c, jit-icalls.h:
14245         more soft-float support WIP and fixes.
14246
14247 Wed Nov 8 16:40:02 CET 2006 Paolo Molaro <lupus@ximian.com>
14248
14249         * mini-arm.c: some VFP updates.
14250
14251 Tue Nov 7 19:45:51 CET 2006 Paolo Molaro <lupus@ximian.com>
14252
14253         * mini-exceptions.c: 0 is a valid local var offset in some
14254         architectures, don't assert (bug #78508).
14255
14256 Tue Nov 7 18:17:52 GMT 2006 Paolo Molaro <lupus@ximian.com>
14257
14258         * exceptions-arm.c: fixed off by one error in stack walk code.
14259
14260 Tue Nov 7 11:27:26 CET 2006 Paolo Molaro <lupus@ximian.com>
14261
14262         * mini.h, mini.c: more precise tracking of type load exceptions.
14263
14264 2006-11-03  Robert Jordan  <robertj@gmx.net>
14265
14266         * Makefile.am: [WIN32] Add monow.exe target.
14267         * driver.c: [WIN32] Don't detach the console when debugging.
14268         Fixes bug #79797.
14269         
14270 2006-10-30  Miguel de Icaza  <miguel@novell.com>
14271
14272         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Eliminate warning.
14273
14274 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
14275
14276         * aot-compiler.c (emit_method_info): Add a case missed earlier.
14277
14278         * driver.c (mini_regression): Fix --regression with AOT.
14279
14280         * aot-compiler.c (emit_method_info): Fix AOT on amd64.
14281
14282 2006-10-17  Zoltan Varga  <vargaz@gmail.com>
14283
14284         * mini.c (GET_CONTEXT): Correct the definition of this for sparc/linux.
14285
14286         * mini-sparc.h: Don't use sigaction on sparc/linux.
14287
14288         * exceptions-sparc.c: Call mono_arch_flush_icache () in a couple of places.
14289
14290         * mini-sparc.c (mono_sparc_flushw): Call mono_arch_flush_icache ().
14291
14292         * mini-exceptions.c: Add proper include files for getpid ().
14293
14294 2006-10-16  Zoltan Varga  <vargaz@gmail.com>
14295
14296         * aot-runtime.c (mono_aot_get_method): Change this to return the native code
14297         address instead of a MonoJitInfo* to avoid decoding the exception info for the
14298         method.
14299
14300         * aot-runtime.c aot-compiler.c: Use uint16 instead of uint32 entries in the
14301         name cache to reduce its size.
14302
14303         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
14304
14305 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
14306
14307         * mini-x86.c: Save/restore the current LMF structure more efficiently using
14308         the mono_lmf TLS variable.
14309
14310         * exceptions-x86.c (mono_arch_find_jit_info): Only access lmf->method in 
14311         trampoline lmf frames.  
14312
14313         * mini-sparc.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Define this on sparc as well.
14314
14315 2006-10-14  Zoltan Varga  <vargaz@gmail.com>
14316
14317         * mini-amd64.c: Save/restore the current LMF structure more efficiently using
14318         the mono_lmf TLS variable.
14319
14320         * mini-exceptions.c: Access the LMF structure through accessors.
14321
14322         * mini.c: Allow the backends the option for storing the lmf in a dedicated TLS 
14323         variable instead of in jit_tls->lmf.
14324
14325         * mini-x86.c mini-amd64.c: Update after lmf->lmf_addr name change.
14326         
14327         * exceptions-amd64.c (mono_arch_find_jit_info): Only access lmf->method in 
14328         trampoline lmf frames.
14329
14330         * mini-amd64.c (mono_arch_emit_prolog): Do not set lmf->method as it is not needed.
14331
14332 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
14333
14334        * mini.c trace.c mini-x86.c: Revert these too.
14335         
14336        * mini.c trace.c mini-x86.c: Remove warning workarounds after the mono_type_size ()
14337        signature change.
14338
14339 Tue Oct 10 11:35:20 CEST 2006 Paolo Molaro <lupus@ximian.com>
14340
14341         * genmdesc.c: removed now dead code.
14342
14343 2006-10-09  Robert Jordan <robertj@gmx.net>
14344
14345         * mini.c: Disable the CrashReporter on MacOS X; Fixes #74869
14346
14347 Mon Oct 9 17:06:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
14348
14349         * mini.h: do not leave gaps in the opcode values.
14350
14351 Mon Oct 9 16:08:51 CEST 2006 Paolo Molaro <lupus@ximian.com>
14352
14353         * jit-icalls.h: flag functions as internal here, too.
14354
14355 Mon Oct 9 15:58:18 CEST 2006 Paolo Molaro <lupus@ximian.com>
14356
14357         * mini.h, aliasing.h, declsec.h, regalloc.h, trace.h: mark internal
14358         functions with the internal attribute.
14359
14360 Mon Oct 9 15:52:45 CEST 2006 Paolo Molaro <lupus@ximian.com>
14361
14362         * aot-compiler.c: fclose the file descriptor in the profile read loop.
14363
14364 Fri Oct 6 16:01:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
14365
14366         * mini.c, jit-icalls.c, inssel-float.brg: beginnings of support
14367         for soft-float.
14368
14369 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
14370
14371         * mini-x86.c (emit_load_volatile_arguments): New function to handle arguments of
14372         tail calls as on other platforms.
14373
14374         * mini.c (mono_method_to_ir): Fix a few tailcall problems. Fixes #79557.
14375
14376         * iltests.il: Add a few tailcall tests.
14377
14378 Tue Oct 3 16:33:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
14379
14380         * driver.c: fix loop for old compilers (bug #79521).
14381
14382 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
14383
14384         * mini-exceptions.c (ves_icall_get_trace): Remove debug printf.
14385
14386         * aot-runtime.c (mono_aot_get_class_from_name): Avoid a memory allocation.
14387
14388         * aot-compiler.c: Add a new option 'metadata-only' to only emit the cached
14389         metadata without any code.
14390
14391         * mini-exceptions.c (mono_handle_native_sigsegv): Add some code to print out
14392         more precise debugging information using gdb.
14393
14394 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
14395
14396         * inssel-ia64.brg: Make the helper methods static.
14397
14398 Thu Sep 28 16:40:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
14399
14400         * inssel-x86.brg: make the helper methods static.
14401
14402 Thu Sep 28 16:31:32 CEST 2006 Paolo Molaro <lupus@ximian.com>
14403
14404         * inssel-amd64.brg, mini-amd64.c: small cleanup, use inst_call.
14405
14406 Thu Sep 28 15:36:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
14407
14408         * mini.c: updates for monoburg changes.
14409         * inssel.brg: make a few helper functions static as they should.
14410
14411 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
14412
14413         * Makefile.am: Move mini-codegen.c to common_sources.
14414
14415 Wed Sep 27 15:07:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
14416
14417         * mini.h: instroduce inst_call in MonoInst for use in OUTARG
14418         instructions.
14419         * Makefile.am, cpu-g4.md, inssel-ppc.brg, mini-codegen.c, mini-ppc.c,
14420         mini-ppc.h: port to use the common local register allocator.
14421
14422 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
14423
14424         * mini.h: Remove the comment too then.
14425
14426 Tue Sep 26 14:02:58 CEST 2006 Paolo Molaro <lupus@ximian.com>
14427
14428         * mini.h: put back backend.data which is to be used shortly and
14429         doesn't increase the size of MonoInst. If any 64 bit arch aligned
14430         pointers on 4 byte boundaries it'd have much bigger issues running
14431         and you can ifdef it out anyway.
14432
14433 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
14434
14435         * mini.h (MonoInst): Remove backend.data field since it is unused and increases
14436         MonoInst size by 4 bytes on 64 bit machines.
14437
14438 Tue Sep 26 11:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
14439
14440         * *.{c,h,brg}: long due removal of the unused field in MonoInst and
14441         replacement with more meaningful field names. Arch maintainers, please
14442         check the assigned names are good enough for your arch.
14443
14444 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
14445
14446         * cpu-ia64.md mini-ia64.c inssel-ia64.brg mini-ops.h: Get rid of the 
14447         OP_IA64_FETCHADD opcodes, use OP_ATOMIC_ADD_IMM_NEW opcodes instead.
14448
14449 Mon Sep 25 11:05:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
14450
14451         * mini.h, driver.c, optflags-def.h, Makefile.am: reduce runtime
14452         relocations and memory requirements, put the optimization flags
14453         definitions in their own file.
14454
14455 2006-09-24  Zoltan Varga  <vargaz@gmail.com>
14456
14457         * jit-icalls.c (mono_helper_stelem_ref): Remove this unused helper function.
14458
14459         * mini.c (mini_init): Remove reference to mono_helper_stelem_ref.
14460
14461 2006-09-22  Zoltan Varga  <vargaz@gmail.com>
14462
14463         * mini-amd64.c (add_valuetype): Fix an uninitialized memory issue.
14464
14465 Thu Sep 21 19:06:09 CEST 2006 Paolo Molaro <lupus@ximian.com>
14466
14467         * inssel.brg: use the correct function to get the size of an item
14468         in an array, given an element class.
14469         * aot-compiler.c: do not access class->class_size directly.
14470
14471 Thu Sep 21 12:10:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
14472
14473         * mini.h, debug-mini.c: added a debugging function to print
14474         info about local variables and arguments in a jitted method.
14475
14476 2006-09-20  Zoltan Varga  <vargaz@gmail.com>
14477
14478         * mini-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
14479
14480         * exceptions-ia64.c: Fix some problems reported by Bill Seurer <seurer@us.ibm.com>.
14481
14482 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
14483
14484         * mini-ia64.c (mono_arch_call_opcode): Avoid using the same loop index in the
14485         inner and outer loops when passing vtypes.
14486
14487 Tue Sep 19 17:53:40 CEST 2006 Paolo Molaro <lupus@ximian.com>
14488
14489         * mini-ppc.c: take into account the cpu errata for cache flushing
14490         which caused some random errors (bug #79381).
14491
14492 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
14493
14494         * mini-amd64.c (mono_arch_emit_exceptions): Emit the call to 
14495         mono_arch_throw_corlib_exception using emit_call () too. Fixes #79271.
14496
14497 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
14498
14499         * aot-runtime.c (load_aot_module): Return immeditely if the AOT module was already
14500         loaded.
14501
14502         * exceptions-amd64.c (gregs_from_ucontext): Apply another patch from the
14503         freebsd ports tree.
14504
14505         * mini-amd64.c (emit_call): Avoid near calls on freebsd.
14506         (mono_arch_patch_code): Remove the unused handling of MONO_PATCH_INFO_CLASS_INIT.
14507
14508         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix check for 32 bitness of
14509         displacement.
14510
14511 2006-09-13  Zoltan Varga  <vargaz@gmail.com>
14512
14513         * aot-runtime.c (load_aot_module_from_cache): Fix PPC build.
14514
14515 2006-09-12  Zoltan Varga  <vargaz@gmail.com>
14516
14517         * mini.c (UNVERIFIED): Add a 'break-on-unverified' MONO_DEBUG option so this 
14518         macro does not have to be changed during debugging.
14519
14520         * 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>.
14521
14522         * cpu-pentium.md: Rename this to cpu-x86.md for consistency with other platforms.
14523
14524         * Makefile.am mini-x86.c mini-codegen.c: Rename pentium_desc to x86_desc.
14525         
14526         * mini.c (mini_get_ldelema_ins): Allow ldelema2d optimization if 
14527         MONO_ARCH_NO_EMULATE_MUL is defined.
14528
14529         * mini-ia64.h (MONO_ARCH_CALLEE_FREGS): Reserve f33 for use by instructions.
14530
14531         * mini-ia64.h: Define MONO_ARCH_NO_EMULATE_MUL.
14532
14533         * mini-ia64.c: Implement CEE_MUL based on gcc emitted code.
14534
14535         * mini-ia64.c (mono_arch_lowering_pass): Optimize store_membase_imm with offset==0.
14536         
14537 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
14538
14539         * mini-x86.h mini-amd64.h mini-exceptions.c: Move the bsd specific MAP_ANON
14540         stuff to mini-exceptions.c where it is used.
14541
14542         * mini-sparc.c (mono_arch_setup_jit_tls_data): Remove the duplicate altstack
14543         setup code, the real one is in mini-exceptions.c.
14544
14545         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Move all dependencies on the
14546         layout of ucontext_t to helper functions in exceptions-amd64.c, as on x86. Add
14547         some changes from the freebsd ports tree.
14548
14549         * mini-amd64.h exceptions-amd64.c: Fix the amd64 build. Get rid of the SC_
14550         constants.
14551         
14552         * mini-amd64.h: Freebsd has MAP_ANON instead of MAP_ANONYMOUS.
14553
14554 Mon Sep 11 13:18:55 CEST 2006 Paolo Molaro <lupus@ximian.com>
14555
14556         * mini.c: on Linux, check for /proc to be mounted
14557         (bug# 79351, novell bug#201204).
14558
14559 Mon Sep 11 13:10:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
14560
14561         * mini.c: handle cases where pthread_attr_getstack() behaves
14562         incorrectly (bug #78096).
14563
14564 Mon Sep 11 11:31:10 BST 2006 Paolo Molaro <lupus@ximian.com>
14565
14566         * mini-arm.c: support larger stack frames (bug #79272).
14567
14568 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
14569
14570         * aot-runtime.c (mono_aot_get_class_from_name): Remove a debug printf.
14571
14572         * aot-compiler.c: Add a hash table to the AOT file mapping class names to typedef 
14573         tokens.
14574
14575         * aot-runtime.c (mono_aot_get_class_from_name): New function used by 
14576         mono_class_from_name () to find a class from its name.
14577
14578         * mini.c (mini_init): Register mono_aot_get_class_from_name () with the runtime.
14579
14580 2006-09-07  Zoltan Varga  <vargaz@gmail.com>
14581
14582         * mini-amd64.c (emit_call): Avoid strstr () call if possible.
14583
14584 2006-09-05  Kornel Pal  <kornelpal@gmail.com>
14585
14586         * Makefile.am: Renamed mono-1.dll to mono.dll. (-avoid-version)
14587
14588 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
14589
14590         * mini.c (mono_icall_get_wrapper): Fix a race condition on initializing
14591         callinfo->trampoline.
14592
14593         * mini-amd64.c (emit_call): Special case calls to the vararg array icalls. Hopefully
14594         fixes #79271.
14595         (mono_arch_patch_code): Add some debug code to help track down similar failures in the
14596         future.
14597
14598 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
14599
14600         * aot-runtime.c (mono_aot_plt_resolve): Add an assert.
14601
14602 2006-09-02  Zoltan Varga  <vargaz@gmail.com>
14603
14604         * tramp-x86.c (mono_arch_create_specific_trampoline): Don't increase
14605         stats.method_trampolines, it is already done by the generic trampoline code.
14606
14607         * tramp-amd64.c (mono_arch_create_specific_trampoline): Ditto.
14608         
14609 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
14610
14611         * mini.c: Remove some references to mono_compile_aot, and use cfg->compile_aot instead.
14612
14613         * aot-runtime.c: Add some tweaks to the MONO_AOT_CACHE functionality.
14614
14615         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix a FIXME.
14616
14617         * mini.c (print_jit_stats): Print mscorlib mempool size too.
14618         
14619         * mini.c (print_jit_stats): Print new stats.
14620
14621         * *-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
14622
14623 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
14624
14625         * mini.c (mini_get_ldelema_ins): Fix verifier error when calling
14626         Address on two dimensional arrays. Fixes #78729.
14627
14628         * mini.h (MonoCompile): Add a 'skip_visibility' field.
14629
14630         * mini.c (method_to_ir): Disable visibility checks if skip_visibility is set on
14631         a method.
14632
14633         * mini-amd64.c (mono_arch_emit_exceptions): Fix assertion introduced by the last change.
14634
14635         * mini.c (mono_runtime_cleanup_handlers): Clean up signal handlers on unix. Fixes
14636         #79130.
14637         
14638         * mini.c (handle_array_new): Applied patch from "briaeros007". Fix
14639         a race condition.
14640         (mini_get_ldelema_ins): Ditto.
14641
14642 2006-08-30  Zoltan Varga  <vargaz@gmail.com>
14643
14644         * mini-amd64.c (mono_arch_emit_exceptions): Align fp constants to 16 bytes.
14645         (mono_arch_output_basic_block): Avoid unaligned accesses in FNEG implementation. 
14646         Fixes #79213.
14647
14648 2006-08-29 Neale Ferguson <neale@sinenomine.net>
14649
14650         * mini-s390.c, mini-s390x.c: Fix VARARG case processing with 0 arguments. Add
14651         mono_arch_get_patch_offset as a dummy entry point to allow successful link. 
14652
14653         * exceptions-s390x.c: Cosmetic change.
14654
14655         * tramp-s390.c: Fix warning.
14656
14657         * cpu-s390.md: Correct length of mul_imm.
14658
14659 Wed Aug 23 19:24:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
14660
14661         * aot-compiler.c: added binary writer with ELF backend
14662         implementation (only on Linux/x86 for now).
14663
14664 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
14665
14666         * Makefile.am: Don't run net 2.0 AOT tests.
14667
14668         * aot-compiler.c (compile_method): Skip methods with tail calls as well.
14669         (mono_compile_assembly): Skip net 2.0 assemblies as well.
14670
14671         * aot-runtime.c (load_patch_info): Fix an uninitialized memory error.
14672
14673 Fri Aug 18 19:38:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
14674
14675         * aot-compiler.c: simplified and refactored the asm-writing code
14676         to allow different backends.
14677
14678 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
14679
14680         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
14681
14682         * aot-compiler.c aot-runtime.c: Reorg the GOT slot allocation code a 
14683         little. Share patches of type TYPE_FROM_HANDLE as well.
14684
14685         * mini.c (mono_patch_info_equal): New helper function.
14686         (mono_patch_info_hash): Ditto.
14687
14688         * aot-compiler.c (emit_method_code): Fix s390 build.
14689
14690         * mini.c (mono_allocate_stack_slots_full): Fix yet another place where byref
14691         is not handled because it is stored as a flag and not as a type ctor. Fixes
14692         #79016.
14693
14694 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
14695
14696         * aot-compiler.c: Fix computation of GOT slot statistics.
14697         
14698         * aot-compiler.c aot-runtime.c: Implement sharing of GOT slots for classes/fields.
14699         Also remove support for not PIC AOT.
14700
14701         * mini.h: Bump AOT file format version.
14702
14703         * objects.cs: Add a test for #78990.
14704
14705         * mini-x86.c (mono_arch_output_basic_block): Applied patch from Peter Dettman
14706         (peter.dettman@iinet.net.au). Fixes #79087.
14707
14708         * basic-long.cs: Add a test for the above.
14709
14710 2006-08-16  Zoltan Varga  <vargaz@gmail.com>
14711
14712         * aot-compiler.c (get_got_offset): Add a cache for GOT entries, not yet used.
14713         
14714         * aot-compiler.c (get_plt_index): Add a cache for wrappers too. Simplify the
14715         code somewhat.
14716
14717 2006-08-15  Zoltan Varga  <vargaz@gmail.com>
14718
14719         * mini.c (mini_init): Fix registration of idiv/imul opcodes which can throw
14720         exceptions.
14721
14722 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
14723
14724         * mini.c: Don't verify COM proxy invoke calls
14725         
14726
14727 2006-08-10  Dick Porter  <dick@ximian.com>
14728
14729         * wapihandles.c (mini_wapi_seminfo): More info, to help track down
14730         which process is holding semaphores locked.
14731
14732 2006-08-08  Zoltan Varga  <vargaz@gmail.com>
14733
14734         * mini-ia64.c mini-amd64.c: Fix #79027.
14735
14736         * mini-sparc.c (mono_arch_call_opcode): Fix the previous patch.
14737
14738         * mini-sparc.c (mono_arch_call_opcode): Fix #79027.
14739
14740         * mini-x86.c (mono_arch_call_opcode): Handle the case where there are no
14741         implicit arguments in a vararg call. Fixes #79027.
14742
14743 2006-08-07  Zoltan Varga  <vargaz@freemail.hu>
14744
14745         * mini.c (mono_get_element_address_signature): Use CDECL calling convention on windows. Fixes #78969.
14746         (mono_get_array_new_va_signature): Ditto.
14747
14748 2006-08-05  Zoltan Varga  <vargaz@gmail.com>
14749
14750         * aot-runtime.c: Call init_plt lazily.
14751
14752         * inssel-long.brg: Fix unsigned long->int conversion.
14753
14754         * aot-runtime.c (init_plt): Remove a redundant make_writable () call.
14755
14756         * aot-compiler.c aot-runtime.c: Reorganize the file structure in the amd64 case so
14757         that most data is now in the .rss/.data section.
14758
14759 2006-08-04  Zoltan Varga  <vargaz@gmail.com>
14760
14761         * aot-compiler.c: Correct the computation of the 'direct-calls' statistic.      
14762
14763         * aot-compiler.c: Print the number of methods without GOT slots as a statistics.
14764
14765         * aot-compiler.c aot-runtime.c tramp-amd64.c: Resurrect amd64 AOT support.
14766
14767         * tramp-amd64.c (mono_arch_patch_callsite): Fix a warning.
14768
14769         * jit-icalls.c (mono_helper_compile_generic_method): Unbox vtypes since this is a
14770         virtual call. Fixes #79010.
14771
14772         * mini.c (mono_method_to_ir): Pass an additional out arg to compile_generic_method 
14773         and use the result as the this argument in the real call.
14774
14775         * generics.2.cs: Add a new test for #79010.
14776         
14777 2006-08-03  Zoltan Varga  <vargaz@gmail.com>
14778
14779         * mini-x86.c: Fix a warning.
14780
14781         * aot-compiler.c: Add a bunch of statistics.
14782
14783         * mini.c (inline_method): Disable inlining in out-of-line bblocks.
14784
14785 2006-08-02  Zoltan Varga  <vargaz@gmail.com>
14786
14787         * mini-arch.h Makefile.am mini-ops.h mini-codegen.c: More alpha updates.
14788
14789 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
14790
14791         * 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>.
14792
14793 2006-07-13  Miguel de Icaza  <miguel@novell.com>
14794
14795         * mini.c (mono_method_to_ir): Obtain the original method in the
14796         CIL stream and use this to perform validation.
14797
14798         Fixed: #78816
14799
14800 2006-07-19  Zoltan Varga  <vargaz@gmail.com>
14801
14802         * mini-x86.c (mono_arch_get_argument_info): Fix a warning.
14803         (mono_arch_call_opcode): Ditto.
14804
14805         * mini.c (mono_method_to_ir): Clear ins_flag at the end of CEE_CALL. Fixes
14806         #78826.
14807
14808         * mini.c (mono_patch_info_dup_mp): New helper function.
14809         
14810         * aot-compiler.c (compile_method): Fix some of the memory allocated during
14811         compilation. Fixes #78827.
14812
14813 2006-07-18  Kornel Pal  <kornelpal@gmail.com>
14814
14815         * declsec.c: Use original security informations for
14816           MONO_WRAPPER_MANAGED_TO_MANAGED.
14817
14818 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
14819
14820         * mini.c: Allow Com Interop methods/classes and
14821         don't verify COM wrapper calls
14822         
14823
14824 2006-07-13  Zoltan Varga  <vargaz@gmail.com>
14825
14826         * inssel-long32.brg: Fix long->i4 checked conversion.
14827
14828         * exceptions.cs: Add a test for the above.
14829
14830 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
14831
14832         * mini-exceptions.c (mono_setup_altstack): Fix a memory leak.
14833
14834         * mini.c: Applied patch from Joachim Ante (joe@otee.dk). Fix some shutdown 
14835         leaks.
14836
14837         * helpers.c (mono_disassemble_code): Avoid using fixed temporary files. Fixes
14838         #78775.
14839
14840 2006-07-03  Zoltan Varga  <vargaz@gmail.com>
14841
14842         * mini.c: Fix solaris/x86 exception handling.
14843
14844         * Makefile.am: Get rid of $(ICU_LIBS).
14845
14846 2006-07-02  Zoltan Varga  <vargaz@gmail.com>
14847
14848         * mini-exceptions.c: Fix handling of unhandled SIGSEGV exceptions on ia64.
14849         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Use MONO_INIT_CONTEXT_FROM_CURRENT.
14850         (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): Ditto.
14851
14852         * mini-ia64.h (MONO_CONTEXT_SET_FUNC): New macro.
14853
14854         * mini-exceptions.c (mono_handle_native_sigsegv): Prevent infinite loops if
14855         this function causes a SIGSEGV.
14856
14857 2006-06-22  Zoltan Varga  <vargaz@gmail.com>
14858
14859         * mini.c: Remove unused solaris/x86 includes.
14860
14861 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
14862
14863         * jit.h: Add G_BEGIN_DECLS/G_END_DECLS.
14864
14865 2006-06-20  Jb Evain  <jbevain@gmail.com>
14866
14867         * cpu-g4.md: fix max length of start_handler instruction.
14868
14869 2006-06-20  Massimiliano Mantione  <massi@ximian.com>
14870         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78656.
14871
14872 2006-06-16  Massimiliano Mantione  <massi@ximian.com>
14873         * ssa.c: Fixed bug 78653 for SSA based deadce.
14874         * mini.h: added MONO_INST_DEFINITION_HAS_SIDE_EFFECTS flag go
14875         MonoInst.flags, used in SSA based deadce.
14876         * aliasing.c: Fixed bug 78653 for "fastpath" deadce.
14877         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78653.
14878
14879 Thu Jun 15 16:52:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
14880
14881         * tramp-ppc.c: don't use malloc () for trampoline code, sometimes
14882         it can end up using non executable memory on ppc64 systems
14883         running ppc32 userspace (fix from Johannes Berg).
14884
14885 2006-06-14  Dick Porter  <dick@ximian.com>
14886
14887         * wapihandles.c: Fix a bunch of signed/unsigned warnings from gcc
14888         4.1.1
14889
14890 2006-06-13  Massimiliano Mantione  <massi@ximian.com>
14891         * mini.c: Made so that inline is locally disabled if it would
14892         trigger a .cctor, because too many apps depend on this behavior
14893         (which seems to be also the one of the MS CLR).
14894
14895 2006-06-13  Zoltan Varga  <vargaz@gmail.com>
14896
14897         * mini-amd64.c (mono_emit_stack_alloc): Fix initialization of localloc'ed memory.
14898         No idea why this worked before.
14899
14900         * branch-opts.c (mono_branch_optimize_exception_target): Avoid branches
14901         which branch to outer exception clauses since they could skip the
14902         inner finally clauses. Fixes #78633.
14903
14904         * exceptions.cs: Add a test for the above.
14905
14906         * mini.c (merge_basic_blocks): Nullify the branch at the end of the first bb.
14907         Fixes #78629.
14908
14909         * iltests.il: Add a test for the above.
14910
14911 2006-06-12  Zoltan Varga  <vargaz@gmail.com>
14912
14913         * mini.c (remove_block_if_useless): Do not remove the bblock immediately
14914         after the end of a try bblock, to prevent asserts in mini_method_compile ().
14915
14916         * iltests.il: Add a test for the above.
14917
14918 2006-06-10  Zoltan Varga  <vargaz@gmail.com>
14919
14920         * mini-ia64.c (mono_arch_lowering_pass): Remove some code duplication.
14921         
14922         * mini-ia64.c inssel-ia64.brg: Implement the new net 2.0 Interlocked.Add
14923         methods as instrinsics.
14924
14925 2006-06-09  Wade Berrier <wberrier@novell.com>
14926
14927         * Makefile.am: Fix sources list for svn rename so that make dist succeeds
14928         (simple-cee-ops.h ssapre-mini-ops.h)
14929
14930 2006-06-09  Neale Ferguson <neale@sinenomine.net>
14931
14932         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on s390/s390x.
14933         * mini-s390x.c, mini-s390.c: Correct ATOMIC operations (incorrect register for CS
14934         instruction).
14935         * mini-s390x.h, mini-s390.h: Simplify MCONTEXT_GET_BP.
14936         * cpu-s390x.md: Fix max. length values for a couple of instructions.
14937
14938 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
14939
14940         * mini-exceptions.c: Minor fix for building mono in Visual Studio.
14941
14942 2006-06-08  Massimiliano Mantione  <massi@ximian.com>
14943
14944         * ssapre-cee-ops.h: Renamed as "simple-cee-ops.h"
14945         * simple-cee-ops.h: Was "ssapre-cee-ops.h" (renamed).
14946         * ssapre-mini-ops.h: Renamed as "simple-mini-ops.h"
14947         * simple-mini-ops.h: Was "ssapre-mini-ops.h" (renamed).
14948         * local-propagation.c: In mono_cprop_invalidate_values use a whitelist
14949         of opcodes, so that bug 78549 should not happen again.
14950         * ssapre.c: Updated to use the renamed files.
14951
14952 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
14953
14954         * mini-amd64.c (mono_arch_output_basic_block): Fix a wrong reg-reg move 
14955         in OP_ATOMIC_EXCHANGE_I4.
14956
14957 2006-06-07  Wade Berrier <wberrier@novell.com>
14958
14959         * tramp-s390.c: Fix s390 build (add missing pointer declarations 
14960         in mono_debugger_create_notification_function)
14961
14962 2006-06-06  Zoltan Varga  <vargaz@gmail.com>
14963
14964         * mini.c (NEW_AOTCONST_TOKEN): Fix amd64 build.
14965         
14966         * mini.c (type_from_stack_type): Disable some changes which do not
14967         seem to work.
14968
14969         * driver.c: Reenable opts.
14970
14971         * mini.h (MonoStackSlot): New structure to keep track of the verification state
14972         of the evaluation stack.
14973         
14974         * mini.h (MonoBasicBlock): Add a 'stack_state' field to keep track of the
14975         evaluation stack trace at entry to the bblock.
14976
14977         * mini.c (merge_stacks): New function to perform verification of stack merges.
14978         Turned off by default.
14979
14980         * mini.c: Fill up ins->klass for instructions whose type is STACK_OBJ or
14981         STACK_MP.
14982         
14983 2006-06-06  Massimiliano Mantione  <massi@ximian.com>
14984
14985         * local-propagation.c: Fixed bug 78549.
14986
14987 2006-06-04  Zoltan Varga  <vargaz@gmail.com>
14988
14989         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on ia64.
14990
14991 2006-06-02  Miguel de Icaza  <miguel@novell.com>
14992
14993         * tramp-sparc.c, tramp-ppc.c, tramp-s390.c, tramp-s390x.c,
14994         tramp-arm.c, tramp-ia64.c
14995         (mono_debugger_create_notification_function): Update signature to
14996         new signature and use new protocol for creating the notification
14997         function.  
14998
14999         Should fix the build.
15000
15001 2006-06-02  Geoff Norton  <gnorton@customerdna.com>
15002
15003         * exceptions-ppc.c (mono_jit_walk_stack)
15004         (ves_icall_get_frame_info): Fix the build
15005
15006 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
15007
15008         * mini.c (mono_set_defaults): Fix the handling of -O=-all.
15009
15010 2006-05-31  Raja R Harinath  <rharinath@novell.com>
15011
15012         * il2tests.2.il: New file for generics CIL tests.  Add test for
15013         #78019.
15014         * Makefile.am: Update.
15015
15016         Fix #78019
15017         * mini.c (mono_method_to_ir): Don't apply box+brtrue optimization
15018         to nullable types.
15019
15020 2006-05-30  Massimiliano Mantione  <massi@ximian.com>
15021
15022         * aliasing.c: Fixed bug 78311.
15023
15024 2006-05-29  Martin Baulig  <martin@ximian.com>
15025
15026         * mini-exceptions.c (mono_find_jit_info): When computing the
15027         native offset, check whether we're actually inside the method's
15028         code; call mono_debug_print_stack_frame() to format the frame.
15029         (ves_icall_System_Exception_get_trace): Call
15030         mono_debug_print_stack_frame() to format the stack frame.
15031         (ves_icall_get_trace): Update to the new debugging API.
15032         (mono_jit_walk_stack_from_ctx): Likewise.
15033         (ves_icall_get_frame_info): Likewise.
15034
15035         * mini.c (get_method_from_ip): Use the new debugging API.
15036         (mono_print_method_from_ip): Likewise.
15037
15038         * exceptions-ppc.c
15039         (mono_jit_walk_stack): Use the new debugging API.
15040         (ves_icall_get_frame_info): Likewise.   
15041
15042 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
15043
15044         * mini-amd64.c (mono_arch_output_basic_block): Fix MONO_PROFILE_COVERAGE.
15045
15046 2006-05-25  Massimiliano Mantione  <massi@ximian.com>
15047
15048         * mini.c: Added "limitator" to inline for debugging.
15049
15050 2006-05-24  Martin Baulig  <martin@ximian.com>
15051
15052         * debug-debugger.c (mono_debugger_init): Create a private,
15053         malloc()-based code manager for the notification function and
15054         intentionally leak it on exit.  This fixes the crash-on-exit race
15055         condition.
15056
15057         * tramp-amd64.c
15058         (mono_debugger_create_notification_function): Added
15059         `MonoCodeManager *' argument.
15060
15061         * tramp-x86.c
15062         (mono_debugger_create_notification_function): Added
15063         `MonoCodeManager *' argument.
15064
15065 2006-05-23  Massimiliano Mantione  <massi@ximian.com>
15066
15067         * aliasing.c: Fixed 64 bit issue.
15068         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
15069         default since all known bugs are fixed (one more time!).
15070
15071 Tue May 23 13:47:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
15072
15073         * mini.c: write barrier support.
15074
15075 2006-05-23  Martin Baulig  <martin@ximian.com>
15076
15077         * debug-debugger.c: Revert Paolo's change.  Add comment and #error
15078         check at the top of the file.
15079
15080 Sun May 21 12:22:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
15081
15082         * debug-debugger.c: fix the build. Again. Hopefully Martin will stop
15083         reverting changes without reason and without changelog entries.
15084
15085 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
15086
15087         * mini-sparc.c (mono_arch_output_basic_block): Add support for large stack offets
15088         to a few opcodes. Fixes #78439.
15089
15090         * mini-sparc.c: Rename mono_sparch_break () to mono_arch_break () to improve
15091         consistency with other archs.
15092
15093         * mini-ia64.c (mono_arch_emit_prolog): Remove debug stuff left in by mistake.
15094
15095 Wed May 17 18:07:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
15096
15097         * debug-debugger.c: fix the build.
15098
15099 2006-05-17  Martin Baulig  <martin@ximian.com>
15100
15101         * debug-debugger.c
15102         (debugger_thread_vtable): Moved here from ../metadata/threads.c.
15103         (debugger_init_threads): Formerly known as mono_debugger_init_threads().
15104         (debugger_finalize_threads): Formaly known as mono_debugger_finalize_threads().
15105         (debugger_attach): Call GC_mono_debugger_add_all_threads().
15106
15107 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
15108
15109         * mini.c (mini_init): Call pthread_attr_destroy () to fix a small memory leak.
15110
15111 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
15112
15113         * mini-x86.c (mono_arch_instrument_epilog): Fix handling of 
15114         MONO_TYPE_GENERICINST.
15115         
15116         * mini-amd64.c (mono_arch_instrument_epilog): Fix handling of 
15117         MONO_TYPE_GENERICINST.
15118
15119 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
15120
15121         * mini-x86.c (mono_arch_get_vcall_slot_addr): Add a missing call sequence. Fixes
15122         #78325.
15123
15124 2006-05-08  Zoltan Varga  <vargaz@gmail.com>
15125
15126         * mini.c (mono_create_jump_trampoline): Allocate MonoJitInfo from the domain
15127         mempool.
15128         (mono_jit_free_method): Remove the method from jump_trampoline_hash as well.
15129
15130 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
15131
15132         * mini.c (mini_cleanup): Applied patch from Joachim Ante (joe@otee.dk). Call
15133         mono_trace_cleanup ().
15134
15135         * iltests.il: Fix problem with the newly added test.
15136
15137         * mini-codegen.c (mono_local_regalloc): When changing the dreg of an instruction
15138         due to register constraints, free up the previous hreg. Fixes #78314.
15139
15140         * iltests.il: Add new test for #78314.  
15141
15142         * mini-x86.c (mono_arch_get_inst_for_method): Use OP_ATOMIC_ADD_NEW_I4 for
15143         Interlocked.Add. Fixes #78312.
15144
15145         * mini-amd64.c (mono_arch_get_inst_for_method): Ditto.
15146         
15147 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
15148
15149         * inssel.brg (mini_emit_virtual_call): Fix a warning.
15150
15151 2006-05-05  Martin Baulig  <martin@ximian.com>
15152
15153         * debug-mini.c (mono_debug_open_block): New method.
15154
15155         * mini-amd64.c
15156         (mono_arch_output_basic_block): Call mono_debug_open_block() at
15157         the beginning of each basic block.
15158
15159         * mini-x86.c
15160         (mono_arch_output_basic_block): Call mono_debug_open_block() at
15161         the beginning of each basic block.
15162
15163 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
15164
15165         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
15166         default until I understand why they break the build on amd64.
15167
15168 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
15169
15170         * mini.c (mini_cleanup): Call mono_cleanup ().
15171
15172         * mini.c (UNVERIFIED): New macro to make it easier to track down verification
15173         errors.
15174
15175 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
15176
15177         * aliasing.c: Fixed shameful cut&paste error that caused JIT crashes.
15178         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
15179         default since all known bugs are fixed, and I cannot reproduce bug
15180         77944... I'm asking Matt Hargett to test again after this commit.
15181
15182 2006-04-28  Massimiliano Mantione  <massi@ximian.com>
15183
15184         * mini-codegen.c: Fixed typo that thrashed inline.
15185
15186 2006-04-28  Zoltan Varga  <vargaz@gmail.com>
15187
15188         * dominators.c (compute_dominators): Avoid using a worklist since
15189         it is not correct in some cases. Instead, iterate over all bblocks as
15190         in the original paper. Fixes --compile-all -O=all System.Xml.dll.
15191
15192 2006-04-28  Miguel de Icaza  <miguel@novell.com>
15193
15194         * mini.c (mono_jit_compile_method_inner): Use
15195         mono_prepare_exception_from_error that resets the value
15196         internally.
15197
15198 2006-04-27  Miguel de Icaza  <miguel@novell.com>
15199
15200         * mini.c: Move the mini_loader_error_to_exception to metadata. 
15201         
15202 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
15203
15204         * aliasing.c: Fixed bug 78210.
15205
15206 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
15207
15208         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
15209         default until all their problems (or the ones they trigger) are fixed.
15210
15211 2006-04-26  Zoltan Varga  <vargaz@gmail.com>
15212
15213         * aot-runtime.c (mono_aot_get_method_from_token_inner): Fix the previous patch.
15214         
15215         * aot-runtime.c (mono_aot_get_method_from_token_inner): Mark the method
15216         as loaded only after resolving patches since that could invoke the same method.
15217
15218         * aot-runtime.c (mono_aot_plt_resolve): Fix ppc etc. builds.
15219
15220         * aot-compiler.c: Refactor mono_aot_compile_aot () into a bunch of smaller
15221         functions.
15222
15223         * aot-runtime.c (init_plt): Use a normal trampoline to transfer code to the
15224         AOT loader.
15225
15226         * aot-compiler.c (emit_plt): Pass the plt offset in %eax instead of on the
15227         stack.
15228
15229         * mini-trampolines.c (mono_aot_plt_trampoline): New trampoline to handle calls
15230         made from AOT code through the PLT table.
15231
15232         * mini-x86.h mini-amd64.h: Define MONO_ARCH_AOT_PLT_OFFSET_REG to the register
15233         holding the plt offset when a call is made to the aot plt trampoline.
15234         
15235 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
15236
15237         * aot-runtime.c aot-compiler.c cpu-amd64.md mini-amd64.c: Update parts of the 
15238         amd64 AOT support.
15239
15240         * Makefile.am (common_sources): Fix build breakage.
15241
15242         * aot-runtime.c aot-compiler.c: Reorganize the AOT code yet again: Make all
15243         calls through a jump table similar to the ELF PLT table. Avoid indirect calls for
15244         intra-assembly calls if possible.
15245         
15246         * tramp-*.c: Add new functions for patching/nullifying PLT entries.
15247
15248         * mini-trampolines.c: Handle PLT entries.
15249
15250         * mini.c: Avoid creating a GOT var for calls.
15251
15252         * jit-icalls.c (helper_ldstr_mscorlib): New helper function for loading strings
15253         from mscorlib code.
15254
15255         * jit-icalls.c (helper_newobj_mscorlib): New helper function to create objects
15256         from mscorlib code.
15257
15258         * mini.c (mono_method_to_ir): Use the new helper functions in throw bblocks in
15259         AOT code.       
15260
15261         * mini.h: Bump AOT file format version.
15262         
15263         * mini.c (get_basic_blocks): Fix the calculation of bb->out_of_line so it
15264         covers more cases.
15265
15266 2006-04-25  Martin Baulig  <martin@ximian.com>
15267
15268         * driver.c: Disable copyprop, consprop and inline when running
15269         inside the debugger.
15270
15271 2006-04-25  Martin Baulig  <martin@ximian.com>
15272
15273         * debug-debugger.h (MonoDebuggerInfo): Replaced `get_thread_id'
15274         with `get_current_thread' and added `detach'.
15275         (MonoDebuggerMetadataInfo): Added `thread_size',
15276         `thread_tid_offset', `thread_stack_ptr_offset' and
15277         `thread_end_stack_offset'.
15278
15279 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
15280
15281         * aot.c Makefile.am: Split aot.c into two new files aot-compiler.c and 
15282         aot-runtime.c.
15283
15284         * inssel.brg (mini_emit_load_intf_reg_vtable): Use a new kind of AOT constant
15285         ADJUSTED_IID to avoid the need for adjusting the IID at runtime.
15286
15287         * mini.h (MonoJumpInfoType): Add MONO_PATCH_INFO_ADJUSTED_IID.
15288
15289         * mini.c (mono_resolve_patch_target): Handle ADJUSTED_IID.
15290
15291         * aot.c: Add support for ADJUSTED_IID.  
15292
15293 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
15294
15295         * aot.c (emit_method_order): Don't align method_order_end.
15296
15297         * inssel.brg (stmt): Fix interface calls in AOT code which got broken by
15298         the interface ID changes.
15299
15300 2006-04-21  Dick Porter  <dick@ximian.com>
15301
15302         * mini.c (mini_thread_cleanup): Clear the JIT TLS data when
15303         cleaning up a thread.  Fixes the new part of bug 77470.
15304
15305 2006-04-20  Geoff Norton  <gnorton@customerdna.com>
15306
15307         * mini-ppc.c: Call mono_jit_thread_attach when transitioning a native
15308         to managed wrapper.
15309                      
15310 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
15311
15312         * mini.h mini.c: Remove mono_type_to_ldind/stind () which are now in marshal.c.
15313         
15314         * mini.c (mono_runtime_install_handlers): Handle SIGABRT similarly to
15315         SIGSEGV. Fixes #78072.
15316
15317         * mini-exceptions.c (mono_handle_native_sigsegv): Add a 'signal' argument,
15318         unregister our SIGABRT handler.
15319
15320 2006-04-19  Massimiliano Mantione  <massi@ximian.com>
15321
15322         * mini.c: Disabled inline where it can alter the call stack in a
15323         way visible from managed code.
15324         * driver.c: enabled inline,consprop,copyprop,treeprop,deadce by
15325         default.
15326
15327 2006-04-16  Zoltan Varga  <vargaz@gmail.com>
15328
15329         * mini-amd64.c (mono_arch_emit_prolog): Attach the thread to the runtime as it is done
15330         on other platforms. Fixes #78089.
15331
15332 2006-04-13  Martin Baulig  <martin@ximian.com>
15333
15334         * driver.c: Also check a `MONO_INSIDE_MDB' environment variable to
15335         determine whether we're inside the debugger.
15336
15337         * debug-debugger.h
15338         (MonoDebuggerMetadataInfo): Added all offsets from `MonoDefaults'.
15339
15340 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
15341
15342         * mini.c (mono_method_to_ir): Handle multiple LEAVE statements inside a single
15343         handler clauses. Fixes #78024.
15344
15345         * mini-sparc.c (mono_arch_output_basic_block): Handle large offsets
15346         in the CALL_MEMBASE opcodes. Fixes #78088.
15347         (mono_arch_get_vcall_slot_addr): Ditto.
15348
15349 2006-04-10  Martin Baulig  <martin@ximian.com>
15350
15351         * debug-debugger.c: The thread handling code has now been moved
15352         into ../metadata/threads.c.
15353
15354 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
15355
15356         * driver.c (mono_main): Fix --with-gc=none build.
15357
15358         * mini-codegen.c (mono_spillvar_offset): Improve alignment.
15359         (mono_spillvar_offset_float): Ditto.
15360         (mono_local_regalloc): Only do the OP_MOVE optimization if ins->dreg is a local
15361         hreg, not when its !global, since on ia64, there is a third category: stacked
15362         registers.      
15363
15364 Mon Apr 10 14:39:49 CEST 2006 Paolo Molaro <lupus@ximian.com>
15365
15366         * mini.c: set MonoInst->klass for load field address and a few other
15367         places.
15368
15369 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
15370
15371         * helpers.c (mono_disassemble_code): Emit debug info on amd64 as well.
15372
15373 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
15374
15375         * dominators.c (compute_dominators): Fix yet another bug which surfaced after
15376         the branch opt changes.
15377
15378 2006-04-06  Dick Porter  <dick@ximian.com>
15379
15380         * wapihandles.c (mini_wapi_semdel): Fix parameters in semctl () call.
15381         
15382         * wapihandles.c (mini_wapi_seminfo): 
15383         * driver.c (mono_main): Add semaphore info option
15384
15385 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
15386
15387         * dominators.c (compute_dominators): Fix a bug which surfaced after the recent
15388         branch optimization changes. Fixes #78009.
15389
15390 Wed Apr 5 16:40:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
15391
15392         * mini.c: ignore accessibility of methods in managed->native wrappers.
15393
15394 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
15395
15396         * mini.c (mini_cleanup): Call print_jit_stats () earlier since it accesses metadata.
15397         
15398         * mini.c (mini_cleanup): Free 'emul_opcode_map' as well.
15399
15400 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
15401
15402         * mini.c: Modify the branch optimizations to preserve the invariant that
15403         the entries inside the in_bb and out_bb arrays are unique.
15404         (mono_unlink_bblock): Avoid creation of new arrays.
15405
15406 2006-04-02  Zoltan Varga  <vargaz@gmail.com>
15407
15408         * mini.c (mono_unlink_bblock): Fix regression caused by previous
15409         change (#77992).
15410
15411 2006-04-01  Zoltan Varga  <vargaz@gmail.com>
15412
15413         * mini.c (optimize_branches): Remove the "optimizations" in
15414         the cbranch1/cbranch2 -> branch cases which were causing several
15415         problems in the past. Fixes #77986.
15416
15417 2006-03-31  Chris Toshok  <toshok@ximian.com>
15418
15419         * driver.c (DEFAULT_OPTIMIZATIONS): back out the new set of
15420         default optimizations :(
15421
15422 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
15423
15424         * inssel-x86.brg mini-codegen.c mini.c: Merge some changes/fixes from linear-il
15425         branch.
15426
15427 2006-03-31  Massimiliano Mantione  <massi@ximian.com>
15428
15429         * local-propagation.c: Added comments to structs and removed
15430         "Mono" prefixes from local tree mover types.
15431
15432 2006-03-30  Zoltan Varga  <vargaz@gmail.com>
15433
15434         * Makefile.am (arch_sources): Define this for each architecture so 
15435         libmono_la_SOURCES is defined in one place.
15436
15437 Wed Mar 29 20:51:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
15438
15439         * driver.c, wapihandles.c, Makefile.am: integrate the io-layer utils
15440         from handles/.
15441
15442 Wed Mar 29 17:16:57 CEST 2006 Paolo Molaro <lupus@ximian.com>
15443
15444         * driver.c: print the GC name supplied by configure.
15445
15446 2006-03-29  Massimiliano Mantione  <massi@ximian.com>
15447
15448         * local-propagation.c: Added tree mover, and moved here all the
15449         local propagation code from mini.c
15450         * mini.c: Added support for treeprop, and moved all the local
15451         propagation code to local-propagation.c
15452         * mini.h: Added support for treeprop
15453         * driver.c: Added support for treeprop, enabled consprop, copyprop,
15454         treeprop, inline and deadce by default
15455         * Makefile.am: Added local-propagation.c
15456
15457 2006-03-25  Zoltan Varga  <vargaz@gmail.com>
15458
15459         * exceptions-sparc.c: Applied patch from David S. Miller  <davem@sunset.davemloft.net>: Implement correct support for sparc/linux.
15460
15461 Fri Mar 24 20:07:19 CET 2006 Paolo Molaro <lupus@ximian.com>
15462
15463         * debug-debugger.c: make it compile without the Boehm GC.
15464
15465 Wed Mar 22 18:25:18 CET 2006 Paolo Molaro <lupus@ximian.com>
15466
15467         * mini.c: fixed issue with mismatch when an icall is registered
15468         with multiple names but same address.
15469
15470 Tue Mar 21 15:59:57 CET 2006 Paolo Molaro <lupus@ximian.com>
15471
15472         * declsec.c, mini-exceptions.c: use write barrier to set reference
15473         fields of managed objects.
15474
15475 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
15476
15477         * mini.c (mono_print_method_from_ip): Recognize JIT trampolines as well.
15478         (can_access_internals): Fix a warning.
15479
15480         * mini.c (print_method_from_ip): Rename this to 
15481         mono_print_method_from_ip so it gets exported.
15482
15483         * trace.c: Deal with strings inside StringBuilder's containing garbage
15484         and fix memory leaks. Fixes #77848.
15485
15486 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
15487
15488         * mini.c (mini_init): Disable the setting of GC_stackbottom on ia64. Hopefully
15489         fixes #77787.
15490
15491 2006-03-16 Neale Ferguson <neale@sinenomine.net>
15492         
15493         * mini-s390.c: Remove OP_X86_TEST_NULL.
15494
15495 Thu Mar 16 17:19:04 CET 2006 Paolo Molaro <lupus@ximian.com>
15496
15497         * mini.c: use the correct GetHashCode() for the moving collector.
15498
15499 2006-03-16  Massimiliano Mantione  <massi@ximian.com>
15500
15501         * liveness.c: Regalloc spill cost tuning.
15502
15503 2006-03-15 Neale Ferguson <neale@sinenomine.net>
15504         
15505         * mini-s390x.h: Correct S390_LONG macro.
15506
15507         * mini-s390x.c: Cleanup unused code.
15508
15509 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
15510
15511         * jit-icalls.h: New file.
15512
15513         * Makefile.am mini.c jit-icalls.c: Use a proper include file for the jit
15514         icalls and include that instead of including jit-icalls.c.
15515
15516         * mini-ppc.c (mono_arch_output_basic_block): Remove references to
15517         OP_X86 opcodes.
15518
15519 Tue Mar 14 20:23:53 CET 2006 Paolo Molaro <lupus@ximian.com>
15520
15521         * mini.c: when checking for member accessibility, also check for
15522         friend assemblies and for explicit interface implementations.
15523
15524 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
15525
15526         * mini-codegen.c (mono_local_regalloc): Remove incorrect g_free () calls.
15527
15528         * cpu-arm.md cpu-g4.md: Remove x86_ opcodes.
15529
15530         * mini-x86.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
15531         common cases are done first.    
15532
15533         * mini-ops.h: Only define platform specific opcodes on the given platform.
15534
15535         * mini.h regalloc.h mini-codegen.c: Merge optimizations from the linear-il
15536         branch.
15537         
15538 2006-03-14  Martin Baulig  <martin@ximian.com>
15539
15540         Revert Paolo's change from r57348:
15541
15542         * mini.h: don't use gboolean for bitfields.
15543         * mini.c: verifier changes for fields and methods accessibility.
15544
15545 2006-03-13  Neale Ferguson <neale@sinenomine.net>
15546
15547         * mini-s390.h, mini-s390x.h: Fix calls to mono_call_inst_add_outarg_reg.
15548
15549         * mini-s390x.c: Fix conv_r_un.
15550
15551         * cpu-s390, cpu-s390x.md: Fix lengths.
15552
15553 Sun Mar 12 17:31:22 CET 2006 Paolo Molaro <lupus@ximian.com>
15554
15555         * mini.c: nested types have access to all the nesting
15556         levels, not just the enclosing types.
15557
15558 Sun Mar 12 16:23:11 CET 2006 Paolo Molaro <lupus@ximian.com>
15559
15560         * mini.c: added a few more verification checks.
15561
15562 2006-03-12  Zoltan Varga  <vargaz@gmail.com>
15563
15564         * liveness.c: Merge optimizations from the linear-il branch.
15565
15566 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
15567
15568         * mini-ia64.c (emit_call): Add a comment.
15569
15570         * tramp-ia64.c (mono_arch_patch_callsite): Handle indirect calls as well.
15571
15572         * tramp-ia64.c: Fix some warnings.
15573
15574 Sat Mar 11 20:15:59 CET 2006 Paolo Molaro <lupus@ximian.com>
15575
15576         * mini.h: don't use gboolean for bitfields.
15577         * mini.c: verifier changes for fields and methods accessibility.
15578
15579 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
15580
15581         * mini.c (mono_icall_get_wrapper): Fix an ia64 bug introduced by the
15582         lazy icall wrapper changes.
15583
15584         * dominators.c: Replace all the dominator algorithms with faster
15585         ones from the linear-il branch.
15586
15587         * inssel-*.brg: Allocate call->out_ireg_args and call->out_freg_args from
15588         the mempool.
15589
15590         * mini-amd64.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
15591         common cases are done first.
15592
15593         * mini-amd64.c: Fix some warnings.
15594
15595         * mini-codegen.c mini-*.c: Allocate call->out_ireg_args and call->out_freg_args
15596         from the mempool.
15597
15598         * mini.c (mono_jit_compile_method_with_opt): Fix a race in the newly
15599         added code.
15600
15601         * mini.h: Add a missing prototype.
15602
15603 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
15604
15605         * mini.c: Compile icall wrappers lazily.
15606
15607         * mini-codegen.c: Use printf instead of g_print since its much faster.
15608
15609         * mini.h (mono_bitset_foreach_bit): Use the faster mono_bitset_find_start ()
15610         function.
15611
15612         * mini.c (optimize_branches): Cache the negative result from 
15613         remove_block_if_useless ().
15614
15615         * mini.c (optimize_branches): Avoid restarting the iteration after each change. 
15616         Also fix some bblock linking issues.
15617
15618         * helpers.c (mono_disassemble_code): Reduce the size of the temporary
15619         assembly files.
15620
15621         * mini.h: Define G_LIKELY/G_UNLIKELY macros for older glib versions.
15622
15623         * mini.h (MonoBasicBlock): Reorganize the fields, putting more frequently
15624         accessed fields first, for better cache behavior.
15625         
15626 Fri Mar 10 18:21:41 CET 2006 Paolo Molaro <lupus@ximian.com>
15627
15628         * mini.c: speedup IList<T> array accesses.
15629
15630 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
15631
15632         * mini.c (mono_method_to_ir): Handle large methods overflowing the 
15633         inline_costs counter. Fixes #77190.
15634
15635 2006-03-06  Zoltan Varga  <vargaz@gmail.com>
15636
15637         * mini-exceptions.c: Call mono_trace_is_enabled () before printing
15638         trace messages. Fixes #77706.
15639
15640 2006-03-04  Martin Baulig  <martin@ximian.com>
15641
15642         * tramp-amd64.c, tramp-x86.c
15643         (mono_debugger_create_notification_function): Use
15644         mono_global_codeman_reserve() to allocate a buffer at runtime and
15645         return it.
15646
15647         * debug-debugger.h (MonoDebuggerInfo): Added `initialize'.
15648
15649         * debug-debugger.c (mono_debugger_init): Dynamically allocate the
15650         notification function at runtime and then call `initialize' in the
15651         `MONO_DEBUGGER__debugger_info' vtable.
15652
15653 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
15654
15655         * iltests.il: Fix a visibility problem.
15656
15657 Wed Mar 1 15:55:25 CET 2006 Paolo Molaro <lupus@ximian.com>
15658
15659         * driver.c, mini.c: add hooks for the counters API.
15660
15661 Wed Mar 1 12:28:04 CET 2006 Paolo Molaro <lupus@ximian.com>
15662
15663         * driver.c: show disabled options.
15664
15665 Wed Mar 1 12:18:51 CET 2006 Paolo Molaro <lupus@ximian.com>
15666
15667         * linear-scan.c: always use cost-driven selection.
15668
15669 2006-02-28  Raja R Harinath  <rharinath@novell.com>
15670
15671         * jit-icalls.c (helper_compile_generic_method): Revert change from
15672         2006-02-24.
15673
15674 Mon Feb 27 18:58:19 GMT 2006 Paolo Molaro <lupus@ximian.com>
15675
15676         * cpu-arm.md, mini-arm.c: implemented MemoryBarrier.
15677
15678 Sat Feb 25 17:39:21 CET 2006 Paolo Molaro <lupus@ximian.com>
15679
15680         * inssel.brg: style fixes, mostly to force the updated monoburg
15681         to run for people using svn.
15682
15683 Sat Feb 25 17:07:42 CET 2006 Paolo Molaro <lupus@ximian.com>
15684
15685         * mini.c: match monoburg changes.
15686
15687 Sat Feb 25 16:04:33 CET 2006 Paolo Molaro <lupus@ximian.com>
15688
15689         * mini.h, mini.c, abcremoval.c, aliasing.c, liveness.c,
15690         ssapre.c, graph.c, ssa.c: put the mono_burg_arity[]
15691         declaration in the header file.
15692
15693 Sat Feb 25 14:19:31 CET 2006 Paolo Molaro <lupus@ximian.com>
15694
15695         * helpers.c: reduce relocations and mem usage.
15696
15697 Sat Feb 25 11:58:16 CET 2006 Paolo Molaro <lupus@ximian.com>
15698
15699         * mini.h, mini-codegen.c: disable logging features if
15700         requested by configure.
15701
15702 Sat Feb 25 11:54:49 CET 2006 Paolo Molaro <lupus@ximian.com>
15703
15704         * mini.c: tiny verifier changes.
15705
15706 Fri Feb 24 18:17:52 CET 2006 Paolo Molaro <lupus@ximian.com>
15707
15708         * mini-ops.h, inssel-x86.brg, tramp-x86.c, mini-x86.c,
15709         cpu-pentium.md: stack alignment changes for osx/x86,
15710         partially from Geoff Norton <gnorton@customerdna.com>.
15711
15712 2006-02-24  Raja R Harinath  <harinath@gmail.com>
15713
15714         * jit-icalls.c (helper_compile_generic_method): Update to changes
15715         in metadata/class.c.
15716
15717 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
15718         
15719         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a missing check.
15720         
15721         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for
15722         interface calls with large offsets.
15723
15724 2006-02-23  Raja R Harinath  <rharinath@novell.com>
15725
15726         * jit-icalls.c (helper_compile_generic_method): Document the
15727         special-case we depend on so that we can inflate the method twice
15728         with the same context with no bad side-effects.
15729
15730 Thu Feb 23 13:45:46 CET 2006 Paolo Molaro <lupus@ximian.com>
15731
15732         * mini-x86.c, mini-amd64.c: fix for case when xen support
15733         is disabled.
15734
15735 Wed Feb 22 19:38:40 CET 2006 Paolo Molaro <lupus@ximian.com>
15736
15737         * mini-x86.c, mini-amd64.c: generate code to access tls items
15738         in a faster way for Xen systems.
15739
15740 Wed Feb 22 10:31:25 CET 2006 Paolo Molaro <lupus@ximian.com>
15741
15742         * exceptions-x86.c, mini-x86.h, driver.c, mini-codegen.c:
15743         updates and compilation fixes for the OSX/x86 port, mostly from
15744         Geoff Norton <gnorton@customerdna.com>.
15745
15746 Tue Feb 21 19:56:55 CET 2006 Paolo Molaro <lupus@ximian.com>
15747
15748         * inssel.brg: faster interface call implementation
15749         to sync with the interface_offsets MonoVTable changes.
15750
15751 Mon Feb 20 10:37:57 CET 2006 Paolo Molaro <lupus@ximian.com>
15752
15753         * mini.c: more verification checks.
15754
15755 Fri Feb 17 19:47:29 CET 2006 Paolo Molaro <lupus@ximian.com>
15756
15757         * mini.c: added a few more verification checks.
15758
15759 2006-02-17      Neale Ferguson <neale@sinenomine.net>
15760
15761         * mini-s390x.c, mini-s390x.h: Check for presence of long displacement
15762         facility on the processor and use it if available.
15763
15764 Fri Feb 17 16:12:52 CET 2006 Paolo Molaro <lupus@ximian.com>
15765
15766         * driver.c, aot.c, mini.c: throw exception if the IL code is
15767         invalid or unverifiable.
15768
15769 2006-02-17  Raja R Harinath  <rharinath@novell.com>
15770
15771         * generics.2.cs (test_0_ldfld_stfld_mro): Use m.struct_field, not
15772         m.StructField.
15773
15774 2006-02-16  Zoltan Varga  <vargaz@gmail.com>
15775
15776         * generics.2.cs: Add some tests for generics ldfld/stfld wrappers.
15777
15778 Wed Feb 15 16:23:17 CET 2006 Paolo Molaro <lupus@ximian.com>
15779
15780         * mini-s390x.c, mini-s390.c, mini.c, mini-amd64.c, mini-arm.c,
15781         mini-ia64.c, mini-sparc.c, mini-x86.c, mini-ppc.c: fixed
15782         handling of instantiated generic valuetypes.
15783
15784 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
15785
15786         * mini-exceptions.c mini-x86.h mini-x86.c: Get rid of 
15787         MONO_INIT_CONTEXT_FROM_CALLER, and use MONO_INIT_CONTEXT_FROM_FUNC
15788         instead.
15789
15790         * generics.2.cs: Revert the nullable reftypes tests.
15791
15792 2006-02-10  Zoltan Varga  <vargaz@gmail.com>
15793
15794         * mini-exceptions.c (MONO_INIT_CONTEXT_FROM_CALLER): Avoid
15795         using __builtin_frame_address (1) as it doesn't work in the presence
15796         of optimizations. Hopefully fixes #77273.
15797
15798         * Makefile.am generics.cs generics.2.cs: Revert the generics.2.cs
15799         -> generics.cs change as it doesn't work with some automake versions.
15800
15801 Thu Feb 9 16:24:44 CET 2006 Paolo Molaro <lupus@ximian.com>
15802
15803         * mini.c: handle systems that sue a different way to
15804         retrieve the stack address of the current thread.
15805
15806 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
15807
15808         * Makefile.am generics.2.cs: Rename this to generics.cs and handle
15809         it specially in the makefile.
15810
15811         * generics.2.cs: Add tests for nullable reference types.
15812
15813 Wed Feb 8 19:33:17 CET 2006 Paolo Molaro <lupus@ximian.com>
15814
15815         * mini.c: always handle the case when mono_jit_init()
15816         is called in a thread different from the main thread,
15817         confusing libgc (bug #77309).
15818
15819 Mon Feb 6 09:01:24 EST 2006 Paolo Molaro <lupus@ximian.com>
15820
15821         * mini-ppc.c: fix handling of exceptions in large methods (bug #74932).
15822
15823 Fri Feb 3 18:51:35 CET 2006 Paolo Molaro <lupus@ximian.com>
15824
15825         * mini.c: change optimize_branches () to use a single loop
15826         and introduce a new optimization to simplify some range checks.
15827
15828 2006-02-03  Martin Baulig  <martin@ximian.com>
15829
15830         * debug-debugger.c (debugger_thread_manager_thread_created): Removed
15831         and merged with debugger_thread_manager_add_thread().
15832         (mono_debugger_main): Call debugger_thread_manager_add_thread() to
15833         inform the debugger about the main thread.
15834
15835 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
15836
15837         * basic.cs: Add test for div.un/rem.un constant folding.
15838
15839 2006-02-03  Neale Ferguson <neale@sinenomine.net>
15840
15841         * cpu-s390x.md: correct int_xor_imm length
15842
15843 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
15844
15845         * generics.2.cs: New test for #77442.
15846
15847         * jit-icalls.c (helper_compile_generic_method): Check for null. Fixes
15848         #77442.
15849
15850 2006-02-02  Martin Baulig  <martin@ximian.com>
15851
15852         * tramp-x86.c, tramp-amd64.c: It's now safe to #include
15853         <mono/metadata/mono-debug-debugger.h>   
15854
15855         * debug-mini.c: Don't #define _IN_THE_MONO_DEBUGGER.
15856
15857 2006-02-02  Martin Baulig  <martin@ximian.com>
15858
15859         * debug-debugger.h: New header file for debug-debugger.c.
15860
15861         * debug-debugger.c: Big API cleanup; don't run the managed Main()
15862         function is a separate thread anymore; add support for attaching.
15863
15864 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
15865
15866         * tramp-x86.c: Fix a warning.
15867
15868 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
15869
15870         * mini-amd64.c (mono_arch_compute_omit_fp): Avoid hitting an assertion
15871         on very large methods.
15872
15873         * aot.c (load_patch_info): Fix a warning.
15874
15875 Mon Jan 30 12:51:10 CET 2006 Paolo Molaro <lupus@ximian.com>
15876
15877         * cpu-pentium.md, mini-x86.c, inssel.brg, inssel-x86.brg,
15878         mini-ops.h: alu membase optimizations.
15879
15880 Fri Jan 27 21:11:08 CET 2006 Paolo Molaro <lupus@ximian.com>
15881
15882         * mini-ops.h, mini.c, inssel.brg, inssel-x86.brg: opcode
15883         to speedup StringBuilder.
15884
15885 2006-01-27  Zoltan Varga  <vargaz@gmail.com>
15886
15887         * dominators.c (mono_compute_natural_loops): Fix detection of
15888         loop body start blocks.
15889
15890         * mini-exceptions.c (mono_print_thread_dump): Fix non x86 builds.
15891
15892 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
15893
15894         * mini.h mini.c mini-exceptions.c: Add thread dump support. Fixes
15895         #75145.
15896
15897 2006-01-25  Massimiliano Mantione  <massi@ximian.com>
15898
15899         * aliasing.c: Fixed aliasing issue on 64 bit archs.
15900
15901 2006-01-25  Martin Baulig  <martin@ximian.com>
15902
15903         * debug-debugger.c: Moved the `MonoDebuggerManager' and
15904         `MonoDebuggerThread' typedefs here from mono-debug-debugger.h and
15905         started to cleanup this file a little bit.
15906
15907 Tue Jan 24 18:20:48 CET 2006 Paolo Molaro <lupus@ximian.com>
15908
15909         * mini.c: optimize a codepath frequently happening in generics code.
15910
15911 2006-01-23  Martin Baulig  <martin@ximian.com>
15912
15913         * Makefile.am: Only compile debug-debugger.c on supported platforms.
15914
15915         * debug-debugger.c: Kill the IO_LAYER() hack and use the io-layer
15916         functions directly.
15917
15918         * driver.c: debug-debugger.c is only available if
15919         `MONO_DEBUGGER_SUPPORTED' is defined.   
15920
15921 2006-01-23  Martin Baulig  <martin@ximian.com>
15922
15923         * debug-debugger.c: Only enable this on platforms where the Mono
15924         Debugger is working (x86 and x86_64).
15925
15926 2006-01-21  Martin Baulig  <martin@ximian.com>
15927
15928         The Mono Debugger is now using the normal `mono' instead of the
15929         `mono-debugger-mini-wrapper' when executing managed code.
15930
15931         * debug-debugger.c: New file; previously known as
15932         debugger/wrapper/wrapper.c.
15933
15934         * debug-mini.c (mono_init_debugger): Removed.
15935
15936         * driver.c (mono_main): Added new `--inside-mdb' command line
15937         argument which is used when running inside the debugger.
15938
15939 2006-01-20  Zoltan Varga  <vargaz@gmail.com>
15940
15941         * liveness.c (mono_analyze_liveness): Remove some unused data
15942         structures.
15943
15944 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
15945
15946         * mini.h: Move mono_bitset_test_fast macro to monobitset.h where it belongs.
15947
15948 2006-01-16  Zoltan Varga  <vargaz@gmail.com>
15949
15950         * mini.h (mono_bitset_test_fast): Disable the 'fast' implementation which
15951         depends on implementation details of monobitset.
15952
15953         * mini.c (mini_get_ldelema_ins): Fix handling of 1 dimensional arrays.
15954         Fixes #77271.
15955
15956 2006-01-15  Zoltan Varga  <vargaz@gmail.com>
15957
15958         * liveness.c: Update after monobitset changes.
15959
15960 2006-01-14  Zoltan Varga  <vargaz@gmail.com>
15961
15962         * mini-amd64.c (mono_arch_compute_omit_fp): Fix a leak.
15963
15964 2006-01-11 Neale Ferguson <neale@sinenomine.net>
15965
15966         * inssel-s390x.brg: Fix reg: OP_LDADDR(OP_S390_LOADARG) register setting.
15967
15968         * mini-s390x.c: Remove warning messages.
15969
15970 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
15971
15972         * mini.c: pass the jitinfo to mono_profiler_method_end_jit.
15973
15974 2006-01-10  Zoltan Varga  <vargaz@gmail.com>
15975
15976         * generics.2.cs: Add ldelem/stelem_any test.
15977
15978 2006-01-10 Neale Ferguson <neale@sinenomine.net>
15979
15980         * mini-s390.c: Fix ATOMIC_ADD_I4 operation.
15981
15982 2006-01-07  Zoltan Varga  <vargaz@gmail.com>
15983
15984         * inssel-long.brg: Fix int->long ovf conversion rules. Fixes #77172.
15985         
15986 2006-01-06  Zoltan Varga  <vargaz@gmail.com>
15987
15988         * generics.2.cs: Reenable vtype tests.
15989
15990         * inssel-x86.brg: Remove an icorrect valuetype rule.
15991
15992 2006-01-06 Neale Ferguson <neale@sinenomine.net>
15993
15994         * mini-s390x.c, inssel-s390x.brg, cpu-s390x.md: Fix ATOMIC_I8 operations. Provide
15995         initial support for OP_ABS.
15996
15997 2006-01-05 Neale Ferguson <neale@sinenomine.net>
15998
15999         * mini-s390x.c (emit_float_to_int): Correct r8 to unsigned int algorithm.
16000
16001 2006-01-05 Neale Ferguson <neale@sinenomine.net>
16002
16003         * mini-s390.c, mini-s390.h, inssel-s390.brg, cpu-s390.md: Fix r8 to unsigned int 
16004         conversion and implement LADD/LSUB.
16005
16006         * exceptions-s390.c: Standardize mono_arch_find_jit_info to match other
16007         architectures.
16008
16009 2006-01-05 Neale Ferguson <neale@sinenomine.net>
16010
16011         * mini-s390x.c, mini-s390x.h: Fix r8 to unsigned int conversion.
16012
16013         * exceptions-s390x.c: Standardize mono_arch_find_jit_info to match other
16014         architectures.
16015
16016 2006-01-05 Neale Ferguson <neale@sinenomine.net>
16017
16018         * mini-s390x.c, mini-s390x.h, mini-s390.c, mini-s390.h: Fix lmf handling when 
16019         localloc is encountered.  Fixes crash in test-183.cs when using gmcs 
16020         (stack walk problem).
16021
16022 2006-01-04  Zoltan Varga  <vargaz@gmail.com>
16023
16024         * aot.c (mono_aot_load_method): Fix a warning.
16025
16026 2006-01-03  Neale Ferguson <neale@sinenomine.net>
16027
16028         * mini-s390x.h, exceptions-s390x.c, inssel-s390x.brg: Fix compiler warnings
16029
16030 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
16031
16032         * iltests.il: Add test for #77148.
16033
16034         * mini.c (mini_get_ldelema_ins): Handle arrays with rank 1 too. Fixes
16035         #77148.
16036
16037 2006-01-03  Neale Ferguson <neale@sinenomine.net>
16038
16039         * mini-s390x.c, inssel-s390x.brg: Remove debug statements
16040
16041 2006-01-03  Neale Ferguson <neale@sinenomine.net>
16042
16043         * mini-s390x.c, mini-s390x.h, exceptions-s390x.c, tramp-s390x.c, inssel-s390x.brg,
16044         cpu-s390x.md, mini-codegen.c, Makefile.am: add 64-bit s390 support to JIT.
16045
16046         * basic-long.cs: Add lconv-to-r4/r8 tests.
16047
16048 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
16049
16050         * mini.c (mono_method_to_ir): Fix DynamicMethod support in some opcodes.
16051
16052         * mini-sparc.c (mono_arch_call_opcode): Use mono_class_value_size ()
16053         here as on other archs.
16054
16055 2005-12-29 Neale Ferguson <neale@sinenomine.net>
16056
16057         * mini-s390.c (mono_arch_get_inst_for_method): Add memory_barrier support.
16058
16059 2005-12-29 Neale Ferguson <neale@sinenomine.net>
16060
16061         * inssel-s390.brg: Correct register assignment; Rework L[ADD|SUB]_OVF[_UN] for s390.
16062         
16063         * cpu-s390.md: Fix lengths of a couple of long instructions; Add memory_barrier.
16064
16065         * mini-s390.c: Fix long add/sub overflow instructions; Fix displacement handling in
16066         instrument_prolog; Add memory_barrier instruction.
16067
16068 2005-12-26  Zoltan Varga  <vargaz@gmail.com>
16069
16070         * exceptions-x86.c mini-x86.h: Fix solaris/x86 exception handling.
16071
16072 2005-12-23  Zoltan Varga  <vargaz@gmail.com>
16073
16074         * tramp-ia64.c (mono_arch_get_unbox_trampoline): Flush icache.
16075
16076         * aliasing.c inssel.brg: Fix warnings.
16077
16078         * inssel-ia64.brg (OP_MEMSET): Fix an optimization which previously
16079         could skip initialization of some parts of memory.
16080
16081         * mini.c mini-ia64.c: Fix warnings.
16082
16083         * inssel-sparc.brg: Add an implementation of lneg which actually works.
16084
16085 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
16086
16087         * aliasing.c (mono_build_aliasing_information): Add a workaround for
16088         a crash seen on sparc.
16089
16090         * mini-sparc.c: Add implementation of Thread.MemoryBarrier.
16091         
16092         * cpu-sparc.md: Add memory_barrier opcode. Remove unused opcodes.
16093
16094 2005-12-21 Neale Ferguson <neale@sinenomine.net>
16095
16096         * mini-ops.h: Add s390_backchain instruction
16097
16098         * inssel-s390.brg: Use backchaining instruction for LOADARG/STKARG operations.
16099
16100         * cpu-s390.md: Add s390_backchain instruction
16101
16102         * mini-s390.c: Significant ABI changes
16103
16104         * mini-s390.h: Cater for zero length structures
16105
16106 2005-12-20 Neale Ferguson <neale@sinenomine.net>
16107
16108         * mini-s390.c: ABI fixes
16109
16110         * inssel-s390.brg: Remove debug statements
16111
16112         * cpu-s390.md: Fix length of ATOMIC_xx operations
16113
16114 2005-12-19  Zoltan Varga  <vargaz@gmail.com>
16115
16116         * basic-float.cs: Add float<->long conversion tests.
16117
16118 2005-12-16 Neale Ferguson <neale@sinenomine.net>
16119
16120         * mini-s390.c: Fix LOCALLOC processing.
16121
16122         * tramp-s390.c (s390_magic_trampoline): Fix base calculation.
16123
16124 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
16125
16126         * iltests.il: Add tests for some opcodes not covered by the other
16127         tests.
16128
16129 2005-12-15 Neale Ferguson <neale@sinenomine.net>
16130
16131         * mini-s390.c: Fix ADDCC/SBB bug revealed by test_0_ulong_regress; Correct 
16132         register loading for Tail processing; Correct trace output.
16133
16134         * inssel-s390.brg: Reimplement LSUB_OVF due to s390 implementation of signed math.
16135
16136         * cpu-s390.md: Correct size of jmp instruction. 
16137
16138 2005-12-13 Neale Ferguson <neale@sinenomine.net>
16139
16140         * mini-s390.c (mono_arch_emit_prolog): Remove some debugging bits.
16141
16142 2005-12-13 Neale Ferguson <neale@sinenomine.net>
16143
16144         * inssel-s390.brg tramp-s390.c cpu-s390.md mini-s390.c mini-s390.h:
16145           Bring s390 up to current level.
16146
16147 2005-12-12  Zltan Varga  <vargaz@gmail.com>
16148
16149         * generics.2.cs: Disable the newly added tests as they do not work yet.
16150         
16151         * generics.2.cs: Add valuetype tests.
16152
16153 2005-12-09  Zoltan Varga  <vargaz@gmail.com>
16154
16155         * basic-long.cs: Add i4->u8 test.
16156
16157         * objects.cs: Add tests for JIT intrinsic.
16158
16159         * mini.c (mini_get_inst_for_method): Resurrect the array Rank/Length
16160         optimizations lost by a mistake.
16161
16162 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
16163
16164         * basic-long.cs: Remove a test moved to objects.cs.
16165
16166         * arrays.cs: Add more array tests.
16167
16168 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
16169
16170         * arrays.cs: Add new tests for multi-dimensional arrays.
16171
16172 2005-12-06  Raja R Harinath  <rharinath@novell.com>
16173
16174         * Makefile.am (test_sources2): Add generics.2.cs.
16175         (EXTRA_DIST): Add test_sources2.
16176
16177 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
16178
16179         Support for boxing and unboxing nullable types as well as the
16180         isinst operation on nullables, per the CLI ammendment.
16181
16182         * inssel.brg (CEE_ISINST): Special case for nullable
16183
16184         * mini.c (handle_unbox_nullable): new method
16185         (handle_box): Special case for nullable types
16186         (mono_method_to_ir): Call handle_unbox_nullable in correct
16187         places.
16188
16189         * generics.2.cs: New test suite
16190
16191         * Makefile.am: Support for regression tests with generics.
16192
16193 2005-12-03  Zoltan Varga  <vargaz@gmail.com>
16194
16195         * mini-amd64.c (emit_load_volatile_arguments): Add loading of arguments
16196         allocated to registers. Fixes #76800.
16197
16198 Thu Dec 1 12:59:40 EST 2005 Paolo Molaro <lupus@ximian.com>
16199
16200         * mini-ppc.c, inssel-ppc.brg: fix ABI issue (pinvoke3.cs).
16201
16202 2005-11-30  Zoltan Varga  <vargaz@gmail.com>
16203
16204         * exceptions.cs: Disable test_0_long_cast () test, since it fails on a lot 
16205         of platforms.
16206
16207 2005-11-29  Zoltan Varga  <vargaz@gmail.com>
16208
16209         * objects.cs basic-calls.cs: Move a test depending on valuetypes to
16210         objects.cs.
16211
16212         * inssel-long32.brg (CEE_CONV_I8): Remove unused labels.
16213         
16214         * inssel-long32.brg (CEE_CONV_I8): Convert this to a branchless version.
16215 Tue Nov 29 05:41:34 EST 2005 Paolo Molaro <lupus@ximian.com>
16216
16217         * mini-ppc.c, cpu-g4.md: ensure a fp register is converted to
16218         single precision before storing to a single precision location.
16219
16220 2005-11-28  Raja R Harinath  <rharinath@novell.com>
16221
16222         * Makefile.am (ILASM): Use profile-dependent location of ilasm.
16223
16224 2005-11-27  Zoltan Varga  <vargaz@gmail.com>
16225
16226         * basic-long.cs basic-calls.cs objects.cs: Move some tests to the
16227         correct files.
16228
16229         * basic.cs: Remove test_0_byte_compares test which was moved to
16230         objects.cs a long time ago.
16231
16232 2005-11-22  Massimiliano Mantione  <massi@ximian.com>
16233
16234         * aliasing.c: Fixed aliasing issue on 64 bit archs.
16235
16236 2005-11-20  Zoltan Varga  <vargaz@gmail.com>
16237
16238         * mini-ia64.c exceptions-ia64.c: Simplify the way filters/finally
16239         handlers are called.
16240
16241         * mini-ia64.c (mono_arch_emit_exceptions): Optimize size of exception
16242         throwing code.
16243
16244          * mini-ia64.c: Add support for the throw->branch exception 
16245         optimization.   
16246
16247         * driver.c (DEFAULT_OPTIMIZATIONS): Add MONO_OPT_EXCEPTION.
16248
16249 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
16250
16251         * mini.c: Enabled "fastpath" deadce :-)
16252         
16253 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
16254
16255         * mini.c: Added "fastpath" deadce (deadce without SSA), and a simple
16256         alias analysis pass to support it.
16257         * mini.h: Likewise.
16258         * ssa.c: Likewise.
16259         * liveness.c: Likewise (liveness computation can use aliasing
16260         information to be more accurate).
16261         * driver.c: Added an "ssa" option go tell the JIT to use SSA, and
16262         moreover made so that "--compile-all" uses the given optimization
16263         flags and not the default ones.
16264         * aliasing.c: Alias analysis (new file).
16265         * aliasing.h: Likewise.
16266         * Makefile.am: added "aliasing.c" and "aliasing.h".
16267         
16268 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
16269
16270         * mini-ops.h: Add missing OP_I opcodes so it is in synch with the
16271         OP_L opcodes.
16272
16273 2005-11-13  Zoltan Varga  <vargaz@gmail.com>
16274
16275         * mini-exceptions.c (mono_handle_exception_internal): Remove the 
16276         fp >= end_of_stack exit condition, as it is not needed, and it might
16277         become true for fp eliminated frames.
16278
16279 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
16280
16281         * mini-x86.c (mono_arch_emit_epilog): Use G_STRUCT_OFFSET instead of hard
16282         coded offsets.
16283
16284 Tue Nov 8 11:28:20 GMT 2005 Paolo Molaro <lupus@ximian.com>
16285
16286         * mini-arm.c: fixed alignment of doubles/longs to match
16287         the C ABI (bug #76635).
16288
16289 Mon Nov 7 16:13:21 CET 2005 Paolo Molaro <lupus@ximian.com>
16290
16291         * aot.c: fix compilation with --enable-minimal=aot.
16292
16293 Fri Nov 4 12:34:15 GMT 2005 Paolo Molaro <lupus@ximian.com>
16294
16295         * mini-arm.c: fixed compatibility with the new
16296         floating point emulator package for compares.
16297
16298 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com?
16299
16300         * mini.c : reverted sig->pinvoke changes (r51396-51397).
16301
16302 2005-11-01  Zoltan Varga  <vargaz@freemail.hu>
16303
16304         * mini-exceptions.c (print_stack_frame): Output to stderr.
16305         (mono_handle_native_sigsegv): Ditto.
16306
16307 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
16308
16309         * mini-amd64.c (mono_arch_output_basic_block): Remove unused
16310         OP_LCONV_TO_OVF_I implementation.
16311
16312         * mini-amd64.c: Add support for the throw->branch exception 
16313         optimization.
16314
16315         * branch-opts.c (mono_branch_optimize_exception_target): Allow the case
16316         when the catch clause catches a more general exception, i.e. Object.
16317
16318 2005-10-30  Zoltan Varga  <vargaz@gmail.com>
16319
16320         * cpu-ia64.md: Remove unused opcodes.
16321
16322         * mini.c (GET_CONTEXT): Simplify this somewhat by removing arch
16323         specific defines for architectures defining USE_SIGACTION.
16324
16325         * mini-ia64.c: Fix some warnings.
16326
16327         * exceptions-ia64.c (mono_arch_ip_from_context): Fix this, the previous
16328         version seemed to skip a frame.
16329
16330 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
16331
16332         * mini.c: Clean up the usage of sig->pinvoke flag. Now
16333         only calls which are made to native code use this flag.
16334
16335 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
16336
16337         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for
16338         varargs methods as well.
16339         
16340         * mini-amd64.c exceptions-amd64.c: Allow fp elimination in methods
16341         which have save_lmf set. Reorganize methods prologs a bit.
16342
16343         * mini-amd64.c (mono_arch_compute_omit_fp): Move the check for the
16344         debugger to the proper place.
16345
16346 2005-10-29  Martin Baulig  <martin@ximian.com>
16347
16348         * mini-amd64.c (debug_omit_fp): Temporarily disable fp elimination
16349         when running inside the debugger until the debugger has support
16350         for it.
16351
16352 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
16353
16354         * mini.h: Fix a warning.
16355
16356 2005-10-24  Miguel de Icaza  <miguel@novell.com>
16357
16358         * mini.c (mono_pmip): Just a wrapper for get_method_from_ip which
16359         we expose publicly, this returns the string.
16360
16361 2005-10-22  Zoltan Varga  <vargaz@freemail.hu>
16362
16363         * exceptions-amd64.c (mono_arch_find_jit_info): Fix some corner cases
16364         with fp elimination.
16365
16366 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
16367
16368         * mini-exceptions.c (mono_handle_native_sigsegv): Try to print a
16369         native stacktrace using the glibc 'backtrace' function if available.
16370
16371 2005-10-20  Zoltan Varga  <vargaz@gmail.com>
16372
16373         * mini.h (MonoDebugOptions): Remove 'abort_on_sigsegv' option.
16374
16375         * mini-exceptions.c (mono_handle_native_sigsegv): New function to 
16376         handle SIGSEGVs received while in native code.
16377
16378         * mini.c (sigsegv_signal_handler): If the SIGSEGV happened in native
16379         code, call mono_handle_native_sigsegv which will abort the runtime
16380         after printing some diagnostics, instead of converting it into a
16381         confusing NullReferenceException.
16382
16383 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
16384
16385         * cpu-pentium.md: Remove unused opcodes.
16386
16387 2005-10-18  Zoltan Varga  <vargaz@freemail.hu>
16388
16389         * mini-amd64.h (MonoLMF): Add rsp field.
16390
16391         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Save the sp reg into
16392         the lmf too.
16393
16394 2005-10-17  Zoltan Varga  <vargaz@gmail.com>
16395
16396         * mini-codegen.c (get_register_spilling): Fix some warnings.
16397
16398 2005-10-16  Zoltan Varga  <vargaz@freemail.hu>
16399
16400         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Add support for fp
16401         elimination during exception handling. Enable fp elimination by
16402         default.
16403
16404         * mini-amd64.h mini-amd64.c: Add preliminary support for frame pointer
16405         elimination.
16406
16407 2005-10-16  Martin Baulig  <martin@ximian.com>
16408
16409         * mini-exceptions.c
16410         (mono_debugger_run_finally): New public method for the debugger.
16411
16412 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
16413
16414         * debug-mini.c (mono_debug_init_method): Fix warning.
16415
16416         * mini.h branch-opts.c (mono_branch_optimize_exception_target): Make
16417         the 'exname' parameter const to fix some warnings.
16418
16419 2005-10-09  Zoltan Varga  <vargaz@freemail.hu>
16420
16421         * mini-exceptions.c (mono_handle_exception_internal): Fix another bug
16422         introduced by the previous patch.
16423
16424 2005-10-08  Zoltan Varga  <vargaz@gmail.com>
16425
16426         * basic-float.cs: Add test for precision of float arithmetic.
16427
16428         * mini-ia64.c (mono_arch_output_basic_block): Convert to/from doubles
16429         when loading/storing single values from/to memory.
16430
16431         * mini.c (mono_jit_compile_method_with_opt): Create the function
16432         pointers in the correct domain.
16433
16434 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
16435
16436         * mini-exceptions.c (mono_handle_exception_internal): Fix bug 
16437         introduced by previous patch.
16438         
16439         * mini-exceptions.c (mono_handle_exception_internal): Handle the case
16440         when out_filter_idx is NULL.
16441
16442         * mini-exceptions.c: Don't run filter clauses twice during exception
16443         handling. Fixes #75755.
16444
16445 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
16446
16447         * aot.c: Add support for ldflda wrappers.
16448
16449         * mini.c (mono_method_to_ir): Use ldflda wrappers for CEE_LDFLDA. Fixes
16450         #75902.
16451
16452 Tue Oct 4 20:23:25 CEST 2005 Paolo Molaro <lupus@ximian.com>
16453
16454         * mini.c, mini.h: do not consider exception handlers blocks when
16455         setting up interface variables.
16456
16457 2005-10-04  Zoltan Varga  <vargaz@freemail.hu>
16458
16459         * aot.c (emit_section_change): Fix emitting of sections on win32. Fixes #76322.
16460
16461 2005-10-03  Zoltan Varga  <vargaz@gmail.com>
16462
16463         * liveness.c (mono_analyze_liveness): Revert parts of r51051 since it
16464         causes a regression.
16465
16466         * mini.c (mini_thread_cleanup): Fix reading of freed memory.
16467
16468 2005-10-02  Zoltan Varga  <vargaz@freemail.hu>
16469
16470         * mini.h (OP_PCONST): Move the definition of OP_PCONST into the rest
16471         of the OP_P definitions.
16472
16473         * TODO: Add a proposal for dealing with the CEE/OP mess.
16474
16475         * mini-amd64.c (mono_arch_output_basic_block): Merge mul_imm 
16476         optimizations from the x86 port.
16477
16478         * cpu-amd64.md: Ditto.
16479
16480         * basic.cs basic-long.cs: Add tests.
16481
16482 Fri Sep 30 20:07:20 CEST 2005 Paolo Molaro <lupus@ximian.com>
16483
16484         * Makefile.am, driver.c, mini-x86.c, mini.c, mini.h, branch-opts.c:
16485         Patrik Torstensson's implementation of my exception-handling
16486         optimization idea, when the exception object is not used
16487         (bug #62150).
16488
16489 Fri Sep 30 19:10:29 CEST 2005 Paolo Molaro <lupus@ximian.com>
16490
16491         * mini-x86.c, cpu-pentium.md: Patrik Torstensson's port
16492         of the mul_imm optimizations from the old jit.
16493
16494 Fri Sep 30 11:37:51 EDT 2005 Paolo Molaro <lupus@ximian.com>
16495
16496         * mini.c, liveness.c: patch by Patrik Torstensson and
16497         Zoltan Varga to improve performance in methods with
16498         exception clauses.
16499
16500 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
16501
16502         * driver.c: Remove 'Globalization' entry from --version.
16503
16504 2005-09-28  Zoltan Varga  <vargaz@gmail.com>
16505
16506         * mini.c (mono_jit_compile_method_inner): Do not load AOT code when
16507         there is a profiler interested in JIT events.
16508
16509         * aot.c: Load profile files produced by the AOT profiling module, and
16510         reorder methods based on the profiling info. Add a 'method_order' table
16511         to the AOT file to make mono_aot_find_jit_info work with the reordered
16512         methods.
16513
16514         * mini.h: Bump AOT file version info.
16515
16516 Wed Sep 28 17:12:48 CEST 2005 Paolo Molaro <lupus@ximian.com>
16517
16518         * mini-arm.h: work around what looks like a gcc bug when optimizations
16519         are enabled.
16520
16521 2005-09-28  Raja R Harinath  <rharinath@novell.com>
16522
16523         * Makefile.am (AM_CFLAGS): Don't use += to append inside
16524         conditionals.  Use ...
16525         (PLATFORM_CFLAGS, ARCH_CFLAGS): ... these.
16526
16527 2005-09-27  Zoltan Varga  <vargaz@freemail.hu>
16528
16529         * mini-amd64.c (mono_arch_call_opcode): Use mono_class_value_size ()
16530         to determine the amount of memory to copy when passing valuetypes.
16531
16532         * inssel-amd64.brg: Remove PUSH(LDIND4) rules since they convert an
16533         4 byte load into a 8 byte load. Fix aligning of size in OP_OUTARG_VT.
16534
16535 2005-09-27  Zoltan Varga  <vargaz@gmail.com>
16536
16537         * mini.h mini.c aot.c: Add infrastructure to collect pagefault 
16538         information about aot.
16539
16540 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
16541
16542         * *.c: Replace the use of {Enter,Leave}CriticalSection with
16543         macros. This will allow a deadlock debugger to easily be plugged
16544         in.
16545
16546 Tue Sep 27 09:32:11 EDT 2005 Paolo Molaro <lupus@ximian.com>
16547
16548         * mini-ppc.c, cpu-g4.md: added memory barrier instruction.
16549
16550 2005-09-27  Raja R Harinath  <rharinath@novell.com>
16551
16552         * Makefile.am (AM_CFLAGS): Rename from INCLUDES.
16553         (AM_CFLAGS) [PLATFORM_WIN32): Append to it, don't set it.
16554         (AM_CFLAGS) [ARM]: Add arch/arm directory from the build tree.
16555         ($(arch_built)) [CROSS_COMPILING]: Error out.
16556
16557 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
16558
16559         * aot.c: Add support for the no_special_static flag for classes.
16560
16561 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
16562
16563         * Reapply reverted patches.
16564
16565         * *: Revert r50174 as well.
16566
16567         * mini-amd64.c cpu-amd64.md inssel-amd64.brg: Revert r50170 as well.
16568
16569 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
16570
16571         * mini-amd64.c: Revert r50342 to see if this fixed buildbot.
16572
16573 2005-09-23  Miguel de Icaza  <miguel@novell.com>
16574
16575         * mini.c (SIG_HANDLER_SIGNATURE): Only dereference info if it is
16576         part of the SIG_HANDLER_SIGNATURE.  
16577
16578 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
16579
16580         * mini.h mini.c: Add a new MONO_DEBUG option to collect metadata pagefault
16581         statistics.
16582
16583         * mini-x86.c (mono_arch_call_opcode): Fix vararg calling convention 
16584         introduced by previous patch.
16585
16586 2005-09-21  Zoltan Varga  <vargaz@gmail.com>
16587
16588         * tramp-x86.c (mono_arch_create_trampoline_code): Restore caller
16589         saved registers too.
16590
16591         * mini-x86.c (mono_arch_allocate_vars): Rewrite this so it works based 
16592         upon the information returned by get_call_info ().
16593         
16594         * mini-x86.c (add_float): Fix stack size calculation.
16595         (mono_arch_call_opcode): Rewrite this so it works based up the
16596         information returned by get_call_info ().
16597         (mono_arch_get_this_vret_args): Ditto.
16598
16599 2005-09-21  Zoltan Varga  <vargaz@freemail.hu>
16600
16601         * mini-amd64.c (mono_arch_emit_this_vret_args): Use the information
16602         in cinfo to determine the registers which need to be used.
16603
16604 2005-09-20  Miguel de Icaza  <miguel@novell.com>
16605
16606         * driver.c (mono_main): Add --server and --desktop flags. 
16607
16608 2005-09-16  Zoltan Varga  <vargaz@gmail.com>
16609
16610         * mini-ia64.h: Make register masks 64 bit. Don't treat argument
16611         registers as global registers.
16612
16613         * inssel-ia64.brg (stmt): Remove OP_OUTARG_REG () rules which are no 
16614         longer needed with the new register allocator.
16615
16616         * mini-ia64.c: Use OP_MOVE instead of OP_SETREG for reg-reg moves.
16617
16618         * cpu-ia64.md: Remove unused opcodes.
16619         
16620         * regalloc.c mini-codegen.c: Make register masks 64 bit on ia64.
16621         
16622 2005-09-16  Zoltan Varga  <vargaz@freemail.hu>
16623
16624         * cpu-amd64.md: Remove unused opcodes.
16625
16626         * inssel-amd64.brg: Remove OP_OUTARG_REG () rules which are no longer
16627         needed with the new register allocator.
16628
16629         * inssel-amd64.brg mini-amd64.c: Use OP_MOVE instead of OP_SETREG for
16630         reg-reg moves.
16631
16632 2005-09-16  Raja R Harinath  <rharinath@novell.com>
16633
16634         * Makefile.am (check-local): Don't invoke semdel-wrapper.
16635
16636 2005-09-16  Martin Baulig  <martin@ximian.com>
16637
16638         * exceptions-amd64.c
16639         (throw_exception): Don't call mono_debugger_throw_exception() if
16640         we're a rethrow - see the FIXME in the code.
16641
16642 2005-09-15  Geoff Norton  <gnorton@customerdna.com>
16643
16644         * mini.c (mono_init_exceptions): This only works on some architectures.
16645         
16646 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
16647
16648         * mini.c (mono_method_to_ir): Add OP_LMUL imm -> OP_LMUL_IMM conversion
16649         on ia64.
16650
16651         * inssel-long.brg mini-ia64.c: Add OP_LMUL_IMM rules.
16652
16653         * mini-ia64.h mini-ia64.c: Remove the altstack support code which is
16654         now in mini-exceptions.c.
16655
16656 2005-09-15  Zoltan Varga  <vargaz@freemail.hu>
16657
16658         * mini-amd64.h mini-am64.c: Remove the altstack support code which is
16659         now in mini-exceptions.c.
16660
16661 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
16662
16663         * exceptions-x86.c: Applied patch from Patrik Torstensson 
16664         <patrik.torstensson@gmail.com>. Add stack overflow handling support for win32.
16665
16666         * mini-exceptions.c mini-x86.c mini.c: Move the altstack setup/teardown
16667         code into mini-exceptions.c. Add some assertions to it.
16668
16669 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
16670
16671         * aot.c (emit_section_change): Applied patch from "The Software Team" 
16672         (<software@solmersa.com>). Fix as errors on windows.
16673
16674 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
16675
16676         * tramp-amd64.c (mono_arch_create_trampoline_code): Fix saving of
16677         method info into the LMF.
16678
16679 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
16680         
16681         * mini-ia64.c: Add proper unwind info for method epilogs.
16682
16683         * exceptions-ia64.c: Add some code to help debugging.
16684         
16685         * mini-ia64.c mini-ia64.h: Add sigaltstack support.
16686
16687         * mini-exceptions.c: Fix warning.
16688
16689 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
16690
16691         * mini.c: Really fix build.
16692
16693         * mini-x86.c mini-amd64.c: Fix build.
16694
16695 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
16696
16697         * mini-ia64.c inssel-ia64.brg: Add InterlockedExchange instrinsics.
16698
16699         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Implement
16700         some Interlocked methods as intrinsics.
16701
16702         * mini.c (mini_get_inst_for_method): Call arch_get_inst_for_method
16703         for Thread methods as well.
16704
16705         * mini-ops.h: Add OP_MEMORY_BARRIER opcode.
16706
16707         * inssel.brg: Add rule for OP_MEMORY_BARRIER.
16708
16709         * mini-ia64.c mini-x86.c mini-amd64.c 
16710         cpu-ia64.md cpu-pentium.md cpu-amd64.md: Add implementation of 
16711         OP_MEMORY_BARRIER.
16712         
16713         * mini.c (mono_init_exceptions): Fix build breakage.
16714
16715 2005-09-10  Zoltan Varga  <vargaz@gmail.com>
16716
16717         * mini-ia64.c exceptions-ia64.c tramp-ia64.c: Remove 'manual' emitting
16718         of instructions. Use the new ia64_unw_op macros for emitting unwind
16719         info.
16720
16721         * mini.c (mono_init_exceptions): Initialize exception handling
16722         related trampolines at startup.
16723
16724 Fri Sep 9 19:30:37 BST 2005 Paolo Molaro <lupus@ximian.com>
16725
16726         * cpu-arm.md, mini-arm.c: fix for dynamic code (Gtk# apps).
16727
16728 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
16729
16730         * mini.c: Handle type loading errors gracefully during compilation and
16731         throw the appropriate exception.
16732
16733 Fri Sep 9 09:49:14 CEST 2005 Paolo Molaro <lupus@ximian.com>
16734
16735         * ldscript.mono, Makefile.am: use anonymous versions in the ldscript
16736         for the mono binary.
16737
16738 2005-09-09  Martin Baulig  <martin@ximian.com>
16739
16740         * mini.c (mono_method_to_ir): Comment out the G_BREAKPOINT()'s for
16741         the release.
16742
16743 Thu Sep 8 14:53:45 BST 2005 Paolo Molaro <lupus@ximian.com>
16744
16745         * mini-arm.h: use emulation for conv.r.un for the release.
16746
16747 Thu Sep 8 11:28:45 BST 2005 Paolo Molaro <lupus@ximian.com>
16748
16749         * mini-arm.c, objects.cs: more fixes and tests for them.
16750
16751 Wed Sep 7 17:14:26 BST 2005 Paolo Molaro <lupus@ximian.com>
16752
16753         * mini-arm.c: align structures to at least 4 bytes to be able
16754         to keep our current optimized memcpy.
16755
16756 Tue Sep 6 22:51:08 BST 2005 Paolo Molaro <lupus@ximian.com>
16757
16758         * mini-arm.c, cpu-arm.md, inssel-arm.brg: bugfixes.
16759
16760 2005-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16761
16762         * mini.c: ignore SIGPIPE.
16763
16764 2005-09-04  Zoltan Varga  <vargaz@gmail.com>
16765
16766         * mini-ia64.c (mono_arch_lowering_pass): Convert 'and_imm 255' to zext1.
16767
16768         * mini-ia64.h mini-ia64.c: Add some minor optimizations.
16769
16770 2005-09-02  Zoltan Varga  <vargaz@gmail.com>
16771
16772         * mini.h: Add prototype for mono_allocate_stack_slots_full.
16773
16774 Thu Sep 1 21:05:26 BST 2005 Paolo Molaro <lupus@ximian.com>
16775
16776         * exceptions-arm.c, mini.c, mini-arm.c, mini-arm.h:
16777         exception handling support.
16778         * mini-arm.c, mini-arm.h: bigendian fixes (partially from a
16779         patch by Brian Koropoff <briank@marakicorp.com>).
16780
16781 Thu Sep 1 10:22:44 EDT 2005 Paolo Molaro <lupus@ximian.com>
16782
16783         * mini.c: revert another 'optimization' which breaks when
16784         items on the eval stack need to be saved at a basic block end
16785         (bug #75940).
16786
16787 Wed Aug 31 17:29:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
16788
16789         * jit-icalls.c: for arrays, ensure we always provide
16790         lower bounds.
16791
16792 2005-08-30  Zoltan Varga  <vargaz@gmail.com>
16793
16794         * mini.c (mono_allocate_stack_slots_full): Fix ia64 build.
16795         
16796         * mini.c (mini_get_inst_for_method): Special case Object:.ctor as well.
16797
16798 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
16799
16800         * mini-ia64.h mini-ia64.c: Implement frame pointer elimination. Keep
16801         arguments in their original register.
16802
16803 2005-08-28  Zoltan Varga  <vargaz@gmail.com>
16804
16805         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Optimize
16806         memset/memcpy.
16807
16808         * mini.c (mono_method_to_ir): Disable the MUL->MUL_IMM optimization
16809         when ssapre is enabled.
16810
16811         * inssel-long.brg: Fix bug in previous patch.
16812
16813         * mini-ia64.c mini-ia64.h mini.c inssel-long.brg: Optimize 
16814         multiplication by a constant.
16815
16816 2005-08-27  Zoltan Varga  <vargaz@gmail.com>
16817
16818         * mini-ia64.c (mono_arch_setup_jit_tls_data): Add support for intel
16819         icc.
16820
16821         * tramp-ia64.c (mono_arch_create_trampoline_code): Use st8.spill for
16822         saving registers.
16823
16824 Fri Aug 26 11:09:28 BST 2005 Paolo Molaro <lupus@ximian.com>
16825
16826         * inssel-arm.brg: apply changes tested by Brian Koropoff
16827         <briank@marakicorp.com>.
16828
16829 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
16830
16831         * mini-x86.c (mono_arch_emit_prolog): Fix calling of mono_jit_thread_attach () under windows.
16832         
16833 2005-08-24  Zoltan Varga  <vargaz@gmail.com>
16834
16835         * mini-codegen.c (mono_local_regalloc): Avoid allocating dreg and sreg1/2
16836         to the same register if dreg is just a base register.
16837         (print_ins): Improve printing of membase opcodes.
16838
16839         * inssel-x86.brg: Add optimized ldind(reg) rules.
16840
16841         * mini-x86.c cpu-pentium.md: Changes required to support the new rules.
16842
16843 Wed Aug 24 19:39:36 CEST 2005 Paolo Molaro <lupus@ximian.com>
16844
16845         * mini.c: when running under valgrind, set the stack bottom for
16846         the GC at the actual approximate stack for the app (fixes running
16847         mono with valgrind).
16848
16849 Tue Aug 23 21:38:50 CEST 2005 Paolo Molaro <lupus@ximian.com>
16850
16851         * mini.c: do no break at the first valuetype to init found
16852         (fixes bug #75791).
16853
16854 Tue Aug 23 16:53:21 BST 2005 Paolo Molaro <lupus@ximian.com>
16855
16856         * cpu-arm.md, mini-arm.c: more fixes and LMF support.
16857
16858 Tue Aug 23 15:11:44 CEST 2005 Paolo Molaro <lupus@ximian.com>
16859
16860         * cpu-g4.md: fixed instruction length exposed by the nemerle compiler.
16861
16862 2005-08-23  Zoltan Varga  <vargaz@freemail.hu>
16863
16864         * inssel-amd64.brg inssel-x86.brg: Fix the fcall rules.
16865
16866 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
16867
16868         * inssel-x86.brg: Fix assert in patch_delegate_trampoline.
16869
16870         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Add some debug
16871         code.
16872
16873         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Add some debug
16874         code.
16875
16876         * mini.c (optimize_branches): Don't quit after 1000 iterations on large
16877         methods.
16878
16879 Mon Aug 22 19:16:29 BST 2005 Paolo Molaro <lupus@ximian.com>
16880
16881         * tramp-arm.c: allocate less memory for the trampoline and fix typo.
16882
16883 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
16884
16885         * mini.c (mono_method_to_ir): Remove instructions inserted after a branch
16886         in the tail recursion optimization.
16887
16888         * mini.h helpers.c (mono_disassemble_code): Emit starts of basic blocks as 
16889         debug info into the assembly file.
16890
16891         * iltests.il: Add test for filter regions.
16892
16893         * mini.c (mono_method_to_ir): Fix handling of nested FILTER clauses. Fix
16894         initial stack of filter regions. Fixes #75755.
16895
16896 Mon Aug 22 17:49:16 BST 2005 Paolo Molaro <lupus@ximian.com>
16897
16898         * mini-arm.c, cpu-arm.c: fixes and support for methods with bigger
16899         stack requirements.
16900
16901 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
16902
16903         * mini.c (mono_create_delegate_trampoline): Fix memory leak. Put back
16904         the check for an already compiled method on non-ia64 platforms.
16905         (mono_create_jump_trampoline): Store the MonoJitInfo structure into the
16906         proper domain.
16907
16908         * mini-x86.h tramp-x86.c: Add support for delegate trampolines.
16909
16910         * inssel-x86.brg: Add some optimized call rules.
16911
16912 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
16913
16914         * mini.c (mono_create_delegate_trampoline): Do not return an already compiled
16915         method here.
16916
16917         * mini.h mini-trampolines.c: Pass the trampoline argument to 
16918         mono_arch_patch_delegate_trampoline.
16919
16920         * mini-ia64.h mini-ia64.c tramp-ia64.c: Add support for delegate trampolines.
16921
16922         * mini-trampolines.c: Fix build.
16923
16924         * mini-amd64.h: Add delegate trampolines.
16925
16926         * mini.h mini.c mini-trampolines.c tramp-amd64.c: Add delegate trampolines.
16927
16928         * inssel-amd64.brg: Add optimized call rules.
16929         
16930         * mini-ia64.c tramp-ia64.c: Improve instruction scheduling.
16931
16932         * inssel-ia64.brg: Add optimized ldind(reg) rules.
16933
16934 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
16935
16936         * mini.c (mono_create_class_init_trampoline): Fix bug caused by last
16937         change.
16938
16939         * mini-ia64.c: Remove LMF fixmes.
16940
16941         * mini-ia64.h: Remove most fields from LMF.
16942
16943         * inssel-ia64.brg (stmt): Fix unaligned access errors.
16944
16945         * mini-trampolines.c: Add support for IA64 function descriptors.
16946
16947         * mini.h mini.c jit-icalls.c exceptions-ia64.cdriver.c: Add support
16948         for IA64 function descriptors.
16949
16950 Sat Aug 20 16:51:44 BST 2005 Paolo Molaro <lupus@ximian.com>
16951
16952         * tramp-arm.c: patch the vtable for virtual calls. Added
16953         support code to register/unregister the LMF.
16954         * mini-arm.c, mini-arm.h: warning fixes, fixes, speedups,
16955         more LMF work.
16956
16957 2005-08-19  Dick Porter  <dick@ximian.com>
16958
16959         * mini.c: Use a gsize to store the thread ID, so it can hold a 64
16960         bit value if needed.
16961
16962 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
16963
16964         * mini.c (mini_get_method): Move handling of wrapper data here.
16965
16966         * mini.c (mono_method_to_ir): Add support for dynamic methods.
16967
16968         * mini.c (mono_method_to_ir): Convert nonvirtual calls to abstract methods into
16969         virtual.
16970
16971         * mini.c (mono_method_to_ir): Emit IR for CEE_NOP as well, so 
16972         bblock->code does not remain empty.
16973
16974 2005-08-17  Zoltan Varga  <vargaz@freemail.hu>
16975
16976         * arrays.cs: Add regression test for #75832.
16977
16978         * inssel-amd64.brg cpu-amd64.md mini-amd64.c: Fix LDELEMA optimization
16979         rules. Fixes #75832.
16980
16981         * mini-ia64.c tramp-ia64.c exceptions-ia64.c: Implement improved
16982         instruction scheduling.
16983
16984 2005-08-12  Zoltan Varga  <vargaz@freemail.hu>
16985
16986         * mini-exceptions.c (ves_icall_get_frame_info): Fix IA64 build.
16987
16988 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
16989
16990         * mini-exceptions.c mini-x86.h: Move VC stuff into macros in mini-x86.h.
16991
16992         * mini-codegen.c: Fix VC build.
16993
16994         * cpu-pentium.md: Increase length of atomic_exhange_i4.
16995
16996 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16997
16998         * mini.h: fix signature for mono_register_opcode_emulation.
16999
17000 2005-08-09  Zoltan Varga  <vargaz@freemail.hu>
17001
17002         * mini.c: Get rid of most of the helper_sig_... constants using
17003         mono_create_icall_signature ().
17004
17005 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
17006
17007         * jit-icalls.c (helper_ldstr): New helper function.
17008
17009         * mini.c (get_basic_blocks): Set out_of_line for bblocks containing a throw.
17010
17011         * mini.c (mono_method_to_ir): If an LDSTR instruction is in a bblock with a
17012         throw, load the string using a helper call instead of creating a string object.
17013
17014         * aot.c: Update after LDSTR changes.
17015
17016         * mini.h: Bump AOT file version.
17017         
17018         * aot.c: Save class size info into the AOT file. Print more statistics during
17019         compilation.
17020
17021         * mini.h: Bump AOT file version.
17022
17023         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
17024         ordering of disasm cases. Fixes #74957.
17025
17026 Thu Aug 4 19:47:24 BST 2005 Paolo Molaro <lupus@ximian.com>
17027
17028         * mini-ops.h, mini-arch.h, inssel.brg, mini.c, mini.h,
17029         jit-icalls.c, mini-codegen.c, Makefile.am: changes in
17030         the generic code needed for the ARM port.
17031
17032 Thu Aug 4 19:42:54 BST 2005 Paolo Molaro <lupus@ximian.com>
17033
17034         * exceptions-arm.c, tramp-arm.c, mini-arm.c, mini-arm.h, cpu-arm.md,
17035         inssel-arm.brg: more ARM features and fixes.
17036
17037 Mon Aug 1 18:37:38 BST 2005 Paolo Molaro <lupus@ximian.com>
17038
17039         * tramp-arm.c, mini-arm.c, cpu-arm.md, inssel-arm.brg: more
17040         ARM port work in progress.
17041
17042 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
17043
17044         * mini-ia64.c (mono_arch_call_opcode): Ongoing IA64 work.
17045
17046         * mini-exceptions.c mini-ia64.h: Ongoing IA64 work.
17047
17048         * mini-ia64.c (ia64_emit_bundle): Ongoing IA64 work.
17049
17050         * inssel.brg (mini_emit_memset): Add support for unaligned access.
17051
17052         * *-ia64.*: Ongoing IA64 work.
17053         
17054         * mini-ia64.c exceptions-ia64.c: Ongoing IA64 work.
17055
17056 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
17057
17058         * TODO: Remove out-of-data todo stuff.
17059
17060         * mini.h mini.c (mono_create_jit_trampoline_from_token): Remove some
17061         dead code.
17062
17063         * aot.c: Save/load MonoCachedClassInfo->has_nested_classes.
17064
17065         * mini.h: Bump corlib version.
17066
17067 2005-07-27  Martin Baulig  <martin@ximian.com>
17068
17069         * mini-codegen.c
17070         (create_copy_ins): Added `const unsigned char *ip' argument; set
17071         `copy->cil_code' from it.
17072
17073 2005-07-27  Martin Baulig  <martin@ximian.com>
17074
17075         * mini-exceptions.c (mono_handle_exception): Don't call
17076         mono_debugger_handle_exception() for filters.
17077
17078 2005-07-27  Zoltan Varga  <vargaz@freemail.hu>
17079
17080         * mini-trampolines.c (mono_aot_trampoline): Handle AppDomain:InvokeInDomain
17081         as well.
17082
17083 2005-07-26  Martin Baulig  <martin@ximian.com>
17084
17085         Committing a patch from Michal Moskal <michal.moskal@gmail.com>.
17086
17087         * mini.c (mono_method_to_ir): In `CEE_CALLI', only use
17088         helper_compile_generic_method() if the method is actually virtual
17089         and non-final.
17090
17091 2005-07-26  Martin Baulig  <martin@ximian.com>
17092
17093         * mini.c
17094         (trampoline_code): Renamed to `mono_trampoline_code' and made it
17095         public; this is now accessed directly by the debugger.
17096         (mono_generic_trampoline_code): Removed.
17097
17098         * debug-mini.c
17099         (mono_debug_init_method): Also add interncalls and wrappers.
17100
17101 2005-07-23  Zoltan Varga  <vargaz@freemail.hu>
17102
17103         * mini-ia64.c mini-ia64.h: Add support for tracing/profiling.
17104
17105 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
17106
17107         * aot.c (mono_aot_get_method_from_token): Fix a potential crash here.
17108
17109 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
17110
17111         * aot.c (load_patch_info): Fix handling of stfld_remote wrapper.
17112
17113 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
17114
17115         * mini-amd64.c (mono_arch_setup_jit_tls_data): Use the nice way of
17116         getting TLS offsets on AMD64 too.
17117
17118 2005-07-20  Kornel Pal <kornelpal@hotmail.com>
17119
17120         * driver.c: Detach console when executing IMAGE_SUBSYSTEM_WINDOWS_GUI on win32
17121
17122 Wed Jul 20 18:05:19 BST 2005 Paolo Molaro <lupus@ximian.com>
17123
17124         * exceptions-arm.c, mini-arm.c, tramp-arm.c, cpu-arm.md,
17125         inssel-arm.brg, mini-arm.h: ARM port work in progress.
17126
17127 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
17128
17129         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix build.
17130
17131         * mini.h mini.c mini-*.h tramp-*.c: Move more cross platform trampoline code
17132         to mini.c.
17133
17134         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Call 
17135         mono_sparc_is_virtual_call ().
17136         
17137         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix warning.
17138
17139         * tramp-sparc.c (mono_arch_create_trampoline_code): Fix order of
17140         trampoline parameters.
17141
17142         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix signature.
17143         
17144         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Rename this
17145         to mono_arch_get_vcall_slot_addr.
17146
17147         * Makefile.am tramp-sparc.c: Update the sparc port to use the generic
17148         trampoline code.
17149
17150         * *-sparc.*: Merge the mini-xp-regalloc branch for sparc.
17151
17152 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
17153
17154         * mini-ia64.h mini-ia64.c: Finish pinvoke support.
17155
17156 2005-07-19  Martin Baulig  <martin@ximian.com>
17157
17158         * exceptions-amd64.c (throw_exception): Call
17159         mono_debugger_throw_exception() here like we're doing it on i386.
17160
17161 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
17162
17163         * mini-ia64.c: Add optimized TLS access support.
17164
17165 2005-07-18  Zoltan Varga  <vargaz@freemail.hu>
17166
17167         * mini-exceptions.c: Ongoing IA64 work.
17168
17169         * mini-ia64.c inssel-long.brg: Ongoing IA64 work.
17170
17171         * mini.c: Use the default optimization set when embedding. Fixes
17172         #75194.
17173
17174 2005-07-11  Zoltan Varga  <vargaz@freemail.hu>
17175
17176         * tramp-amd64.c tramp-ia64.c Makefile.am: Move arch independent parts 
17177         of trampolines to a separate file.
17178
17179         * mini-trampolines.c: New file.
17180
17181         * mini.h tramp-x86.c: Move arch independent parts of trampolines to a 
17182         separate file.
17183         
17184         * tramp-x86.c: Reorganize the trampoline code to be similar to the 
17185         amd64/ia64 code.
17186
17187         * mini-codegen.c: Fix cygwin build.
17188
17189 2005-07-10  Zoltan Varga  <vargaz@freemail.hu>
17190
17191         * mini.c: Add some minor changes needed by the IA64 port.
17192
17193         * *-ia64.*: Ongoing IA64 work.
17194
17195 2005-07-09  Zoltan Varga  <vargaz@freemail.hu>
17196
17197         * tramp-amd64.c mini-amd64.c: Update after latest AOT changes. Split 
17198         trampolines into arch-independent and arch-dependent parts.
17199
17200         * mini-amd64.c (mono_arch_lowering_pass): Fix store_membase_imm -> store_membase_reg rule.
17201
17202 2005-07-08  Zoltan Varga  <vargaz@freemail.hu>
17203
17204         * cpu-amd64.md: Merge the xp-regalloc-branch for amd64.
17205
17206         * mini-ops.h mini-amd64.h mini-amd64.c inssel-amd64.brg Makefile.am: Merge
17207         the xp-regalloc-branch for amd64.
17208
17209         * mini-x86.h mini-x86.c cpu-pentium.md Makefile.am: Merge the
17210         xp-regalloc-branch for x86.
17211
17212 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
17213
17214         * inssel.brg (OP_THROW_OR_NULL): Allways rethrow the abort exception.
17215
17216 2005-07-06  Martin Baulig  <martin@ximian.com>
17217
17218         * mini.c
17219         (mono_jit_compile_method_inner): Call mono_get_inflated_method().
17220         (mono_jit_runtime_invoke): Likewise.
17221
17222 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
17223
17224         * aot.c (mono_compile_assembly): Allocate the GOT in the .bss segment
17225         on x86 too.
17226         
17227         * aot.c: Add new mono_aot_get_method_from_token () function to load AOT methods
17228         without loading their metadata. Reorganize the file format so exception handling+
17229         debug info is kept separate from normal method info. Create MonoJitInfo 
17230         structures for methods lazily.
17231
17232         * tramp-x86.c (x86_aot_trampoline): Use the new from_token method to avoid
17233         loading metadata.
17234         (x86_class_init_trampoline): Patch AOT class init trampolines too.
17235
17236         * mini.c (mini_init): Install the new mono_aot_find_jit_info hook.
17237
17238         * mini.c (mono_method_to_ir): Reduce the number of class init trampoline calls
17239         in AOT code.
17240
17241         * mini.h: Bump AOT file version.
17242
17243 2005-07-04  Zoltan Varga  <vargaz@freemail.hu>
17244
17245         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
17246
17247 2005-07-01  Raja R Harinath  <rharinath@novell.com>
17248
17249         * Makefile.am (check-local): Call semdel-wrapper.
17250
17251 2005-06-29  Zoltan Varga  <vargaz@freemail.hu>
17252
17253         * mini-x86.c: Revert the last change as it seems to break the build..
17254
17255 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
17256
17257         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
17258         
17259         * mini-x86.c (mono_arch_cpu_init): Fix setting of fp precision in the VC build.
17260
17261 2005-06-27  Ben Maurer  <bmaurer@ximian.com>
17262
17263         * mini.c (NEW_AOTCONST): make sure to call mono_get_got_var
17264         outside of the macro, so strange stuff doesn't happen with gcc4
17265         (NEW_AOTCONST_TOKEN): Likewise.
17266
17267 2005-06-28  Martin Baulig  <martin@ximian.com>
17268
17269         * mini.c (mini_class_is_system_array): New static method; use this
17270         instead of `klass->parent == mono_defaults.array_class' everywhere
17271         since this also works for the new generic array class.
17272
17273 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
17274
17275         * inssel.brg: Remove warnings.
17276
17277 2005-06-24  Zoltan Varga  <vargaz@freemail.hu>
17278
17279         * mini-ia64.c: Ongoing IA64 work.
17280
17281         * basic-float.cs: Add float->i1 conversion test.
17282
17283         * iltests.il: Add conv.u4 test.
17284
17285 2005-06-23  Zoltan Varga  <vargaz@freemail.hu>
17286
17287         * inssel-long.brg: Fix bug caused by last change.
17288
17289 2005-06-23  Geoff Norton  <gnorton@customerdna.com>
17290
17291         * mini-x86.h: Add __APPLE__ to the SC_* redefines with the other 
17292         BSDs.  Allows the x86 JIT to work on OSX86
17293
17294 2005-06-22  Zoltan Varga  <vargaz@freemail.hu>
17295
17296         * inssel-long.brg: Use OP_LSHR_UN_IMM instead of OP_SHR_UN_IMM in
17297         u4->i8 conversion.
17298
17299         * mini-ia64.c: Ongoing IA64 work.
17300
17301 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
17302
17303         * mini-ia64.c: Ongoing IA64 work.
17304
17305         * driver.c: Clean up jit_code_hash as well when using --regression.
17306
17307         * inssel-long.brg: Fix long->i4/u4 conversion rules.
17308
17309         * basic-long.cs: Add tests for long->u4 conversion.
17310
17311 2005-06-18  Ben Maurer  <bmaurer@ximian.com>
17312
17313         * mini.c: Take mono_get_domainvar out of macros. This makes sure
17314         that we do not depend on undefined C behavior: the order stuff
17315         gets evaluated within an expression. Fixes mono when compiled on
17316         GCC 4.
17317
17318 2005-06-18  Zoltan Varga  <vargaz@freemail.hu>
17319
17320         * *-ia64.*: Ongoing IA64 work.
17321
17322         * aot.c: Lower memory usage while loading AOT methods.
17323
17324         * tramp-x86.c: Avoid allocating+freeing MonoJitInfo structures.
17325
17326         * mini.h: Bump AOT file format version.
17327
17328 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
17329
17330         * mini.c (mono_method_to_ir): Allow STACK_PTR as input to SWITCH.
17331
17332 2005-06-16  Sebastien Pouliot  <sebastien@ximian.com>
17333
17334         * declsec.c: Fixed APTC to check for FullTrust on caller assembly (and
17335         not on callee assembly). Fixed some comments.
17336
17337 2005-06-16  Zoltan Varga  <vargaz@freemail.hu>
17338
17339         * aot.c (mono_compile_assembly): Mark the "methods" symbol as a function so
17340         it gets proper disassembly.
17341         (emit_method_info): Remove some dead code.
17342
17343         * mini.c (mini_method_compile): Allways allocate the GOT var in
17344         mono_method_to_ir for emulating opcodes.
17345
17346 2005-06-13  Zoltan Varga  <vargaz@freemail.hu>
17347
17348         * mini.c (mono_jit_free_method): Remove the method from the JitInfo table
17349         before freeing the code memory. Fixes #74990.
17350
17351         * objects.cs: Add regression test for #74992.
17352
17353         * liveness.c: Extend live ranges of arguments to the beginning of the
17354         method. Fixes #74992.
17355
17356         * exceptions-ia64.c mini-ia64.h: Modify ip during exception handling
17357         so it points into the faulting instruction.
17358
17359 2005-06-12  Zoltan Varga  <vargaz@freemail.hu>
17360
17361         * jit-icalls.c (mono_imul_ovf): Add exception handling.
17362
17363         * *-ia64.*: Ongoing IA64 work.
17364
17365         * mini.c (mini_init): Fix signature of mono_delegate_ctor.
17366
17367 2005-06-11  Zoltan Varga  <vargaz@freemail.hu>
17368
17369         * mini-ia64.h exceptions-ia64.c: Ongoing IA64 work.
17370
17371         * *-ia64.*: Ongoing IA64 work.
17372
17373 2005-06-10  Zoltan Varga  <vargaz@freemail.hu>
17374
17375         * basic-long.cs: Add tests for add/sub.ovf.
17376
17377         * basic.cs: Add tests for sub.ovf.
17378
17379         * *-ia64.*: Ongoing IA64 work.
17380
17381 2005-06-09  Zoltan Varga  <vargaz@freemail.hu>
17382
17383         * *-ia64.*: Ongoing IA64 work.
17384
17385         * basic.cs: Add conv.ovf.i4.un test.
17386
17387 2005-06-09  Massimiliano Mantione  <massi@ximian.com>
17388
17389         * mini.c: (remove_block_if_useless) Fixed bug 75061.
17390         
17391 2005-06-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17392
17393         * mini.c: no SIGUSR2 on windows. Remove it for PLATFORM_WIN32.
17394
17395 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
17396
17397         * *-ia64.*: Ongoing IA64 work.
17398
17399 2005-06-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17400
17401         * trace.[ch]:
17402         * mini.c: added the ability to toggle trace on/off using SIGUSR2.
17403
17404 2005-06-04  Zoltan Varga  <vargaz@freemail.hu>
17405
17406         * mini-ia64.c mini-ia64.h: Fix cleanup of memory stack.
17407
17408 2005-06-03  Zoltan Varga  <vargaz@freemail.hu>
17409
17410         * mini-amd64.c (emit_call): Fix yet another bug in the near call optimization.
17411
17412         * mini-amd64.c (amd64_patch): Add an assert to check that the destination
17413         of a call is callable by a near call.
17414
17415 2005-05-31  Zoltan Varga  <vargaz@freemail.hu>
17416
17417         * mini-ia64.c: Ongoing IA64 work.
17418
17419 2005-05-29  Zoltan Varga  <vargaz@freemail.hu>
17420
17421         * genmdesc.c: Make the generated array non-static.
17422
17423         * inssel-long.brg: Fix LSHR_IMM rule.
17424
17425         * *-ia64.*: Ongoing IA64 work.
17426
17427         * *-ia64.*: Ongoing IA64 work.
17428
17429 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
17430
17431         * *-ia64.*: Ongoing IA64 work.
17432
17433         * *-ia64.*: Ongoing IA64 work.
17434         
17435         * mini-ia64.c: Ongoing IA64 work.
17436
17437         * *-ia64.* jit-icalls.c mini-codegen.c: Ongoing IA64 work.
17438
17439 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
17440
17441         * objects.cs basic-calls.cs: Move some tests to objects.cs.
17442         
17443         * objects.cs basic-long.cs: Move some tests to objects.cs.
17444
17445 2005-05-26  Zoltan Varga  <vargaz@freemail.hu>
17446
17447         * *-ia64.*: Ongoing IA64 work.
17448
17449         * iltests.il: Add a new test.
17450
17451         * mini.c (mono_method_to_ir): Initialize valuetypes when created using
17452         newobj. Fixes #75042.
17453
17454 2005-05-22  Zoltan Varga  <vargaz@freemail.hu>
17455
17456         * *-ia64.*: Ongoing IA64 work.
17457         
17458         * *-ia64.*: Ongoing IA64 work.
17459         
17460         * *-ia64.*: Ongoing IA64 work.
17461
17462         * basic.cs objects.cs: Move tests accessing static variables as well.
17463
17464         * basic.cs objects.cs: Move test_0_pin_string to objects.cs.
17465
17466 2005-05-21  Zoltan Varga  <vargaz@freemail.hu>
17467
17468         * mini.c (SIG_HANDLER_SIGNATURE): Fix warning.
17469
17470         * driver.c: Always print failed tests.
17471
17472         * mini-codegen.c: Use cfg->frame_reg instead of a macro for the
17473         frame pointer.
17474
17475         * *ia64*: Ongoing IA64 work.
17476
17477 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
17478
17479         * basic.cs: Add tests for add.ovf. Fix warnings.
17480
17481 2005-05-18  Miguel de Icaza  <miguel@novell.com>
17482
17483         * driver.c (mono_main): Avoid crash if no argument is passed to
17484         --break;  Do not use g_error, but f_printf.   And fix all other
17485         ocurrences of the same crash.
17486
17487 2005-05-17  Zoltan Varga  <vargaz@freemail.hu>
17488
17489         * mini.h mini.c: Generalize the existing uses of the MONO_DEBUG env variable
17490         and add a new one: aborting when a SIGSEGV is raised while in unmanaged code.
17491         Fixes #74742.
17492
17493 2005-05-14  Zoltan Varga  <vargaz@freemail.hu>
17494
17495         * *-ia64.*: Add beginnings of IA64 backend.
17496
17497         * Makefile.am mini-arch.h mini-codegen.c: Add IA64 support.     
17498
17499 2005-05-13  Zoltan Varga  <vargaz@freemail.hu>
17500
17501         * inssel-long.brg: Add missing ulong->{i1, i2} checked conversions.
17502         Fixes #74925.
17503
17504         * basic-long.cs exceptions.cs: Add new tests. Fix some warnings.
17505
17506         * mini-amd64.c: Fix a warning.
17507
17508 2005-05-10  Zoltan Varga  <vargaz@freemail.hu>
17509
17510         * mini-amd64.c (mono_arch_output_basic_block): Fix stack space leakage
17511         in float_neg. Fixes #74897.
17512
17513         * mini-amd64.c (emit_call): Fix another near call bug.
17514
17515 2005-05-06  Sebastien Pouliot  <sebastien@ximian.com>
17516
17517         * declsec.c: Keep the appdomain information in the structure. Added a 
17518         missing "return FALSE" for Unmanaged if FullTrust is set (or else the
17519         value gets overwritten).
17520         * declsec.h: Set the default MonoArray for the the stack to 6. Added
17521         an MonoAppDomain member to MonoSecurityFrame.
17522         * mini-exceptions.c: Do not use a glist to keep GC allocated objects
17523         used in the stack walk. Now use a MonoArray which grow (double) when
17524         it gets full.
17525
17526 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
17527
17528         * mini.c: Re-enabled runtime cleanup, since running threads should
17529         now properly stop when exiting.
17530
17531 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
17532
17533         * mini-codegen.c: New file contaning the arch-independent local
17534         register allocator. Not used by any architectures yet.
17535
17536         * mini.h linear-scan.c: Merge some changes from the 
17537         mini-xp-local-regalloc branch.
17538
17539 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
17540
17541         * mini-amd64.c (emit_call): Fix calls to native functions when the
17542         runtime is compiled as a shared library. Fixes #74756.
17543
17544         * mini.c (mono_method_to_ir): Assert if ldsfld and friends are used
17545         on a literal field. Fixes #74751.
17546
17547 2005-04-25  Raja R Harinath  <rharinath@novell.com>
17548
17549         * Makefile.am (RUNTIME): Add MONO_CFG_DIR.
17550
17551 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
17552
17553         * objects.cs: Add missing null casting test.
17554
17555 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
17556
17557         * mini-exceptions.c (mono_find_jit_info): Fix native offset calculation
17558         in wrapper methods. Also rename 'address' variable to 'offset'.
17559
17560 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
17561
17562         * mini.c debug-mini.c aot.c tramp-x86.c driver.c: Fix some gcc 4.0
17563         warnings.
17564         
17565         * Makefile.am (MCS): Use -unsafe instead of --unsafe.
17566
17567         * aot.c: Applied patch from "The Software Team" <software@solmersa.com>. Make AOT compilation
17568         work on windows.
17569
17570 Mon Apr 18 16:20:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
17571
17572         * exceptions-ppc.c: update code to handle stack traces (fixes bug #74452).
17573
17574 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
17575
17576         * mini-x86.c (mono_emit_stack_alloc): Initialize the whole allocated area not
17577         just the last bytes.
17578
17579 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
17580
17581         * aot.c (mono_compile_assembly): Fix warning.
17582
17583         * mini-exceptions.c (ves_icall_get_frame_info): Fix bug introduced
17584         by the _MSC_VER stuff.
17585
17586 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
17587
17588         * inssel-long.brg: Fix #74588.
17589
17590         * cpu-amd64.md: Fix #74591.
17591
17592         * iltests.il: Add new regression tests.
17593
17594 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
17595
17596         * trace.c (mono_trace_enter_method): Print enums as an int, not as a
17597         valuetype.
17598
17599 2005-04-11  Zoltan Varga  <vargaz@freemail.hu>
17600
17601         * mini-x86.c (setup_stack): Unconditionally call pthread_attr_init ().
17602
17603         * exceptions-x86.c mini-x86.h mini-x86.c: Applied some freebsd patches 
17604         from Bill Middleton <flashdict@gmail.com>.
17605
17606 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
17607
17608         * arrays.cs: Add new regression test. Fix warnings.
17609
17610 2005-04-09  Zoltan Varga  <vargaz@freemail.hu>
17611
17612         * mini-amd64.c (mono_arch_output_basic_block): Fix stack alignment
17613         and leakage in CKFINITE.
17614
17615         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Change
17616         this to a null op since it is called on amd64 too.
17617
17618         * exceptions-amd64.c (get_throw_trampoline): Align stack.
17619
17620         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Remove
17621         body since this is not used on amd64.
17622         
17623         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Remove duplicate define.
17624
17625         * mini-amd64.c: Remove obsolete fixmes.
17626
17627         * mini.c (print_method_from_ip): Fix debugging support.
17628
17629 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
17630
17631         * ssapre.c: Fix a subtle bug about availability, and limit SSAPRE
17632         so that expressions that don't give much gain are not reduced.
17633         * ssapre.h: Likewise.
17634
17635 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
17636
17637         * exceptions-x86.c (mono_arch_find_jit_info): Remove last SC_EBP reference.
17638
17639         * mini-x86.c (mono_emit_stack_alloc): Fix localloc under windows.
17640
17641         * mini-x86.h exceptions-x86.c: Hopefully fix compilation on *BSD.
17642
17643 2005-04-01  Zoltan Varga  <vargaz@freemail.hu>
17644
17645         * mini-sparc.c mini-sparc.h: Add asserts when running with sigaltstack.
17646
17647         * exceptions-x86.c (mono_arch_monoctx_to_sigctx): Fix cygwin build.
17648
17649 2005-03-31  Zoltan Varga  <vargaz@freemail.hu>
17650
17651         * mini-x86.c: If sigaltstack support is enabled, perform win32 style
17652         stack touching.
17653
17654         * mini.h (mono_arch_sigctx_to_monoctx): New arch-specific function.
17655
17656         * mini.h (mono_arch_monoctx_to_sigctx): New arch-specific function.
17657
17658         * mini.c: sigaltstack support requires MONO_ARCH_USE_SIGACTION.
17659
17660         * mini-x86.h mini-x86.c exceptions-x86.c: Add support for 
17661         MONO_ARCH_USE_SIGACTION. Fixes #74252.
17662
17663         * mini-x86.h: Enable MONO_ARCH_USE_SIGACTION on linux.
17664
17665         * mini-x86.c: Fix up stack overflow handling.   
17666
17667         * exceptions.cs: Add new regression test.
17668
17669 2005-03-30  Zoltan Varga  <vargaz@freemail.hu>
17670
17671         * mini-x86.c (mono_arch_emit_prolog): Adjust stack after calls to
17672         mono_jit_thread_attach.
17673
17674         * mini.c (mono_method_to_ir): Verify called method is not abstract.
17675
17676 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
17677
17678         * mini.c (mono_method_to_ir): Applied Ben's patch from bug #61441 to
17679         avoid calling constructors using callvirt.
17680
17681         * inssel.brg: Fix #74073.
17682
17683 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
17684
17685         * aot.c, mini.h: Added mono-compiler.h header to allow/ease 
17686         compilation with non-GCC compilers.
17687         * mini-exceptions.c, mini-x86.c|h: Patches to make compilation of mono
17688         possible using VS.NET. Adapted from the work of J Lothian (for VC6).
17689
17690 Tue Mar 29 11:43:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
17691
17692         * inssel.brg, arrays.cs: fix long standing 64 bit issue in access to
17693         klass->interface_offsets (will likely fix bug#74073).
17694
17695 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
17696
17697         * mini-amd64.c (mono_arch_is_int_overflow): Fix rex handling.
17698
17699 2005-03-28  Zoltan Varga  <vargaz@freemail.hu>
17700
17701         * mini-amd64.c (mono_arch_output_basic_block): Fix order of parameters
17702         to amd64_div_reg_size ().
17703         
17704         * mini-amd64.c (mono_arch_emit_exceptions): Emit a near call here too.
17705
17706 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
17707
17708         * cpu-amd64.md (store_membase_reg): Fix length of storer8 opcodes.
17709
17710 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
17711
17712         * driver.c: Turn off automatic command line globbing under windows. Fixes #73763.
17713
17714 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
17715
17716         * mini.c (mono_method_to_ir): Remove debugging stuff left in by mistake.
17717         
17718         * mini.c (mono_precompile_assembly): Load and precompile referenced
17719         assemblies as well. Fixes #74015.
17720
17721 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
17722
17723         * cpu-amd64.md (sin): Fix up maximum lengths of some opcodes.
17724
17725 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
17726
17727         * declsec.c: Skip linkdemand checks for intra-corlib calls. This skips
17728         a lot of checks and (anyway) permissions cannot work until corlib is 
17729         loaded.
17730
17731 Wed Mar 23 14:29:49 CET 2005 Paolo Molaro <lupus@ximian.com>
17732
17733         * mini-ppc.c: fixed ABI issue on sysv/ppc.
17734
17735 Tue Mar 22 19:03:17 CET 2005 Paolo Molaro <lupus@ximian.com>
17736
17737         * tramp-ppc.c, exceptions-ppc.c: added missing icache flush
17738         calls (fixes bug#72824).
17739
17740 Tue Mar 22 16:28:48 CET 2005 Paolo Molaro <lupus@ximian.com>
17741
17742         * mini.c: fix tail recursion elimination (see test in bug#73936).
17743
17744 2005-03-21  Zoltan Varga  <vargaz@freemail.hu>
17745
17746         * mini-amd64.c (mono_arch_output_basic_block): Add inline versions of
17747         some fp functions in sse2 mode.
17748
17749 2005-03-20  Zoltan Varga  <vargaz@freemail.hu>
17750
17751         * mini-x86.c (emit_tls_get): Move tls handling into a separate helper function.
17752
17753 2005-03-19  Zoltan Varga  <vargaz@freemail.hu>
17754
17755         * mini.h mini.c: Add mono_get_jit_tls_key ().
17756
17757         * mini-x86.c: Enable fast TLS support on windows.
17758
17759 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
17760
17761         * declsec.c: Renamed aptc to allowpartiallytrustedcallers.
17762         * mini.c: Check for p/invoke method when generating code. If a
17763         p/invoke method, or it's class, isn't decorated with [Suppress
17764         UnmanagedCodeSecurity] then generate code to call System.Security.
17765         UnmanagedDemand (only if the security manager is active).
17766
17767 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
17768
17769         * tramp-amd64.c (create_specific_trampoline): Revert parts of the 
17770         last change as it seems to cause strange crashes.
17771         
17772 Wed Mar 16 16:24:11 CET 2005 Paolo Molaro <lupus@ximian.com>
17773
17774         * *.c: handle unsafe function pointers where needed.
17775
17776 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
17777
17778         * mini.c (mono_jit_free_method): Remove the fixme too.
17779
17780 2005-03-15  Miguel de Icaza  <miguel@novell.com>
17781
17782         * mini.c: As discussed, make the code actually free the delegate
17783         thunk now, to enable the debugging of delegate problems, use
17784         MONO_DEBUG=1 when running Mono. 
17785
17786         This takes also care of parts of the leaks as seen by Joe.
17787
17788 2005-03-15  Zoltan Varga  <vargaz@freemail.hu>
17789
17790         * mini-amd64.c (mono_arch_setup_jit_tls_data): Enable 
17791         thread_tls_offset calculation.
17792
17793 2005-03-14  Sebastien Pouliot  <sebastien@ximian.com>
17794
17795         * declsec.c: Reworked linkdemand checks for icall. The previous code
17796         was using the declaration code (untrusted) and didn't work as expected
17797         with the CLR 2.0. We're now more compatible with 2.0 than 1.x for this
17798         specific case.
17799
17800 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
17801
17802         * iltests.il: Add new localloc test.
17803
17804         * mini-amd64.c: Handle large stack allocations the same way as on
17805         windows if stack overflow handling is working.
17806         
17807         * mini-amd64.c: Allocate the signal stack using mmap.
17808
17809         * mini.c (sigsegv_signal_handler): Fix reading of context.
17810
17811         * mini-exceptions.c: Fix up stack overflow handling.
17812
17813         * mini-amd64.h mini-amd64.c: Fix up stack overflow handling.
17814
17815         * tramp-amd64.c (create_specific_trampoline): Optimize trampoline size.
17816
17817         * exceptions-amd64.c (mono_amd64_exceptions_init): Remove this.
17818
17819         * mini.h mini.c tramp-*.c: Move common trampoline code to mini.c.
17820
17821         * mini-x86.h mini-x86.c mini-amd64.h mini-amd64.c: Get rid of the
17822         tramp_init functions as they are no longer needed.
17823
17824 2005-03-12  Zoltan Varga  <vargaz@freemail.hu>
17825
17826         * tramp-amd64.c (mono_amd64_tramp_init): Fix typo.
17827         
17828         * tramp-amd64.c (mono_amd64_tramp_init): Init AOT trampoline as well.
17829
17830         * mini-amd64.h mini-amd64.c (mono_amd64_exceptions_init): Remove this.
17831         
17832         * mini.c mini-*.h: Remove OUT_OF_LINE_BBLOCK defines since all arches
17833         support that now.
17834
17835         * mini-ops.h: Add OP_LMUL_IMM.
17836
17837         * mini.c jit-icalls.cmini-amd64.h mini-amd64.c cpu-amd64.md: Implement
17838         long mul/div opcodes as intrinsic.
17839
17840         * mini-amd64.c (emit_call): Handle the case when the callee might be
17841         an AOT method.
17842
17843 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
17844
17845         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Reorder cases to be
17846         extra safe.
17847         
17848         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Fix ordering of cases.
17849
17850         * aot.c (mono_aot_load_method): Get rid of bogus make_writable call.
17851
17852 2005-03-09  Ben Maurer  <bmaurer@ximian.com>
17853
17854         * mini.c (mono_codegen): Don't leak here, to help people running
17855         monogrind.
17856
17857 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
17858
17859         * mini-amd64.c (mono_arch_output_basic_block): Fix int->float 
17860         conversions in sse2 mode.
17861
17862         * basic-float.cs: Add regression test.
17863         
17864         * mini-amd64.c: Reenable sse2.
17865
17866 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
17867
17868         * mini-amd64.c: Disable sse2 until some regressions are fixed.
17869
17870 2005-03-07      Joerg Rosenkranz <joergr@voelcker.com>
17871
17872         * driver.c: Copyright text should include 2005.
17873         
17874 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
17875
17876         * cpu-amd64.md (load_membase): Fix more max lengths.
17877
17878 2005-03-06  Zoltan Varga  <vargaz@freemail.hu>
17879
17880         * cpu-amd64.md (load_membase): Fix max length.
17881
17882         * mini-ops.h: Add OP_F<xx>_MEMBASE opcodes.
17883
17884         * inssel.brg: Add MONO_EMIT_BIALU_MEMBASE macro.
17885
17886         * cpu-amd64.md inssel-amd64.brg mini-amd64.h mini-amd64.brg: Finish SSE2
17887         support and enable it by default. Also add OP_F<xxx>_MEMBASE opcodes.
17888
17889         * basic-float.cs: Add rounding regression test.
17890
17891         * mini-amd64.c (INST_IGNORES_CFLAGS): Add more instructions.
17892
17893 2005-03-04  Neale Ferguson <NealeFerguson@earthlink.net>
17894
17895         * inssel-s390.brg, mini-s390.c: Add support for passing/returning small
17896         structures in registers for pinvoke wrappers.
17897
17898 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
17899
17900         * mini-exceptions.c (ves_icall_get_trace): Return wrapper info as well.
17901
17902 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
17903
17904         * mini.h mini.c mini-x86.c: Pass the domain of the native->managed
17905         wrapper to mono_jit_thread_attach.
17906
17907         * mini.c (mini_jit_thread_attach): New jit icall.
17908
17909         * mini-x86.c (mono_arch_emit_prolog): Attach to the VM in 
17910         native->managed wrappers.
17911
17912         * exceptions.cs: Add new regression test.
17913
17914         * mini.c (optimize_branches): Check regions in the cbranch to throw
17915         block case as well. Fixes #73242.
17916
17917 Tue Mar 1 18:35:27 CET 2005 Paolo Molaro <lupus@ximian.com>
17918
17919         * mini.c: thread safety fixes.
17920
17921 2005-02-27  Zoltan Varga  <vargaz@freemail.hu>
17922
17923         * tramp-amd64.c (amd64_magic_trampoline): Disable the method_ptr
17924         patching stuff, since delegates use jump trampolines so there is
17925         no caller.
17926
17927         * tramp-amd64.c (create_trampoline_code): Pass NULL as 'code' in 
17928         jump trampolines.
17929         
17930         * tramp-amd64.c: Fix build.
17931
17932         * mini-x86.c tramp-x86.c: Moved get_vtable_slot_addr into mini-x86.c and rename
17933         it to mono_arch_.... Add get_delegate_method_ptr implementation for x86.
17934
17935         * mini-amd64.h mini.h mini-amd64.c tramp-amd64.c (mono_amd64_get_vcall_slot_addr):
17936         Rename this to mono_arch....
17937         (mono_amd64_get_delegate_method_ptr_addr): Ditto.
17938
17939         * mini-amd64.c (mono_amd64_get_delegate_method_ptr_addr): New helper function.
17940
17941         * mini-amd64.c (emit_call): If both the caller and the callee is
17942         guaranteed to have 32 bit addresses, emit a normal call.
17943
17944         * tramp-amd64.c: Adapt to changes in mini-amd64.c.
17945
17946         * tramp-amd64.c (amd64_magic_trampoline): Remove patching of trampolines. 
17947         * tramp-amd64.c (amd64_magic_trampoline): Add support for patching the
17948         method_ptr inside delegates.
17949
17950 2005-02-26  Zoltan Varga  <vargaz@freemail.hu>
17951
17952         * mini.c (mono_jit_free_method): Free the method info even if the native code is
17953         invalidated. Fixes #73001.
17954
17955         * mini.c: Add a proper icall wrapper for mono_delegate_ctor.
17956
17957         * mini-x86.c: Only use stdcall for pinvokes on windows.
17958
17959 Thu Feb 24 15:22:30 CET 2005 Paolo Molaro <lupus@ximian.com>
17960
17961         * mini.c, mini.h: make mono_lmf_addr a fast-access thread var.
17962         * mini-x86.c: remove unreliable __thread var offset detection,
17963         use the correct accessors and enable by default.
17964
17965 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
17966
17967         * mini.c (mono_jit_free_method): Fix memory leak.
17968
17969 2005-02-22  Zoltan Varga  <vargaz@freemail.hu>
17970
17971         * mini.c (mono_method_to_ir): Allocate a GOT var for THROW and RETHROW. 
17972
17973 2005-02-21  Zoltan Varga  <vargaz@freemail.hu>
17974
17975         * cpu-amd64.md: Fix lengths of atomic opcodes.
17976
17977 Mon Feb 21 16:52:20 CET 2005 Paolo Molaro <lupus@ximian.com>
17978
17979         * driver.c: try to not imply using ICU is any good.
17980
17981 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
17982
17983         * mini-amd64.c (mono_arch_get_inst_for_method): Implement more 
17984         functions as inline ops.
17985
17986         * mini-ops.h inssel-amd64.brg cpu-amd64.md mini-amd64.c: Implement
17987         some Interlocked functions as inline ops.
17988
17989         * mini.c (move_basic_block_to_end): Fix bug in last patch.
17990
17991         * mini.h (MonoBasicBlock): Reorganize fields a bit.
17992
17993         * mini-ops.h inssel.brg: Add OP_NOT_REACHED.
17994
17995         * mini.c: Add support for OP_NOT_TAKEN.
17996
17997         * mini-amd64.h mini-amd64.c: Add support for passing/returning small 
17998         structures in registers for pinvoke wrappers.
17999
18000         * mini-amd64.c: Fix warnings.
18001
18002 2005-02-19  Zoltan Varga  <vargaz@freemail.hu>
18003
18004         * mini.h (MonoCompile): Add 'ret_var_is_local' field.
18005
18006         * mini.h mini.c (mono_arch_create_vars): Add new arch specific hook.
18007
18008         * mini.c (NEW_RETLOADA): If the ret variable is a local, use its 
18009         address instead of loading the address from it.
18010
18011         * mini-x86.c: Add support for returning small structs in registers
18012         on Win32. Fixes part of #70864.
18013         
18014 2005-02-18  Zoltan Varga  <vargaz@freemail.hu>
18015
18016         * trace.c (get_token): Improve error checking.
18017
18018 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
18019
18020         * jit-icalls.c (mono_ldvirtfn): Explicitly check for a NULL obj here.
18021
18022 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com> 
18023  
18024         * mini.h: Moved MONO_EXCEPTION_* enum to metadata/class-internals.h so
18025         it can be reused for MonoClass.
18026         * mini.c: Renamed MONO_EXCEPTION_SECURITY to MONO_EXCEPTION_SECURITY
18027         _LINKDEMAND.
18028
18029 2005-02-15  Sebastien Pouliot  <sebastien@ximian.com>
18030
18031         * mini.c: Fixed 2 cases where I sent a MonoMethod to managed code 
18032         instead of a MonoReflectionMethod. The method information wasn't used
18033         when displaying SecurityException details (but will be now).
18034
18035 2005-02-15  Atsushi Enomoto  <atsushi@ximian.com>
18036
18037         * Makefile.am : windows build fix.
18038
18039 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
18040
18041         * iltests.il: Add new regression test.
18042
18043         * mini.c (mono_method_to_ir): Allocate a GOT var in CEE_NEWOBJ. Fixes
18044         #72522.
18045
18046 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com> 
18047  
18048         * mini.c: Moved linkdemand check into helper function check_linkdemand
18049         to allow reuse for all intructions (CALL, CALLVIRT, NEWOBJ, JMP, 
18050         LDFTN, LDVIRTFTN).
18051
18052 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com>
18053
18054         * declsec.c: Added statistics counter for different kinds of 
18055         LinkDemands.
18056         * mini.h: Added CAS statistic counters to MonoJitStats. Removed unused
18057         (and commented) declaration.
18058         * mini.c: Added statistics counter for security Demand code 
18059         generation. Added display of security statistics.
18060
18061 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
18062
18063         * declsec.c (mono_declsec_linkdemand_aptc): Applied patch from Robert Jordan (robertj@gmx.net).
18064         Fix compilation errors under gcc-2.95.
18065
18066 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
18067
18068         * mini.c, driver.c: Use the new jit trampoline hashtable
18069
18070 Fri Feb 11 18:47:11 CET 2005 Paolo Molaro <lupus@ximian.com>
18071
18072         * mini.c, jit-icalls.c: use the managed implementation of memcpy, too.
18073
18074 2005-02-11  Martin Baulig  <martin@ximian.com>
18075
18076         * debug-mini.c (mono_debug_close_method): Free the line number array.
18077
18078 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
18079
18080         * aot.c: Break up large methods into smaller ones. Share GOT slots for
18081         icalls.
18082
18083         * mini.h: Bump AOT file format version. 
18084
18085 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
18086
18087         * declsec.c: Added LinkDemand support and it's special cases for ECMA,
18088         APTC and P/Invoke.
18089         * declsec.h: Added macros to get/set lazyly initialized security 
18090         informations about assemblies. Added new enum for different type of
18091         possible LinkDemand violation. Added function to check LinkDemands.
18092         * mini.h: Added a field to MonoCompile to hold any security violation
18093         detected when JITting a method (so it can be thrown later).
18094         * mini.c: Added LinkDemand checks in mono_method_to_ir for CEE_CALL 
18095         and CEE_CALLVIRT. Added code to throw exception at the end of
18096         mini_method_compile (note: the exception is unhandled right now).
18097
18098 Thu Feb 10 15:49:44 CET 2005 Paolo Molaro <lupus@ximian.com>
18099
18100         * mini.c, jit-icalls.c: use the managed implementation of
18101         memset for initobj and memset, to avoid managed <-> unmanaged
18102         transitions.
18103
18104 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
18105
18106         * inssel.brg (mini_emit_virtual_call): Disable the virtual->nonvirtual
18107         optimization if it would need a GOT var.
18108
18109         * basic.cs: Add tests for constant propagation and switch statements.
18110
18111         * ssa.c: Fix out-of-range constant propagation and switch statements.
18112
18113 2005-02-09    <vargaz@freemail.hu>
18114
18115         * inssel-x86.brg (reg): Align the allocation size in the localloc(imm) case too.
18116
18117 2005-02-08  Zoltan Varga  <vargaz@freemail.hu>
18118
18119         * cpu-amd64.md (load_membase): Fix max length of load_membase.
18120
18121 Tue Feb 8 18:21:11 CET 2005 Paolo Molaro <lupus@ximian.com>
18122
18123         * mini.c: update to new signature of mono_class_get_allocation_ftn().
18124
18125 2005-02-06  Neale Ferguson <NealeFerguson@earthlink.net>
18126
18127         * cpu-s390.md,  mini-s390.c: Correct bug with register usage on certain 
18128         arithmetic operations.
18129
18130 Sun Feb 6 07:10:12 EST 2005 Paolo Molaro <lupus@ximian.com>
18131
18132         * mini-ppc.c: add a workaround for broken user code that
18133         DllImports vararg functions with non-vararg signatures.
18134
18135 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
18136
18137         * mini.c (mono_jit_compile_method_inner): Add detection and a 
18138         meaningfull error message for assemblies written in Managed C++.
18139
18140         * tramp-amd64.c mini-amd64.h: Add support for 
18141         create_trampoline_from_token ().
18142
18143         * aot.c mini-x86.c abcremoval.c: Applied patch from
18144         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
18145
18146 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
18147
18148         * mini.h mini.c mini-x86.h tramp-x86.c: Add a new kind of trampoline 
18149         which takes a MonoImage/token as parameter instead of a MonoMethod.
18150
18151         * aot.c: Use the new trampoline for initializing vtables.
18152
18153         * aot.c: Add support for ldfld/stfld_remote wrappers.
18154
18155         * mini-ops.h cpu-pentium.md inssel-x86.brg mini-x86.c: Add optimized
18156         rules for compare <MEM>, IMM.
18157
18158         * mini.h (MONO_AOT_FILE_VERSION): Bump it.
18159
18160         * aot.c: Handle inherited finalizers correctly.
18161
18162 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
18163
18164         * inssel.brg (stmt): Add a missing _setup_... ().
18165
18166         * aot.c: Save some parts of the class state to the AOT file and use it
18167         to recompute that state when a class is initialized.
18168
18169         * mini.c: Install AOT hooks into the runtime.
18170
18171         * mini.h: Bump AOT file format version.
18172         
18173         * mini.c (mono_method_to_ir): Initialize pointer type locals correctly.
18174         Fixes #72148.
18175
18176         * iltests.il: Add new test.
18177
18178 Wed Feb 2 16:53:59 CET 2005 Paolo Molaro <lupus@ximian.com>
18179
18180         * mini.c: fix typo.
18181
18182 Wed Feb 2 16:37:13 CET 2005 Paolo Molaro <lupus@ximian.com>
18183
18184         * mini.c: setup the statistical profiler in the thread attach
18185         callback to cope with the new single thread code.
18186
18187 Wed Feb 2 15:43:58 CET 2005 Paolo Molaro <lupus@ximian.com>
18188
18189         * mini-ppc.c: ensure we have enough room for the profiler
18190         calls (fixed bug#72084).
18191
18192 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
18193
18194         * aot.c: Get rid of the MonoAotMethod structure and the hashtable holding 
18195         it.
18196
18197 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
18198
18199         * driver.c: Re-enabled SSAPRE (two commits, I was just dumb).
18200
18201 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
18202
18203         * ssapre.c: Fixed an issue with down safety (this allows IronPython
18204         to succesfully execute parrotbench).
18205         * ssapre.h: Likewise.
18206
18207 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
18208
18209         * ssa.c: In mono_ssa_rename_vars, forced the creation of a new SSA
18210         variable for stores to method arguments (fixes a SSAPRE issue).
18211
18212 Tue Feb 1 15:52:26 CET 2005 Paolo Molaro <lupus@ximian.com>
18213
18214         * mini.c: handle value types in dup, fixes gen-112.cs.
18215
18216 Tue Feb 1 11:45:19 CET 2005 Paolo Molaro <lupus@ximian.com>
18217
18218         * mini-ppc.c, cpu-g4.md, tramp-ppc.c: use a slower code
18219         sequence for calls in dynamic methods to avoid thunks.
18220
18221 Tue Feb 1 11:44:01 CET 2005 Paolo Molaro <lupus@ximian.com>
18222
18223         * mini.c: correctly remove dynamic methods from the hashtable.
18224
18225 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
18226
18227         * driver.c: Disabled SSAPRE until fix the bug that appears
18228         in IronPython's parrotbench.
18229
18230 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
18231
18232         * aot.c (mono_compile_assembly): Get rid of Skip (other) messages.
18233
18234         * mini.c (mono_method_to_ir): Revert the previous change.
18235         
18236         * mini.c (mono_method_to_ir): Do not inline ldfld and stfld wrappers
18237         when AOT compiling.
18238
18239         * tramp-x86.c (x86_magic_trampoline): Avoid calls to 
18240         mono_jit_info_table_find () etc. when running under valgrind.
18241
18242         * inssel.brg: Fix warnings.
18243
18244         * mini-exceptions.c: Fix warnings.
18245
18246 2005-01-31  Martin Baulig  <martin@ximian.com>
18247
18248         * driver.c (compile_all_methods_thread_main): Don't try to compile
18249         generic methods or anything which has type parameters.
18250
18251 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
18252
18253         * aot.c: Avoid costly calls to mono_method_full_name in tracing code and fix memory leaks.
18254
18255         * TestDriver.cs: Add --verbose flags.
18256
18257         * graph.c ssa.c: Fix 64 bit warnings.
18258         
18259         * abcremoval.h ssapre.h abcremoval.c ssapre.c mini.c tramp-amd64.c 
18260         trace.c mini-exceptions.c linear-scan.c inssel-amd64.brg inssel.brg:
18261         Fix 64 bit warnings.
18262
18263         * mini-amd64.c (mono_arch_output_basic_block): Fix uninitialized
18264         variable not spotted by gcc.
18265         
18266         * mini-amd64.c inssel-amd64.brg: Applied patch from  
18267         Willibald Krenn <Willibald.Krenn@gmx.at>. Clean up usage of 
18268         X86_COMPARE_MEMBASE opcodes.
18269
18270         * exceptions-amd64.c (mono_arch_find_jit_info): Fix AMD64 build.
18271
18272 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
18273
18274         * *: MonoMethod->signature might be NULL now. You *MUST* use
18275         mono_method_signature.
18276
18277 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
18278
18279         * driver.c (compile_all_methods_thread_main): Compile the methods
18280         without invoking cctors.
18281
18282 Fri Jan 28 18:28:26 CET 2005 Paolo Molaro <lupus@ximian.com>
18283
18284         * mini.c: remove ben's "optimizations" to dup+stloc (bug #71905).
18285         * basic-calls.cs: test for the above.
18286
18287 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
18288
18289         * mini.c mini-exceptions.c aot.c exceptions-*.c: Update after 
18290         MonoJitInfo changes.
18291
18292 2005-01-27  Zoltan Varga  <vargaz@freemail.hu>
18293
18294         * mini-exceptions.c (mono_handle_exception): Compute the stack trace
18295         eagerly if it contains dynamic methods.
18296         
18297         * mini-exceptions.c (ves_icall_System_Exception_get_trace): New icall.
18298
18299         * mini-exceptions.c (mono_handle_exception): Avoid computing the stack
18300         trace, it is now computed by an icall from trace_ips.
18301         
18302         * mini-exceptions.c: Fix a warning.
18303
18304 Thu Jan 27 13:38:34 CET 2005 Paolo Molaro <lupus@ximian.com>
18305
18306         * mini-exceptions.c: don't bother getting stack trace info if
18307         it's not going to be used.
18308
18309 2005-01-27  Raja R Harinath  <rharinath@novell.com>
18310
18311         * Makefile.am (common_sources): Add ssapre-cee-ops.h and
18312         ssapre-mini-ops.h.
18313
18314 2005-01-26  Zoltan Varga  <vargaz@freemail.hu>
18315
18316         * mini.c (remove_block_if_useless): Only print debug stuff with -v -v.
18317
18318         * aot.c: Avoid calling mono_method_get_header () if not needed.
18319
18320         * mini.h: Bump AOT file format version.
18321         
18322         * mini.c (mono_emit_native_call): Allocate a GOT var here.
18323
18324         * mini.c (mono_print_tree): Print more info for calls.
18325
18326 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
18327
18328         * declsec.h: Remove warning by adding missing include for marshal.h
18329
18330 2005-01-26  Martin Baulig  <martin@ximian.com>
18331
18332         * mini.c (mono_method_to_ir): In CEE_UNBOX_ANY, don't increase
18333         `ip' twice.
18334
18335 2005-01-25  Zoltan Varga  <vargaz@freemail.hu>
18336
18337         * mini-amd64.c (mono_arch_call_opcode): Add missing MONO_SSA_LOAD/STORE
18338         flags.
18339
18340         * ssa.c (mono_ssa_compute): Fix crashes when using AOT.
18341
18342         * aot.c (mono_compile_assembly): Fix a warning.
18343
18344 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com>
18345
18346         * declsec.c: Look for security attributes on the original MonoMethod 
18347         (and not the wrapped one). This fix permissions on icalls.
18348
18349 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
18350
18351         * mini-amd64.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
18352
18353         * mini.c (mono_allocate_stack_slots): Add a fixme.
18354
18355         * mini-x86.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
18356
18357 Sun Jan 23 16:16:48 CET 2005 Paolo Molaro <lupus@ximian.com>
18358
18359         * inssel.brg: optimize casts of sealed types (more
18360         optimizations waiting for fixes in remoting).
18361
18362 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
18363
18364         * inssel.brg (stmt): Add another dummy rule.
18365
18366         * driver.c: Fix warnings.
18367
18368         * driver.c (mono_main): If running under valgrind, instruct glib to use
18369         the system allocation functions so valgrind can track the memory
18370         allocated by the g_... functions.
18371
18372         * inssel.brg (stmt): Add DUMMY rule for OP_DUMMY_STORE.
18373
18374         * mini-ops.h: Add OP_DUMMY_STORE opcode.
18375
18376         * mini.h (MONO_BBLOCK_IS_IN_REGION): New helper macro.
18377
18378         * liveness.c: Handle OP_DUMMY_STORE. Enable register allocation for
18379         variables in try regions.
18380
18381         * mini.c (mini_method_compile): Don't disable optimizations on large
18382         methods when AOT compiling.
18383
18384         * mini.c (mono_allocate_stack_slots): New arch independent method to 
18385         allocate stack slots. Not yet used.
18386
18387 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
18388
18389         * debug-mini.c (mono_debug_close_method): Plug some leaks.
18390
18391 Sat Jan 22 13:41:51 EST 2005 Paolo Molaro <lupus@ximian.com>
18392
18393         * mini-ppc.c: make the branch info relative as the code
18394         buffer can be reallocated.
18395
18396 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
18397
18398         * aot.c: Allow decoding of the new  MONO_PATCH_INFO_DECLSEC.
18399         * driver.c: Removed the AOT/security restriction. Now initialize the
18400         security manager (in metadata) if --security is used.
18401         * mini.c|h: Add the MONO_PATCH_INFO_DECLSEC code to use the index,
18402         rather than the pointer to declarative security, when AOT is used.
18403
18404 Sat Jan 22 09:35:19 EST 2005 Paolo Molaro <lupus@ximian.com>
18405
18406         * mini.h, mini-ppc.h, mini-ppc.c: updated to use out of line
18407         basic blocks, reduced intrinsic exception throwing code size.
18408
18409 2005-01-22  Miguel de Icaza  <miguel@ximian.com>
18410
18411         * driver.c (mini_usage): Reorder the usage screen.
18412
18413 2005-01-21  Zoltan Varga  <vargaz@freemail.hu>
18414
18415         * mini.c (mono_resolve_patch_target): Fix warning.
18416
18417 2005-01-20  Zoltan Varga  <vargaz@freemail.hu>
18418
18419         * mini-x86.c (mono_arch_local_regalloc): Fix bug introduced by
18420         previous patch.
18421
18422         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
18423
18424         * mini-amd64.c (mono_arch_local_regalloc): Revert last patch as it
18425         breaks the amd64 build.
18426
18427         * mini-x86.c (mono_arch_local_regalloc): Fix bug in div/rem 
18428         register allocation. Fixes #71454.
18429
18430         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
18431
18432         * arrays.cs: Add new regression test.   
18433
18434 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
18435
18436         * ssapre.c: Turned usage of snprintf to GString.
18437         * ssapre.h: disabled MONO_APPLY_SSAPRE_TO_SINGLE_METHOD
18438         (I left it on by mistake in my previous commit).
18439
18440 Thu Jan 20 12:00:45 CET 2005 Paolo Molaro <lupus@ximian.com>
18441
18442         * mini.c, cfold.c, basic-calls.cs: preserve side effects
18443         on cond branch optimization (fixes bug# 71515).
18444
18445 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
18446
18447         * abcremoval.c: Fixed bug 71062.
18448         * abcremoval.h: Likewise.
18449
18450 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
18451
18452         * mini.c: Added a new functionality to optimize_branches, the removal
18453         of useless basic blocks, and fixed some problem in the removal of
18454         critical edges; some utility functions added for both purposes.
18455         * ssapre.c: Added complex expression support, and fixed bug 70637.
18456         * ssapre.h: Likewise.
18457         * ssapre-cee-ops.h: Added file with list of "CEE_*" opcodes
18458         enabled in SSAPRE.
18459         * ssapre-mini-ops.h: Likewise, but for "OP_*" opcodes.
18460         * driver.c: Re-enabled SSAPRE.
18461
18462 2005-01-19  Martin Baulig  <martin@ximian.com>
18463
18464         * mini.c (mono_method_to_ir): Call mono_get_inflated_method() on
18465         the result of mono_get_method_constrained().
18466
18467 2005-01-18  Neale Ferguson <NealeFerguson@earthlink.net>
18468
18469         * exceptions-s390.c tramp-s390.c: Allocate code using the global code
18470         manager.
18471
18472 2005-01-18  Geoff Norton  <gnorton@customerdna.com>
18473
18474         * jit-icalls.c (mono_llmult_ovf): Fix other overflow conditions to
18475         be detected.  Fixes #59296.
18476
18477 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
18478
18479         * mini-amd64.c (mono_arch_output_basic_block): Remove some assertions
18480         which can happen. Fixes #71361.
18481
18482 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
18483
18484         * exceptions-sparc.c tramp-sparc.c: Allocate code using the global code
18485         manager.
18486
18487 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
18488
18489         * mini.c (mono_create_jump_trampoline): Revert last change as it causes
18490         appdomain-unload.exe to fail.
18491         
18492         * mini.c: Fix some memory leaks.
18493
18494 Mon Jan 17 16:16:23 CET 2005 Paolo Molaro <lupus@ximian.com>
18495
18496         * inssel.brg: handle the new size of rank, idepth, max_interface_id.
18497         Fixed bug and sped up some codepaths.
18498
18499 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
18500
18501         * mini.c: Fix some memory leaks.
18502
18503         * exceptions.cs basic-long.cs: Add test for checked ulong->int 
18504         conversion.
18505
18506         * inssel-long.brg: Implement long_conv_to_ovf_i4_un. Fixes #71319.
18507
18508         * inssel-long.brg: Fix conv.ovf.i8 when run on an int32. Fixes
18509         #71320.
18510
18511         * iltests.il: Add regression test for #71320.
18512
18513 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
18514
18515         * mini.c (mono_codegen): Fix installation of profiler hooks.
18516
18517         * mini-sparc.c mini-amd64.c: Don't allocate stack space for dead vars.
18518
18519 Sun Jan 16 12:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
18520
18521         * mini.h, mini.c, cfold.c: optimize access to enum
18522         readonly fields, too. Eval conditional branches if possible
18523         to perform unreachable code removal in more cases.
18524
18525 2005-01-15  Zoltan Varga  <vargaz@freemail.hu>
18526
18527         * tramp-amd64.c exceptions-amd64.c: Use the new global code manager.
18528
18529         * mini.c (mono_global_codeman_reserve): New function to allocate code memory from a global
18530         code manager.
18531
18532         * tramp-x86.c mini-x86.c exceptions-x86.c: Allocate all code memory so mono works with
18533         WinXP DEP. Fixes #71244.
18534
18535 2005-01-14  Zoltan Varga  <vargaz@freemail.hu>
18536
18537         * inssel.brg: Allways convert CEE_CONV_OVF_I4 to a move on 64 bit platforms. Fixes #71236.
18538
18539 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
18540
18541         * mini-x86.c (mono_arch_output_basic_block): Fix OP_ATOMIC_ADD_NEW_I4.
18542
18543 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
18544
18545         * mini-exceptions.c exceptions-ppc.c aot.c: Cope with MonoJitInfo 
18546         changes.
18547
18548         * mini.h: Bump AOT version.
18549
18550         * mini.h (MonoCompile): Change exvar to a hash table.
18551
18552         * mini.c: Allocate a separate exvar for each handler block.
18553
18554         * mini.c: Get rid of the computation of filter_lengths, its not needed.
18555
18556         * mini.c inssel.brg: Change OP_THROW_OR_NULL to compare the current
18557         ex var with the pending exception and only throw if the two are equal.
18558         Fixes #68552.
18559         
18560         * exceptions.cs: Add tests for rethrow and nested catch clauses.
18561
18562         * mini-x86.c: Fix warnings.
18563
18564         * Makefile.am (common_sources): Move mini-exceptions.c here as it is
18565         used by all the ports now.
18566
18567         * aot.c: Add write-symbols and save-temps options.
18568
18569 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
18570
18571         * mini-x86.c: Add support for returning structs in registers from pinvoke functions on WIN32.
18572
18573 Mon Jan 10 16:11:16 EST 2005 Neale Ferguson <nealeferguson@earthlink.net>
18574
18575         * mini-ops.h, inssel-s390.brg, cpu-s390.md: Support OP_ATOMIC__xxx 
18576         operations.
18577
18578         * tramp-s390.c: Check vtable slot belongs to the domain.
18579
18580         * mini-exceptions.c, exceptions-s390.c: Standardize exception handling
18581         as per other platforms.
18582
18583         * mini-s390.c, mini-s390.h: Enable out-of-line bblock support.
18584
18585 Mon Jan 10 18:53:05 CET 2005 Paolo Molaro <lupus@ximian.com>
18586
18587         * driver.c: we don't run the Main() code in a subthread anymore.
18588
18589 Mon Jan 10 17:54:16 CET 2005 Paolo Molaro <lupus@ximian.com>
18590
18591         * mini.c: added experimental rtc support in the statistical
18592         profiler: if the user has the permission, more accurate statistics
18593         are gathered. Run with: MONO_RTC=4096 mono --profiler=default:stat ....
18594         The MONO_RTC value must be restricted to what the linux rtc allows:
18595         power of two from 64 to 8192 Hz.
18596
18597 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
18598
18599         * mini-x86.c (mono_arch_emit_exceptions): Fix #71121.
18600
18601 Mon Jan 10 05:20:49 EST 2005 Paolo Molaro <lupus@ximian.com>
18602
18603         * mini-ppc.c: better icache flush for smp.
18604
18605 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
18606
18607         * mini-amd64.c (emit_move_return_value): Fix memory leak.
18608
18609         * mini-x86.c (get_call_info): Add the get_call_info () code from the
18610         amd64 port, not yet used.
18611
18612 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
18613
18614         * mini.c (mono_method_to_ir): Disable inlining of ldfld wrappers with
18615         a struct type.
18616
18617 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
18618
18619         * driver.c: Added --security option to activate the security manager.
18620         Right now this will allow code generation for declarative demands and
18621         is disabled when AOT is specified.
18622         * mini.c: Add code generation for declarative security demands.
18623         * mini.h: Add mono_use_security_manager as an extern gboolean.
18624
18625 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
18626
18627         * aot.c (mono_compile_assembly): Speed up compilation a bit by
18628         emitting more dense assembly code.
18629
18630         * mini-sparc.c mini-sparc.h exceptions-sparc.c: Enable optimized corlib
18631         exception throwing stuff.
18632
18633 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
18634
18635         * mini-sparc.c (mono_arch_emit_exceptions): Fix typo in previous patch. Remove
18636         dead code.
18637
18638         * mini-amd64.c (mono_arch_emit_exceptions): Remove duplicate epilog stuff
18639         left in by mistake.
18640
18641         * driver.c (EXCLUDED_FROM_ALL): Disable SSAPRE until bug #70637 is 
18642         fixed.
18643
18644         * mini-sparc.h mini-sparc.c: Enable out-of-line bblock support.
18645
18646         * tramp-*.c: Only patch vtable slots if the object is in the current
18647         domain. Fixes appdomain-unload.exe.
18648
18649         * mini-amd64.c mini-amd64.h: Enable out-of-line bblock support.
18650         
18651         * mini-amd64.c (mono_arch_local_regalloc): Port regalloc fix from
18652         x86 branch.
18653
18654 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
18655
18656         * mini.c (reverse_branch_op): New helper function.
18657
18658         * mini.c (optimize_branches): Run the new optimization only on 
18659         platforms which support it. Also reverse all kinds of branches.
18660
18661         * mini.h (MonoBasicBlock): Add 'out_of_line' field.
18662
18663         * mini.c (mono_method_to_ir): Set 'out_of_line' for bblocks which have
18664         a throw statement.
18665
18666         * mini.c (optimize_branches): Reverse not-equals branches if the false
18667         bblock is a throw. This happens a lot of time with argument checking in
18668         corlib.
18669
18670         * mini.c (mono_codegen): Add support for placing basic blocks after
18671         the function epilogue.
18672
18673         * mini-x86.c mini-x86.h: Add support for placing basic blocks after the
18674         function epilogue.
18675         
18676 2005-01-05  Miguel de Icaza  <miguel@ximian.com>
18677
18678         * mini.c (setup_stat_profiler): Only set this up if the platform
18679         supports ITIMER_PROF.
18680
18681 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
18682
18683         * mini-x86.c (mono_arch_local_regalloc): Fix a bug introduced by the
18684         previous patch.
18685
18686         * inssel.brg: Fix a warning.
18687
18688 Wed Jan 5 16:40:18 CET 2005 Paolo Molaro <lupus@ximian.com>
18689
18690         * mini.c: added support for statistical profiler 
18691         (run with: --profile=default:stat).
18692
18693 2005-01-04  Zoltan Varga  <vargaz@freemail.hu>
18694
18695         * mini-x86.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Enable this on x86.
18696
18697         * mini-x86.c cpu-pentium.md: More fixes for usage of global registers.
18698
18699         * mini-amd64.c (mono_arch_local_regalloc): Port some regalloc fixes 
18700         related to global registers from the amd64 port.
18701
18702 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
18703
18704         * mini.c (mono_method_to_ir): Handle MONO_CLASSCONST.
18705
18706         * mini-amd64.c (mono_arch_local_regalloc): Fix some regalloc problems
18707         with global registers.
18708         (mono_arch_output_basic_block): Fix SWITCH in the AOT case.
18709
18710         * aot.c (emit_method_code): Fix the 'method emitted as' messages.
18711
18712 2004-12-31  Zoltan Varga  <vargaz@freemail.hu>
18713
18714         * debug-mini.c (encode_value): Fix off-by-one.
18715
18716         * aot.c (encode_value): Likewise.
18717
18718         * mini.c (mono_method_to_ir): Disable AOT for methods containing LDPTR.
18719
18720 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
18721
18722         * mini.c linear-scan.c: Add a workaround for the mcs crash when using 
18723         AOT.
18724
18725         * aot.c (mono_aot_load_method): Free up patch info if no longer needed.
18726         
18727         * aot.c (emit_method_info): Increase size of temp buffer.
18728
18729         * mini-x86.c cpu-pentium.md mini.c: Load fp constants differently in 
18730         the AOT case.
18731
18732 2004-12-28  Zoltan Varga  <vargaz@freemail.hu>
18733
18734         * aot.c (emit_method_info): Fix build.
18735         
18736         * aot.c: Further rework of the AOT file format to reduce the size of
18737         the method info data.
18738
18739         * mini.h: Bump AOT file format version.
18740
18741 2004-12-27  Martin Baulig  <martin@ximian.com>
18742
18743         * mini.c (mini_get_method): New static method; call
18744         mono_get_method_full() and mono_get_inflated_method().
18745         (mono_method_to_ir): Use mini_get_method() instead of
18746         mono_get_method_full(). 
18747
18748 2004-12-26  Patrik Torstensson  <patrik.torstensson@gmail.com>
18749
18750         * mini-x86.c (atomic ops): fixed bug interlocked bug #70784. 
18751
18752 2004-12-25  Zoltan Varga  <vargaz@freemail.hu>
18753
18754         * inssel.brg (ldind_to_load_membase): Handle CEE_LDIND_I8.
18755
18756         * inssel-amd64.brg: Add some optimization rules.
18757
18758 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
18759
18760         * aot.c: Remove the use of MonoGHashTable and other GC stuff. The
18761         standard not GC'd stuff is fine.
18762
18763 2004-12-24  Zoltan Varga  <vargaz@freemail.hu>
18764
18765         * aot.c: Rework the AOT file format to get rid of most of the global
18766         symbols. This reduces the size of the mscorlib.dll.so by 1MB.
18767
18768         * mini.h: Bump AOT file format version.
18769         
18770 2004-12-23  Zoltan Varga  <vargaz@freemail.hu>
18771
18772         * mini.h: Bump AOT file format version.
18773
18774         * aot.c (mono_aot_is_got_entry): New function to determine if an 
18775         address is inside a GOT.
18776
18777         * aot.c mini-x86.c tramp-x86.c: Make all patches use the GOT.
18778
18779         * cpu-pentium.md: Increase the maximum size of some instructions which
18780         might involve a got access.
18781         
18782         * mini.c (get_method_from_ip): Another debug helper function.
18783
18784         * mini.c: Call mono_get_got_var () in a couple places. Handle the case
18785         when got var accesses are created during the decompose phase.
18786
18787         * mini-sparc.c: Change mono_compile_aot to cfg->compile_aot.
18788
18789         * mini.h mini.c mini-x86.c aot.c mini-sparc.c: Add a 'compile_corlib'
18790         argument mini_compile_method and to MonoCompile, and use this to
18791         determine whenever a given method is compiled for AOT. This allows the
18792         other methods compiled during AOT compilation to be free of AOT stuff,
18793         so the backends does not need to add special support for them by
18794         creating a fake GOT etc.
18795
18796         * mini-x86.c (mono_arch_patch_code): Remove fake got stuff as it is no
18797         longer needed.
18798
18799 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
18800
18801         * mini.c (mono_method_to_ir): It turns out that some of the
18802         x-appdomain wrappers are lax with types, so just ignore this for
18803         all wrappers.
18804
18805         * inssel.brg (OP_CHECK_ARRAY_TYPE): Optimize this by only looking
18806         at the vtable->klass. If it is non-shared code we can just use the
18807         vtable.
18808
18809 Tue Dec 21 17:43:06 CET 2004 Paolo Molaro <lupus@ximian.com>
18810
18811         * mini-ppc.c: access MonoDomain from tls, too.
18812
18813 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com>
18814
18815         * declsec.c: Removed unused variable (and related warning ;-)
18816
18817 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
18818
18819         * iltests.il: New test for LDELEMA on an array of ref types.
18820
18821         * mini.c (CEE_LDELEMA): We need to emit OP_CHECK_ARRAY_TYPE for
18822         all ldelema's on reftypes.
18823         (check_call_signature): Remove the OP_CHECK_ARRAY_TYPE from here,
18824         it was the wrong place to put it.
18825
18826         * mini-x86.c (mono_arch_output_basic_block): Just use ecx as the
18827         register to pop to make this cleaner, at the request of Paolo.
18828
18829 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
18830
18831         * mini-ops.h (OP_GETHASHCODE): New op.
18832
18833         * inssel.brg (OP_GETHASHCODE): Emit code for the new opcode
18834
18835         * mini.c (mini_get_inst_for_method): Create the intrinsic hash
18836         operation.
18837
18838         For a microbenchmark, this reduces the cost of Hashtable.get_Item
18839         by 25%.
18840         
18841         * mini-x86.c (mono_arch_output_basic_block): Rather than
18842
18843         add ebp, 4
18844
18845         Emit
18846
18847         pop edx
18848
18849         The first is 3 bytes while the second is 1. This saves 36 kb on
18850         mscorlib, quite a big saving. When bootstraping mcs, I was able to
18851         see a small boost because of icache locality.
18852
18853         * cfold.c (FOLD_BINOPCOMM): Kill add foo, 0
18854
18855 Mon Dec 20 12:19:40 EST 2004 Paolo Molaro <lupus@ximian.com>
18856
18857         * Makefile.am, mini-ppc.h, mini-exceptions.c, exceptions-ppc.c:
18858         started code sharing with the generic code.
18859
18860 Mon Dec 20 11:08:06 EST 2004 Paolo Molaro <lupus@ximian.com>
18861
18862         * mini-ppc.c, cpu-g4.md: added code for direct access to
18863         tls data slots.
18864
18865 Mon Dec 20 10:58:28 EST 2004 Paolo Molaro <lupus@ximian.com>
18866
18867         * mini-ops.h, inssel-x86.brg, cpu-amd64.md, inssel.brg, inssel-amd64.brg,
18868          mini-amd64.c, mini-x86.c, cpu-pentium.md: renamed OP_X86_TLS_GET
18869         to OP_TLS_GET.
18870
18871 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
18872
18873         * declsec.c|h: Added functions to cache the declarative stack modifiers
18874         in MonoJitInfo and to create a security frame from a MonoJitInfo 
18875         structure.
18876         * mini.c: Initialize jinfo->cas_inited to FALSE when MonoJitInfo is
18877         created. Register internal calls for System.Security.SecurityFrame::
18878         _GetSecurityFrame and _GetSecurityStack.
18879         * mini.h: Added definition for new icalls (in mini-exceptions.c) and
18880         the definitions for the new stack walk/callback mechanism.
18881         * mini-exceptions.c: Added internal call GetSecurityFrame (to get the 
18882         first security frame for LinkDemands and InheritanceDemands) and
18883         GetSecurityStack for Demands. Both use the new mono_walk_stack code
18884         from lupus.
18885         * mini-x86.h, mini-amd64.h, mini-sparc.h: Architecture specific stack
18886         walk initialization (lupus).
18887
18888 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
18889
18890         * mini.c (mono_method_to_ir): In CEE_DUP, handle the dup / stloc
18891         idiom.
18892         (handle_loaded_temps): Do not create a temporary variable for
18893         things that we know are temps. They will never be modified.
18894         (mono_spill_call): Set MONO_INST_IS_TEMP
18895         (mono_emulate_opcode): ditto
18896         (emit_tree): ditto
18897         (mono_method_to_ir.CEE_DUP): ditto
18898
18899 2004-12-19  Ben Maurer  <bmaurer@ximian.com>
18900
18901         * mini.c (type_to_eval_stack_type): Make this handle the void type
18902         (mono_emit_call_args): set the call->type with type_to_eval_stack_type
18903         (emit_tree): use ip_in_bb to special case some common idioms
18904         Update all callers to pass in the IP.
18905         (mono_method_to_ir): Make CEE_CALL* do the above as well.
18906
18907         This gives us a nice 2% speedup in mcs bootstrap.
18908
18909         * mini-x86.c (peephole_pass): Peephole pass to make
18910         mov  [foo], eax
18911         push [foo]
18912
18913         into
18914
18915         mov [foo], eax
18916         push eax
18917
18918         * mini.c (ip_in_bb): new method.
18919         (mono_method_to_ir): use this method rather than doing the hash
18920         lookup ourselves.
18921
18922         * linear-scan.c (mono_linear_scan): When expiring actives, you
18923         don't need to keep around variables that expire on this
18924         instruction. This makes it so that:
18925              a = b + 1
18926         will turn into:
18927              store (ebx add (ebx, 1))
18928         which will become
18929              add ebx, 1
18930
18931 2004-12-19  Zoltan Varga  <vargaz@freemail.hu>
18932
18933         * mini.c (mono_method_to_ir): Optimize the common ldobj+stloc 
18934         combination to avoid doing two copies. Fix up problems with previous
18935         patch.
18936
18937         * mini.c: Fix 64 bit warnings.
18938
18939         * mini-x86.c (INST_IGNORES_CFLAGS): Add OP_STOREI4_MEMBASE_REG.
18940
18941 2004-12-17  Zoltan Varga  <vargaz@freemail.hu>
18942
18943         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Port exception handling
18944         changes from the x86 code.
18945
18946         * mini.h: Add prototype for mono_arch_get_throw_corlib_exception ().
18947
18948 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
18949
18950         * mini-x86.c (mono_arch_emit_epilog): Optimize the corlib exception
18951         throwing code to reduce its size, unify the AOT and non-aot code and 
18952         get rid of relocations in the AOT case.
18953
18954         * mini-x86.h mini.c exceptions-x86.c 
18955         (mono_arch_get_throw_corlib_exception): New arch specific function to 
18956         raise corlib exceptions which doesn't require relocations in the 
18957         caller.
18958
18959         * aot.c (emit_method): Handle PATCH_INFO_NONE as well.
18960
18961 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
18962
18963         * mini.c (mono_emit_method_call): Only allocate the got var when it is
18964         needed.
18965
18966         * mini-x86.c (mono_arch_patch_code): Add missing PATCH_INFO_METHOD_REL
18967         in the AOT case.
18968
18969 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
18970
18971         * mini-x86.c, cpu-pentium.md, inssel-x86.brg: Fixed bug
18972         with add function when used from Inc/dec atomic 
18973         functions. Re-enabled optimization on x86.
18974         * mini-ops.h: renamed atomic_add functions to
18975         allow _add to match the Interlocked::Add and
18976         _add_next to match Interlocked::Inc/Dec.
18977
18978 2004-12-15  Massimiliano Mantione  <massi@ximian.com>
18979
18980         * mini.c: Fixed a subtle bug in mono_method_to_ir, about the
18981         linking of BBs to the end BB, and enabled SSAPRE also with
18982         consprop and copyprop (which was prevented by that bug).
18983
18984 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
18985
18986         * mini-x86.c: disabling the Interlocked optimizing code. 
18987
18988 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
18989
18990         * aot.c (load_aot_module): Move reading of got_addr after the AOT
18991         file version check.
18992         
18993 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
18994
18995         * mini-x86.c, inssel-x86.brg, cpu-pentium.md: removed _imm 
18996         interlocked optimization due lack of support on x86, rewrote 
18997         exchange to take into account that base may be in eax.
18998         
18999         xsp works again; activated Interlocked optimizing code.
19000         
19001 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
19002
19003         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
19004
19005 2004-12-13  Zoltan Varga  <vargaz@freemail.hu>
19006
19007         * mini-ops.h: Add new opcodes.
19008
19009         * mini.h: Add new patch types. Add got_var to MonoCompile.
19010
19011         * mini.h mini-x86.c mini-amd64.c aot.c: Rename 
19012         mono_arch_get_aot_patch_offset () to mono_arch_get_patch_offset () and
19013         make it work with all kinds of patchable code.
19014
19015         * inssel.brg inssel-x86.brg: Add new rules dealing with computing the
19016         address of the GOT, and referencing entries in the GOT.
19017
19018         * mini.c: Add code to load the GOT address if needed by an opcode.
19019
19020         * aot.c mini-x86.h mini-x86.c cpu-pentium.md: Add support for position 
19021         independent AOT code on the x86 using an elf-style Global Offset Table.
19022
19023 2004-12-14  Raja R Harinath  <rharinath@novell.com>
19024
19025         * Makefile.am (RUNTIME): Set MONO_SHARED_DIR.
19026
19027 2004-12-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19028
19029         * mini-x86.c: disabling the Interlocked optimizing code. It segfaults
19030         when running xsp.
19031
19032 2004-12-13  Patrik Torstensson  <patrik.torstensson@gmail.com>
19033
19034         * mini-x86.c,mini-ops.h,inssel-x86.brg,cpu-pentium.md: Implementation
19035         of Interlocked:Increment/Decrement/Add as inline ops.
19036         (mini-x86.c (mono_arch_get_inst_for_method and mono_arch_output_basic_block))
19037
19038 2004-12-12  Geoff Norton  <gnorton@customerdna.com>
19039
19040         * exceptions-ppc.c: Reorder code so gcc3.4 can compile it
19041         * mini-ppc.c: Unify mono_arch_patch_code with changes in r37636.
19042
19043 2004-12-12  Duncan Mak  <duncan@ximian.com>
19044
19045         * mini-ppc.c (mono_arch_patch_code): Hopefully made this build
19046         again. `patch_info->table_size' is no longer valid after Zoltan's
19047         commit #37636.
19048
19049 2004-12-12  Martin Baulig  <martin@ximian.com>
19050
19051         * mini.c (mono_method_to_ir): Only call mono_debug_init_method()
19052         if we are the "real" method, ie. not an inlined method inside it.
19053
19054 2004-12-11  Ben Maurer  <bmaurer@ximian.com>
19055
19056         * mini.c (CEE_LDSFLD): Make sure that the vtable has been init'd
19057         before we look in the special fields table. This fixes
19058         ../tests/thread-static-init.cs.
19059
19060 2004-12-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19061
19062         * mini.c: return immediately after setting OP_ARRAY_RANK or CEE_LDLEN
19063         for Array get_Rank and get_Length. Fixes bug #70465.
19064
19065 2004-12-11  Zoltan Varga  <vargaz@freemail.hu>
19066
19067         * mini.h mini.c aot.c: Put the bblock table for a SWITCH patch into a
19068         separate structure to reduce the size of MonoJumpInfo.
19069
19070 Fri Dec 10 18:09:22 CET 2004 Paolo Molaro <lupus@ximian.com>
19071
19072         * mini.c, mini.h, aot.c, driver.c: allow disabling the aot code.
19073
19074 2004-12-10  Patrik Torstensson  <patrik.torstensson@gmail.com>
19075
19076         * mini.c (mini_get_inst_for_method): Changed to allow ports
19077         to return a MonoInst instead of opcode 
19078         (renamed mini_get_opcode_for_method to better reflect the new functionality)
19079         
19080         * mini-[x86|s390|s390x|ppc|sparc].c (mono_arch_get_inst_for_method): 
19081         Allow ports to return a created MonoInst instead of op-code, will enable
19082         new optimizations.
19083         (renamed mini_get_opcode_for_method to better reflected the functionality)
19084
19085 2004-12-09  Zoltan Varga  <vargaz@freemail.hu>
19086
19087         * mini.c (NEW_AOTCONST): Share some code between the different NEW_AOTCONST macros.
19088
19089 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
19090
19091         * mini.c jit-icalls.c: Pass generic_context to mono_ldtoken_wrapper.
19092         Fixes #69985.
19093
19094 2004-12-08  Martin Baulig  <martin@ximian.com>
19095
19096         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use `fsig->signature'
19097         if we're a CEE_CONSTRAINED call.  Fixes gen-118.cs.
19098
19099 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
19100
19101         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_<X>
19102         correctly.
19103
19104         * exceptions.cs: Disable some tests which depend on properties of x86 fp
19105         arithmetic.
19106
19107 2004-12-08  Raja R Harinath  <rharinath@novell.com>
19108
19109         * Makefile.am (CLEANFILES): Add *.exe, *.dll.
19110
19111 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
19112
19113         * mini-sparc.c (mono_arch_output_basic_block): Fix LOCALLOC_IMM
19114         bug introduced by the previous patch.
19115
19116 Tue Dec 7 11:44:39 CET 2004 Paolo Molaro <lupus@ximian.com>
19117
19118         * mini-ppc.c, objectc.cs: handle large structs passed by value
19119         (fixes bug #69972).
19120
19121 Tue Dec 7 10:43:31 CET 2004 Paolo Molaro <lupus@ximian.com>
19122
19123         * mini-ppc.c: OP_ARGLIST implementation from
19124         Geoff Norton  <gnorton@customerdna.com>.
19125
19126 Tue Dec 7 10:14:25 CET 2004 Paolo Molaro <lupus@ximian.com>
19127
19128         * inssel-x86.brg, inssel-ppc.brg: fix reference to register
19129         in stmt: OP_OUTARG_VT (reg) (should fix bug #69785).
19130
19131 Tue Dec 7 10:06:39 CET 2004 Paolo Molaro <lupus@ximian.com>
19132
19133         * exceptions-ppc.c: avoid calling ppc_patch in exception trampolines.
19134
19135 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
19136
19137         * inssel-s390.brgi, mini-ops.h, mini-s390.c : Add stubs for support of tls offset
19138         support.
19139
19140 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
19141
19142         * mini-sparc.c: Zero out localled-ed memory.
19143
19144         * iltests.il: Add tests for zeroing out localloc-ed memory.
19145
19146 2004-12-04  Martin Baulig  <martin@ximian.com>
19147
19148         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use the new
19149         mono_method_get_signature_full().       
19150
19151 2004-12-03  Massimiliano Mantione  <massi@ximian.com>
19152
19153         * mini.c: Added removal of critical edges (prerequisite for SSAPRE),
19154         and some utility functions (always for SSAPRE), integrated SSAPRE.
19155         * mini.h: Likewise.
19156         * driver.c: Added ssapre option.
19157         * ssa.c: Small fix on OP_ARG handling.
19158         * ssapre.c, ssapre.h: Added files containing SSAPRE implementation.
19159         * Makefile.am: Likewise.
19160
19161 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
19162
19163         * tramp-x86.c (mono_arch_create_jit_trampoline): Remove code which is
19164         now in the xp code.
19165
19166         * mini.c (mini_init): Register mono_thread_force_interruption_checkpoint
19167         icall.
19168
19169 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
19170
19171         * inssel-s390.brg : Add OP_OUTARG_VT (OP_REFANYTYPE (reg)) rule.
19172         
19173         * cpu-s390.md : Increase instruction length of oparglist.
19174
19175         * mini-s390.c : Implement vararg and TYPEDEBYREF support.
19176
19177 2004-11-30  Martin Baulig  <martin@ximian.com>
19178
19179         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, added support for
19180         virtual generic methods.  We call a special helper_compile_generic_method()
19181         icall to retrieve the method from the vtable, inflate and compile
19182         it and then do a CEE_CALLI.  Thanks a lot to Paolo for this idea.
19183
19184         * jit-icalls.c (helper_compile_generic_method): New JIT icall.
19185
19186 2004-11-30  Zoltan Varga  <vargaz@freemail.hu>
19187
19188         * mini-sparc.c: Fix up vararg corner cases. Fixes #70019.
19189
19190 2004-11-29  Zoltan Varga  <vargaz@freemail.hu>
19191
19192         * cpu-sparc.md mini-sparc.c (long_conv_to_ovf_i): Fill missing delay slot.
19193         Fixes #69929.
19194
19195 2004-11-27  Ben Maurer  <bmaurer@ximian.com>
19196
19197         * inssel.brg (CEE_SWITCH): The AOT stuff Zoltan added is only for
19198         platforms with PIC aot.
19199
19200 2004-11-28  Martin Baulig  <martin@ximian.com>
19201
19202         * mini.c (mono_method_to_ir): In CEE_DUP, added handle_stobj().
19203         Fixes gen-112.cs.
19204
19205 2004-11-28  Martin Baulig  <martin@ximian.com>
19206
19207         * mini-x86.c (mono_arch_call_opcode): Use the original type, not
19208         the result of mono_type_get_underlying_type() to check whether
19209         we're byref.
19210
19211 2004-11-26  Martin Baulig  <martin@ximian.com>
19212
19213         * mini.c
19214         (mono_method_to_ir): Use `!method->signature->has_type_parameters'
19215         in the g_assert().
19216
19217 2004-11-26  Zoltan Varga  <vargaz@freemail.hu>
19218
19219         * mini-amd64.c (mono_arch_emit_this_vret_args): Handle this and vret
19220         the same way as the other arguments so they won't get clobbered.
19221
19222         * mini-amd64.c (mono_arch_output_basic_block): Avoid doing virtual 
19223         calls through R11 since it is clobbered by the trampoline code.
19224
19225 2004-11-26  Raja R Harinath  <rharinath@novell.com>
19226
19227         * Makefile.am: Consistently use $(RUNTIME) rather than ./mono to
19228         pick up in-tree mscorlib.dll.
19229
19230 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
19231
19232         * aot.c: Rename MonoAOTModule->cleanup to out_of_date.
19233
19234         * mini-amd64.c aot.c: Switch to PIC relative AOT code. References to 
19235         runtime data/code are now stored in a table similar to the GOT in ELF. 
19236         This allows the code itself to be position independent.
19237
19238         * aot.c: Fix loading of referenced assemblies after the lazy assembly
19239         loading changes.
19240
19241         * aot.c: Attach ELF type (object/function) directives to all global
19242         symbols.
19243
19244         * tramp-amd64.c (amd64_magic_trampoline): Patch RIP relative calls too.
19245
19246         * inssel.brg (SWITCH): Emit an AOT_CONST in the aot case.
19247
19248         * mini-amd64.h: Turn on PIC AOT code.
19249
19250         * mini.h (mono_arch_get_aot_patch_offset): New arch specific function
19251         returning the offset within an OP_AOTCONST instruction where the GOT
19252         offset needs to be added.
19253
19254         * mini.h: Bump AOT file format version.
19255
19256 2004-11-25  Martin Baulig  <martin@ximian.com>
19257
19258         * mini.c (mono_method_to_ir): In CEE_CALL, don't allow calling any
19259         uninflated generic methods.
19260
19261 2004-11-25  Martin Baulig  <martin@ximian.com>
19262
19263         * mini.c (mono_method_to_ir): Don't allow any uninflated generic methods.
19264
19265 2004-11-24  Martin Baulig  <martin@ximian.com>
19266
19267         * minit.c (type_to_eval_stack_type): Set `inst->klass' to the
19268         original klass (this only applies for generic instances).
19269
19270 2004-11-24  Martin Baulig  <martin@ximian.com>
19271
19272         * mini.c (mono_method_to_ir): Use `STACK_OBJ' instead of
19273         `ldind_type [CEE_LDIND_REF]' (which would be beyond the end of
19274         that array).
19275
19276 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
19277
19278         * mini.c (mono_method_to_ir): Disable inlining for methods containing
19279         localloc. Fixes #69678.
19280
19281         * iltests.il (test_0_localloc_inline): Add regression test for #69678.
19282         
19283 2004-11-23  Zoltan Varga  <vargaz@freemail.hu>
19284
19285         * mini-amd64.c (mono_arch_output_basic_block): Set %al to the number of
19286         used SSE registers on pinvoke calls. Fixes #69774.
19287
19288 2004-11-23  Geoff Norton  <gnorton@customerdna.com>
19289
19290         * inssel-ppc.brg, mini-ppc.c: Use mono_class_from_mono_type instead of
19291         vt->inst_vtype->data.klass.  This fixes generic structs and bug #69766
19292
19293 2004-11-23  Raja R Harinath  <rharinath@novell.com>
19294
19295         * Makefile.am (MCS,ILASM): Don't refer to runtime/ directory.
19296         Refer directly to the mcs/ tree.
19297
19298 2004-11-19  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
19299
19300         * mini-s390.c, tramp-s390.c, mini-s390.h: Add LMF processing for trampolines.
19301         Check if a trampoline for a synchronized method is required. 
19302
19303 Fri Nov 19 17:34:21 CET 2004 Paolo Molaro <lupus@ximian.com>
19304
19305         * mini-ppc.c, cpu-g4.md: set to zero the memory allocated
19306         with localloc if needed. Throe arithmetric exception in
19307         div an rem if needed. Implement ovf checks in OP_LCONV_TO_OVF_I.
19308         Adapted from a patch by Geoff Norton  <gnorton@customerdna.com>.
19309
19310 2004-11-19  Geoff Norton  <gnorton@customerdna.com>
19311
19312         * mini-ppc.c: Call mono_type_get_underlying_type to unwrap generic
19313         types before switching on type.  Fixes #69622.
19314
19315 2004-11-19  Raja R Harinath  <rharinath@novell.com>
19316
19317         * Makefile.am (check-local): New.  Integrate into 'make check'.
19318         (MCS,RUNTIME): Define using in-tree mono and mcs.
19319         (ILASM): New.
19320         (%.exe): Use $(ILASM).
19321
19322 Fri Nov 19 14:54:07 CET 2004 Paolo Molaro <lupus@ximian.com>
19323
19324         * mini-ppc.c: adjust initial prolog size (bug #69691).
19325
19326 2004-11-18  Zoltan Varga  <vargaz@freemail.hu>
19327
19328         * cpu-pentium.md (localloc): Increase max instruction len. Fixes
19329         #69664.
19330
19331 2004-11-17  Raja R Harinath  <rharinath@novell.com>
19332
19333         * Makefile.am (clean-local): Rename from 'clean'.
19334
19335 2004-11-15  Nelae Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
19336
19337         * mini.c, mini-x86.c, mini-amd64.c, exceptions-s390.c: Add siginfo_t parameter
19338         to mono_arch_is_int_overflow. 
19339         * exceptions-s390.c: Add mono_arch_is_int_overflow routine to discern between
19340         SIGFPE events.
19341
19342 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
19343
19344         * declsec.c|h: New files to support declarative security attributes.
19345         Added function to check if a method has (applicable) security.
19346         * mini.c|h: Add check for declarative security attributes in
19347         mono_method_check_inlining.
19348         * Makefile.am: Added declsec.c and declsec.h to the build.
19349
19350 Mon Nov 15 11:53:46 CET 2004 Paolo Molaro <lupus@ximian.com>
19351
19352         * mini.c, mini.h: update to keep dynamic code info per-domain.
19353
19354 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
19355
19356         * mini.c mini-*.h: Get rid of MONO_ARCH_HAVE_RETHROW since all architectures support it now.
19357         (mini_init): Get rid of it from here too.
19358
19359 Thu Nov 11 20:17:17 CET 2004 Paolo Molaro <lupus@ximian.com>
19360
19361         * mini-ppc.c, mini-ppc,h, cpu-g5.md, exceptions-ppc.c:
19362         implemented OP_RETHROW (patch by Geoff Norton
19363         <gnorton@customerdna.com>).
19364
19365 2004-11-10  Geoff Norton  <gnorton@customerdna.com>
19366
19367         * tramp-ppc.c (ppc_magic_trampoline): Don't trampoline methods
19368         between appdomains.  Fixes appdomain-unload on PPC.
19369
19370 2004-10-26  Lluis Sanchez Gual  <lluis@novell.com>
19371
19372         * exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
19373         mini-exceptions.c: handle the new wrapper types.
19374         * mini.c: The CEE_ISINST and CEE_CASTCLASS opcodes now take the
19375         token value as a MonoClass* when compiling a wrapper.
19376         mono_jit_create_remoting_trampoline now takes an additional
19377         MonoRemotingTarget parameter.
19378         
19379 2004-11-10  Martin Baulig  <martin@localhost>
19380
19381         * mini.c (mono_method_to_ir): Use `generic_container->context'
19382         rather than creating a new one.
19383
19384 2004-11-09  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
19385
19386         * exceptions-s390.c, mini-s390, cpu-s390.md: Add support for OP_RETHROW.
19387
19388         * inssel-390.md, mini-s390.c: Correct register allocation for globals.
19389
19390 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
19391
19392         * aot.c (mono_aot_init): Add MONO_AOT_CACHE env variable to turn on
19393         the experimental aot cache stuff.
19394
19395 Tue Nov 9 17:30:20 CET 2004 Paolo Molaro <lupus@ximian.com>
19396
19397         * aot.c, mini.c, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
19398         mini-exceptions.c: update to exception clause structure changes.
19399
19400 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
19401
19402         * exceptions-x86.c (throw_exception): Fix warnings.
19403
19404         * mini-x86.h mini-x86.c cpu-pentium.md exceptions-x86.c: Add support 
19405         for OP_RETHROW.
19406
19407 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
19408
19409         * exceptions-sparc.c (get_throw_exception): Really fix this.
19410
19411 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
19412
19413         * tramp-*.c: we no longer support icalls without wrappers, so
19414         a bit of code can be removed here
19415
19416 2004-11-07  Zoltan Varga  <vargaz@freemail.hu>
19417
19418         * exceptions-sparc.c (get_throw_exception): Fix more bugs in previous
19419         patch.
19420
19421         * cpu-sparc.md: Add op_rethrow.
19422
19423         * exceptions-sparc.c (get_throw_exception): Fix bug in previous patch.
19424
19425         * mini-sparc.h mini-sparc.c exceptions-sparc.c: Add support for OP_RETHROW.
19426
19427         * mini.h: Add mono_arch_get_rethrow_exception () arch specific function.
19428         * mini-ops.h: Add OP_RETHROW.
19429
19430         * mini.c inssel.brg: Distinguish between THROW and RETHROW.
19431
19432         * cpu-amd64.c mini-amd64.c exceptions-amd64.c: Add support for OP_RETHROW.
19433
19434 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
19435         
19436         * helpers.c: Change otool arguments from -V -v -t to -v -t on Darwin
19437         Makes the output much easier to read
19438
19439 2004-11-05  Ben Maurer  <bmaurer@ximian.com>
19440
19441         * ssa.c: allocate MonoMethodVar.uses from the mempool. First, this
19442         prevents another huge leak when compiling with ssa. Secondly, the
19443         performance of doing this rather than freeing the lists is much
19444         better. GList does a lock every time you allocate a list link,
19445         so that it can use a memory pool. So, it is better to just use
19446         a memory pool of our own.
19447         
19448         * ssa.c, linear-scan.c: replace g_list_remove_link with
19449         g_list_delete.  The remove one does not free the GList, so we were
19450         leaking memory. On -O=all --compile-all with corlib, this cut down
19451         3 MB of allocations.
19452
19453 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
19454
19455         * tramp-sparc.c (mono_arch_create_jit_trampoline): Fix sparc build.
19456
19457         * tramp-amd64.c (mono_arch_create_jit_trampoline): Fix amd64 build.
19458
19459         * mini.h mini.c tramp-*.c: Moved xp parts of JIT trampoline creation
19460         into a new function mono_create_jit_trampoline ().
19461
19462 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
19463
19464         * trace.c (get_spec): Allow tracing of classes without a namespace.
19465
19466 2004-11-02  Sebastien Pouliot  <sebastien@ximian.com>
19467
19468         * mini.c: Fix pointer overwrite in mini_method_compile.
19469
19470 2004-11-2  Geoff Norton  <gnorton@customerdna.com>
19471
19472         * inssel-ppc.brg (OP_OUTARG_VT (CEE_LDOBJ (base))):
19473         The darwin ABI needs some special handling for 1 and 2 byte structs
19474         Lets use lbz/lhz instead of lwz everywhere.
19475         * mini-ppc.c (calculate_sizes):  The Darwin ABI needs from special handling
19476         for 1 and 2 byte structs and struct which are size >= 3 || size % 4 != 0.
19477         Use stb/sth for the former, and put the latter always on stack instead of in
19478         argument registers.
19479
19480 2004-10-30  Zoltan Varga  <vargaz@freemail.hu>
19481
19482         * trace.c (is_filenamechar): Add '_'.
19483
19484 2004-10-29  Neale Ferguson  <Neale.Ferguson@SoftwareAG-usa.com>
19485
19486         * mini-s390.c: Fix prolog length to allow for large trace requirements.
19487
19488         * exceptions-s390.c: Remove dwarf unwinding stuff that was unused.
19489
19490 2004-10-29  Zoltan Varga  <vargaz@freemail.hu>
19491
19492         * Makefile.am (libgc_libs): Do some automake magic so libmono/mono
19493         depends on libmonogc. Fixes #68805.
19494
19495 2004-10-26  Miguel de Icaza  <miguel@ximian.com>
19496
19497         * mini.c (mono_jit_free_method): Provide extra information for
19498         this error.  Currently this leaks, but will be turned into a
19499         developer option in the future.
19500
19501 2004-10-26  Zoltan Varga  <vargaz@freemail.hu>
19502
19503         * driver.c (mono_main): Applied patch from Willibald Krenn <willibald.krenn@gmx.at>. Make --graph work for icalls and pinvoke methods.
19504
19505 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
19506
19507         * aot.c (mono_aot_load_method): Align PATCH_INFO_R8 on an 8 byte 
19508         boundary. Fixes reading of PATCH_INFO_R4 and R8.
19509         (mono_aot_load_method): Do not allocate MonoAotMethod in the GC heap.
19510
19511 2004-10-24  Zoltan Varga  <vargaz@freemail.hu>
19512
19513         * mini-amd64.c (mono_arch_patch_code): Fix patching of class init
19514         trampolines for AOT code.
19515
19516 2004-10-22    <vargaz@freemail.hu>
19517
19518         * aot.c (mono_compile_assembly): Disable AOT for methods containing calls to methods of
19519         constructed types. Fixes #68136.
19520
19521 2004-10-21  Martin Baulig  <martin@ximian.com>
19522
19523         * exceptions-x86.c (throw_exception): Call mono_debugger_throw_exception();
19524         if it returns true, unwind the stack to the call instruction.
19525
19526 2004-10-21    <vargaz@freemail.hu>
19527
19528         * aot.c: Reorganize the AOT file format to avoid relocations. Fix warnings.
19529
19530         * mini.h: Bump AOT version number.
19531
19532         * objects.cs: Add another test for unbox trampolines.
19533
19534         * tramp-amd64.c (amd64_magic_trampoline): Disable patching of trampolines for 
19535         valuetype methods.
19536
19537 2004-10-20    <vargaz@freemail.hu>
19538
19539         * driver.c: Add SHARED to the set of optimizations tested.
19540
19541         * tramp-amd64.c (amd64_magic_trampoline): Patch trampoline code as well.
19542
19543         * mini.c (mono_method_to_ir): Mark the domainvar as volatile when it is implicitly
19544         used by CEE_NEWARR.
19545
19546         * ssa.c (mono_ssa_deadce): Do not optimize away accesses to volatile variables.
19547
19548 2004-10-20  Martin Baulig  <martin@ximian.com>
19549
19550         * mini-exceptions.c (mono_handle_exception): Call
19551         mono_debugger_handle_exception() to tell the debugger about
19552         catch/finally clauses.
19553
19554 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
19555
19556         * exceptions-amd64.c (mono_arch_find_jit_info): Pop arguments of the stack.
19557
19558         * mini-amd64.c (mono_amd64_get_vcall_slot_addr): Handle extended registers. Fixes
19559         #68447.
19560
19561 2004-10-15  Geoff Norton  <gnorton@customerdna.com>
19562
19563         * mini-ppc.c (calculate_sizes): Marshal valuetypes for pinvoke
19564         methods as their native size, fixed bug #57543, #57545.
19565         * mini-ppc.c (mono_arch_output_basic_block): Use mulli for imm16 types
19566         This saves a temporary register and mullw call down into 1 (minor perf
19567         increase for cases like sum = sum * 5;  This use to translate into:
19568             li r11,5
19569             mullw r28,r28,r11
19570         It now translates to
19571             mulli r28,r28,5
19572
19573 2004-10-15  Zoltan Varga  <vargaz@freemail.hu>
19574
19575         * trace.c (mono_trace_eval): Use mono_method_desc_full_match. Fixes
19576         #68388.
19577
19578 2004-10-11  Martin Baulig  <martin@ximian.com>
19579
19580         * mini.c (mono_method_to_ir): If we're a generic method, get the
19581         MonoGenericContainer from our MonoMethodNormal and create a
19582         MonoGenericContext from it.
19583
19584 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
19585
19586         * inssel-long32.brg (OP_LCONV_TO_OVF_I2): Fix CONV_I1 -> CONV_I2.
19587
19588         * basic-long.cs: Add test for checked i8->i2 cast.
19589
19590 Wed Oct 6 12:40:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
19591
19592         * inssel-ppc.brg: added a couple of speedup rules.
19593
19594 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
19595
19596         * Makefile.am (genmdesc_LDADD): Don't link this against libmetadata
19597         to speed up rebuilds.
19598
19599 2004-10-04  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
19600
19601         * mini-s390.c: Minor fix to OP_OR_IMM.
19602
19603 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
19604
19605         * tramp-sparc.c (sparc_magic_trampoline): Handle appdomain stuff
19606         better. Fixes appdomain-unload.exe on sparc.
19607
19608 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
19609
19610         * ssa.c: Fixed casts to unsigned where the value was of 64 bits in
19611         simulate_long_compare, patch by will@exomi.com (Ville-Pertti Keinonen),
19612         see bug 67324.
19613
19614 2004-10-02  Zoltan Varga  <vargaz@freemail.hu>
19615
19616         * jit-icalls.c: Handle a nonexisting trunc function more correctly.
19617
19618 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
19619
19620         * mini.c: Always generate a field read/write wrapper for members
19621         of the class MarshalByRefObject since the actual instance could
19622         be a CBO.
19623
19624 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
19625
19626         * mini.c: Use mono_thread_exit() to stop threads, instead of ExitThread.
19627
19628 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
19629
19630         * driver.c mini.h trace.c: Move the setting of the main assembly into
19631         a separate function called mono_trace_set_assembly () and call it after
19632         actually loading the main assembly. Fixes #66872.
19633
19634 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
19635
19636         * mini-amd64.h mini-amd64.c tramp-amd64.c: Allocate trampoline memory
19637         using the code manager.
19638
19639 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
19640
19641         * tramp-amd64.c mini-amd64.h: Add support for MONO_ARCH_HAVE_INVALIDATE_METHOD.
19642
19643 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
19644
19645         * cpu-amd64.md: Fix bug in previous patch.
19646         
19647         * cpu-amd64.md: Fix instruction lengths of membase opcodes. Fixes
19648         #66650.
19649
19650 Wed Sep 22 19:03:20 CEST 2004 Paolo Molaro <lupus@ximian.com>
19651
19652         * mini.h, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
19653         mini-exceptions.c: updates for changed stack walk interface.
19654
19655 2004-09-21  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
19656
19657         * mini-s390.c, cpu-s390.md: Minor changes to OP_ARGLIST handling
19658
19659 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
19660
19661         * mini.c (mono_method_to_ir): Fix LDSTR in dynamic methods. Fixes #66132.
19662
19663 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
19664
19665         * driver.c (mini_regression_list): Do not call mono_assembly_close 
19666         since assemblies can't be unloaded.
19667         
19668 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
19669
19670         * cpu-amd64.md: Fix more instruction lengths.
19671
19672         * cpu-amd64.md: Fix lengths of some instructions.
19673
19674 2004-09-11 Ben Maurer  <bmaurer@users.sourceforge.net>
19675
19676         * inssel.brg: Make the array ldelema check aot friendly.
19677
19678 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
19679
19680         * mini-amd64.c (mono_arch_get_argument_info): Fix stack_unwind test.
19681
19682         * cpu-amd64.md inssel-long.brg inssel-amd64.brg: Small optimizations.
19683
19684 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
19685
19686         * mini-x86.c: Fix build.
19687
19688         * mini-sparc.c mini-x86.c mini-amd64.c: Use the new 
19689         mono_type_get_underlying_type () helper function to simplify code.
19690         
19691 2004-09-09  Martin Baulig  <martin@ximian.com>
19692
19693         * mini-amd64.c: Don't access `type->data.klass' directly, call
19694         mono_class_from_mono_type() instead since the type may be a
19695         generic instance.
19696
19697 2004-09-09  Martin Baulig  <martin@ximian.com>
19698
19699         * mini-amd64.c (get_call_info): Fix support for generic instances.
19700         (add_valuetype): Use mono_class_from_mono_type() to get the class
19701         since we can be a generic instance.
19702
19703 Thu Sep 9 01:43:53 PDT 2004 Paolo Molaro <lupus@ximian.com>
19704
19705         * mini-ppc.c, mini.h, regalloc.c, regalloc.h: powerpc speedups.
19706
19707 2004-09-07 Ben Maurer  <bmaurer@users.sourceforge.net>
19708
19709         * liveness.c: reset spill costs on each scan: bug 62107
19710
19711 2004-09-07  Bernie Solomon  <bernard@ugsolutions.com>
19712
19713         * exceptions-sparc.c (mono_arch_find_jit_info): remove
19714         unnecessary line that doesn't compile
19715
19716 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
19717
19718         * mini.c mini.h mini-x86.h tramp-x86.c: Instead of freeing delegate
19719         trampolines, make them call an error function so people can fix their
19720         code.
19721
19722 2004-09-06  Martin Baulig  <martin@ximian.com>
19723
19724         * mini.c (mono_method_to_ir): When initializing locals, handle a
19725         generic instances like a valuetype if it's a valuetype and like a
19726         class if it's a class.
19727
19728 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
19729
19730         * exceptions-x86.c (mono_arch_find_jit_info): Pop arguments off the
19731         stack. Fixes #64674.
19732
19733         * exceptions.cs: Add test for unwinding of call arguments.
19734
19735 Mon Sep 6 05:50:02 PDT 2004 Paolo Molaro <lupus@ximian.com>
19736
19737         * mini-*.c, mini-ops.h, inssel-long32.brg: introduced
19738         OP_ADDCC_IMM and OP_SUBCC_IMM (add/sub immediate that will
19739         set the carry/borrow flag). The sparc and s390 implementations
19740         can now use optimized versions (and simplify the code). ppc bugfixes.
19741
19742 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
19743
19744         * exceptions-ppc.c (mono_arch_find_jit_info): Fix memory leak.
19745
19746 2004-09-05  Zoltan Varga  <vargaz@freemail.hu>
19747
19748         * inssel-amd64.brg: Remove leftover 32 bit rule.
19749
19750         * mini-amd64.c (mono_arch_instrument_prolog): Fix tracing support.
19751
19752 2004-09-04  Zoltan Varga  <vargaz@freemail.hu>
19753
19754         * mini-exceptions.c (mono_find_jit_info): Refactor common code from
19755         mono_arch_find_jit_info functions into a new function. Fix a memory
19756         leak.
19757
19758         * exceptions-x86.c exceptions-amd64.c exceptions-sparc.c: Remove
19759         refactored code.
19760         
19761 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
19762
19763         * exceptions.cs inssel-long32.brg: Handle the OP_LCONV_TO_OVF_I2 case
19764         as well.
19765         
19766         * exceptions.cs: Add array size tests.
19767
19768         * mini.c: Allocate a separate icall wrapper for each arity of 
19769         mono_array_new_va. Fixes #59509.
19770
19771         * exceptions.cs: Add testcase for 64578.
19772
19773         * inssel-long32.brg: Fix OP_LCONV_TO_OVF_I1 rule. Fixes #64578.
19774
19775         * trace.c (is_filenamechar): Allow 0..9 in strings. Fixes #65094.
19776         
19777 2004-09-02  Martin Baulig  <martin@ximian.com>
19778
19779         * mini.c (mono_method_to_ir): When initializing the locals, call
19780         handle_initobj() on the generic instance itself, not its
19781         underlying type.
19782
19783 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
19784
19785         * mini.h (MonoJitDynamicMethodInfo): New structure, extension of 
19786         MonoJitInfo for dynamic methods.
19787
19788         * mini.c: Rename trampoline_hash_mutex to jit_mutex.
19789
19790         * mini.c: Add support for freeing JIT data for dynamic methods.
19791         
19792 2004-09-01  Martin Baulig  <martin@ximian.com>
19793
19794         * mini-x86.c (is_regsize_var): Added support for generic
19795         instances.
19796         (mono_arch_emit_prolog): Make this compile again, use
19797         `x86_push_imm_template (code)'.
19798
19799 2004-08-30 Ben Maurer  <bmaurer@users.sourceforge.net>
19800
19801         * mini-x86.c: make all push_imm instructions that get
19802         patched always emit the long form
19803
19804 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
19805
19806         * mini.c (mono_create_jump_trampoline): Store the jump trampolines 
19807         in a per-domain hash.
19808
19809         * mini-amd64.c (merge_argument_class_from_type): Handle generic
19810         types.
19811
19812 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
19813
19814         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: Ongoing SSE
19815         work.
19816         
19817         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: More SSE
19818         work.
19819
19820         * mini-amd64.c cpu-amd64.md: Implement checked int<->uint casts.
19821         Beginnings of SSE2 support.
19822
19823         * exceptions.cs: Add more tests for checked int<->uint casts.
19824
19825 2004-08-28  Martin Baulig  <martin@ximian.com>
19826
19827         * mini-x86.c (mono_arch_instrument_epilog): Added support for
19828         generic instances.
19829
19830         * mini.c
19831         (mono_type_to_ldind, mono_type_to_stind, type_to_eval_stack_type):
19832         Handle generic instances recursively.
19833
19834 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
19835
19836         * iltests.il: test for conv.u8 on a constant
19837
19838 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
19839
19840         * inssel-long32.brg: c&p rules for LCONV_x4 (membase) and
19841         LCONV_x4 (shrun_32 (membase)).
19842
19843 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
19844
19845         * inssel-x86.brg: c&p rules for push/setret of long
19846
19847 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
19848
19849         * inssel-x86.brg: c&p rules for compare (base, regvar) and
19850         compare (regvar, base)
19851
19852         * inssel-x86.brg: more burg love
19853
19854         * inssel.brg: more cleanup
19855
19856         * inssel-x86.brg, inssel-long32.brg: burg cleanup.
19857
19858 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
19859
19860         * basic-long.cs, basic-calls.cs: new tests for optimization.
19861
19862 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
19863
19864         * mini-amd64.c (read_tls_offset_from_method): Fix typo in previous
19865         patch.
19866
19867 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
19868
19869         * mini-amd64.c (read_tls_offset_from_method): Add another case.
19870         
19871 2004-08-25  Bernie Solomon  <bernard@ugsolutions.com>
19872
19873         * inssel.brg (mini_emit_memcpy): use 
19874         NO_UNALIGNED_ACCESS to disable memcpy optimization
19875
19876 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
19877
19878         * mini-amd64.c: Handle generic types in various places.
19879
19880         * mini.c (mono_method_to_ir): Handle generic types in init locals.
19881
19882 2004-08-24  Zoltan Varga  <vargaz@freemail.hu>
19883
19884         * mini.c (handle_box): Fix warning.
19885
19886         * mini-amd64.c (mono_arch_local_regalloc): Fix regalloc problem.
19887
19888         * mini-amd64.h: Enable the emit_state optimization.
19889
19890         * mini-ops.h cpu-amd64.md: Add new amd64_test_null opcode.
19891
19892         * mini-amd64.c: Add some new 64 bit peephole opts.
19893
19894         * inssel.brg (mini_emit_memcpy): Optimize for 64 bit architectures.
19895
19896         * cpu-amd64.md: sreg1 of div instructions must be %rax.
19897
19898         * mini-amd64.c: Register allocator fixes.
19899
19900         * mini.c: Add an optimization to emit_state to avoid allocation of new
19901         registers on some platforms.
19902
19903 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
19904
19905         * inssel-x86.brg inssel-amd64: Add yet another missing tree->dreg assignment.
19906
19907         * mini-x86.c (mono_arch_local_regalloc): Fix bug in long register
19908         allocation. Fixes #63085.
19909
19910         * basic-long.cs: Add new regression test.
19911
19912         * mini-amd64.c: Register allocator improvements.
19913
19914 2004-08-21  Zoltan Varga  <vargaz@freemail.hu>
19915
19916         * mini-amd64.c (read_tls_offset_from_method): Add another code
19917         sequence.
19918
19919         * tramp-amd64.c (amd64_class_init_trampoline): Use a more efficient
19920         instruction sequence for nullifying class init trampolines.
19921
19922         * objects.cs: Add new regalloc test.
19923
19924         * mini-amd64.c inssel-amd64.brg: Optimize parameter passing.
19925
19926 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
19927
19928         * mini-amd64.c (mono_arch_call_opcode): Refactor this a little.
19929         
19930         * mini-amd64.c (mono_arch_regalloc_cost): Adjust regalloc costs for
19931         arguments.
19932
19933         * driver.c: Fix profiling after TLS changes.
19934         
19935         * driver.c (mono_main): Set mono_stats.enabled if needed.
19936
19937         * mini.c (handle_alloc): New helper function used by CEE_NEWOBJ and
19938         CEE_BOX.
19939
19940 2004-08-20 Ben Maurer  <bmaurer@users.sourceforge.net>
19941
19942         * mini-x86.c: use a 1 op rather than a 2 op tls access
19943         instruction -> faster.
19944
19945 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
19946
19947         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from
19948         x86 backend.
19949
19950 2004-08-19 Bernie Solomon <bernard@ugsolutions.com>
19951
19952         * exceptions-sparc.c (throw_exception): fix typo
19953
19954 2004-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
19955
19956         * mini-x86.c, cpu-pentium.md, inssel-x86.brg:
19957         set tree->dreg correctly with tls. Allow any
19958         register to be used.
19959
19960         * mini-x86.c (read_tls_offset_from_method): add new code
19961         generation pattern seen with GCC.
19962
19963
19964 Thu Aug 19 17:26:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
19965
19966         * mini-exceptions.c, exceptions-x86.c, exceptions-amd64.c,
19967         exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
19968         exceptions-sparc.c: fix some performance issues in exception
19969         handling and setting of the stack trace for exceptions that were
19970         already thrown.
19971
19972 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
19973
19974         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from 
19975         x86 backend.
19976         
19977         * mini-amd64.c (mono_arch_is_int_overflow): Handle all possible 
19978         registers.
19979
19980 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
19981
19982         This patch inlines tls access, when possible.
19983         
19984         * mini.h: new arch functions for TLS intrinsics.
19985         All platforms updated with a stub.
19986
19987         * mini.c: use the new intrinsics
19988
19989         * mini-x86.c, cpu-pentium.md, inssel-x86.brg, mini-ops.h:
19990         arch specific intrinsic for tls variables
19991
19992 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
19993
19994         * Makefile.am (libmono_la_LDFLAGS): Enable creating of libmono dll
19995         under windows.
19996
19997 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
19998
19999         * mini.c: thread local allocation
20000
20001 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
20002
20003         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Enable.
20004
20005         * Makefile.am: Link against the static version of libmonogc.
20006         
20007         * Makefile.am: Link the static versions of the convenience libraries
20008         into the mono executable.
20009
20010         * mini-x86.h mini-x86.c: Throw the correct exception on integer overflow.
20011
20012 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
20013
20014         * mini.h mini.c mini-amd64.h mini-amd64.c: Throw the correct exception
20015         on integer overflow.
20016
20017         * mini-amd64.c: Reorganize function call code.
20018
20019         * mini-amd64.c (peephole_pass): Merge changes from mini-x86.c.
20020
20021 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
20022
20023         * inssel-x86.brg: use xor eax,eax.
20024         
20025         * basic.cs: new tests
20026
20027 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
20028
20029         * mini-amd64.c (mono_arch_emit_epilog): Use RIP relative addressing
20030         in exception throwing code.
20031         
20032 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
20033
20034         * inssel-x86.brg: use xor esi,esi.
20035
20036 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
20037
20038         * driver.c (mono_main): Call mono_trace_parse_options earlier so it
20039         can trace methods compiled during mini_init () too.
20040
20041         * cpu-amd64.md mini-amd64.c (mono_arch_output_basic_block): Handle 
20042         CEE_CONV_U4.
20043
20044 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
20045
20046         * Makefile.am: static link on x86 (r=zoltan)
20047
20048 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
20049
20050         * tramp-amd64.c (amd64_magic_trampoline): Avoid patching the trampoline
20051         code since it causes some programs to fail.
20052
20053 2004-08-12  Zoltan Varga  <vargaz@freemail.hu>
20054
20055         * mini-amd64.c (bb_is_loop_start): Merge changes from mini-x86.c.
20056
20057 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
20058
20059         * mini.c: ovfops_op_map - add STACK_OBJ case for
20060         CONV_I 
20061         * basic.cs: add test_0_pin_string as test
20062         case for above.
20063
20064 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
20065
20066         * Makefile.am: build C# if srcdir != builddir
20067
20068 Tue Aug 10 19:23:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
20069
20070         * dominators.c, mini.h, mini-x86.c: fix loop alignment with
20071         fall-through blocks.
20072
20073 Tue Aug 10 16:18:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
20074
20075         * driver.c: enable loop by default again and include abcrem in -O=all.
20076
20077 2004-08-08  Zoltan Varga  <vargaz@freemail.hu>
20078
20079         * iltests.il: Add some localloc tests.
20080
20081         * mini.c (mono_method_to_ir): Set stack type of LOCALLOC correctly.
20082
20083         * inssel-amd64.brg inssel-x86.brg: Set dreg of LOCALLOC correctly. 
20084         Fixes #62574.
20085
20086         * inssel-amd64.brg: Add some optimizations.
20087
20088         * mini-amd64.c (mono_arch_setup_jit_tls_data): Add tls offset detection
20089         for gcc-3.4.
20090
20091         * Makefile.am: Statically link mono against libmono on AMD64.
20092         
20093         * mini-amd64.c inssel-amd64.brg: Optimizations.
20094
20095 2004-08-07  Zoltan Varga  <vargaz@freemail.hu>
20096
20097         * mini-amd64.c (mono_arch_emit_prolog): Optimize lmf saving a bit.
20098
20099         * tramp-amd64.c: Patch calling code in trampolines.
20100
20101 2004-08-06  Zoltan Varga  <vargaz@freemail.hu>
20102
20103         * mini-amd64.c: pinvoke struct passing fixes.
20104
20105 2004-08-05  Bernie Solomon  <bernard@ugsolutions.com>
20106
20107         * mini-sparc.c: redo change, make mono_arch_cpu_init call
20108         mono_arch_cpu_optimizazions so sparcv9 is initialized when embedded
20109
20110 2004-08-05  Duncan Mak  <duncan@ximian.com>
20111
20112         * mini.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
20113         CEE_LDELEM_ANY.
20114
20115 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
20116
20117         * mini-amd64.c (emit_move_return_value): Move return value for normal
20118         calls too.
20119
20120 2004-08-05  Martin Baulig  <martin@ximian.com>
20121
20122         * mini.c (ret_type_to_call_opcode): Don't use a `t' variable for
20123         `type->type'; just modify `type' itself when dealing with enums
20124         and generic instances.
20125         (check_call_signature): Make `simple_type' a `MonoType *'.
20126
20127 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
20128
20129         * mini.c: Use OP_PADD to add offsets to addresses.
20130
20131         * mini-amd64.h: Disable SIGSEGV_ON_ALTSTACK.
20132
20133 2004-08-04  Bernie Solomon  <bernard@ugsolutions.com>
20134
20135         * mini-sparc.c (mono_arch_emit_epilog): fix check
20136         for folding last op into restore instruction
20137
20138 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
20139
20140         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Allocate
20141         helper methods using the code manager.
20142         
20143         * exceptions-amd64.c (mono_arch_get_throw_exception): Fix maximum length.
20144
20145         * mini-amd64.c (mono_arch_allocate_vars): Fix tls offset detection.
20146
20147 Tue Aug 3 23:50:00 EST 2004 Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
20148         
20149         * mini-s390x.c mini-s390x.h tramp-s390x.c inssel-s390x.brg
20150           cpu-s390x.md exceptions-s390x.c Makefile.am: S/390 64-bit JIT
20151
20152         * mini-s390.c: fix tail processing
20153
20154 Tue Aug 3 01:35:44 PDT 2004 Paolo Molaro <lupus@ximian.com>
20155
20156         * mini-ppc.c: mul.ovf.un exception name fix.
20157
20158 2004-08-03  Martin Baulig  <martin@ximian.com>
20159
20160         * mini-x86.c (mono_arch_call_opcode): Correctly handle generic
20161         instances; before jumping to `handle_enum', also modify `ptype'.
20162
20163 2004-08-02  Bernie Solomon  <bernard@ugsolutions.com>
20164
20165         * cpu-sparc.md: fcall maximal length too small.
20166
20167 2004-08-02  Zoltan Varga  <vargaz@freemail.hu>
20168
20169         * mini-amd64.c mini.h: Add initial support for passing/returning 
20170         structures to/from pinvoked methods.
20171
20172 Mon Aug 2 11:59:35 PDT 2004 Paolo Molaro <lupus@ximian.com>
20173
20174         * mini-ppc.c: reg allocator fix.
20175
20176 2004-07-31  Zoltan Varga  <vargaz@freemail.hu>
20177
20178         * mini-amd64.c (mono_arch_output_basic_block): Fix OP_X86_PUSH_OBJ.
20179
20180         * inssel.brg: Optimize memset on 64 bit machines.
20181
20182         * mini-amd64.c: Fix some vararg cases.
20183
20184 2004-07-30  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
20185
20186         * mini-s390.c: Corrected macro in emit_float_to_int
20187
20188         * s390-abi.cs: Tests to exercise the s390 ABI
20189
20190 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
20191
20192         * exceptions-amd64.c (mono_arch_find_jit_info): Fix restoring of
20193         caller saved regs.
20194
20195         * basic.cs: Add a test for add.ovf.un.
20196
20197 2004-07-30  Bernie Solomon  <bernard@ugsolutions.com>
20198
20199         * mini-sparc.c: add case for OP_IDIV_UN
20200
20201 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
20202
20203         * mini-amd64.c mini-amd64.h mini.c: Add support for vararg pinvoke calls.
20204         
20205         * mini-amd64.c cpu-amd64.md: Ongoing JIT work.
20206
20207 2004-07-30  Ben Maurer  <bmaurer@ximian.com>
20208
20209         * basic.cs: regression tests.
20210
20211         * inssel-x86.brg: Disable cmp BYTE PTR [eax], imm, it causes various
20212         regressions.
20213
20214 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
20215
20216         * basic.cs: Add a new test.
20217
20218         * mini-amd64.c aot.c cpu-amd64.md: Add support for tracing, profiling 
20219         and AOT. Various fixes and optimizations.
20220
20221         * inssel.brg (CALL_REG): Add 64 bit versions of call_reg rules.
20222
20223 Fri Jul 30 15:49:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
20224
20225         * mini-ppc.c: make sure temp regs are not used for global reg
20226         allocation.
20227
20228 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
20229
20230         * cpu-sparc.md: conv_i8 fix for 64bits
20231
20232         * mini-sparc.c: add cases for OP_IXXX codes for 64bits
20233
20234 2004-07-29  Ben Maurer  <bmaurer@ximian.com>
20235         
20236         * cpu-pentium.md, mini-x86.c, inssel-x86.brg, mini-ops.h:
20237         add opcode for cmp BYTE PTR [eax], imm.
20238
20239         * inssel.brg: Make memcpy and memset takes bases.
20240
20241 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
20242
20243         * *-amd64.*: More AMD64 work.
20244         
20245 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
20246
20247         * cpu-pentium.md, inssel-x86.brg, mini-ops.h, mini-x86.c:
20248         add a compare-not-equal opcode.
20249         
20250 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
20251
20252         * mini.c: Use mono_init_from_assembly instead of mono_init.
20253         
20254 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
20255
20256         * mini.c: Fix opcode mapping for STACK_MP on 64 bit platforms.
20257
20258         * mini.c (CEE_NEWOBJ): Call mono_array_new_va using the correct signature.
20259
20260         * mini.c: Use MONO_ARCH_SIGACTION on AMD64 as well.
20261
20262         * inssel.brg: 64 bit fixes.
20263
20264         * mini.h (MonoCallInst): Add some AMD64 specific data.
20265
20266         * mini.h: Add some OP_P opcodes.
20267
20268 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
20269
20270         * basic.cs: tests for 61797 and 61740
20271
20272 Tue Jul 27 16:05:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
20273
20274         * mini-ppc.c, mini-sparc.c, mini-s390.c: keep track of line
20275         numbers in the debug info (spotted by Geoff Norton, <gnorton@customerdna.com>).
20276
20277 2004-07-24  Zoltan Varga  <vargaz@freemail.hu>
20278
20279         * mini-sparc.c (mono_arch_output_basic_block): Add CEE_CONV_U8/I8.
20280
20281         * *-amd64*.*: Ongoing AMD64 work.
20282
20283 2004-07-23 Zoltan Varga <vargaz@freemail.hu>
20284
20285         * inssel-long.brg: Implement CONV_I8/CONV_U8 in the backends.
20286
20287         * *-amd64*: Ongoing AMD64 work.
20288
20289         * mini-arch.h: Add AMD64 support.
20290
20291         * mini-sparc.c (mono_arch_is_inst_imm): New arch dependent function.
20292
20293         * mini.h: Add new arch dependent function mono_arch_is_inst_imm.
20294
20295         * mini-ops.h: Add new opcodes.
20296
20297         * Makefile.am: Add AMD64 support.
20298
20299         * inssel.brg inssel-long32.brg inssel-long.brg: Move mul/div and shift
20300         rules into the inssel-long*.brg files.
20301
20302         * *-amd64.*: Add beginnings of AMD64 backend.
20303
20304 2004-07-22  Ben Maurer  <bmaurer@ximian.com>
20305
20306         * mini.c (print_dfn): commenting out the code that prints
20307         the cil. With -O=deadce, this makes -v -v crash.
20308         
20309         * cpu-pentium.md: make checkthis have a length of 2
20310
20311 2004-04-21  Bernie Solomon  <bernard@ugsolutions.com>
20312
20313         * mini-sparc.h: fix implementations of __builtin
20314         functions for Sun compiler for V9.
20315
20316 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
20317
20318         * mini.c: use the new stelem.ref wrapper
20319         * exceptions.cs, arrays.cs: new stelem.ref tests
20320
20321 Wed Jul 14 19:08:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
20322
20323         * mini-ppc.c, exceptions-ppc.c: cleanups and fixes (the
20324         new XSP should work with these changes).
20325
20326 2004-07-14  Ben Maurer  <bmaurer@ximain.com>
20327         
20328         * inssel-{long32,x86,}.brg: trivial optimizations.
20329         
20330 Mon Jul 12 20:25:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
20331
20332         * mini.c: load value when emitting box operation in
20333         constrained calls.
20334
20335 2004-07-12  Ben Maurer  <bmaurer@ximian.com>
20336
20337         * mini-x86.c (OP_CHECK_THIS): cmp DWORD PTR [eax], eax
20338         is one byte shorter than cmp DWORD PTR [eax], 0.
20339
20340 Mon Jul 12 17:47:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
20341
20342         * inssel-ppc.brg: arguments on the stack are always
20343         relative to the stack pointer (spotted by Neale Ferguson).
20344
20345 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20346
20347         * exceptions-x86.c: delay appending the method name to the trace until
20348         after mono_jit_info_table_find is called, as this gets the real
20349         MonoMethod.
20350
20351 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
20352
20353         * aot.c: register roots
20354
20355 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
20356
20357         * aot.c : I could just use PLATFORM_WIN32 flag.
20358
20359 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
20360
20361         * aot.c : Reverting the previous fix. This time it broke linux build.
20362
20363 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
20364
20365         * aot.c : quick cygwin build fix. mkdir() with two args does not exist.
20366
20367 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
20368
20369         * mini.c (handle_stack_args): Remove some more debugging code.
20370         
20371         * mini.c (handle_stack_args): Remove debug output left in by mistake.
20372
20373         * driver.c mini.h aot.c: Allow additional options to be specified with
20374         --aot and pass them to mono_compile_assembly.
20375
20376         * aot.c: Add experimental code to AOT compile all loaded assemblies
20377         on demand and save the code into a cache in the filesystem.
20378
20379         * aot.c: Add support for more wrapper methods.
20380         
20381         * mini.c (handle_stack_args): Handle some corner cases. Fixes 
20382         58863.
20383
20384         * cpu-*.md: Remove removed opcodes.
20385
20386         * mini.h mini.c: Move JIT icall handling to icall.c. Replace usage of
20387         CEE_MONO_PROC<x> with CEE_MONO_ICALL. Move registration of marshalling
20388         related icalls to marshal.c.
20389
20390 2004-07-06  Zoltan Varga  <vargaz@freemail.hu>
20391
20392         * mini-ops.h: Add OP_SAVE_LMF and OP_RESTORE_LMF.
20393
20394         * Makefile.am (EXTRA_DIST): Add inssel-long[32].brg.
20395
20396         * inssel.brg: Fix warning. Add rules for SAVE_LMF and RESTORE_LMF.
20397
20398 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
20399         * liveness.c: If liveness is recomputated we need to reset the information
20400         for each variable. This way, if the liveness range has been narrowed
20401         by optimizations that happened after the last computation, we can return
20402         a smaller range.
20403         
20404         For example, if you have
20405         
20406         {
20407                 int i = 0;
20408                 
20409                 // Tons of code that does not affect i
20410                 
20411                 i = foo ();
20412                 ...
20413         }
20414         
20415         i = 0 is dead code and will be removed by SSA. However, when
20416         linear scan gets to the code, i will still appear to be live
20417         throughout the entire block. This prevents good register allocation.
20418
20419 2004-07-06  Martin Baulig  <martin@ximian.com>
20420
20421         * debug-mini.c (mono_debug_init_method): Allow
20422         MONO_WRAPPER_MANAGED_TO_NATIVE wrappers.
20423         (mono_debug_add_icall_wrapper): New method.
20424
20425         * mini.c (mono_icall_get_wrapper): Call mono_debug_add_icall_wrapper().
20426
20427 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
20428
20429         * mini.c (optimize_branches): Fix linking of bblocks in branch->branch
20430         optimization.
20431
20432 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
20433
20434         * aot.c (mono_aot_load_method): Fix loading of debug info.
20435
20436 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
20437
20438         * aot.c: Add logging support.
20439
20440 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
20441
20442         * mini.h: Add prototype for mono_print_method_from_ip.
20443
20444         * mini.c: 64 bit fixes. Use LCOMPARE for comparing longs.
20445
20446         * inssel.brg: 64 bit fixes.
20447
20448         * inssel.brg inssel-long32.brg: Move 32 bit arithmetic rules to 
20449         inssel-long32.brg.
20450
20451         * Makefile.am: Add SPARC64 support.
20452
20453 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
20454
20455         * aot.c: Fix alignment problems on 32 bit platforms.
20456
20457 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
20458
20459         * helpers.c (mono_disassemble_code): Pass -xarch=v9 to assembler on
20460         SPARC64.
20461
20462         * aot.c: Add SPARC64 support. Reorganize patch table to fix alignment
20463         problems.
20464
20465         * mini.h: Bump AOT file version. Some 64 bit fixes.
20466
20467 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
20468
20469         * inssel-sparc.brg: Add new rule to avoid register moves.
20470
20471         * inssel.brg: Add ldind_to_load_membase helper function.
20472
20473 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
20474
20475         * mini.c: OffsetToStringData intrinsic.
20476         
20477 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
20478
20479         * ssa.c: Handle OP_LCOMPARE the same as OP_COMPARE.
20480
20481         * objects.cs exceptions.cs basic.cs basic-long.cs basic-calls.cs: New
20482         regression tests.
20483
20484         * mini-ops.h cpu-sparc.md mini-sparc.h mini-sparc.c exceptions-sparc.c tramp-sparc.c inssel-long.brg: Add SPARC64 support.
20485 Mon Jun 28 18:05:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
20486
20487         * mini.c: reinstated mono_compile_get_interface_var()
20488         on x86, too, since the change breaks the Gtk# build there as well.
20489
20490 Fri Jun 25 17:36:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
20491
20492         * driver.c: remove loop from the default optimizations: it seems to
20493         interact badly with some of the other options (see bug #60613).
20494
20495 2004-06-25  Zoltan Varga  <vargaz@freemail.hu>
20496
20497         * mini.c mini-x86.h mini-x86.c: Applied patch from Guenter Feldmann 
20498         (fld@informatik.uni-bremen.de): Add Solaris x86 support.
20499
20500 Tue Jun 22 21:29:11 CEST 2004 Paolo Molaro <lupus@ximian.com>
20501
20502         * mini-ppc.c, cpu-g4.md: small updates to be able to compile
20503         vararg-using methods.
20504
20505 2004-06-21  Martin Baulig  <martin@ximian.com>
20506
20507         * mini/mini-exceptions.c
20508         (mono_handle_exception): Added `gpointer original_ip' argument.
20509         After calling mono_unhandled_exception(), call
20510         mono_debugger_unhandled_exception() and if that returns true,
20511         restore the context and return.
20512
20513 Mon Jun 21 19:26:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
20514
20515         * mini-ppc.c: prefer the use of relative branches so
20516         they won't need to be patched in aot code (patch from Patrick Beard).
20517
20518 Mon Jun 21 19:03:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
20519
20520         * aot.c: patch from Patrick Beard to make the output assembly
20521         more correct for the MacOSX assembler. Small tweak to
20522         generate sane images on Linux/PPC, too.
20523
20524 Fri Jun 18 18:24:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
20525
20526         * mini.c, mini.h, mini-ppc.c: handle varargs methods with a special
20527         case until bug #59509 is fixed (shows up in #60332).
20528
20529 Tue Jun 15 16:36:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
20530
20531         * mini.c: make sure the needed wrappers are compiled, too, with
20532         precomp.
20533
20534 Mon Jun 14 18:36:08 CEST 2004 Paolo Molaro <lupus@ximian.com>
20535
20536         * driver.c: remove NPTL reference in --version output.
20537
20538 Sun Jun 13 17:25:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
20539
20540         * aot.c: patch from Patrick Beard (pcbeard@mac.com) to
20541         generate valid assembly for the Mach-O assembler.
20542
20543 Sun Jun 13 15:59:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
20544
20545         * driver.c: don't include abcrem in the all optimization specifier
20546         since it slows down jit compilation too much for now.
20547
20548 2004-06-12 Ben Maurer  <bmaurer@users.sourceforge.net>
20549
20550         * mini.c: use BIGMUL only if both operands have the same signage.
20551         * iltests.il: Test for bug 60056. (errors related to signage in
20552         BIGMUL).
20553
20554         r=lupus.
20555
20556 Thu Jun 10 16:06:42 CEST 2004 Paolo Molaro <lupus@ximian.com>
20557
20558         * mini.c, aot.c: memory leak fixes.
20559
20560 Tue Jun 8 16:37:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
20561
20562         * inssel-long32.brg: implemented a few missing ulong cast opcodes.
20563
20564 Tue Jun 8 15:36:30 CEST 2004 Paolo Molaro <lupus@ximian.com>
20565
20566         * Makefile.am: remove the -static hack completely, it links in
20567         statically glib as well.
20568
20569 Sat Jun 5 16:32:33 CEST 2004 Paolo Molaro <lupus@ximian.com>
20570
20571         * iltests.il, mini.c: fixed bug#59580 in branch optimization.
20572         * exceptions.cs: make it compile with new mcs/csc.
20573
20574 2004-06-03 Massimiliano Mantione <massi@ximian.com>
20575         * cpu-pentium.md basic-float.cs Fixed bug on fpu spills (see bug 54467),
20576         and added relevant test case.
20577
20578 Mon May 31 19:41:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
20579
20580         * mini.c revert Zoltan's fix to bug#58863 on ppc, since it causes
20581         regressions in gtk-sharp.
20582
20583 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
20584
20585         * exceptions.cs: New regression tests.
20586
20587         * jit-icalls.c (mono_llmult_ovf): Fix some boundary conditions.
20588
20589 Sat May 29 10:45:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
20590
20591         * mini.c: emit castclass/isinst in their own trees (bug #54209/59057).
20592
20593 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
20594
20595         * mini-sparc.h (MONO_ARCH_NEED_DIV_CHECK): Define this.
20596
20597         * cpu-sparc.md mini-sparc.c: Add overflow detection to div opcodes.
20598
20599 2004-05-28      Patrik Torstensson <totte@hiddenpeaks.com>
20600
20601         * mini.c (mono_jit_runtime_invoke): Init class in this
20602         method instead of trusting mono_jit_compile_method to
20603         do the work (because wrappers can be in object class)
20604
20605 2004-05-27  Zoltan Varga  <vargaz@freemail.hu>
20606
20607         * mini-sparc.c (mono_arch_output_basic_block): Fix sub.imm.
20608
20609         * basic-long.cs: New regression test.
20610
20611 Thu May 27 15:50:52 CEST 2004 Paolo Molaro <lupus@ximian.com>
20612
20613         * cpu-g4.md, mini-ppc.c: fixes to long add/sub ovf opcodes
20614         and div/rem checks.
20615
20616 Thu May 27 12:36:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
20617
20618         * Makefile.am: fix miguel's change to build mono statically against
20619         libmono (track build dependencies).
20620
20621 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
20622
20623         * cfold.c: Some glib versions do not have G_MININT32.
20624
20625 2004-05-26  Massimiliano Mantione  <massi@ximian.com>
20626
20627         * mini-x86.c cpu-pentium.md Makefile.am basic-math.cs: Fixed problem
20628         with precision of tan, atan, sin and cos, and implemented related
20629         regressions tests (fixes bug 54467, but one new problem appeared and
20630         is not fixed yet).
20631
20632 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
20633
20634         * cfold.c (FOLD_BINOPZ): Avoid division by zero.
20635
20636         * exceptions.cs: Add test for constant folding && division by zero.
20637
20638         * driver.c mini.h mini.c mini-x86.c: Revert most of the previous patch
20639         since driver.c is in libmono too, so the optimization was useless.
20640
20641         * driver.c mini.h mini.c mini-x86.c: Moved the mono_lmf_addr TLS 
20642         variable to driver.c so the compiler can emit more efficient code to
20643         access them.
20644
20645 2004-05-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20646
20647         * Makefile.am: don't distribute generated inssel.[ch] files.
20648
20649 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
20650
20651         * mini.c (mono_jit_compile_method_with_opt): Really emit icall wrappers
20652         into the default appdomain. Fixes #58707.
20653
20654         * jit-icalls.c: Remove the broken approximation for truncl, doing
20655         no conversion is better.
20656
20657         * mini.c (handle_stack_args): Avoid reusing variables for stack slots.
20658         Fixes #58863.
20659
20660 Tue May 25 14:33:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
20661
20662         * mini-ops.h, mini-ppc.c, cpu-g4.md, inssel-ppc.brg: eliminate the use
20663         of the mcrxr instruction which is not available on some processors
20664         even if it's documented to be. Implement add and sub overflow correctly
20665         (still not complete for long unsigned). Speed up icalls a bit.
20666
20667 2004-05-25 13:01 CET Patrik Torstenson <totte@hiddenpeaks.com>
20668
20669         * mini.c (mono_jit_compile_method_with_opt): Make sure that
20670         we run .cctor in the current domain instead of target_domain.
20671         
20672         Fixes bug #58558, .cctor not being called in -O=shared.
20673
20674 Tue May 25 12:46:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
20675
20676         * mini-ppc.h, jit-icalls.c: added explicit checks for divide by zero.
20677
20678 2004-05-24 Ben Maurer  <bmaurer@users.sourceforge.net>
20679
20680         * mini-x86.c (EMIT_COND_BRANCH): If an OP_LABEL has an offset
20681         which can be done with an imm8, do it that way.
20682         (mono_arch_output_basic_block): ditto for a jmp
20683         (mono_arch_emit_prolog): Computate maximum offset of a label.
20684
20685 2004-05-24 18:18 CET Patrik Torstenson <totte@hiddenpeaks.com>
20686
20687         * mini-x86.c (mono_arch_local_regalloc): the reg allocator
20688         now tries to allocate prefered physical reg's for virtual
20689         regs. This reduces the number of emited spills/loads with
20690         20-30% on our core assemblies.
20691
20692 Mon May 24 18:21:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
20693
20694         * jit-icalls.c: truncl() is not needed and trunc() is
20695         the correct thing to do anyway (bug #58287).
20696
20697 2004-05-24  Zoltan Varga  <vargaz@freemail.hu>
20698
20699         * mini-sparc.c (mono_arch_flush_icache): Call sync_instruction_memory
20700         if available.
20701
20702 Mon May 24 12:49:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
20703
20704         * driver.c: enable loop optimizations by default.
20705
20706 Mon May 24 11:13:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
20707
20708         * mini-x86.c: fix calc of max loop size when aligning loops start.
20709
20710 2004-05-23  Zoltan Varga  <vargaz@freemail.hu>
20711
20712         * ssa.c (mono_ssa_cprop): Allocate carray dynamically instead of on
20713         the stack.
20714
20715 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
20716
20717         * mini-sparc.c (mono_arch_output_basic_block): ADD_IMM and SUB_IMM
20718         should set carry.
20719
20720         * basic-long.cs: Add tests for add/subtract of immediates with carry.
20721
20722         * mini.c exceptions-x86.c: Remove MONO_USE_EXC_TABLES stuff.
20723         
20724         * mini.c (inline_method): Allways inline some wrappers even if the cost
20725         is too large. Fixes #58785.
20726
20727         * mini.c: Add support for MARSHAL_CONV_FTN_DEL.
20728         
20729 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
20730
20731         * mini-sparc.c exceptions-sparc.c: Applied patch from Mark Crichton
20732         (crichton@gimp.org). Beginning of support for sparc/linux.
20733
20734         * mini-sparc.c: Optimize retrieval of LMF address.
20735
20736 Fri May 21 08:00:12 EDT 2004 Paolo Molaro <lupus@ximian.com>
20737
20738         * exceptions-ppc.c:  handle alloca in methods with clauses.
20739
20740 Fri May 21 07:35:30 EDT 2004 Paolo Molaro <lupus@ximian.com>
20741
20742         * mini-ppc.c: cleanups, off-by-one fixes, avoid recursive thunks.
20743
20744 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
20745
20746         * mini.c: Delegate most of the abort signal work to 
20747           mono_thread_request_interruption, which also handles Stop and Suspend
20748           states.
20749
20750 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
20751
20752         * mini.c mini.h: Allow inlining of icall wrappers if the backend 
20753         supports the save/restore lmf opcodes.
20754
20755 2004-05-19  Zoltan Varga  <vargaz@freemail.hu>
20756
20757         * mini-x86.c (mono_arch_setup_jit_tls_data): Handle code generated
20758         by gcc-3.4 as well.
20759
20760         * mini-x86.h mini-x86.c tramp-x86.c: Optimize lmf restoring code.
20761
20762 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
20763
20764         * mini.h mini.c (mini_method_compile): Only run abc removal pass on 
20765         methods which contain array accesses.
20766
20767         * mini.c (CEE_LDTOKEN): Handle this instruction correctly on bb
20768         boundaries. Fixes #58537.
20769
20770         * iltests.il: Add regression test for #58537.
20771
20772 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
20773
20774         * mini-x86.c (mono_arch_local_regalloc): Last part of
20775         fix for bug #58633 (releasing register to early).
20776
20777 2004-05-18  Miguel de Icaza  <miguel@ximian.com>
20778
20779         * basic-long.cs: Add new regression test.
20780
20781 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
20782
20783         * mini-x86.c (mono_arch_local_regalloc): Avoid releasing a
20784         register too early on the chain.
20785
20786 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
20787
20788         * mini.c (create_helper_signature): Use a helper function to reduce
20789         the code which needs to be written. Also set the calling convention of
20790         icalls on windows. Fixes #57840.
20791
20792 Tue May 18 11:05:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
20793
20794         * mini.h, exceptions-x86.c, exceptions-sparc.c, exceptions-s390.c,
20795         exceptions-ppc.c: added helper function to get the instruction address
20796         from a signal handler context.
20797
20798 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
20799
20800         * helpers.c: use g_get_tmp_dir. Invokes happyness 
20801         from gonzalo.
20802
20803 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
20804
20805         * helpers.c: Add new env variable to pass args to objdump.
20806         Specifically for those of us who love -Mintel. r=miguel, gonzalo.
20807
20808 2004-05-17  Radek Doulik  <rodo@ximian.com>
20809
20810         * Makefile.am (common_sources): added abcremoval.h so it get
20811         disted and daily mono packages on go-mono.com will build again
20812
20813 2004-05-17  Massimiliano Mantione  <massi@ximian.com>
20814
20815         * abcremoval.c: Fixed coding style, added copyright header.
20816
20817         * abcremoval.h: Fixed style and moved prototype to mini.h, added copyright header.
20818
20819         * mini.h: Added prototype for abc removal main function.
20820
20821         * build_relations_propagation_table.pl: Added copyright header.
20822
20823 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
20824
20825         * basic-long.cs: reg test for complex ceq_long bug.
20826
20827 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
20828
20829         * mini-x86.c (mono_arch_local_regalloc): Correctly free 
20830         reg in long and clob case (bug #58343). Fixed/added comments.
20831
20832 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
20833
20834         * mini.c (mono_jit_runtime_invoke): Follow new convention
20835         of calling the invoke method with an function pointer.
20836
20837 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
20838
20839         * ChangeLog: Fix author of memory leak patch.
20840
20841 Fri May 14 15:13:06 CEST 2004 Paolo Molaro <lupus@ximian.com>
20842
20843         * Makefile.am: fix make dist as well...
20844
20845
20846 2004-05-14  Massimiliano Mantione  <massi@ximian.com>
20847
20848         * cfold.c: Made so that conversions from pointer to int4 are no-ops
20849         on archs where pointers are 4 bytes long.
20850
20851         * Makefile.am: Added abcremoval.c source file.
20852
20853         * abcremoval.c: Added abcremoval.c.
20854
20855         * abcremoval.h: Added abcremoval.h.
20856
20857         * build_relations_propagation_table.pl: Added build_relations_propagation_table.pl.
20858
20859         * inssel.brg: Enabled bounds check removal.
20860
20861         * mini.c: Added support for abcrem optimization.
20862
20863         * mini.h: Added abcrem optimization label.
20864
20865         * driver.c: Added support for abcrem optimization.
20866
20867         * propagated_relations_table.def: Added propagated_relations_table.def.
20868
20869 Fri May 14 14:30:13 CEST 2004 Paolo Molaro <lupus@ximian.com>
20870
20871         * mini.c, cfold.c: fix style.
20872
20873 Fri May 14 14:28:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
20874
20875         * mini.c: handle issue with the low-level implementation of
20876         some long opcodes (bug #54209).
20877
20878 2004-05-13 Ben Maurer  <bmaurer@users.sourceforge.net>
20879
20880         * basic.cs: test for my new cmov stuff.
20881
20882 2004-05-13      Patrik Torstensson
20883
20884         * mini-x86.c: added OP_X86_COMPARE_MEMBASE_IMM peephole
20885         opt and added peephole documentation.
20886
20887 Thu May 13 11:41:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
20888
20889         * tramp-ppc.c: rewrote the generic trampoline code.
20890
20891 2004-05-11      Patrik Torstensson
20892
20893         * mini-x86.c: optimize long shl/shr asm code (one less branch)
20894
20895 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
20896
20897         * basic.cs basic-long.cs objects.cs: Make these compile under MS csc.
20898
20899         * mini.h mini.c dominators.c: Applied patch from Derek Woo
20900         (derek@eecg.toronto.edu): Fix memory leaks in loop optimizations.
20901
20902         * mini.c: Add new icalls for AsAny marshalling.
20903
20904 Tue May 11 16:00:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
20905
20906         * tramp-ppc.c, mini-ppc.c: more cleanups.
20907
20908 2004-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20909
20910         * mini.c: no warnings.
20911
20912 Tue May 11 13:59:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
20913
20914         * mini-ppc.c, mini.c: use mono_resolve_patch_target ().
20915
20916 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
20917
20918         * mini.c: In the thread abort signal handler, if the thread is in the
20919         process of being stoped, don't throw the Abort exception, just stop the
20920         thread.
20921
20922 Tue May 11 12:15:24 CEST 2004 Paolo Molaro <lupus@ximian.com>
20923
20924         * tramp-ppc.c: removed old code.
20925
20926 Tue May 11 12:02:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
20927
20928         * mini.h, mini-ppc.c, cfold.c: export mono_is_power_of_two().
20929         do some simple speed optimizations on ppc.
20930
20931 Mon May 10 17:21:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
20932
20933         * mini-ppc.c, cpu-g4.md: fixes to handle large stack frames
20934         and large offsets in load/store.
20935
20936 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
20937
20938         * mini-x86.c (mono_arch_local_regalloc): Remove the previous fix, since
20939         it causes regressions.
20940
20941 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
20942
20943         * mini-sparc.c: Fix vararg support + add beginnings of sigaltstack
20944         support.
20945
20946 Fri May 7 13:25:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
20947
20948         * jit-icalls.c: remove warnings.
20949         * inssel-x86.brg, inssel.brg, mini-x86.c, cfold.c: some simple
20950         speedups for unsafe code.
20951
20952 2004-05-07 Ben Maurer  <bmaurer@users.sourceforge.net>
20953
20954         * inssel.brg: Optimize Stind.[ui][12]. r=zoltan.
20955
20956 2004-05-06  Zoltan Varga  <vargaz@freemail.hu>
20957
20958         * basic-calls.cs: Add new regression test.
20959
20960         * mini.c (mono_runtime_install_handlers): Use SA_ONSTACK since it is
20961         more portable.
20962
20963         * mini.c (mono_method_to_ir): Handle opcode emulation for *_OVF opcodes.
20964
20965         * mini-x86.c (mono_arch_local_regalloc): Free new_dest register when it
20966         is no longer used.
20967
20968 2004-05-06      Patrik Torstensson
20969
20970         * mini-x86.[c|h], inssel-x86.brg, cpu-pentium.md, mini.c: enabled
20971         long reg allocation in any reg (not only eax:edx) and implemented 
20972         long shl/shr ops in asm instead of helpers.
20973
20974 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
20975
20976         * mini-sparc.h: Fix warnings.
20977
20978         * exceptions-sparc.c (mono_arch_find_jit_info): Pop unused lfm off the
20979         stack.
20980
20981         * mini-exceptions.c (mono_handle_exception): Call the filter in a
20982         separate statement for clarity.
20983
20984         * mini-sparc.c: Update status.
20985
20986 2004-05-04  Zoltan Varga  <vargaz@freemail.hu>
20987
20988         * mini-exceptions.c (ves_icall_get_frame_info): Flush register windows
20989         here.
20990
20991 Mon May 3 22:58:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
20992
20993         * inssel-ppc.brg: another small pre-release workaround:
20994         we don't do overflow detection for long_sub_un.
20995
20996 Sun May 2 20:12:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
20997
20998         * mini.c, mini-ops, inssel-long32.brg: speedup ulong >> 32
20999         (also works around a weird ppc bug: 57957).
21000
21001 Sat May 1 16:56:10 EDT 2004 Paolo Molaro <lupus@ximian.com>
21002
21003         * tramp-ppc.c: trampoline fixes.
21004
21005 Fri Apr 30 15:54:26 EDT 2004    Paolo Molaro <lupus@ximian.com>
21006
21007         * mini-ppc.c: fixed typos.
21008
21009 Thu Apr 29 20:15:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
21010
21011         * mini-ppc.c, exceptions-ppc.c: more code saves registers
21012         at the top of the stack. Fixed typos. Use a frame registers
21013         for all the methods with exception clauses.
21014
21015 Thu Apr 29 18:52:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
21016
21017         * exceptions-ppc.c: restore fp registers.
21018
21019 Thu Apr 29 18:26:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
21020
21021         * mini-ppc.c, exceptions-ppc.c: save the registers in reverse
21022         order from the stack top (moved the stack room to save the
21023         return value for trace after the param area). Fixed corruption
21024         in restoring registers on unwind.
21025
21026 Thu Apr 29 16:47:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
21027
21028         * mini-ppc.c, cpu-g4.md: fixed unisgned -> double conversion.
21029
21030 Thu Apr 29 13:50:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
21031
21032         * exceptions-ppc.c, mini-ppc.h, mini-ppc.c: fixed localloc
21033         and prolog/epilog for methods that use it. Allow
21034         enough param area room for varargs methods. Fix miguel's
21035         breakage in exception handling.
21036
21037 Thu Apr 29 12:06:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
21038
21039         * Makefile.am: run genmdesc only on current arch.
21040
21041 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21042
21043         * exceptions-x86.c:
21044         * mini-x86.h: fix the build on windows.
21045
21046 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
21047
21048         * 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.
21049
21050         * exceptions-sparc.c exceptions-ppc.c exceptions-s390.c mini-ppc.h mini-s390.h mini-sparc.h: Fix up ports after changes.
21051
21052         * mini-exceptions.c: New file.
21053         
21054         * mini.c mini-exceptions.c mini-x86.h exceptions-x86.c Makefile.am:
21055         Move some parts of the x86 exception handling code to an 
21056         arch-independent file so it can be shared with other ports.
21057
21058 Tue Apr 27 12:15:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
21059
21060         * trace.c, cpu-g4.md, inssel-ppc.brg, mini-ppc.c: some fixes for FP code.
21061
21062 2004-04-26  David Waite  <mass@akuma.org>
21063
21064         * driver.c: remove comma from end of enumeration declaration
21065
21066 2004-04-26  Jackson Harper  <jackson@ximian.com>
21067
21068         * driver.c: parse config file before loading first assembly. This
21069         allows the user gac to be enabled/disabled. 
21070         
21071 2004-04-23  Miguel de Icaza  <miguel@ximian.com>
21072
21073         * mini-ppc.c (ppc_patch): Replaced the branch code patching with a
21074         simpler mechanism: we do not care what is encoded initially
21075         (branch absolute or relative), we care about the code and its
21076         target.  I kept the old code for reference for now.
21077
21078         The new code tries first to determine if the jump is anywhere in
21079         the -/+32 absolute meg range, if it succeeds, it encodes using the
21080         absolute branch;  If not, it tried to find something in the
21081         relative range, if not, it uses the handle_thunk code. 
21082
21083 Fri Apr 23 14:20:40 EDT 2004 Paolo Molaro <lupus@ximian.com>
21084
21085         * exceptions-ppc.c: use the correct ip register on macosx.
21086
21087 Thu Apr 22 13:23:16 EDT 2004 Paolo Molaro <lupus@ximian.com>
21088
21089         * exceptions.c, mini.c, mini-ppc.h: adapt code to macosx.
21090
21091 Thu Apr 22 18:08:37 CEST 2004 Paolo Molaro <lupus@ximian.com>
21092
21093         * mini-ppc.c, cpu-g4.md: made the branch macros more flexible.
21094         Raise exception on integer divide by zero by hand since the hw
21095         doesn't support it. Handle NaNs in FP compares.
21096
21097 Thu Apr 22 16:10:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
21098
21099         * exceptions-ppc.c, mini-ppc.h, mini.c: simplified some
21100         code reducing duplication between the platforms and enabled
21101         signal exception handling (on linux for now).
21102
21103 Wed Apr 21 12:27:48 EDT 2004 Paolo Molaro <lupus@ximian.com>
21104
21105         * exceptions-ppc.c: more macosx support.
21106
21107 Wed Apr 21 16:38:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
21108
21109         * mini-ppc.h, mini-ppc.c, cpu-g4.md: enable bigmul optimization.
21110
21111 Wed Apr 21 16:20:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
21112
21113         * mini.h, mini-ppc.c, cpu-g4.md: support for implicit exceptions.
21114
21115 2004-04-19 Ben Maurer  <bmaurer@users.sourceforge.net>
21116
21117         * iltests.il: more tests.
21118
21119 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
21120
21121         * mini-*.c (mono_arch_get_allocatable_int_vars): Skip written-only
21122         vars as well.
21123
21124 Mon Apr 19 19:39:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
21125
21126         * mini-ppc.c: some fixes to bootstrap mcs/corlib/etc.
21127
21128 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
21129
21130         * liveness.c: Mark variables as volatile in all basic blocks reachable
21131         from exception clauses.
21132
21133 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
21134
21135         * exceptions.cs (test_0_rethow_stacktrace): Make this work with
21136         inlining.
21137
21138 2004-04-18 Ben Maurer  <bmaurer@users.sourceforge.net>
21139
21140         * iltests.il, basic.cs: more tests for regalloc.
21141
21142 2004-04-17 Ben Maurer  <bmaurer@users.sourceforge.net>
21143
21144         * iltests.il: Some tests for register allocation modifications
21145         I have locally.
21146
21147 2004-04-16  Zoltan Varga  <vargaz@freemail.hu>
21148
21149         * exceptions.cs: Add regression test for bug #56782.
21150
21151         * exceptions-*.c (mono_arch_handle_exception): Do not overwrite the
21152         original stack trace if an exception is rethrown. Fixes #56782. Oh,
21153         the beauty of fixing the same thing in 5 different files...
21154
21155 2004-04-15  Zoltan Varga  <vargaz@freemail.hu>
21156
21157         * mini.c (mono_method_to_ir): Do not compute coverage for inlined
21158         methods.
21159
21160 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
21161
21162         * mini.c: Add support for STRWLPARRAY marshalling convention.
21163
21164 Wed Apr 14 18:15:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
21165
21166         * exceptions-ppc.c: missing fixes in mono_jit_walk_stack (need
21167         to init the context to setup the regs pointer).
21168
21169 Wed Apr 14 17:59:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
21170
21171         * exceptions-ppc.c: more exceptions work.
21172
21173 Wed Apr 14 17:46:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
21174
21175         * mini.c: avoid reusing the same MonoInst on multiple trees: this is
21176         not allowed.
21177
21178 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
21179
21180         * inssel-x86.brg (reg): Add new rules for add, sub and mul that
21181         can use the memory directly.
21182
21183         * cpu-pentium.md: Update documentation from a post from Zoltan. 
21184
21185         add x86_add_membase, x86_sub_membase, x86_mul_membase
21186
21187 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
21188
21189         * mini-ppc.c: Remove unused definitions FLOAT_REGS and
21190         GENERAL_REGS they were also hardcoded for all PPC ports.
21191
21192         (add_general): Use PPC_NUM_REG_ARGS instead of GENERAL_REGS.
21193
21194         Remove hard-coded limit for floating point registers, use
21195         PPC_LAST_FPARG_REG instead in MONO_TYPE_R4 and MONO_TYPE_R8.
21196
21197         Notice that in MacOS X calling conventions you can fit a lot more
21198         floating point values in registers, so I should update the PInvoke
21199         test to excercise the passing of floating point values on the
21200         stack (currently broken).
21201         
21202 2004-04-06  Miguel de Icaza  <miguel@ximian.com>
21203
21204         * tramp-ppc.c (create_trampoline_code): Added
21205         JUMP_TRAMPOLINE_SIZE. 
21206         (ppc_magic_trampoline): Follow the pattern from
21207         x86_magic_trampoline: if code is set to zero, return. 
21208         (create_trampoline_code): Always pass MonoMethod to the jump
21209         trampoline, before it was passing a null.
21210         (mono_arch_create_jump_trampoline): Implement the jump stub, could
21211         share the code with mono_arch_create_jit_trampoline. 
21212
21213         * mini-ppc.c (mono_arch_output_basic_block): CEE_JMP opcode
21214         implemented.
21215         (mono_arch_patch_code): MONO_PATCH_INFO_METHOD_JUMP patch type
21216         implemented.  
21217
21218         * cpu-g4.md: Added length for jmp instruction, the worst case
21219         scenario is 92 bytes (4 mandatory bytes, potential 19 registers
21220         for save_lmf).
21221
21222 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
21223
21224         * aot.c (mono_compile_assembly): Add back unlink removed by mistake.
21225
21226 2004-04-07  Zoltan Varga  <vargaz@freemail.hu>
21227
21228         * mini.c: Only set bblock->real_offset when adding a new bblock, and
21229         before each IL instruction.
21230
21231         * mini.c (CEE_BOX): Fix warnings.
21232
21233 2004-04-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21234
21235         * mini.c: removed a few unused vars and extra whitespace.
21236
21237 2004-04-05 Ben Maurer  <bmaurer@users.sourceforge.net>
21238
21239         * inssel.brg (MONO_EMIT_BOUNDS_CHECK): a new macro to emit bounds
21240         checks.
21241         (MONO_EMIT_BOUNDS_CHECK_IMM): the above, but when you know the
21242         index.
21243         (OP_GETCHR): use the above
21244         (CEE_LDELEMA): use the above.
21245
21246         * inseel-x86.brg (MONO_EMIT_BOUNDS_CHECK): a faster and smaller
21247         version of the generic impl.
21248         (MONO_EMIT_BOUNDS_CHECK_IMM): the same
21249         (CEE_LDELEMA): use the above.
21250
21251 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
21252
21253         * inssel-long32.brg (CEE_CONV_OVF_I8): Sign extend the i4 value to i8.
21254         Fixes #56317.
21255
21256         * iltests.il: Added new regression test for #56317.
21257
21258 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
21259
21260         * mini-x86.c (mono_arch_setup_jit_tls_data): Use pthread_attr_get_np
21261         under NetBSD. Fixes #56450.
21262
21263         * liveness.c (update_gen_kill_set): Fix previous patch.
21264
21265 2004-04-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21266
21267         * mini-x86.h: SA_STACK defined as SA_ONSTACK. Fixed build under NetBSD.
21268
21269 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
21270
21271         * mini.c (mono_method_to_ir): Avoid handle_loaded_temps in
21272         ldsfld and ldsflda.
21273
21274         * inssel-sparc.brg: Add more optimizations.
21275
21276         * mini-sparc.c: Replace multiply/divide with shifts if possible.
21277
21278 2004-04-01  Martin Baulig  <martin@ximian.com>
21279
21280         * mini.c (handle_box): New static function; moved the
21281         implementation of CEE_BOX here.
21282         (mono_method_to_ir): Added `constrained_call' variable.
21283         (mono_method_to_ir:CEE_CONSTRAINED_): Set it.
21284         (mono_method_to_ir:CEE_CALL): If `constrained_call' is set, use
21285         mono_method_get_constrained() to get the method.
21286
21287 2004-04-01  Martin Baulig  <martin@ximian.com>
21288
21289         * mini.c (TYPE_PARAM_TO_TYPE, TYPE_PARAM_TO_CLASS): Removed.
21290         (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): Removed.
21291         (mono_method_to_ir): We don't need these macros anymore since
21292         mono_class_get_full() already takes care of it. 
21293
21294 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21295
21296         * aot.c: set aot_verbose to 0, fixed format string that caused sigsegv,
21297         use @function (as doesn't accept #function here) and check the return
21298         value of system and stop if fails.
21299
21300 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21301
21302         * mini.c: set the timeout to 2s when calling mono_domain_finalize.
21303
21304 2004-03-31  Zoltan Varga  <vargaz@freemail.hu>
21305
21306         * mini-ppc.c (mono_arch_patch_code): Fix ppc build.
21307
21308         * inssel-sparc.brg mini-sparc.c aot.c: Implement AOT support.
21309
21310         * inssel-long32.brg (OP_LNEG): Use ADC instead of ADD here. Fixes
21311         #56223.
21312
21313         * basic-long.cs: Add test for negation of Int64.MinValue.
21314
21315 2004-03-30  Zoltan Varga  <vargaz@freemail.hu>
21316
21317         * mini-sparc.c: Update status.
21318
21319         * mini-sparc.c tramp-sparc.c: Save lmf in trampolines.
21320
21321         * exceptions-sparc.c: Fix return value in filters.
21322
21323         * inssel-sparc.brg: Fix register allocation in some rules.
21324
21325 2004-03-28  Martin Baulig  <martin@ximian.com>
21326
21327         * mini.c (mmono_method_to_ir): In CEE_STELEM, do a handle_stobj()
21328         if neccessary.  
21329
21330 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
21331
21332         * mini-x86.c (mono_arch_patch_code): Fix warnings.
21333         
21334         * mini-x86.c (mono_arch_output_basic_block): Fix CEE_MUL_OVF_UN if 
21335         dreg is not EAX. Thanks to Willibard Krenn for spotting this. Also
21336         remove unused conv_u4 opcode.
21337
21338         * mini-x86.c: Remove valgrind workaround since it slows down things
21339         even when mono is not run under valgrind.
21340
21341 2004-03-26  Zoltan Varga  <vargaz@freemail.hu>
21342
21343         * mini-sparc.c: Update status.
21344
21345         * inssel-sparc.brg: Add some optimizations.
21346
21347         * inssel-sparc.brg mini-sparc.c: Rework branch instructions to allow
21348         future delay slot filling. Add support for varargs, tail calls and JMP.
21349
21350         * inssel.brg mini-ops.h mini.c: Use OP_REFANYTYPE instead of 
21351         CEE_REFANYTYPE, since CEE_REFANYTYPE needs a prefix to be unique.
21352
21353         * inssel.brg: Fix register allocation in OP_ARGLIST.
21354
21355         * inssel.brg: Fix warnings.
21356
21357 2004-03-25  Martin Baulig  <martin@ximian.com>
21358
21359         * mini.c (inflate_generic_field): Removed.
21360         (mini_get_method): Removed, use mono_get_method_full(),
21361         (mini_get_class): Removed, use mono_class_get_full().
21362         (mono_method_to_ir): Pass our generic context to
21363         mono_field_from_token().        
21364
21365 2004-03-25  Martin Baulig  <martin@ximian.com>
21366
21367         * mini.c (mini_get_class): Take a `MonoGenericContext *' instead
21368         of a `MonoMethod *'.
21369         (mini_get_method): Take a `MonoGenericContext *' instead
21370         of a `MonoMethod *'.
21371         (TYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_TYPE): mono_method_to_ir() has
21372         a new local variable called `generic_context' which holds the
21373         current `MonoGenericContext *'; use it to lookup things.
21374
21375 2004-03-24  Martin Baulig  <martin@ximian.com>
21376
21377         * mini.c (mini_get_class): New static method; if we're inside a
21378         generic instance, inflate the class if neccessary.
21379         (mono_method_to_ir): Use mini_get_class() instead of mono_class_get().
21380
21381 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
21382
21383         * iltests.il: New regression test for #55976.
21384
21385         * mini.c (mono_method_to_ir): Empty the stack in endfinally. Fixes
21386         #55976.
21387
21388 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
21389
21390         * exceptions-sparc.c (mono_sparc_handle_exception): Remove debugging
21391         output.
21392
21393 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
21394
21395         * liveness.c: Consider SSA stores as well as loads when making vars
21396         volatile.
21397
21398         * exceptions.cs: New regression tests for register allocation.
21399         
21400 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
21401
21402         * mini-ppc.c, tramp-ppc.c: Added lock for accessing the domain code manager.
21403         * mini.c: Removed domain lock from mono_jit_compile_method_with_opt. Use
21404           domain lock only to protect puntual access to data structures.
21405           Added access lock for sighash, jit_icall_hash_name, 
21406           jit_icall_hash_addr and domain->code_mp.
21407
21408 2004-03-20  Zoltan Varga  <vargaz@freemail.hu>
21409
21410         * driver.c: Print SIGSEGV handling method.
21411
21412         * mini-x86.c (mono_arch_free_jit_tls_data): Add missing ifdef.
21413
21414         * mini.c (setup_jit_tls_data): Handle case when this is called
21415         multiple times for a thread.
21416
21417         * mini-x86.c cpu-pentium.md: Fix floating point branch opcodes so fbxx 
21418         is different from fbxx_un. Fixes #54303. Also use constants instead of
21419         magic numbers in a lot of places.
21420
21421 2004-03-19  Zoltan Varga  <vargaz@freemail.hu>
21422
21423         * exceptions.cs: Fix cctor test when --regression is used.
21424
21425 Thu Mar 18 19:57:56 CET 2004 Paolo Molaro <lupus@ximian.com>
21426
21427         * mini-ppc.c, exceptions-ppc.c: basic exceptions support 
21428         for Linux/ppc.
21429
21430 Thu Mar 18 19:56:19 CET 2004 Paolo Molaro <lupus@ximian.com>
21431
21432         * inssel-ppc.brg: fixed register assignments for some rules.
21433
21434 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
21435
21436         * exceptions.cs: Add test for exceptions in static constructors.
21437
21438         * mini.c (mono_jit_compile_method_with_out): Move the calling of
21439         static constructors outside the domain lock. Fixes #55720.
21440
21441 2004-03-17  Martin Baulig  <martin@ximian.com>
21442
21443         * mini.c (get_generic_field_inst): Removed, this'll never happen.
21444         (inflate_generic_field): Take the `MonoMethod *' instead of the
21445         `MonoClass *' and added support for generic method.
21446         (mono_method_to_ir): In CEE_LDSFLD and CEE_STSFLD, assert we never
21447         have a `field->parent->gen_params', only inflate the field if it's
21448         an open constructed type.
21449
21450 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
21451
21452         * exceptions-x86.c (mono_arch_handle_exception): Allocate a new
21453         exception object instead of the preconstructed ones.
21454
21455 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21456
21457         * mini.c: reverted changed to sigsegv_signal_handler commited
21458         accidentally in the previous patch.
21459
21460 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21461
21462         * mini.c:
21463         (mono_method_to_ir): CEE_CALLVIRT, abort if no method. It hanged when
21464         running --aot with an old assembly.
21465
21466 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
21467
21468         * mini-sparc.c (mono_arch_instrument_epilog): Fix handling of floating
21469         point values.
21470
21471         * mini-sparc.c: Add support for v9 branches with prediction.
21472
21473 2004-03-15  Bernie Solomon  <bernard@ugsolutions.com>
21474
21475         * mini.c (mini_init): #warning is GNUC only
21476
21477         * mini-sparc.h: implement __builtin_frame_address
21478         and __builtin_return_address for Sun C compiler
21479
21480 2004-03-15  Zoltan Varga  <vargaz@freemail.hu>
21481
21482         * exceptions-sparc.c (mono_arch_has_unwind_info): Add missing function.
21483
21484 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
21485
21486         * basic-calls.cs: Add test for unaligned byref long argument passing.
21487
21488         * mini-ops.h: Add sparcv9 compare and branch instructions.
21489
21490         * inssel-sparc.brg mini-sparc.h mini-sparc.c cpu-sparc.md: Use some
21491         v9 instructions if we have a v9 cpu.
21492
21493         * mini-sparc.c (mono_arch_get_global_int_regs): Use unused input
21494         registers for global allocation.
21495
21496         * exceptions-sparc.c: Fixes.
21497         
21498 2004-03-11  Zoltan Varga  <vargaz@freemail.hu>
21499
21500         * liveness.c (mono_analyze_liveness): Optimized version.
21501
21502         * inssel-sparc.brg cpu-sparc.md: Ongoing sparc work.
21503
21504         * mini-sparc.h mini-sparc.c tramp-sparc.c exceptions-sparc.c: Ongoing
21505         sparc work.
21506
21507         * basic-float.cs basic-calls.cs: New regression tests.
21508
21509 2004-03-10  Zoltan Varga  <vargaz@freemail.hu>
21510
21511         * mini-x86.h: Define SIGSEGV_ON_ALTSTACK only if we have a working
21512         sigaltstack implementation.
21513
21514         * mini-x86.c (mono_arch_setup_jit_tls_data): Fix previous patch.
21515         
21516         * mini-x86.c (mono_arch_setup_jit_tls_data): Turn off the sigaltstack
21517         stuff if SIGSEGV_ON_ALTSTACK is not defined.
21518
21519 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
21520
21521         * mini.c: Fix warnings.
21522         
21523         * mini.c (mono_resolve_patch_target): New function which contains the
21524         arch independent part of the patching process.
21525
21526         * mini-x86.c (mono_arch_patch_code): Move arch independent parts of the
21527         patching code to a separate function.
21528
21529 2004-03-09  Bernie Solomon  <bernard@ugsolutions.com>
21530
21531         * mini.c (add_signal_handler): ifdef out on Windows
21532
21533 2004-03-08  Zoltan Varga  <vargaz@freemail.hu>
21534
21535         * mini-sparc.h mini-sparc.c inssel-sparc.brg exceptions-sparc.c 
21536         cpu-sparc.md: Add exception handling support + other fixes.
21537
21538         * driver.c: Print --help output to stdout. Fixes #55261. Also fix
21539         typed GC detection in --version.
21540
21541         * basic.cs exceptions.cs: New regression tests.
21542
21543         * mini.h mini-x86.h mini-ppc.h: Add MonoCompileArch structure where
21544         the arch specific code can store data during a compilation.
21545
21546         * mini-ops.h: Add OP_SETFRET.
21547
21548         * mini.c (mini_get_ldelema_ins): Instead of allways calling the same
21549         function, register a separate icall for each arity, so the icalls can
21550         get a wrapper.
21551         
21552         * mini.c (mono_print_tree): Print negative offsets in a more readable
21553         form.
21554         
21555         * mini.c: Make signal handling work on sparc.
21556         
21557         * mini.c (mini_init): Add emulation for lconv_to_r8_un.
21558
21559         * inssel-long32.brg: Fix OP_LSUB_OVF_UN rule.
21560
21561         * jit-icalls.c: Emulate truncl by aintl on solaris.
21562
21563         * jit-icalls.c (mono_lconv_to_r8_un): New icall emulation function.
21564
21565 2004-03-05  Zoltan Varga  <vargaz@freemail.hu>
21566
21567         * mini.c (mini_init): fconv_to_ovf can raise exceptions.
21568
21569 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
21570
21571         * mini.c: In CEE_ISINST and CEE_CASTCLASS, if the type is an interface or
21572         a MarshalByRef type, inline a method that performs the check, taking into
21573         account that the object can be a proxy. Also implemented tow new opcodes:
21574         CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
21575         * inssel.brg: Implemented two new opcodes, mini-ops.h: OP_CISINST and 
21576         OP_CCASTCLASS, which implement CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
21577
21578 Tue Mar 2 17:23:48 CET 2004 Paolo Molaro <lupus@ximian.com>
21579
21580         * mini-ppc.c: if a relative branch displacement is too big
21581         but it points to and area reachable with an absolute branch, 
21582         avoid the thunks.
21583
21584 Tue Mar 2 16:59:40 CET 2004 Paolo Molaro <lupus@ximian.com>
21585
21586         * mini.c: optimize small copies in cpblk.
21587
21588 2004-03-01  Zoltan Varga  <vargaz@freemail.hu>
21589
21590         * basic-calls.cs basic-float.cs: New regression tests.
21591
21592         * mini-sparc.c inssel-sparc.brg mini-ops.h: Access local variables at 
21593         negative offsets from %fp. Implement localloc. Fix local register 
21594         allocation. Fix the case when the this argument needs to be saved to
21595         the stack. Implement some missing opcodes.
21596
21597 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
21598
21599         * mini.c (mini_method_compile): Reenable global regalloc in methods
21600         with exception handlers.
21601
21602         * linear-scan.c (mono_varlist_sort): Fix warning.
21603
21604         * linear-scan.c (mono_linear_scan): Fix computation of used_regs.
21605
21606         * mini-x86.c (mono_arch_regalloc_cost): Reenable precise computation of
21607         regalloc costs.
21608
21609         * liveness.c: Make all variables uses in exception clauses volatile, to
21610         prevent them from being allocated to registers. Fixes #42136.
21611
21612 2004-02-25  Zoltan Varga  <vargaz@freemail.hu>
21613
21614         * mini-x86.c (mono_arch_regalloc_cost): Revert this change since it
21615         causes regressions.
21616
21617         * mini.h linear-scan.c mini-x86.c mini-sparc.c mini-ppc.c: Add 'cfg'
21618         argument to mono_arch_regalloc_cost.
21619
21620         * mini-x86.c (mono_arch_regalloc_cost): Compute regalloc costs 
21621         precisely.
21622
21623 2004-02-24  Zoltan Varga  <vargaz@freemail.hu>
21624
21625         * mini.h mini-x86.c mini-ppc.c mini-sparc.c linear-scan.c: 
21626         Make the cost of allocating a variable to a register arch dependent.
21627
21628         * basic-calls.cs: Fix compilation of tests.
21629         
21630         * mini.h mini.c tramp-x86.c mini-x86.c: Add mono_running_on_valgrind ()
21631         helper function to cut back on the number of #ifdefs needed.
21632
21633         * mini-ppc.c: Fix compilation.
21634
21635         * basic-calls.cs: New regression tests.
21636
21637         * mini-sparc.c (mono_sparc_is_virtual_call): New helper function.
21638
21639         * tramp-sparc.c (create_specific_trampoline): Use g5 register instead
21640         of l0 since that is callee saved.
21641
21642         * tramp-sparc.c (sparc_magic_trampoline): Apply unbox trampoline only
21643         to virtual calls.
21644
21645         * mini-sparc.c: Ongoing work + flag virtual calls with a special kind 
21646         of delay instruction.
21647
21648         * inssel.brg (OP_CHECK_THIS): Set tree->sreg1 and dreg correctly.
21649
21650         * mini.h (MonoCallInst): Add 'virtual' flag.
21651
21652         * inssel.brg (mini_emit_virtual_call): Set 'virtual' flag.
21653
21654 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
21655
21656         * *.cs: New regression tests.
21657
21658         * mini-sparc.c inssel-sparc.brg: Update after latest changes. Ongoing sparc 
21659         work.
21660
21661         * mini.c (mono_runtime_install_handlers): Fix build.
21662
21663         * mini.h (MonoJitTlsData): Add 'stack_size', 'signal_stack' and
21664         'signal_stack_size' members.
21665
21666         * mini.h mini.c mini-x86.h mini-x86.c: Run sigsegv handlers on an 
21667         alternate signal stack.
21668
21669         * exceptions-x86.c: Add stack overflow handling.
21670
21671         * mini.h mini.c mini-x86.c mini-ppc.c trace.h trace.c: Move tracing 
21672         functions to arch independent code.
21673
21674         * mini.c (mono_print_tree): Print more detailed info for load_membase
21675         opcodes.
21676         
21677 2004-02-23  Martin Baulig  <martin@ximian.com>
21678
21679         * mini.c (mini_get_method): Set `gmethod->generic_inst'.
21680
21681 Sun Feb 22 22:25:19 CET 2004 Paolo Molaro <lupus@ximian.com>
21682
21683         * mini-x86.c: fixed reg allocation for div/rem.
21684
21685 2004-02-22  Miguel de Icaza  <miguel@ximian.com>
21686
21687         * driver.c (mono_main): Report some configuratio options on --version.
21688
21689 Fri Feb 20 11:01:44 PST 2004 Paolo Molaro <lupus@ximian.com>
21690
21691         * mini-ppc.c: fixed clt.un, cgt.un. Optimized calls to functions
21692         low in the address space. Correctly flush memory in thunks where we
21693         output native code.
21694
21695 2004-02-20  Martin Baulig  <martin@ximian.com>
21696
21697         * mini.c (mini_get_method): New static method; inflate all generic
21698         methods and methods in open generic instances.
21699         (mono_method_to_ir): Use mini_get_method() instead of mono_get_method().
21700         (ret_type_to_call_opcode): Added support for MONO_TYPE_GENERICINST.
21701
21702 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
21703
21704         * mini-sparc.c (mono_arch_patch_code): Update after domain->code_mp changes.
21705
21706         * tramp-sparc.c (mono_arch_create_jump_trampoline): Set ji->method.
21707
21708 2004-02-19  Bernie Solomon  <bernard@ugsolutions.com>
21709
21710         * helpers.c (mono_disassemble_code): use Sun's dis if not using gcc
21711
21712         * mini-sparc.c (flushi mono_arch_output_basic_block): make
21713         it compile using Sun's compiler.
21714
21715 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
21716
21717         * 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.
21718
21719         * basic-calls.cs basic-float.cs basic-long.cs objects.cs: New regression tests.
21720
21721 Tue Feb 17 21:41:20 CET 2004 Paolo Molaro <lupus@ximian.com>
21722
21723         * aot.c, mini-x86.c, mini.c: use the code manager instead of a mempool to hold native
21724         code.
21725         * mini-ppc.c: handle calls outside of the allowed range with thunks
21726         allocated using the code manager.
21727         * tramp-ppc.c: use the code manager to hold generated native code.
21728         Fixed the magic trampoline to just patch vtable entries.
21729
21730 2004-02-17  Zoltan Varga  <vargaz@freemail.hu>
21731
21732         * inssel.brg inssel-x86.brg: Move call(immediate) rules to the platform
21733         independent file.
21734
21735 2004-02-16  Zoltan Varga  <vargaz@freemail.hu>
21736
21737         * tramp-ppc.c (mono_arch_create_jump_trampoline): Fix compilation on
21738         PPC.
21739
21740         * mini-x86.c: Call mono_arch_get_lmf_addr instead of mono_get_lmf_addr
21741         if we have a working __thread implementation.
21742
21743         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Remove 
21744         OP_CALL_IMM opcodes, since the CALL opcodes handles immediates as well.
21745
21746 2004-02-15  Zoltan Varga  <vargaz@freemail.hu>
21747
21748         * mini-x86.c: Fix compilation under gcc 2.
21749         
21750 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
21751
21752         * mini.c (mono_codegen): Avoid infinite loop when an icall wrapper
21753         contains a call to the wrapped function.
21754
21755         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Add 
21756         OP_<CALL>_IMM opcodes, and use them under X86.
21757         
21758         * mini.c (mono_jit_find_compiled_method): Fix warning.
21759
21760         * cpu-pentium.md: Fix length of opcodes which use x86_alu_membase_imm.
21761
21762         * jit-icalls.c (mono_ldftn_nosync): New JIT icall.
21763
21764         * tramp-x86.c (mono_arch_create_jump_trampoline): Move arch independent
21765         functionality to mini.c.
21766
21767         * mini.c (mono_create_jump_trampoline): New function to create a jump
21768         trampoline. Return a compiled method instead of a trampoline if it
21769         exists. Add a cache for jump trampolines.
21770
21771         * mini.c (mono_jit_find_compiled_method): New function to return a
21772         compiled method if it exists.
21773
21774         * mini-x86.c: Call mono_create_jump_trampoline instead of 
21775         mono_arch_create_jit_trampoline.
21776
21777         * jit-icalls.c (mono_ldftn): Do not compile the method. Instead, return
21778         a jump trampoline. Fixes #52092.
21779         
21780 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
21781
21782         * debug-mini.c (mono_init_debugger): Remove call to mono_verify_corlib,
21783         which is not up-to-date. Add check_corlib_version () instead.
21784
21785         * mini.c (mini_init): Call mono_thread_attach () so embedders do not 
21786         have to call it.
21787         
21788         * mini.c (mono_runtime_install_handlers): Remove check for valgrind
21789         since newer valgrind versions do not need it.
21790
21791         * mini.c (mono_jit_compile_method_with_opt): New helper function to
21792         compile a method with a given set of optimizations.
21793
21794         * mini.c: Compile icall wrappers on-demand instead of at startup.
21795
21796         * mini-sparc.c mini-ppc.c: Call mono_icall_get_wrapper to obtain the
21797         wrapper for an icall.
21798
21799 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
21800
21801         * mini.c (mono_method_to_ir): Handle switch with non-empty stack. Fixes
21802         #54063.
21803
21804         * iltests.il: Add test for non-empty stack before switch instruction.
21805
21806 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
21807
21808         * mini.c: Add support for new stringbuilder marshalling conventions.
21809
21810         * mini.c (mono_method_to_ir): Fix stack management of generic CEE_BOX.
21811
21812 2004-02-01  Martin Baulig  <martin@ximian.com>
21813
21814         * mini.c (MTYPE_PARAM_TO_TYPE): Method type arguments are stored
21815         in `ginst->mtype_argv'.
21816
21817 2004-01-31  Miguel de Icaza  <miguel@ximian.com>
21818
21819         * mini.c: Add comments, replace CEE_XXX+128 with OP_XXX to
21820         facilitate grepping.
21821
21822 Wed Jan 28 14:04:58 CET 2004 Paolo Molaro <lupus@ximian.com>
21823
21824         * mini.c: fixed buglet in initobj generic implementation for references.
21825
21826 Fri Jan 23 16:10:44 EST 2004 Paolo Molaro <lupus@ximian.com>
21827
21828         * Makefile.am: make the version script conditional.
21829         * jit-icalls.c: handle missing truncl().
21830
21831 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
21832
21833         * exceptions.cs: Add more tests for double->int conversion.
21834
21835         * jit-icalls.c (mono_fconv_ovf_i8): Call truncl before comparison, so
21836         we don't throw exceptions when converting 1.1 to a long. Fixes #53250.
21837
21838 Fri Jan 23 17:12:08 CET 2004 Paolo Molaro <lupus@ximian.com>
21839
21840         * driver.c: make --verbose --version emit an error
21841         if the loaded corlib doesn't match the runtime version.
21842
21843 Mon Jan 19 17:44:50 CET 2004 Paolo Molaro <lupus@ximian.com>
21844
21845         * mini-ppc.h: export ppc_patch().
21846         * mini-ppc.c: call convention fixes. Added assert in ppc_patch().
21847         * tramp-ppc.c: call convention fixes: Linux/PPC support should be
21848         on par or better than on MacOSX.
21849
21850 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
21851
21852         * mini.c tramp-x86.c tramp-sparc.c: Updated after changes to
21853         mono_lookup_pinvoke_call.
21854
21855         * mini-x86.c: Under windows, the default pinvoke calling convention is
21856         stdcall. Fixes #52834.
21857
21858         * mini.c (optimize_branches): Add an upper bound to the number of
21859         iterations to prevent infinite loops on strange loops. Fixes #53003.
21860
21861 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
21862
21863         * inssel.brg: Add vectors<->one dimensional array checking to CASTCLASS
21864         and ISINST. Fixes #52093.
21865
21866         * objects.cs (test_0_vector_array_cast): New tests.
21867         
21868 2004-01-15  Zoltan Varga  <vargaz@freemail.hu>
21869
21870         * jit-icalls.c (helper_stelem_ref_check): New jit icall for array type
21871         checking in Array.Set ().
21872
21873         * mini.c (method_to_ir): Add array type checking in Array.Set (). Fixes
21874         #52590.
21875
21876         * object.cs (test_0_multi_array_cast): New regression test.
21877
21878 Thu Jan 15 16:30:24 CET 2004 Paolo Molaro <lupus@ximian.com>
21879
21880         * exceptions-ppc.c: fix build on Linux/PPC.
21881
21882 2004-01-14  Zoltan Varga  <vargaz@freemail.hu>
21883
21884         * tramp-x86.c (x86_magic_trampoline): Disable code patching when
21885         running under valgrind.
21886         (x86_magic_trampoline): Fix build bustage.
21887
21888         * debug-mini.c: Modify the debug info serialize/deserialize code so it handles
21889         negative values as well. This is needed for the encoding of the line number
21890         info, since sometimes the line numbers are not in increasing order.
21891
21892 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
21893
21894         * cpu-pentium.md (localloc): Increase the size of the localloc 
21895         instruction since it is a loop under Win32.
21896
21897         * debug-mini.c (record_line_number): Get rid of unneccesary memory
21898         allocation.
21899
21900 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
21901
21902         * exceptions-ppc.c exceptions-x86.c exceptions-sparc.c 
21903         tramp-x86.c tramp-ppc.c tramp-sparc.c: Applied patch from 
21904         Max Horn (max@quendi.de). Fix file names in comments.
21905
21906 2004-01-03  Zoltan Varga  <vargaz@freemail.hu>
21907
21908         * ssa.c (mono_ssa_rename_vars): Allocate new_stack on the heap to
21909         avoid stack overflow.
21910         (replace_usage): Avoid uninitialized variable warnings.
21911
21912         * mini.c (mono_method_to_ir): Avoid disabling SSA for array operations
21913         and taking the address of valuetype variables.
21914
21915 2004-01-03  Patrik Torstensson
21916
21917         * mini-x86.c: renamed fpflags to flags in RegTrack, going to be used
21918         for other purposes than FP later on.
21919
21920 2004-01-02  Zoltan Varga  <vargaz@freemail.hu>
21921
21922         * mini.c (mono_method_to_ir): Prevent register allocation for arguments
21923         of tail calls.
21924
21925 Fri Jan 2 13:37:25 CET 2004 Paolo Molaro <lupus@ximian.com>
21926
21927         * mini-ops.h, mini.c, inssel.brg: Object.GetType () speedup.
21928
21929 2003-12-30  Patrik Torstensson <p@rxc.se>
21930
21931         * mini-x86.h: Decreased number of availiable fp regs.
21932         Solves corner cases with FP spilling.
21933
21934 2003-12-23  Patrik Torstensson <p@rxc.se>
21935
21936         * mini-x86.c, mini-ops.h, cpu-pentium.md: Added support
21937         for floating point stack tracking / spilling on x86. 
21938         Fixes bug #49012.
21939         
21940         * basic-float.cs: added float mul overflow test.
21941
21942 2003-12-23  Zoltan Varga  <vargaz@freemail.hu>
21943
21944         * mini.c (mono_method_to_ir): Add workaround for bug #51126.
21945
21946 Sun Dec 21 19:53:16 CET 2003 Paolo Molaro <lupus@ximian.com>
21947
21948         * mini.h, mini-ppc.c, mini-ppc.h: small cleanups and
21949         supports for cond branches that overflow the immediate
21950         overflow offset. mcs can compile simple programs.
21951
21952 Fri Dec 19 21:17:16 CET 2003 Paolo Molaro <lupus@ximian.com>
21953
21954         * exceptions-ppc.c: exception handling support wip:
21955         finally handlers get run on exception.
21956
21957 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
21958
21959         * aot.c (mono_aot_get_method_inner): Avoid loading AOT code while 
21960         profiling.
21961
21962 Fri Dec 19 17:58:28 CET 2003 Paolo Molaro <lupus@ximian.com>
21963
21964         * cpu-g4.md, mini-ppc.c, exceptions-ppc.c, mini-ppc.h:
21965         initial support for stack walking and unwinding.
21966
21967 2003-12-18  Zoltan Varga  <vargaz@freemail.hu>
21968
21969         * driver.c (mono_main): Make corlib-out-of-sync message more 
21970         descriptive. Also remove verify_corlib call.
21971
21972 Wed Dec 17 15:31:41 CET 2003 Paolo Molaro <lupus@ximian.com>
21973
21974         * mini.c: make CEE_NEWARR calls and other emulated opcodes 
21975         not overlap with other call's arguments, too.
21976
21977 Wed Dec 17 12:49:23 CET 2003 Paolo Molaro <lupus@ximian.com>
21978
21979         * mini.h, mini.c, mini-ppc.c, mini-sparc.c, mini-x86.c: 
21980         move to arch-specific code the choice of arch-specific
21981         intrinsics (from Laurent Morichetti (l_m@pacbell.net)).
21982         * mini.c: ensure emulation calls will not interleave
21983         with other calls.
21984
21985 Wed Dec 17 12:27:26 CET 2003 Paolo Molaro <lupus@ximian.com>
21986
21987         * tramp-ppc.c, basic-calls.cs: rework trampolines so that
21988         the magic trampoline stack frame is dropped before executing
21989         the new method.
21990
21991 Mon Dec 15 18:13:57 CET 2003 Paolo Molaro <lupus@ximian.com>
21992
21993         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed some opcode lengths
21994         and integer to fp conversions. Added support for overflowing
21995         arguments on the stack. Reserve a couple more registers as temps.
21996         Added support for aot compilation (as output still needs to be
21997         tweaked, though).
21998
21999 Sat Dec 13 17:49:10 CET 2003 Paolo Molaro <lupus@ximian.com>
22000
22001         * mini-ppc.c, basic-long.cs: fix jumps to known labels.
22002         Don't overwrite return register in some corner cases.
22003
22004 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
22005
22006         * mini.h mini.c driver.c mini-x86.c mini-ppc.c aot.c: Do not run
22007         static constructors when AOT compiling.
22008
22009         * driver.c (mono_main): Call mono_check_corlib_version.
22010
22011 Sat Dec 13 10:31:12 CET 2003 Paolo Molaro <lupus@ximian.com>
22012
22013         * cpu-g4.md, basic.cs: fixed div target register.
22014
22015 Sat Dec 13 09:45:56 CET 2003 Paolo Molaro <lupus@ximian.com>
22016
22017         * mini-ppc.c, basic.cs: shl_imm fix with test.
22018
22019 Fri Dec 12 21:25:14 CET 2003 Paolo Molaro <lupus@ximian.com>
22020
22021         * inssel-ppc.brg, mini-ppc.h, mini-ppc.c: support for passing 
22022         structures by value. Misc fixes.
22023         * objects.cs: more tests.
22024
22025 Fri Dec 12 10:11:49 CET 2003 Paolo Molaro <lupus@ximian.com>
22026
22027         * mini-ppc.c: lconv.ovf.i implemented.
22028
22029 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22030
22031         * mini.c:
22032         (mini_init): don't error out if someone already called g_thread_init.
22033
22034 Tue Dec 9 17:27:14 CET 2003 Paolo Molaro <lupus@ximian.com>
22035
22036         * exceptions-x86.c, exceptions-ppc.c: allow the exception object
22037         to be any type per the spec. Fix abnormal memory usage when
22038         the same object is repeatedly thrown.
22039
22040 Tue Dec 9 15:39:54 CET 2003 Paolo Molaro <lupus@ximian.com>
22041
22042         * mini.c: check for overruns in IL code.
22043
22044 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
22045
22046         * TODO: Add/remove some todo entries.
22047
22048 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
22049
22050         * driver.c (mono_main): Call mono_verify_corlib.
22051
22052 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
22053
22054         * inssel.brg: In CEE_ISINST and CEE_CASTCLASS, removed check for proxy. 
22055         This has been moved to mini.c
22056         * mini.c: in mono_method_to_ir, CEE_ISINST and CEE_CASTCLASS cases, if the
22057         type being casted is marshalbyref it could be a proxy, so instead of
22058         emitting the type check code, emit a call to a runtime method that will
22059         perform the check by calling CanCastTo if needed.
22060
22061 2003-12-06  Zoltan Varga  <vargaz@freemail.hu>
22062
22063         * mini-x86.c (mono_arch_emit_prolog): Fix stack space allocation for
22064         methods with large stack frames under Win32.
22065
22066 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
22067
22068         * Makefile.am: Distribute regression tests.
22069
22070         * mini-x86.c (mono_arch_get_allocatable_int_vars): Sort the var list
22071         at the end instead of inserting each variable into the sorted list.
22072
22073         * linear-scan.c (mono_varlist_sort): New helper function.
22074         
22075 Wed Dec 3 20:46:28 CET 2003 Paolo Molaro <lupus@ximian.com>
22076
22077         * mini.c: ensure arguments and locals are within bounds.
22078
22079 Wed Dec 3 17:59:10 CET 2003 Paolo Molaro <lupus@ximian.com>
22080
22081         * mini-ppc.c, cpu-g4.md, basic.cs, basic-long.cs: more tests and 
22082         related fixes.
22083
22084 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
22085
22086         * mini.c (mono_cprop_copy_values): Fix crash.
22087
22088         * aot.c: Set verbosity back to 0.
22089         
22090 Wed Dec 3 15:42:27 CET 2003 Paolo Molaro <lupus@ximian.com>
22091
22092         * regalloc.c: complete memory leak fix by Laurent Morichetti
22093         (l_m@pacbell.net).
22094
22095 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
22096
22097         * driver.c (main_thread_handler): Revert the previous patch.
22098
22099         * tramp-x86.c (x86_class_init_trampoline): Avoid patching when running
22100         under valgrind.
22101
22102         * mini-x86.c (mono_arch_local_regalloc): Do not allocate transient
22103         memory from the memory pool.
22104
22105         * driver.c (main_thread_handler): Turn on all optimizations when
22106         --aot is used.
22107
22108         * mini.c (mono_find_jit_opcode_emulation): Turn emul_opcode_hash into
22109         an array for better performance.
22110
22111         * regalloc.c (mono_regstate_assign): Fix memory leak.
22112
22113         * debug-mini.c (mono_debug_serialize_debug_info): New function to
22114         serialize the debug info.
22115
22116         * debug-mini.c (mono_debug_add_aot_method): New function to load the
22117         debug info from the serialized representation.
22118
22119         * aot.c: Save debug info into the generated file and load it when 
22120         loading a method.
22121
22122         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
22123
22124 Mon Dec 1 16:54:05 CET 2003 Paolo Molaro <lupus@ximian.com>
22125
22126         * mini-ppc.c, tramp-ppc.c: save FP arguments in the trampoline.
22127         More FP-related fixes.
22128
22129 Sun Nov 30 19:13:52 CET 2003 Paolo Molaro <lupus@ximian.com>
22130
22131         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed finally handlers
22132         and register allocation buglet. Hello world now runs.
22133
22134 Fri Nov 28 23:03:05 CET 2003 Paolo Molaro <lupus@ximian.com>
22135
22136         * cpu-g4.md, inssel-ppc.brg, mini-ppc.c: better long return support.
22137         * tramp-ppc.c: fixed class init trampoline.
22138         * inssel-ppc.brg, mini.c, jit-icalls.c, mini-ppc.h: more emulation.
22139
22140 Fri Nov 28 16:36:29 CET 2003 Paolo Molaro <lupus@ximian.com>
22141
22142         * cpu-g4.md, inssel-ppc.brg, jit-icalls.c, mini-ppc.c, mini-ppc.h,
22143         mini.c: more ppc changes/fixes.
22144
22145 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
22146
22147         * mini.c (mono_method_to_ir): Fix tail calls with valuetype arguments.
22148         Also optimize the case when the arguments are the same in the caller 
22149         and in the callee.
22150
22151         * iltests.il: Add tests for tail calls with valuetype arguments.
22152
22153 Thu Nov 27 21:06:37 CET 2003 Paolo Molaro <lupus@ximian.com>
22154
22155         * mini-ppc.c: fixes for struct return type.
22156
22157 Thu Nov 27 19:02:07 CET 2003 Paolo Molaro <lupus@ximian.com>
22158
22159         * mini.h, mini.c, mini-x86.c, mini-ppc.c, mini-sparc.c: move 
22160         mono_spillvar_offset() to arch-specific code.
22161
22162 Thu Nov 27 18:30:42 CET 2003 Paolo Molaro <lupus@ximian.com>
22163
22164         * mini-ppc.h, mini-ppc.c: handle some different ABI call convention issues.
22165
22166 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
22167
22168         * exceptions-x86.c: Fix stack space leaks.
22169         
22170         * exceptions-x86.c (mono_arch_find_jit_info): Restore callee saved
22171         registers from the lmf if the method has save_lmf set.
22172
22173 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
22174
22175         * tramp-x86.c (x86_magic_trampoline): Avoid patching in the addresses
22176         of icall wrappers into InvokeInDomain, since these are now per-domain.
22177
22178 Wed Nov 26 20:15:04 CET 2003 Paolo Molaro <lupus@ximian.com>
22179
22180         * mini-ppc.h, mini-x86.h, mini.c, inssel-ppc.brg, jit-icalls.c:
22181         make some opcode emulation and intrinsic ops enabled/disabled 
22182         according to the architecture. More fixes.
22183
22184 Wed Nov 26 19:59:09 CET 2003 Paolo Molaro <lupus@ximian.com>
22185
22186         * mini-ppc.c, mini-sparc.c, cpu-g4.md: more bug fixes.
22187
22188 Wed Nov 26 19:18:29 CET 2003 Paolo Molaro <lupus@ximian.com>
22189
22190         * mini.h, inssel.brg, mini-x86.c, mini-ppc.c, mini-sparc.c: move
22191         arch-specific handling for 'this' and struct return type to
22192         arch-specific code.
22193
22194 2003-11-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22195
22196         * aot.c: prevent divide by zero error when reporting (it happened with
22197         Accessibility.dll).
22198
22199 2003-11-25  Zoltan Varga  <vargaz@freemail.hu>
22200
22201         * mini.h (inst_switch): Remove unused macro.
22202
22203 2003-11-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22204
22205         * aot.c:
22206         (load_aot_module): free 'info->methods' and 'info' properly. No more
22207         "free(): invalid pointer blah" messages when you have an old aot
22208         compiled assembly.
22209
22210 2003-11-21  Lluis Sanchez Gual <lluis@ximian.com>
22211
22212         * jit-icalls.c, mini.c: Added support for context static fields.
22213
22214 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
22215
22216         * mini.c (mono_method_blittable): Methods which set LastError are not 
22217         blittable either. Fixes #51108.
22218         
22219 Tue Nov 18 16:41:37 CET 2003 Paolo Molaro <lupus@ximian.com>
22220
22221         * mini.c: flush icache.
22222         * cpu-g4.md, mini-ppc.c, inssel.brg: more fixes. Trace support.
22223
22224 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
22225
22226         * mini.c (mono_type_blittable): OBJECT is not blittable. Fixes #47842.
22227
22228 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
22229
22230         * tramp-x86.c (x86_class_init_trampoline): Make code patching thread
22231         safe on IA32.
22232
22233         * mini-x86.c (mono_arch_call_opcode): Disable AOT for methods with 
22234         vararg calls.
22235
22236         * inssel.brg (CEE_MKREFANY): Fix AOT case.
22237
22238 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
22239
22240         * mini-x86.c (mono_arch_local_regalloc): Fix regalloc for div 
22241         instruction when the result is discarded.
22242
22243         * iltests.il (test_0_div_regalloc): New regression test.
22244
22245         * arrays.cs: Fix compilation error.
22246
22247 Fri Nov 14 21:34:06 CET 2003 Paolo Molaro <lupus@ximian.com>
22248
22249         * inssel-x86.brg, inssel-float.brg, mini-ops.h: move x86-specific
22250         float rules to inssel-x86.brg: sane architectures with FP registers
22251         don't need to implement these rules.
22252
22253 Fri Nov 14 20:52:12 CET 2003 Paolo Molaro <lupus@ximian.com>
22254
22255         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: updates and fixes to the ppc port.
22256
22257 Fri Nov 14 17:58:27 CET 2003 Paolo Molaro <lupus@ximian.com>
22258
22259         * mini.h, inssel-long32.brg: fixed endianess issues in int64
22260         implementation of 32 bit systems.
22261
22262 Thu Nov 13 16:14:41 CET 2003 Paolo Molaro <lupus@ximian.com>
22263
22264         * exceptions-ppc.c: fix build on Linux/ppc from Jeroen@xs4all.nl
22265         (Jeroen Zwartepoorte).
22266
22267 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
22268
22269         * mini.c (mono_method_to_ir): Use CEE_JMP only if the signature of
22270         the caller and the callee matches.
22271         
22272         * mini.c (mono_method_to_ir): Add comment.
22273
22274         * mini-x86.c (mono_arch_output_basic_block): Use mono_signbit, since
22275         signbit is missing on some platforms.
22276
22277 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
22278
22279         * mini.h (mono_arch_setup_jit_tls_data): New arch specific function.
22280
22281         * mini.c (setup_jit_tls_data): Call the new function.
22282         
22283         * mini-x86.c mini-ppc.c mini-sparc.c: Define the new function.
22284
22285         * mini-x86.c: Add experimental support for fast access to the lmf
22286         structure under NPTL/Linux 2.6.x.
22287
22288 2003-11-06  Martin Baulig  <martin@ximian.com>
22289
22290         * ldscript: Make `GC_push_all_stack', `GC_start_blocking',
22291         `GC_end_blocking' and 'gc_thread_vtable' public; they're used by
22292         the debugger.
22293
22294 2003-11-02  Martin Baulig  <martin@ximian.com>
22295
22296         * mini.c (inflate_generic_field): New static method.
22297         (mono_method_to_ir): In CEE_LDFLD and CEE_LDSFLD: if we're a
22298         generic instance and the field is declared in a generic type, call
22299         inflate_generic_field() to inflate it.  Fixes gen-28.cs.
22300
22301 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
22302
22303         * mini.h mini.c (mono_method_same_domain): New function to return
22304         whenever the caller and the callee are in the same domain.
22305
22306         * tramp-x86.c (x86_magic_trampoline): Use the new function.     
22307
22308 2003-10-30  Martin Baulig  <martin@ximian.com>
22309
22310         * mini.c (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): New macros;
22311         similar to TYPE_PARAM_TO_TYPE and TYPE_PARAM_TO_CLASS, but for
22312         method parameters.
22313         (mono_method_to_ir): Added support for MONO_TYPE_MVAR; similar to
22314         MONO_TYPE_VAR, we the actual types from MTYPE_PARAM_TO_CLASS(). 
22315
22316 2003-10-29  Zoltan Varga  <vargaz@freemail.hu>
22317
22318         * mini.c mini-ops.h inssel.brg: Implement undeniable exception 
22319         propagation.
22320
22321         * mini.c (sigusr1_signal_handler): Move creation of the thread abort
22322         object here, so it is in the correct appdomain etc.
22323
22324 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
22325
22326         * mini.c (mono_jit_compile_method_inner): Lookup icalls here if not
22327         already done.
22328         (mono_method_to_ir): Avoid freeing the type created returned from
22329         mono_type_create_from_typespec, since it is put into an internal cache
22330         by the function. Fixes pointer.exe.
22331
22332         * mini.c tramp-x86.c tramp-sparc.c tramp-ppc.c: Use the normal 
22333         trampolines for icalls and pinvokes as well. Fixes #33569.
22334
22335 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
22336
22337         * mini.c: Update after appdomain changes.
22338
22339         * mini.c (mono_jit_compile_method_inner): Allways compile native
22340         method wrappers in the root domain, since there can only be one
22341         instance of them, whose address is stored in method->info.
22342
22343 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
22344
22345         * mini.c (mono_runtime_install_handlers): Get rid of the MONO_VALGRIND
22346         environment variable. Instead detect automatically whenever running
22347         under valgrind using the magic macro RUNNING_ON_VALGRIND from
22348         valgrind.h.
22349
22350 2003-10-16  Miguel de Icaza  <miguel@ximian.com>
22351
22352         * trace.c, trace.h: New files that implement the new trace option
22353         parsing. 
22354
22355         * driver.c: Document new --trace options.
22356
22357         * exceptions-ppc.c, exceptions-x86.c, mini-ppc.c, mini-sparc.c,
22358         mini-x86.c: Apply:
22359
22360         -       if (mono_jit_trace_calls)
22361         +       if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
22362
22363         * mini.h: prototypes.
22364         
22365 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
22366
22367         * mini.c (mono_method_to_ir): Fix initialization of typedbyref locals.
22368
22369         * mini.c inssel.brg: Implement typedefbyref opcodes.
22370
22371         * mini.c (mono_jit_compile_method): Remove unused local variable.
22372
22373         * mini.c (mono_jit_compile_method_inner): Ditto.
22374         
22375 2003-10-12  Zoltan Varga  <vargaz@freemail.hu>
22376
22377         * tramp-x86.c (x86_class_init_trampoline): Fix build.
22378         
22379         * tramp-x86.c (x86_class_init_trampoline): Thread safety fixes.
22380
22381 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
22382
22383         * mini.c (mono_no_aot): Remove unused global variable.
22384
22385         * mini.c: Thread safety fixes.
22386
22387 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
22388
22389         * mini.c (mono_create_class_init_trampoline): Add a lock around
22390         class_init_hash_addr.
22391
22392         * arrays.cs (test_0_newarr_emulation): Add new regression test for
22393         #30073.
22394
22395         * mini.c: Decompose the NEWARR instruction before decomposing its
22396         arguments. Fixes #30073.
22397
22398 2003-10-08  Zoltan Varga  <vargaz@freemail.hu>
22399
22400         * mini-x86.c (mono_arch_emit_epilog): Add support for stdcall calling
22401         convention.
22402
22403 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
22404
22405         * mini.c (mono_method_to_ir): Allow wrapper data for CEE_LDELEMA.
22406
22407         * inssel-x86.brg (OP_LOCALLOC): Fix register assignment for localloc.
22408
22409         * driver.c: Add support for compiling icall wrappers to --compile.
22410
22411 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
22412
22413         * inssel.brg: The empty value in class->interface_offsets is -1, not
22414         0. Fixes #49287.
22415
22416 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
22417
22418         * objects.cs: New test for 'is' operator on an array of interfaces.
22419
22420 Wed Oct 1 19:40:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
22421
22422         * tramp-ppc.c: update trampoline code to support jumps
22423         and class initialization.
22424
22425 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
22426
22427         * mini.c (mono_jit_compile_method): Fix reading of freed memory.
22428
22429         * inssel.brg (OP_UNBOXCAST): Fix #46027.
22430
22431         * inssel.brg (OP_UNBOX): Remove unused rule.
22432
22433         * mini.h mini.c inssel-x86.brg: Allocate one SP variable for each
22434         region instead of one for each method. Fixes #47813.
22435
22436 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
22437
22438         * exceptions.cs (test_0_nested_finally): New regression test for
22439         nested exception handlers.
22440
22441         * mini.c (mono_jit_runtime_invoke): Fix for the previous fix.
22442
22443         * mini.c (mono_method_to_ir): Avoid inlining tail calls.
22444
22445         * mini.c (mono_method_to_ir): Fix tail recursion in the presence of 
22446         inlining.
22447
22448         * mini.c (mono_method_check_inlining): Make the inlining limit 
22449         configurable by an environment variable.
22450         
22451         * mini.c (mono_jit_runtime_invoke): Add Gonzalo's fix for #36545.
22452
22453         * mini.h: Bump AOT file version.
22454
22455         * mini.h mini.c aot.c mini-x86.c: For relocations which refer to a 
22456         token, store the image along with the token, since the token might not 
22457         refer to the same image as the method containing the relocation, 
22458         because of inlining.
22459
22460 2003-09-27  Zoltan Varga  <vargaz@freemail.hu>
22461
22462         * mini.c (mono_precompile_assemblies): New function to compile
22463         all methods in all loaded assemblies.
22464
22465         * mini.h driver.c: Added new optimization flag MONO_OPT_PRECOMP.
22466
22467         * regalloc.h regalloc.c (MonoRegState): Change the type of 
22468         iassign and fassign to int*, since they can contain large negative
22469         values if the register is spilled. Also added some comments. Fixes
22470         #45817.
22471
22472         * exceptions-x86.c (seh_handler): Fix handling of system exceptions
22473         under Win32. Fixes #42964.
22474
22475 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
22476
22477         * mini.h (MONO_PATCH_INFO_WRAPPER): New patch type.
22478
22479         * aot.c: Added support for AOT compiling methods which contain calls
22480         to wrappers. Currently, only remoting-invoke-with-check wrappers are
22481         handled.
22482         
22483         * driver.c (compile_all_methods): Run the compilation in a thread
22484         managed by mono. Fixes #44023.
22485
22486         * mini.c (mono_codegen): Print full method name in verbose output.
22487
22488         * mini-x86.c (mono_arch_patch_code): Fix warning.
22489         
22490         * mini-x86.c (mono_arch_patch_code): Allways create a trampoline for
22491         jumps, since the method we are jumping to might be domain-specific.
22492
22493         * aot.c: Added support for MONO_PATCH_INFO_METHOD_JUMP.
22494
22495 Tue Sep 23 10:50:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
22496
22497         * inssel.brg: string chars are unsigned.
22498
22499 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
22500
22501         * TODO: New todo item.
22502
22503         * tramp-x86.c (x86_class_init_trampoline): New trampoline function
22504         which calls mono_runtime_class_init and patches the call site to
22505         avoid further calls.
22506         (mono_arch_create_class_init_trampoline): New arch specific function 
22507         to create a class init trampoline.
22508         (create_trampoline_code): Generalized so it can create
22509         class init trampolines as well.
22510
22511         * mini.c (helper_sig_class_init_trampoline): New helper variable.
22512         (mono_create_class_init_trampoline): New function to create and cache
22513         class init trampolines.
22514         (mono_find_class_init_trampoline_by_addr): New function to lookup the
22515         vtable given the address of a class init trampoline. Used by the
22516         patching process.
22517         (mono_codegen): Generate a call to a trampoline instead of
22518         mono_runtime_class_init in LDSFLD[A].
22519         (mono_codegen): Add relocations for the new trampoline.
22520         
22521         * mini.h mini-x86.c aot.c: Added a new relocation type: 
22522         MONO_PATCH_INFO_CLASS_INIT.
22523
22524         * mini.h: Bump AOT version number.
22525
22526         * aot.c: Create a copy of the loaded code instead of using the original
22527         so methods which call each other will be close in memory, improving
22528         cache behaviour.
22529         
22530         * exceptions-x86.c (mono_arch_has_unwind_info): Back out the previous
22531         patch since it breaks the regression tests.
22532         
22533         * exceptions-x86.c (mono_arch_has_unwind_info): Added explicit check
22534         for the register saving instruction sequence since the 
22535         frame_state_for function in glibc 2.3.2 don't seem to detect it.
22536
22537 2003-09-14  Zoltan Varga  <vargaz@freemail.hu>
22538
22539         * TODO: Fix todo item && remove another.
22540
22541 2003-09-12  Zoltan Varga  <vargaz@freemail.hu>
22542
22543         * mini-x86.c (mono_arch_patch_code): Fix tail calls broken by a
22544         previous checkin.
22545
22546         * aot.c: Moved the check for MONO_LASTAOT into the initialization
22547         function of the module.
22548
22549         * mini.h mini.c aot.c: Added a new optimization flag OPT_AOT for
22550         turning on/off the usage of AOT code. Got rid of mono_no_aot and the
22551         --no-aot command line option.
22552
22553 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
22554
22555         * helpers.c (mono_disassemble_code): Make this work under cygwin. Patch
22556         by Bernie Solomon (bernard@ugsolutions.com).
22557
22558         * inssel.brg: Refactor the interface offset table related code into
22559         its separate functions and add support for the AOT case.
22560
22561 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
22562
22563         * aot.c (mono_aot_get_method_inner): Fix memory leak.
22564         
22565         * aot.c: Added mono_aot_verbose variable and made all debugging
22566         output depend on the value of this variable.
22567
22568         * aot.c (mono_aot_get_method_inner): Avoid dynamic allocation of
22569         method_label and info_label.
22570
22571         * mini.h mini-x86.c aot.c: Added a new relocation type 
22572         MONO_PATCH_INFO_IID for klass->interface_id.
22573
22574         * mini.h mini.c driver.c aot.c: Changed mono_aot_get_method to return
22575         the MonoJitInfo structure.
22576
22577         * mini.c (mono_jit_compile_method): Avoid using non-shared AOT in
22578         a non-root appdomain in shared mode.
22579
22580 Tue Sep 9 16:33:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
22581
22582         * aot.c: make aot loader less verbose. Remove free of unused variable.
22583
22584 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
22585
22586         * aot.c (mono_aot_get_method_inner): Fix MONO_PATCH_INFO_IMAGE.
22587
22588         * .cvsignore: Added *.dll.
22589
22590         * mini.c (mono_print_tree_nl): New function callable while debugging.
22591
22592         * mini.c (mono_print_code): Export this.
22593
22594         * tramp-x86.c (x86_magic_trampoline): Tell valgrind to recompile the
22595         patched code.
22596
22597 2003-09-05  Zoltan Varga  <vargaz@freemail.hu>
22598
22599         * mini.h (MonoCompile): Added 'jit_info' field.
22600
22601         * mini.c (mini_method_compile): Save the generated MonoJitInfo into
22602         the cfg structure, since it is needed by the AOT compiler.
22603
22604         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
22605
22606         * aot.c: A major rewrite. Changes include:
22607         - save exception tables for methods which have them.
22608         - cache failed lookups in aot_get_method () to avoid the (slow) calls 
22609         to g_module_symbol.
22610         - reworked the file format so it is now much smaller and needs
22611         fewer relocation entries.
22612         
22613 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
22614
22615         * aot.c (load_aot_module): Fix build bustage on platforms without
22616         Boehm GC.
22617
22618 2003-09-04  Martin Baulig  <martin@ximian.com>
22619
22620         * Makefile.am (INCLUDES): Added $(LIBGC_CFLAGS).
22621
22622 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
22623
22624         * TODO: Some new optimization ideas.
22625
22626         * aot.c: Move AOT module loading logic here from mono_assembly_open.
22627
22628         * aot.c: Save the optimization flags used to compile the code into
22629         the AOT module.
22630
22631         * mini.h mini-x86.c mini.c aot.c: Added new types of relocations to
22632         support emitting domain specific code.
22633         
22634         * mini.h mini.c aot.c: Modified the JIT so the generated AOT code is 
22635         no longer domain neutral. It can be made domain neutral by compiling 
22636         with --optimize=shared.
22637
22638         * aot.c (mono_aot_get_method_inner): Allow sharing of AOT methods
22639         between appdomains.
22640
22641         * driver.c mini.h mini.c: New --no-aot debugging option which disables
22642         loading of AOT code.
22643
22644         * inssel-x86.brg: Added missing AOTCONST -> OUTARG_VT rule.
22645         
22646         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling method
22647         if there is no domain neutrality information.
22648
22649 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
22650
22651         * aot.c (mono_compile_assembly): Emit a symbol containing the file 
22652         format version into the generated library.
22653
22654         * mini-x86.c (mono_arch_patch_code): Do not emit the address of the
22655         callee method into the caller since one of them could be shared.
22656
22657         * mini.h mini-x86.c aot.c: Added two new relocations so throwing
22658         system exceptions from AOT code now works.
22659
22660         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling 
22661         method if it is domain neutral and the callee is not.
22662
22663         * graph.c (cfg_emit_one_loop_level): Fix warning.
22664
22665 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
22666
22667         * aot.c (mono_compile_assembly): Oops. Remove debugging cruft from
22668         last checkin.
22669
22670 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
22671
22672         * mini.c (mini_init): Call mono_marshal_init () explicitly since it
22673         is needed  by code which is executed before mono_runtime_init ().
22674         Thanks to Bernie Solomon (bernard@ugsolutions.com) for noticing this.
22675         
22676         * mini.c (mono_thread_abort): Fix warning.
22677         (mono_jit_compile_method): Call static constructor in the AOT case too.
22678
22679         * aot.c (mono_compile_assembly): Fix warning.
22680
22681 2003-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22682
22683         * mini.c: register a SIGINT handler if MONO_DEBUG is defined.
22684
22685 2003-08-28  Zoltan Varga  <vargaz@freemail.hu>
22686
22687         * inssel.brg (OP_UNBOXCAST): Add support for the AOT case.
22688
22689         * cpu-pentium.md: Fix the length of call opcodes so they include the
22690         ESP restoring instruction. Fixes #47968.
22691
22692 2003-08-28  Martin Baulig  <martin@ximian.com>
22693
22694         * mini-x86.c (mono_arch_call_opcode): Added support for
22695         MONO_TYPE_GENERICINST.
22696
22697         * mini.c (check_call_signature): Added support for MONO_TYPE_GENERICINST.       
22698
22699 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
22700
22701         * Makefile.am (BUILT_SOURCES): Fix compilation on platforms without
22702         a JIT. Patch by Bernie Solomon (bernard@ugsolutions.com).
22703
22704         * mini.c jit-icalls.c tramp-x86.c tramp-ppc.c tramp-sparc.c: Get rid of
22705         metadata_section.
22706
22707 2003-08-26  Martin Baulig  <martin@ximian.com>
22708
22709         * mini.c (get_basic_blocks): Added `unsigned char **pos' argument;
22710         when reporting an error, set this to the actual error location.
22711         (mono_method_to_ir): Report the correct error location if
22712         get_basic_blocks() returned an error.
22713
22714 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
22715
22716         * mini.c (mono_type_blittable): OBJECT is not blittable.
22717         (mono_method_blittable): Methods which have marshalling descriptors
22718         are not blittable either. Fixes #47842.
22719
22720 2003-08-22  Zoltan Varga  <vargaz@freemail.hu>
22721
22722         * driver.c mini.c: Use an environment variable instead of a global 
22723         variable. Also fix the build.
22724
22725         * mini.c (mini_init): Call g_thread_init () to make glib thread-safe. 
22726         Fixes #47682. Thanks to Laurent Morichetti (l_m@pacbell.net) for 
22727         reporting this. 
22728
22729         * driver.c mini.c: Added --with-valgrind option to turn off some
22730         code which prevents mono from running under valgrind.
22731
22732         * mini.c (mono_emit_call_args): Fixed warning.
22733
22734         * mini.c (mono_emulate_opcode): Fixed warning.
22735
22736 Thu Aug 21 19:10:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
22737
22738         * inssel.brg: 64bit fixes from Laurent Morichetti <l_m@pacbell.net>.
22739         * linear-scan.c, mini-ppc.h, mini-sparc.h, mini-x86.h, mini.h,
22740         regalloc.c, regalloc.h: specify available registers in arch-specific
22741         code and support floats in the regallocator (patch by Laurent Morichetti 
22742         <l_m@pacbell.net>)
22743
22744 Wed Aug 20 19:02:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
22745
22746         * mini.c: mono_thread_current() can be called only after
22747         mono_runtime_init(): rearrange code to not call it early on.
22748
22749 Wed Aug 20 13:14:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
22750
22751         * mini.c: allocate jump tables in the code mempools.
22752
22753 Wed Aug 20 13:04:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
22754
22755         * mini.c, mini.h: make sure per-thread data allocated by the jit is
22756         freed.
22757
22758 2003-08-10  Miguel de Icaza  <miguel@ximian.com>
22759
22760         * cpu-pentium.md (ldtoken): Change the length for mul.ovf.un from
22761         12 to 16.  This fixes bug #47453.
22762
22763
22764 Thu Aug 7 15:59:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
22765
22766         * mini-ppc.c: fixed indexed load and unsigned compares.
22767
22768 2003-08-06  Lluis Sanchez Gual  <lluis@ximian.com>
22769
22770         * mini.c: reenabled installation of handler for
22771           thread abort signal.
22772
22773 Tue Aug 5 12:21:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
22774
22775         * cprop.c, mini-x86.c, cpu-pentium.md: fix buglets spotted
22776         by Laurent Morichetti <l_m@pacbell.net>. Disabled local cprop
22777         until it's fixed and actually useful.
22778
22779 Mon Aug 4 12:12:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
22780
22781         * inssel-long32.brg: couple more opcodes implemented.
22782
22783 Thu Jul 31 22:43:02 EDT 2003 Mark Crichton <crichton@gimp.org>
22784         
22785         * mini-sparc.c: Even more opcodes implemeted.
22786
22787 Thu Jul 31 19:36:03 EDT 2003 Mark Crichton <crichton@gimp.org>
22788
22789         * mini-sparc.c: More opcodes implemented.
22790
22791 Thu Jul 31 15:16:26 EDT 2003 Mark Crichton <crichton@gimp.org>
22792
22793         * mini-sparc.c: More opcodes implemented.
22794
22795 Wed Jul 30 22:31:02 EDT 2003 Mark Crichton <crichton@gimp.org>
22796
22797         * inssel-sparc.brg: Add some needed rules.  Direct
22798         copy from PPC.
22799         * Makefile.am: Use inssel-sparc.brg
22800         * exceptions-sparc.c: 0xdeadbeef/0xdecafbad to keep
22801         an assert happy for now.
22802
22803 Wed Jul 30 20:44:07 EDT 2003 Mark Crichton <crichton@gimp.org>
22804
22805         * mini-sparc.c: Fixed compile errors.
22806         * exceptions-sparc.c: Same.  We now produce a mono binary 
22807         on sparc-linux.  Yea.
22808
22809 Wed Jul 30 14:10:12 EDT 2003 Mark Crichton <crichton@gimp.org>
22810
22811         * mini-sparc.c: Renamed registers.  Also some macro cleanups.
22812         * exceptions-sparc.c, tramp-sparc.c: Various compile fixes.
22813         They compile, but do not work.
22814
22815 Wed Jul 30 17:52:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
22816
22817         * Makefile.am, cpu-sparc.md, exceptions-sparc.c, mini-sparc.c,
22818         mini-sparc.h, tramp-sparc.c: Beginning of sparc support
22819         from Mark Crichton <crichton@gimp.org> and Christopher Taylor
22820         (ct@gentoo.org).
22821
22822 Tue Jul 29 12:43:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
22823
22824         * mini.c: more opcodes implemented and better support for generics.
22825
22826 Fri Jul 25 18:51:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
22827
22828         * cpu-g4.md, cpu-pentium.md: updates for new instructions.
22829         * mini.c, mini.h: first cut at generics support: some new instructions 
22830         added and changed the behaviour of some of the existing ones.
22831
22832 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
22833
22834         * mini.c: Removed definition of metadata_shared mutex here.
22835
22836 Tue Jul 22 15:21:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
22837
22838         * mini-x86.c: make vararg calls work for instance methods.
22839
22840 Fri Jul 18 19:26:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
22841
22842         * mini.c, mini.h, mini-x86.c, mini-ppc.c: mono_arch_call_opcode()
22843         returns the arguments in a separte list, now.
22844
22845 Fri Jul 18 13:16:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
22846
22847         * aot.c, mini.c: updates for array type representation changes.
22848
22849 Fri Jul 18 11:28:28 CEST 2003 Paolo Molaro <lupus@ximian.com>
22850
22851         * mini.c: register function to perform jit shutdown.
22852
22853 Thu Jul 17 16:02:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
22854
22855         * mini.c: use a faster allocator if possible.
22856
22857 Thu Jul 17 16:00:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
22858
22859         * aot.c: some cleanups and portability changes.
22860
22861 Wed Jul 2 11:08:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
22862
22863         * mini.c: use faster allocation for CEE_BOX if possible.
22864
22865 Mon Jun 30 19:16:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
22866
22867         * mini.c, mini-ops.h, inssel.brg, mini-x86.c: optimized access to fields.
22868         Moved inlined mempcy code to its own function so that is can be
22869         reused. Added an inline memset function as well (optimized initobj).
22870         * cpu-pentium.md, inssel-x86.brg: add and use lea_membase.
22871
22872 Fri Jun 27 11:19:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
22873
22874         * mini.c, mini-ops.h, inssel.brg: optimized a couple of Array methods.
22875
22876 Wed Jun 25 13:19:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
22877
22878         * mini.c, mini.h, mini.x86.c, mini-ppc.c: added facility so that
22879         arch code can setup the cpu for CLR execution, if needed.
22880         We use it on x86 to set the precision of FP operations.
22881
22882 Tue Jun 17 19:02:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
22883
22884         * mini.c: disable some optimizations if we can guess they'll cost too
22885         much for a given method.
22886
22887 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
22888
22889         * mini.h mini.c: Rework last patch based on suggestions by Paolo.
22890         
22891 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
22892         * mini.h mini.c mini-x86.c: Added instruction level coverage 
22893         info collection support.
22894
22895 Mon Jun 16 18:13:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
22896
22897         * driver.c, mini-ppc.c, mini-x86.c, mini.c, mini.h: the coverage stuff
22898         is now implemented in the profiling API. Get rid of a couple of
22899         unnecessary global variables.
22900
22901 2003-06-15  Nick Drochak <ndrochak@gol.com>
22902
22903         * basic-long.cs: tests for negative values for bigmul, and unsigned.
22904         * cpu-g4.md: add op_bigmul and op_bigmul_un
22905         * cpu_pentium.md: add op_bigmul_un
22906         * inssel-long32.brg: add rule for unsigned bigmul
22907         * mini-ops.h: define OP_BIGMUL_UN
22908         * mini-x86.c: THE BUG: handle (un)signed properly
22909         * mini.c: choose unsigned opcode if needed.
22910         This set of patches fixes bug #44291
22911
22912 2003-06-13  Dietmar Maurer  <dietmar@ximian.com>
22913
22914         * mini.c (optimize_branches): improved to handle all kinds of
22915         conditional branches.
22916
22917 Wed Jun 11 18:01:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
22918
22919         * mini.c, mini.h, jit-icalls.c: speedup emulation of opcodes that
22920         don't raise exceptions.
22921
22922 Tue Jun 10 19:00:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
22923
22924         * tramp-x86.c, tramp-ppc.c, debug-mini.c: move arch-specific code
22925         to arch-specific files.
22926
22927 2003-06-09  Martin Baulig  <martin@ximian.com>
22928
22929         * Makefile.am (libs): Added $(LIBGC_LIBS).
22930
22931 Mon Jun 9 20:21:47 CEST 2003 Paolo Molaro <lupus@ximian.com>
22932
22933         * cpu-pentium.md, mini-x86.c: fix (well, actually implement) OP_TAN
22934         and OP_ATAN (fixes bug#44293).
22935
22936 Mon Jun 9 19:00:56 CEST 2003 Paolo Molaro <lupus@ximian.com>
22937
22938         * Makefile.am, mini-x86.c: rename cpu description array to
22939         pentium_desc, since some compilers define the 'pentium' preprocessor
22940         symbol.
22941
22942 2003-05-28  Dietmar Maurer  <dietmar@ximian.com>
22943
22944         * mini.c (mini_select_instructions): add explicit branch if the
22945         following block is not the false target of a conditional branch -
22946         we need this with any optimization that reorder or remove bblocks
22947
22948         * mini.c (optimize_branches): bug fixes
22949
22950 2003-06-06  Dietmar Maurer  <dietmar@ximian.com>
22951
22952         * mini.c (mono_method_to_ir): inline static readonly fields
22953
22954         * ssa.c (fold_tree): start cfold support for long (very simple
22955         cases only)
22956
22957         * cfold.c (mono_constant_fold_inst): opt. CEE_CONV_I8 (OP_ICONST)
22958
22959 Fri Jun 6 11:41:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
22960
22961         * inssel.brg: fixed memcpy (bug #44219).
22962
22963 2003-06-05  Dick Porter  <dick@ximian.com>
22964
22965         * driver.c: Set the glib log levels to not abort if g_message
22966         recurses.
22967
22968         g_set_prgname() has to happen before mini_init() so that the
22969         process handle gets the info.
22970         
22971 Thu Jun 5 20:11:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
22972
22973         * driver.c: add intrins to the default optimizations to get wider
22974         exposure.
22975
22976 Wed Jun 4 19:47:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
22977
22978         * mini.h: some large basic blocks will overflow a 16-bit
22979         integers for symbolic registers.
22980
22981 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
22982
22983         * mini-x86.c (mono_arch_output_basic_block): revert previous fprem changes.
22984         (mono_arch_output_basic_block): fix bug 43499 
22985
22986 Wed Jun 4 13:13:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
22987
22988         * mini.c: kill duplicated definition of mono_debug_format.
22989
22990 Wed Jun 4 13:09:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
22991
22992         * mini-x86.c, arrays.cs: fixed register allocation bug.
22993
22994 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
22995
22996         * mini-x86.c (mono_arch_output_basic_block): use IEEE compatible fprem1
22997
22998         * mini.c (mini_get_opcode_for_method): inline IEEERemainder
22999
23000 2003-06-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23001
23002         * mini.c:
23003         (print_method_from_ip): also print source location information if
23004         available.
23005
23006 2003-06-02  Dietmar Maurer  <dietmar@ximian.com>
23007
23008         * mini.c (mono_find_block_region): bug fix in region code
23009         (mini_method_compile): enable removing unreachable code again, but
23010         only in methods without exception clauses.
23011
23012 Fri May 30 18:40:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
23013
23014         * mini.c, mini-ops.h, cpu-pentium.md, inssel.brg, mini-x86.c, mini.h:
23015         Implemented arglist opcode and handling of TypedReference type.
23016         Fixed x86 call convention when a structure is returned.
23017         Minimal support for calling static vararg methods.
23018
23019 2003-05-30  Dietmar Maurer  <dietmar@ximian.com>
23020
23021         * mini.c (mini_method_compile):  always remove unreachable code,
23022         because the code in them may be inconsistent  (access to dead
23023         variables for example).
23024
23025 Thu May 29 11:44:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
23026
23027         * driver.c, debug-mini.c: warning fixes.
23028
23029 Wed May 28 11:19:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
23030
23031         * Makefile.am, jit.h, mini.h: install header for embedding mono.
23032
23033 Tue May 27 17:56:12 CEST 2003 Paolo Molaro <lupus@ximian.com>
23034
23035         * mini.c: thread-static fields are registered in mono_class_vtable(),
23036         so ensure the function is called before checking for them.
23037
23038 2003-05-27  Dietmar Maurer  <dietmar@ximian.com>
23039
23040         * mini.c (optimize_branches): fix for bug 43586
23041
23042         * jit-icalls.c (mono_llmult_ovf): added an additional check for
23043         overflow (fixes Bug #43639)
23044
23045 Tue May 27 11:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
23046
23047         * mini.c, objects.cs: allow the use of stobj for primitive types.
23048
23049 Tue May 27 10:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
23050
23051         * mini.c: be less strict about argument checking until we support
23052         running the verifier.
23053
23054 2003-05-27  Nick Drochak <ndrochak@gol.com>
23055
23056         * basic-long.cs: tests for (ulong)int * (ulong)int also
23057         * mini.c: use the same trick for (ulong)int * (ulong)int
23058
23059 2003-05-27  Nick Drochak <ndrochak@gol.com>
23060
23061         * basic-long.cs: add regression test for (long)int * (long)int
23062         * cpu-pentium.md: add op_bigmul specification
23063         * inssel-long32.brg: add OP_BIGMUL rule
23064         * mini-ops.h: add OP_BIGMUL
23065         * mini-x86.c: register allocator: handle case where src1 needs to be
23066         in EAX.
23067         * mini.c: substitute special BIGMUL opcode in the tree for 
23068         (long)int * (long)int
23069
23070 Mon May 26 20:20:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
23071
23072         * jit-icalls.c: call the type ctor on field access if needed.
23073
23074 Mon May 26 15:21:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
23075
23076         * mini-ops.h, mini.c, inssel.brg, exceptions.cs: validate arguments passed
23077         to a method (including results of ldelema, bug#43207).
23078
23079 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
23080
23081         * graph.c (cfg_emit_one_loop_level): loop over all blocks. use
23082         colors to show exception handler blocks.
23083
23084         * inssel-x86.brg (OP_OUTARG_VT): dont push zero sized structures
23085         (fix for pinvoke7.cs).
23086
23087 Mon May 26 12:11:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
23088
23089         * mini.h, mini.c: ensure correct initialization order for types that
23090         require it. Prepare for lazy compilation of jit icall wrappers.
23091         Provide a name for opcode emulation to reduce unneeded mallocing.
23092
23093 Fri May 23 16:08:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
23094
23095         * mini-x86.c: better register restoring code and profiling
23096         support for tail calls.
23097
23098 Fri May 23 15:30:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
23099
23100         * mini.h, driver.c: prepare for leaf methods optimization.
23101
23102 Fri May 23 15:28:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
23103
23104         * mini.c: get targets of branches before converting a method.
23105
23106 2003-05-23  Dietmar Maurer  <dietmar@ximian.com>
23107
23108         * mini.c (optimize_branches): added some experimental code (disbaled) 
23109
23110 2003-05-22  Dietmar Maurer  <dietmar@ximian.com>
23111
23112         * mini.c (optimize_branches): fix branch to branch optimization 
23113
23114         * exceptions-x86.c (mono_arch_handle_exception): bug fix.
23115
23116         * mini-x86.c (mono_arch_output_basic_block): cleanup up exception code
23117
23118         * inssel-x86.brg: added OP_START_HANDLER, CEE_ENDFINALLY, OP_ENDFILTER
23119
23120         * mini-x86.c (mono_arch_allocate_vars): only reserve space for lmf
23121         if needed.
23122
23123 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
23124
23125         * mini.c (mono_method_to_ir): call handle_loaded_temps before inlining.
23126         enable use of interface variables again.
23127
23128         * mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate
23129         I1 to registers because there is no simply way to sign extend 8bit
23130         quantities in caller saved registers on x86.
23131
23132         * inssel-float.brg: set costs of some rules to 2 so
23133         that monobure always select the arch. specific ones if supplied,
23134         regardless of the order we pass the files to monoburg.
23135
23136 Tue May 20 17:19:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
23137
23138         * mini.c, mini-x86.c: since the magic trampoline for jumps
23139         can't patch the code directly, we do it as soon as the
23140         method gets compiled.
23141
23142 Tue May 20 16:02:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
23143
23144         * mini-x86.c, mini.h: introduce a new patching method
23145         to support CEE_JMP and tail calls.
23146         * mini.c: obey tail.call. Don't precompile methods target
23147         of CEE_JMP.
23148         * tramp-x86.c: new trampoline code to handle methods
23149         reached through a jump.
23150
23151 2003-05-20  Dietmar Maurer  <dietmar@ximian.com>
23152
23153         * mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16
23154         bit values to registers
23155
23156 2003-05-19  Dietmar Maurer  <dietmar@ximian.com>
23157
23158         * mini.c (mono_compile_get_interface_var): share interface
23159         variables if possible.
23160
23161 2003-05-16  Martin Baulig  <martin@ximian.com>
23162
23163         * debug-mini.c (mono_init_debugger): New function to initialize
23164         the debugger.  This is not in the debugger since it needs to
23165         access some of mini's internals.
23166
23167 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
23168
23169         * mini.c (mono_method_to_ir): inlining fixes/cleanups
23170
23171 Fri May 16 13:27:23 CEST 2003 Paolo Molaro <lupus@ximian.com>
23172
23173         * mini.c, mini-opts.h, inssel.brg: inline small memcpy
23174         for value type handling.
23175
23176 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
23177
23178         * mini.c (mono_method_to_ir): inline LDFLD/STFLD wrappers
23179         (mono_method_check_inlining): enable inlining of all kinds of wrappers
23180
23181 2003-05-15  Lluis Sanchez Gual  <lluis@ideary.com>
23182
23183         * mini.c: fixed little bug in CEE_NEWOBJ case when calling
23184           the constructor through a proxy.
23185
23186 Thu May 15 17:17:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
23187
23188         * jit-icalls.c, inssel.brg: fixes to array element address
23189         calculations.
23190
23191 2003-05-15  Dietmar Maurer  <dietmar@ximian.com>
23192
23193         * mini-x86.c (is_regsize_var): allocate pointer to registers
23194
23195 Thu May 15 13:04:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
23196
23197         * driver.c: fixed typo, added intrins to the set of optimizations
23198         tested with regressions.
23199
23200 Thu May 15 11:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
23201
23202         * mini-ops.h, mini.c, inssel.brg: optimize access to 2D arrays.
23203         * jit-icalls.c, exceptions.cs: fixed index out of range checks, added
23204         test case.
23205
23206 2003-05-14  Dietmar Maurer  <dietmar@ximian.com>
23207
23208         * inssel.brg: remove some common pop instructions without side effects
23209
23210 Wed May 14 12:40:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
23211
23212         * inssel-x86.brg: fixed thinko in int to double conversions.
23213
23214 Wed May 14 12:01:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
23215
23216         * mini.c, jit-icalls.c: added runtime thread-static variable support.
23217
23218 Tue May 13 22:02:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
23219
23220         * inssel-long32.brg: two more missing instructions.
23221
23222 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
23223
23224         * mini.c (mono_emit_call_args): set the cil_code for all arguments
23225         if not already set.
23226
23227 2003-05-12  Zoltan Varga  <vargaz@freemail.hu>
23228
23229         * mini-x86.c (mono_arch_output_basic_block): Handle negative zero
23230         correctly.
23231
23232         * basic-float.cs: Added tests for negative zero.
23233
23234 Sun May 11 14:56:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
23235
23236         * inssel-long32.brg, basic-long.cs, exceptions.cs: handle
23237         a couple of missing operations for long casts, with test cases.
23238
23239 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23240
23241         * exceptions-x86.c: fixed small leaks in mono_arch_handle_exception.
23242
23243 2003-05-09  Dietmar Maurer  <dietmar@ximian.com>
23244
23245         * mini-x86.c (mono_arch_emit_prolog): avoid reallocs with better
23246         code size estimation.
23247
23248 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
23249
23250         * mini.c (mono_jit_create_remoting_trampoline): make it work with
23251         abstract methods (fix bug 42542)
23252
23253         * aot.c: add ability to handle array types
23254         
23255 2003-05-08  Zoltan Varga  <vargaz@freemail.hu>
23256
23257         * mini.c: Call the _specific versions of the object allocation
23258         functions if possible.
23259
23260 Tue May 6 17:18:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
23261
23262         * driver.c: call setlocale ().
23263
23264 Tue May 6 14:38:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
23265
23266         * mini.h, mini.c, aot.c, debug-mini.c, exceptions.c: build fixes for
23267         windows build.
23268
23269 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
23270
23271         * mini.c (optimize_branches): dont touch code inside exception clauses (fix bug 38136)
23272
23273         * exceptions-x86.c (ves_icall_get_frame_info): also skip remoting
23274         wrappers (fix bug 42122)
23275
23276 2003-05-04  Martin Baulig  <martin@ximian.com>
23277
23278         * mini.h (mono_jit_init, mono_jit_cleanup): Added prototypes.
23279
23280         * driver.c: s/MONO_OPT_SAHRED/MONO_OPT_SHARED/g.
23281         s/mini_set_defaults/mono_set_defaults/g.
23282
23283 2003-05-04  Martin Baulig  <martin@ximian.com>
23284
23285         * driver.c: s/mini_parse_default_optimizations/mono_parse_default_optimizations/g.
23286
23287 Sun May 4 11:48:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
23288
23289         * inssel-long32.brg: add missing lreg: OP_LCONV_TO_U8 (lreg) rule
23290         (reported by Don Roberts).
23291
23292 Fri May 2 18:36:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
23293
23294         * mini.c: temporarily work around two bugs for this release.
23295
23296 Fri May 2 17:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
23297
23298         * Makefile.am: avoid linking libmono with GMODULE_LIBS, because
23299         that contains -export-dynamic and it makes using the ld script
23300         useless.
23301         * mini.h, main.c, driver.c: s/mini_main/mono_main/g.
23302
23303 Fri May 2 12:52:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
23304
23305         * mini.h, mini-x86.c, driver.c: disable optimizations not available on a
23306         specific cpu.
23307
23308 Thu May 1 15:28:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
23309
23310         * mini.c: make sure leave calls all the needed finally blocks,
23311         even when the target jumps out of multiple exception clauses.
23312
23313 Thu May 1 15:18:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
23314
23315         * ldscript, Makefile.am: add linker script to reduce the number of
23316         exported symbols (should also fix the issues with libwine defining
23317         some of the same symbols in io-layer).
23318
23319 2003-05-01  Zoltan Varga  <vargaz@freemail.hu>
23320
23321         * driver.c (mini_main): Avoid assertion when no file name is given on 
23322         the command line.
23323
23324 Wed Apr 30 15:33:11 CEST 2003 Paolo Molaro <lupus@ximian.com>
23325
23326         * driver.c: added --version/-V command line option.
23327         Added the inline optimization in the regression tests.
23328
23329 Wed Apr 30 15:16:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
23330
23331         * mini.c, basic-calls.cs: when inlining, save arguments to locals according 
23332         to the type in the method signature (fixes bug#42134).
23333
23334 Wed Apr 30 12:38:44 CEST 2003 Paolo Molaro <lupus@ximian.com>
23335
23336         * mini.c: when inlining, check this is not null only when needed (bug #42135).
23337
23338 Wed Apr 30 11:44:36 CEST 2003 Paolo Molaro <lupus@ximian.com>
23339
23340         * mini-ppc.h, tramp-pcc.c: type fixes from Max Horn <max@quendi.de>.
23341
23342 2003-04-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23343
23344         * driver.c: fixed bug #42100.
23345
23346 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
23347
23348         * mini.c (mono_method_to_ir): UNBOX need to CAST objects first
23349
23350 Mon Apr 28 17:03:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
23351
23352         * mini.c: moved most of the code required to do inlining to its own
23353         function so it can be reused. Inline also ctors if appropriate.
23354
23355 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
23356
23357         * Makefile.am: Link with -export-dynamic so shared libs loaded by
23358         the runtime can call mono API functions.
23359
23360 2003-04-27  Martin Baulig  <martin@ximian.com>
23361
23362         * debug-mini.c (mono_debug_init_method): Added
23363         `guint32 breakpoint_id' argument; if the method has a breakpoint,
23364         send a notification to the debugger.
23365
23366         * mini.c (mono_method_to_ir): Don't insert a breakpoint if we're
23367         running in the Mono Debugger, just pass the breakpoint number to
23368         mono_debug_init_method().
23369
23370         * tramp-x86.c, tramp-ppc.c: Removed the breakpoint trampolines.
23371
23372 Sun Apr 27 13:18:04 CEST 2003 Paolo Molaro <lupus@ximian.com>
23373
23374         * mini.c: allow some more unsafe compares.
23375
23376 Sat Apr 26 11:55:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
23377
23378         * mini-x86.c, Makefile.am: make distcheck works (partially from
23379         a patch by Richard Lee <r.h.lee@attbi.com>).
23380         * regset.c, regset.h: removed, they are unused.
23381
23382 2003-04-25  Dick Porter  <dick@ximian.com>
23383
23384         * driver.c: Usage reports the name as 'mono' not 'mini'
23385         * exceptions-x86.c: Build and run on freebsd
23386
23387 Thu Apr 24 17:09:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
23388
23389         * Makefile.am: install the program with the 'mono' name and
23390         the library as libmono instead of mini and libmini.
23391
23392 Thu Apr 24 17:08:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
23393
23394         * driver.c: provide the APIs for the embedding interface of the old jit.
23395
23396 2003-04-23  Dietmar Maurer  <dietmar@ximian.com>
23397
23398         * jit-icalls.c (helper_stelem_ref): impl. (fix bug 41775)
23399
23400 2003-04-23  Martin Baulig  <martin@ximian.com>
23401
23402         * tramp-x86.c, tramp-ppc.c: Reenable the debugger breakpoint interface.
23403
23404         * driver.c: Added `--debug' command line argument to enable
23405         debugging support.
23406
23407 2003-04-23  Martin Baulig  <martin@ximian.com>
23408
23409         * debug.[ch]: Removed.  The code is now in
23410         ../metadata/mono-debug.[ch] and mono-debug-debugger.[ch].
23411
23412         * debug-stabs.c, debug-dwarf2.c: Removed; nobody used this for the
23413         last six months.
23414
23415 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
23416
23417         * mini.c (mono_method_to_ir): set the cil_code address (fix bug 41525)
23418
23419 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23420
23421         * mini.c:
23422         (mini_cleanup): moved mono_runtime_cleanup call after the call to
23423         mono_domain_finalize.
23424         (mini_method_compile): use mono_method_profile* if the the option is
23425         enabled.
23426
23427 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
23428
23429         * tramp-x86.c (mono_arch_create_jit_trampoline): Subsitute synchronized
23430         methods with their wrapper.
23431
23432         * tramp-ppc.c (mono_arch_create_jit_trampoline): Subsitute synchronized
23433         methods with their wrapper.
23434
23435         * jit-icalls.c (mono_ldvirtfn): Subsitute synchronized methods with
23436         their wrapper.
23437
23438         * mini.c (mono_method_to_ir): Subsitute synchronized methods with their
23439         wrapper.
23440
23441         * mini.c (mono_method_check_inlining): Avoid inlining synchronized
23442         methods.
23443
23444 2003-04-17  Dietmar Maurer  <dietmar@ximian.com>
23445
23446         * exceptions-x86.c (mono_arch_handle_exception): fix for bug 36252
23447
23448 2003-04-16  Dietmar Maurer  <dietmar@ximian.com>
23449
23450         * mini.c (mono_compile_create_var): use g_malloc/g_realloc instead
23451         of the mempool. This is slightly faster and uses less memory
23452
23453 Wed Apr 16 12:53:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
23454
23455         * mini.c: avoid O(n) allocation for variables.
23456
23457 Tue Apr 15 19:13:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
23458
23459         * mini.c: handle items on the stack after inlining methods.
23460
23461 Tue Apr 15 14:17:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
23462
23463         * mini.c: make the method->opcode optimization dependent
23464         on MONO_OPT_INSTRINS and do it lazily.
23465
23466 Tue Apr 15 14:15:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
23467
23468         * driver.c: print overall results at the end of regression run.
23469
23470 Tue Apr 15 11:18:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
23471
23472         * inssel.brg: don't overwrite symbolic registers.
23473
23474 Mon Apr 14 17:41:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
23475
23476         * inssel-x86.brg: fix conversion from long to float.
23477
23478 2003-04-11  Dietmar Maurer  <dietmar@ximian.com>
23479
23480         * mini.c (mini_init): use an opcode for get_Chars (OP_GETCHR)
23481
23482 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
23483
23484         * mini.c (mono_type_blittable): MONO_TYPE_OBJECT is blittable.
23485
23486         * driver.c: Added --print-vtable option as in the old JIT.
23487
23488 Thu Apr 10 17:43:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
23489
23490         * inssel-long32.brg, exceptions.cs: fix conversions from long, too.
23491
23492 Thu Apr 10 16:27:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
23493
23494         * inssel.brg, basic.cs: fixed checked conversions to byte and short.
23495
23496 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
23497
23498         * mini.c regalloc.c regalloc.h: Fix memory leak.
23499
23500 2003-04-09  Dietmar Maurer  <dietmar@ximian.com>
23501
23502         * aot.c (mono_aot_get_method): register all used strings
23503
23504 Wed Apr 9 15:22:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
23505
23506         * mini.c: always intern strings references with ldstr at compile time.
23507
23508 Tue Apr 8 11:41:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
23509
23510         * Makefile.am: add BUILT_SOURCES.
23511
23512 Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
23513
23514         * driver.c: give a better error message when the assembly to execute
23515         doesn't have an entry point.
23516
23517 2003-04-07  Dietmar Maurer  <dietmar@ximian.com>
23518
23519         * Makefile.am: added hack for automake
23520
23521         * mono/mini/mini.c (mono_save_args): always copy arguments to keep
23522         correct sematics.
23523
23524         * mono/mini/ssa.c (mono_ssa_avoid_copies): don't optimize calls
23525
23526 22003-04-07  Martin Baulig  <martin@ximian.com>
23527
23528         * Makefile.am: Added Makefile.am.
23529
23530         * debugger-main.c: Removed, this is now in the debugger where it
23531         belongs.
23532
23533         * mini.pc.in: Call this package `mini' for the moment.
23534
23535
23536
23537
23538
23539
23540
23541
23542
23543
23544
23545
23546
23547
23548