1eb816a4325caa0d279aa9318ea1ec9dfb1b17d9
[mono.git] / mono / mini / ChangeLog
1 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
2
3         * mini.c (mono_jit_compile_method_inner): Avoid reading cfg->prof_options
4         after cfg has been freed.
5
6 2010-01-17  Zoltan Varga  <vargaz@gmail.com>
7
8         * branch-opts.c (mono_branch_optimize_exception_target): Stop the optimization
9         if a clause is skipped because it uses the exception object, since it could
10         have caught the exception.
11
12         * exceptions.cs: Add a test.
13
14 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
15
16        * mini-trampolines.c (mono_create_static_rgctx_trampoline): Add an assert.
17
18         * aot-runtime.c (mono_aot_get_method): Handle ftnptr's correctly for the
19         ICollection<T> wrappers.
20
21 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
22
23         * debugger-agent.c (decode_value): Fix the decoding of I/U/PTR.
24
25 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
26
27         * mini-amd64.c (emit_call_body): Always use near calls when AOTing even if
28         NOMAP32BIT or optimize_for_xen is set.
29
30 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
31
32         * aot-compiler.c aot-runtime.c: Get rid of mono_aot_str_hash (), use
33         mono_metadata_str_hash () instead.
34
35 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
36
37         * ir-emit.h (MONO_EMIT_NEW_ICOMPARE_IMM): Use sizeof (mgreg_t) instead of
38         sizeof (void*).
39
40         * unwind.c (mono_unwind_frame): Use mgreg_t instead of gssize.
41
42 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
43
44         * ir-emit.h (MONO_EMIT_NEW_CHECK_THIS): Emit an explicit null check if the
45         flag is set.
46
47         * mini-ppc.c (mono_arch_emit_exceptions): Compute the size of the exception
48         throwing code correctly.
49
50         * mini.h (MONO_AOT_FILE_VERSION): Bump this because of the IMT hashing changes.
51
52 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
53
54         * aot-runtime.c (mono_aot_plt_resolve): Reenable the previous assert for
55         ftnptrs created by us, handle RGCTX_FETCH correctly.
56         (mono_aot_get_lazy_fetch_trampoline): Add an ftnptr.
57
58         * mini-trampolines.c (mono_create_generic_class_init_trampoline): Remove the
59         ftnptr added by mono_aot_get_named_code ().
60
61 2010-01-14  Zoltan Varga  <vargaz@gmail.com>
62
63         * mini-arm.c: Fix a few LLVM problems.
64
65         * mini-llvm.c (simd_class_to_llvm_type): Fix compilation on !x86/amd64.
66
67 2010-01-13  Mark Probst  <mark.probst@gmail.com>
68
69         * method-to-ir.c (mini_emit_stobj): Use EMIT_NEW_CLASSCONST when
70         AOT compiling.
71
72 Wed Jan 13 15:54:53 CET 2010 Paolo Molaro <lupus@ximian.com>
73
74         * jit.h, method-to-ir.c: added ability to set the policy for
75         inserting breakpoints from the break IL instruction or the
76         Debugger.Break () API call.
77
78 2010-01-13  Zoltan Varga  <vargaz@gmail.com>
79
80         * aot-runtime.c (load_aot_module): Add more comments to explain why referenced
81         assemblies need to be eagerly loaded.
82
83 2010-01-12  Zoltan Varga  <vargaz@gmail.com>
84
85         * dwarfwriter.c (emit_line_number_info): Fix the eglib case so it doesn't crash.
86
87 2010-01-11  Zoltan Varga  <vargaz@gmail.com>
88
89         * debugger-agent.c (mono_debugger_agent_parse_options): Allow onthrow without
90         an argument which matches any exception.
91
92 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
93
94         * method-to-ir.c (mono_emit_method_call_full): Avoid the virt->nonvirt
95         optimization if the called method is gshared and marshalbyref, since gshared
96         methods can' have wrappers. Fixes #569390.
97
98         * generics.cs: Add a test.
99
100 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
101
102         * mini-exceptions.c (mono_print_thread_dump_from_ctx): New helper function
103         callable from gdb.
104
105 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
106
107         * mini.c (mono_print_method_from_ip): Fix the lookup of trampolines.
108
109 2010-01-09  Zoltan Varga  <vargaz@gmail.com>
110
111         * debugger-agent.c (transport_connect): comment out freeaddrinfo calls under win32,
112         since it is not supported in win2000.
113
114 2010-01-08  Zoltan Varga  <vargaz@gmail.com>
115
116         * aot-runtime.c (load_image): Add a SET_ERROR argument to set the loader
117         error if loading an assembly fails.
118         (mono_aot_plt_resolve): Return NULL instead of asserting if loading fails.
119
120         * mini-trampolines.c (mono_aot_plt_trampoline): Throw a pending loader error
121         if exists.
122
123         * aot-runtime.c (decode_exception_debug_info): Set jinfo->from_llvm for LLVM
124         compiled methods.
125
126         * mini-llvm-cpp.cpp: Remove the unused ctx variable.
127
128         * mini-llvm.c (mono_llvm_emit_method): Add some comments about why aot+clauses
129         is not supported yet.
130
131         * unwind.c (DW_EH_PE_absptr): Add more DW_EH_PE_ constants.
132
133 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
134
135         * method-to-ir.c: All types with variant arguments must fallback to the
136         slow path. This makes cast of variant delegates work.
137
138         * mini-trampolines.c (mono_get_vcall_slot_addr): Add new variance_used out
139         argument that is set to TRUE is the returned vtable slot is for a variant
140         interface. Changed a g_print + g_assert_not_reached to a g_error.
141
142         * mini-trampilines.c (common_call_trampoline): Handle variant interfaces in
143         a similar fashion of generic virtual methods.
144
145 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
146
147         * helpers.c (mono_disassemble_code): Fix a g_hash_table warning
148         when cfg is null.
149
150         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Convert a given
151         method using a variance aware function.
152
153         * mini-x86.c: Add support for dumping IMT thunks if DEBUG_IMT is defined.
154
155 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
156
157         * method-to-ir.c (mono_method_to_ir): Casts to variant interfaces
158         do an icall for now.
159
160 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
161
162         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add an ugly hack to fix #564695.
163         If LLVM decides to set the code model to Large, reset it to Default.
164
165 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
166
167         * aot-compiler.c (mono_xdebug_flush): Export it so it is present in
168         stripped binaries as well.
169
170 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
171
172         * mini-trampolines.c (common_call_trampoline): Add an rgctx trampoline if a shared
173         method is called from LLVM compiled code, as that code can't pass an rgctx arg.
174
175         * mini-llvm.c (mono_llvm_emit_method): Enable calls to methods needing an rgctx
176         reg.
177
178 2010-01-06  Zoltan Varga  <vargaz@gmail.com>
179
180         * mini.c (mini_method_compile): Extract the JIT info creation code into a
181         separate function.
182
183         * mini-llvm.c (mono_llvm_emit_method): Pass the info in MonoExceptionClause
184         as the type info to llvm.eh.selector.
185         (exception_cb): Use the type info for filling out some fields of
186         MonoJitExceptionInfo like the flags and the exception class. This is needed
187         because the LLVM produced exception handling clauses might not match the original
188         IL clauses, i.e. there might be more than one LLVM clause for one IL clause.
189
190         * unwind.c (mono_unwind_decode_fde): Extract the LSDA decoding code into a
191         separate function. Add an extra argument which returns the type infos
192         corresponding to the exception clauses.
193
194         * mini.c (mini_method_compile): Enable LLVM compilation of methods having
195         exception handling clauses.
196
197 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
198
199         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call
200         mono_method_get_vtable_slot () instead of accessing imt_method->slot directly,
201         to fix an AOT case.
202
203 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
204
205         * mini.c (mono_compile_is_broken): Skip methods from serialization's
206         internal assembly.
207
208 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
209
210         * mini.c (mini_method_compile): Fix a few memory leaks introduced by the
211         llvm code.
212
213 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
214
215         * mini.c (mini_method_compile): Verify the method before calling
216         mono_compile_create_vars as this might crash since it uses method
217         information.
218
219         Fixes #560196.
220
221 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
222
223         * method-to-ir.c (mono_method_to_ir): Avoid calling mono_class_vtable () in
224         one case if AOTing, since the class might not be a concrete class.
225
226 2010-01-03  Zoltan Varga  <vargaz@gmail.com>
227
228         * mini-codegen.c abcremoval.c: Remove the duplicate g_slist_append_mempool
229         functions which are now defined in mempool-internals.h.
230
231         * mini.c (mini_free_jit_domain_info): Free the seq point hash tables.
232
233         * mini-llvm.c (mono_llvm_emit_method): Handle OP_ABS.
234
235 2009-12-30  Rodrigo Kumpera  <rkumpera@novell.com>
236
237         * mini.c:
238         * method-to.ir.c:
239         * mini-*.c: Properly handle generic enums.
240
241         Fixes #566294
242
243 2009-12-28  Zoltan Varga  <vargaz@gmail.com>
244
245         * method-to-ir.c (mono_method_to_ir): Handle the failure of mono_class_vtable ()
246         in a few more places.
247
248 2009-12-27  Zoltan Varga  <vargaz@gmail.com>
249
250         * aot-compiler.c (add_wrappers): Don't use dyn runtime invoke for methods with
251         nullable parameters. Fixes #567351.
252
253 2009-12-26  Rodrigo Kumpera  <rkumpera@novell.com>
254
255         * mini-trampolines.c (common_call_trampoline): Add assert for NULL resolved generic method.
256
257 2009-12-26  Zoltan Varga  <vargaz@gmail.com>
258
259         * mini-trampolines.c: Use mono_arch_get_this_arg_from_call () to avoid the slow
260         mono_get_generic_context_from_code () call.
261
262         * mini-<ARCH>.c: Get rid of mono_arch_find_this_arg (), it is no longer used.
263
264 2009-12-25  Zoltan Varga  <vargaz@gmail.com>
265
266         * aot-runtime.c (decode_klass_ref): Don't call mono_class_init (), its not
267         needed.
268
269 2009-12-24  Sebastien Pouliot  <sebastien@ximian.com>
270
271         * method-to-ir.c (mono_method_to_ir): Avoid SIGSEGV when
272         mono_method_get_signature returns NULL. Fix #567084
273
274 2009-12-25  Zoltan Varga  <vargaz@gmail.com>
275
276         * aot-runtime.c (find_extra_method): Call mono_aot_wrapper_name only once,
277         instead of once for each module.
278
279 2009-12-22  Zoltan Varga  <vargaz@gmail.com>
280
281         * debugger-agent.c (ss_start): Implement step over for the last sequence
282         point in methods.
283
284         * mini.c (mono_save_seq_point_info): Don't link sequence points which don't
285         have the STEP_LOC flag set.
286
287         * aot-runtime.c (decode_klass_ref): Avoid a crash if a decode_klass_ref () call
288         fails. Fixes #566689.
289
290 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
291
292         * mini.c (mono_add_seq_point): New helper function.
293         (mono_save_seq_point_info): New function to save sequence point info, extracted
294         from mini_method_compile ().
295
296         * mini-<ARCH>.c: Call mono_add_seq_point to remember sequence points.
297
298         * mini.h (MonoSeqPointInfo): New structure containing information about
299         the sequence points of a JITted method.
300         (MonoBasicBlock): Add 'seq_points' and 'last_seq_point' fields. Remove unused
301         'bucket' field.
302
303         * mini.c debugger-agent.c aot-compiler.c aot-runtime.c: Change the way sequence
304         point information is stored, use a MonoSeqPointInfo structure instead of a
305         GPtrArray. For each seq point, compute a list of successor seq points.
306
307         * debugger-agent.c: Use the successor list to implement step-over more
308         efficiently: instead of single stepping until a different line/IL offset is
309         reached, place breakpoints into all successor seq points.
310
311         * mini.h: Bump AOT file format version.
312
313 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
314
315         * Makefile.am (AM_CFLAGS): Include LLVM_CFLAGS.
316
317         * mini-llvm.c: Avoid defining the __STDC_... macros if already defined.
318
319 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
320
321         * exceptions-ppc.c (mono_ppc_set_func_into_sigctx): Fix the cross-compiler
322         build.
323
324 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
325
326         * mini-x86.c (mono_arch_get_argument_info): Allocate memory for CallInfo using
327         alloca as g_malloc is not signal safe.
328
329 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
330
331         * tramp-x86.c (mono_arch_patch_callsite): Fix the call to
332         VALGRIND_DISCARD_TRANSLATIONS.
333
334         * *.c: Include mono/utils/memcheck.h, and remove #ifdef HAVE_VALGRIND_MEMCHECK_H
335         checks, they are no longer needed.
336
337         * exceptions-ppc.c (mono_ppc_set_func_into_sigctx): New helper function to set
338         a function into a sigctx which can handle function pointers.
339
340         * mini-ppc.c: Implement soft debugger support on ppc64.
341
342         * mini-ppc.c: Implement soft debugger support.
343
344 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
345
346         * mini-llvm.c: Handle OP_LADD_OVF_UN. Place all alloca's into the entry bb.
347
348 2009-12-17  Marek Habersack  <mhabersack@novell.com>
349
350         * mini.c (mono_get_runtime_build_info): include Mono version in
351         the returned value.
352
353         * driver.c (mono_main): VERSION is now included in the string
354         returned from mono_get_runtime_build_info()
355
356 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
357
358         * method-to-ir.c (mono_method_to_ir): Add support for CALLI with unmanaged
359         signatures. Fixes #565143.
360
361         * jit-icalls.c (mono_get_native_calli_wrapper): New JIT icall.
362
363 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
364
365         * aot-compiler.c (arch_emit_autoreg): Align code to 4 in the ppc case.
366
367 2009-12-16 Rodrigo Kumpera  <rkumpera@novell.com>
368
369         * mini-x86.h: Forgot to add a 0x to MONO_ARCH_MAX_FRAME_SIZE define
370         making max stack 10x smaller.
371
372 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
373
374         * mini.c (mono_resolve_patch_target): Comment out an assert which could be hit.
375
376 2009-12-15 Rodrigo Kumpera  <rkumpera@novell.com>
377
378         * method-to-ir.c (mini_emit_memcpy): Assert if size is too big.
379
380 2009-12-15 Rodrigo Kumpera  <rkumpera@novell.com>
381
382         * mini-x86.c (mono_arch_allocate_vars): Fail compilation if the frame size is
383         bigger than MONO_ARCH_MAX_FRAME_SIZE.
384
385         * mini-x86.c (mono_arch_emit_prolog): Handle huge frames.
386
387         * mini-x86.h: Define MONO_ARCH_MAX_FRAME_SIZE to be 1Mb.
388
389         * mini-amd64.c / mini-amd64.h: Same fixes as of above.
390
391         * mini.c (mini_method_compile): Check if mono_arch_allocate_vars failed
392         the compilation.
393
394 2009-12-14  Miguel de Icaza  <miguel@novell.com>
395
396         * method-to-ir.c (mono_method_to_ir): CEE_UNUSUED opcodes now
397         raise an invalid program exception.   
398
399         For other opcodes that we might not handle use a g_warning and
400         raise the exception.   Beats termination.
401
402         Fixes #561724
403
404 2009-12-14  Zoltan Varga  <vargaz@gmail.com>
405
406         * method-to-ir.c (mono_emit_rgctx_method_call_full): Fix a warning.
407
408         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix the LLVM support
409         by merging the LLVM and !MAP_32BIT cases.
410
411 2009-12-13 Jonathan Chambers <joncham@gmail.com>
412
413         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Handle a NULL
414         sigctx being passed in, as we have no CONTEXT available in the APC.
415
416         (mono_debugger_agent_cleanup): Use explicit cond wait implementation
417         for now.
418
419         Code contributed under MIT/X11 license.
420
421 2009-12-13  Zoltan Varga  <vargaz@gmail.com>
422
423         * method-to-ir.c mini-llvm.c: Fix support for monitor enter/exit trampolines
424         in the LLVM backend on AMD64.
425
426         * aot-runtime.c (decode_eh_frame): Initialize the clauses from the info in the
427         FDE.
428
429         * unwind.c (mono_unwind_decode_fde): Implement decoding of a couple more formats.
430
431         * mini-llvm.c: Export mono_personality for AOT.
432
433         * mini.c (mini_method_compile): Fix some problems with llvm+aot+clauses.
434
435         * mini-ops.h (OP_IMPLICIT_EXCEPTION): New opcode marking the place where an
436         implicit exception can occur.
437
438         * ir-emit.h (MONO_EMIT_NEW_IMPLICIT_EXCEPTION): New macro to emit an
439         OP_IMPLICIT_EXCEPTION instruction.
440
441         * ir-emit.h (MONO_EMIT_NEW_CHECK_THIS): New macro.
442
443         * method-to-ir.c: Use MONO_EMIT_NEW_CHECK_THIS in a few places.
444
445         * mini-llvm.c: Handle OP_IMPLICIT_EXCEPTION by disabling llvm if it occurs
446         inside a protected block.
447
448         * mini-llvm.c: Revert the last change, the signature of monitor entry/exit
449         trampolines doesn't include the argument.
450
451         * mini-llvm.c (mono_llvm_emit_method): Enable calls to monitor entry/exit
452         trampolines on amd64.
453
454         * mini-amd64.h (MONO_ARCH_MONITOR_OBJECT_REG): Use MONO_AMD64_ARG_REG1 instead
455         of RDI.
456
457         * mini.c (mini_method_compile): Add some comments as to why LLVM is currently
458         disabled for methods with clauses.
459
460         * mini-llvm.c: Enable support for catch clauses.
461
462         * mini-exceptions.c (mono_resume_unwind): New function to resume unwinding at the
463         end of an LLVM compiled finally clause.
464         (mono_handle_exception_internal): Save the exception handling state in TLS
465         before calling an LLVM compiled finally clause, so mono_resume_unwind () can
466         resume unwinding from that point.
467
468         * unwind.c (mono_unwind_get_ops_from_fde): Rename this to
469         mono_unwind_decode_fde, decode the Language Specific Data Area (LSDA) too,
470         to obtain the addresses of the exception handling regions.
471
472         * mini-llvm.c: Add beginnings of support for exception handling, currently only
473         finally clauses are supported.
474
475         * mini.c (mini_method_compile): Add support for LLVM code with exception
476         handlers.
477
478 2009-12-12  Zoltan Varga  <vargaz@gmail.com>
479
480         * mini-llvm.c (mono_llvm_emit_method): Allocate the 'pindexes' array with the
481         proper size.
482
483 2009-12-12  Zoltan Varga  <vargaz@gmail.com>
484
485         * debugger-agent.c: Encode the this argument of vtype methods as a struct, not
486         as a primitive type.
487
488 2009-12-11  Zoltan Varga  <vargaz@gmail.com>
489
490         * driver.c: Applied patch from Matt McClellan (matt@mc-c.net). Add a check
491         for 2 parameter sched_setaffinity in older glibc versions. Fixes
492         #564000.
493
494 2009-12-11  Marek Habersack  <mhabersack@novell.com>
495
496         * method-to-ir.c (mini_redirect_call): do not redirect the
497         InternalAllocateStr internal call if string profiling is enabled.
498
499 2009-12-10  Zoltan Varga  <vargaz@gmail.com>
500
501         * aot-compiler.c (add_wrappers): Avoid generating synchronized wrappers for
502         generic methods.
503
504         * unwind.h: Rename this to mini-unwind.h to avoid conflicts with the gcc
505         unwind.h header file.
506
507         * tramp-x86.c (mono_arch_patch_callsite): Patch the code when using valgrind,
508         newer valgrind versions seems to handle this fine.
509
510 2009-12-09  Zoltan Varga  <vargaz@gmail.com>
511
512         * debugger-agent.c (start_runtime_invoke): Fix a crash if this is called
513         on the debugger thread.
514
515 2009-12-08  Zoltan Varga  <vargaz@gmail.com>
516
517         * mini-llvm.c (mono_llvm_emit_method): Add more SIMD opcodes.
518
519         * mini.c (mono_print_method_from_ip): Fix the lookup of trampolines.
520
521         * mini-codegen.c (mono_local_regalloc): Allow non-call opcodes with cloc:c.
522
523         * cpu-<ARCH>.md: Make call_handler clob:c.
524
525         * mini.c: Reenable SSA for methods with clauses.
526
527         * mini.c (mini_method_compile): Disable SSA for now for methods with clauses,
528         as it causes failures on x86.
529
530 2009-12-08  Sebastien Pouliot  <sebastien@ximian.com>
531
532         * driver.c: Fail gracefully with --compile-all if mono_method_signature
533         returns NULL (e.g. a bad assembly).
534
535 2009-12-08  Geoff Norton  <gnorton@novell.com>
536
537         * debugger-agent.c:  Refactor the mono_runtime_invoke guarding against
538         stepping out into native code.  There were issues with nested invokes
539         like .cctors.
540
541 2009-12-07  Zoltan Varga  <vargaz@gmail.com>
542
543         * mini.c (mini_method_compile): Do the disable_llvm checks early
544         and avoid the LLVM compile pass if the checks fail.
545
546         * mini.c ssa.c abcremoval.c: Enable SSA for methods with exception clauses.
547
548         * mini-llvm.c: Put our methods/globals into the 'llvm.used' array, so the
549         LLVM optimizations don't try to remove them.
550
551         * aot-compiler.c (emit_llvm_file): Save the result of opt into a
552         different file so the original remains.
553
554 2009-12-06  Zoltan Varga  <vargaz@gmail.com>
555
556         * mini-llvm.c mini.c: Fix alignment issues with SIMD vars.
557
558         * aot-runtime.c (decode_arm_exidx): Handle most descriptors created by gas.
559
560         * aot-runtime.c (decode_arm_exidx): Refactor this into two functions, add
561         support for non-inline unwind descriptors.
562
563 2009-12-07  Geoff Norton  <gnorton@novell.com>
564
565         * debugger-agent.c:  Darwin can colesce signals, so we need to handle
566         the interrupt_count slightly differently.  Native threads were never
567         marked as resumed.
568
569 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
570
571         * aot-runtime.c (decode_arm_exidx): New function to initialize a MonoJitInfo
572         based on the contents of the ARM .exidx section. Not yet used since llvm doesn't
573         yet generate this info.
574
575         * mini-llvm.c: Fix the conversion of call results if they are unsigned.
576
577         * debugger-agent.c (buffer_add_value): Treat I/U as a valuetype, so the
578         client can distinguish between intptrs and longs.
579
580 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
581
582         * aot-compiler.c (emit_trampoline): Emit the trampoline info into the global
583         blob.
584
585         * aot-runtime.c (load_function): Update after the change above.
586
587         * mini.h: Bump AOT file format version.
588
589         * method-to-ir.c (mono_method_to_ir): Disallow the delegate optimization
590         if the delegate class is dynamic.
591
592         * method-to-ir.c (handle_delegate_ctor): Allow the method_code optimization
593         in gshared code too using the new rgctx info type
594         MONO_RGCTX_INFO_METHOD_DELEGATE_CODE.
595
596 2009-12-04  Geoff Norton  <gnorton@novell.com>
597
598         * debugger-agent.c: When doing a func-eval invoke on a suspended runtime,
599         we need to track the original suspend count so the thread properly
600         wakes up in resume_thread.
601
602 2009-12-04  Zoltan Varga  <vargaz@gmail.com>
603
604         * method-to-ir.c (handle_delegate_ctor): Add support for using this from gshared
605         code.
606
607         * generics.cs: Add a test.
608
609         * method-to-ir.c (emit_get_rgctx_method): Make this work even if context_used
610         is 0. Simplify a lot of code using this.
611
612         * mini-trampolines.c (mono_delegate_trampoline): Call
613         mono_create_static_rgctx_trampoline () before saving the final address in
614         delegate->method_code, to avoid calling it each time a delegate is first called.
615
616         * method-to-ir.c (mono_method_to_ir): Allow fast delegate creation for methods
617         which need static rgctx trampolines.
618
619         * mini-trampolines.c (mono_create_static_rgctx_trampoline): Use a cache
620         keyed on the method+addr pair, since addr could be either the method addr or
621         an unbox trampoline in the AOT case. Fixes #560246.
622
623 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
624
625         * mini.c (mini_method_compile): Call handle_exception_clauses () in the same
626         place it was called before too.
627
628 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
629
630         * mini.c (mono_jit_runtime_invoke): Avoid the call to mono_class_setup_vtable ()
631         if no security manager is present, to speed up the AOT case. Call
632         mono_class_vtable () full with raise_on_error == TRUE instead.
633
634 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
635
636         * mini.c (mini_method_compile): Call handle_exception_clauses earlier so
637         the local optimization passes can take its result into account. Fixes
638         #559876.
639
640         * exceptions.cs: Add a test.
641
642 2009-01-24  Steven Munroe  <munroesj@us.ibm.com>
643
644         This patch is contributed under the terms of the MIT/X11 license
645
646         * cpu-ppc64.md (load_memindex): Add loadi8_memindex.
647
648 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
649
650         * mini.h (MonoInst): Remove unused 'ssa_op' field.
651
652         * debugger-agent.c: Rework the handling of stack traces of running threads to
653         avoid crashes if compute_frames () tries to walk the stack of running thread.
654
655         * mini.c (mono_print_method_from_ip): Use mini_jit_info_table_find.
656
657         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): Set frame->lmf.
658
659         * mini.h (StackFrameInfo): Add an 'lmf' field.
660
661 2009-12-02  Zoltan Varga  <vargaz@gmail.com>
662
663         * debugger-agent.c (suspend_current): Always set really_suspended.
664
665         * debugger-agent.c (clear_event_request): Clear method entry/exit requests too.
666
667         * exceptions-x86.c (mono_arch_get_restore_context): Restore EAX too.
668
669 2009-12-01  Zoltan Varga  <vargaz@gmail.com>
670
671         * debugger-agent.c (vm_commands): Don't allow invokes on threads which are not
672         really suspended.
673
674 2009-12-01  Zoltan Varga  <vargaz@gmail.com>
675
676         * cpu-ppc64.md (store_memindex): Add storei8_memindex.
677
678 2009-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
679
680         * mini-trampolines.c: Fix MSVC build.
681
682 2009-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
683
684         * mini-trampolines.c: Check for mono_method_get_vtable_slot failures.
685
686 2009-11-30  Zoltan Varga  <vargaz@gmail.com>
687
688         * mini-arm.c (mono_arch_lowering_pass): Fix an assert which is hit when
689         the instruction following an OP_FCOMPARE is optimized away.
690
691 2009-11-30  Zoltan Varga  <vargaz@gmail.com>
692
693         * aot-compiler.c (arch_emit_autoreg): Extract the auto-registration code from
694         emit_autoreg () into this arch-specific function.
695
696         * aot-compiler.c (emit_exception_debug_info): Don't emit the length of the
697         code, it is no longer needed.
698
699         * aot-runtime.c (decode_exception_debug_info): Don't read the code length.
700
701         * mini.h: Bump AOT file format version.
702
703         * aot-runtime.c (mono_aot_find_jit_info): Compute the length of the method
704         using the sorted_code_offsets array, instead of reading it from the
705         exception debug info.
706         (load_method): Call mono_aot_find_jit_info instead of
707         decode_exception_debug_info ().
708
709         * aot-compiler.c (emit_exception_debug_info): Emit whenever the method was
710         LLVM compiled as a flag.
711
712 2009-11-29  Zoltan Varga  <vargaz@gmail.com>
713
714         * debugger-agent.c (resume_thread): Fix a warning.
715
716         * aot-compiler.c: Add an option to set the number of static rgctx trampolines
717         generated.
718
719 2009-11-28  Zoltan Varga  <vargaz@gmail.com>
720
721         * aot-compiler.c aot-runtime.c: Get rid of a few global symbols, move their
722         contents to MonoAotFileInfo.
723
724 2009-11-27  Zoltan Varga  <vargaz@gmail.com>
725
726         * aot-compiler.c aot-runtime.c: Reorganize the AOT file format once again.
727         Put all binary data into a giant blob, similarly to the way .net assemblies
728         store binary data. Emit offset tables in a compact form to reduce their size.
729
730         * mini.h: Bump AOT file format version.
731
732         * aot-compiler.c (emit_globals_table): Use temp_prefix instead of .L in a few
733         places.
734
735         * aot-compiler.c (emit_globals_table): Emit a hash table for the globals, to
736         avoid linear searches at runtime.
737
738         * aot-runtime.c (find_symbol): Update this to use the hash.
739
740         * mini.h: Bump AOT file format version.
741
742 2009-11-26  Zoltan Varga  <vargaz@gmail.com>
743
744         * aot-compiler.c (emit_klass_info): Save whenever the class has a generic
745         container.
746
747         * aot-runtime.c (decode_cached_class_info): Set the is_generic_container field
748         too.
749
750         * aot-compiler.c (mono_compile_assembly): Add a 'stats' option to print out
751         the distribution of got slot types.
752
753         * mini.h (MonoDebugOptions): Add 'explicit_null_checks' option.
754
755         * method-to-ir.c: Add support for generating explicit null checks.
756
757 2009-11-25  Zoltan Varga  <vargaz@gmail.com>
758
759         * debugger-agent.c (vm_commands): Implement EXIT by invoking Environment.Exit ()
760         on a random thread if possible.
761
762         * aot-runtime.c (mono_aot_plt_resolve): Clean up the handling of function
763         descriptors a bit, add comments, handle RGCTX_FETCH/GENERIC_CLASS_INIT_TRAMPOLINE
764         correctly.
765
766         * exceptions-ppc.c (mono_arch_find_jit_info_ext): Use mgreg_t as the type of
767         regs. Pass the real size of the regs array to mono_unwind_frame ().
768
769         * unwind.c (mono_unwind_frame): Remove an incorrect assert, add more correct
770         ones instead.
771
772 2009-11-24  Geoff Norton  <gnorton@novell.com>
773
774         * mini-darwin.c: Work around apple bug rdar://7209349  See
775         http://openradar.appspot.com/7209349 for details.  Synopsis,
776         CoreFoundation SIGTRAP's if you dlopen it off the main thread if its
777         never been initialized before.
778
779 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
780
781         * tramp-arm.c: Use blx instead of mov pc, reg to improve support for thumb.
782
783         * mini-arm.c (mono_arm_thumb_supported): New helper function.
784
785 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
786
787         * cfold.c (mono_constant_fold_ins): Fix a problem in the previous change,
788         OP_SHL_IMM is not 32 bit.
789
790 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
791
792         * aot-compiler.c (encode_patch): Fix the encoding of R8 on big-endian systems.
793
794 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
795
796         * aot-compiler.c: Avoid infinite recursion when generic virtual recursion is
797         encountered.
798
799         * debugger-agent.c (resume_vm): Signal the suspend_cond even if suspend_count
800         > 0 since some threads can resume if their resume_count is > 0.
801         (invoke_method): Avoid reading freed memory.
802
803         * debugger-agent.c (process_suspend): Extract the suspend code from
804         process_single_step_inner () to a separate function. Rework the code to prevent
805         races between this function and thread interrupts.
806
807         * debugger-agent.c (suspend_current): Check the resume_count field instead
808         of resume_one so suspends+resumes during single threaded invokes work
809         correctly.
810
811 2009-11-23  Zoltan Varga  <vargaz@gmail.com>
812
813         * aot-compiler.c (emit_llvm_file): Enable some llvm optimizations which seem
814         to make the generated code smaller.
815
816         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Add a code
817         sequence generated by recent LLVM versions.
818
819         * mini-llvm.c: Add support for a few simple cases which weren't supported
820         before.
821
822         * mini-trampolines.c (mono_magic_trampoline): Don't call
823         mono_arch_get_vcall_slot () when llvm is enabled.
824
825         * aot-compiler.c (emit_llvm_file): Add code to run the 'opt' llvm tool.
826
827         * mini-trampolines.c (mono_magic_trampoline): Extract the bulk of this function
828         into a new function called common_call_trampoline () which is used by the
829         llvm vcall trampoline as well.
830
831         * debugger-agent.c: Implement single threaded invokes.
832
833         * debugger-agent.c: Revert change which broke the agent on linux.
834
835         * method-to-ir.c (inline_method): Prevent infinite recursion. Fixes
836         #557606.
837
838         * generics.cs: Add a test.
839
840 2009-11-22  Zoltan Varga  <vargaz@gmail.com>
841
842         * debugger-agent.c: Fix the cygwin build.
843
844 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
845
846         * cprop.c: Remove this unused file.
847
848 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
849
850         * cfold.c (mono_constant_fold_ins): Fix constant folding of shr_imm. Fixes
851         #557262.
852
853         * basic.cs: Add a test.
854
855 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
856
857         * method-to-ir.c (mono_method_to_ir): Use mono_use_llvm instead of ENABLE_LLVM
858         in one more place.
859
860 2009-11-20  Zoltan Varga  <vargaz@gmail.com>
861
862         * mini.c mini-trampolines.c driver.c: Add a 'mono_use_llvm' flag to control
863         whenever the runtime uses LLVM code. Add a '--llvm' command line option to set
864         it. Use this flag to control llvm related code paths instead of #ifdef
865         ENABLE_LLVM, so a runtime configured without --enable-llvm can use LLVM compiled
866         AOT code.
867
868         * aot-runtime.c aot-compiler.c: Add a 'flag' field to MonoAotFileInfo.
869
870         * mini.h: Bump AOT file format version.
871
872         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline_full): These
873         receive their argument in MONO_ARCH_VTABLE_REG, not in the first argument reg.
874
875         * debugger-agent.c (create_event_list): Fix a crash if an empty assembly list
876         was used as an assembly filter.
877
878 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
879
880         * unwind.c: Fix support for ppc.
881
882         * exceptions-ppc.c (mono_arch_find_jit_info): Change this to use dwarf frame
883         unwind info. Change to the mono_arch_find_jit_info_ext () interface.
884
885 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
886
887         * mini-ppc.c (mono_arch_emit_prolog): Fix a copy-paste error to fix the ppc64
888         port.
889         (mono_arch_cpu_init): Don't set cpu_hw_flags to 0 at the end, this was somehow
890         added by the ps3 changes.
891
892 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
893
894         * mini-gc.c: Resurrect this, so at least it compiles.
895
896         * debugger-agent.c (assembly_commands): Implement GET_NAME command.
897
898 2009-11-18  Zoltan Varga  <vargaz@gmail.com>
899
900         * debugger-agent.c (mono_debugger_agent_handle_exception): Pass a MonoJitInfo to
901         create_event_list () so assembly filters can be used.
902
903         * exceptions-ppc.c (mono_arch_find_jit_info): Fix the restoration of registers
904         from the LMF.
905
906 2009-11-17  Zoltan Varga  <vargaz@gmail.com>
907
908         * debugger-agent.c (mono_debugger_agent_breakpoint_hit): Fix a warning.
909         (mono_debugger_agent_thread_interrupt): Make this return FALSE if the agent
910         is disabled.
911
912         * aot-compiler.c (add_generic_instances): Emit instances of common generic
913         classes for char/bool too.
914
915         * debugger-agent.c (DebuggerTlsData): Honor the DISABLE_SOFT_DEBUG option.
916
917         * debugger-agent.c (DebuggerTlsData): Add a 'really_suspended' flag, not yet
918         used.
919
920         * debugger-agent.c: Add some definitions to make backporting to 2.6 easier.
921         Fix warnings.
922
923 2009-11-15  Andreas Faerber  <andreas.faerber@web.de>
924
925         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Signature fix.
926         
927         Code contributed under MIT/X11 license.
928
929 2009-11-14  Zoltan Varga  <vargaz@gmail.com>
930
931         (mono_debugger_agent_thread_interrupt): Save the context so stacktraces for
932         threads in native code work.
933
934         * debugger-agent.c: Pass the 'flags' argument to VM_INVOKE_METHOD earlier in
935         the parameter list, so it can be acted upon by vm_commands (). Bump protocol
936         version.
937
938 2009-11-13 Jonathan Chambers <joncham@gmail.com>
939
940         * debugger-agent.c: Implementation for Windows platform.
941
942         * mini-x86.c: Add support for Windows. Use mono-* synchronization
943         primitives. Use SEH to implement breakpoints and single stepping.
944
945         * mini-x86.h: Enable soft debugger on Windows.
946
947         Code contributed under MIT/X11 license.
948
949 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
950
951         * mini-amd64.c (emit_call_body): Disable usage of near calls when running
952         under XEN. Fixes #522894.
953
954         * patch-info.h: Add LLVM_IMT_TRAMPOLINE.
955
956         * mini-llvm.c aot-compiler.c aot-runtime.c mini.c: Add support for making
957         interface calls in LLVM AOT code.
958
959         * aot-compiler.c mini-llvm.c: Abort llvm compilation if a non-encodable patch
960         is found.
961
962         * mini-llvm.c: Add support for OP_VPHI.
963
964         * objects.cs: Add a test.
965
966 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
967
968         * debugger-agent.c (mono_debugger_agent_single_step_event): Avoid a crash if
969         this is called on the debugger thread.
970
971 2009-11-12  Zoltan Varga  <vargaz@gmail.com>
972
973         * mini-llvm.c: Add soft-float support.
974
975         * method-to-ir.c (mono_decompose_soft_float): Restart after decomposing an
976         FCALL which returns an R4.
977
978         * driver.c (mono_main): Add a missing '\n'.
979
980         * mini-trampolines.c (mono_create_llvm_imt_trampoline): Fix the build on
981         platforms which doesn't support the LLVM IMT trampoline.
982
983 2009-11-11  Zoltan Varga  <vargaz@gmail.com>
984
985         * mini-llvm.c (mono_llvm_emit_method): Fix LOCALLOC.
986
987         * mini-llvm-cpp.cpp: Update to latest LLVM SVN.
988
989         * mini-llvm.c (mono_llvm_emit_method): Avoid creating plt entries for
990         virtual calls.
991
992         * aot-runtime.c: Don't define HAVE_DL_ITERATE_PHDR, configure now does that.
993
994 2009-11-10  Zoltan Varga  <vargaz@gmail.com>
995
996         * aot-compiler.c aot-runtime.c: Change how mono_arch_find_jit_info () works.
997         Instead of emitting a method_order table, sort the contents of the code_offsets
998         table and do a binary search in the sorted table. The previous approach doesn't
999         work with LLVM which emits methods in a arbitrary order.
1000
1001         * aot-runtime.c: Add support for creating MonoJitInfo structures by searching
1002         in the .eh_frame section in ELF files.
1003
1004         * mini.h: Bump corlib file format version.
1005
1006         * mini-llvm.c aot-compiler.c: Add support for AOT to the LLVM back end.
1007
1008         * exceptions-arm.c (mono_arch_get_call_filter_full): Update after the
1009         LDMIA->LDM macro name change.
1010
1011 2009-11-09  Zoltan Varga  <vargaz@gmail.com>
1012
1013         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Fix and enable this for
1014         x86.
1015
1016         * mini-llvm-cpp.cpp (JITMemoryManager): Fix compilation with LLVM 2.7
1017         SVN.
1018
1019         * aot-compiler.c: Ditto.
1020
1021         * mini-arm.c (mono_arch_allocate_vars): Fix the previous change by passing
1022         &align to mini_type_stack_size_full ().
1023
1024         * mini-arm.c (mono_arch_emit_prolog): Implement support for varargs.
1025
1026         * mini-ops.h: Add documentation for the OP_ARGLIST opcode.
1027
1028 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
1029
1030         * mini-arm.c: Compute the stack space used by arguments using
1031         mini_type_stack_size_full ().
1032
1033 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
1034
1035         * optflags-def.h: Remove dead TREEPROP optimization.
1036
1037 2009-11-08  Rodrigo Kumpera  <rkumpera@novell.com>
1038
1039         * mini-ppc.h: Make mono compiler under FreeBSD/ppc64. 
1040
1041         Patch by Justin Hibbits <chmeeedalf@gmail.com>.
1042
1043 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
1044
1045         * driver.c (mono_jit_parse_options): New public API function to parse options
1046         as done by the runtime executable.
1047
1048         * debugger-agent.c (buffer_add_cattrs): Fix reading an uninitialized variable
1049         when handling named arguments.
1050
1051 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
1052
1053         * mini-arm.c: Implement support for returning vtypes in registers, fix support
1054         for passing small vtypes in registers, make the CallInfo structures more
1055         similar to the code on the other platforms.
1056
1057         * mini-arm.c (mono_arch_allocate_vars): Align small vtypes to 4 bytes too since
1058         the code in the prolog requires it.
1059
1060 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
1061
1062         * mini-arm.c debugger-agent.c: Android changes from Koushik K. Dutta
1063         (koush@koushikdutta.com).
1064
1065         * mini-arm.c (handle_thunk): Add a domain argument to control the domain
1066         where the thunk memory should be allocated from. Fixes appdomain unloading
1067         on arm.
1068
1069 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
1070
1071         * mini-arm.c exceptions-arm.c: Make ctx->regs map directly to the 16 hardware
1072         registers, instead of r4..r11,ip,lr. Make restore_context () restore r0..r3 too.
1073
1074 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
1075
1076         * mini-amd64.c (mono_arch_output_basic_block): Don't allow OP_SEQ_POINT in
1077         AOT, as it is not implemented yet.
1078
1079         * mini-x86.c (mono_arch_output_basic_block): Ditto.
1080
1081 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
1082
1083         * debugger-agent.c: Fix windows build.
1084
1085 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
1086
1087         * debugger-agent.c (debugger_thread): Call mono_set_is_debugger_attached ()
1088         after the client connects/disconnects.
1089
1090         * debugger-agent.c: Add an 'onthrow' option to start the debugger agent
1091         when an exception of a given type is thrown.
1092
1093         * debugger-agent.c: Add a 'onuncaught' option to start the debugger agent
1094         only on an uncaught exception.
1095
1096         * mini-exceptions.c: Notify the debugger agent on an uncaught exception.
1097
1098         * debugger-agent.c: Add a 'launch' option.
1099
1100 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
1101
1102         * debugger-agent.c: Add a 'timeout' option.
1103
1104 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
1105
1106         * debugger-agent.c: Implement the 'server' and 'suspend' options supported by
1107         the JDWP agent.
1108
1109 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
1110
1111         * debugger-agent.c (set_breakpoint): Emit a log message.
1112
1113 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
1114
1115         * mini-arm.c: Fix the arm build.
1116
1117 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
1118
1119         * aot-compiler.c: don't leak the value returned from
1120         mono_type_full_name().
1121
1122 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
1123
1124         * debugger-agent.c: defer including mono-mutex.h until we know the
1125         agent is supported.
1126
1127 2009-11-04 Jonathan Chambers <joncham@gmail.com>
1128
1129         * debugger-agent.c: Changes to build on windows. Use mono-mutex instead
1130         of pthreads directly.
1131
1132         * mini.c (mono_sigfpe_signal_handler): Changed signature of Windows
1133         exception handlers. Pass info argument.
1134
1135         * mini.h: Adjust signatures of soft debugger functions to pass void*
1136         instead of siginfo_t. Adjust SIG_HANDLER_SIGNATURE on Windows.
1137
1138         * mini-amd64.c (mono_arch_is_single_step_event): Adjust signature to pass void*
1139         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
1140         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
1141         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
1142
1143         * mini-amd64.h: Adjust MonoW32ExceptionHandler signature.
1144
1145         * mini-x86.c (mono_arch_is_single_step_event): Adjust signature to pass void*
1146         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
1147         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
1148         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
1149
1150         * mini-x86.h: Adjust MonoW32ExceptionHandler signature.
1151
1152         * exceptions-x86.c: Adjust W32_SEH_HANDLE_EX for new signature.
1153
1154         * exceptions-amd64.c: Adjust W32_SEH_HANDLE_EX for new signature.
1155
1156         * mono-semaphore.h: Skeleton implementation for Windows.
1157
1158         Code contributed under MIT/X11 license.
1159
1160 2009-11-04 Jonathan Chambers <joncham@gmail.com>
1161
1162         * simd-intrinsics.c (simd_intrinsic_emit_setter): Unfix my fix.
1163
1164         Code contributed under MIT/X11 license.
1165
1166 2009-11-04 Jonathan Chambers <joncham@gmail.com>
1167
1168         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix windows build.
1169
1170         Code contributed under MIT/X11 license.
1171
1172 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
1173
1174         * aot-compiler.c (mono_save_xdebug_info): Bump the threshold for flushing
1175         debug info to 100 because 10 still slows down gdb too much.
1176
1177         * method-to-ir.c (mono_method_to_ir): Avoid rethrowing thread abort exceptions
1178         inside runtime invoke wrappers. This avoids the need to call ResetAbort () on
1179         them in the wrappers.
1180
1181 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
1182
1183         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
1184
1185         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix a warning.
1186
1187         * aot-runtime.c (mono_aot_get_method): Refactor some code into a new helper
1188         function mono_aot_get_array_helper_from_wrapper ().
1189
1190         * aot-compiler.c (add_generic_class): Refactor the code a bit, really emit
1191         array helper methods.
1192
1193 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
1194
1195         * simd-intrinsics.c (load_simd_vreg): Add extra argument to signal if
1196         the value was loaded from memory.
1197
1198         * simd-intrinsics.c (simd_intrinsic_emit_setter): Store back to memory if
1199         the value was loader from there.
1200
1201         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Fail correctly for Shuffle
1202         without constant swizzle.
1203
1204 2009-11-02 Jonathan Chambers <joncham@gmail.com>
1205
1206         * mini-amd64.c: Put soft debugger functions behind a
1207         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
1208
1209         * mini-amd64.h: disable the soft debugger in windows.
1210
1211         Code contributed under MIT/X11 license.
1212
1213 2009-11-02 Jonathan Chambers <joncham@gmail.com>
1214
1215         * mini-x86.c: Put soft debugger functions behind a
1216         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
1217
1218         Code contributed under MIT/X11 license.
1219
1220 2009-11-02 Jonathan Chambers <joncham@gmail.com>
1221
1222         * exceptions-x86.c (win32_handle_stack_overflow): Fix parameters
1223         to mono_arch_find_jit_info_ext.
1224
1225         Code contributed under MIT/X11 license.
1226
1227 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
1228
1229         * debugger-agent.c: Include netinet/in.h to fix the bsd build.
1230
1231         * debugger-agent.c: Add support for filtering events by assemblies.
1232
1233         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Return false if
1234         the agent is not enabled.
1235
1236 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
1237
1238         * exceptions-x86.c: hopefully last change to fix the windows build.
1239         This one courtesy of Jonathan Chambers.
1240
1241 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
1242
1243         * debugger-agent.c: remove unused function.
1244
1245 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
1246
1247         * debugger-agent.c: add #ifdefs for a few header files.
1248         * mini-x86.h: disable the soft debugger in windows.
1249         Step 1 of 2 to make this compile on windows with gcc.
1250
1251 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
1252
1253         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Comment this out for now
1254         as it breaks the build.
1255
1256 2009-07-01  Zoltan Varga  <vargaz@gmail.com>
1257
1258         Merge the soft debugger branch.
1259
1260         * debugger-agent.h debugger-agent.c: New files containing the soft
1261         mode debugger module.
1262
1263         * method-to-ir.c (mono_method_to_ir): Generate OP_SEQ_POINT opcodes
1264         at the appropriate locations.
1265
1266         * mini-<ARCH>.c (mono_arch_output_basic_block): Handle OP_SEQ_POINT
1267         opcode.
1268
1269         * mini-<ARCH>.c: Add new arch-specific functions to set/clear breakpoints,
1270         enable/disable single stepping.
1271
1272         * exceptions-<ARCH>.c (mono_arch_find_jit_info_ext): New stack unwinding api
1273         which returns all information in a StackFrameInfo structure, and can handle the
1274         LMF frames added by the debugger.
1275
1276         * mini-<ARCH>.h (MonoLMFExt): New structure containing additional information
1277         about an LMF frame.
1278
1279         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): New stack
1280         walker function which works on a specific thread and passes a StackFrameInfo
1281         structure to its callback.
1282
1283         * mini.c (mini_init): Initialize the debugger agent.
1284
1285         * aot-compiler.c aot-runtime.c: Add soft-debug support.
1286
1287         * mini-ops.h: Add OP_SEQ_POINT opcode.
1288
1289         * driver.c (mono_main): Add new '--debugger-agent' option for passing
1290         arguments to the debugger agent.
1291
1292 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
1293
1294         * mini.c (mini_method_compile): Disable llvm for methods with an lmf here to
1295         speed things up.
1296
1297         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOCALLOC.
1298
1299         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Implement this for x86.
1300
1301         * mini.c (mini_init): Avoid using the IMT trampoline in the LLVM case.
1302
1303         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add a static rgctx trampoline
1304         if needed.
1305         (mono_create_llvm_imt_trampoline): New function to create a trampoline which
1306         sets the IMT argument and makes a virtual call.
1307
1308         * mini-llvm.c: Enable interface calls using the llvm imt trampoline.
1309
1310 2009-11-01  Zoltan Varga  <vargaz@gmail.com>
1311
1312         * Makefile.am (llvm_sources): Enable the llvm option since it no longer breaks
1313         the windows build.
1314
1315 2009-10-30  Zoltan Varga  <vargaz@gmail.com>
1316
1317         * mini.c (mini_cleanup): Call profiler shutdown before shutting down the
1318         runtime. Fixes #551228.
1319
1320 2009-10-29  Zoltan Varga  <vargaz@gmail.com>
1321
1322         * mini-x86.c (mono_arch_output_basic_block): Fix % 1. Fixes #550970.
1323
1324         * basic.cs: Add a test.
1325
1326         * method-to-ir.c (mono_method_to_ir): Use EMIT_NEW_LOAD_MEMBASE_TYPE to
1327         load vtypes instead if OP_LOADV_MEMBASE in the implementation of
1328         CONSTRAINED. Fixes #550964.
1329
1330         * generics.cs: Add a test.
1331
1332 2009-10-28  Mark Probst  <mark.probst@gmail.com>
1333
1334         * mini-posix.c (add_signal_handler): Use
1335         mono_gc_get_suspend_signal() instead of GC_get_suspend_signal().
1336
1337 2009-10-28 Jerry Maine <crashfourit@gmail.com>
1338
1339         Contributed under the terms of the MIT/X11 license by
1340         Jerry Maine <crashfourit@gail.com>.
1341
1342         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
1343         sse4a for simd intrinsics.
1344
1345         * mini-amd64.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
1346         sse4a for simd intrinsics.
1347
1348 2009-10-27  Zoltan Varga  <vargaz@gmail.com>
1349
1350         * ir-emit.h method-to-ir.c: Change a few _IMM macros to assign to inst_imm
1351         instead of inst_p1 which is not the same on ILP32 platforms.
1352
1353 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
1354
1355         * mini-ppc.c (mono_arch_emit_prolog): Load the current got address,
1356         not the mscorlib one before calling mono_get_lmf_addr.
1357
1358         * tramp-ppc.c (mono_arch_create_trampoline_code_full): Fix the storing
1359         of the ip to the LMF.
1360
1361         * method-to-ir.c (mono_method_to_ir): Fix the handling of the
1362         immediate in the op->op_imm optimization.
1363
1364         * mini-ppc.c: Add a 'vtregs' field to ArgInfo to make the code easier to
1365         understand. VTypes now work, but are not abi compliant, as they are
1366         split into 4 byte parts instead of 8.
1367         (emit_memcpy): Fix the unrolled case to work on the PS3.
1368
1369         * mini-ppc.c (get_delegate_invoke_impl): Fix this for the PS3.
1370
1371         * aot-compiler.c (mono_compile_assembly): Make the autoreg option
1372         the default when static linking.
1373
1374         * mini-ppc.c (mono_arch_emit_prolog): Fix handling of I8 arguments.
1375
1376         * aot-compiler.c: Add an autoreg option to automatically register
1377         statically linked aot modules using ELF .ctors.
1378
1379         * genmdesc.pl: Add __ppc64__ to allowed defines.
1380
1381 2009-10-25  Zoltan Varga  <vargaz@gmail.com>
1382
1383         * mini-posix.c (add_signal_handler): Delay the GC suspend signal while
1384         executing a SIGSEGV handler on an altstack, since libgc can't handle that.
1385
1386 2009-10-24  Mark Probst  <mark.probst@gmail.com>
1387
1388         * exceptions-x86.c (mono_arch_find_jit_info): Fix build.
1389
1390 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
1391
1392         * mini-exceptions.c (mini_jit_info_table_find): Add an 'out_domain' argument
1393         which will contain the domain where the method was found.
1394
1395         * exceptions-<ARCH>.c mini-exceptions.c: Update callers of
1396         mini_jit_info_table_find ().
1397
1398         * aot-compiler.c (xdebug_end_emit): Remove so stray debug code.
1399
1400         * branch-opts.c (mono_if_conversion): Avoid running deadce if it is disabled.
1401
1402 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
1403
1404         * mini-x86.c (mono_arch_emit_prolog): Disable aot for methods with save_lmf
1405         set, its not supported yet.
1406
1407 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
1408
1409         * aot-runtime.c (mono_aot_get_method): Avoid asserting if a array generic
1410         iface wrapper is not found.
1411         (mono_aot_get_method): Ditto for GetGenericValueImpl.
1412
1413 2009-10-21  Zoltan Varga  <vargaz@gmail.com>
1414
1415         * aot-runtime.c (mono_aot_get_method): Fix support for the IList<T> wrappers,
1416         which have a different name.
1417
1418         * aot-runtime.c (mono_aot_get_method): Special case the array generic iface
1419         wrappers and Array.GetGenericValueImpl ().
1420
1421         * aot-compiler.c: Avoid emitting some wrappers which are not needed anymore
1422         because of the change above.
1423
1424         * generics.cs: Add a test for full aot + generic array ifaces.
1425
1426 2009-10-19  Sebastien Pouliot  <sebastien@ximian.com>
1427
1428         * aot-compiler.c (emit_plt): Remove duplicate 'debug_sym' variable 
1429         that hides the previous one.
1430
1431 2009-10-18  Zoltan Varga  <vargaz@gmail.com>
1432
1433         * aot-compiler.c (can_marshal_struct): Allow some System.dll structs to be
1434         marshalled. Fixes #541623.
1435
1436 2009-10-16  Zoltan Varga  <vargaz@gmail.com>
1437
1438         * aot-compiler.c (emit_extra_methods): Remove some asserts which are not needed.
1439
1440 2009-10-15  Zoltan Varga  <vargaz@gmail.com>
1441
1442         * mini.c (mono_op_imm_to_op): Handle OP_AND/OR/XOR_IMM.
1443
1444 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
1445
1446         * mini-posix.c (sigprof_signal_handler):
1447         Implemented support for building stat call chans in different ways.
1448
1449 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
1450
1451         * mini-exceptions.c (mono_find_jit_info):
1452         Also check that a jit info has been found (fixes a profiler crash).
1453
1454 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
1455
1456         * mini.c (mono_codegen):
1457         Call mono_profiler_code_buffer_new with correct code address.
1458
1459 2009-10-14  Zoltan Varga  <vargaz@gmail.com>
1460
1461         * driver.c (mono_main): Change the date in the copyright.
1462
1463 2009-10-14  Mark Probst  <mark.probst@gmail.com>
1464
1465         * method-to-ir.c (mono_method_to_ir): Don't use a managed array
1466         allocator in shared generic code for open classes, because we
1467         can't get those classes' vtables.  We need to make managed
1468         allocators not depend on the vtable at compile-time to solve this.
1469
1470 2009-10-13  Martin Baulig  <martin@ximian.com>
1471
1472         * debug-mini.c (mono_debugger_trampoline_compiled): Add
1473         `const guint8 *trampoline' argument; send both the old and the new
1474         notification.
1475
1476 2009-09-30  Zoltan Varga  <vargaz@gmail.com>
1477
1478         * aot-compiler.c (add_wrappers): Add a runtime invoke wrapper which is used by
1479         mono_runtime_capture_context () without calling mono_runtime_invoke ().
1480         (can_marshal_struct): Skip structures with auto layout.
1481
1482         * tramp-arm.c (GEN_TRAMP_SIZE): Increase this by 4.
1483
1484 2009-10-02  Zoltan Varga  <vargaz@gmail.com>
1485
1486         * mini-sparc.c (mono_arch_emit_setret): Emit long return values using OP_LMOVE.
1487         (mono_arch_create_vars): Instead of allocating a stack slot by hand, allocate
1488         a variable to hold the stack slot used by the int<->float conversion opcodes.
1489
1490         * mini-sparc.c (mono_arch_build_imt_thunk): Implement support for fail_tramp.
1491
1492 2009-10-04  Zoltan Varga  <vargaz@gmail.com>
1493
1494         * aot-compiler.c (add_generic_class): Only add GetGenericValueImpl wrappers
1495         when using full-aot.
1496
1497 2009-10-06  Zoltan Varga  <vargaz@gmail.com>
1498
1499         * aot-compiler.c (add_generic_class): Add an instance of GenericComparer<T> for
1500         each instance of Comparer<T>.
1501
1502         * generics.cs: Add a new test.
1503
1504 2009-10-09  Zoltan Varga  <vargaz@gmail.com>
1505
1506         * driver.c (parse_debug_options): Add a 'gdb' option.
1507
1508         * mini.c (mini_parse_debug_options): Add a 'gdb' option.
1509
1510         * image-writer.c: Add support for emitting the image into a memory buffer.
1511
1512         * dwarfwriter.c: Add support for sharing one IL file between multiple images.
1513
1514         * aot-compiler.c: Add support for registering debug info with GDB using the
1515         new JIT debugging interface in GDB 7.0. It can be turned on by setting
1516         MONO_XDEBUG to 'gdb'.
1517
1518 2009-10-10  Zoltan Varga  <vargaz@gmail.com>
1519
1520         * aot-compiler.c (mono_save_trampoline_xdebug_info): Implement this for the
1521         gdb mode.
1522
1523 2009-10-11  Zoltan Varga  <vargaz@gmail.com>
1524
1525         * aot-compiler.c (mono_save_xdebug_info): Emit a symbol for the method which
1526         can be used to set breakpoints in gdb.
1527
1528         * image-writer.c (bin_writer_emit_writeout): Add support for setting the text
1529         segment to an absolute address.
1530
1531 2009-10-13  Mark Probst  <mark.probst@gmail.com>
1532
1533         * method-to-ir.c: Use the managed array allocator method if
1534         available.
1535
1536 2009-10-13  Bill Holmes  <billholmes54@gmail.com>
1537
1538         * aot-compiler.c : Fix the MSVC builds
1539
1540         Code is contributed under MIT/X11 license.
1541
1542 2009-10-13  Zoltan Varga  <vargaz@gmail.com>
1543
1544         * aot-compiler.c (mono_save_xdebug_info): Group methods into groups of 10 to
1545         avoid registering 1 symbol file per method with gdb.
1546
1547 2009-09-29  Zoltan Varga  <vargaz@gmail.com>
1548
1549         * mini-sparc.c: Fix the handling of enums with base type long.
1550
1551         * mini-sparc.c (mono_arch_output_basic_block): Fix IREM_UN_IMM.
1552
1553         * mini-sparc.c (mono_arch_allocate_vars): Use mono_class_from_mono_type ()
1554         instead of using type->data.klass as the later doesn't work with generics.
1555
1556 2009-09-25  Mark Probst  <mark.probst@gmail.com>
1557
1558         * method-to-ir.c, mini.h, mini-alpha.c, mini-amd64.c, mini-arm.c,
1559         mini-hppa.c, mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c,
1560         mini-s390x.c, mini-sparc.c, mini-x86.c: Thread.get_CurrentThread
1561         works differently now and we don't handle it in the JIT anymore.
1562
1563         * mini.c, mini-exceptions.c, mini-posix.c, debug-debugger.c,
1564         debug-mini.c, tramp-amd64.c, tramp-x86.c: Changes resulting from
1565         the Thread class split.
1566
1567 2009-09-25  Zoltan Varga  <vargaz@gmail.com>
1568
1569         * driver.c: Don't run tests with the obsolete treeprop optimization.
1570
1571         * mini-sparc.c (mono_arch_create_vars): Make the component vars of a long ret
1572         variable volatile. Fixes #541577.
1573
1574         * basic-calls.cs: Add a new test.
1575
1576         * basic-long.cs: Remove tests which are now in basic-calls.cs.
1577
1578 2009-09-24  Zoltan Varga  <vargaz@gmail.com>
1579
1580         * dwarfwriter.c (emit_debug_info_end): Disable this as it doesn't seem to
1581         work/required with recent iphone sdk versions.
1582
1583         * aot-compiler.c (add_wrappers): Generate PtrToStructure wrappers for more
1584         structures.
1585
1586         * decompose.c (mono_decompose_vtype_opts): Avoid reading uninitialized memory
1587         in the VCALL decomposition code.
1588
1589 2009-09-22  Zoltan Varga  <vargaz@gmail.com>
1590
1591         * mini-ia64.c (mono_arch_output_basic_block): Fix ISHR/ISHR_IMM.
1592
1593         * basic.cs: Add a test.
1594
1595         * mini-ia64.c (mono_arch_build_imt_thunk): Implement support the virtual
1596         generic invokes.
1597
1598         * mini-exceptions.c (mini_jit_info_table_find): New helper function which
1599         searches all the domains of the current thread.
1600
1601         * exceptions-<ARCH>.c: Use it. Fixes #539394.
1602
1603 2009-09-21  Zoltan Varga  <vargaz@gmail.com>
1604
1605         * exceptions-arm.c (mono_arm_throw_exception): Set ctx->ebp to fp instead of sp
1606         so catching exceptions thrown in the same method works. Fixes exception17.exe.
1607
1608         * tramp-arm.c (mono_arch_create_trampoline_code_full): Store NULL into lmf->method
1609         for non-jit trampolines.
1610
1611         * mini.c (mono_jit_runtime_invoke): Allow string ctors with dyn runtime invoke.
1612
1613         * aot-compiler.c (add_wrappers): Ditto.
1614
1615         * mini-arm.c: Implement support for passing vtypes and floats, and increase
1616         the size of the param area used by dyn_call to 6 which covers the majority of
1617         methods.
1618
1619         * mini.c aot-compiler.c: Allow dyn_call for string methods except ctors.
1620
1621         * mini-arm.c: Implement support for passing/receiving
1622         longs and receiving floats in the dyn_call code.
1623
1624         * mini-amd64.c: Implement support for receiving vtypes in registers in
1625         the dyn_call code.
1626
1627         * mini.c mini-amd64.c: Implement partial support for passing vtypes in
1628         the dyn_call code.
1629
1630 2009-09-20  Zoltan Varga  <vargaz@gmail.com>
1631
1632         * mini-arm.c (get_call_info): Return more precise information in
1633         ArgInfo->regtype.
1634         (dyn_call_supported): Use the information in CallInfo.
1635
1636         * mini-arm.c: Enable support for returning vtypes in the dyn_call code.
1637
1638         * mini.c mini-amd64.c: Enable support for returning vtypes in the dyn_call
1639         code.
1640
1641         * mini-arm.c: Update after the dyn_call api changes.
1642
1643         * mini.c (mini_create_jit_domain_info): Register a destructor function
1644         for the runtime_invoke_hash.
1645
1646         * mini-amd64.c (mono_arch_get_dyn_call_args): Rename this to
1647         'mono_arch_dyn_call_start'. Pass the pointer to the return value buffer to
1648         this function.
1649         (mono_arch_get_dyn_call_ret): Rename this to 'mono_arch_dyn_call_finish'.
1650         (dyn_call_supported): Simplify this by using get_call_info ().
1651         (mono_arch_dyn_call_free): New destructor function.
1652
1653         * generics.cs: Remove a printf.
1654
1655         * method-to-ir.c (mono_method_to_ir): Allocate some param area for DYN_CALL.
1656
1657         * mini-arm.c: Add support for enum return values and passing a few arguments
1658         on the stack.
1659         
1660         * mini.c (mono_jit_runtime_invoke): Add support for enum return values to
1661         dyn invoke.
1662
1663         * mini-amd64.c (mono_arch_get_dyn_call_ret): Ditto.
1664
1665         * aot-compiler.c (add_wrappers): Add a few restrictions for the use of
1666         the dynamic invoke wrappers.
1667
1668         * mini-arm.c: Implement OP_DYN_CALL for arm.
1669
1670         * aot-compiler.c (add_wrappers): Avoid aot-ing runtime invoke wrappers
1671         supported by the dynamic runtime invoke wrapper.
1672
1673         * aot-compiler.c aot-runtime.c: Add support for encoding the dynamic
1674         runtime invoke wrapper.
1675
1676         * mini.c (mono_jit_runtime_invoke): Use the dynamic runtime invoke wrappers
1677         if possible when running with full-aot.
1678
1679         * mini-ops.h: Add OP_DYN_CALL opcode.
1680
1681         * mini-amd64.c method-to-ir.c: Add infrastructure for making method calls
1682         with dynamic arguments lists similar to libffi.
1683
1684 2009-09-19  Zoltan Varga  <vargaz@gmail.com>
1685
1686         * method-to-ir.c: Fix the previous change on 64 bit platforms.
1687         
1688         * method-to-ir.c: Applied patch from Rodrigo Kumpera. Allow an i8 argument
1689         to NEWARR.
1690
1691         * iltests.il.in: Add a new test.
1692         
1693 2009-09-18  Zoltan Varga  <vargaz@gmail.com>
1694
1695         * aot-compiler.c (add_generic_instances): Add more instances of
1696         GenericEqualityComparer.
1697
1698 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
1699
1700         * mini.c: Add asserts for mono_class_vtable calls that are not meant to fail.
1701
1702 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
1703
1704         * method-to-ir.c: Handle failures from mono_class_vtable. Added some
1705         comments on some functions that now can fail.
1706
1707 2009-09-17  Andrew Jorgensen  <ajorgensen@novell.com>
1708
1709         * Makefile.am: Add Info.plist to EXTRA_DIST
1710
1711 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
1712
1713         * method-to-ir.c (mono_method_to_ir): Allow AOT for CEE_LDTOKEN in
1714         static synchronized wrappers. Fixes #539500.
1715
1716 2009-09-14  Rodrigo Kumpera  <rkumpera@novell.com>
1717
1718         * jit-icalls.c (mono_class_static_field_address): handle vtable failure
1719         properly.
1720
1721 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
1722
1723         * mini-exceptions.c (mono_handle_exception_internal): Store the computed
1724         lmf before calling filter clauses as well. Fixes #539550.
1725
1726         * exceptions.cs: Add a test.
1727         
1728 2009-09-14  Zoltan Varga  <vargaz@gmail.com>
1729
1730         * aot-compiler.c (add_generic_class): Add instances of
1731         Array.GetGenericValueImpl as well.
1732
1733         * Makefile.am (fullaotcheck): Copy and aot more assemblies so linq
1734         can be tested too.
1735
1736         * generics.cs: Add a fullaot linq test.
1737
1738 2009-09-10  Zoltan Varga  <vargaz@gmail.com>
1739
1740         * aot-compiler.c (arch_emit_static_rgctx_trampoline): Don't clobber argument
1741         reg r1 on arm.
1742
1743 2009-09-10  Bill Holmes  <billholmes54@gmail.com>
1744
1745         * mini-trampolines.c (mono_delegate_trampoline) : Call
1746           mono_cominterop_get_invoke if the delegate target object
1747           is a COM object.
1748
1749         Code is contributed under MIT/X11 license.
1750
1751 2009-09-09  Sebastien Pouliot  <sebastien@ximian.com>
1752
1753         * method-to-ir.c: For CoreCLR throw a SecurityException if an 
1754         internal call is defined outside platform code. Reduce code 
1755         duplication with existing [Method|Field]AccessException
1756
1757 2009-09-08  Rodrigo Kumpera  <rkumpera@novell.com>
1758
1759         * mini-x86.c (mono_arch_emit_call): Don't reduce stack usage by 4
1760         if the return value is a small struct passed on regs.
1761
1762 2009-09-09  Zoltan Varga  <vargaz@gmail.com>
1763
1764         * cpu-arm.md mini-arm.c: Remove unused opcodes.
1765
1766         * mini-codegen.c: Enable the cpu description validation for arm.
1767
1768 2009-09-08  Zoltan Varga  <vargaz@gmail.com>
1769
1770         * basic-calls.cs: Move the test_0_float_load_and_store_with_big_offset ()
1771         test which depends on structs to objects.cs.
1772         
1773         * basic-calls.cs: Remove calls to Console.WriteLine and throws, since those
1774         require object model related stuff working.
1775
1776         * cpu-x86.md mini-x86.c: Remove more unused opcodes.
1777
1778         * mini-ops.h: Fix OP_BIGMUL instruction descriptions.
1779
1780         * mini-codegen.c (mono_local_regalloc): Validate the cpu description 
1781         against the instruction metadata in mini-ops.h. amd64 only for now.
1782
1783         * mini-ops.h: Fix some instruction descriptions.
1784
1785         * mini-ops.h mini-x86.c mini-amd64.c cpu-<ARCH>.md: Remove some
1786         unused instructions.
1787
1788 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
1789
1790         * exceptions.cs: Add a new test.
1791
1792 2009-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
1793
1794         * mini-x86.c (needs_stack_frame): OSX requires full frames to keep proper alignment.
1795
1796 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
1797
1798         * mini-llvm.c (mono_llvm_emit_method): Add a few more missing casts,
1799         skip empty phi opcodes.
1800         
1801         * mini-llvm.c (mono_llvm_emit_method): Handle unsigned volatile variables
1802         correctly by zero extending after loads. Skip methods containing calls
1803         to the monitor enter/exit trampolines.
1804
1805         * tramp-x86.c (mono_arch_create_trampoline_code): Align the stack
1806         when calling mono_thread_force_interruption_checkpoint ().
1807
1808         * mini.c (mini_method_compile): Disable llvm when AOT compiling.
1809
1810         * tramp-amd64.c (mono_arch_patch_callsite): Add support for 32 bit ->
1811         64 bit thunks.
1812         (mono_arch_nullify_class_init_trampoline): Read 'buf' instead of 'code'.
1813
1814         * mini-llvm.c (mono_llvm_emit_method): Add a few missing conversions so a 
1815         bootstrap could run.
1816
1817 2009-09-04  Zoltan Varga  <vargaz@gmail.com>
1818
1819         * mini.c (mini_init): Set callbacks.get_runtime_build_info ().
1820
1821 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
1822
1823         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass the start
1824         of the method to
1825         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
1826         LLVM might be very short.
1827
1828         * mini-x86.c (mono_arch_output_basic_block): Maintain stack alignment
1829         in OP_THROW/RETHROW.
1830
1831         * exceptions-x86.c: Rewrite the throw trampolines so they maintain stack
1832         alignment on osx.
1833
1834 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
1835
1836         * mini-amd64.c (mono_arch_get_vcall_slot): Pass the start of the method to
1837         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
1838         LLVM might be very short.
1839
1840 2009-09-01  Zoltan Varga  <vargaz@gmail.com>
1841
1842         * exceptions-x86.c (throw_exception): Fix the previous change by substracting
1843         the alignment for the value of sp.
1844
1845 2009-09-01  Geoff Norton  <gnorton@novell.com>
1846
1847         * mini.c (mono_get_lmf_addr): Fix jit_thread_attach for native to 
1848         managed wrappers in full aot.
1849
1850 2009-08-31  Zoltan Varga  <vargaz@gmail.com>
1851
1852         * exceptions-x86.c (get_throw_exception): Align the stack on osx.
1853
1854 2009-08-28  Zoltan Varga  <vargaz@gmail.com>
1855
1856         * mini-llvm-cpp.cpp mini-llvm.c: Update to latest llvm api.
1857
1858 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
1859
1860         * aot-compiler.c (emit_exception_debug_info): Emit ei->flags too.
1861
1862         * aot-runtime.c (decode_exception_debug_info): Decode ei->flags from the
1863         saved info.
1864
1865         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
1866
1867         * aot-runtime.c aot-compiler.c: Emit exception causes fully so we don't
1868         depend on the info MonoMethodHeader which could be missing in IL stripped
1869         assemblies.
1870
1871 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
1872
1873         * mini-arm.c (add_general): Fix the passing of 64 bit values on darwin, where
1874         they are only 4 byte aligned.
1875
1876 2009-08-21  Zoltan Varga  <vargaz@gmail.com>
1877
1878         * mini-arm.c (mono_arch_allocate_vars): Use FP as the frame pointer as
1879         was done previously, since using SP causes too many problems.
1880
1881         * exceptions-arm.c: Fix the handling of sp/fp so unwinding through
1882         frames without a frame pointer works.
1883
1884         * mini-arm.c (mono_arch_get_global_int_regs): Avoid using V5 as a
1885         global register in methods with calls, since the calls can go through
1886         a static rgctx trampoline which doesn't save it.
1887
1888 2009-08-19  Zoltan Varga  <vargaz@gmail.com>
1889
1890         * mini-arm.c (mono_arch_context_get_int_reg): Handle SP as well.
1891
1892 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
1893
1894         * aot-compiler.c (add_generic_instances): Fix the net 1.1 build.
1895
1896 2009-08-18  Christian Hergert  <chris@dronelabs.com>
1897
1898         * method-to-ir.c: Fix warnings for uninitialized variables.
1899
1900 2009-08-18  Christian Hergert  <chris@dronelabs.com>
1901
1902         * mini-exceptions.c:
1903         * aot-compiler.c: Fix printf warnings.
1904
1905 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
1906
1907         * aot-compiler.c (add_generic_instances): Add string[] wrapper methods.
1908         Add GetGenericValueImpl<string>.
1909         
1910         * aot-compiler.c (add_generic_instances): Add instances of
1911         GenericEqualityComparer<T> for primitive types. Only emit the array
1912         wrappers into the mscorlib image.
1913
1914 2009-08-15  Zoltan Varga  <vargaz@gmail.com>
1915
1916         * aot-runtime.c (load_method): Rename 'aot_module' -> 'amodule'. Allocate
1917         the methods_loaded array using amodule->info->nmethods.
1918
1919         * mini.h (MonoAotFileInfo): Add an 'nmethods' field.
1920         (MONO_AOT_FILE_VERSION): Bump this.
1921
1922         * aot-compiler.c: Emit more generic instances allowing some parts of linq
1923         to work.
1924
1925         * aot-runtime.c (mono_aot_get_unwind_info): Handle the case when the
1926         MonoJitInfo doesn't belong to its methods aot image.
1927
1928 2009-08-14  Zoltan Varga  <vargaz@gmail.com>
1929
1930         * mini-arm.c (mono_arch_allocate_vars): Use SP as the default frame reg.
1931
1932         * mini-arm.c: Fix warnings.
1933         
1934         * mini-arm.c (mono_arm_emit_load_imm): Only emit a movt if needed.
1935
1936         * mini-arm.c (mono_arm_emit_load_imm): Use movt/movw if the cpu
1937         supports it.
1938
1939 2009-08-12  Zoltan Varga  <vargaz@gmail.com>
1940
1941         * aot-compiler.c (arch_emit_imt_thunk): Rework the arm code to
1942         avoid clobbering IP.
1943
1944         * mini-trampolines.c (mono_magic_trampoline): Allocate a local to
1945         hold the trampoline argument, so its initial value is available during
1946         debugging.
1947
1948 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
1949
1950         * exceptions-arm.c:
1951         * exceptions-hppa.c:
1952         * mini.c:
1953         * exceptions-s390x.c:
1954         * exceptions-mips.c:
1955         * exceptions-ppc.c:
1956         * exceptions-sparc.c:
1957         * exceptions-alpha.c:
1958         * aot-runtime.c:
1959         * mini-trampolines.c:
1960         * exceptions-x86.c:
1961         * exceptions-s390.c: add and use #define's instead of sizeof()
1962         for MonoJitInfo and MonoJitInfoTable.
1963
1964 2009-08-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
1965
1966         * tramp-arm.c:
1967         * tramp-amd64.c:
1968         * tramp-ppc.c:
1969         * tramp-x86.c: use a #define instead of sizeof() for a few
1970         structures that use a zero-length array.
1971
1972 2009-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
1973
1974         * method-to-ir.c (mono_method_to_ir/CEE_CONSTRAINED_): Handle the
1975         case when the method is dynamic. Fixes #529238.
1976
1977 2009-08-06  Zoltan Varga  <vargaz@gmail.com>
1978
1979         * mini.c (mono_jit_compile_method_inner): Throw an exception instead
1980         of asserting when a method is JIT compiled in full-aot mode.
1981
1982 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
1983         
1984         Contributed under the terms of the MIT/X11 license by
1985         Jerry Maine <crashfourit@gail.com>.
1986         
1987         * fixed wrong dates in changelog.
1988
1989 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
1990         
1991         Contributed under the terms of the MIT/X11 license by
1992         Jerry Maine <crashfourit@gail.com>.
1993
1994         * basic-simd.cs: added test for packed double square root.
1995         * cpu-amd64.md: added opcode info for packed double square root.
1996         * cpu-x86.md: added opcode info for packed double square root.
1997         * mini-ops.h: added IR opcode for packed double square root.
1998         * mini-x86.c: added IR to native translation code for packed double square root.
1999         * mini-amd64.c: removed todo for packed double square root.
2000         * simd-intrinsics.c: added method to IR opcode converstion for
2001         packed double square root.
2002
2003 2009-08-03 Jerry Maine <crashfourit@gmail.com>
2004
2005         Contributed under the terms of the MIT/X11 license by
2006         Jerry Maine <crashfourit@gail.com>.
2007
2008         * mini-amd64.c: Added a change to help tell the difference as 
2009         to what perpose the xmm register is being used--mainly to help
2010         with debuging.
2011         * mini-amd64.h: Changed callee regs to use 15 out of 16 
2012         (one used for special cases) xmm registers for both fp
2013         and simd ops. Added define to turn on new feature in the regalloc
2014         that allows fp and simd ops to share the xmm regs happily.
2015         * codegen.c: Added code to detect for which perpose an xmm reg is
2016         being used (fp or simd) and to translate back and forth to the
2017         correct logical reg bank (fp or simd) for 'spill load's.
2018
2019 2009-08-03 Jerry Maine <crashfourit@gmail.com>
2020
2021         Contributed under the terms of the MIT/X11 license by
2022         Jerry Maine <crashfourit@gail.com>.
2023
2024         * basic-simd.cs: Added tests for stressing the regalloc when running with
2025         16 simd regs and when simd and fp ops share the same reg bank.
2026
2027 2009-08-01  Mark Probst  <mark.probst@gmail.com>
2028
2029         * method-to-ir.c (mini_emit_stobj): If we call mono_value_copy()
2030         in shared generic code, we might have to look up the class in the
2031         RGCTX.  If we use the class directly, compute its GC descriptor.
2032
2033 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
2034
2035         * mini.c (mono_jit_runtime_invoke): Fix a warning.
2036
2037 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
2038
2039         * mini.c (mono_jit_runtime_invoke): Initialize the class and
2040         check for errors. Fixed the case when the class with the Main
2041         method is broken.
2042
2043 2009-07-31 Jerry Maine <crashfourit@gmail.com>
2044
2045         Contributed under the terms of the MIT/X11 license by
2046         Jerry Maine <crashfourit@gail.com>.
2047
2048         * cpu-amd64.md: Fixed simple bug in machine discrition file.
2049
2050 2009-07-31  Zoltan Varga  <vargaz@gmail.com>
2051
2052         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_IREM_UN_IMM.
2053
2054 2009-08-30  Rodrigo Kumpera  <rkumpera@novell.com>
2055
2056         * method-to-ir.c: Fix naming of stelem and ldelem.
2057
2058 2009-07-30  Zoltan Varga  <vargaz@gmail.com>
2059
2060         * driver.c (main_thread_handler): Check that the assembly loaded
2061         matches the filename when doing AOT.
2062
2063 2009-07-30  Mark Probst  <mark.probst@gmail.com>
2064
2065         * mini.c: get_ip_from_sigctx installer has been removed, so don't
2066         call it anymore.
2067
2068         * mini-x86.h, mini-amd64.h, mini-ppc.h: UCONTEXT macros moved (to
2069         utils/mono-sigcontext.h).
2070
2071         * exceptions-amd64.c: Use the UCONTEXT_GREGS macro instead of an
2072         #ifdef.
2073
2074 2009-07-29  Massimiliano Mantione  <massi@ximian.com>
2075
2076         * mini.c (mono_codegen):
2077         Call profiler hook to keep track of method code buffers.
2078
2079 2009-07-27  Mark Probst  <mark.probst@gmail.com>
2080
2081         * method-to-ir.c: Invoke write barriers for the
2082         Interlocked.(Compare)Exchange JIT intrinsics.
2083
2084 2009-07-26  Raja R Harinath  <harinath@hurrynot.org>
2085
2086         * Makefile.am (version.h): Fix issues when built out of tree.
2087         Remove some redundant 'grep's piped through 'sed's.
2088
2089 Fri Jul 24 17:28:37 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
2090
2091         This patch is contributed under the terms of the MIT/X11 license
2092
2093         * mini-ppc.c (mono_arch_output_basic_block):
2094         (OP_STOREI1_MEMBASE_REG): Handle 32-bit offsets combining addis
2095         for bits 32-47 with signed load/store diplacements for bits
2096         48-63.  Use prefered base/offset order for indexed form.
2097         (OP_STOREI2_MEMBASE_REG, OP_STORE_MEMBASE_REG): Same.
2098         (OP_LOAD_MEMBASE, OP_LOADI4_MEMBASE, OP_LOADU4_MEMBASE,
2099         OP_LOADI1_MEMBASE, OP_LOADU1_MEMBASE, OP_LOADU2_MEMBASE,
2100         OP_LOADI2_MEMBASE): Same.
2101         (OP_STORER8_MEMBASE_REG, OP_LOADR8_MEMBASE,
2102         OP_STORER4_MEMBASE_REG, OP_LOADR4_MEMBASE): Same.
2103         (OP_STOREI1_MEMINDEX): Use prefered base/offset order for
2104         indexed form.
2105         (OP_STOREI2_MEMINDEX, OP_STORE_MEMINDEX): Same.
2106         (OP_LOAD_MEMINDEX, OP_LOADI4_MEMINDEX, OP_LOADU4_MEMINDEX,
2107         OP_LOADU2_MEMINDEX, OP_LOADI2_MEMINDEX, OP_LOADU1_MEMINDEX,
2108         OP_LOADI1_MEMINDEX): Same
2109         (OP_LOADR4_MEMINDEX, OP_LOADR8_MEMINDEX, OP_STORER4_MEMINDEX,
2110         OP_STORER8_MEMINDEX): Same
2111         (OP_JMP): Use addis/addi sequence for int cfg->stack_usage
2112         computations.
2113         (mono_arch_emit_prolog): Handle 32-bit offsets combining addis
2114         for bits 32-47 with signed load/store diplacements for bits
2115         48-63.  Use prefered base/offset order for indexed form.
2116
2117 Fri Jul 24 16:57:12 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
2118
2119 This patch is contributed under the terms of the MIT/X11 license
2120
2121         * mini-ppc.c: Define PPC_MOVE_FPR_GPR and PPC_ISA_64.
2122         (mono_arch_get_vcall_slot): Fx pointer to int cast warning.
2123         (mono_arch_decompose_opts): Make OP_ICONV_TO_R4 and
2124         OP_ICONV_TO_R8 decompose conditional on !PPC_ISA_64.
2125         (mono_arch_output_basic_block) [OP_JMP]: Use ppc_load32 for
2126         cfg->stack_usage to avoid size warnings.
2127         (mono_arch_output_basic_block) [__mono_ppc64__]: Replace
2128         store/load sequence with mffgpr if PPC_MOVE_FPR_GPR is true.
2129         (mono_arch_output_basic_block) [!__mono_ppc64__]: For
2130         OP_ICONV_TO_R4 or OP_ICONV_TO_R8 and PPC_ISA_64 use fcfid
2131         to convert.
2132         (mono_arch_emit_prolog): Move mono_emit_unwind_op_def_cfa 
2133         after code varible is initialized.
2134         Add g_assert ppc_is_imm16 for ainfo->offset. Handle
2135         ainfo->size == 8 when ainfo->offset !ppc_is_imm16.
2136         (mono_arch_emit_epilog): 
2137         Move Use ppc_load32 for cfg->stack_usage to avoid size
2138         warnings.
2139
2140 2009-07-24  Mark Probst  <mark.probst@gmail.com>
2141
2142         * method-to-ir.c: The write barrier doesn't do the store anymore,
2143         so we have always to emit it.  Also, emit the wbarrier after the
2144         store.
2145
2146 2009-07-24  Zoltan Varga  <vargaz@gmail.com>
2147
2148         * mini-arm.c (mono_arch_get_delegate_invoke_impls): Add a trampoline
2149         for argument count 3 too.
2150
2151 2009-07-23  Zoltan Varga  <vargaz@gmail.com>
2152
2153         * mini.c (mono_jit_compile_method_with_opt): Add an 'ex' argument to let
2154         the caller handle the exceptions.
2155         (mono_jit_runtime_invoke): Handle exceptions thrown while compiling the
2156         method. Fixes #524498.
2157
2158 2009-07-22  Geoff Norton  <gnorton@novell.com>
2159
2160         * mini-exceptions.c: Fix build on ia64.
2161
2162 2009-07-22  Mark Probst  <mark.probst@gmail.com>
2163
2164         * mini-exceptions.c (ves_icall_get_frame_info): Use write
2165         barriers.
2166
2167 2009-07-21  Zoltan Varga  <vargaz@gmail.com>
2168
2169         * mini-arm.c (mono_arch_emit_prolog): Fix thread attaching in aot
2170         code.
2171
2172 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
2173
2174         * basic-simd.cs (Main): Pass args to the test driver.
2175
2176 2009-07-20  Geoff Norton  <gnorton@novell.com>
2177
2178         * mini-x86.h: Fix the x86 version guards to use Apple's
2179         properly defined macros.
2180
2181 2009-07-20  Geoff Norton  <gnorton@novell.com>
2182
2183         * mini-x86.c: Fix --trace on darwin-x86 and other systems which require
2184         aligned access.
2185
2186 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
2187
2188         * mini.c (mono_jit_runtime_invoke): Speed this up by adding a hash to
2189         MonoJitDomainInfo which maps MonoMethod's to a structure containing all
2190         the information which is needed for invokes, so only one locking+hash table
2191         lookup is needed.
2192
2193         * aot-compiler.c: Add a 'tool-prefix' option to be used when cross-compiling.
2194         
2195         * aot-compiler.c (add_generic_instances): Emit instances of 
2196         GenericComparer<T> for primitive types.
2197
2198 2009-07-19 Rodrigo Kumpera  <rkumpera@novell.com>
2199
2200         * mini-posix.c: Fix linux build.
2201
2202 2009-07-19  Geoff Norton  <gnorton@novell.com>
2203
2204         * mini.h: Add prototypes for mono_runtime_syscall_fork and
2205         mono_gdb_render_native_backtraces
2206         * mini-darwin.c: Apple's syscall(SYS_fork) is very weird on x86,
2207         so we implement the sane semantics to the runtime here
2208         (mono_gdb_render_native_backtraces).  Apple also uses an ancient gdb
2209         so we need to call it differently (mono_gdb_render_native_backtraces)
2210         * mini-posix.c: Move the old semantics from mini.c to the prototypes
2211         here for default implementations.
2212         * mini.c: Refactor mono_handle_native_sigsegv so that we can properly
2213         support Apple's weird syscall (SYS_fork) implementation and not busy
2214         loop in abort() on native crashes on OSX anymore.
2215
2216 2009-07-18  Zoltan Varga  <vargaz@gmail.com>
2217
2218         * aot-runtime.c (load_method): Change the handling of the
2219         MONO_LASTAOT env variable so MONO_LASTAOT=0 means that no aot methods
2220         are used.
2221
2222         * mini.c (mono_patch_info_equal): Really fix the handling of RGCTX_FETCH.
2223
2224 2009-07-17  Zoltan Varga  <vargaz@gmail.com>
2225
2226         * mini.c (mono_patch_info_equal): Revert the last change for now as it
2227         seems to break the aot tests.
2228         
2229         * mini.c (mono_patch_info_equal): Fix the handling of 
2230         MONO_PATCH_INFO_RGCTX_FETCH.
2231
2232 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
2233
2234         * unwind.c: Use TARGET_AMD64 instead of __x86_64__.
2235
2236         * mini.c (mono_patch_info_hash): Fix the handling of 
2237         MONO_PATCH_INFO_INTERNAL_METHOD.
2238         (mono_patch_info_equal): Ditto.
2239
2240 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
2241
2242         * mini-llvm.c (mono_llvm_emit_method): Use module instead of ctx->module
2243         in a few places.
2244         
2245         * mini-llvm.c: Add some infrastructure for AOT support.
2246
2247 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
2248
2249         * mini-llvm-cpp.c: Update to the latest llvm api.
2250         
2251         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Set the EnablePrettyStackTrace
2252         option to false to prevent llvm from installing signal handlers which
2253         trip up the gc.
2254         
2255 2009-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
2256
2257         * cpu-x86.md:
2258         * cpu-amd64.md: Revert previous change as those instructions
2259         take 2 separate arguments. Remember to read the arch docs more
2260         carefully next time.
2261
2262 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
2263
2264         * mini-llvm-cpp.cpp (mono_llvm_build_alloca): Update to latest llvm api.
2265
2266 Wed Jul 15 17:20:27 CEST 2009 Paolo Molaro <lupus@ximian.com>
2267
2268         * mini-ppc.c: exploit multiple load/store units if available (rest of
2269         the change from Steven Munroe (<munroesj@us.ibm.com>) first patch at 
2270         http://bugzilla.novell.com/show_bug.cgi?id=487846).
2271
2272 Wed Jul 15 16:24:57 CEST 2009 Paolo Molaro <lupus@ximian.com>
2273
2274         * mini-ppc.c: integrate most of Steven Munroe (<munroesj@us.ibm.com>)
2275         first patch at http://bugzilla.novell.com/show_bug.cgi?id=487846.
2276
2277 2009-07-14 Rodrigo Kumpera  <rkumpera@novell.com>
2278
2279         * cpu-x86.md: Fix missing clobbering from trancendental simd
2280         ops.
2281
2282         * cpu-amd64.md: Same.
2283
2284 2009-07-14 Jerry Maine <crashfourit@gmail.com>
2285
2286         Contributed under the terms of the MIT/X11 license by
2287         Jerry Maine <crashfourit@gail.com>.
2288
2289         * basic-simd.cs: Added tests for single and doulble indexers.
2290
2291         * cpu-amd64.md: Added simd opcode information.
2292
2293         * mini-amd64.c: Added IR to native simd generation code.
2294         Added simd register names and function that returns them.
2295
2296         * mini-amd64.h: Added marcos to turn on simd code compilation in
2297         amd64. Added max simd register count marco. Added caller/callee
2298         register mask marcos. Added marcos to use simd register bank.
2299
2300         * mini.h: Added helper marco for shufling dwords and simple
2301         floats.
2302
2303 2009-07-14  Zoltan Varga  <vargaz@gmail.com>
2304
2305         * mini-llvm-cpp.cpp: Update to latest llvm SVN api.
2306
2307         * Makefile.am (mono_LDADD): Pass LLVM_LDFLAGS to the linked.
2308
2309         * unwind.c (mono_unwind_get_ops_from_fde): Make this return
2310         the length of the native code as well.
2311
2312         * basic-simd.cs: Add a test for #521662.
2313
2314 Mon Jul 13 17:58:50 CEST 2009 Paolo Molaro <lupus@ximian.com>
2315
2316         * mini-ppc.c: fixed bug introduced by Steven's TLS changes.
2317
2318 2009-07-13  Mark Probst  <mark.probst@gmail.com>
2319
2320         * mini.c: Register function for getting the IP from a signal
2321         context with metadata.
2322
2323 2009-07-13  Zoltan Varga  <vargaz@gmail.com>
2324
2325         * method-to-ir.c (mono_method_to_ir): When calling a gshared method,
2326         call a generic class init trampoline if needed. Fixes #519336.
2327
2328         * generics.cs: Add a test.
2329         
2330 2009-07-09  Mark Probst  <mark.probst@gmail.com>
2331
2332         * method-to-ir.c: When doing a call which might be remote from
2333         shared generic code to other shared code with open type arguments,
2334         get the remoting invoke wrapper from the RGCTX and do an indirect
2335         call to it.
2336
2337 2009-07-03  Zoltan Varga  <vargaz@gmail.com>
2338
2339         * mini-trampolines.c (get_unbox_trampoline): Add an rgctx trampoline
2340         after the unbox trampoline in the full-aot case.
2341
2342 2009-07-02  jonas echterhoff <jonas@unity3d.com>
2343         
2344         * mini.c: Move initialization of jit_mutex before debugger initialization
2345         
2346         to avoid crashes.
2347         
2348         
2349         * Info.plist: added Info.plist and link flag to enable the mono executable
2350         to access other processes. Requires codesigning of the executable to work.
2351         
2352         * mdb-debug-info32-darwin.s: The same as mdb-debug-info32.s, changed to 
2353         
2354         compile on OS X.
2355         
2356
2357 2009-06-30  Zoltan Varga  <vargaz@gmail.com>
2358
2359         * driver.c (mini_regression): Handle loading errors. Fixes #508869.
2360
2361 2009-06-29  Zoltan Varga  <vargaz@gmail.com>
2362
2363         * mini-exceptions.c (get_generic_context_from_stack_frame): Fix the case
2364         when the generic instance is an instantiation of a subclass of the
2365         methods class. Fixes #517166.
2366
2367 2009-06-26  Zoltan Varga  <vargaz@gmail.com>
2368
2369         * mini-amd64.c (mono_arch_emit_prolog): Fix thread attaching in AOTed
2370         code.
2371
2372         * mini.c (mono_jit_thread_attach): Allow domain to be NULL for calls from
2373         AOTed code.
2374
2375         * CMakeLists.txt: Add minimal support for installation.
2376
2377 2009-06-25  Zoltan Varga  <vargaz@gmail.com>
2378
2379         * aot-compiler.c (emit_and_reloc_code): Factor out the code to
2380         determine whenever a method is directly callable to a separate function.
2381
2382         * mini-<ARCH>.c tramp-<ARCH>.c: Remove needless casts and add new
2383         needed ones as a result of the previous change.
2384
2385         * mini-<ARCH>.c tramp-<ARCH>.c: Use mgreg_t* as the
2386         type of register arrays.
2387
2388         * mini-trampolines.c tramp-<ARCH>.c aot-runtime.c: Use mgreg_t* as the
2389         type of register arrays.
2390
2391 2009-06-24  Jerry Maine  <crashfourit@gmail.com>
2392         
2393         Contributed under the terms of the MIT/X11 license by
2394         Jerry Maine <crashfourit@gail.com>.
2395
2396         * mini-amd64.c: Added code to convert simd IR to native amd64 sse.
2397
2398 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
2399
2400         * aot-compiler.c (emit_plt): Define debug labels for most plt entries.
2401
2402 2009-06-24  Neale Ferguson <neale@sinenomine.net>
2403
2404         * mini-s390x.c: Correct LCONV_TO_Ix and ICONV_TO_Ix routines. Fix leave_method
2405         dump of structure return value. Fix some formatting.
2406         * cpu-s390x.md: Fix lengths of instruction sequences.
2407         * mini-s390.c: Minor formatting changes.
2408
2409 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
2410
2411         * mini-x86.h: Applied patch from Romain Tartiere (romain@blogreen.org).
2412         Use sigaction on freebsd as well.
2413
2414 2009-06-23  Zoltan Varga  <vargaz@gmail.com>
2415
2416         * mini.h: Don't define MONO_ARCH_HAVE_TLS_GET to 0, as some code
2417         uses #ifdef on it.
2418         
2419         * mini.c (mini_init): Revert a change which breaks cross-compilation.
2420
2421 2009-06-22  Mark Probst  <mark.probst@gmail.com>
2422
2423         * mini-ppc.c, cpu-ppc.md: Enable TLS on Darwin/G4.
2424
2425 2009-06-22  Mark Probst  <mark.probst@gmail.com>
2426
2427         * mini.c, mini.h: Tell the runtime whether we support MONO_TLS.
2428
2429 2009-06-20  Martin Baulig  <martin@ximian.com>
2430
2431         * debug-mini.c
2432         (MonoDebuggerThreadFlags): New enum typedef.
2433         (MonoDebuggerThreadInfo): Added `guint32 thread_flags'.
2434         (mono_debugger_thread_created): Added `gpointer func' argument;
2435         initialize the new `thread_flags' field.
2436
2437 2009-06-18  Martin Baulig  <martin@ximian.com>
2438
2439         * debug-debugger.h (MonoDebuggerRuntimeFlags): New enum typedef.
2440         (MonoDebuggerInfo): Renamed the `dummy' field info `runtime_info'.
2441
2442         * debug-debugger.c
2443         (mini_debugger_set_attach_ok): New function; sets the attach-ok
2444         flag in `MONO_DEBUGGER__info.runtime_info'.
2445
2446         * driver.c
2447         (mono_main): Call mini_debugger_set_attach_ok() if generics
2448         sharing is disabled.
2449
2450 2009-06-22  Zoltan Varga  <vargaz@gmail.com>
2451
2452         * aot-compiler.c (add_wrappers): Fix a warning.
2453
2454         * mini-ppc.c tramp-ppc.c exceptions-ppc.c aot-compiler.c: Update after
2455         the ppc load/store macro changes.
2456
2457 2009-06-21  Zoltan Varga  <vargaz@gmail.com>
2458
2459         * tramp-ppc.c (mono_arch_patch_plt_entry): Implement this.
2460
2461         * aot-compiler.c (mono_compile_assembly): Sanitize the plt symbol too,
2462         not just the got symbol.
2463
2464         * mini-ppc.c aot-compiler.c unwind.c: Implement generation of unwind info
2465         on ppc.
2466
2467         * aot-compiler.c unwind.c: Add infrastructure for unwind support on
2468         ppc.
2469         
2470         * aot-compiler.c: Remove some fixmes.
2471
2472         * driver.c (mono_main): Print a helpful message when cross-compiling.
2473
2474         * mini.c (mini_init): Disable signal handlers when cross-compiling.
2475
2476         * method-to-ir.c (initialize_array_data): Do the optimization if the
2477         target byte order is little endian, instead of the host byte order.
2478
2479         * aot-compiler.c: Emit sizes for most symbols, only emit runtime-invoke
2480         wrappers into the mscorlib image, Emit a unique plt symbol for each
2481         image, emit symbols for plt entries.
2482
2483         * image-writer.c (img_writer_emit_symbol_size): New function to emit
2484         a .size directive.
2485         
2486 2009-06-20  Zoltan Varga  <vargaz@gmail.com>
2487
2488         * aot-compiler.c (add_wrappers): Avoid calling 
2489         mono_marshal_get_type_info () since it can assert for some types.
2490
2491         * method-to-ir.c (mono_method_to_ir): Disable aot when some forms of 
2492         ldtoken are used inside wrappers.
2493
2494         * helpers.c: Add support for prefixing tools with the arch name.
2495
2496         * mini.h (OP_LOADR_MEMBASE): New opcodes to load/store pointer sized
2497         quantities when using ilp32.
2498
2499         * mini-codegen.c: Use OP_LOADR_MEMBASE/OP_STORER_MEMBASE for loading/storing
2500         spill slots. Use sizeof(mgreg_t) for the spill slot size.
2501
2502         * image-writer.c: Use .long on ilp32.
2503
2504         * aot-compiler.c: Use 32 bit loads on ilp32.
2505         
2506 2009-06-19  Zoltan Varga  <vargaz@gmail.com>
2507
2508         * tramp-ppc.c (mono_arch_create_trampoline_code): Fix the ppc build.
2509
2510         * mini-ops.h: Use TARGET_POWERPC define for consistency.
2511
2512         * patch-info.h: Add 'MSCORLIB_GOT_ADDR' patch type.
2513
2514         * aot-compiler.c aot-runtime.c: Put the mscorlib got address into the 
2515         second got slot of every aot image.
2516         
2517         * aot-compiler.c aot-runtime.c mini-trampolines.c: Add support for
2518         aot on platforms with function pointers.
2519
2520         * mini-ppc.h mini-ppp.c cpu-ppc.md exceptions-ppc.c tramp-ppc.c: Add
2521         support for aot/full aot on ppc/ppc64.
2522         
2523         * tramp-<ARCH>.c (mono_arch_patch_plt_entry): Add 'got' and 'regs'
2524         arguments which are needed on ppc.
2525
2526         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Add 'regs'
2527         argument.
2528
2529         * mini-trampolines.c aot-runtime.c: Update after the above changes.
2530         
2531         * liveness.c (BITS_PER_CHUNK): Use MONO_BITSET_BITS_PER_CHUNK.
2532
2533         * regalloc2.c (BITS_PER_CHUNK): Ditto.  
2534
2535         * aot-compiler.c (emit_got_info): Fix reading unused memory.
2536
2537         * ir-emit.h (alloc_dreg): Add a 'return -1' to quiet some compilers.
2538
2539 2009-06-17  Geoff Norton  <gnorton@novell.com>
2540
2541         * aot-compiler.c: Ensure we dont try to close a null dwarf writer.
2542
2543 2009-06-17  Zoltan Varga  <vargaz@gmail.com>
2544
2545         * dwarfwriter.c (mono_dwarf_writer_create): Add an 'appending' parameter
2546         to control whenever the dwarf writer is in xdebug or aot mode.
2547         (emit_class_dwarf_info): Use a separate abbrev for structures without
2548         children.
2549
2550         * aot-compiler.c: Pass the appending parameter to 
2551         mono_dwarf_writer_create ().
2552
2553         * branch-opts.c (mono_merge_basic_blocks): Fix the case when bbn
2554         falls through to its next bblock. Fixes #513931.
2555
2556         * iltests.il: Add a test.
2557
2558         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Emit some line number
2559         infor even if emit_line is FALSE, as the apple linker seems to require it.
2560
2561         * image-writer.c (asm_writer_emit_symbol_diff): Call get_label ().
2562
2563         * dwarfwriter.c (emit_cie): Emit a separate symbol for the cie start, as
2564         gcc does.
2565         (emit_fde): Ditto.
2566
2567 2009-06-15  Zoltan Varga  <vargaz@gmail.com>
2568
2569         * exceptions-mips.c (mono_arch_get_throw_exception_by_name): Fix the
2570         mips build.
2571
2572 2009-06-13  Zoltan Varga  <vargaz@gmail.com>
2573
2574         * mini.h (struct MonoBasicBlock): Add 'has_jump_table' and 
2575         'has_call_handler' fields.
2576
2577         * method-to-ir.c (mono_method_to_ir): Set them if needed.
2578
2579         * branch-opts.c (mono_merge_basic_blocks): Avoid iterating through the
2580         first bblock if not needed. Fixes #512790.
2581         
2582 2009-06-11  Zoltan Varga  <vargaz@gmail.com>
2583
2584         * aot-compiler.c (mono_compile_assembly): Fix a warning.
2585         
2586         * aot-compiler.c (add_wrappers): Don't emit remoting-invoke-with-check
2587         wrappers.
2588
2589         * aot-runtime.c (mono_aot_get_method): Use the original method's code for
2590         remoting-invoke-with-check wrappers, which are not needed when running with
2591         full-aot, since it doesn't support remoting.
2592         
2593 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
2594
2595         * aot-compiler.c (emit_got_info): Don't emit offsets for the plt got entries.
2596
2597         * aot-compiler.c aot-runtime.c: Don't emit the first got offset in the
2598         method info, it is not used anymore.
2599
2600         * mini.h: Bump AOT file format version.
2601         
2602         * aot-compiler.c (arch_emit_plt_entry): Make the arm plt entries one
2603         word smaller.
2604
2605         * aot-runtime.c (mono_aot_get_plt_info_offset): Update after the
2606         change above.
2607         
2608         * tramp-arm.c (mono_arch_patch_plt_entry): Ditto.
2609
2610         * mini.h: Bump AOT file format version.
2611         
2612 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
2613
2614         * image-writer.c (asm_writer_emit_symbol_diff): Disable the 
2615         TARGET_ASM_APPLE stuff for now, as it doesn't seem to work on the
2616         iphone.
2617
2618         * mini-arm.c (mono_arch_output_basic_block): Fix the implementation
2619         of CKFINITE and FBGE for VFP.
2620
2621 2009-06-09  Zoltan Varga  <vargaz@gmail.com>
2622
2623         * aot-compiler.c: Don't align code to 16 bytes on arm.
2624         
2625         * aot-compiler.c (emit_method_code): Emit the unbox trampolines right
2626         before the methods they belong to.
2627
2628         * aot-runtime.c (mono_aot_plt_resolve): Avoid creating trampolines in
2629         the full-aot case if possible, since the trampoline will be called right 
2630         away.
2631
2632         * aot-compiler.c (mono_compile_assembly): Decrease the number of full aot
2633         trampolines to 1024 after the change above.
2634
2635         * aot-compiler.c (arch_emit_specific_trampoline): Rework the arm
2636         trampoline to save 8 bytes per trampoline.
2637
2638         * tramp-arm.c (mono_arch_create_trampoline_code_full): Update after the
2639         change above.
2640
2641 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
2642
2643         * aot-compiler.c: Use acfg->temp_prefix instead of .L to prefix labels.
2644
2645 2009-06-08  Martin Baulig  <martin@ximian.com>
2646
2647         * debug-mini.c
2648         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
2649         (_mono_debugger_throw_exception): Don't make this static.
2650         (_mono_debugger_unhandled_exception): Likewise.
2651         (mono_debugger_handle_exception): Moved to mini-exceptions.c
2652
2653         * debug-mini.c
2654         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
2655         (_mono_debugger_throw_exception): Add function prototype.
2656         (_mono_debugger_unhandled_exception): Likewise.
2657
2658         * mini-exceptions.c
2659         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
2660         arg; return the first exception handler if the exception is caught
2661         and we're running inside the debugger.
2662         (mono_debugger_handle_exception): Moved here from debug-mini.c;
2663         improve exception handle inside runtime-invoke, check whether the
2664         exception is actually caught in the method being invoked and not
2665         by the runtime-invoke-wrapper.
2666
2667 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
2668
2669         * image-writer.c: Improve support for the osx assembler.
2670
2671         * dwarfwriter.c: Avoid the usage of subsections if the assembler doesn't
2672         support them.
2673
2674 2009-06-08  Martin Baulig  <martin@ximian.com>
2675
2676         * debug-mini.c
2677         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
2678         (_mono_debugger_throw_exception): Don't make this static.
2679         (_mono_debugger_unhandled_exception): Likewise.
2680         (mono_debugger_handle_exception): Moved to mini-exceptions.c
2681
2682         * debug-mini.c
2683         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
2684         (_mono_debugger_throw_exception): Add function prototype.
2685         (_mono_debugger_unhandled_exception): Likewise.
2686
2687         * mini-exceptions.c
2688         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
2689         arg; return the first exception handler if the exception is caught
2690         and we're running inside the debugger.
2691         (mono_debugger_handle_exception): Moved here from debug-mini.c;
2692         improve exception handle inside runtime-invoke, check whether the
2693         exception is actually caught in the method being invoked and not
2694         by the runtime-invoke-wrapper.
2695
2696 2009-06-07  Zoltan Varga  <vargaz@gmail.com>
2697
2698         * image-writer.c (append_subsection): Don't align subsections of the
2699         debug_line section as a workaround.
2700
2701         * dwarfwriter.c: Emit line number info in the AOT case as well.
2702
2703 2009-06-06  Steven Munroe  <munroesj@us.ibm.com>
2704
2705         This patch is contributed under the terms of the MIT/X11 license
2706
2707        * mini-ppc.c (mono_arch_emit_exceptions): Change assert to
2708        code_len <= code_size
2709
2710 2009-06-06  Zoltan Varga  <vargaz@gmail.com>
2711
2712         * mini-mips.c (mips_emit_exc_by_name): Fix the mips build.
2713
2714 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
2715
2716         * aot-compiler.c aot-runtime.c: Delete references to static rgctx
2717         invoke wrappers, we now use trampolines instead.
2718
2719 2009-06-04  Mark Probst  <mark.probst@gmail.com>
2720
2721         * mini-darwin.c: The exception thread must not be registered with
2722         the GC.
2723
2724 2009-06-04  Mark Probst  <mark.probst@gmail.com>
2725
2726         * mini-gc.c: Disable the code because it makes SGen crash.
2727
2728 2009-06-03  Zoltan Varga  <vargaz@gmail.com>
2729
2730         * aot-compiler.c (mono_compile_assembly): Handle file open errors gracefully
2731         instead of asserting.
2732
2733 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
2734
2735         * aot-compiler.c (mono_compile_assembly): Move the creation of the
2736         output file after the code has been compiled.
2737
2738 2009-05-30  Zoltan Varga  <vargaz@gmail.com>
2739
2740         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Fix 64 bit support.
2741
2742 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
2743
2744         * aot-compiler.c aot-runtime.c: Get rid of the shared/non-shared got
2745         entries distinction to simplify the code.
2746
2747         * mini.h: Bump AOT file format version.
2748         
2749 2009-05-28  Zoltan Varga  <vargaz@gmail.com>
2750
2751         * objects.cs: Fix the signature of one of the tests.
2752
2753         * mini.c (mini_create_ftnptr): New helper function, moved here from
2754         object.c.
2755         (mini_get_addr_from_ftnptr): Ditto.
2756         (mini_init): Install the new helpers.
2757
2758 2009-05-28  Martin Baulig  <martin@ximian.com>
2759
2760         Correctly initialize the debugger when embedding Mono.
2761
2762         * mdb-debug-info32.s, mdb-debug-info64.s: Add a global variable
2763         `MONO_DEBUGGER__using_debugger' to the `.mdb_debug_info' section;
2764         see documentation in mini_debug_running_inside_mdb().
2765
2766         * debug-debugger.c
2767         (mini_debug_running_inside_mdb): New function to check whether
2768         we're running inside mdb.
2769
2770         * mini.c (mini_init): Call mini_debugger_init() if we're running
2771         inside the debugger.
2772
2773         * driver.c (mono_main): Moved the call to mini_debugger_init()
2774         into mini_init() to make this work when embedding Mono.
2775
2776         * debug-debugger.c (mini_debugger_init): Warn about duplicate
2777         calls to mini_debugger_init().
2778
2779         * mini.h: Rename mono_debugger_init() -> mini_debugger_init(),
2780         mono_debugger_main() -> mini_debugger_main() and put them inside a
2781         `MONO_DEBUGGER_SUPPORTED' conditional.
2782
2783 2009-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
2784
2785         * mini-trampolines.c: Kill mono_find_delegate_trampoline_by_addr as
2786         this is no longer in use.
2787         * mini.h: Same.
2788
2789 2009-05-26  Zoltan Varga  <vargaz@gmail.com>
2790
2791         * mini-sparc.c (add_outarg_load): Fix the sparc build.
2792
2793         * aot-compiler.c (emit_method_code): Always write out C style symbols for
2794         methods.
2795
2796 2009-05-27  Martin Baulig  <martin@ximian.com>
2797
2798 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
2799
2800         * mini-x86.c (mono_arch_output_basic_block): Fix the precision of
2801         long_conv_to_r_un to 64 bits.
2802
2803         * cpu-x86.md: Increase the instruction size due to the changes.
2804
2805         * iltests.il.in: Add regression test.
2806
2807         Fixes #467201.
2808
2809 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
2810
2811         * objects.cs: Move the previous test from basic.cs to here.
2812
2813 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
2814
2815         * basic.cs: Add regression test for #506915.
2816
2817 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
2818
2819         * method-to-ir.c (mono_method_to_ir): When doing the ldobj+stobj
2820         optimization we must check the bb of the first byte of stobj as
2821         it's the only one set in cil_offset_to_bb.
2822
2823         Fixes #506915.  
2824
2825 2009-05-25  Zoltan Varga  <vargaz@gmail.com>
2826
2827         * image-writer.c: Fix pointer directive on ppc64.
2828
2829 2009-05-24  Zoltan Varga  <vargaz@gmail.com>
2830
2831         * image-writer.c (asm_writer_emit_section_change): Avoid using
2832         .bss subsections on ppc too.
2833
2834 2009-05-23  Zoltan Varga  <vargaz@gmail.com>
2835
2836         * image-writer.c: Fix the definition of TARGET_ASM_....
2837         
2838         * image-writer.c: Fix the emission of assembler directives in the last
2839         change.
2840
2841         * mini-ppc.c (mono_arch_emit_exceptions): Increase the size of the
2842         exception throwing code to accomodate ppc64.
2843
2844         * tramp-ppc.c (mono_arch_get_nullified_class_init_trampoline): Increase the
2845         size to work on ppc64 too.
2846
2847         * mini-ppc.h (MonoCompileArch): Enable static rgctx trampolines on ppc64
2848         too.
2849
2850         * image-writer.c: Clean up the #ifdef hell a bit by adding defines for
2851         the assembler dialect instead of using platform specific defines.
2852
2853 2009-05-22  Geoff Norton  <gnorton@novell.com>
2854
2855         * mini-arm.c (get_call_info): If a structure is split between the stack
2856         and argument registers, we should not advance the stack pointer by the entire
2857         native size, but just by the amount that spilled.
2858
2859 2009-05-22  Zoltan Varga  <vargaz@gmail.com>
2860
2861         * mini-arm.c (get_call_info): Handle structures with alignment requirements
2862         correctly.
2863
2864 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
2865
2866         * aot-compiler.c (emit_extra_methods): Encode direct runtime invoke
2867         wrappers normally.
2868         
2869         * aot-compiler.c (add_extra_method): Fix up the collection of extra
2870         methods so wrapper don't get added twice.
2871         (add_generic_instances): Don't add methods of arrays.
2872
2873         * generics.cs: Mark one test as !FULLAOT.
2874
2875 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
2876
2877         * mini-x86.c (emit_move_return_value): Remove unused vars.
2878
2879 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
2880
2881         * mini-x86.c (mono_arch_emit_call): The decompose code now supports
2882         decomposing 8 bytes structs into a LCALL.
2883
2884         * mini-x86.c (emit_move_return_value): We no longer push the vtype
2885         pointer for where to store the returned regs.
2886
2887         * decompose.c (mono_decompose_vtype_opts): Fix the comment to properly
2888         state the concern.
2889
2890         Fixes #471747, #471751 and #4734530 (in fact, it's a bunch of dups).
2891
2892 2009-05-20  Miguel de Icaza  <miguel@novell.com>
2893
2894         * aot-runtime.c (mono_aot_init): Use g_getenv to work on systems
2895         without getenv.
2896
2897 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
2898
2899         * aot-compiler.c (add_wrappers): Add StructureToPtr/PtrToStructure wrappers.
2900
2901         * basic.cs: Move the test_2_cprop_bug () test to generics.cs as it involves
2902         generics.
2903
2904 2009-05-20 Rodrigo Kumpera  <rkumpera@novell.com>
2905
2906         * local-propagation.c (mono_local_cprop): Avoid local propagation
2907         across paired add/sub if the first instruction dest reg is it's
2908         source reg. For example:
2909
2910         int_add_imm R12 <- R12 [1] clobbers: 1
2911         int_sub_imm R42 <- R12 [1] clobbers: 1
2912
2913         The cprop pass would wrongly const prop + 1 to int_sub_imm which doesn't
2914         maintain the math identify.
2915
2916         Fixes #505375.
2917
2918 2009-05-20  Andreia Gaita  <avidigal@novell.com>
2919
2920         * Makefile.am: avoid going on the network just to get the revision,
2921         use git log instead
2922
2923 2009-05-19  Massimiliano Mantione  <massi@ximian.com>
2924
2925         Fixed estimate for short branches on amd64 (they were off mark, and
2926         enabling call prolog-epilog instrumentations caused assertions).
2927         * mini.h (struct MonoBasicBlock): added max_length field to hold the
2928         estimate for the maximum length of this basic block.
2929         * mini-amd64.c:
2930         - mono_arch_emit_prolog: compute max_length for each basic block
2931           (instead of max_offset), and inflate size estimate also for entry bb
2932           in case of code instrumentation.
2933         - mono_arch_output_basic_block: get rid of "cpos" (the current
2934           estimated "position" in the code), and always use "offset" instead,
2935           which is accurate; at the beginning of the function quickly recompute
2936           max_offset for all the remaining blocks, starting from the current
2937           cfg->code_len (which is correct, and not estimated) and using the
2938           estimated block lengths computed previously.
2939
2940 2009-05-17  Zoltan Varga  <vargaz@gmail.com>
2941
2942         * exceptions-ppc.c: Remove the caching from the trampoline creation 
2943         functions, it is already done in the caller.
2944
2945         * mini-trampolines.c (mono_llvm_vcall_trampoline): Fix the llvm build.
2946
2947         * mini-ppc.h mini-arm.h mini-x86.h mini-amd64.h: Add 
2948         MONO_ARCH_GSHARED_SUPPORTED define.
2949
2950         * mini.c (mini_init): Use the MONO_ARCH_GSHARED_SUPPORTED define.
2951
2952         * mini-arm.c mini.c: Get rid of the unused mono_arch_fixup_jinfo ()
2953         function.
2954
2955 2009-05-16  Zoltan Varga  <vargaz@gmail.com>
2956
2957         * jit-icalls.c (mono_helper_compile_generic_method): Get rid of the 
2958         call to mono_marshal_get_rgctx_invoke ().
2959
2960         * mini.c method-to-ir.c mini-trampolines.c: Get rid of the usage of
2961         mono_marshal_get_static_rgctx_invoke (), all platforms which support
2962         gshared use the static rgctx trampolines now.
2963         
2964         * mini.c (mini_init): Call mono_set_generic_sharing_supported () if the
2965         platform supports it.
2966
2967 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
2968
2969         * mini-arm.c (mono_arch_allocate_vars): Correctly save R5 when using AOT.
2970
2971         * aot-compiler.c (emit_method_code): Avoid duplicate labels for methods.
2972
2973 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
2974
2975         * mini-ppc.c (mono_arch_emit_exceptions): Nullify the processed patches.
2976
2977         * tramp-ppc.c (mono_arch_nullify_class_init_trampoline): Implement this
2978         for ppc.
2979
2980 2009-05-15  Massimiliano Mantione  <massi@ximian.com>
2981
2982         Made it possible for mono_arch_instrument_epilog to preserve
2983         argument registers, otherwise instrumenting the "epilogue" before
2984         a tail call would clobber them.
2985         * mini.h: Added "mono_arch_instrument_epilog_full" prototype, which
2986         if like mono_arch_instrument_epilog but with an additional parameter
2987         that states if argument registers must be preserved.
2988         * mini.c: implemented mono_arch_instrument_epilog as a call to
2989         mono_arch_instrument_epilog_full without asking to preserve argument
2990         registers (this makes the existing code work as usual).
2991         * mini-amd64.c:
2992         - mono_arch_instrument_epilog: add parameter to transform it into
2993         mono_arch_instrument_epilog_full, and preserve argument registers
2994         when required.
2995         - mono_arch_output_basic_block, OP_TAILCALL case: call
2996         mono_arch_instrument_epilog_full.
2997         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
2998         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-x86.c:
2999         only transformed mono_arch_instrument_epilog into
3000         mono_arch_instrument_epilog_full.
3001
3002 2009-05-15  Geoff Norton  <gnorton@novell.com>
3003
3004         * mini-darwin.c: This works on arm now.
3005
3006 2009-05-14  Geoff Norton  <gnorton@novell.com>
3007
3008         * jit.h, driver.c: Allow full-aot to be decided programatically by the
3009         embedding api.
3010
3011 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
3012
3013         * aot-compiler.c (emit_method_code): Skip a few more characters in the debug
3014         label names.
3015
3016         * mini-trampolines.c (mono_magic_trampoline): Handle static rgctx invoke
3017         wrappers during full aot mode correctly.
3018
3019         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle shared generic
3020         methods correctly.
3021
3022         * aot-compiler.c (mono_aot_method_hash): Use our internal version of
3023         mono_metadata_type_hash ().
3024
3025 2009-05-14  Massimiliano Mantione  <massi@ximian.com>
3026
3027         * mini.h, mini-codegen.c, mini-alpha.c, mini-amd64.c, mini-arm.c,
3028         mini-hppa.h, mini-hppa.c, mini-ia64.c, mini-mips.h, mini-mips.c,
3029         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-886.c:
3030         Removed MONO_INST_BRLABEL from the instruction flags, and the
3031         remaining code that used it, because we do not support branches inside
3032         basic blocks (and branch target labels) anymore.
3033         * Makefile.am: As part of the above cleanup, remove reference to
3034         BURG files which don't exist anymore.
3035
3036 2009-05-14  Zoltan Varga  <vargaz@gmail.com>
3037
3038         * image-writer.c (asm_writer_emit_local_symbol): Make this a nop on
3039         osx.
3040
3041         * mini-mips.c mini-mips.h exceptions-mips.c: Transition the mips backend
3042         to use mono_arch_throw_corlib_exception.
3043
3044         * mini-ppc.c mini-ppc.h exceptions-ppc.c: Use 
3045         mono_arch_throw_corlib_exception for throwing corlib exceptions.
3046
3047         * aot-runtime.c (decode_patch): Allocate the data for R4/R8 from the
3048         domain mempool.
3049
3050         * mini.c (mono_patch_info_dup_mp): Copy the table of switch targets too.
3051
3052         * aot-compiler.c: Emit a local symbol prefixed with the assembly name 
3053         for the got to make debugging easier and to avoid confusing it with the
3054         system got.
3055         
3056         * aot-compiler.c (emit_method_code): Emit a C style symbol for each
3057         method so a breakpoint can be set when using gdb.
3058
3059 2009-05-13  Zoltan Varga  <vargaz@gmail.com>
3060
3061         * aot-compiler.c (mono_aot_method_hash): Implement this properly based
3062         on mono_method_get_imt_slot ().
3063
3064         * aot-runtime.c (find_extra_method_in_amodule): Get rid of the
3065         num_decodes variables.
3066
3067         * aot-compiler.c (mono_aot_method_hash): Revert part of the last
3068         change as it doesn't seem to work.
3069         
3070         * aot-compiler.c (mono_aot_method_hash): Improve the hashing of
3071         wrappers.
3072
3073 2009-05-12  Zoltan Varga  <vargaz@gmail.com>
3074
3075         * aot-compiler.c mini.c mini-amd64.h mini-arm.h: Kill 
3076         MONO_ARCH_FULL_AOT_IMT_SUPPORTED define, both platforms now support imt.
3077
3078         * mini.c (mini_init): Install mono_aot_get_imt_thunk as the IMT thunk
3079         builder when using full aot.
3080
3081         * mini-amd64.c (mono_arch_build_imt_thunk): Don't handle the full-aot case
3082         here, it is already handled.
3083         
3084         * mini-arm.c (mono_arch_emit_imt_argument): Pass the dynamic imt arg
3085         correctly for IMT.
3086
3087         * aot-compiler.c (arch_emit_imt_thunk): Implement this for ARM.
3088
3089         * mini-arm.h: Enable IMT for full aot.
3090         
3091         * aot-compiler.c (mono_compile_assembly): Don't emit imt thunk if the
3092         arch doesn't support it.
3093
3094         * mini.c (mini_init): Don't disable IMT for full aot if the
3095         architecture supports it.
3096
3097         * mini.h (MonoAotTrampoline): New enum containing the different types
3098         of 'numerous' trampolines.
3099         (MONO_AOT_FILE_VERSION): Bump this.
3100
3101         * aot-compiler.c aot-runtime.c: Unify the handling of specific and
3102         static rgctx trampolines. Add support for full-aot IMT thunks.
3103
3104         * mini-amd64.h: Enable IMT for full aot.
3105
3106         * TestDriver.cs: Add a CategoryAttribute class and an --exclude option
3107         to exclude tests belonging to a category.
3108
3109         * generics.cs: Mark some tests with a !FULLAOT category.
3110
3111         * Makefile.am (fullaotcheck): Run tests with --exclude !FULLAOT. Include
3112         generics tests.
3113
3114 2009-05-11  Zoltan Varga  <vargaz@gmail.com>
3115
3116         * aot-compiler.c (emit_and_reloc_code): Move the implementation of
3117         MONO_PATCH_INFO_GOT_OFFSET to a separate arch-specific function.
3118         (emit_plt): Fix a warning.
3119
3120 2009-05-10  Zoltan Varga  <vargaz@gmail.com>
3121
3122         * aot-compiler.c aot-runtime.c: Fix the build by moving is_shared_got_patch
3123         back into aot-compiler.c to a place where the other functions shared by
3124         the runtime and aot compiler are.
3125         
3126         * aot-compiler.c aot-runtime.c: Emit the got addr using a separate symbol,
3127         as done previously, instead of in MonoAotFileInfo, since pointers might have
3128         alignment requirements.
3129
3130         * mini.h: Bump AOT file format version.
3131
3132 2009-05-10  Miguel de Icaza  <miguel@novell.com>
3133
3134         * aot-runtime.c (mono_aot_is_shared_got_patch): Move this routine
3135         that is used at runtime from the aot-compiler.c, this makes it
3136         work on setups that remove the AOT compiler from the output
3137         image. 
3138
3139 2009-05-09  Zoltan Varga  <vargaz@gmail.com>
3140
3141         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Implement this for
3142         PPC.
3143
3144         * mini-ppc.h: Enable static rgctx trampolines for ppc.
3145
3146         * mini-<ARCH>.h: Kill the MONO_ARCH_ENABLE_EMIT_STATE_OPT define.
3147
3148         * decompose.c (mono_decompose_long_opts): Move the ppc/sparc specific 
3149         stuff to mono_arch_decompose_long_opts ().
3150         (mono_decompose_opcode): Remove some dead code.
3151
3152 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
3153
3154         * method-to-ir.c (mono_method_to_ir): Fix boostrap of non amd64 builds
3155         cmethod can be null for quite a some reasons.
3156
3157 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
3158
3159         * method-to-ir.c (mono_method_to_ir): Fix non amd64 builds.
3160
3161 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
3162
3163         * aot-compiler.c (arch_emit_got_access): Fix the aot-not-supported build.
3164
3165 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
3166
3167         * method-to-ir.c (mono_emit_call_args): Add a 'tail' flag argument.
3168         (mono_method_to_ir): Use MONO_ARCH_USE_OP_TAIL_CALL macro to determine
3169         whenever to make tail calls using OP_TAIL_CALL. Enable support for tail
3170         calls returning structures by addr on amd64.
3171
3172         * mini-amd64.h (MONO_ARCH_USE_OP_TAIL_CALL): New arch-specific macro.
3173
3174         * iltests.il.in: Restructure the tail call tests a bit.
3175         
3176 2009-05-07  Zoltan Varga  <vargaz@gmail.com>
3177
3178         * aot-compiler.c (add_wrappers): Add remoting-invoke-with-check wrappers
3179         for virtual methods too.
3180
3181 2009-05-06  Raja R Harinath  <harinath@hurrynot.org>
3182
3183         * method-to-ir.c (mono_method_to_ir): Revert change of 2009-05-02
3184         due to regression in verifying System.dll.
3185
3186 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
3187
3188         * debug-mini.c (mono_debugger_method_has_breakpoint): Allow breakpoints
3189         in dynamic methods.
3190
3191         * dwarfwriter.c (emit_class_dwarf_info): Add support for generic
3192         instances.
3193
3194         * aot-compiler.c aot-runtime.c: Use our own hash function instead of
3195         g_str_hash () which can change.
3196
3197         * driver.c (mini_regression): Disable optimizations not supported by
3198         the cpu. Fixes #500019.
3199
3200         * aot-runtime.c (mono_aot_get_unwind_info): Fix the --enable-minimal=aot
3201         build.
3202
3203 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
3204
3205         * mini-llvm.c (mono_llvm_emit_method): Update the OP_TLS_GET implementation
3206         to the latest LLVM code.
3207
3208 2009-05-05  Zoltan Varga  <vargaz@gmail.com>
3209
3210         * genmdesc.pl (load_opcodes): Fix this after the TARGET_... changes.
3211
3212 2009-05-04  Zoltan Varga  <vargaz@gmail.com>
3213
3214         * mini-llvm.c (mono_llvm_emit_method): Implement TLS support on 
3215         x86/amd64.
3216
3217         * aot-compiler.c (encode_patch_list): Simplify this considerably as we are
3218         no longer saving offsets, so just save the patch types along with the other
3219         info.
3220         * aot-runtime.c (load_patch_info): Update after the changes to 
3221         encode_patch_list ().
3222         (decode_got_entry): Removed, merged into load_patch_info ().
3223         (is_shared_got_patch): Removed, call the same function from
3224         aot-compiler.c.
3225
3226         * mini.h: Bump aot file format version.
3227         
3228         * aot-compiler.c aot-runtime.c: Resurrect static linking support. Kill the
3229         half-finished no-dlsym code.
3230
3231         * aot-runtime.c (load_method): Kill the old and bit-rotten use_loaded_code
3232         option.
3233
3234         * mini-<ARCH>.h mini-trampolines.c aot-runtime.c: Kill the 
3235         MONO_ARCH_HAVE_CREATE_TRAMPOLINE_FROM_TOKEN define.
3236
3237 2009-05-02  Zoltan Varga  <vargaz@gmail.com>
3238
3239         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Increase the
3240         buffer length to work with AOT code.
3241
3242         * method-to-ir.c (mono_method_to_ir): Handle loading errors in the
3243         ldfld/stfld opcodes.
3244
3245         * exceptions-x86.c (mono_arch_get_throw_exception_by_name): Simplify this
3246         as it is not used.
3247
3248         * mini-llvm.c mini-x86.c: Implement 32 bit and x86 support.
3249
3250         * ssa.c (mono_ssa_compute): Don't skip I8 values when using LLVM.
3251
3252         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Update to the latest
3253         LLVM API.
3254
3255         * mini.c (mini_method_compile): Set the from_llvm flag in MonoJitInfo
3256         if needed. Don't decompose long operations when using llvm.
3257
3258 2009-05-01  Zoltan Varga  <vargaz@gmail.com>
3259
3260         * aot-compiler.c aot-runtime.c: Use mono_pagesize () instead of the
3261         PAGESIZE constant.
3262
3263         * aot-runtime.c (load_aot_module): Get rid of another mprotect call.
3264
3265 2009-05-03  Martin Baulig  <martin@ximian.com>
3266
3267         * debug-debugger.c (debugger_insert_source_breakpoint): Don't call
3268         mono_debugger_insert_method_breakpoint() since the class init
3269         handler we're inserting at the top of the method already gives us
3270         a notification.
3271
3272 2009-04-30  Zoltan Varga  <vargaz@gmail.com>
3273
3274         * decompose.c (mono_decompose_long_opts): Move the implementation of LNEG
3275         to mono_arch_decompose_long_opts () for x86 and arm.
3276
3277 2009-04-29  Zoltan Varga  <vargaz@gmail.com>
3278
3279         * mini-codegen.c (mono_regstate_alloc_int): Use __x86_64__ instead of
3280         TARGET_AMD64 here.
3281
3282 2009-04-28  Zoltan Varga  <vargaz@gmail.com>
3283
3284         * *.h *.c: Use TARGET_<ARCH> defines instead of __<arch>__ defines in the
3285         JIT code.
3286
3287 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
3288
3289         * aot-runtime.c (mono_aot_create_specific_trampoline): Add a stat for the
3290         number of trampolines used in full-aot mode.
3291
3292         * aot-compiler.c: Add an ntrampolines option to set the number of 
3293         trampolines emitted in full-aot mode.
3294
3295 2009-04-27  Zoltan Varga  <vargaz@gmail.com>
3296
3297         * mini-llvm.c (mono_llvm_emit_method): Implement OP_CHECK_THIS using
3298         a volatile load. Get rid of get_tempname (), llvm assigns names
3299         automatically.
3300
3301         * mini-llvm-cpp.cpp (mono_llvm_build_volatile_load): New instruction
3302         builder function.
3303
3304         * mini-llvm.c (mono_llvm_emit_method): Don't call LLVMGetParam on
3305         a value.
3306
3307         * abcremoval.c (REPORT_ABC_REMOVAL): Don't output messages at verbose
3308         level 1.
3309
3310         * mini-codegen.c (mono_local_regalloc): Prevent sreg1/dreg to be allocated
3311         to the same register as a fixed sreg2. Fixes #497271.
3312
3313         * iltests.il.in: Add a new test.
3314
3315 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
3316
3317         * mini-amd64.c: Use moves instead of pushes for passing arguments on the
3318         stack, since pushes complicate exception handling.
3319
3320         * exceptions-amd64.c (mono_arch_find_jit_info): Don't pop the arguments of
3321         the stack if they are passed using moves.
3322
3323         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
3324
3325         * method-to-ir.c (mono_method_to_ir): Disable fast virtual generic methods
3326         when using llvm.
3327
3328         * mini-llvm.c (mono_llvm_emit_method): Call jit icall wrappers, not the 
3329         icalls themselves. Convert arguments of FCOMPARE. Convert the destination
3330         of FMOVE if it is an R4.
3331
3332 2009-04-25  Zoltan Varga  <vargaz@gmail.com>
3333
3334         * mini-ops.h: Add OP_LLVM_OUTARG_VT opcode.
3335
3336         * mini.h (LLVMCallInfo): New structure to store calling convention 
3337         information for the LLVM back end similar to the CallInfo structures in 
3338         the back-ends.
3339
3340         * mini-amd64.c (mono_arch_get_llvm_call_info): New arch function to return
3341         call information in a format usable by LLVM.
3342         (mono_arch_emit_call): Move the LLVM handling code to mono_llvm_emit_call ().
3343
3344         * method-to-ir.c (mono_emit_call_args): Emit calls using 
3345         mono_llvm_emit_call () when compiling using LLVM.
3346
3347         * mini-llvm.c: Implement support for passing/receiving valuetypes. Add
3348         comments to all functions. Fix memory leaks. Add a public init/cleanup
3349         function.
3350
3351         * mini.c: Call the llvm init/cleanup functions in mini_init()/cleanup().
3352
3353         * method-to-ir.c (handle_array_new): Disable llvm when calling the vararg
3354         mono_array_new_va () jit icall.
3355         
3356 Fri Apr 24 16:44:08 CEST 2009 Paolo Molaro <lupus@ximian.com>
3357
3358         * Makefile.am, genmdesc.c, genmdesc.pl: tiny refactor to allow
3359         multiple machine description files to be specified.
3360         * mini-ops.h: fixes for cross-compilation.
3361
3362 2009-04-22  Miguel de Icaza  <miguel@novell.com>
3363
3364         * aot-runtime.c (make_writable): Use mono_mprotect to simplify
3365         some porting work.
3366
3367 2009-04-22  Zoltan Varga  <vargaz@gmail.com>
3368
3369         * method-to-ir.c (mono_method_to_ir): Force init_locals to be TRUE
3370         to prevent asserts in various passes. Fixes #497220.
3371
3372 2009-04-21  Zoltan Varga  <vargaz@gmail.com>
3373
3374         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove
3375         a racy assert.
3376
3377         * aot-compiler.c aot-runtime.c: Emit the unwind info into a separate
3378         table to avoid duplicates.
3379
3380         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
3381         
3382         * aot-compiler.c (emit_method_code): Avoid writing symbols if the nodebug
3383         option is used.
3384
3385 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
3386
3387         * mini.c (mini_method_verify): Fail fulltrust code if the exception
3388         is for method or field access.
3389
3390 2009-04-20  Zoltan Varga  <vargaz@gmail.com>
3391
3392         * mini-llvm-cpp.cpp (mono_llvm_dump_value): New helper function to print
3393         a Value to stdout.
3394
3395         * mini-llvm.c (mono_llvm_emit_method): Use it.
3396         
3397         * mini-llvm.c (type_to_llvm_type): Fix the mapping of enums.
3398         (mono_llvm_emit_method): Add support for CAS. Fix handling of CSET opcodes
3399         on volatile values.
3400
3401         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add support for 
3402         synchronized methods.
3403
3404         * mini.c (mini_method_compile): Disable LLVM for dynamic methods.
3405
3406         * mini.c (mini_method_compile): Enable ABCREM when running with LLVM.
3407
3408         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOADI4_MEM/
3409         OP_LOADI8_MEM.
3410
3411         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add a MONO_LLVM env variable
3412         allowing some options to be set dynamically.
3413
3414 2009-04-19  Zoltan Varga  <vargaz@gmail.com>
3415
3416         * mini-llvm.c (mono_llvm_emit_method): Handle compares followed by an
3417         unconditional branch.
3418
3419         * mini.h (MonoTrampolineType): Add new trampoline type 
3420         'MONO_TRAMPOLINE_LLVM_VCALL' which handles virtual calls made from LLVM
3421         compiled code.
3422
3423         * mini-trampolines.c (mono_llvm_vcall_trampoline): New C trampoline 
3424         function.
3425
3426         * mini-trampolines.c (mono_create_llvm_vcall_trampoline): New trampoline
3427         creation function.
3428
3429         * mini.c (mini_init): Avoid using the common vtable trampoline when LLVM
3430         is enabled. Instead, use the llvm vcall trampoline.
3431         
3432         * mini-trampolines.c (mono_get_vcall_slot_addr): New helper function.
3433
3434         * mini-trampolines.c tramp-amd64.c tramp-x86.c: Use it.
3435         
3436         * mini-<ARCH>.c: Get rid of the identical mono_arch_get_vcall_slot_addr ()
3437         functions.
3438
3439         * mini-<ARCH>.h mini-trampolines.c mini.c: Get rid of 
3440         MONO_ARCH_COMMON_VTABLE_TRAMPOLINE, it is supported by all archs.
3441
3442         * mini-ia64.c (mono_arch_lowering_pass): Null out the sregs of the
3443         OP_IA64_CSET opcode.
3444
3445         * mini.c: Fix a warning.
3446
3447         * mini-llvm.c (mono_llvm_emit_method): Convert arguments of SWITCH and
3448         THROW to the appropriate llvm type.
3449
3450 2009-04-18  Zoltan Varga  <vargaz@gmail.com>
3451
3452         * mini.c (mini_method_compile): Add statistics for methods JITted
3453         with/without LLVM.
3454
3455 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
3456
3457         * method-to-ir.c: Fix the computation of ins_sreg_counts for ia64
3458         OP_IA64_CMP_<cond>_IMM opcodes.
3459
3460 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
3461
3462         * mini-llvm.c (emit_cond_system_exception): Implement throwing of
3463         corlib exceptions.
3464
3465         * dwarfwriter.c (mono_dwarf_writer_emit_method): Handle --regression
3466         correctly.
3467
3468         * mini-llvm.c (type_to_llvm_type): Avoid accessing t->data.klass for
3469         GENERICINST.
3470
3471 2009-04-17  Atsushi Enomoto  <atsushi@ximian.com>
3472
3473         * mini-exceptions.c : add thread id to EXCEPTION trace message.
3474
3475 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
3476
3477         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Fix AOT
3478         support.
3479
3480         * tramp-x86.c (mono_arch_get_unbox_trampoline): Implement static
3481         rgctx invoke trampolines for x86.
3482
3483         * mini-x86.c (mono_arch_output_basic_block): Add a few nops before
3484         indirect calls to simplify get_vcall_slot_addr (). Fixes #494567.
3485         (mono_arch_get_vcall_slot): Simplify this.
3486
3487 2009-04-16  Zoltan Varga  <vargaz@gmail.com>
3488
3489         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Move the calls to
3490         mono_debug_add_delegate_trampoline () to get_delegate_invoke_impl ().
3491
3492 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
3493
3494         * aot-compiler.c tramp-arm.c mini-arm.c: Implement static rgctx 
3495         trampolines for ARM. Add full-aot support for delegate invokes for ARM.
3496
3497         * mini-trampolines.c (mono_magic_trampoline): Fix the build.
3498
3499         * liveness.c (visit_bb): Remove a needless assert.
3500
3501 2009-04-13  Zoltan Varga  <vargaz@gmail.com>
3502
3503         * mini-trampolines.c (mono_create_delegate_trampoline): Delegate the
3504         full aot support to the arch specific code.
3505
3506         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Add full-aot support.
3507
3508         * aot-compiler.c (emit_trampolines): Emit delegate invoke impl trampolines.
3509
3510         * aot-compiler.c (emit_named_code): Rename this to 'emit_trampoline'.
3511         
3512         * mini-amd64.c (mono_arch_get_delegate_invoke_impls): New function to
3513         collect information about the delegate invoke impl trampolines.
3514
3515         * mini.h (MonoAotTrampInfo): New structure collecting the information needed
3516         to save trampolines during full-aot mode.
3517
3518         * mini-trampolines.c (mono_create_static_rgctx_trampoline): New trampoline
3519         creation function which returns a trampoline which sets the rgctx
3520         argument.
3521         (mono_magic_trampoline): Use the rgctx trampoline instead of an rgctx
3522         wrapper if possible.
3523         (mono_delegate_trampoline): Ditto.
3524
3525         * mini.c (mono_jit_runtime_invoke): Ditto.
3526
3527         * tramp-amd64.c: Add an implemention of static rgctx trampolines for AMD64.
3528         
3529         * aot-compiler.c aot-runtime.c: Add support for static rgctx trampolines.
3530
3531         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
3532         
3533 2009-04-12  Zoltan Varga  <vargaz@gmail.com>
3534
3535         * mini-ia64.c (mono_arch_lowering_pass): Use NULLIFY_INS instead of
3536         just setting the opcode to OP_NOP.
3537
3538 2009-04-11  Zoltan Varga  <vargaz@gmail.com>
3539
3540         * mini.c (mini_method_compile): Put the last change inside an 
3541         #ifdef MONO_ARCH_HAVE_LIVERANGE_OPS.
3542         
3543         * mini.c (mini_method_compile): Disable sharing of stack slots/registers
3544         and extend live ranges to cover the whole method when using xdb.
3545
3546         * jit-icalls.c (ldvirtfn_internal): Avoid creating rgctx wrappers here,
3547         do it in the trampolines.
3548
3549         * mini-trampolines.c (mono_magic_trampoline): Add an rgctx wrapper if
3550         needed.
3551
3552         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
3553         
3554         * method-to-ir.c (mono_method_to_ir): Avoid using the fast virtual method
3555         call code in full-aot mode since IMT is disabled there.
3556         (mono_method_to_ir): Inline ldfld wrappers which return structures too, the
3557         new JIT no longer has that restriction.
3558
3559         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
3560
3561         * aot-compiler.c (emit_extra_methods): Emit the wrapper method names in
3562         a more compact format.
3563         (mono_aot_wrapper_name): New function to return a unique name for a
3564         wrapper method, also used by the AOT runtime.
3565
3566         * aot-runtime.c (find_extra_method_in_amodule): Update after the changes to
3567         aot-compiler.c.
3568
3569         * aot-compiler.c (add_generic_class): Add the helper methods from T[]
3570         when a ICollection<T> etc is encountered.
3571         (add_generic_instances): Process method arguments/locals too.
3572         (emit_trampolines): Emit unbox trampolines for extra methods too. Shorten
3573         trampoline names.
3574
3575         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle extra methods too.
3576         
3577 2009-04-10  Zoltan Varga  <vargaz@gmail.com>
3578
3579         * aot-compiler.c: Disable the AOT compiler if the JIT is disabled.
3580
3581         * dwarfwriter.c (emit_type): Emit byref to reference types as 'int' for now.
3582
3583         * decompose.c (mono_decompose_opcode): Make this return a MonoInst*
3584         representing the result of the decomposition. Nullify instructions
3585         instead of setting them to OP_NOP since nops can't have registers
3586         set.
3587
3588 2009-04-09  Zoltan Varga  <vargaz@gmail.com>
3589
3590         * aot-compiler.c (mono_compile_assembly): Split this huge function into
3591         smaller parts. Add 'nodebug' option to prevent generation of DWARF debug
3592         info. Strip 'mapping symbols' on ARM.
3593
3594         * iltests.il.in (test_0_fconv_to_i): Disable this on ARM too.
3595         
3596         * genmdesc.pl: Applied patch by Martin Fuzzey (mfuzzey@parkeon.com). Sync
3597         this with the native genmdesc.
3598
3599 2009-04-08  Bill Holmes  <billholmes54@gmail.com>
3600
3601         * aot-runtime.c:  Fixing the MSVC build.
3602
3603         Code is contributed under MIT/X11 license.
3604
3605 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
3606
3607         * mini-llvm.c (mono_llvm_emit_method): Pass i1/i2 arguments as i4 since 
3608         JITted code depends on it.
3609
3610 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
3611
3612         * aot-compiler.c: Use new MonoGenericParam accessors.
3613
3614 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
3615
3616         Reduce memory usage and improve correctness wrt MonoGenericParam
3617         * aot-runtime.c (decode_klass_ref): Simplify generic parameter
3618         handing.  Avoid allocating MonoGenericParams, but use the ones in
3619         the container itself.
3620
3621 2009-04-07  Miguel de Icaza  <miguel@novell.com>
3622
3623         * tasklets.c: Return exceptions in the out argument.
3624
3625 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
3626
3627         * mini-llvm.c (mono_llvm_emit_method): Fix alignment in the LOCALLOC_IMM
3628         opcode. Use pointer types in more places instead of casting them to 
3629         integers.
3630
3631         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Create a pass manager to run
3632         optimizations.
3633         (mono_llvm_optimize_method): New helper function to optimize a method.
3634
3635         * method-to-ir.c (mono_emit_widen_call_res): Extract the call result 
3636         widening code so it could be called from more places.
3637         (mono_method_to_ir): Call mono_emit_widne_call_res () in several more
3638         code paths in the call opcodes.
3639
3640 Mon Apr 6 14:19:54 CEST 2009 Paolo Molaro <lupus@ximian.com>
3641
3642         * exceptions-amd64.c, mini-amd64.h: amd64 support code for continuations.
3643
3644 2009-04-06  Zoltan Varga  <vargaz@gmail.com>
3645
3646         * dwarfwriter.c: Use _ to separate class name 
3647         components as gdb can't handle '.'. Represent reference variables
3648         as 'class <NAME>&'.
3649         
3650         * mini.h (MonoCompile): Add locals_min_stack_offset/locals_max_stack_offset.
3651
3652         * mini-amd64.c (mono_arch_allocate_vars): Save min/max stack offset.
3653         
3654         * mini-gc.c: New file, contains the SGEN GC related parts of the JIT.
3655
3656         * gc-test.cs: New file with GC stack marking tests.
3657         
3658         * mini-arm.c (mono_arch_output_basic_block): Fix int->float conversion of
3659         negative numbers for vfp.
3660
3661         * basic-float.cs: Add a test.
3662         
3663 Mon Apr 6 14:12:10 CEST 2009 Paolo Molaro <lupus@ximian.com>
3664
3665         * exceptions-x86.c, mini-x86.h: x86 support code for continuations.
3666
3667 Mon Apr 6 14:09:53 CEST 2009 Paolo Molaro <lupus@ximian.com>
3668
3669         * tasklets.h, tasklets.c, mini.h, mini.c, Makefile.am: arch-indep
3670         part of tasklet/continuation support.
3671
3672 2009-04-05  Zoltan Varga  <vargaz@gmail.com>
3673
3674         * mini-llvm.c (mono_llvm_emit_method): Move the handling of
3675         amd64 opcodes inside an ifdef.
3676
3677         * dwarfwriter.c: Emit inheritance information for classes, emit fields
3678         of complex types.
3679         
3680         * dwarfwriter.c (emit_type): Emit the class info for classes.
3681
3682 2009-04-04  Zoltan Varga  <vargaz@gmail.com>
3683
3684         * Makefile.am (AM_CXXFLAGS): Add GLIB_CFLAGS to this.
3685
3686         * mini-llvm-cpp.h: New header file for mini-llvm-cpp.cpp.
3687
3688         * mini-llvm.c: Remove unused fields from EmitContext, fix memory leaks.
3689
3690         * ssa.c (mono_ssa_compute): Fix some memory leaks.
3691
3692 2009-04-03  Zoltan Varga  <vargaz@gmail.com>
3693
3694         * mini.c mini-amd64.c method-to-ir.c: Use COMPILE_LLVM in a few more places.
3695
3696         * mini-llvm.c: Update comments.
3697
3698         * mini.h (COMPILE_LLVM): New macro.
3699
3700         * decompose.c (mono_decompose_opcode): Use the COMPILE_LLVM macro.
3701
3702         * ssa.c (mono_ssa_compute): Ditto.
3703         
3704         * unwind.c (mono_unwind_get_ops_from_fde): New helper function to extract
3705         the unwind ops from a DWARF FDE.
3706
3707         * mini-llvm.c: Implement generation of unwind info for LLVM compiled
3708         methods by extracting the dwarf unwind ops from the unwind info generated
3709         by LLVM.
3710         
3711         * mini-llvm.c (mono_llvm_emit_method): Enable support for non-IMT virtual
3712         calls.
3713
3714         * mini-amd64.c (mono_arch_get_vcall_slot): Handle more kinds of the SIB
3715         addressing modes.
3716
3717 2009-04-02  Zoltan Varga  <vargaz@gmail.com>
3718
3719         * Makefile.am (llvm_sources): Enable this.
3720
3721         * mini.c (mini_method_compile): Add support for compiling with LLVM, 
3722         failing back to the JIT if something cannot be handled.
3723
3724         * mini-amd64.c (mono_arch_emit_call): Emit the arguments more simple when
3725         compiling with LLVM.
3726
3727         * decompose.c (mono_decompose_opcode): Avoid decomposing some opcodes when
3728         compiling with LLVM.
3729
3730         * method-to-ir.c (mono_method_to_ir): Avoid decomposing SWITCH when 
3731         compiling with LLVM.
3732
3733         * mini-ops.h: Add a few opcodes needed by LLVM.
3734
3735         * dwarfwriter.c (mono_dwarf_writer_emit_method): Avoid crashes if the method
3736         has no unwind info.
3737
3738         * mini-llvm.c mini-llvm-cpp.cpp: New files containing the experimental llvm
3739         backend.
3740
3741         * mini-arm.c (mono_arch_output_basic_block): Fix the ARM_FPU_NONE build.
3742
3743         * mini-arm.h mini-arm.c cpu-arm.md: Finish VFP support.
3744
3745 2009-04-01  Mark Probst  <mark.probst@gmail.com>
3746
3747         * regalloc.h, mini-codegen.c: Make vassign members gint32 to fix
3748         ridiculously large methods.
3749
3750 2009-03-31  Martin Baulig  <martin@ximian.com>
3751
3752         * debug-debugger.c (debugger_remove_breakpoint): Call
3753         mono_debugger_remove_class_init_callback ().
3754
3755 2009-03-31  Zoltan Varga  <vargaz@gmail.com>
3756
3757         * aot-compiler.c (mono_compile_assembly): Call img_writer_emit_start ()
3758         right before emitting code, not at the start.
3759
3760         * mini.c (mono_postprocess_patches): Extract this into a separate function
3761         from mono_codegen ().
3762
3763         * ssa.c (mono_ssa_compute): Set ins->klass for every PHI node, handle
3764         byref types correctly.
3765
3766 2009-03-30  Zoltan Varga  <vargaz@gmail.com>
3767
3768         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix a crash introduced
3769         by the last change.
3770
3771 2009-03-29  Zoltan Varga  <vargaz@gmail.com>
3772
3773         * mini-amd64.c (mono_arch_output_basic_block): Emit a few nops before 
3774         indirect calls, this avoids problems where get_vcall_slot () would get
3775         confused by the native code for the instruction preceeding the call.
3776         (mono_arch_get_vcall_slot): Simplify this.
3777         (mono_arch_emit_imt_argument): Remove this, it is no longer needed.
3778
3779         * mini-ops.h: Fix the definitions of the OP_IA64 opcodes, since the local
3780         register allocator now seems to depend on them instead of the data in
3781         cpu-<ARCH>.md.
3782
3783         * mini.c (mini_method_compile): Throw the correct type of exception if
3784         mono_method_get_header () fails because of a loading error.
3785
3786 2009-03-28  Zoltan Varga  <vargaz@gmail.com>
3787
3788         * mini.c (mini_method_compile): Clear the loader error if the method
3789         header cannot be decoded.
3790
3791         * mini-trampolines.c (mono_magic_trampoline): Handle generic virtual 
3792         interface methods on proxies correctly.
3793
3794         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix handling of the
3795         this argument for vtype methods. Add precise liveness info for arguments.
3796
3797         * mini-codegen.c (mono_print_ins_index): Print the vreg of the
3798         LIVERANGE_START/END opcodes.
3799
3800         * method-to-ir.c (mono_spill_global_vars): Fix liverange calculation
3801         for arguments and values in registers.
3802
3803 2009-03-27  Zoltan Varga  <vargaz@gmail.com>
3804
3805         * method-to-ir.c (mono_method_to_ir): Disable tail calls for calls which
3806         return a valuetype. Fixes #487518.
3807
3808         * iltests.il: Add a test.
3809         
3810         * aot-compiler.c: Use mono_thread_create () to create helper threads.
3811
3812         * mini-trampolines.c (mono_delegate_trampoline): Handle static delegates
3813         closed over a null reference correctly.
3814
3815 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
3816
3817         * method-to-ir.c (mono_handle_global_vregs): Fix support for ternary ops.
3818
3819 2009-03-25  Mark Probst  <mark.probst@gmail.com>
3820
3821         * mini-codegen.c (mono_local_regalloc): Don't let sregs get
3822         allocated to the same registers as fixed sregs.
3823
3824 2009-03-24  Mark Probst  <mark.probst@gmail.com>
3825
3826         * mini-ops.h: New ternary ATOMIC_CAS ops replace the old
3827         ATOMIC_CAS_IMM ops.
3828
3829         * method-to-ir.c: Handle more cases for
3830         Interlocked.CompareExchange.
3831
3832         * cpu-x86.md, mini-x86.c, mini-x86.h, cpu-amd64.md, mini-amd64.c,
3833         mini-amd64.h, cpu-ppc.md, cpu-ppc64.md, mini-ppc.c, mini-ppc.h:
3834         ATOMIC_CAS implementations for x86, AMD64, PPC and PPC64.
3835
3836 2009-03-23  Zoltan Varga  <vargaz@gmail.com>
3837
3838         * aot-runtime.c (decode_method_ref): Fix a warning.
3839
3840         * unwind.c (mono_unwind_frame): Ditto.  
3841
3842 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
3843
3844         * aot-compiler.c (arch_emit_unbox_trampoline): Fix the binary writer support.
3845         (mono_compile_assembly): Enable the binary writer for full-aot as well.
3846
3847         * image-writer.c (do_reloc): Add support for the JUMP24 relocation,
3848         fix the handling of large values in the ALU_PC_G0_NC relocation.
3849
3850 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
3851
3852         * local-propagation.c method-to-ir.c local-propagation.c: Fix warnings.
3853
3854 2009-03-22  Mark Probst  <mark.probst@gmail.com>
3855
3856         * method-to-ir.c (mono_spill_global_vars): Support for ternary
3857         ops.
3858
3859 2009-03-22  Mark Probst  <mark.probst@gmail.com>
3860
3861         * method-to-ir.c: MINI_OP3 needs a comma.
3862
3863         * method-to-ir.c, mini.h, mini.c: Remove
3864         mono_init_op_sreg_counts ().
3865
3866 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
3867
3868         * mini-arm.c (mono_arch_output_basic_block): Fix aot support in
3869         OP_JMP.
3870         
3871         * mini-arm.c (mono_arch_build_imt_thunk): Disable the !fail_tramp
3872         assertion.
3873
3874         * mini-ops.h: Fix arguments of the MEMINDEX opcodes.
3875
3876         * mini-amd64.c (mono_arch_build_imt_thunk): Simplify the fail handling
3877         code somewhat.
3878
3879 2009-03-21  Mark Probst  <mark.probst@gmail.com>
3880
3881         * cfold.c, cprop.c, decompose.c, genmdesc.c, helpers.c, ir-emit.h,
3882         liveness.c, local-propagation.c, method-to-ir.c, mini-codegen.c,
3883         mini.c, mini.h, simd-intrinsics.c, ssa.c: Support for ternary IR
3884         operations.
3885
3886 2009-03-20  Zoltan Varga  <vargaz@gmail.com>
3887
3888         * driver.c: Change location of gc_wrapper.h.
3889
3890         * method-to-ir.c (mono_find_block_region): Handle try clauses nested
3891         inside finally clauses correctly. Fixes #485721.
3892
3893         * mini.c (mono_find_spvar_for_region): This needs to handle try regions
3894         after the change above.
3895
3896         * exceptions.cs: Add a test.
3897         
3898 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
3899
3900         * unwind.c (mono_unwind_ops_encode): Increase the size of the encode buffer.
3901
3902         * mini-amd64.c (mono_arch_emit_epilog): Remove the encoding of stack size
3903         into cfg->used_int_regs, it is not needed with the dwarf unwinder.
3904         (mono_arch_compute_omit_fp): Remove the emit_epilog () workaround.
3905
3906         * mini-amd64.c (mono_arch_compute_omit_fp): Add another check to avoid hitting
3907         the stack_alloc_size < (1 << 16) assertion in emit_prolog ().
3908
3909 2009-03-19  Sebastien Pouliot  <sebastien@ximian.com>
3910
3911         * method-to-ir.c: Allow CoreCLR to throw FieldAccessException. 
3912         Simplify logic for ensure_method_is_allowed_to_call_method. 
3913         Handle wrappers on callers.
3914
3915 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
3916
3917         * Makefile.am (fullaotcheck): Don't run the generics tests, some of
3918         them don't run yet.
3919
3920         * basic-simd.cs: Fix the names of some test methods.
3921
3922 2009-03-18  Geoff Norton  <gnorton@novell.com>
3923
3924         * mini.c: Only chain sigfpe if it wasn't generated in mangaed code.
3925
3926 2009-03-18  Zoltan Varga  <vargaz@gmail.com>
3927
3928         * dwarfwriter.c (token_handler): Fix a crash caused by the last change.
3929
3930 2009-03-17  Jb Evain  <jbevain@novell.com>
3931
3932         * driver.c: remove now uneeded call to mono_gc_base_init before
3933         mono_profiler_load.
3934
3935 2009-03-17  Jb Evain  <jbevain@novell.com>
3936
3937         * dwarfwriter.c (token_handler): handle more cases.
3938
3939 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com> 
3940
3941         * method-to-ir.c: Remove more dead code (that was required only
3942         because of method_is_safe). Fix compiler warnings.
3943
3944 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com>
3945
3946         * method-to-ir.c: Remove unneeded/useless method_is_safe
3947         http://lists.ximian.com/archives/public/mono-devel-list/2009-March/031404.html
3948
3949 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
3950
3951         * mini.c (mini_method_compile): Print the method been compiled with
3952         verbose level 1 instead of 3 as this helps a lot debugging JIT crashes
3953         for people not familiar with the runtime.
3954
3955 2009-03-17  Zoltan Varga  <vargaz@gmail.com>
3956
3957         * mini-exceptions.c (get_generic_info_from_stack_frame): Avoid returning
3958         a managed object which is later put into a GList. Return its class instead.
3959
3960         * mini.c (mono_allocate_stack_slots_full): Avoid sharing ref and non-ref
3961         stack slots when using sgen.
3962
3963 2009-03-16  Zoltan Varga  <vargaz@gmail.com>
3964
3965         * dwarfwriter.c (emit_line_number_info): Really fix the eglib build.
3966
3967 2009-03-14  Zoltan Varga  <vargaz@gmail.com>
3968
3969         * local-propagation.c (reg_is_softreg_no_fpstack): Use >= instead of
3970         > so it works on the first vreg as well.
3971
3972 2009-03-13  Zoltan Varga  <vargaz@gmail.com>
3973
3974         * dwarfwriter.c (emit_line_number_info): Disable an assert which seems to
3975         trigger randomly.
3976
3977         * aot-compiler.c: Get rid of xdebug_lock (), use the loader lock instead.
3978         
3979         * dwarfwriter.c (emit_line_number_info): Fix eglib build as eglib doesn't
3980         implement GArray.
3981
3982 2009-03-12  Zoltan Varga  <vargaz@gmail.com>
3983
3984         * dwarfwriter.c (emit_line_number_info): Optimize the computation of the
3985         native->IL offset mapping.
3986
3987 2009-03-11  Zoltan Varga  <vargaz@gmail.com>
3988
3989         * mini-amd64.c (mono_arch_output_basic_block): Fix % 1. Fixes #484323.
3990
3991         * basic.cs: Add a test.
3992
3993 2009-03-11  Mark Probst  <mark.probst@gmail.com>
3994
3995         * mini-x86.c (mono_arch_output_basic_block): Use different
3996         registers in case the ones we want to overwrite are used by the
3997         other operand.  Fixes regression in #480807.
3998
3999 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
4000
4001         * aot-compiler.c (mono_compile_assembly): Make the output less verbose.
4002
4003         * dwarfwriter.c (emit_line_number_info): The line number info for
4004         IL code was off by one. Fix that.
4005
4006         * mini-s390x.c: Fix support for vtypes whose addresses are passed on the
4007         stack.
4008
4009 2009-03-09  Mark Probst  <mark.probst@gmail.com>
4010
4011         Contributed under the terms of the MIT/X11 license by Steven
4012         Munroe <munroesj@us.ibm.com>.
4013
4014         * mini-ppc.c: Correct handling of OP_LOADI4_MEMINDEX for ppc64.
4015         Fixes #483462.
4016
4017 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
4018
4019         * dwarfwriter.c (token_handler): Decode method references in non-wrappers
4020         as well.
4021
4022 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
4023
4024         * method-to-ir.c (mono_method_to_ir): Check for type load exceptions in
4025         the delegate ctor handling code. Fixes #482638.
4026         
4027         * method-to-ir.c (mini_emit_memset): Fix the handling of size '3'. Fixes
4028         #481458.
4029
4030         * iltests.il.in: Add a test.
4031         
4032         * mini-darwin.c (mono_chain_signal): Remove this, it is already in
4033         mini-posix.c.
4034
4035 2009-03-05  Mark Probst  <mark.probst@gmail.com>
4036
4037         * mini-trampolines.c (mono_create_jump_trampoline): If the method
4038         is shared generic code, return the trampoline, even if the method
4039         has already been compiled.  Fixes #479763.
4040
4041         * mini.c, mini.h: New function
4042         mono_jit_find_compiled_method_with_jit_info() which is the same as
4043         mono_jit_find_compiled_method() but also returns the jit info.
4044
4045 2009-03-05  Mark Probst  <mark.probst@gmail.com>
4046
4047         * method-to-ir.c (mono_method_to_ir): Only force the vtable var
4048         for methods which actually have one.  For all other methods, make
4049         sure the this argument var is live the whole method.
4050
4051         * mini.c (mini_method_compile): Every shared method has a
4052         this/vtable/mrgctx info.  Fixes #480807.
4053
4054 2009-03-05  Mark Probst  <mark.probst@gmail.com>
4055
4056         * mini-ppc.c (mono_arch_build_imt_thunk): Add support for mixed
4057         generic/imt thunks where some entries branch through the vtable,
4058         while other entries branch directly.
4059
4060 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
4061
4062         * mini-darwin.c (mono_chain_signal): Define this to fix the build.
4063
4064         * mini-windows.c: Ditto.
4065         
4066         * mini.c (mono_jit_runtime_invoke): Speed up the invoking of parameterless
4067         ctors.
4068
4069 2009-03-04  Zoltan Varga  <vargaz@gmail.com>
4070
4071         * dwarfwriter.c (emit_line_number_info): Add some debug code to help track
4072         down an assert.
4073
4074 2009-03-04  Mark Probst  <mark.probst@gmail.com>
4075
4076         * method-to-ir.c: Don't inline methods that use JMP.  Fixes
4077         #481403.
4078
4079 2009-03-04  Mark Probst  <mark.probst@gmail.com>
4080
4081         * exceptions-x86.c: Include debug-mini.h - fixes build.
4082
4083 2009-03-04  Martin Baulig  <martin@ximian.com>
4084
4085         * debug-mini.c: Clean up the exception API and add documentation.
4086         (mono_debugger_handle_exception): New public method; this is
4087         called when throwing an exception or encountering an unhandled one.
4088         (mono_debugger_call_exception_handler): Formerly known as
4089         mono_debugger_handle_exception(); this is used to tell the
4090         debugger that we're about to invoke an exception handler.
4091
4092 2009-03-04  Martin Baulig  <martin@ximian.com>
4093
4094         * debug-mini.c (mono_debugger_runtime_invoke): Moved here from
4095         ../metadata/mono-debug-debugger.c; save and reset exception state.
4096
4097 2009-03-02  Martin Baulig  <martin@ximian.com>
4098
4099         * debug-mini.c: Moved the debugger exception handling here from
4100         ../metadata/mono-debug-debugger.c.
4101
4102         * debug-mini.h
4103         (MonoDebuggerExceptionAction): New exception typedef.
4104
4105         * debug-mini.c
4106         (MonoDebuggerThreadInfo): Added `MonoObject *last_exception'.
4107
4108         * exceptions-amd64.c
4109         (mono_amd64_throw_exception): Use the new debugger exception
4110         handling code.
4111
4112         * mini-exceptions.c
4113         (mono_handle_exception_internal): Don't call
4114         mono_debugger_unhandled_exception() here.
4115
4116 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
4117
4118         * mini.c aot-compiler.c: Update after the changes to 
4119         mono_marshal_get_runtime_invoke ().
4120
4121         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): 
4122         Virtual generic methods might not have method->slot set, work around
4123         that.
4124
4125         * generics.cs: Add a test.
4126
4127 2009-03-02  Geoff Norton  <gnorton@novell.com>
4128
4129         * mini.c:
4130         * driver.c: Allow signal chaining of SIGFPE as well.
4131
4132 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
4133
4134         * mini-trampolines.c (mono_generic_virtual_remoting_trampoline): Update
4135         this since it now receives the method not its generic context in the
4136         IMT reg.
4137
4138         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for mixed
4139         generic/imt thunks where some entries branch through the vtable, while
4140         other entries branch directly.
4141
4142         * mini-x86.c (mono_arch_build_imt_thunk): Ditto.
4143
4144         * method-to-ir.c (mono_method_to_ir): Enable fast virtual generic call 
4145         support for interface methods as well.
4146
4147         * mini-trampolines.c: Add support for virtual generic methods in interfaces
4148         using the normal IMT thunks.
4149
4150         generics.cs: Add new tests.
4151         
4152         * method-to-ir.c (mono_method_to_ir): Pass the method instead of
4153         the generic inst to the generic imt thunks. This fixes AOT support, 
4154         improves consistency with the normal IMT thunks, and makes it easier to
4155         add support for interface generic virtual methods later.
4156
4157         * mini-trampolines.c (mono_magic_trampoline): Ditto.    
4158         
4159 2009-02-28  Zoltan Varga  <vargaz@gmail.com>
4160
4161         * driver.c (mono_set_signal_chaining): New public API function to enable
4162         signal chaining on POSIX platforms.
4163
4164         * mini-posix.c mini.c: Applied a variant of a patch by Simon Rowland 
4165         (si@lindenlab.com) to implement signal chaining. The original patch was
4166         contributed under the MIT X/11 license:
4167         https://bugzilla.novell.com/show_bug.cgi?id=318894
4168
4169 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
4170
4171         * iltests.il.in (test_0_implicit_float_to_double_conversion): Disable this
4172         too until it can be made to run on amd64.
4173
4174 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
4175
4176         * mini-x86.c (mono_arch_get_this_arg_from_call): Avoid expensive calls
4177         to  get_generic_context_from_code () + get_call_info () if possible.
4178
4179 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
4180
4181         * mini-exceptions.c (mono_handle_native_sigsegv): Implement the
4182         suspend-on-sigsegv functionality.
4183
4184         * mini.c (mini_parse_debug_options): Add a new 'suspend-on-sigsegv' option
4185         to suspend when a native SIGSEGV is received. This is useful for debugging
4186         crashes which don't happen under gdb, since a live process contains more
4187         information than a core file.
4188
4189         * mini-exceptions.c (mono_print_thread_dump): Use 
4190         MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX instead of platform defines.
4191
4192         * mini-x86.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): New define.
4193
4194         * mini-amd64.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): Ditto.
4195         
4196         * basic-float.cs: Disable the tests which currently fail on amd64.
4197
4198         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass a non-null 
4199         value to mono_arch_patch_callsite () to fix crashes.
4200         
4201         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix a warning.
4202
4203 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
4204
4205         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Replace the
4206         nop code by patching the call address to point to the nullified class init
4207         trampoline, as the former does not seem to be safe on SMP machines.
4208
4209 2009-02-23  Mark Probst  <mark.probst@gmail.com>
4210
4211         * mini-ops.h: Fix the argument types for a few x86 opcodes where
4212         they were wrong.
4213
4214 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
4215
4216         * basic-float.cs basic-calls.cs: Fix warnings.
4217
4218 2009-02-22  Mark Probst  <mark.probst@gmail.com>
4219
4220         * tramp-ppc.c (mono_arch_create_trampoline_code): Store the
4221         correct frame pointer in the LMF.  Should fix #478394.
4222
4223 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
4224
4225         * Makefile.am (fullaotcheck): Copy Mono.Simd.dll as well.
4226
4227         * image-writer.c: Make the binary writer less verbose.
4228
4229 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
4230
4231         * method-to-ir.c (mono_method_to_ir): Don't assert if string ctors
4232         are called from runtime invoke wrappers.
4233
4234 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
4235
4236         * cpu-ppc.md (store_memindex): Increase the size of this.
4237
4238 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
4239
4240         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
4241
4242         * cpu-x86.md: Fix the sizes for long_conv_to_r_un and long_conv_to_r_un_2.
4243
4244         * mini-x86.c (mono_arch_output_basic_block): Use only 64bits of precision for
4245         OP_LCONV_TO_R_UN.
4246
4247         Last fix for of #467201.
4248
4249
4250 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
4251
4252         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
4253
4254         * cpu-x86.md: Fix the sizes for fcall(_reg,_membase), long_conv_to_r4_2
4255         and long_conv_to_r8_2:
4256
4257         Fixed part of #467201.
4258
4259 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
4260
4261         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
4262
4263         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of int to float
4264         conversion to 32 bits.
4265
4266         * cpu-x86.md: Increase the size of int_conv_to_r4.
4267
4268         * basic-float.cs: Add a test for this.
4269
4270         Fixed part of #467201.
4271
4272 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
4273
4274         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
4275
4276         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of long to double
4277         conversion to 64 bits.
4278
4279         * basic-float.cs: Add a test for this.
4280
4281         Fixed part of #467201.
4282
4283 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
4284
4285         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
4286
4287         * mini-x86.c (emit_move_return_value): Don't reduce precision of functions returning float.
4288         This behavior is compatible with MS.
4289
4290         * iltest.il.in: Add a test for this.
4291
4292         Fixed part of #467201.
4293
4294 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
4295
4296         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
4297
4298         * mini-x86.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_R4, it must
4299         change the precision of the value.
4300
4301         * cpu-x86.md: Define len for float_conv_to_r4.
4302
4303         * basic-float.cs: Add a test for this.
4304
4305         Fixed part of #467201.
4306
4307 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
4308
4309         * mini.c: Adjust locking order to the new semantics where the loader lock
4310         comes first.
4311
4312 2009-02-18  Rodrigo Kumpera  <rkumpera@novell.com>
4313
4314         * aot-runtime.c:
4315         * mini-amd64.c:
4316         * mini-arm.c:
4317         * mini-ia64.c:
4318         * mini-mips.c:
4319         * mini-ppc.c:
4320         * mini-sparc.c:
4321         * mini-trampolines.c:
4322         * mini-x86.c:
4323         * mini.c:
4324         * tramp-alpha.c:
4325         * tramp-amd64.c:
4326         * tramp-arm.c:
4327         * tramp-hppa.c:
4328         * tramp-ia64.c:
4329         * tramp-mips.c:
4330         * tramp-ppc.c:
4331         * tramp-s390.c:
4332         * tramp-s390x.c:
4333         * tramp-sparc.c:
4334         * tramp-x86.c: Use mono_domain_code_* functions instead of using MonoDomain::code_mp directly.
4335
4336 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
4337
4338         * mini-codegen.c (mono_local_regalloc): Remove a ! from if (!dest_sreg1)
4339         as it is incorrect.
4340
4341 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
4342
4343         * aot-compiler.c (add_generic_class): Only add rgctx invoke wrappers
4344         for cctors if needed.
4345
4346 2009-02-17  Mark Probst  <mark.probst@gmail.com>
4347
4348         * mini-ppc.c: Fix build on Darwin.
4349
4350 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
4351
4352         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Use 2 as the DWARF
4353         version instead of 3 as valgrind doesn't like version 3.
4354
4355         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
4356
4357         * aot-compiler.c (mono_aot_method_hash): New function to return a hash
4358         usable for hashing methods.
4359         (emit_extra_methods): Use the new hash to avoid putting every method in the
4360         same hash bucket.
4361
4362         * aot-runtime.c (find_extra_method_in_amodule): Use the new hash.
4363
4364         * aot-runtime.c (can_method_ref_match_method): New function to quickly check
4365         whenever a method ref could match a method.
4366         
4367         * aot-runtime.c (load_image): Revert the previous change, it causes an AOT
4368         test to fail.
4369         
4370         * aot-runtime.c (find_extra_method_in_amodule): Add a cache for decoded 
4371         methods refs.
4372
4373         * aot-runtime.c (load_image): Pass our basedir to mono_assembly_load.
4374
4375         * aot-compiler.c (emit_exception_debug_info): Bump the maximum size of
4376         the encoding buffer.
4377
4378         * method-to-ir.c (mono_method_check_inlining): Avoid calling 
4379         mono_method_get_header () on inflated methods as an optimization.
4380
4381 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
4382
4383         * ssa.c (fold_ins): Fix another crash if the instruction following the
4384         switch was optimized away.
4385
4386 2009-02-16  Mark Probst  <mark.probst@gmail.com>
4387
4388         Contributed under the terms of the MIT/X11 license by Steven
4389         Munroe <munroesj@us.ibm.com>.
4390
4391         * mini-ppc.c, mini-ppc.h: Implement TLS for PPC64.
4392
4393 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
4394
4395         * mini.c method-to-ir.c mini-trampolines.c aot-runtime.c: Remove locking
4396         around the mono_domain_alloc calls, it is now done by the functions
4397         themselves.
4398
4399         * aot-compiler.c (compile_method): Only add wrappers referenced by
4400         the method if compiling with full AOT.
4401         (mono_compile_assembly): Error out if --aot=full is specified on
4402         a platform where it is not supported.
4403
4404         * aot-compiler.c (emit_trampolines): Emit generic class init trampolines
4405         on ARM too.
4406
4407         * tramp-arm.c (mono_arch_create_generic_class_init_trampoline_full): Add
4408         AOT support.
4409
4410         * aot-runtime.c (load_named_code): Handle 
4411         mono_arm_throw_exception_by_token.
4412
4413         * mini-arm.h: Add declaration of mono_arm_throw_exception_by_token.
4414
4415         * image-writer.c (asm_writer_emit_pointer_unaligned): Make this really
4416         unaligned.
4417
4418         * Makefile.am (fullaotcheck): Exit if a test fails.
4419
4420         * aot-compiler.c (mono_compile_assembly): Use the ASM writer for full aot
4421         on ARM.
4422         (mono_compile_assembly): Handle the assembler failing.
4423
4424         * image-writer.c (asm_writer_emit_section_change): Handle ARM gas not
4425         accepting subsections of .bss.
4426
4427         * ssa.c (visit_inst): Fix a crash if the instruction following a switch
4428         was optimized away.
4429
4430         * aot-compiler.c: Remove some unused includes.
4431         
4432         * aot-compiler.c (MonoAotCompile): Remove some unused fields which are
4433         now in MonoImageWriter.
4434
4435         * mini-x86.c (mono_arch_get_vcall_slot): Handle yet another
4436         code sequence which matches a non-virtual call. Fixes #472654.
4437
4438 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
4439
4440         * aot-compiler.c: Use xdebug_lock ()/unlock () macros for locking in the
4441         xdebug code.
4442         
4443         * aot-compiler.c: Make the xdebug code not depend on the AOT compiler,
4444         use the image/dwarf writers directly.
4445
4446         * image-writer.c (struct _MonoImageWriter): Remove the unused 'image'
4447         field.
4448
4449         * aot-compiler.c (MonoAotCompile): Remove fields which are now in
4450         MonoDwarfWriter.
4451
4452         * image-writer.h: Fix some typos.
4453
4454         * dwarfwriter.h dwarfwriter.c: New files.
4455         
4456         * aot-compiler.c: Extract the DWARF info writing functionality into a 
4457         separate module.
4458
4459         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add a 'out_unwind_ops'
4460         argument to return unwind info.
4461
4462         * tramp-arm.c (mono_arch_create_trampoline_code_full): Ditto.
4463
4464         * aot-compiler.c: Emit unwind info for trampolines in full-aot mode.
4465         
4466         * aot-runtime.c (decode_method_ref): Add a case for 
4467         MONO_AOT_METHODREF_WRAPPER_NAME.
4468
4469         * mini.h: Add constants for the magic numbers used in encode_method_ref ()
4470         for AOT.
4471
4472         * aot-compiler.c (encode_method_ref): Use the new constants.
4473
4474         * aot-runtime.c (decode_method_ref): Ditto.
4475
4476         * aot-compiler.c (compile_method): For generic icalls, queue the wrapper to
4477         be compiled, not the icall itself.
4478
4479 2009-02-14  Zoltan Varga  <vargaz@gmail.com>
4480
4481         * aot-runtime.c (find_extra_method_in_amodule): Avoid decoding wrapper names
4482         using decode_method_ref ().
4483
4484         * method-to-ir.c (mini_emit_ldelema_1_ins): If the array index is a long,
4485         convert it to an in32. Fixes #475859.
4486
4487         * arrays.cs: Add a test.
4488
4489 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
4490
4491         * mini-s390x.c (mono_arch_output_basic_block): Fix the shift amounts in 
4492         OP_LCONV_TO_U2.
4493
4494         * basic-long.cs: Add a test.
4495
4496 2009-02-12  Mark Probst  <mark.probst@gmail.com>
4497
4498         * mini-x86.c, mini-x86.h: Very simple frame pointer removal.  We
4499         remove the frame pointer in leaf methods which don't receive any
4500         arguments, don't throw exceptions and don't do dynamic stack
4501         allocations.
4502
4503 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
4504
4505         * mini-amd64.c (mono_arch_build_imt_thunk): Fix size calculation after
4506         the fail_tramp changes. Hopefully fixes #475132.
4507
4508 2009-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
4509
4510         * method-to-ir.c (mono_emit_method_call_full): Use mono_metadata_signature_dup_mempool
4511         instead of mono_metadata_signature_dup_full.
4512
4513 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
4514
4515         * ssa.c (fold_ins): Use MONO_IS_JUMP_TABLE () and MONO_JUMP_TABLE_FROM_INS ()
4516         for processing jump tables. Fixes #473787.
4517
4518 2009-02-11  Mark Probst  <mark.probst@gmail.com>
4519
4520         * mini-generic-sharing.c: mini_method_get_context() just calls
4521         mono_method_get_context_general() now.
4522
4523         * mini.c, mini.h: Moved get_object_generic_inst(),
4524         construct_object_context_for_method() and
4525         mono_domain_lookup_shared_generic() to metadata/generic-sharing.c.
4526
4527 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
4528
4529         * branch-opts.c (mono_if_conversion): Handle the case where the merged 
4530         basic block fell through to its successor bblock without a branch. Fixes
4531         #474718.
4532
4533         * iltests.il.in: Add a test.
4534         
4535         * aot-compiler.c (encode_method_ref): Encode methods of array types.
4536         (can_encode_patch): We can now handle arrays of generic parameters and
4537         array methods.
4538
4539         * aot-runtime.c (decode_method_ref_2): Handle methods of array types.
4540
4541         * aot-compiler.c aot-runtime.c: Emit the size of specific trampolines into
4542         the AOT file to avoid some #ifdefs in aot-runtime.c
4543
4544         * mini.h: Bump AOT file format version.
4545
4546 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
4547
4548         * Makefile.am (fullaotcheck): Make this run the tests.
4549
4550         * aot-compiler.c: Make the printing of skipped methods runtime configurable.
4551
4552 2009-02-10  Mark Probst  <mark.probst@gmail.com>
4553
4554         * mini-x86.c (mono_arch_context_get_int_reg): Handle all registers
4555         individually.  Fixes #473482.
4556
4557 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
4558
4559         * mini-arm.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
4560
4561 2009-02-09  Jeffrey Stedfast  <fejj@novell.com>
4562
4563         * aot-compiler.c (arch_emit_plt_entry): Fixed to compile.
4564         (mono_compile_assembly): Hush compile warnings about
4565         uninitialized [tmp_]outfile_name variables in the !use_bin_writer
4566         code path.
4567
4568 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
4569
4570         * exceptions-arm.c (mono_arch_find_jit_info): Fix aot support.
4571
4572         * mini-arm.c: Checkin unwind related changes missing from an earlier commit.
4573
4574         * aot-compiler.c: Fix arm support.
4575
4576         * image-writer.c: Move the R_ARM constants to image-writer.h. Export a
4577         img_writer_emit_unset_mode () function.
4578
4579         * unwind.c (mono_unwind_get_dwarf_data_align): New helper function.
4580         (mono_unwind_get_dwarf_pc_reg): Ditto.
4581
4582         * aot-compiler.c (emit_dwarf_abbrev): Another large reorganization.
4583         Move almost all platform specific code to a set of arch_ functions, 
4584         and document them to ease porting.
4585         
4586         * aot-compiler.c (mono_xdebug_init): Fix xdebug support.
4587
4588         * image-writer.h image-writer.c: New files, extracted from aot-compiler.c.
4589
4590         * aot-compiler.c: Extract the image writing functionality into a separate
4591         module to reduce the size of this file.
4592
4593 2009-02-09  Geoff Norton  <gnorton@novell.com>
4594
4595         * mini-s390.c: Fix the signature of emit_sig_cookie.
4596
4597 2009-02-09  Zoltan Varga  <vargaz@gmail.com>
4598
4599         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_IMAGE.
4600
4601         * aot-runtime.c (is_shared_got_patch): Ditto.
4602
4603         * aot-runtime.c (load_named_code): Cope with the fact that 
4604         decode_got_entry () won't decode the patch fully if its corresponding got
4605         entry is already filled.
4606         
4607         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): 
4608         Initialize *ji.
4609         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
4610
4611         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code'
4612         as the moving pointer instead of 'buf' for consistency with the rest of the
4613         codebase.
4614         (mono_arch_create_monitor_exit_trampoline): Ditto.
4615
4616         * aot-compiler.c (emit_trampolines): Add throw_pending_exception/
4617         generic_class_init trampolines.
4618         (add_generic_class): Extract some code from add_generic_instances () into a
4619         separate function so it can be called from other places too.
4620         (compile_method): Call add_generic_class () for the classes of inflated methods
4621         referenced by the method.
4622         (can_encode_patch): Allow references to generic parameters.
4623
4624         * aot-runtime.c: Add support the patches required by the new trampolines.
4625         
4626         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Add full-aot
4627         support.
4628
4629         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline_full): Add
4630         full-aot support.
4631
4632         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Rename
4633         this from get_throw_pending_exception, make the signature full aot compatible.
4634
4635         * Makefile.am (fullaotcheck): New target to run full-aot tests.
4636
4637         * method-to-ir.c (inline_method): Save/Restore cfg->ret_var_set too.
4638
4639         * exceptions.cs: Add a test.
4640
4641 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
4642
4643         * unwind.c (mono_unwind_frame): Eliminate the data_align_factor argument,
4644         use the DWARF_DATA_ALIGN constant instead.
4645
4646         * exception-<ARCH>.c: Update after the above change.
4647
4648         * exceptions-arm.c (mono_arch_find_jit_info): Transition this to use the
4649         dwarf unwinder.
4650
4651         * mini-arm.c: Enable the dwarf unwinder.
4652
4653         * mini-trampolines.c (mono_magic_trampoline): Use mono_class_get_vtable_entry ()
4654         instead of mono_class_setup_vtable ().
4655
4656 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
4657
4658         * exceptions-x86.c (mono_arch_find_jit_info): Transition this to use the
4659         dwarf unwinder.
4660
4661         * mini-x86.h: Enable the dwarf unwinder.
4662
4663 2009-02-06  Raja R Harinath  <harinath@hurrynot.org>
4664
4665         Fix mcs/tests/test-7.cs
4666         * mini-amd64.c (mono_arch_allocate_vars): Revert change from
4667         2009-02-03.
4668
4669 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
4670
4671         * mini.c (print_jit_stats): Remove some unused statistics.
4672
4673 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
4674
4675         * aot-compiler.c (emit_klass_info): Update after MonoClass changes.
4676
4677 2009-02-05  Mark Probst  <mark.probst@gmail.com>
4678
4679         * jit-icalls.c (mono_helper_compile_generic_method): Don't inflate
4680         the method we get from mono_object_get_virtual_method() because
4681         that function does it properly, now.
4682
4683 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
4684
4685         * unwind.c (mono_unwind_ops_encode): Handle offsets greater than 32 between
4686         opcodes. Fixes #472775.
4687
4688 2009-02-05  Mark Probst  <mark.probst@gmail.com>
4689
4690         * mini-exceptions.c (ves_icall_get_frame_info): Account for the
4691         fact that mono_find_jit_info() sometimes returns the context
4692         corresponding to the jit info in new_ctx.  Fixes #472600.
4693
4694 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
4695
4696         * method-to-ir.c mini-hppa.c mini.c trace.c mini-s390x.c aot-compiler.c
4697         mini-s390.c: Use mono_class_enum_basetype () instead of accessing
4698         klass->enum_basetype directly.
4699
4700         * aot-compiler.c (emit_class_dwarf_info): Add support for all possible
4701         enum subtypes.
4702
4703         * unwind.c: Avoid 0 sized arrays.
4704
4705 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
4706
4707         * mini-exceptions.c (mono_setup_altstack): Use a more reasonable altstack
4708         size on systems with 64k pages. Fixes #471389.
4709
4710 2009-02-04  Mark Probst  <mark.probst@gmail.com>
4711
4712         Contributed under the terms of the MIT/X11 license by Steven
4713         Munroe <munroesj@us.ibm.com>.
4714
4715         * mini-ppc.c (mono_arch_output_basic_block): Generate better code
4716         for LOADI4_MEMBASE.  Use addi instead of addic if it's not
4717         necessary.
4718
4719 2009-02-04  Mark Probst  <mark.probst@gmail.com>
4720
4721         Contributed under the terms of the MIT/X11 license by Steven
4722         Munroe <munroesj@us.ibm.com>.
4723
4724         * exceptions-ppc.c (mono_arch_get_restore_context): Code size
4725         comparison fix.
4726
4727         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline):
4728         The trampoline can be longer on PPC64.
4729
4730 2009-02-04  Mark Probst  <mark.probst@gmail.com>
4731
4732         Contributed under the terms of the MIT/X11 license by Steven
4733         Munroe <munroesj@us.ibm.com>.
4734
4735         * mini-ppc.c: Compiler warning fixes and trivial code
4736         simplifications.
4737
4738 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
4739
4740         * method-to-ir.c (mono_spill_global_vars): Fix problems caused by reading
4741         ins->dreg which could be a hardware register, not a vreg.
4742
4743         * aot-compiler.c (emit_method_dwarf_info): Ditto.
4744         
4745         * mini.h (MonoCompile): Remove vreg_to_var_num array, it is no longer used.
4746         (struct MonoMethodVar): Add a vreg field, holding the vreg of variable.
4747
4748         * mini.c (mono_compile_create_var_for_vreg): Set var->vreg.
4749         
4750         * mini-amd64.c (mono_arch_output_basic_block): Avoid reading cfg->varinfo[..]
4751         ->dreg, that is not the vreg we are looking for.
4752
4753         * mini-amd64.h mini-x86.h: Enable MONO_ARCH_LIVENESS_OPS again.
4754
4755         * mini-x86.c (mono_arch_output_basic_block): Add support for LIVERANGE_START/
4756         LIVERANGE_END.
4757
4758         * method-to-ir.c (mono_spill_global_vars): Add an assert to help track down
4759         strange crashes.
4760
4761 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
4762
4763         * mini-x86.c (mono_arch_emit_prolog): Emit unwind info.
4764
4765         * aot-compiler.c (emit_line_number_info): Fix line number emission when
4766         the line diff is 0.
4767
4768         * aot-compiler.c: Add xdebug support on x86.
4769
4770         * unwind.c: Add x86 support.
4771         
4772         * aot-compiler.c (emit_exception_debug_info): Control the emission of
4773         unwind info using a new MONO_ARCH_HAVE_XP_UNWIND define.
4774
4775         * mini.c (mini_method_compile): Ditto.
4776         
4777         * mini-amd64.c (mono_arch_allocate_vars): Avoid setting cfg->ret->dreg to
4778         the variable index.
4779
4780         * aot-compiler.c: Add emit_push_section ()/emit_pop_section () helper functions
4781         which mimic .push_section/.pop_section in GAS.
4782         
4783         * aot-compiler.c: Emit precise live range information for variables.
4784
4785         * mini-amd64.c (mono_arch_output_basic_block): Add OP_LIVERANGE_START/END.
4786
4787         * method-to-ir.c (mono_spill_global_vars): Compute the instructions marking
4788         the live ranges of variables, and emit OP_LIVERANGE_START/END opcodes for
4789         them.
4790
4791         * mini-ops.h: Add OP_LIVERANGE_START/END opcodes to mark
4792         the live ranges of variables.
4793
4794         * mini.h (struct MonoMethodVar): Add two fields containing the live range
4795         of the variable in terms of native offsets.
4796
4797 2009-02-03  Rodrigo Kumpera  <rkumpera@novell.com>
4798
4799         * arrays.cs: Test for Get/SetValue of array with negate lower bounds.
4800         
4801 2009-02-02  Mark Probst  <mark.probst@gmail.com>
4802
4803         Contributed under the terms of the MIT/X11 license by Steven
4804         Munroe <munroesj@us.ibm.com>.
4805
4806         * exceptions-ppc.c (restore_regs_from_context): Correct operand
4807         order (offset then base reg) for ppc_load_multiple_regs.
4808         (emit_save_saved_regs) Correct operand order for
4809         ppc_store_multiple_regs.
4810         (mono_arch_get_call_filter): Correct operand order for
4811         ppc_load_multiple_regs.
4812
4813         * mini-ppc.c (emit_memcpy): Fix operand order for
4814         ppc_load_reg_update and ppc_store_reg_update.
4815         (mono_arch_output_basic_block): Correct operand order for ppc_lha.
4816         (mono_arch_emit_epilog): Correct operand order for
4817         ppc_load_multiple_regs.
4818
4819         * tramp-ppc.c (mono_arch_create_trampoline_code): Correct operand
4820         order for ppc_store_multiple_regs and ppc_load_multiple_regs.
4821
4822 2009-02-02  Mark Probst  <mark.probst@gmail.com>
4823
4824         * cpu-ppc64.md: Fixed storer4_memindex length.
4825
4826 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
4827
4828         * aot-compiler.c (emit_line_number_info): Optimize the size of the emitted
4829         line number info.
4830         
4831         * aot-compiler.c (emit_line_number_info): Optimize this.
4832
4833 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
4834
4835         * aot-compiler.c: Disassemble tokens in the IL disassembly.
4836         
4837         * aot-compiler.c: Add debug info for methods without debug info by
4838         emitting an IL file and having the line number info referencing that file.
4839
4840         * aot-compiler.c: Optimize the size of the generated line number info.
4841
4842         * aot-compiler.c: Emit line number info in xdebug mode.
4843
4844         * aot-compiler.c (mono_save_xdebug_info): Receive a MonoCompile instead of a
4845         million arguments.
4846
4847 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
4848
4849         * aot-compiler.c (emit_method_dwarf_info): Emit names for local variables.
4850
4851         * driver.c (mono_main): Enable debugging support automatically if XDEBUG
4852         is used.
4853
4854 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
4855
4856         * basic-calls.cs: Test for the weird crash found on arm.
4857         
4858 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
4859
4860         * cpu-arm.md: Increase the size of storer8_membase_reg and
4861         loadr8_membase_reg to 24 bytes to accomodate the extra add.
4862
4863         * mini-arm.c (mono_arch_output_basic_block): Under FPA, when emitting
4864         OP_STORER8_MEMBASE_REG and OP_LOADR8_MEMBASE_REG, add the original
4865         reg to LR otherwise we'll be loading/storing from just the offset.
4866
4867 2009-01-30  Miguel de Icaza  <miguel@novell.com>
4868
4869         Question: if we are storing gint32's inside the "*native_offset",
4870         should we change the signature to "gint32 *native_offset" to
4871         ensure that we do not have type definition problems?
4872         
4873         * mini-exceptions.c (ves_icall_get_frame_info): Cast the gint32 to
4874         an int * as this is what the other function expects, causes
4875         problems with Freescale's compiler that defined int32_t to be a
4876         long and makes int incompatible 
4877
4878 2009-01-30  Miguel de Icaza  <miguel@novell.com>
4879
4880         * Rename generic-sharing.c to mini-generic-sharing.c to avoid the
4881         filename conflict with bjam.
4882
4883 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
4884
4885         * cpu-arm.md: Increase the size of storer8_membase_reg to 20 bytes
4886         as it might use decomposed ops.
4887
4888 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
4889
4890         * jit-icalls.c (mono_imul_ovf): Fix one of the literals.
4891
4892         * mini.c (mini_init): Emulate mul.ovf opcodes if MONO_ARCH_EMULATE_MUL_OVF
4893         is defined.
4894
4895         * mini-arm.h (MONO_ARCH_EMULATE_MUL_OVF): New define.
4896
4897         * mini-arm.c (mono_arch_build_imt_thunk): Rewrite this to allow large vtable
4898         offsets.
4899
4900         * mini-arm.c (mono_arch_context_get_int_reg): Adapt this to the "clever"
4901         way registers are stored in MonoContext on arm.
4902
4903         * unwind.c: Rewrite the handling of the cached_info array to use hazard pointers
4904         instead of locking so mono_get_cached_unwind_info () becomes signal safe.
4905
4906         * mini.c (mini_init): Emuate OP_FCONV_TO_I when using soft float.
4907
4908         * mini-arm.c (emit_load_volatile_arguments): Avoid an unneccesary assert.
4909
4910         * mini.c (mini_init): Register mono_isfinite.
4911
4912         * jit-icalls.c (mono_isfinite): New jit icall.
4913
4914         * method-to-ir.c (mono_decompose_soft_float): Add support for OP_CKFINITE.
4915         
4916         * exceptions-arm.c (mono_arch_find_jit_info): When unwinding using the LMF,
4917         set esp to ARMREG_FP instead of R12, since R12 stores the value of sp for
4918         the parent frame.
4919
4920 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
4921
4922         * exceptions-arm.c (mono_arch_find_jit_info): The frame layout on arm have
4923         separate frame and stack pointers, so we must use FP to find the register
4924         spill area.
4925         The FP reg is retrieved from the MonoContext::regs array.
4926
4927 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
4928
4929         * mini-arm.c (mono_arch_output_basic_block): Emit two cond ops for OP_FBGE
4930         as FPA requires it.
4931
4932 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
4933
4934         * mini-arm.c (mono_arch_emit_setret): Emit OP_FMOVE for methods that
4935         return R4 and R8 when not running under softfloat.
4936
4937         Fixes basic-calls.exe
4938
4939 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
4940
4941         * mini-arm.c: Implement some overflow opcodes.
4942
4943 2009-01-29  Miguel de Icaza  <miguel@novell.com>
4944
4945         * ssa.c: handle another alloca.h
4946
4947         * mini-exceptions.c (mono_handle_native_sigsegv): Do not use
4948         PLATFORM_WIN32 for detecting if we have sigaction.   Instead use
4949         MONO_ARCH_USE_SIGACTION. 
4950
4951         * aot-runtime.c, mini-exceptions.c: Replace platform define with
4952         capability defines.
4953
4954         * method-to-ir.c (mono_method_to_ir): Type cast fix on some platforms.
4955
4956         * mini-ppc.h (MONO_ARCH_USE_SIGACTION): Do not define this for all
4957         PPC targets as sigaction does not exist on all platforms, define
4958         this on a per-platform basis.
4959
4960         Instead of erroring out if the platform is not defined, include
4961         mini-ppc-os.h, and expect that the OS specific setting provides
4962         the required information.   
4963
4964 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
4965
4966         * aot-compiler.c: Fix --enable-minimal=aot.
4967
4968 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
4969
4970         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Fix the
4971         previous change.
4972
4973 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
4974
4975         * exceptions-arm.c: Fix warnings.
4976
4977         * tramp-arm.c aot-compiler.c unwind.h unwind.c: Implement xdebug support for
4978         ARM.
4979
4980         * mini-x86.c: Fix --enable-minimal=jit build.
4981
4982         * mini.c: Really fix --enable-minimal=jit build.
4983         
4984         * mini.c (construct_object_context_for_method): Move this outside
4985         the DISABLE_JIT block to fix the --enable-minimal=jit build.
4986
4987         "Backported" of r124984 from 2.0 branch.
4988         
4989         * aot-compiler.c aot-runtime.c: Add full-aot support delegate BeginInvoke/EndInvoke.
4990
4991         "Backport" of r124977 + r124978 from 2.0 branch.
4992         
4993         * exceptions-arm.c (mono_arm_throw_exception_by_token): New helper function
4994         to avoid calling mono_exception_from_token () from the throw trampoline.
4995         (mono_arch_get_throw_exception_generic): call throw_exception_by_token
4996         for throwing corlib exceptions, this fixes full-aot support for corlib
4997         exceptions.
4998
4999         * aot-compiler.c (compile_method): Make a copy of cfg->locals to fix the build.
5000
5001 2009-01-29  Miguel de Icaza  <miguel@novell.com>
5002
5003         * mini-darwin.c, mini-windows.c, mini-posix.c: Commit the first
5004         part of the changes to split the code in mini into operating
5005         system specific files.
5006
5007         This patch was done by copying mini.c to the respective files to
5008         preserve SVN history.
5009
5010 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
5011
5012         * aot-compiler.c (emit_method_dwarf_info): Add minimal support for locals.
5013
5014 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
5015
5016         * method-to-ir.c (mono_method_to_ir): Avoid generic sharing for calls made to
5017         remoting-invoke-with-check wrappers of shared methods.
5018
5019         * mini.c (print_jit_stats): Print out major gc count/time for libgc too.
5020
5021 2009-01-27  Mark Probst  <mark.probst@gmail.com>
5022
5023         * method-to-ir.c (emit_stloc_ir): Only apply the reg-reg move
5024         optimization if the top of stack is the last instruction in the
5025         bblock.  Otherwise it might have been used after its definition.
5026         Fixes #469742.
5027
5028 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
5029
5030         * mini-trampolines.c (mono_magic_trampoline): Print out the caller
5031         method as well when get_vcall_slot () fails to match a code sequence.
5032
5033         * mini-arm.c: Fix the android build, which doesn't have
5034         __aeabi_read_tp.
5035
5036 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
5037
5038         * mini-s390x.c: Remove a stray declaration of emit_sig_cookie () to fix
5039         the s390x build.
5040
5041 2009-01-26  Rodrigo Kumpera  <rkumpera@novell.com>
5042
5043         * unwind.c (mono_unwind_cleanup): Don't crash if cached_info is NULL.
5044
5045 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
5046
5047         * mini.c (mini_method_compile): Save the unwind info generated by the JIT
5048         and put its id into jinfo->used_regs. This is only used on amd64,
5049         which is currently the only platform generating unwind info.
5050
5051         * exceptions-amd64.c: Instead of unwinding based on a register mask, use
5052         the dwarf unwinder. This is required to correctly handle async exceptions
5053         like thread abort and stack overflows, which can happen while a method
5054         is in the middle of its prolog or epilog.
5055         
5056         * aot-runtime.c (mono_aot_get_unwind_info): New helper function to obtain
5057         the unwind info belonging to an AOTed method.
5058
5059         * aot-compiler.c aot-runtime.c: Save/Load the unwind info emitted by the JIT
5060         into cfg->unwind_ops.
5061         
5062         * unwind.c (mono_unwind_frame): Use <= instead of < for the loop exit check.
5063
5064         * mini.c (mini_init): Call mono_unwind_init ().
5065         (mini_cleanup): Call mono_unwind_cleanup ().
5066
5067         * unwind.c: Add functions for managing a set of unwind info entries, allowing
5068         unwind info to be shared between methods.
5069
5070         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info for the registers
5071         saved in the LMF.
5072
5073         * exceptions-amd64.c (mono_arch_exceptions_init): Call 
5074         get_throw_pending_exception () to avoid initialization races.
5075
5076         * mini-exceptions.c (mono_exceptions_init): Call an arch specific
5077         mono_arch_exceptions_init () function.
5078
5079         * mini.h (MONO_INST_NEW): Remove duplicate setting of cil_code.
5080
5081 2009-01-25  Zoltan Varga  <vargaz@gmail.com>
5082
5083         * mini.c (mono_get_domain_intrinsic): New helper function.
5084         (mono_get_thread_intrinsic): Ditto.
5085
5086         * mini-arm.c mini-ia64.c: Use the new helper functions.
5087         
5088         * method-to-ir.c (mono_method_to_ir): Fix the comment for
5089         the last constrained_call change, since it is needed in the non-AOT
5090         case as well.
5091
5092         * mini-arm.c: Implement OP_TLS_GET on arm eabi linux.
5093         
5094         * mini-arm.c (mono_arch_emit_prolog): Add an inlined version of 
5095         mono_get_lmf_addr () on arm eabi linux.
5096
5097 2009-01-24  Zoltan Varga  <vargaz@gmail.com>
5098
5099         * mini-amd64.c (mono_arch_get_vcall_slot): Handle yet another
5100         code sequence which matches a non-virtual call.
5101
5102 2009-01-23  Mark Probst  <mark.probst@gmail.com>
5103
5104         * mini-ppc.c (mono_arch_context_get_int_reg): Allow access to the
5105         stack pointer (r1).
5106
5107 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
5108
5109         * aot-compiler.c aot-runtime.c: Treat delegate-invoke wrappers similarly to
5110         runtime-invoke wrappers, since they are also shared based on signature.
5111
5112 2009-01-22  Mark Probst  <mark.probst@gmail.com>
5113
5114         * mini-exceptions.c (ves_icall_get_frame_info): Fetch the generic
5115         info from the (correct) context.
5116
5117 2009-01-22  Zoltan Varga  <vargaz@gmail.com>
5118
5119         * unwind.c (mono_unwind_frame): Remove a stray g_free ().
5120         
5121         * unwind.c (mono_unwind_frame): New function to unwind through a frame
5122         using dwarf unwinding info. Not yet used.
5123
5124         * mini.c (mini_init): When using xdebug, disable freeing of domains.
5125
5126 2009-01-21  Mark Probst  <mark.probst@gmail.com>
5127
5128         * mini-ppc.c (mono_arch_delegate_invoke_impl): Return function
5129         descriptors.
5130
5131         * mini-trampolines.c (mono_delegate_trampoline): Remove the PPC64
5132         special case and handle mono_arch_delegate_invoke_impl() returning
5133         function descriptors.
5134
5135         * tramp-ppc.c (mono_arch_create_trampoline_code): Delegate
5136         trampolines return function descriptors, too.
5137
5138 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
5139
5140         * method-to-ir.c (handle_alloc): Avoid generic instances in the
5141         out_of_line optimization.
5142
5143 2009-01-21  Martin Baulig  <martin@ximian.com>
5144
5145         * mini.h
5146         (MonoCompile): Added `disable_deadce_vars' to disable removing
5147         unused variables.
5148
5149         * mini.c
5150         (mini_method_compile): Set `cfg->disable_deadce_vars' when running
5151         inside the debugger.
5152
5153         * liveness.c (mono_analyze_liveness): Don't remove any unused
5154         variables if `cfg->disable_deadce_vars' is set.
5155
5156 2009-01-21  Mark Probst  <mark.probst@gmail.com>
5157
5158         * method-to-ir.c: Only apply exception constructor optimization if
5159         the the method actually belongs to an exception class.  Fixes
5160         #467456.
5161
5162 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
5163
5164         * mini-trampolines.c (mono_delegate_trampoline): Put back the previous
5165         change inside a #ifdef __mono_ppc64__.
5166
5167         * aot-compiler.c (compile_method): Remove the previous limitation.
5168
5169         * method-to-ir.c (method-to-ir.c): Add support for the constrained prefix
5170         on type variables in AOTed code.
5171         
5172         * aot-compiler.c (compile_method): Skip generic methods having type 
5173         constraints on their generic parameters.
5174
5175         * aot-compiler.c (compile_method): Check for methods which cannot be
5176         encoded inside RGCTX_FETCH patches as well.
5177
5178         * mini-exceptions.c (mono_print_thread_dump): Fix the windows
5179         build.
5180
5181 2009-01-20  Mark Probst  <mark.probst@gmail.com>
5182
5183         * method-to-ir.c: Force the vtable variable in shared generic code
5184         for the case that they might show up on a stack trace where they
5185         are needed.
5186
5187         * mini-exceptions.c: Save and use generic sharing info as well as
5188         IP in stack traces to resolve shared generic instantiations.
5189
5190 2009-01-20  Zoltan Varga  <vargaz@gmail.com>
5191
5192         * mini-trampolines.c (mono_delegate_trampoline): Revert the change which
5193         added a mono_get_addr_from_ftnptr () as it breaks the ia64 build.
5194
5195 2009-01-20  Mark Probst  <mark.probst@gmail.com>
5196
5197         * method-to-ir.c: Do generic sharing for array constructors.
5198
5199 2009-01-20  Rodrigo Kumpera  <rkumpera@novell.com>
5200
5201         * mini-exceptions.c (mono_print_thread_dump): Add information
5202         about the thread state using wapi_current_thread_desc.
5203
5204 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
5205
5206         * basic-simd.cs: Tests for the new constructors. 
5207
5208 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
5209
5210         * mini-ops.h: Added OP_EXPAND_*
5211
5212         * cpu-x86.md: Same.
5213
5214         * mini-x86.c (mono_arch_output_basic_block): Same.
5215         
5216         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for single element constructors.
5217
5218 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
5219
5220         * iltests.il.in: Add a test for #467385.
5221
5222 2009-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
5223
5224         * mini.c (mini_thread_cleanup): Don't cleanup TLS storage if the
5225         thread been cleaned up is not the same currently in execution.
5226
5227         Fixes appdomain-unload crashes on windows, osx and linux variants
5228         without the __thread keyword.
5229
5230 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
5231
5232         * mini-arm.c (mono_arch_flush_icache): Applied patch from Koushik Dutta
5233         (koush@koushikdutta.com). Implement this for android.
5234
5235         * helpers.c (mono_disassemble_code): Avoid assembler errors if the id
5236         begins with a digit.
5237
5238         * method-to-ir.c: Call mono_gc_get_write_barrier () instead of
5239         mono_marshal_get_write_barrier ().
5240
5241 2009-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
5242
5243         * decompose.c (mono_decompose_vtype_opts): Fix the decomposition
5244         of OP_VCALL_* ops for 8 bytes vtypes on 32 bits archs and platorms
5245         that pass them on a register pair.
5246
5247         This affects windows, OSX and FreeBSD. The mono/tests/handleref.exe
5248         test was crashing due to that.
5249
5250 Fri Jan 16 15:21:21 CET 2009 Paolo Molaro <lupus@ximian.com>
5251
5252         * exceptions-ppc.c: tweaks from malc (OV-Soft) to fix the size of the
5253         trampoline code. Include ucontext.h only if available.
5254
5255 2009-01-15  Mark Probst  <mark.probst@gmail.com>
5256
5257         * mini.c: mono_domain_lookup_shared_generic() takes an open method
5258         and doesn't check whether it's sharable, like it was before
5259         removing the shared generics hash.  This brings IronPython
5260         performance back to what it was before that change.
5261
5262 2009-01-14  Mark Probst  <mark.probst@gmail.com>
5263
5264         * method-to-ir.c: Handle delegate invocation optimization earlier,
5265         otherwise it would be handled (much more slowly) by the
5266         final/sealed optimization.
5267
5268 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
5269
5270         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes when the current thread or
5271         domain is not set. Fixes #465864.
5272
5273 2009-01-12  Mark Probst  <mark.probst@gmail.com>
5274
5275         * method-to-ir.c: Don't stop sharing of generic methods with catch
5276         clauses - we already handle those.
5277
5278 2009-01-12  Mark Probst  <mark.probst@gmail.com>
5279
5280         * mini.c, mini.h: lookup_generic_method() is now
5281         mono_domain_lookup_shared_generic() and uses the jit_code_hash,
5282         making the shared_generics_hash obsolete.
5283
5284 2009-01-12  Mark Probst  <mark.probst@gmail.com>
5285
5286         * mini-ppc.c, exceptions-ppc.c, cpu-ppc.md, cpu-ppc64.md: Don't
5287         use the red zone.  Make room on the stack first and then use it,
5288         not the other way around.
5289
5290 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
5291
5292         * mini.c (mini_init): Call mono_xdebug_init ().
5293
5294         * aot-compiler.c (mono_xdebug_init): Make this non-static.
5295
5296 2009-01-11  Zoltan Varga  <vargaz@gmail.com>
5297
5298         * TestDriver.cs: Add an --iter argument to run tests multiple times.
5299
5300         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Emit debug info for
5301         trampolines.
5302
5303         * aot-compiler.c (mono_save_trampoline_xdebug_info): New function to emit
5304         debug+unwind info for trampolines.
5305
5306         * mini.c (mono_create_unwind_op): New helper function.
5307
5308         * unwind.h: Add macros for emitting unwind ops without a MonoCompile.
5309
5310 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
5311
5312         * aot-compiler.c: Fix the build.
5313
5314 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
5315
5316         * Makefile.am: Update dtrace-prelink.sh location.
5317
5318 2009-01-08  Zoltan Varga  <vargaz@gmail.com>
5319
5320         * method-to-ir.c (mono_method_to_ir): Fix the check for the mscorlib ldstr 
5321         optimization. Fixes #464520.
5322
5323 2009-01-07  Bill Holmes  <billholmes54@gmail.com>
5324
5325         * mini-amd64.c : Adding code to save/restore non-volatile registers
5326            on Winx64.
5327
5328         * exceptions-amd64.c : Adding code to save/restore non-volatile 
5329           registers on Winx64.
5330
5331         Contributed under MIT/X11 license.
5332
5333 2009-01-07  Zoltan Varga  <vargaz@gmail.com>
5334
5335         * mini-arm.c (mono_arch_flush_icache): Use __GNUC_PREREQ instead of checking
5336         __GNUC_MINOR__ which can break when the major version changes.
5337
5338 2009-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
5339
5340         * basic-simd.cs: Add tests for usage of the sizeof opcode.
5341
5342 2009-01-07  Geoff Norton  <gnorton@novell.com>
5343
5344         * helpers.c:  Allow mono -v -v -v to work on darwin.
5345
5346 2009-01-05  Bill Holmes  <billholmes54@gmail.com>
5347
5348         * mini-amd64.c (mono_arch_get_vcall_slot) : Handle an additional instruction
5349           pattern. 
5350
5351         Contributed under MIT/X11 license.
5352
5353 2009-01-05  Zoltan Varga  <vargaz@gmail.com>
5354
5355         * mini.c (mono_allocate_stack_slots_full2): Use mono_class_from_mono_type
5356         instead of directly accessing type->data.klass. Fixes #462016.
5357         (mono_allocate_stack_slots_full): Ditto.
5358
5359         * mini-arm.c (mono_arch_flush_icache): Applied patch from Riku Voipio 
5360         <novell@kos.to>. Fix cache flush on kernels without OLDABI compat option.
5361
5362         * aot-compiler.c (emit_plt): Fix ARM build.
5363
5364 2009-01-04  Zoltan Varga  <vargaz@gmail.com>
5365
5366         * branch-opts.c (mono_if_conversion): Optimize this using ins->prev.
5367         
5368         * branch-opts.c (mono_if_conversion): Fix an assert introduced by the last
5369         change.
5370
5371         * branch-opts.c (mono_if_conversion): Use branch->inst_true_bb/inst_false_bb
5372         instead of bblock->out_bb [0]/[1], the two might not be the same. Fixes
5373         #463357.
5374
5375         * iltests.il.in: Add a regression test.
5376
5377 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
5378
5379         * mini-codegen.c (mono_print_ins_index): Pretty print XPHI and VPHI.
5380
5381 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
5382
5383         * basic-simd.cs: Add a regression test for #462457.
5384
5385 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
5386
5387         * mini-ops.h: Add a definition of XPHI.
5388
5389         * mini.h (MONO_IS_PHI): Make is aware of simd instrincs. 
5390
5391         * ssa.c (op_phi_to_move): Handle XPHI.
5392
5393         * ssa.c (mono_ssa_compute): Generate a XPHI for simd intrinsics instead of VPHI.
5394
5395         Fixes #462457
5396
5397 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
5398
5399         * method-to-ir.c (mono_emit_rgctx_calli): Fix a warning.
5400
5401 2008-12-31  Geoff Norton  <gnorton@novell.com>
5402
5403         * mini-ppc.c: The prolog size allocated can be too small for darwin
5404         ppc32 under certain circumstances.  Also fix a small logic bug.
5405
5406 2008-12-29  Zoltan Varga  <vargaz@gmail.com>
5407
5408         * mini.c (mono_jit_compile_method_inner): Avoid holding the domain lock
5409         while loading AOT methods.
5410
5411         * mini-exceptions.c: Check jit_tls->class_cast_from instead of class_cast_to
5412         since only the former is nulled out after a successful cast. This prevents
5413         crashes with rethrown exceptions when using --debug=casts.
5414
5415 2008-12-24  Mark Probst  <mark.probst@gmail.com>
5416
5417         * mini.h: New macro for checking whether a method is final,
5418         i.e. whether the method or its class is marked final.
5419
5420         * method-to-ir.c: Use the new macro for all final-checks
5421         consistently.  Fixes the crash in the System.ServiceModel tests.
5422
5423 2008-12-23  Mark Probst  <mark.probst@gmail.com>
5424
5425         * mini-exceptions.c (get_exception_catch_class): Corrected another
5426         overly strict assertion.
5427
5428 2008-12-23  Mark Probst  <mark.probst@gmail.com>
5429
5430         * mini-ppc.c (mono_arch_build_imt_thunk): Save and restore r11.
5431         Clobbering it is not allowed because the caller might use it as
5432         the vtable register in the interface call.
5433
5434 2008-12-19  Mark Probst  <mark.probst@gmail.com>
5435
5436         * mini-exceptions.c (get_exception_catch_class): Corrected an
5437         overly strict assertion.
5438
5439 2008-12-18  Mark Mason  <mmason@upwardaccess.com>
5440         
5441         * method-to-ir.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P or sizeof(gpointer) when appropriate.
5442
5443         * mini.h: Move typedef to mgreg_t up above include of mini-arch.h
5444
5445         * local-propogation.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P when appropriate
5446
5447         * cpu-mips.md: correct lengths for certain long_ opcodes.
5448
5449         * mini-mips.h: Only emulate long operations when SIZEOF_REGISTER==4. Add missing func decl.
5450
5451         * 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().
5452         
5453 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
5454
5455         * exceptions-mips.c (mono_arch_find_jit_info): decode sd instructions as well when looking for registers.
5456         
5457 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
5458         
5459         * mini-mips.c (mono_arch_output_basic_block): OP_JUMP_TABLE stores patch type in inst_c1, not inst_i1.
5460         
5461 2008-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
5462
5463         * branch-opts.c (remove_block_if_useless): Even if BB0 falls through, don't add a br to the
5464         next basic block.
5465         
5466 2008-12-16  Mark Mason  <mmason@upwardaccess.com>
5467
5468         * 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
5469
5470         * 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)
5471         
5472 2008-12-15  Mark Mason  <mmason@upwardaccess.com>
5473         
5474         * trace.c (mono_trace_enter_method): correctly handle arguments smaller than the stack slot size on big endian systems.
5475         
5476 2008-12-14  Zoltan Varga  <vargaz@gmail.com>
5477
5478         * liveness.c (mono_analyze_liveness): Avoid eliminating the 'this' var in
5479         gshared code. Fixes #458947.
5480
5481         * generics.cs: Add a test.
5482
5483 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
5484         
5485         * method-to-ir.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
5486         
5487         * mini-mips.c: first pass n32 code generation.
5488
5489         * mini-mips.h: datatypes and defines for n32 support.
5490
5491         * exceptions-mips.c: first pass n32 code generation.
5492         
5493         * tramp-mips.c: first pass n32 code generation.
5494         
5495         * cpu-mips.md: add long_ opcodes.
5496         
5497 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
5498
5499         * liveness.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
5500
5501         * cfold.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
5502         
5503         * local-propogation.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
5504         
5505         * regalloc2.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
5506
5507         * mini.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
5508
5509         * mini-codegen.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
5510
5511         * ssa.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
5512
5513         * decompose.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
5514
5515         * helpers.c: for mips/n32, don't pass -mips32 to objdump
5516
5517 2008-12-12  Zoltan Varga  <vargaz@gmail.com>
5518
5519         * mini-arm.c tramp-arm.c: Fix calls to mono_arch_flush_icache.
5520
5521 2008-12-12  Andres G. Aragoneses  <aaragoneses@novell.com>
5522
5523         * driver.c: Sync --help-trace with man page (EXPR,EXPR).
5524
5525 2008-12-12  Mark Probst  <mark.probst@gmail.com>
5526
5527         * mini-ppc.h, exceptions-ppc.c, tramp-ppc.c: Create function
5528         descriptors for helper functions directly in front of the code.
5529
5530 2008-12-11  Mark Probst  <mark.probst@gmail.com>
5531
5532         * method-to-ir.c: Removed an unnecessary assertion.
5533
5534 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
5535
5536         * method-to-ir.c: Merge SGEN changes from the old JIT.
5537
5538 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
5539
5540         * driver.c (compile_all_methods_thread_main): Handle failure of
5541         mono_get_method ().
5542
5543 2008-12-10  Mark Probst  <mark.probst@gmail.com>
5544
5545         * mini-ppc.c: Merged with mini-ppc64.c.
5546
5547         * mini-ppc.h: Define PPC_MINIMAL_PARAM_AREA_SIZE on all targets.
5548
5549         * Makefile.am: Use the same sources for PPC and PPC64.
5550
5551         * mini-ppc64.c: Removed.
5552
5553 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
5554
5555         * branch-opts.c (remove_block_if_useless): Extract fall through detection
5556         code to mono_bb_is_fall_through.
5557         
5558         * branch-opts.c (mono_remove_critical_edges): Same.
5559
5560 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
5561
5562         * ssa.c (fold_ins): branch opt can kill dummy switch ops so we can't
5563         expect that an OP_BR_REG will be there.
5564
5565 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
5566
5567         * branch-opts.c (remove_block_if_useless): Use MONO_IS_BRANCH_OP instead of checking
5568         for the many branch ops. The original check miss OP_BR_REG.
5569
5570         Fixes #457574.
5571         
5572 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
5573
5574         * mini-mips.h mini-mips.c exceptions-mips.c tramp-mips.c: first round of changes necessary to eventually support n32.
5575
5576 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
5577
5578         * aot-runtime.c (load_method): Avoid calling decode_exception_debug_info
5579         while holding the aot lock.
5580
5581 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
5582
5583         * mini-mips.c (mono_arch_output_basic_block): use mfc1/lwc1 instead of mfc1d/ldc1
5584         
5585 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
5586
5587         * mini.c (mini_cleanup) : Adding a call to cominterop_release_all_rcws 
5588           to release all runtime callable wrappers held by the runtime.
5589
5590         Contributed under MIT/X11 license.
5591
5592 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
5593
5594         * tramp-amd64.c (mono_arch_create_trampoline_code_full) : Increase the code size for
5595           for Winx64.
5596
5597         Contributed under MIT/X11 license.
5598
5599 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
5600
5601         * aot-runtime.c (decode_exception_debug_info): Acquire the domain
5602         lock when calling mono_domain_alloc (). Hopefully fixes #415608.
5603
5604 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
5605
5606         * cpu-mips.md: fix ckfinite length
5607
5608         * mini-mips.c: at least recognize n32 ABI when used (not yet supported)
5609         (mono_arch_lowering_pass): cleanup, rearrange for clarity
5610         (mono_arch_output_basic_block): implement OP_CKFINITE, add more asserts
5611         
5612 2008-12-08  Mark Mason   <mmason@upwardaccess.com>
5613
5614         * exceptions-mips.c (mono_arch_find_jit_info): init new_ctx with ctx, dont' call setup_context.
5615         
5616 2008-12-08  Geoff Norton  <gnorton@novell.com>
5617
5618         * tramp-amd64.c: r120895 stores RAX, so we need to increase the window
5619         size by 8 bytes as well.
5620
5621 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
5622
5623         * basic-simd.cs: Fix method names for Vector16b.
5624         
5625 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
5626
5627         * basic-simd.cs: Fix method names for Vector16sb.
5628
5629 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
5630
5631         * basic-simd.cs: Fix method names for Vector8us.
5632         
5633 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
5634
5635         * basic-simd.cs: Fix method names for Vector8s.
5636         
5637 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
5638
5639         * basic-simd.cs: Fix method names for Vector4ui.
5640
5641 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
5642
5643         * basic-simd.cs: Fix method names for Vector2l.
5644
5645 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
5646
5647         * basic-simd.cs: Fix method names for Vector2d.
5648
5649 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
5650
5651         * simd-intrinsics.c (mono_emit_simd_intrinsics): Add support for intrinsics
5652         that are extension methods.
5653
5654 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
5655
5656         * basic-simd.cs: Fix method names for Vector4f.
5657
5658 2008-12-08  Zoltan Varga  <vargaz@gmail.com>
5659
5660         * mini-exceptions.c (mono_print_thread_dump): Mark threadpool threads
5661         as such. Fixes #456669.
5662
5663 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
5664
5665         * mini-mips.c (mono_arch_emit_call): narrow float arguments when passing as args.
5666         
5667 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
5668
5669         * mini-mips.c (mono_arch_lowering_pass): don't handle OP_ICONV_TO_R* or OP_R*CONST
5670         (mono_arch_emit_setret): use OP_MIPS_CVTSD to return SP floats
5671         (mono_arch_output_basic_block): simplify FP load/store, handle OP_MIPS_FBLT_UN
5672         (mips_adjust_stackframe): handle FP spills
5673                 
5674         * mini-ops.h: add mips_mtc1_s2
5675         
5676         * cpu-mips.md: add mips_mtc1_s2
5677         
5678 2008-12-07  Zoltan Varga  <vargaz@gmail.com>
5679
5680         * unwind.c: New file, move the unwind info encoding functions here from
5681         aot-compiler.c, so they could be used at runtime too.
5682
5683 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
5684
5685         * mini-mips.c (mono_arch_lowering_pass): handle OP_IMUL_IMM as well
5686         (mono_arch_output_basic_block): fix OP_LOCALLOC code generation
5687         
5688 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
5689
5690         * mini-mips.c: cleanup warnings
5691         (mono_arch_lowering_pass): handle OP_LOCALLOC_IMM
5692         (mips_adjust_stackframe): handle case of taking the address of stack locals
5693         
5694 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
5695
5696         * aot-compiler.c: Implement a few functions missing from the asm writer.
5697         (emit_method_code): Only write symbols for methods when using the bin
5698         writer, since the assembler can't deal with the characters in our method
5699         names.
5700
5701         * aot-compiler.c (is_plt_patch): ICALL_ADDR is also a plt patch.
5702
5703         * method-to-ir.c (mono_method_to_ir): Transform aotconst+calli into a direct
5704         call.
5705
5706         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Rework the code
5707         a bit to also restore %rax.
5708
5709 2008-12-05  Mark Probst  <mark.probst@gmail.com>
5710
5711         * mini-ppc.c: Some simple merges from mini-ppc64.c.
5712
5713 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
5714
5715         * ssa.c (mono_ssa_compute): Only add an implicit reference at start for
5716         arguments.
5717
5718 2008-12-05  Mark Probst  <mark.probst@gmail.com>
5719
5720         * exceptions-ppc.c: Merged with exceptions-ppc64.c.
5721
5722         * mini-ppc.c, mini-ppc.h: Remove PPC_STACK_ALIGNMENT and use
5723         MONO_ARCH_FRAME_ALIGNMENT.  Struct for PPC64 function descriptors.
5724
5725         * exceptions-ppc64.c: Removed.
5726
5727         * Makefile.am: Use exceptions-ppc.c instead of exceptions-ppc64.c.
5728
5729 2008-12-05  Mark Probst  <mark.probst@gmail.com>
5730
5731         * tramp-ppc.c, mini-ppc.c, mini-ppc.h: Merged tramp-ppc.c with
5732         tramp-ppc64.c.
5733
5734         * Makefile.am: Use tramp-ppc.c instead of tramp-ppc64.c.
5735
5736         * tramp-ppc64.c: Removed.
5737
5738 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
5739
5740         * aot-compiler.c (add_generic_instances): Skip non-generic classes in
5741         the TYPESPEC table.
5742
5743 2008-12-05  Mark Probst  <mark.probst@gmail.com>
5744
5745         * mini-ppc.h: Merged mini-ppc64.h with mini-ppc.h.
5746
5747         * exceptions-ppc64.c, tramp-ppc64.c, mini-arch.h, Makefile.am: Use
5748         mini-ppc.h instead of mini-ppc64.h.
5749
5750         * mini-ppc64.h: Removed.
5751
5752 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
5753
5754         * mini-mips.c: introduce USE_LDC_SDC: use ldc1/sdc1 to load/store doubles, disabled by default
5755         
5756         * mini-mips.c (mono_arch_emit_outarg_vt): fix offset calculation for memcpy in structure passing.
5757         
5758 2008-12-05  Mark Probst  <mark.probst@gmail.com>
5759
5760         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c:
5761         Removed FIRST/LAST_[GF]REG macros, to make merging PPC64 with PPC
5762         code easier.
5763
5764 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
5765
5766         * basic-simd.cs: Tests for operator == and != on  Vector8us and Vector16b.
5767
5768 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
5769
5770         * simd-intrinsics.c: Add support for operator == and != to Vector8(u)s and Vector16(s)b.
5771
5772 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
5773
5774         * basic-simd.cs: Tests for operator == and != on Vector4f.
5775
5776 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
5777
5778         * simd-intrinsics.c (simd_intrinsic_emit_equality): Adapt to support Vector4f.
5779
5780         * simd-intrinsics.c: Kill useless enum.
5781
5782 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
5783
5784         * cpu-mips.md: add long_conv_to_ovf_i4_2
5785         * mini-mips.c: update/add various _OVF_ opcodes to fix test failures
5786
5787 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
5788
5789         * mini-mips.c: ifdef protect automatic promotions of R4 to R8.
5790         
5791         * mini-mips.c (mono_arch_emit_setret): handle R4 case with FCONV_TO_R4 instead of FMOVE
5792
5793 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
5794
5795         * mini-mips.c (mono_arch_output_basic_block): fix codegen for OP_OR_IMM/OP_IOR_IMM
5796         
5797 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
5798
5799         * basic-simd.cs: Add tests for new methods.
5800
5801 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
5802
5803         * simd-intrinsics.c: Add support for operator == and !=
5804         on Vector4(u)i.
5805
5806         * simd-methods.h: Add SN_op_Inequality and SN_op_Equality.
5807
5808 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
5809
5810         * simd-intrinsics.c: Remove ExtractByteMask intrinsics.
5811
5812 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
5813
5814         * aot-compiler.c (add_wrappers): Add pinvoke wrappers.
5815
5816         * mini.c (mono_resolve_patch_target): Allow pinvoke methods in 
5817         MONO_PATCH_INFO_ICALL_ADDR.
5818
5819         * aot-runtime.c (MonoAotFileInfo): Correct order of fields.
5820
5821         * aot-compiler.c: Resurrect full-aot support.
5822
5823 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
5824
5825         * mini-mips.c (mono_arch_lowering_pass): handle OP_COMPARE and OP_ICOMPARE
5826         
5827 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
5828
5829         * mini-mips.c (mono_arch_output_basic_block): fix OP_IREM_UN code generation
5830         
5831 2008-12-03  Rodrigo Kumpera  <rkumpera@novell.com>
5832
5833         * basic-simd.cs: Fix tests to work under ppc.
5834         Remove tests for methods that will be removed.
5835
5836 2008-12-03  Mark Probst  <mark.probst@gmail.com>
5837
5838         * method-to-ir.c (mono_method_to_ir): Handle ldtoken of an open
5839         generic type (via a typedef or typeref) correctly.
5840
5841 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
5842
5843         * mini-trampolines.c (mono_magic_trampoline): Add some debugging code to help
5844         diagnose an assertion failure.
5845
5846 2008-12-02  Mark Probst  <mark.probst@gmail.com>
5847
5848         * tramp-ppc64.c (mono_arch_create_rgctx_lazy_fetch_trampoline):
5849         Fix trampoline size.
5850
5851         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: A few floating point
5852         conversion opcodes are implemented natively instead via emulation.
5853
5854 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
5855
5856         * cpu-mips.md: remove mips_xori
5857
5858         * mini-ops.h:  remove mips_xori
5859
5860         * mini-mips.h: replace OP_MIPS_XORI with OP_IXOR
5861
5862         * mini-mips.c (mono_arch_decompose_long_opts): Add ladd_imm, lsub, lsub_imm, lneg, lsub_ovf, lsub_ovf_un.
5863         
5864         * mini-mips.c (mono_arch_lowering_pass, mono_arch_output_basic_block): fix IXOR handling
5865         
5866 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
5867
5868         * cpu-mips.md: fix instruction lengths.
5869
5870         * mini-mips.h: define MONO_ARCH_NO_IOV_CHECK
5871
5872         * mini-mips.c: move most instruction rewriting into decompose_ops. Implement conditional branches and exceptions. Fix jump table patch handling. Implement add/sub OVF.
5873
5874         * mini-ops.h: fix slti / sltiu op profiles.
5875         
5876 2008-12-02  Martin Baulig  <martin@ximian.com>
5877
5878         * method-to-ir.c (mono_method_to_ir): Disable debugging
5879         information for the init locals block to make the debugger stop
5880         after all locals have been initalized.
5881
5882 2008-12-02  Martin Baulig  <martin@ximian.com>
5883
5884         * mini.c (mini_method_compile): Disable MONO_OPT_DEADCE when
5885         running inside the debugger.
5886
5887 2008-12-01  Zoltan Varga  <vargaz@gmail.com>
5888
5889         * mini.c (mini_method_compile): Only run local deadce if MONO_OPT_DEADCE
5890         is enabled.
5891
5892         * method-to-ir.c (mono_method_to_ir): Fix invalid code generated by the 
5893         alu->alu imm optimization which only shows if deadce is disabled.
5894
5895         * aot-compiler.c: Rename the function names for the binary and asm writers
5896         so they can coexist in the same process. Rework the xdebug code to use the
5897         asm writer. This avoids the need to call into the runtime to dump the
5898         debugging info. Add more debugging info for types.
5899
5900         * mini-<ARCH>.h: Kill MONO_ARCH_HAVE_NORMALIZE_OPCODES define.
5901
5902         * genmdesc.c genmdesc.pl mini.h: Don't put the CEE_ opcodes into the
5903         cpu description tables, they can't occur in cpu-<ARCH>.md.
5904
5905         * method-to-ir.c (mono_method_to_ir): Set the type of the value pushed on
5906         the stack in CEE_LDFLDA. Fixes #450542.
5907
5908         * generics.cs: Add a new test.
5909
5910 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
5911
5912         * mini-ops.h: updated MIPS opcodes
5913         * mini-mips.c: decompose long opts
5914         * mini-mips.h: decompose long opts
5915         
5916 2008-11-29  Mark Mason   <mmason@upwardaccess.com>
5917
5918         * cpu-mips.md: fix length on int_rem_un
5919         * mini-mips.c (mips_stackframe_adjust): fix insertion of spillvars region in MIPS stackframes.
5920         
5921 2008-11-29  Zoltan Varga  <vargaz@gmail.com>
5922
5923         * mini.h aot-runtime.c: Fix building with DISABLE_AOT.
5924
5925         * mini-codegen.c (mono_print_ins_index): Handle OP_VOIDCALL_MEMBASE.
5926
5927 2008-11-29  Martin Baulig  <martin@ximian.com>
5928
5929         * mini-exceptions.c (mono_handle_native_sigsegv): Check
5930         mono_debug_using_mono_debugger() in addition to the
5931         `no_gdb_backtrace' flag in the `MonoDebugOptions'.
5932
5933 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
5934
5935         * mini-ops.h: updated more MIPS opcodes
5936         * mini-mips.c: FP compare/branch working again, clean up last of CEE_ -> OP_ mappings
5937         * cpu-mips.md: Added MIPS versions of new FP compare/branch opcodes.
5938         
5939 2008-11-28  Mark Probst  <mark.probst@gmail.com>
5940
5941         * mini-ppc64.c: Patch the RGCTX fetch trampoline correctly.
5942
5943 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
5944
5945         * mini-mips.c (mono_arch_emit_call): adding missing conversion to fp single when passing in integer arg register.
5946         * mini-mips.c (mips_adjust_stackframe): compensate for spill-down logic.
5947         * mini-ops.h: correct selected mips opcode entries
5948         
5949 2008-11-28  Mark Probst  <mark.probst@gmail.com>
5950
5951         * mini-ppc64.c, mini-ppc64.h: Enable generalized IMT thunks and
5952         make them work.
5953
5954 2008-11-28  Mark Probst  <mark.probst@gmail.com>
5955
5956         * mini-ppc64.h, tramp-ppc64.c: Make generic code sharing work.
5957
5958 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
5959
5960         * method-to-ir.c, mini-trampolines.c: protect IMG code with #ifdef MONO_ARCH_HAVE_IMT to fix compile errors.
5961         * mini-mips.c: Fixup stackframe assignments after allocation of spillvars.
5962         * mini-mips.h: disable IMT
5963         * tramp-mips.c (mono_arch_get_vcall_slot): fix offset extraction
5964         
5965 2008-11-28  Mark Probst  <mark.probst@gmail.com>
5966
5967         * mini-ppc64.c, mini-ppc64.h: Don't emulate long ops.
5968
5969 2008-11-28  Mark Probst  <mark.probst@gmail.com>
5970
5971         * mini-ppc64.c, exceptions-ppc64.c: Several fixes.
5972
5973 2008-11-28  Zoltan Varga  <vargaz@gmail.com>
5974
5975         * method-to-ir.c (handle_isinst): Use PCONST instead of ICONST for
5976         consistency.
5977
5978 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
5979
5980         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
5981         for Set/GetVector aligned versions.
5982
5983 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
5984
5985         * basic-simd.cs: Add tests for Get/SetVector.
5986
5987 2008-11-27  Mark Probst  <mark.probst@gmail.com>
5988
5989         * mini.c: Removed g_slist_append_mempool().  Now in
5990         metadata/mempool.c.
5991
5992 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
5993
5994         * simd-intrinsics.c (mono_emit_vector_ldelema): Extract the element
5995         size properly and make the bounds check optional.
5996
5997         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
5998         for SetVector and IsAligned.
5999
6000 2008-11-27  Zoltan Varga  <vargaz@gmail.com>
6001
6002         * mini.c: Remove unused mono_normalize_opcodes () function.
6003
6004 2008-11-26  Mark Probst  <mark.probst@gmail.com>
6005
6006         * method-to-ir.c (mini_emit_inst_for_method): Small fix: we're
6007         using the new atomic add ops now.
6008
6009         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Implemented atomic
6010         add.
6011
6012 2008-11-26  Mark Probst  <mark.probst@gmail.com>
6013
6014         * mini-ppc64.c: Several fixes.
6015
6016 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
6017
6018         * cpu-mips.md: added jump_table
6019         * mini-mips.c: added jump_table. Eliminate compare-imm when lowering. Remove dead function.             
6020
6021 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
6022
6023         * mini-mips.c, mini-mips.h, tramp-mips.c, cpu-mips.md: Initial upgrade of MIPS port to new IR.
6024
6025 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
6026
6027         * mini-ops.h: corrected a handful of MIPS opcodes.
6028
6029 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
6030
6031         * aot-compiler.c: MIPS to use ELF writer
6032
6033 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
6034
6035         * mini-codegen.c: remove MIPS specific assert.
6036
6037 2008-11-25  Mark Probst  <mark.probst@gmail.com>
6038
6039         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Several
6040         fixes.  PPC64 now passes most of the runtime regressions.
6041
6042 2008-11-24  Zoltan Varga  <vargaz@gmail.com>
6043
6044         * regalloc2.c: Distinguish between use/def positions. Optimize the creation of
6045         volatile intervals a bit.
6046
6047 2008-11-24  Mark Probst  <mark.probst@gmail.com>
6048
6049         * basic-long.cs: New test case.
6050
6051 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
6052
6053         * mini.c (mini_method_compile): Disable globalra for large methods for 
6054         now.
6055
6056         * regalloc2.c (order_moves): Add fp support.
6057
6058         * branch-opts.c (mono_remove_critical_edges): Split non-critical edges whose
6059         source bblock ends with an OP_BR_REG.
6060
6061         * ratests.cs: Add a new test.
6062
6063 2008-11-23  Mark Probst  <mark.probst@gmail.com>
6064
6065         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c: Disable generic code
6066         sharing.  PPC64 now passes generics.exe.
6067
6068 2008-11-23  Mark Probst  <mark.probst@gmail.com>
6069
6070         * mini-ppc64.c: Several fixes.  PPC64 now runs iltests.exe.
6071
6072 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
6073
6074         * exceptions-x86.c (mono_arch_find_jit_info): Avoid reading uninitialized
6075         memory when mono_jit_info_table_find () can't find the method in the
6076         LMF case.
6077
6078         * aot-compiler.c (mono_save_xdebug_info): Emit complete debug info for
6079         AOTed code too.
6080         
6081         * aot-compiler.c (mono_save_xdebug_info): Make this work with the assembly
6082         writer too.
6083
6084 2008-11-23  Mark Probst  <mark.probst@gmail.com>
6085
6086         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, cpu-ppc64.md:
6087         Several fixes.  PPC64 now runs exceptions.exe and
6088         devirtualization.exe.
6089
6090 2008-11-22  Mark Probst  <mark.probst@gmail.com>
6091
6092         * mini-ppc64.c, tramp-ppc64.c: Small fixes.  PPC64 now runs
6093         arrays.exe and basic-math.exe.
6094
6095 2008-11-22  Mark Probst  <mark.probst@gmail.com>
6096
6097         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c,
6098         cpu-ppc64.md: Several fixes.  PPC64 now runs objects.exe.
6099
6100 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
6101
6102         * simd-intrinsics.c: Add support ArrayExtension intrinsics.
6103
6104 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
6105
6106         * method-to-ir.c: Move bounds checking macros to ir-emit.h
6107
6108         * ir-emit.h: Move macros from method-to-ir.c to here.
6109
6110 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
6111
6112         * mini-ops.h: Correct the long simd ops to use LREG.
6113
6114 2008-11-21  Zoltan Varga  <vargaz@gmail.com>
6115
6116         * mini-ops.h: Correct the dreg type of OP_LOADI8_MEMBASE.
6117         
6118         * mini-ops.h: Correct the dreg type of a few long opcodes.
6119
6120         * mini-amd64.h: Applied patch from Mihai Chelaru <kefren@ngnetworks.ro>.
6121         Add netbsd support.
6122
6123 Fri Nov 21 12:52:23 CET 2008 Paolo Molaro <lupus@ximian.com>
6124
6125         * mini-ppc.c: remove negative stack references in epilog
6126         for platforms that don't support the red zone.
6127
6128 2008-11-21  Mark Probst  <mark.probst@gmail.com>
6129
6130         * mini-ppc64.h, cpu-ppc64.md: Fixed caller/callee saved floating
6131         point regs.  Now PPC64 passes basic-calls.exe.
6132
6133 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6134
6135         * basic-simd.cs: Add tests for accessors of Vector2l.
6136
6137 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6138
6139         * mini-ops.h: Added OP_INSERTX_I8_SLOW,.
6140
6141         * mini-x86.c (mono_arch_decompose_long_opts): Decompose OP_INSERTX_I8_SLOW.
6142         
6143         * simd-intrinsics.c: Add support for Vector2l and Vector2ul.
6144
6145 2008-11-21  Mark Probst  <mark.probst@gmail.com>
6146
6147         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Several fixes.  Now
6148         PPC64 passes basic-long.exe.
6149
6150 2008-11-20  Mark Probst  <mark.probst@gmail.com>
6151
6152         * decompose.c: Decompose carry and overflow add on PPC64 like on
6153         other 64 bit archs.  Don't decompose sub at all on PPC64.
6154
6155         * mini-ppc64.c, exceptions-ppc64.c, tramp-ppc64.c, cpu-ppc64.md:
6156         Several fixes and new opcodes.  Now PPC64 runs (but doesn't pass)
6157         basic-long.exe.
6158
6159 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6160
6161         * basic-simd.cs: Add tests for accessors of Vector2d.
6162
6163 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6164
6165         * mini-ops.h: Added OP_INSERTX_R8_SLOW,.
6166
6167         * cpu-x86.md: Same.
6168
6169         * mini-x86.c (mono_arch_output_basic_block): Same.
6170         
6171         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector2d.
6172
6173 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6174
6175         * basic-simd.cs: Add tests for accessors of Vector4f.
6176
6177 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6178
6179         * mini-ops.h: Added OP_INSERTX_R4_SLOW,.
6180
6181         * cpu-x86.md: Same.
6182
6183         * mini-x86.c (mono_arch_output_basic_block): Same.
6184         
6185         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4f.
6186
6187 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6188
6189         * basic-simd.cs: Add tests for accessors of Vector4i and Vector4ui.
6190
6191 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6192
6193         * mini-ops.h: Added OP_INSERTX_I4_SLOW,.
6194
6195         * cpu-x86.md: Same.
6196
6197         * mini-x86.c (mono_arch_output_basic_block): Same.
6198         
6199         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4i and Vector4ui.
6200
6201 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6202
6203         * cpu-x86.md: Use reasonable sizes for extractx_u2 and insertx_u1_slow.
6204
6205 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6206
6207         * simd-intrinsics.c: Enable setters for Vector16sb.
6208
6209 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6210
6211         * mini-ops.h: Added OP_EXTRACTX_U2, OP_INSERTX_U1_SLOW.
6212
6213         * cpu-x86.md: Same.
6214
6215         * mini-x86.c (mono_arch_output_basic_block): Same.
6216         
6217         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector16b.
6218
6219 2008-11-19  Rodrigo Kumpera  <rkumpera@novell.com>
6220
6221         * simd-intrinsics.c: Implement setter for Vector8us.
6222
6223 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
6224
6225         * aot-compiler.c (mono_save_xdebug_info): Emit correct location info
6226         for dead variables.
6227
6228 Wed Nov 19 18:27:41 CET 2008 Paolo Molaro <lupus@ximian.com>
6229
6230         * mini-ppc.c: remove references to the red zone in the prolog
6231         (for systems that don't support it).
6232
6233 2008-11-19  Mark Probst  <mark.probst@gmail.com>
6234
6235         * cpu-ppc64.md: Fixed a few instruction lengths.
6236
6237         * mini-ppc64.c: Don't emit SETLRET.  PPC64 passes basic-float.exe,
6238         now.
6239
6240 2008-11-19  Mark Probst  <mark.probst@gmail.com>
6241
6242         * mini-ppc64.c, cpu-ppc64.md: Fixed some opcodes.  PPC64 passes
6243         basic.exe now.
6244
6245 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
6246
6247         * aot-compiler.c (mono_save_xdebug_info): Add more parameter types.
6248
6249 2008-11-18  Rodrigo Kumpera  <rkumpera@novell.com>
6250
6251         * mini-ops.h: Added OP_INSERT_I2.
6252
6253         * cpu-x86.md: Same.
6254
6255         * mini-x86.c (mono_arch_output_basic_block): Same.
6256         
6257         * simd-intrinsics.c: Implement setter for Vector8s.
6258
6259         * simd-methods.h: Add the names of get setters of Vector8s.
6260
6261 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
6262
6263         * aot-compiler.c (mono_save_xdebug_info): Add support for parameters.
6264         
6265         * aot-compiler.c (mono_save_xdebug_info): Add preliminary support for
6266         parameters.
6267
6268         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
6269
6270 2008-11-18  Mark Probst  <mark.probst@gmail.com>
6271
6272         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Changes
6273         for PPC64.  An empty program runs now.
6274
6275 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
6276
6277         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
6278
6279         * aot-compiler.c mini.c mini.h: Add a JIT debugging mode modelled after
6280         a similar mode in Kaffe: When the the MONO_XDEBUG env var is set, debugging
6281         info for JITted code is emitted into a shared library, loadable into gdb.
6282
6283 2008-11-18  Mark Probst  <mark.probst@gmail.com>
6284
6285         * Makefile.am: Changes to build PPC64.
6286
6287         * mini-arch.h: Include mini-ppc64.h on PPC64.
6288
6289 2008-11-18  Mark Probst  <mark.probst@gmail.com>
6290
6291         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Updated with changes
6292         in PPC code up to r119147.
6293
6294 2008-11-18  Mark Probst  <mark.probst@gmail.com>
6295
6296         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
6297         cpu-ppc64.md: Changes for PPC64.
6298
6299         Based on code submitted by andreas.faerber@web.de at
6300         https://bugzilla.novell.com/show_bug.cgi?id=324134 under the
6301         X11/MIT license.
6302
6303 2008-11-18  Mark Probst  <mark.probst@gmail.com>
6304
6305         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
6306         cpu-ppc64.md: Copied from the corresponding PPC files from
6307         r118846.
6308
6309 2008-11-18  Scott Peterson  <lunchtimemama@novell.com>
6310
6311         * mini-ops.h: Added OP_ROUND.
6312
6313         * cpu-x86.md: Added round.
6314
6315         * mini-x86.c: Added support for intrinsicing Math.Round (double).
6316
6317         * basic-math.cs: Added test_0_round to test rounding.
6318
6319         Contributed under MIT/X11 license.
6320
6321 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
6322
6323         * aot-compiler.c : Fix the Winx64 build.
6324
6325         Contributed under MIT/X11 license.
6326
6327 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
6328
6329         * mini-x86.c (mono_arch_output_basic_block): Use movsd instead of monvups
6330         in OP_EXTRACT_R8 to avoid possible stack corruption.
6331
6332 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
6333
6334         * mini-ops.h: Added OP_EXTRACT_R8/I8.
6335
6336         * cpu-x86.md: Added extract_r8.
6337
6338         * mini-x86.c (mono_arch_output_basic_block): Emmit OP_EXTRACT_R8.
6339         
6340         * mini-x86.c: Added mono_arch_decompose_long_opts to break OP_EXTRACT_I8 into
6341         a couple of OP_EXTRACT_I4.
6342
6343         * mini-x86.h: Define MONO_ARCH_HAVE_DECOMPOSE_LONG_OPTS if simd is enabled.
6344
6345         * simd-intrinsics.c: Implement getters for Vector2l/2ul/2d.
6346
6347 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
6348
6349         * simd-intrinsics.c (vector2l_intrinsics): CompareGreaterThan requires sse 4.2
6350         and not 4.1. 
6351
6352 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
6353
6354         * method-to-ir.c (handle_delegate_ctor): Emit the address of the delegate
6355         trampoline as an AOT const of the proper type instead of MONO_PATCH_INFO_ABS.
6356
6357         * mini.c (mono_codegen): Remove the handling of delegate trampolines, they
6358         are not needed any more.
6359
6360         * mini.h: Remove the unused INS_LIST macros.
6361
6362         * mini.c (mini_method_compile): Remove a disable globalra case which is no
6363         longer needed.
6364
6365         * *.h *.c: Remove duplicate MonoInst emission macros, use the ones in
6366         ir-emit.h.
6367
6368         * regalloc.h *.c: Remove references to mono_regstate_next_int (), use
6369         mono_alloc_ireg () instead.
6370
6371         * mini-<ARCH>.c: Include ir-emit.h. Remove duplicate MonoInst emission
6372         macros.
6373
6374         * mini-amd64.c (emit_load_volatile_arguments): Removed, not needed
6375         on amd64.
6376
6377         * aot-runtime.c (load_aot_module): Disable AOT when running under
6378         CAS.
6379
6380         * mini-amd64.h: Change the monitor fastpath defines to check for
6381         !PLATFORM_WIN32 so they work on *bsd too.
6382
6383         * mini.h mini.c mini-hhpa.c: Remove more unused code.
6384
6385         * mini-s390.c mini-s390x.c: Remove !cfg->new_ir code.
6386
6387         * mini.h (MonoCompile): Remove new_ir flag.
6388
6389         * regalloc.h regalloc.c: Remove unused code.
6390
6391         * cpu-*.md: Remove more unused opcodes.
6392
6393         * simple-cee-ops.h simple-mini-ops.h: Removed.
6394
6395         * mini-ops.h *.c cpu-<ARCH>.md: Remove more unused opcodes.
6396         
6397 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
6398
6399         * aliasing.h: Removed.
6400
6401         * *.c: Remove references to aliasing.h and inssel.h.
6402
6403         * mini.c: Remove additional unused functions.
6404
6405         * mini-ops.h cpu-*.md: Remove unused opcodes.
6406
6407 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
6408
6409         Remove the old JIT code.
6410
6411         * inssel*.brg: Removed.
6412
6413         * ssa.c abcremoval.c aliasing.c: Removed.
6414
6415         * ssa2.c: Renamed to ssa.c.
6416
6417         * abcremoval2.c: Renamed to abcremoval.c.
6418
6419         * *.c: Removed all !cfg->new_ir code.
6420
6421         * mini-<ARCH>.c: Removed mono_arch_call_opcode (), 
6422         mono_arch_emit_this_vret_args (), and mono_arch_get_inst_for_method ().
6423
6424         * mini.c: Removed the old mono_method_to_ir () and all the code used by it.
6425         
6426 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
6427
6428         * aot-compiler.c aot-runtime.c: Emit most of the non-table data in a structure
6429         to simplify the code and cut back on the number of global symbols in the AOT
6430         file.
6431         
6432         * aot-compiler.c aot-runtime.c: Get rid of the unused plt_jump_table.
6433
6434 2008-11-15  Zoltan Varga  <vargaz@gmail.com>
6435
6436         * aot-runtime.c aot-compiler.c: Unify the plt_jump_table/plt_info tables
6437         with the got/got_info tables.
6438
6439         * mini.h: Bump AOT file format version.
6440         
6441         * unwind.h: New file, contains definitions for stack unwinding.
6442
6443         * mini.c (mono_emit_unwind_op): New helper function to append an unwind op
6444         to cfg->unwind_ops.
6445         
6446         * aot-compiler.c: Generalize the emitting of unwind information to use the
6447         information in cfg->unwind_ops.
6448
6449         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info.
6450
6451         * aot-compiler.c: Emit dwarf unwind information so gdb can unwind through
6452         AOT method frames. Enable writing symbols for methods by default.
6453
6454 2008-11-14  Rodrigo Kumpera  <rkumpera@novell.com>
6455
6456         * simd-intrinsics.c (simd_intrinsic_emit_getter): Generalize this code
6457         and make it work with vectors of element sizes 1, 2 and 4.
6458
6459         * simd-intrinsics.c: Enable getter for all vectors with element size
6460         1, 2 or 4.
6461
6462         * simd-methods.h: Add the names of other getters.
6463
6464         * mini-ops.h: Added OP_EXTRACT_I2/U2/I1/U1.
6465
6466         * cpu-x86.md: Same.
6467
6468         * mini-x86.c: Same.
6469
6470 Fri Nov 14 15:54:18 CET 2008 Paolo Molaro <lupus@ximian.com>
6471
6472         * mini-ppc.h: portability fix.
6473
6474 Fri Nov 14 15:39:50 CET 2008 Paolo Molaro <lupus@ximian.com>
6475
6476         * mini-ppc.h, mini-ppc.c: avoid using the red zone as some kernels are
6477         buggy and will overwrite it.
6478
6479 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
6480
6481         * aot-compiler.c: Add functionality to emit local symbols to the elf writer.
6482         Use it to emit local symbols for all methods so AOTed methods show up with
6483         their full name in gdb/valgrind output.
6484
6485 Fri Nov 14 12:56:27 CET 2008 Paolo Molaro <lupus@ximian.com>
6486
6487         * mini-ppc.c: portability fixes.
6488
6489 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
6490
6491         * mini-trampolines.c (mono_magic_trampoline): Move the patching of plt
6492         entries out of the if (!generic_shared...) code so it is always done.
6493         (mono_class_init_trampoline): Do the patching when running under valgrind
6494         too, newer versions of valgrind have no problems with it.
6495
6496 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
6497
6498         * aot-compiler.c (emit_writeout): Rework this to make it easier to add
6499         further sections.
6500
6501 2008-11-13  Mark Probst  <mark.probst@gmail.com>
6502
6503         * mini-ppc.c, cpu-ppc.md: Reserve space for the parameter area in
6504         filters.
6505
6506 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
6507
6508         * simd-intrinsics.c: Add getter support for Vector4i and Vector4ui. 
6509
6510 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
6511
6512         * mini-ops.h: Kill diplicated ops OP_SHUFLEPS.
6513
6514         * cpu-x86.md: Same.
6515
6516         * mini-x86.c: Same.
6517
6518         * simd-intrinsics.c: Same.
6519
6520 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
6521
6522         * simd-intrinsics.c: Enable constructor intrinsics for all types.
6523
6524 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
6525
6526         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Generalize this method
6527         to work with more Vector types.
6528
6529 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
6530
6531         * simd-intrinsics.c (simd_intrinsic_emit_ctor): If the target is already a pointer
6532         store the elemens directly instead of using and intermediate.
6533
6534 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
6535
6536         * mini-amd64.c (emit_call_body): Avoid aligning call sites in AOTed code.
6537
6538         * tramp-x86.c (mono_arch_create_trampoline_code): Rework the return sequence
6539         to preserve %eax for aot plt trampolines.
6540
6541         * aot-compiler.c (compile_method): Don't skip synchronized methods.
6542         (encode_method_ref): Flag synchronized methods so they won't go through
6543         the AOT trampoline.
6544
6545         * aot-compiler.c: Additional work to support AOTing synchronized methods/
6546         wrappers.
6547
6548         * cpu-ia64.md (jmp): Increase max length.
6549
6550 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
6551
6552         * aot-runtime.c (load_method): Avoid calling runtime_class_init () for
6553         open generic classes.
6554
6555         * aot-compiler.c: Enable the ELF writer on ELF platforms.
6556
6557         * method-to-ir.c (mono_method_to_ir2): Revert the last change to the
6558         box+brtrue optimization since it causes test failures on x86.
6559
6560 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
6561
6562         * mini-ops.h: Remove OP_PUSH_R4 and OP_LOADX_STACK.
6563
6564         * cpu-x86.md: Same.
6565
6566         * mini-x86.c: Same.
6567
6568         * mini.h (struct MonoCompile): Add simd_ctor_var to be used as storage
6569         for simd ctor values. 
6570
6571         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Use simd_ctor_var for the constructor
6572         instead of directly pushing the values on stack. This saves about 15 bytes of generated code.
6573
6574 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
6575
6576         * simd-methods.h: Rename SubWithSaturation, ArithmeticRightShift and
6577         LogicalRightShift.
6578
6579         * simd-instrincs.c: Same.
6580
6581         * basic-simd.cs: Same.
6582
6583 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
6584
6585         * ratests.cs: Add more tests.
6586
6587         * regalloc2.c (add_spill_code): Handle more corner cases.
6588
6589 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
6590
6591         * regalloc2.c (INS_POS_INTERVAL): Decrease this to 8 to avoid overflows.
6592         (update_liveness): Avoid holes in the liveness ranges of hregs if they are
6593         both the source an destination of an instruction.
6594
6595 Tue Nov 11 19:30:50 CET 2008 Paolo Molaro <lupus@ximian.com>
6596
6597         * jit-icalls.c, local-propagation.c, mini.c, ssa.c, ssapre.c, trace.c,
6598         wapihandles.c: more portability changes.
6599
6600 Tue Nov 11 18:56:33 CET 2008 Paolo Molaro <lupus@ximian.com>
6601
6602         * aot-compiler.c, aliasing.c, abcremoval.c: portability changes.
6603         * mini.c mini.h, aot-runtime.c: the aot segfault-handling code is not
6604         safe to execute in a signal handler and the kernel provides better
6605         the info in /proc/self/smaps. Avoid the assert on sigaction during
6606         cleanup.
6607
6608 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
6609
6610         * method-to-ir.c (mono_method_to_ir2): In the box+brtrue optimization, only
6611         do the bblock linking hack if it is actually needed.
6612
6613         * Makefile.am (patch-libtool): New helper target to patch libtool to speed
6614         up linking.
6615
6616         * liveness.c (ENABLE_LIVENESS2): Reenable this for 64 bit archs as the
6617         crash problem is fixed.
6618
6619         * branch-opts.c (mono_remove_critical_edges): Link up newly added
6620         bblocks.
6621
6622         * mini.c (mini_method_compile): Compute unreachable bblocks properly even
6623         for catch clauses.
6624         (mini_method_compile): Set the starting value of next_vreg to 
6625         MAX_IREGS + MAX_FREGS when using globalra.
6626
6627         * method-to-ir.c (mono_method_to_ir2): Mark bblocks starting
6628         filter clauses with BB_EXCEPTION_HANDLER.
6629
6630         * regalloc2.c (assign_spill_slots): Set cfg->rgctx_var.
6631
6632 2008-11-10  Mark Probst  <mark.probst@gmail.com>
6633
6634         * mini-x86.c (mono_arch_get_argument_info): Don't align argument
6635         space for stdcall.  Fixes regressions on Win32.
6636
6637 2008-11-10  Zoltan Varga  <vargaz@gmail.com>
6638
6639         * regalloc2.c (handle_reg_constraints): Avoid adding code to unreachable
6640         bblocks.
6641         (linear_scan): Remove an assert which doesn't seem to be needed.
6642
6643         * local-propagation.c (mono_local_deadce): Avoid a call to
6644         MONO_DELETE_INS which would screw up the instruction linking.
6645
6646         * mini.c (mono_decompose_op_imm): Make this work with globalra.
6647
6648         * regalloc2.c: Upgrade to work the current JIT code.
6649
6650 2008-11-09  Zoltan Varga  <vargaz@gmail.com>
6651
6652         * method-to-ir.c (inline_method): Merge more basic blocks to help the AOT
6653         case.
6654
6655         * aot-runtime.c: Remove some dead code.
6656
6657         * tramp-arm.c: Use 'code' as the runnning pointer in code generation for
6658         consistency.
6659         (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Implement aot support.
6660
6661         * aot-runtime.c (load_named_code): Decode the offset of lazy fetch
6662         trampolines using sscanf since atoi doesn't work on large unsigned values.
6663
6664         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): 
6665         Initialize code_size.
6666
6667 2008-11-08  Mark Probst  <mark.probst@gmail.com>
6668
6669         * method-to-ir.c (mini_emit_inst_for_method): Make
6670         Interlocked.CompareExchange work for Int arguments on 32 bit
6671         archs, as well.
6672
6673 2008-11-07  Mark Probst  <mark.probst@gmail.com>
6674
6675         * method-to-ir.c (mono_method_to_ir2): Fixed a funny commit error.
6676
6677 2008-11-06  Bill Holmes  <billholmes54@gmail.com>
6678
6679         * main.c Fix MSVC build.
6680
6681         Contributed under MIT/X11 license.
6682
6683 2008-11-06  Mark Probst  <mark.probst@gmail.com>
6684
6685         * mini-x86.c (mono_arch_allocate_vars): Make sure locals that need
6686         alignment larger than 8 bytes are aligned correctly, too.
6687
6688         * mini.c: Honor the min_align field of MonoClass when laying out
6689         the stack.
6690
6691 2008-11-06  Zoltan Varga  <vargaz@gmail.com>
6692
6693         * method-to-ir.c (mono_method_to_ir2): Fix AOT support for CEE_SWITCH on arm.
6694
6695         * aot-compiler.c (emit_plt): Fix a warning.
6696         
6697         * aot-compiler.c: Implement ARM support in the binary writer.
6698
6699 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
6700
6701         * basic-simd.cs: Add test for getter with byref arg.
6702         Fix the naming of a few tests.
6703         Add missing checks to a test.
6704
6705 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
6706
6707         * aot-compiler.c (emit_plt): Make the arm code work with the binary writer.
6708
6709         * aot-compiler.c aot-runtime.c mini-trampolines.c tramp-amd64.c: Implement
6710         most of the full-aot support for monitor enter/exit trampolines.
6711
6712         * tramp-x86.c tramp_amd64.c: Add AOT compatible variants of the monitor
6713         enter/exit trampoline creation functions.
6714
6715         * Makefile.am: Fix the generation of buildver.h so it is not invoked during
6716         make dist.
6717
6718 Wed Nov 5 16:28:53 CET 2008 Paolo Molaro <lupus@ximian.com>
6719
6720         * mini.h, aot-compiler.c, method-to-ir.c, aot-runtime.c: remove the
6721         incorrectly added MONO_WRAPPER_MONITOR_* (in r117651-r117652) and
6722         implement the needed functionality without adding crap to the runtime.
6723
6724 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
6725
6726         * mini-trampolines.c (mono_create_monitor_enter_trampoline): Fix the
6727         non-x86 builds.
6728
6729         * mini.c (mono_build_date): New global version holding the build date in
6730         string format.
6731         
6732         * Makefile.am (buildver.c): Generate a file containing the build date.
6733
6734         * main.c: Set the build date from the generated file.
6735
6736         * mini.c (mono_get_runtime_build_info): New helper function returning build
6737         information in a string format.
6738         
6739         * driver.c (mono_main): Print the build date in --version.
6740
6741         * aot-compiler.c aot-runtime.c: Embed the build information into the AOT
6742         file when the bind-to-runtime-version option is used.
6743
6744 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
6745
6746         * simd-intrinsics.c: Fix bug when using getters and byref args. 
6747
6748 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
6749
6750         * simd-methods.h: Rename prefetch methods.
6751
6752         * simd-intrinsics.c: Same.      
6753
6754 2008-11-05  Mark Probst  <mark.probst@gmail.com>
6755
6756         * tramp-amd64.c: Enlarge the Monitor.Enter/Exit trampoline code
6757         sizes.
6758
6759 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
6760
6761         * aot-compiler.c: Use the bundled elf header files instead of depending on
6762         the system one.
6763         
6764         * aot-compiler.c (emit_symbol_diff): Allocate memory from the acfg
6765         mempool.
6766
6767         * method-to-ir.c (mono_method_check_inlining): Avoid a getenv () call
6768         on every call.
6769
6770 2008-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
6771
6772         * cpu-x86.md: Add store nta ops.
6773
6774         * mini-ops.h: Same.
6775
6776         * mini-x86.c: Same.
6777
6778         * mini.h: Add an enum for simd prefetch modes.
6779
6780         * simd-methods.h: Refactor the store_aligned code to handle multiple kinds
6781         of store. Use the changed code to support store nta.
6782
6783         * simd-intrinsics.c: Add prefetch ops for all vector types.
6784
6785 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
6786
6787         * aot-compiler.c: Add an option for JIT compiling the methods by multiple 
6788         threads.
6789         
6790         * aot-compiler.c: Use statically allocated buffers for constructing symbol 
6791         names.
6792
6793         * aot-runtime.c aot-compiler.c: Add support for the MONITOR_ENTER/EXIT
6794         trampolines.
6795
6796 2008-11-04  Mark Probst  <mark.probst@gmail.com>
6797
6798         * mini-x86.c: Fixed commit.
6799
6800 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
6801
6802         * aot-compiler.c (emit_plt): Align the plt section only on x86.
6803
6804 2008-11-04  Mark Probst  <mark.probst@gmail.com>
6805
6806         * mini-trampolines.c, mini.h: Two new trampolines: MONITOR_ENTER
6807         and MONITOR_EXIT, for the ASM fastpaths.
6808
6809         * method-to-ir.c: Use the ASM fastpath for Monitor.Enter/Exit if
6810         available.
6811
6812         * mini.c, patch-info.h: Signature and patch infos for
6813         Monitor.Enter/Exit trampolines.
6814
6815         * mini-amd64.c, mini-x86.c: Make emit_tls_get() non-static.
6816
6817         * tramp-amd64.c, tramp-x86.c, mini-amd64.h, mini-amd64.h:
6818         Monitor.Enter/Exit ASM fastpath for Linux.
6819
6820 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
6821
6822         * mini.c (mono_method_to_ir): Fix soft-float support in Array.Get/Set.
6823
6824         * objects.cs: Add a new test.
6825         
6826         * aot-compiler.c: Use mono_100ns_ticks () for computing the profiling info.
6827
6828         * aot-runtime.c (load_method): Run class initialization in the PLT case even
6829         if MONO_LOG_LEVEL is set.
6830
6831         * debug-mini.c (serialize_variable): Fix the encoding of dead variables.
6832
6833         * aot-runtime.c (mono_aot_get_method): Skip out-of-date AOT modules.
6834
6835         * aot-compiler.c (emit_and_reloc_code): Speed this up a little.
6836         
6837         * aot-compiler.c: Change the relocation code to use virtual addresses instead
6838         of file offsets. Align the sections belonging to the data segment to 
6839         PAGESIZE.
6840
6841 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
6842
6843         * aot-compiler.c: Simplify the elf writer by depending on the definitions in
6844         elf.h. Port it to amd64.
6845
6846 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
6847
6848         * driver.c: Enable SIMD by default.
6849
6850 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
6851
6852         * cpu-x86.md: Add prefetch op.
6853
6854         * mini-ops.h: Same.
6855
6856         * mini-x86.c: Same.
6857
6858         * mini.h: Add an enum for simd prefetch modes.
6859
6860         * simd-methods.h: Add prefetch function names.
6861
6862         * simd-intrinsics.c: Add prefetch ops for all vector types.
6863
6864 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
6865
6866         * aot-compiler.c (emit_bytes): Speed this up a little.
6867
6868 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
6869
6870         * aot-compiler.c: Add JIT time etc. statistics.
6871         
6872         * aot-compiler.c (compile_method): Fix the copying of the cfgs array.
6873
6874         * mini.h (MonoCompile): Add 'got_offset' field.
6875
6876         * aot-compiler.c: Store the got offset in MonoCompile, get rid of the
6877         method_got_offsets array.
6878
6879         * aot-compiler.c aot-runtime.c: Add support for the monitor enter/exit
6880         wrappers.
6881
6882         * aot-compiler.c (compile_method): Add generic method instances referenced
6883         by the method to the list of methods to be compiled, this is required so if
6884         A<T> references B<T>, and another assembly references A<int>, then it will
6885         also get a copy of B<int>.
6886
6887         * method-to-ir.c (mini_emit_inst_for_method): Use the proper wrapper type
6888         when checking for monitor enter/exit.
6889
6890 2008-10-30  Mark Probst  <mark.probst@gmail.com>
6891
6892         * method-to-ir.c (mini_emit_inst_for_method): Use the IL fastpaths
6893         for Monitor.Enter and Monitor.Exit if enabled.
6894
6895         * mini-x86.h, mini-amd64.h: Enable the IL fastpaths for Linux and
6896         Solaris.
6897
6898 2008-10-30  Zoltan Varga  <vargaz@gmail.com>
6899
6900         * method-to-ir.c (type_from_op): Convert CEE_CONV_U on OP_ICONV_TO_U instead
6901         of an OP_MOVE. Fixes #440046.
6902
6903         * basic-long.cs: Add a new test.
6904
6905 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
6906
6907         * mini.h: Add synchronization note for the managed counter-part.
6908
6909         * simd-intrinsics.c: Add SimdRuntime.get_AccelMode intrinsic that
6910         returns the simd caps of the current cpu.
6911
6912 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
6913
6914         * basic-simd.cs: Remove Console.WriteLine.
6915
6916 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
6917
6918         * basic-simd.cs: New tests for Vector2ul.
6919
6920 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
6921
6922         * simd-intrinsics.c: Add new vector type Vector2ul.
6923
6924 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
6925
6926         * basic-simd.cs: New tests for Vector2l.
6927
6928 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
6929
6930         * cpu-x86.md: Add long version of most packed int ops.
6931
6932         * mini-ops.h: Same.
6933
6934         * mini-x86.h: Same.
6935
6936         * simd-intrinsics.c: Add new vector type Vector2l.
6937
6938 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
6939
6940         * simd-intrinsics.c: Replace SN_op_BitwiseXor with SN_op_ExclusiveOr.
6941
6942         * simd-methods.h: Remove SN_op_BitwiseXor.
6943
6944 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
6945
6946         * mini.c (mono_allocate_stack_slots_full): Align the size of vtypes to their
6947         alignment.
6948
6949 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
6950
6951         * basic-simd.cs: Test for Vector2d.
6952
6953         * basic-simd.cs (test_vector8s_pack_signed_sat): Fixed broken
6954         value.
6955
6956 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
6957
6958         * cpu-x86.md: Add double version of all packed float ops.
6959
6960         * mini-ops.h: Same.
6961
6962         * mini-x86.h: Same.
6963
6964         * simd-intrinsics.c: Add new vector type Vector2d.
6965
6966         * simd-intrinsics.c (vector4f_intrinsics): Fix ordering.
6967
6968         * simd-methods.h: Add Duplicate.
6969
6970 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
6971
6972         * basic-simd.cs: Test for packing with signed saturation.
6973
6974 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
6975
6976         * aot-compiler.c (add_generic_instances): Add all methods of generic instances
6977         found in the TYPESPEC table.
6978
6979 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
6980
6981         * aot-runtime.c (mono_aot_get_method): Log not found methods for extra methods
6982         too.
6983
6984         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
6985
6986         * mini.c (mono_method_to_ir): For MONO_PATCH_INFO_RVA, save field the token
6987         instead of the RVA, since the RVA can be changed by tools like the cil 
6988         stripper.
6989
6990         * method-to-ir.c (mono_method_to_ir2): Ditto.
6991
6992         * debug-mini.c (serialize_variable): Handle ADDRESS_MODE_DEAD.
6993         (deserialize_variable): Ditto.
6994
6995 2008-10-25  Martin Baulig  <martin@ximian.com>
6996
6997         * debug-mini.c (write_variable): Use
6998         `MONO_DEBUG_VAR_ADDRESS_MODE_DEAD' for dead variables.
6999
7000 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
7001
7002         * cpu-x86.md: Add unsigned variants of packd and packw.
7003
7004         * mini-ops.h: Same.
7005
7006         * mini-x86.h: Emit the right instruction for packd and packw.
7007         Add unsigned variants of packd and packw.
7008
7009         * simd-intrinsics.c: Packd and packw were used in place of their
7010         unsigned variants. Change that.
7011         Add intrinsics for (Signed)PackWithSignedSaturation.
7012
7013         * simd-methods.h: Add (Signed)PackWithSignedSaturation.
7014
7015 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
7016
7017         * simd-intrinsics.c (vector4i_intrinsics): New table of intrinsic type.
7018
7019 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
7020
7021         * mini-ops.h: Remove dword packed add/sub with saturation ops.
7022
7023         * cpu-x86.md: Remove dword packed add/sub with saturation ops.
7024
7025         * simd-intrinsics.c (vector4ui_intrinsics): Remove methods without
7026         sse instructions.
7027
7028         * simd-intrinsics.c (vector8s_intrinsics): Fix ordering.
7029
7030 2008-10-24  Mark Probst  <mark.probst@gmail.com>
7031
7032         * method-to-ir.c, mini.c: Special casing for the synchronized
7033         wrapper for the ldtoken+GetTypeFromHandle case.
7034
7035 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
7036
7037         * mini.c (mono_replace_ins): Move this to branch-opts.c.
7038
7039         * mini.c (mono_replace_ins): Propagate has_array_access flag to the newly
7040         created/split bblocks.
7041
7042 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
7043
7044         * mini-ops.h: Add packed signed mul high.
7045         
7046         * cpu-x86.md: Same.
7047
7048         * mini-x86.c (mono_arch_output_basic_block): Same.
7049
7050         * simd-methods.h: Add PackWithUnsignedSaturation and ShiftRightLogic.
7051
7052         * simd-intrinsics.c (vector8s_intrinsics): New table of intrinsic type.
7053
7054 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
7055
7056         * basic-simd.cs: Tests for Vector16sb.
7057
7058 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
7059
7060         * inssel.brg (stmt): Fix OP_HARD_NOP rule.
7061
7062 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
7063
7064         * mini-ops.h: Add packed signed min, max and compare greater.
7065         
7066         * cpu-x86.md: Same.
7067
7068         * mini-x86.c (mono_arch_output_basic_block): Same. Add packed add/sub with
7069         saturation.
7070
7071         * simd-methods.h: Add CompareGreaterThan.
7072
7073         * simd-methods.h: Remove CompareEquals.
7074
7075         * simd-intrinsics.c: Add new TODO entry and some cosmetic changes.
7076
7077         * simd-intrinsics.c (vector16sb_intrinsics): New table of intrinsic type.
7078
7079         * simd-intrinsics.c (vector4f_intrinsics): Rename CompareEquals to
7080         CompareEqual.
7081
7082 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
7083
7084         * basic-simd.cs: Fix tests due to change in the API.
7085
7086 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
7087
7088         * mini.c method-to-ir.c: Use mono_field_get_name () for accessing field->name.
7089
7090 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
7091
7092         * basic-simd.cs: Fix name change in Vector4f::CompareEqual.
7093
7094         * simd-intrinsics.c (simd_intrinsic_emit_store_aligned): Don't use
7095         inst_offset as this has invalid values for LDADDR.
7096
7097 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
7098
7099         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
7100
7101         * simd-intrinsics.c (vector4ui_intrinsics): Add SignedPackWithUnsignedSaturation.
7102
7103 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
7104
7105         * method-to-ir.c (initialize_array_data): Use mono_field_get_data ()
7106         for accessing field->data.
7107
7108 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
7109
7110         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
7111
7112 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
7113
7114         * simd-methods.h: Add SignedPackWithUnsignedSaturation.
7115
7116         * simd-intrinsics.c (vector8us_intrinsics): Add SignedPackWithUnsignedSaturation.
7117
7118 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
7119
7120         * dominators.c (mono_compute_natural_loops): Allocate GList enties
7121         from the cfg mempool.
7122
7123 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
7124
7125         * basic-simd.cs: Tests for new methods in Vector8us.
7126
7127 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
7128
7129         * mini-ops.h: Add multiply and store high.
7130         
7131         * cpu-x86.md: Same.
7132
7133         * mini-x86.c (mono_arch_output_basic_block): Same.
7134
7135         * simd-methods.h: Same.
7136
7137         * simd-intrinsics.c (vector8us_intrinsics): Add MultiplyStoreHigh
7138         and CompareEqual.
7139
7140 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
7141
7142         * method-to-ir.c (mono_emit_method_call_full): Remove a needless call to
7143         mono_class_setup_vtable ().
7144
7145         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Use
7146         mono_class_get_vtable_entry () for accessing klass->vtable.
7147
7148         * aot-runtime.c (load_method): Avoid a crash when using MONO_LOG_LEVEL.
7149
7150         * aot-compiler.c (add_generic_instances): Avoid a crash if a class is not
7151         found.
7152
7153         * method-to-ir.c (mono_save_token_info): Don't save references made from
7154         wrappers.
7155
7156         * aot-compiler.c (add_generic_instances): Add static rgctx wrappers for cctors
7157         of generic instances.
7158
7159         * aot-runtime.c (find_extra_method): Search in all loaded AOT images.
7160
7161 2008-10-19  Mark Probst  <mark.probst@gmail.com>
7162
7163         * cpu-ppc.md, mini-ppc.c: The length of the code generated for
7164         OP_JMP depends on the method signature.  Calculate it properly.
7165
7166 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
7167         
7168         * aot-runtime.c (mono_aot_find_jit_info): Handle extra methods which are
7169         called directly.
7170
7171         * aot-compiler.c (emit_and_reloc_code): Allow direct calling of generic
7172         instances.
7173         (emit_extra_methods): Add another table mapping method indexes to 
7174         offsets in the extra_method_info table.
7175
7176         * mini.h: Bump AOT file format version.
7177         
7178         * aot-runtime.c: Merge most of the code from mono_aot_get_method
7179         and mono_aot_get_method_from_token () into one function.
7180
7181 2008-10-19  Mark Probst  <mark.probst@gmail.com>
7182
7183         * mini-ppc.c (emit_load_volatile_arguments): Inner loop needs a
7184         separate counter.
7185
7186 2008-10-18  Zoltan Varga  <vargaz@gmail.com>
7187
7188         * aot-compiler.c aot-runtime.c: Fix the hash function used for the extra
7189         methods.
7190
7191         * method-to-ir.c (mono_method_to_ir2): Change a !compile_aot assert to
7192         disable_aot.
7193
7194         * mini.c (mono_patch_info_equal): Compare the generic context as well.
7195
7196         * mini.h: Bump aot file format version.
7197
7198         * aot-compiler.c aot-runtime.c: Generalize the wrapper handling code so the
7199         AOT file can contain native code for methods which are not in the METHOD
7200         table. Generate code for non-sharable generic instances of generic methods
7201         found in the METHODSPEC table.
7202         
7203         * method-to-ir.c (mono_method_to_ir2): Remove the aot restriction when
7204         encoding generic type handles.
7205
7206         * ir-emit.h (NEW_AOTCONST_TOKEN): Add a generic_context argument.
7207         (NEW_TYPE_FROM_HANDLE_CONST): Add a generic_context argument.
7208
7209         * ir-emit.h: Rewrite the EMIT_NEW_XXXCONST macros to use the NEW_XXXCONST
7210         macros + MONO_ADD_INS.
7211
7212         * mini.c (mono_jump_info_token_new2): New function which takes a generic
7213         context as well.
7214
7215         * mini.h (MonoJumpInfoToken): Include fields for a generic context.
7216
7217         * mini.h: Bump aot file format version.
7218
7219         * aot-compiler.c aot-runtime.c: Update after changes to MonoJumpInfoToken.
7220
7221 2008-10-17  Mark Probst  <mark.probst@gmail.com>
7222
7223         * mini-x86.h, mini-x86.c, exceptions-x86.c: Align stack on all
7224         platforms, with definable stack alignment value.  Set to 16 now
7225         for all platforms.
7226
7227         * mini.c, mini.h, driver.c: Command line option for disabling
7228         stack alignment.
7229
7230 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
7231
7232         * basic-simd.cs: Tests for new methods in Vector4ui.
7233
7234 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
7235
7236         * mini-ops.h: Add packed int shuffle.
7237         
7238         * cpu-x86.md: Same.
7239
7240         * mini-x86.c (mono_arch_output_basic_block): Same.
7241
7242         * simd-intrinsics.c (vector4ui_intrinsics): Add compare equal,
7243         extract mask, max, min, shuffle.
7244
7245         * simd-intrinsics.c (vector8us_intrinsics): Add max and min.
7246
7247 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
7248
7249         * basic-simd.cs: Tests for new methods in Vector8us.
7250
7251 2008-10-17  Mark Probst  <mark.probst@gmail.com>
7252
7253         * method-to-ir.c (mono_method_to_ir2): "refanytype" produces a
7254         RuntimeTypeHandle, not a TypedReference.
7255
7256 Fri Oct 17 14:40:50 CEST 2008 Paolo Molaro <lupus@ximian.com>
7257
7258         * simd-intrinsics.c: remove relocations.
7259
7260 2008-10-17  Zoltan Varga  <vargaz@gmail.com>
7261
7262         * mini-amd64.c (mono_arch_output_basic_block): Port the IREM_IMM 
7263         optimizations from the x86 backend.
7264
7265 Fri Oct 17 12:00:51 CEST 2008 Paolo Molaro <lupus@ximian.com>
7266
7267         * simd-methods.h, simd-intrinsics.c: debloat method names and
7268         prepare for no relocations.
7269
7270 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
7271
7272         * mini-ops.h: Add packed min/equal and sum of absolute differences.
7273         
7274         * cpu-x86.md: Same.
7275
7276         * mini-x86.c (mono_arch_output_basic_block): Same.
7277
7278         * simd-intrinsics.c (vector16b_intrinsics): Add average, compare equal,
7279         extract mask, max, min and sum of absolute differences.
7280
7281         * simd-intrinsics.c: Increase SIMD_INTRINSIC_NAME_MAX due to new huge
7282         method name.
7283
7284 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
7285
7286         * basic-simd.cs: Test for the other mono_simd_simplify_indirection bug.
7287         Renamed one test for consistency.
7288
7289 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
7290
7291         * simd-intrinsics.c (mono_simd_simplify_indirection): Apply the previous
7292         fix to the code that deal with other blocks.
7293
7294 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
7295
7296         * basic-simd.cs: Test for the mono_simd_simplify_indirection bug.
7297
7298 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
7299
7300         * simd-intrinsics.c (mono_simd_simplify_indirection): Simplify the code
7301         that deals with vreg interference. Explicitly check for OP_LDADDR to be
7302         able to process the source reg.
7303
7304 2008-10-16  Martin Baulig  <martin@ximian.com>
7305
7306         * mini-ops.h, cpu-amd64.md, cpu-x86.md: Added new `hard_nop' opcode.
7307
7308         * inssel.brg: Add `OP_HARD_NOP'.
7309
7310         * mini.h (MonoCompile): Added `keep_cil_nops' flag.
7311
7312         * mini.c (mono_method_to_ir): In `CEE_NOP': generate a
7313         `OP_HARD_NOP' instruction when running inside the debugger.
7314
7315         * method-to-ir.c (mono_method_to_ir2): In `CEE_NOP': generate a
7316         `OP_HARD_NOP' instruction when running inside the debugger.
7317
7318 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
7319
7320         * simd-intrinsics.c (get_simd_vreg): Using sreg1 of OP_XMOVE
7321         now works. The issue with the regalloc tripping up no longer
7322         happens.
7323
7324         * simd-intrinsics.c (load_simd_vreg): Same.
7325
7326 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
7327         
7328         * basic-simd.cs: Tests for new Vector8ui methods.
7329
7330 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
7331
7332         * simd-intrinsics.c (get_simd_vreg): Simplify code and test
7333         only for type. This fixes crashes where MonoInst::klass is checked
7334         for ops of type != VTYPE or OBJ.
7335
7336         * simd-intrinsics.c (load_simd_vreg): Same.
7337
7338 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
7339
7340         * mini-ops.h: Add ops for packed shuffle/max/avg and
7341         extract mask.
7342         
7343         * cpu-x86.md: Same.
7344
7345         * mini-x86.c (mono_arch_output_basic_block): Same.
7346
7347         * simd-intrinsics.c (vector8us_intrinsics): Add avg, shuffle and
7348         extract mask.
7349
7350         * simd-intrinsics.c (simd_intrinsic_emit_extract_mask): New function
7351         to emit extract mask op.
7352
7353         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Retrofic this function
7354         to emit word shuffles.
7355
7356 2008-10-15  Mark Probst  <mark.probst@gmail.com>
7357
7358         * mini.c (mono_allocate_stack_slots_full): Align stack frame to
7359         the largest alignment needed by a variable, but at least
7360         sizeof(gpointer).
7361
7362 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
7363
7364         * basic-simd.cs: Tests for the fixes in the last commit.
7365
7366 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
7367
7368         * simd-intrinsics.c (get_simd_vreg): Drop the is_this_ptr, this function
7369         no longer handles STACK_PTR input.
7370
7371         * simd-intrinsics.c (get_simd_vreg): Don't crash when MonoInst::klass == -1.
7372
7373         * simd-intrinsics.c (load_simd_vreg): New function that works like 
7374         get_simd_vreg   but handles STACK_PTR input.
7375
7376         * simd-intrinsics.c (simd_intrinsic_emit_getter): Use load_simd_vreg
7377         as the input can be an arbitrary pointer.
7378
7379         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Try the
7380         LDADDR local optimization directly otherwise use a store op.
7381
7382 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
7383
7384         * basic-simd.cs: Tests for dup low and dup high.
7385
7386 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
7387
7388         * mini-ops.h: Add dup low and dup high ops.
7389         
7390         * cpu-x86.md: Same.
7391
7392         * mini-x86.c (mono_arch_output_basic_block): Same.
7393
7394         * simd-intrinsics.c (vector4f_intrinsics): Same.
7395
7396 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
7397
7398         * basic-simd.cs: Tests for recently added functionality.
7399
7400 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
7401
7402         * mini-ops.h: Add remaining sse1 fp ops.
7403         
7404         * cpu-x86.md: Add remaining sse1 fp ops.
7405
7406         * mini-x86.c (mono_arch_output_basic_block): Same.
7407
7408         * mini.h: Add enum for simd FP compare conditions.
7409
7410         * simd-intrinsics.c (vector4f_intrinsics): Add all new ops.
7411
7412         * simd-intrinsics.c (simd_intrinsic_emit_binary): Set inst_c0 to flags
7413         so the backed can generate the appropriate op.
7414
7415 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
7416         This patch squeese one more byte from the SimdIntrinsc struct.
7417
7418         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions: Use the version number
7419         a a shift amount intead of simply or'ing it.
7420
7421         * mini.h: Change SIMD_VERSION_* values to be sequential intead of masks.
7422
7423         * simd-intrinsics.c (struct SimdIntrinsc): Squeese simd_version and simd_emit_mode into a single
7424         byte so we can have an aditional flags field without increasing struct size.
7425
7426         * simd-intrinsics.c (emit_intrinsics): Use the value of simd_version as a shift amount before checking
7427         against the simd_supported_versions bitmask.
7428
7429         * simd-intrinsics.c: Set SIMD_INTRINSIC_NAME_MAX to an appropriate value.
7430
7431 Mon Oct 13 10:58:10 CEST 2008 Paolo Molaro <lupus@ximian.com>
7432
7433         * mini.c: remove rawbuffer code (the only use here is unsafe because
7434         it takes locks during signal handling and the kernel now provides much
7435         better info in proc/pid/smaps these days).
7436
7437 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
7438
7439         * mini-amd64.c (mono_arch_output_basic_block): Fix the changes to
7440         OP_X86_PUSH_OBJ. Fixes #434620.
7441
7442         * objects.cs: Add a test.
7443         
7444 2008-10-12  Rodrigo Kumpera  <rkumpera@novell.com>
7445
7446         * basic-simd.cs: Remove PackWithUnsignedSaturation tests as it turns out
7447         that the packuswb/packusdw don't work with unsigned numbers for what
7448         would be negative numbers in signed format.
7449
7450         * cpu-x86.md: Add doubleword forms of many ops and packing ones.
7451         Fix the len of fconv_to_r8_x and xconv_r8_to_i4.
7452
7453         * mini-ops.h: Add doubleword forms of many ops and packing ones.
7454
7455         * mini-x86.c: Emit doubleword forms of many ops and packing ones.
7456
7457         * simd-intrinsics.c (SimdIntrinsc): Rename the flags field to simd_version.
7458
7459         * simd-intrinsics.c (vector4f_intrinsics): Use simd_version field for sse3 ops.
7460
7461         * simd-intrinsics.c (vector4u_intrinsics): Rename to vector4ui_intrinsics and
7462         add more ops.
7463
7464         * simd-intrinsics.c (simd_version_name): New function, returns the name of the
7465         version as the enum in mini.h.
7466
7467         * simd-intrinsics.c (emit_intrinsics): Instead of having a special emit mode
7468         for sse3 ops, check the simd_version field if present. This way the code
7469         works with all versions of sse.
7470
7471 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
7472
7473         * simd-intrinsics.c: Fixed intrinsic name typo.
7474
7475         * mini.h: Added missing simd exported function.
7476
7477         * basic-simd.cs: Added tests for Vector4ui.
7478         Fixed broken test for Vector16b.
7479
7480 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
7481
7482         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Increase
7483         the max length to 64.
7484
7485 2008-10-10  Mark Probst  <mark.probst@gmail.com>
7486
7487         * method-to-ir.c: Only do the fast virtual generic method call for
7488         non-wrapper methods.
7489
7490         * mini.h, mini-trampolines.c: The new generic virtual remoting
7491         trampoline handles virtual method calls via the vtable (as done by
7492         the fast virtual generic method calls) to remoting proxies.
7493
7494         * mini.c (mono_jit_create_remoting_trampoline): For generic
7495         methods reate a generic virtual remoting trampoline.
7496
7497         * mini-amd64.h: Enable fast virtual generic method calls again.
7498
7499 2008-10-10  Mark Probst  <mark.probst@gmail.com>
7500
7501         * mini-ppc.c: Use SP (r1), not frame_reg (which might be r31) to
7502         restore registers when doing tail calls.
7503
7504 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
7505
7506         * simd-intrinsics.c (emit_intrinsics): Vector4u was renamed to
7507         Vector4ui.
7508
7509 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
7510
7511         * basic-simd.cs: Add test for Vecto16b.PackWithUnsignedSaturation.
7512
7513 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
7514
7515         * simd-intrinsics.c (emit_intrinsics): Retrofit to new type names.
7516
7517 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
7518
7519         * basic-simd.cs: Retrofit for API changes.
7520
7521 2008-10-10  Mark Probst  <mark.probst@gmail.com>
7522
7523         * mini-ppc.c: Handle integer stack arguments for tail calls.
7524
7525 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
7526
7527         * optflags-def.h: Removed sse3 optimization.
7528
7529         * driver.c: Same.
7530
7531         * mini-x86.c (mono_arch_cpu_optimizazions): Remove detection of
7532         sse3.
7533
7534         * mini-x86.c: Added mono_arch_cpu_enumerate_simd_versions.
7535
7536         * mini.h: Added enumeration with simd versions.
7537
7538         * simd-intrinsics.c (emit_intrinsics): Use the new static var
7539         for detecting SSE3.
7540
7541         * simd-intrinsics.c: Added mono_simd_intrinsics_init.
7542
7543         * mini.c (mini_init): Call mono_simd_intrinsics_init.
7544
7545 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
7546
7547         * basic-simd.cs: Added tests for Vector8u and Vector16u.
7548
7549         * basic-simd.cs: Fixed test naming.
7550
7551 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
7552
7553         * mini-ops.h: Added ops for packed and saturated math, shifts
7554         and packing/unpacking.
7555
7556         * cpu-x86.md: Added descriptors for the above ops.
7557
7558         * mini-x86.c: Added code to emmit the above ops.
7559
7560         * simd-intrinsics.c: Added support for Vector16u and Vector8u.
7561
7562 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
7563
7564         * aot-compiler.c (compile_method): Enable AOT for generic code.
7565
7566         * ir-emit.h (NEW_DOMAINCONST): Use domainvars in AOT code as well.
7567
7568 Wed Oct 8 16:35:43 CEST 2008 Paolo Molaro <lupus@ximian.com>
7569
7570         * mini.c: add a workaround for a common screwup that ends up blamed
7571         to mono (other processes blocking signal delivery).
7572
7573 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
7574
7575         * method-to-ir.c (mono_method_to_ir2): Clear ins_flag on all code paths
7576         in the LDFLD/STFLD opcodes. Fixes #432673.
7577
7578         * iltests.il.in: Add a new test.
7579
7580 Tue Oct 7 19:59:07 CEST 2008 Paolo Molaro <lupus@ximian.com>
7581
7582         * mini-arm.c: attach the thread in unmanaged->managed transitions
7583         using delegates (bug #433148).
7584
7585 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
7586
7587        * basic-simd.cs: Use new ShuffleSel constants.
7588
7589 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
7590
7591         * driver.c (opt_sets): Added combinations of simd, sse2 and sse3.
7592
7593         * mini-x86.c (mono_arch_cpu_optimizazions): Detect sse3 and now
7594         only disable simd intrinsics if no sse2 is detected.
7595
7596         * optflags-def.h: Added sse3.
7597
7598         * simd-intrinsics.c: Avoid generated sse3 intrinsics if the optimization
7599         is disabled.
7600
7601 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
7602
7603         * aot-compiler.c (add_wrappers): Fix Delegate/MulticastDelegate classes
7604         when adding delegate-invoke wrappers.
7605
7606 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
7607
7608         * Makefile.am: Reenable the simd tests.
7609
7610 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
7611
7612         * mini-amd64.c (mono_arch_emit_outarg_vt) : In the ArgValuetypeAddrInIReg case,
7613           add a call to mono_call_inst_add_outarg_reg for the arg->dreg to make sure that no
7614           other vreg is allocated to that hreg.
7615
7616         Contributed under MIT/X11 license.
7617
7618 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
7619
7620         * Makefile.am: Disable the simd tests for now as Mono.Simd is not
7621         yet checked in.
7622
7623 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
7624
7625         * basic-simd.cs: New test suite for SIMD intrinsics.
7626
7627         * Makefile.am: Added new tests.
7628
7629 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
7630
7631         * cpu-x86.md: Added new instructions to handle float to int using SSE regs.
7632
7633         * mini-ops.h: Same.
7634
7635         * mini-x86.h: Enable mono_arch_decompose_opts if simd intrinsics are enabled.
7636
7637         * mini-x86.c (mono_arch_decompose_opts): Decompose float to int conversion
7638         using SSE2 aware opcodes.
7639
7640         * mini-x86.c (emit_float_to_int): Disable the SSE2 optimization if OPT_SIMD
7641         is enabled, this code path is only reachable if conversion ops are emmited after
7642         mono_method_to_ir.
7643
7644         * mini.h: Added MonoCompile::fconv_to_r8_x_var to hold the float to int var.
7645
7646         This optimization saves 6 bytes per conversion against the old version.
7647
7648 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
7649
7650         * aot-compiler.c (compile_method): Don't skip methods referencing 
7651         generic methods without a corresponding entry in token_info_hash, since
7652         encode_method_ref () can handle all generic methods now.
7653
7654         * method-to-ir.c (mono_save_token_info): Don't save the token info if a 
7655         generic context is set.
7656         
7657         * method-to-ir.c (mono_method_to_ir2): Put back a disable_aot for
7658         generic sharing of LDTOKEN.
7659
7660 2008-10-06  Mark Probst  <mark.probst@gmail.com>
7661
7662         * mini-amd64.h: Temporarily disabled fast virtual generic method
7663         calls because it breaks the System.Runtime.Remoting tests.
7664
7665 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
7666
7667         * aot-compiler.c (add_wrappers): Add delegate-invoke wrappers.
7668
7669         * method-to-ir.c (check_inline_called_method_name_limit): Return TRUE
7670         so inlining actually works.
7671         (check_inline_caller_method_name_limit): Ditto.
7672
7673 Mon Oct 6 11:04:38 CEST 2008 Paolo Molaro <lupus@ximian.com>
7674
7675         * mini-ppc.c: mono_arch_flush_icache () cast pointer using gsize for
7676         64 bit safety (from Olaf Hering and Andreas Farber).
7677
7678 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
7679         
7680         * mini-trampolines.c (mono_aot_trampoline): Delegate processing to
7681         mono_magic_trampoline () if aot_get_method_from_token () fails. Remove
7682         unused virtual call support code.
7683
7684         * aot-runtime.c (decode_method_ref): Add a 'no_aot_trampoline' out argument.
7685         
7686         * aot-runtime.c (mono_aot_get_method_from_vt_slot): Return NULL for methods
7687         which can't use aot trampolines.
7688         (decode_patch): Don't create aot trampolines for methods which can't use
7689         them.
7690
7691         * aot-compiler.c (encode_method_ref): Add a marker for methods which can't
7692         use aot trampolines.
7693
7694         * mini.h: Bump AOT image format version.
7695         
7696 2008-10-05  Zoltan Varga  <vargaz@gmail.com>
7697
7698         * method-to-ir.c (mono_method_to_ir2): Pass cil_method instead of cmethod
7699         to save_token_info () since cmethod is inflated for constrained calls.
7700
7701         * mini-<ARCH>.h mini-x86.c: Remove some unused defines.
7702
7703 2008-10-04  Andreas Farber  <andreas.faerber@web.de>
7704
7705         * Makefile.am: Add build rules for ppc64.
7706         This avoids the build failing at pedump with unresolved symbols
7707         due to lack of arch_sources. Instead it will now fail earlier
7708         due to lack of cpu-ppc64.md.
7709
7710         Contributed under MIT/X11 license.
7711
7712 2008-10-04  Mark Probst  <mark.probst@gmail.com>
7713
7714         * mini-amd64.c (mono_arch_emit_call): Support stack arguments for
7715         tail calls.
7716
7717         * iltests.il.in: Add test case for tail call with many arguments.
7718
7719 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
7720
7721         * method-to-ir.c (mono_method_to_ir2): Add an !cfg->compile_aot assert
7722         to the fast virtual generic method code until the aot case is fixed.
7723
7724 2008-10-03  Mark Probst  <mark.probst@gmail.com>
7725
7726         * mini-ppc.c, mini-ppc.h: Implement generic virtual method thunks.
7727
7728 2008-10-03  Mark Probst  <mark.probst@gmail.com>
7729
7730         * mini-amd64.c, mini-amd64.h: Implement generic virtual method
7731         thunks.
7732
7733 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
7734         
7735         * simd-intrinsics.c: Forgot to add this one.
7736
7737         * mini-codegen.c: Fix macro in case SIMD is not supported.
7738
7739 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
7740         
7741         This patch land initial JIT support for simd intrinsics.
7742
7743         * mini-x86.h: Added new define to make --enable_minimal work on x86.
7744
7745         * Makefile.am: Added simd-intrinsics.c
7746
7747         * simd-intrinsics.c: New file with simd instrinsic related
7748         code.
7749
7750         * cfold.c (mono_constant_fold_ins2): Fold XZERO.
7751
7752         * cpu-x86.md: Add simd related instructions.
7753
7754         * driver.c: Added MONO_OPT_SIMD to the default set of optimizations.
7755
7756         * driver.c: Added two new --regression variants.
7757
7758         * ir-emit.h (MONO_EMIT_NEW_VZERO): Emit XZERO if the type is a simd intrinsic.
7759
7760         * local-propagation.c (mono_local_cprop2): Eliminate useless XMOVE.
7761
7762         * local-propagation.c (mono_local_deadce): Use new macro MONO_IS_NON_FP_MOVE and
7763         extract some complicated logic to helper functions.
7764
7765         * method-to-ir.c (mono_type_to_regmove): Handle simd intrinsics.
7766
7767         * method-to-ir.c (mini_emit_inst_for_method): Emit simd intrinsics.
7768
7769         * method-to-ir.c (mono_handle_global_vregs): If a simd intrinsic was found, apply
7770         the specialized simplification pass.
7771
7772         * method-to-ir.c (mono_spill_global_vars): Use new macro.
7773
7774         * mini-codegen.c: Added SIMD constants to all regbanks arrays.
7775
7776         * mini-codegen.c: Added reg_bank_table_init to initialize the reg desc -> bank
7777         table.
7778
7779         * mini-codegen.c: Define a version of the reg_bank macro that uses desc_to_reg_type
7780         if MONO_ARCH_NEED_SIMD_BANK is defined.
7781
7782         * mini-ops.h: Added the new simd ops.
7783
7784         * mini-x86.c: Added mono_arch_xregname.
7785
7786         * mini-x86.c (mono_arch_cpu_optimizazions): Disable MONO_OPT_SIMD if SSE3 is not detected.
7787
7788         * mini-x86.c (mono_arch_output_basic_block): Add simd related opcodes.
7789
7790         * mini-x86.h: Define simd related MONO_ARCH macros.
7791
7792         * mini.c (mono_type_to_load_membase): Handle simd intrinsics.
7793
7794         * mini.c (mono_type_to_store_membase): Handle simd intrinsics.
7795
7796         * mini.h: Added new macros MONO_IS_NON_FP_MOVE, MONO_IS_REAL_MOVE, MONO_IS_ZERO and
7797         MONO_CLASS_IS_SIMD to deal with simd related IR.
7798
7799         * mini.h (MonoInst): Added spill_var to the backend union.
7800
7801         * mini.h (MonoCompile): Added uses_simd_intrinsics and iconv_raw_var.
7802
7803         * mini.h: Added forward declarations of the new simd fuctions.
7804
7805         * optflags-def.h: Added new optimization names SIMD.
7806
7807         * regalloc.c (mono_regstate_reset): Set next vreg to be the max value of the 3 reg banks.
7808
7809         * regalloc.h: Added support for working with 3 register banks.
7810
7811         * regalloc.h (MonoRegState): Added xsymbolic field if a third regbank is required.
7812
7813         * ssa2.c (mono_ssa_deadce2): Use new MONO_IS_ZERO macro.
7814
7815 Fri Oct 3 16:03:22 CEST 2008 Paolo Molaro <lupus@ximian.com>
7816
7817         * mini-exceptions.c: remove 64 bit related ifdef clutter.
7818
7819 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
7820
7821         * mini-exceptions.c (mono_handle_soft_stack_ovf): Unprotect two pages
7822         instead of one on 64 bit systems.
7823
7824         * method-to-ir.c: Remove unused includes.
7825
7826 2008-10-02  Zoltan Varga  <vargaz@gmail.com>
7827
7828         * aot-compiler.c (emit_exception_debug_info): Use jinfo->used_regs instead of
7829         cfg->used_int_regs, since the two are different on arm.
7830
7831 2008-10-02  Mark Probst  <mark.probst@gmail.com>
7832
7833         * method-to-ir.c, inssel.brg, mini-trampolines.c: Use
7834         mono_method_get_vtable_index() to get the vtable index.
7835
7836 2008-10-02  Mark Probst  <mark.probst@gmail.com>
7837
7838         * method-to-ir.c (mono_method_to_ir2): Don't create native
7839         wrappers for array methods, because they're never called (and if
7840         they were called they wouldn't work).
7841
7842 2008-10-02  Mark Probst  <mark.probst@gmail.com>
7843
7844         * method-to-ir.c (mono_method_to_ir2): Array methods are
7845         special-cased and must not be invoked indirectly via the (M)RGCTX
7846         when generic sharing is turned on.  Fixes #431413.
7847
7848 2008-10-01  Mark Probst  <mark.probst@gmail.com>
7849
7850         * method-to-ir.c: When generic sharing is active, call
7851         non-interface virtual generic methods via the standard trampoline.
7852
7853         * mini-trampolines.c: Handle virtual generic shared methods.
7854
7855         * mini.h, mini-x86.c, mini-x86.h: New argument for
7856         mono_arch_build_imt_thunk() which is non-NULL for virtual generic
7857         method thunks and which is the trampoline to call if the lookup
7858         fails.  Enable the virtual generic method thunk for x86.
7859
7860         * mini-amd64.c, mini-arm.c, mini-ia64.c, mini-sparc.c,
7861         mini-ppc.c (mono_arch_build_imt_thunk): Add the additional
7862         argument but assert that it's NULL, because these archs don't yet
7863         implement the virtual generic method thunk.  Changes in the IMT
7864         thunk data structures.
7865
7866 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
7867
7868         * aot-compiler.c (emit_globals): Avoid invalid characters in
7869         the static linking symbol.
7870
7871         * objects.cs: Add a test for the range check optimization. Fix warnings.
7872
7873         * branch-opts.c (mono_if_conversion): Add back the 'optimize range checks'
7874         optimization from the current JIT.
7875
7876         * method-to-ir.c (mini_emit_inst_for_method): Decompose String.Length
7877         later in decompose_array_access_opts () to allow more optimizations.
7878
7879         * method-to-ir.c (mono_handle_soft_float): Rename this to 
7880         mono_decompose_soft_float () for consistency.
7881
7882         * mini-ops.h: Fix arguments of OP_STRLEN.
7883
7884         * method-to-ir.c (save_cast_details): Extract the cast details saving code
7885         into a separate function.
7886         (reset_cast_details): Ditto.
7887         (handle_unbox): Save cast details. Fixes #431254.
7888
7889         * method-to-ir.c: Remove some obsolete FIXMEs.
7890
7891 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
7892
7893         * ir-emit.h (alloc_dreg): Write a warning before crashing.
7894
7895 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
7896
7897         * mini-codegen.c: More work on macros to make them
7898         ready for multiple regbanks.
7899
7900 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
7901
7902         * method-to.ir.c (mono_type_to_regmove): Remove static modifier.
7903
7904         * mini.h: Export mono_type_to_regmove. Fix signature of mono_regname_full.
7905
7906 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
7907
7908         * mini-codegen.c (mono_spillvar_offset): Proper support for
7909         multiple regbanks.
7910
7911 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
7912
7913         * mini-amd64.c (mono_arch_emit_epilog): Remove some duplicated code from
7914         the stack overflow changes.
7915
7916 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
7917
7918         * mini-codegen.c: Make all bank macros depend on reg_bank.
7919
7920         * mini-codegen.c (mono_local_regalloc): Make free mask
7921         initialization regbank aware.
7922
7923 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
7924
7925         * mini-codegen.c (mono_local_regalloc): Extract callee
7926         mask selection to a function and make it regbank aware.
7927
7928 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
7929
7930         * mini-codegen.c (mono_local_regalloc): Changed the cloberring
7931         code to deal with many regbanks.
7932
7933 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
7934
7935         * mini-codegen.c: More fp->regbank changes.
7936
7937 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
7938
7939         * mini-codegen.c: Change asserts to use MONO_NUM_REGBANKS instead
7940         of a hardcoded constant.
7941
7942 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
7943
7944         * method-to-ir.c (type_from_stack_type): Fix typo.
7945
7946 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
7947
7948         * mini-ia64.c (emit_move_return_value): Convert float return values to
7949         double.
7950
7951         * objects.cs: Add a new test.
7952         
7953         * mini-ia64.c (mono_arch_allocate_vars): Disable fp elimination for
7954         VARARG methods to fix an assert later.
7955
7956         * mini-mips.h mini-mips.c mini-ops.h cpu-mips.md: Update the mips back
7957         end so it at least compiles.
7958
7959 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
7960
7961         * method-to-ir.c (emit_optimized_ldloca_ir): Fix this.
7962
7963 2008-09-28  Rodrigo Kumpera  <rkumpera@novell.com>
7964
7965         * method-to-ir.c (mono_method_to_ir2): Extract the ldloca + initobj
7966         optimization to a new function (emit_optimized_ldloca_ir) and enable
7967         it for both ldloca and ldloca_s.
7968
7969 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
7970
7971         * method-to-ir.c (mono_method_to_ir2): Remove an unnecessary assert in the
7972         gshared CASTCLASS code.
7973
7974         * driver.c (mono_main): Add a workaround for shutdown crashes seen on
7975         amd64, where the libc stack unwinder encounters stack frames referring to
7976         native code in unmapped memory.
7977
7978         * method-to-ir.c (mini_emit_check_array_type): Add support for generic
7979         sharing.
7980
7981         * generics.cs: Add new test.
7982
7983 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
7984
7985         * mini-arm.h driver.c: Print the fp model when using --version on arm. Also,
7986         add a check that one of the ARM_FPU_ constants is defined.
7987
7988         * mini-exceptions.c (mono_handle_soft_stack_ovf): Really fix the build.
7989         
7990         * mini-exceptions.c: Fix build on non-altstack platforms.
7991
7992         * method-to-ir.c (mono_method_to_ir2): Fix aot support for the
7993         sharing of vtypes.
7994
7995         * ir-emit.h: Add a comment to NEW_PCONST.
7996
7997         * mini-exceptions.c (mono_altstack_restore_prot): Fix a warning.
7998
7999         * mini.h (MonoJitDomainInfo): Move some fields here from MonoDomain.
8000
8001         * mini.c aot-runtime.c method-to-ir.c driver.c mini-trampolines.c: Update
8002         after the changes to MonoJitDomainInfo.
8003
8004 2008-09-27  Mark Probst  <mark.probst@gmail.com>
8005
8006         * mini-ppc.c, tramp-ppc.c, mini-ppc.h: Implement generic code sharing.
8007
8008 2008-09-27  Mark Probst  <mark.probst@gmail.com>
8009
8010         * mini-ppc.c: Compiler warning fixes.
8011
8012 2008-09-27  Mark Probst  <mark.probst@gmail.com>
8013
8014         * mini-ppc.c: Special handling for 1/2 byte structs on Darwin only
8015         for pinvokes.
8016
8017 2008-09-27  Mark Probst  <mark.probst@gmail.com>
8018
8019         * exceptions-ppc.c, mini-ppc.h: Compile
8020         mono_arch_handle_altstack_exception() on Darwin, too.
8021
8022 2008-09-27  Mark Probst  <mark.probst@gmail.com>
8023
8024         * method-to-ir.c (mono_emit_rgctx_method_call_full): Must also
8025         work on archs which don't have generic sharing implemented, only
8026         without the vtable_arg.
8027
8028 2008-09-26  Mark Probst  <mark.probst@gmail.com>
8029
8030         * mini.c: Added comment explaining why delegate ctor icall
8031         wrappers are compiled.
8032
8033 2008-09-26  Mark Probst  <mark.probst@gmail.com>
8034
8035         * mini.c: Don't produce trampolines to delegate ctor icall
8036         wrappers but compile them upfront.
8037
8038 Fri Sep 26 17:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
8039
8040         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: amd64 support code for calling a
8041         runtime-set function when going back to managed code. Currently this
8042         is used to set back the protection on the soft ovf pages and/or to
8043         throw the stack overflow exception that happened in unmanaged code.
8044
8045 Fri Sep 26 16:46:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
8046
8047         * tramp-x86.c, mini-x86.h, mini-x86.c: x86 support code for calling a
8048         runtime-set function when going back to managed code. Currently this
8049         is used to set back the protection on the soft ovf pages and/or to
8050         throw the stack overflow exception that happened in unmanaged code.
8051
8052 Fri Sep 26 16:34:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
8053
8054         * mini.h, mini.c, mini-trampolines.c, mini-exceptions.c: added
8055         the support code for restoring stack protection after stack overflows
8056         that happen in unmanaged code. Don't set the exec permission on the
8057         soft overflow area.
8058
8059 2008-09-26  Zoltan Varga  <vargaz@gmail.com>
8060
8061         * mini-trampolines.c (mono_delegate_trampoline): Add wrappers even if
8062         delegate->method_ptr is set. Fixes #428054.
8063
8064 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
8065
8066         * tests.cs: Rename to ratests.cs.
8067
8068         * method-to-ir.c: Merge the emit_get_rgctx () calls into the 
8069         emit_get_rgctx_... functions.
8070
8071 2008-09-25  Mark Probst  <mark.probst@gmail.com>
8072
8073         * method-to-ir.c: Eliminated macro EMIT_GET_RGCTX.
8074
8075 2008-09-25  Mark Probst  <mark.probst@gmail.com>
8076
8077         * mini-trampolines.c (mono_magic_trampoline): Unwrap wrappers
8078         before asserting that method is sharable.
8079
8080 2008-09-25  Mark Probst  <mark.probst@gmail.com>
8081
8082         * method-to-ir.c, mini.c, jit-icalls.c: New function for checking
8083         whether method needs a static RGCTX wrapper used instead of
8084         complex conditions.
8085
8086         * generic-sharing.c, mini.h: A few functions moved to
8087         metadata/generic-sharing.c.
8088
8089 2008-09-25  Mark Probst  <mark.probst@gmail.com>
8090
8091         * method-to-ir.c, mini.c, mini-exceptions.c, mini-trampolines.c:
8092         Generic code sharing for value types, which essentially means
8093         treating value type methods like static methods.  The RGCTX is
8094         passed in the same way.
8095
8096 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
8097
8098         * method-to-ir.c (mono_method_to_ir2): Avoid an assert in the NEWOBJ
8099         opcode when creating multi-dimensional arrays of open types.
8100
8101         * generic-sharing.c (mono_method_check_context_used): Handle arrays of
8102         open generic types.
8103
8104         * generics.cs: Add a test.
8105
8106         * mini-codegen.c: Use macros everywhere for checking floats instead of == 'f'.
8107
8108 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
8109
8110         * mini.h (MonoCompile): Add 'disable_vreg_to_lvreg' flag.
8111
8112         * mini.c (mini_method_compile): Set it when running under the debugger. 
8113
8114         * method-to-ir.c (mono_handle_global_vregs): Disable global->local
8115         vreg optimization if the flag is set.
8116
8117         * driver.c (mono_main): Add --attach= option to pass options to
8118         the attach agent.
8119
8120         * mini.c (sigquit_signal_handler): Start the attach agent.
8121
8122         * ssapre.c: Disable this to save space since it is not yet ported to
8123         linear IR.
8124
8125         * regalloc2.c: Disable this to save space.
8126
8127         * mini.h (MonoJitStats): Remove unused analyze_stack_repeat.
8128
8129 Wed Sep 24 16:01:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
8130
8131         * decompose.c, method-to-ir.c, mini-codegen.c, regalloc2.c: make
8132         the -v option useful again.
8133
8134 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
8135
8136         * mini-amd64.c (mono_arch_output_basic_block): Add support for
8137         --break-at-bb.
8138
8139         * inssel.brg (mini_emit_castclass): Avoid the szarray!=array checks for
8140         arrays of arrays. Fixes #428406.
8141
8142         * method-to-ir.c (mini_emit_castclass): Ditto.
8143
8144         * objects.cs: Add new test.
8145         
8146 2008-09-23  Rodrigo Kumpera  <rkumpera@novell.com>
8147
8148         * method-to-ir.c (type_to_eval_stack_type): The code path for the new JIT
8149         was wrong at it choked against target_type_is_incompatible for byref types.
8150
8151 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
8152
8153         * mini-codegen.c: Use 'bank' macros instead of 'is_fp' macros in most 
8154         places.
8155
8156 Tue Sep 23 15:31:45 CEST 2008 Paolo Molaro <lupus@ximian.com>
8157
8158         * mini-exceptions.c: update a few more exceptions-related counters.
8159
8160 Tue Sep 23 15:28:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
8161
8162         * aot-runtime.c, method-to-ir.c, mini.c, mini-trampolines.c: use the
8163         new functions to allocate from persistent mempools.
8164
8165 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
8166
8167         * mini.h regalloc.h mini-codegen.c: Generalize the regalloc code to allow 
8168         multiple register banks in the future.
8169
8170         * mini-codegen.c (mono_local_regalloc): Fix a warning.
8171
8172 2008-09-22  Rodrigo Kumpera  <rkumpera@novell.com>
8173
8174         * mini.c (type_to_eval_stack_type): Remove duplicated function.
8175
8176         * method-to-ir.c (type_to_eval_stack_type): Make this version compatible with both JIT.
8177
8178         * mini.h: Export type_to_eval_stack_type.
8179
8180         This function was nearly duplicated in method-to-ir.c and mini.c. The difference
8181         is only ins->klass of byref types.
8182
8183 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
8184
8185         * method-to-ir.c (mini_emit_memset): Use a default alignment of 4.
8186         (mini_emit_memcpy2): Ditto.
8187
8188         * mini-amd64.c: Fix a warning.
8189
8190 2008-09-21  Mark Probst  <mark.probst@gmail.com>
8191
8192         * exceptions-ppc.c (mono_arch_get_call_filter): Fixed stack frame
8193         linking.
8194
8195 2008-09-19  Rodrigo Kumpera  <rkumpera@novell.com>
8196
8197         * method-to-ir.c: Extract stloc micro-optimization to a
8198         function and apply it to all cases.
8199
8200 2008-09-19  Mark Probst  <mark.probst@gmail.com>
8201
8202         * method-to-ir.c: Don't fail generic code sharing in cases we
8203         already support.
8204
8205 2008-09-18  Mark Probst  <mark.probst@gmail.com>
8206
8207         * mini-ppc.c: Handle structs in tailcalls on Darwin.
8208
8209 Tue Sep 16 21:07:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
8210
8211         * *.c, *.md, mini-ops.h: introduced relaxed_nop opcode for spin wait
8212         implementation.
8213
8214 Tue Sep 16 16:39:16 CEST 2008 Paolo Molaro <lupus@ximian.com>
8215
8216         * trace.c: make tracing more useful and correct, with per-thread
8217         id and indent info.
8218
8219 2008-09-15  Mark Probst  <mark.probst@gmail.com>
8220
8221         * mini-ppc.c (mono_arch_emit_call): Convert floats to R4 when
8222         doing a method call and the argument is an R4.
8223
8224 2008-09-14  Zoltan Varga  <vargaz@gmail.com>
8225
8226         * aot-compiler.c (add_wrappers): Do not generate runtime invoke wrappers for
8227         generic methods.
8228
8229 2008-09-13  Mark Probst  <mark.probst@gmail.com>
8230
8231         * mini-ppc.c: Convert result to single for OP_ICONV_TO_R4.
8232
8233 2008-09-12  Zoltan Varga  <vargaz@gmail.com>
8234
8235         * mini.h (MONO_IS_JUMP_TABLE): Handle GOT_ENTRY.
8236         (MONO_JUMP_TABLE_FROM_INS): Ditto.
8237
8238 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
8239
8240         * driver.c: Add a --agent argument (not supported yet) to load managed
8241         agent assemblies before loading the main assembly, similarly to how the
8242         Java VM handles agents.
8243
8244 2008-09-11  Mark Probst  <mark.probst@gmail.com>
8245
8246         * mini-ppc.c (mono_arch_allocate_vars): Use arch-independent
8247         function to do stack layout of local variables.
8248
8249 2008-09-11  Mark Probst  <mark.probst@gmail.com>
8250
8251         * mini-ppc.c (calculate_sizes): Bugfix in sigcookie position
8252         calculation.
8253
8254 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
8255
8256         * method-to-ir.c ssa2.c mini.c mini-amd64.c decompose.c ssa.c abcremoval.c
8257         abcremoval2.c branch-opts.c driver.c dominators.c: Disable parts of the
8258         JIT if DISABLE_JIT is defined.
8259
8260         * Makefile.am: Avoid compiling/linking in inssel.c if DISABLE_JIT is
8261         defined.
8262
8263 2008-09-10  Mark Probst  <mark.probst@gmail.com>
8264
8265         * iltests.il.in: Disable the fconv test on PPC (the result is
8266         undefined according to ECMA).
8267
8268 2008-09-10  Mark Probst  <mark.probst@gmail.com>
8269
8270         * iltests.il.in: Enable tail call tests for PPC.
8271
8272         * mini.h: Add variable for storing incoming valuetype argument
8273         addresses for tail calls.
8274
8275         * mini-ppc.c: Implement valuetype arguments and return values for
8276         tailcalls on Linux.
8277
8278 2008-09-09  Mark Probst  <mark.probst@gmail.com>
8279
8280         * mini-ppc.c: Partially implement tail calls (struct arguments and
8281         return values not supported).
8282
8283         * method-to-ir.c: Enable tail calls on PPC.
8284
8285 2008-09-08  Zoltan Varga  <vargaz@gmail.com>
8286
8287         * aot-compiler.c (emit_wrapper_info): Omit the klass name from
8288         runtime-invoke wrappers to work around the problem of them getting
8289         assigned to a random class.
8290
8291         * aot-runtime.c (mono_aot_get_method): Ditto.
8292         
8293 2008-09-07  Zoltan Varga  <vargaz@gmail.com>
8294
8295         * mini-exceptions.c mini-mips.h mini-s390.h exceptions-mips.c: Kill
8296         the CUSTOM_EXCEPTION_HANDLING and CUSTOM_STACK_WALK defines.
8297
8298 2008-09-07  Mark Probst  <mark.probst@gmail.com>
8299
8300         * method-to-ir.c (mono_method_to_ir2): Disable tail calls for PPC
8301         until they're implemented properly.
8302
8303         * exceptions-ppc.c: Use arch-independent exception-handling code
8304         instead of custom one.
8305
8306         * exceptions-ppc.c, mini-ppc.c, mini-ppc.h: Bug fixes and changes
8307         for Linear IR.
8308
8309         * tramp-ppc.c, mini-ppc.c: Fixed warnings.
8310
8311         * decompose.c, aot-runtime.c, aot-compiler.c: PPC code also
8312         applies when __powerpc__ is defined.
8313
8314 2008-09-06  Zoltan Varga  <vargaz@gmail.com>
8315
8316         * aot-runtime.c (mono_aot_get_method): Add another cache mapping wrapper
8317         methods to their code to avoid computing the full name of wrappers and
8318         doing a lookup in a string hash table.
8319
8320 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
8321
8322         * method-to-ir.c: Remove the CHECK_BBLOCK () stuff it is not needed since
8323         we identify bblocks before method_to_ir () is ran.
8324
8325         * branch-opts.c (mono_optimize_branches): Avoid nullifying the exit bblock.
8326         Also avoid optimizing branches pointing to themselves.
8327
8328         * mini.c (mini_method_compile): Ditto. Fixes #422947.
8329
8330 2008-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
8331
8332         * driver.c (mono_main): Enable the new verifier under core-clr and cas.
8333
8334 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
8335
8336         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Implement this.
8337         (mono_arch_patch_plt_entry): Fix the calculation of the jump_entry.
8338         (mono_arch_get_nullified_class_init_trampoline): Return 'code' instead of
8339         'buf'.
8340
8341         * aot-compiler.c (emit_plt): Fix the arm plt entries, previously they all 
8342         jumped to the same entry in plt_jump_table.
8343
8344 2008-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
8345
8346         * method-to-ir.c (initialize_array_data): Handle field with RVA from
8347         dynamic images.
8348
8349 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
8350
8351         * method-to-ir.c (handle_isinst): Do the assignment at the beginning, so the
8352         other assignment can be if converted. Saves 1.5% on corlib size and fixes
8353         #421807.
8354
8355 2008-08-29  Geoff Norton  <gnorton@novell.com>
8356
8357         * aot-compiler.c: The Mach/ARM compiler doesn't understand the bss
8358         segment, and doesn't properly handle .space as .text.  Fixes
8359         AOT Mach/ARM
8360
8361 2008-08-29  Geoff Norton  <gnorton@novell.com>
8362
8363         * mini.c: Disable the mach exception handler when running on 
8364         ARM
8365
8366 2008-08-29  Geoff Norton  <gnorton@novell.com>
8367
8368         * aot-compiler.c: Patch from Renaldas Zioma to properly register 
8369         globals on Darwin/ARM
8370
8371 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
8372
8373         * mini.c: Avoid not initializing the runtime when doing AOT compilation, 
8374         since too many things depend on it. Instead, call 
8375         mono_runtime_set_no_exec ().
8376         
8377         * mini.c (mono_create_tls_get): Call mono_alloc_preg (cfg) when running with
8378         the new JIT.
8379
8380         * aot-compiler.c: Add an 'asm-only' AOT option.
8381
8382         * mini.c: Avoid initializing the runtime when doing AOT compilation.
8383                 
8384         * aot-compiler.c (compile_method): Disable gshared support for now as it
8385         doesn't yet work.
8386
8387 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
8388
8389         * mini-amd64.h : Fix a compiler warning.
8390
8391         * exceptions-amd64.c (mono_arch_unwindinfo_install_unwind_info) :
8392           Changed to use a callback function to retrieve the unwind info.
8393           This avoids problems observed when code blocks were removed by
8394           unloading an app domain.
8395
8396         * mini-amd64.c (mono_arch_cpu_optimizazions) : Removing the peephole 
8397           and branch excludes for Winx64.  The fix in exceptions-amd64.c allows them
8398           to work properly.
8399
8400         Contributed under MIT/X11 license.
8401
8402 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
8403
8404         * mini-amd64.c (mono_arch_output_basic_block) : Fix the OP_X86_PUSH_OBJ
8405           case to keep the stack aligned to 8.
8406
8407         Contributed under MIT/X11 license.
8408
8409 2008-08-26  Zoltan Varga  <vargaz@gmail.com>
8410
8411         * aot-runtime.c (mono_aot_get_method): Add a cache for wrapper names to
8412         avoid repeated linear searches.
8413
8414 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
8415
8416         * aot-compiler.c (add_wrappers): Avoid calling get_runtime_invoke with
8417         methods it can't handle.
8418         
8419         * aot-compiler.c (add_method): Avoid adding a method twice.
8420         (add_wrappers): Add runtime invoke wrappers for all methods.
8421
8422         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): New
8423         function to create an aot-compatible version of this trampoline.
8424
8425         * aot-compiler.c aot-runtime.c: Add support for AOT rgctx fetch trampolines.
8426
8427 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
8428
8429         * aot-compiler.c (compile_method): Skip wrappers of generic icalls.
8430
8431         * method-to-ir.c (mono_method_to_ir2): Replace an assert in UNBOX_ANY
8432         with a generic sharing failure.
8433
8434         * aot-compiler.c (emit_klass_info): Call mono_class_get_nested_types ().
8435
8436         * method-to-ir.c (mono_method_to_ir2): Rethrow the correct exception in
8437         CEE_RETHROW. Fixes #419634.
8438
8439         * mini.c (mono_method_to_ir): Ditto.
8440
8441         * exceptions.cs: Add a new test.
8442         
8443         * generic-sharing.c (mini_type_stack_size): Always pass TRUE as allow_open
8444         to mono_type_stack_size_internal () since some callers might not pass in
8445         an rgctx.
8446
8447         * mini-x86.c (mono_arch_emit_prolog): Store the rgctx before calling
8448         instrument_prolog. Fixes #419878.
8449
8450         * mini.c (mono_compile_create_var_for_vreg): Make the lvars representing
8451         doubles in soft float mode volatile.
8452
8453 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
8454
8455         * ir-emit.h (NEW_ARGSTORE): Use cfg->args and cfg->arg_types to fix the build.
8456
8457         * method-to-ir.c (mono_save_args): Use ARGSTORE instead of TEMPSTORE
8458         to handle soft float correctly.
8459
8460         * tramp-arm.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Implement
8461         the fast path.
8462
8463         * mini.h (struct MonoCallInst): Add dynamic_imt_arg boolean field.
8464
8465         * exceptions-arm.c (mono_arch_find_jit_info): Set ctx->regs [ARMREG_R11]
8466         to sp, since the generics catch code requires it.
8467
8468         * mini-arm.h (MONO_ARCH_VTABLE_REG): Use R0 for this to avoid needless
8469         copying.
8470
8471         * method-to-ir.c (emit_imt_argument): Pass imt_arg to 
8472         mono_arch_emit_imt_argument ().
8473
8474         * mini-<ARCH>.c (mono_arch_emit_imt_argument): Add an 'imt_arg' argument.
8475
8476         * mini-arm.c tramp-arm.c: Generic sharing updates.
8477
8478 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
8479
8480         * mini-arm.c: Fix the arm build.
8481
8482         * generic-sharing.c (mini_type_get_underlying_type): New helper function
8483         handling enums, generic instances and generic sharing.
8484         (mini_type_stack_size_full): Ditto.
8485
8486         * mini-amd64.c mini-x86.c mini-arm.c: Use the new functions.
8487         
8488         * mini.h (struct): Add 'uses_rgctx_reg' and 'uses_vtable_reg' fields.
8489
8490         * method-to-ir.c: Set the new fields when using RGCTX_REG/VTABLE_REG.
8491
8492         * tramp-arm.c: Implement the rgctx fetch and the generic class init 
8493         trampolines.
8494
8495         * mini-arm.c: Various small generic sharing changes.
8496
8497         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline): Implement
8498         this for x86.
8499         (mono_arch_create_trampoline_code): Remove most of the GENERIC_CLASS_INIT
8500         custom code.
8501
8502         * mini-trampolines.c (mono_create_generic_class_init_trampoline): New
8503         helper function to return a generic class init trampoline.
8504
8505         * method-to-ir.c mini.c: Use it.
8506         
8507         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline): New
8508         arch-specfic function to return a generic class init trampoline.
8509
8510         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Remove most of
8511         the GENERIC_CLASS_INIT custom code.
8512
8513         * method-to-ir.c (mono_method_to_ir2): If RGCTX_REG is not defined, that is
8514         a fatal error, not a sharing failure.
8515
8516         * tramp-<ARCH>.c (mono_arch_get_rgctx_lazy_fetch_offset): Removed, no longer
8517         needed.
8518
8519         * mini-trampolines.c (mono_rgctx_lazy_fetch_trampoline): Get the additional
8520         trampoline argument from MONO_ARCH_VTABLE_REG.
8521
8522         * tramp-x86.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
8523         order of the arguments to the C trampoline: pass 'slot' as the trampoline
8524         argument, and pass the vtable in VTABLE_REG.
8525
8526         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
8527         order of the arguments to the C trampoline: pass 'slot' as the trampoline
8528         argument, and pass the vtable in VTABLE_REG.
8529         (mono_arch_create_trampoline_code_full): Remove some special casing for
8530         the rgctx fetch trampoline.
8531
8532         * mini.c (mono_method_to_ir): Fix the STELEM_ANY+null value optimization.
8533         Fixes #419273.
8534
8535         * iltests.il: Add a test for it.
8536
8537 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
8538
8539         * aot-compiler.c (compile_method): Enable AOT support for generics sharing.
8540
8541         * method-to-ir.c (mono_method_to_ir2): Remove an aot restriction which is
8542         no longer needed.
8543
8544         * mini-trampolines.c (mono_magic_trampoline): Add a sync wrapper here,
8545         use mono_jit_info_table_find () to avoid recursion.
8546         (mono_delegate_trampoline): Add a sync wrapper here.
8547
8548         * method-to-ir.c (mono_method_to_ir2): Don't call mono_ldftn_nosyc
8549         here.
8550
8551         * mini.c (mono_method_to_ir): Ditto.
8552         
8553         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Remove
8554         add_sync_wrapper argument. Don't add a sync wrapper here.
8555         (mono_create_jump_trampoline): Don't add a sync wrapper here.
8556
8557         * jit-icalls.c (mono_ldftn_nosync): Removed, no longer needed.
8558         
8559 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
8560
8561         * exceptions-amd64.c (seh_handler):  For Winx64 adding missing copy 
8562           of nonvolatile registers back from MonoContext to CONTEXT.
8563
8564         Contributed under MIT/X11 license.
8565
8566 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
8567
8568         * mini-amd64.c (mono_arch_get_delegate_invoke_impl):  When shifting the
8569           arguments on Winx64 there are only 4 argument registers.  For this
8570           logic to work the last argument must be pulled from the stack.  
8571
8572         Contributed under MIT/X11 license.
8573
8574 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
8575
8576         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
8577
8578         * aot-runtime.c aot-compiler.c patch-info.h mini.c: Get rid of
8579         MONO_PATCH_INFO_WRAPPER, encode/decode wrapper methods like the others in
8580         encode/decode_method_ref ().
8581
8582         * aot-compiler.c (encode_patch): Handle STATIC_RGCTX_INVOKE wrappers.
8583
8584         * aot-runtime.c (decode_patch): Ditto.  
8585
8586         * mini.c (mono_resolve_patch_target): Handle RGCTX_FETCH sub-patches of type
8587         MONO_PATCH_INFO_METHOD.
8588
8589         * aot-runtime.c (decode_exception_debug_info): Decode the contents of
8590         MonoGenericJitInfo.
8591
8592         * aot-compiler.c (emit_exception_debug_info): Emit the contents of
8593         MonoGenericJitInfo.
8594
8595         * method-to-ir.c (emit_imt_argument): Fix AOT+gshared support.
8596
8597         * mini-amd64.c (add_valuetype): Use a dummy gsctx if we didn't receive
8598         one from the caller.
8599
8600         * aot-runtime.c (decode_generic_inst): New function to decode and
8601         return a interned generic inst.
8602         (decode_klass_ref): Use it.
8603         (decode_method_ref): Ditto.
8604
8605         * aot-compiler.c (emit_exception_debug_info): Save 
8606         jinfo->has_generic_jit_info too.
8607
8608 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
8609
8610         * mini-ia64.c (mono_arch_output_basic_block): Add OP_FCONV_TO_I.
8611
8612         * iltests.il.in: Add a test for fconv_to_i.
8613
8614         * liveness.c: Disable the liveness2 pass for now to save space.
8615
8616         * regalloc2.c: Include mempool-internals.h to fix warnings.
8617
8618         * aot-compiler.c (encode_method_ref): Encode the context of generic
8619         instance methods.
8620
8621         * aot-runtime.c (decode_method_ref): Inflate generic methods using
8622         the context saved in the aot file.
8623
8624         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
8625
8626         * mini-x86.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
8627
8628         * method-to-ir.c (mono_method_to_ir2): When using CEE_JMP, make arguments
8629         volatile so they won't be optimized away.
8630
8631 2008-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
8632
8633         * ssa.c:
8634         * ssa2.c:
8635         * mini.c:
8636         * regalloc2.c:
8637         * dominators.c: Remove duplicated functions that now are in
8638         mempool-internals.h.
8639
8640 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
8641
8642         * aot-compiler.c: Fix warnings.
8643
8644         * aot-runtime.c (decode_klass_ref): Add support for VARs/MVARs.
8645
8646         * aot-compiler.c (encode_klass_ref): Encode is_method too for VARs/MVARs.
8647
8648         * method-to-ir.c (emit_get_rgctx_method): Use MONO_PATCH_INFO_METHODCONST
8649         as the patch type.
8650
8651         * mini.c (mono_resolve_patch_target): Ditto.
8652         
8653         * aot-compiler.c (encode_patch): Add support for RGCTX_FETCH.
8654         (encode_klass_ref): Add support for encoding VARs/MVARs.
8655
8656         * mini.c (mono_patch_info_dup_mp): Handle RGCTX_FETCH.
8657
8658         * aot-runtime.c (decode_patch_info): Rename to 'decode_patch'. Split out
8659         the handling of the got entries into a separate 'decode_got_entry' function.
8660         Add support for RGCTX_FETCH.
8661
8662         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RDI since RAX is
8663         clobbered by the trampoline code.
8664
8665         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RAX since that is
8666         not clobbered by the indirect calling code.
8667
8668 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
8669
8670         * mini-x86.c (mono_arch_patch_code): Handle RGCTX_FETCH/GENERIC_CLASS_INIT
8671         to fix the build.
8672
8673 2008-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
8674
8675         * method-to-ir.c (mono_emit_method_call_full): Alloc the constructor
8676         signature using the compilation mempool otherwise we would leak it.
8677
8678 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
8679
8680         * method-to-ir.c (mono_method_to_ir2): Emit the generic class inits using
8681         mono_emit_abs_call ().
8682
8683         * patch-info.h: Add GENERIC_CLASS_INIT.
8684
8685         * mini.c (mono_resolve_patch_target): Handle GENERIC_CLASS_INIT.
8686
8687         * mini-amd64.c (emit_call_body): Treat abs calls which have a patch info
8688         as their target as a near call.
8689
8690         * mini.c (mono_codegen): Handle patches stored in cfg->abs_patches in the
8691         ABS handling code.
8692         (mono_resolve_patch_target): Add support for MONO_PATCH_INFO_RGCTX_FETCH.
8693
8694         * method-to-ir.c (mono_emit_abs_call): New helper function which emits a
8695         call to a runtime function described by a patch.
8696
8697         * method-to-ir.c: Emit rgctx entry fetches and class init trampolines using
8698         mono_emit_abs_call, this has the advantage that the ABS handling code in
8699         mono_codegen () can handle them both, and can handle other stuff in the
8700         future without additional code.
8701
8702         * mini.h (struct MonoJumpInfoRgctxEntry): New structure describing an rgctx
8703         entry.
8704         (MonoCompile): Add 'abs_patches' hashtable, which contains patches describing
8705         abs addresses.
8706
8707         * mini.h: Add missing bblock related prototypes.
8708
8709         * mini.h (MonoCompile): Remove unused reverse_inst_list and
8710         reverse_inst_list_len fields.
8711
8712         * mini.c: Refactor this file a bit by moving branch optimizations to 
8713         branch-opts.c.
8714
8715         * method-to-ir.c: Merge generic sharing changes missed earlier.
8716
8717         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST.
8718
8719         * aot-runtime.c (decode_patch_info): Refactor the code dealing with the
8720         shared patches. Process METHODCONST as a shared patch.
8721
8722         * liveness.c (mono_analyze_liveness): Disable the liveness2 code for now
8723         as it crashes on the 2.0 mscorlib.
8724
8725         * aot-compiler.c (is_shared_got_patch): Revert the last change as it seems
8726         to cause crashes.
8727         
8728         * aot-compiler.c: Use is_plt_patch () in a few additional places.
8729         (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST, which is generated
8730         by IMT.
8731
8732         * aot-compiler.c: Reorganize the got handling code to be a bit more
8733         understandable.
8734
8735 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
8736
8737         * aot-compiler.c: Make the patch_to_plt_offset hash table use 
8738         mono_patch_info_equals/hash, and use it to massively simplify
8739         get_plt_index ().
8740
8741         * mini.c (mono_patch_info_hash): Simplify this and add support for
8742         more patch types.
8743
8744         * patch-info.h: Rename RGCTX_LAZY_FETCH_TRAMPOLINE to just RGCTX_FETCH.
8745
8746         * mini.c aot-compiler.c aot-runtime.c: Revert the LAZY_FETCH_TRAMPOLINE
8747         handling code, since an offset is not enough to identify a trampoline.
8748
8749         * method-to-ir.c: Remove some g_assert (!cfg->compile_aot) lines.
8750
8751 2008-08-17  Mark Probst  <mark.probst@gmail.com>
8752
8753         * mini.c (mono_op_imm_to_op): Add case for OP_IMUL_IMM.
8754
8755         * method-to-ir.c (mono_method_to_ir2): Decompose OP_CKFINITE.
8756
8757         * mini-ops.h: Argument and result types for OVF_CARRY ops.
8758
8759         * decompose.c: PPC decompositions for various ops.
8760
8761         * cpu-ppc.md, inssel-ppc.brg, mini-ppc.c: PPC changes for Linear IL.
8762
8763 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
8764
8765         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Make this
8766         call the generic trampoline code using a call, instead of a jump, to
8767         remove some special casing from the generic trampoline code.
8768
8769         * mini.c (mono_resolve_patch_target): Handle LAZY_FETCH_TRAMPOLINE.
8770         (mono_codegen): Ditto.
8771
8772         * aot-compiler.c aot-runtime.c: Ditto.
8773
8774         * patch-info.h: Add MONO_PATCH_INFO_RGCTX_LAZY_FETCH_TRAMPOLINE.
8775
8776         * mini-trampolines.c (mono_find_rgctx_lazy_fetch_trampoline_by_addr): New
8777         helper function to find the offset corresponding to a lazy fetch trampoline.
8778
8779         * mini.h (MonoCompile): Add 'orig_method' field to hold the original method
8780         when doing generic sharing.
8781
8782         * aot-compiler.c: Use cfg->orig_method instead of cfg->method in a lot of
8783         places.
8784         
8785         * mini.c (mono_create_rgctx_lazy_fetch_trampoline): Move this to
8786         mini-trampolines.c to be with the other trampoline creation functions.
8787
8788         * method-to-ir.c (mono_emit_method_call): Remove the 'signature' argument
8789         as it is equal to method->signature in most cases, add a 
8790         mono_emit_method_call_full variant which takes a signature and an imt
8791         argument as well.
8792
8793 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
8794
8795         * jit-icalls.c (mono_helper_compile_generic_method): Don't pass the context
8796         to this function, since it could be computed easily from the method 
8797         argument.
8798         (mono_helper_compile_generic_method_wo_context): Removed, not needed any
8799         more.
8800
8801         * method-to-ir.c mini.c: Remove references to 
8802         compile_generic_method_wo_context.
8803
8804         * method-to-ir.c (mono_method_to_ir2): Enable AOT for virtual
8805         generic method calls.
8806         
8807         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_1 for 1
8808         dimensional non-szarrays.
8809
8810         * mini.c (mini_init): Register mono_array_new_1.
8811
8812         * jit-icalls.c (mono_array_new_1): New jit icall.
8813
8814         * mini-trampolines.c (mono_magic_trampoline): For jumps, patch the GOT entries
8815         pointing to the method.
8816
8817         * aot-runtime.c (mono_aot_get_method_from_token): Register GOT slots holding
8818         method addresses belonging to METHOD_JUMP patches in the 
8819         jump_target_got_slot_hash.
8820         (mono_aot_load_method): Ditto.
8821
8822         * aot-compiler.c (compile_method): Allow AOT compilation of methods with
8823         METHOD_JUMP patches.
8824
8825         * mini.c (mini_create_jit_domain_info): New helper function which 
8826         initializes/frees domain->runtime_info.
8827         (mini_free_jit_domain_info): Ditto.
8828         (mini_init): Install the domain hook functions with the runtime.
8829
8830         * mini.h (MonoJitDomainInfo): New structure which stores the domain specific
8831         information maintained by the JIT.
8832
8833         * mini.c (mono_resolve_patch_target): For PATCH_INFO_METHOD_JUMP, move the
8834         insertion into jump_table_hash into mono_codegen (), also implement proper
8835         locking.
8836
8837         * method-to-ir.c (mono_method_to_ir2): Don't disable AOT for CEE_JMP and
8838         tail calls, it is already done by the aot code.
8839         
8840         * method-to-ir.c (mono_method_to_ir2): Handle CEE_JMP using the tail call
8841         mechanism on amd64.
8842
8843         * iltests.il.in: Make the jmp test a bit more complex.
8844
8845         * aot-compiler.c (encode_method_ref): Handle references to normal methods of
8846         generic instances which doesn't have a token.
8847
8848         * aot-runtime.c (decode_method_ref): Ditto.
8849         
8850         * method-to-ir.c (handle_unbox_nullable): Don't disable AOT, the aot code
8851         can handle this case now.
8852         (handle_box): Ditto.
8853
8854 2008-08-15  Geoff Norton  <gnorton@novell.com>
8855
8856         * mini-x86.c: Fix alignment on Apple x86, and re-disable the alignment
8857         debugging check.
8858
8859 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
8860
8861         * method-to-ir.c (mono_method_to_ir2): Allow AOT compilation of methods
8862         calling generic methods.
8863
8864         * aot-compiler.c (encode_patch): Handle MONO_PATCH_INFO_METHOD_RGCTX.
8865
8866         * aot-runtime.c (decode_patch_info): Ditto.
8867
8868         * mini.c (mono_resolve_patch_target): Ditto.
8869         
8870         * patch-info.h: Add METHOD_RGCTX.
8871
8872         * mini-amd64.c (mono_arch_output_basic_block): Optimize LOCALLOC_IMM.
8873
8874 2008-08-14  Zoltan Varga  <vargaz@gmail.com>
8875
8876         * mini-amd64.c (mono_arch_emit_call): Nullify call->vret_var if returning
8877         arguments in registers.
8878
8879         * decompose.c (mono_decompose_vtype_opts): Create a var for the vreg in
8880         OP_VCALL too, don't depend on OP_OUTARG_VTRETADDR doing it.
8881
8882         * mini.c (mini_method_compile): Abort aot compilation for generic
8883         methods if generic sharing is disabled.
8884         
8885         * mini.c (mono_method_to_ir): Disable AOT for virtual calls requiring
8886         an mrgctx.
8887
8888         * method-to-ir.c (mono_method_to_ir2): Disable AOT for virtual calls 
8889         requiring an mrgctx.
8890
8891         * decompose.c (mono_decompose_vtype_opts): Emit the correct sized
8892         store instructions when converting a vcall to a normal call.
8893
8894         * mini.c (sigprof_signal_handler): Call mono_find_jit_info instead of
8895         mono_arch_find_jit_info.
8896
8897 2008-08-13  Zoltan Varga  <vargaz@gmail.com>
8898
8899         * method-to-ir.c (check_inline_called_method_name_limit): Optimize this to
8900         avoid calling mono_method_full_name () for every method even if the
8901         env var is not set.
8902         (check_inline_caller_method_name_limit): Ditto.
8903
8904 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
8905
8906         * driver.c (main_thread_handler): Allow AOT compilation of multiple 
8907         assemblies in one run.
8908
8909         * aot-compiler.c (mono_compile_assembly): Only print out a count of
8910         skipped methods if it is not 0.
8911
8912         * Makefile.am (aotcheck): AOT compile all test assemblies in one run.
8913
8914 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
8915
8916         * mini.c (mono_codegen):  Changing a preprocessor check from WIN64 to
8917           MONO_ARCH_HAVE_UNWIND_TABLE.
8918
8919         Contributed under MIT/X11 license.
8920
8921 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
8922
8923         * mini-amd64.c (mono_arch_cpu_optimizazions):  Remove peephole and branch
8924           from default optimizaton list on Winx64.
8925
8926         * mini-amd64.c (emit_tls_get):  Added Winx64 specific implementation for GetTLS.
8927
8928         * mini-amd64.c (mono_arch_emit_prolog):  Adding an offset on Winx64 to get
8929           the LMF from the MonoJitTlsData structure.
8930
8931         * mini-amd64.c (mono_arch_setup_jit_tls_data):  Added Winx64 implementation.
8932
8933         Contributed under MIT/X11 license.
8934
8935 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
8936
8937         * mini.c (sigsegv_signal_handler): Fix the build.
8938
8939         * mini-amd64.c (emit_call_body): Use image->aot_module instead of 
8940         assembly->aot_module.
8941
8942         * aot-runtime.c: Use image->aot_module instead of searching in the aot_modules
8943         hash table. This simplifies and speeds up a lot of code, and fixes support
8944         for .netmodules.
8945
8946         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes if the thread is not registered
8947         with the runtime.
8948
8949         * mini-exceptions.c: Ditto.
8950         
8951         * exceptions-*c.c (mono_arch_find_jit_info): Remove unused 'trace' and
8952         'native_offset' argument, since these are computed in the 
8953         mono_find_jit_info () function.
8954
8955         * mini-exceptions.c (mono_find_jit_info): Make this non-static, as it
8956         is used by exceptions-ppc.c.
8957
8958         * exceptions-ppc.c: Call mono_find_jit_info () instead of 
8959         mono_arch_find_jit_info ().
8960         
8961         * mini-ppc.h exceptions-ppc.c mini-mips.h mini-mips.c exceptions-mips.c
8962         mini-exceptions.c: Get rid of the CUSTOM_STACK_WALK stuff, use the
8963         generic code in mini-exceptions.c.
8964
8965 2008-08-11  Zoltan Varga  <vargaz@gmail.com>
8966
8967         * mini-ppc.c (mono_arch_flush_register_windows): Add this for ppc.
8968
8969         * aot-runtime.c (mono_aot_get_plt_info_offset): Fix a warning.
8970         
8971         * aot-runtime.c (mono_aot_get_method): Avoid doing all the loading inside
8972         the aot lock, to avoid deadlocks when mono_aot_get_class_from_name () is
8973         called while holding the loader lock. Fixes #415608.
8974         (mono_aot_get_method_from_token_inner): Ditto.
8975
8976 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
8977
8978         * exceptions-ppc.c (mono_jit_walk_stack): Use MONO_INIT_CONTEXT_FROM_CURRENT
8979         to reduce differences between this and the generic implementation in
8980         mini-exceptions.c.
8981         (ves_icall_get_frame_info): Ditto.
8982
8983         * mini-ppc.h (MONO_INIT_CONTEXT_FROM_CURRENT): Define this for ppc too.
8984
8985         * mini-exceptions.c (mono_exceptions_init): Remove an #ifdef which is no
8986         longer neccesarry.
8987
8988         * exceptions-ppc.c (arch_get_call_filter): Rename this to 
8989         mono_arch_get_call_filter () and make it non-static, for consistency with the
8990         other architectures.
8991
8992 2008-08-09  Rodrigo Kumpera  <rkumpera@novell.com>
8993
8994         * mini.c:
8995         * local-propagation.c:
8996         * mini-x86.c: Correct the name of arch defines.
8997
8998 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
8999
9000         * method-to-ir.c (mono_op_to_op_imm_noemul): Correct name of
9001         NO_EMULATE_LONG_SHIFT_OPS define.
9002
9003 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
9004
9005         * method-to-ir.c (mono_method_to_ir2): Remove some code from CEE_MONO_LDPTR
9006         now that aot-ed icall wrappers use CEE_MONO_ICALL_ADDR.
9007
9008         * aot-compiler.c aot-runtime.c: Add support for static aot compilation.
9009         MACH fixes. Merged from the 2.0 branch.
9010
9011         * method-to-ir.c (mono_method_to_ir2): Handle CEE_MONO_ICALL_ADDR.
9012
9013         * mini.c (mono_resolve_patch_target): Error out if an icall is not found.
9014         (mono_method_to_ir): Handle CEE_MONO_ICALL_ADDR.
9015
9016         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Add AOT support.
9017
9018         * method-to-ir.c mini.c driver.c aot-compiler.c: Update after
9019         mono_marshal_get_native_wrapper () signature changes.
9020
9021 2008-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
9022
9023         * jit-icalls.c (mono_fconv_ovf_u8): Work around soft-float double to long
9024         conversion bug under arm.
9025
9026 2008-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
9027
9028         * cpu-arm.md: Increase long_conv_to_ovf_i4_2 max length to 36.
9029
9030         * mini-arm.c (mono_arch_output_basic_block): Implement long to int conversion
9031         with overflow checking.
9032
9033 2008-08-05  Marek Habersack  <mhabersack@novell.com>
9034
9035         * Makefile.am (GENMDESC_PRG): when cross-compiling use full path
9036         to the genmdesc.pl file
9037
9038 2008-08-05  Zoltan Varga  <vargaz@gmail.com>
9039
9040         * ir-emit.h (EMIT_NEW_ARGSTORE): Fix the usage of param_types and
9041         arg_array in the soft-float versions of the LOAD/STORE macros.
9042
9043         * method-to-ir.c (mono_method_to_ir2): Fix a warning in the arm switch
9044         implementation.
9045
9046         * ir-emit.h (NEW_VARLOADA): Handle SOFT_FLOAT correctly.
9047
9048 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
9049
9050         * mini-ia64.c (add_valuetype): Only reserve half parameter slot for each member of
9051         a float HFA. Fixes #413621.
9052
9053 2008-08-02  Gert Driesen  <drieseng@users.sourceforge.net>
9054
9055         * mini-x86.c (mono_arg_get_argument_info): Rename last occurrence of
9056         frame_size to args_size. Fixes build.
9057
9058 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
9059
9060         * mini-x86.c (mono_arch_get_argument_info): Rename frame_size to args_size,
9061         and don't align it to MONO_ARCH_FRAME_ALIGNMENT.
9062
9063         * mini-x86.h: Change MONO_ARCH_FRAME_ALIGNMENT to 8 so doubles stored on
9064         the stack are not unaligned. Fixes #413247.
9065         
9066 Fri Aug 1 18:46:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
9067
9068         * mini.c: update jitted methods performance counters.
9069
9070 Fri Aug 1 16:30:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
9071
9072         * mini-exceptions.c: increase the exceptions thrown performance
9073         counter in mono_handle_exception ().
9074
9075 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
9076
9077         * aot-runtime.c: Use MonoImage's as keys in the aot_modules hash so the aot
9078         can work with netmodules.
9079
9080 2008-07-28  Geoff Norton  <gnorton@novell.com>
9081
9082         * mini-x86.h: Correct the frame alignment on OSX.  Fixes the jit 
9083         regression tests.
9084
9085 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
9086
9087         * mini-x86.c (mono_arch_emit_call): Emi the osx stack alignment at the
9088         correct place.
9089
9090 2008-07-28  Bill Holmes  <billholmes54@gmail.com>
9091
9092         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
9093           The float param registers and other param registers must be the 
9094           same index on Windows x64.
9095
9096         * mini-amd64.c (mono_arch_allocate_vars) : Implementing the 
9097           ArgValuetypeAddrInIReg argument case.  Setting the argument
9098           op to OP_VTARG_ADDR (OP_REGOFFSET)).
9099
9100         * mini-amd64.c (mono_arch_call_opcode) : Winx64 fix.  Use the size
9101           variable computed above as the copy length for arguments of storage
9102           type ArgValuetypeAddrInIReg.
9103
9104         * mini-amd64.c (mono_arch_emit_call) :  Implementing the 
9105           ArgValuetypeAddrInIReg argument case.  This case will rely on
9106           mono_arch_emit_outarg_vt to emit the correct code later in the process.
9107
9108         * mini-amd64.c (mono_arch_emit_call) :  On Winx64 there always needs to be
9109           a 32 byte stack allocation for all calls.  We will omit the adjustment for
9110           jump and tail call instructoins as they do not follow the typical call behavior.
9111
9112         * mini-amd64.c (mono_arch_emit_outarg_vt) :  Implementing the case for
9113           ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
9114           local variable and pass the local variable by reference to the called method.
9115
9116         * mini-amd64.c (mono_arch_emit_prolog, emit_load_volatile_arguments) :
9117           Implementing the ArgValuetypeAddrInIReg argument case.  When the address
9118           of a struct is passed in a register it must be saved with the other
9119           volatile argument on the stack.
9120
9121         * mini-amd64.c (mono_arch_emit_prolog) : Winx64 fix.  When omitting the
9122           frame pointer the stack adjustment value must be saved to the unwind 
9123           info structure.
9124
9125         Contributed under MIT/X11 license.
9126
9127 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
9128
9129         * inssel-x86.brg (stmt): Add missing OP_X86_OUTARG_ALIGN_STACK rule
9130         which got lost in the merge.
9131
9132 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
9133
9134         * method-to-ir.c: Make the helper_sig variables extern to fix the ppc
9135         build.
9136
9137         * mini-amd64.c (emit_call_body): Add a no_patch case missed earlier.
9138         
9139         * mini-amd64.c (emit_call_body): Avoid aligning the call instruction on
9140         icalls, since they won't be patched.
9141
9142         * exceptions-amd64.c (mono_arch_get_restore_context_full): Use a slightly
9143         different code sequence when running under valgrind to prevent some valgrind
9144         errors.
9145
9146         * iltests.il.in: Add new regression test.
9147
9148         * method-to-ir.c (mono_method_to_ir2): Fix handling of inlined methods which
9149         end with a throw.
9150
9151         * method-to-ir.c (mono_method_to_ir2): Use get_vreg_to_inst () instead of
9152         accessing cfg->vreg_to_inst directly to prevent a crash in LDFLD.
9153
9154         * iltests.il.in: Add new test.
9155
9156         * aot-compiler.c: Fix some warnings.
9157
9158         * decompose.c (mono_decompose_long_opts): Implement OP_ICONV_TO_OVF_I8_UN.
9159         Fixes #412494.
9160
9161 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
9162
9163         * driver.c (mono_main): Fix the --gc=none build. Fixes #412482.
9164         (mini_usage_jitdeveloper): Add a missing --wapi option.
9165
9166 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
9167
9168         * mini-codegen.c: Simplify the is_fp macros.
9169         (free_up_ireg): Remove, use free_up_reg instead.
9170         (free_up_reg): Fix the fp case.
9171
9172 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
9173
9174         * cpu-arm.md (loadr8_membase): Increase the length of this as this is not
9175         lowered earlier.
9176
9177         * exceptions-x86.c: Merge some changes which seemed to have got lost
9178         in the linear-ir merge.
9179
9180         * liveness.c: Disable the liveness2 pass on 32 bit platforms.
9181
9182         * method-to-ir.c (mono_handle_global_vregs): Make the component vregs of a
9183         long vreg volatile even if the variable was already created.
9184
9185         * liveness.c (update_liveness2): Avoid eliminating dead definitions of
9186         volatile variables.
9187
9188 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
9189
9190         * cpu-x86.md (fcall_membase): Increase the size of the fcall opcodes.
9191
9192         * mini.c (mono_jit_compile_method_inner): Add support for 
9193         MONO_EXCEPTION_BAD_IMAGE.
9194
9195         * method-to-ir.c (mono_method_to_ir2): Avoid a crash if 
9196         mini_method_get_context () returns NULL. Fixes #356531.
9197
9198         * mini.c (mono_method_to_ir): Ditto.
9199         
9200         * method-to-ir.c (mono_method_to_ir2): Create a variable if needed when
9201         accessing a field of a valuetype in LDFLD/STFLD. Fixes #412399.
9202
9203 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
9204
9205         * method-to-ir.c (mono_method_to_ir2): Initialize an uninitialized variable
9206         in the LDFTN implementation.
9207
9208 2008-07-25  Mark Probst  <mark.probst@gmail.com>
9209
9210         * mini-trampolines.c (mono_magic_trampoline): When sharing generic
9211         code, patch calls to icalls, too, even if they're not in the
9212         shared generic code hash.  Fixes #411962.
9213
9214 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
9215
9216         * cpu-x86.md: Increase the length of the fcall opcodes.
9217
9218         * mini-x86.c (emit_move_return_value): Avoid some precision issues for
9219         calls returning floats.
9220
9221         * method-to-ir.c (mono_method_to_ir2): Remove the generic sharing restrictions
9222         on NEWARR.
9223         
9224         * method-to-ir.c (mono_method_to_ir2): Merge some LDFTN gsharing changes
9225         missed earlier.
9226
9227         * method-to-ir.c (handle_delegate_ctor): Avoid putting dynamic methods
9228         into the domain->method_code_hash.
9229
9230         * aot-compiler.c: Fix win32 build.
9231
9232         * method-to-ir.c (EMIT_GET_RGCTX): Call EMIT_NEW_LDARG in emit_get_rgctx ().
9233         
9234         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_specific in the
9235         gshared NEWARR implementation.
9236
9237         * cpu-sparc.md: Remove duplicate localloc_imm opcode.
9238
9239         * ir-emit.h (NEW_ARGLOAD): Use cfg->args and cfg->arg_types so this macro
9240         can be used outside of method_to_ir.
9241
9242         * mini.h (MonoCompile): Add arg_types field.
9243
9244         * method-to-ir.c (inline_method): Save/Restore cfg->args and cfg->arg_types.
9245         
9246         * method-to-ir.c (mono_method_to_ir2): Set cfg->args and cfg->arg_types to
9247         the values of the local arg_array and param_types array.
9248
9249 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
9250
9251         * method-to-ir.c (mono_method_to_ir2): Allocate a GOT var for NEWOBJ, since
9252         got accesses might only get generated later when NEWOBJ is decomposed.
9253         
9254         * method-to-ir.c (handle_delegate_ctor): Add an optimization to avoid
9255         looking up the native code of the target method when a delegate is called
9256         for the first time.
9257
9258         * mini-trampolines.c (mono_delegate_trampoline): Add the other half of the
9259         optimization.
9260
9261         * debug-debugger.c (MONO_DEBUGGER__debugger_info): Fix a warning.
9262
9263         * aot-runtime.c aot-compiler.c: Add a new option 'no-dlsym' which makes
9264         AOT work on platforms without a working dlsym implementation.
9265
9266         * mini.h: Bump AOT image format version.
9267         
9268 2008-07-24  Mark Probst  <mark.probst@gmail.com>
9269
9270         * mini-exceptions.c: Free a MonoType with
9271         mono_metadata_free_type() instead of g_free().
9272
9273         * aot-runtime.c: Free a MonoType.
9274
9275 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
9276
9277         * method-to-ir.c (mono_method_to_ir2): Add a comment for the box+brtrue
9278         optimization.
9279
9280         * mini-codegen.c (mono_local_regalloc): Remove the remaining items from the
9281         fp stack on x86.
9282
9283 2008-07-23  Massimiliano Mantione  <massi@ximian.com>
9284         * mini.c (sigprof_signal_handler): call the new "runtime initialized"
9285         profiler hook.
9286
9287 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
9288
9289         * method-to-ir.c (mono_method_to_ir2): Set the stack type properly for
9290         NEWOBJ calls on valuetypes.
9291
9292         * iltests.il.in: Add new test.
9293
9294         * mini-x86.c (mono_arch_emit_call): Use mini_type_stack_size ().
9295
9296 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
9297
9298         * mini-exceptions.c: Fix some warnings. Remove one ia64 special case as it
9299         is no longer needed.
9300
9301         * mini-ia64.c (mono_arch_emit_prolog): In native-to-managed wrappers, widen
9302         non register sized integer arguments.
9303         (mono_arch_call_opcode): Add support for ArgInFloatRegR4.
9304         (mono_arch_emit_outarg_vt): Pass a more reasonable alignment to 
9305         emit_memcpy2 ().
9306
9307         * method-to-ir.c (mono_method_to_ir2): Handle the ret_var_is_local case in
9308         CEE_MONO_RETOBJ.
9309         
9310         * method-to-ir.c (ADD_WIDEN_OP): New macro to insert a widening op when
9311         two a binop with different sized arguments is emitted.
9312
9313         * mini.c (mono_bblock_insert_after_ins): Properly link up with the next
9314         instruction in the ins==NULL case.
9315
9316 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
9317
9318         * mini-ops.h: Add OP_X86_OUTARG_ALIGN_STACK.
9319
9320         * mini-x86.c: Fix osx build.
9321
9322         * mini-amd64.c (mono_arch_output_basic_block): Handle varargs in the CALL_REG
9323         opcodes as well.
9324
9325         * method-to-ir.c (mono_spill_global_vars): Avoid fusing a load+store into the
9326         instruction for non int sized variables.
9327
9328         * method-to-ir.c (mono_method_to_ir2): Fix an assert in the LDFLD
9329         implementation.
9330
9331 2008-07-23  Robert Jordan  <robertj@gmx.net>
9332
9333         * method-to-ir.c: Fix MSVC build.
9334
9335 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
9336
9337         * method-to-ir.c (mono_method_to_ir2): When calling native code which returns
9338         a non int sized type, widen it to an int since newer versions of gcc seem to
9339         generate code which needs this.
9340
9341         * ssa2.c abcremoval2.c: Fix warnings.
9342
9343         * *: Merge the Linear IR branch.
9344
9345         The original branch is at trunk/branches/vargaz/mini-linear-il, and
9346         the ChangeLog file there describes all the changes done over the years. 
9347         Further documentation can be found at www.mono-project.com/Linear_IL.
9348
9349 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
9350
9351         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
9352           The float param registers and other param registers must be the 
9353           same index on Windows x64.
9354
9355         Contributed under MIT/X11 license.
9356
9357 2008-07-21  Rodrigo Kumpera  <rkumpera@novell.com>
9358
9359         * mini.c: Make the previous fix GC safe.
9360
9361 2008-07-21  Raja R Harinath  <harinath@hurrynot.org>
9362
9363         * Makefile.am (version.h): Allow a trailing '/' in the repository URL.
9364
9365 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
9366
9367         * mini-amd64.c (get_call_info): Correcting the case for MONO_TYPE_TYPEDBYREF
9368           on Winx64.  This type will not be passed on the stack (ArgOnStack), but 
9369           ArgValuetypeAddrInIReg instead.
9370
9371         Contributed under MIT/X11 license.
9372
9373 2008-07-21  Zoltan Varga  <vargaz@gmail.com>
9374
9375         * mini-codegen.c (get_register_spilling): Fix a warning.
9376
9377 2008-07-17  Rodrigo Kumpera  <rkumpera@novell.com>
9378
9379         * mini.c: Use mono_runtime_class_init_full to avoid leaking memory
9380         for types which the initialization fails. Raises the provided exception
9381         at the right stop after cleanup.
9382
9383 2008-07-16  Zoltan Varga  <vargaz@gmail.com>
9384
9385         * aot-compiler.c: Free most of the memory allocated during compilation.
9386
9387         * mini.c (mini_parse_debug_options): Fix a leak.
9388         
9389         * mini.c (mini_method_compile): Don't add the method to the jit info tables
9390         during aot compilation.
9391
9392 2008-07-14  Zoltan Varga  <vargaz@gmail.com>
9393
9394         * mini.c (mono_method_to_ir): Disable aot for code using CCASTCLASS on x86 as 
9395         it has too much register pressure.
9396
9397 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
9398
9399         * inssel.brg (CEE_CASTCLASS): Remove some dead code.
9400
9401 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
9402
9403         * mini-x86.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
9404         on x86.
9405
9406         * mini-amd64.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
9407         on amd64 similar to the way it is done on arm.
9408
9409         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
9410
9411         * aot-runtime.c (load_aot_module): Rename 'info' to 'amodule' for 
9412         consistency, normalize error messages, avoid loading aot-only modules in
9413         normal mode.
9414
9415         * driver.c (mono_main): Rename --aot-only command line option to --full-aot
9416         for consistency.
9417
9418         * aot-compiler.c aot-runtime.c tramp-arm.c: Implement aot-only support.
9419
9420 2008-07-11  Martin Baulig  <martin@ximian.com>
9421
9422         * debug-debugger.h
9423         (MonoDebuggerInfo): Add `interruption_request'.
9424
9425 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
9426
9427         * aot-compiler.c (emit_plt): Remove some dead code.
9428
9429         * exceptions-arm.c (mono_arch_get_call_filter_full): Initialize ji.
9430
9431         * aot-runtime.c (mono_aot_get_plt_info_offset): New helper function to
9432         return the plt info offset belonging to a given plt entry.
9433
9434         * mini-trampolines.c (mono_aot_plt_trampoline): Use 
9435         mono_aot_get_plt_info_offset.
9436         
9437         * aot-runtime.c aot-compiler.c tramp-arm.c: Change the arm plt code to be
9438         similar to the amd64 code by makeing jumps through a separate jump table 
9439         instead of embedding the jump addresses into the code.
9440
9441 2008-07-11  Zoltan Varga  <vargaz@gmail.com>
9442
9443         * mini.c (mono_method_to_ir): Disable aot for calling ldtoken in a generic
9444         method.
9445
9446 2008-07-10  Martin Baulig  <martin@ximian.com>
9447
9448         * mini.c (mini_method_compile): Disable generics sharing when
9449         running in the debugger.
9450
9451 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
9452
9453         * mini.c (mono_method_to_ir): Create the got var in CEE_REFANYVAL.
9454
9455         * inssel.brg (CEE_CASTCLASS): Avoid reusing temporary registers to prevent
9456         the local register allocator from running out of registers on x86 when 
9457         using aot.
9458
9459 2008-07-10  Bill Holmes  <billholmes54@gmail.com>
9460
9461         * inssel-long.brg For OP_LCONV_TO_OVF_I4 an int cast is needed when 
9462         expressing IntMin for the VS Compiler.  See Compiler Warning (level 2) 
9463         C4146.
9464
9465         Contributed under MIT/X11 license.
9466
9467 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
9468
9469         * aot-compiler.c: Get rid of whitespace in the generated assembly file to
9470         speed up the assembler.
9471
9472 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
9473
9474         * mini-arm.h tramp-arm.c exceptions-arm.c aot-compiler.c: Beginnings of aot-only
9475         support.
9476
9477         * mini.c: Move the soft float handling macros a bit earlier, add 
9478         NEW_TEMPSTORE_SOFT_FLOAT macro, fix warnings, add soft-float support in one
9479         place.
9480
9481         * mini.h: Add prototype for mono_arch_fixup_jinfo.
9482
9483         * mini.c (mini_init): In aot-only mode, set the root domain code manager to
9484         read-only to help catch code allocation requests.
9485         
9486         * mini.c inssel.brg aot-compiler.c: Make the use of IMT runtime configurable,
9487         and turn it off when using --aot-only or when compiling with --aot=full.
9488
9489         * mini.c (mono_resolve_patch_target): In aot-only mode, allocate the
9490         jump table for switches from the normal domain mempool, not the code
9491         manager.
9492
9493         * mini-trampolines.c (get_unbox_trampoline): New function to return an
9494         unbox trampoline which handles aot-only mode too.
9495
9496         * aot-runtime.c (mono_aot_get_unbox_trampoline): New function to lookup
9497         an AOTed unbox trampoline.
9498
9499         * aot-compiler.c (emit_trampolines): Emit unbox trampolines.
9500
9501 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
9502
9503         * wapihandles.c: Fixing MSVC builds.  Include statement changed from <> to
9504         ""
9505
9506         Contributed under MIT/X11 license.
9507
9508 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
9509
9510         * mini.c (mono_codegen):  Allocate space at the end of the code block and store
9511           the unwind information for the method at the end of the allocated block.
9512           
9513         * mini-amd64.h: Added declarations for the unwind routines and adding field to 
9514           MonoCompileArch to hold the unwind info for SEH on Winx64
9515         
9516         * mini-amd64.c (mono_arch_emit_prolog): Calls to the unwind routines added to store
9517           frame pointer info for the method being compiled.
9518           
9519         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception): Added a stack adjustment before
9520           the call to mono_exception_from_token.
9521           
9522         * exceptions-amd64.c: Added mono_arch_unwindinfo* implementations.  This code is responsible
9523           storing the method prolog information in a format that the Winx64 SEH can understand.  This
9524           information is stored a the end of the method block because it is all 32-bit offset based.
9525
9526         Contributed under MIT/X11 license.
9527
9528 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
9529
9530         * mini.h: Remove duplicate definitions of the mini_wapi_ functions.
9531
9532         * wapihandles.c: Fix warnings.
9533
9534         * aot-runtime.c (load_aot_module): Add a missing error message in aot-only
9535         mode.
9536
9537         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Avoid calling 
9538         mono_jit_compile_method in aot-only mode since that calls the type 
9539         initializer.
9540         
9541         * mini-trampolines.c (mono_create_delegate_trampoline): Avoid calling
9542         get_delegate_invoke_impl in aot-only mode.
9543
9544         * mini.c (mono_global_codeman_reserve): Reenable the aot-only check.
9545
9546 2008-07-08  Zoltan Varga  <vargaz@gmail.com>
9547
9548         * trace.c (mono_trace_enter_method): Fix printing of Type instances.
9549
9550         * aot-compiler.c (compile_method): Disable the check for GSHARED since it
9551         is on by default.
9552
9553         * inssel-long.brg (reg): Add a rule for LCALL_REG (OP_I8CONST).
9554
9555         * tramp-amd64.c (mono_arch_nullify_plt_entry): Read the nullified class
9556         init trampoline from the AOT file as well.
9557
9558         * mini-amd64.c (mono_arch_register_lowlevel_calls): Register
9559         mono_amd64_throw_exception as a jit icall since it is needed by the aot-only
9560         code.
9561
9562         * mini.c (mini_init): Move the call to mono_exceptions_init () after 
9563         mono_init.
9564
9565         * exceptions-amd64.c: Add _full variants for the remaining exception code
9566         creation functions as well, allow emission of relocatable code, remove
9567         caching since that is now done by the caller.
9568
9569         * mini-exceptions.c: Add _full variants for the remaining exception code
9570         creation functions as well, add aot-only support.
9571
9572         * aot-compiler.c (compile_method): Allow calls to methods of constructed types
9573         if we can determine a proper token for them.
9574         (add_wrappers): Add a few more wrappers.
9575         (emit_method_code): Remove some dead code.
9576         (emit_trampolines): Emit exception code too.
9577
9578         * mini.c (mono_method_to_ir): Call mono_array_new_2 if possible.
9579
9580         * jit-icalls.c (mono_array_new_2): New jit icall, specialized version of
9581         mono_array_new_va which avoids varargs.
9582
9583         * mini-exceptions.c (mono_exceptions_init): Fix the ppc build.
9584
9585         * mini-trampolines.c: Call mono_create_specific_trampoline () instead of
9586         mono_arch_create_specific_trampoline () in all places.
9587
9588         * aot-compiler.c aot-runtime.c: Refactor the trampoline emitting/loading code
9589         a bit so it can be used for other things as well.
9590         
9591         * mini-exceptions.c (mono_exceptions_init): Initialize throw_exception_by_name
9592         on demand as well.
9593
9594         * exceptions-amd64.c: Rename the caching from the exception code creation
9595         functions, it is done by the caller instead.
9596         
9597         * exceptions-amd64.c: Change the signature of the exception code creation 
9598         functions to allow the creation of relocatable code later.
9599
9600         * mini-exceptions.c: Add a set of functions to query the various 
9601         runtime-generated exception functions.
9602
9603         * mini.c mini-exceptions.c: Use the newly added functions instead of the
9604         mono_arch_.. () functions.
9605         
9606 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
9607
9608         * mini-trampolines.c (mono_aot_get_trampoline_code): Removed, no longer used.
9609
9610         * aot-runtime.c aot-compiler.c: AOT the generic trampolines in aot-only mode.
9611
9612         * mini.c (mini_get_imt_trampoline): Call mono_create_specific_trampoline ().
9613         (mini_get_vtable_trampoline): Ditto.
9614
9615         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Create relocatable
9616         code in the AOT case by returning the code size and a list of relocations to
9617         the caller.
9618
9619         * mini-trampolines.c (mono_create_specific_trampoline): New helper function.
9620
9621 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
9622
9623         * mini-amd64.c:  On Winx64 the calling convention always requires the caller to 
9624           clean the stack.
9625
9626         Contributed under MIT/X11 license.
9627
9628 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
9629
9630         * aot-compiler.c (emit_exception_debug_info): Serialize the debug info first
9631         so the buffer size can be computed correctly. Fixes #404735.
9632
9633         * debug-mini.c (mono_debug_serialize_debug_info): Lookup the debug info
9634         normally as cfg->debug_info is already freed.
9635
9636 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
9637
9638         * mini-amd64.c: For calls returning vtypes in registers, don't store
9639         the return address on the stack, instead allocate a separate local for
9640         it. Fixes #404729.
9641
9642 2008-07-05  Mark Probst  <mark.probst@gmail.com>
9643
9644         * mini-trampolines.c, mini.h: Add an argument to
9645         mono_create_jit_trampoline_in_domain() for turning off the adding
9646         of the sync wrapper.
9647
9648         * mini.c: Use the JIT trampoline without sync instead of
9649         ldftn_nosync in static RGCTX invoke wrappers so that the call can
9650         be patched.
9651
9652 2008-07-04  Mark Probst  <mark.probst@gmail.com>
9653
9654         * driver.c: Turn on GSHARED optimization by default.
9655
9656 2008-07-04  Zoltan Varga  <vargaz@gmail.com>
9657
9658         * mini-trampolines.c mini.c mini.h tramp-<ARCH>.c: Rename MONO_TRAMPOLINE_GENERIC
9659         to MONO_TRAMPOLINE_JIT since it better reflects what it does.
9660
9661         * mini-trampolines.c (mono_get_aot_trampoline_code): New internal function to
9662         create a variant of the generic trampoline code callable from AOTed trampolines.
9663
9664         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add support for generic
9665         trampoline code callable from AOTed trampolines.
9666
9667         * aot-compiler.c aot-runtime.c: Add support for AOTing trampolines.
9668
9669 2008-07-04  Mark Probst  <mark.probst@gmail.com>
9670
9671         * inssel.brg, mini-ops.h: New opcode for doing CHECK_THIS in a
9672         pass-through manner.
9673
9674         * mini.c: Generic method sharing.  Pass MRGCTX to generic methods
9675         and don't fail sharing for them anymore.
9676
9677         * mini-exceptions.c: Handle exceptions in shared generic methods.
9678
9679         * generic-sharing.c: When checking the context of a generic
9680         method, also check its class's context.  Don't treat wrappers as
9681         sharable.
9682
9683         * mini-trampolines.c: Some code factored out to
9684         metadata/generic-sharing.c.  Handle the MRGCTX case.
9685
9686         * jit-icalls.c, jit-icalls.h: ldvirtfn icall for generic sharing -
9687         we must deal with the method being of another instantiation of the
9688         class.  Add static rgctx invoke wrappers to generic methods.
9689
9690 2008-07-04  Mark Probst  <mark.probst@gmail.com>
9691
9692         * mini.c: Provide all jit infos of generic shared methods with a
9693         generic jit info.
9694
9695         * mini-exceptions.c: Handle the new situation that a generic info
9696         might be available, but not info about the this/vtable/mrgctx
9697         variable.
9698
9699 2008-07-03  Mark Probst  <mark.probst@gmail.com>
9700
9701         * mini.c: Don't accept ldftn and ldvirtftn with uninstantiated
9702         generic methods.
9703
9704 2008-07-03  Zoltan Varga  <vargaz@gmail.com>
9705
9706         * dominators.c (check_dominance_frontier): Fix a warning.
9707
9708         * mini.h: Add some missing prototypes.
9709
9710         * ssa.c local-propagation.c debug-debuger.c: Fix warnings.
9711
9712         * driver.c (mono_jit_init_version): Correct the comments since the first
9713         argument should be the name of the root domain, not a filename.
9714
9715         * aot-runtime.c (make_writable): Error out if this is called while running
9716         with --aot-only.
9717         (load_aot_module): Ditto.
9718
9719         * aot-compiler.c: Really fix the computation of method indexes.
9720
9721         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Remove the previous 
9722         optimizations as this is no longer called frequently.
9723
9724         * mini-trampolines.c (mono_create_delegate_trampoline): Precompute the invoke
9725         method and the invoke impl code and pass it to the delegate trampoline instead of
9726         just the delegate class.
9727
9728 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
9729
9730         * aot-compiler.c: Fixup the computation of method indexes.
9731         (add_wrappers): Create the base methods of the runtime invoke wrappers using
9732         the method builder infrastructure.
9733
9734         * aot-runtime.c (decode_exception_debug_info): Don't crash if the method
9735         has no header.
9736
9737         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): In aot-only
9738         mode, load the method right away instead of creating a trampoline.
9739
9740         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Eliminate locking.
9741
9742         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Eliminate locking, speed up
9743         some checks a bit.
9744
9745 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
9746
9747         * aot-runtime.c (decode_patch_info): Don't create trampolines in aot_only mode.
9748         (mono_aot_load_method): Use method_index instead of method->token.
9749
9750         * mini.c (mono_jit_compile_method_inner): Move the aot_only check down, so it
9751         can handle icalls etc. properly.
9752
9753         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
9754
9755         * aot-compiler.c aot-runtime.c: Allow AOTing many wrapper types.
9756
9757         * mini.c (mono_resolve_patch_target): Handle JIT_ICALL_ADDR.
9758         (mono_codegen): Convert calls made by JIT icall wrappers to the icalls into
9759         JIT_ICALL_ADDR patch type.
9760
9761         * patch-info.h: Add JIT_ICALL_ADDR patch type.
9762
9763         * mini.c (mono_method_to_ir): Allow AOTing methods which access the interruption
9764         request flag.
9765         (mono_resolve_patch_target): Handle INTERRUPTION_REQUEST_FLAG.
9766
9767         * patch-info.h: Add INTERRUPTION_REQUEST_FLAG.
9768
9769 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
9770
9771         * mini.c: Use domain->jit_code_hash_lock for controlling access to
9772         domain->jit_code_hash.
9773
9774 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
9775
9776         * mini.c (mini_parse_debug_options): Add 'dont-free-domains' option.
9777
9778 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
9779
9780         * mini-trampolines.c (mono_delegate_trampoline): Don't pass a gsctx to
9781         get_this_arg_from_call, let it compute it when needed.
9782
9783         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'code' argument, compute
9784         gsctx from code only when needed.
9785
9786         * mini-trampolines.c (get_generic_context): Rename this to 
9787         mono_get_generic_context_from_code (), and move it to generic-sharing.c, where
9788         it can be called by the arch backends.
9789
9790         * mini-exceptions.c (mono_print_thread_dump): Allow the argument to be NULL.
9791
9792 2008-06-26  Zoltan Varga  <vargaz@gmail.com>
9793
9794         * driver.c (mono_main): Add experimental --aot-only command line option.
9795
9796         * mini.c: Error out when creating trampolines or JIT compiling if --aot-only is
9797         set.
9798
9799 2008-06-26  Kornel Pal  <kornelpal@gmail.com>
9800
9801         * driver.c (DllMain): Remove mono_module_handle.
9802
9803         Contributed under MIT/X11 license.
9804
9805 2008-06-25  Zoltan Varga  <vargaz@gmail.com>
9806
9807         * aot-compiler.c: Add not-yet-usable 'full' option. Add some infrastructure code
9808         for emitting methods which are not in the source assembly. Detect and report
9809         failure of assembling+linking.
9810         
9811         * aot-compiler.c (emit_klass_info): Call mono_class_setup_vtable ().
9812
9813         * aot-compiler.c: Move the contents of the has_glot_slots array to MonoCompile.
9814
9815 2008-06-24  Rodrigo Kumpera  <rkumpera@novell.com>
9816
9817         * mini.c: Check if stats is enabled so we don't allocate memory when not needed.
9818
9819 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
9820
9821         * mini.h: Remove some obsolete prototypes.
9822
9823         * mini.c: Avoid storing MonoMethod pointers in the JIT stats, store their string format instead.
9824
9825 2008-06-24  Mark Probst  <mark.probst@gmail.com>
9826
9827         * mini.c (get_object_generic_inst): Variable-sized arrays are not
9828         supported by Visual Studio, so use alloca().
9829
9830 2008-06-23  Zoltan Varga  <vargaz@gmail.com>
9831
9832         * mini-ia64.c (add_valuetype): Increase *gr too when passing a HFA to be in sync with the ABi.
9833         Fixes #402585.
9834
9835 2008-06-23  Mark Probst  <mark.probst@gmail.com>
9836
9837         * mini.c: Fail sharing of a generic method if it contains an open
9838         catch clause (because we don't pass MRGCTXs yet).
9839
9840 2008-06-23  Mark Probst  <mark.probst@gmail.com>
9841
9842         * mini.c: When compiling a method with generic sharing, insert the
9843         method instantiated with an all-Object generic context into the
9844         jit info table, instead of the context of the first instantiation
9845         of the method we happen to compile.
9846
9847 2008-06-18  Martin Baulig  <martin@ximian.com>
9848
9849         * debug-debugger.h (MonoDebuggerInfo): Replaced `version' with
9850         `major_version' and `minor_version'.
9851
9852 2008-06-17  Mark Probst  <mark.probst@gmail.com>
9853
9854         * generic-sharing.c, mini.c, mini.h, aot-runtime.c:
9855         mono_method_is_generic_sharable_impl() takes an additional
9856         argument specifying whether to treat type variables as reference
9857         types.
9858
9859 2008-06-17  Mark Probst  <mark.probst@gmail.com>
9860
9861         * mini.h: Removed obsolete prototypes.
9862
9863 2008-06-17  Mark Probst  <mark.probst@gmail.com>
9864
9865         * mini.c: Don't fail generic sharing for initobj and sizeof - we
9866         already handle them.
9867
9868 2008-06-17  Mark Probst  <mark.probst@gmail.com>
9869
9870         * mini.h, mini-trampolines.c, tramp-alpha.c, tramp-amd64.c,
9871         tramp-arm.c, tramp-hppa.c, tramp-ia64.c, tramp-mips.c,
9872         tramp-ppc.c, tramp-s390.c, tramp-s390x.c, tramp-sparc.c,
9873         tramp-x86.c: Added a MonoGenericContext* argument to
9874         mono_arch_get_unbox_trampoline() so that it can call other
9875         functions which require it.
9876
9877 2008-06-17  Mark Probst  <mark.probst@gmail.com>
9878
9879         * mini.h, mini-trampolines.c, mini-amd64.c, mini-x86.c,
9880         mini-alpha.c, mini-arm.c, mini-ia64.c, mini-ppc.c:
9881         mono_arch_get_this_arg_from_call() takes a
9882         MonoGenericSharingContext* as well.
9883
9884 2008-06-17  Mark Probst  <mark.probst@gmail.com>
9885
9886         * mini.c: Factor out code for emitting unbox into emit_unbox() and
9887         implement generic sharing of unbox.
9888
9889 2008-06-17  Mark Probst  <mark.probst@gmail.com>
9890
9891         * mini.c: Don't compute the vtable to determine whether a field is
9892         special static, because it might not work for open types.
9893
9894 2008-06-17  Mark Probst  <mark.probst@gmail.com>
9895
9896         * mini.c: Removed the unused token_type and token_source arguments
9897         from get_runtime_generic_context_ptr().
9898
9899 2008-06-17  Marek Habersack  <mhabersack@novell.com>
9900
9901         * mini.c (ADD_BINOP): fix the build
9902
9903 2008-06-16  Zoltan Varga  <vargaz@gmail.com>
9904
9905         * mini.c (ADD_BINOP): When operating on a native int and an int32, insert
9906         a widening op.
9907
9908 2008-06-16  Mark Probst  <mark.probst@gmail.com>
9909
9910         * mini.h: Removed class relations enum that's not used anymore.
9911
9912 2008-06-16  Mark Probst  <mark.probst@gmail.com>
9913
9914         * tramp-x86.c, tramp-amd64.c: Slot access code for MRGCTXs.
9915
9916         * mini-trampolines.c: Distinguish between RGCTXs and MRGCTXs in
9917         the lazy fetch trampoline access code.
9918
9919 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
9920
9921         * mini-codegen.c (mono_local_regalloc): Add some micro optimizations.
9922
9923 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
9924
9925         * mini.c: Fix some soft-float bugs. Fixes #378735 and #398348.
9926
9927         * mini.h (MONO_INST_LIST_ENTRY): Fix warnings on arm.
9928
9929         * mini.c (mono_method_to_ir): Check call signature for NEWOBJ as well.
9930
9931 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
9932
9933         * mini-x86.c inssel-x86.brg cpu-x86.md: Implement unsigned min/max
9934         intrinsics.
9935
9936         * mini-ops.h: Add MIN/MAX_UN opcodes.
9937
9938         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Implement unsigned min/max
9939         intrinsics.
9940
9941         * basic-math.cs: Add more min/max tests.
9942
9943         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
9944
9945 2008-06-13  Mark Probst  <mark.probst@gmail.com>
9946
9947         * mini.c: Small fix in the prologue of emit_castclass.
9948
9949 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
9950
9951         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
9952
9953         * mini.c (mini_get_inst_for_method): Remove the Min/Max intrinsics, they
9954         do not work even for unsigned types. Fixes #400014.
9955
9956         * basic-math.cs: Add regression tests for unsigned Min/Max.
9957
9958 2008-06-13  Mark Probst  <mark.probst@gmail.com>
9959
9960         * mini.c: Added additional context_used argument to several
9961         functions, which will be needed for sharing generic methods.  Use
9962         GET_RGCTX macro wherever appropriate.  Declare only one
9963         context_used in mono_method_to_ir().
9964
9965 2008-06-13  Mark Probst  <mark.probst@gmail.com>
9966
9967         * mini.c, generic-sharing.c: Removed generic class relations.
9968
9969         * mini.c, tramp-amd64.c, tramp-x86.c: Additional arguments to
9970         functions due to MRGCTX changes.
9971
9972 2008-06-13  Mark Probst  <mark.probst@gmail.com>
9973
9974         * inssel.brg, inssel-long.brg, inssel-long32.brg, mini-ops.h,
9975         graph.c, local-propagation.c, aliasing.c: New opcodes for calls
9976         with calculated IMT.
9977
9978         * mini.c: Generic sharing of calls via generic interfaces.
9979
9980         * jit-icalls.c, jit-icalls.h: Helper function for compiling a
9981         generic method with non-constant MonoGenericContext*.  Instead,
9982         the context is taken out of the method itself.
9983
9984 2008-06-13  Mark Probst  <mark.probst@gmail.com>
9985
9986         * mini.c: Generic sharing of ldvirtftn.
9987
9988 2008-06-13  Mark Probst  <mark.probst@gmail.com>
9989
9990         * mini.c: Generic sharing of ldftn.
9991
9992 2008-06-13  Mark Probst  <mark.probst@gmail.com>
9993
9994         * mini.c: Do pass VTable/RGCTX argument to static generic methods.
9995
9996 2008-06-13  Mark Probst  <mark.probst@gmail.com>
9997
9998         * mini.c: Generic sharing of the special case of ldtoken followed
9999         by a call to GetTypeFromHandle.
10000
10001 2008-06-13  Mark Probst  <mark.probst@gmail.com>
10002
10003         * mini.c: Generic sharing of box for nullable types.
10004
10005 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
10006
10007         * mini-s390x.c (add_stackParm): Fix computation of offsets when arguments
10008         are passed on the stack. Fixes #324807.
10009
10010 2008-06-12  Bill Holmes  <billholmes54@gmail.com>
10011
10012         * mini-amd64.c:add_valuetype: Adding Winx64 code to fill the ArgInfo
10013         for the ArgValuetypeAddrInIReg case.
10014
10015         * mini-amd64.c:mono_arch_allocate_vars:  Adding a case for 
10016         ArgValuetypeAddrInIReg to avoid asserts.  Code needs to be added here.
10017
10018         * mini-amd64.c: mono_arch_call_opcode:  Adding Winx64 code for an ArgInfo of 
10019         type ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
10020         local variable and pass the local variable by reference to the called method.
10021           
10022         * mini-amd64.c: mono_arch_emit_prolog:  Adjust the stack for calls to
10023         mono_jit_thread_attach and mono_get_lmf_addr for Winx64.
10024
10025         Contributed under MIT/X11 license.
10026
10027 2008-06-10  Rodrigo Kumpera  <rkumpera@novell.com>
10028
10029         * debug-mini.c (mono_debug_free_method_jit_info): Moved to metadata/mono-debug.c.
10030
10031         * debug-mini.c (mono_debug_print_vars): Release memory after printing
10032         everything.
10033
10034 2008-06-10  Martin Baulig  <martin@ximian.com>
10035
10036         * debug-mini.c
10037         (mono_debug_close_method): Check whether `cfg->epilogue_begin != NULL'.
10038
10039 2008-06-09  Kornel Pal  <kornelpal@gmail.com>
10040
10041         * main.c: Add and set argv [argc] to NULL to match C specification that fixes
10042         possible error when no arguments are passed.
10043
10044         Contributed under MIT/X11 license.
10045
10046 2008-06-09  Rodrigo Kumpera  <rkumpera@novell.com>
10047
10048         * mini-exceptions.c (ves_icall_get_trace): Skip source locations
10049         where the file name is NULL.
10050
10051 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
10052
10053         * mini.c: Fix s390 build.
10054
10055 2008-06-08  Zoltan Varga  <vargaz@gmail.com>
10056
10057         * trace.c (mono_trace_parse_options): Fix warnings.
10058
10059         * mini-amd64.c: Revert most of the last patch for now as it breaks the build.
10060
10061 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
10062
10063         * mini.c (remove_block_if_useless): Avoid printing the method name.
10064         
10065         * mini.c: Remove needless setting of ins->cil_code which is now done by 
10066         MONO_INST_NEW.
10067
10068         * mini-amd64.c: Add some code to avoid saving callee saved registers in the
10069         LMF. Not yet used.
10070
10071         * tramp-amd64.c (mono_arch_patch_callsite): Tell valgrind to discard the
10072         translated code after it has been patched.
10073
10074 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
10075
10076         * mini-amd64.c (emit_call_body): Align the call displacement to 4 bytes to
10077         avoid problems during code patching on SMP systems.
10078         (emit_call): Avoid adding a patch info which is already added by 
10079         emit_call_body.
10080         (mono_arch_emit_exceptions): Ditto.
10081
10082 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
10083
10084         * tramp-*.c (mono_arch_get_unbox_trampoline): No need to check for ret->byref,
10085         MONO_TYPE_ISSTRUCT already checks for it.
10086
10087 2008-06-05  Bill Holmes  <billholmes54@gmail.com>
10088
10089         * mini-amd64.c:merge_argument_class_from_type: When marshaling 
10090           structs with floats on Winx64 the float registers are not used.  
10091           The integer registers are always used..
10092         * mini-amd64.c:add_valuetype:  When marshaling structs on Winx64 
10093           only one register will be used and only if the size of the struct 
10094           is 1,2,4, or 8 bytes.
10095
10096         * tramp-amd64.c :  Adjusting size used for mono_global_codeman_reserve
10097           to work for Winx64.
10098
10099         Contributed under MIT/X11 license.
10100
10101 2008-06-05  Martin Baulig  <martin@ximian.com>
10102
10103         * debug-debugger.c (debugger_lookup_class): Also call
10104         mono_class_setup_methods() here; we're only called from RTI.
10105
10106 2008-06-05  Andreas Farber  <andreas.faerber@web.de>
10107
10108         * mini.c (mini_init): Add DTrace probes ves-init-{begin,end}.
10109         (mini_method_compile) Add DTrace probes method-compile-{begin,end}.
10110         * Makefile.am (libmono_la_LIBADD,libmono_static_la_LIBADD,mono_LDADD):
10111         Post-process object files and add dtrace-generated object, if necessary.
10112
10113         Contributed under MIT/X11 license.
10114
10115 2008-06-04  Mark Probst  <mark.probst@gmail.com>
10116
10117         * inssel.brg, mini-ops.h: Added opcode for unboxcast with computed
10118         element class.
10119
10120         * mini.c: Generic sharing for unbox.any and castclass.
10121
10122 2008-06-04  Mark Probst  <mark.probst@gmail.com>
10123
10124         * mini.c: Ignore tailcall prefix in shared generic code and when
10125         doing calls which require a vtable/rgctx argument.
10126
10127 2008-06-04  Mark Probst  <mark.probst@gmail.com>
10128
10129         * mini.c: Don't free the JIT info.
10130
10131         * driver.c: Changes in the JIT info table testing code.
10132
10133 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
10134
10135         * tramp-arm.c (mono_arch_create_trampoline_code): Check for thread 
10136         interruption. Fix some warnings.
10137
10138         * tramp-*.c (mono_arch_create_trampoline_code): Call the _force_ variant of
10139         interruption_checkpoint.
10140
10141 Tue Jun 3 13:07:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
10142
10143         * jit.h, mini.h, trace.c, driver.c: introduce an API to enable tracing
10144         from embedding applications.
10145
10146 2008-06-02  William Holmes  <billholmes54@gmail.com>
10147
10148         * mini-amd64.c :  Correcting some of the issues for Winx64 dealing with
10149           reserving 32 bytes on the stack when making calls. 
10150
10151         Contributed under MIT/X11 license.
10152
10153 2008-06-01  Zoltan Varga  <vargaz@gmail.com>
10154
10155         * mini-arm.c (mono_arch_output_basic_block): Merge some small fixes from
10156         the linear IL branch.
10157
10158         * driver.c: Print out more information for --version on arm.
10159
10160 2008-05-30  Zoltan Varga  <vargaz@gmail.com>
10161
10162         * mini-amd64.c (mono_arch_emit_prolog): Increase max_offset when processing
10163         bb_exit instead, since out of line bblocks might not actually be emitted
10164         out-of-line.
10165         
10166         * mini-amd64.c (mono_arch_emit_prolog): Increase bb->max_offset by the
10167         maximum epilog size for out of line bblocks if tracing is enabled.
10168
10169         * iltests.il.in: Merge tests/long-shift.regalloc.il into this file.
10170
10171 2008-05-28  Rodrigo Kumpera  <rkumpera@novell.com>
10172
10173         * arrays.cs: Regression tests for allocating arrays with negative sizes.
10174
10175 2008-05-28  Zoltan Varga  <vargaz@gmail.com>
10176
10177         * mini-x86.h mini-x86.c inssel-x86.brg cpu-x86.md: Add support for
10178         CAS instrinsics. Optimize the implementation of the ATOMIC_EXCHANGE 
10179         opcodes.
10180
10181 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
10182
10183         * mini.c (mini_get_inst_for_method): Add support for CAS instrinsics when
10184         the 'value' to store is a constant.
10185
10186         * mini-ops.h: Add OP_ATOMIC_CAS_IMM opcodes.
10187
10188         * mini-amd64.c (mono_arch_output_basic_block): Optimize the the implementation
10189         of ATOMIC_EXCHANGE opcodes, add support for the CAS opcodes.
10190
10191 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
10192
10193         * mini.c generic-sharing.c jit-icalls.c aot-compiler.c: Use accessor functions
10194         for accessing method->generic_container.
10195
10196 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
10197
10198         * mini.c (mono_method_check_inlining): Avoid creating vtables if possible.
10199         
10200         * mini.c (SIG_HANDLER_SIGNATURE): Fix sparc build too.
10201
10202         * mini.c (SIG_HANDLER_SIGNATURE): Fix IA64 build.
10203
10204         * mini.c (mono_jit_compile_method_inner): Avoid a crash if mono_class_vtable ()
10205         fails.
10206
10207 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
10208
10209         * driver.c (mono_main): Set mono_setup_vtable_in_class_init to FALSE.
10210
10211         * mini.c: Handle the case when mono_class_vtable () fails.
10212
10213 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
10214         * mini.c (sigprof_signal_handler): Support call chains (backtrace) in
10215         the stat profiler.
10216
10217 2008-05-22  Mark Probst  <mark.probst@gmail.com>
10218
10219         * mini.c, jit-icalls.c, jit-icalls.h: Make generic sharing work
10220         together with domain sharing.
10221
10222 2008-05-22  Mark Probst  <mark.probst@gmail.com>
10223
10224         * mini.c: Treat callvirts to final methods like non-virtual calls
10225         when doing generic sharing, i.e. look them up in the runtime
10226         generic context.
10227
10228 2008-05-22  Mark Probst  <mark.probst@gmail.com>
10229
10230         * inssel.brg, mini-ops.h: Added opcodes for mkrefany and refanyval
10231         with computed types (for generic sharing).
10232
10233         * mini.c: Generic sharing for mkrefany and refanyval.
10234
10235 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
10236
10237         * inssel.brg (mini_emit_virtual_call): Avoid constructing a generic vtable if
10238         possible.
10239
10240         * mini-trampolines.c (mono_magic_trampoline): Avoid calling setup_methods () in
10241         the generic sharing code.
10242         
10243         * mini-trampolines.c (mono_magic_trampoline): Call mono_class_setup_methods ()
10244         when needed.
10245
10246 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
10247
10248         * mini.h: Remove the declaration of mono_aot_init_vtable ().
10249
10250 2008-05-21  C.J. Adams-collier <cjac@colliertech.org>
10251
10252         * driver.c: updated copyright date
10253
10254 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
10255
10256         * aot-runtime.c mini.c: Remove the AOT init_vtable stuff as it is no longer
10257         needed.
10258
10259 2008-05-19  Martin Baulig  <martin@ximian.com>
10260
10261         * debug-debugger.h (MonoDebuggerInfo): Add `using_mono_debugger'
10262         pointing to the new `_mono_debug_using_mono_debugger' variable.
10263
10264         * driver.c
10265         (mono_main): Check mono_debug_using_mono_debugger() rather than
10266         the `MONO_INSIDE_MDB' environment variable to check whether we're
10267         inside the debugger.
10268
10269 2008-05-19  Zoltan Varga  <vargaz@gmail.com>
10270
10271         * mini.c (mini_method_compile): Use cfg->args [0] for accessing the this
10272         argument.
10273
10274 2008-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
10275
10276         * declsec.h: Move MONO_SECMAN_FLAG to metadata/metadata-internals.h.
10277
10278         * mini.c: Added mini_assembly_can_skip_verification. This
10279         function checks if the assembly requested to skip verification. 
10280         Fixes part of #387274.
10281
10282 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
10283
10284         * mini.c (mini_get_method): Disable the check for open generic classes when
10285         using generic sharing.
10286
10287         * generics.cs: Add a test for #387034.
10288
10289         * mini.c (mini_get_method): Check whenever the method class is an open generic
10290         type, and return NULL in that case, causing a verification error. Fixes
10291         #384123.
10292
10293 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
10294
10295         * driver.c (mono_main): Revert r102623. The right
10296         thing to do is to enable the verifier under verifiable
10297         unless a --security flag was passed.
10298
10299         We need this non-trivial behavior for --verify-all otherwise
10300         mcs-compileall won't be able to use it. As it needs everything to
10301         be verified under validil.
10302
10303 2008-05-06  Martin Baulig  <martin@ximian.com>
10304
10305         Fix #383749.
10306
10307         * debug-mini.c (mono_debugger_thread_created): Add proper locking.
10308         (mono_debugger_thread_cleanup): Likewise.
10309         (mono_debugger_extended_notification): Likewise.
10310
10311 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
10312
10313         * mini.c (mono_method_to_ir): Verify visibility of call related opcodes
10314         against both inflated and non-inflated methods. We need to check against the
10315         generic definition for cases where the instantiated method is not visible.
10316         We need to check against the inflated types for cases where the instantiation
10317         changes any super type. This fixes #382986.
10318
10319         Note that this doesn't need to be applied to other parts of mono_method_to_ir
10320         that check for visibiliy as generic params only appears as the type subject
10321         of tokens on call opcodes. Field manipulation and ldftn must always
10322         target an exact type.
10323
10324 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
10325
10326         * driver.c (mono_main): Using --verify-all enables the verifier under validil mode
10327         if no related --security flag is passed.
10328
10329 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
10330
10331         * mini-arch.h: Prepare support for ppc64.
10332
10333         Contributed under MIT/X11 license.
10334
10335 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
10336
10337         * aot-runtime.c: Prepare support for ppc64.
10338
10339         Contributed under MIT/X11 license.
10340
10341 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
10342
10343         * mini-ops.h: Prepare support for ppc64.
10344
10345         Contributed under MIT/X11 license.
10346
10347 2008-05-04  Andreas Farber  <andreas.faerber@web.de>
10348
10349         * helpers.c: Add support for OSX/ppc64 and Linux/ppc64 (dis)assemblers.
10350
10351         Contributed under MIT/X11 license.
10352
10353 2008-05-03  Zoltan Varga  <vargaz@gmail.com>
10354
10355         * aot-runtime.c (load_aot_module): Avoid trying to load aot code for dynamic
10356         assemblies, since aot_name is not a full path, causing us to load MS.NET 
10357         assemblies on windows.
10358
10359 ?2008-04-28  Kornel Pal  <kornelpal@gmail.com>
10360
10361         * mini.c (mono_jit_compile_method_inner): Use g_warning instead of g_error
10362         for unsupported METHOD_IMPL_ATTRIBUTE_NATIVE.
10363         * main.c: Use UTF-8 encoded command line instead of Windows default code
10364         page on Windows to support Unicode.
10365         * driver.c (DllMain): New function for mixed-mode assembly support.
10366         * Makefile.am: Add -Wl,--kill-at to libmono_la_LDFLAGS on Windows to
10367         export __stdcall functions without decoration.
10368
10369         Contributed under MIT/X11 license.
10370
10371 2008-04-28  Mark Probst  <mark.probst@gmail.com>
10372
10373         * tramp-amd64.c, mini-amd64.c: Preserve R11 in the trampoline by
10374         saving it very early.
10375
10376 2008-04-28  Mark Probst  <mark.probst@gmail.com>
10377
10378         * mini.h, mini.c: Lots of code for accessing the old RGCTX
10379         deleted.  The only way to access the new RGCTX is via the
10380         trampline.
10381
10382         * mini.c, mini-amd64, mini-x86.c, mini-exceptions.c: Pass the
10383         vtable instead of the RGCTX to static methods.
10384
10385         * mini-tramplines.c, tramp-amd64.c, tramp-x86.c: Trampoline for
10386         accessing the new RGCTX.
10387
10388         * generic-sharing.c: There is no separation between self, type
10389         arguments and other types in the RGCTX anymore.
10390
10391 2008-04-25  Jonathan Chambers <joncham@gmail.com>
10392
10393         * mini-amd64.c (add_general): Remove previous stack adjustment.
10394         (mono_arch_call_opcode): Remove OP_OUTARG_MEMBASE and instead simply
10395         adjust stack pointer after pushing args. Adjust ARGS_OFFSET to account
10396         for 32 bytes of stack space reserved for all calls.
10397         
10398         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Remove.
10399         (OP_AMD64_OUTARG_ALIGN_STACK): Take argument to specify size of stack 
10400         adjustment.
10401         
10402         Code contributed under MIT/X11 license.
10403
10404 2008-04-23  Rodrigo Kumpera  <rkumpera@novell.com>
10405
10406         * mini.c (mini_method_verify): Only verify non-inflated methods, check
10407         against the root definition, peeling out method and type instantiations.
10408         Cache verify success results, code that fails verification is still
10409         checked multiple times.
10410
10411 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
10412
10413         * mini.c (mono_method_to_ir): Avoid inserting write barriers for stores of null.
10414
10415 2008-04-23  Jonathan Chambers <joncham@gmail.com>
10416
10417         * mini-amd64.c (add_general): Always increment stack on Win64.
10418         (mono_arch_call_opcode): Use OP_OUTARG_MEMBASE instead of OP_OUTARG
10419         on Win64.
10420         
10421         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Add OP_OUTARG_MEMBASE for 
10422         stack based argument handling on Win64.
10423         
10424         Code contributed under MIT/X11 license.
10425
10426 2008-04-23  Raja R Harinath  <harinath@hurrynot.org>
10427
10428         * Makefile.am (version.h): Add support for git-svn.
10429
10430 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
10431
10432         * mini-exceptions.c (mono_handle_native_sigsegv): Rework the gdb calling code
10433         so instead of calling g_spawn_command_line_sync, we do everything by hand, 
10434         avoiding allocations and libc functions which might deadlock.
10435         
10436         * mini-exceptions.c (mono_handle_native_sigsegv): Avoid calling gdb if the
10437         'no-gdb-backtrace' option is set.
10438
10439         * mini.c (mini_parse_debug_options): Parse 'no-gdb-backtrace' option.
10440
10441         * mini.h (MonoDebugOptions): Add 'no_gdb_backtrace' option.
10442
10443 2008-04-21  Martin Baulig  <martin@ximian.com>
10444
10445         * debug-debugger.h (MonoDebuggerInfo): Removed `attach', `detach'
10446         and `get_lmf_addr'; `notification_address' is no longer a pointer.
10447
10448 2008-04-21  Martin Baulig  <martin@ximian.com>
10449
10450         * debug-debugger.h (MonoDebuggerInfo): Added `thread_vtable_ptr',
10451         `thread_vtable', `event_handler_ptr' and `event_handler'.
10452
10453 2008-04-21  Martin Baulig  <martin@ximian.com>
10454
10455         * debug-debugger.h (MonoDebuggerInfo): Added `init_code_buffer';
10456         allows delayed initialization of the `executable_code_buffer' when
10457         attaching.
10458
10459 2008-04-21  Martin Baulig  <martin@ximian.com>
10460
10461         * mini.h (mono_debugger_create_notification_function): Removed.
10462         * tramp-*.c (mono_debugger_create_notification_function): Removed.
10463
10464         * mdb-debug-info64.s
10465         (MONO_DEBUGGER__notification_function): Added this in the .text section.
10466
10467         * mdb-debug-info32.s
10468         (MONO_DEBUGGER__notification_function): Added this in the .text section.
10469
10470         * Makefile.am: Fix the mdb-debug-info*.s logic; the debugger
10471         currently only works on x86 and x86_64, so don't create it on ppc.
10472
10473 2008-04-21  Martin Baulig  <martin@ximian.com>
10474
10475         * mini.h (MonoDebugOptions): Added `mdb_optimizations'.
10476
10477         * mini.c
10478         (mini_method_compile): In the fp elimination check, check
10479         `debug_options.mdb_optimizations' in addition to
10480         mono_debug_using_mono_debugger().       
10481
10482         * driver.c (mono_main): Added `--debug=mdb-optimizations' option to
10483         disable some JIT optimizations which are only disabled when
10484         running inside the debugger.
10485         Added `--help-debug' option to describe the debugging options.
10486         (parse_debug_options): New static function to parse the `--debug'
10487         options, so we can easily add more stuff in future.
10488
10489 2008-04-20  Zoltan Varga  <vargaz@gmail.com>
10490
10491         * mini.c (set_exception_type_from_invalid_il): Avoid reading invalid memory when
10492         the method has no body.
10493
10494 2008-04-19  Jonathan Chambers <joncham@gmail.com>
10495
10496         * mini-amd64.c (cpuid): Implement with MSVC intrinsic as inline
10497         assembly is not allowed in MSVC 64-bit compiler. 
10498         (mono_arch_cpu_init): Don't set floating point precision on MSVC build
10499         as we get floating point exceptions everywhere.
10500         
10501         * exceptions-amd64.c (get_throw_trampoline): Push empty args on stack to
10502         correctly align arguments for call to throw_exception.
10503         (prepare_for_guard_pages): Cast to guint64 instead of unsigned long.
10504         
10505         Code contributed under MIT/X11 license.
10506
10507 2008-04-19  Zoltan Varga  <vargaz@gmail.com>
10508
10509         * mini-amd64.c (amd64_patch): Make the check for (%rip) addressing more strict.
10510
10511 2008-04-17  Zoltan Varga  <vargaz@gmail.com>
10512
10513         * inssel.brg (OP_SWITCH): Use (gint64) instead of (long) to cast a large constant.
10514
10515         * mini-amd64.c (NEW_INS): Set cil_code.
10516
10517         * mini.c (mini_method_compile): Move the disabling of fp elimination to here
10518         from mini-amd64.c so all debugger related logic is in one place.
10519
10520         * mini.c: Set cfg->ip to NULL after passes which set it so instructions created
10521         later won't have a random ip assigned to them.
10522
10523 2008-04-16  Zoltan Varga  <vargaz@gmail.com>
10524
10525         * mini-trampolines.c (mono_create_jump_trampoline): Add an assert to check that
10526         the arch specific function initializes code_size.
10527         (mono_create_delegate_trampoline): Ditto.
10528
10529         * mini-mips.h mini-mips.c inssel-mips.brg inssel-long32-mips.brg cpu-mips.md
10530         tramp-mips.c: Resurrect MIPS port and also fix the issues on little-endian
10531         platforms.
10532
10533         * liveness.c (mono_analyze_liveness): Disable the initlocals optimization if 
10534         running under the debugger.
10535
10536         * linear-scan.c (mono_linear_scan): Avoid sharing registers if running under the
10537         debugger.
10538
10539         * mini.c (mini_method_compile): Set a few flags in cfg if running under the
10540         debugger. Also move the disabling of optimizations here from driver.c.
10541         (mono_allocate_stack_slots_full): Avoid sharing stack slots if running under the
10542         debugger.
10543
10544         * mini.h (MonoCompile): Add a few new flags.
10545
10546 2008-04-15  Zoltan Varga  <vargaz@gmail.com>
10547
10548         * mini.c (mono_method_to_ir): Set cfg->ip before processing an IL instruction
10549         so the cil_code field of created MonoInst's is properly set.
10550         (mini_select_instructions): Ditto.
10551
10552         * mini.h (MONO_INST_NEW): Initialize the cil_code field using cfg->ip.
10553         (MONO_INST_NEW_CALL): Ditto.
10554
10555         * mini.c inssel.brg inssel-x86.brg inssel-amd64.brg: Use MONO_INST_NEW ()
10556         in many places so the ins->cil_code field is properly initialized.
10557
10558         * mini.c (mono_bblock_add_inst): Call MONO_ADD_INS () so the logic is in one
10559         place.
10560
10561 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
10562
10563         * mini.c (mini_method_compile): Print a different message when compiling a 
10564         shared method.
10565         
10566         * mini.c (GENERIC_SHARING_FAILURE): Print a failure message when verbose_level
10567         > 1.
10568
10569 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
10570
10571         * mini-amd64.c (mono_arch_output_basic_block): Implement OP_ABS directly using
10572         SSE2 instructions.
10573
10574         * basic-math.cs: Fix warnings. Add a test for Math.Abs ().
10575         
10576 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
10577
10578         * mini.c (handle_stack_args): Make this return void since its return value was
10579         never used. Also set cfg->unverifiable for invalid IL instead of calling
10580         G_BREAKPOINT ().
10581
10582 2008-04-10  Mark Probst  <mark.probst@gmail.com>
10583
10584         * mini.c: Make sure "this" is live in catch clauses with type
10585         variables in shared generic code.
10586
10587 2008-04-08  Mark Probst  <mark.probst@gmail.com>
10588
10589         * mini.c: Replaced uses of MONO_TYPE_IS_REFERENCE with calls to
10590         generic_class_is_reference_type() to ensure the proper behaviour
10591         when sharing generic code and the type in question is a type
10592         argument.
10593
10594 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
10595
10596         * mini-exceptions.c: Applied patch from Mark Spruiell (mes@zeroc.com). Fix
10597         race conditions when printing thread dumps. Fixes #377738.
10598
10599 2008-04-08  Massimiliano Mantione  <massi@ximian.com>
10600         
10601         aliasing.c (update_aliasing_information_on_inst): Fixed a bug which
10602         shows up when both MonoInst arguments can cause aliasig.
10603         There is likely no way in the current JIT to trigger this problem, but
10604         it showed up in the development of generics sharing, when in a new
10605         opcode both args of an OP_GROUP can be aliases (addresses of a local).
10606         When the generics sharing code will be committed, its tests will be
10607         valid also for this bug.
10608
10609 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
10610
10611         * aot-runtime.c (decode_patch_info): Always transform PATCH_INFO_WRAPPER to
10612         PATCH_INFO_METHOD.
10613
10614         * mini.c (mono_resolve_patch_target): Fix a crash in the AOT case if method is
10615         NULL.
10616
10617 2008-04-07  Zoltan Varga  <vargaz@gmail.com>
10618
10619         * mini-exceptions.c (mono_handle_exception_internal): When --debug=casts is used,
10620         use a more detailed exception message for InvalidCastException.
10621
10622         * mini.h (MonoJitTlsData): Add 'class_cast_from' and 'class_cast_to' fields.
10623
10624         * driver.c (mono_main): Add --debug=casts option to turn on better 
10625         InvalidCastException message details.
10626
10627         * mini.c (mini_get_debug_options): New helper function to return the address of
10628         the debug_options variable.
10629
10630         * mini.c (mono_get_jit_tls_intrinsic): New helper function to create a load of
10631         the jit_tls TLS variable.
10632
10633         * mini.c (mono_jit_tls): New TLS variable.
10634
10635         * inssel.brg: Save the details of a cast to a TLS variable when the --debug=casts
10636         option is used.
10637
10638 2008-04-07  Rodrigo Kumpera  <rkumpera@novell.com>
10639
10640         * mini.h: Removed verifer related stuff. This code was moved to verify.c
10641
10642         * mini.c: Removed verifer related stuff, code moved to verify.c.
10643
10644         * driver.c: Using code from verify.c instead of mini.c.
10645
10646 2008-04-05  Zoltan Varga  <vargaz@gmail.com>
10647
10648         * mini.c (check_for_method_verify): Remove the mscorlib comment since it is no
10649         longer valid.
10650
10651 2008-04-04  Rodrigo Kumpera  <rkumpera@novell.com>
10652
10653         * mini.c (check_for_method_verify): Enabling verification of
10654         corlib if mono_verify_all is set. Bugs in the verifier preventing that
10655         have been fixed.
10656
10657 2008-04-04  Zoltan Varga  <vargaz@gmail.com>
10658
10659         * exceptions-amd64.c (throw_exception): Unify the win32/non-win32 cases, save
10660         caller saved registers as well.
10661         
10662         * exceptions-amd64.c (mono_arch_get_restore_context): Restore most caller
10663         saved registers as well.
10664
10665 2008-03-30  Zoltan Varga  <vargaz@gmail.com>
10666
10667         * mini-x86.c cpu-x86.md inssel-x86.brg: Add min/max intrinsics.
10668
10669         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of the non-SSE2 floating point
10670         code.
10671
10672 2008-03-27  Zoltan Varga  <vargaz@gmail.com>
10673
10674         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'gsctx' argument and pass it
10675         to get_call_info.
10676         (get_call_info): Take a gsctx argument instead of 'cfg'.
10677
10678 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
10679
10680         * mini.c (check_for_method_verify): Avoid verifying mscorlib methods even if
10681         mono_verify_all is set.
10682
10683         * driver.c (compile_all_methods_thread_main): Don't exit at the first error.
10684
10685         * mini.c mini.h: Remove the unused and incomplete stack merge verification code.
10686
10687 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
10688
10689         * driver.c (compile_all_methods_thread_main): Error out if compilation fails with
10690         an exception.
10691
10692         * driver.c mini.c mini.h: Add a --verify-all development option to test the
10693         verifier and the code generated by the compiler.
10694
10695 2008-03-25  Mark Probst  <mark.probst@gmail.com>
10696
10697         * mini.c: Generic sharing of the non-nullable case of the box
10698         instruction.
10699
10700 2008-03-24  Zoltan Varga  <vargaz@gmail.com>
10701
10702         * inssel.brg: Fix the build.
10703
10704         * iltests.il.in: Add a test for lconv.ovf.u8.un.
10705
10706 2008-03-24  Rodrigo Kumpera  <rkumpera@novell.com>
10707
10708         * mini.c (mono_method_to_ir): Implement readonly for ldelema and
10709         Array:Address. Fixes #372410.
10710
10711         * iltests.il.in: New tests for readonly prefix.
10712
10713 2008-03-23  Zoltan Varga  <vargaz@gmail.com>
10714
10715         * mini.h mini.c mini-trampolines.c: Move trampoline related code to 
10716         mini-trampolines.c.
10717
10718         * mini.h mini.c mini-exceptions.c: Move mini_init_exceptions () to 
10719         mini-exceptions.c.
10720
10721         * mini-amd64.c mini-s390.c (mono_arch_lowering_pass): Use mono_decompose_op_imm ().
10722         
10723         * mini.c (mono_decompose_op_imm): New helper function.
10724
10725         * mini-s390x.c (calculate_sizes): Rename this to get_call_info for consistency
10726         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
10727         return value.
10728
10729         * mini-s390x.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
10730         mono_arch_output_basic_block. Fix warnings.
10731
10732         * inssel-s390x.brg: Remove the unneccesary OP_LMUL_IMM rule to fix the s390x build
10733         for now.
10734
10735 2008-03-22  Zoltan Varga  <vargaz@gmail.com>
10736
10737         * mini-exceptions.c (ves_icall_get_frame_info): Remove the ia64/s390 workarounds
10738         since the extra frame is now detected automatically inside the loop.
10739
10740         * mini-s390.c (mono_arch_peephole_pass_2): Remove the arch independent peephole 
10741         opts which are now in mono_peephole_ins ().
10742         
10743         * mini-s390.c (mono_arch_output_basic_block): Fix OP_FCALL_MEMBASE.
10744
10745         * mini-exceptions.c (ves_icall_get_frame_info): Skip native-to-managed wrapper
10746         frames and skip duplicate managed-to-native frames. Fixes #367665.
10747
10748         * mini-x86.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
10749         opts which are now in mono_peephole_ins ().
10750         (mono_arch_peephole_pass_2): Ditto.
10751
10752         * mini-codegen.c (mono_peephole_ins): Fix a problem on 32 bit platforms.
10753
10754         * mini-codegen.c (mono_peephole_ins): New helper function containing the
10755         arch independent peephole optimizations.
10756
10757         * mini-amd64.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
10758         opts which are now in mono_peephole_ins ().
10759
10760         * mini-amd64.c (mono_arch_peephole_pass_2): Ditto.
10761         
10762         * mini-s390.c (mono_arch_output_basic_block): Fix build.
10763
10764         * tramp-s390.c (mono_arch_get_vcall_slot): Handle an additional instruction
10765         pattern.
10766
10767         * mini-s390.c (mono_arch_output_basic_block): Handle big offsets in the
10768         CALL_MEMBASE opcodes. Fix setting of the destination in the OP_LCONV_TO_OVF_I
10769         opcode. 
10770
10771 2008-03-21  Zoltan Varga  <vargaz@gmail.com>
10772
10773         * mini-s390.c (calculate_sizes): Rename this to get_call_info for consistency
10774         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
10775         return value.
10776
10777         * mini-s390.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
10778         mono_arch_output_basic_block. Fix warnings.
10779
10780 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
10781
10782         * inssel-long32.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
10783         conv.ovf.u.un.
10784
10785 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
10786
10787         * inssel-long.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
10788         conv.ovf.u.un.
10789
10790         * iltests.il: Add new tests.
10791
10792 2008-03-20  Kornel Pal  <kornelpal@gmail.com>
10793
10794         * mini.c: Removed Windows version macros.
10795
10796 2008-03-20  Mark Probst  <mark.probst@gmail.com>
10797
10798         * generic-sharing.c: Put reflection types in the extensible part
10799         of the runtime generic context.
10800
10801         * mini.c: Generic sharing of the GetTypeHandle special case of the
10802         ldtoken instruction.
10803
10804 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
10805
10806         * mini.h (MONO_BB_FOR_EACH_INS_SAFE): New helper macro.
10807
10808         * mini-<ARCH>.c: Use the new macro instead in the peephole/lowering passes.
10809         
10810         * mini.h (MONO_DEL_INS): Rename to MONO_DELETE_INS and Add a 'bb' argument for 
10811         consistency with the other version on the linear IR branch.
10812
10813         * mini-<ARCH>.c: Update callers of MONO_DEL_INS.
10814
10815         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i/conv.ovf.u.
10816
10817         * iltests.il.in: Add new tests.
10818
10819 2008-03-19  Zoltan Varga  <vargaz@gmail.com>
10820
10821         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i.un/conv.ovf.u.un.
10822
10823         * iltests.il.in: Add new tests.
10824
10825 2008-03-19  Mark Probst  <mark.probst@gmail.com>
10826
10827         * mini.c: Two variables with the same name were declared in
10828         nesting contexts and one wasn't initialized.  Fixed.
10829
10830 2008-03-19  Mark Probst  <mark.probst@gmail.com>
10831
10832         * mini.c: Generic sharing of the initobj instruction.
10833
10834 Tue Mar 18 20:18:02 CET 2008 Paolo Molaro <lupus@ximian.com>
10835
10836         * mini.c: make the test to optimize ldtoken from typeof() more
10837         precise.
10838
10839 2008-03-18  Mark Probst  <mark.probst@gmail.com>
10840
10841         * mini.c: Generic sharing of the initobj instruction for reference
10842         types.
10843
10844 Tue Mar 18 12:39:27 CET 2008 Paolo Molaro <lupus@ximian.com>
10845
10846         * mini.h, mini-amd64.c, mini-x86.c, tramp-amd64.c, tramp-x86.c: change
10847         the mono_breakpoint_clean_code() code to perform bound checks.
10848
10849 Tue Mar 18 11:50:14 CET 2008 Paolo Molaro <lupus@ximian.com>
10850
10851         * mini.h, mini-trampolines.c, tramp-*.c: change the signature of
10852         mono_arch_patch_callsite() to include the start of the managed method
10853         to be able to perform bound checks.
10854
10855 2008-03-17  Mark Probst  <mark.probst@gmail.com>
10856
10857         * mini.c: Generic sharing for the isinst instruction.
10858
10859 2008-03-17  Mark Probst  <mark.probst@gmail.com>
10860
10861         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
10862         inssel-long32-mips.brg: Added opcodes for doing indirect calls
10863         with the runtime generic context argument.
10864
10865         * mini.c: Share calls to several types of unsharable methods by
10866         putting the address of the method code in the runtime generic
10867         context and doing an indirect call.
10868
10869         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
10870         to switches.
10871
10872 2008-03-16  Mark Probst  <mark.probst@gmail.com>
10873
10874         * generic-sharing.c: Change due to a change in the runtime genric
10875         context API.
10876
10877 2008-03-15  Martin Baulig  <martin@ximian.com>
10878
10879         * tramp-x86.c
10880         (mono_arch_nullify_class_init_trampoline): Add call to
10881         mono_breakpoint_clean_code() to make things work when running
10882         inside the debugger.
10883
10884         * tramp-amd64.c
10885         (mono_arch_nullify_class_init_trampoline): Add call to
10886         mono_breakpoint_clean_code() to make things work when running
10887         inside the debugger.
10888
10889 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
10890
10891         * inssel-long.brg (reg): Fix 64 bit build.
10892
10893 2008-03-14  Mark Probst  <mark.probst@gmail.com>
10894
10895         * mini.c, mini.h: Share static generic code by passing it an
10896         implicit argument pointing to the runtime generic context.
10897
10898         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
10899         inssel-long32-mips.brg: New opcodes for calling shared static,
10900         which need to be passed the runtime generic context.
10901
10902         * mini-amd64.c, mini-x86.c: Save the runtime generic context
10903         argument on the stack in the prologue if needed.  New function for
10904         finding the runtime generic context argument from the registers
10905         saved by the trampoline.
10906
10907         * mini-amd64.h, mini-x86.h: Specify which register to use for the
10908         runtime generic context argument.
10909
10910         * tramp-amd64.c: Also restore the register used for the runtime
10911         generic context argument.
10912
10913         * mini-trampoline.c: Resolve shared static calls by consulting the
10914         runtime generic context via the new argument.
10915
10916         * generic-sharing.c: Add an argument to sharability-checking
10917         functions that specifies whether type variables should be treated
10918         as sharable type arguments.
10919
10920         * inssel-x86.brg: Removed a superfluous, buggy rule.
10921
10922         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
10923         to switches.
10924
10925 2008-03-14  Martin Baulig  <martin@ximian.com>
10926
10927         * debug-debugger.c (main_thread_handler): Call
10928         mono_runtime_run_main() without sending any notifications.
10929
10930         * debug-debugger.h (MonoDebuggerInfo): Added `get_method_signature.
10931
10932 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
10933
10934         * mini-trampolines.c (mono_magic_trampoline): Fix build on platforms without IMT.
10935
10936 2008-03-14  Mark Probst  <mark.probst@gmail.com>
10937
10938         * tramp-x86.c: Fixed register restore offsets in the trampoline
10939         code for ECX and EDX.
10940
10941 2008-03-12  Geoff Norton  <gnorton@novell.com>
10942
10943         * mini-arm.h: Add some #defines for locating sp, pc, r4 with
10944         different ucontext_t implementations.
10945         * exceptions-arm.c: Use the above defines to get exceptions working on 
10946         iPhone (based on a patch by Luke Howard lukeh@padl.com)
10947         * mini-arm.c: Implement iPhone icache support (based on a patch by
10948         Luke Howard lukeh@padl.com)
10949
10950 2008-03-12  Mark Probst  <mark.probst@gmail.com>
10951
10952         * mini.c: Enable generic sharing of calls to non-static
10953         non-interface non-generic non-value-type methods.
10954
10955         * mini-trampolines.c: Resolve calls from shared generic code.
10956
10957 2008-03-11  Zoltan Varga  <vargaz@gmail.com>
10958
10959         * Makefile.am il2tests.il iltests.il.in: Delete il2tests, merge it into iltests.
10960
10961         * tramp-amd64.c (mono_arch_create_trampoline_code): Correctly save RBP as well.
10962
10963 Mon Mar 10 11:59:34 CET 2008 Paolo Molaro <lupus@ximian.com>
10964
10965         * mini.c: some fixes for the AOT compiler.
10966
10967 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
10968
10969         * cpu-amd64.md: Add clob:1 to some float opcodes.
10970
10971 2008-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
10972
10973         * mini.h: Added MiniVerifierMode enumeration.
10974
10975         * mini.c: Added mini_verifier_set_mode to control
10976         the usage of the new verifier.
10977
10978         * mini.c (mono_method): Integrated the new verifier.
10979
10980         * driver.c: Extended --security option with validil and
10981         verifiable options to activate the new verifier.
10982
10983 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
10984
10985         * mini.c jit-icalls.h jit-icalls.c: Generalize the exception creation 
10986         optimization to ctors taking 0 or 2 arguments too.
10987
10988         * mini.c (mono_method_to_ir): Optimalize the size of the exception throwing code
10989         a bit.
10990
10991         * jit-icalls.h (mono_create_corlib_exception): New JIT icall.
10992
10993         * mini-amd64.c (mono_arch_emit_prolog): Improve the first_bb optimization a bit.
10994
10995 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
10996
10997         * mini.c (mono_method_to_ir): Apply one of the ldstr optimizations in the
10998         non-aot case as well.
10999
11000         * cpu-amd64.md: Reduce the max size of some frequently used opcodes.
11001
11002         * aot-runtime.c (decode_patch_info): Update this after the ldfld/stfld wrapper
11003         changes.
11004
11005         * aot-compiler.c (encode_patch): Ditto.
11006
11007         * mini.h (G_MININT32): Fix the definition of this.
11008
11009 2008-03-05  Zoltan Varga  <vargaz@gmail.com>
11010
11011         * mini.h: Define G_MININT32/G_MAXINT32 if using an older glib version.
11012
11013         * cfold.c: Remove definition of G_MININT32 which is now in mini.h.
11014
11015 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
11016
11017         * mini-amd64.c (mono_arch_compute_omit_fp): Don't disable fp elimination for 
11018         methods returning vtypes in registers.
11019         (mono_arch_allocate_vars): Ditto.
11020
11021         * mini-amd64.c (mono_arch_get_this_arg_reg): New arch specific helper function.
11022
11023         * tramp-amd64.c (mono_arch_get_unbox_trampoline): Use mono_arch_get_this_arg_reg ().    
11024
11025         * generics.cs: Add a test from the linear IR branch.
11026
11027         * mini-amd64.c (emit_load_volatile_arguments): Handle vtypes passed in regs too.
11028
11029         * mini.c (inline_method): Cache failed inline attempts.
11030
11031 2008-03-04  Mark Probst  <mark.probst@gmail.com>
11032
11033         * mini.c: For shared methods of generic classes put the location
11034         of "this" into the MonoGenericJitInfo.
11035
11036         * mini-x86.c, mini-amd64.c, mini.h: Added function for fetching a
11037         register out of a MonoContext by register number.  Add the generic
11038         sharing context as an argument to mono_arch_find_this_argument().
11039
11040         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
11041         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c: Added stub
11042         for new arch function.
11043
11044         * mini-exception.c: Handle open exception clauses in shared
11045         generic code.
11046
11047         * mini-trampolines.c: Supply additional argument to
11048         mono_arch_find_this_argument().
11049
11050 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
11051
11052         * Makefile.am (regtests): Run the bench.exe tests last.
11053
11054 2008-03-03  Zoltan Varga  <vargaz@gmail.com>
11055
11056         * mini-amd64.c (mono_arch_emit_prolog): Improve the first bblock optimization
11057         a bit.
11058
11059 2008-03-02  Zoltan Varga  <vargaz@gmail.com>
11060
11061         * mini.c (mono_method_to_ir): Allow callvirt on static methods for compatibility
11062         with MS.
11063
11064         * mini-amd64.c (mono_arch_emit_prolog): Fix tracing after the last change.
11065         
11066         * mini-amd64.c (mono_arch_emit_prolog): Avoid saving dead arguments.
11067
11068         * mini.c (mono_method_check_inlining): Avoid disabling inlining for methods
11069         whose class has no cctor.
11070
11071         * liveness.c (mono_analyze_liveness): Mark dead arguments with MONO_INST_IS_DEAD.
11072
11073 2008-03-01  Zoltan Varga  <vargaz@gmail.com>
11074
11075         * mini.c (mono_method_to_ir): Report calling a static method using callvirt as
11076         unverified.
11077
11078 2008-02-29  Zoltan Varga  <vargaz@gmail.com>
11079
11080         * mini-ops.h: Remove OP_SPARC_INARG_VT, add a new OP_VTARG_ADDR opcode instead
11081         to be in sync with the code on the linear IR branch.
11082
11083         * mini-sparc.c inssel-sparc.brg: Use OP_VTARG_ADDR.
11084
11085         * inssel-s390.brg (OP_SETRET (freg)): Set dreg correctly.
11086
11087 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
11088
11089         * mini-mips.c: Use cfg->vret_addr instead of cfg->ret.
11090
11091         * mini-s390x.c: Use cfg->vret_addr instead of cfg->ret.
11092
11093         * mini-s390.c: Use cfg->vret_addr instead of cfg->ret.
11094
11095         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_VARS define.
11096
11097         * mini-<ARCH>.c (mono_arch_create_vars): Define this for all architectures.
11098         
11099         * mini.c (mono_method_to_ir): Avoid invalid memory reads for methods without a
11100         body.
11101
11102 2007-11-14  Yoichi NAKAYAMA  <nakayama@pixela.co.jp>
11103
11104         * inssel-mips.brg (OP_OUTARG_MEMBASE (CEE_LDIND_R4 (base))): Add missing
11105         OP_LOADR4_MEMBASE emission.
11106
11107         * mini-codegen.c (mono_spillvar_offset_int): Remove assertion.
11108         (mono_spillvar_offset_float): Ditto.
11109
11110         * mini-mips.c (mono_arch_emit_prolog): Ditto.
11111
11112         * inssel-long32-mips.brg: Fix wrong branching, reduce redundant code
11113         emission.
11114
11115         * basic-long.cs: Add regression tests for them.
11116
11117         * mini-mips.c (add_float32_arg): Respect o32 calling convention in gr
11118         use.
11119         (mono_arch_allocate_vars): Fix representation of single-precision float
11120         argument.
11121         (mono_arch_output_basic_block): Ditto.
11122
11123         * inssel-mips.brg: Ditto, remove duplicate items.
11124
11125         * mini-mips.c (emit_load_volatile_arguments): New function to handle
11126         arguments of tail calls as on other platforms.
11127         (mono_arch_output_basic_block): Handle tail calls.
11128
11129         * inssel-mips.brg (OP_OUTARG_VT (CEE_LDOBJ (base))): Correct destination
11130         register.
11131
11132         * objects.cs (test_5_pass_static_struct): Add test for it.
11133
11134         Contributed under MIT/X11 license.
11135
11136 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
11137
11138         * Makefile.am: Use gmcs for compiling the regression tests.
11139
11140         * *.2.cs *.2.il: Rename to *.cs and *.il.
11141
11142 2008-02-24  Zoltan Varga  <vargaz@gmail.com>
11143
11144         * regalloc.h: Make the vassign array smaller.
11145
11146         * mini.c (mini_method_compile): Remove an unused field in cfg.
11147
11148         * mini-codegen.c: Add a bunch of micro optimizations.
11149
11150 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
11151
11152         * regalloc.h: Remove some unused fields.
11153
11154 2008-02-22  Zoltan Varga  <vargaz@gmail.com>
11155
11156         * mini-amd64.c (mono_arch_patch_code): Fix a warning.
11157
11158         * ssa.c (mono_ssa_remove): Avoid declaring volatile variables dead.
11159
11160 2008-02-22  Mark Probst  <mark.probst@gmail.com>
11161
11162         * mini.h: New trampoline type (RGCTX_LAZY_FETCH).
11163
11164         * mini-trampolines.c, tramp-amd64.c, tramp-x86.c: RGCTX lazy fetch
11165         trampoline: Fetch an entry from the runtime generic context.  If
11166         it's NULL, jump to the actual trampoline to fill the runtime
11167         generic context.  Otherwise, return it.
11168
11169         * mini.c: Call the lazy fetch trampoline to get entries out of the
11170         runtime generic context.
11171
11172         * tramp-ia64.c, tramp-arm.c, tramp-alpha.c, tramp-s390.c,
11173         tramp-s390x.c, tramp-ppc.c, tramp-hppa.c, tramp-mips.c,
11174         tramp-sparc.c: Stubs for the lazy fetch trampoline.
11175
11176 2008-02-21  Mark Probst  <mark.probst@gmail.com>
11177
11178         * mini.c: Fetch data out of the extensible part of the runtime
11179         generic context instead of calling a helper function.
11180
11181         * generic-sharing.c: Some functions moved into
11182         metadata/generic-sharing.c.  Helper function for fetching other
11183         types now checks and asserts against extensible rgctx (just for
11184         debugging purposes - the helper function isn't called anymore
11185         unless for debugging).
11186
11187 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
11188
11189         * mini-arm.c (mono_arch_output_basic_block): Implement proper argument passing
11190         for tail calls up to the point that the tests in iltests.exe run. Also add a
11191         dummy CKFINITE implementation.
11192         (mono_arch_emit_prolog): Avoid saving the method in the LMF since it is only
11193         needed for trampoline LMF frames.
11194
11195         * exceptions-arm.c (mono_arch_find_jit_info): Only read lmf->method for 
11196         trampoline LMF frames.
11197
11198 2008-02-21  Rodrigo Kumpera  <rkumpera@novell.com>
11199
11200         * mini.c (inline_method): clean any pending loader error when inlining fail.
11201         Otherwise loader errors in mono_method_to_ir leaks and cause spurious errors.
11202
11203 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
11204
11205         * aot-compiler.c (encode_patch): Handle ICALL_ADDR patch type.
11206
11207         * aot-runtime.c (decode_patch_info): Ditto.
11208
11209         * mini.c (mono_resolve_patch_target): Ditto.
11210         
11211         * aot-compiler.c (compile_method): Add some experimental code for AOT compiling
11212         icall wrappers.
11213
11214         * patch-info.h (PATCH_INFO): Add 'ICALL_ADDR' patch type.
11215         
11216         * mini.c (mono_method_to_ir): Convert a CEE_MONO_LDPTR opcode to an AOT constant
11217         if it references an icall address.
11218
11219 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
11220
11221         * cpu-s390x.md: Remove some more unused opcodes.
11222         
11223         * cpu-s390x.md: Remove some unused opcodes.
11224
11225         * mini-ia64.c (mono_arch_lowering_pass): Add some more opcodes. Use
11226         mono_op_imm_to_op ().
11227
11228         * mini-sparc.c (opcode_to_sparc_cond): Use the mono_opcode_to_cond () functions
11229         instead of a switch statement.
11230         
11231         * mini-sparc.c (mono_arch_allocate_vars): Allocate a stack slot for use by
11232         the int<->float conversion opcodes instead of using mono_spillvar_offset_float ().
11233
11234         * mini-codegen.c: Eliminate rassign macro which is no longer needed.
11235         
11236         * mini-codegen.c: Remove unused mono_regstate2_... functions.
11237
11238         * mini-codegen.c (mono_print_ins_index): Avoid printing an index when it is
11239         -1.
11240
11241 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
11242
11243         * driver.c (mono_main): Improve error reporting when an assembly cannot be
11244         opened. Fixes #362607.
11245
11246         * cpu-ia64.md cpu-s390x.md: Remove some unused opcodes.
11247
11248         * iltests.il.in: Add a test for static methods in interfaces.
11249
11250 2008-02-18  Zoltan Varga  <vargaz@gmail.com>
11251
11252         * genmdesc.c (build_table): Fix a crash on older glib versions.
11253
11254         * cpu-sparc.md: Remove some unused opcodes.
11255         
11256         * genmdesc.c: Error out if the .md contains CEE_ opcodes if 
11257         MONO_ARCH_ENABLE_NORMALIZE_OPCODES is defined.
11258
11259         * cpu-amd64.md: Remove some unused opcodes.
11260
11261         * mini.h mini-ops.h mini.c: Define the OP_Ccc opcodes in mini-ops.h normally
11262         like the other opcodes.
11263
11264 2008-02-17  Zoltan Varga  <vargaz@gmail.com>
11265
11266         * mini-ia64.c: Use cfg->vret_addr instead of cfg->ret.
11267
11268         * mini-arm.h mini-arm.c: Use cfg->vret_addr instead of cfg->ret.
11269
11270         * mini-sparc.c: Use cfg->vret_addr instead of cfg->ret. Name the MonoCompile
11271         variables 'cfg' instead of 'm' for consistency.
11272
11273         * mini-x86.c: Use cfg->vret_addr instead of cfg->ret.
11274
11275         * mini.h (MonoCompile): Add new 'vret_addr' field which represents the hidden
11276         argument holding the vtype return address, to avoid the ambigious use of
11277         cfg->ret for this purpose.
11278
11279         * mini.c (NEW_RETLOADA): Use vret_addr if set.
11280
11281         * mini-amd64.c: Use cfg->vret_addr instead of cfg->ret.
11282         
11283         * mini-codegen.c (mono_print_ins): Rename to mono_print_ins_index (), Add a
11284         new mono_print_ins () function which only takes one argument.
11285
11286 2008-02-15  Zoltan Varga  <vargaz@gmail.com>
11287
11288         * mini-s390.h (MONO_OUTPUT_VTR): Use cfg instead of s, avoid assignments to
11289         macro arguments.
11290
11291 2008-02-14  Zoltan Varga  <vargaz@gmail.com>
11292
11293         * mini-ops.h: Get rid of OP_SPARC_LOCALLOC_IMM.
11294
11295         * mini-sparc.c inssel-sparc.brg: Use OP_LOCALLOC_IMM instead of OP_SPARC_LOCALLOC_IMM.
11296
11297         * mini-x86.c: Sync with the version on the linear IR branch by adding new 
11298         opcodes and other small changes.
11299
11300         * mini-ops.h: Add some new opcodes from the linear IR branch.
11301
11302         * mini-ops.h: Get rid of the OP_X86_..._MEMBASE opcodes.
11303
11304         * mini-x86.c inssel-x86.brg cpu-x86.md: Get rid of the confusing _MEMBASE
11305         opcodes, use the REG_MEMBASE opcodes instead.
11306         
11307         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Get rid of the confusing _MEMBASE
11308         opcodes, use the REG_MEMBASE opcodes instead.
11309         
11310         * mini-amd64.c (mono_arch_output_basic_block): Sync with the version on the
11311         linear IR branch.
11312
11313         * mini.c (mono_op_imm_to_op): New helper function.
11314
11315         * mini-ops.h: Add some opcodes from linear IR branch.
11316
11317 2008-02-13  Zoltan Varga  <vargaz@gmail.com>
11318
11319         * mini-alpha.h mini-alpha.c tramp-alpha.c: Alpha port updates from Sergey Tikhonov 
11320         <tsv@solvo.ru>.
11321
11322 2008-02-12  Zoltan Varga  <vargaz@gmail.com>
11323
11324         * mini.c (mono_normalize_opcodes): Always convert CEE_CONV_R4/R8 to 
11325         OP_ICONV_TO_R4/R8.
11326
11327         * mini-ia64.c cpu-ia64.md: Add OP_ICONV_TO_R4/R8.
11328
11329 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
11330
11331         * aot-compiler.c (emit_method_code): Add an assert.
11332
11333         * mini-arm.h mini-arm.c exceptions-arm.c: Modify the exception throwing code and
11334         the IMT code so it is AOT friendly. Enable AOT for methods which call interface
11335         methods.
11336
11337 2008-02-08  Zoltan Varga  <vargaz@gmail.com>
11338
11339         * mini-arm.c (mono_arch_output_basic_block): Fix the ordering of arguments for 
11340         some load/store opcodes so they are consistent. 
11341         (mono_arch_emit_prolog): Simplify some code.
11342
11343         * aot-runtime.c (mono_aot_get_plt_entry): Fix a warning.
11344
11345         * objects.cs: Add tests for large argument offsets on ARM.
11346
11347         * mini-arm.c (mono_arch_emit_prolog): Fix handling of arguments with large 
11348         stack offsets. Fixes #359651.
11349
11350         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R4/R8 properly.
11351
11352         * cpu-s390x.md: Add OP_LCONV_TO_R4/R8.
11353
11354         * cpu-ia64.md mini-ia64.h mini-ia64.c: Get rid of CEE_ opcodes.
11355
11356         * mini-ops.h: Add OP_ICONV_TO_R_UN opcode.
11357
11358         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R_UN too.
11359
11360         * cpu-s390x.md cpu-s390.md mini-s390x.c mini-arm.c cpu-arm.md mini-s390.c: Get
11361         rid of CEE_CONV_R_UN.
11362
11363         * mini-s390x.c mini-s390x.h cpu-s390x.md inssel-s390x.brg: Get rid of CEE_ opcodes.
11364
11365 2008-02-07  Zoltan Varga  <vargaz@gmail.com>
11366
11367         * mini-s390.c mini-s390.h cpu-s390.md: Get rid of CEE_ opcodes.
11368
11369         * mini.c (mono_normalize_opcodes): Add some more opcodes.
11370
11371         * mini-arm.c mini-arm.h cpu-arm.md: Get rid of CEE_ opcodes.
11372
11373         * cpu-amd64.md: Remove some unused opcodes.
11374
11375         * mini-sparc.c mini-sparc.h cpu-sparc.md: Get rid of CEE_ opcodes.
11376
11377         * mini-x86.c mini-x86.h cpu-x86.md: Get rid of CEE_ opcodes.
11378
11379         * mini.c mini-<ARCH>.c: Remove mono_arch_local_regalloc (), instead make 
11380         arch specific functions for its parts. Call the peephole pass after local
11381         regalloc so the prolog can compute a more accurate max_offset.
11382         
11383         * mini.c (mono_normalize_opcodes): New mini pass to convert CEE_ opcodes to
11384         the corresponding OP_I/OP_L opcodes.
11385
11386         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of CEE_ opcodes.
11387
11388         * mini-sparc.c (mono_arch_output_basic_block): Fix the sparc build.
11389
11390 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
11391
11392         * mini-s390.c (mono_arch_get_inst_for_method): Remove the Interlocked cases
11393         as they are handled in mini.c.
11394
11395         * mini-s390x.c (mono_arch_get_inst_for_method): Ditto.
11396         
11397         * mini-<ARCH>.c (mono_arch_get_inst_for_method): Remove the MemoryBarrier
11398         case since it is handled in mini.c.
11399
11400         * cpu-sparc.md (sparc_setfreg_float): Fix the sparc build.
11401
11402         * mini-ops.h: Add new opcodes OP_CALL/OP_CALLVIRT.
11403
11404         * *.c: Use the new opcodes in the IR and back end code.
11405
11406         * mini-ops.h cpu-<ARCH>.md: Correct the name of the bgt_un opcodes.
11407
11408         * mini-amd64.c (emit_call_body): Use a far-call for calling dynamic methods.
11409
11410 2008-02-06  Mark Probst  <mark.probst@gmail.com>
11411
11412         * mini-trampolines.c (mono_generic_class_init_trampoline): Removed
11413         an assert because it has a race condition.
11414
11415 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
11416
11417         * tramp-amd64.c (mono_arch_patch_callsite): Add more diagnostics.
11418
11419         * inssel.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused CEE_RET opcode.
11420
11421         * mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused LDIND/STIND opcodes.
11422
11423         * *.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of OP_SETREG/OP_SETFREG/OP_SETREGIMM,
11424         use OP_MOVE/OP_FMOVE/OP_ICONST instead.
11425
11426 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
11427
11428         * cpu-amd64.md (move): Correct the maximum size of move.
11429
11430 2008-02-05  Mark Probst  <mark.probst@gmail.com>
11431
11432         * tramp-amd64.c, tramp-x86.c, mini-trampolines.c: Added a check in
11433         the generic class init trampoline to return quickly if the class
11434         is already inited.
11435
11436 2008-02-04  Zoltan Varga  <vargaz@gmail.com>
11437
11438         * tramp-amd64.c (mono_arch_patch_callsite): Add some diagnostics to help debug
11439         issues where an 32 bit callsite cannot be patched by a 64 bit address.
11440
11441 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
11442
11443         * generics.2.cs generics-variant-types.2.il: Merge some tests from the linear IR
11444         branch.
11445
11446 2008-01-31  Zoltan Varga  <vargaz@gmail.com>
11447
11448         * objects.cs: Add some soft-float tests.
11449
11450         * mini.c: Fix a couple more soft-float issues.
11451
11452         * helpers.c (mono_disassemble_code): Fix disassembly on ARM.
11453
11454         * mini-amd64.c (peephole_pass): Use IXOR instead of LXOR for zeroing a register to
11455         avoid a REX prefix.
11456
11457 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
11458
11459         * exceptions-x86.c (mono_arch_find_jit_info): Fix stack unwinding when an
11460         exception happens while compiling a virtual method.
11461
11462 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
11463
11464         * mini-sparc.c (mono_arch_emit_epilog): Fix folding of negative return values.
11465         
11466         * mini-sparc.c: Fix build.
11467
11468         * mini-sparc.c (get_call_info): Add support for generic sharing.
11469
11470         * mini-exceptions.c: Add a FIXME.
11471
11472 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
11473
11474         * mini-exceptions.c (mono_handle_exception_internal): Remove the old style
11475         altstack handling code.
11476
11477         * mini-s390.c (mono_arch_emit_exceptions): Really fix a warning.
11478         
11479         * mini-s390.c (mono_arch_emit_exceptions): Fix a warning.
11480
11481         * mini-s390.c: Add support for generic sharing.
11482
11483         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
11484         Fix CAS on s390.
11485         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
11486
11487         * mini-s390x.c (mono_arch_emit_exceptions): Fix a warning.
11488
11489         * mini-s390x.c: Add support for generic sharing.
11490         
11491         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
11492         Fix CAS on ia64.
11493         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
11494
11495         * mini-s390x.c: Use is_imm16 instead of is_uimm16 when checking whenever s390_aghi
11496         can be used since it takes a 16 bit signed immediate.
11497
11498         * inssel-s390x.brg: Fix OP_SETRET.
11499
11500         * mini-s390x.c (mono_arch_output_basic_block): Fix OP_BREAK.
11501
11502         * mini-codegen.c (mono_opcode_to_cond): Fix a warning.
11503
11504         * mini-s390x.c cpu-s390x.md: Implement sext.i4 properly by sign extension.
11505
11506         * mini.c (mono_create_delegate_trampoline): Don't use mono_create_ftpntr here.
11507
11508         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_addr_from_ftnptr
11509         in one place.
11510
11511         * mini-ia64.h mini-ia64.c: Add minimal support for the delegate trampoline 
11512         stuff.
11513
11514         * mini.h inssel-x86.brg inssel-amd64.brg tramp-alpha.c tramp-ia64.c: Get rid
11515         of the unused mono_arch_patch_delegate_trampoline stuff.
11516
11517 2008-01-26  Zoltan Varga  <vargaz@gmail.com>
11518
11519         * basic-long.cs: Move the fp related tests to basic-float.cs.
11520
11521         * mini-ops.h (OP_OUTARG_FREG_R4): New opcode.
11522
11523         * mini-ia64.c inssel-ia64.brg: Implement proper R4 argument passing.
11524
11525         * basic-calls.cs: Add a test for proper float argument passing.
11526
11527         * mini-ia64.h (mono_ia64_context_get_ip): Do not substract 1 from the ip
11528         if the context corresponds to an exception received through a signal.
11529
11530         * exceptions.cs: Add a test for nullref handling at the start of a try
11531         clause.
11532
11533         * mini-ia64.c (mono_arch_call_opcode): Fix ia64 argument passing.
11534
11535         * jit-icalls.c (mono_break): New JIT icall.
11536
11537         * mini-<ARCH>.c: Use mono_break instead of mono_arch_break.
11538
11539         * mini-arm.c (arm_patch): Add support for patching the blx calling sequence.
11540
11541 2008-01-25  Zoltan Varga  <vargaz@gmail.com>
11542
11543         * cpu-*.md: Get rid of unused opcodes.
11544
11545         * cpu-g4.md: Rename this to cpu-ppc.md for consistency with other archs.
11546
11547         * Makefile.am: Move mini-trampolines.c to $(common_sources) since it is now used
11548         by all platforms.
11549
11550         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_SPECIFIC_TRAMPOLINE
11551         define.
11552
11553         * mini-s390x.h tramp-s390x.c Makefile.am: Rework the s390x trampoline code to use
11554         the arch independent trampoline code in mini-trampolines.c.
11555
11556         * aot-runtime.c (mono_aot_init_vtable): Fix a warning.
11557
11558         * mini.c (get_runtime_generic_context_ptr): Fix a warning.
11559
11560         * mini-s390.h: Remove an unused define.
11561         
11562         * mini-s390.h tramp-s390.c Makefile.am: Rework the s390 trampoline code to use
11563         the arch independent trampoline code in mini-trampolines.c.
11564
11565         * mini-arm.c (mono_arch_emit_prolog): Fix build.
11566
11567 2008-01-24  Zoltan Varga  <vargaz@gmail.com>
11568
11569         * mini-sparc.c (mono_arch_output_basic_block): Remove some unecessary code.
11570
11571         * mini-s390.c (mono_arch_emit_prolog): Fix build.
11572
11573         * mini-s390x.c (mono_arch_emit_prolog): Fix build.
11574
11575         * mini-ppc.c (mono_arch_emit_prolog): Fix build.
11576
11577         * cpu-amd64.md: Use smaller sizes for int opcodes.
11578
11579         * *.c: Get rid of the NOT_IMPLEMENTED define which is now in mini.h.
11580
11581         * *.cs: Add some tests from the linear-ir branch. Move structs tests to 
11582         objects.cs.
11583
11584         * driver.c (mono_main): Add a --break-at-bb command line argument for JIT
11585         debugging.
11586
11587         * mini.h *.c: Change cfg->vars to contain the MonoMethodVar entries directly
11588         instead of though a pointer to save an indirection when accessing elements of
11589         the array.
11590
11591         * mini.h (MONO_IS_COND_BRANCH_OP): Move these macros here from mini.c. Fix
11592         some typos.
11593         (NOT_IMPLEMENTED): New helper macro.
11594         (MONO_BB_FOR_EACH_INS): New helper macro to iterate through the instructions
11595         of a bb.
11596
11597         * *.c: Use the new helper macro.
11598
11599 2008-01-21  Zoltan Varga  <vargaz@gmail.com>
11600
11601         * mini-x86.h (MONO_ARCH_AOT_SUPPORTED): Disable AOT for apple x86.
11602
11603 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
11604
11605         * mini-amd64.c (mono_arch_emit_prolog): Optimize the omit fp case to save two
11606         stack slots.
11607
11608 2008-01-18  Zoltan Varga  <vargaz@gmail.com>
11609
11610         * mini-amd64.c (mono_arch_emit_prolog): Disable the new optimization if
11611         profiling is enabled.
11612         
11613         * mini-amd64.c (mono_arch_call_opcode): Emit the save_sp_to_lmf instruction at
11614         the end.
11615         (mono_arch_emit_prolog): Add more first bblock optimizations.
11616
11617         * mini-amd64.c (mono_arch_call_opcode): Keep assignments to the arg registers
11618         in order if possible.
11619         (mono_arch_emit_prolog): Optimize assignments to arg registers in the first
11620         bblock, since the arguments are still in their original registers.
11621
11622         * mini.c (type_from_op): Calling add.ovf on floats is not valid IL code.
11623
11624 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
11625
11626         * mini.c (mono_method_to_ir): Use the no-spilling optimization for CEE_CALLI
11627         as well.
11628
11629         * mini-amd64.c (mono_arch_emit_prolog): Save an instruction if the LMF is at
11630         offset 0.
11631
11632         * mini-amd64.h (MONO_ARCH_HAVE_NOTIFY_PENDING_EXC): Turn on this for amd64.
11633
11634         * exceptions-amd64.c (mono_arch_notify_pending_exc): New function to 
11635         process async exceptions received while in unmanaged code.
11636
11637         * mini.c (mini_init): Install a callback with the runtime which will be called
11638         when a thread receives an async exception while in unmanaged code.
11639
11640         * mini.c driver.c: Update after mono_get_native_wrapper () signature change.
11641
11642         * mini-s390x.c (mono_arch_output_basic_block): Fix s390x build.
11643
11644 2008-01-16  Wade Berrier  <wberrier@novell.com>
11645
11646         * cpu-g4.md:
11647         * cpu-arm.md:
11648         * cpu-s390x.md:
11649         fix build
11650
11651 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
11652
11653         * mini-x86.c (mono_arch_output_basic_block): Remove some gccism which prevents
11654         compilation with sun cc.
11655
11656         * cpu-*.md: Fix the build.
11657
11658         * cpu-x86.md: Fix the length of some load membase opcodes. Fixes #354241.
11659
11660         * mini-amd64.h: Add some comments to the MonoLMF structure.
11661
11662         * mini-ops.h cpu-amd64.c: Add a OP_AMD64_SAVE_SP_TO_LMF opcode.
11663         
11664         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Avoid setting the rip field
11665         in the LMF structure if possible. This saves two instructions in the
11666         managed->native wrappers.
11667
11668         * mini-ops.h *.md: Make some opcodes names uniform by removing the op_ prefix.
11669
11670 2008-01-16  Mark Probst  <mark.probst@gmail.com>
11671
11672         * generic-sharing.c: New type argument lookup code which uses the
11673         runtime generic context template.
11674
11675 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
11676
11677         * mini.c (mono_method_to_ir): Avoid emitting a write barrier when storing NULL.
11678
11679         * mini-arm.c (add_general): Fix arm eabi parameter passing.
11680         (mono_arch_output_basic_block): Fix localloc implementation.
11681
11682         * mini-amd64.c (peephole_pass): Sync store+load optimizations with the x86 version.
11683
11684         * mini-ia64.c (peephole_pass): Fix ia64 build.
11685
11686         * mini-amd64.c (peephole_pass): Fix a warning.
11687         
11688         * mini-amd64.c (mono_arch_allocate_vars): Make sure the LMF is always stored
11689         at a constant offset from sp/fp.
11690
11691         * exceptions-amd64.c (mono_arch_find_jit_info): Compute the LMF address from fp/sp
11692         instead of obtaining it from *lmf in the managed method case.
11693
11694 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
11695
11696         * exceptions-amd64.c (mono_arch_find_jit_info): Remove some duplicate code.
11697
11698 Mon Jan 14 12:33:06 CET 2008  David S. Miller  <davem@davemloft.net>
11699
11700         * mini.h (MonoInstList): New type.
11701         (MONO_INST_LIST_INIT, MONO_INST_LIST_EMPTY,
11702         __MONO_INST_LIST_ADD, MONO_INST_LIST_ADD,
11703         MONO_INST_LIST_ADD_TAIL, __MONO_INST_LIST_DEL,
11704         __MONO_INST_LIST_SPLICE, MONO_INST_LIST_SPLICE,
11705         MONO_INST_LIST_SPLICE_TAIL, MONO_INST_LIST_SPLICE_INIST,
11706         MONO_INST_LIST_SPLICE_TAIL_INIT, mono_container_of,
11707         MONO_INST_LIST_ENTRY, MONO_INST_LIST_FIRST_ENTRY,
11708         MONO_INST_LIST_LAST_ENTRY, MONO_INST_LIST_FOR_EACH,
11709         MONO_INST_LIST_FOR_EACH_PREV, MONO_INST_LIST_FOR_EACH_SAFE,
11710         MONO_INST_LIST_FOR_EACH_PREV_SAFE,
11711         MONO_INST_LIST_FOR_EACH_ENTRY,
11712         MONO_INST_LIST_FOR_EACH_ENTRY_REVERSE,
11713         MONO_INST_LIST_FOR_EACH_ENTRY_SAFE,
11714         mono_inst_list_first, mono_inst_list_last,
11715         mono_inst_list_next, mono_inst_list_prev): New instruction
11716         list handling interfaces.
11717         (MonoBasicBlock): Remove 'last_ins' and 'code', replace with
11718         list head 'ins_list'.
11719         (MonoInst): Replace next pointer with list head 'node'.
11720         (MonoCallInst): Make 'out_args' a MonoInstList.
11721         (MONO_INST_NEW_CALL): Explicitly init ->out_args.
11722         (MonoCompile): Delete reverse_inst_list and
11723         reverse_inst_list_len.
11724         * mini-hppa.c (mono_arch_call_opcode, NEW_INS,
11725         mono_arch_lowering_pass, mono_arch_local_regalloc,
11726         mono_arch_output_basic_block, mono_arch_emit_prolog):
11727         Convert to new instruction lists.
11728         (insert_after_ins): Delete.
11729         * inssel.brg (MONO_EMIT_NEW_BRANCH_BLOCK): Convert to new
11730         instruction lists.
11731         * mini-hppa.h (MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Likewise.
11732         * mini.c (NEW_BBLOCK, ADD_BBLOCK, CHECK_BBLOCK,
11733         split_bblock, mono_add_ins_to_end, mono_emit_call_args,
11734         mono_emulate_opcode, mono_emit_load_got_addr,
11735         inline_method, mono_method_to_ir, mono_print_bb_code,
11736         print_dfn, decompose_pass, nullify_basic_block,
11737         replace_out_block_in_code, remove_block_if_useless,
11738         merge_basic_blocks, move_basic_block_to_end,
11739         try_unsigned_compare, optimize_branches, mono_print_code,
11740         mini_select_instructions, remove_critical_edges): Likewise.
11741         * mini-amd64.c (emit_sig_cookie, mono_arch_call_opcode,
11742         peephole_pass_1, peephole_pass, mono_arch_lowering_pass,
11743         mono_arch_output_basic_block, mono_arch_emit_prolog):
11744         Likewise.
11745         * mini-mips.c (mono_arch_call_opcode, peephole_pass,
11746         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
11747         mono_arch_output_basic_block): Likewise.
11748         (inst_list_prepend, insert_after_ins): Delete.
11749         * mini-mips.h (MONO_EMIT_NEW_BRANCH_NONZERO_LABEL,
11750         MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Convert to new
11751         instruction lists.
11752         * mini-x86.c (emit_sig_cookie, mono_arch_call_opcode,
11753         peephole_pass_1, peephole_pass, mono_arch_output_basic_block,
11754         mono_arch_emit_prolog): Likewise.
11755         * cfold.c (mono_constant_fold): Likewise.
11756         * liveness.c (visit_bb, mono_analyze_liveness,
11757         optimize_initlocals): Likewise.
11758         * ssapre.c (dump_code, process_bb, code_motion): Likewise.
11759         * graph.c (mono_draw_code_cfg): Likewise.
11760         * ssa.c (mono_ssa_rename_vars, mono_ssa_compute,
11761         mono_ssa_remove, mono_ssa_avoid_copies, mono_ssa_create_def_use,
11762         mono_ssa_cprop): Likewise.
11763         * abcremoval (get_relations_from_previous_bb, process_block):
11764         Likewise.
11765         * local-propagation (mono_cprop_invalidate_values,
11766         mono_local_cprop_bb): Likewise.
11767         * mini-s390x.c (mono_arch_call_opcode, emit_sig_cookie,
11768         peephole_pass, mono_arch_output_basic_block,
11769         mono_arch_emit_prolog): Likewise.
11770         * mini-arm.c (mono_arch_call_opcode, peephole_pass,
11771         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
11772         mono_arch_emit_prolog): Likewise.
11773         (insert_after_ins): Delete.
11774         * aliasing.c (print_code_with_aliasing_information,
11775         mono_build_aliasing_information, mono_aliasing_deadce):
11776         Convert to new instruction lists.
11777         * mini-ia64.c (emit_sig_cookie, mono_arch_call_opcode,
11778         peephole_pass, NEW_INS, mono_arch_lowering_pass,
11779         mono_arch_local_regalloc, mono_arch_output_basic_block):
11780         Likewise.
11781         (insert_after_ins): Delete.
11782         * mini-sparc.c (emit_sig_cookie, mono_arch_call_opcode,
11783         peephole_pass, mono_arch_output_basic_block): Convert to
11784         new instruction lists.
11785         * mini-codegen (InstList, inst_list_prepend,
11786         insert_after_ins): Delete.
11787         (insert_before_ins, get_register_force_spilling,
11788         get_register_spilling, free_up_ireg, free_up_reg,
11789         create_copy_ins, create_spilled_store, alloc_int_reg,
11790         alloc_float_reg, alloc_reg, mono_local_regalloc): Convert
11791         to new instruction lists.
11792         * mini-ppc.c (mono_arch_call_opcode, peephole_pass,
11793         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
11794         mono_arch_output_basic_block, mono_arch_emit_prolog): Likewise.
11795         (insert_after_ins): Delete.
11796         * mini-alpha.c (NEW_INS, peephole_pass, mono_arch_lowering_pass,
11797         mono_arch_local_regalloc, mono_arch_output_basic_block,
11798         mono_arch_call_opcode): Convert to new instruction lists.
11799         (insert_after_ins): Delete.
11800         * mini-s390.c (mono_arch_call_opcode, emit_sig_cookie,
11801         peephole_pass, mono_arch_output_basic_block,
11802         mono_arch_emit_prolog): Convert to new instruction lists.
11803
11804 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
11805
11806         * mini-amd64.c (mono_arch_output_basic_block): Use a 4 byte load in OP_CHECK_THIS.
11807
11808         * mini-sparc.c (mono_arch_output_basic_block): Use a byte load in CHECK_THIS.
11809         Fixes #353182.
11810
11811         * Makefile.am (version.h): Make this work with non-bash shells.
11812
11813 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
11814
11815         * mini.c (handle_delegate_ctor): Optimize away setting of NULL target.
11816
11817 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
11818
11819         * mini.c (mono_method_to_ir): Fix possible reading of invalid memory in 
11820         the InitializeArray optimization.
11821
11822 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
11823
11824         * mini.c driver.c: Don't include os/gc_wrapper.h.
11825
11826 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
11827
11828         * mini.c (print_jit_stats): Print GC statistics if available.
11829
11830 2008-01-04  Zoltan Varga  <vargaz@gmail.com>
11831
11832         * mini-amd64.c (mono_arch_allocate_vars): Align argument storage offsets to 8.
11833
11834 2007-12-29  Zoltan Varga  <vargaz@gmail.com>
11835
11836         * mini-ppc.c (mono_arch_get_delegate_invoke_impl): Fix flushing of icache.
11837
11838 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
11839
11840         * mini.c (mini_init): Move the setting of GC_stackbottom to mono_gc_base_init ().
11841         
11842         * mini.c (mini_init): Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
11843
11844         * driver.c (mono_main): Ditto.
11845
11846 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
11847
11848         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_delegate_invoke ().
11849
11850         * aot-compiler.c (emit_klass_info): Avoid emitting info if one of the methods
11851         in the vtable can't be encoded.
11852         (compile_method): Ditto.
11853
11854 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
11855
11856         * mini.c (setup_jit_tls_data): Use the MONO_ARCH_INIT_TOP_LMF_ENTRY macro if
11857         defined.
11858
11859         * mini-amd64.h mini-amd64.c exceptions-amd64.c tramp-amd64.c: Rename lmf->ebp to 
11860         lmf->rbp.
11861
11862         * exceptions-amd64.c (mono_arch_find_jit_info): Fix the detection of whenever
11863         the top LMF entry belongs to the current method.
11864
11865         * mini.c: Update after renaming of mono_thread_get_pending_exception ().
11866
11867 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
11868
11869         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix a warning.
11870         
11871         * tramp-ia64.c (mono_arch_create_trampoline_code): Ditto.
11872
11873         * tramp-sparc.c (mono_arch_create_trampoline_code): Check for thread interruption.
11874
11875         * tramp-amd64.c (mono_arch_create_trampoline_code): Ditto.
11876
11877         * tramp-x86.c (mono_arch_create_trampoline_code): Check for thread interruption.
11878
11879         * cpu-amd64.md mini-amd64.h mini-amd64.c inssel-amd64.brg: Add ulong->double 
11880         implementation.
11881
11882         * basic-float.cs: Add an ulong->double cast test.
11883
11884 2007-12-15  Zoltan Varga  <vargaz@gmail.com>
11885
11886         * mini.c (mono_method_to_ir): Fix a warning.
11887
11888 2007-12-14  Zoltan Varga  <vargaz@gmail.com>
11889
11890         * mini-ops.h: Add OP_SWITCH.
11891
11892         * mini.c graph.c ssa.c aliasing.c mini-<ARCH>.c inssel-<ARCH>.brg: Avoid using
11893         CEE_SWITCH in back-end code, use OP_SWITCH instead.
11894
11895 2007-12-11  Geoff Norton  <gnorton@novell.com>
11896
11897         * mini-s390x.c: Minor change to the MAX() define to allow
11898         it to compile with other gcc versions.
11899
11900 2007-12-11  Geoff Norton  <gnorton@novell.com>
11901
11902         * cpu-s390x.md:
11903         * mini-s390x.c: Implement sext_i4 to fix the build on s390x
11904
11905 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
11906
11907         exceptions-arm.c (mono_arch_get_restore_context): Restore
11908         the frame pointer.
11909
11910         exceptions-arm.c (throw_exception): Save the frame pointer.
11911         This is a partial fix for #323747. Only the client side is
11912         fixed.
11913
11914 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
11915
11916         * mini.c (mono_method_to_ir): Verbose message in CEE_NEWOBJ
11917         was using an unrelated variable to log the class which
11918         needed the cctor to be called. This was crashing on arm.
11919
11920 2007-12-09  Robert Jordan  <robertj@gmx.net>
11921
11922         * mini-x86.c (mono_arch_emit_epilog):
11923         Consider all kinds of 64-bit types. Fixes #323114.
11924
11925 2007-12-08  Zoltan Varga  <vargaz@gmail.com>
11926
11927         * tramp-amd64.c (mono_arch_create_trampoline_code): Clean up the code a bit.
11928
11929 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
11930
11931         * mini-amd64.c (peephole_pass): Add a missing instruction check.
11932
11933 Fri Dec 7 22:08:23 CET 2007 Paolo Molaro <lupus@ximian.com>
11934
11935         * mini.c: run type ctor before allocating an object, not only
11936         when running it's constructor method (fixes at least part of bug #342507).
11937
11938 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
11939         
11940         * mini-trampolines.c (mono_delegate_trampoline): Fix a warning.
11941         
11942         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove a debug printf.
11943         * mini.h mini-amd64.c mini-x86.c: Get rid of the mono_arch_find_vtable () 
11944         function.
11945
11946         * tramp-x86.c tramp-amd64.c mini-trampolines.c: Pass the vtable argument to
11947         mono_generic_class_init_trampoline () the same as it is done with the other
11948         trampolines.
11949
11950         * mini-arm.h mini-arm.c tramp-arm.c inssel-arm.brg cpu-arm.md 
11951         aot-runtime.c aot-compiler.c: Implement AOT support.    
11952
11953 2007-12-07  Mark Probst  <mark.probst@gmail.com>
11954
11955         * mini-trampolines.c (mono_generic_class_init_trampoline): Fixed
11956         build for archs which don't have the vtable trampoline defined
11957         yet.
11958
11959 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
11960
11961         * tramp-x86.c (mono_arch_create_trampoline_code): Fix the build.
11962
11963         * tramp-ppc.c (mono_arch_create_trampoline_code): Use the new helper function.
11964
11965         * mini-trampolines.c (mono_get_trampoline_func): New helper function.
11966
11967         * tramp-<ARCH>.c: Use the new helper function.
11968
11969 2007-12-07  Mark Probst  <mark.probst@gmail.com>
11970
11971         * inssel.brg: Added a pattern for the OP_TRAMPCALL_VTABLE
11972         trampoline call, which takes a vtable argument.
11973
11974         * graph.c, mini-ops.h, local-propagation.c, aliasing.c: Treat
11975         OP_TRAMPCALL_VTABLEs like other calls.
11976
11977         * mini-amd64.c, mini-amd64.h, mini-x86.c, mini-x86.h: Designated a
11978         register to hold the vtable argument to the OP_TRAMPCALL_VTABLE
11979         call.  Implemented a support function which fetches the vtable
11980         from a register set.
11981
11982         * mini.c, mini.h, tramp-amd64.c, tramp-x86.c, mini-trampolines.c:
11983         Implemented a generic class init trampoline, using the
11984         OP_TRAMPCALL_VTABLE opcode.
11985
11986         * mini.c: Implemented static field access when sharing generic
11987         code.  This implies initing the class using the new
11988         OP_TRAMPCALL_VTABLE call.
11989
11990 2007-12-07  Mark Probst  <mark.probst@gmail.com>
11991
11992         * mini.c: Don't compile methods with sharing enabled if their
11993         classes are disabled for sharing.
11994
11995 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
11996
11997         * inssel.brg: Add a missing sign extension to the GETCHR and array access
11998         opcodes. Fixes #346563.
11999
12000         * objects.cs: Add a new test.
12001
12002         * aot-compiler.c (emit_method_code): Put back an #ifdef which is needed.
12003
12004         * mini-<ARCH>.h mini.c aot-compiler.c aot-runtime.c: Get rid of the
12005         HAVE_PIC_AOT define and use AOT_SUPPORTED instead.
12006
12007 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
12008
12009         * mini-arm.h mini-arm.c: Add support for the common vtable trampoline.
12010
12011 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
12012
12013         * mini-arm.c (mono_arch_emit_exceptions): Avoid uninitialized memory in the
12014         code stream.
12015
12016 2007-12-02  Zoltan Varga  <vargaz@gmail.com>
12017
12018         * patch-info.h (PATCH_INFO): Add DELEGATE_TRAMPOLINE.
12019
12020         * mini.c aot-compiler.c aot-runtime.c: Implement the delegate creation 
12021         optimization in the AOT case.
12022         
12023 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
12024
12025         * aot-runtime (mono_aot_get_method_from_vt_slot): Add support for multi-byte method ref encodings.
12026         
12027         * aot-runtime.c (decode_klass_ref): Implement decoding of generic instances.
12028
12029         * aot-compiler.c (encode_klass_ref): Implement proper encoding of generic instances.
12030
12031         * mini.c (mono_method_to_ir): Optimize the common ldftn+create delegate combination.
12032
12033         * mini-trampolines.c (mono_delegate_trampoline): Add some code to handle the case when the delegate
12034         is created by the inlined delegate ctor.
12035
12036         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.  
12037
12038         * mini.c (mono_jit_compile_method_inner): Replace calls to delegate invoke with the trampoline here too.
12039
12040 2007-11-29  Zoltan Varga  <vargaz@gmail.com>
12041
12042         * cpu-x86.md: Fix the length of ckfinite.
12043
12044 2007-11-28  Zoltan Varga  <vargaz@gmail.com>
12045
12046         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.
12047         
12048         * mini-x86.c (mono_arch_output_basic_block): Clean up the fp stack properly in CKFINITE.
12049         (mono_arch_output_basic_block): Get rid of unused last_ins and last_offset.
12050
12051         * mini-x86.c (mono_arch_output_basic_block): Add some micro optimizations.
12052
12053         * mini-x86.c inssel-x86.brg cpu-x86.md: Move the implementation of the 
12054         OP_START_HANDLER/OP_ENDFINALLY/OP_ENDFILTER opcodes to mini-x86.c.
12055
12056 2007-11-28  Martin Baulig  <martin@ximian.com>
12057
12058         * mini-x86.c
12059         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline()
12060         after creating the trampoline.
12061
12062 2007-11-27  Zoltan Varga  <vargaz@gmail.com>
12063
12064         * aot-runtime.c (load_aot_module): Check runtime version if needed.
12065
12066         * aot-compiler.c: Add bind-to-runtime-version for producing AOT files which only load into a runtime with
12067         the same version.
12068
12069         * generic-sharing.c (mono_helper_get_rgctx_other_ptr): Change the signature to take the calling class
12070         instead of the calling method to help AOT.
12071
12072         * mini.c (get_runtime_generic_context_other_ptr): Update after the change.
12073
12074 2007-11-26  Zoltan Varga  <vargaz@gmail.com>
12075
12076         * aot-runtime.c (mono_aot_init_vtable): Simplify this if MONO_ARCH_COMMON_VTABLE_TRAMPOLINE
12077         is defined.
12078
12079 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
12080
12081         * aot-compiler.c (emit_class_name_table): Properly encode generic class names.
12082         
12083         * aot-compiler.c (compile_method): Correct check for generic method definitions.
12084         (encode_method_ref): No need to handle generic method definitions specially.
12085
12086         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
12087
12088         * aot-runtime.c (decode_klass_ref): Clean this up and rename from 
12089         decode_klass_info.
12090
12091         * aot-compiler.c (encode_klass_ref): Clean this up and rename from
12092         encode_klass_info.
12093         (compile_method): Enable generic sharing.
12094
12095 2007-11-22  Zoltan Varga  <vargaz@gmail.com>
12096
12097         * mini.c (get_runtime_generic_context_other_ptr): Disable AOT here.
12098         (mini_method_compile): Add preliminary support for AOTing shared generic code.
12099
12100         * aot-compiler.c (compile_method): Add preliminary support for AOTing shared
12101         generic code.
12102
12103         * mini-trampolines.c: Fix a warning.
12104
12105         * mini.c (get_runtime_generic_context_other_ptr): Use NEW_METHODCONST instead of
12106         NEW_PCONST.
12107         (mono_method_to_ir): Use NEW_DOMAINCONST in one place.
12108         (generic_class_is_reference_type): Remove unused function.
12109
12110         * mini-trampolines.c (mono_magic_trampoline): Avoid loading metadata if possible
12111         in the generic vtable trampoline case.
12112
12113         * aot-runtime.c (mono_aot_init_vtable): Use the generic vtable trampoline.
12114         
12115         * aot-runtime.c (mono_aot_get_method_from_vt_slot): New helper function to
12116         return an AOT method based on a vtable slot.
12117
12118         * aot-compiler.c (compile_method): Avoid AOTing synchronized methods for now.
12119
12120         * mini.c (mini_get_vtable_trampoline): Export this.
12121
12122 2007-11-22  Martin Baulig  <martin@ximian.com>
12123
12124         * debug-debugger.h
12125         (MonoDebuggerInfo): Move `debugger_version' up.
12126
12127 2007-11-22  Martin Baulig  <martin@ximian.com>
12128
12129         * mini-amd64.c
12130         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline().
12131
12132         * mini-trampolines.c
12133         (mono_delegate_trampoline): Call mono_debugger_trampoline_compiled()
12134         after compiling the method.
12135
12136 2007-11-20  Martin Baulig  <martin@ximian.com>
12137
12138         * debug-mini.c
12139         (mono_debugger_insert_method_breakpoint): Moved into mono-debug-debugger.c.
12140         (mono_debugger_remove_breakpoint): Likewise.
12141         (mono_debugger_check_breakpoints): Likewise.
12142
12143         * debug-debugger.c: Implement the new breakpoint interface here.
12144
12145 2007-11-18  Zoltan Varga  <vargaz@gmail.com>
12146
12147         * mini-amd64.c (mono_arch_output_basic_block): Unify the implementation of
12148         CEE_CONV_I1/SEXT_I1 and I2 since they are the same.
12149
12150         * mini-x86.c (mono_arch_output_basic_block): Ditto.     
12151
12152 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
12153
12154         * mini-amd64.c (mono_arch_output_basic_block): Fix a typo.
12155
12156         * mini-x86.c (mono_arch_get_inst_for_method): Remove code which is now in
12157         mini.c.
12158
12159         * mini-ia64.c (mono_arch_get_inst_for_method): Remove code which is now in
12160         mini.c.
12161
12162         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for methods
12163         returning a vtype in a register.
12164
12165         * mini.c (mini_get_inst_for_method): Move the handling of the atomic operations
12166         here from the arch specific code.
12167
12168         * mini-amd64.c (mono_arch_get_inst_for_method): Remove code which is now in
12169         mini.c.
12170
12171         * mini-amd64.c (mono_arch_output_basic_block): Add some micro optimizations.
12172         (mono_arch_emit_prolog): Increment maximum prolog size.
12173
12174         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Move the implementation of the
12175         START_HANDLER/ENDFINALLY/ENDFILTER opcodes to mini-amd64.c.
12176
12177         * mini-x86.c (get_call_info): Receive a MonoCompile instead of a 
12178         MonoGenericSharingContext.
12179
12180         * mini-ia64.c (get_call_info): Receive a MonoCompile instead of a 
12181         MonoGenericSharingContext. Allocate memory from the cfg mempool.
12182
12183 2007-11-15  Mark Probst  <mark.probst@gmail.com>
12184
12185         * mini.c, mini.h, generic-sharing.c: Functions for producing code
12186         which extract fields out of the runtime generic context.  Full
12187         sharing of the NEWARR opcode.
12188
12189 Thu Nov 15 14:20:21 CET 2007 Paolo Molaro <lupus@ximian.com>
12190
12191         * abcremoval.c, mini.c, ssa.c, ssapre.c: updated to implement
12192         --enable-minimal=ssa.
12193
12194 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
12195
12196         * mini-trampolines.c (mono_delegate_trampoline): Update after 
12197         mono_marshal_get_delegate_invoke () signature change.
12198
12199 2007-11-13  Mark Probst  <mark.probst@gmail.com>
12200
12201         * mini.c: Removed the shared context in favor of the generic
12202         sharing context.  Allocate the MonoJitInfo structure with room for
12203         the generic sharing context if it's needed.
12204
12205         * mini.h: Remove MonoGenericSharingContext declaration.  It's in
12206         domain-internals.h now.
12207
12208         * mini-x86.c: Pass the generic sharing context to get_call_info ().
12209
12210         * generic-sharing.c: Several changes for working without a shared
12211         context and instead operating on open types instead.
12212
12213 2007-11-12  David S. Miller  <davem@davemloft.net>
12214
12215        * inssel-sparc.brg: Fix double instruction emit.
12216
12217 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
12218
12219         * mini.c (mono_jit_runtime_invoke): Avoid trying to compile the Array 
12220         Get/Set/Address methods.
12221         
12222         * mini.c debug-debugger.c mini-trampolines.c: Update after 
12223         mono_marshal_get_delegate_invoke signature change.
12224
12225 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
12226
12227         * cpu-arm.md: Increase the max size of OP_THROW to 24 bytes.
12228         This can happens with dynamic methods. Fixes the other bug in #322722.
12229
12230 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
12231
12232         * tramp-arm.c (mono_arch_patch_callsite): Support patching
12233         BX call sequence.
12234
12235         * mini-arm.c (arm_patch): Implement patching of BX call
12236         sequence. Fixes one of the bugs in #322722.
12237
12238 2007-11-03  David S. Miller  <davem@huronp11.davemloft.net>
12239
12240        * mini-sparc.c (mono_arch_flush_icache): Make more efficient
12241        under Linux.  We only need to flush every 32-byte cache line.    
12242
12243 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
12244
12245         * mini.c:
12246         move_basic_block_to_end: Add branches when needed, eventually creating
12247         a new BB.
12248         optimize_branches: added a parameter that tells if it's ok to create
12249         new BBs (doing is "df_visit" has been called is (IMHO) a nightmare),
12250         and avoid calling move_basic_block_to_end when it's not ok.
12251         Fixes bug 318677.
12252
12253 2007-11-07  Mark Probst  <mark.probst@gmail.com>
12254
12255         * mini.c: Abort inlining call to InitializeArray if something
12256         looks wrong.  Let the icall handle it, which now has proper safety
12257         checks.
12258
12259 2007-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
12260
12261         * mini.c (mono_spill_call): add support for soft-float.
12262
12263         * mini.c (mono_method_to_ir): add support for soft-float
12264         to inlined functions that return float.
12265
12266         * mini.c (mono_method_to_ir): add support for soft-float
12267         to cee_stsfld opcode on float fields.
12268
12269 2007-11-05  Geoff Norton  <gnorton@novell.com>
12270
12271         * mini-x86.h: Fix the structure access for X86 Leopard.
12272
12273
12274 2007-11-05  Martin Baulig  <martin@ximian.com>
12275
12276         * mini-trampolines.c
12277         (mono_magic_trampoline): Call mono_debugger_trampoline_compiled()
12278         after compiling the method to notify the debugger.
12279
12280 2007-11-05  Martin Baulig  <martin@ximian.com>
12281
12282         * debug-debugger.h (MonoDebuggerInfo): Use the new breakpoint tables.
12283
12284 2007-11-02  Zoltan Varga  <vargaz@gmail.com>
12285
12286         * mini-sparc.c (EMIT_COND_SYSTEM_EXCEPTION_GENERAL): Applied patch from
12287         David Miller <davem@davemloft.net>. Allow larger offsets in branches.
12288
12289 2007-11-01  Zoltan Varga  <vargaz@gmail.com>
12290
12291         * mini-amd64.c (mono_arch_emit_prolog): Check the domain as well for
12292         native-to-managed wrappers.
12293         
12294 2007-11-01  Geoff Norton  <gnorton@novell.com>
12295
12296         * mini-ppc.h, mini-x86.h:  Handle Leopards renaming of some structure 
12297         members.
12298
12299 Wed Oct 31 20:23:14 CET 2007 Paolo Molaro <lupus@ximian.com>
12300
12301         * mini.c, mini-x86.c: when getting back from unmanaged code
12302         to managed via a marshaled delegate we also need to set the
12303         right domain.
12304
12305 Wed Oct 31 19:53:33 CET 2007 Paolo Molaro <lupus@ximian.com>
12306
12307         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: breakpoint table support
12308         for amd64.
12309
12310 Wed Oct 31 19:29:30 CET 2007 Paolo Molaro <lupus@ximian.com>
12311
12312         * mini.c, mini.h, mini-x86, tramp-x86.c, mini-x86.h: added API to
12313         let the debugger or other external agents to tell the JIT when
12314         a sw breakpoint has been inserted in the code that the JIT needs
12315         to be able to inspect.
12316
12317 2007-10-31  Martin Baulig  <martin@ximian.com>
12318
12319         * debug-debugger.h
12320         (MonoDebuggerInfo): Remove `runtime_class_init'.
12321
12322 2007-10-30  Martin Baulig  <martin@ximian.com>
12323
12324         * debug-mini.h
12325         (mono_debugger_thread_created): Added `MonoThread *' argument.
12326         (mono_debugger_extended_notification): New public method.
12327         (mono_debugger_trampoline_compiled): New public method.
12328
12329         * debug-mini.c
12330         (MonoDebuggerThreadInfo): Added `thread' and
12331         `extended_notifications' fields.
12332
12333         * debug-debugger.c
12334         (debugger_executable_code_buffer): New static variable.
12335
12336         * debug-debugger.h
12337         (MonoDebuggerInfo): Added `executable_code_buffer',
12338         `executable_code_buffer_size', `breakpoint_info_area',
12339         `breakpoint_table' and `breakpoint_table_size'.
12340
12341 2007-10-26  Rodrigo Kumpera  <rkumpera@novell.com>
12342
12343         * mini-arm.c (mono_arch_build_imt_thunk): Take the advantage
12344         that IP  either is an unused value or the vtable pointer. IMT 
12345         calls use vtable + offset now. Reduced by almost half the size
12346         of IMT entries.
12347
12348 2007-10-26  Jonathan Chambers <joncham@gmail.com>
12349
12350         * mini-amd64.c: Begin Win64 port. Use AMD64_ARG_REG#
12351         defines to access param registers. Replace long usage with
12352         gsize as sizeof(long) != sizeof(void*) on Win64.
12353
12354         * mini-amd64.h: Add %rdi and %rsi to MonoLMF structure
12355         on Win64. Fix intrinsic, use _AddressOfReturnAddress
12356         instead of non-existant _GetAddressOfReturnAddress.
12357
12358         * tramp-amd64.c: Use AMD64_ARG_REG#     defines to access 
12359         param registers. Save/restore %rdi and %rsi in MonoLMF.
12360
12361         * exceptions-amd64.c: Use AMD64_ARG_REG# defines to access 
12362         param registers. Modify (throw_exception) signature to take 
12363         %rdi and %rsi on Win64. 
12364
12365         Code is contributed under MIT/X11 license.
12366
12367 Thu Oct 25 23:06:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
12368
12369         * helpers.c: unlink debugging output files.
12370
12371 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
12372
12373         * mini.c: Move mono_create_ftnptr () to object.c.
12374
12375 2007-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
12376
12377         * helpers.c (mono_disassemble_code): MonoCompile parameter is now
12378         optional. This function can now be used to disassemble code generated
12379         outside the JIT such as trampolines and IMT thunks.
12380
12381         * mini-arm.h: defined MONO_ARCH_HAVE_IMT.
12382
12383         * mini-arm.c (decode_vcall_slot_from_ldr): added, extract the
12384         vtable pointer from a ldr instruction.
12385
12386         * mini-arm.c (mono_arch_get_vcall_slot_addr): support the
12387         new IMT call sequence.
12388
12389         * mini-arm.c (mono_arch_output_basic_block): emit the IMT
12390         call sequence for interface invocations.
12391
12392         * mini-arm.c (mono_arch_emit_imt_argument): added, required
12393         for imt support. This function is empty since IMT on ARM requires no
12394         special handling on the IR side.
12395
12396         * mini-arm.c (mono_arch_find_imt_method): added, required for
12397         imt support.
12398
12399         * mini-arm.c (mono_arch_find_this_argument): added, required
12400         for imt support.
12401
12402         * mini-arm.c (arm_emit_value_and_patch_ldr): added, patches
12403         a ldr instruction to load a value stored in the code stream.
12404
12405         * mini-arm.c (mono_arch_build_imt_thunk):added, required
12406         for imt support.
12407
12408
12409 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
12410
12411         * mini.c (mini_init): Install the jump trampoline callback.
12412
12413 Tue Oct 23 17:07:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
12414
12415         * mini-trampolines.c: handle synchronized methods with the common
12416         vtable trampoline (bug #335601).
12417
12418 2007-10-17  Zoltan Varga  <vargaz@gmail.com>
12419
12420         * mini-ia64.h mini-amd64.c: Add support for the common vtable trampoline.
12421
12422         * inssel.brg (mini_emit_virtual_call): Fix the computation of ins->inst_offset on
12423         64 bit platforms.
12424
12425         * mini-ia64.h mini-ia64.c: Add support for IMT.
12426
12427         * mini-x86.c (mono_arch_emit_prolog): Increase the size allocated for the
12428         prolog. Fixes #331958.
12429
12430 2007-10-15  Zoltan Varga  <vargaz@gmail.com>
12431
12432         * mini-sparc.h mini-sparc.c: Add support for the common vtable trampoline.
12433
12434 Mon Oct 15 11:18:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
12435
12436         * mini-ppc.c, mini-ppc.h: ppc support for the common vtable
12437         trampoline.
12438
12439 Mon Oct 15 10:41:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
12440
12441         * mini-amd64.c, mini-amd64.h: amd64 support for the common vtable
12442         trampoline.
12443
12444 Mon Oct 15 10:39:26 CEST 2007 Paolo Molaro <lupus@ximian.com>
12445
12446         * mini-x86.c, mini-x86.h: x86 support for the common vtable
12447         trampoline.
12448
12449 Mon Oct 15 10:37:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
12450
12451         * mini-trampolines.c: changed the magic rampoline to understand
12452         the common vtable trampoline method: the method to invoke is
12453         determined by the vtable displacement of the call.
12454
12455 Mon Oct 15 10:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
12456
12457         * mini.c, mini.h: register the common vtable trampoline if the
12458         architecture supports it.
12459
12460 Mon Oct 15 09:50:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
12461
12462         * cpu-amd64.md: use the correct max length for tls_get.
12463
12464 2007-10-14  Zoltan Varga  <vargaz@gmail.com>
12465
12466         * mini.c (mono_method_to_ir): Use mini_get_class in CEE_LDELEM_ANY and
12467         CEE_STELEM_ANY. Fixes #333696.
12468
12469 Thu Oct 11 18:04:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
12470
12471         * exceptions-x86.c: provide more graceful handling of the case where
12472         we followed a bogus function pointer from managed code (bug #332866).
12473
12474 2007-10-11  Mark Probst  <mark.probst@gmail.com>
12475
12476         * mini.h, mini.c: Introduced the MonoGenericSharingContext, which
12477         replaces the generic_shared flag and will carry more information
12478         in the future.
12479
12480         * generic-sharing.c: Added mini_type_stack_size() which allows
12481         allows open types if given a generic sharing context.
12482         mini_get_basic_type_from_generic() takes a
12483         MonoGenericSharingContext* instead of a MonoCompile* now.
12484
12485         * mini-alpha.c, mini-amd64.c, mini-arm.c, mini-hppa.c,
12486         mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c, mini-s390x.c,
12487         mini-sparc.c, mini-x86.c: Trivial changes required by the two
12488         changes above.  Just passing arguments through to the right
12489         places.
12490
12491 Wed Oct 10 19:44:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
12492
12493         * mini-arm.c: unify the call emission to emit_code_seq().
12494
12495 Wed Oct 10 13:05:46 CEST 2007 Paolo Molaro <lupus@ximian.com>
12496
12497         * tramp-arm.c: reduced the trampoline size.
12498
12499 2007-10-10  Mark Probst  <mark.probst@gmail.com>
12500
12501         * generic-sharing.c, mini.h, mini-amd64.c, mini-x86.c: Moved type
12502         variable handling out of arch-specific code.
12503
12504 Wed Oct 10 10:49:28 CEST 2007 Paolo Molaro <lupus@ximian.com>
12505
12506         * mini-arm.c: implemented fast delegate dispatch.
12507
12508 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
12509
12510         * mini-amd64.c (mono_arch_compute_omit_fp): Add more checks to ensure
12511         that fp elimination is turned off if the space required by locals is too
12512         big. Fixes #331958.
12513
12514 Tue Oct 9 21:01:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
12515
12516         * Makefile.am, mini-arm.c, mini-arm.h, tramp-arm.c: ported
12517         ARM to the new style trampoline.
12518
12519 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
12520
12521         * tramp-amd64.c: Rework the specific trampoline code to make it smaller.
12522
12523         * mini-amd64.h mini-amd64.c: Export amd64_patch as mono_amd64_patch.
12524
12525 2007-10-09  Martin Baulig  <martin@ximian.com>
12526
12527         * debug-debugger.h
12528         (MonoDebuggerMetadataInfo): Added `field_info_type_offset' and
12529         `field_info_offset_offset'.     
12530
12531 Tue Oct 9 09:47:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
12532
12533         * mini-ppc.c, mini-ppc.h, mini-ops.h, inssel-ppc.brg, cpu-g4.md:
12534         removed more internal usage of the r11 register and made it available
12535         to the register allocator.
12536
12537 2007-10-08  Mark Probst  <mark.probst@gmail.com>
12538
12539         * mini.c, mini-amd64.c, mini-x86.c: Allow open generic contexts
12540         when sharing generics and treat type variables as references.
12541
12542 Mon Oct 8 10:55:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
12543
12544         * mini-ppc.c: started removing the internal uses of register r11
12545         to eventually allow the register allocator to manage it as an
12546         additional available register.
12547
12548 Mon Oct 8 14:25:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
12549
12550         * tramp-amd64.c: fixed memory corruption in the trampoline generation.
12551
12552 Mon Oct 8 12:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
12553
12554         * tramp-ppc.c, tramp-x86.c: reduce the alignment requirements for
12555         specific trampolines as they are not performance critical as a jump
12556         target (maybe align as before only for AOT code?). This saves about
12557         200 KB of native code on x86 for monodevelop startup.
12558
12559 Mon Oct 8 10:04:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
12560
12561         * tramp-ppc.c: reduce the size of the trampolines, saves 160KB on
12562         monodevelop startup.
12563
12564 2007-10-06  Zoltan Varga  <vargaz@gmail.com>
12565
12566         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Allow signed displacements.
12567
12568         * mini-sparc.h mini-sparc.c: Implement IMT support.
12569
12570         * tramp-sparc.c (mono_arch_create_trampoline_code): Rework the trampoline code so
12571         its smaller and doesn't clobber sparc_g1.
12572
12573         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Update after trampoline changes.
12574
12575 Fri Oct 5 18:28:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
12576
12577         * mini-ppc.c: optimized the size of the IMT thunks a bit.
12578
12579 Fri Oct 5 18:08:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
12580
12581         * mini-ppc.c: implemented fast delegate invocation.
12582
12583 Fri Oct 5 00:01:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
12584
12585         * mini-ppc.h, mini-ppc.c: IMT support for the PPC architecture.
12586
12587 Thu Oct 4 22:04:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
12588
12589         * mini-ppc.c, mini-ppc.h, tramp-ppc.c, Makefile.am: port the PPC
12590         code to the new style trampoline in preparation for IMT support.
12591
12592 Thu Oct 4 19:01:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
12593
12594         * mini-ppc.c, tramp-ppc.c: don't use r13 as it's used by the PPC EABI
12595         systems already. This also reduces the specific trampiline sizes and
12596         prepares for the use of r12 as the IMT identifier register.
12597
12598 Thu Oct 4 16:38:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
12599
12600         * mini-mips.h: endianess fix (simplified from a patch by
12601         Thomas Kunze <thommy@tabao.de>, bug #323737).
12602
12603 Thu Oct 4 14:43:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
12604
12605         * exceptions-ppc.c, mini-ppc.h: refactor to use macros
12606         to access ucontext fields and enable netbsd support
12607         (partially from Magnus Henoch <mange@freemail.hu>).
12608
12609 Thu Oct 4 12:35:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
12610
12611         * genmdesc.pl: patch from Henryk Plotz <henryk@openmoko.org> to
12612         use the preprocessor from the CPP env var if it is set.
12613
12614 Wed Oct 3 17:11:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
12615
12616         * mini-trampolines.c: fixed an assertion and moved it earlier in the
12617         code, before interface_offset gets used.
12618
12619 2007-10-02  Zoltan Varga  <vargaz@gmail.com>
12620
12621         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call 
12622         mono_class_setup_vtable () before accessing klass->vtable.
12623
12624 2007-10-01  Zoltan Varga  <vargaz@gmail.com>
12625
12626         * aot-compiler.c (get_plt_index): Rework the handling of wrappers to be not so
12627         hackish.
12628
12629 Mon Oct 1 15:00:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
12630
12631         * mini.c, mini-trampolines.c, mini.h: enable the lazy filling of the
12632         IMT slots (this saves hundreds of KB of memory in programs like
12633         IronPython and Monodevelop).
12634
12635 Mon Oct 1 14:44:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
12636
12637         * mini.c: print the delegate counter.
12638
12639 Mon Oct 1 14:36:50 CEST 2007 Paolo Molaro <lupus@ximian.com>
12640
12641         * mini-x86.c: make it easier to enable the debugging code for IMT
12642         slots.
12643
12644 2007-09-28  Martin Baulig  <martin@ximian.com>
12645
12646         * debug-debugger.h
12647         (MonoDebuggerMetadataInfo): Add `klass_image_offset',
12648         `mono_method_klass_offset' and `mono_method_token_offset'.
12649
12650 2007-09-20  Mark Probst  <mark.probst@gmail.com>
12651
12652         * mini.c: First generics sharing implementation.  Can only share
12653         in very simple cases.  If sharing doesn't work it falls back to
12654         dedicated compilation.
12655
12656         * mini.h: Flag in MonoCompile to specify whether generic
12657         compilation is shared.  Flags enum for marking which generic inst
12658         of a context is used.  Prototypes for helper functions.
12659
12660         * generic-sharing.c: Helper functions for generic method sharing.
12661
12662         * optflags-def.h: Optimization flag (gshared) for enabling generic
12663         method sharing added.
12664
12665         * Makefile.am: generic-sharing.c added.
12666
12667 2007-09-19 Daniel Nauck <dna@mono-project.de>
12668
12669         * mini.c (mono_thread_abort): fixed typo in r86014. It should be '==' instead of '!='.
12670
12671 2007-09-19  Massimiliano Mantione  <massi@ximian.com>
12672         * mini.c (mono_thread_abort): Correctly handle ThreadAbortException,
12673         fixes bug 325507.
12674
12675 2007-09-19  Martin Baulig  <martin@ximian.com>
12676
12677         * mini.c (mini_cleanup): Only call mono_debugger_cleanup() here;
12678         mono_debug_cleanup() is now part of mono_cleanup().
12679
12680 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
12681
12682         * driver.c (mono_main): Fix a warning.
12683
12684 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
12685
12686         * aot-compiler.c: Optimize various parts when processing large assemblies.
12687         Fixes ##325568.
12688
12689         * mini.c (mono_patch_info_hash): Improve hash function.
12690
12691 2007-09-14  Jonathan Chambers <joncham@gmail.com>
12692
12693         * mini-exceptions.c: Add HAVE_UNISTD_H check around include.
12694         
12695         Code is contributed under MIT/X11 license.
12696
12697 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
12698
12699         * mini.c (mini_init): Fix a leak.
12700
12701         * debug-mini.c (mono_debug_free_method_jit_info): Fix a leak.
12702
12703 Fri Sep 14 12:53:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
12704
12705         * mini.c: redirect string.InternalAllocStr() to the managed allocator.
12706
12707 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
12708
12709         * mini-amd64.c (mono_arch_find_imt_method): Add support for AOT code.
12710
12711 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
12712
12713         * Makefile.am generics-variant-types.2.il generics.cs: Add some generics
12714         variance tests.
12715
12716         * inssel.brg: Reorganize the isinst/castclass code to reduce code duplication.
12717
12718         * mini.c (handle_alloc): Enable managed allocators in AOT code.
12719
12720         * aot-compiler.c (encode_patch): Add support for MONO_WRAPPER_ALLOC.
12721
12722         * aot-runtime.c (decode_patch_info): Ditto.
12723
12724 2007-09-12  Jonathan Chambers <joncham@gmail.com>
12725
12726         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement
12727         static case. Cache delegates in architecture specific code, 
12728         based on number of parameters.
12729         
12730         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Cache delegates
12731         in architecture specific code, based on number of parameters.
12732         
12733         * mini-trampolines.c (mono_delegate_trampoline): Architecture specific 
12734         caching happen in architecture specific code now.
12735         
12736         Code is contributed under MIT/X11 license.
12737
12738 2007-09-12  Jonathan Chambers <joncham@gmail.com>
12739
12740         * mini.h, mini.c, mini-x86.c, mini-amd64.c, mini-hppa.c, mini-mips.c,
12741         mini-s390x.c, mini-arm.c, mini-ia64.c, mini-sparc.c, mini-ppc.c, mini-alpha.c,
12742         mini-s390.c: Add mono_arch_init and mono_arch_cleanup methods.
12743
12744         Code is contributed under MIT/X11 license.
12745
12746 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
12747         * mini.c: (mono_thread_abort) Fixed bug #82416.
12748
12749 Tue Sep 11 16:15:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
12750
12751         * mini.: hook the new managed GC allocation feature into the JIT.
12752
12753 Tue Sep 11 16:14:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
12754
12755         * mini.c: implementation for the new runtime tls opcode.
12756
12757 2007-09-11  Martin Baulig  <martin@ximian.com>
12758
12759         * debug-debugger.h
12760         (MonoDebuggerMetadataInfo): Add `mono_method_flags_offset' and
12761         `mono_method_inflated_offset'.
12762
12763 2007-09-07  Zoltan Varga  <vargaz@gmail.com>
12764
12765         * driver.c mini.h mini.c: Add a new devel command line option for injecting
12766         async exceptions into a method.
12767
12768         * mini-amd64.h mini-amd64.c: Implement injecting of async exceptions for the
12769         purpose of testing whenever the unwinder works at every instruction.
12770
12771 Thu Sep 6 12:42:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
12772
12773         * mini.c: check accessibility of method used in ldftn (fixes
12774         bug #82635).
12775
12776 2007-09-04  Zoltan Varga  <vargaz@gmail.com>
12777
12778         * mini-amd64.c (mono_arch_output_basic_block): Fix a warning.
12779
12780         * inssel.brg: Fix a warning.
12781
12782 2007-09-03  Martin Baulig  <martin@ximian.com>
12783
12784         * debug-debugger.c: `MONO_DEBUGGER_EVENT_INITIALIZE_MANAGED_CODE'
12785         now takes the `main_method' as argument.
12786
12787 2007-09-02  Zoltan Varga  <vargaz@gmail.com>
12788
12789         * cpu-sparc.md (endfilter): Add missing src1:i argument.
12790
12791 2007-08-30  Jonathan Chambers <joncham@gmail.com>
12792
12793         * driver.c: include the cil-coff.h header on Windows.
12794         
12795         Code is contributed under MIT/X11 license.
12796
12797 Thu Aug 30 16:17:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
12798
12799         * mini.c, driver.c: don't include the cil-coff.h header.
12800
12801 Thu Aug 30 14:50:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
12802
12803         * mini.c: flag places that needs fixes fo soft-float support.
12804
12805 Wed Aug 29 18:26:20 CEST 2007 Paolo Molaro <lupus@ximian.com>
12806
12807         * mini.h, inssel-float.brg: fix soft-float constant loads on big
12808         endian systems (partially from Dean Jenkins, bug #81924).
12809
12810 2007-08-28  Mark Probst  <mark.probst@gmail.com>
12811
12812         * mini.c (check_linkdemand): Remove embedded reference object in
12813         call to LinkDemandSecurityException.
12814         (mono_jit_compile_method_inner): Call LinkDemandSecurityException
12815         with an IntPtr instead of a reference object.
12816
12817 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
12818
12819         * mini.c (handle_initobj): Handle alignment properly.
12820
12821         * inssel.brg (mini_emit_memset): Ditto. 
12822
12823         * inssel.brg (mini_emit_memcpy): Ditto. 
12824
12825         * inssel-sparc.brg: Ditto.              
12826
12827         * mini.h mini.c inssel-*.brg: Pass alignment information to OP_MEMCPY/MEMSET.
12828
12829 2007-08-26  Zoltan Varga  <vargaz@gmail.com>
12830
12831         * mini-exceptions.c (mono_handle_exception_internal): Skip the first frame for
12832         exceptions raised in unmanaged code. Fixes part of #82594.
12833
12834 2007-08-24  Mark Probst  <mark.probst@gmail.com>
12835
12836         * mini.c (mono_method_to_ir), declsec.c
12837         (mono_declsec_linkdemand_aptc): Fixed custom attr leaks.
12838
12839 2007-08-22  Martin Baulig  <martin@ximian.com>
12840
12841         * debug-mini.h
12842         (MonoDebuggerThreadInfo): New typedef.
12843         (mono_debugger_thread_table): New global variable.
12844         (mono_debugger_thread_created): New public function.
12845         (mono_debugger_thread_cleanup): New public function.
12846
12847         * debug-debugger.h
12848         (MonoDebuggerInfo):
12849         - removed `get_current_thread' and `lookup_assembly'.
12850         - removed `data_table'.
12851         - added `thread_table'.
12852
12853         * mini.c
12854         (mono_thread_start_cb): Call mono_debugger_thread_created().
12855         (mono_thread_attach_cb): Likewise.
12856         (mini_thread_cleanup): Call mono_debugger_thread_cleanup().
12857         (mini_cleanup): Move mono_debug_cleanup() down, after free'ing the
12858         initial domain.
12859
12860         * driver.c (mono_main): Move mono_debug_init() up, before calling
12861         mini_init(); mono_debug_init_1() and mono_debug_init_2() are gone.
12862
12863 Tue Aug 21 16:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
12864
12865         * mini-x86.c, inssel-x86.brg: group multiple stack adjustments
12866         together when passing several arguments of type double (gives a small
12867         speedup and saves a few bytes of generated code).
12868
12869 2007-08-20  Jb Evain  <jbevain@novell.com>
12870
12871         * mini.c (mono_method_to_ir): fix leak on InvalidProgramException.
12872
12873 2007-08-20  Jb Evain  <jbevain@novell.com>
12874
12875         * mini.c (mono_method_to_ir): throw MethodAccessException
12876         and FieldAccessException instead of InvalidProgramException.
12877
12878 2007-08-20  Mark Probst  <mark.probst@gmail.com>
12879
12880         * mini.c: CoreCLR security checks.
12881
12882         * mini.h: Removed MonoSecurityMode (moved to
12883         metadata/security-manager.h) and mono_security_mode global var
12884         (replaced by set/get functions in security-manager.h).
12885
12886         * driver.c: Added "core-clr-test" security mode for testing.  Used
12887         set-function for setting security mode.
12888
12889 2007-08-17  Mark Probst  <mark.probst@gmail.com>
12890
12891         * mini.c: MonoJitInfo's are freed hazardously now.  Statistics for
12892         the new jit_info_table.
12893
12894         * driver.c: Test code for the new jit_info_table (enabled by the
12895         define MONO_JIT_INFO_TABLE_TEST).
12896
12897 2007-08-14  Zoltan Varga  <vargaz@gmail.com>
12898
12899         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
12900         detection of call <REG> instruction sequence. Fixes build on freebsd.
12901
12902 2007-08-13  Zoltan Varga  <vargaz@gmail.com>
12903
12904         * mini-exceptions.c: Fix a warning.
12905
12906 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
12907
12908         * exceptions-amd64.c (mono_arch_handle_altstack_exception): Enable the new
12909         stack overflow handling code on amd64 too.
12910
12911         * mini-exceptions.c (mono_setup_altstack): Make this use 
12912         mono_thread_get_stack_bounds ().
12913
12914         * mini-x86.h: Disable sigaltstack on solaris x86.
12915
12916 2007-08-10  Zoltan Varga  <vargaz@gmail.com>
12917
12918         * mini-exceptions.c (mono_setup_altstack): Enable this to work on solaris x86.
12919
12920 2007-08-10  Geoff Norton  <gnorton@customerdna.com>
12921
12922         * tramp-x86.c: Remove some unneeded alignment changes on Apple.  Fixes #82387.
12923
12924 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
12925
12926         * mini-exceptions.c (mono_print_thread_dump): Enable this on amd64 too.
12927
12928         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Fix a warning.
12929
12930 2007-08-03  Neale Ferguson <neale@sinenomine.net>
12931
12932         * mini-s390.c (add_general): Adjust offset calculation to take into account of rounding up
12933         due to alignment.
12934
12935 Thu Aug 2 17:36:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
12936
12937         * mini-ppc.c: avoid an invalid encoding of unsigned right shift by 0
12938         to be emitted (bug #82281).
12939
12940 2007-08-01  Martin Baulig  <martin@ximian.com>
12941
12942         Merged the `debugger-dublin' branch.
12943
12944         * debug-debugger.h (MonoDebuggerInfo):
12945         Removed the `old_*' compatibility entries.
12946         Added `debugger_version' and `data_table'.
12947         Renamed `get_method_addr_or_bpt' -> `insert_breakpoint'.
12948         Renamed `remove_method_breakpoint' -> `remove_breakpoint'.
12949
12950         * debug-mini.c
12951         (MiniDebugMethodBreakpointInfo): Add `address_list'.
12952         (mono_debugger_check_breakpoints): Take a `MonoDebugMethodAddress *'
12953         instead of a `gconstpointer'.
12954         (mono_debugger_insert_method_breakpoint): Return a
12955         `MonoDebugMethodAddressList *'.
12956
12957 2007-06-28  Martin Baulig  <martin@ximian.com>
12958
12959         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
12960
12961 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
12962
12963         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Avoid using 
12964         __builtin_frame_address () since it is broken on older gcc versions.
12965
12966 Tue Jul 31 17:34:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
12967
12968         * mini.c, mini.h, mini-exceptions.c: added a bit of documentation
12969         on the stack overflow handling and made the managed stack overflows
12970         catchable in most cases using soft guard pages.
12971         * exceptions-x86.c: added code to restore the protection in the soft
12972         guard pages at the end of exception handling.
12973
12974 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
12975
12976         * mini.c (SIG_HANDLER_SIGNATURE): Fix a warning.
12977
12978 Mon Jul 30 17:43:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
12979
12980         * exceptions-ppc.c, mini-ppc.h: arch-specific stack overflow
12981         exception handling.
12982
12983 Mon Jul 30 17:38:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
12984
12985         * mini-alpha.h, mini-ia64.h, mini-sparc.h: disable the altstack
12986         signal handling support until it has been ported to the new mechanism.
12987         * mini.c: fixed stack overflow detection and use the new
12988         architecture code  to handle signals on the altstack.
12989
12990 Mon Jul 30 17:33:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
12991
12992         * exceptions-amd64.c, mini-amd64.h: amd64 code to handle
12993         stack overflows on the alt stack.
12994
12995 Mon Jul 30 17:29:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
12996
12997         * exceptions-x86.c, mini-x86.h, mini.h: new code to handle
12998         stack overflows on the alt stack.
12999
13000 Mon Jul 30 11:50:06 CEST 2007 Paolo Molaro <lupus@ximian.com>
13001
13002         * exceptions-ppc.c: cleanup preparing for altstack support.
13003
13004 Mon Jul 30 11:31:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
13005
13006         * exceptions-arm.c: cleanup preparing for altstack support.
13007
13008 2007-07-27  Mark Probst  <mark.probst@gmail.com>
13009
13010         * mini.c (print_jit_stats): Output hazard pointer stats.
13011
13012 2007-07-26  Mark Probst  <mark.probst@gmail.com>
13013
13014         * driver.c, mini.c: Replaced security mode flags with a single
13015         enum variable.
13016
13017 Thu Jul 26 20:12:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
13018
13019         * mini.c, mini-exceptions.c: cleanup the sigaltstack code.
13020
13021 2007-07-25  Mark Probst  <mark.probst@gmail.com>
13022
13023         * mini.c, mini.h, driver.c (mono_main): Added command-line flag
13024         (which doesn't do anything yet) for activating Core CLR
13025         (Silverlight) security.
13026
13027 Tue Jul 24 21:16:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
13028
13029         * mini-codegen.c: work around a possible gcc bug on arm.
13030
13031 Tue Jul 24 17:20:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
13032
13033         * driver.c, mini-x86.h, mini-amd64.h: print a nice error
13034         message for platforms that don't support AOT compilation.
13035
13036 Mon Jul 23 10:29:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
13037
13038         * mini.h, mini.c, driver.c: temporary smcs hack.
13039
13040 Mon Jul 23 09:29:34 CEST 2007 Paolo Molaro <lupus@ximian.com>
13041
13042         * mini-arm.h, mini-arm.c: arm EABI fixes.
13043
13044 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
13045
13046         * exceptions-x86.c (mono_arch_find_jit_info): Handle the lmf->method == NULL
13047         case.
13048
13049         * tramp-x86.c (mono_arch_create_trampoline_code): Only set lmf->method for
13050         trampolines taking a method argument.
13051
13052         * mini-x86.h (MonoLMF): Add an 'esp' field plus comments.
13053
13054         * mini-x86.c (mono_arch_emit_prolog): Update after changes to the LMF structure.
13055         * tramp-x86.c (mono_arch_create_trampoline_code): Ditto.
13056
13057         * exceptions-x86.c (mono_arch_get_jit_info): Properly clean up the stack after
13058         JIT compilation throws an exception. Fixes #82050.
13059
13060 2007-07-19  Mark Probst  <mark.probst@gmail.com>
13061
13062         * mini.c: Removed the MonoLoaderErrorKind enum and replaced it
13063         with the MONO_EXCEPTION_ defines.
13064
13065 2007-07-17  Zoltan Varga  <vargaz@gmail.com>
13066
13067         * mini-amd64.c (mono_arch_find_imt_method): Handle mov reg,IMM64 case. Fixes
13068         #82117.
13069         
13070         * mini-amd64.c (mono_arch_find_imt_method): Add some debug code to help find out
13071         the cause of an assertion.
13072
13073 Mon Jul 16 19:31:21 CEST 2007 Paolo Molaro <lupus@ximian.com>
13074
13075         * mini.c, jit-icalls.c: mono_get_inflated_method() is obsolete,
13076         removed.
13077
13078 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
13079
13080         * mini-amd64.c (mono_arch_build_imt_thunk): Remove the non-32bit MonoMethod
13081         assert. Should fix #82103.
13082
13083 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
13084
13085         * mini-exceptions.c (mono_jit_walk_stack_from_ctx): Use MONO_CONTEXT_GET_SP ()
13086         here too. Fixes #82095.
13087
13088         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for non-32bit MonoMethod
13089         addresses.
13090
13091         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a couple asserts.
13092
13093         * mini-amd64.h: Enable IMT for amd64.
13094         
13095         * mini-amd64.c (mono_arch_build_imt_thunk): Optimize IMT thunk size.
13096
13097 2007-07-12  Zoltan Varga  <vargaz@gmail.com>
13098
13099         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for IMT call sequences.
13100
13101 2007-07-12  Mark Probst  <mark.probst@gmail.com>
13102
13103         * mini.c (check_linkdemand, mono_method_to_ir): Abort compilation
13104         as soon as check_linkdemand sets an exception_type.
13105
13106 Thu Jul 12 12:18:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
13107
13108         * mini-x86.c: fixed offsets for IMT call sequence.
13109         * mini-x86.h: enable IMT again.
13110
13111 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
13112
13113         * trace.c (mono_trace_enter_method): Decode MonoType too.
13114
13115         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Handle signed displacements too.
13116
13117         * mini.h mini-x86.h mini-trampolines.c: Change the signature of mono_arch_find_imt_method () to pass the calling code address too.
13118
13119         * mini-amd64.c: Add preliminary IMT implementation.
13120         
13121 Wed Jul 11 18:21:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
13122
13123         * mini-x86.c: adjusted mono_arch_get_vcall_slot_addr () to
13124         understand the new IMT-base interface invocation (thanks to
13125         Daniel Nauck for the report and the remote debugging session).
13126
13127 Wed Jul 11 14:54:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
13128
13129         * mini-x86.c: size and speed optimizations for the IMT bsearch.
13130
13131 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
13132
13133         * Makefile.am (aotcheck): Make this actually use the AOTed code.
13134
13135 Wed Jul 11 12:41:32 CEST 2007 Paolo Molaro <lupus@ximian.com>
13136
13137         * mini-trampolines.c: implement AOT IMT support.
13138         * mini-x86.h: enable IMT support for wider testing.
13139
13140 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
13141
13142         * inssel.brg (emit_imt_argument): Add aot support here.
13143
13144         * aot-runtime.c (decode_patch_info): Fix reading of MONO_PATCH_INFO_METHOD.
13145
13146 Tue Jul 10 17:50:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
13147
13148         * mini-x86.c, mini-x86.h, tramp-x86.c: x86 arch-specific changes
13149         of the IMT implementation, partially from massi, with my
13150         implementation of the bsearch sequence. Disabled by default until
13151         the AOT code is implemented.
13152
13153 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
13154
13155         * cpu-x86.md: The source argument of sext_i1/i2 must by a byte reg.
13156
13157         * inssel-x86.brg: Add reg:ldind.i1(regvar) rules. Fixes #82056.
13158
13159 Tue Jul 10 17:33:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
13160
13161         * inssel.brg, mini.c, mini.h, mini-trampolines.c:
13162         arch-independent IMT JIT code from Massimiliano
13163         Mantione (massi@ximian.com) with small cleanups from me.
13164
13165 Tue Jul 10 13:07:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
13166
13167         * Makefile.am: fix svn invocation to get the svn revision to be
13168         independent of the local language (build fix).
13169
13170 2007-07-09  Mark Probst  <mark.probst@gmail.com>
13171
13172         * mini.c (inline_method): Reset cfg->exception_type if the
13173         inlining is aborted.  Fixes: 82049.
13174
13175 Mon Jul 9 17:26:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
13176
13177         * mini.c: remove assert from exception handling code when exception_ptr
13178         is not set.
13179
13180 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
13181
13182         * mini.c (mono_codegen): Add an assert.
13183
13184         * mini-x86.c (mono_arch_emit_prolog): Allocate space for the profiler method 
13185         enter and leave code.
13186         * mini-amd64.c (mono_arch_emit_prolog): Likewise.
13187
13188 Thu Jul 5 20:12:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
13189
13190         * mini-ppc.c: fixed memory corruption for localloc(0)
13191         (bug #81852).
13192
13193 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
13194         
13195         * mini.c: Fix warnings.
13196
13197 Wed Jul 4 15:30:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
13198
13199         * optflags-def.h, mini-x86.c: added sse2 optimization flag and use it
13200         to emit better double->int conversions.
13201
13202 Tue Jul 3 19:42:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
13203
13204         * mini.c: the provided Min/Max optimizations are valid for unisgned
13205         ints.
13206
13207 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
13208
13209         * 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
13210
13211 2007-06-28  Miguel de Icaza  <miguel@novell.com>
13212
13213         * mini.c (mono_running_on_valgrind): Add support for reporting the
13214         method and  its boundaries to valgrind.
13215
13216 2007-06-28  Martin Baulig  <martin@ximian.com>
13217
13218         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
13219
13220 2007-06-25  Zoltan Varga  <vargaz@gmail.com>
13221
13222         * ssa.c (visit_inst): Add support for OP_BR. Fixes #81946.
13223
13224         * generic.2.cs: Add new test case.
13225
13226 2007-06-25  Martin Baulig  <martin@ximian.com>
13227
13228         Merged the `debugger-dublin' branch.
13229
13230         * debug-mini.c
13231         (mono_debugger_insert_method_breakpoint): New public method.
13232         (mono_debugger_remove_method_breakpoint): Likewise.
13233         (mono_debugger_check_breakpoints): New static method.
13234         (mono_debug_close_method): Call mono_debugger_check_breakpoints().
13235
13236         * debug-debugger.h (MonoDebuggerInfo):
13237         Renamed (to keep backward compatibility in the vtable):
13238         `insert_breakpoint' -> `old_insert_breakpoint'.
13239         `remove_breakpoint' -> `old_remove_breakpoint'.
13240         `create_string' -> `old_create_string'.
13241         `lookup_class' -> `old_lookup_class'.
13242         `lookup_type' -> removed; changed into a dummy field.
13243         `lookup_assembly' -> `old_lookup_assembly'.
13244         Added (same functionality, but different signature):
13245         `create_string', `lookup_class', `lookup_assembly'
13246         Added new:
13247         `get_method_addr_or_bpt', `remove_method_breakpoint',
13248         `runtime_class_init'.
13249
13250         * debug-debugger.c: Merged the `debugger-dublin' branch.
13251
13252 2007-06-23  Zoltan Varga  <vargaz@gmail.com>
13253
13254         * mini-amd64.c (peephole_pass_1): Optimize away moves at the beginning of the bb as
13255         well.
13256         (peephole_pass): Likewise.
13257
13258 Fri Jun 22 09:17:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
13259
13260         * driver.c: hopefully make setaffinity work also for ancient
13261         versions of linux.
13262
13263 2007-06-22  Atsushi Enomoto  <atsushi@ximian.com>
13264
13265         * driver.c : win32 build fix.
13266
13267 Thu Jun 21 19:24:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
13268
13269         * driver.c: check for the MONO_NO_SMP env var and bind to a single
13270         processor if it is set.
13271
13272 2007-06-21  Martin Baulig  <martin@ximian.com>
13273
13274         * debug-mini.h: New file.
13275
13276         * debug-mini.c
13277         (mono_debugger_insert_breakpoint_full): Moved here from
13278         ../metadata/mono-debug-debugger.c.
13279         (mono_debugger_remove_breakpoint): Likewise.
13280         (mono_debugger_breakpoint_callback): Likewise.
13281
13282 2007-06-15  Raja R Harinath  <rharinath@novell.com>
13283
13284         * jit-icalls.c (mono_helper_compile_generic_method): Update to
13285         changes in MonoGenericClass.
13286
13287 2007-06-14  Zoltan Varga  <vargaz@gmail.com>
13288
13289         * mini-codegen.c (mono_opcode_to_type): Fix ia64 build.
13290
13291 2007-06-14  Raja R Harinath  <rharinath@novell.com>
13292
13293         * jit-icalls.c (mono_helper_compile_generic_method): Update to
13294         removal of MonoGenericMethod.
13295
13296 Thu Jun 14 12:42:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
13297
13298         * mini-exceptions.c: hooks for the exception events profiling API.
13299
13300 2007-06-14  Randolph Chung  <tausq@debian.org>
13301
13302         * Makefile.ma: Add hppa target.
13303         * mini-arch.h: Include mini-hppa.h
13304         * cpu-hppa.md, exceptions-hppa.c, inssel-hppa.brg, mini-hppa.c,
13305         mini-hppa.h, tramp-hppa.c: New files for 32-bit HPPA port.
13306         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
13307
13308 2007-06-14  Randolph Chung  <tausq@debian.org>
13309
13310         * inssel.brg: Add rules for "chained" compare-branch operations so that
13311         a single compare op can affect multiple branches.  Adjust cost for
13312         OP_CEQ/OP_CGT/OP_CGT_UN/OP_CLT/OP_CLT_UN.
13313         * inssel-long32.brg: Update rules to use compare-branch macros.  Adjust
13314         cost for some rules so that they can more easily be overridden by
13315         per-arch rules (with fixes from lupus).
13316         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
13317
13318 2007-06-13  Randolph Chung  <tausq@debian.org>
13319
13320         * mini-ops.h: Reorder branch ops so that they match the order of the
13321         corresponding CEE_* ops.  The code expects them this way.
13322         Add new ops for HPPA target.
13323         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
13324
13325 2007-06-13  Randolph Chung  <tausq@debian.org>
13326
13327         * mini-exceptions.c: Handle cases where the stack grows towards
13328         larger addresses.
13329         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
13330
13331 Wed Jun 13 19:13:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
13332
13333         * jit-icalls.c, mini.h, mini.c: added virtual generic invoke
13334         counter.
13335         * driver.c: explain where a non-matching corlib is found.
13336
13337 2007-06-13  Mark Probst  <mark.probst@gmail.com>
13338
13339         * mini.c (print_jit_stats): Output dynamic code allocation stats.
13340
13341 2007-06-10  Sanghyeon Seo <sanxiyn@gmail.com>
13342
13343         * mini-exceptions.c: Generate a method profile leave event during
13344         an exception to ensure that the profiler gets notified.
13345
13346 2007-06-07  Zoltan Varga  <vargaz@gmail.com>
13347
13348         * mini-amd64.c (peephole_pass): Merge some small changes from the linear-ir 
13349         branch.
13350
13351         * cpu-amd64.md: Add long_and/or/xor opcodes.
13352
13353 2007-06-06  Wade Berrier  <wberrier@novell.com>
13354
13355         * cpu-s390x.md (shr_imm): Correct the length of shr_imm instruction.
13356         (./class/lib/monolite/mcs.exe:25498): WARNING **: wrong maximal instruction 
13357         length of instruction shr_imm (expected 8, got 10)
13358
13359 2007-06-06  Zoltan Varga  <vargaz@gmail.com>
13360
13361         * mini-ia64.c (mono_arch_output_basic_block): Really fix the build.
13362
13363 2007-06-06  Mark Probst  <mark.probst@gmail.com>
13364
13365         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
13366         MonoInternalHashTable again (fixed bug in the internal hash table
13367         code).
13368
13369 2007-06-06  Mark Probst  <mark.probst@gmail.com>
13370
13371         * mini.c, driver.c: Reverted the MonoInternalHashTable changes.
13372         Have to figure out what makes it crash the SWF regression.
13373
13374 2007-06-05  Zoltan Varga  <vargaz@gmail.com>
13375
13376         * mini-ia64.c (mono_arch_lowering_pass): Fix ia64 build.
13377
13378 Tue Jun 5 17:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
13379
13380         * mini.c: optimize out the type check when storing null in a
13381         reference array.
13382
13383 2007-06-04  Mark Probst  <mark.probst@gmail.com>
13384
13385         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
13386         MonoInternalHashTable.
13387
13388 Mon Jun 4 11:29:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
13389
13390         * inssel.brg, mini.c, mini-ops.h: optimized Math.Mini/Max
13391         signed integer methods.
13392
13393 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
13394
13395         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case 
13396         permanently since the current approach doesn't work.
13397
13398 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
13399
13400         * inssel.brg (stmt): Only call delegate->invoke_impl if 
13401         MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE is defined.
13402
13403 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
13404
13405         * mini-amd64.c (mono_arch_output_basic_block): Unify div/rem opcodes and handle
13406         the sreg2==rdx case.
13407         
13408         * mini-amd64.c cpu-amd64.md: Correct length of r4const instruction and take into
13409         account if it contains a rex prefix.
13410         (peephole_pass): Handle OP_FMOVE as well.
13411
13412 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
13413
13414         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case for now
13415         as it causes regressions.
13416
13417 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
13418
13419         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement support for the
13420         static case as well.
13421
13422         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix ia64 build.
13423
13424         * mini-x86.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
13425         (mono_arch_get_this_arg_from_call): Ditto.
13426
13427         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Removed.
13428
13429         * inssel.brg (mini_emit_virtual_call): Call delegate->Invoke through the delegate's
13430         invoke_impl field.
13431
13432         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
13433         (mono_arch_get_this_arg_from_call): Ditto.
13434
13435         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Removed.
13436         
13437         * mini-trampolines.c (mono_delegate_trampoline): Complete rewrite. On first call,
13438         try to create optimized invoke code and use that for further invocations. 
13439         Otherwise, use the original mono_marshal_get_delegate_invoke () implementation.
13440
13441         * mini-x86.h mini-ia64.h: Remove MONO_ARCH_HAS_CREATE_DELEGATE_TRAMPOLINE for now.
13442
13443 2007-05-29  Rodrigo Kumpera  <kumpera@gmail.com>
13444
13445         * inssel.brg (mini_emit_virtual_call): Statically dispatch virtual calls to
13446         sealed classes or methods.
13447         *devirtualization.cs: tests for the new optimization
13448
13449 2007-05-29  Zoltan Varga  <vargaz@gmail.com>
13450
13451         * liveness.c (update_gen_kill_set): No need to set VOLATILE flags here, it is done
13452         by the update_volatile () function.
13453
13454 2007-05-27  Zoltan Varga  <vargaz@gmail.com>
13455
13456         * driver.c (mono_main): Call g_thread_init () early since newer glib versions
13457         require it.
13458
13459         * abcremoval.c (mono_perform_abc_removal): Avoid using alloca.
13460
13461 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
13462
13463         * mini.c: Add configure checks for header files.
13464         * mini-x86.c: Add configure checks for header files.
13465         * trace.c: Add configure checks for header files.
13466         * aot-runtime.c: Add configure checks for header files.
13467         * aot-compiler.c: Add configure checks for header files.
13468         * driver.c: Add configure checks for header files.
13469         * mini-codegen.c: Add configure checks for header files.
13470         
13471         Code is contributed under MIT/X11 license.
13472
13473 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
13474
13475         * mini-ia64.c (mono_arch_lowering_pass): Fix the handling of
13476         icompare_imm -128 + op_iclt. Fixes #81703.
13477
13478 2007-05-19  Zoltan Varga  <vargaz@gmail.com>
13479
13480         * mini-codegen.c (mono_local_regalloc): Fix long-shift-regalloc on amd64.
13481
13482 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
13483
13484         * inssel.brg: added "mini_emit_load_intf_bit_reg_vtable", and used it
13485         inside "mini_emit_isninst_iface_cast" and "mini_emit_castclass_iface"
13486         so that all isinst checks now use "interface_bitmap".
13487
13488 2007-05-15  Zoltan Varga  <vargaz@gmail.com>
13489
13490         * cpu-amd64.md (jmp): Fix a warning.
13491
13492         * inssel.brg (CEE_SWITCH): Hopefully fix #80738.
13493
13494         * basic.cs: Add new regression test.
13495
13496         * basic.cs: Remove test which is now in basic-long.cs.
13497
13498         * mini-ia64.c (mono_arch_output_basic_block): Sign extend in CEE_CONV_I8/CEE_CONV_I.
13499
13500         * basic-long.cs: Add new test.
13501         
13502 2007-05-13  Zoltan Varga  <vargaz@gmail.com>
13503
13504         * mini-sparc.c (mono_spillvar_offset_float): Fix sparc build.
13505
13506 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
13507
13508         * cpu-x86.md minix-86.c: Add a peephole_pass_1 () as on amd64.
13509
13510         * mini-x86.c (mono_arch_output_basic_block): Use mono_opcode_to_cond () in a few
13511         places.
13512         
13513         * mini-x86.c (mono_arch_emit_exceptions): Decrease the size of the exception 
13514         throwing code a bit.
13515
13516         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Decrease the size of 
13517         the exception throwing code a bit.
13518
13519         * mini-x86.c (get_call_info): Allocate result from a mempool.
13520
13521 2007-05-11  Zoltan Varga  <vargaz@gmail.com>
13522
13523         * aot-compiler.c (find_typespec_for_class): Fix the assert.
13524
13525         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
13526
13527         * mini.h (MonoCompile): Add 'token_info_hash' field.
13528
13529         * mini.c: Save token->method associations during compilation so the AOT 
13530         compiler can use it.
13531         
13532         * aot-compiler.c aot-runtime.c: Add support for compiling non-generic methods
13533         which reference generic classes and methods.
13534
13535 2007-05-10  Zoltan Varga  <vargaz@gmail.com>
13536
13537         * mini.h mini-<ARCH>.h: Get rid of MONO_ARCH_HAS_XP_LOCAL_REGALLOC.
13538
13539         * aot-compiler.c (compile_method): Fix a typo in a comment.
13540
13541         * aot-runtime.c (decode_cached_class_info): Skip generic types.
13542
13543         * aot-compiler.c: Add minimal support for AOTing generic code by skipping 
13544         everything generic.
13545
13546         * mini.c (mono_method_to_ir): Disable AOT when calling helper_compile_generic_method.
13547
13548 2007-05-09  Zoltan Varga  <vargaz@gmail.com>
13549
13550         * mini.h (MonoCompile): Add 'args' field.
13551
13552         * mini.c (mono_compile_create_vars): Store variables representing the arguments
13553         into cfg->args.
13554
13555         * mini-<ARCH>.c: Use cfg->args for accessing the method arguments.
13556
13557 2007-05-08  Zoltan Varga  <vargaz@gmail.com>
13558
13559         * mini.c (mono_compile_get_interface_var): Remove this unused function.
13560
13561         * mini-ops.h inssel.brg mini-<ARCH>.c: Add a new opcode for ckfinite as well.
13562
13563         * mini-ops.h: Introduce new opcodes used in the IR instead of the original CEE_
13564         opcodes for some opcodes.
13565
13566         * mini.h *.brg *.c: Use the new opcodes.
13567
13568 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
13569
13570         * mini.h: Bumped aot revision.
13571
13572         * inssel.brg: modified code generation of type checks for interfaces
13573         to use the new "MonoClass.interface_bitmap" instead of the old
13574         "MonoClass.interface_offsets".
13575
13576 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
13577
13578         * cpu-amd64.md (jmp): Increase the maximum size of the jmp opcode to 128.
13579
13580 2007-04-29  Zoltan Varga  <vargaz@gmail.com>
13581
13582         * abcremoval.c (summarize_integer_value): Handle OP_LCONV_TO_I4 to fix abcrem on
13583         64 bit platforms.
13584
13585 2007-04-27  Neale Ferguson <neale@sinenomine.net>
13586
13587         * mini-s390x.c: Fix MONO_TYPE_VALUETYPE processing.
13588
13589 2007-04-27  Wade Berrier  <wberrier@novell.com>
13590
13591         * mini-s390x.c: Remove redeclaration of CompRelation and CompType (defined in 
13592         mini.h) to fix build.
13593
13594 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
13595
13596         * mini-amd64.c (peephole_pass_1): Fix and reenable this pass.
13597         
13598         * mini-amd64.c (mono_arch_local_regalloc): Disable the new peephole_pass_1 as it
13599         causes the corlib unit tests to fail.
13600
13601 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
13602
13603         * mini-codegen.c (mono_opcode_to_type): Fix a bug in the previous patch.
13604
13605         * mini-amd64.c (peephole_pass_1): New pass to perform before local regalloc.
13606
13607         * mini-codegen.c (mono_opcode_to_cond): New helper function to convert conditional 
13608         opcodes to the comparison relations.
13609
13610         * mini-codegen.c (mono_opcode_to_type): New helper function to convert conditional 
13611         opcodes to their types.
13612         
13613         * mini-ia64.c mini-amd64.c: Use mono_opcode_to_cond and mono_opcode_to_type.
13614
13615         * mini-amd64.c (get_call_info): Allocate the result from the cfg mempool and cache 
13616         it in cfg->arch.cinfo.
13617
13618         * local-propagation.c (mono_local_cprop_bb): Fix a warning.
13619
13620         * mini.h mini.c branch-opts.c: Change bbhash to be an array and store it in 
13621         cfg->cil_offset_to_bb.
13622
13623 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
13624
13625         * liveness.c (optimize_initlocals): New mini-pass to optimize away dead assignments
13626         created becase of initlocals.
13627
13628 2007-04-23  Zoltan Varga  <vargaz@gmail.com>
13629
13630         * mini-alpha.c cpu-alpha.md: More alpha port work from 
13631         Sergey Tikhonov <tsv@solvo.ru>.
13632
13633 2007-04-21  Andreas Faerber  <andreas.faerber@web.de>
13634
13635         * Makefile.am (BUILT_SOURCES): Fix for automake 1.6.x. Fixes #81417.
13636
13637 2007-04-19  Zoltan Varga  <vargaz@gmail.com>
13638
13639         * cpu-s390.md (break): Correct the length of break instruction.
13640
13641 Thu Apr 19 16:28:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
13642
13643         * mini.c: fix a couple of soft-float issues and comments.
13644
13645 2007-04-15  Miguel de Icaza  <miguel@novell.com>
13646
13647         * trace.c (is_filenamechar): - is also a filename char.
13648
13649 2007-04-15  Neale Ferguson <neale@sinenomine.net>
13650
13651         * mini-s390.c: Correct checking for enum type in return value processing.
13652
13653 2007-04-14  Raja R Harinath  <rharinath@novell.com>
13654
13655         * Makefile.am (BUILT_SOURCES): Add 'version.h'.
13656         (version.h): Makefile is in the build directory.
13657
13658 2007-04-06  Andreas Faerber  <andreas.faerber@web.de>
13659
13660         * mini-amd64.h: fix for assertion failure on Solaris/amd64
13661
13662 2007-04-11  Martin Baulig  <martin@ximian.com>
13663
13664         * mini.c (can_access_member): Fix handling of generic classes;
13665         fixes #81259.
13666
13667 2007-04-10  Zoltan Varga  <vargaz@gmail.com>
13668
13669         * aot-runtime.c (mono_aot_plt_resolve): Fix disabling of AOT. Fixes #81316.
13670
13671 2007-04-05  Zoltan Varga  <vargaz@gmail.com>
13672
13673         * aot-runtime.c: Fix disabling of AOT. Fixes #81316.
13674
13675 Fri Mar 23 20:25:31 CET 2007 Paolo Molaro <lupus@ximian.com>
13676
13677         * mini-codegen.c: make sure the right spill amount is
13678         used for fp or integer registers (fixes the float_sub_spill() on ppc).
13679
13680 Fri Mar 23 19:43:35 CET 2007 Paolo Molaro <lupus@ximian.com>
13681
13682         * mini-ppc.c: fixes for the fp_branch_nan test.
13683
13684 2007-03-23  Zoltan Varga  <vargaz@gmail.com>
13685
13686         * basic.cs: Comment out new test which still fails on ia64.
13687
13688 Fri Mar 23 15:54:23 CET 2007 Paolo Molaro <lupus@ximian.com>
13689
13690         * mini.c: immediate shifted or fix (mono_metadata_user_string assert).
13691
13692 Fri Mar 23 12:53:28 CET 2007 Paolo Molaro <lupus@ximian.com>
13693
13694         * mini-ppc.c, mini-ppc.h: struct passing ABI fix (bug #77968).
13695
13696 2007-03-22  Zoltan Varga  <vargaz@gmail.com>
13697
13698         * cfold.c (FOLD_BINOP): Cast the result to gint32 to prevent overflow problems
13699         on 64 bit machines. Fixes part of #80738.
13700
13701         * basic.cs: Add regression test.
13702
13703 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
13704
13705         * inssel.brg basic.cs: Revert previous change to fix build.
13706
13707         * inssel.brg (SWITCH): Clean out the upper word of the switch value on 64 bit
13708         platforms.
13709         
13710         * inssel.brg (SWITCH): Use an integer comparison. Fixes #80738.
13711
13712         * basic.cs: Add new regression test.
13713
13714 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
13715
13716         * mini-ia64.c (mono_arch_emit_prolog): Fix an assert when a function has too
13717         many arguments.
13718
13719 2007-03-16  Neale Ferguson <neale@sinenomine.net>
13720
13721         * cpu-s390x.md: Correct length of break instruction.
13722
13723 2007-03-16  Neale Ferguson <neale@sinenomine.net>
13724
13725         * mini-s390x.c, cpu-s390x.md: Fix #80507 for s390x.
13726         * mini-s390.c, cpu-s390.md: Fix #80507 for s390.
13727
13728 2007-03-15  Jonathan Chambers  <joncham@gmail.com>
13729
13730         * *.c: Begin WIN64 port.
13731         * mini.c:  Use correct register in profiler.
13732         * mini-amd64.c: No inline assembly on Win64.
13733         * mini-amd64.h: Implement MONO_INIT_CONTEXT_FROM_FUNC for Win64.
13734         Only define MONO_ARCH_USE_SIGACTION on non-windows platforms.
13735         * exceptions-amd64.c: Only need gregs_from_ucontext if MONO_ARCH_USE_SIGACTION
13736         is defined. Implement mono_arch_sigctx_to_monoctx, mono_arch_monoctx_to_sigctx, and
13737         mono_arch_ip_from_context for Win64.
13738         
13739         Contributed under MIT/X11 license.
13740
13741 2007-03-15  Zoltan Varga  <vargaz@gmail.com>
13742
13743         * exceptions-amd64.c (seh_handler): Ditto.
13744
13745         * exceptions-x86.c (seh_handler): Fix a memory leak.
13746
13747 Thu Mar 15 13:47:59 CET 2007 Paolo Molaro <lupus@ximian.com>
13748
13749         * mini-arm.c, mini-mips.c, mini-ppc.c, mini-s390.c,
13750         mini-s390x.c: fixed peephole optimizations to deal
13751         correctly with 1 and 2 byte reload avoidance.
13752
13753 Thu Mar 15 10:17:54 CET 2007 Paolo Molaro <lupus@ximian.com>
13754
13755         * cpu-s390.md, cpu-s390x.md: update localloc length.
13756
13757 Wed Mar 14 21:00:19 CET 2007 Paolo Molaro <lupus@ximian.com>
13758
13759         * cpu-g4.md: added missing descriptions.
13760
13761 2007-03-14  Miguel de Icaza  <miguel@novell.com>
13762
13763         *  Makefile.am: Add support so the tail tests are not executed on
13764         PowerPC as that is a known limitation of the PowerPC port.
13765
13766 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
13767
13768         * runmdesc.bat:  Move to msvc directory.
13769         
13770 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
13771
13772         * runmdesc.bat:  Run executable that was produced by the current
13773         target and sent via an argument.
13774         
13775 2007-03-11  Zoltan Varga  <vargaz@gmail.com>
13776
13777         * mini.c (mono_method_to_ir): Fix box+brtrue optimization. Fixes
13778         #81102.
13779
13780         * generics.2.cs: Add regression test.
13781
13782 2007-03-09  Wade berrier  <wberrier@novell.com>
13783
13784         * mini-ppc.h: Undo typo of MONO_CONTEXT_SET_SP (ppc doesn't define this symbol)
13785
13786 2007-03-09  Zoltan Varga  <vargaz@gmail.com>
13787
13788         * aot-runtime.c (load_aot_module): Load all dependent assemblies eagerly since all
13789         AOT code depends on this.
13790
13791 Thu Mar 8 19:36:13 CET 2007 Paolo Molaro <lupus@ximian.com>
13792
13793         * mini.c: more precise tracking of types in the eval stack
13794         (part of fix for bug #81044).
13795
13796 2007-03-07  Zoltan Varga  <vargaz@gmail.com>
13797
13798         * aot-runtime.c (mono_aot_get_class_from_name): Add a cache.
13799
13800         * aot-compiler.c (encode_patch): Remove an obsolete comment.
13801
13802 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
13803
13804         * mini-exceptions.c (mono_handle_native_sigsegv): Fix a warning.
13805
13806         * mini.c (mono_method_to_ir): Add a workaround for bug #80733.
13807
13808 2007-02-22  Zoltan Varga  <vargaz@gmail.com>
13809
13810         * mini.c (type_from_op): Convert CEE_CONV_U to OP_LCONV_TO_U when the argument is
13811         a pointer on 64 bit systems. Fixes #80190.
13812
13813         * iltests.il: Add new regression test.
13814
13815 Tue Feb 20 11:33:28 CET 2007 Paolo Molaro <lupus@ximian.com>
13816
13817         * mini.c: inline a constant for Environment.IsRunningOnWindows.
13818
13819 2007-02-19  Geoff Norton  <gnorton@customerdna.com>
13820
13821         * trace.c: Remove an erroneous alignemnt check when tracing.
13822           Fixes --trace on OSX86.
13823
13824 Wed Feb 14 19:45:56 CET 2007 Paolo Molaro <lupus@ximian.com>
13825
13826         * mini-$(arch).h: initialize SP in context for all the archs.
13827
13828 2007-02-14  Sebastien Pouliot  <sebastien@ximian.com>
13829
13830         * mini-x86.h: Initialize SP in MONO_INIT_CONTEXT_FROM_FUNC. Fix CAS
13831         regressions in the thread tests.
13832
13833 2007-02-14  Zoltan Varga  <vargaz@gmail.com>
13834
13835         * *-alpha.*: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>:
13836         - fixed implementation of LOCALLOC opcode
13837         - implemented non-un compare for floats
13838         - code cleanup
13839         - implementation of FDIV and CKFINITE opcodes
13840         - fixes for latest mono updates
13841         - additional arch opcodes
13842
13843 Mon Feb 12 11:54:16 CET 2007 Paolo Molaro <lupus@ximian.com>
13844
13845         * Makefile.am: simplify and merge rules for cross-compilation.
13846
13847 2007-02-07  Massimiliano Mantione  <massi@ximian.com>
13848
13849         * local-propagation.c: Actually *apply* the fix for bug 80591...
13850
13851 Tue Feb 6 19:03:19 CET 2007 Paolo Molaro <lupus@ximian.com>
13852
13853         * mini-exceptions.c: backuot part of the last change
13854         (fixes cas tests on amd64 related to GetExecutingAssembly ()).
13855
13856 2007-02-06  Massimiliano Mantione  <massi@ximian.com>
13857         * inssel.brg: Fix bug 59286.
13858
13859
13860 Tue Feb 6 12:23:50 CET 2007 Paolo Molaro <lupus@ximian.com>
13861
13862         * mini-exceptions.c: patch from Zoltan to correctly check for
13863         stack boundaries (using the stack register, not the frame register),
13864         fixes bugs #80724, #79717.
13865
13866 2007-02-03  Zoltan Varga  <vargaz@gmail.com>
13867
13868         * mini-ia64.c inssel-sparc.brg mini-sparc.c cpu-sparc.md: Get rid of OP_SETREG/
13869         OP_SETREGIMM, use OP_MOVE/OP_ICONST instead.
13870
13871         * mini-amd64.c (mono_arch_output_basic_block): Fix ATOMIC_EXCHANGE in the
13872         presence of frame pointer elimination.
13873
13874 2007-02-01  Geoff Norton  <gnorton@customerdna.com>
13875         
13876         * mini-x86.h: NetBSD UCONTEX_REG defines.
13877
13878 2007-02-01  Zoltan Varga  <vargaz@gmail.com>
13879
13880         * inssel-amd64.brg: Fix amd64 build.
13881
13882 Thu Feb 1 14:02:09 CET 2007 Paolo Molaro <lupus@ximian.com>
13883
13884         * mini.h: remove extern to workaround what looks likes gcc bug 26905
13885         on amd64.
13886
13887 2007-01-31  Zoltan Varga  <vargaz@gmail.com>
13888
13889         * mini-codegen.c (mono_is_regsize_var): New helper function usable by the back
13890         ends.
13891
13892         * mini-<ARCH>.c: Use mono_is_regsize_var ().
13893
13894 2007-01-30 Mark Mason <mason@broadcom.com>
13895
13896            * exceptions-mips.c: Lots of exception handling fixes, LMFs now work, some cleanups.
13897            * mini-mips.h: Add LMF magic numbers, and fix context set/get macros.
13898            * mini-mips.c: Cleanups, LMF handling now works, optimize store of zero, implement localloc
13899            beginning support for CEE_JMP [not quite working yet]
13900            * tramp-mips.c: LMF handling now works
13901         
13902 2007-01-30  Zoltan Varga  <vargaz@gmail.com>
13903
13904         * mini-amd64.c (peephole_pass): Optimize code common in initlocals blocks.
13905
13906         * mini.h (NULLIFY_INS): New macro.
13907
13908 Tue Jan 30 16:33:33 CET 2007 Paolo Molaro <lupus@ximian.com>
13909
13910         * mini.c: statistical profiler fix for windows, patch
13911         from Tor Lillqvist (tml@novell.com).
13912
13913 2007-01-30  Massimiliano Mantione  <massi@ximian.com>
13914         * local-propagation.c: Fix bug 80591.
13915
13916 Mon Jan 29 12:14:34 CET 2007 Paolo Molaro <lupus@ximian.com>
13917
13918         * Makefile.am: put back the --export-dynamic option as with
13919         the previous gmodule flags (thanks to Robert Jordan).
13920
13921 2007-01-28  Zoltan Varga  <vargaz@gmail.com>
13922
13923         * mini-sparc.c (peephole_pass): Fix #80622 for sparc as well.
13924
13925         mini.h *.c: Allocate fp vregs from the same pool as the int vregs. Use this to
13926         simplify and speed up the local register allocator. Also rename some fields
13927         like iassign->vassign.
13928         
13929         * regalloc.c: Remove some functions which are no longer used since their
13930         inlined version is in mini-codegen.c.
13931         
13932         * mini-codegen.c: Rename mono_regstate2_ functions to mono_regstate_.
13933
13934         * basic.cs objects.cs iltests.il: Merge tests from the linear IL branch.
13935
13936 2007-01-27  Zoltan Varga  <vargaz@gmail.com>
13937
13938         * mini-amd64.c (peephole_pass): Remove optimizations which omit a 
13939         narrowing. Fixes #80622.
13940
13941         * iltests.il: Add new regresssion test. 
13942
13943 Fri Jan 26 18:31:45 CET 2007 Paolo Molaro <lupus@ximian.com>
13944
13945         * mini.h, mini-trampolines.c, aliasing.c, mini-codegen.c,
13946         debug-debugger.c, debug-debugger.h: warning fixes.
13947         * driver.c: updated copyright year and made it fit in one line.
13948
13949 Fri Jan 26 12:48:39 CET 2007 Paolo Molaro <lupus@ximian.com>
13950
13951         * aot-runtime.c: updated to use mono-dl instead of gmodule.
13952
13953 2007-01-25  Zoltan Varga  <vargaz@gmail.com>
13954
13955         * mini-x86.c (mono_arch_output_basic_block): Fix #80507 for x86.
13956
13957         * mini-amd64.c (mono_arch_output_basic_block): Fix #80507 for amd64.
13958
13959         * iltests.il: Add new test for bug #80507.
13960
13961 Wed Jan 24 19:10:28 CET 2007 Paolo Molaro <lupus@ximian.com>
13962
13963         * mini-arm.h: use soft-float also on vfp for now.
13964
13965 Wed Jan 24 14:54:40 CET 2007 Paolo Molaro <lupus@ximian.com>
13966
13967         * mini.c: fix some more soft-float issues.
13968
13969 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
13970
13971         * mini-sparc.h (MONO_ARCH_FRAME_ALIGNMENT): Fix sparc build.
13972
13973 2007-01-24  Massimiliano Mantione  <massi@ximian.com>
13974         * mini-arch.h, , inssel-amd64.brg, mini-x86.c, inssel-x86.brg,
13975         mini-ia64.c, mini-sparc.c, mini-alpha.c: Introduced
13976         MONO_ARCH_LOCALLOC_ALIGNMEENT to fix bug 80498.
13977
13978 Wed Jan 24 12:04:39 GMT 2007 Paolo Molaro <lupus@ximian.com>
13979
13980         * mini-arm.c: typo fix.
13981
13982 2007-01-23  Neale Ferguson <neale@sinenomine.net>
13983
13984         * mini-s390x.c: Use lgb instructions for I1 type variables instead of lb.
13985
13986 2007-01-21  Zoltan Varga  <vargaz@gmail.com>
13987
13988         * mini.c (mono_allocate_stack_slots_full): Allocate memory from the cfg mempool.
13989         Share stack slots for scalar types. Avoid expensive g_list_free () calls.
13990
13991         * mini-x86.c (mono_arch_allocate_vars): Don't free the result of allocate_stack_slots_full.
13992
13993         * mini-amd64.c mini-ia64.c mini-alpha.c: Ditto. 
13994
13995         * mini.h (MonoJitStats): Add a new JIT statistics: locals_stack_size.
13996         
13997         * inssel.brg: Fix a warning.
13998
13999         * mini.h (MonoBasicBlock): Make bb->dominated a GSList.
14000
14001         * abcremoval.c ssa.c ssapre.c: Update after this change.
14002         
14003         * dominators.c (compute_dominators): Allocate bb->dominated from the cfg mempool.
14004
14005         * dominators.c (df_set): Use mono_bitset_union_fast.    
14006
14007 Sat Jan 20 16:59:01 CET 2007 Paolo Molaro <lupus@ximian.com>
14008
14009         * mini.h, genmdesc.c, genmdesc.pl, mini-${arch}.c, cprop.c,
14010         mini-codegen.c: reduce relocations and memory usage for the cpu
14011         description.
14012
14013 2007-01-20  Zoltan Varga  <vargaz@gmail.com>
14014
14015         * mini-codegen.c (mono_regstate2_alloc_int): Optimize this using bsfq on amd64.
14016
14017         * genmdesc.c genmdesc.pl mini.h: Remove some unused fields from the mdesc tables
14018         to reduce their size.
14019
14020 2007-01-19 Mark Mason <mason@broadcom.com>
14021
14022         * exceptions-mips.c: fix mono_arch_ip_from_context(), increase exception debug support.
14023         * mini-mips.c: more configuration macros, support long conditional branches, additional
14024         asserts, fix epilog instrumentation.
14025         * mini-mips.h: use standard stack walk
14026         * cpu-mips.md: increase size of div, rem and conditional branches
14027         
14028 Fri Jan 19 17:23:32 CET 2007 Paolo Molaro <lupus@ximian.com>
14029
14030         * mini.h, mini-codegen.c, mini-$(arch).h: claenup references
14031         to cpu spec data.
14032
14033 2007-01-19  Zoltan Varga  <vargaz@gmail.com>
14034
14035         * aot-compiler.c (encode_klass_info): Allow classes of the form <Type>[][].
14036         (compile_method): Ditto.
14037
14038         * aot-runtime.c (decode_klass_info): Ditto.
14039
14040         * mini.c (mono_method_to_ir): Call mono_get_got_var () in a place where it is
14041         needed by the code generated by inssel.brg. Also fix a warning.
14042
14043 Thu Jan 18 17:55:22 CET 2007 Paolo Molaro <lupus@ximian.com>
14044
14045         * mini.c: deal with enums that become genericinsts by
14046         being nested in a generic class (bug #79956).
14047
14048 Thu Jan 18 16:52:56 CET 2007 Paolo Molaro <lupus@ximian.com>
14049
14050         * mini.c: match the generic definition to check for
14051         private access with generic types (bug #78431).
14052
14053 Thu Jan 18 11:50:13 CET 2007 Paolo Molaro <lupus@ximian.com>
14054
14055         * genmdesc.pl, Makefile.am: perl implementation of genmdesc,
14056         to make life easier for people cross-compiling that insist on not
14057         using scratchbox.
14058
14059 2007-01-17 Mark Mason <mason@broadcom.com>
14060
14061         * inssel-long.brg: patch to deal with mips missing flags
14062         * inssel-long32-mips.brg: implement overflow checks
14063         * insset-mips.brg: implement overflow checks
14064         * mini-mips.h: implement conditional exception handling
14065         * mini-mips.c: add mips_emit_exc_by_name(), implement conditional exception handling.
14066           Remove unused code, minor cleanups.
14067         * exceptions-mips.c: minor cleanups
14068         * mini-ops.h: add mips conditional exception ops
14069         * cpu-mips.md: add mips conditional exception ops
14070
14071         
14072 Wed Jan 17 19:22:34 CET 2007 Paolo Molaro <lupus@ximian.com>
14073
14074         * inssel.brg: patch from Mark Mason <mason@broadcom.com>
14075         to deal with mips missing of flags.
14076
14077 Tue Jan 16 20:01:01 CET 2007 Paolo Molaro <lupus@ximian.com>
14078
14079         * exceptions-ppc.c: execute fault handlers.
14080
14081 Tue Jan 16 19:54:44 CET 2007 Paolo Molaro <lupus@ximian.com>
14082
14083         * mini-ppc.c: handle missing call locationss with FORCE_INDIR_CALL.
14084
14085 Tue Jan 16 13:14:31 CET 2007 Paolo Molaro <lupus@ximian.com>
14086
14087         * mini.c: handle also floating point values in initialize_array.
14088
14089 Tue Jan 16 12:42:40 CET 2007 Paolo Molaro <lupus@ximian.com>
14090
14091         * mini.c, aot-runtime.c, aot-compiler.c: enable aot compilation of
14092         array initialization and make it conditional on the intrins option.
14093
14094 Tue Jan 16 11:28:45 CET 2007 Paolo Molaro <lupus@ximian.com>
14095
14096         * mini.h, patch-info.h, Makefile.am, aot-compiler.c: reduce
14097         relocations and put the patch info names close to the enum definition.
14098
14099 2007-01-15 Mark Mason <mason@broadcom.com>
14100
14101         * basic.cs, exceptions.cs: break up large tests to increase debugability.
14102
14103 Mon Jan 15 18:57:14 CET 2007 Paolo Molaro <lupus@ximian.com>
14104
14105         * mini.c: optimized RuntimeHelpers::InitializeArray () calls.
14106
14107 2007-01-12  Raja R Harinath  <rharinath@novell.com>
14108
14109         * mini.c (mono_method_to_ir): Use new MonoGenericContext accessor.
14110
14111 Thu Jan 11 11:16:42 CET 2007 Paolo Molaro <lupus@ximian.com>
14112
14113         * Makefile.am: distribute the mips sources.
14114
14115 Wed Jan 10 19:49:33 CET 2007 Paolo Molaro <lupus@ximian.com>
14116
14117         * mini-codegen.h: handle bug #80489 here, by excluding ecx
14118         directly.
14119
14120 Wed Jan 10 19:08:05 CET 2007 Paolo Molaro <lupus@ximian.com>
14121
14122         * cpu-x86.md: back out for now as this triggers other regressions.
14123
14124 Wed Jan 10 18:33:16 CET 2007 Paolo Molaro <lupus@ximian.com>
14125
14126         * cpu-x86.md: force src1 and dest regpair for long shift instructions
14127         to eax:edx, so ecx can't get allocated to them (bug #80489).
14128
14129 Tue Jan 9 12:36:11 CET 2007 Paolo Molaro <lupus@ximian.com>
14130
14131         * mini.c, mini-exceptions.c: enabled running fault handlers
14132         (bug #80469).
14133
14134 2007-01-03  Miguel de Icaza  <miguel@novell.com>
14135
14136         * driver.c: If nothing fail, do not use the string "failed",
14137         because it makes it very annoying to view test result logs on the
14138         web. 
14139
14140 2006-12-30  Miguel de Icaza  <miguel@novell.com>
14141
14142         * debug-debugger.c (mono_debugger_main): Rename "main" to
14143         "main_method" to prevent a warning.
14144
14145         Remove a warning for unused field.
14146
14147 2006-12-28  Martin Baulig  <martin@ximian.com>
14148
14149         * debug-debugger.c
14150         (MONO_DEBUGGER__debugger_info): Add `get_lmf_addr'.
14151
14152 2006-12-22  Martin Baulig  <martin@ximian.com>
14153
14154         * mdb-debug-info32.s, mdb-debug-info64.s: New files.
14155         Put a pointer to the `MONO_DEBUGGER__debugger_info' into a
14156         seperate `.mdb_debug_info' section, so we can access it from the
14157         debugger even if the binary is stripped.
14158
14159         * debug-debug.c: Reference the `MONO_DEBUGGER__debugger_info_ptr'
14160         from the `.mdb_debug_info' here to prevent the linker from
14161         removing that section.
14162
14163         * Makefile.am (mono_debugger_sources): Add mdb-debug-info32.s /
14164         mdb-debug-info64.s.
14165
14166 2006-12-19  Robert Jordan  <robertj@gmx.net>
14167
14168         * mini-x86: enable the code to return small structures in
14169         registers for FreeBSD as well. Fixes bug #80278.
14170         * aot-runtime.c: Include sys/wait.h for WEXITSTATUS/WIFEXITED.
14171
14172 Mon Dec 18 19:47:17 CET 2006 Paolo Molaro <lupus@ximian.com>
14173
14174         * mini-x86.c: align the stack when calling the profiler
14175         function instrumenting the prolog (on OSX).
14176
14177 Thu Dec 14 15:22:43 CET 2006 Paolo Molaro <lupus@ximian.com>
14178
14179         * mini.c: emit a break opcode where Debugger.Break () is called.
14180
14181 2006-12-13  Miguel de Icaza  <miguel@novell.com>
14182
14183         * mini.c (mono_method_to_ir): Provide useful information on this
14184         assert, to prevent others from debugging like I did.
14185
14186 Tue Dec 12 17:01:38 CET 2006 Paolo Molaro <lupus@ximian.com>
14187
14188         * mini.c: enable code which was incorrectly commented
14189         (bug #80235).
14190
14191 Tue Dec 12 16:28:15 CET 2006 Paolo Molaro <lupus@ximian.com>
14192
14193         * mini-x86.c: enable on OSX, too, the code to return small
14194         structures in registers.
14195
14196 Mon Dec 11 19:22:35 CET 2006 Paolo Molaro <lupus@ximian.com>
14197
14198         * mini-x86.c: remove the use of the dynamic code manager here, too.
14199
14200 Mon Dec 11 19:08:33 CET 2006 Paolo Molaro <lupus@ximian.com>
14201
14202         * mini.h, debug-debugger.c, tramp-*.c: fixed 
14203         mono_debugger_create_notification_function() to use
14204         mono_global_codeman_reserve () instead of a dynamic code manager.
14205
14206 Tue Dec 5 17:54:50 CET 2006 Paolo Molaro <lupus@ximian.com>
14207
14208         * mini.c, jit-icalls.h, jit-icalls.c: remove the 
14209         ves_array_element_address() jit icall and use a generated
14210         managed method instead (which is about 4 times faster for a rank 3
14211         array access).
14212
14213 2006-11-29  Mark Mason  <mason@broadcom.com>
14214
14215         * basic-calls.cs: additional tests for passing
14216         structures as function arguments.
14217
14218 2006-11-29  Mark Mason  <mason@broadcom.com>
14219
14220         * mini-mips.h: disable custom exception handling
14221         * mini-mips.c: throw/rethrow should use jalr to call
14222         exception stubs.  Fixed bug with passing structures
14223         by value. More support for tracing floating point
14224         functions.
14225
14226 Wed Nov 29 20:28:17 CET 2006 Paolo Molaro <lupus@ximian.com>
14227
14228         * mini.c: fixed typo in the soft-float ldind.r4 handling
14229         (bug #80086).
14230
14231 Wed Nov 29 11:33:03 CET 2006 Paolo Molaro <lupus@ximian.com>
14232
14233         * mini.c, mini.h, driver.c: added --runtime command line
14234         option to select a different runtime than the autodetected one.
14235         * jit.h: added API for embedders to initialize with a specific
14236         runtime version.
14237
14238 Tue Nov 28 21:24:55 CET 2006 Paolo Molaro <lupus@ximian.com>
14239
14240         * mini.c: handle also boxing of r4 values (bug #80024).
14241
14242 Tue Nov 28 19:45:44 CET 2006 Paolo Molaro <lupus@ximian.com>
14243
14244         * mini-ppc.c: force indirect calls until we reserve
14245         enough address space for all the generated code.
14246
14247 Tue Nov 28 20:04:34 GMT 2006 Paolo Molaro <lupus@ximian.com>
14248
14249         * exceptions-arm.c: workaround bugs in the libc definition
14250         of struct ucontext.
14251
14252 Mon Nov 27 15:13:41 CET 2006 Paolo Molaro <lupus@ximian.com>
14253
14254         * inssel.brg: fixes from me and Mark Mason.
14255
14256 2006-11-23  Dick Porter  <dick@ximian.com>
14257
14258         * wapihandles.c (mini_wapi_seminfo): No need to adjust the counter
14259         semaphore display now we've fixed the initial value
14260
14261 Wed Nov 22 11:04:37 CET 2006 Paolo Molaro <lupus@ximian.com>
14262
14263         * inssel.brg: partially revert the last change to fix the build.
14264
14265 2006-11-21  Mark Mason  <mason@broadcom.com>
14266
14267         * inssel.brg: Add and use compare-and-branch macros to support
14268         architectures that do not have condition code registers (ie. MIPS).
14269         * *-mips.{c,brg,md}: Fix copyright statements
14270
14271 2006-11-20  Mark Mason  <mason@broadcom.com>
14272
14273         * Makefile.am: remove mini-codegen.c from list of MIPS sources
14274         * mini.c: Allow GET_CONTEXT to be specified by the arch port
14275         * mini.h: Added declaration for mono_print_ins()
14276         * mini-codegen.c: added ins_spec initializer for MIPS
14277         * mini-codegen.c (mono_call_inst_add_outarg_reg): added asserts for
14278         vreg to be virtual and hreg to be non-virtual.
14279         * mini-codegen.c (mono_spillvar_offset): assert if MIPS - spilling
14280         is not yet working/implemented correctly.
14281         * mini-codegen.c (print_ins): rename to mono_print_ins(), make
14282         non-static, fixup calls to print_ins() from other parts in the file.
14283
14284 2006-11-20  Mark Mason  <mason@broadcom.com>
14285
14286         * basic-calls.cs: added tests for passing structures as arguments
14287         to calls.
14288
14289 Mon Nov 20 19:40:11 CET 2006 Paolo Molaro <lupus@ximian.com>
14290
14291         * inssel-long32.brg: optimize signed division by power of two.
14292
14293 Mon Nov 20 17:37:58 CET 2006 Paolo Molaro <lupus@ximian.com>
14294
14295         * mini-arm.c: added support for interworking with thumb code
14296         (mono must be still be built using the ARM instruction encoding).
14297
14298 2006-11-19  Miguel de Icaza  <miguel@novell.com>
14299
14300         * mini.c (type_from_op): Separate the conditions for OP_EQ as the
14301         verifier has different rules for it.   Fixes a few verifier issues
14302         in the test suite.
14303
14304         * mini-exceptions.c (mono_handle_native_sigsegv): Put the message
14305         at the end, so people know what happened.
14306
14307 Thu Nov 16 14:07:18 CET 2006 Paolo Molaro <lupus@ximian.com>
14308
14309         * brach-opts.c: in optimize_exception_target() make sure we
14310         are in a catch clause (fixes bug #79871).
14311
14312 Thu Nov 16 12:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
14313
14314         * jit-icalls.c, jit-icalls.h, mini-arm.c, mini.c:
14315         more soft-float support fixes.
14316
14317 Wed Nov 15 18:45:47 GMT 2006 Paolo Molaro <lupus@ximian.com>
14318
14319         * mini-arm.c, inssel-arm.brg: ABI fix for longs and doubles
14320         that are passed half on the stack and half in registers.
14321
14322 Wed Nov 15 17:00:27 CET 2006 Paolo Molaro <lupus@ximian.com>
14323
14324         * mini-ops.h, mini-arch.h, helpers.c, Makefile.am:
14325         more mips integration work from Mark E Mason 
14326         <mark.e.mason@broadcom.com>.
14327
14328 Wed Nov 15 16:34:03 CET 2006 Paolo Molaro <lupus@ximian.com>
14329
14330         * exceptions-mips.c, inssel-mips.brg, mini-mips.h,
14331         cpu-mips.md, inssel-long32-mips.brg, mini-mips.c,
14332         tramp-mips.c: added sources for the mips port, not
14333         integrated in the build yet. Contributed by
14334         Mark E Mason <mark.e.mason@broadcom.com>.
14335
14336 2006-11-14  Neale Ferguson <neale@sinenomine.net>
14337
14338         * mini-s390[x].c (is_regsize_var): Support PTR/FNPTR too.
14339
14340 Tue Nov 14 16:06:37 CET 2006 Paolo Molaro <lupus@ximian.com>
14341
14342         * Makefile.am, inssel-float.brg, inssel-softfloat.brg:
14343         put the soft-float rules in its own file since it seems to
14344         break s390 compilation.
14345
14346 Mon Nov 13 15:54:38 CET 2006 Paolo Molaro <lupus@ximian.com>
14347
14348         * mini-arm.c: fixed wrnings.
14349
14350 Fri Nov 10 19:18:32 CET 2006 Paolo Molaro <lupus@ximian.com>
14351
14352         * mini-arm.c, mini-arm.h, cpu-arm.md, inssel-float.brg,
14353         inssel-arm.brg: ARM support for soft-float.
14354
14355 Fri Nov 10 18:38:15 CET 2006 Paolo Molaro <lupus@ximian.com>
14356
14357         * mini.c, jit-icalls.c, jit-icalls.h: added first cut at handling
14358         loads and stores of 32 bit fp values.
14359
14360 2006-11-10  Zoltan Varga  <vargaz@gmail.com>
14361
14362         * mini-sparc.c (is_regsize_var): Support PTR/FNPTR too.
14363
14364         * tramp-sparc.c (mono_arch_patch_callsite): Fix this function so it actually
14365         works. Fixes #79852 and #79463.
14366
14367 Thu Nov 9 16:56:13 CET 2006 Paolo Molaro <lupus@ximian.com>
14368
14369         * mini.c, mini-codegen.c, jit-icalls.c, jit-icalls.h:
14370         more soft-float support WIP and fixes.
14371
14372 Wed Nov 8 16:40:02 CET 2006 Paolo Molaro <lupus@ximian.com>
14373
14374         * mini-arm.c: some VFP updates.
14375
14376 Tue Nov 7 19:45:51 CET 2006 Paolo Molaro <lupus@ximian.com>
14377
14378         * mini-exceptions.c: 0 is a valid local var offset in some
14379         architectures, don't assert (bug #78508).
14380
14381 Tue Nov 7 18:17:52 GMT 2006 Paolo Molaro <lupus@ximian.com>
14382
14383         * exceptions-arm.c: fixed off by one error in stack walk code.
14384
14385 Tue Nov 7 11:27:26 CET 2006 Paolo Molaro <lupus@ximian.com>
14386
14387         * mini.h, mini.c: more precise tracking of type load exceptions.
14388
14389 2006-11-03  Robert Jordan  <robertj@gmx.net>
14390
14391         * Makefile.am: [WIN32] Add monow.exe target.
14392         * driver.c: [WIN32] Don't detach the console when debugging.
14393         Fixes bug #79797.
14394         
14395 2006-10-30  Miguel de Icaza  <miguel@novell.com>
14396
14397         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Eliminate warning.
14398
14399 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
14400
14401         * aot-compiler.c (emit_method_info): Add a case missed earlier.
14402
14403         * driver.c (mini_regression): Fix --regression with AOT.
14404
14405         * aot-compiler.c (emit_method_info): Fix AOT on amd64.
14406
14407 2006-10-17  Zoltan Varga  <vargaz@gmail.com>
14408
14409         * mini.c (GET_CONTEXT): Correct the definition of this for sparc/linux.
14410
14411         * mini-sparc.h: Don't use sigaction on sparc/linux.
14412
14413         * exceptions-sparc.c: Call mono_arch_flush_icache () in a couple of places.
14414
14415         * mini-sparc.c (mono_sparc_flushw): Call mono_arch_flush_icache ().
14416
14417         * mini-exceptions.c: Add proper include files for getpid ().
14418
14419 2006-10-16  Zoltan Varga  <vargaz@gmail.com>
14420
14421         * aot-runtime.c (mono_aot_get_method): Change this to return the native code
14422         address instead of a MonoJitInfo* to avoid decoding the exception info for the
14423         method.
14424
14425         * aot-runtime.c aot-compiler.c: Use uint16 instead of uint32 entries in the
14426         name cache to reduce its size.
14427
14428         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
14429
14430 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
14431
14432         * mini-x86.c: Save/restore the current LMF structure more efficiently using
14433         the mono_lmf TLS variable.
14434
14435         * exceptions-x86.c (mono_arch_find_jit_info): Only access lmf->method in 
14436         trampoline lmf frames.  
14437
14438         * mini-sparc.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Define this on sparc as well.
14439
14440 2006-10-14  Zoltan Varga  <vargaz@gmail.com>
14441
14442         * mini-amd64.c: Save/restore the current LMF structure more efficiently using
14443         the mono_lmf TLS variable.
14444
14445         * mini-exceptions.c: Access the LMF structure through accessors.
14446
14447         * mini.c: Allow the backends the option for storing the lmf in a dedicated TLS 
14448         variable instead of in jit_tls->lmf.
14449
14450         * mini-x86.c mini-amd64.c: Update after lmf->lmf_addr name change.
14451         
14452         * exceptions-amd64.c (mono_arch_find_jit_info): Only access lmf->method in 
14453         trampoline lmf frames.
14454
14455         * mini-amd64.c (mono_arch_emit_prolog): Do not set lmf->method as it is not needed.
14456
14457 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
14458
14459        * mini.c trace.c mini-x86.c: Revert these too.
14460         
14461        * mini.c trace.c mini-x86.c: Remove warning workarounds after the mono_type_size ()
14462        signature change.
14463
14464 Tue Oct 10 11:35:20 CEST 2006 Paolo Molaro <lupus@ximian.com>
14465
14466         * genmdesc.c: removed now dead code.
14467
14468 2006-10-09  Robert Jordan <robertj@gmx.net>
14469
14470         * mini.c: Disable the CrashReporter on MacOS X; Fixes #74869
14471
14472 Mon Oct 9 17:06:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
14473
14474         * mini.h: do not leave gaps in the opcode values.
14475
14476 Mon Oct 9 16:08:51 CEST 2006 Paolo Molaro <lupus@ximian.com>
14477
14478         * jit-icalls.h: flag functions as internal here, too.
14479
14480 Mon Oct 9 15:58:18 CEST 2006 Paolo Molaro <lupus@ximian.com>
14481
14482         * mini.h, aliasing.h, declsec.h, regalloc.h, trace.h: mark internal
14483         functions with the internal attribute.
14484
14485 Mon Oct 9 15:52:45 CEST 2006 Paolo Molaro <lupus@ximian.com>
14486
14487         * aot-compiler.c: fclose the file descriptor in the profile read loop.
14488
14489 Fri Oct 6 16:01:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
14490
14491         * mini.c, jit-icalls.c, inssel-float.brg: beginnings of support
14492         for soft-float.
14493
14494 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
14495
14496         * mini-x86.c (emit_load_volatile_arguments): New function to handle arguments of
14497         tail calls as on other platforms.
14498
14499         * mini.c (mono_method_to_ir): Fix a few tailcall problems. Fixes #79557.
14500
14501         * iltests.il: Add a few tailcall tests.
14502
14503 Tue Oct 3 16:33:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
14504
14505         * driver.c: fix loop for old compilers (bug #79521).
14506
14507 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
14508
14509         * mini-exceptions.c (ves_icall_get_trace): Remove debug printf.
14510
14511         * aot-runtime.c (mono_aot_get_class_from_name): Avoid a memory allocation.
14512
14513         * aot-compiler.c: Add a new option 'metadata-only' to only emit the cached
14514         metadata without any code.
14515
14516         * mini-exceptions.c (mono_handle_native_sigsegv): Add some code to print out
14517         more precise debugging information using gdb.
14518
14519 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
14520
14521         * inssel-ia64.brg: Make the helper methods static.
14522
14523 Thu Sep 28 16:40:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
14524
14525         * inssel-x86.brg: make the helper methods static.
14526
14527 Thu Sep 28 16:31:32 CEST 2006 Paolo Molaro <lupus@ximian.com>
14528
14529         * inssel-amd64.brg, mini-amd64.c: small cleanup, use inst_call.
14530
14531 Thu Sep 28 15:36:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
14532
14533         * mini.c: updates for monoburg changes.
14534         * inssel.brg: make a few helper functions static as they should.
14535
14536 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
14537
14538         * Makefile.am: Move mini-codegen.c to common_sources.
14539
14540 Wed Sep 27 15:07:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
14541
14542         * mini.h: instroduce inst_call in MonoInst for use in OUTARG
14543         instructions.
14544         * Makefile.am, cpu-g4.md, inssel-ppc.brg, mini-codegen.c, mini-ppc.c,
14545         mini-ppc.h: port to use the common local register allocator.
14546
14547 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
14548
14549         * mini.h: Remove the comment too then.
14550
14551 Tue Sep 26 14:02:58 CEST 2006 Paolo Molaro <lupus@ximian.com>
14552
14553         * mini.h: put back backend.data which is to be used shortly and
14554         doesn't increase the size of MonoInst. If any 64 bit arch aligned
14555         pointers on 4 byte boundaries it'd have much bigger issues running
14556         and you can ifdef it out anyway.
14557
14558 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
14559
14560         * mini.h (MonoInst): Remove backend.data field since it is unused and increases
14561         MonoInst size by 4 bytes on 64 bit machines.
14562
14563 Tue Sep 26 11:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
14564
14565         * *.{c,h,brg}: long due removal of the unused field in MonoInst and
14566         replacement with more meaningful field names. Arch maintainers, please
14567         check the assigned names are good enough for your arch.
14568
14569 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
14570
14571         * cpu-ia64.md mini-ia64.c inssel-ia64.brg mini-ops.h: Get rid of the 
14572         OP_IA64_FETCHADD opcodes, use OP_ATOMIC_ADD_IMM_NEW opcodes instead.
14573
14574 Mon Sep 25 11:05:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
14575
14576         * mini.h, driver.c, optflags-def.h, Makefile.am: reduce runtime
14577         relocations and memory requirements, put the optimization flags
14578         definitions in their own file.
14579
14580 2006-09-24  Zoltan Varga  <vargaz@gmail.com>
14581
14582         * jit-icalls.c (mono_helper_stelem_ref): Remove this unused helper function.
14583
14584         * mini.c (mini_init): Remove reference to mono_helper_stelem_ref.
14585
14586 2006-09-22  Zoltan Varga  <vargaz@gmail.com>
14587
14588         * mini-amd64.c (add_valuetype): Fix an uninitialized memory issue.
14589
14590 Thu Sep 21 19:06:09 CEST 2006 Paolo Molaro <lupus@ximian.com>
14591
14592         * inssel.brg: use the correct function to get the size of an item
14593         in an array, given an element class.
14594         * aot-compiler.c: do not access class->class_size directly.
14595
14596 Thu Sep 21 12:10:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
14597
14598         * mini.h, debug-mini.c: added a debugging function to print
14599         info about local variables and arguments in a jitted method.
14600
14601 2006-09-20  Zoltan Varga  <vargaz@gmail.com>
14602
14603         * mini-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
14604
14605         * exceptions-ia64.c: Fix some problems reported by Bill Seurer <seurer@us.ibm.com>.
14606
14607 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
14608
14609         * mini-ia64.c (mono_arch_call_opcode): Avoid using the same loop index in the
14610         inner and outer loops when passing vtypes.
14611
14612 Tue Sep 19 17:53:40 CEST 2006 Paolo Molaro <lupus@ximian.com>
14613
14614         * mini-ppc.c: take into account the cpu errata for cache flushing
14615         which caused some random errors (bug #79381).
14616
14617 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
14618
14619         * mini-amd64.c (mono_arch_emit_exceptions): Emit the call to 
14620         mono_arch_throw_corlib_exception using emit_call () too. Fixes #79271.
14621
14622 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
14623
14624         * aot-runtime.c (load_aot_module): Return immeditely if the AOT module was already
14625         loaded.
14626
14627         * exceptions-amd64.c (gregs_from_ucontext): Apply another patch from the
14628         freebsd ports tree.
14629
14630         * mini-amd64.c (emit_call): Avoid near calls on freebsd.
14631         (mono_arch_patch_code): Remove the unused handling of MONO_PATCH_INFO_CLASS_INIT.
14632
14633         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix check for 32 bitness of
14634         displacement.
14635
14636 2006-09-13  Zoltan Varga  <vargaz@gmail.com>
14637
14638         * aot-runtime.c (load_aot_module_from_cache): Fix PPC build.
14639
14640 2006-09-12  Zoltan Varga  <vargaz@gmail.com>
14641
14642         * mini.c (UNVERIFIED): Add a 'break-on-unverified' MONO_DEBUG option so this 
14643         macro does not have to be changed during debugging.
14644
14645         * 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>.
14646
14647         * cpu-pentium.md: Rename this to cpu-x86.md for consistency with other platforms.
14648
14649         * Makefile.am mini-x86.c mini-codegen.c: Rename pentium_desc to x86_desc.
14650         
14651         * mini.c (mini_get_ldelema_ins): Allow ldelema2d optimization if 
14652         MONO_ARCH_NO_EMULATE_MUL is defined.
14653
14654         * mini-ia64.h (MONO_ARCH_CALLEE_FREGS): Reserve f33 for use by instructions.
14655
14656         * mini-ia64.h: Define MONO_ARCH_NO_EMULATE_MUL.
14657
14658         * mini-ia64.c: Implement CEE_MUL based on gcc emitted code.
14659
14660         * mini-ia64.c (mono_arch_lowering_pass): Optimize store_membase_imm with offset==0.
14661         
14662 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
14663
14664         * mini-x86.h mini-amd64.h mini-exceptions.c: Move the bsd specific MAP_ANON
14665         stuff to mini-exceptions.c where it is used.
14666
14667         * mini-sparc.c (mono_arch_setup_jit_tls_data): Remove the duplicate altstack
14668         setup code, the real one is in mini-exceptions.c.
14669
14670         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Move all dependencies on the
14671         layout of ucontext_t to helper functions in exceptions-amd64.c, as on x86. Add
14672         some changes from the freebsd ports tree.
14673
14674         * mini-amd64.h exceptions-amd64.c: Fix the amd64 build. Get rid of the SC_
14675         constants.
14676         
14677         * mini-amd64.h: Freebsd has MAP_ANON instead of MAP_ANONYMOUS.
14678
14679 Mon Sep 11 13:18:55 CEST 2006 Paolo Molaro <lupus@ximian.com>
14680
14681         * mini.c: on Linux, check for /proc to be mounted
14682         (bug# 79351, novell bug#201204).
14683
14684 Mon Sep 11 13:10:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
14685
14686         * mini.c: handle cases where pthread_attr_getstack() behaves
14687         incorrectly (bug #78096).
14688
14689 Mon Sep 11 11:31:10 BST 2006 Paolo Molaro <lupus@ximian.com>
14690
14691         * mini-arm.c: support larger stack frames (bug #79272).
14692
14693 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
14694
14695         * aot-runtime.c (mono_aot_get_class_from_name): Remove a debug printf.
14696
14697         * aot-compiler.c: Add a hash table to the AOT file mapping class names to typedef 
14698         tokens.
14699
14700         * aot-runtime.c (mono_aot_get_class_from_name): New function used by 
14701         mono_class_from_name () to find a class from its name.
14702
14703         * mini.c (mini_init): Register mono_aot_get_class_from_name () with the runtime.
14704
14705 2006-09-07  Zoltan Varga  <vargaz@gmail.com>
14706
14707         * mini-amd64.c (emit_call): Avoid strstr () call if possible.
14708
14709 2006-09-05  Kornel Pal  <kornelpal@gmail.com>
14710
14711         * Makefile.am: Renamed mono-1.dll to mono.dll. (-avoid-version)
14712
14713 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
14714
14715         * mini.c (mono_icall_get_wrapper): Fix a race condition on initializing
14716         callinfo->trampoline.
14717
14718         * mini-amd64.c (emit_call): Special case calls to the vararg array icalls. Hopefully
14719         fixes #79271.
14720         (mono_arch_patch_code): Add some debug code to help track down similar failures in the
14721         future.
14722
14723 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
14724
14725         * aot-runtime.c (mono_aot_plt_resolve): Add an assert.
14726
14727 2006-09-02  Zoltan Varga  <vargaz@gmail.com>
14728
14729         * tramp-x86.c (mono_arch_create_specific_trampoline): Don't increase
14730         stats.method_trampolines, it is already done by the generic trampoline code.
14731
14732         * tramp-amd64.c (mono_arch_create_specific_trampoline): Ditto.
14733         
14734 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
14735
14736         * mini.c: Remove some references to mono_compile_aot, and use cfg->compile_aot instead.
14737
14738         * aot-runtime.c: Add some tweaks to the MONO_AOT_CACHE functionality.
14739
14740         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix a FIXME.
14741
14742         * mini.c (print_jit_stats): Print mscorlib mempool size too.
14743         
14744         * mini.c (print_jit_stats): Print new stats.
14745
14746         * *-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
14747
14748 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
14749
14750         * mini.c (mini_get_ldelema_ins): Fix verifier error when calling
14751         Address on two dimensional arrays. Fixes #78729.
14752
14753         * mini.h (MonoCompile): Add a 'skip_visibility' field.
14754
14755         * mini.c (method_to_ir): Disable visibility checks if skip_visibility is set on
14756         a method.
14757
14758         * mini-amd64.c (mono_arch_emit_exceptions): Fix assertion introduced by the last change.
14759
14760         * mini.c (mono_runtime_cleanup_handlers): Clean up signal handlers on unix. Fixes
14761         #79130.
14762         
14763         * mini.c (handle_array_new): Applied patch from "briaeros007". Fix
14764         a race condition.
14765         (mini_get_ldelema_ins): Ditto.
14766
14767 2006-08-30  Zoltan Varga  <vargaz@gmail.com>
14768
14769         * mini-amd64.c (mono_arch_emit_exceptions): Align fp constants to 16 bytes.
14770         (mono_arch_output_basic_block): Avoid unaligned accesses in FNEG implementation. 
14771         Fixes #79213.
14772
14773 2006-08-29 Neale Ferguson <neale@sinenomine.net>
14774
14775         * mini-s390.c, mini-s390x.c: Fix VARARG case processing with 0 arguments. Add
14776         mono_arch_get_patch_offset as a dummy entry point to allow successful link. 
14777
14778         * exceptions-s390x.c: Cosmetic change.
14779
14780         * tramp-s390.c: Fix warning.
14781
14782         * cpu-s390.md: Correct length of mul_imm.
14783
14784 Wed Aug 23 19:24:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
14785
14786         * aot-compiler.c: added binary writer with ELF backend
14787         implementation (only on Linux/x86 for now).
14788
14789 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
14790
14791         * Makefile.am: Don't run net 2.0 AOT tests.
14792
14793         * aot-compiler.c (compile_method): Skip methods with tail calls as well.
14794         (mono_compile_assembly): Skip net 2.0 assemblies as well.
14795
14796         * aot-runtime.c (load_patch_info): Fix an uninitialized memory error.
14797
14798 Fri Aug 18 19:38:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
14799
14800         * aot-compiler.c: simplified and refactored the asm-writing code
14801         to allow different backends.
14802
14803 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
14804
14805         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
14806
14807         * aot-compiler.c aot-runtime.c: Reorg the GOT slot allocation code a 
14808         little. Share patches of type TYPE_FROM_HANDLE as well.
14809
14810         * mini.c (mono_patch_info_equal): New helper function.
14811         (mono_patch_info_hash): Ditto.
14812
14813         * aot-compiler.c (emit_method_code): Fix s390 build.
14814
14815         * mini.c (mono_allocate_stack_slots_full): Fix yet another place where byref
14816         is not handled because it is stored as a flag and not as a type ctor. Fixes
14817         #79016.
14818
14819 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
14820
14821         * aot-compiler.c: Fix computation of GOT slot statistics.
14822         
14823         * aot-compiler.c aot-runtime.c: Implement sharing of GOT slots for classes/fields.
14824         Also remove support for not PIC AOT.
14825
14826         * mini.h: Bump AOT file format version.
14827
14828         * objects.cs: Add a test for #78990.
14829
14830         * mini-x86.c (mono_arch_output_basic_block): Applied patch from Peter Dettman
14831         (peter.dettman@iinet.net.au). Fixes #79087.
14832
14833         * basic-long.cs: Add a test for the above.
14834
14835 2006-08-16  Zoltan Varga  <vargaz@gmail.com>
14836
14837         * aot-compiler.c (get_got_offset): Add a cache for GOT entries, not yet used.
14838         
14839         * aot-compiler.c (get_plt_index): Add a cache for wrappers too. Simplify the
14840         code somewhat.
14841
14842 2006-08-15  Zoltan Varga  <vargaz@gmail.com>
14843
14844         * mini.c (mini_init): Fix registration of idiv/imul opcodes which can throw
14845         exceptions.
14846
14847 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
14848
14849         * mini.c: Don't verify COM proxy invoke calls
14850         
14851
14852 2006-08-10  Dick Porter  <dick@ximian.com>
14853
14854         * wapihandles.c (mini_wapi_seminfo): More info, to help track down
14855         which process is holding semaphores locked.
14856
14857 2006-08-08  Zoltan Varga  <vargaz@gmail.com>
14858
14859         * mini-ia64.c mini-amd64.c: Fix #79027.
14860
14861         * mini-sparc.c (mono_arch_call_opcode): Fix the previous patch.
14862
14863         * mini-sparc.c (mono_arch_call_opcode): Fix #79027.
14864
14865         * mini-x86.c (mono_arch_call_opcode): Handle the case where there are no
14866         implicit arguments in a vararg call. Fixes #79027.
14867
14868 2006-08-07  Zoltan Varga  <vargaz@freemail.hu>
14869
14870         * mini.c (mono_get_element_address_signature): Use CDECL calling convention on windows. Fixes #78969.
14871         (mono_get_array_new_va_signature): Ditto.
14872
14873 2006-08-05  Zoltan Varga  <vargaz@gmail.com>
14874
14875         * aot-runtime.c: Call init_plt lazily.
14876
14877         * inssel-long.brg: Fix unsigned long->int conversion.
14878
14879         * aot-runtime.c (init_plt): Remove a redundant make_writable () call.
14880
14881         * aot-compiler.c aot-runtime.c: Reorganize the file structure in the amd64 case so
14882         that most data is now in the .rss/.data section.
14883
14884 2006-08-04  Zoltan Varga  <vargaz@gmail.com>
14885
14886         * aot-compiler.c: Correct the computation of the 'direct-calls' statistic.      
14887
14888         * aot-compiler.c: Print the number of methods without GOT slots as a statistics.
14889
14890         * aot-compiler.c aot-runtime.c tramp-amd64.c: Resurrect amd64 AOT support.
14891
14892         * tramp-amd64.c (mono_arch_patch_callsite): Fix a warning.
14893
14894         * jit-icalls.c (mono_helper_compile_generic_method): Unbox vtypes since this is a
14895         virtual call. Fixes #79010.
14896
14897         * mini.c (mono_method_to_ir): Pass an additional out arg to compile_generic_method 
14898         and use the result as the this argument in the real call.
14899
14900         * generics.2.cs: Add a new test for #79010.
14901         
14902 2006-08-03  Zoltan Varga  <vargaz@gmail.com>
14903
14904         * mini-x86.c: Fix a warning.
14905
14906         * aot-compiler.c: Add a bunch of statistics.
14907
14908         * mini.c (inline_method): Disable inlining in out-of-line bblocks.
14909
14910 2006-08-02  Zoltan Varga  <vargaz@gmail.com>
14911
14912         * mini-arch.h Makefile.am mini-ops.h mini-codegen.c: More alpha updates.
14913
14914 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
14915
14916         * 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>.
14917
14918 2006-07-13  Miguel de Icaza  <miguel@novell.com>
14919
14920         * mini.c (mono_method_to_ir): Obtain the original method in the
14921         CIL stream and use this to perform validation.
14922
14923         Fixed: #78816
14924
14925 2006-07-19  Zoltan Varga  <vargaz@gmail.com>
14926
14927         * mini-x86.c (mono_arch_get_argument_info): Fix a warning.
14928         (mono_arch_call_opcode): Ditto.
14929
14930         * mini.c (mono_method_to_ir): Clear ins_flag at the end of CEE_CALL. Fixes
14931         #78826.
14932
14933         * mini.c (mono_patch_info_dup_mp): New helper function.
14934         
14935         * aot-compiler.c (compile_method): Fix some of the memory allocated during
14936         compilation. Fixes #78827.
14937
14938 2006-07-18  Kornel Pal  <kornelpal@gmail.com>
14939
14940         * declsec.c: Use original security informations for
14941           MONO_WRAPPER_MANAGED_TO_MANAGED.
14942
14943 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
14944
14945         * mini.c: Allow Com Interop methods/classes and
14946         don't verify COM wrapper calls
14947         
14948
14949 2006-07-13  Zoltan Varga  <vargaz@gmail.com>
14950
14951         * inssel-long32.brg: Fix long->i4 checked conversion.
14952
14953         * exceptions.cs: Add a test for the above.
14954
14955 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
14956
14957         * mini-exceptions.c (mono_setup_altstack): Fix a memory leak.
14958
14959         * mini.c: Applied patch from Joachim Ante (joe@otee.dk). Fix some shutdown 
14960         leaks.
14961
14962         * helpers.c (mono_disassemble_code): Avoid using fixed temporary files. Fixes
14963         #78775.
14964
14965 2006-07-03  Zoltan Varga  <vargaz@gmail.com>
14966
14967         * mini.c: Fix solaris/x86 exception handling.
14968
14969         * Makefile.am: Get rid of $(ICU_LIBS).
14970
14971 2006-07-02  Zoltan Varga  <vargaz@gmail.com>
14972
14973         * mini-exceptions.c: Fix handling of unhandled SIGSEGV exceptions on ia64.
14974         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Use MONO_INIT_CONTEXT_FROM_CURRENT.
14975         (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): Ditto.
14976
14977         * mini-ia64.h (MONO_CONTEXT_SET_FUNC): New macro.
14978
14979         * mini-exceptions.c (mono_handle_native_sigsegv): Prevent infinite loops if
14980         this function causes a SIGSEGV.
14981
14982 2006-06-22  Zoltan Varga  <vargaz@gmail.com>
14983
14984         * mini.c: Remove unused solaris/x86 includes.
14985
14986 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
14987
14988         * jit.h: Add G_BEGIN_DECLS/G_END_DECLS.
14989
14990 2006-06-20  Jb Evain  <jbevain@gmail.com>
14991
14992         * cpu-g4.md: fix max length of start_handler instruction.
14993
14994 2006-06-20  Massimiliano Mantione  <massi@ximian.com>
14995         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78656.
14996
14997 2006-06-16  Massimiliano Mantione  <massi@ximian.com>
14998         * ssa.c: Fixed bug 78653 for SSA based deadce.
14999         * mini.h: added MONO_INST_DEFINITION_HAS_SIDE_EFFECTS flag go
15000         MonoInst.flags, used in SSA based deadce.
15001         * aliasing.c: Fixed bug 78653 for "fastpath" deadce.
15002         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78653.
15003
15004 Thu Jun 15 16:52:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
15005
15006         * tramp-ppc.c: don't use malloc () for trampoline code, sometimes
15007         it can end up using non executable memory on ppc64 systems
15008         running ppc32 userspace (fix from Johannes Berg).
15009
15010 2006-06-14  Dick Porter  <dick@ximian.com>
15011
15012         * wapihandles.c: Fix a bunch of signed/unsigned warnings from gcc
15013         4.1.1
15014
15015 2006-06-13  Massimiliano Mantione  <massi@ximian.com>
15016         * mini.c: Made so that inline is locally disabled if it would
15017         trigger a .cctor, because too many apps depend on this behavior
15018         (which seems to be also the one of the MS CLR).
15019
15020 2006-06-13  Zoltan Varga  <vargaz@gmail.com>
15021
15022         * mini-amd64.c (mono_emit_stack_alloc): Fix initialization of localloc'ed memory.
15023         No idea why this worked before.
15024
15025         * branch-opts.c (mono_branch_optimize_exception_target): Avoid branches
15026         which branch to outer exception clauses since they could skip the
15027         inner finally clauses. Fixes #78633.
15028
15029         * exceptions.cs: Add a test for the above.
15030
15031         * mini.c (merge_basic_blocks): Nullify the branch at the end of the first bb.
15032         Fixes #78629.
15033
15034         * iltests.il: Add a test for the above.
15035
15036 2006-06-12  Zoltan Varga  <vargaz@gmail.com>
15037
15038         * mini.c (remove_block_if_useless): Do not remove the bblock immediately
15039         after the end of a try bblock, to prevent asserts in mini_method_compile ().
15040
15041         * iltests.il: Add a test for the above.
15042
15043 2006-06-10  Zoltan Varga  <vargaz@gmail.com>
15044
15045         * mini-ia64.c (mono_arch_lowering_pass): Remove some code duplication.
15046         
15047         * mini-ia64.c inssel-ia64.brg: Implement the new net 2.0 Interlocked.Add
15048         methods as instrinsics.
15049
15050 2006-06-09  Wade Berrier <wberrier@novell.com>
15051
15052         * Makefile.am: Fix sources list for svn rename so that make dist succeeds
15053         (simple-cee-ops.h ssapre-mini-ops.h)
15054
15055 2006-06-09  Neale Ferguson <neale@sinenomine.net>
15056
15057         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on s390/s390x.
15058         * mini-s390x.c, mini-s390.c: Correct ATOMIC operations (incorrect register for CS
15059         instruction).
15060         * mini-s390x.h, mini-s390.h: Simplify MCONTEXT_GET_BP.
15061         * cpu-s390x.md: Fix max. length values for a couple of instructions.
15062
15063 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
15064
15065         * mini-exceptions.c: Minor fix for building mono in Visual Studio.
15066
15067 2006-06-08  Massimiliano Mantione  <massi@ximian.com>
15068
15069         * ssapre-cee-ops.h: Renamed as "simple-cee-ops.h"
15070         * simple-cee-ops.h: Was "ssapre-cee-ops.h" (renamed).
15071         * ssapre-mini-ops.h: Renamed as "simple-mini-ops.h"
15072         * simple-mini-ops.h: Was "ssapre-mini-ops.h" (renamed).
15073         * local-propagation.c: In mono_cprop_invalidate_values use a whitelist
15074         of opcodes, so that bug 78549 should not happen again.
15075         * ssapre.c: Updated to use the renamed files.
15076
15077 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
15078
15079         * mini-amd64.c (mono_arch_output_basic_block): Fix a wrong reg-reg move 
15080         in OP_ATOMIC_EXCHANGE_I4.
15081
15082 2006-06-07  Wade Berrier <wberrier@novell.com>
15083
15084         * tramp-s390.c: Fix s390 build (add missing pointer declarations 
15085         in mono_debugger_create_notification_function)
15086
15087 2006-06-06  Zoltan Varga  <vargaz@gmail.com>
15088
15089         * mini.c (NEW_AOTCONST_TOKEN): Fix amd64 build.
15090         
15091         * mini.c (type_from_stack_type): Disable some changes which do not
15092         seem to work.
15093
15094         * driver.c: Reenable opts.
15095
15096         * mini.h (MonoStackSlot): New structure to keep track of the verification state
15097         of the evaluation stack.
15098         
15099         * mini.h (MonoBasicBlock): Add a 'stack_state' field to keep track of the
15100         evaluation stack trace at entry to the bblock.
15101
15102         * mini.c (merge_stacks): New function to perform verification of stack merges.
15103         Turned off by default.
15104
15105         * mini.c: Fill up ins->klass for instructions whose type is STACK_OBJ or
15106         STACK_MP.
15107         
15108 2006-06-06  Massimiliano Mantione  <massi@ximian.com>
15109
15110         * local-propagation.c: Fixed bug 78549.
15111
15112 2006-06-04  Zoltan Varga  <vargaz@gmail.com>
15113
15114         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on ia64.
15115
15116 2006-06-02  Miguel de Icaza  <miguel@novell.com>
15117
15118         * tramp-sparc.c, tramp-ppc.c, tramp-s390.c, tramp-s390x.c,
15119         tramp-arm.c, tramp-ia64.c
15120         (mono_debugger_create_notification_function): Update signature to
15121         new signature and use new protocol for creating the notification
15122         function.  
15123
15124         Should fix the build.
15125
15126 2006-06-02  Geoff Norton  <gnorton@customerdna.com>
15127
15128         * exceptions-ppc.c (mono_jit_walk_stack)
15129         (ves_icall_get_frame_info): Fix the build
15130
15131 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
15132
15133         * mini.c (mono_set_defaults): Fix the handling of -O=-all.
15134
15135 2006-05-31  Raja R Harinath  <rharinath@novell.com>
15136
15137         * il2tests.2.il: New file for generics CIL tests.  Add test for
15138         #78019.
15139         * Makefile.am: Update.
15140
15141         Fix #78019
15142         * mini.c (mono_method_to_ir): Don't apply box+brtrue optimization
15143         to nullable types.
15144
15145 2006-05-30  Massimiliano Mantione  <massi@ximian.com>
15146
15147         * aliasing.c: Fixed bug 78311.
15148
15149 2006-05-29  Martin Baulig  <martin@ximian.com>
15150
15151         * mini-exceptions.c (mono_find_jit_info): When computing the
15152         native offset, check whether we're actually inside the method's
15153         code; call mono_debug_print_stack_frame() to format the frame.
15154         (ves_icall_System_Exception_get_trace): Call
15155         mono_debug_print_stack_frame() to format the stack frame.
15156         (ves_icall_get_trace): Update to the new debugging API.
15157         (mono_jit_walk_stack_from_ctx): Likewise.
15158         (ves_icall_get_frame_info): Likewise.
15159
15160         * mini.c (get_method_from_ip): Use the new debugging API.
15161         (mono_print_method_from_ip): Likewise.
15162
15163         * exceptions-ppc.c
15164         (mono_jit_walk_stack): Use the new debugging API.
15165         (ves_icall_get_frame_info): Likewise.   
15166
15167 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
15168
15169         * mini-amd64.c (mono_arch_output_basic_block): Fix MONO_PROFILE_COVERAGE.
15170
15171 2006-05-25  Massimiliano Mantione  <massi@ximian.com>
15172
15173         * mini.c: Added "limitator" to inline for debugging.
15174
15175 2006-05-24  Martin Baulig  <martin@ximian.com>
15176
15177         * debug-debugger.c (mono_debugger_init): Create a private,
15178         malloc()-based code manager for the notification function and
15179         intentionally leak it on exit.  This fixes the crash-on-exit race
15180         condition.
15181
15182         * tramp-amd64.c
15183         (mono_debugger_create_notification_function): Added
15184         `MonoCodeManager *' argument.
15185
15186         * tramp-x86.c
15187         (mono_debugger_create_notification_function): Added
15188         `MonoCodeManager *' argument.
15189
15190 2006-05-23  Massimiliano Mantione  <massi@ximian.com>
15191
15192         * aliasing.c: Fixed 64 bit issue.
15193         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
15194         default since all known bugs are fixed (one more time!).
15195
15196 Tue May 23 13:47:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
15197
15198         * mini.c: write barrier support.
15199
15200 2006-05-23  Martin Baulig  <martin@ximian.com>
15201
15202         * debug-debugger.c: Revert Paolo's change.  Add comment and #error
15203         check at the top of the file.
15204
15205 Sun May 21 12:22:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
15206
15207         * debug-debugger.c: fix the build. Again. Hopefully Martin will stop
15208         reverting changes without reason and without changelog entries.
15209
15210 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
15211
15212         * mini-sparc.c (mono_arch_output_basic_block): Add support for large stack offets
15213         to a few opcodes. Fixes #78439.
15214
15215         * mini-sparc.c: Rename mono_sparch_break () to mono_arch_break () to improve
15216         consistency with other archs.
15217
15218         * mini-ia64.c (mono_arch_emit_prolog): Remove debug stuff left in by mistake.
15219
15220 Wed May 17 18:07:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
15221
15222         * debug-debugger.c: fix the build.
15223
15224 2006-05-17  Martin Baulig  <martin@ximian.com>
15225
15226         * debug-debugger.c
15227         (debugger_thread_vtable): Moved here from ../metadata/threads.c.
15228         (debugger_init_threads): Formerly known as mono_debugger_init_threads().
15229         (debugger_finalize_threads): Formaly known as mono_debugger_finalize_threads().
15230         (debugger_attach): Call GC_mono_debugger_add_all_threads().
15231
15232 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
15233
15234         * mini.c (mini_init): Call pthread_attr_destroy () to fix a small memory leak.
15235
15236 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
15237
15238         * mini-x86.c (mono_arch_instrument_epilog): Fix handling of 
15239         MONO_TYPE_GENERICINST.
15240         
15241         * mini-amd64.c (mono_arch_instrument_epilog): Fix handling of 
15242         MONO_TYPE_GENERICINST.
15243
15244 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
15245
15246         * mini-x86.c (mono_arch_get_vcall_slot_addr): Add a missing call sequence. Fixes
15247         #78325.
15248
15249 2006-05-08  Zoltan Varga  <vargaz@gmail.com>
15250
15251         * mini.c (mono_create_jump_trampoline): Allocate MonoJitInfo from the domain
15252         mempool.
15253         (mono_jit_free_method): Remove the method from jump_trampoline_hash as well.
15254
15255 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
15256
15257         * mini.c (mini_cleanup): Applied patch from Joachim Ante (joe@otee.dk). Call
15258         mono_trace_cleanup ().
15259
15260         * iltests.il: Fix problem with the newly added test.
15261
15262         * mini-codegen.c (mono_local_regalloc): When changing the dreg of an instruction
15263         due to register constraints, free up the previous hreg. Fixes #78314.
15264
15265         * iltests.il: Add new test for #78314.  
15266
15267         * mini-x86.c (mono_arch_get_inst_for_method): Use OP_ATOMIC_ADD_NEW_I4 for
15268         Interlocked.Add. Fixes #78312.
15269
15270         * mini-amd64.c (mono_arch_get_inst_for_method): Ditto.
15271         
15272 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
15273
15274         * inssel.brg (mini_emit_virtual_call): Fix a warning.
15275
15276 2006-05-05  Martin Baulig  <martin@ximian.com>
15277
15278         * debug-mini.c (mono_debug_open_block): New method.
15279
15280         * mini-amd64.c
15281         (mono_arch_output_basic_block): Call mono_debug_open_block() at
15282         the beginning of each basic block.
15283
15284         * mini-x86.c
15285         (mono_arch_output_basic_block): Call mono_debug_open_block() at
15286         the beginning of each basic block.
15287
15288 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
15289
15290         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
15291         default until I understand why they break the build on amd64.
15292
15293 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
15294
15295         * mini.c (mini_cleanup): Call mono_cleanup ().
15296
15297         * mini.c (UNVERIFIED): New macro to make it easier to track down verification
15298         errors.
15299
15300 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
15301
15302         * aliasing.c: Fixed shameful cut&paste error that caused JIT crashes.
15303         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
15304         default since all known bugs are fixed, and I cannot reproduce bug
15305         77944... I'm asking Matt Hargett to test again after this commit.
15306
15307 2006-04-28  Massimiliano Mantione  <massi@ximian.com>
15308
15309         * mini-codegen.c: Fixed typo that thrashed inline.
15310
15311 2006-04-28  Zoltan Varga  <vargaz@gmail.com>
15312
15313         * dominators.c (compute_dominators): Avoid using a worklist since
15314         it is not correct in some cases. Instead, iterate over all bblocks as
15315         in the original paper. Fixes --compile-all -O=all System.Xml.dll.
15316
15317 2006-04-28  Miguel de Icaza  <miguel@novell.com>
15318
15319         * mini.c (mono_jit_compile_method_inner): Use
15320         mono_prepare_exception_from_error that resets the value
15321         internally.
15322
15323 2006-04-27  Miguel de Icaza  <miguel@novell.com>
15324
15325         * mini.c: Move the mini_loader_error_to_exception to metadata. 
15326         
15327 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
15328
15329         * aliasing.c: Fixed bug 78210.
15330
15331 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
15332
15333         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
15334         default until all their problems (or the ones they trigger) are fixed.
15335
15336 2006-04-26  Zoltan Varga  <vargaz@gmail.com>
15337
15338         * aot-runtime.c (mono_aot_get_method_from_token_inner): Fix the previous patch.
15339         
15340         * aot-runtime.c (mono_aot_get_method_from_token_inner): Mark the method
15341         as loaded only after resolving patches since that could invoke the same method.
15342
15343         * aot-runtime.c (mono_aot_plt_resolve): Fix ppc etc. builds.
15344
15345         * aot-compiler.c: Refactor mono_aot_compile_aot () into a bunch of smaller
15346         functions.
15347
15348         * aot-runtime.c (init_plt): Use a normal trampoline to transfer code to the
15349         AOT loader.
15350
15351         * aot-compiler.c (emit_plt): Pass the plt offset in %eax instead of on the
15352         stack.
15353
15354         * mini-trampolines.c (mono_aot_plt_trampoline): New trampoline to handle calls
15355         made from AOT code through the PLT table.
15356
15357         * mini-x86.h mini-amd64.h: Define MONO_ARCH_AOT_PLT_OFFSET_REG to the register
15358         holding the plt offset when a call is made to the aot plt trampoline.
15359         
15360 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
15361
15362         * aot-runtime.c aot-compiler.c cpu-amd64.md mini-amd64.c: Update parts of the 
15363         amd64 AOT support.
15364
15365         * Makefile.am (common_sources): Fix build breakage.
15366
15367         * aot-runtime.c aot-compiler.c: Reorganize the AOT code yet again: Make all
15368         calls through a jump table similar to the ELF PLT table. Avoid indirect calls for
15369         intra-assembly calls if possible.
15370         
15371         * tramp-*.c: Add new functions for patching/nullifying PLT entries.
15372
15373         * mini-trampolines.c: Handle PLT entries.
15374
15375         * mini.c: Avoid creating a GOT var for calls.
15376
15377         * jit-icalls.c (helper_ldstr_mscorlib): New helper function for loading strings
15378         from mscorlib code.
15379
15380         * jit-icalls.c (helper_newobj_mscorlib): New helper function to create objects
15381         from mscorlib code.
15382
15383         * mini.c (mono_method_to_ir): Use the new helper functions in throw bblocks in
15384         AOT code.       
15385
15386         * mini.h: Bump AOT file format version.
15387         
15388         * mini.c (get_basic_blocks): Fix the calculation of bb->out_of_line so it
15389         covers more cases.
15390
15391 2006-04-25  Martin Baulig  <martin@ximian.com>
15392
15393         * driver.c: Disable copyprop, consprop and inline when running
15394         inside the debugger.
15395
15396 2006-04-25  Martin Baulig  <martin@ximian.com>
15397
15398         * debug-debugger.h (MonoDebuggerInfo): Replaced `get_thread_id'
15399         with `get_current_thread' and added `detach'.
15400         (MonoDebuggerMetadataInfo): Added `thread_size',
15401         `thread_tid_offset', `thread_stack_ptr_offset' and
15402         `thread_end_stack_offset'.
15403
15404 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
15405
15406         * aot.c Makefile.am: Split aot.c into two new files aot-compiler.c and 
15407         aot-runtime.c.
15408
15409         * inssel.brg (mini_emit_load_intf_reg_vtable): Use a new kind of AOT constant
15410         ADJUSTED_IID to avoid the need for adjusting the IID at runtime.
15411
15412         * mini.h (MonoJumpInfoType): Add MONO_PATCH_INFO_ADJUSTED_IID.
15413
15414         * mini.c (mono_resolve_patch_target): Handle ADJUSTED_IID.
15415
15416         * aot.c: Add support for ADJUSTED_IID.  
15417
15418 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
15419
15420         * aot.c (emit_method_order): Don't align method_order_end.
15421
15422         * inssel.brg (stmt): Fix interface calls in AOT code which got broken by
15423         the interface ID changes.
15424
15425 2006-04-21  Dick Porter  <dick@ximian.com>
15426
15427         * mini.c (mini_thread_cleanup): Clear the JIT TLS data when
15428         cleaning up a thread.  Fixes the new part of bug 77470.
15429
15430 2006-04-20  Geoff Norton  <gnorton@customerdna.com>
15431
15432         * mini-ppc.c: Call mono_jit_thread_attach when transitioning a native
15433         to managed wrapper.
15434                      
15435 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
15436
15437         * mini.h mini.c: Remove mono_type_to_ldind/stind () which are now in marshal.c.
15438         
15439         * mini.c (mono_runtime_install_handlers): Handle SIGABRT similarly to
15440         SIGSEGV. Fixes #78072.
15441
15442         * mini-exceptions.c (mono_handle_native_sigsegv): Add a 'signal' argument,
15443         unregister our SIGABRT handler.
15444
15445 2006-04-19  Massimiliano Mantione  <massi@ximian.com>
15446
15447         * mini.c: Disabled inline where it can alter the call stack in a
15448         way visible from managed code.
15449         * driver.c: enabled inline,consprop,copyprop,treeprop,deadce by
15450         default.
15451
15452 2006-04-16  Zoltan Varga  <vargaz@gmail.com>
15453
15454         * mini-amd64.c (mono_arch_emit_prolog): Attach the thread to the runtime as it is done
15455         on other platforms. Fixes #78089.
15456
15457 2006-04-13  Martin Baulig  <martin@ximian.com>
15458
15459         * driver.c: Also check a `MONO_INSIDE_MDB' environment variable to
15460         determine whether we're inside the debugger.
15461
15462         * debug-debugger.h
15463         (MonoDebuggerMetadataInfo): Added all offsets from `MonoDefaults'.
15464
15465 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
15466
15467         * mini.c (mono_method_to_ir): Handle multiple LEAVE statements inside a single
15468         handler clauses. Fixes #78024.
15469
15470         * mini-sparc.c (mono_arch_output_basic_block): Handle large offsets
15471         in the CALL_MEMBASE opcodes. Fixes #78088.
15472         (mono_arch_get_vcall_slot_addr): Ditto.
15473
15474 2006-04-10  Martin Baulig  <martin@ximian.com>
15475
15476         * debug-debugger.c: The thread handling code has now been moved
15477         into ../metadata/threads.c.
15478
15479 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
15480
15481         * driver.c (mono_main): Fix --with-gc=none build.
15482
15483         * mini-codegen.c (mono_spillvar_offset): Improve alignment.
15484         (mono_spillvar_offset_float): Ditto.
15485         (mono_local_regalloc): Only do the OP_MOVE optimization if ins->dreg is a local
15486         hreg, not when its !global, since on ia64, there is a third category: stacked
15487         registers.      
15488
15489 Mon Apr 10 14:39:49 CEST 2006 Paolo Molaro <lupus@ximian.com>
15490
15491         * mini.c: set MonoInst->klass for load field address and a few other
15492         places.
15493
15494 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
15495
15496         * helpers.c (mono_disassemble_code): Emit debug info on amd64 as well.
15497
15498 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
15499
15500         * dominators.c (compute_dominators): Fix yet another bug which surfaced after
15501         the branch opt changes.
15502
15503 2006-04-06  Dick Porter  <dick@ximian.com>
15504
15505         * wapihandles.c (mini_wapi_semdel): Fix parameters in semctl () call.
15506         
15507         * wapihandles.c (mini_wapi_seminfo): 
15508         * driver.c (mono_main): Add semaphore info option
15509
15510 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
15511
15512         * dominators.c (compute_dominators): Fix a bug which surfaced after the recent
15513         branch optimization changes. Fixes #78009.
15514
15515 Wed Apr 5 16:40:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
15516
15517         * mini.c: ignore accessibility of methods in managed->native wrappers.
15518
15519 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
15520
15521         * mini.c (mini_cleanup): Call print_jit_stats () earlier since it accesses metadata.
15522         
15523         * mini.c (mini_cleanup): Free 'emul_opcode_map' as well.
15524
15525 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
15526
15527         * mini.c: Modify the branch optimizations to preserve the invariant that
15528         the entries inside the in_bb and out_bb arrays are unique.
15529         (mono_unlink_bblock): Avoid creation of new arrays.
15530
15531 2006-04-02  Zoltan Varga  <vargaz@gmail.com>
15532
15533         * mini.c (mono_unlink_bblock): Fix regression caused by previous
15534         change (#77992).
15535
15536 2006-04-01  Zoltan Varga  <vargaz@gmail.com>
15537
15538         * mini.c (optimize_branches): Remove the "optimizations" in
15539         the cbranch1/cbranch2 -> branch cases which were causing several
15540         problems in the past. Fixes #77986.
15541
15542 2006-03-31  Chris Toshok  <toshok@ximian.com>
15543
15544         * driver.c (DEFAULT_OPTIMIZATIONS): back out the new set of
15545         default optimizations :(
15546
15547 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
15548
15549         * inssel-x86.brg mini-codegen.c mini.c: Merge some changes/fixes from linear-il
15550         branch.
15551
15552 2006-03-31  Massimiliano Mantione  <massi@ximian.com>
15553
15554         * local-propagation.c: Added comments to structs and removed
15555         "Mono" prefixes from local tree mover types.
15556
15557 2006-03-30  Zoltan Varga  <vargaz@gmail.com>
15558
15559         * Makefile.am (arch_sources): Define this for each architecture so 
15560         libmono_la_SOURCES is defined in one place.
15561
15562 Wed Mar 29 20:51:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
15563
15564         * driver.c, wapihandles.c, Makefile.am: integrate the io-layer utils
15565         from handles/.
15566
15567 Wed Mar 29 17:16:57 CEST 2006 Paolo Molaro <lupus@ximian.com>
15568
15569         * driver.c: print the GC name supplied by configure.
15570
15571 2006-03-29  Massimiliano Mantione  <massi@ximian.com>
15572
15573         * local-propagation.c: Added tree mover, and moved here all the
15574         local propagation code from mini.c
15575         * mini.c: Added support for treeprop, and moved all the local
15576         propagation code to local-propagation.c
15577         * mini.h: Added support for treeprop
15578         * driver.c: Added support for treeprop, enabled consprop, copyprop,
15579         treeprop, inline and deadce by default
15580         * Makefile.am: Added local-propagation.c
15581
15582 2006-03-25  Zoltan Varga  <vargaz@gmail.com>
15583
15584         * exceptions-sparc.c: Applied patch from David S. Miller  <davem@sunset.davemloft.net>: Implement correct support for sparc/linux.
15585
15586 Fri Mar 24 20:07:19 CET 2006 Paolo Molaro <lupus@ximian.com>
15587
15588         * debug-debugger.c: make it compile without the Boehm GC.
15589
15590 Wed Mar 22 18:25:18 CET 2006 Paolo Molaro <lupus@ximian.com>
15591
15592         * mini.c: fixed issue with mismatch when an icall is registered
15593         with multiple names but same address.
15594
15595 Tue Mar 21 15:59:57 CET 2006 Paolo Molaro <lupus@ximian.com>
15596
15597         * declsec.c, mini-exceptions.c: use write barrier to set reference
15598         fields of managed objects.
15599
15600 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
15601
15602         * mini.c (mono_print_method_from_ip): Recognize JIT trampolines as well.
15603         (can_access_internals): Fix a warning.
15604
15605         * mini.c (print_method_from_ip): Rename this to 
15606         mono_print_method_from_ip so it gets exported.
15607
15608         * trace.c: Deal with strings inside StringBuilder's containing garbage
15609         and fix memory leaks. Fixes #77848.
15610
15611 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
15612
15613         * mini.c (mini_init): Disable the setting of GC_stackbottom on ia64. Hopefully
15614         fixes #77787.
15615
15616 2006-03-16 Neale Ferguson <neale@sinenomine.net>
15617         
15618         * mini-s390.c: Remove OP_X86_TEST_NULL.
15619
15620 Thu Mar 16 17:19:04 CET 2006 Paolo Molaro <lupus@ximian.com>
15621
15622         * mini.c: use the correct GetHashCode() for the moving collector.
15623
15624 2006-03-16  Massimiliano Mantione  <massi@ximian.com>
15625
15626         * liveness.c: Regalloc spill cost tuning.
15627
15628 2006-03-15 Neale Ferguson <neale@sinenomine.net>
15629         
15630         * mini-s390x.h: Correct S390_LONG macro.
15631
15632         * mini-s390x.c: Cleanup unused code.
15633
15634 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
15635
15636         * jit-icalls.h: New file.
15637
15638         * Makefile.am mini.c jit-icalls.c: Use a proper include file for the jit
15639         icalls and include that instead of including jit-icalls.c.
15640
15641         * mini-ppc.c (mono_arch_output_basic_block): Remove references to
15642         OP_X86 opcodes.
15643
15644 Tue Mar 14 20:23:53 CET 2006 Paolo Molaro <lupus@ximian.com>
15645
15646         * mini.c: when checking for member accessibility, also check for
15647         friend assemblies and for explicit interface implementations.
15648
15649 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
15650
15651         * mini-codegen.c (mono_local_regalloc): Remove incorrect g_free () calls.
15652
15653         * cpu-arm.md cpu-g4.md: Remove x86_ opcodes.
15654
15655         * mini-x86.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
15656         common cases are done first.    
15657
15658         * mini-ops.h: Only define platform specific opcodes on the given platform.
15659
15660         * mini.h regalloc.h mini-codegen.c: Merge optimizations from the linear-il
15661         branch.
15662         
15663 2006-03-14  Martin Baulig  <martin@ximian.com>
15664
15665         Revert Paolo's change from r57348:
15666
15667         * mini.h: don't use gboolean for bitfields.
15668         * mini.c: verifier changes for fields and methods accessibility.
15669
15670 2006-03-13  Neale Ferguson <neale@sinenomine.net>
15671
15672         * mini-s390.h, mini-s390x.h: Fix calls to mono_call_inst_add_outarg_reg.
15673
15674         * mini-s390x.c: Fix conv_r_un.
15675
15676         * cpu-s390, cpu-s390x.md: Fix lengths.
15677
15678 Sun Mar 12 17:31:22 CET 2006 Paolo Molaro <lupus@ximian.com>
15679
15680         * mini.c: nested types have access to all the nesting
15681         levels, not just the enclosing types.
15682
15683 Sun Mar 12 16:23:11 CET 2006 Paolo Molaro <lupus@ximian.com>
15684
15685         * mini.c: added a few more verification checks.
15686
15687 2006-03-12  Zoltan Varga  <vargaz@gmail.com>
15688
15689         * liveness.c: Merge optimizations from the linear-il branch.
15690
15691 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
15692
15693         * mini-ia64.c (emit_call): Add a comment.
15694
15695         * tramp-ia64.c (mono_arch_patch_callsite): Handle indirect calls as well.
15696
15697         * tramp-ia64.c: Fix some warnings.
15698
15699 Sat Mar 11 20:15:59 CET 2006 Paolo Molaro <lupus@ximian.com>
15700
15701         * mini.h: don't use gboolean for bitfields.
15702         * mini.c: verifier changes for fields and methods accessibility.
15703
15704 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
15705
15706         * mini.c (mono_icall_get_wrapper): Fix an ia64 bug introduced by the
15707         lazy icall wrapper changes.
15708
15709         * dominators.c: Replace all the dominator algorithms with faster
15710         ones from the linear-il branch.
15711
15712         * inssel-*.brg: Allocate call->out_ireg_args and call->out_freg_args from
15713         the mempool.
15714
15715         * mini-amd64.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
15716         common cases are done first.
15717
15718         * mini-amd64.c: Fix some warnings.
15719
15720         * mini-codegen.c mini-*.c: Allocate call->out_ireg_args and call->out_freg_args
15721         from the mempool.
15722
15723         * mini.c (mono_jit_compile_method_with_opt): Fix a race in the newly
15724         added code.
15725
15726         * mini.h: Add a missing prototype.
15727
15728 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
15729
15730         * mini.c: Compile icall wrappers lazily.
15731
15732         * mini-codegen.c: Use printf instead of g_print since its much faster.
15733
15734         * mini.h (mono_bitset_foreach_bit): Use the faster mono_bitset_find_start ()
15735         function.
15736
15737         * mini.c (optimize_branches): Cache the negative result from 
15738         remove_block_if_useless ().
15739
15740         * mini.c (optimize_branches): Avoid restarting the iteration after each change. 
15741         Also fix some bblock linking issues.
15742
15743         * helpers.c (mono_disassemble_code): Reduce the size of the temporary
15744         assembly files.
15745
15746         * mini.h: Define G_LIKELY/G_UNLIKELY macros for older glib versions.
15747
15748         * mini.h (MonoBasicBlock): Reorganize the fields, putting more frequently
15749         accessed fields first, for better cache behavior.
15750         
15751 Fri Mar 10 18:21:41 CET 2006 Paolo Molaro <lupus@ximian.com>
15752
15753         * mini.c: speedup IList<T> array accesses.
15754
15755 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
15756
15757         * mini.c (mono_method_to_ir): Handle large methods overflowing the 
15758         inline_costs counter. Fixes #77190.
15759
15760 2006-03-06  Zoltan Varga  <vargaz@gmail.com>
15761
15762         * mini-exceptions.c: Call mono_trace_is_enabled () before printing
15763         trace messages. Fixes #77706.
15764
15765 2006-03-04  Martin Baulig  <martin@ximian.com>
15766
15767         * tramp-amd64.c, tramp-x86.c
15768         (mono_debugger_create_notification_function): Use
15769         mono_global_codeman_reserve() to allocate a buffer at runtime and
15770         return it.
15771
15772         * debug-debugger.h (MonoDebuggerInfo): Added `initialize'.
15773
15774         * debug-debugger.c (mono_debugger_init): Dynamically allocate the
15775         notification function at runtime and then call `initialize' in the
15776         `MONO_DEBUGGER__debugger_info' vtable.
15777
15778 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
15779
15780         * iltests.il: Fix a visibility problem.
15781
15782 Wed Mar 1 15:55:25 CET 2006 Paolo Molaro <lupus@ximian.com>
15783
15784         * driver.c, mini.c: add hooks for the counters API.
15785
15786 Wed Mar 1 12:28:04 CET 2006 Paolo Molaro <lupus@ximian.com>
15787
15788         * driver.c: show disabled options.
15789
15790 Wed Mar 1 12:18:51 CET 2006 Paolo Molaro <lupus@ximian.com>
15791
15792         * linear-scan.c: always use cost-driven selection.
15793
15794 2006-02-28  Raja R Harinath  <rharinath@novell.com>
15795
15796         * jit-icalls.c (helper_compile_generic_method): Revert change from
15797         2006-02-24.
15798
15799 Mon Feb 27 18:58:19 GMT 2006 Paolo Molaro <lupus@ximian.com>
15800
15801         * cpu-arm.md, mini-arm.c: implemented MemoryBarrier.
15802
15803 Sat Feb 25 17:39:21 CET 2006 Paolo Molaro <lupus@ximian.com>
15804
15805         * inssel.brg: style fixes, mostly to force the updated monoburg
15806         to run for people using svn.
15807
15808 Sat Feb 25 17:07:42 CET 2006 Paolo Molaro <lupus@ximian.com>
15809
15810         * mini.c: match monoburg changes.
15811
15812 Sat Feb 25 16:04:33 CET 2006 Paolo Molaro <lupus@ximian.com>
15813
15814         * mini.h, mini.c, abcremoval.c, aliasing.c, liveness.c,
15815         ssapre.c, graph.c, ssa.c: put the mono_burg_arity[]
15816         declaration in the header file.
15817
15818 Sat Feb 25 14:19:31 CET 2006 Paolo Molaro <lupus@ximian.com>
15819
15820         * helpers.c: reduce relocations and mem usage.
15821
15822 Sat Feb 25 11:58:16 CET 2006 Paolo Molaro <lupus@ximian.com>
15823
15824         * mini.h, mini-codegen.c: disable logging features if
15825         requested by configure.
15826
15827 Sat Feb 25 11:54:49 CET 2006 Paolo Molaro <lupus@ximian.com>
15828
15829         * mini.c: tiny verifier changes.
15830
15831 Fri Feb 24 18:17:52 CET 2006 Paolo Molaro <lupus@ximian.com>
15832
15833         * mini-ops.h, inssel-x86.brg, tramp-x86.c, mini-x86.c,
15834         cpu-pentium.md: stack alignment changes for osx/x86,
15835         partially from Geoff Norton <gnorton@customerdna.com>.
15836
15837 2006-02-24  Raja R Harinath  <harinath@gmail.com>
15838
15839         * jit-icalls.c (helper_compile_generic_method): Update to changes
15840         in metadata/class.c.
15841
15842 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
15843         
15844         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a missing check.
15845         
15846         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for
15847         interface calls with large offsets.
15848
15849 2006-02-23  Raja R Harinath  <rharinath@novell.com>
15850
15851         * jit-icalls.c (helper_compile_generic_method): Document the
15852         special-case we depend on so that we can inflate the method twice
15853         with the same context with no bad side-effects.
15854
15855 Thu Feb 23 13:45:46 CET 2006 Paolo Molaro <lupus@ximian.com>
15856
15857         * mini-x86.c, mini-amd64.c: fix for case when xen support
15858         is disabled.
15859
15860 Wed Feb 22 19:38:40 CET 2006 Paolo Molaro <lupus@ximian.com>
15861
15862         * mini-x86.c, mini-amd64.c: generate code to access tls items
15863         in a faster way for Xen systems.
15864
15865 Wed Feb 22 10:31:25 CET 2006 Paolo Molaro <lupus@ximian.com>
15866
15867         * exceptions-x86.c, mini-x86.h, driver.c, mini-codegen.c:
15868         updates and compilation fixes for the OSX/x86 port, mostly from
15869         Geoff Norton <gnorton@customerdna.com>.
15870
15871 Tue Feb 21 19:56:55 CET 2006 Paolo Molaro <lupus@ximian.com>
15872
15873         * inssel.brg: faster interface call implementation
15874         to sync with the interface_offsets MonoVTable changes.
15875
15876 Mon Feb 20 10:37:57 CET 2006 Paolo Molaro <lupus@ximian.com>
15877
15878         * mini.c: more verification checks.
15879
15880 Fri Feb 17 19:47:29 CET 2006 Paolo Molaro <lupus@ximian.com>
15881
15882         * mini.c: added a few more verification checks.
15883
15884 2006-02-17      Neale Ferguson <neale@sinenomine.net>
15885
15886         * mini-s390x.c, mini-s390x.h: Check for presence of long displacement
15887         facility on the processor and use it if available.
15888
15889 Fri Feb 17 16:12:52 CET 2006 Paolo Molaro <lupus@ximian.com>
15890
15891         * driver.c, aot.c, mini.c: throw exception if the IL code is
15892         invalid or unverifiable.
15893
15894 2006-02-17  Raja R Harinath  <rharinath@novell.com>
15895
15896         * generics.2.cs (test_0_ldfld_stfld_mro): Use m.struct_field, not
15897         m.StructField.
15898
15899 2006-02-16  Zoltan Varga  <vargaz@gmail.com>
15900
15901         * generics.2.cs: Add some tests for generics ldfld/stfld wrappers.
15902
15903 Wed Feb 15 16:23:17 CET 2006 Paolo Molaro <lupus@ximian.com>
15904
15905         * mini-s390x.c, mini-s390.c, mini.c, mini-amd64.c, mini-arm.c,
15906         mini-ia64.c, mini-sparc.c, mini-x86.c, mini-ppc.c: fixed
15907         handling of instantiated generic valuetypes.
15908
15909 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
15910
15911         * mini-exceptions.c mini-x86.h mini-x86.c: Get rid of 
15912         MONO_INIT_CONTEXT_FROM_CALLER, and use MONO_INIT_CONTEXT_FROM_FUNC
15913         instead.
15914
15915         * generics.2.cs: Revert the nullable reftypes tests.
15916
15917 2006-02-10  Zoltan Varga  <vargaz@gmail.com>
15918
15919         * mini-exceptions.c (MONO_INIT_CONTEXT_FROM_CALLER): Avoid
15920         using __builtin_frame_address (1) as it doesn't work in the presence
15921         of optimizations. Hopefully fixes #77273.
15922
15923         * Makefile.am generics.cs generics.2.cs: Revert the generics.2.cs
15924         -> generics.cs change as it doesn't work with some automake versions.
15925
15926 Thu Feb 9 16:24:44 CET 2006 Paolo Molaro <lupus@ximian.com>
15927
15928         * mini.c: handle systems that sue a different way to
15929         retrieve the stack address of the current thread.
15930
15931 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
15932
15933         * Makefile.am generics.2.cs: Rename this to generics.cs and handle
15934         it specially in the makefile.
15935
15936         * generics.2.cs: Add tests for nullable reference types.
15937
15938 Wed Feb 8 19:33:17 CET 2006 Paolo Molaro <lupus@ximian.com>
15939
15940         * mini.c: always handle the case when mono_jit_init()
15941         is called in a thread different from the main thread,
15942         confusing libgc (bug #77309).
15943
15944 Mon Feb 6 09:01:24 EST 2006 Paolo Molaro <lupus@ximian.com>
15945
15946         * mini-ppc.c: fix handling of exceptions in large methods (bug #74932).
15947
15948 Fri Feb 3 18:51:35 CET 2006 Paolo Molaro <lupus@ximian.com>
15949
15950         * mini.c: change optimize_branches () to use a single loop
15951         and introduce a new optimization to simplify some range checks.
15952
15953 2006-02-03  Martin Baulig  <martin@ximian.com>
15954
15955         * debug-debugger.c (debugger_thread_manager_thread_created): Removed
15956         and merged with debugger_thread_manager_add_thread().
15957         (mono_debugger_main): Call debugger_thread_manager_add_thread() to
15958         inform the debugger about the main thread.
15959
15960 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
15961
15962         * basic.cs: Add test for div.un/rem.un constant folding.
15963
15964 2006-02-03  Neale Ferguson <neale@sinenomine.net>
15965
15966         * cpu-s390x.md: correct int_xor_imm length
15967
15968 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
15969
15970         * generics.2.cs: New test for #77442.
15971
15972         * jit-icalls.c (helper_compile_generic_method): Check for null. Fixes
15973         #77442.
15974
15975 2006-02-02  Martin Baulig  <martin@ximian.com>
15976
15977         * tramp-x86.c, tramp-amd64.c: It's now safe to #include
15978         <mono/metadata/mono-debug-debugger.h>   
15979
15980         * debug-mini.c: Don't #define _IN_THE_MONO_DEBUGGER.
15981
15982 2006-02-02  Martin Baulig  <martin@ximian.com>
15983
15984         * debug-debugger.h: New header file for debug-debugger.c.
15985
15986         * debug-debugger.c: Big API cleanup; don't run the managed Main()
15987         function is a separate thread anymore; add support for attaching.
15988
15989 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
15990
15991         * tramp-x86.c: Fix a warning.
15992
15993 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
15994
15995         * mini-amd64.c (mono_arch_compute_omit_fp): Avoid hitting an assertion
15996         on very large methods.
15997
15998         * aot.c (load_patch_info): Fix a warning.
15999
16000 Mon Jan 30 12:51:10 CET 2006 Paolo Molaro <lupus@ximian.com>
16001
16002         * cpu-pentium.md, mini-x86.c, inssel.brg, inssel-x86.brg,
16003         mini-ops.h: alu membase optimizations.
16004
16005 Fri Jan 27 21:11:08 CET 2006 Paolo Molaro <lupus@ximian.com>
16006
16007         * mini-ops.h, mini.c, inssel.brg, inssel-x86.brg: opcode
16008         to speedup StringBuilder.
16009
16010 2006-01-27  Zoltan Varga  <vargaz@gmail.com>
16011
16012         * dominators.c (mono_compute_natural_loops): Fix detection of
16013         loop body start blocks.
16014
16015         * mini-exceptions.c (mono_print_thread_dump): Fix non x86 builds.
16016
16017 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
16018
16019         * mini.h mini.c mini-exceptions.c: Add thread dump support. Fixes
16020         #75145.
16021
16022 2006-01-25  Massimiliano Mantione  <massi@ximian.com>
16023
16024         * aliasing.c: Fixed aliasing issue on 64 bit archs.
16025
16026 2006-01-25  Martin Baulig  <martin@ximian.com>
16027
16028         * debug-debugger.c: Moved the `MonoDebuggerManager' and
16029         `MonoDebuggerThread' typedefs here from mono-debug-debugger.h and
16030         started to cleanup this file a little bit.
16031
16032 Tue Jan 24 18:20:48 CET 2006 Paolo Molaro <lupus@ximian.com>
16033
16034         * mini.c: optimize a codepath frequently happening in generics code.
16035
16036 2006-01-23  Martin Baulig  <martin@ximian.com>
16037
16038         * Makefile.am: Only compile debug-debugger.c on supported platforms.
16039
16040         * debug-debugger.c: Kill the IO_LAYER() hack and use the io-layer
16041         functions directly.
16042
16043         * driver.c: debug-debugger.c is only available if
16044         `MONO_DEBUGGER_SUPPORTED' is defined.   
16045
16046 2006-01-23  Martin Baulig  <martin@ximian.com>
16047
16048         * debug-debugger.c: Only enable this on platforms where the Mono
16049         Debugger is working (x86 and x86_64).
16050
16051 2006-01-21  Martin Baulig  <martin@ximian.com>
16052
16053         The Mono Debugger is now using the normal `mono' instead of the
16054         `mono-debugger-mini-wrapper' when executing managed code.
16055
16056         * debug-debugger.c: New file; previously known as
16057         debugger/wrapper/wrapper.c.
16058
16059         * debug-mini.c (mono_init_debugger): Removed.
16060
16061         * driver.c (mono_main): Added new `--inside-mdb' command line
16062         argument which is used when running inside the debugger.
16063
16064 2006-01-20  Zoltan Varga  <vargaz@gmail.com>
16065
16066         * liveness.c (mono_analyze_liveness): Remove some unused data
16067         structures.
16068
16069 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
16070
16071         * mini.h: Move mono_bitset_test_fast macro to monobitset.h where it belongs.
16072
16073 2006-01-16  Zoltan Varga  <vargaz@gmail.com>
16074
16075         * mini.h (mono_bitset_test_fast): Disable the 'fast' implementation which
16076         depends on implementation details of monobitset.
16077
16078         * mini.c (mini_get_ldelema_ins): Fix handling of 1 dimensional arrays.
16079         Fixes #77271.
16080
16081 2006-01-15  Zoltan Varga  <vargaz@gmail.com>
16082
16083         * liveness.c: Update after monobitset changes.
16084
16085 2006-01-14  Zoltan Varga  <vargaz@gmail.com>
16086
16087         * mini-amd64.c (mono_arch_compute_omit_fp): Fix a leak.
16088
16089 2006-01-11 Neale Ferguson <neale@sinenomine.net>
16090
16091         * inssel-s390x.brg: Fix reg: OP_LDADDR(OP_S390_LOADARG) register setting.
16092
16093         * mini-s390x.c: Remove warning messages.
16094
16095 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
16096
16097         * mini.c: pass the jitinfo to mono_profiler_method_end_jit.
16098
16099 2006-01-10  Zoltan Varga  <vargaz@gmail.com>
16100
16101         * generics.2.cs: Add ldelem/stelem_any test.
16102
16103 2006-01-10 Neale Ferguson <neale@sinenomine.net>
16104
16105         * mini-s390.c: Fix ATOMIC_ADD_I4 operation.
16106
16107 2006-01-07  Zoltan Varga  <vargaz@gmail.com>
16108
16109         * inssel-long.brg: Fix int->long ovf conversion rules. Fixes #77172.
16110         
16111 2006-01-06  Zoltan Varga  <vargaz@gmail.com>
16112
16113         * generics.2.cs: Reenable vtype tests.
16114
16115         * inssel-x86.brg: Remove an icorrect valuetype rule.
16116
16117 2006-01-06 Neale Ferguson <neale@sinenomine.net>
16118
16119         * mini-s390x.c, inssel-s390x.brg, cpu-s390x.md: Fix ATOMIC_I8 operations. Provide
16120         initial support for OP_ABS.
16121
16122 2006-01-05 Neale Ferguson <neale@sinenomine.net>
16123
16124         * mini-s390x.c (emit_float_to_int): Correct r8 to unsigned int algorithm.
16125
16126 2006-01-05 Neale Ferguson <neale@sinenomine.net>
16127
16128         * mini-s390.c, mini-s390.h, inssel-s390.brg, cpu-s390.md: Fix r8 to unsigned int 
16129         conversion and implement LADD/LSUB.
16130
16131         * exceptions-s390.c: Standardize mono_arch_find_jit_info to match other
16132         architectures.
16133
16134 2006-01-05 Neale Ferguson <neale@sinenomine.net>
16135
16136         * mini-s390x.c, mini-s390x.h: Fix r8 to unsigned int conversion.
16137
16138         * exceptions-s390x.c: Standardize mono_arch_find_jit_info to match other
16139         architectures.
16140
16141 2006-01-05 Neale Ferguson <neale@sinenomine.net>
16142
16143         * mini-s390x.c, mini-s390x.h, mini-s390.c, mini-s390.h: Fix lmf handling when 
16144         localloc is encountered.  Fixes crash in test-183.cs when using gmcs 
16145         (stack walk problem).
16146
16147 2006-01-04  Zoltan Varga  <vargaz@gmail.com>
16148
16149         * aot.c (mono_aot_load_method): Fix a warning.
16150
16151 2006-01-03  Neale Ferguson <neale@sinenomine.net>
16152
16153         * mini-s390x.h, exceptions-s390x.c, inssel-s390x.brg: Fix compiler warnings
16154
16155 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
16156
16157         * iltests.il: Add test for #77148.
16158
16159         * mini.c (mini_get_ldelema_ins): Handle arrays with rank 1 too. Fixes
16160         #77148.
16161
16162 2006-01-03  Neale Ferguson <neale@sinenomine.net>
16163
16164         * mini-s390x.c, inssel-s390x.brg: Remove debug statements
16165
16166 2006-01-03  Neale Ferguson <neale@sinenomine.net>
16167
16168         * mini-s390x.c, mini-s390x.h, exceptions-s390x.c, tramp-s390x.c, inssel-s390x.brg,
16169         cpu-s390x.md, mini-codegen.c, Makefile.am: add 64-bit s390 support to JIT.
16170
16171         * basic-long.cs: Add lconv-to-r4/r8 tests.
16172
16173 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
16174
16175         * mini.c (mono_method_to_ir): Fix DynamicMethod support in some opcodes.
16176
16177         * mini-sparc.c (mono_arch_call_opcode): Use mono_class_value_size ()
16178         here as on other archs.
16179
16180 2005-12-29 Neale Ferguson <neale@sinenomine.net>
16181
16182         * mini-s390.c (mono_arch_get_inst_for_method): Add memory_barrier support.
16183
16184 2005-12-29 Neale Ferguson <neale@sinenomine.net>
16185
16186         * inssel-s390.brg: Correct register assignment; Rework L[ADD|SUB]_OVF[_UN] for s390.
16187         
16188         * cpu-s390.md: Fix lengths of a couple of long instructions; Add memory_barrier.
16189
16190         * mini-s390.c: Fix long add/sub overflow instructions; Fix displacement handling in
16191         instrument_prolog; Add memory_barrier instruction.
16192
16193 2005-12-26  Zoltan Varga  <vargaz@gmail.com>
16194
16195         * exceptions-x86.c mini-x86.h: Fix solaris/x86 exception handling.
16196
16197 2005-12-23  Zoltan Varga  <vargaz@gmail.com>
16198
16199         * tramp-ia64.c (mono_arch_get_unbox_trampoline): Flush icache.
16200
16201         * aliasing.c inssel.brg: Fix warnings.
16202
16203         * inssel-ia64.brg (OP_MEMSET): Fix an optimization which previously
16204         could skip initialization of some parts of memory.
16205
16206         * mini.c mini-ia64.c: Fix warnings.
16207
16208         * inssel-sparc.brg: Add an implementation of lneg which actually works.
16209
16210 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
16211
16212         * aliasing.c (mono_build_aliasing_information): Add a workaround for
16213         a crash seen on sparc.
16214
16215         * mini-sparc.c: Add implementation of Thread.MemoryBarrier.
16216         
16217         * cpu-sparc.md: Add memory_barrier opcode. Remove unused opcodes.
16218
16219 2005-12-21 Neale Ferguson <neale@sinenomine.net>
16220
16221         * mini-ops.h: Add s390_backchain instruction
16222
16223         * inssel-s390.brg: Use backchaining instruction for LOADARG/STKARG operations.
16224
16225         * cpu-s390.md: Add s390_backchain instruction
16226
16227         * mini-s390.c: Significant ABI changes
16228
16229         * mini-s390.h: Cater for zero length structures
16230
16231 2005-12-20 Neale Ferguson <neale@sinenomine.net>
16232
16233         * mini-s390.c: ABI fixes
16234
16235         * inssel-s390.brg: Remove debug statements
16236
16237         * cpu-s390.md: Fix length of ATOMIC_xx operations
16238
16239 2005-12-19  Zoltan Varga  <vargaz@gmail.com>
16240
16241         * basic-float.cs: Add float<->long conversion tests.
16242
16243 2005-12-16 Neale Ferguson <neale@sinenomine.net>
16244
16245         * mini-s390.c: Fix LOCALLOC processing.
16246
16247         * tramp-s390.c (s390_magic_trampoline): Fix base calculation.
16248
16249 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
16250
16251         * iltests.il: Add tests for some opcodes not covered by the other
16252         tests.
16253
16254 2005-12-15 Neale Ferguson <neale@sinenomine.net>
16255
16256         * mini-s390.c: Fix ADDCC/SBB bug revealed by test_0_ulong_regress; Correct 
16257         register loading for Tail processing; Correct trace output.
16258
16259         * inssel-s390.brg: Reimplement LSUB_OVF due to s390 implementation of signed math.
16260
16261         * cpu-s390.md: Correct size of jmp instruction. 
16262
16263 2005-12-13 Neale Ferguson <neale@sinenomine.net>
16264
16265         * mini-s390.c (mono_arch_emit_prolog): Remove some debugging bits.
16266
16267 2005-12-13 Neale Ferguson <neale@sinenomine.net>
16268
16269         * inssel-s390.brg tramp-s390.c cpu-s390.md mini-s390.c mini-s390.h:
16270           Bring s390 up to current level.
16271
16272 2005-12-12  Zltan Varga  <vargaz@gmail.com>
16273
16274         * generics.2.cs: Disable the newly added tests as they do not work yet.
16275         
16276         * generics.2.cs: Add valuetype tests.
16277
16278 2005-12-09  Zoltan Varga  <vargaz@gmail.com>
16279
16280         * basic-long.cs: Add i4->u8 test.
16281
16282         * objects.cs: Add tests for JIT intrinsic.
16283
16284         * mini.c (mini_get_inst_for_method): Resurrect the array Rank/Length
16285         optimizations lost by a mistake.
16286
16287 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
16288
16289         * basic-long.cs: Remove a test moved to objects.cs.
16290
16291         * arrays.cs: Add more array tests.
16292
16293 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
16294
16295         * arrays.cs: Add new tests for multi-dimensional arrays.
16296
16297 2005-12-06  Raja R Harinath  <rharinath@novell.com>
16298
16299         * Makefile.am (test_sources2): Add generics.2.cs.
16300         (EXTRA_DIST): Add test_sources2.
16301
16302 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
16303
16304         Support for boxing and unboxing nullable types as well as the
16305         isinst operation on nullables, per the CLI ammendment.
16306
16307         * inssel.brg (CEE_ISINST): Special case for nullable
16308
16309         * mini.c (handle_unbox_nullable): new method
16310         (handle_box): Special case for nullable types
16311         (mono_method_to_ir): Call handle_unbox_nullable in correct
16312         places.
16313
16314         * generics.2.cs: New test suite
16315
16316         * Makefile.am: Support for regression tests with generics.
16317
16318 2005-12-03  Zoltan Varga  <vargaz@gmail.com>
16319
16320         * mini-amd64.c (emit_load_volatile_arguments): Add loading of arguments
16321         allocated to registers. Fixes #76800.
16322
16323 Thu Dec 1 12:59:40 EST 2005 Paolo Molaro <lupus@ximian.com>
16324
16325         * mini-ppc.c, inssel-ppc.brg: fix ABI issue (pinvoke3.cs).
16326
16327 2005-11-30  Zoltan Varga  <vargaz@gmail.com>
16328
16329         * exceptions.cs: Disable test_0_long_cast () test, since it fails on a lot 
16330         of platforms.
16331
16332 2005-11-29  Zoltan Varga  <vargaz@gmail.com>
16333
16334         * objects.cs basic-calls.cs: Move a test depending on valuetypes to
16335         objects.cs.
16336
16337         * inssel-long32.brg (CEE_CONV_I8): Remove unused labels.
16338         
16339         * inssel-long32.brg (CEE_CONV_I8): Convert this to a branchless version.
16340 Tue Nov 29 05:41:34 EST 2005 Paolo Molaro <lupus@ximian.com>
16341
16342         * mini-ppc.c, cpu-g4.md: ensure a fp register is converted to
16343         single precision before storing to a single precision location.
16344
16345 2005-11-28  Raja R Harinath  <rharinath@novell.com>
16346
16347         * Makefile.am (ILASM): Use profile-dependent location of ilasm.
16348
16349 2005-11-27  Zoltan Varga  <vargaz@gmail.com>
16350
16351         * basic-long.cs basic-calls.cs objects.cs: Move some tests to the
16352         correct files.
16353
16354         * basic.cs: Remove test_0_byte_compares test which was moved to
16355         objects.cs a long time ago.
16356
16357 2005-11-22  Massimiliano Mantione  <massi@ximian.com>
16358
16359         * aliasing.c: Fixed aliasing issue on 64 bit archs.
16360
16361 2005-11-20  Zoltan Varga  <vargaz@gmail.com>
16362
16363         * mini-ia64.c exceptions-ia64.c: Simplify the way filters/finally
16364         handlers are called.
16365
16366         * mini-ia64.c (mono_arch_emit_exceptions): Optimize size of exception
16367         throwing code.
16368
16369          * mini-ia64.c: Add support for the throw->branch exception 
16370         optimization.   
16371
16372         * driver.c (DEFAULT_OPTIMIZATIONS): Add MONO_OPT_EXCEPTION.
16373
16374 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
16375
16376         * mini.c: Enabled "fastpath" deadce :-)
16377         
16378 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
16379
16380         * mini.c: Added "fastpath" deadce (deadce without SSA), and a simple
16381         alias analysis pass to support it.
16382         * mini.h: Likewise.
16383         * ssa.c: Likewise.
16384         * liveness.c: Likewise (liveness computation can use aliasing
16385         information to be more accurate).
16386         * driver.c: Added an "ssa" option go tell the JIT to use SSA, and
16387         moreover made so that "--compile-all" uses the given optimization
16388         flags and not the default ones.
16389         * aliasing.c: Alias analysis (new file).
16390         * aliasing.h: Likewise.
16391         * Makefile.am: added "aliasing.c" and "aliasing.h".
16392         
16393 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
16394
16395         * mini-ops.h: Add missing OP_I opcodes so it is in synch with the
16396         OP_L opcodes.
16397
16398 2005-11-13  Zoltan Varga  <vargaz@gmail.com>
16399
16400         * mini-exceptions.c (mono_handle_exception_internal): Remove the 
16401         fp >= end_of_stack exit condition, as it is not needed, and it might
16402         become true for fp eliminated frames.
16403
16404 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
16405
16406         * mini-x86.c (mono_arch_emit_epilog): Use G_STRUCT_OFFSET instead of hard
16407         coded offsets.
16408
16409 Tue Nov 8 11:28:20 GMT 2005 Paolo Molaro <lupus@ximian.com>
16410
16411         * mini-arm.c: fixed alignment of doubles/longs to match
16412         the C ABI (bug #76635).
16413
16414 Mon Nov 7 16:13:21 CET 2005 Paolo Molaro <lupus@ximian.com>
16415
16416         * aot.c: fix compilation with --enable-minimal=aot.
16417
16418 Fri Nov 4 12:34:15 GMT 2005 Paolo Molaro <lupus@ximian.com>
16419
16420         * mini-arm.c: fixed compatibility with the new
16421         floating point emulator package for compares.
16422
16423 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com?
16424
16425         * mini.c : reverted sig->pinvoke changes (r51396-51397).
16426
16427 2005-11-01  Zoltan Varga  <vargaz@freemail.hu>
16428
16429         * mini-exceptions.c (print_stack_frame): Output to stderr.
16430         (mono_handle_native_sigsegv): Ditto.
16431
16432 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
16433
16434         * mini-amd64.c (mono_arch_output_basic_block): Remove unused
16435         OP_LCONV_TO_OVF_I implementation.
16436
16437         * mini-amd64.c: Add support for the throw->branch exception 
16438         optimization.
16439
16440         * branch-opts.c (mono_branch_optimize_exception_target): Allow the case
16441         when the catch clause catches a more general exception, i.e. Object.
16442
16443 2005-10-30  Zoltan Varga  <vargaz@gmail.com>
16444
16445         * cpu-ia64.md: Remove unused opcodes.
16446
16447         * mini.c (GET_CONTEXT): Simplify this somewhat by removing arch
16448         specific defines for architectures defining USE_SIGACTION.
16449
16450         * mini-ia64.c: Fix some warnings.
16451
16452         * exceptions-ia64.c (mono_arch_ip_from_context): Fix this, the previous
16453         version seemed to skip a frame.
16454
16455 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
16456
16457         * mini.c: Clean up the usage of sig->pinvoke flag. Now
16458         only calls which are made to native code use this flag.
16459
16460 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
16461
16462         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for
16463         varargs methods as well.
16464         
16465         * mini-amd64.c exceptions-amd64.c: Allow fp elimination in methods
16466         which have save_lmf set. Reorganize methods prologs a bit.
16467
16468         * mini-amd64.c (mono_arch_compute_omit_fp): Move the check for the
16469         debugger to the proper place.
16470
16471 2005-10-29  Martin Baulig  <martin@ximian.com>
16472
16473         * mini-amd64.c (debug_omit_fp): Temporarily disable fp elimination
16474         when running inside the debugger until the debugger has support
16475         for it.
16476
16477 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
16478
16479         * mini.h: Fix a warning.
16480
16481 2005-10-24  Miguel de Icaza  <miguel@novell.com>
16482
16483         * mini.c (mono_pmip): Just a wrapper for get_method_from_ip which
16484         we expose publicly, this returns the string.
16485
16486 2005-10-22  Zoltan Varga  <vargaz@freemail.hu>
16487
16488         * exceptions-amd64.c (mono_arch_find_jit_info): Fix some corner cases
16489         with fp elimination.
16490
16491 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
16492
16493         * mini-exceptions.c (mono_handle_native_sigsegv): Try to print a
16494         native stacktrace using the glibc 'backtrace' function if available.
16495
16496 2005-10-20  Zoltan Varga  <vargaz@gmail.com>
16497
16498         * mini.h (MonoDebugOptions): Remove 'abort_on_sigsegv' option.
16499
16500         * mini-exceptions.c (mono_handle_native_sigsegv): New function to 
16501         handle SIGSEGVs received while in native code.
16502
16503         * mini.c (sigsegv_signal_handler): If the SIGSEGV happened in native
16504         code, call mono_handle_native_sigsegv which will abort the runtime
16505         after printing some diagnostics, instead of converting it into a
16506         confusing NullReferenceException.
16507
16508 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
16509
16510         * cpu-pentium.md: Remove unused opcodes.
16511
16512 2005-10-18  Zoltan Varga  <vargaz@freemail.hu>
16513
16514         * mini-amd64.h (MonoLMF): Add rsp field.
16515
16516         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Save the sp reg into
16517         the lmf too.
16518
16519 2005-10-17  Zoltan Varga  <vargaz@gmail.com>
16520
16521         * mini-codegen.c (get_register_spilling): Fix some warnings.
16522
16523 2005-10-16  Zoltan Varga  <vargaz@freemail.hu>
16524
16525         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Add support for fp
16526         elimination during exception handling. Enable fp elimination by
16527         default.
16528
16529         * mini-amd64.h mini-amd64.c: Add preliminary support for frame pointer
16530         elimination.
16531
16532 2005-10-16  Martin Baulig  <martin@ximian.com>
16533
16534         * mini-exceptions.c
16535         (mono_debugger_run_finally): New public method for the debugger.
16536
16537 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
16538
16539         * debug-mini.c (mono_debug_init_method): Fix warning.
16540
16541         * mini.h branch-opts.c (mono_branch_optimize_exception_target): Make
16542         the 'exname' parameter const to fix some warnings.
16543
16544 2005-10-09  Zoltan Varga  <vargaz@freemail.hu>
16545
16546         * mini-exceptions.c (mono_handle_exception_internal): Fix another bug
16547         introduced by the previous patch.
16548
16549 2005-10-08  Zoltan Varga  <vargaz@gmail.com>
16550
16551         * basic-float.cs: Add test for precision of float arithmetic.
16552
16553         * mini-ia64.c (mono_arch_output_basic_block): Convert to/from doubles
16554         when loading/storing single values from/to memory.
16555
16556         * mini.c (mono_jit_compile_method_with_opt): Create the function
16557         pointers in the correct domain.
16558
16559 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
16560
16561         * mini-exceptions.c (mono_handle_exception_internal): Fix bug 
16562         introduced by previous patch.
16563         
16564         * mini-exceptions.c (mono_handle_exception_internal): Handle the case
16565         when out_filter_idx is NULL.
16566
16567         * mini-exceptions.c: Don't run filter clauses twice during exception
16568         handling. Fixes #75755.
16569
16570 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
16571
16572         * aot.c: Add support for ldflda wrappers.
16573
16574         * mini.c (mono_method_to_ir): Use ldflda wrappers for CEE_LDFLDA. Fixes
16575         #75902.
16576
16577 Tue Oct 4 20:23:25 CEST 2005 Paolo Molaro <lupus@ximian.com>
16578
16579         * mini.c, mini.h: do not consider exception handlers blocks when
16580         setting up interface variables.
16581
16582 2005-10-04  Zoltan Varga  <vargaz@freemail.hu>
16583
16584         * aot.c (emit_section_change): Fix emitting of sections on win32. Fixes #76322.
16585
16586 2005-10-03  Zoltan Varga  <vargaz@gmail.com>
16587
16588         * liveness.c (mono_analyze_liveness): Revert parts of r51051 since it
16589         causes a regression.
16590
16591         * mini.c (mini_thread_cleanup): Fix reading of freed memory.
16592
16593 2005-10-02  Zoltan Varga  <vargaz@freemail.hu>
16594
16595         * mini.h (OP_PCONST): Move the definition of OP_PCONST into the rest
16596         of the OP_P definitions.
16597
16598         * TODO: Add a proposal for dealing with the CEE/OP mess.
16599
16600         * mini-amd64.c (mono_arch_output_basic_block): Merge mul_imm 
16601         optimizations from the x86 port.
16602
16603         * cpu-amd64.md: Ditto.
16604
16605         * basic.cs basic-long.cs: Add tests.
16606
16607 Fri Sep 30 20:07:20 CEST 2005 Paolo Molaro <lupus@ximian.com>
16608
16609         * Makefile.am, driver.c, mini-x86.c, mini.c, mini.h, branch-opts.c:
16610         Patrik Torstensson's implementation of my exception-handling
16611         optimization idea, when the exception object is not used
16612         (bug #62150).
16613
16614 Fri Sep 30 19:10:29 CEST 2005 Paolo Molaro <lupus@ximian.com>
16615
16616         * mini-x86.c, cpu-pentium.md: Patrik Torstensson's port
16617         of the mul_imm optimizations from the old jit.
16618
16619 Fri Sep 30 11:37:51 EDT 2005 Paolo Molaro <lupus@ximian.com>
16620
16621         * mini.c, liveness.c: patch by Patrik Torstensson and
16622         Zoltan Varga to improve performance in methods with
16623         exception clauses.
16624
16625 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
16626
16627         * driver.c: Remove 'Globalization' entry from --version.
16628
16629 2005-09-28  Zoltan Varga  <vargaz@gmail.com>
16630
16631         * mini.c (mono_jit_compile_method_inner): Do not load AOT code when
16632         there is a profiler interested in JIT events.
16633
16634         * aot.c: Load profile files produced by the AOT profiling module, and
16635         reorder methods based on the profiling info. Add a 'method_order' table
16636         to the AOT file to make mono_aot_find_jit_info work with the reordered
16637         methods.
16638
16639         * mini.h: Bump AOT file version info.
16640
16641 Wed Sep 28 17:12:48 CEST 2005 Paolo Molaro <lupus@ximian.com>
16642
16643         * mini-arm.h: work around what looks like a gcc bug when optimizations
16644         are enabled.
16645
16646 2005-09-28  Raja R Harinath  <rharinath@novell.com>
16647
16648         * Makefile.am (AM_CFLAGS): Don't use += to append inside
16649         conditionals.  Use ...
16650         (PLATFORM_CFLAGS, ARCH_CFLAGS): ... these.
16651
16652 2005-09-27  Zoltan Varga  <vargaz@freemail.hu>
16653
16654         * mini-amd64.c (mono_arch_call_opcode): Use mono_class_value_size ()
16655         to determine the amount of memory to copy when passing valuetypes.
16656
16657         * inssel-amd64.brg: Remove PUSH(LDIND4) rules since they convert an
16658         4 byte load into a 8 byte load. Fix aligning of size in OP_OUTARG_VT.
16659
16660 2005-09-27  Zoltan Varga  <vargaz@gmail.com>
16661
16662         * mini.h mini.c aot.c: Add infrastructure to collect pagefault 
16663         information about aot.
16664
16665 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
16666
16667         * *.c: Replace the use of {Enter,Leave}CriticalSection with
16668         macros. This will allow a deadlock debugger to easily be plugged
16669         in.
16670
16671 Tue Sep 27 09:32:11 EDT 2005 Paolo Molaro <lupus@ximian.com>
16672
16673         * mini-ppc.c, cpu-g4.md: added memory barrier instruction.
16674
16675 2005-09-27  Raja R Harinath  <rharinath@novell.com>
16676
16677         * Makefile.am (AM_CFLAGS): Rename from INCLUDES.
16678         (AM_CFLAGS) [PLATFORM_WIN32): Append to it, don't set it.
16679         (AM_CFLAGS) [ARM]: Add arch/arm directory from the build tree.
16680         ($(arch_built)) [CROSS_COMPILING]: Error out.
16681
16682 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
16683
16684         * aot.c: Add support for the no_special_static flag for classes.
16685
16686 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
16687
16688         * Reapply reverted patches.
16689
16690         * *: Revert r50174 as well.
16691
16692         * mini-amd64.c cpu-amd64.md inssel-amd64.brg: Revert r50170 as well.
16693
16694 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
16695
16696         * mini-amd64.c: Revert r50342 to see if this fixed buildbot.
16697
16698 2005-09-23  Miguel de Icaza  <miguel@novell.com>
16699
16700         * mini.c (SIG_HANDLER_SIGNATURE): Only dereference info if it is
16701         part of the SIG_HANDLER_SIGNATURE.  
16702
16703 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
16704
16705         * mini.h mini.c: Add a new MONO_DEBUG option to collect metadata pagefault
16706         statistics.
16707
16708         * mini-x86.c (mono_arch_call_opcode): Fix vararg calling convention 
16709         introduced by previous patch.
16710
16711 2005-09-21  Zoltan Varga  <vargaz@gmail.com>
16712
16713         * tramp-x86.c (mono_arch_create_trampoline_code): Restore caller
16714         saved registers too.
16715
16716         * mini-x86.c (mono_arch_allocate_vars): Rewrite this so it works based 
16717         upon the information returned by get_call_info ().
16718         
16719         * mini-x86.c (add_float): Fix stack size calculation.
16720         (mono_arch_call_opcode): Rewrite this so it works based up the
16721         information returned by get_call_info ().
16722         (mono_arch_get_this_vret_args): Ditto.
16723
16724 2005-09-21  Zoltan Varga  <vargaz@freemail.hu>
16725
16726         * mini-amd64.c (mono_arch_emit_this_vret_args): Use the information
16727         in cinfo to determine the registers which need to be used.
16728
16729 2005-09-20  Miguel de Icaza  <miguel@novell.com>
16730
16731         * driver.c (mono_main): Add --server and --desktop flags. 
16732
16733 2005-09-16  Zoltan Varga  <vargaz@gmail.com>
16734
16735         * mini-ia64.h: Make register masks 64 bit. Don't treat argument
16736         registers as global registers.
16737
16738         * inssel-ia64.brg (stmt): Remove OP_OUTARG_REG () rules which are no 
16739         longer needed with the new register allocator.
16740
16741         * mini-ia64.c: Use OP_MOVE instead of OP_SETREG for reg-reg moves.
16742
16743         * cpu-ia64.md: Remove unused opcodes.
16744         
16745         * regalloc.c mini-codegen.c: Make register masks 64 bit on ia64.
16746         
16747 2005-09-16  Zoltan Varga  <vargaz@freemail.hu>
16748
16749         * cpu-amd64.md: Remove unused opcodes.
16750
16751         * inssel-amd64.brg: Remove OP_OUTARG_REG () rules which are no longer
16752         needed with the new register allocator.
16753
16754         * inssel-amd64.brg mini-amd64.c: Use OP_MOVE instead of OP_SETREG for
16755         reg-reg moves.
16756
16757 2005-09-16  Raja R Harinath  <rharinath@novell.com>
16758
16759         * Makefile.am (check-local): Don't invoke semdel-wrapper.
16760
16761 2005-09-16  Martin Baulig  <martin@ximian.com>
16762
16763         * exceptions-amd64.c
16764         (throw_exception): Don't call mono_debugger_throw_exception() if
16765         we're a rethrow - see the FIXME in the code.
16766
16767 2005-09-15  Geoff Norton  <gnorton@customerdna.com>
16768
16769         * mini.c (mono_init_exceptions): This only works on some architectures.
16770         
16771 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
16772
16773         * mini.c (mono_method_to_ir): Add OP_LMUL imm -> OP_LMUL_IMM conversion
16774         on ia64.
16775
16776         * inssel-long.brg mini-ia64.c: Add OP_LMUL_IMM rules.
16777
16778         * mini-ia64.h mini-ia64.c: Remove the altstack support code which is
16779         now in mini-exceptions.c.
16780
16781 2005-09-15  Zoltan Varga  <vargaz@freemail.hu>
16782
16783         * mini-amd64.h mini-am64.c: Remove the altstack support code which is
16784         now in mini-exceptions.c.
16785
16786 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
16787
16788         * exceptions-x86.c: Applied patch from Patrik Torstensson 
16789         <patrik.torstensson@gmail.com>. Add stack overflow handling support for win32.
16790
16791         * mini-exceptions.c mini-x86.c mini.c: Move the altstack setup/teardown
16792         code into mini-exceptions.c. Add some assertions to it.
16793
16794 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
16795
16796         * aot.c (emit_section_change): Applied patch from "The Software Team" 
16797         (<software@solmersa.com>). Fix as errors on windows.
16798
16799 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
16800
16801         * tramp-amd64.c (mono_arch_create_trampoline_code): Fix saving of
16802         method info into the LMF.
16803
16804 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
16805         
16806         * mini-ia64.c: Add proper unwind info for method epilogs.
16807
16808         * exceptions-ia64.c: Add some code to help debugging.
16809         
16810         * mini-ia64.c mini-ia64.h: Add sigaltstack support.
16811
16812         * mini-exceptions.c: Fix warning.
16813
16814 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
16815
16816         * mini.c: Really fix build.
16817
16818         * mini-x86.c mini-amd64.c: Fix build.
16819
16820 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
16821
16822         * mini-ia64.c inssel-ia64.brg: Add InterlockedExchange instrinsics.
16823
16824         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Implement
16825         some Interlocked methods as intrinsics.
16826
16827         * mini.c (mini_get_inst_for_method): Call arch_get_inst_for_method
16828         for Thread methods as well.
16829
16830         * mini-ops.h: Add OP_MEMORY_BARRIER opcode.
16831
16832         * inssel.brg: Add rule for OP_MEMORY_BARRIER.
16833
16834         * mini-ia64.c mini-x86.c mini-amd64.c 
16835         cpu-ia64.md cpu-pentium.md cpu-amd64.md: Add implementation of 
16836         OP_MEMORY_BARRIER.
16837         
16838         * mini.c (mono_init_exceptions): Fix build breakage.
16839
16840 2005-09-10  Zoltan Varga  <vargaz@gmail.com>
16841
16842         * mini-ia64.c exceptions-ia64.c tramp-ia64.c: Remove 'manual' emitting
16843         of instructions. Use the new ia64_unw_op macros for emitting unwind
16844         info.
16845
16846         * mini.c (mono_init_exceptions): Initialize exception handling
16847         related trampolines at startup.
16848
16849 Fri Sep 9 19:30:37 BST 2005 Paolo Molaro <lupus@ximian.com>
16850
16851         * cpu-arm.md, mini-arm.c: fix for dynamic code (Gtk# apps).
16852
16853 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
16854
16855         * mini.c: Handle type loading errors gracefully during compilation and
16856         throw the appropriate exception.
16857
16858 Fri Sep 9 09:49:14 CEST 2005 Paolo Molaro <lupus@ximian.com>
16859
16860         * ldscript.mono, Makefile.am: use anonymous versions in the ldscript
16861         for the mono binary.
16862
16863 2005-09-09  Martin Baulig  <martin@ximian.com>
16864
16865         * mini.c (mono_method_to_ir): Comment out the G_BREAKPOINT()'s for
16866         the release.
16867
16868 Thu Sep 8 14:53:45 BST 2005 Paolo Molaro <lupus@ximian.com>
16869
16870         * mini-arm.h: use emulation for conv.r.un for the release.
16871
16872 Thu Sep 8 11:28:45 BST 2005 Paolo Molaro <lupus@ximian.com>
16873
16874         * mini-arm.c, objects.cs: more fixes and tests for them.
16875
16876 Wed Sep 7 17:14:26 BST 2005 Paolo Molaro <lupus@ximian.com>
16877
16878         * mini-arm.c: align structures to at least 4 bytes to be able
16879         to keep our current optimized memcpy.
16880
16881 Tue Sep 6 22:51:08 BST 2005 Paolo Molaro <lupus@ximian.com>
16882
16883         * mini-arm.c, cpu-arm.md, inssel-arm.brg: bugfixes.
16884
16885 2005-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16886
16887         * mini.c: ignore SIGPIPE.
16888
16889 2005-09-04  Zoltan Varga  <vargaz@gmail.com>
16890
16891         * mini-ia64.c (mono_arch_lowering_pass): Convert 'and_imm 255' to zext1.
16892
16893         * mini-ia64.h mini-ia64.c: Add some minor optimizations.
16894
16895 2005-09-02  Zoltan Varga  <vargaz@gmail.com>
16896
16897         * mini.h: Add prototype for mono_allocate_stack_slots_full.
16898
16899 Thu Sep 1 21:05:26 BST 2005 Paolo Molaro <lupus@ximian.com>
16900
16901         * exceptions-arm.c, mini.c, mini-arm.c, mini-arm.h:
16902         exception handling support.
16903         * mini-arm.c, mini-arm.h: bigendian fixes (partially from a
16904         patch by Brian Koropoff <briank@marakicorp.com>).
16905
16906 Thu Sep 1 10:22:44 EDT 2005 Paolo Molaro <lupus@ximian.com>
16907
16908         * mini.c: revert another 'optimization' which breaks when
16909         items on the eval stack need to be saved at a basic block end
16910         (bug #75940).
16911
16912 Wed Aug 31 17:29:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
16913
16914         * jit-icalls.c: for arrays, ensure we always provide
16915         lower bounds.
16916
16917 2005-08-30  Zoltan Varga  <vargaz@gmail.com>
16918
16919         * mini.c (mono_allocate_stack_slots_full): Fix ia64 build.
16920         
16921         * mini.c (mini_get_inst_for_method): Special case Object:.ctor as well.
16922
16923 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
16924
16925         * mini-ia64.h mini-ia64.c: Implement frame pointer elimination. Keep
16926         arguments in their original register.
16927
16928 2005-08-28  Zoltan Varga  <vargaz@gmail.com>
16929
16930         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Optimize
16931         memset/memcpy.
16932
16933         * mini.c (mono_method_to_ir): Disable the MUL->MUL_IMM optimization
16934         when ssapre is enabled.
16935
16936         * inssel-long.brg: Fix bug in previous patch.
16937
16938         * mini-ia64.c mini-ia64.h mini.c inssel-long.brg: Optimize 
16939         multiplication by a constant.
16940
16941 2005-08-27  Zoltan Varga  <vargaz@gmail.com>
16942
16943         * mini-ia64.c (mono_arch_setup_jit_tls_data): Add support for intel
16944         icc.
16945
16946         * tramp-ia64.c (mono_arch_create_trampoline_code): Use st8.spill for
16947         saving registers.
16948
16949 Fri Aug 26 11:09:28 BST 2005 Paolo Molaro <lupus@ximian.com>
16950
16951         * inssel-arm.brg: apply changes tested by Brian Koropoff
16952         <briank@marakicorp.com>.
16953
16954 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
16955
16956         * mini-x86.c (mono_arch_emit_prolog): Fix calling of mono_jit_thread_attach () under windows.
16957         
16958 2005-08-24  Zoltan Varga  <vargaz@gmail.com>
16959
16960         * mini-codegen.c (mono_local_regalloc): Avoid allocating dreg and sreg1/2
16961         to the same register if dreg is just a base register.
16962         (print_ins): Improve printing of membase opcodes.
16963
16964         * inssel-x86.brg: Add optimized ldind(reg) rules.
16965
16966         * mini-x86.c cpu-pentium.md: Changes required to support the new rules.
16967
16968 Wed Aug 24 19:39:36 CEST 2005 Paolo Molaro <lupus@ximian.com>
16969
16970         * mini.c: when running under valgrind, set the stack bottom for
16971         the GC at the actual approximate stack for the app (fixes running
16972         mono with valgrind).
16973
16974 Tue Aug 23 21:38:50 CEST 2005 Paolo Molaro <lupus@ximian.com>
16975
16976         * mini.c: do no break at the first valuetype to init found
16977         (fixes bug #75791).
16978
16979 Tue Aug 23 16:53:21 BST 2005 Paolo Molaro <lupus@ximian.com>
16980
16981         * cpu-arm.md, mini-arm.c: more fixes and LMF support.
16982
16983 Tue Aug 23 15:11:44 CEST 2005 Paolo Molaro <lupus@ximian.com>
16984
16985         * cpu-g4.md: fixed instruction length exposed by the nemerle compiler.
16986
16987 2005-08-23  Zoltan Varga  <vargaz@freemail.hu>
16988
16989         * inssel-amd64.brg inssel-x86.brg: Fix the fcall rules.
16990
16991 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
16992
16993         * inssel-x86.brg: Fix assert in patch_delegate_trampoline.
16994
16995         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Add some debug
16996         code.
16997
16998         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Add some debug
16999         code.
17000
17001         * mini.c (optimize_branches): Don't quit after 1000 iterations on large
17002         methods.
17003
17004 Mon Aug 22 19:16:29 BST 2005 Paolo Molaro <lupus@ximian.com>
17005
17006         * tramp-arm.c: allocate less memory for the trampoline and fix typo.
17007
17008 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
17009
17010         * mini.c (mono_method_to_ir): Remove instructions inserted after a branch
17011         in the tail recursion optimization.
17012
17013         * mini.h helpers.c (mono_disassemble_code): Emit starts of basic blocks as 
17014         debug info into the assembly file.
17015
17016         * iltests.il: Add test for filter regions.
17017
17018         * mini.c (mono_method_to_ir): Fix handling of nested FILTER clauses. Fix
17019         initial stack of filter regions. Fixes #75755.
17020
17021 Mon Aug 22 17:49:16 BST 2005 Paolo Molaro <lupus@ximian.com>
17022
17023         * mini-arm.c, cpu-arm.c: fixes and support for methods with bigger
17024         stack requirements.
17025
17026 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
17027
17028         * mini.c (mono_create_delegate_trampoline): Fix memory leak. Put back
17029         the check for an already compiled method on non-ia64 platforms.
17030         (mono_create_jump_trampoline): Store the MonoJitInfo structure into the
17031         proper domain.
17032
17033         * mini-x86.h tramp-x86.c: Add support for delegate trampolines.
17034
17035         * inssel-x86.brg: Add some optimized call rules.
17036
17037 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
17038
17039         * mini.c (mono_create_delegate_trampoline): Do not return an already compiled
17040         method here.
17041
17042         * mini.h mini-trampolines.c: Pass the trampoline argument to 
17043         mono_arch_patch_delegate_trampoline.
17044
17045         * mini-ia64.h mini-ia64.c tramp-ia64.c: Add support for delegate trampolines.
17046
17047         * mini-trampolines.c: Fix build.
17048
17049         * mini-amd64.h: Add delegate trampolines.
17050
17051         * mini.h mini.c mini-trampolines.c tramp-amd64.c: Add delegate trampolines.
17052
17053         * inssel-amd64.brg: Add optimized call rules.
17054         
17055         * mini-ia64.c tramp-ia64.c: Improve instruction scheduling.
17056
17057         * inssel-ia64.brg: Add optimized ldind(reg) rules.
17058
17059 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
17060
17061         * mini.c (mono_create_class_init_trampoline): Fix bug caused by last
17062         change.
17063
17064         * mini-ia64.c: Remove LMF fixmes.
17065
17066         * mini-ia64.h: Remove most fields from LMF.
17067
17068         * inssel-ia64.brg (stmt): Fix unaligned access errors.
17069
17070         * mini-trampolines.c: Add support for IA64 function descriptors.
17071
17072         * mini.h mini.c jit-icalls.c exceptions-ia64.cdriver.c: Add support
17073         for IA64 function descriptors.
17074
17075 Sat Aug 20 16:51:44 BST 2005 Paolo Molaro <lupus@ximian.com>
17076
17077         * tramp-arm.c: patch the vtable for virtual calls. Added
17078         support code to register/unregister the LMF.
17079         * mini-arm.c, mini-arm.h: warning fixes, fixes, speedups,
17080         more LMF work.
17081
17082 2005-08-19  Dick Porter  <dick@ximian.com>
17083
17084         * mini.c: Use a gsize to store the thread ID, so it can hold a 64
17085         bit value if needed.
17086
17087 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
17088
17089         * mini.c (mini_get_method): Move handling of wrapper data here.
17090
17091         * mini.c (mono_method_to_ir): Add support for dynamic methods.
17092
17093         * mini.c (mono_method_to_ir): Convert nonvirtual calls to abstract methods into
17094         virtual.
17095
17096         * mini.c (mono_method_to_ir): Emit IR for CEE_NOP as well, so 
17097         bblock->code does not remain empty.
17098
17099 2005-08-17  Zoltan Varga  <vargaz@freemail.hu>
17100
17101         * arrays.cs: Add regression test for #75832.
17102
17103         * inssel-amd64.brg cpu-amd64.md mini-amd64.c: Fix LDELEMA optimization
17104         rules. Fixes #75832.
17105
17106         * mini-ia64.c tramp-ia64.c exceptions-ia64.c: Implement improved
17107         instruction scheduling.
17108
17109 2005-08-12  Zoltan Varga  <vargaz@freemail.hu>
17110
17111         * mini-exceptions.c (ves_icall_get_frame_info): Fix IA64 build.
17112
17113 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
17114
17115         * mini-exceptions.c mini-x86.h: Move VC stuff into macros in mini-x86.h.
17116
17117         * mini-codegen.c: Fix VC build.
17118
17119         * cpu-pentium.md: Increase length of atomic_exhange_i4.
17120
17121 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17122
17123         * mini.h: fix signature for mono_register_opcode_emulation.
17124
17125 2005-08-09  Zoltan Varga  <vargaz@freemail.hu>
17126
17127         * mini.c: Get rid of most of the helper_sig_... constants using
17128         mono_create_icall_signature ().
17129
17130 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
17131
17132         * jit-icalls.c (helper_ldstr): New helper function.
17133
17134         * mini.c (get_basic_blocks): Set out_of_line for bblocks containing a throw.
17135
17136         * mini.c (mono_method_to_ir): If an LDSTR instruction is in a bblock with a
17137         throw, load the string using a helper call instead of creating a string object.
17138
17139         * aot.c: Update after LDSTR changes.
17140
17141         * mini.h: Bump AOT file version.
17142         
17143         * aot.c: Save class size info into the AOT file. Print more statistics during
17144         compilation.
17145
17146         * mini.h: Bump AOT file version.
17147
17148         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
17149         ordering of disasm cases. Fixes #74957.
17150
17151 Thu Aug 4 19:47:24 BST 2005 Paolo Molaro <lupus@ximian.com>
17152
17153         * mini-ops.h, mini-arch.h, inssel.brg, mini.c, mini.h,
17154         jit-icalls.c, mini-codegen.c, Makefile.am: changes in
17155         the generic code needed for the ARM port.
17156
17157 Thu Aug 4 19:42:54 BST 2005 Paolo Molaro <lupus@ximian.com>
17158
17159         * exceptions-arm.c, tramp-arm.c, mini-arm.c, mini-arm.h, cpu-arm.md,
17160         inssel-arm.brg: more ARM features and fixes.
17161
17162 Mon Aug 1 18:37:38 BST 2005 Paolo Molaro <lupus@ximian.com>
17163
17164         * tramp-arm.c, mini-arm.c, cpu-arm.md, inssel-arm.brg: more
17165         ARM port work in progress.
17166
17167 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
17168
17169         * mini-ia64.c (mono_arch_call_opcode): Ongoing IA64 work.
17170
17171         * mini-exceptions.c mini-ia64.h: Ongoing IA64 work.
17172
17173         * mini-ia64.c (ia64_emit_bundle): Ongoing IA64 work.
17174
17175         * inssel.brg (mini_emit_memset): Add support for unaligned access.
17176
17177         * *-ia64.*: Ongoing IA64 work.
17178         
17179         * mini-ia64.c exceptions-ia64.c: Ongoing IA64 work.
17180
17181 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
17182
17183         * TODO: Remove out-of-data todo stuff.
17184
17185         * mini.h mini.c (mono_create_jit_trampoline_from_token): Remove some
17186         dead code.
17187
17188         * aot.c: Save/load MonoCachedClassInfo->has_nested_classes.
17189
17190         * mini.h: Bump corlib version.
17191
17192 2005-07-27  Martin Baulig  <martin@ximian.com>
17193
17194         * mini-codegen.c
17195         (create_copy_ins): Added `const unsigned char *ip' argument; set
17196         `copy->cil_code' from it.
17197
17198 2005-07-27  Martin Baulig  <martin@ximian.com>
17199
17200         * mini-exceptions.c (mono_handle_exception): Don't call
17201         mono_debugger_handle_exception() for filters.
17202
17203 2005-07-27  Zoltan Varga  <vargaz@freemail.hu>
17204
17205         * mini-trampolines.c (mono_aot_trampoline): Handle AppDomain:InvokeInDomain
17206         as well.
17207
17208 2005-07-26  Martin Baulig  <martin@ximian.com>
17209
17210         Committing a patch from Michal Moskal <michal.moskal@gmail.com>.
17211
17212         * mini.c (mono_method_to_ir): In `CEE_CALLI', only use
17213         helper_compile_generic_method() if the method is actually virtual
17214         and non-final.
17215
17216 2005-07-26  Martin Baulig  <martin@ximian.com>
17217
17218         * mini.c
17219         (trampoline_code): Renamed to `mono_trampoline_code' and made it
17220         public; this is now accessed directly by the debugger.
17221         (mono_generic_trampoline_code): Removed.
17222
17223         * debug-mini.c
17224         (mono_debug_init_method): Also add interncalls and wrappers.
17225
17226 2005-07-23  Zoltan Varga  <vargaz@freemail.hu>
17227
17228         * mini-ia64.c mini-ia64.h: Add support for tracing/profiling.
17229
17230 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
17231
17232         * aot.c (mono_aot_get_method_from_token): Fix a potential crash here.
17233
17234 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
17235
17236         * aot.c (load_patch_info): Fix handling of stfld_remote wrapper.
17237
17238 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
17239
17240         * mini-amd64.c (mono_arch_setup_jit_tls_data): Use the nice way of
17241         getting TLS offsets on AMD64 too.
17242
17243 2005-07-20  Kornel Pal <kornelpal@hotmail.com>
17244
17245         * driver.c: Detach console when executing IMAGE_SUBSYSTEM_WINDOWS_GUI on win32
17246
17247 Wed Jul 20 18:05:19 BST 2005 Paolo Molaro <lupus@ximian.com>
17248
17249         * exceptions-arm.c, mini-arm.c, tramp-arm.c, cpu-arm.md,
17250         inssel-arm.brg, mini-arm.h: ARM port work in progress.
17251
17252 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
17253
17254         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix build.
17255
17256         * mini.h mini.c mini-*.h tramp-*.c: Move more cross platform trampoline code
17257         to mini.c.
17258
17259         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Call 
17260         mono_sparc_is_virtual_call ().
17261         
17262         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix warning.
17263
17264         * tramp-sparc.c (mono_arch_create_trampoline_code): Fix order of
17265         trampoline parameters.
17266
17267         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix signature.
17268         
17269         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Rename this
17270         to mono_arch_get_vcall_slot_addr.
17271
17272         * Makefile.am tramp-sparc.c: Update the sparc port to use the generic
17273         trampoline code.
17274
17275         * *-sparc.*: Merge the mini-xp-regalloc branch for sparc.
17276
17277 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
17278
17279         * mini-ia64.h mini-ia64.c: Finish pinvoke support.
17280
17281 2005-07-19  Martin Baulig  <martin@ximian.com>
17282
17283         * exceptions-amd64.c (throw_exception): Call
17284         mono_debugger_throw_exception() here like we're doing it on i386.
17285
17286 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
17287
17288         * mini-ia64.c: Add optimized TLS access support.
17289
17290 2005-07-18  Zoltan Varga  <vargaz@freemail.hu>
17291
17292         * mini-exceptions.c: Ongoing IA64 work.
17293
17294         * mini-ia64.c inssel-long.brg: Ongoing IA64 work.
17295
17296         * mini.c: Use the default optimization set when embedding. Fixes
17297         #75194.
17298
17299 2005-07-11  Zoltan Varga  <vargaz@freemail.hu>
17300
17301         * tramp-amd64.c tramp-ia64.c Makefile.am: Move arch independent parts 
17302         of trampolines to a separate file.
17303
17304         * mini-trampolines.c: New file.
17305
17306         * mini.h tramp-x86.c: Move arch independent parts of trampolines to a 
17307         separate file.
17308         
17309         * tramp-x86.c: Reorganize the trampoline code to be similar to the 
17310         amd64/ia64 code.
17311
17312         * mini-codegen.c: Fix cygwin build.
17313
17314 2005-07-10  Zoltan Varga  <vargaz@freemail.hu>
17315
17316         * mini.c: Add some minor changes needed by the IA64 port.
17317
17318         * *-ia64.*: Ongoing IA64 work.
17319
17320 2005-07-09  Zoltan Varga  <vargaz@freemail.hu>
17321
17322         * tramp-amd64.c mini-amd64.c: Update after latest AOT changes. Split 
17323         trampolines into arch-independent and arch-dependent parts.
17324
17325         * mini-amd64.c (mono_arch_lowering_pass): Fix store_membase_imm -> store_membase_reg rule.
17326
17327 2005-07-08  Zoltan Varga  <vargaz@freemail.hu>
17328
17329         * cpu-amd64.md: Merge the xp-regalloc-branch for amd64.
17330
17331         * mini-ops.h mini-amd64.h mini-amd64.c inssel-amd64.brg Makefile.am: Merge
17332         the xp-regalloc-branch for amd64.
17333
17334         * mini-x86.h mini-x86.c cpu-pentium.md Makefile.am: Merge the
17335         xp-regalloc-branch for x86.
17336
17337 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
17338
17339         * inssel.brg (OP_THROW_OR_NULL): Allways rethrow the abort exception.
17340
17341 2005-07-06  Martin Baulig  <martin@ximian.com>
17342
17343         * mini.c
17344         (mono_jit_compile_method_inner): Call mono_get_inflated_method().
17345         (mono_jit_runtime_invoke): Likewise.
17346
17347 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
17348
17349         * aot.c (mono_compile_assembly): Allocate the GOT in the .bss segment
17350         on x86 too.
17351         
17352         * aot.c: Add new mono_aot_get_method_from_token () function to load AOT methods
17353         without loading their metadata. Reorganize the file format so exception handling+
17354         debug info is kept separate from normal method info. Create MonoJitInfo 
17355         structures for methods lazily.
17356
17357         * tramp-x86.c (x86_aot_trampoline): Use the new from_token method to avoid
17358         loading metadata.
17359         (x86_class_init_trampoline): Patch AOT class init trampolines too.
17360
17361         * mini.c (mini_init): Install the new mono_aot_find_jit_info hook.
17362
17363         * mini.c (mono_method_to_ir): Reduce the number of class init trampoline calls
17364         in AOT code.
17365
17366         * mini.h: Bump AOT file version.
17367
17368 2005-07-04  Zoltan Varga  <vargaz@freemail.hu>
17369
17370         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
17371
17372 2005-07-01  Raja R Harinath  <rharinath@novell.com>
17373
17374         * Makefile.am (check-local): Call semdel-wrapper.
17375
17376 2005-06-29  Zoltan Varga  <vargaz@freemail.hu>
17377
17378         * mini-x86.c: Revert the last change as it seems to break the build..
17379
17380 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
17381
17382         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
17383         
17384         * mini-x86.c (mono_arch_cpu_init): Fix setting of fp precision in the VC build.
17385
17386 2005-06-27  Ben Maurer  <bmaurer@ximian.com>
17387
17388         * mini.c (NEW_AOTCONST): make sure to call mono_get_got_var
17389         outside of the macro, so strange stuff doesn't happen with gcc4
17390         (NEW_AOTCONST_TOKEN): Likewise.
17391
17392 2005-06-28  Martin Baulig  <martin@ximian.com>
17393
17394         * mini.c (mini_class_is_system_array): New static method; use this
17395         instead of `klass->parent == mono_defaults.array_class' everywhere
17396         since this also works for the new generic array class.
17397
17398 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
17399
17400         * inssel.brg: Remove warnings.
17401
17402 2005-06-24  Zoltan Varga  <vargaz@freemail.hu>
17403
17404         * mini-ia64.c: Ongoing IA64 work.
17405
17406         * basic-float.cs: Add float->i1 conversion test.
17407
17408         * iltests.il: Add conv.u4 test.
17409
17410 2005-06-23  Zoltan Varga  <vargaz@freemail.hu>
17411
17412         * inssel-long.brg: Fix bug caused by last change.
17413
17414 2005-06-23  Geoff Norton  <gnorton@customerdna.com>
17415
17416         * mini-x86.h: Add __APPLE__ to the SC_* redefines with the other 
17417         BSDs.  Allows the x86 JIT to work on OSX86
17418
17419 2005-06-22  Zoltan Varga  <vargaz@freemail.hu>
17420
17421         * inssel-long.brg: Use OP_LSHR_UN_IMM instead of OP_SHR_UN_IMM in
17422         u4->i8 conversion.
17423
17424         * mini-ia64.c: Ongoing IA64 work.
17425
17426 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
17427
17428         * mini-ia64.c: Ongoing IA64 work.
17429
17430         * driver.c: Clean up jit_code_hash as well when using --regression.
17431
17432         * inssel-long.brg: Fix long->i4/u4 conversion rules.
17433
17434         * basic-long.cs: Add tests for long->u4 conversion.
17435
17436 2005-06-18  Ben Maurer  <bmaurer@ximian.com>
17437
17438         * mini.c: Take mono_get_domainvar out of macros. This makes sure
17439         that we do not depend on undefined C behavior: the order stuff
17440         gets evaluated within an expression. Fixes mono when compiled on
17441         GCC 4.
17442
17443 2005-06-18  Zoltan Varga  <vargaz@freemail.hu>
17444
17445         * *-ia64.*: Ongoing IA64 work.
17446
17447         * aot.c: Lower memory usage while loading AOT methods.
17448
17449         * tramp-x86.c: Avoid allocating+freeing MonoJitInfo structures.
17450
17451         * mini.h: Bump AOT file format version.
17452
17453 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
17454
17455         * mini.c (mono_method_to_ir): Allow STACK_PTR as input to SWITCH.
17456
17457 2005-06-16  Sebastien Pouliot  <sebastien@ximian.com>
17458
17459         * declsec.c: Fixed APTC to check for FullTrust on caller assembly (and
17460         not on callee assembly). Fixed some comments.
17461
17462 2005-06-16  Zoltan Varga  <vargaz@freemail.hu>
17463
17464         * aot.c (mono_compile_assembly): Mark the "methods" symbol as a function so
17465         it gets proper disassembly.
17466         (emit_method_info): Remove some dead code.
17467
17468         * mini.c (mini_method_compile): Allways allocate the GOT var in
17469         mono_method_to_ir for emulating opcodes.
17470
17471 2005-06-13  Zoltan Varga  <vargaz@freemail.hu>
17472
17473         * mini.c (mono_jit_free_method): Remove the method from the JitInfo table
17474         before freeing the code memory. Fixes #74990.
17475
17476         * objects.cs: Add regression test for #74992.
17477
17478         * liveness.c: Extend live ranges of arguments to the beginning of the
17479         method. Fixes #74992.
17480
17481         * exceptions-ia64.c mini-ia64.h: Modify ip during exception handling
17482         so it points into the faulting instruction.
17483
17484 2005-06-12  Zoltan Varga  <vargaz@freemail.hu>
17485
17486         * jit-icalls.c (mono_imul_ovf): Add exception handling.
17487
17488         * *-ia64.*: Ongoing IA64 work.
17489
17490         * mini.c (mini_init): Fix signature of mono_delegate_ctor.
17491
17492 2005-06-11  Zoltan Varga  <vargaz@freemail.hu>
17493
17494         * mini-ia64.h exceptions-ia64.c: Ongoing IA64 work.
17495
17496         * *-ia64.*: Ongoing IA64 work.
17497
17498 2005-06-10  Zoltan Varga  <vargaz@freemail.hu>
17499
17500         * basic-long.cs: Add tests for add/sub.ovf.
17501
17502         * basic.cs: Add tests for sub.ovf.
17503
17504         * *-ia64.*: Ongoing IA64 work.
17505
17506 2005-06-09  Zoltan Varga  <vargaz@freemail.hu>
17507
17508         * *-ia64.*: Ongoing IA64 work.
17509
17510         * basic.cs: Add conv.ovf.i4.un test.
17511
17512 2005-06-09  Massimiliano Mantione  <massi@ximian.com>
17513
17514         * mini.c: (remove_block_if_useless) Fixed bug 75061.
17515         
17516 2005-06-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17517
17518         * mini.c: no SIGUSR2 on windows. Remove it for PLATFORM_WIN32.
17519
17520 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
17521
17522         * *-ia64.*: Ongoing IA64 work.
17523
17524 2005-06-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17525
17526         * trace.[ch]:
17527         * mini.c: added the ability to toggle trace on/off using SIGUSR2.
17528
17529 2005-06-04  Zoltan Varga  <vargaz@freemail.hu>
17530
17531         * mini-ia64.c mini-ia64.h: Fix cleanup of memory stack.
17532
17533 2005-06-03  Zoltan Varga  <vargaz@freemail.hu>
17534
17535         * mini-amd64.c (emit_call): Fix yet another bug in the near call optimization.
17536
17537         * mini-amd64.c (amd64_patch): Add an assert to check that the destination
17538         of a call is callable by a near call.
17539
17540 2005-05-31  Zoltan Varga  <vargaz@freemail.hu>
17541
17542         * mini-ia64.c: Ongoing IA64 work.
17543
17544 2005-05-29  Zoltan Varga  <vargaz@freemail.hu>
17545
17546         * genmdesc.c: Make the generated array non-static.
17547
17548         * inssel-long.brg: Fix LSHR_IMM rule.
17549
17550         * *-ia64.*: Ongoing IA64 work.
17551
17552         * *-ia64.*: Ongoing IA64 work.
17553
17554 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
17555
17556         * *-ia64.*: Ongoing IA64 work.
17557
17558         * *-ia64.*: Ongoing IA64 work.
17559         
17560         * mini-ia64.c: Ongoing IA64 work.
17561
17562         * *-ia64.* jit-icalls.c mini-codegen.c: Ongoing IA64 work.
17563
17564 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
17565
17566         * objects.cs basic-calls.cs: Move some tests to objects.cs.
17567         
17568         * objects.cs basic-long.cs: Move some tests to objects.cs.
17569
17570 2005-05-26  Zoltan Varga  <vargaz@freemail.hu>
17571
17572         * *-ia64.*: Ongoing IA64 work.
17573
17574         * iltests.il: Add a new test.
17575
17576         * mini.c (mono_method_to_ir): Initialize valuetypes when created using
17577         newobj. Fixes #75042.
17578
17579 2005-05-22  Zoltan Varga  <vargaz@freemail.hu>
17580
17581         * *-ia64.*: Ongoing IA64 work.
17582         
17583         * *-ia64.*: Ongoing IA64 work.
17584         
17585         * *-ia64.*: Ongoing IA64 work.
17586
17587         * basic.cs objects.cs: Move tests accessing static variables as well.
17588
17589         * basic.cs objects.cs: Move test_0_pin_string to objects.cs.
17590
17591 2005-05-21  Zoltan Varga  <vargaz@freemail.hu>
17592
17593         * mini.c (SIG_HANDLER_SIGNATURE): Fix warning.
17594
17595         * driver.c: Always print failed tests.
17596
17597         * mini-codegen.c: Use cfg->frame_reg instead of a macro for the
17598         frame pointer.
17599
17600         * *ia64*: Ongoing IA64 work.
17601
17602 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
17603
17604         * basic.cs: Add tests for add.ovf. Fix warnings.
17605
17606 2005-05-18  Miguel de Icaza  <miguel@novell.com>
17607
17608         * driver.c (mono_main): Avoid crash if no argument is passed to
17609         --break;  Do not use g_error, but f_printf.   And fix all other
17610         ocurrences of the same crash.
17611
17612 2005-05-17  Zoltan Varga  <vargaz@freemail.hu>
17613
17614         * mini.h mini.c: Generalize the existing uses of the MONO_DEBUG env variable
17615         and add a new one: aborting when a SIGSEGV is raised while in unmanaged code.
17616         Fixes #74742.
17617
17618 2005-05-14  Zoltan Varga  <vargaz@freemail.hu>
17619
17620         * *-ia64.*: Add beginnings of IA64 backend.
17621
17622         * Makefile.am mini-arch.h mini-codegen.c: Add IA64 support.     
17623
17624 2005-05-13  Zoltan Varga  <vargaz@freemail.hu>
17625
17626         * inssel-long.brg: Add missing ulong->{i1, i2} checked conversions.
17627         Fixes #74925.
17628
17629         * basic-long.cs exceptions.cs: Add new tests. Fix some warnings.
17630
17631         * mini-amd64.c: Fix a warning.
17632
17633 2005-05-10  Zoltan Varga  <vargaz@freemail.hu>
17634
17635         * mini-amd64.c (mono_arch_output_basic_block): Fix stack space leakage
17636         in float_neg. Fixes #74897.
17637
17638         * mini-amd64.c (emit_call): Fix another near call bug.
17639
17640 2005-05-06  Sebastien Pouliot  <sebastien@ximian.com>
17641
17642         * declsec.c: Keep the appdomain information in the structure. Added a 
17643         missing "return FALSE" for Unmanaged if FullTrust is set (or else the
17644         value gets overwritten).
17645         * declsec.h: Set the default MonoArray for the the stack to 6. Added
17646         an MonoAppDomain member to MonoSecurityFrame.
17647         * mini-exceptions.c: Do not use a glist to keep GC allocated objects
17648         used in the stack walk. Now use a MonoArray which grow (double) when
17649         it gets full.
17650
17651 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
17652
17653         * mini.c: Re-enabled runtime cleanup, since running threads should
17654         now properly stop when exiting.
17655
17656 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
17657
17658         * mini-codegen.c: New file contaning the arch-independent local
17659         register allocator. Not used by any architectures yet.
17660
17661         * mini.h linear-scan.c: Merge some changes from the 
17662         mini-xp-local-regalloc branch.
17663
17664 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
17665
17666         * mini-amd64.c (emit_call): Fix calls to native functions when the
17667         runtime is compiled as a shared library. Fixes #74756.
17668
17669         * mini.c (mono_method_to_ir): Assert if ldsfld and friends are used
17670         on a literal field. Fixes #74751.
17671
17672 2005-04-25  Raja R Harinath  <rharinath@novell.com>
17673
17674         * Makefile.am (RUNTIME): Add MONO_CFG_DIR.
17675
17676 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
17677
17678         * objects.cs: Add missing null casting test.
17679
17680 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
17681
17682         * mini-exceptions.c (mono_find_jit_info): Fix native offset calculation
17683         in wrapper methods. Also rename 'address' variable to 'offset'.
17684
17685 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
17686
17687         * mini.c debug-mini.c aot.c tramp-x86.c driver.c: Fix some gcc 4.0
17688         warnings.
17689         
17690         * Makefile.am (MCS): Use -unsafe instead of --unsafe.
17691
17692         * aot.c: Applied patch from "The Software Team" <software@solmersa.com>. Make AOT compilation
17693         work on windows.
17694
17695 Mon Apr 18 16:20:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
17696
17697         * exceptions-ppc.c: update code to handle stack traces (fixes bug #74452).
17698
17699 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
17700
17701         * mini-x86.c (mono_emit_stack_alloc): Initialize the whole allocated area not
17702         just the last bytes.
17703
17704 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
17705
17706         * aot.c (mono_compile_assembly): Fix warning.
17707
17708         * mini-exceptions.c (ves_icall_get_frame_info): Fix bug introduced
17709         by the _MSC_VER stuff.
17710
17711 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
17712
17713         * inssel-long.brg: Fix #74588.
17714
17715         * cpu-amd64.md: Fix #74591.
17716
17717         * iltests.il: Add new regression tests.
17718
17719 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
17720
17721         * trace.c (mono_trace_enter_method): Print enums as an int, not as a
17722         valuetype.
17723
17724 2005-04-11  Zoltan Varga  <vargaz@freemail.hu>
17725
17726         * mini-x86.c (setup_stack): Unconditionally call pthread_attr_init ().
17727
17728         * exceptions-x86.c mini-x86.h mini-x86.c: Applied some freebsd patches 
17729         from Bill Middleton <flashdict@gmail.com>.
17730
17731 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
17732
17733         * arrays.cs: Add new regression test. Fix warnings.
17734
17735 2005-04-09  Zoltan Varga  <vargaz@freemail.hu>
17736
17737         * mini-amd64.c (mono_arch_output_basic_block): Fix stack alignment
17738         and leakage in CKFINITE.
17739
17740         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Change
17741         this to a null op since it is called on amd64 too.
17742
17743         * exceptions-amd64.c (get_throw_trampoline): Align stack.
17744
17745         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Remove
17746         body since this is not used on amd64.
17747         
17748         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Remove duplicate define.
17749
17750         * mini-amd64.c: Remove obsolete fixmes.
17751
17752         * mini.c (print_method_from_ip): Fix debugging support.
17753
17754 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
17755
17756         * ssapre.c: Fix a subtle bug about availability, and limit SSAPRE
17757         so that expressions that don't give much gain are not reduced.
17758         * ssapre.h: Likewise.
17759
17760 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
17761
17762         * exceptions-x86.c (mono_arch_find_jit_info): Remove last SC_EBP reference.
17763
17764         * mini-x86.c (mono_emit_stack_alloc): Fix localloc under windows.
17765
17766         * mini-x86.h exceptions-x86.c: Hopefully fix compilation on *BSD.
17767
17768 2005-04-01  Zoltan Varga  <vargaz@freemail.hu>
17769
17770         * mini-sparc.c mini-sparc.h: Add asserts when running with sigaltstack.
17771
17772         * exceptions-x86.c (mono_arch_monoctx_to_sigctx): Fix cygwin build.
17773
17774 2005-03-31  Zoltan Varga  <vargaz@freemail.hu>
17775
17776         * mini-x86.c: If sigaltstack support is enabled, perform win32 style
17777         stack touching.
17778
17779         * mini.h (mono_arch_sigctx_to_monoctx): New arch-specific function.
17780
17781         * mini.h (mono_arch_monoctx_to_sigctx): New arch-specific function.
17782
17783         * mini.c: sigaltstack support requires MONO_ARCH_USE_SIGACTION.
17784
17785         * mini-x86.h mini-x86.c exceptions-x86.c: Add support for 
17786         MONO_ARCH_USE_SIGACTION. Fixes #74252.
17787
17788         * mini-x86.h: Enable MONO_ARCH_USE_SIGACTION on linux.
17789
17790         * mini-x86.c: Fix up stack overflow handling.   
17791
17792         * exceptions.cs: Add new regression test.
17793
17794 2005-03-30  Zoltan Varga  <vargaz@freemail.hu>
17795
17796         * mini-x86.c (mono_arch_emit_prolog): Adjust stack after calls to
17797         mono_jit_thread_attach.
17798
17799         * mini.c (mono_method_to_ir): Verify called method is not abstract.
17800
17801 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
17802
17803         * mini.c (mono_method_to_ir): Applied Ben's patch from bug #61441 to
17804         avoid calling constructors using callvirt.
17805
17806         * inssel.brg: Fix #74073.
17807
17808 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
17809
17810         * aot.c, mini.h: Added mono-compiler.h header to allow/ease 
17811         compilation with non-GCC compilers.
17812         * mini-exceptions.c, mini-x86.c|h: Patches to make compilation of mono
17813         possible using VS.NET. Adapted from the work of J Lothian (for VC6).
17814
17815 Tue Mar 29 11:43:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
17816
17817         * inssel.brg, arrays.cs: fix long standing 64 bit issue in access to
17818         klass->interface_offsets (will likely fix bug#74073).
17819
17820 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
17821
17822         * mini-amd64.c (mono_arch_is_int_overflow): Fix rex handling.
17823
17824 2005-03-28  Zoltan Varga  <vargaz@freemail.hu>
17825
17826         * mini-amd64.c (mono_arch_output_basic_block): Fix order of parameters
17827         to amd64_div_reg_size ().
17828         
17829         * mini-amd64.c (mono_arch_emit_exceptions): Emit a near call here too.
17830
17831 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
17832
17833         * cpu-amd64.md (store_membase_reg): Fix length of storer8 opcodes.
17834
17835 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
17836
17837         * driver.c: Turn off automatic command line globbing under windows. Fixes #73763.
17838
17839 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
17840
17841         * mini.c (mono_method_to_ir): Remove debugging stuff left in by mistake.
17842         
17843         * mini.c (mono_precompile_assembly): Load and precompile referenced
17844         assemblies as well. Fixes #74015.
17845
17846 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
17847
17848         * cpu-amd64.md (sin): Fix up maximum lengths of some opcodes.
17849
17850 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
17851
17852         * declsec.c: Skip linkdemand checks for intra-corlib calls. This skips
17853         a lot of checks and (anyway) permissions cannot work until corlib is 
17854         loaded.
17855
17856 Wed Mar 23 14:29:49 CET 2005 Paolo Molaro <lupus@ximian.com>
17857
17858         * mini-ppc.c: fixed ABI issue on sysv/ppc.
17859
17860 Tue Mar 22 19:03:17 CET 2005 Paolo Molaro <lupus@ximian.com>
17861
17862         * tramp-ppc.c, exceptions-ppc.c: added missing icache flush
17863         calls (fixes bug#72824).
17864
17865 Tue Mar 22 16:28:48 CET 2005 Paolo Molaro <lupus@ximian.com>
17866
17867         * mini.c: fix tail recursion elimination (see test in bug#73936).
17868
17869 2005-03-21  Zoltan Varga  <vargaz@freemail.hu>
17870
17871         * mini-amd64.c (mono_arch_output_basic_block): Add inline versions of
17872         some fp functions in sse2 mode.
17873
17874 2005-03-20  Zoltan Varga  <vargaz@freemail.hu>
17875
17876         * mini-x86.c (emit_tls_get): Move tls handling into a separate helper function.
17877
17878 2005-03-19  Zoltan Varga  <vargaz@freemail.hu>
17879
17880         * mini.h mini.c: Add mono_get_jit_tls_key ().
17881
17882         * mini-x86.c: Enable fast TLS support on windows.
17883
17884 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
17885
17886         * declsec.c: Renamed aptc to allowpartiallytrustedcallers.
17887         * mini.c: Check for p/invoke method when generating code. If a
17888         p/invoke method, or it's class, isn't decorated with [Suppress
17889         UnmanagedCodeSecurity] then generate code to call System.Security.
17890         UnmanagedDemand (only if the security manager is active).
17891
17892 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
17893
17894         * tramp-amd64.c (create_specific_trampoline): Revert parts of the 
17895         last change as it seems to cause strange crashes.
17896         
17897 Wed Mar 16 16:24:11 CET 2005 Paolo Molaro <lupus@ximian.com>
17898
17899         * *.c: handle unsafe function pointers where needed.
17900
17901 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
17902
17903         * mini.c (mono_jit_free_method): Remove the fixme too.
17904
17905 2005-03-15  Miguel de Icaza  <miguel@novell.com>
17906
17907         * mini.c: As discussed, make the code actually free the delegate
17908         thunk now, to enable the debugging of delegate problems, use
17909         MONO_DEBUG=1 when running Mono. 
17910
17911         This takes also care of parts of the leaks as seen by Joe.
17912
17913 2005-03-15  Zoltan Varga  <vargaz@freemail.hu>
17914
17915         * mini-amd64.c (mono_arch_setup_jit_tls_data): Enable 
17916         thread_tls_offset calculation.
17917
17918 2005-03-14  Sebastien Pouliot  <sebastien@ximian.com>
17919
17920         * declsec.c: Reworked linkdemand checks for icall. The previous code
17921         was using the declaration code (untrusted) and didn't work as expected
17922         with the CLR 2.0. We're now more compatible with 2.0 than 1.x for this
17923         specific case.
17924
17925 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
17926
17927         * iltests.il: Add new localloc test.
17928
17929         * mini-amd64.c: Handle large stack allocations the same way as on
17930         windows if stack overflow handling is working.
17931         
17932         * mini-amd64.c: Allocate the signal stack using mmap.
17933
17934         * mini.c (sigsegv_signal_handler): Fix reading of context.
17935
17936         * mini-exceptions.c: Fix up stack overflow handling.
17937
17938         * mini-amd64.h mini-amd64.c: Fix up stack overflow handling.
17939
17940         * tramp-amd64.c (create_specific_trampoline): Optimize trampoline size.
17941
17942         * exceptions-amd64.c (mono_amd64_exceptions_init): Remove this.
17943
17944         * mini.h mini.c tramp-*.c: Move common trampoline code to mini.c.
17945
17946         * mini-x86.h mini-x86.c mini-amd64.h mini-amd64.c: Get rid of the
17947         tramp_init functions as they are no longer needed.
17948
17949 2005-03-12  Zoltan Varga  <vargaz@freemail.hu>
17950
17951         * tramp-amd64.c (mono_amd64_tramp_init): Fix typo.
17952         
17953         * tramp-amd64.c (mono_amd64_tramp_init): Init AOT trampoline as well.
17954
17955         * mini-amd64.h mini-amd64.c (mono_amd64_exceptions_init): Remove this.
17956         
17957         * mini.c mini-*.h: Remove OUT_OF_LINE_BBLOCK defines since all arches
17958         support that now.
17959
17960         * mini-ops.h: Add OP_LMUL_IMM.
17961
17962         * mini.c jit-icalls.cmini-amd64.h mini-amd64.c cpu-amd64.md: Implement
17963         long mul/div opcodes as intrinsic.
17964
17965         * mini-amd64.c (emit_call): Handle the case when the callee might be
17966         an AOT method.
17967
17968 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
17969
17970         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Reorder cases to be
17971         extra safe.
17972         
17973         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Fix ordering of cases.
17974
17975         * aot.c (mono_aot_load_method): Get rid of bogus make_writable call.
17976
17977 2005-03-09  Ben Maurer  <bmaurer@ximian.com>
17978
17979         * mini.c (mono_codegen): Don't leak here, to help people running
17980         monogrind.
17981
17982 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
17983
17984         * mini-amd64.c (mono_arch_output_basic_block): Fix int->float 
17985         conversions in sse2 mode.
17986
17987         * basic-float.cs: Add regression test.
17988         
17989         * mini-amd64.c: Reenable sse2.
17990
17991 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
17992
17993         * mini-amd64.c: Disable sse2 until some regressions are fixed.
17994
17995 2005-03-07      Joerg Rosenkranz <joergr@voelcker.com>
17996
17997         * driver.c: Copyright text should include 2005.
17998         
17999 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
18000
18001         * cpu-amd64.md (load_membase): Fix more max lengths.
18002
18003 2005-03-06  Zoltan Varga  <vargaz@freemail.hu>
18004
18005         * cpu-amd64.md (load_membase): Fix max length.
18006
18007         * mini-ops.h: Add OP_F<xx>_MEMBASE opcodes.
18008
18009         * inssel.brg: Add MONO_EMIT_BIALU_MEMBASE macro.
18010
18011         * cpu-amd64.md inssel-amd64.brg mini-amd64.h mini-amd64.brg: Finish SSE2
18012         support and enable it by default. Also add OP_F<xxx>_MEMBASE opcodes.
18013
18014         * basic-float.cs: Add rounding regression test.
18015
18016         * mini-amd64.c (INST_IGNORES_CFLAGS): Add more instructions.
18017
18018 2005-03-04  Neale Ferguson <NealeFerguson@earthlink.net>
18019
18020         * inssel-s390.brg, mini-s390.c: Add support for passing/returning small
18021         structures in registers for pinvoke wrappers.
18022
18023 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
18024
18025         * mini-exceptions.c (ves_icall_get_trace): Return wrapper info as well.
18026
18027 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
18028
18029         * mini.h mini.c mini-x86.c: Pass the domain of the native->managed
18030         wrapper to mono_jit_thread_attach.
18031
18032         * mini.c (mini_jit_thread_attach): New jit icall.
18033
18034         * mini-x86.c (mono_arch_emit_prolog): Attach to the VM in 
18035         native->managed wrappers.
18036
18037         * exceptions.cs: Add new regression test.
18038
18039         * mini.c (optimize_branches): Check regions in the cbranch to throw
18040         block case as well. Fixes #73242.
18041
18042 Tue Mar 1 18:35:27 CET 2005 Paolo Molaro <lupus@ximian.com>
18043
18044         * mini.c: thread safety fixes.
18045
18046 2005-02-27  Zoltan Varga  <vargaz@freemail.hu>
18047
18048         * tramp-amd64.c (amd64_magic_trampoline): Disable the method_ptr
18049         patching stuff, since delegates use jump trampolines so there is
18050         no caller.
18051
18052         * tramp-amd64.c (create_trampoline_code): Pass NULL as 'code' in 
18053         jump trampolines.
18054         
18055         * tramp-amd64.c: Fix build.
18056
18057         * mini-x86.c tramp-x86.c: Moved get_vtable_slot_addr into mini-x86.c and rename
18058         it to mono_arch_.... Add get_delegate_method_ptr implementation for x86.
18059
18060         * mini-amd64.h mini.h mini-amd64.c tramp-amd64.c (mono_amd64_get_vcall_slot_addr):
18061         Rename this to mono_arch....
18062         (mono_amd64_get_delegate_method_ptr_addr): Ditto.
18063
18064         * mini-amd64.c (mono_amd64_get_delegate_method_ptr_addr): New helper function.
18065
18066         * mini-amd64.c (emit_call): If both the caller and the callee is
18067         guaranteed to have 32 bit addresses, emit a normal call.
18068
18069         * tramp-amd64.c: Adapt to changes in mini-amd64.c.
18070
18071         * tramp-amd64.c (amd64_magic_trampoline): Remove patching of trampolines. 
18072         * tramp-amd64.c (amd64_magic_trampoline): Add support for patching the
18073         method_ptr inside delegates.
18074
18075 2005-02-26  Zoltan Varga  <vargaz@freemail.hu>
18076
18077         * mini.c (mono_jit_free_method): Free the method info even if the native code is
18078         invalidated. Fixes #73001.
18079
18080         * mini.c: Add a proper icall wrapper for mono_delegate_ctor.
18081
18082         * mini-x86.c: Only use stdcall for pinvokes on windows.
18083
18084 Thu Feb 24 15:22:30 CET 2005 Paolo Molaro <lupus@ximian.com>
18085
18086         * mini.c, mini.h: make mono_lmf_addr a fast-access thread var.
18087         * mini-x86.c: remove unreliable __thread var offset detection,
18088         use the correct accessors and enable by default.
18089
18090 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
18091
18092         * mini.c (mono_jit_free_method): Fix memory leak.
18093
18094 2005-02-22  Zoltan Varga  <vargaz@freemail.hu>
18095
18096         * mini.c (mono_method_to_ir): Allocate a GOT var for THROW and RETHROW. 
18097
18098 2005-02-21  Zoltan Varga  <vargaz@freemail.hu>
18099
18100         * cpu-amd64.md: Fix lengths of atomic opcodes.
18101
18102 Mon Feb 21 16:52:20 CET 2005 Paolo Molaro <lupus@ximian.com>
18103
18104         * driver.c: try to not imply using ICU is any good.
18105
18106 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
18107
18108         * mini-amd64.c (mono_arch_get_inst_for_method): Implement more 
18109         functions as inline ops.
18110
18111         * mini-ops.h inssel-amd64.brg cpu-amd64.md mini-amd64.c: Implement
18112         some Interlocked functions as inline ops.
18113
18114         * mini.c (move_basic_block_to_end): Fix bug in last patch.
18115
18116         * mini.h (MonoBasicBlock): Reorganize fields a bit.
18117
18118         * mini-ops.h inssel.brg: Add OP_NOT_REACHED.
18119
18120         * mini.c: Add support for OP_NOT_TAKEN.
18121
18122         * mini-amd64.h mini-amd64.c: Add support for passing/returning small 
18123         structures in registers for pinvoke wrappers.
18124
18125         * mini-amd64.c: Fix warnings.
18126
18127 2005-02-19  Zoltan Varga  <vargaz@freemail.hu>
18128
18129         * mini.h (MonoCompile): Add 'ret_var_is_local' field.
18130
18131         * mini.h mini.c (mono_arch_create_vars): Add new arch specific hook.
18132
18133         * mini.c (NEW_RETLOADA): If the ret variable is a local, use its 
18134         address instead of loading the address from it.
18135
18136         * mini-x86.c: Add support for returning small structs in registers
18137         on Win32. Fixes part of #70864.
18138         
18139 2005-02-18  Zoltan Varga  <vargaz@freemail.hu>
18140
18141         * trace.c (get_token): Improve error checking.
18142
18143 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
18144
18145         * jit-icalls.c (mono_ldvirtfn): Explicitly check for a NULL obj here.
18146
18147 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com> 
18148  
18149         * mini.h: Moved MONO_EXCEPTION_* enum to metadata/class-internals.h so
18150         it can be reused for MonoClass.
18151         * mini.c: Renamed MONO_EXCEPTION_SECURITY to MONO_EXCEPTION_SECURITY
18152         _LINKDEMAND.
18153
18154 2005-02-15  Sebastien Pouliot  <sebastien@ximian.com>
18155
18156         * mini.c: Fixed 2 cases where I sent a MonoMethod to managed code 
18157         instead of a MonoReflectionMethod. The method information wasn't used
18158         when displaying SecurityException details (but will be now).
18159
18160 2005-02-15  Atsushi Enomoto  <atsushi@ximian.com>
18161
18162         * Makefile.am : windows build fix.
18163
18164 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
18165
18166         * iltests.il: Add new regression test.
18167
18168         * mini.c (mono_method_to_ir): Allocate a GOT var in CEE_NEWOBJ. Fixes
18169         #72522.
18170
18171 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com> 
18172  
18173         * mini.c: Moved linkdemand check into helper function check_linkdemand
18174         to allow reuse for all intructions (CALL, CALLVIRT, NEWOBJ, JMP, 
18175         LDFTN, LDVIRTFTN).
18176
18177 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com>
18178
18179         * declsec.c: Added statistics counter for different kinds of 
18180         LinkDemands.
18181         * mini.h: Added CAS statistic counters to MonoJitStats. Removed unused
18182         (and commented) declaration.
18183         * mini.c: Added statistics counter for security Demand code 
18184         generation. Added display of security statistics.
18185
18186 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
18187
18188         * declsec.c (mono_declsec_linkdemand_aptc): Applied patch from Robert Jordan (robertj@gmx.net).
18189         Fix compilation errors under gcc-2.95.
18190
18191 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
18192
18193         * mini.c, driver.c: Use the new jit trampoline hashtable
18194
18195 Fri Feb 11 18:47:11 CET 2005 Paolo Molaro <lupus@ximian.com>
18196
18197         * mini.c, jit-icalls.c: use the managed implementation of memcpy, too.
18198
18199 2005-02-11  Martin Baulig  <martin@ximian.com>
18200
18201         * debug-mini.c (mono_debug_close_method): Free the line number array.
18202
18203 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
18204
18205         * aot.c: Break up large methods into smaller ones. Share GOT slots for
18206         icalls.
18207
18208         * mini.h: Bump AOT file format version. 
18209
18210 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
18211
18212         * declsec.c: Added LinkDemand support and it's special cases for ECMA,
18213         APTC and P/Invoke.
18214         * declsec.h: Added macros to get/set lazyly initialized security 
18215         informations about assemblies. Added new enum for different type of
18216         possible LinkDemand violation. Added function to check LinkDemands.
18217         * mini.h: Added a field to MonoCompile to hold any security violation
18218         detected when JITting a method (so it can be thrown later).
18219         * mini.c: Added LinkDemand checks in mono_method_to_ir for CEE_CALL 
18220         and CEE_CALLVIRT. Added code to throw exception at the end of
18221         mini_method_compile (note: the exception is unhandled right now).
18222
18223 Thu Feb 10 15:49:44 CET 2005 Paolo Molaro <lupus@ximian.com>
18224
18225         * mini.c, jit-icalls.c: use the managed implementation of
18226         memset for initobj and memset, to avoid managed <-> unmanaged
18227         transitions.
18228
18229 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
18230
18231         * inssel.brg (mini_emit_virtual_call): Disable the virtual->nonvirtual
18232         optimization if it would need a GOT var.
18233
18234         * basic.cs: Add tests for constant propagation and switch statements.
18235
18236         * ssa.c: Fix out-of-range constant propagation and switch statements.
18237
18238 2005-02-09    <vargaz@freemail.hu>
18239
18240         * inssel-x86.brg (reg): Align the allocation size in the localloc(imm) case too.
18241
18242 2005-02-08  Zoltan Varga  <vargaz@freemail.hu>
18243
18244         * cpu-amd64.md (load_membase): Fix max length of load_membase.
18245
18246 Tue Feb 8 18:21:11 CET 2005 Paolo Molaro <lupus@ximian.com>
18247
18248         * mini.c: update to new signature of mono_class_get_allocation_ftn().
18249
18250 2005-02-06  Neale Ferguson <NealeFerguson@earthlink.net>
18251
18252         * cpu-s390.md,  mini-s390.c: Correct bug with register usage on certain 
18253         arithmetic operations.
18254
18255 Sun Feb 6 07:10:12 EST 2005 Paolo Molaro <lupus@ximian.com>
18256
18257         * mini-ppc.c: add a workaround for broken user code that
18258         DllImports vararg functions with non-vararg signatures.
18259
18260 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
18261
18262         * mini.c (mono_jit_compile_method_inner): Add detection and a 
18263         meaningfull error message for assemblies written in Managed C++.
18264
18265         * tramp-amd64.c mini-amd64.h: Add support for 
18266         create_trampoline_from_token ().
18267
18268         * aot.c mini-x86.c abcremoval.c: Applied patch from
18269         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
18270
18271 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
18272
18273         * mini.h mini.c mini-x86.h tramp-x86.c: Add a new kind of trampoline 
18274         which takes a MonoImage/token as parameter instead of a MonoMethod.
18275
18276         * aot.c: Use the new trampoline for initializing vtables.
18277
18278         * aot.c: Add support for ldfld/stfld_remote wrappers.
18279
18280         * mini-ops.h cpu-pentium.md inssel-x86.brg mini-x86.c: Add optimized
18281         rules for compare <MEM>, IMM.
18282
18283         * mini.h (MONO_AOT_FILE_VERSION): Bump it.
18284
18285         * aot.c: Handle inherited finalizers correctly.
18286
18287 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
18288
18289         * inssel.brg (stmt): Add a missing _setup_... ().
18290
18291         * aot.c: Save some parts of the class state to the AOT file and use it
18292         to recompute that state when a class is initialized.
18293
18294         * mini.c: Install AOT hooks into the runtime.
18295
18296         * mini.h: Bump AOT file format version.
18297         
18298         * mini.c (mono_method_to_ir): Initialize pointer type locals correctly.
18299         Fixes #72148.
18300
18301         * iltests.il: Add new test.
18302
18303 Wed Feb 2 16:53:59 CET 2005 Paolo Molaro <lupus@ximian.com>
18304
18305         * mini.c: fix typo.
18306
18307 Wed Feb 2 16:37:13 CET 2005 Paolo Molaro <lupus@ximian.com>
18308
18309         * mini.c: setup the statistical profiler in the thread attach
18310         callback to cope with the new single thread code.
18311
18312 Wed Feb 2 15:43:58 CET 2005 Paolo Molaro <lupus@ximian.com>
18313
18314         * mini-ppc.c: ensure we have enough room for the profiler
18315         calls (fixed bug#72084).
18316
18317 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
18318
18319         * aot.c: Get rid of the MonoAotMethod structure and the hashtable holding 
18320         it.
18321
18322 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
18323
18324         * driver.c: Re-enabled SSAPRE (two commits, I was just dumb).
18325
18326 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
18327
18328         * ssapre.c: Fixed an issue with down safety (this allows IronPython
18329         to succesfully execute parrotbench).
18330         * ssapre.h: Likewise.
18331
18332 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
18333
18334         * ssa.c: In mono_ssa_rename_vars, forced the creation of a new SSA
18335         variable for stores to method arguments (fixes a SSAPRE issue).
18336
18337 Tue Feb 1 15:52:26 CET 2005 Paolo Molaro <lupus@ximian.com>
18338
18339         * mini.c: handle value types in dup, fixes gen-112.cs.
18340
18341 Tue Feb 1 11:45:19 CET 2005 Paolo Molaro <lupus@ximian.com>
18342
18343         * mini-ppc.c, cpu-g4.md, tramp-ppc.c: use a slower code
18344         sequence for calls in dynamic methods to avoid thunks.
18345
18346 Tue Feb 1 11:44:01 CET 2005 Paolo Molaro <lupus@ximian.com>
18347
18348         * mini.c: correctly remove dynamic methods from the hashtable.
18349
18350 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
18351
18352         * driver.c: Disabled SSAPRE until fix the bug that appears
18353         in IronPython's parrotbench.
18354
18355 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
18356
18357         * aot.c (mono_compile_assembly): Get rid of Skip (other) messages.
18358
18359         * mini.c (mono_method_to_ir): Revert the previous change.
18360         
18361         * mini.c (mono_method_to_ir): Do not inline ldfld and stfld wrappers
18362         when AOT compiling.
18363
18364         * tramp-x86.c (x86_magic_trampoline): Avoid calls to 
18365         mono_jit_info_table_find () etc. when running under valgrind.
18366
18367         * inssel.brg: Fix warnings.
18368
18369         * mini-exceptions.c: Fix warnings.
18370
18371 2005-01-31  Martin Baulig  <martin@ximian.com>
18372
18373         * driver.c (compile_all_methods_thread_main): Don't try to compile
18374         generic methods or anything which has type parameters.
18375
18376 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
18377
18378         * aot.c: Avoid costly calls to mono_method_full_name in tracing code and fix memory leaks.
18379
18380         * TestDriver.cs: Add --verbose flags.
18381
18382         * graph.c ssa.c: Fix 64 bit warnings.
18383         
18384         * abcremoval.h ssapre.h abcremoval.c ssapre.c mini.c tramp-amd64.c 
18385         trace.c mini-exceptions.c linear-scan.c inssel-amd64.brg inssel.brg:
18386         Fix 64 bit warnings.
18387
18388         * mini-amd64.c (mono_arch_output_basic_block): Fix uninitialized
18389         variable not spotted by gcc.
18390         
18391         * mini-amd64.c inssel-amd64.brg: Applied patch from  
18392         Willibald Krenn <Willibald.Krenn@gmx.at>. Clean up usage of 
18393         X86_COMPARE_MEMBASE opcodes.
18394
18395         * exceptions-amd64.c (mono_arch_find_jit_info): Fix AMD64 build.
18396
18397 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
18398
18399         * *: MonoMethod->signature might be NULL now. You *MUST* use
18400         mono_method_signature.
18401
18402 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
18403
18404         * driver.c (compile_all_methods_thread_main): Compile the methods
18405         without invoking cctors.
18406
18407 Fri Jan 28 18:28:26 CET 2005 Paolo Molaro <lupus@ximian.com>
18408
18409         * mini.c: remove ben's "optimizations" to dup+stloc (bug #71905).
18410         * basic-calls.cs: test for the above.
18411
18412 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
18413
18414         * mini.c mini-exceptions.c aot.c exceptions-*.c: Update after 
18415         MonoJitInfo changes.
18416
18417 2005-01-27  Zoltan Varga  <vargaz@freemail.hu>
18418
18419         * mini-exceptions.c (mono_handle_exception): Compute the stack trace
18420         eagerly if it contains dynamic methods.
18421         
18422         * mini-exceptions.c (ves_icall_System_Exception_get_trace): New icall.
18423
18424         * mini-exceptions.c (mono_handle_exception): Avoid computing the stack
18425         trace, it is now computed by an icall from trace_ips.
18426         
18427         * mini-exceptions.c: Fix a warning.
18428
18429 Thu Jan 27 13:38:34 CET 2005 Paolo Molaro <lupus@ximian.com>
18430
18431         * mini-exceptions.c: don't bother getting stack trace info if
18432         it's not going to be used.
18433
18434 2005-01-27  Raja R Harinath  <rharinath@novell.com>
18435
18436         * Makefile.am (common_sources): Add ssapre-cee-ops.h and
18437         ssapre-mini-ops.h.
18438
18439 2005-01-26  Zoltan Varga  <vargaz@freemail.hu>
18440
18441         * mini.c (remove_block_if_useless): Only print debug stuff with -v -v.
18442
18443         * aot.c: Avoid calling mono_method_get_header () if not needed.
18444
18445         * mini.h: Bump AOT file format version.
18446         
18447         * mini.c (mono_emit_native_call): Allocate a GOT var here.
18448
18449         * mini.c (mono_print_tree): Print more info for calls.
18450
18451 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
18452
18453         * declsec.h: Remove warning by adding missing include for marshal.h
18454
18455 2005-01-26  Martin Baulig  <martin@ximian.com>
18456
18457         * mini.c (mono_method_to_ir): In CEE_UNBOX_ANY, don't increase
18458         `ip' twice.
18459
18460 2005-01-25  Zoltan Varga  <vargaz@freemail.hu>
18461
18462         * mini-amd64.c (mono_arch_call_opcode): Add missing MONO_SSA_LOAD/STORE
18463         flags.
18464
18465         * ssa.c (mono_ssa_compute): Fix crashes when using AOT.
18466
18467         * aot.c (mono_compile_assembly): Fix a warning.
18468
18469 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com>
18470
18471         * declsec.c: Look for security attributes on the original MonoMethod 
18472         (and not the wrapped one). This fix permissions on icalls.
18473
18474 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
18475
18476         * mini-amd64.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
18477
18478         * mini.c (mono_allocate_stack_slots): Add a fixme.
18479
18480         * mini-x86.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
18481
18482 Sun Jan 23 16:16:48 CET 2005 Paolo Molaro <lupus@ximian.com>
18483
18484         * inssel.brg: optimize casts of sealed types (more
18485         optimizations waiting for fixes in remoting).
18486
18487 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
18488
18489         * inssel.brg (stmt): Add another dummy rule.
18490
18491         * driver.c: Fix warnings.
18492
18493         * driver.c (mono_main): If running under valgrind, instruct glib to use
18494         the system allocation functions so valgrind can track the memory
18495         allocated by the g_... functions.
18496
18497         * inssel.brg (stmt): Add DUMMY rule for OP_DUMMY_STORE.
18498
18499         * mini-ops.h: Add OP_DUMMY_STORE opcode.
18500
18501         * mini.h (MONO_BBLOCK_IS_IN_REGION): New helper macro.
18502
18503         * liveness.c: Handle OP_DUMMY_STORE. Enable register allocation for
18504         variables in try regions.
18505
18506         * mini.c (mini_method_compile): Don't disable optimizations on large
18507         methods when AOT compiling.
18508
18509         * mini.c (mono_allocate_stack_slots): New arch independent method to 
18510         allocate stack slots. Not yet used.
18511
18512 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
18513
18514         * debug-mini.c (mono_debug_close_method): Plug some leaks.
18515
18516 Sat Jan 22 13:41:51 EST 2005 Paolo Molaro <lupus@ximian.com>
18517
18518         * mini-ppc.c: make the branch info relative as the code
18519         buffer can be reallocated.
18520
18521 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
18522
18523         * aot.c: Allow decoding of the new  MONO_PATCH_INFO_DECLSEC.
18524         * driver.c: Removed the AOT/security restriction. Now initialize the
18525         security manager (in metadata) if --security is used.
18526         * mini.c|h: Add the MONO_PATCH_INFO_DECLSEC code to use the index,
18527         rather than the pointer to declarative security, when AOT is used.
18528
18529 Sat Jan 22 09:35:19 EST 2005 Paolo Molaro <lupus@ximian.com>
18530
18531         * mini.h, mini-ppc.h, mini-ppc.c: updated to use out of line
18532         basic blocks, reduced intrinsic exception throwing code size.
18533
18534 2005-01-22  Miguel de Icaza  <miguel@ximian.com>
18535
18536         * driver.c (mini_usage): Reorder the usage screen.
18537
18538 2005-01-21  Zoltan Varga  <vargaz@freemail.hu>
18539
18540         * mini.c (mono_resolve_patch_target): Fix warning.
18541
18542 2005-01-20  Zoltan Varga  <vargaz@freemail.hu>
18543
18544         * mini-x86.c (mono_arch_local_regalloc): Fix bug introduced by
18545         previous patch.
18546
18547         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
18548
18549         * mini-amd64.c (mono_arch_local_regalloc): Revert last patch as it
18550         breaks the amd64 build.
18551
18552         * mini-x86.c (mono_arch_local_regalloc): Fix bug in div/rem 
18553         register allocation. Fixes #71454.
18554
18555         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
18556
18557         * arrays.cs: Add new regression test.   
18558
18559 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
18560
18561         * ssapre.c: Turned usage of snprintf to GString.
18562         * ssapre.h: disabled MONO_APPLY_SSAPRE_TO_SINGLE_METHOD
18563         (I left it on by mistake in my previous commit).
18564
18565 Thu Jan 20 12:00:45 CET 2005 Paolo Molaro <lupus@ximian.com>
18566
18567         * mini.c, cfold.c, basic-calls.cs: preserve side effects
18568         on cond branch optimization (fixes bug# 71515).
18569
18570 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
18571
18572         * abcremoval.c: Fixed bug 71062.
18573         * abcremoval.h: Likewise.
18574
18575 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
18576
18577         * mini.c: Added a new functionality to optimize_branches, the removal
18578         of useless basic blocks, and fixed some problem in the removal of
18579         critical edges; some utility functions added for both purposes.
18580         * ssapre.c: Added complex expression support, and fixed bug 70637.
18581         * ssapre.h: Likewise.
18582         * ssapre-cee-ops.h: Added file with list of "CEE_*" opcodes
18583         enabled in SSAPRE.
18584         * ssapre-mini-ops.h: Likewise, but for "OP_*" opcodes.
18585         * driver.c: Re-enabled SSAPRE.
18586
18587 2005-01-19  Martin Baulig  <martin@ximian.com>
18588
18589         * mini.c (mono_method_to_ir): Call mono_get_inflated_method() on
18590         the result of mono_get_method_constrained().
18591
18592 2005-01-18  Neale Ferguson <NealeFerguson@earthlink.net>
18593
18594         * exceptions-s390.c tramp-s390.c: Allocate code using the global code
18595         manager.
18596
18597 2005-01-18  Geoff Norton  <gnorton@customerdna.com>
18598
18599         * jit-icalls.c (mono_llmult_ovf): Fix other overflow conditions to
18600         be detected.  Fixes #59296.
18601
18602 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
18603
18604         * mini-amd64.c (mono_arch_output_basic_block): Remove some assertions
18605         which can happen. Fixes #71361.
18606
18607 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
18608
18609         * exceptions-sparc.c tramp-sparc.c: Allocate code using the global code
18610         manager.
18611
18612 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
18613
18614         * mini.c (mono_create_jump_trampoline): Revert last change as it causes
18615         appdomain-unload.exe to fail.
18616         
18617         * mini.c: Fix some memory leaks.
18618
18619 Mon Jan 17 16:16:23 CET 2005 Paolo Molaro <lupus@ximian.com>
18620
18621         * inssel.brg: handle the new size of rank, idepth, max_interface_id.
18622         Fixed bug and sped up some codepaths.
18623
18624 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
18625
18626         * mini.c: Fix some memory leaks.
18627
18628         * exceptions.cs basic-long.cs: Add test for checked ulong->int 
18629         conversion.
18630
18631         * inssel-long.brg: Implement long_conv_to_ovf_i4_un. Fixes #71319.
18632
18633         * inssel-long.brg: Fix conv.ovf.i8 when run on an int32. Fixes
18634         #71320.
18635
18636         * iltests.il: Add regression test for #71320.
18637
18638 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
18639
18640         * mini.c (mono_codegen): Fix installation of profiler hooks.
18641
18642         * mini-sparc.c mini-amd64.c: Don't allocate stack space for dead vars.
18643
18644 Sun Jan 16 12:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
18645
18646         * mini.h, mini.c, cfold.c: optimize access to enum
18647         readonly fields, too. Eval conditional branches if possible
18648         to perform unreachable code removal in more cases.
18649
18650 2005-01-15  Zoltan Varga  <vargaz@freemail.hu>
18651
18652         * tramp-amd64.c exceptions-amd64.c: Use the new global code manager.
18653
18654         * mini.c (mono_global_codeman_reserve): New function to allocate code memory from a global
18655         code manager.
18656
18657         * tramp-x86.c mini-x86.c exceptions-x86.c: Allocate all code memory so mono works with
18658         WinXP DEP. Fixes #71244.
18659
18660 2005-01-14  Zoltan Varga  <vargaz@freemail.hu>
18661
18662         * inssel.brg: Allways convert CEE_CONV_OVF_I4 to a move on 64 bit platforms. Fixes #71236.
18663
18664 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
18665
18666         * mini-x86.c (mono_arch_output_basic_block): Fix OP_ATOMIC_ADD_NEW_I4.
18667
18668 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
18669
18670         * mini-exceptions.c exceptions-ppc.c aot.c: Cope with MonoJitInfo 
18671         changes.
18672
18673         * mini.h: Bump AOT version.
18674
18675         * mini.h (MonoCompile): Change exvar to a hash table.
18676
18677         * mini.c: Allocate a separate exvar for each handler block.
18678
18679         * mini.c: Get rid of the computation of filter_lengths, its not needed.
18680
18681         * mini.c inssel.brg: Change OP_THROW_OR_NULL to compare the current
18682         ex var with the pending exception and only throw if the two are equal.
18683         Fixes #68552.
18684         
18685         * exceptions.cs: Add tests for rethrow and nested catch clauses.
18686
18687         * mini-x86.c: Fix warnings.
18688
18689         * Makefile.am (common_sources): Move mini-exceptions.c here as it is
18690         used by all the ports now.
18691
18692         * aot.c: Add write-symbols and save-temps options.
18693
18694 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
18695
18696         * mini-x86.c: Add support for returning structs in registers from pinvoke functions on WIN32.
18697
18698 Mon Jan 10 16:11:16 EST 2005 Neale Ferguson <nealeferguson@earthlink.net>
18699
18700         * mini-ops.h, inssel-s390.brg, cpu-s390.md: Support OP_ATOMIC__xxx 
18701         operations.
18702
18703         * tramp-s390.c: Check vtable slot belongs to the domain.
18704
18705         * mini-exceptions.c, exceptions-s390.c: Standardize exception handling
18706         as per other platforms.
18707
18708         * mini-s390.c, mini-s390.h: Enable out-of-line bblock support.
18709
18710 Mon Jan 10 18:53:05 CET 2005 Paolo Molaro <lupus@ximian.com>
18711
18712         * driver.c: we don't run the Main() code in a subthread anymore.
18713
18714 Mon Jan 10 17:54:16 CET 2005 Paolo Molaro <lupus@ximian.com>
18715
18716         * mini.c: added experimental rtc support in the statistical
18717         profiler: if the user has the permission, more accurate statistics
18718         are gathered. Run with: MONO_RTC=4096 mono --profiler=default:stat ....
18719         The MONO_RTC value must be restricted to what the linux rtc allows:
18720         power of two from 64 to 8192 Hz.
18721
18722 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
18723
18724         * mini-x86.c (mono_arch_emit_exceptions): Fix #71121.
18725
18726 Mon Jan 10 05:20:49 EST 2005 Paolo Molaro <lupus@ximian.com>
18727
18728         * mini-ppc.c: better icache flush for smp.
18729
18730 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
18731
18732         * mini-amd64.c (emit_move_return_value): Fix memory leak.
18733
18734         * mini-x86.c (get_call_info): Add the get_call_info () code from the
18735         amd64 port, not yet used.
18736
18737 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
18738
18739         * mini.c (mono_method_to_ir): Disable inlining of ldfld wrappers with
18740         a struct type.
18741
18742 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
18743
18744         * driver.c: Added --security option to activate the security manager.
18745         Right now this will allow code generation for declarative demands and
18746         is disabled when AOT is specified.
18747         * mini.c: Add code generation for declarative security demands.
18748         * mini.h: Add mono_use_security_manager as an extern gboolean.
18749
18750 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
18751
18752         * aot.c (mono_compile_assembly): Speed up compilation a bit by
18753         emitting more dense assembly code.
18754
18755         * mini-sparc.c mini-sparc.h exceptions-sparc.c: Enable optimized corlib
18756         exception throwing stuff.
18757
18758 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
18759
18760         * mini-sparc.c (mono_arch_emit_exceptions): Fix typo in previous patch. Remove
18761         dead code.
18762
18763         * mini-amd64.c (mono_arch_emit_exceptions): Remove duplicate epilog stuff
18764         left in by mistake.
18765
18766         * driver.c (EXCLUDED_FROM_ALL): Disable SSAPRE until bug #70637 is 
18767         fixed.
18768
18769         * mini-sparc.h mini-sparc.c: Enable out-of-line bblock support.
18770
18771         * tramp-*.c: Only patch vtable slots if the object is in the current
18772         domain. Fixes appdomain-unload.exe.
18773
18774         * mini-amd64.c mini-amd64.h: Enable out-of-line bblock support.
18775         
18776         * mini-amd64.c (mono_arch_local_regalloc): Port regalloc fix from
18777         x86 branch.
18778
18779 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
18780
18781         * mini.c (reverse_branch_op): New helper function.
18782
18783         * mini.c (optimize_branches): Run the new optimization only on 
18784         platforms which support it. Also reverse all kinds of branches.
18785
18786         * mini.h (MonoBasicBlock): Add 'out_of_line' field.
18787
18788         * mini.c (mono_method_to_ir): Set 'out_of_line' for bblocks which have
18789         a throw statement.
18790
18791         * mini.c (optimize_branches): Reverse not-equals branches if the false
18792         bblock is a throw. This happens a lot of time with argument checking in
18793         corlib.
18794
18795         * mini.c (mono_codegen): Add support for placing basic blocks after
18796         the function epilogue.
18797
18798         * mini-x86.c mini-x86.h: Add support for placing basic blocks after the
18799         function epilogue.
18800         
18801 2005-01-05  Miguel de Icaza  <miguel@ximian.com>
18802
18803         * mini.c (setup_stat_profiler): Only set this up if the platform
18804         supports ITIMER_PROF.
18805
18806 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
18807
18808         * mini-x86.c (mono_arch_local_regalloc): Fix a bug introduced by the
18809         previous patch.
18810
18811         * inssel.brg: Fix a warning.
18812
18813 Wed Jan 5 16:40:18 CET 2005 Paolo Molaro <lupus@ximian.com>
18814
18815         * mini.c: added support for statistical profiler 
18816         (run with: --profile=default:stat).
18817
18818 2005-01-04  Zoltan Varga  <vargaz@freemail.hu>
18819
18820         * mini-x86.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Enable this on x86.
18821
18822         * mini-x86.c cpu-pentium.md: More fixes for usage of global registers.
18823
18824         * mini-amd64.c (mono_arch_local_regalloc): Port some regalloc fixes 
18825         related to global registers from the amd64 port.
18826
18827 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
18828
18829         * mini.c (mono_method_to_ir): Handle MONO_CLASSCONST.
18830
18831         * mini-amd64.c (mono_arch_local_regalloc): Fix some regalloc problems
18832         with global registers.
18833         (mono_arch_output_basic_block): Fix SWITCH in the AOT case.
18834
18835         * aot.c (emit_method_code): Fix the 'method emitted as' messages.
18836
18837 2004-12-31  Zoltan Varga  <vargaz@freemail.hu>
18838
18839         * debug-mini.c (encode_value): Fix off-by-one.
18840
18841         * aot.c (encode_value): Likewise.
18842
18843         * mini.c (mono_method_to_ir): Disable AOT for methods containing LDPTR.
18844
18845 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
18846
18847         * mini.c linear-scan.c: Add a workaround for the mcs crash when using 
18848         AOT.
18849
18850         * aot.c (mono_aot_load_method): Free up patch info if no longer needed.
18851         
18852         * aot.c (emit_method_info): Increase size of temp buffer.
18853
18854         * mini-x86.c cpu-pentium.md mini.c: Load fp constants differently in 
18855         the AOT case.
18856
18857 2004-12-28  Zoltan Varga  <vargaz@freemail.hu>
18858
18859         * aot.c (emit_method_info): Fix build.
18860         
18861         * aot.c: Further rework of the AOT file format to reduce the size of
18862         the method info data.
18863
18864         * mini.h: Bump AOT file format version.
18865
18866 2004-12-27  Martin Baulig  <martin@ximian.com>
18867
18868         * mini.c (mini_get_method): New static method; call
18869         mono_get_method_full() and mono_get_inflated_method().
18870         (mono_method_to_ir): Use mini_get_method() instead of
18871         mono_get_method_full(). 
18872
18873 2004-12-26  Patrik Torstensson  <patrik.torstensson@gmail.com>
18874
18875         * mini-x86.c (atomic ops): fixed bug interlocked bug #70784. 
18876
18877 2004-12-25  Zoltan Varga  <vargaz@freemail.hu>
18878
18879         * inssel.brg (ldind_to_load_membase): Handle CEE_LDIND_I8.
18880
18881         * inssel-amd64.brg: Add some optimization rules.
18882
18883 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
18884
18885         * aot.c: Remove the use of MonoGHashTable and other GC stuff. The
18886         standard not GC'd stuff is fine.
18887
18888 2004-12-24  Zoltan Varga  <vargaz@freemail.hu>
18889
18890         * aot.c: Rework the AOT file format to get rid of most of the global
18891         symbols. This reduces the size of the mscorlib.dll.so by 1MB.
18892
18893         * mini.h: Bump AOT file format version.
18894         
18895 2004-12-23  Zoltan Varga  <vargaz@freemail.hu>
18896
18897         * mini.h: Bump AOT file format version.
18898
18899         * aot.c (mono_aot_is_got_entry): New function to determine if an 
18900         address is inside a GOT.
18901
18902         * aot.c mini-x86.c tramp-x86.c: Make all patches use the GOT.
18903
18904         * cpu-pentium.md: Increase the maximum size of some instructions which
18905         might involve a got access.
18906         
18907         * mini.c (get_method_from_ip): Another debug helper function.
18908
18909         * mini.c: Call mono_get_got_var () in a couple places. Handle the case
18910         when got var accesses are created during the decompose phase.
18911
18912         * mini-sparc.c: Change mono_compile_aot to cfg->compile_aot.
18913
18914         * mini.h mini.c mini-x86.c aot.c mini-sparc.c: Add a 'compile_corlib'
18915         argument mini_compile_method and to MonoCompile, and use this to
18916         determine whenever a given method is compiled for AOT. This allows the
18917         other methods compiled during AOT compilation to be free of AOT stuff,
18918         so the backends does not need to add special support for them by
18919         creating a fake GOT etc.
18920
18921         * mini-x86.c (mono_arch_patch_code): Remove fake got stuff as it is no
18922         longer needed.
18923
18924 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
18925
18926         * mini.c (mono_method_to_ir): It turns out that some of the
18927         x-appdomain wrappers are lax with types, so just ignore this for
18928         all wrappers.
18929
18930         * inssel.brg (OP_CHECK_ARRAY_TYPE): Optimize this by only looking
18931         at the vtable->klass. If it is non-shared code we can just use the
18932         vtable.
18933
18934 Tue Dec 21 17:43:06 CET 2004 Paolo Molaro <lupus@ximian.com>
18935
18936         * mini-ppc.c: access MonoDomain from tls, too.
18937
18938 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com>
18939
18940         * declsec.c: Removed unused variable (and related warning ;-)
18941
18942 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
18943
18944         * iltests.il: New test for LDELEMA on an array of ref types.
18945
18946         * mini.c (CEE_LDELEMA): We need to emit OP_CHECK_ARRAY_TYPE for
18947         all ldelema's on reftypes.
18948         (check_call_signature): Remove the OP_CHECK_ARRAY_TYPE from here,
18949         it was the wrong place to put it.
18950
18951         * mini-x86.c (mono_arch_output_basic_block): Just use ecx as the
18952         register to pop to make this cleaner, at the request of Paolo.
18953
18954 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
18955
18956         * mini-ops.h (OP_GETHASHCODE): New op.
18957
18958         * inssel.brg (OP_GETHASHCODE): Emit code for the new opcode
18959
18960         * mini.c (mini_get_inst_for_method): Create the intrinsic hash
18961         operation.
18962
18963         For a microbenchmark, this reduces the cost of Hashtable.get_Item
18964         by 25%.
18965         
18966         * mini-x86.c (mono_arch_output_basic_block): Rather than
18967
18968         add ebp, 4
18969
18970         Emit
18971
18972         pop edx
18973
18974         The first is 3 bytes while the second is 1. This saves 36 kb on
18975         mscorlib, quite a big saving. When bootstraping mcs, I was able to
18976         see a small boost because of icache locality.
18977
18978         * cfold.c (FOLD_BINOPCOMM): Kill add foo, 0
18979
18980 Mon Dec 20 12:19:40 EST 2004 Paolo Molaro <lupus@ximian.com>
18981
18982         * Makefile.am, mini-ppc.h, mini-exceptions.c, exceptions-ppc.c:
18983         started code sharing with the generic code.
18984
18985 Mon Dec 20 11:08:06 EST 2004 Paolo Molaro <lupus@ximian.com>
18986
18987         * mini-ppc.c, cpu-g4.md: added code for direct access to
18988         tls data slots.
18989
18990 Mon Dec 20 10:58:28 EST 2004 Paolo Molaro <lupus@ximian.com>
18991
18992         * mini-ops.h, inssel-x86.brg, cpu-amd64.md, inssel.brg, inssel-amd64.brg,
18993          mini-amd64.c, mini-x86.c, cpu-pentium.md: renamed OP_X86_TLS_GET
18994         to OP_TLS_GET.
18995
18996 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
18997
18998         * declsec.c|h: Added functions to cache the declarative stack modifiers
18999         in MonoJitInfo and to create a security frame from a MonoJitInfo 
19000         structure.
19001         * mini.c: Initialize jinfo->cas_inited to FALSE when MonoJitInfo is
19002         created. Register internal calls for System.Security.SecurityFrame::
19003         _GetSecurityFrame and _GetSecurityStack.
19004         * mini.h: Added definition for new icalls (in mini-exceptions.c) and
19005         the definitions for the new stack walk/callback mechanism.
19006         * mini-exceptions.c: Added internal call GetSecurityFrame (to get the 
19007         first security frame for LinkDemands and InheritanceDemands) and
19008         GetSecurityStack for Demands. Both use the new mono_walk_stack code
19009         from lupus.
19010         * mini-x86.h, mini-amd64.h, mini-sparc.h: Architecture specific stack
19011         walk initialization (lupus).
19012
19013 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
19014
19015         * mini.c (mono_method_to_ir): In CEE_DUP, handle the dup / stloc
19016         idiom.
19017         (handle_loaded_temps): Do not create a temporary variable for
19018         things that we know are temps. They will never be modified.
19019         (mono_spill_call): Set MONO_INST_IS_TEMP
19020         (mono_emulate_opcode): ditto
19021         (emit_tree): ditto
19022         (mono_method_to_ir.CEE_DUP): ditto
19023
19024 2004-12-19  Ben Maurer  <bmaurer@ximian.com>
19025
19026         * mini.c (type_to_eval_stack_type): Make this handle the void type
19027         (mono_emit_call_args): set the call->type with type_to_eval_stack_type
19028         (emit_tree): use ip_in_bb to special case some common idioms
19029         Update all callers to pass in the IP.
19030         (mono_method_to_ir): Make CEE_CALL* do the above as well.
19031
19032         This gives us a nice 2% speedup in mcs bootstrap.
19033
19034         * mini-x86.c (peephole_pass): Peephole pass to make
19035         mov  [foo], eax
19036         push [foo]
19037
19038         into
19039
19040         mov [foo], eax
19041         push eax
19042
19043         * mini.c (ip_in_bb): new method.
19044         (mono_method_to_ir): use this method rather than doing the hash
19045         lookup ourselves.
19046
19047         * linear-scan.c (mono_linear_scan): When expiring actives, you
19048         don't need to keep around variables that expire on this
19049         instruction. This makes it so that:
19050              a = b + 1
19051         will turn into:
19052              store (ebx add (ebx, 1))
19053         which will become
19054              add ebx, 1
19055
19056 2004-12-19  Zoltan Varga  <vargaz@freemail.hu>
19057
19058         * mini.c (mono_method_to_ir): Optimize the common ldobj+stloc 
19059         combination to avoid doing two copies. Fix up problems with previous
19060         patch.
19061
19062         * mini.c: Fix 64 bit warnings.
19063
19064         * mini-x86.c (INST_IGNORES_CFLAGS): Add OP_STOREI4_MEMBASE_REG.
19065
19066 2004-12-17  Zoltan Varga  <vargaz@freemail.hu>
19067
19068         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Port exception handling
19069         changes from the x86 code.
19070
19071         * mini.h: Add prototype for mono_arch_get_throw_corlib_exception ().
19072
19073 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
19074
19075         * mini-x86.c (mono_arch_emit_epilog): Optimize the corlib exception
19076         throwing code to reduce its size, unify the AOT and non-aot code and 
19077         get rid of relocations in the AOT case.
19078
19079         * mini-x86.h mini.c exceptions-x86.c 
19080         (mono_arch_get_throw_corlib_exception): New arch specific function to 
19081         raise corlib exceptions which doesn't require relocations in the 
19082         caller.
19083
19084         * aot.c (emit_method): Handle PATCH_INFO_NONE as well.
19085
19086 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
19087
19088         * mini.c (mono_emit_method_call): Only allocate the got var when it is
19089         needed.
19090
19091         * mini-x86.c (mono_arch_patch_code): Add missing PATCH_INFO_METHOD_REL
19092         in the AOT case.
19093
19094 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
19095
19096         * mini-x86.c, cpu-pentium.md, inssel-x86.brg: Fixed bug
19097         with add function when used from Inc/dec atomic 
19098         functions. Re-enabled optimization on x86.
19099         * mini-ops.h: renamed atomic_add functions to
19100         allow _add to match the Interlocked::Add and
19101         _add_next to match Interlocked::Inc/Dec.
19102
19103 2004-12-15  Massimiliano Mantione  <massi@ximian.com>
19104
19105         * mini.c: Fixed a subtle bug in mono_method_to_ir, about the
19106         linking of BBs to the end BB, and enabled SSAPRE also with
19107         consprop and copyprop (which was prevented by that bug).
19108
19109 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
19110
19111         * mini-x86.c: disabling the Interlocked optimizing code. 
19112
19113 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
19114
19115         * aot.c (load_aot_module): Move reading of got_addr after the AOT
19116         file version check.
19117         
19118 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
19119
19120         * mini-x86.c, inssel-x86.brg, cpu-pentium.md: removed _imm 
19121         interlocked optimization due lack of support on x86, rewrote 
19122         exchange to take into account that base may be in eax.
19123         
19124         xsp works again; activated Interlocked optimizing code.
19125         
19126 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
19127
19128         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
19129
19130 2004-12-13  Zoltan Varga  <vargaz@freemail.hu>
19131
19132         * mini-ops.h: Add new opcodes.
19133
19134         * mini.h: Add new patch types. Add got_var to MonoCompile.
19135
19136         * mini.h mini-x86.c mini-amd64.c aot.c: Rename 
19137         mono_arch_get_aot_patch_offset () to mono_arch_get_patch_offset () and
19138         make it work with all kinds of patchable code.
19139
19140         * inssel.brg inssel-x86.brg: Add new rules dealing with computing the
19141         address of the GOT, and referencing entries in the GOT.
19142
19143         * mini.c: Add code to load the GOT address if needed by an opcode.
19144
19145         * aot.c mini-x86.h mini-x86.c cpu-pentium.md: Add support for position 
19146         independent AOT code on the x86 using an elf-style Global Offset Table.
19147
19148 2004-12-14  Raja R Harinath  <rharinath@novell.com>
19149
19150         * Makefile.am (RUNTIME): Set MONO_SHARED_DIR.
19151
19152 2004-12-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19153
19154         * mini-x86.c: disabling the Interlocked optimizing code. It segfaults
19155         when running xsp.
19156
19157 2004-12-13  Patrik Torstensson  <patrik.torstensson@gmail.com>
19158
19159         * mini-x86.c,mini-ops.h,inssel-x86.brg,cpu-pentium.md: Implementation
19160         of Interlocked:Increment/Decrement/Add as inline ops.
19161         (mini-x86.c (mono_arch_get_inst_for_method and mono_arch_output_basic_block))
19162
19163 2004-12-12  Geoff Norton  <gnorton@customerdna.com>
19164
19165         * exceptions-ppc.c: Reorder code so gcc3.4 can compile it
19166         * mini-ppc.c: Unify mono_arch_patch_code with changes in r37636.
19167
19168 2004-12-12  Duncan Mak  <duncan@ximian.com>
19169
19170         * mini-ppc.c (mono_arch_patch_code): Hopefully made this build
19171         again. `patch_info->table_size' is no longer valid after Zoltan's
19172         commit #37636.
19173
19174 2004-12-12  Martin Baulig  <martin@ximian.com>
19175
19176         * mini.c (mono_method_to_ir): Only call mono_debug_init_method()
19177         if we are the "real" method, ie. not an inlined method inside it.
19178
19179 2004-12-11  Ben Maurer  <bmaurer@ximian.com>
19180
19181         * mini.c (CEE_LDSFLD): Make sure that the vtable has been init'd
19182         before we look in the special fields table. This fixes
19183         ../tests/thread-static-init.cs.
19184
19185 2004-12-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19186
19187         * mini.c: return immediately after setting OP_ARRAY_RANK or CEE_LDLEN
19188         for Array get_Rank and get_Length. Fixes bug #70465.
19189
19190 2004-12-11  Zoltan Varga  <vargaz@freemail.hu>
19191
19192         * mini.h mini.c aot.c: Put the bblock table for a SWITCH patch into a
19193         separate structure to reduce the size of MonoJumpInfo.
19194
19195 Fri Dec 10 18:09:22 CET 2004 Paolo Molaro <lupus@ximian.com>
19196
19197         * mini.c, mini.h, aot.c, driver.c: allow disabling the aot code.
19198
19199 2004-12-10  Patrik Torstensson  <patrik.torstensson@gmail.com>
19200
19201         * mini.c (mini_get_inst_for_method): Changed to allow ports
19202         to return a MonoInst instead of opcode 
19203         (renamed mini_get_opcode_for_method to better reflect the new functionality)
19204         
19205         * mini-[x86|s390|s390x|ppc|sparc].c (mono_arch_get_inst_for_method): 
19206         Allow ports to return a created MonoInst instead of op-code, will enable
19207         new optimizations.
19208         (renamed mini_get_opcode_for_method to better reflected the functionality)
19209
19210 2004-12-09  Zoltan Varga  <vargaz@freemail.hu>
19211
19212         * mini.c (NEW_AOTCONST): Share some code between the different NEW_AOTCONST macros.
19213
19214 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
19215
19216         * mini.c jit-icalls.c: Pass generic_context to mono_ldtoken_wrapper.
19217         Fixes #69985.
19218
19219 2004-12-08  Martin Baulig  <martin@ximian.com>
19220
19221         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use `fsig->signature'
19222         if we're a CEE_CONSTRAINED call.  Fixes gen-118.cs.
19223
19224 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
19225
19226         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_<X>
19227         correctly.
19228
19229         * exceptions.cs: Disable some tests which depend on properties of x86 fp
19230         arithmetic.
19231
19232 2004-12-08  Raja R Harinath  <rharinath@novell.com>
19233
19234         * Makefile.am (CLEANFILES): Add *.exe, *.dll.
19235
19236 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
19237
19238         * mini-sparc.c (mono_arch_output_basic_block): Fix LOCALLOC_IMM
19239         bug introduced by the previous patch.
19240
19241 Tue Dec 7 11:44:39 CET 2004 Paolo Molaro <lupus@ximian.com>
19242
19243         * mini-ppc.c, objectc.cs: handle large structs passed by value
19244         (fixes bug #69972).
19245
19246 Tue Dec 7 10:43:31 CET 2004 Paolo Molaro <lupus@ximian.com>
19247
19248         * mini-ppc.c: OP_ARGLIST implementation from
19249         Geoff Norton  <gnorton@customerdna.com>.
19250
19251 Tue Dec 7 10:14:25 CET 2004 Paolo Molaro <lupus@ximian.com>
19252
19253         * inssel-x86.brg, inssel-ppc.brg: fix reference to register
19254         in stmt: OP_OUTARG_VT (reg) (should fix bug #69785).
19255
19256 Tue Dec 7 10:06:39 CET 2004 Paolo Molaro <lupus@ximian.com>
19257
19258         * exceptions-ppc.c: avoid calling ppc_patch in exception trampolines.
19259
19260 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
19261
19262         * inssel-s390.brgi, mini-ops.h, mini-s390.c : Add stubs for support of tls offset
19263         support.
19264
19265 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
19266
19267         * mini-sparc.c: Zero out localled-ed memory.
19268
19269         * iltests.il: Add tests for zeroing out localloc-ed memory.
19270
19271 2004-12-04  Martin Baulig  <martin@ximian.com>
19272
19273         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use the new
19274         mono_method_get_signature_full().       
19275
19276 2004-12-03  Massimiliano Mantione  <massi@ximian.com>
19277
19278         * mini.c: Added removal of critical edges (prerequisite for SSAPRE),
19279         and some utility functions (always for SSAPRE), integrated SSAPRE.
19280         * mini.h: Likewise.
19281         * driver.c: Added ssapre option.
19282         * ssa.c: Small fix on OP_ARG handling.
19283         * ssapre.c, ssapre.h: Added files containing SSAPRE implementation.
19284         * Makefile.am: Likewise.
19285
19286 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
19287
19288         * tramp-x86.c (mono_arch_create_jit_trampoline): Remove code which is
19289         now in the xp code.
19290
19291         * mini.c (mini_init): Register mono_thread_force_interruption_checkpoint
19292         icall.
19293
19294 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
19295
19296         * inssel-s390.brg : Add OP_OUTARG_VT (OP_REFANYTYPE (reg)) rule.
19297         
19298         * cpu-s390.md : Increase instruction length of oparglist.
19299
19300         * mini-s390.c : Implement vararg and TYPEDEBYREF support.
19301
19302 2004-11-30  Martin Baulig  <martin@ximian.com>
19303
19304         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, added support for
19305         virtual generic methods.  We call a special helper_compile_generic_method()
19306         icall to retrieve the method from the vtable, inflate and compile
19307         it and then do a CEE_CALLI.  Thanks a lot to Paolo for this idea.
19308
19309         * jit-icalls.c (helper_compile_generic_method): New JIT icall.
19310
19311 2004-11-30  Zoltan Varga  <vargaz@freemail.hu>
19312
19313         * mini-sparc.c: Fix up vararg corner cases. Fixes #70019.
19314
19315 2004-11-29  Zoltan Varga  <vargaz@freemail.hu>
19316
19317         * cpu-sparc.md mini-sparc.c (long_conv_to_ovf_i): Fill missing delay slot.
19318         Fixes #69929.
19319
19320 2004-11-27  Ben Maurer  <bmaurer@ximian.com>
19321
19322         * inssel.brg (CEE_SWITCH): The AOT stuff Zoltan added is only for
19323         platforms with PIC aot.
19324
19325 2004-11-28  Martin Baulig  <martin@ximian.com>
19326
19327         * mini.c (mono_method_to_ir): In CEE_DUP, added handle_stobj().
19328         Fixes gen-112.cs.
19329
19330 2004-11-28  Martin Baulig  <martin@ximian.com>
19331
19332         * mini-x86.c (mono_arch_call_opcode): Use the original type, not
19333         the result of mono_type_get_underlying_type() to check whether
19334         we're byref.
19335
19336 2004-11-26  Martin Baulig  <martin@ximian.com>
19337
19338         * mini.c
19339         (mono_method_to_ir): Use `!method->signature->has_type_parameters'
19340         in the g_assert().
19341
19342 2004-11-26  Zoltan Varga  <vargaz@freemail.hu>
19343
19344         * mini-amd64.c (mono_arch_emit_this_vret_args): Handle this and vret
19345         the same way as the other arguments so they won't get clobbered.
19346
19347         * mini-amd64.c (mono_arch_output_basic_block): Avoid doing virtual 
19348         calls through R11 since it is clobbered by the trampoline code.
19349
19350 2004-11-26  Raja R Harinath  <rharinath@novell.com>
19351
19352         * Makefile.am: Consistently use $(RUNTIME) rather than ./mono to
19353         pick up in-tree mscorlib.dll.
19354
19355 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
19356
19357         * aot.c: Rename MonoAOTModule->cleanup to out_of_date.
19358
19359         * mini-amd64.c aot.c: Switch to PIC relative AOT code. References to 
19360         runtime data/code are now stored in a table similar to the GOT in ELF. 
19361         This allows the code itself to be position independent.
19362
19363         * aot.c: Fix loading of referenced assemblies after the lazy assembly
19364         loading changes.
19365
19366         * aot.c: Attach ELF type (object/function) directives to all global
19367         symbols.
19368
19369         * tramp-amd64.c (amd64_magic_trampoline): Patch RIP relative calls too.
19370
19371         * inssel.brg (SWITCH): Emit an AOT_CONST in the aot case.
19372
19373         * mini-amd64.h: Turn on PIC AOT code.
19374
19375         * mini.h (mono_arch_get_aot_patch_offset): New arch specific function
19376         returning the offset within an OP_AOTCONST instruction where the GOT
19377         offset needs to be added.
19378
19379         * mini.h: Bump AOT file format version.
19380
19381 2004-11-25  Martin Baulig  <martin@ximian.com>
19382
19383         * mini.c (mono_method_to_ir): In CEE_CALL, don't allow calling any
19384         uninflated generic methods.
19385
19386 2004-11-25  Martin Baulig  <martin@ximian.com>
19387
19388         * mini.c (mono_method_to_ir): Don't allow any uninflated generic methods.
19389
19390 2004-11-24  Martin Baulig  <martin@ximian.com>
19391
19392         * minit.c (type_to_eval_stack_type): Set `inst->klass' to the
19393         original klass (this only applies for generic instances).
19394
19395 2004-11-24  Martin Baulig  <martin@ximian.com>
19396
19397         * mini.c (mono_method_to_ir): Use `STACK_OBJ' instead of
19398         `ldind_type [CEE_LDIND_REF]' (which would be beyond the end of
19399         that array).
19400
19401 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
19402
19403         * mini.c (mono_method_to_ir): Disable inlining for methods containing
19404         localloc. Fixes #69678.
19405
19406         * iltests.il (test_0_localloc_inline): Add regression test for #69678.
19407         
19408 2004-11-23  Zoltan Varga  <vargaz@freemail.hu>
19409
19410         * mini-amd64.c (mono_arch_output_basic_block): Set %al to the number of
19411         used SSE registers on pinvoke calls. Fixes #69774.
19412
19413 2004-11-23  Geoff Norton  <gnorton@customerdna.com>
19414
19415         * inssel-ppc.brg, mini-ppc.c: Use mono_class_from_mono_type instead of
19416         vt->inst_vtype->data.klass.  This fixes generic structs and bug #69766
19417
19418 2004-11-23  Raja R Harinath  <rharinath@novell.com>
19419
19420         * Makefile.am (MCS,ILASM): Don't refer to runtime/ directory.
19421         Refer directly to the mcs/ tree.
19422
19423 2004-11-19  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
19424
19425         * mini-s390.c, tramp-s390.c, mini-s390.h: Add LMF processing for trampolines.
19426         Check if a trampoline for a synchronized method is required. 
19427
19428 Fri Nov 19 17:34:21 CET 2004 Paolo Molaro <lupus@ximian.com>
19429
19430         * mini-ppc.c, cpu-g4.md: set to zero the memory allocated
19431         with localloc if needed. Throe arithmetric exception in
19432         div an rem if needed. Implement ovf checks in OP_LCONV_TO_OVF_I.
19433         Adapted from a patch by Geoff Norton  <gnorton@customerdna.com>.
19434
19435 2004-11-19  Geoff Norton  <gnorton@customerdna.com>
19436
19437         * mini-ppc.c: Call mono_type_get_underlying_type to unwrap generic
19438         types before switching on type.  Fixes #69622.
19439
19440 2004-11-19  Raja R Harinath  <rharinath@novell.com>
19441
19442         * Makefile.am (check-local): New.  Integrate into 'make check'.
19443         (MCS,RUNTIME): Define using in-tree mono and mcs.
19444         (ILASM): New.
19445         (%.exe): Use $(ILASM).
19446
19447 Fri Nov 19 14:54:07 CET 2004 Paolo Molaro <lupus@ximian.com>
19448
19449         * mini-ppc.c: adjust initial prolog size (bug #69691).
19450
19451 2004-11-18  Zoltan Varga  <vargaz@freemail.hu>
19452
19453         * cpu-pentium.md (localloc): Increase max instruction len. Fixes
19454         #69664.
19455
19456 2004-11-17  Raja R Harinath  <rharinath@novell.com>
19457
19458         * Makefile.am (clean-local): Rename from 'clean'.
19459
19460 2004-11-15  Nelae Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
19461
19462         * mini.c, mini-x86.c, mini-amd64.c, exceptions-s390.c: Add siginfo_t parameter
19463         to mono_arch_is_int_overflow. 
19464         * exceptions-s390.c: Add mono_arch_is_int_overflow routine to discern between
19465         SIGFPE events.
19466
19467 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
19468
19469         * declsec.c|h: New files to support declarative security attributes.
19470         Added function to check if a method has (applicable) security.
19471         * mini.c|h: Add check for declarative security attributes in
19472         mono_method_check_inlining.
19473         * Makefile.am: Added declsec.c and declsec.h to the build.
19474
19475 Mon Nov 15 11:53:46 CET 2004 Paolo Molaro <lupus@ximian.com>
19476
19477         * mini.c, mini.h: update to keep dynamic code info per-domain.
19478
19479 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
19480
19481         * mini.c mini-*.h: Get rid of MONO_ARCH_HAVE_RETHROW since all architectures support it now.
19482         (mini_init): Get rid of it from here too.
19483
19484 Thu Nov 11 20:17:17 CET 2004 Paolo Molaro <lupus@ximian.com>
19485
19486         * mini-ppc.c, mini-ppc,h, cpu-g5.md, exceptions-ppc.c:
19487         implemented OP_RETHROW (patch by Geoff Norton
19488         <gnorton@customerdna.com>).
19489
19490 2004-11-10  Geoff Norton  <gnorton@customerdna.com>
19491
19492         * tramp-ppc.c (ppc_magic_trampoline): Don't trampoline methods
19493         between appdomains.  Fixes appdomain-unload on PPC.
19494
19495 2004-10-26  Lluis Sanchez Gual  <lluis@novell.com>
19496
19497         * exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
19498         mini-exceptions.c: handle the new wrapper types.
19499         * mini.c: The CEE_ISINST and CEE_CASTCLASS opcodes now take the
19500         token value as a MonoClass* when compiling a wrapper.
19501         mono_jit_create_remoting_trampoline now takes an additional
19502         MonoRemotingTarget parameter.
19503         
19504 2004-11-10  Martin Baulig  <martin@localhost>
19505
19506         * mini.c (mono_method_to_ir): Use `generic_container->context'
19507         rather than creating a new one.
19508
19509 2004-11-09  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
19510
19511         * exceptions-s390.c, mini-s390, cpu-s390.md: Add support for OP_RETHROW.
19512
19513         * inssel-390.md, mini-s390.c: Correct register allocation for globals.
19514
19515 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
19516
19517         * aot.c (mono_aot_init): Add MONO_AOT_CACHE env variable to turn on
19518         the experimental aot cache stuff.
19519
19520 Tue Nov 9 17:30:20 CET 2004 Paolo Molaro <lupus@ximian.com>
19521
19522         * aot.c, mini.c, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
19523         mini-exceptions.c: update to exception clause structure changes.
19524
19525 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
19526
19527         * exceptions-x86.c (throw_exception): Fix warnings.
19528
19529         * mini-x86.h mini-x86.c cpu-pentium.md exceptions-x86.c: Add support 
19530         for OP_RETHROW.
19531
19532 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
19533
19534         * exceptions-sparc.c (get_throw_exception): Really fix this.
19535
19536 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
19537
19538         * tramp-*.c: we no longer support icalls without wrappers, so
19539         a bit of code can be removed here
19540
19541 2004-11-07  Zoltan Varga  <vargaz@freemail.hu>
19542
19543         * exceptions-sparc.c (get_throw_exception): Fix more bugs in previous
19544         patch.
19545
19546         * cpu-sparc.md: Add op_rethrow.
19547
19548         * exceptions-sparc.c (get_throw_exception): Fix bug in previous patch.
19549
19550         * mini-sparc.h mini-sparc.c exceptions-sparc.c: Add support for OP_RETHROW.
19551
19552         * mini.h: Add mono_arch_get_rethrow_exception () arch specific function.
19553         * mini-ops.h: Add OP_RETHROW.
19554
19555         * mini.c inssel.brg: Distinguish between THROW and RETHROW.
19556
19557         * cpu-amd64.c mini-amd64.c exceptions-amd64.c: Add support for OP_RETHROW.
19558
19559 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
19560         
19561         * helpers.c: Change otool arguments from -V -v -t to -v -t on Darwin
19562         Makes the output much easier to read
19563
19564 2004-11-05  Ben Maurer  <bmaurer@ximian.com>
19565
19566         * ssa.c: allocate MonoMethodVar.uses from the mempool. First, this
19567         prevents another huge leak when compiling with ssa. Secondly, the
19568         performance of doing this rather than freeing the lists is much
19569         better. GList does a lock every time you allocate a list link,
19570         so that it can use a memory pool. So, it is better to just use
19571         a memory pool of our own.
19572         
19573         * ssa.c, linear-scan.c: replace g_list_remove_link with
19574         g_list_delete.  The remove one does not free the GList, so we were
19575         leaking memory. On -O=all --compile-all with corlib, this cut down
19576         3 MB of allocations.
19577
19578 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
19579
19580         * tramp-sparc.c (mono_arch_create_jit_trampoline): Fix sparc build.
19581
19582         * tramp-amd64.c (mono_arch_create_jit_trampoline): Fix amd64 build.
19583
19584         * mini.h mini.c tramp-*.c: Moved xp parts of JIT trampoline creation
19585         into a new function mono_create_jit_trampoline ().
19586
19587 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
19588
19589         * trace.c (get_spec): Allow tracing of classes without a namespace.
19590
19591 2004-11-02  Sebastien Pouliot  <sebastien@ximian.com>
19592
19593         * mini.c: Fix pointer overwrite in mini_method_compile.
19594
19595 2004-11-2  Geoff Norton  <gnorton@customerdna.com>
19596
19597         * inssel-ppc.brg (OP_OUTARG_VT (CEE_LDOBJ (base))):
19598         The darwin ABI needs some special handling for 1 and 2 byte structs
19599         Lets use lbz/lhz instead of lwz everywhere.
19600         * mini-ppc.c (calculate_sizes):  The Darwin ABI needs from special handling
19601         for 1 and 2 byte structs and struct which are size >= 3 || size % 4 != 0.
19602         Use stb/sth for the former, and put the latter always on stack instead of in
19603         argument registers.
19604
19605 2004-10-30  Zoltan Varga  <vargaz@freemail.hu>
19606
19607         * trace.c (is_filenamechar): Add '_'.
19608
19609 2004-10-29  Neale Ferguson  <Neale.Ferguson@SoftwareAG-usa.com>
19610
19611         * mini-s390.c: Fix prolog length to allow for large trace requirements.
19612
19613         * exceptions-s390.c: Remove dwarf unwinding stuff that was unused.
19614
19615 2004-10-29  Zoltan Varga  <vargaz@freemail.hu>
19616
19617         * Makefile.am (libgc_libs): Do some automake magic so libmono/mono
19618         depends on libmonogc. Fixes #68805.
19619
19620 2004-10-26  Miguel de Icaza  <miguel@ximian.com>
19621
19622         * mini.c (mono_jit_free_method): Provide extra information for
19623         this error.  Currently this leaks, but will be turned into a
19624         developer option in the future.
19625
19626 2004-10-26  Zoltan Varga  <vargaz@freemail.hu>
19627
19628         * driver.c (mono_main): Applied patch from Willibald Krenn <willibald.krenn@gmx.at>. Make --graph work for icalls and pinvoke methods.
19629
19630 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
19631
19632         * aot.c (mono_aot_load_method): Align PATCH_INFO_R8 on an 8 byte 
19633         boundary. Fixes reading of PATCH_INFO_R4 and R8.
19634         (mono_aot_load_method): Do not allocate MonoAotMethod in the GC heap.
19635
19636 2004-10-24  Zoltan Varga  <vargaz@freemail.hu>
19637
19638         * mini-amd64.c (mono_arch_patch_code): Fix patching of class init
19639         trampolines for AOT code.
19640
19641 2004-10-22    <vargaz@freemail.hu>
19642
19643         * aot.c (mono_compile_assembly): Disable AOT for methods containing calls to methods of
19644         constructed types. Fixes #68136.
19645
19646 2004-10-21  Martin Baulig  <martin@ximian.com>
19647
19648         * exceptions-x86.c (throw_exception): Call mono_debugger_throw_exception();
19649         if it returns true, unwind the stack to the call instruction.
19650
19651 2004-10-21    <vargaz@freemail.hu>
19652
19653         * aot.c: Reorganize the AOT file format to avoid relocations. Fix warnings.
19654
19655         * mini.h: Bump AOT version number.
19656
19657         * objects.cs: Add another test for unbox trampolines.
19658
19659         * tramp-amd64.c (amd64_magic_trampoline): Disable patching of trampolines for 
19660         valuetype methods.
19661
19662 2004-10-20    <vargaz@freemail.hu>
19663
19664         * driver.c: Add SHARED to the set of optimizations tested.
19665
19666         * tramp-amd64.c (amd64_magic_trampoline): Patch trampoline code as well.
19667
19668         * mini.c (mono_method_to_ir): Mark the domainvar as volatile when it is implicitly
19669         used by CEE_NEWARR.
19670
19671         * ssa.c (mono_ssa_deadce): Do not optimize away accesses to volatile variables.
19672
19673 2004-10-20  Martin Baulig  <martin@ximian.com>
19674
19675         * mini-exceptions.c (mono_handle_exception): Call
19676         mono_debugger_handle_exception() to tell the debugger about
19677         catch/finally clauses.
19678
19679 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
19680
19681         * exceptions-amd64.c (mono_arch_find_jit_info): Pop arguments of the stack.
19682
19683         * mini-amd64.c (mono_amd64_get_vcall_slot_addr): Handle extended registers. Fixes
19684         #68447.
19685
19686 2004-10-15  Geoff Norton  <gnorton@customerdna.com>
19687
19688         * mini-ppc.c (calculate_sizes): Marshal valuetypes for pinvoke
19689         methods as their native size, fixed bug #57543, #57545.
19690         * mini-ppc.c (mono_arch_output_basic_block): Use mulli for imm16 types
19691         This saves a temporary register and mullw call down into 1 (minor perf
19692         increase for cases like sum = sum * 5;  This use to translate into:
19693             li r11,5
19694             mullw r28,r28,r11
19695         It now translates to
19696             mulli r28,r28,5
19697
19698 2004-10-15  Zoltan Varga  <vargaz@freemail.hu>
19699
19700         * trace.c (mono_trace_eval): Use mono_method_desc_full_match. Fixes
19701         #68388.
19702
19703 2004-10-11  Martin Baulig  <martin@ximian.com>
19704
19705         * mini.c (mono_method_to_ir): If we're a generic method, get the
19706         MonoGenericContainer from our MonoMethodNormal and create a
19707         MonoGenericContext from it.
19708
19709 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
19710
19711         * inssel-long32.brg (OP_LCONV_TO_OVF_I2): Fix CONV_I1 -> CONV_I2.
19712
19713         * basic-long.cs: Add test for checked i8->i2 cast.
19714
19715 Wed Oct 6 12:40:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
19716
19717         * inssel-ppc.brg: added a couple of speedup rules.
19718
19719 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
19720
19721         * Makefile.am (genmdesc_LDADD): Don't link this against libmetadata
19722         to speed up rebuilds.
19723
19724 2004-10-04  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
19725
19726         * mini-s390.c: Minor fix to OP_OR_IMM.
19727
19728 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
19729
19730         * tramp-sparc.c (sparc_magic_trampoline): Handle appdomain stuff
19731         better. Fixes appdomain-unload.exe on sparc.
19732
19733 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
19734
19735         * ssa.c: Fixed casts to unsigned where the value was of 64 bits in
19736         simulate_long_compare, patch by will@exomi.com (Ville-Pertti Keinonen),
19737         see bug 67324.
19738
19739 2004-10-02  Zoltan Varga  <vargaz@freemail.hu>
19740
19741         * jit-icalls.c: Handle a nonexisting trunc function more correctly.
19742
19743 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
19744
19745         * mini.c: Always generate a field read/write wrapper for members
19746         of the class MarshalByRefObject since the actual instance could
19747         be a CBO.
19748
19749 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
19750
19751         * mini.c: Use mono_thread_exit() to stop threads, instead of ExitThread.
19752
19753 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
19754
19755         * driver.c mini.h trace.c: Move the setting of the main assembly into
19756         a separate function called mono_trace_set_assembly () and call it after
19757         actually loading the main assembly. Fixes #66872.
19758
19759 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
19760
19761         * mini-amd64.h mini-amd64.c tramp-amd64.c: Allocate trampoline memory
19762         using the code manager.
19763
19764 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
19765
19766         * tramp-amd64.c mini-amd64.h: Add support for MONO_ARCH_HAVE_INVALIDATE_METHOD.
19767
19768 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
19769
19770         * cpu-amd64.md: Fix bug in previous patch.
19771         
19772         * cpu-amd64.md: Fix instruction lengths of membase opcodes. Fixes
19773         #66650.
19774
19775 Wed Sep 22 19:03:20 CEST 2004 Paolo Molaro <lupus@ximian.com>
19776
19777         * mini.h, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
19778         mini-exceptions.c: updates for changed stack walk interface.
19779
19780 2004-09-21  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
19781
19782         * mini-s390.c, cpu-s390.md: Minor changes to OP_ARGLIST handling
19783
19784 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
19785
19786         * mini.c (mono_method_to_ir): Fix LDSTR in dynamic methods. Fixes #66132.
19787
19788 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
19789
19790         * driver.c (mini_regression_list): Do not call mono_assembly_close 
19791         since assemblies can't be unloaded.
19792         
19793 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
19794
19795         * cpu-amd64.md: Fix more instruction lengths.
19796
19797         * cpu-amd64.md: Fix lengths of some instructions.
19798
19799 2004-09-11 Ben Maurer  <bmaurer@users.sourceforge.net>
19800
19801         * inssel.brg: Make the array ldelema check aot friendly.
19802
19803 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
19804
19805         * mini-amd64.c (mono_arch_get_argument_info): Fix stack_unwind test.
19806
19807         * cpu-amd64.md inssel-long.brg inssel-amd64.brg: Small optimizations.
19808
19809 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
19810
19811         * mini-x86.c: Fix build.
19812
19813         * mini-sparc.c mini-x86.c mini-amd64.c: Use the new 
19814         mono_type_get_underlying_type () helper function to simplify code.
19815         
19816 2004-09-09  Martin Baulig  <martin@ximian.com>
19817
19818         * mini-amd64.c: Don't access `type->data.klass' directly, call
19819         mono_class_from_mono_type() instead since the type may be a
19820         generic instance.
19821
19822 2004-09-09  Martin Baulig  <martin@ximian.com>
19823
19824         * mini-amd64.c (get_call_info): Fix support for generic instances.
19825         (add_valuetype): Use mono_class_from_mono_type() to get the class
19826         since we can be a generic instance.
19827
19828 Thu Sep 9 01:43:53 PDT 2004 Paolo Molaro <lupus@ximian.com>
19829
19830         * mini-ppc.c, mini.h, regalloc.c, regalloc.h: powerpc speedups.
19831
19832 2004-09-07 Ben Maurer  <bmaurer@users.sourceforge.net>
19833
19834         * liveness.c: reset spill costs on each scan: bug 62107
19835
19836 2004-09-07  Bernie Solomon  <bernard@ugsolutions.com>
19837
19838         * exceptions-sparc.c (mono_arch_find_jit_info): remove
19839         unnecessary line that doesn't compile
19840
19841 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
19842
19843         * mini.c mini.h mini-x86.h tramp-x86.c: Instead of freeing delegate
19844         trampolines, make them call an error function so people can fix their
19845         code.
19846
19847 2004-09-06  Martin Baulig  <martin@ximian.com>
19848
19849         * mini.c (mono_method_to_ir): When initializing locals, handle a
19850         generic instances like a valuetype if it's a valuetype and like a
19851         class if it's a class.
19852
19853 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
19854
19855         * exceptions-x86.c (mono_arch_find_jit_info): Pop arguments off the
19856         stack. Fixes #64674.
19857
19858         * exceptions.cs: Add test for unwinding of call arguments.
19859
19860 Mon Sep 6 05:50:02 PDT 2004 Paolo Molaro <lupus@ximian.com>
19861
19862         * mini-*.c, mini-ops.h, inssel-long32.brg: introduced
19863         OP_ADDCC_IMM and OP_SUBCC_IMM (add/sub immediate that will
19864         set the carry/borrow flag). The sparc and s390 implementations
19865         can now use optimized versions (and simplify the code). ppc bugfixes.
19866
19867 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
19868
19869         * exceptions-ppc.c (mono_arch_find_jit_info): Fix memory leak.
19870
19871 2004-09-05  Zoltan Varga  <vargaz@freemail.hu>
19872
19873         * inssel-amd64.brg: Remove leftover 32 bit rule.
19874
19875         * mini-amd64.c (mono_arch_instrument_prolog): Fix tracing support.
19876
19877 2004-09-04  Zoltan Varga  <vargaz@freemail.hu>
19878
19879         * mini-exceptions.c (mono_find_jit_info): Refactor common code from
19880         mono_arch_find_jit_info functions into a new function. Fix a memory
19881         leak.
19882
19883         * exceptions-x86.c exceptions-amd64.c exceptions-sparc.c: Remove
19884         refactored code.
19885         
19886 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
19887
19888         * exceptions.cs inssel-long32.brg: Handle the OP_LCONV_TO_OVF_I2 case
19889         as well.
19890         
19891         * exceptions.cs: Add array size tests.
19892
19893         * mini.c: Allocate a separate icall wrapper for each arity of 
19894         mono_array_new_va. Fixes #59509.
19895
19896         * exceptions.cs: Add testcase for 64578.
19897
19898         * inssel-long32.brg: Fix OP_LCONV_TO_OVF_I1 rule. Fixes #64578.
19899
19900         * trace.c (is_filenamechar): Allow 0..9 in strings. Fixes #65094.
19901         
19902 2004-09-02  Martin Baulig  <martin@ximian.com>
19903
19904         * mini.c (mono_method_to_ir): When initializing the locals, call
19905         handle_initobj() on the generic instance itself, not its
19906         underlying type.
19907
19908 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
19909
19910         * mini.h (MonoJitDynamicMethodInfo): New structure, extension of 
19911         MonoJitInfo for dynamic methods.
19912
19913         * mini.c: Rename trampoline_hash_mutex to jit_mutex.
19914
19915         * mini.c: Add support for freeing JIT data for dynamic methods.
19916         
19917 2004-09-01  Martin Baulig  <martin@ximian.com>
19918
19919         * mini-x86.c (is_regsize_var): Added support for generic
19920         instances.
19921         (mono_arch_emit_prolog): Make this compile again, use
19922         `x86_push_imm_template (code)'.
19923
19924 2004-08-30 Ben Maurer  <bmaurer@users.sourceforge.net>
19925
19926         * mini-x86.c: make all push_imm instructions that get
19927         patched always emit the long form
19928
19929 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
19930
19931         * mini.c (mono_create_jump_trampoline): Store the jump trampolines 
19932         in a per-domain hash.
19933
19934         * mini-amd64.c (merge_argument_class_from_type): Handle generic
19935         types.
19936
19937 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
19938
19939         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: Ongoing SSE
19940         work.
19941         
19942         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: More SSE
19943         work.
19944
19945         * mini-amd64.c cpu-amd64.md: Implement checked int<->uint casts.
19946         Beginnings of SSE2 support.
19947
19948         * exceptions.cs: Add more tests for checked int<->uint casts.
19949
19950 2004-08-28  Martin Baulig  <martin@ximian.com>
19951
19952         * mini-x86.c (mono_arch_instrument_epilog): Added support for
19953         generic instances.
19954
19955         * mini.c
19956         (mono_type_to_ldind, mono_type_to_stind, type_to_eval_stack_type):
19957         Handle generic instances recursively.
19958
19959 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
19960
19961         * iltests.il: test for conv.u8 on a constant
19962
19963 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
19964
19965         * inssel-long32.brg: c&p rules for LCONV_x4 (membase) and
19966         LCONV_x4 (shrun_32 (membase)).
19967
19968 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
19969
19970         * inssel-x86.brg: c&p rules for push/setret of long
19971
19972 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
19973
19974         * inssel-x86.brg: c&p rules for compare (base, regvar) and
19975         compare (regvar, base)
19976
19977         * inssel-x86.brg: more burg love
19978
19979         * inssel.brg: more cleanup
19980
19981         * inssel-x86.brg, inssel-long32.brg: burg cleanup.
19982
19983 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
19984
19985         * basic-long.cs, basic-calls.cs: new tests for optimization.
19986
19987 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
19988
19989         * mini-amd64.c (read_tls_offset_from_method): Fix typo in previous
19990         patch.
19991
19992 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
19993
19994         * mini-amd64.c (read_tls_offset_from_method): Add another case.
19995         
19996 2004-08-25  Bernie Solomon  <bernard@ugsolutions.com>
19997
19998         * inssel.brg (mini_emit_memcpy): use 
19999         NO_UNALIGNED_ACCESS to disable memcpy optimization
20000
20001 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
20002
20003         * mini-amd64.c: Handle generic types in various places.
20004
20005         * mini.c (mono_method_to_ir): Handle generic types in init locals.
20006
20007 2004-08-24  Zoltan Varga  <vargaz@freemail.hu>
20008
20009         * mini.c (handle_box): Fix warning.
20010
20011         * mini-amd64.c (mono_arch_local_regalloc): Fix regalloc problem.
20012
20013         * mini-amd64.h: Enable the emit_state optimization.
20014
20015         * mini-ops.h cpu-amd64.md: Add new amd64_test_null opcode.
20016
20017         * mini-amd64.c: Add some new 64 bit peephole opts.
20018
20019         * inssel.brg (mini_emit_memcpy): Optimize for 64 bit architectures.
20020
20021         * cpu-amd64.md: sreg1 of div instructions must be %rax.
20022
20023         * mini-amd64.c: Register allocator fixes.
20024
20025         * mini.c: Add an optimization to emit_state to avoid allocation of new
20026         registers on some platforms.
20027
20028 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
20029
20030         * inssel-x86.brg inssel-amd64: Add yet another missing tree->dreg assignment.
20031
20032         * mini-x86.c (mono_arch_local_regalloc): Fix bug in long register
20033         allocation. Fixes #63085.
20034
20035         * basic-long.cs: Add new regression test.
20036
20037         * mini-amd64.c: Register allocator improvements.
20038
20039 2004-08-21  Zoltan Varga  <vargaz@freemail.hu>
20040
20041         * mini-amd64.c (read_tls_offset_from_method): Add another code
20042         sequence.
20043
20044         * tramp-amd64.c (amd64_class_init_trampoline): Use a more efficient
20045         instruction sequence for nullifying class init trampolines.
20046
20047         * objects.cs: Add new regalloc test.
20048
20049         * mini-amd64.c inssel-amd64.brg: Optimize parameter passing.
20050
20051 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
20052
20053         * mini-amd64.c (mono_arch_call_opcode): Refactor this a little.
20054         
20055         * mini-amd64.c (mono_arch_regalloc_cost): Adjust regalloc costs for
20056         arguments.
20057
20058         * driver.c: Fix profiling after TLS changes.
20059         
20060         * driver.c (mono_main): Set mono_stats.enabled if needed.
20061
20062         * mini.c (handle_alloc): New helper function used by CEE_NEWOBJ and
20063         CEE_BOX.
20064
20065 2004-08-20 Ben Maurer  <bmaurer@users.sourceforge.net>
20066
20067         * mini-x86.c: use a 1 op rather than a 2 op tls access
20068         instruction -> faster.
20069
20070 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
20071
20072         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from
20073         x86 backend.
20074
20075 2004-08-19 Bernie Solomon <bernard@ugsolutions.com>
20076
20077         * exceptions-sparc.c (throw_exception): fix typo
20078
20079 2004-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
20080
20081         * mini-x86.c, cpu-pentium.md, inssel-x86.brg:
20082         set tree->dreg correctly with tls. Allow any
20083         register to be used.
20084
20085         * mini-x86.c (read_tls_offset_from_method): add new code
20086         generation pattern seen with GCC.
20087
20088
20089 Thu Aug 19 17:26:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
20090
20091         * mini-exceptions.c, exceptions-x86.c, exceptions-amd64.c,
20092         exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
20093         exceptions-sparc.c: fix some performance issues in exception
20094         handling and setting of the stack trace for exceptions that were
20095         already thrown.
20096
20097 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
20098
20099         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from 
20100         x86 backend.
20101         
20102         * mini-amd64.c (mono_arch_is_int_overflow): Handle all possible 
20103         registers.
20104
20105 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
20106
20107         This patch inlines tls access, when possible.
20108         
20109         * mini.h: new arch functions for TLS intrinsics.
20110         All platforms updated with a stub.
20111
20112         * mini.c: use the new intrinsics
20113
20114         * mini-x86.c, cpu-pentium.md, inssel-x86.brg, mini-ops.h:
20115         arch specific intrinsic for tls variables
20116
20117 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
20118
20119         * Makefile.am (libmono_la_LDFLAGS): Enable creating of libmono dll
20120         under windows.
20121
20122 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
20123
20124         * mini.c: thread local allocation
20125
20126 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
20127
20128         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Enable.
20129
20130         * Makefile.am: Link against the static version of libmonogc.
20131         
20132         * Makefile.am: Link the static versions of the convenience libraries
20133         into the mono executable.
20134
20135         * mini-x86.h mini-x86.c: Throw the correct exception on integer overflow.
20136
20137 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
20138
20139         * mini.h mini.c mini-amd64.h mini-amd64.c: Throw the correct exception
20140         on integer overflow.
20141
20142         * mini-amd64.c: Reorganize function call code.
20143
20144         * mini-amd64.c (peephole_pass): Merge changes from mini-x86.c.
20145
20146 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
20147
20148         * inssel-x86.brg: use xor eax,eax.
20149         
20150         * basic.cs: new tests
20151
20152 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
20153
20154         * mini-amd64.c (mono_arch_emit_epilog): Use RIP relative addressing
20155         in exception throwing code.
20156         
20157 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
20158
20159         * inssel-x86.brg: use xor esi,esi.
20160
20161 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
20162
20163         * driver.c (mono_main): Call mono_trace_parse_options earlier so it
20164         can trace methods compiled during mini_init () too.
20165
20166         * cpu-amd64.md mini-amd64.c (mono_arch_output_basic_block): Handle 
20167         CEE_CONV_U4.
20168
20169 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
20170
20171         * Makefile.am: static link on x86 (r=zoltan)
20172
20173 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
20174
20175         * tramp-amd64.c (amd64_magic_trampoline): Avoid patching the trampoline
20176         code since it causes some programs to fail.
20177
20178 2004-08-12  Zoltan Varga  <vargaz@freemail.hu>
20179
20180         * mini-amd64.c (bb_is_loop_start): Merge changes from mini-x86.c.
20181
20182 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
20183
20184         * mini.c: ovfops_op_map - add STACK_OBJ case for
20185         CONV_I 
20186         * basic.cs: add test_0_pin_string as test
20187         case for above.
20188
20189 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
20190
20191         * Makefile.am: build C# if srcdir != builddir
20192
20193 Tue Aug 10 19:23:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
20194
20195         * dominators.c, mini.h, mini-x86.c: fix loop alignment with
20196         fall-through blocks.
20197
20198 Tue Aug 10 16:18:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
20199
20200         * driver.c: enable loop by default again and include abcrem in -O=all.
20201
20202 2004-08-08  Zoltan Varga  <vargaz@freemail.hu>
20203
20204         * iltests.il: Add some localloc tests.
20205
20206         * mini.c (mono_method_to_ir): Set stack type of LOCALLOC correctly.
20207
20208         * inssel-amd64.brg inssel-x86.brg: Set dreg of LOCALLOC correctly. 
20209         Fixes #62574.
20210
20211         * inssel-amd64.brg: Add some optimizations.
20212
20213         * mini-amd64.c (mono_arch_setup_jit_tls_data): Add tls offset detection
20214         for gcc-3.4.
20215
20216         * Makefile.am: Statically link mono against libmono on AMD64.
20217         
20218         * mini-amd64.c inssel-amd64.brg: Optimizations.
20219
20220 2004-08-07  Zoltan Varga  <vargaz@freemail.hu>
20221
20222         * mini-amd64.c (mono_arch_emit_prolog): Optimize lmf saving a bit.
20223
20224         * tramp-amd64.c: Patch calling code in trampolines.
20225
20226 2004-08-06  Zoltan Varga  <vargaz@freemail.hu>
20227
20228         * mini-amd64.c: pinvoke struct passing fixes.
20229
20230 2004-08-05  Bernie Solomon  <bernard@ugsolutions.com>
20231
20232         * mini-sparc.c: redo change, make mono_arch_cpu_init call
20233         mono_arch_cpu_optimizazions so sparcv9 is initialized when embedded
20234
20235 2004-08-05  Duncan Mak  <duncan@ximian.com>
20236
20237         * mini.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
20238         CEE_LDELEM_ANY.
20239
20240 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
20241
20242         * mini-amd64.c (emit_move_return_value): Move return value for normal
20243         calls too.
20244
20245 2004-08-05  Martin Baulig  <martin@ximian.com>
20246
20247         * mini.c (ret_type_to_call_opcode): Don't use a `t' variable for
20248         `type->type'; just modify `type' itself when dealing with enums
20249         and generic instances.
20250         (check_call_signature): Make `simple_type' a `MonoType *'.
20251
20252 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
20253
20254         * mini.c: Use OP_PADD to add offsets to addresses.
20255
20256         * mini-amd64.h: Disable SIGSEGV_ON_ALTSTACK.
20257
20258 2004-08-04  Bernie Solomon  <bernard@ugsolutions.com>
20259
20260         * mini-sparc.c (mono_arch_emit_epilog): fix check
20261         for folding last op into restore instruction
20262
20263 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
20264
20265         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Allocate
20266         helper methods using the code manager.
20267         
20268         * exceptions-amd64.c (mono_arch_get_throw_exception): Fix maximum length.
20269
20270         * mini-amd64.c (mono_arch_allocate_vars): Fix tls offset detection.
20271
20272 Tue Aug 3 23:50:00 EST 2004 Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
20273         
20274         * mini-s390x.c mini-s390x.h tramp-s390x.c inssel-s390x.brg
20275           cpu-s390x.md exceptions-s390x.c Makefile.am: S/390 64-bit JIT
20276
20277         * mini-s390.c: fix tail processing
20278
20279 Tue Aug 3 01:35:44 PDT 2004 Paolo Molaro <lupus@ximian.com>
20280
20281         * mini-ppc.c: mul.ovf.un exception name fix.
20282
20283 2004-08-03  Martin Baulig  <martin@ximian.com>
20284
20285         * mini-x86.c (mono_arch_call_opcode): Correctly handle generic
20286         instances; before jumping to `handle_enum', also modify `ptype'.
20287
20288 2004-08-02  Bernie Solomon  <bernard@ugsolutions.com>
20289
20290         * cpu-sparc.md: fcall maximal length too small.
20291
20292 2004-08-02  Zoltan Varga  <vargaz@freemail.hu>
20293
20294         * mini-amd64.c mini.h: Add initial support for passing/returning 
20295         structures to/from pinvoked methods.
20296
20297 Mon Aug 2 11:59:35 PDT 2004 Paolo Molaro <lupus@ximian.com>
20298
20299         * mini-ppc.c: reg allocator fix.
20300
20301 2004-07-31  Zoltan Varga  <vargaz@freemail.hu>
20302
20303         * mini-amd64.c (mono_arch_output_basic_block): Fix OP_X86_PUSH_OBJ.
20304
20305         * inssel.brg: Optimize memset on 64 bit machines.
20306
20307         * mini-amd64.c: Fix some vararg cases.
20308
20309 2004-07-30  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
20310
20311         * mini-s390.c: Corrected macro in emit_float_to_int
20312
20313         * s390-abi.cs: Tests to exercise the s390 ABI
20314
20315 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
20316
20317         * exceptions-amd64.c (mono_arch_find_jit_info): Fix restoring of
20318         caller saved regs.
20319
20320         * basic.cs: Add a test for add.ovf.un.
20321
20322 2004-07-30  Bernie Solomon  <bernard@ugsolutions.com>
20323
20324         * mini-sparc.c: add case for OP_IDIV_UN
20325
20326 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
20327
20328         * mini-amd64.c mini-amd64.h mini.c: Add support for vararg pinvoke calls.
20329         
20330         * mini-amd64.c cpu-amd64.md: Ongoing JIT work.
20331
20332 2004-07-30  Ben Maurer  <bmaurer@ximian.com>
20333
20334         * basic.cs: regression tests.
20335
20336         * inssel-x86.brg: Disable cmp BYTE PTR [eax], imm, it causes various
20337         regressions.
20338
20339 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
20340
20341         * basic.cs: Add a new test.
20342
20343         * mini-amd64.c aot.c cpu-amd64.md: Add support for tracing, profiling 
20344         and AOT. Various fixes and optimizations.
20345
20346         * inssel.brg (CALL_REG): Add 64 bit versions of call_reg rules.
20347
20348 Fri Jul 30 15:49:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
20349
20350         * mini-ppc.c: make sure temp regs are not used for global reg
20351         allocation.
20352
20353 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
20354
20355         * cpu-sparc.md: conv_i8 fix for 64bits
20356
20357         * mini-sparc.c: add cases for OP_IXXX codes for 64bits
20358
20359 2004-07-29  Ben Maurer  <bmaurer@ximian.com>
20360         
20361         * cpu-pentium.md, mini-x86.c, inssel-x86.brg, mini-ops.h:
20362         add opcode for cmp BYTE PTR [eax], imm.
20363
20364         * inssel.brg: Make memcpy and memset takes bases.
20365
20366 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
20367
20368         * *-amd64.*: More AMD64 work.
20369         
20370 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
20371
20372         * cpu-pentium.md, inssel-x86.brg, mini-ops.h, mini-x86.c:
20373         add a compare-not-equal opcode.
20374         
20375 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
20376
20377         * mini.c: Use mono_init_from_assembly instead of mono_init.
20378         
20379 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
20380
20381         * mini.c: Fix opcode mapping for STACK_MP on 64 bit platforms.
20382
20383         * mini.c (CEE_NEWOBJ): Call mono_array_new_va using the correct signature.
20384
20385         * mini.c: Use MONO_ARCH_SIGACTION on AMD64 as well.
20386
20387         * inssel.brg: 64 bit fixes.
20388
20389         * mini.h (MonoCallInst): Add some AMD64 specific data.
20390
20391         * mini.h: Add some OP_P opcodes.
20392
20393 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
20394
20395         * basic.cs: tests for 61797 and 61740
20396
20397 Tue Jul 27 16:05:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
20398
20399         * mini-ppc.c, mini-sparc.c, mini-s390.c: keep track of line
20400         numbers in the debug info (spotted by Geoff Norton, <gnorton@customerdna.com>).
20401
20402 2004-07-24  Zoltan Varga  <vargaz@freemail.hu>
20403
20404         * mini-sparc.c (mono_arch_output_basic_block): Add CEE_CONV_U8/I8.
20405
20406         * *-amd64*.*: Ongoing AMD64 work.
20407
20408 2004-07-23 Zoltan Varga <vargaz@freemail.hu>
20409
20410         * inssel-long.brg: Implement CONV_I8/CONV_U8 in the backends.
20411
20412         * *-amd64*: Ongoing AMD64 work.
20413
20414         * mini-arch.h: Add AMD64 support.
20415
20416         * mini-sparc.c (mono_arch_is_inst_imm): New arch dependent function.
20417
20418         * mini.h: Add new arch dependent function mono_arch_is_inst_imm.
20419
20420         * mini-ops.h: Add new opcodes.
20421
20422         * Makefile.am: Add AMD64 support.
20423
20424         * inssel.brg inssel-long32.brg inssel-long.brg: Move mul/div and shift
20425         rules into the inssel-long*.brg files.
20426
20427         * *-amd64.*: Add beginnings of AMD64 backend.
20428
20429 2004-07-22  Ben Maurer  <bmaurer@ximian.com>
20430
20431         * mini.c (print_dfn): commenting out the code that prints
20432         the cil. With -O=deadce, this makes -v -v crash.
20433         
20434         * cpu-pentium.md: make checkthis have a length of 2
20435
20436 2004-04-21  Bernie Solomon  <bernard@ugsolutions.com>
20437
20438         * mini-sparc.h: fix implementations of __builtin
20439         functions for Sun compiler for V9.
20440
20441 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
20442
20443         * mini.c: use the new stelem.ref wrapper
20444         * exceptions.cs, arrays.cs: new stelem.ref tests
20445
20446 Wed Jul 14 19:08:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
20447
20448         * mini-ppc.c, exceptions-ppc.c: cleanups and fixes (the
20449         new XSP should work with these changes).
20450
20451 2004-07-14  Ben Maurer  <bmaurer@ximain.com>
20452         
20453         * inssel-{long32,x86,}.brg: trivial optimizations.
20454         
20455 Mon Jul 12 20:25:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
20456
20457         * mini.c: load value when emitting box operation in
20458         constrained calls.
20459
20460 2004-07-12  Ben Maurer  <bmaurer@ximian.com>
20461
20462         * mini-x86.c (OP_CHECK_THIS): cmp DWORD PTR [eax], eax
20463         is one byte shorter than cmp DWORD PTR [eax], 0.
20464
20465 Mon Jul 12 17:47:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
20466
20467         * inssel-ppc.brg: arguments on the stack are always
20468         relative to the stack pointer (spotted by Neale Ferguson).
20469
20470 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20471
20472         * exceptions-x86.c: delay appending the method name to the trace until
20473         after mono_jit_info_table_find is called, as this gets the real
20474         MonoMethod.
20475
20476 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
20477
20478         * aot.c: register roots
20479
20480 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
20481
20482         * aot.c : I could just use PLATFORM_WIN32 flag.
20483
20484 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
20485
20486         * aot.c : Reverting the previous fix. This time it broke linux build.
20487
20488 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
20489
20490         * aot.c : quick cygwin build fix. mkdir() with two args does not exist.
20491
20492 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
20493
20494         * mini.c (handle_stack_args): Remove some more debugging code.
20495         
20496         * mini.c (handle_stack_args): Remove debug output left in by mistake.
20497
20498         * driver.c mini.h aot.c: Allow additional options to be specified with
20499         --aot and pass them to mono_compile_assembly.
20500
20501         * aot.c: Add experimental code to AOT compile all loaded assemblies
20502         on demand and save the code into a cache in the filesystem.
20503
20504         * aot.c: Add support for more wrapper methods.
20505         
20506         * mini.c (handle_stack_args): Handle some corner cases. Fixes 
20507         58863.
20508
20509         * cpu-*.md: Remove removed opcodes.
20510
20511         * mini.h mini.c: Move JIT icall handling to icall.c. Replace usage of
20512         CEE_MONO_PROC<x> with CEE_MONO_ICALL. Move registration of marshalling
20513         related icalls to marshal.c.
20514
20515 2004-07-06  Zoltan Varga  <vargaz@freemail.hu>
20516
20517         * mini-ops.h: Add OP_SAVE_LMF and OP_RESTORE_LMF.
20518
20519         * Makefile.am (EXTRA_DIST): Add inssel-long[32].brg.
20520
20521         * inssel.brg: Fix warning. Add rules for SAVE_LMF and RESTORE_LMF.
20522
20523 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
20524         * liveness.c: If liveness is recomputated we need to reset the information
20525         for each variable. This way, if the liveness range has been narrowed
20526         by optimizations that happened after the last computation, we can return
20527         a smaller range.
20528         
20529         For example, if you have
20530         
20531         {
20532                 int i = 0;
20533                 
20534                 // Tons of code that does not affect i
20535                 
20536                 i = foo ();
20537                 ...
20538         }
20539         
20540         i = 0 is dead code and will be removed by SSA. However, when
20541         linear scan gets to the code, i will still appear to be live
20542         throughout the entire block. This prevents good register allocation.
20543
20544 2004-07-06  Martin Baulig  <martin@ximian.com>
20545
20546         * debug-mini.c (mono_debug_init_method): Allow
20547         MONO_WRAPPER_MANAGED_TO_NATIVE wrappers.
20548         (mono_debug_add_icall_wrapper): New method.
20549
20550         * mini.c (mono_icall_get_wrapper): Call mono_debug_add_icall_wrapper().
20551
20552 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
20553
20554         * mini.c (optimize_branches): Fix linking of bblocks in branch->branch
20555         optimization.
20556
20557 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
20558
20559         * aot.c (mono_aot_load_method): Fix loading of debug info.
20560
20561 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
20562
20563         * aot.c: Add logging support.
20564
20565 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
20566
20567         * mini.h: Add prototype for mono_print_method_from_ip.
20568
20569         * mini.c: 64 bit fixes. Use LCOMPARE for comparing longs.
20570
20571         * inssel.brg: 64 bit fixes.
20572
20573         * inssel.brg inssel-long32.brg: Move 32 bit arithmetic rules to 
20574         inssel-long32.brg.
20575
20576         * Makefile.am: Add SPARC64 support.
20577
20578 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
20579
20580         * aot.c: Fix alignment problems on 32 bit platforms.
20581
20582 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
20583
20584         * helpers.c (mono_disassemble_code): Pass -xarch=v9 to assembler on
20585         SPARC64.
20586
20587         * aot.c: Add SPARC64 support. Reorganize patch table to fix alignment
20588         problems.
20589
20590         * mini.h: Bump AOT file version. Some 64 bit fixes.
20591
20592 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
20593
20594         * inssel-sparc.brg: Add new rule to avoid register moves.
20595
20596         * inssel.brg: Add ldind_to_load_membase helper function.
20597
20598 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
20599
20600         * mini.c: OffsetToStringData intrinsic.
20601         
20602 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
20603
20604         * ssa.c: Handle OP_LCOMPARE the same as OP_COMPARE.
20605
20606         * objects.cs exceptions.cs basic.cs basic-long.cs basic-calls.cs: New
20607         regression tests.
20608
20609         * mini-ops.h cpu-sparc.md mini-sparc.h mini-sparc.c exceptions-sparc.c tramp-sparc.c inssel-long.brg: Add SPARC64 support.
20610 Mon Jun 28 18:05:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
20611
20612         * mini.c: reinstated mono_compile_get_interface_var()
20613         on x86, too, since the change breaks the Gtk# build there as well.
20614
20615 Fri Jun 25 17:36:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
20616
20617         * driver.c: remove loop from the default optimizations: it seems to
20618         interact badly with some of the other options (see bug #60613).
20619
20620 2004-06-25  Zoltan Varga  <vargaz@freemail.hu>
20621
20622         * mini.c mini-x86.h mini-x86.c: Applied patch from Guenter Feldmann 
20623         (fld@informatik.uni-bremen.de): Add Solaris x86 support.
20624
20625 Tue Jun 22 21:29:11 CEST 2004 Paolo Molaro <lupus@ximian.com>
20626
20627         * mini-ppc.c, cpu-g4.md: small updates to be able to compile
20628         vararg-using methods.
20629
20630 2004-06-21  Martin Baulig  <martin@ximian.com>
20631
20632         * mini/mini-exceptions.c
20633         (mono_handle_exception): Added `gpointer original_ip' argument.
20634         After calling mono_unhandled_exception(), call
20635         mono_debugger_unhandled_exception() and if that returns true,
20636         restore the context and return.
20637
20638 Mon Jun 21 19:26:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
20639
20640         * mini-ppc.c: prefer the use of relative branches so
20641         they won't need to be patched in aot code (patch from Patrick Beard).
20642
20643 Mon Jun 21 19:03:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
20644
20645         * aot.c: patch from Patrick Beard to make the output assembly
20646         more correct for the MacOSX assembler. Small tweak to
20647         generate sane images on Linux/PPC, too.
20648
20649 Fri Jun 18 18:24:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
20650
20651         * mini.c, mini.h, mini-ppc.c: handle varargs methods with a special
20652         case until bug #59509 is fixed (shows up in #60332).
20653
20654 Tue Jun 15 16:36:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
20655
20656         * mini.c: make sure the needed wrappers are compiled, too, with
20657         precomp.
20658
20659 Mon Jun 14 18:36:08 CEST 2004 Paolo Molaro <lupus@ximian.com>
20660
20661         * driver.c: remove NPTL reference in --version output.
20662
20663 Sun Jun 13 17:25:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
20664
20665         * aot.c: patch from Patrick Beard (pcbeard@mac.com) to
20666         generate valid assembly for the Mach-O assembler.
20667
20668 Sun Jun 13 15:59:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
20669
20670         * driver.c: don't include abcrem in the all optimization specifier
20671         since it slows down jit compilation too much for now.
20672
20673 2004-06-12 Ben Maurer  <bmaurer@users.sourceforge.net>
20674
20675         * mini.c: use BIGMUL only if both operands have the same signage.
20676         * iltests.il: Test for bug 60056. (errors related to signage in
20677         BIGMUL).
20678
20679         r=lupus.
20680
20681 Thu Jun 10 16:06:42 CEST 2004 Paolo Molaro <lupus@ximian.com>
20682
20683         * mini.c, aot.c: memory leak fixes.
20684
20685 Tue Jun 8 16:37:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
20686
20687         * inssel-long32.brg: implemented a few missing ulong cast opcodes.
20688
20689 Tue Jun 8 15:36:30 CEST 2004 Paolo Molaro <lupus@ximian.com>
20690
20691         * Makefile.am: remove the -static hack completely, it links in
20692         statically glib as well.
20693
20694 Sat Jun 5 16:32:33 CEST 2004 Paolo Molaro <lupus@ximian.com>
20695
20696         * iltests.il, mini.c: fixed bug#59580 in branch optimization.
20697         * exceptions.cs: make it compile with new mcs/csc.
20698
20699 2004-06-03 Massimiliano Mantione <massi@ximian.com>
20700         * cpu-pentium.md basic-float.cs Fixed bug on fpu spills (see bug 54467),
20701         and added relevant test case.
20702
20703 Mon May 31 19:41:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
20704
20705         * mini.c revert Zoltan's fix to bug#58863 on ppc, since it causes
20706         regressions in gtk-sharp.
20707
20708 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
20709
20710         * exceptions.cs: New regression tests.
20711
20712         * jit-icalls.c (mono_llmult_ovf): Fix some boundary conditions.
20713
20714 Sat May 29 10:45:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
20715
20716         * mini.c: emit castclass/isinst in their own trees (bug #54209/59057).
20717
20718 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
20719
20720         * mini-sparc.h (MONO_ARCH_NEED_DIV_CHECK): Define this.
20721
20722         * cpu-sparc.md mini-sparc.c: Add overflow detection to div opcodes.
20723
20724 2004-05-28      Patrik Torstensson <totte@hiddenpeaks.com>
20725
20726         * mini.c (mono_jit_runtime_invoke): Init class in this
20727         method instead of trusting mono_jit_compile_method to
20728         do the work (because wrappers can be in object class)
20729
20730 2004-05-27  Zoltan Varga  <vargaz@freemail.hu>
20731
20732         * mini-sparc.c (mono_arch_output_basic_block): Fix sub.imm.
20733
20734         * basic-long.cs: New regression test.
20735
20736 Thu May 27 15:50:52 CEST 2004 Paolo Molaro <lupus@ximian.com>
20737
20738         * cpu-g4.md, mini-ppc.c: fixes to long add/sub ovf opcodes
20739         and div/rem checks.
20740
20741 Thu May 27 12:36:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
20742
20743         * Makefile.am: fix miguel's change to build mono statically against
20744         libmono (track build dependencies).
20745
20746 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
20747
20748         * cfold.c: Some glib versions do not have G_MININT32.
20749
20750 2004-05-26  Massimiliano Mantione  <massi@ximian.com>
20751
20752         * mini-x86.c cpu-pentium.md Makefile.am basic-math.cs: Fixed problem
20753         with precision of tan, atan, sin and cos, and implemented related
20754         regressions tests (fixes bug 54467, but one new problem appeared and
20755         is not fixed yet).
20756
20757 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
20758
20759         * cfold.c (FOLD_BINOPZ): Avoid division by zero.
20760
20761         * exceptions.cs: Add test for constant folding && division by zero.
20762
20763         * driver.c mini.h mini.c mini-x86.c: Revert most of the previous patch
20764         since driver.c is in libmono too, so the optimization was useless.
20765
20766         * driver.c mini.h mini.c mini-x86.c: Moved the mono_lmf_addr TLS 
20767         variable to driver.c so the compiler can emit more efficient code to
20768         access them.
20769
20770 2004-05-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20771
20772         * Makefile.am: don't distribute generated inssel.[ch] files.
20773
20774 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
20775
20776         * mini.c (mono_jit_compile_method_with_opt): Really emit icall wrappers
20777         into the default appdomain. Fixes #58707.
20778
20779         * jit-icalls.c: Remove the broken approximation for truncl, doing
20780         no conversion is better.
20781
20782         * mini.c (handle_stack_args): Avoid reusing variables for stack slots.
20783         Fixes #58863.
20784
20785 Tue May 25 14:33:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
20786
20787         * mini-ops.h, mini-ppc.c, cpu-g4.md, inssel-ppc.brg: eliminate the use
20788         of the mcrxr instruction which is not available on some processors
20789         even if it's documented to be. Implement add and sub overflow correctly
20790         (still not complete for long unsigned). Speed up icalls a bit.
20791
20792 2004-05-25 13:01 CET Patrik Torstenson <totte@hiddenpeaks.com>
20793
20794         * mini.c (mono_jit_compile_method_with_opt): Make sure that
20795         we run .cctor in the current domain instead of target_domain.
20796         
20797         Fixes bug #58558, .cctor not being called in -O=shared.
20798
20799 Tue May 25 12:46:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
20800
20801         * mini-ppc.h, jit-icalls.c: added explicit checks for divide by zero.
20802
20803 2004-05-24 Ben Maurer  <bmaurer@users.sourceforge.net>
20804
20805         * mini-x86.c (EMIT_COND_BRANCH): If an OP_LABEL has an offset
20806         which can be done with an imm8, do it that way.
20807         (mono_arch_output_basic_block): ditto for a jmp
20808         (mono_arch_emit_prolog): Computate maximum offset of a label.
20809
20810 2004-05-24 18:18 CET Patrik Torstenson <totte@hiddenpeaks.com>
20811
20812         * mini-x86.c (mono_arch_local_regalloc): the reg allocator
20813         now tries to allocate prefered physical reg's for virtual
20814         regs. This reduces the number of emited spills/loads with
20815         20-30% on our core assemblies.
20816
20817 Mon May 24 18:21:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
20818
20819         * jit-icalls.c: truncl() is not needed and trunc() is
20820         the correct thing to do anyway (bug #58287).
20821
20822 2004-05-24  Zoltan Varga  <vargaz@freemail.hu>
20823
20824         * mini-sparc.c (mono_arch_flush_icache): Call sync_instruction_memory
20825         if available.
20826
20827 Mon May 24 12:49:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
20828
20829         * driver.c: enable loop optimizations by default.
20830
20831 Mon May 24 11:13:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
20832
20833         * mini-x86.c: fix calc of max loop size when aligning loops start.
20834
20835 2004-05-23  Zoltan Varga  <vargaz@freemail.hu>
20836
20837         * ssa.c (mono_ssa_cprop): Allocate carray dynamically instead of on
20838         the stack.
20839
20840 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
20841
20842         * mini-sparc.c (mono_arch_output_basic_block): ADD_IMM and SUB_IMM
20843         should set carry.
20844
20845         * basic-long.cs: Add tests for add/subtract of immediates with carry.
20846
20847         * mini.c exceptions-x86.c: Remove MONO_USE_EXC_TABLES stuff.
20848         
20849         * mini.c (inline_method): Allways inline some wrappers even if the cost
20850         is too large. Fixes #58785.
20851
20852         * mini.c: Add support for MARSHAL_CONV_FTN_DEL.
20853         
20854 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
20855
20856         * mini-sparc.c exceptions-sparc.c: Applied patch from Mark Crichton
20857         (crichton@gimp.org). Beginning of support for sparc/linux.
20858
20859         * mini-sparc.c: Optimize retrieval of LMF address.
20860
20861 Fri May 21 08:00:12 EDT 2004 Paolo Molaro <lupus@ximian.com>
20862
20863         * exceptions-ppc.c:  handle alloca in methods with clauses.
20864
20865 Fri May 21 07:35:30 EDT 2004 Paolo Molaro <lupus@ximian.com>
20866
20867         * mini-ppc.c: cleanups, off-by-one fixes, avoid recursive thunks.
20868
20869 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
20870
20871         * mini.c: Delegate most of the abort signal work to 
20872           mono_thread_request_interruption, which also handles Stop and Suspend
20873           states.
20874
20875 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
20876
20877         * mini.c mini.h: Allow inlining of icall wrappers if the backend 
20878         supports the save/restore lmf opcodes.
20879
20880 2004-05-19  Zoltan Varga  <vargaz@freemail.hu>
20881
20882         * mini-x86.c (mono_arch_setup_jit_tls_data): Handle code generated
20883         by gcc-3.4 as well.
20884
20885         * mini-x86.h mini-x86.c tramp-x86.c: Optimize lmf restoring code.
20886
20887 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
20888
20889         * mini.h mini.c (mini_method_compile): Only run abc removal pass on 
20890         methods which contain array accesses.
20891
20892         * mini.c (CEE_LDTOKEN): Handle this instruction correctly on bb
20893         boundaries. Fixes #58537.
20894
20895         * iltests.il: Add regression test for #58537.
20896
20897 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
20898
20899         * mini-x86.c (mono_arch_local_regalloc): Last part of
20900         fix for bug #58633 (releasing register to early).
20901
20902 2004-05-18  Miguel de Icaza  <miguel@ximian.com>
20903
20904         * basic-long.cs: Add new regression test.
20905
20906 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
20907
20908         * mini-x86.c (mono_arch_local_regalloc): Avoid releasing a
20909         register too early on the chain.
20910
20911 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
20912
20913         * mini.c (create_helper_signature): Use a helper function to reduce
20914         the code which needs to be written. Also set the calling convention of
20915         icalls on windows. Fixes #57840.
20916
20917 Tue May 18 11:05:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
20918
20919         * mini.h, exceptions-x86.c, exceptions-sparc.c, exceptions-s390.c,
20920         exceptions-ppc.c: added helper function to get the instruction address
20921         from a signal handler context.
20922
20923 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
20924
20925         * helpers.c: use g_get_tmp_dir. Invokes happyness 
20926         from gonzalo.
20927
20928 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
20929
20930         * helpers.c: Add new env variable to pass args to objdump.
20931         Specifically for those of us who love -Mintel. r=miguel, gonzalo.
20932
20933 2004-05-17  Radek Doulik  <rodo@ximian.com>
20934
20935         * Makefile.am (common_sources): added abcremoval.h so it get
20936         disted and daily mono packages on go-mono.com will build again
20937
20938 2004-05-17  Massimiliano Mantione  <massi@ximian.com>
20939
20940         * abcremoval.c: Fixed coding style, added copyright header.
20941
20942         * abcremoval.h: Fixed style and moved prototype to mini.h, added copyright header.
20943
20944         * mini.h: Added prototype for abc removal main function.
20945
20946         * build_relations_propagation_table.pl: Added copyright header.
20947
20948 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
20949
20950         * basic-long.cs: reg test for complex ceq_long bug.
20951
20952 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
20953
20954         * mini-x86.c (mono_arch_local_regalloc): Correctly free 
20955         reg in long and clob case (bug #58343). Fixed/added comments.
20956
20957 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
20958
20959         * mini.c (mono_jit_runtime_invoke): Follow new convention
20960         of calling the invoke method with an function pointer.
20961
20962 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
20963
20964         * ChangeLog: Fix author of memory leak patch.
20965
20966 Fri May 14 15:13:06 CEST 2004 Paolo Molaro <lupus@ximian.com>
20967
20968         * Makefile.am: fix make dist as well...
20969
20970
20971 2004-05-14  Massimiliano Mantione  <massi@ximian.com>
20972
20973         * cfold.c: Made so that conversions from pointer to int4 are no-ops
20974         on archs where pointers are 4 bytes long.
20975
20976         * Makefile.am: Added abcremoval.c source file.
20977
20978         * abcremoval.c: Added abcremoval.c.
20979
20980         * abcremoval.h: Added abcremoval.h.
20981
20982         * build_relations_propagation_table.pl: Added build_relations_propagation_table.pl.
20983
20984         * inssel.brg: Enabled bounds check removal.
20985
20986         * mini.c: Added support for abcrem optimization.
20987
20988         * mini.h: Added abcrem optimization label.
20989
20990         * driver.c: Added support for abcrem optimization.
20991
20992         * propagated_relations_table.def: Added propagated_relations_table.def.
20993
20994 Fri May 14 14:30:13 CEST 2004 Paolo Molaro <lupus@ximian.com>
20995
20996         * mini.c, cfold.c: fix style.
20997
20998 Fri May 14 14:28:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
20999
21000         * mini.c: handle issue with the low-level implementation of
21001         some long opcodes (bug #54209).
21002
21003 2004-05-13 Ben Maurer  <bmaurer@users.sourceforge.net>
21004
21005         * basic.cs: test for my new cmov stuff.
21006
21007 2004-05-13      Patrik Torstensson
21008
21009         * mini-x86.c: added OP_X86_COMPARE_MEMBASE_IMM peephole
21010         opt and added peephole documentation.
21011
21012 Thu May 13 11:41:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
21013
21014         * tramp-ppc.c: rewrote the generic trampoline code.
21015
21016 2004-05-11      Patrik Torstensson
21017
21018         * mini-x86.c: optimize long shl/shr asm code (one less branch)
21019
21020 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
21021
21022         * basic.cs basic-long.cs objects.cs: Make these compile under MS csc.
21023
21024         * mini.h mini.c dominators.c: Applied patch from Derek Woo
21025         (derek@eecg.toronto.edu): Fix memory leaks in loop optimizations.
21026
21027         * mini.c: Add new icalls for AsAny marshalling.
21028
21029 Tue May 11 16:00:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
21030
21031         * tramp-ppc.c, mini-ppc.c: more cleanups.
21032
21033 2004-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21034
21035         * mini.c: no warnings.
21036
21037 Tue May 11 13:59:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
21038
21039         * mini-ppc.c, mini.c: use mono_resolve_patch_target ().
21040
21041 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
21042
21043         * mini.c: In the thread abort signal handler, if the thread is in the
21044         process of being stoped, don't throw the Abort exception, just stop the
21045         thread.
21046
21047 Tue May 11 12:15:24 CEST 2004 Paolo Molaro <lupus@ximian.com>
21048
21049         * tramp-ppc.c: removed old code.
21050
21051 Tue May 11 12:02:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
21052
21053         * mini.h, mini-ppc.c, cfold.c: export mono_is_power_of_two().
21054         do some simple speed optimizations on ppc.
21055
21056 Mon May 10 17:21:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
21057
21058         * mini-ppc.c, cpu-g4.md: fixes to handle large stack frames
21059         and large offsets in load/store.
21060
21061 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
21062
21063         * mini-x86.c (mono_arch_local_regalloc): Remove the previous fix, since
21064         it causes regressions.
21065
21066 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
21067
21068         * mini-sparc.c: Fix vararg support + add beginnings of sigaltstack
21069         support.
21070
21071 Fri May 7 13:25:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
21072
21073         * jit-icalls.c: remove warnings.
21074         * inssel-x86.brg, inssel.brg, mini-x86.c, cfold.c: some simple
21075         speedups for unsafe code.
21076
21077 2004-05-07 Ben Maurer  <bmaurer@users.sourceforge.net>
21078
21079         * inssel.brg: Optimize Stind.[ui][12]. r=zoltan.
21080
21081 2004-05-06  Zoltan Varga  <vargaz@freemail.hu>
21082
21083         * basic-calls.cs: Add new regression test.
21084
21085         * mini.c (mono_runtime_install_handlers): Use SA_ONSTACK since it is
21086         more portable.
21087
21088         * mini.c (mono_method_to_ir): Handle opcode emulation for *_OVF opcodes.
21089
21090         * mini-x86.c (mono_arch_local_regalloc): Free new_dest register when it
21091         is no longer used.
21092
21093 2004-05-06      Patrik Torstensson
21094
21095         * mini-x86.[c|h], inssel-x86.brg, cpu-pentium.md, mini.c: enabled
21096         long reg allocation in any reg (not only eax:edx) and implemented 
21097         long shl/shr ops in asm instead of helpers.
21098
21099 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
21100
21101         * mini-sparc.h: Fix warnings.
21102
21103         * exceptions-sparc.c (mono_arch_find_jit_info): Pop unused lfm off the
21104         stack.
21105
21106         * mini-exceptions.c (mono_handle_exception): Call the filter in a
21107         separate statement for clarity.
21108
21109         * mini-sparc.c: Update status.
21110
21111 2004-05-04  Zoltan Varga  <vargaz@freemail.hu>
21112
21113         * mini-exceptions.c (ves_icall_get_frame_info): Flush register windows
21114         here.
21115
21116 Mon May 3 22:58:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
21117
21118         * inssel-ppc.brg: another small pre-release workaround:
21119         we don't do overflow detection for long_sub_un.
21120
21121 Sun May 2 20:12:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
21122
21123         * mini.c, mini-ops, inssel-long32.brg: speedup ulong >> 32
21124         (also works around a weird ppc bug: 57957).
21125
21126 Sat May 1 16:56:10 EDT 2004 Paolo Molaro <lupus@ximian.com>
21127
21128         * tramp-ppc.c: trampoline fixes.
21129
21130 Fri Apr 30 15:54:26 EDT 2004    Paolo Molaro <lupus@ximian.com>
21131
21132         * mini-ppc.c: fixed typos.
21133
21134 Thu Apr 29 20:15:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
21135
21136         * mini-ppc.c, exceptions-ppc.c: more code saves registers
21137         at the top of the stack. Fixed typos. Use a frame registers
21138         for all the methods with exception clauses.
21139
21140 Thu Apr 29 18:52:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
21141
21142         * exceptions-ppc.c: restore fp registers.
21143
21144 Thu Apr 29 18:26:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
21145
21146         * mini-ppc.c, exceptions-ppc.c: save the registers in reverse
21147         order from the stack top (moved the stack room to save the
21148         return value for trace after the param area). Fixed corruption
21149         in restoring registers on unwind.
21150
21151 Thu Apr 29 16:47:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
21152
21153         * mini-ppc.c, cpu-g4.md: fixed unisgned -> double conversion.
21154
21155 Thu Apr 29 13:50:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
21156
21157         * exceptions-ppc.c, mini-ppc.h, mini-ppc.c: fixed localloc
21158         and prolog/epilog for methods that use it. Allow
21159         enough param area room for varargs methods. Fix miguel's
21160         breakage in exception handling.
21161
21162 Thu Apr 29 12:06:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
21163
21164         * Makefile.am: run genmdesc only on current arch.
21165
21166 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21167
21168         * exceptions-x86.c:
21169         * mini-x86.h: fix the build on windows.
21170
21171 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
21172
21173         * 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.
21174
21175         * exceptions-sparc.c exceptions-ppc.c exceptions-s390.c mini-ppc.h mini-s390.h mini-sparc.h: Fix up ports after changes.
21176
21177         * mini-exceptions.c: New file.
21178         
21179         * mini.c mini-exceptions.c mini-x86.h exceptions-x86.c Makefile.am:
21180         Move some parts of the x86 exception handling code to an 
21181         arch-independent file so it can be shared with other ports.
21182
21183 Tue Apr 27 12:15:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
21184
21185         * trace.c, cpu-g4.md, inssel-ppc.brg, mini-ppc.c: some fixes for FP code.
21186
21187 2004-04-26  David Waite  <mass@akuma.org>
21188
21189         * driver.c: remove comma from end of enumeration declaration
21190
21191 2004-04-26  Jackson Harper  <jackson@ximian.com>
21192
21193         * driver.c: parse config file before loading first assembly. This
21194         allows the user gac to be enabled/disabled. 
21195         
21196 2004-04-23  Miguel de Icaza  <miguel@ximian.com>
21197
21198         * mini-ppc.c (ppc_patch): Replaced the branch code patching with a
21199         simpler mechanism: we do not care what is encoded initially
21200         (branch absolute or relative), we care about the code and its
21201         target.  I kept the old code for reference for now.
21202
21203         The new code tries first to determine if the jump is anywhere in
21204         the -/+32 absolute meg range, if it succeeds, it encodes using the
21205         absolute branch;  If not, it tried to find something in the
21206         relative range, if not, it uses the handle_thunk code. 
21207
21208 Fri Apr 23 14:20:40 EDT 2004 Paolo Molaro <lupus@ximian.com>
21209
21210         * exceptions-ppc.c: use the correct ip register on macosx.
21211
21212 Thu Apr 22 13:23:16 EDT 2004 Paolo Molaro <lupus@ximian.com>
21213
21214         * exceptions.c, mini.c, mini-ppc.h: adapt code to macosx.
21215
21216 Thu Apr 22 18:08:37 CEST 2004 Paolo Molaro <lupus@ximian.com>
21217
21218         * mini-ppc.c, cpu-g4.md: made the branch macros more flexible.
21219         Raise exception on integer divide by zero by hand since the hw
21220         doesn't support it. Handle NaNs in FP compares.
21221
21222 Thu Apr 22 16:10:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
21223
21224         * exceptions-ppc.c, mini-ppc.h, mini.c: simplified some
21225         code reducing duplication between the platforms and enabled
21226         signal exception handling (on linux for now).
21227
21228 Wed Apr 21 12:27:48 EDT 2004 Paolo Molaro <lupus@ximian.com>
21229
21230         * exceptions-ppc.c: more macosx support.
21231
21232 Wed Apr 21 16:38:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
21233
21234         * mini-ppc.h, mini-ppc.c, cpu-g4.md: enable bigmul optimization.
21235
21236 Wed Apr 21 16:20:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
21237
21238         * mini.h, mini-ppc.c, cpu-g4.md: support for implicit exceptions.
21239
21240 2004-04-19 Ben Maurer  <bmaurer@users.sourceforge.net>
21241
21242         * iltests.il: more tests.
21243
21244 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
21245
21246         * mini-*.c (mono_arch_get_allocatable_int_vars): Skip written-only
21247         vars as well.
21248
21249 Mon Apr 19 19:39:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
21250
21251         * mini-ppc.c: some fixes to bootstrap mcs/corlib/etc.
21252
21253 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
21254
21255         * liveness.c: Mark variables as volatile in all basic blocks reachable
21256         from exception clauses.
21257
21258 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
21259
21260         * exceptions.cs (test_0_rethow_stacktrace): Make this work with
21261         inlining.
21262
21263 2004-04-18 Ben Maurer  <bmaurer@users.sourceforge.net>
21264
21265         * iltests.il, basic.cs: more tests for regalloc.
21266
21267 2004-04-17 Ben Maurer  <bmaurer@users.sourceforge.net>
21268
21269         * iltests.il: Some tests for register allocation modifications
21270         I have locally.
21271
21272 2004-04-16  Zoltan Varga  <vargaz@freemail.hu>
21273
21274         * exceptions.cs: Add regression test for bug #56782.
21275
21276         * exceptions-*.c (mono_arch_handle_exception): Do not overwrite the
21277         original stack trace if an exception is rethrown. Fixes #56782. Oh,
21278         the beauty of fixing the same thing in 5 different files...
21279
21280 2004-04-15  Zoltan Varga  <vargaz@freemail.hu>
21281
21282         * mini.c (mono_method_to_ir): Do not compute coverage for inlined
21283         methods.
21284
21285 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
21286
21287         * mini.c: Add support for STRWLPARRAY marshalling convention.
21288
21289 Wed Apr 14 18:15:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
21290
21291         * exceptions-ppc.c: missing fixes in mono_jit_walk_stack (need
21292         to init the context to setup the regs pointer).
21293
21294 Wed Apr 14 17:59:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
21295
21296         * exceptions-ppc.c: more exceptions work.
21297
21298 Wed Apr 14 17:46:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
21299
21300         * mini.c: avoid reusing the same MonoInst on multiple trees: this is
21301         not allowed.
21302
21303 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
21304
21305         * inssel-x86.brg (reg): Add new rules for add, sub and mul that
21306         can use the memory directly.
21307
21308         * cpu-pentium.md: Update documentation from a post from Zoltan. 
21309
21310         add x86_add_membase, x86_sub_membase, x86_mul_membase
21311
21312 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
21313
21314         * mini-ppc.c: Remove unused definitions FLOAT_REGS and
21315         GENERAL_REGS they were also hardcoded for all PPC ports.
21316
21317         (add_general): Use PPC_NUM_REG_ARGS instead of GENERAL_REGS.
21318
21319         Remove hard-coded limit for floating point registers, use
21320         PPC_LAST_FPARG_REG instead in MONO_TYPE_R4 and MONO_TYPE_R8.
21321
21322         Notice that in MacOS X calling conventions you can fit a lot more
21323         floating point values in registers, so I should update the PInvoke
21324         test to excercise the passing of floating point values on the
21325         stack (currently broken).
21326         
21327 2004-04-06  Miguel de Icaza  <miguel@ximian.com>
21328
21329         * tramp-ppc.c (create_trampoline_code): Added
21330         JUMP_TRAMPOLINE_SIZE. 
21331         (ppc_magic_trampoline): Follow the pattern from
21332         x86_magic_trampoline: if code is set to zero, return. 
21333         (create_trampoline_code): Always pass MonoMethod to the jump
21334         trampoline, before it was passing a null.
21335         (mono_arch_create_jump_trampoline): Implement the jump stub, could
21336         share the code with mono_arch_create_jit_trampoline. 
21337
21338         * mini-ppc.c (mono_arch_output_basic_block): CEE_JMP opcode
21339         implemented.
21340         (mono_arch_patch_code): MONO_PATCH_INFO_METHOD_JUMP patch type
21341         implemented.  
21342
21343         * cpu-g4.md: Added length for jmp instruction, the worst case
21344         scenario is 92 bytes (4 mandatory bytes, potential 19 registers
21345         for save_lmf).
21346
21347 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
21348
21349         * aot.c (mono_compile_assembly): Add back unlink removed by mistake.
21350
21351 2004-04-07  Zoltan Varga  <vargaz@freemail.hu>
21352
21353         * mini.c: Only set bblock->real_offset when adding a new bblock, and
21354         before each IL instruction.
21355
21356         * mini.c (CEE_BOX): Fix warnings.
21357
21358 2004-04-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21359
21360         * mini.c: removed a few unused vars and extra whitespace.
21361
21362 2004-04-05 Ben Maurer  <bmaurer@users.sourceforge.net>
21363
21364         * inssel.brg (MONO_EMIT_BOUNDS_CHECK): a new macro to emit bounds
21365         checks.
21366         (MONO_EMIT_BOUNDS_CHECK_IMM): the above, but when you know the
21367         index.
21368         (OP_GETCHR): use the above
21369         (CEE_LDELEMA): use the above.
21370
21371         * inseel-x86.brg (MONO_EMIT_BOUNDS_CHECK): a faster and smaller
21372         version of the generic impl.
21373         (MONO_EMIT_BOUNDS_CHECK_IMM): the same
21374         (CEE_LDELEMA): use the above.
21375
21376 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
21377
21378         * inssel-long32.brg (CEE_CONV_OVF_I8): Sign extend the i4 value to i8.
21379         Fixes #56317.
21380
21381         * iltests.il: Added new regression test for #56317.
21382
21383 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
21384
21385         * mini-x86.c (mono_arch_setup_jit_tls_data): Use pthread_attr_get_np
21386         under NetBSD. Fixes #56450.
21387
21388         * liveness.c (update_gen_kill_set): Fix previous patch.
21389
21390 2004-04-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21391
21392         * mini-x86.h: SA_STACK defined as SA_ONSTACK. Fixed build under NetBSD.
21393
21394 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
21395
21396         * mini.c (mono_method_to_ir): Avoid handle_loaded_temps in
21397         ldsfld and ldsflda.
21398
21399         * inssel-sparc.brg: Add more optimizations.
21400
21401         * mini-sparc.c: Replace multiply/divide with shifts if possible.
21402
21403 2004-04-01  Martin Baulig  <martin@ximian.com>
21404
21405         * mini.c (handle_box): New static function; moved the
21406         implementation of CEE_BOX here.
21407         (mono_method_to_ir): Added `constrained_call' variable.
21408         (mono_method_to_ir:CEE_CONSTRAINED_): Set it.
21409         (mono_method_to_ir:CEE_CALL): If `constrained_call' is set, use
21410         mono_method_get_constrained() to get the method.
21411
21412 2004-04-01  Martin Baulig  <martin@ximian.com>
21413
21414         * mini.c (TYPE_PARAM_TO_TYPE, TYPE_PARAM_TO_CLASS): Removed.
21415         (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): Removed.
21416         (mono_method_to_ir): We don't need these macros anymore since
21417         mono_class_get_full() already takes care of it. 
21418
21419 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21420
21421         * aot.c: set aot_verbose to 0, fixed format string that caused sigsegv,
21422         use @function (as doesn't accept #function here) and check the return
21423         value of system and stop if fails.
21424
21425 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21426
21427         * mini.c: set the timeout to 2s when calling mono_domain_finalize.
21428
21429 2004-03-31  Zoltan Varga  <vargaz@freemail.hu>
21430
21431         * mini-ppc.c (mono_arch_patch_code): Fix ppc build.
21432
21433         * inssel-sparc.brg mini-sparc.c aot.c: Implement AOT support.
21434
21435         * inssel-long32.brg (OP_LNEG): Use ADC instead of ADD here. Fixes
21436         #56223.
21437
21438         * basic-long.cs: Add test for negation of Int64.MinValue.
21439
21440 2004-03-30  Zoltan Varga  <vargaz@freemail.hu>
21441
21442         * mini-sparc.c: Update status.
21443
21444         * mini-sparc.c tramp-sparc.c: Save lmf in trampolines.
21445
21446         * exceptions-sparc.c: Fix return value in filters.
21447
21448         * inssel-sparc.brg: Fix register allocation in some rules.
21449
21450 2004-03-28  Martin Baulig  <martin@ximian.com>
21451
21452         * mini.c (mmono_method_to_ir): In CEE_STELEM, do a handle_stobj()
21453         if neccessary.  
21454
21455 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
21456
21457         * mini-x86.c (mono_arch_patch_code): Fix warnings.
21458         
21459         * mini-x86.c (mono_arch_output_basic_block): Fix CEE_MUL_OVF_UN if 
21460         dreg is not EAX. Thanks to Willibard Krenn for spotting this. Also
21461         remove unused conv_u4 opcode.
21462
21463         * mini-x86.c: Remove valgrind workaround since it slows down things
21464         even when mono is not run under valgrind.
21465
21466 2004-03-26  Zoltan Varga  <vargaz@freemail.hu>
21467
21468         * mini-sparc.c: Update status.
21469
21470         * inssel-sparc.brg: Add some optimizations.
21471
21472         * inssel-sparc.brg mini-sparc.c: Rework branch instructions to allow
21473         future delay slot filling. Add support for varargs, tail calls and JMP.
21474
21475         * inssel.brg mini-ops.h mini.c: Use OP_REFANYTYPE instead of 
21476         CEE_REFANYTYPE, since CEE_REFANYTYPE needs a prefix to be unique.
21477
21478         * inssel.brg: Fix register allocation in OP_ARGLIST.
21479
21480         * inssel.brg: Fix warnings.
21481
21482 2004-03-25  Martin Baulig  <martin@ximian.com>
21483
21484         * mini.c (inflate_generic_field): Removed.
21485         (mini_get_method): Removed, use mono_get_method_full(),
21486         (mini_get_class): Removed, use mono_class_get_full().
21487         (mono_method_to_ir): Pass our generic context to
21488         mono_field_from_token().        
21489
21490 2004-03-25  Martin Baulig  <martin@ximian.com>
21491
21492         * mini.c (mini_get_class): Take a `MonoGenericContext *' instead
21493         of a `MonoMethod *'.
21494         (mini_get_method): Take a `MonoGenericContext *' instead
21495         of a `MonoMethod *'.
21496         (TYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_TYPE): mono_method_to_ir() has
21497         a new local variable called `generic_context' which holds the
21498         current `MonoGenericContext *'; use it to lookup things.
21499
21500 2004-03-24  Martin Baulig  <martin@ximian.com>
21501
21502         * mini.c (mini_get_class): New static method; if we're inside a
21503         generic instance, inflate the class if neccessary.
21504         (mono_method_to_ir): Use mini_get_class() instead of mono_class_get().
21505
21506 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
21507
21508         * iltests.il: New regression test for #55976.
21509
21510         * mini.c (mono_method_to_ir): Empty the stack in endfinally. Fixes
21511         #55976.
21512
21513 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
21514
21515         * exceptions-sparc.c (mono_sparc_handle_exception): Remove debugging
21516         output.
21517
21518 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
21519
21520         * liveness.c: Consider SSA stores as well as loads when making vars
21521         volatile.
21522
21523         * exceptions.cs: New regression tests for register allocation.
21524         
21525 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
21526
21527         * mini-ppc.c, tramp-ppc.c: Added lock for accessing the domain code manager.
21528         * mini.c: Removed domain lock from mono_jit_compile_method_with_opt. Use
21529           domain lock only to protect puntual access to data structures.
21530           Added access lock for sighash, jit_icall_hash_name, 
21531           jit_icall_hash_addr and domain->code_mp.
21532
21533 2004-03-20  Zoltan Varga  <vargaz@freemail.hu>
21534
21535         * driver.c: Print SIGSEGV handling method.
21536
21537         * mini-x86.c (mono_arch_free_jit_tls_data): Add missing ifdef.
21538
21539         * mini.c (setup_jit_tls_data): Handle case when this is called
21540         multiple times for a thread.
21541
21542         * mini-x86.c cpu-pentium.md: Fix floating point branch opcodes so fbxx 
21543         is different from fbxx_un. Fixes #54303. Also use constants instead of
21544         magic numbers in a lot of places.
21545
21546 2004-03-19  Zoltan Varga  <vargaz@freemail.hu>
21547
21548         * exceptions.cs: Fix cctor test when --regression is used.
21549
21550 Thu Mar 18 19:57:56 CET 2004 Paolo Molaro <lupus@ximian.com>
21551
21552         * mini-ppc.c, exceptions-ppc.c: basic exceptions support 
21553         for Linux/ppc.
21554
21555 Thu Mar 18 19:56:19 CET 2004 Paolo Molaro <lupus@ximian.com>
21556
21557         * inssel-ppc.brg: fixed register assignments for some rules.
21558
21559 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
21560
21561         * exceptions.cs: Add test for exceptions in static constructors.
21562
21563         * mini.c (mono_jit_compile_method_with_out): Move the calling of
21564         static constructors outside the domain lock. Fixes #55720.
21565
21566 2004-03-17  Martin Baulig  <martin@ximian.com>
21567
21568         * mini.c (get_generic_field_inst): Removed, this'll never happen.
21569         (inflate_generic_field): Take the `MonoMethod *' instead of the
21570         `MonoClass *' and added support for generic method.
21571         (mono_method_to_ir): In CEE_LDSFLD and CEE_STSFLD, assert we never
21572         have a `field->parent->gen_params', only inflate the field if it's
21573         an open constructed type.
21574
21575 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
21576
21577         * exceptions-x86.c (mono_arch_handle_exception): Allocate a new
21578         exception object instead of the preconstructed ones.
21579
21580 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21581
21582         * mini.c: reverted changed to sigsegv_signal_handler commited
21583         accidentally in the previous patch.
21584
21585 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21586
21587         * mini.c:
21588         (mono_method_to_ir): CEE_CALLVIRT, abort if no method. It hanged when
21589         running --aot with an old assembly.
21590
21591 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
21592
21593         * mini-sparc.c (mono_arch_instrument_epilog): Fix handling of floating
21594         point values.
21595
21596         * mini-sparc.c: Add support for v9 branches with prediction.
21597
21598 2004-03-15  Bernie Solomon  <bernard@ugsolutions.com>
21599
21600         * mini.c (mini_init): #warning is GNUC only
21601
21602         * mini-sparc.h: implement __builtin_frame_address
21603         and __builtin_return_address for Sun C compiler
21604
21605 2004-03-15  Zoltan Varga  <vargaz@freemail.hu>
21606
21607         * exceptions-sparc.c (mono_arch_has_unwind_info): Add missing function.
21608
21609 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
21610
21611         * basic-calls.cs: Add test for unaligned byref long argument passing.
21612
21613         * mini-ops.h: Add sparcv9 compare and branch instructions.
21614
21615         * inssel-sparc.brg mini-sparc.h mini-sparc.c cpu-sparc.md: Use some
21616         v9 instructions if we have a v9 cpu.
21617
21618         * mini-sparc.c (mono_arch_get_global_int_regs): Use unused input
21619         registers for global allocation.
21620
21621         * exceptions-sparc.c: Fixes.
21622         
21623 2004-03-11  Zoltan Varga  <vargaz@freemail.hu>
21624
21625         * liveness.c (mono_analyze_liveness): Optimized version.
21626
21627         * inssel-sparc.brg cpu-sparc.md: Ongoing sparc work.
21628
21629         * mini-sparc.h mini-sparc.c tramp-sparc.c exceptions-sparc.c: Ongoing
21630         sparc work.
21631
21632         * basic-float.cs basic-calls.cs: New regression tests.
21633
21634 2004-03-10  Zoltan Varga  <vargaz@freemail.hu>
21635
21636         * mini-x86.h: Define SIGSEGV_ON_ALTSTACK only if we have a working
21637         sigaltstack implementation.
21638
21639         * mini-x86.c (mono_arch_setup_jit_tls_data): Fix previous patch.
21640         
21641         * mini-x86.c (mono_arch_setup_jit_tls_data): Turn off the sigaltstack
21642         stuff if SIGSEGV_ON_ALTSTACK is not defined.
21643
21644 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
21645
21646         * mini.c: Fix warnings.
21647         
21648         * mini.c (mono_resolve_patch_target): New function which contains the
21649         arch independent part of the patching process.
21650
21651         * mini-x86.c (mono_arch_patch_code): Move arch independent parts of the
21652         patching code to a separate function.
21653
21654 2004-03-09  Bernie Solomon  <bernard@ugsolutions.com>
21655
21656         * mini.c (add_signal_handler): ifdef out on Windows
21657
21658 2004-03-08  Zoltan Varga  <vargaz@freemail.hu>
21659
21660         * mini-sparc.h mini-sparc.c inssel-sparc.brg exceptions-sparc.c 
21661         cpu-sparc.md: Add exception handling support + other fixes.
21662
21663         * driver.c: Print --help output to stdout. Fixes #55261. Also fix
21664         typed GC detection in --version.
21665
21666         * basic.cs exceptions.cs: New regression tests.
21667
21668         * mini.h mini-x86.h mini-ppc.h: Add MonoCompileArch structure where
21669         the arch specific code can store data during a compilation.
21670
21671         * mini-ops.h: Add OP_SETFRET.
21672
21673         * mini.c (mini_get_ldelema_ins): Instead of allways calling the same
21674         function, register a separate icall for each arity, so the icalls can
21675         get a wrapper.
21676         
21677         * mini.c (mono_print_tree): Print negative offsets in a more readable
21678         form.
21679         
21680         * mini.c: Make signal handling work on sparc.
21681         
21682         * mini.c (mini_init): Add emulation for lconv_to_r8_un.
21683
21684         * inssel-long32.brg: Fix OP_LSUB_OVF_UN rule.
21685
21686         * jit-icalls.c: Emulate truncl by aintl on solaris.
21687
21688         * jit-icalls.c (mono_lconv_to_r8_un): New icall emulation function.
21689
21690 2004-03-05  Zoltan Varga  <vargaz@freemail.hu>
21691
21692         * mini.c (mini_init): fconv_to_ovf can raise exceptions.
21693
21694 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
21695
21696         * mini.c: In CEE_ISINST and CEE_CASTCLASS, if the type is an interface or
21697         a MarshalByRef type, inline a method that performs the check, taking into
21698         account that the object can be a proxy. Also implemented tow new opcodes:
21699         CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
21700         * inssel.brg: Implemented two new opcodes, mini-ops.h: OP_CISINST and 
21701         OP_CCASTCLASS, which implement CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
21702
21703 Tue Mar 2 17:23:48 CET 2004 Paolo Molaro <lupus@ximian.com>
21704
21705         * mini-ppc.c: if a relative branch displacement is too big
21706         but it points to and area reachable with an absolute branch, 
21707         avoid the thunks.
21708
21709 Tue Mar 2 16:59:40 CET 2004 Paolo Molaro <lupus@ximian.com>
21710
21711         * mini.c: optimize small copies in cpblk.
21712
21713 2004-03-01  Zoltan Varga  <vargaz@freemail.hu>
21714
21715         * basic-calls.cs basic-float.cs: New regression tests.
21716
21717         * mini-sparc.c inssel-sparc.brg mini-ops.h: Access local variables at 
21718         negative offsets from %fp. Implement localloc. Fix local register 
21719         allocation. Fix the case when the this argument needs to be saved to
21720         the stack. Implement some missing opcodes.
21721
21722 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
21723
21724         * mini.c (mini_method_compile): Reenable global regalloc in methods
21725         with exception handlers.
21726
21727         * linear-scan.c (mono_varlist_sort): Fix warning.
21728
21729         * linear-scan.c (mono_linear_scan): Fix computation of used_regs.
21730
21731         * mini-x86.c (mono_arch_regalloc_cost): Reenable precise computation of
21732         regalloc costs.
21733
21734         * liveness.c: Make all variables uses in exception clauses volatile, to
21735         prevent them from being allocated to registers. Fixes #42136.
21736
21737 2004-02-25  Zoltan Varga  <vargaz@freemail.hu>
21738
21739         * mini-x86.c (mono_arch_regalloc_cost): Revert this change since it
21740         causes regressions.
21741
21742         * mini.h linear-scan.c mini-x86.c mini-sparc.c mini-ppc.c: Add 'cfg'
21743         argument to mono_arch_regalloc_cost.
21744
21745         * mini-x86.c (mono_arch_regalloc_cost): Compute regalloc costs 
21746         precisely.
21747
21748 2004-02-24  Zoltan Varga  <vargaz@freemail.hu>
21749
21750         * mini.h mini-x86.c mini-ppc.c mini-sparc.c linear-scan.c: 
21751         Make the cost of allocating a variable to a register arch dependent.
21752
21753         * basic-calls.cs: Fix compilation of tests.
21754         
21755         * mini.h mini.c tramp-x86.c mini-x86.c: Add mono_running_on_valgrind ()
21756         helper function to cut back on the number of #ifdefs needed.
21757
21758         * mini-ppc.c: Fix compilation.
21759
21760         * basic-calls.cs: New regression tests.
21761
21762         * mini-sparc.c (mono_sparc_is_virtual_call): New helper function.
21763
21764         * tramp-sparc.c (create_specific_trampoline): Use g5 register instead
21765         of l0 since that is callee saved.
21766
21767         * tramp-sparc.c (sparc_magic_trampoline): Apply unbox trampoline only
21768         to virtual calls.
21769
21770         * mini-sparc.c: Ongoing work + flag virtual calls with a special kind 
21771         of delay instruction.
21772
21773         * inssel.brg (OP_CHECK_THIS): Set tree->sreg1 and dreg correctly.
21774
21775         * mini.h (MonoCallInst): Add 'virtual' flag.
21776
21777         * inssel.brg (mini_emit_virtual_call): Set 'virtual' flag.
21778
21779 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
21780
21781         * *.cs: New regression tests.
21782
21783         * mini-sparc.c inssel-sparc.brg: Update after latest changes. Ongoing sparc 
21784         work.
21785
21786         * mini.c (mono_runtime_install_handlers): Fix build.
21787
21788         * mini.h (MonoJitTlsData): Add 'stack_size', 'signal_stack' and
21789         'signal_stack_size' members.
21790
21791         * mini.h mini.c mini-x86.h mini-x86.c: Run sigsegv handlers on an 
21792         alternate signal stack.
21793
21794         * exceptions-x86.c: Add stack overflow handling.
21795
21796         * mini.h mini.c mini-x86.c mini-ppc.c trace.h trace.c: Move tracing 
21797         functions to arch independent code.
21798
21799         * mini.c (mono_print_tree): Print more detailed info for load_membase
21800         opcodes.
21801         
21802 2004-02-23  Martin Baulig  <martin@ximian.com>
21803
21804         * mini.c (mini_get_method): Set `gmethod->generic_inst'.
21805
21806 Sun Feb 22 22:25:19 CET 2004 Paolo Molaro <lupus@ximian.com>
21807
21808         * mini-x86.c: fixed reg allocation for div/rem.
21809
21810 2004-02-22  Miguel de Icaza  <miguel@ximian.com>
21811
21812         * driver.c (mono_main): Report some configuratio options on --version.
21813
21814 Fri Feb 20 11:01:44 PST 2004 Paolo Molaro <lupus@ximian.com>
21815
21816         * mini-ppc.c: fixed clt.un, cgt.un. Optimized calls to functions
21817         low in the address space. Correctly flush memory in thunks where we
21818         output native code.
21819
21820 2004-02-20  Martin Baulig  <martin@ximian.com>
21821
21822         * mini.c (mini_get_method): New static method; inflate all generic
21823         methods and methods in open generic instances.
21824         (mono_method_to_ir): Use mini_get_method() instead of mono_get_method().
21825         (ret_type_to_call_opcode): Added support for MONO_TYPE_GENERICINST.
21826
21827 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
21828
21829         * mini-sparc.c (mono_arch_patch_code): Update after domain->code_mp changes.
21830
21831         * tramp-sparc.c (mono_arch_create_jump_trampoline): Set ji->method.
21832
21833 2004-02-19  Bernie Solomon  <bernard@ugsolutions.com>
21834
21835         * helpers.c (mono_disassemble_code): use Sun's dis if not using gcc
21836
21837         * mini-sparc.c (flushi mono_arch_output_basic_block): make
21838         it compile using Sun's compiler.
21839
21840 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
21841
21842         * 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.
21843
21844         * basic-calls.cs basic-float.cs basic-long.cs objects.cs: New regression tests.
21845
21846 Tue Feb 17 21:41:20 CET 2004 Paolo Molaro <lupus@ximian.com>
21847
21848         * aot.c, mini-x86.c, mini.c: use the code manager instead of a mempool to hold native
21849         code.
21850         * mini-ppc.c: handle calls outside of the allowed range with thunks
21851         allocated using the code manager.
21852         * tramp-ppc.c: use the code manager to hold generated native code.
21853         Fixed the magic trampoline to just patch vtable entries.
21854
21855 2004-02-17  Zoltan Varga  <vargaz@freemail.hu>
21856
21857         * inssel.brg inssel-x86.brg: Move call(immediate) rules to the platform
21858         independent file.
21859
21860 2004-02-16  Zoltan Varga  <vargaz@freemail.hu>
21861
21862         * tramp-ppc.c (mono_arch_create_jump_trampoline): Fix compilation on
21863         PPC.
21864
21865         * mini-x86.c: Call mono_arch_get_lmf_addr instead of mono_get_lmf_addr
21866         if we have a working __thread implementation.
21867
21868         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Remove 
21869         OP_CALL_IMM opcodes, since the CALL opcodes handles immediates as well.
21870
21871 2004-02-15  Zoltan Varga  <vargaz@freemail.hu>
21872
21873         * mini-x86.c: Fix compilation under gcc 2.
21874         
21875 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
21876
21877         * mini.c (mono_codegen): Avoid infinite loop when an icall wrapper
21878         contains a call to the wrapped function.
21879
21880         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Add 
21881         OP_<CALL>_IMM opcodes, and use them under X86.
21882         
21883         * mini.c (mono_jit_find_compiled_method): Fix warning.
21884
21885         * cpu-pentium.md: Fix length of opcodes which use x86_alu_membase_imm.
21886
21887         * jit-icalls.c (mono_ldftn_nosync): New JIT icall.
21888
21889         * tramp-x86.c (mono_arch_create_jump_trampoline): Move arch independent
21890         functionality to mini.c.
21891
21892         * mini.c (mono_create_jump_trampoline): New function to create a jump
21893         trampoline. Return a compiled method instead of a trampoline if it
21894         exists. Add a cache for jump trampolines.
21895
21896         * mini.c (mono_jit_find_compiled_method): New function to return a
21897         compiled method if it exists.
21898
21899         * mini-x86.c: Call mono_create_jump_trampoline instead of 
21900         mono_arch_create_jit_trampoline.
21901
21902         * jit-icalls.c (mono_ldftn): Do not compile the method. Instead, return
21903         a jump trampoline. Fixes #52092.
21904         
21905 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
21906
21907         * debug-mini.c (mono_init_debugger): Remove call to mono_verify_corlib,
21908         which is not up-to-date. Add check_corlib_version () instead.
21909
21910         * mini.c (mini_init): Call mono_thread_attach () so embedders do not 
21911         have to call it.
21912         
21913         * mini.c (mono_runtime_install_handlers): Remove check for valgrind
21914         since newer valgrind versions do not need it.
21915
21916         * mini.c (mono_jit_compile_method_with_opt): New helper function to
21917         compile a method with a given set of optimizations.
21918
21919         * mini.c: Compile icall wrappers on-demand instead of at startup.
21920
21921         * mini-sparc.c mini-ppc.c: Call mono_icall_get_wrapper to obtain the
21922         wrapper for an icall.
21923
21924 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
21925
21926         * mini.c (mono_method_to_ir): Handle switch with non-empty stack. Fixes
21927         #54063.
21928
21929         * iltests.il: Add test for non-empty stack before switch instruction.
21930
21931 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
21932
21933         * mini.c: Add support for new stringbuilder marshalling conventions.
21934
21935         * mini.c (mono_method_to_ir): Fix stack management of generic CEE_BOX.
21936
21937 2004-02-01  Martin Baulig  <martin@ximian.com>
21938
21939         * mini.c (MTYPE_PARAM_TO_TYPE): Method type arguments are stored
21940         in `ginst->mtype_argv'.
21941
21942 2004-01-31  Miguel de Icaza  <miguel@ximian.com>
21943
21944         * mini.c: Add comments, replace CEE_XXX+128 with OP_XXX to
21945         facilitate grepping.
21946
21947 Wed Jan 28 14:04:58 CET 2004 Paolo Molaro <lupus@ximian.com>
21948
21949         * mini.c: fixed buglet in initobj generic implementation for references.
21950
21951 Fri Jan 23 16:10:44 EST 2004 Paolo Molaro <lupus@ximian.com>
21952
21953         * Makefile.am: make the version script conditional.
21954         * jit-icalls.c: handle missing truncl().
21955
21956 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
21957
21958         * exceptions.cs: Add more tests for double->int conversion.
21959
21960         * jit-icalls.c (mono_fconv_ovf_i8): Call truncl before comparison, so
21961         we don't throw exceptions when converting 1.1 to a long. Fixes #53250.
21962
21963 Fri Jan 23 17:12:08 CET 2004 Paolo Molaro <lupus@ximian.com>
21964
21965         * driver.c: make --verbose --version emit an error
21966         if the loaded corlib doesn't match the runtime version.
21967
21968 Mon Jan 19 17:44:50 CET 2004 Paolo Molaro <lupus@ximian.com>
21969
21970         * mini-ppc.h: export ppc_patch().
21971         * mini-ppc.c: call convention fixes. Added assert in ppc_patch().
21972         * tramp-ppc.c: call convention fixes: Linux/PPC support should be
21973         on par or better than on MacOSX.
21974
21975 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
21976
21977         * mini.c tramp-x86.c tramp-sparc.c: Updated after changes to
21978         mono_lookup_pinvoke_call.
21979
21980         * mini-x86.c: Under windows, the default pinvoke calling convention is
21981         stdcall. Fixes #52834.
21982
21983         * mini.c (optimize_branches): Add an upper bound to the number of
21984         iterations to prevent infinite loops on strange loops. Fixes #53003.
21985
21986 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
21987
21988         * inssel.brg: Add vectors<->one dimensional array checking to CASTCLASS
21989         and ISINST. Fixes #52093.
21990
21991         * objects.cs (test_0_vector_array_cast): New tests.
21992         
21993 2004-01-15  Zoltan Varga  <vargaz@freemail.hu>
21994
21995         * jit-icalls.c (helper_stelem_ref_check): New jit icall for array type
21996         checking in Array.Set ().
21997
21998         * mini.c (method_to_ir): Add array type checking in Array.Set (). Fixes
21999         #52590.
22000
22001         * object.cs (test_0_multi_array_cast): New regression test.
22002
22003 Thu Jan 15 16:30:24 CET 2004 Paolo Molaro <lupus@ximian.com>
22004
22005         * exceptions-ppc.c: fix build on Linux/PPC.
22006
22007 2004-01-14  Zoltan Varga  <vargaz@freemail.hu>
22008
22009         * tramp-x86.c (x86_magic_trampoline): Disable code patching when
22010         running under valgrind.
22011         (x86_magic_trampoline): Fix build bustage.
22012
22013         * debug-mini.c: Modify the debug info serialize/deserialize code so it handles
22014         negative values as well. This is needed for the encoding of the line number
22015         info, since sometimes the line numbers are not in increasing order.
22016
22017 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
22018
22019         * cpu-pentium.md (localloc): Increase the size of the localloc 
22020         instruction since it is a loop under Win32.
22021
22022         * debug-mini.c (record_line_number): Get rid of unneccesary memory
22023         allocation.
22024
22025 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
22026
22027         * exceptions-ppc.c exceptions-x86.c exceptions-sparc.c 
22028         tramp-x86.c tramp-ppc.c tramp-sparc.c: Applied patch from 
22029         Max Horn (max@quendi.de). Fix file names in comments.
22030
22031 2004-01-03  Zoltan Varga  <vargaz@freemail.hu>
22032
22033         * ssa.c (mono_ssa_rename_vars): Allocate new_stack on the heap to
22034         avoid stack overflow.
22035         (replace_usage): Avoid uninitialized variable warnings.
22036
22037         * mini.c (mono_method_to_ir): Avoid disabling SSA for array operations
22038         and taking the address of valuetype variables.
22039
22040 2004-01-03  Patrik Torstensson
22041
22042         * mini-x86.c: renamed fpflags to flags in RegTrack, going to be used
22043         for other purposes than FP later on.
22044
22045 2004-01-02  Zoltan Varga  <vargaz@freemail.hu>
22046
22047         * mini.c (mono_method_to_ir): Prevent register allocation for arguments
22048         of tail calls.
22049
22050 Fri Jan 2 13:37:25 CET 2004 Paolo Molaro <lupus@ximian.com>
22051
22052         * mini-ops.h, mini.c, inssel.brg: Object.GetType () speedup.
22053
22054 2003-12-30  Patrik Torstensson <p@rxc.se>
22055
22056         * mini-x86.h: Decreased number of availiable fp regs.
22057         Solves corner cases with FP spilling.
22058
22059 2003-12-23  Patrik Torstensson <p@rxc.se>
22060
22061         * mini-x86.c, mini-ops.h, cpu-pentium.md: Added support
22062         for floating point stack tracking / spilling on x86. 
22063         Fixes bug #49012.
22064         
22065         * basic-float.cs: added float mul overflow test.
22066
22067 2003-12-23  Zoltan Varga  <vargaz@freemail.hu>
22068
22069         * mini.c (mono_method_to_ir): Add workaround for bug #51126.
22070
22071 Sun Dec 21 19:53:16 CET 2003 Paolo Molaro <lupus@ximian.com>
22072
22073         * mini.h, mini-ppc.c, mini-ppc.h: small cleanups and
22074         supports for cond branches that overflow the immediate
22075         overflow offset. mcs can compile simple programs.
22076
22077 Fri Dec 19 21:17:16 CET 2003 Paolo Molaro <lupus@ximian.com>
22078
22079         * exceptions-ppc.c: exception handling support wip:
22080         finally handlers get run on exception.
22081
22082 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
22083
22084         * aot.c (mono_aot_get_method_inner): Avoid loading AOT code while 
22085         profiling.
22086
22087 Fri Dec 19 17:58:28 CET 2003 Paolo Molaro <lupus@ximian.com>
22088
22089         * cpu-g4.md, mini-ppc.c, exceptions-ppc.c, mini-ppc.h:
22090         initial support for stack walking and unwinding.
22091
22092 2003-12-18  Zoltan Varga  <vargaz@freemail.hu>
22093
22094         * driver.c (mono_main): Make corlib-out-of-sync message more 
22095         descriptive. Also remove verify_corlib call.
22096
22097 Wed Dec 17 15:31:41 CET 2003 Paolo Molaro <lupus@ximian.com>
22098
22099         * mini.c: make CEE_NEWARR calls and other emulated opcodes 
22100         not overlap with other call's arguments, too.
22101
22102 Wed Dec 17 12:49:23 CET 2003 Paolo Molaro <lupus@ximian.com>
22103
22104         * mini.h, mini.c, mini-ppc.c, mini-sparc.c, mini-x86.c: 
22105         move to arch-specific code the choice of arch-specific
22106         intrinsics (from Laurent Morichetti (l_m@pacbell.net)).
22107         * mini.c: ensure emulation calls will not interleave
22108         with other calls.
22109
22110 Wed Dec 17 12:27:26 CET 2003 Paolo Molaro <lupus@ximian.com>
22111
22112         * tramp-ppc.c, basic-calls.cs: rework trampolines so that
22113         the magic trampoline stack frame is dropped before executing
22114         the new method.
22115
22116 Mon Dec 15 18:13:57 CET 2003 Paolo Molaro <lupus@ximian.com>
22117
22118         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed some opcode lengths
22119         and integer to fp conversions. Added support for overflowing
22120         arguments on the stack. Reserve a couple more registers as temps.
22121         Added support for aot compilation (as output still needs to be
22122         tweaked, though).
22123
22124 Sat Dec 13 17:49:10 CET 2003 Paolo Molaro <lupus@ximian.com>
22125
22126         * mini-ppc.c, basic-long.cs: fix jumps to known labels.
22127         Don't overwrite return register in some corner cases.
22128
22129 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
22130
22131         * mini.h mini.c driver.c mini-x86.c mini-ppc.c aot.c: Do not run
22132         static constructors when AOT compiling.
22133
22134         * driver.c (mono_main): Call mono_check_corlib_version.
22135
22136 Sat Dec 13 10:31:12 CET 2003 Paolo Molaro <lupus@ximian.com>
22137
22138         * cpu-g4.md, basic.cs: fixed div target register.
22139
22140 Sat Dec 13 09:45:56 CET 2003 Paolo Molaro <lupus@ximian.com>
22141
22142         * mini-ppc.c, basic.cs: shl_imm fix with test.
22143
22144 Fri Dec 12 21:25:14 CET 2003 Paolo Molaro <lupus@ximian.com>
22145
22146         * inssel-ppc.brg, mini-ppc.h, mini-ppc.c: support for passing 
22147         structures by value. Misc fixes.
22148         * objects.cs: more tests.
22149
22150 Fri Dec 12 10:11:49 CET 2003 Paolo Molaro <lupus@ximian.com>
22151
22152         * mini-ppc.c: lconv.ovf.i implemented.
22153
22154 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22155
22156         * mini.c:
22157         (mini_init): don't error out if someone already called g_thread_init.
22158
22159 Tue Dec 9 17:27:14 CET 2003 Paolo Molaro <lupus@ximian.com>
22160
22161         * exceptions-x86.c, exceptions-ppc.c: allow the exception object
22162         to be any type per the spec. Fix abnormal memory usage when
22163         the same object is repeatedly thrown.
22164
22165 Tue Dec 9 15:39:54 CET 2003 Paolo Molaro <lupus@ximian.com>
22166
22167         * mini.c: check for overruns in IL code.
22168
22169 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
22170
22171         * TODO: Add/remove some todo entries.
22172
22173 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
22174
22175         * driver.c (mono_main): Call mono_verify_corlib.
22176
22177 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
22178
22179         * inssel.brg: In CEE_ISINST and CEE_CASTCLASS, removed check for proxy. 
22180         This has been moved to mini.c
22181         * mini.c: in mono_method_to_ir, CEE_ISINST and CEE_CASTCLASS cases, if the
22182         type being casted is marshalbyref it could be a proxy, so instead of
22183         emitting the type check code, emit a call to a runtime method that will
22184         perform the check by calling CanCastTo if needed.
22185
22186 2003-12-06  Zoltan Varga  <vargaz@freemail.hu>
22187
22188         * mini-x86.c (mono_arch_emit_prolog): Fix stack space allocation for
22189         methods with large stack frames under Win32.
22190
22191 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
22192
22193         * Makefile.am: Distribute regression tests.
22194
22195         * mini-x86.c (mono_arch_get_allocatable_int_vars): Sort the var list
22196         at the end instead of inserting each variable into the sorted list.
22197
22198         * linear-scan.c (mono_varlist_sort): New helper function.
22199         
22200 Wed Dec 3 20:46:28 CET 2003 Paolo Molaro <lupus@ximian.com>
22201
22202         * mini.c: ensure arguments and locals are within bounds.
22203
22204 Wed Dec 3 17:59:10 CET 2003 Paolo Molaro <lupus@ximian.com>
22205
22206         * mini-ppc.c, cpu-g4.md, basic.cs, basic-long.cs: more tests and 
22207         related fixes.
22208
22209 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
22210
22211         * mini.c (mono_cprop_copy_values): Fix crash.
22212
22213         * aot.c: Set verbosity back to 0.
22214         
22215 Wed Dec 3 15:42:27 CET 2003 Paolo Molaro <lupus@ximian.com>
22216
22217         * regalloc.c: complete memory leak fix by Laurent Morichetti
22218         (l_m@pacbell.net).
22219
22220 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
22221
22222         * driver.c (main_thread_handler): Revert the previous patch.
22223
22224         * tramp-x86.c (x86_class_init_trampoline): Avoid patching when running
22225         under valgrind.
22226
22227         * mini-x86.c (mono_arch_local_regalloc): Do not allocate transient
22228         memory from the memory pool.
22229
22230         * driver.c (main_thread_handler): Turn on all optimizations when
22231         --aot is used.
22232
22233         * mini.c (mono_find_jit_opcode_emulation): Turn emul_opcode_hash into
22234         an array for better performance.
22235
22236         * regalloc.c (mono_regstate_assign): Fix memory leak.
22237
22238         * debug-mini.c (mono_debug_serialize_debug_info): New function to
22239         serialize the debug info.
22240
22241         * debug-mini.c (mono_debug_add_aot_method): New function to load the
22242         debug info from the serialized representation.
22243
22244         * aot.c: Save debug info into the generated file and load it when 
22245         loading a method.
22246
22247         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
22248
22249 Mon Dec 1 16:54:05 CET 2003 Paolo Molaro <lupus@ximian.com>
22250
22251         * mini-ppc.c, tramp-ppc.c: save FP arguments in the trampoline.
22252         More FP-related fixes.
22253
22254 Sun Nov 30 19:13:52 CET 2003 Paolo Molaro <lupus@ximian.com>
22255
22256         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed finally handlers
22257         and register allocation buglet. Hello world now runs.
22258
22259 Fri Nov 28 23:03:05 CET 2003 Paolo Molaro <lupus@ximian.com>
22260
22261         * cpu-g4.md, inssel-ppc.brg, mini-ppc.c: better long return support.
22262         * tramp-ppc.c: fixed class init trampoline.
22263         * inssel-ppc.brg, mini.c, jit-icalls.c, mini-ppc.h: more emulation.
22264
22265 Fri Nov 28 16:36:29 CET 2003 Paolo Molaro <lupus@ximian.com>
22266
22267         * cpu-g4.md, inssel-ppc.brg, jit-icalls.c, mini-ppc.c, mini-ppc.h,
22268         mini.c: more ppc changes/fixes.
22269
22270 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
22271
22272         * mini.c (mono_method_to_ir): Fix tail calls with valuetype arguments.
22273         Also optimize the case when the arguments are the same in the caller 
22274         and in the callee.
22275
22276         * iltests.il: Add tests for tail calls with valuetype arguments.
22277
22278 Thu Nov 27 21:06:37 CET 2003 Paolo Molaro <lupus@ximian.com>
22279
22280         * mini-ppc.c: fixes for struct return type.
22281
22282 Thu Nov 27 19:02:07 CET 2003 Paolo Molaro <lupus@ximian.com>
22283
22284         * mini.h, mini.c, mini-x86.c, mini-ppc.c, mini-sparc.c: move 
22285         mono_spillvar_offset() to arch-specific code.
22286
22287 Thu Nov 27 18:30:42 CET 2003 Paolo Molaro <lupus@ximian.com>
22288
22289         * mini-ppc.h, mini-ppc.c: handle some different ABI call convention issues.
22290
22291 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
22292
22293         * exceptions-x86.c: Fix stack space leaks.
22294         
22295         * exceptions-x86.c (mono_arch_find_jit_info): Restore callee saved
22296         registers from the lmf if the method has save_lmf set.
22297
22298 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
22299
22300         * tramp-x86.c (x86_magic_trampoline): Avoid patching in the addresses
22301         of icall wrappers into InvokeInDomain, since these are now per-domain.
22302
22303 Wed Nov 26 20:15:04 CET 2003 Paolo Molaro <lupus@ximian.com>
22304
22305         * mini-ppc.h, mini-x86.h, mini.c, inssel-ppc.brg, jit-icalls.c:
22306         make some opcode emulation and intrinsic ops enabled/disabled 
22307         according to the architecture. More fixes.
22308
22309 Wed Nov 26 19:59:09 CET 2003 Paolo Molaro <lupus@ximian.com>
22310
22311         * mini-ppc.c, mini-sparc.c, cpu-g4.md: more bug fixes.
22312
22313 Wed Nov 26 19:18:29 CET 2003 Paolo Molaro <lupus@ximian.com>
22314
22315         * mini.h, inssel.brg, mini-x86.c, mini-ppc.c, mini-sparc.c: move
22316         arch-specific handling for 'this' and struct return type to
22317         arch-specific code.
22318
22319 2003-11-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22320
22321         * aot.c: prevent divide by zero error when reporting (it happened with
22322         Accessibility.dll).
22323
22324 2003-11-25  Zoltan Varga  <vargaz@freemail.hu>
22325
22326         * mini.h (inst_switch): Remove unused macro.
22327
22328 2003-11-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22329
22330         * aot.c:
22331         (load_aot_module): free 'info->methods' and 'info' properly. No more
22332         "free(): invalid pointer blah" messages when you have an old aot
22333         compiled assembly.
22334
22335 2003-11-21  Lluis Sanchez Gual <lluis@ximian.com>
22336
22337         * jit-icalls.c, mini.c: Added support for context static fields.
22338
22339 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
22340
22341         * mini.c (mono_method_blittable): Methods which set LastError are not 
22342         blittable either. Fixes #51108.
22343         
22344 Tue Nov 18 16:41:37 CET 2003 Paolo Molaro <lupus@ximian.com>
22345
22346         * mini.c: flush icache.
22347         * cpu-g4.md, mini-ppc.c, inssel.brg: more fixes. Trace support.
22348
22349 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
22350
22351         * mini.c (mono_type_blittable): OBJECT is not blittable. Fixes #47842.
22352
22353 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
22354
22355         * tramp-x86.c (x86_class_init_trampoline): Make code patching thread
22356         safe on IA32.
22357
22358         * mini-x86.c (mono_arch_call_opcode): Disable AOT for methods with 
22359         vararg calls.
22360
22361         * inssel.brg (CEE_MKREFANY): Fix AOT case.
22362
22363 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
22364
22365         * mini-x86.c (mono_arch_local_regalloc): Fix regalloc for div 
22366         instruction when the result is discarded.
22367
22368         * iltests.il (test_0_div_regalloc): New regression test.
22369
22370         * arrays.cs: Fix compilation error.
22371
22372 Fri Nov 14 21:34:06 CET 2003 Paolo Molaro <lupus@ximian.com>
22373
22374         * inssel-x86.brg, inssel-float.brg, mini-ops.h: move x86-specific
22375         float rules to inssel-x86.brg: sane architectures with FP registers
22376         don't need to implement these rules.
22377
22378 Fri Nov 14 20:52:12 CET 2003 Paolo Molaro <lupus@ximian.com>
22379
22380         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: updates and fixes to the ppc port.
22381
22382 Fri Nov 14 17:58:27 CET 2003 Paolo Molaro <lupus@ximian.com>
22383
22384         * mini.h, inssel-long32.brg: fixed endianess issues in int64
22385         implementation of 32 bit systems.
22386
22387 Thu Nov 13 16:14:41 CET 2003 Paolo Molaro <lupus@ximian.com>
22388
22389         * exceptions-ppc.c: fix build on Linux/ppc from Jeroen@xs4all.nl
22390         (Jeroen Zwartepoorte).
22391
22392 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
22393
22394         * mini.c (mono_method_to_ir): Use CEE_JMP only if the signature of
22395         the caller and the callee matches.
22396         
22397         * mini.c (mono_method_to_ir): Add comment.
22398
22399         * mini-x86.c (mono_arch_output_basic_block): Use mono_signbit, since
22400         signbit is missing on some platforms.
22401
22402 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
22403
22404         * mini.h (mono_arch_setup_jit_tls_data): New arch specific function.
22405
22406         * mini.c (setup_jit_tls_data): Call the new function.
22407         
22408         * mini-x86.c mini-ppc.c mini-sparc.c: Define the new function.
22409
22410         * mini-x86.c: Add experimental support for fast access to the lmf
22411         structure under NPTL/Linux 2.6.x.
22412
22413 2003-11-06  Martin Baulig  <martin@ximian.com>
22414
22415         * ldscript: Make `GC_push_all_stack', `GC_start_blocking',
22416         `GC_end_blocking' and 'gc_thread_vtable' public; they're used by
22417         the debugger.
22418
22419 2003-11-02  Martin Baulig  <martin@ximian.com>
22420
22421         * mini.c (inflate_generic_field): New static method.
22422         (mono_method_to_ir): In CEE_LDFLD and CEE_LDSFLD: if we're a
22423         generic instance and the field is declared in a generic type, call
22424         inflate_generic_field() to inflate it.  Fixes gen-28.cs.
22425
22426 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
22427
22428         * mini.h mini.c (mono_method_same_domain): New function to return
22429         whenever the caller and the callee are in the same domain.
22430
22431         * tramp-x86.c (x86_magic_trampoline): Use the new function.     
22432
22433 2003-10-30  Martin Baulig  <martin@ximian.com>
22434
22435         * mini.c (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): New macros;
22436         similar to TYPE_PARAM_TO_TYPE and TYPE_PARAM_TO_CLASS, but for
22437         method parameters.
22438         (mono_method_to_ir): Added support for MONO_TYPE_MVAR; similar to
22439         MONO_TYPE_VAR, we the actual types from MTYPE_PARAM_TO_CLASS(). 
22440
22441 2003-10-29  Zoltan Varga  <vargaz@freemail.hu>
22442
22443         * mini.c mini-ops.h inssel.brg: Implement undeniable exception 
22444         propagation.
22445
22446         * mini.c (sigusr1_signal_handler): Move creation of the thread abort
22447         object here, so it is in the correct appdomain etc.
22448
22449 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
22450
22451         * mini.c (mono_jit_compile_method_inner): Lookup icalls here if not
22452         already done.
22453         (mono_method_to_ir): Avoid freeing the type created returned from
22454         mono_type_create_from_typespec, since it is put into an internal cache
22455         by the function. Fixes pointer.exe.
22456
22457         * mini.c tramp-x86.c tramp-sparc.c tramp-ppc.c: Use the normal 
22458         trampolines for icalls and pinvokes as well. Fixes #33569.
22459
22460 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
22461
22462         * mini.c: Update after appdomain changes.
22463
22464         * mini.c (mono_jit_compile_method_inner): Allways compile native
22465         method wrappers in the root domain, since there can only be one
22466         instance of them, whose address is stored in method->info.
22467
22468 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
22469
22470         * mini.c (mono_runtime_install_handlers): Get rid of the MONO_VALGRIND
22471         environment variable. Instead detect automatically whenever running
22472         under valgrind using the magic macro RUNNING_ON_VALGRIND from
22473         valgrind.h.
22474
22475 2003-10-16  Miguel de Icaza  <miguel@ximian.com>
22476
22477         * trace.c, trace.h: New files that implement the new trace option
22478         parsing. 
22479
22480         * driver.c: Document new --trace options.
22481
22482         * exceptions-ppc.c, exceptions-x86.c, mini-ppc.c, mini-sparc.c,
22483         mini-x86.c: Apply:
22484
22485         -       if (mono_jit_trace_calls)
22486         +       if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
22487
22488         * mini.h: prototypes.
22489         
22490 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
22491
22492         * mini.c (mono_method_to_ir): Fix initialization of typedbyref locals.
22493
22494         * mini.c inssel.brg: Implement typedefbyref opcodes.
22495
22496         * mini.c (mono_jit_compile_method): Remove unused local variable.
22497
22498         * mini.c (mono_jit_compile_method_inner): Ditto.
22499         
22500 2003-10-12  Zoltan Varga  <vargaz@freemail.hu>
22501
22502         * tramp-x86.c (x86_class_init_trampoline): Fix build.
22503         
22504         * tramp-x86.c (x86_class_init_trampoline): Thread safety fixes.
22505
22506 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
22507
22508         * mini.c (mono_no_aot): Remove unused global variable.
22509
22510         * mini.c: Thread safety fixes.
22511
22512 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
22513
22514         * mini.c (mono_create_class_init_trampoline): Add a lock around
22515         class_init_hash_addr.
22516
22517         * arrays.cs (test_0_newarr_emulation): Add new regression test for
22518         #30073.
22519
22520         * mini.c: Decompose the NEWARR instruction before decomposing its
22521         arguments. Fixes #30073.
22522
22523 2003-10-08  Zoltan Varga  <vargaz@freemail.hu>
22524
22525         * mini-x86.c (mono_arch_emit_epilog): Add support for stdcall calling
22526         convention.
22527
22528 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
22529
22530         * mini.c (mono_method_to_ir): Allow wrapper data for CEE_LDELEMA.
22531
22532         * inssel-x86.brg (OP_LOCALLOC): Fix register assignment for localloc.
22533
22534         * driver.c: Add support for compiling icall wrappers to --compile.
22535
22536 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
22537
22538         * inssel.brg: The empty value in class->interface_offsets is -1, not
22539         0. Fixes #49287.
22540
22541 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
22542
22543         * objects.cs: New test for 'is' operator on an array of interfaces.
22544
22545 Wed Oct 1 19:40:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
22546
22547         * tramp-ppc.c: update trampoline code to support jumps
22548         and class initialization.
22549
22550 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
22551
22552         * mini.c (mono_jit_compile_method): Fix reading of freed memory.
22553
22554         * inssel.brg (OP_UNBOXCAST): Fix #46027.
22555
22556         * inssel.brg (OP_UNBOX): Remove unused rule.
22557
22558         * mini.h mini.c inssel-x86.brg: Allocate one SP variable for each
22559         region instead of one for each method. Fixes #47813.
22560
22561 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
22562
22563         * exceptions.cs (test_0_nested_finally): New regression test for
22564         nested exception handlers.
22565
22566         * mini.c (mono_jit_runtime_invoke): Fix for the previous fix.
22567
22568         * mini.c (mono_method_to_ir): Avoid inlining tail calls.
22569
22570         * mini.c (mono_method_to_ir): Fix tail recursion in the presence of 
22571         inlining.
22572
22573         * mini.c (mono_method_check_inlining): Make the inlining limit 
22574         configurable by an environment variable.
22575         
22576         * mini.c (mono_jit_runtime_invoke): Add Gonzalo's fix for #36545.
22577
22578         * mini.h: Bump AOT file version.
22579
22580         * mini.h mini.c aot.c mini-x86.c: For relocations which refer to a 
22581         token, store the image along with the token, since the token might not 
22582         refer to the same image as the method containing the relocation, 
22583         because of inlining.
22584
22585 2003-09-27  Zoltan Varga  <vargaz@freemail.hu>
22586
22587         * mini.c (mono_precompile_assemblies): New function to compile
22588         all methods in all loaded assemblies.
22589
22590         * mini.h driver.c: Added new optimization flag MONO_OPT_PRECOMP.
22591
22592         * regalloc.h regalloc.c (MonoRegState): Change the type of 
22593         iassign and fassign to int*, since they can contain large negative
22594         values if the register is spilled. Also added some comments. Fixes
22595         #45817.
22596
22597         * exceptions-x86.c (seh_handler): Fix handling of system exceptions
22598         under Win32. Fixes #42964.
22599
22600 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
22601
22602         * mini.h (MONO_PATCH_INFO_WRAPPER): New patch type.
22603
22604         * aot.c: Added support for AOT compiling methods which contain calls
22605         to wrappers. Currently, only remoting-invoke-with-check wrappers are
22606         handled.
22607         
22608         * driver.c (compile_all_methods): Run the compilation in a thread
22609         managed by mono. Fixes #44023.
22610
22611         * mini.c (mono_codegen): Print full method name in verbose output.
22612
22613         * mini-x86.c (mono_arch_patch_code): Fix warning.
22614         
22615         * mini-x86.c (mono_arch_patch_code): Allways create a trampoline for
22616         jumps, since the method we are jumping to might be domain-specific.
22617
22618         * aot.c: Added support for MONO_PATCH_INFO_METHOD_JUMP.
22619
22620 Tue Sep 23 10:50:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
22621
22622         * inssel.brg: string chars are unsigned.
22623
22624 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
22625
22626         * TODO: New todo item.
22627
22628         * tramp-x86.c (x86_class_init_trampoline): New trampoline function
22629         which calls mono_runtime_class_init and patches the call site to
22630         avoid further calls.
22631         (mono_arch_create_class_init_trampoline): New arch specific function 
22632         to create a class init trampoline.
22633         (create_trampoline_code): Generalized so it can create
22634         class init trampolines as well.
22635
22636         * mini.c (helper_sig_class_init_trampoline): New helper variable.
22637         (mono_create_class_init_trampoline): New function to create and cache
22638         class init trampolines.
22639         (mono_find_class_init_trampoline_by_addr): New function to lookup the
22640         vtable given the address of a class init trampoline. Used by the
22641         patching process.
22642         (mono_codegen): Generate a call to a trampoline instead of
22643         mono_runtime_class_init in LDSFLD[A].
22644         (mono_codegen): Add relocations for the new trampoline.
22645         
22646         * mini.h mini-x86.c aot.c: Added a new relocation type: 
22647         MONO_PATCH_INFO_CLASS_INIT.
22648
22649         * mini.h: Bump AOT version number.
22650
22651         * aot.c: Create a copy of the loaded code instead of using the original
22652         so methods which call each other will be close in memory, improving
22653         cache behaviour.
22654         
22655         * exceptions-x86.c (mono_arch_has_unwind_info): Back out the previous
22656         patch since it breaks the regression tests.
22657         
22658         * exceptions-x86.c (mono_arch_has_unwind_info): Added explicit check
22659         for the register saving instruction sequence since the 
22660         frame_state_for function in glibc 2.3.2 don't seem to detect it.
22661
22662 2003-09-14  Zoltan Varga  <vargaz@freemail.hu>
22663
22664         * TODO: Fix todo item && remove another.
22665
22666 2003-09-12  Zoltan Varga  <vargaz@freemail.hu>
22667
22668         * mini-x86.c (mono_arch_patch_code): Fix tail calls broken by a
22669         previous checkin.
22670
22671         * aot.c: Moved the check for MONO_LASTAOT into the initialization
22672         function of the module.
22673
22674         * mini.h mini.c aot.c: Added a new optimization flag OPT_AOT for
22675         turning on/off the usage of AOT code. Got rid of mono_no_aot and the
22676         --no-aot command line option.
22677
22678 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
22679
22680         * helpers.c (mono_disassemble_code): Make this work under cygwin. Patch
22681         by Bernie Solomon (bernard@ugsolutions.com).
22682
22683         * inssel.brg: Refactor the interface offset table related code into
22684         its separate functions and add support for the AOT case.
22685
22686 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
22687
22688         * aot.c (mono_aot_get_method_inner): Fix memory leak.
22689         
22690         * aot.c: Added mono_aot_verbose variable and made all debugging
22691         output depend on the value of this variable.
22692
22693         * aot.c (mono_aot_get_method_inner): Avoid dynamic allocation of
22694         method_label and info_label.
22695
22696         * mini.h mini-x86.c aot.c: Added a new relocation type 
22697         MONO_PATCH_INFO_IID for klass->interface_id.
22698
22699         * mini.h mini.c driver.c aot.c: Changed mono_aot_get_method to return
22700         the MonoJitInfo structure.
22701
22702         * mini.c (mono_jit_compile_method): Avoid using non-shared AOT in
22703         a non-root appdomain in shared mode.
22704
22705 Tue Sep 9 16:33:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
22706
22707         * aot.c: make aot loader less verbose. Remove free of unused variable.
22708
22709 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
22710
22711         * aot.c (mono_aot_get_method_inner): Fix MONO_PATCH_INFO_IMAGE.
22712
22713         * .cvsignore: Added *.dll.
22714
22715         * mini.c (mono_print_tree_nl): New function callable while debugging.
22716
22717         * mini.c (mono_print_code): Export this.
22718
22719         * tramp-x86.c (x86_magic_trampoline): Tell valgrind to recompile the
22720         patched code.
22721
22722 2003-09-05  Zoltan Varga  <vargaz@freemail.hu>
22723
22724         * mini.h (MonoCompile): Added 'jit_info' field.
22725
22726         * mini.c (mini_method_compile): Save the generated MonoJitInfo into
22727         the cfg structure, since it is needed by the AOT compiler.
22728
22729         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
22730
22731         * aot.c: A major rewrite. Changes include:
22732         - save exception tables for methods which have them.
22733         - cache failed lookups in aot_get_method () to avoid the (slow) calls 
22734         to g_module_symbol.
22735         - reworked the file format so it is now much smaller and needs
22736         fewer relocation entries.
22737         
22738 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
22739
22740         * aot.c (load_aot_module): Fix build bustage on platforms without
22741         Boehm GC.
22742
22743 2003-09-04  Martin Baulig  <martin@ximian.com>
22744
22745         * Makefile.am (INCLUDES): Added $(LIBGC_CFLAGS).
22746
22747 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
22748
22749         * TODO: Some new optimization ideas.
22750
22751         * aot.c: Move AOT module loading logic here from mono_assembly_open.
22752
22753         * aot.c: Save the optimization flags used to compile the code into
22754         the AOT module.
22755
22756         * mini.h mini-x86.c mini.c aot.c: Added new types of relocations to
22757         support emitting domain specific code.
22758         
22759         * mini.h mini.c aot.c: Modified the JIT so the generated AOT code is 
22760         no longer domain neutral. It can be made domain neutral by compiling 
22761         with --optimize=shared.
22762
22763         * aot.c (mono_aot_get_method_inner): Allow sharing of AOT methods
22764         between appdomains.
22765
22766         * driver.c mini.h mini.c: New --no-aot debugging option which disables
22767         loading of AOT code.
22768
22769         * inssel-x86.brg: Added missing AOTCONST -> OUTARG_VT rule.
22770         
22771         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling method
22772         if there is no domain neutrality information.
22773
22774 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
22775
22776         * aot.c (mono_compile_assembly): Emit a symbol containing the file 
22777         format version into the generated library.
22778
22779         * mini-x86.c (mono_arch_patch_code): Do not emit the address of the
22780         callee method into the caller since one of them could be shared.
22781
22782         * mini.h mini-x86.c aot.c: Added two new relocations so throwing
22783         system exceptions from AOT code now works.
22784
22785         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling 
22786         method if it is domain neutral and the callee is not.
22787
22788         * graph.c (cfg_emit_one_loop_level): Fix warning.
22789
22790 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
22791
22792         * aot.c (mono_compile_assembly): Oops. Remove debugging cruft from
22793         last checkin.
22794
22795 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
22796
22797         * mini.c (mini_init): Call mono_marshal_init () explicitly since it
22798         is needed  by code which is executed before mono_runtime_init ().
22799         Thanks to Bernie Solomon (bernard@ugsolutions.com) for noticing this.
22800         
22801         * mini.c (mono_thread_abort): Fix warning.
22802         (mono_jit_compile_method): Call static constructor in the AOT case too.
22803
22804         * aot.c (mono_compile_assembly): Fix warning.
22805
22806 2003-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22807
22808         * mini.c: register a SIGINT handler if MONO_DEBUG is defined.
22809
22810 2003-08-28  Zoltan Varga  <vargaz@freemail.hu>
22811
22812         * inssel.brg (OP_UNBOXCAST): Add support for the AOT case.
22813
22814         * cpu-pentium.md: Fix the length of call opcodes so they include the
22815         ESP restoring instruction. Fixes #47968.
22816
22817 2003-08-28  Martin Baulig  <martin@ximian.com>
22818
22819         * mini-x86.c (mono_arch_call_opcode): Added support for
22820         MONO_TYPE_GENERICINST.
22821
22822         * mini.c (check_call_signature): Added support for MONO_TYPE_GENERICINST.       
22823
22824 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
22825
22826         * Makefile.am (BUILT_SOURCES): Fix compilation on platforms without
22827         a JIT. Patch by Bernie Solomon (bernard@ugsolutions.com).
22828
22829         * mini.c jit-icalls.c tramp-x86.c tramp-ppc.c tramp-sparc.c: Get rid of
22830         metadata_section.
22831
22832 2003-08-26  Martin Baulig  <martin@ximian.com>
22833
22834         * mini.c (get_basic_blocks): Added `unsigned char **pos' argument;
22835         when reporting an error, set this to the actual error location.
22836         (mono_method_to_ir): Report the correct error location if
22837         get_basic_blocks() returned an error.
22838
22839 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
22840
22841         * mini.c (mono_type_blittable): OBJECT is not blittable.
22842         (mono_method_blittable): Methods which have marshalling descriptors
22843         are not blittable either. Fixes #47842.
22844
22845 2003-08-22  Zoltan Varga  <vargaz@freemail.hu>
22846
22847         * driver.c mini.c: Use an environment variable instead of a global 
22848         variable. Also fix the build.
22849
22850         * mini.c (mini_init): Call g_thread_init () to make glib thread-safe. 
22851         Fixes #47682. Thanks to Laurent Morichetti (l_m@pacbell.net) for 
22852         reporting this. 
22853
22854         * driver.c mini.c: Added --with-valgrind option to turn off some
22855         code which prevents mono from running under valgrind.
22856
22857         * mini.c (mono_emit_call_args): Fixed warning.
22858
22859         * mini.c (mono_emulate_opcode): Fixed warning.
22860
22861 Thu Aug 21 19:10:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
22862
22863         * inssel.brg: 64bit fixes from Laurent Morichetti <l_m@pacbell.net>.
22864         * linear-scan.c, mini-ppc.h, mini-sparc.h, mini-x86.h, mini.h,
22865         regalloc.c, regalloc.h: specify available registers in arch-specific
22866         code and support floats in the regallocator (patch by Laurent Morichetti 
22867         <l_m@pacbell.net>)
22868
22869 Wed Aug 20 19:02:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
22870
22871         * mini.c: mono_thread_current() can be called only after
22872         mono_runtime_init(): rearrange code to not call it early on.
22873
22874 Wed Aug 20 13:14:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
22875
22876         * mini.c: allocate jump tables in the code mempools.
22877
22878 Wed Aug 20 13:04:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
22879
22880         * mini.c, mini.h: make sure per-thread data allocated by the jit is
22881         freed.
22882
22883 2003-08-10  Miguel de Icaza  <miguel@ximian.com>
22884
22885         * cpu-pentium.md (ldtoken): Change the length for mul.ovf.un from
22886         12 to 16.  This fixes bug #47453.
22887
22888
22889 Thu Aug 7 15:59:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
22890
22891         * mini-ppc.c: fixed indexed load and unsigned compares.
22892
22893 2003-08-06  Lluis Sanchez Gual  <lluis@ximian.com>
22894
22895         * mini.c: reenabled installation of handler for
22896           thread abort signal.
22897
22898 Tue Aug 5 12:21:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
22899
22900         * cprop.c, mini-x86.c, cpu-pentium.md: fix buglets spotted
22901         by Laurent Morichetti <l_m@pacbell.net>. Disabled local cprop
22902         until it's fixed and actually useful.
22903
22904 Mon Aug 4 12:12:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
22905
22906         * inssel-long32.brg: couple more opcodes implemented.
22907
22908 Thu Jul 31 22:43:02 EDT 2003 Mark Crichton <crichton@gimp.org>
22909         
22910         * mini-sparc.c: Even more opcodes implemeted.
22911
22912 Thu Jul 31 19:36:03 EDT 2003 Mark Crichton <crichton@gimp.org>
22913
22914         * mini-sparc.c: More opcodes implemented.
22915
22916 Thu Jul 31 15:16:26 EDT 2003 Mark Crichton <crichton@gimp.org>
22917
22918         * mini-sparc.c: More opcodes implemented.
22919
22920 Wed Jul 30 22:31:02 EDT 2003 Mark Crichton <crichton@gimp.org>
22921
22922         * inssel-sparc.brg: Add some needed rules.  Direct
22923         copy from PPC.
22924         * Makefile.am: Use inssel-sparc.brg
22925         * exceptions-sparc.c: 0xdeadbeef/0xdecafbad to keep
22926         an assert happy for now.
22927
22928 Wed Jul 30 20:44:07 EDT 2003 Mark Crichton <crichton@gimp.org>
22929
22930         * mini-sparc.c: Fixed compile errors.
22931         * exceptions-sparc.c: Same.  We now produce a mono binary 
22932         on sparc-linux.  Yea.
22933
22934 Wed Jul 30 14:10:12 EDT 2003 Mark Crichton <crichton@gimp.org>
22935
22936         * mini-sparc.c: Renamed registers.  Also some macro cleanups.
22937         * exceptions-sparc.c, tramp-sparc.c: Various compile fixes.
22938         They compile, but do not work.
22939
22940 Wed Jul 30 17:52:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
22941
22942         * Makefile.am, cpu-sparc.md, exceptions-sparc.c, mini-sparc.c,
22943         mini-sparc.h, tramp-sparc.c: Beginning of sparc support
22944         from Mark Crichton <crichton@gimp.org> and Christopher Taylor
22945         (ct@gentoo.org).
22946
22947 Tue Jul 29 12:43:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
22948
22949         * mini.c: more opcodes implemented and better support for generics.
22950
22951 Fri Jul 25 18:51:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
22952
22953         * cpu-g4.md, cpu-pentium.md: updates for new instructions.
22954         * mini.c, mini.h: first cut at generics support: some new instructions 
22955         added and changed the behaviour of some of the existing ones.
22956
22957 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
22958
22959         * mini.c: Removed definition of metadata_shared mutex here.
22960
22961 Tue Jul 22 15:21:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
22962
22963         * mini-x86.c: make vararg calls work for instance methods.
22964
22965 Fri Jul 18 19:26:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
22966
22967         * mini.c, mini.h, mini-x86.c, mini-ppc.c: mono_arch_call_opcode()
22968         returns the arguments in a separte list, now.
22969
22970 Fri Jul 18 13:16:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
22971
22972         * aot.c, mini.c: updates for array type representation changes.
22973
22974 Fri Jul 18 11:28:28 CEST 2003 Paolo Molaro <lupus@ximian.com>
22975
22976         * mini.c: register function to perform jit shutdown.
22977
22978 Thu Jul 17 16:02:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
22979
22980         * mini.c: use a faster allocator if possible.
22981
22982 Thu Jul 17 16:00:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
22983
22984         * aot.c: some cleanups and portability changes.
22985
22986 Wed Jul 2 11:08:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
22987
22988         * mini.c: use faster allocation for CEE_BOX if possible.
22989
22990 Mon Jun 30 19:16:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
22991
22992         * mini.c, mini-ops.h, inssel.brg, mini-x86.c: optimized access to fields.
22993         Moved inlined mempcy code to its own function so that is can be
22994         reused. Added an inline memset function as well (optimized initobj).
22995         * cpu-pentium.md, inssel-x86.brg: add and use lea_membase.
22996
22997 Fri Jun 27 11:19:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
22998
22999         * mini.c, mini-ops.h, inssel.brg: optimized a couple of Array methods.
23000
23001 Wed Jun 25 13:19:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
23002
23003         * mini.c, mini.h, mini.x86.c, mini-ppc.c: added facility so that
23004         arch code can setup the cpu for CLR execution, if needed.
23005         We use it on x86 to set the precision of FP operations.
23006
23007 Tue Jun 17 19:02:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
23008
23009         * mini.c: disable some optimizations if we can guess they'll cost too
23010         much for a given method.
23011
23012 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
23013
23014         * mini.h mini.c: Rework last patch based on suggestions by Paolo.
23015         
23016 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
23017         * mini.h mini.c mini-x86.c: Added instruction level coverage 
23018         info collection support.
23019
23020 Mon Jun 16 18:13:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
23021
23022         * driver.c, mini-ppc.c, mini-x86.c, mini.c, mini.h: the coverage stuff
23023         is now implemented in the profiling API. Get rid of a couple of
23024         unnecessary global variables.
23025
23026 2003-06-15  Nick Drochak <ndrochak@gol.com>
23027
23028         * basic-long.cs: tests for negative values for bigmul, and unsigned.
23029         * cpu-g4.md: add op_bigmul and op_bigmul_un
23030         * cpu_pentium.md: add op_bigmul_un
23031         * inssel-long32.brg: add rule for unsigned bigmul
23032         * mini-ops.h: define OP_BIGMUL_UN
23033         * mini-x86.c: THE BUG: handle (un)signed properly
23034         * mini.c: choose unsigned opcode if needed.
23035         This set of patches fixes bug #44291
23036
23037 2003-06-13  Dietmar Maurer  <dietmar@ximian.com>
23038
23039         * mini.c (optimize_branches): improved to handle all kinds of
23040         conditional branches.
23041
23042 Wed Jun 11 18:01:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
23043
23044         * mini.c, mini.h, jit-icalls.c: speedup emulation of opcodes that
23045         don't raise exceptions.
23046
23047 Tue Jun 10 19:00:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
23048
23049         * tramp-x86.c, tramp-ppc.c, debug-mini.c: move arch-specific code
23050         to arch-specific files.
23051
23052 2003-06-09  Martin Baulig  <martin@ximian.com>
23053
23054         * Makefile.am (libs): Added $(LIBGC_LIBS).
23055
23056 Mon Jun 9 20:21:47 CEST 2003 Paolo Molaro <lupus@ximian.com>
23057
23058         * cpu-pentium.md, mini-x86.c: fix (well, actually implement) OP_TAN
23059         and OP_ATAN (fixes bug#44293).
23060
23061 Mon Jun 9 19:00:56 CEST 2003 Paolo Molaro <lupus@ximian.com>
23062
23063         * Makefile.am, mini-x86.c: rename cpu description array to
23064         pentium_desc, since some compilers define the 'pentium' preprocessor
23065         symbol.
23066
23067 2003-05-28  Dietmar Maurer  <dietmar@ximian.com>
23068
23069         * mini.c (mini_select_instructions): add explicit branch if the
23070         following block is not the false target of a conditional branch -
23071         we need this with any optimization that reorder or remove bblocks
23072
23073         * mini.c (optimize_branches): bug fixes
23074
23075 2003-06-06  Dietmar Maurer  <dietmar@ximian.com>
23076
23077         * mini.c (mono_method_to_ir): inline static readonly fields
23078
23079         * ssa.c (fold_tree): start cfold support for long (very simple
23080         cases only)
23081
23082         * cfold.c (mono_constant_fold_inst): opt. CEE_CONV_I8 (OP_ICONST)
23083
23084 Fri Jun 6 11:41:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
23085
23086         * inssel.brg: fixed memcpy (bug #44219).
23087
23088 2003-06-05  Dick Porter  <dick@ximian.com>
23089
23090         * driver.c: Set the glib log levels to not abort if g_message
23091         recurses.
23092
23093         g_set_prgname() has to happen before mini_init() so that the
23094         process handle gets the info.
23095         
23096 Thu Jun 5 20:11:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
23097
23098         * driver.c: add intrins to the default optimizations to get wider
23099         exposure.
23100
23101 Wed Jun 4 19:47:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
23102
23103         * mini.h: some large basic blocks will overflow a 16-bit
23104         integers for symbolic registers.
23105
23106 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
23107
23108         * mini-x86.c (mono_arch_output_basic_block): revert previous fprem changes.
23109         (mono_arch_output_basic_block): fix bug 43499 
23110
23111 Wed Jun 4 13:13:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
23112
23113         * mini.c: kill duplicated definition of mono_debug_format.
23114
23115 Wed Jun 4 13:09:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
23116
23117         * mini-x86.c, arrays.cs: fixed register allocation bug.
23118
23119 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
23120
23121         * mini-x86.c (mono_arch_output_basic_block): use IEEE compatible fprem1
23122
23123         * mini.c (mini_get_opcode_for_method): inline IEEERemainder
23124
23125 2003-06-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23126
23127         * mini.c:
23128         (print_method_from_ip): also print source location information if
23129         available.
23130
23131 2003-06-02  Dietmar Maurer  <dietmar@ximian.com>
23132
23133         * mini.c (mono_find_block_region): bug fix in region code
23134         (mini_method_compile): enable removing unreachable code again, but
23135         only in methods without exception clauses.
23136
23137 Fri May 30 18:40:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
23138
23139         * mini.c, mini-ops.h, cpu-pentium.md, inssel.brg, mini-x86.c, mini.h:
23140         Implemented arglist opcode and handling of TypedReference type.
23141         Fixed x86 call convention when a structure is returned.
23142         Minimal support for calling static vararg methods.
23143
23144 2003-05-30  Dietmar Maurer  <dietmar@ximian.com>
23145
23146         * mini.c (mini_method_compile):  always remove unreachable code,
23147         because the code in them may be inconsistent  (access to dead
23148         variables for example).
23149
23150 Thu May 29 11:44:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
23151
23152         * driver.c, debug-mini.c: warning fixes.
23153
23154 Wed May 28 11:19:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
23155
23156         * Makefile.am, jit.h, mini.h: install header for embedding mono.
23157
23158 Tue May 27 17:56:12 CEST 2003 Paolo Molaro <lupus@ximian.com>
23159
23160         * mini.c: thread-static fields are registered in mono_class_vtable(),
23161         so ensure the function is called before checking for them.
23162
23163 2003-05-27  Dietmar Maurer  <dietmar@ximian.com>
23164
23165         * mini.c (optimize_branches): fix for bug 43586
23166
23167         * jit-icalls.c (mono_llmult_ovf): added an additional check for
23168         overflow (fixes Bug #43639)
23169
23170 Tue May 27 11:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
23171
23172         * mini.c, objects.cs: allow the use of stobj for primitive types.
23173
23174 Tue May 27 10:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
23175
23176         * mini.c: be less strict about argument checking until we support
23177         running the verifier.
23178
23179 2003-05-27  Nick Drochak <ndrochak@gol.com>
23180
23181         * basic-long.cs: tests for (ulong)int * (ulong)int also
23182         * mini.c: use the same trick for (ulong)int * (ulong)int
23183
23184 2003-05-27  Nick Drochak <ndrochak@gol.com>
23185
23186         * basic-long.cs: add regression test for (long)int * (long)int
23187         * cpu-pentium.md: add op_bigmul specification
23188         * inssel-long32.brg: add OP_BIGMUL rule
23189         * mini-ops.h: add OP_BIGMUL
23190         * mini-x86.c: register allocator: handle case where src1 needs to be
23191         in EAX.
23192         * mini.c: substitute special BIGMUL opcode in the tree for 
23193         (long)int * (long)int
23194
23195 Mon May 26 20:20:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
23196
23197         * jit-icalls.c: call the type ctor on field access if needed.
23198
23199 Mon May 26 15:21:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
23200
23201         * mini-ops.h, mini.c, inssel.brg, exceptions.cs: validate arguments passed
23202         to a method (including results of ldelema, bug#43207).
23203
23204 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
23205
23206         * graph.c (cfg_emit_one_loop_level): loop over all blocks. use
23207         colors to show exception handler blocks.
23208
23209         * inssel-x86.brg (OP_OUTARG_VT): dont push zero sized structures
23210         (fix for pinvoke7.cs).
23211
23212 Mon May 26 12:11:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
23213
23214         * mini.h, mini.c: ensure correct initialization order for types that
23215         require it. Prepare for lazy compilation of jit icall wrappers.
23216         Provide a name for opcode emulation to reduce unneeded mallocing.
23217
23218 Fri May 23 16:08:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
23219
23220         * mini-x86.c: better register restoring code and profiling
23221         support for tail calls.
23222
23223 Fri May 23 15:30:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
23224
23225         * mini.h, driver.c: prepare for leaf methods optimization.
23226
23227 Fri May 23 15:28:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
23228
23229         * mini.c: get targets of branches before converting a method.
23230
23231 2003-05-23  Dietmar Maurer  <dietmar@ximian.com>
23232
23233         * mini.c (optimize_branches): added some experimental code (disbaled) 
23234
23235 2003-05-22  Dietmar Maurer  <dietmar@ximian.com>
23236
23237         * mini.c (optimize_branches): fix branch to branch optimization 
23238
23239         * exceptions-x86.c (mono_arch_handle_exception): bug fix.
23240
23241         * mini-x86.c (mono_arch_output_basic_block): cleanup up exception code
23242
23243         * inssel-x86.brg: added OP_START_HANDLER, CEE_ENDFINALLY, OP_ENDFILTER
23244
23245         * mini-x86.c (mono_arch_allocate_vars): only reserve space for lmf
23246         if needed.
23247
23248 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
23249
23250         * mini.c (mono_method_to_ir): call handle_loaded_temps before inlining.
23251         enable use of interface variables again.
23252
23253         * mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate
23254         I1 to registers because there is no simply way to sign extend 8bit
23255         quantities in caller saved registers on x86.
23256
23257         * inssel-float.brg: set costs of some rules to 2 so
23258         that monobure always select the arch. specific ones if supplied,
23259         regardless of the order we pass the files to monoburg.
23260
23261 Tue May 20 17:19:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
23262
23263         * mini.c, mini-x86.c: since the magic trampoline for jumps
23264         can't patch the code directly, we do it as soon as the
23265         method gets compiled.
23266
23267 Tue May 20 16:02:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
23268
23269         * mini-x86.c, mini.h: introduce a new patching method
23270         to support CEE_JMP and tail calls.
23271         * mini.c: obey tail.call. Don't precompile methods target
23272         of CEE_JMP.
23273         * tramp-x86.c: new trampoline code to handle methods
23274         reached through a jump.
23275
23276 2003-05-20  Dietmar Maurer  <dietmar@ximian.com>
23277
23278         * mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16
23279         bit values to registers
23280
23281 2003-05-19  Dietmar Maurer  <dietmar@ximian.com>
23282
23283         * mini.c (mono_compile_get_interface_var): share interface
23284         variables if possible.
23285
23286 2003-05-16  Martin Baulig  <martin@ximian.com>
23287
23288         * debug-mini.c (mono_init_debugger): New function to initialize
23289         the debugger.  This is not in the debugger since it needs to
23290         access some of mini's internals.
23291
23292 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
23293
23294         * mini.c (mono_method_to_ir): inlining fixes/cleanups
23295
23296 Fri May 16 13:27:23 CEST 2003 Paolo Molaro <lupus@ximian.com>
23297
23298         * mini.c, mini-opts.h, inssel.brg: inline small memcpy
23299         for value type handling.
23300
23301 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
23302
23303         * mini.c (mono_method_to_ir): inline LDFLD/STFLD wrappers
23304         (mono_method_check_inlining): enable inlining of all kinds of wrappers
23305
23306 2003-05-15  Lluis Sanchez Gual  <lluis@ideary.com>
23307
23308         * mini.c: fixed little bug in CEE_NEWOBJ case when calling
23309           the constructor through a proxy.
23310
23311 Thu May 15 17:17:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
23312
23313         * jit-icalls.c, inssel.brg: fixes to array element address
23314         calculations.
23315
23316 2003-05-15  Dietmar Maurer  <dietmar@ximian.com>
23317
23318         * mini-x86.c (is_regsize_var): allocate pointer to registers
23319
23320 Thu May 15 13:04:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
23321
23322         * driver.c: fixed typo, added intrins to the set of optimizations
23323         tested with regressions.
23324
23325 Thu May 15 11:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
23326
23327         * mini-ops.h, mini.c, inssel.brg: optimize access to 2D arrays.
23328         * jit-icalls.c, exceptions.cs: fixed index out of range checks, added
23329         test case.
23330
23331 2003-05-14  Dietmar Maurer  <dietmar@ximian.com>
23332
23333         * inssel.brg: remove some common pop instructions without side effects
23334
23335 Wed May 14 12:40:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
23336
23337         * inssel-x86.brg: fixed thinko in int to double conversions.
23338
23339 Wed May 14 12:01:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
23340
23341         * mini.c, jit-icalls.c: added runtime thread-static variable support.
23342
23343 Tue May 13 22:02:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
23344
23345         * inssel-long32.brg: two more missing instructions.
23346
23347 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
23348
23349         * mini.c (mono_emit_call_args): set the cil_code for all arguments
23350         if not already set.
23351
23352 2003-05-12  Zoltan Varga  <vargaz@freemail.hu>
23353
23354         * mini-x86.c (mono_arch_output_basic_block): Handle negative zero
23355         correctly.
23356
23357         * basic-float.cs: Added tests for negative zero.
23358
23359 Sun May 11 14:56:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
23360
23361         * inssel-long32.brg, basic-long.cs, exceptions.cs: handle
23362         a couple of missing operations for long casts, with test cases.
23363
23364 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23365
23366         * exceptions-x86.c: fixed small leaks in mono_arch_handle_exception.
23367
23368 2003-05-09  Dietmar Maurer  <dietmar@ximian.com>
23369
23370         * mini-x86.c (mono_arch_emit_prolog): avoid reallocs with better
23371         code size estimation.
23372
23373 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
23374
23375         * mini.c (mono_jit_create_remoting_trampoline): make it work with
23376         abstract methods (fix bug 42542)
23377
23378         * aot.c: add ability to handle array types
23379         
23380 2003-05-08  Zoltan Varga  <vargaz@freemail.hu>
23381
23382         * mini.c: Call the _specific versions of the object allocation
23383         functions if possible.
23384
23385 Tue May 6 17:18:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
23386
23387         * driver.c: call setlocale ().
23388
23389 Tue May 6 14:38:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
23390
23391         * mini.h, mini.c, aot.c, debug-mini.c, exceptions.c: build fixes for
23392         windows build.
23393
23394 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
23395
23396         * mini.c (optimize_branches): dont touch code inside exception clauses (fix bug 38136)
23397
23398         * exceptions-x86.c (ves_icall_get_frame_info): also skip remoting
23399         wrappers (fix bug 42122)
23400
23401 2003-05-04  Martin Baulig  <martin@ximian.com>
23402
23403         * mini.h (mono_jit_init, mono_jit_cleanup): Added prototypes.
23404
23405         * driver.c: s/MONO_OPT_SAHRED/MONO_OPT_SHARED/g.
23406         s/mini_set_defaults/mono_set_defaults/g.
23407
23408 2003-05-04  Martin Baulig  <martin@ximian.com>
23409
23410         * driver.c: s/mini_parse_default_optimizations/mono_parse_default_optimizations/g.
23411
23412 Sun May 4 11:48:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
23413
23414         * inssel-long32.brg: add missing lreg: OP_LCONV_TO_U8 (lreg) rule
23415         (reported by Don Roberts).
23416
23417 Fri May 2 18:36:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
23418
23419         * mini.c: temporarily work around two bugs for this release.
23420
23421 Fri May 2 17:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
23422
23423         * Makefile.am: avoid linking libmono with GMODULE_LIBS, because
23424         that contains -export-dynamic and it makes using the ld script
23425         useless.
23426         * mini.h, main.c, driver.c: s/mini_main/mono_main/g.
23427
23428 Fri May 2 12:52:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
23429
23430         * mini.h, mini-x86.c, driver.c: disable optimizations not available on a
23431         specific cpu.
23432
23433 Thu May 1 15:28:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
23434
23435         * mini.c: make sure leave calls all the needed finally blocks,
23436         even when the target jumps out of multiple exception clauses.
23437
23438 Thu May 1 15:18:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
23439
23440         * ldscript, Makefile.am: add linker script to reduce the number of
23441         exported symbols (should also fix the issues with libwine defining
23442         some of the same symbols in io-layer).
23443
23444 2003-05-01  Zoltan Varga  <vargaz@freemail.hu>
23445
23446         * driver.c (mini_main): Avoid assertion when no file name is given on 
23447         the command line.
23448
23449 Wed Apr 30 15:33:11 CEST 2003 Paolo Molaro <lupus@ximian.com>
23450
23451         * driver.c: added --version/-V command line option.
23452         Added the inline optimization in the regression tests.
23453
23454 Wed Apr 30 15:16:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
23455
23456         * mini.c, basic-calls.cs: when inlining, save arguments to locals according 
23457         to the type in the method signature (fixes bug#42134).
23458
23459 Wed Apr 30 12:38:44 CEST 2003 Paolo Molaro <lupus@ximian.com>
23460
23461         * mini.c: when inlining, check this is not null only when needed (bug #42135).
23462
23463 Wed Apr 30 11:44:36 CEST 2003 Paolo Molaro <lupus@ximian.com>
23464
23465         * mini-ppc.h, tramp-pcc.c: type fixes from Max Horn <max@quendi.de>.
23466
23467 2003-04-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23468
23469         * driver.c: fixed bug #42100.
23470
23471 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
23472
23473         * mini.c (mono_method_to_ir): UNBOX need to CAST objects first
23474
23475 Mon Apr 28 17:03:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
23476
23477         * mini.c: moved most of the code required to do inlining to its own
23478         function so it can be reused. Inline also ctors if appropriate.
23479
23480 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
23481
23482         * Makefile.am: Link with -export-dynamic so shared libs loaded by
23483         the runtime can call mono API functions.
23484
23485 2003-04-27  Martin Baulig  <martin@ximian.com>
23486
23487         * debug-mini.c (mono_debug_init_method): Added
23488         `guint32 breakpoint_id' argument; if the method has a breakpoint,
23489         send a notification to the debugger.
23490
23491         * mini.c (mono_method_to_ir): Don't insert a breakpoint if we're
23492         running in the Mono Debugger, just pass the breakpoint number to
23493         mono_debug_init_method().
23494
23495         * tramp-x86.c, tramp-ppc.c: Removed the breakpoint trampolines.
23496
23497 Sun Apr 27 13:18:04 CEST 2003 Paolo Molaro <lupus@ximian.com>
23498
23499         * mini.c: allow some more unsafe compares.
23500
23501 Sat Apr 26 11:55:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
23502
23503         * mini-x86.c, Makefile.am: make distcheck works (partially from
23504         a patch by Richard Lee <r.h.lee@attbi.com>).
23505         * regset.c, regset.h: removed, they are unused.
23506
23507 2003-04-25  Dick Porter  <dick@ximian.com>
23508
23509         * driver.c: Usage reports the name as 'mono' not 'mini'
23510         * exceptions-x86.c: Build and run on freebsd
23511
23512 Thu Apr 24 17:09:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
23513
23514         * Makefile.am: install the program with the 'mono' name and
23515         the library as libmono instead of mini and libmini.
23516
23517 Thu Apr 24 17:08:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
23518
23519         * driver.c: provide the APIs for the embedding interface of the old jit.
23520
23521 2003-04-23  Dietmar Maurer  <dietmar@ximian.com>
23522
23523         * jit-icalls.c (helper_stelem_ref): impl. (fix bug 41775)
23524
23525 2003-04-23  Martin Baulig  <martin@ximian.com>
23526
23527         * tramp-x86.c, tramp-ppc.c: Reenable the debugger breakpoint interface.
23528
23529         * driver.c: Added `--debug' command line argument to enable
23530         debugging support.
23531
23532 2003-04-23  Martin Baulig  <martin@ximian.com>
23533
23534         * debug.[ch]: Removed.  The code is now in
23535         ../metadata/mono-debug.[ch] and mono-debug-debugger.[ch].
23536
23537         * debug-stabs.c, debug-dwarf2.c: Removed; nobody used this for the
23538         last six months.
23539
23540 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
23541
23542         * mini.c (mono_method_to_ir): set the cil_code address (fix bug 41525)
23543
23544 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23545
23546         * mini.c:
23547         (mini_cleanup): moved mono_runtime_cleanup call after the call to
23548         mono_domain_finalize.
23549         (mini_method_compile): use mono_method_profile* if the the option is
23550         enabled.
23551
23552 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
23553
23554         * tramp-x86.c (mono_arch_create_jit_trampoline): Subsitute synchronized
23555         methods with their wrapper.
23556
23557         * tramp-ppc.c (mono_arch_create_jit_trampoline): Subsitute synchronized
23558         methods with their wrapper.
23559
23560         * jit-icalls.c (mono_ldvirtfn): Subsitute synchronized methods with
23561         their wrapper.
23562
23563         * mini.c (mono_method_to_ir): Subsitute synchronized methods with their
23564         wrapper.
23565
23566         * mini.c (mono_method_check_inlining): Avoid inlining synchronized
23567         methods.
23568
23569 2003-04-17  Dietmar Maurer  <dietmar@ximian.com>
23570
23571         * exceptions-x86.c (mono_arch_handle_exception): fix for bug 36252
23572
23573 2003-04-16  Dietmar Maurer  <dietmar@ximian.com>
23574
23575         * mini.c (mono_compile_create_var): use g_malloc/g_realloc instead
23576         of the mempool. This is slightly faster and uses less memory
23577
23578 Wed Apr 16 12:53:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
23579
23580         * mini.c: avoid O(n) allocation for variables.
23581
23582 Tue Apr 15 19:13:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
23583
23584         * mini.c: handle items on the stack after inlining methods.
23585
23586 Tue Apr 15 14:17:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
23587
23588         * mini.c: make the method->opcode optimization dependent
23589         on MONO_OPT_INSTRINS and do it lazily.
23590
23591 Tue Apr 15 14:15:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
23592
23593         * driver.c: print overall results at the end of regression run.
23594
23595 Tue Apr 15 11:18:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
23596
23597         * inssel.brg: don't overwrite symbolic registers.
23598
23599 Mon Apr 14 17:41:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
23600
23601         * inssel-x86.brg: fix conversion from long to float.
23602
23603 2003-04-11  Dietmar Maurer  <dietmar@ximian.com>
23604
23605         * mini.c (mini_init): use an opcode for get_Chars (OP_GETCHR)
23606
23607 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
23608
23609         * mini.c (mono_type_blittable): MONO_TYPE_OBJECT is blittable.
23610
23611         * driver.c: Added --print-vtable option as in the old JIT.
23612
23613 Thu Apr 10 17:43:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
23614
23615         * inssel-long32.brg, exceptions.cs: fix conversions from long, too.
23616
23617 Thu Apr 10 16:27:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
23618
23619         * inssel.brg, basic.cs: fixed checked conversions to byte and short.
23620
23621 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
23622
23623         * mini.c regalloc.c regalloc.h: Fix memory leak.
23624
23625 2003-04-09  Dietmar Maurer  <dietmar@ximian.com>
23626
23627         * aot.c (mono_aot_get_method): register all used strings
23628
23629 Wed Apr 9 15:22:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
23630
23631         * mini.c: always intern strings references with ldstr at compile time.
23632
23633 Tue Apr 8 11:41:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
23634
23635         * Makefile.am: add BUILT_SOURCES.
23636
23637 Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
23638
23639         * driver.c: give a better error message when the assembly to execute
23640         doesn't have an entry point.
23641
23642 2003-04-07  Dietmar Maurer  <dietmar@ximian.com>
23643
23644         * Makefile.am: added hack for automake
23645
23646         * mono/mini/mini.c (mono_save_args): always copy arguments to keep
23647         correct sematics.
23648
23649         * mono/mini/ssa.c (mono_ssa_avoid_copies): don't optimize calls
23650
23651 22003-04-07  Martin Baulig  <martin@ximian.com>
23652
23653         * Makefile.am: Added Makefile.am.
23654
23655         * debugger-main.c: Removed, this is now in the debugger where it
23656         belongs.
23657
23658         * mini.pc.in: Call this package `mini' for the moment.
23659
23660
23661
23662
23663
23664
23665
23666
23667
23668
23669
23670
23671
23672
23673