2010-01-27 Zoltan Varga <vargaz@gmail.com>
[mono.git] / mono / mini / ChangeLog
1 2010-01-27  Zoltan Varga  <vargaz@gmail.com>
2
3         * mini-amd64.c: Make the soft debugger work on platforms without MAP_32BIT.
4         Fixes #573988.
5
6 2010-01-26  Zoltan Varga  <vargaz@gmail.com>
7
8         * dwarfwriter.c (emit_type): Treat MONO_TYPE_PTR as 'I' not 'I4'.
9
10 2010-01-26  Geoff Norton  <gnorton@novell.com>
11
12         * aot-compiler.c: Fix a logic error introduced when guarding against enums
13         with struct marshalability.
14
15 2010-01-24  Zoltan Varga  <vargaz@gmail.com>
16
17         * mini.c (mini_method_compile): Improve the processing MONO_VERBOSE_METHOD so
18         it supports class names as well.
19
20         * mini.h (MonoCompile): Add a few flags to control JIT behavior which are
21         needed by the GC map code.
22
23         * mini.c (mini_method_compile): Call a function in mini-gc.c to set the new
24         flags if needed.
25
26         * method-to-ir.c (mono_method_to_ir): Emit initialization code for ref variables
27         if cfg->init_ref_vars is set.
28
29         * liveness.c (optimize_initlocals): Disable the initlocals opt for ref vars if
30         cfg->disable_initlocals_op_refs is set.
31
32         * method-to-ir.c (mono_spill_global_vars): Compute more precise live ranges
33         using liveness info if cfg->compute_precise_live_ranges is set.
34
35         * mini-gc.c: Ongoing work. Improve logging and debugging support. Handle
36         volatile variables correctly. Add comments about the live ranges. Not enabled
37         yet.
38
39 2010-01-24  Zoltan Varga  <vargaz@gmail.com>
40
41         * mini.h (MonoDebugOptions): Add an option to init stack frames by writing
42         0x2a into them in method prologs.
43
44         * mini-amd64.c (mono_arch_emit_prolog): Implement it.
45
46 2010-01-22  Zoltan Varga  <vargaz@gmail.com>
47
48         * mini-llvm-cpp.cpp: Remove uses of dynamic_cast, it no longer works with llvm
49         classes, since llvm is compiled with -fno-rtti.
50
51         * mini.h (COMPILE_SOFT_FLOAT): New macro, similar to COMPILE_LLVM.
52
53         * method-to-ir.c ir-emit.h: Use if (COMPILE_SOFT_FLOAT) in a few places since
54         llvm does not require it.
55
56         * aot-runtime.c (load_method): Print the full name of the last aot method.
57
58 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
59
60         * exceptions-amd64.c (mono_arch_notify_pending_exc): Avoid a crash if the
61         thread has not fully started yet.
62
63 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
64
65         * aot-compiler.c (can_marshal_struct): Allow marshalling enums.
66
67 2010-01-21  Miguel de Icaza  <miguel@novell.com>
68
69         * driver.c: Do not abort if LLVM is not supported, print a
70         warning and add the information to the Mono JIT information.
71
72 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
73
74         * ir-emit.h (MONO_EMIT_NULL_CHECK): Don't emit an OP_IMPLICIT_EXCEPTION when
75         using explicit null checks.
76
77 2010-01-20  Zoltan Varga  <vargaz@gmail.com>
78
79         * xdebug.c: New file extracted from aot-compiler.c, containing the XDEBUG
80         related code.
81
82         * aot-compiler.c (encode_method_ref): Use mono_marshal_wrapper_info_from_wrapper
83         () in one place.
84         (mono_aot_wrapper_name): Remove the special handling of delegate invoke wrappers,
85         its no longer needed.
86
87         * method-to-ir.c (mono_method_to_ir): Fix a warning.
88
89         * exceptions-<ARCH>.c: Introduce a MONO_ARCH_HAVE_THROW_EXCEPTION_BY_NAME
90         define for platforms still using it (s390). Get rid of the
91         mono_arch_get_throw_exception_by_name () routines on all other platforms.
92
93         * exceptions-x86.c: Rework the throw trampolines so there is only one function
94         which can generate throw/rethrow/corlib trampolines for llvm/not llvm code.
95
96         * exceptions-x86.c: Add LLVM specific throw trampolines which doesn't assume
97         the caller pushed the arguments.
98
99         * mini-llvm.c: Enable throwing exceptions on x86.
100
101         * mini-posix.c (SIG_HANDLER_SIGNATURE): Avoid
102         "Thread (nil) may have been prematurely finalized" messages if this is called
103         on a thread not registered with the runtime.
104
105         * mini-exceptions.c (mono_handle_native_sigsegv): Ditto.
106
107 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
108
109         * jit-icalls.c (mono_array_new_3): New jit icall.
110
111         * aot-compiler.c aot-runtime.c: Add support for ElementAddr wrappers.
112
113         * arrays.cs: Add a test for 3 dimensional arrays.
114
115 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
116
117         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Emit xdebug info.
118         (mono_arch_find_jit_info_ext): Disable the popping of arguments when LLVM is
119         used.
120
121         * mini-llvm.c (emit_cond_system_exception): Abort when an implicit exception is
122         thrown on x86.
123
124         * unwind.c (mono_unwind_decode_fde): Fix an assert on x86.
125
126         * mini-x86.h (MONO_CONTEXT_SET_LLVM_EXC_REG): Define this for x86.
127
128         * mini-llvm.c: Disable OP_THROW on x86, it doesn't work yet.
129
130 2010-01-18  Bill Holmes  <billholmes54@gmail.com>
131
132         * debugger-agent.c : Changing the PLATFORM_WIN32 preprocessor check to
133           HOST_WIN32.  Also including winsock2. to define struct in_addr.
134
135         * mini-amd64.h : Changing the PLATFORM_WIN32 preprocessor check to HOST_WIN32.
136
137         * mini-x86.h : Changing the PLATFORM_WIN32 preprocessor check to HOST_WIN32.
138
139         Code is contributed under MIT/X11 license.
140
141 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
142
143         * mini.h (MonoCompile): Add 'disable_out_of_line_bblocks' flag.
144
145         * branch-opts.c (mono_optimize_branches): Honor the new flag.
146
147         * mini.c (mini_method_compile): Set the new flag when running under the
148         debugger.
149
150 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
151
152         * mini-gc.c: Change the GC map to use a ref/noref/pin value instead of just
153         a ref/noref value + a global pin flag, so parts of stack frames can still be
154         precisely marked even if they include stuff which needs pinning. Improve logging.
155         Fix many bugs. Not enabled yet.
156
157         * gc-test.cs: Add a few tests.
158
159         * liveness.c (mono_analyze_liveness): Make the debug output controllable by
160         the normal -v options. Avoid propagating liveness information through bblocks
161         which end with a NOT_REACHED opcode.
162
163         * mini.c (mono_jit_compile_method_inner): Avoid reading cfg->prof_options
164         after cfg has been freed.
165
166 2010-01-17  Zoltan Varga  <vargaz@gmail.com>
167
168         * branch-opts.c (mono_branch_optimize_exception_target): Stop the optimization
169         if a clause is skipped because it uses the exception object, since it could
170         have caught the exception.
171
172         * exceptions.cs: Add a test.
173
174 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
175
176        * mini-trampolines.c (mono_create_static_rgctx_trampoline): Add an assert.
177
178         * aot-runtime.c (mono_aot_get_method): Handle ftnptr's correctly for the
179         ICollection<T> wrappers.
180
181 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
182
183         * debugger-agent.c (decode_value): Fix the decoding of I/U/PTR.
184
185 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
186
187         * mini-amd64.c (emit_call_body): Always use near calls when AOTing even if
188         NOMAP32BIT or optimize_for_xen is set.
189
190 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
191
192         * aot-compiler.c aot-runtime.c: Get rid of mono_aot_str_hash (), use
193         mono_metadata_str_hash () instead.
194
195 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
196
197         * ir-emit.h (MONO_EMIT_NEW_ICOMPARE_IMM): Use sizeof (mgreg_t) instead of
198         sizeof (void*).
199
200         * unwind.c (mono_unwind_frame): Use mgreg_t instead of gssize.
201
202 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
203
204         * ir-emit.h (MONO_EMIT_NEW_CHECK_THIS): Emit an explicit null check if the
205         flag is set.
206
207         * mini-ppc.c (mono_arch_emit_exceptions): Compute the size of the exception
208         throwing code correctly.
209
210         * mini.h (MONO_AOT_FILE_VERSION): Bump this because of the IMT hashing changes.
211
212 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
213
214         * aot-runtime.c (mono_aot_plt_resolve): Reenable the previous assert for
215         ftnptrs created by us, handle RGCTX_FETCH correctly.
216         (mono_aot_get_lazy_fetch_trampoline): Add an ftnptr.
217
218         * mini-trampolines.c (mono_create_generic_class_init_trampoline): Remove the
219         ftnptr added by mono_aot_get_named_code ().
220
221 2010-01-14  Zoltan Varga  <vargaz@gmail.com>
222
223         * mini-arm.c: Fix a few LLVM problems.
224
225         * mini-llvm.c (simd_class_to_llvm_type): Fix compilation on !x86/amd64.
226
227 2010-01-13  Mark Probst  <mark.probst@gmail.com>
228
229         * method-to-ir.c (mini_emit_stobj): Use EMIT_NEW_CLASSCONST when
230         AOT compiling.
231
232 Wed Jan 13 15:54:53 CET 2010 Paolo Molaro <lupus@ximian.com>
233
234         * jit.h, method-to-ir.c: added ability to set the policy for
235         inserting breakpoints from the break IL instruction or the
236         Debugger.Break () API call.
237
238 2010-01-13  Zoltan Varga  <vargaz@gmail.com>
239
240         * aot-runtime.c (load_aot_module): Add more comments to explain why referenced
241         assemblies need to be eagerly loaded.
242
243 2010-01-12  Zoltan Varga  <vargaz@gmail.com>
244
245         * dwarfwriter.c (emit_line_number_info): Fix the eglib case so it doesn't crash.
246
247 2010-01-11  Zoltan Varga  <vargaz@gmail.com>
248
249         * debugger-agent.c (mono_debugger_agent_parse_options): Allow onthrow without
250         an argument which matches any exception.
251
252 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
253
254         * method-to-ir.c (mono_emit_method_call_full): Avoid the virt->nonvirt
255         optimization if the called method is gshared and marshalbyref, since gshared
256         methods can' have wrappers. Fixes #569390.
257
258         * generics.cs: Add a test.
259
260 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
261
262         * mini-exceptions.c (mono_print_thread_dump_from_ctx): New helper function
263         callable from gdb.
264
265 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
266
267         * mini.c (mono_print_method_from_ip): Fix the lookup of trampolines.
268
269 2010-01-09  Zoltan Varga  <vargaz@gmail.com>
270
271         * debugger-agent.c (transport_connect): comment out freeaddrinfo calls under win32,
272         since it is not supported in win2000.
273
274 2010-01-08  Zoltan Varga  <vargaz@gmail.com>
275
276         * aot-runtime.c (load_image): Add a SET_ERROR argument to set the loader
277         error if loading an assembly fails.
278         (mono_aot_plt_resolve): Return NULL instead of asserting if loading fails.
279
280         * mini-trampolines.c (mono_aot_plt_trampoline): Throw a pending loader error
281         if exists.
282
283         * aot-runtime.c (decode_exception_debug_info): Set jinfo->from_llvm for LLVM
284         compiled methods.
285
286         * mini-llvm-cpp.cpp: Remove the unused ctx variable.
287
288         * mini-llvm.c (mono_llvm_emit_method): Add some comments about why aot+clauses
289         is not supported yet.
290
291         * unwind.c (DW_EH_PE_absptr): Add more DW_EH_PE_ constants.
292
293 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
294
295         * method-to-ir.c: All types with variant arguments must fallback to the
296         slow path. This makes cast of variant delegates work.
297
298         * mini-trampolines.c (mono_get_vcall_slot_addr): Add new variance_used out
299         argument that is set to TRUE is the returned vtable slot is for a variant
300         interface. Changed a g_print + g_assert_not_reached to a g_error.
301
302         * mini-trampilines.c (common_call_trampoline): Handle variant interfaces in
303         a similar fashion of generic virtual methods.
304
305 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
306
307         * helpers.c (mono_disassemble_code): Fix a g_hash_table warning
308         when cfg is null.
309
310         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Convert a given
311         method using a variance aware function.
312
313         * mini-x86.c: Add support for dumping IMT thunks if DEBUG_IMT is defined.
314
315 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
316
317         * method-to-ir.c (mono_method_to_ir): Casts to variant interfaces
318         do an icall for now.
319
320 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
321
322         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add an ugly hack to fix #564695.
323         If LLVM decides to set the code model to Large, reset it to Default.
324
325 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
326
327         * aot-compiler.c (mono_xdebug_flush): Export it so it is present in
328         stripped binaries as well.
329
330 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
331
332         * mini-trampolines.c (common_call_trampoline): Add an rgctx trampoline if a shared
333         method is called from LLVM compiled code, as that code can't pass an rgctx arg.
334
335         * mini-llvm.c (mono_llvm_emit_method): Enable calls to methods needing an rgctx
336         reg.
337
338 2010-01-06  Zoltan Varga  <vargaz@gmail.com>
339
340         * mini.c (mini_method_compile): Extract the JIT info creation code into a
341         separate function.
342
343         * mini-llvm.c (mono_llvm_emit_method): Pass the info in MonoExceptionClause
344         as the type info to llvm.eh.selector.
345         (exception_cb): Use the type info for filling out some fields of
346         MonoJitExceptionInfo like the flags and the exception class. This is needed
347         because the LLVM produced exception handling clauses might not match the original
348         IL clauses, i.e. there might be more than one LLVM clause for one IL clause.
349
350         * unwind.c (mono_unwind_decode_fde): Extract the LSDA decoding code into a
351         separate function. Add an extra argument which returns the type infos
352         corresponding to the exception clauses.
353
354         * mini.c (mini_method_compile): Enable LLVM compilation of methods having
355         exception handling clauses.
356
357 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
358
359         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call
360         mono_method_get_vtable_slot () instead of accessing imt_method->slot directly,
361         to fix an AOT case.
362
363 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
364
365         * mini.c (mono_compile_is_broken): Skip methods from serialization's
366         internal assembly.
367
368 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
369
370         * mini.c (mini_method_compile): Fix a few memory leaks introduced by the
371         llvm code.
372
373 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
374
375         * mini.c (mini_method_compile): Verify the method before calling
376         mono_compile_create_vars as this might crash since it uses method
377         information.
378
379         Fixes #560196.
380
381 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
382
383         * method-to-ir.c (mono_method_to_ir): Avoid calling mono_class_vtable () in
384         one case if AOTing, since the class might not be a concrete class.
385
386 2010-01-03  Zoltan Varga  <vargaz@gmail.com>
387
388         * mini-codegen.c abcremoval.c: Remove the duplicate g_slist_append_mempool
389         functions which are now defined in mempool-internals.h.
390
391         * mini.c (mini_free_jit_domain_info): Free the seq point hash tables.
392
393         * mini-llvm.c (mono_llvm_emit_method): Handle OP_ABS.
394
395 2009-12-30  Rodrigo Kumpera  <rkumpera@novell.com>
396
397         * mini.c:
398         * method-to.ir.c:
399         * mini-*.c: Properly handle generic enums.
400
401         Fixes #566294
402
403 2009-12-28  Zoltan Varga  <vargaz@gmail.com>
404
405         * method-to-ir.c (mono_method_to_ir): Handle the failure of mono_class_vtable ()
406         in a few more places.
407
408 2009-12-27  Zoltan Varga  <vargaz@gmail.com>
409
410         * aot-compiler.c (add_wrappers): Don't use dyn runtime invoke for methods with
411         nullable parameters. Fixes #567351.
412
413 2009-12-26  Rodrigo Kumpera  <rkumpera@novell.com>
414
415         * mini-trampolines.c (common_call_trampoline): Add assert for NULL resolved generic method.
416
417 2009-12-26  Zoltan Varga  <vargaz@gmail.com>
418
419         * mini-trampolines.c: Use mono_arch_get_this_arg_from_call () to avoid the slow
420         mono_get_generic_context_from_code () call.
421
422         * mini-<ARCH>.c: Get rid of mono_arch_find_this_arg (), it is no longer used.
423
424 2009-12-25  Zoltan Varga  <vargaz@gmail.com>
425
426         * aot-runtime.c (decode_klass_ref): Don't call mono_class_init (), its not
427         needed.
428
429 2009-12-24  Sebastien Pouliot  <sebastien@ximian.com>
430
431         * method-to-ir.c (mono_method_to_ir): Avoid SIGSEGV when
432         mono_method_get_signature returns NULL. Fix #567084
433
434 2009-12-25  Zoltan Varga  <vargaz@gmail.com>
435
436         * aot-runtime.c (find_extra_method): Call mono_aot_wrapper_name only once,
437         instead of once for each module.
438
439 2009-12-22  Zoltan Varga  <vargaz@gmail.com>
440
441         * debugger-agent.c (ss_start): Implement step over for the last sequence
442         point in methods.
443
444         * mini.c (mono_save_seq_point_info): Don't link sequence points which don't
445         have the STEP_LOC flag set.
446
447         * aot-runtime.c (decode_klass_ref): Avoid a crash if a decode_klass_ref () call
448         fails. Fixes #566689.
449
450 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
451
452         * mini.c (mono_add_seq_point): New helper function.
453         (mono_save_seq_point_info): New function to save sequence point info, extracted
454         from mini_method_compile ().
455
456         * mini-<ARCH>.c: Call mono_add_seq_point to remember sequence points.
457
458         * mini.h (MonoSeqPointInfo): New structure containing information about
459         the sequence points of a JITted method.
460         (MonoBasicBlock): Add 'seq_points' and 'last_seq_point' fields. Remove unused
461         'bucket' field.
462
463         * mini.c debugger-agent.c aot-compiler.c aot-runtime.c: Change the way sequence
464         point information is stored, use a MonoSeqPointInfo structure instead of a
465         GPtrArray. For each seq point, compute a list of successor seq points.
466
467         * debugger-agent.c: Use the successor list to implement step-over more
468         efficiently: instead of single stepping until a different line/IL offset is
469         reached, place breakpoints into all successor seq points.
470
471         * mini.h: Bump AOT file format version.
472
473 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
474
475         * Makefile.am (AM_CFLAGS): Include LLVM_CFLAGS.
476
477         * mini-llvm.c: Avoid defining the __STDC_... macros if already defined.
478
479 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
480
481         * exceptions-ppc.c (mono_ppc_set_func_into_sigctx): Fix the cross-compiler
482         build.
483
484 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
485
486         * mini-x86.c (mono_arch_get_argument_info): Allocate memory for CallInfo using
487         alloca as g_malloc is not signal safe.
488
489 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
490
491         * tramp-x86.c (mono_arch_patch_callsite): Fix the call to
492         VALGRIND_DISCARD_TRANSLATIONS.
493
494         * *.c: Include mono/utils/memcheck.h, and remove #ifdef HAVE_VALGRIND_MEMCHECK_H
495         checks, they are no longer needed.
496
497         * exceptions-ppc.c (mono_ppc_set_func_into_sigctx): New helper function to set
498         a function into a sigctx which can handle function pointers.
499
500         * mini-ppc.c: Implement soft debugger support on ppc64.
501
502         * mini-ppc.c: Implement soft debugger support.
503
504 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
505
506         * mini-llvm.c: Handle OP_LADD_OVF_UN. Place all alloca's into the entry bb.
507
508 2009-12-17  Marek Habersack  <mhabersack@novell.com>
509
510         * mini.c (mono_get_runtime_build_info): include Mono version in
511         the returned value.
512
513         * driver.c (mono_main): VERSION is now included in the string
514         returned from mono_get_runtime_build_info()
515
516 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
517
518         * method-to-ir.c (mono_method_to_ir): Add support for CALLI with unmanaged
519         signatures. Fixes #565143.
520
521         * jit-icalls.c (mono_get_native_calli_wrapper): New JIT icall.
522
523 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
524
525         * aot-compiler.c (arch_emit_autoreg): Align code to 4 in the ppc case.
526
527 2009-12-16 Rodrigo Kumpera  <rkumpera@novell.com>
528
529         * mini-x86.h: Forgot to add a 0x to MONO_ARCH_MAX_FRAME_SIZE define
530         making max stack 10x smaller.
531
532 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
533
534         * mini.c (mono_resolve_patch_target): Comment out an assert which could be hit.
535
536 2009-12-15 Rodrigo Kumpera  <rkumpera@novell.com>
537
538         * method-to-ir.c (mini_emit_memcpy): Assert if size is too big.
539
540 2009-12-15 Rodrigo Kumpera  <rkumpera@novell.com>
541
542         * mini-x86.c (mono_arch_allocate_vars): Fail compilation if the frame size is
543         bigger than MONO_ARCH_MAX_FRAME_SIZE.
544
545         * mini-x86.c (mono_arch_emit_prolog): Handle huge frames.
546
547         * mini-x86.h: Define MONO_ARCH_MAX_FRAME_SIZE to be 1Mb.
548
549         * mini-amd64.c / mini-amd64.h: Same fixes as of above.
550
551         * mini.c (mini_method_compile): Check if mono_arch_allocate_vars failed
552         the compilation.
553
554 2009-12-14  Miguel de Icaza  <miguel@novell.com>
555
556         * method-to-ir.c (mono_method_to_ir): CEE_UNUSUED opcodes now
557         raise an invalid program exception.   
558
559         For other opcodes that we might not handle use a g_warning and
560         raise the exception.   Beats termination.
561
562         Fixes #561724
563
564 2009-12-14  Zoltan Varga  <vargaz@gmail.com>
565
566         * method-to-ir.c (mono_emit_rgctx_method_call_full): Fix a warning.
567
568         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix the LLVM support
569         by merging the LLVM and !MAP_32BIT cases.
570
571 2009-12-13 Jonathan Chambers <joncham@gmail.com>
572
573         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Handle a NULL
574         sigctx being passed in, as we have no CONTEXT available in the APC.
575
576         (mono_debugger_agent_cleanup): Use explicit cond wait implementation
577         for now.
578
579         Code contributed under MIT/X11 license.
580
581 2009-12-13  Zoltan Varga  <vargaz@gmail.com>
582
583         * method-to-ir.c mini-llvm.c: Fix support for monitor enter/exit trampolines
584         in the LLVM backend on AMD64.
585
586         * aot-runtime.c (decode_eh_frame): Initialize the clauses from the info in the
587         FDE.
588
589         * unwind.c (mono_unwind_decode_fde): Implement decoding of a couple more formats.
590
591         * mini-llvm.c: Export mono_personality for AOT.
592
593         * mini.c (mini_method_compile): Fix some problems with llvm+aot+clauses.
594
595         * mini-ops.h (OP_IMPLICIT_EXCEPTION): New opcode marking the place where an
596         implicit exception can occur.
597
598         * ir-emit.h (MONO_EMIT_NEW_IMPLICIT_EXCEPTION): New macro to emit an
599         OP_IMPLICIT_EXCEPTION instruction.
600
601         * ir-emit.h (MONO_EMIT_NEW_CHECK_THIS): New macro.
602
603         * method-to-ir.c: Use MONO_EMIT_NEW_CHECK_THIS in a few places.
604
605         * mini-llvm.c: Handle OP_IMPLICIT_EXCEPTION by disabling llvm if it occurs
606         inside a protected block.
607
608         * mini-llvm.c: Revert the last change, the signature of monitor entry/exit
609         trampolines doesn't include the argument.
610
611         * mini-llvm.c (mono_llvm_emit_method): Enable calls to monitor entry/exit
612         trampolines on amd64.
613
614         * mini-amd64.h (MONO_ARCH_MONITOR_OBJECT_REG): Use MONO_AMD64_ARG_REG1 instead
615         of RDI.
616
617         * mini.c (mini_method_compile): Add some comments as to why LLVM is currently
618         disabled for methods with clauses.
619
620         * mini-llvm.c: Enable support for catch clauses.
621
622         * mini-exceptions.c (mono_resume_unwind): New function to resume unwinding at the
623         end of an LLVM compiled finally clause.
624         (mono_handle_exception_internal): Save the exception handling state in TLS
625         before calling an LLVM compiled finally clause, so mono_resume_unwind () can
626         resume unwinding from that point.
627
628         * unwind.c (mono_unwind_get_ops_from_fde): Rename this to
629         mono_unwind_decode_fde, decode the Language Specific Data Area (LSDA) too,
630         to obtain the addresses of the exception handling regions.
631
632         * mini-llvm.c: Add beginnings of support for exception handling, currently only
633         finally clauses are supported.
634
635         * mini.c (mini_method_compile): Add support for LLVM code with exception
636         handlers.
637
638 2009-12-12  Zoltan Varga  <vargaz@gmail.com>
639
640         * mini-llvm.c (mono_llvm_emit_method): Allocate the 'pindexes' array with the
641         proper size.
642
643 2009-12-12  Zoltan Varga  <vargaz@gmail.com>
644
645         * debugger-agent.c: Encode the this argument of vtype methods as a struct, not
646         as a primitive type.
647
648 2009-12-11  Zoltan Varga  <vargaz@gmail.com>
649
650         * driver.c: Applied patch from Matt McClellan (matt@mc-c.net). Add a check
651         for 2 parameter sched_setaffinity in older glibc versions. Fixes
652         #564000.
653
654 2009-12-11  Marek Habersack  <mhabersack@novell.com>
655
656         * method-to-ir.c (mini_redirect_call): do not redirect the
657         InternalAllocateStr internal call if string profiling is enabled.
658
659 2009-12-10  Zoltan Varga  <vargaz@gmail.com>
660
661         * aot-compiler.c (add_wrappers): Avoid generating synchronized wrappers for
662         generic methods.
663
664         * unwind.h: Rename this to mini-unwind.h to avoid conflicts with the gcc
665         unwind.h header file.
666
667         * tramp-x86.c (mono_arch_patch_callsite): Patch the code when using valgrind,
668         newer valgrind versions seems to handle this fine.
669
670 2009-12-09  Zoltan Varga  <vargaz@gmail.com>
671
672         * debugger-agent.c (start_runtime_invoke): Fix a crash if this is called
673         on the debugger thread.
674
675 2009-12-08  Zoltan Varga  <vargaz@gmail.com>
676
677         * mini-llvm.c (mono_llvm_emit_method): Add more SIMD opcodes.
678
679         * mini.c (mono_print_method_from_ip): Fix the lookup of trampolines.
680
681         * mini-codegen.c (mono_local_regalloc): Allow non-call opcodes with cloc:c.
682
683         * cpu-<ARCH>.md: Make call_handler clob:c.
684
685         * mini.c: Reenable SSA for methods with clauses.
686
687         * mini.c (mini_method_compile): Disable SSA for now for methods with clauses,
688         as it causes failures on x86.
689
690 2009-12-08  Sebastien Pouliot  <sebastien@ximian.com>
691
692         * driver.c: Fail gracefully with --compile-all if mono_method_signature
693         returns NULL (e.g. a bad assembly).
694
695 2009-12-08  Geoff Norton  <gnorton@novell.com>
696
697         * debugger-agent.c:  Refactor the mono_runtime_invoke guarding against
698         stepping out into native code.  There were issues with nested invokes
699         like .cctors.
700
701 2009-12-07  Zoltan Varga  <vargaz@gmail.com>
702
703         * mini.c (mini_method_compile): Do the disable_llvm checks early
704         and avoid the LLVM compile pass if the checks fail.
705
706         * mini.c ssa.c abcremoval.c: Enable SSA for methods with exception clauses.
707
708         * mini-llvm.c: Put our methods/globals into the 'llvm.used' array, so the
709         LLVM optimizations don't try to remove them.
710
711         * aot-compiler.c (emit_llvm_file): Save the result of opt into a
712         different file so the original remains.
713
714 2009-12-06  Zoltan Varga  <vargaz@gmail.com>
715
716         * mini-llvm.c mini.c: Fix alignment issues with SIMD vars.
717
718         * aot-runtime.c (decode_arm_exidx): Handle most descriptors created by gas.
719
720         * aot-runtime.c (decode_arm_exidx): Refactor this into two functions, add
721         support for non-inline unwind descriptors.
722
723 2009-12-07  Geoff Norton  <gnorton@novell.com>
724
725         * debugger-agent.c:  Darwin can colesce signals, so we need to handle
726         the interrupt_count slightly differently.  Native threads were never
727         marked as resumed.
728
729 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
730
731         * aot-runtime.c (decode_arm_exidx): New function to initialize a MonoJitInfo
732         based on the contents of the ARM .exidx section. Not yet used since llvm doesn't
733         yet generate this info.
734
735         * mini-llvm.c: Fix the conversion of call results if they are unsigned.
736
737         * debugger-agent.c (buffer_add_value): Treat I/U as a valuetype, so the
738         client can distinguish between intptrs and longs.
739
740 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
741
742         * aot-compiler.c (emit_trampoline): Emit the trampoline info into the global
743         blob.
744
745         * aot-runtime.c (load_function): Update after the change above.
746
747         * mini.h: Bump AOT file format version.
748
749         * method-to-ir.c (mono_method_to_ir): Disallow the delegate optimization
750         if the delegate class is dynamic.
751
752         * method-to-ir.c (handle_delegate_ctor): Allow the method_code optimization
753         in gshared code too using the new rgctx info type
754         MONO_RGCTX_INFO_METHOD_DELEGATE_CODE.
755
756 2009-12-04  Geoff Norton  <gnorton@novell.com>
757
758         * debugger-agent.c: When doing a func-eval invoke on a suspended runtime,
759         we need to track the original suspend count so the thread properly
760         wakes up in resume_thread.
761
762 2009-12-04  Zoltan Varga  <vargaz@gmail.com>
763
764         * method-to-ir.c (handle_delegate_ctor): Add support for using this from gshared
765         code.
766
767         * generics.cs: Add a test.
768
769         * method-to-ir.c (emit_get_rgctx_method): Make this work even if context_used
770         is 0. Simplify a lot of code using this.
771
772         * mini-trampolines.c (mono_delegate_trampoline): Call
773         mono_create_static_rgctx_trampoline () before saving the final address in
774         delegate->method_code, to avoid calling it each time a delegate is first called.
775
776         * method-to-ir.c (mono_method_to_ir): Allow fast delegate creation for methods
777         which need static rgctx trampolines.
778
779         * mini-trampolines.c (mono_create_static_rgctx_trampoline): Use a cache
780         keyed on the method+addr pair, since addr could be either the method addr or
781         an unbox trampoline in the AOT case. Fixes #560246.
782
783 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
784
785         * mini.c (mini_method_compile): Call handle_exception_clauses () in the same
786         place it was called before too.
787
788 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
789
790         * mini.c (mono_jit_runtime_invoke): Avoid the call to mono_class_setup_vtable ()
791         if no security manager is present, to speed up the AOT case. Call
792         mono_class_vtable () full with raise_on_error == TRUE instead.
793
794 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
795
796         * mini.c (mini_method_compile): Call handle_exception_clauses earlier so
797         the local optimization passes can take its result into account. Fixes
798         #559876.
799
800         * exceptions.cs: Add a test.
801
802 2009-01-24  Steven Munroe  <munroesj@us.ibm.com>
803
804         This patch is contributed under the terms of the MIT/X11 license
805
806         * cpu-ppc64.md (load_memindex): Add loadi8_memindex.
807
808 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
809
810         * mini.h (MonoInst): Remove unused 'ssa_op' field.
811
812         * debugger-agent.c: Rework the handling of stack traces of running threads to
813         avoid crashes if compute_frames () tries to walk the stack of running thread.
814
815         * mini.c (mono_print_method_from_ip): Use mini_jit_info_table_find.
816
817         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): Set frame->lmf.
818
819         * mini.h (StackFrameInfo): Add an 'lmf' field.
820
821 2009-12-02  Zoltan Varga  <vargaz@gmail.com>
822
823         * debugger-agent.c (suspend_current): Always set really_suspended.
824
825         * debugger-agent.c (clear_event_request): Clear method entry/exit requests too.
826
827         * exceptions-x86.c (mono_arch_get_restore_context): Restore EAX too.
828
829 2009-12-01  Zoltan Varga  <vargaz@gmail.com>
830
831         * debugger-agent.c (vm_commands): Don't allow invokes on threads which are not
832         really suspended.
833
834 2009-12-01  Zoltan Varga  <vargaz@gmail.com>
835
836         * cpu-ppc64.md (store_memindex): Add storei8_memindex.
837
838 2009-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
839
840         * mini-trampolines.c: Fix MSVC build.
841
842 2009-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
843
844         * mini-trampolines.c: Check for mono_method_get_vtable_slot failures.
845
846 2009-11-30  Zoltan Varga  <vargaz@gmail.com>
847
848         * mini-arm.c (mono_arch_lowering_pass): Fix an assert which is hit when
849         the instruction following an OP_FCOMPARE is optimized away.
850
851 2009-11-30  Zoltan Varga  <vargaz@gmail.com>
852
853         * aot-compiler.c (arch_emit_autoreg): Extract the auto-registration code from
854         emit_autoreg () into this arch-specific function.
855
856         * aot-compiler.c (emit_exception_debug_info): Don't emit the length of the
857         code, it is no longer needed.
858
859         * aot-runtime.c (decode_exception_debug_info): Don't read the code length.
860
861         * mini.h: Bump AOT file format version.
862
863         * aot-runtime.c (mono_aot_find_jit_info): Compute the length of the method
864         using the sorted_code_offsets array, instead of reading it from the
865         exception debug info.
866         (load_method): Call mono_aot_find_jit_info instead of
867         decode_exception_debug_info ().
868
869         * aot-compiler.c (emit_exception_debug_info): Emit whenever the method was
870         LLVM compiled as a flag.
871
872 2009-11-29  Zoltan Varga  <vargaz@gmail.com>
873
874         * debugger-agent.c (resume_thread): Fix a warning.
875
876         * aot-compiler.c: Add an option to set the number of static rgctx trampolines
877         generated.
878
879 2009-11-28  Zoltan Varga  <vargaz@gmail.com>
880
881         * aot-compiler.c aot-runtime.c: Get rid of a few global symbols, move their
882         contents to MonoAotFileInfo.
883
884 2009-11-27  Zoltan Varga  <vargaz@gmail.com>
885
886         * aot-compiler.c aot-runtime.c: Reorganize the AOT file format once again.
887         Put all binary data into a giant blob, similarly to the way .net assemblies
888         store binary data. Emit offset tables in a compact form to reduce their size.
889
890         * mini.h: Bump AOT file format version.
891
892         * aot-compiler.c (emit_globals_table): Use temp_prefix instead of .L in a few
893         places.
894
895         * aot-compiler.c (emit_globals_table): Emit a hash table for the globals, to
896         avoid linear searches at runtime.
897
898         * aot-runtime.c (find_symbol): Update this to use the hash.
899
900         * mini.h: Bump AOT file format version.
901
902 2009-11-26  Zoltan Varga  <vargaz@gmail.com>
903
904         * aot-compiler.c (emit_klass_info): Save whenever the class has a generic
905         container.
906
907         * aot-runtime.c (decode_cached_class_info): Set the is_generic_container field
908         too.
909
910         * aot-compiler.c (mono_compile_assembly): Add a 'stats' option to print out
911         the distribution of got slot types.
912
913         * mini.h (MonoDebugOptions): Add 'explicit_null_checks' option.
914
915         * method-to-ir.c: Add support for generating explicit null checks.
916
917 2009-11-25  Zoltan Varga  <vargaz@gmail.com>
918
919         * debugger-agent.c (vm_commands): Implement EXIT by invoking Environment.Exit ()
920         on a random thread if possible.
921
922         * aot-runtime.c (mono_aot_plt_resolve): Clean up the handling of function
923         descriptors a bit, add comments, handle RGCTX_FETCH/GENERIC_CLASS_INIT_TRAMPOLINE
924         correctly.
925
926         * exceptions-ppc.c (mono_arch_find_jit_info_ext): Use mgreg_t as the type of
927         regs. Pass the real size of the regs array to mono_unwind_frame ().
928
929         * unwind.c (mono_unwind_frame): Remove an incorrect assert, add more correct
930         ones instead.
931
932 2009-11-24  Geoff Norton  <gnorton@novell.com>
933
934         * mini-darwin.c: Work around apple bug rdar://7209349  See
935         http://openradar.appspot.com/7209349 for details.  Synopsis,
936         CoreFoundation SIGTRAP's if you dlopen it off the main thread if its
937         never been initialized before.
938
939 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
940
941         * tramp-arm.c: Use blx instead of mov pc, reg to improve support for thumb.
942
943         * mini-arm.c (mono_arm_thumb_supported): New helper function.
944
945 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
946
947         * cfold.c (mono_constant_fold_ins): Fix a problem in the previous change,
948         OP_SHL_IMM is not 32 bit.
949
950 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
951
952         * aot-compiler.c (encode_patch): Fix the encoding of R8 on big-endian systems.
953
954 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
955
956         * aot-compiler.c: Avoid infinite recursion when generic virtual recursion is
957         encountered.
958
959         * debugger-agent.c (resume_vm): Signal the suspend_cond even if suspend_count
960         > 0 since some threads can resume if their resume_count is > 0.
961         (invoke_method): Avoid reading freed memory.
962
963         * debugger-agent.c (process_suspend): Extract the suspend code from
964         process_single_step_inner () to a separate function. Rework the code to prevent
965         races between this function and thread interrupts.
966
967         * debugger-agent.c (suspend_current): Check the resume_count field instead
968         of resume_one so suspends+resumes during single threaded invokes work
969         correctly.
970
971 2009-11-23  Zoltan Varga  <vargaz@gmail.com>
972
973         * aot-compiler.c (emit_llvm_file): Enable some llvm optimizations which seem
974         to make the generated code smaller.
975
976         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Add a code
977         sequence generated by recent LLVM versions.
978
979         * mini-llvm.c: Add support for a few simple cases which weren't supported
980         before.
981
982         * mini-trampolines.c (mono_magic_trampoline): Don't call
983         mono_arch_get_vcall_slot () when llvm is enabled.
984
985         * aot-compiler.c (emit_llvm_file): Add code to run the 'opt' llvm tool.
986
987         * mini-trampolines.c (mono_magic_trampoline): Extract the bulk of this function
988         into a new function called common_call_trampoline () which is used by the
989         llvm vcall trampoline as well.
990
991         * debugger-agent.c: Implement single threaded invokes.
992
993         * debugger-agent.c: Revert change which broke the agent on linux.
994
995         * method-to-ir.c (inline_method): Prevent infinite recursion. Fixes
996         #557606.
997
998         * generics.cs: Add a test.
999
1000 2009-11-22  Zoltan Varga  <vargaz@gmail.com>
1001
1002         * debugger-agent.c: Fix the cygwin build.
1003
1004 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
1005
1006         * cprop.c: Remove this unused file.
1007
1008 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
1009
1010         * cfold.c (mono_constant_fold_ins): Fix constant folding of shr_imm. Fixes
1011         #557262.
1012
1013         * basic.cs: Add a test.
1014
1015 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
1016
1017         * method-to-ir.c (mono_method_to_ir): Use mono_use_llvm instead of ENABLE_LLVM
1018         in one more place.
1019
1020 2009-11-20  Zoltan Varga  <vargaz@gmail.com>
1021
1022         * mini.c mini-trampolines.c driver.c: Add a 'mono_use_llvm' flag to control
1023         whenever the runtime uses LLVM code. Add a '--llvm' command line option to set
1024         it. Use this flag to control llvm related code paths instead of #ifdef
1025         ENABLE_LLVM, so a runtime configured without --enable-llvm can use LLVM compiled
1026         AOT code.
1027
1028         * aot-runtime.c aot-compiler.c: Add a 'flag' field to MonoAotFileInfo.
1029
1030         * mini.h: Bump AOT file format version.
1031
1032         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline_full): These
1033         receive their argument in MONO_ARCH_VTABLE_REG, not in the first argument reg.
1034
1035         * debugger-agent.c (create_event_list): Fix a crash if an empty assembly list
1036         was used as an assembly filter.
1037
1038 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
1039
1040         * unwind.c: Fix support for ppc.
1041
1042         * exceptions-ppc.c (mono_arch_find_jit_info): Change this to use dwarf frame
1043         unwind info. Change to the mono_arch_find_jit_info_ext () interface.
1044
1045 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
1046
1047         * mini-ppc.c (mono_arch_emit_prolog): Fix a copy-paste error to fix the ppc64
1048         port.
1049         (mono_arch_cpu_init): Don't set cpu_hw_flags to 0 at the end, this was somehow
1050         added by the ps3 changes.
1051
1052 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
1053
1054         * mini-gc.c: Resurrect this, so at least it compiles.
1055
1056         * debugger-agent.c (assembly_commands): Implement GET_NAME command.
1057
1058 2009-11-18  Zoltan Varga  <vargaz@gmail.com>
1059
1060         * debugger-agent.c (mono_debugger_agent_handle_exception): Pass a MonoJitInfo to
1061         create_event_list () so assembly filters can be used.
1062
1063         * exceptions-ppc.c (mono_arch_find_jit_info): Fix the restoration of registers
1064         from the LMF.
1065
1066 2009-11-17  Zoltan Varga  <vargaz@gmail.com>
1067
1068         * debugger-agent.c (mono_debugger_agent_breakpoint_hit): Fix a warning.
1069         (mono_debugger_agent_thread_interrupt): Make this return FALSE if the agent
1070         is disabled.
1071
1072         * aot-compiler.c (add_generic_instances): Emit instances of common generic
1073         classes for char/bool too.
1074
1075         * debugger-agent.c (DebuggerTlsData): Honor the DISABLE_SOFT_DEBUG option.
1076
1077         * debugger-agent.c (DebuggerTlsData): Add a 'really_suspended' flag, not yet
1078         used.
1079
1080         * debugger-agent.c: Add some definitions to make backporting to 2.6 easier.
1081         Fix warnings.
1082
1083 2009-11-15  Andreas Faerber  <andreas.faerber@web.de>
1084
1085         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Signature fix.
1086         
1087         Code contributed under MIT/X11 license.
1088
1089 2009-11-14  Zoltan Varga  <vargaz@gmail.com>
1090
1091         (mono_debugger_agent_thread_interrupt): Save the context so stacktraces for
1092         threads in native code work.
1093
1094         * debugger-agent.c: Pass the 'flags' argument to VM_INVOKE_METHOD earlier in
1095         the parameter list, so it can be acted upon by vm_commands (). Bump protocol
1096         version.
1097
1098 2009-11-13 Jonathan Chambers <joncham@gmail.com>
1099
1100         * debugger-agent.c: Implementation for Windows platform.
1101
1102         * mini-x86.c: Add support for Windows. Use mono-* synchronization
1103         primitives. Use SEH to implement breakpoints and single stepping.
1104
1105         * mini-x86.h: Enable soft debugger on Windows.
1106
1107         Code contributed under MIT/X11 license.
1108
1109 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
1110
1111         * mini-amd64.c (emit_call_body): Disable usage of near calls when running
1112         under XEN. Fixes #522894.
1113
1114         * patch-info.h: Add LLVM_IMT_TRAMPOLINE.
1115
1116         * mini-llvm.c aot-compiler.c aot-runtime.c mini.c: Add support for making
1117         interface calls in LLVM AOT code.
1118
1119         * aot-compiler.c mini-llvm.c: Abort llvm compilation if a non-encodable patch
1120         is found.
1121
1122         * mini-llvm.c: Add support for OP_VPHI.
1123
1124         * objects.cs: Add a test.
1125
1126 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
1127
1128         * debugger-agent.c (mono_debugger_agent_single_step_event): Avoid a crash if
1129         this is called on the debugger thread.
1130
1131 2009-11-12  Zoltan Varga  <vargaz@gmail.com>
1132
1133         * mini-llvm.c: Add soft-float support.
1134
1135         * method-to-ir.c (mono_decompose_soft_float): Restart after decomposing an
1136         FCALL which returns an R4.
1137
1138         * driver.c (mono_main): Add a missing '\n'.
1139
1140         * mini-trampolines.c (mono_create_llvm_imt_trampoline): Fix the build on
1141         platforms which doesn't support the LLVM IMT trampoline.
1142
1143 2009-11-11  Zoltan Varga  <vargaz@gmail.com>
1144
1145         * mini-llvm.c (mono_llvm_emit_method): Fix LOCALLOC.
1146
1147         * mini-llvm-cpp.cpp: Update to latest LLVM SVN.
1148
1149         * mini-llvm.c (mono_llvm_emit_method): Avoid creating plt entries for
1150         virtual calls.
1151
1152         * aot-runtime.c: Don't define HAVE_DL_ITERATE_PHDR, configure now does that.
1153
1154 2009-11-10  Zoltan Varga  <vargaz@gmail.com>
1155
1156         * aot-compiler.c aot-runtime.c: Change how mono_arch_find_jit_info () works.
1157         Instead of emitting a method_order table, sort the contents of the code_offsets
1158         table and do a binary search in the sorted table. The previous approach doesn't
1159         work with LLVM which emits methods in a arbitrary order.
1160
1161         * aot-runtime.c: Add support for creating MonoJitInfo structures by searching
1162         in the .eh_frame section in ELF files.
1163
1164         * mini.h: Bump corlib file format version.
1165
1166         * mini-llvm.c aot-compiler.c: Add support for AOT to the LLVM back end.
1167
1168         * exceptions-arm.c (mono_arch_get_call_filter_full): Update after the
1169         LDMIA->LDM macro name change.
1170
1171 2009-11-09  Zoltan Varga  <vargaz@gmail.com>
1172
1173         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Fix and enable this for
1174         x86.
1175
1176         * mini-llvm-cpp.cpp (JITMemoryManager): Fix compilation with LLVM 2.7
1177         SVN.
1178
1179         * aot-compiler.c: Ditto.
1180
1181         * mini-arm.c (mono_arch_allocate_vars): Fix the previous change by passing
1182         &align to mini_type_stack_size_full ().
1183
1184         * mini-arm.c (mono_arch_emit_prolog): Implement support for varargs.
1185
1186         * mini-ops.h: Add documentation for the OP_ARGLIST opcode.
1187
1188 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
1189
1190         * mini-arm.c: Compute the stack space used by arguments using
1191         mini_type_stack_size_full ().
1192
1193 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
1194
1195         * optflags-def.h: Remove dead TREEPROP optimization.
1196
1197 2009-11-08  Rodrigo Kumpera  <rkumpera@novell.com>
1198
1199         * mini-ppc.h: Make mono compiler under FreeBSD/ppc64. 
1200
1201         Patch by Justin Hibbits <chmeeedalf@gmail.com>.
1202
1203 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
1204
1205         * driver.c (mono_jit_parse_options): New public API function to parse options
1206         as done by the runtime executable.
1207
1208         * debugger-agent.c (buffer_add_cattrs): Fix reading an uninitialized variable
1209         when handling named arguments.
1210
1211 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
1212
1213         * mini-arm.c: Implement support for returning vtypes in registers, fix support
1214         for passing small vtypes in registers, make the CallInfo structures more
1215         similar to the code on the other platforms.
1216
1217         * mini-arm.c (mono_arch_allocate_vars): Align small vtypes to 4 bytes too since
1218         the code in the prolog requires it.
1219
1220 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
1221
1222         * mini-arm.c debugger-agent.c: Android changes from Koushik K. Dutta
1223         (koush@koushikdutta.com).
1224
1225         * mini-arm.c (handle_thunk): Add a domain argument to control the domain
1226         where the thunk memory should be allocated from. Fixes appdomain unloading
1227         on arm.
1228
1229 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
1230
1231         * mini-arm.c exceptions-arm.c: Make ctx->regs map directly to the 16 hardware
1232         registers, instead of r4..r11,ip,lr. Make restore_context () restore r0..r3 too.
1233
1234 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
1235
1236         * mini-amd64.c (mono_arch_output_basic_block): Don't allow OP_SEQ_POINT in
1237         AOT, as it is not implemented yet.
1238
1239         * mini-x86.c (mono_arch_output_basic_block): Ditto.
1240
1241 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
1242
1243         * debugger-agent.c: Fix windows build.
1244
1245 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
1246
1247         * debugger-agent.c (debugger_thread): Call mono_set_is_debugger_attached ()
1248         after the client connects/disconnects.
1249
1250         * debugger-agent.c: Add an 'onthrow' option to start the debugger agent
1251         when an exception of a given type is thrown.
1252
1253         * debugger-agent.c: Add a 'onuncaught' option to start the debugger agent
1254         only on an uncaught exception.
1255
1256         * mini-exceptions.c: Notify the debugger agent on an uncaught exception.
1257
1258         * debugger-agent.c: Add a 'launch' option.
1259
1260 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
1261
1262         * debugger-agent.c: Add a 'timeout' option.
1263
1264 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
1265
1266         * debugger-agent.c: Implement the 'server' and 'suspend' options supported by
1267         the JDWP agent.
1268
1269 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
1270
1271         * debugger-agent.c (set_breakpoint): Emit a log message.
1272
1273 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
1274
1275         * mini-arm.c: Fix the arm build.
1276
1277 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
1278
1279         * aot-compiler.c: don't leak the value returned from
1280         mono_type_full_name().
1281
1282 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
1283
1284         * debugger-agent.c: defer including mono-mutex.h until we know the
1285         agent is supported.
1286
1287 2009-11-04 Jonathan Chambers <joncham@gmail.com>
1288
1289         * debugger-agent.c: Changes to build on windows. Use mono-mutex instead
1290         of pthreads directly.
1291
1292         * mini.c (mono_sigfpe_signal_handler): Changed signature of Windows
1293         exception handlers. Pass info argument.
1294
1295         * mini.h: Adjust signatures of soft debugger functions to pass void*
1296         instead of siginfo_t. Adjust SIG_HANDLER_SIGNATURE on Windows.
1297
1298         * mini-amd64.c (mono_arch_is_single_step_event): Adjust signature to pass void*
1299         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
1300         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
1301         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
1302
1303         * mini-amd64.h: Adjust MonoW32ExceptionHandler signature.
1304
1305         * mini-x86.c (mono_arch_is_single_step_event): Adjust signature to pass void*
1306         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
1307         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
1308         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
1309
1310         * mini-x86.h: Adjust MonoW32ExceptionHandler signature.
1311
1312         * exceptions-x86.c: Adjust W32_SEH_HANDLE_EX for new signature.
1313
1314         * exceptions-amd64.c: Adjust W32_SEH_HANDLE_EX for new signature.
1315
1316         * mono-semaphore.h: Skeleton implementation for Windows.
1317
1318         Code contributed under MIT/X11 license.
1319
1320 2009-11-04 Jonathan Chambers <joncham@gmail.com>
1321
1322         * simd-intrinsics.c (simd_intrinsic_emit_setter): Unfix my fix.
1323
1324         Code contributed under MIT/X11 license.
1325
1326 2009-11-04 Jonathan Chambers <joncham@gmail.com>
1327
1328         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix windows build.
1329
1330         Code contributed under MIT/X11 license.
1331
1332 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
1333
1334         * aot-compiler.c (mono_save_xdebug_info): Bump the threshold for flushing
1335         debug info to 100 because 10 still slows down gdb too much.
1336
1337         * method-to-ir.c (mono_method_to_ir): Avoid rethrowing thread abort exceptions
1338         inside runtime invoke wrappers. This avoids the need to call ResetAbort () on
1339         them in the wrappers.
1340
1341 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
1342
1343         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
1344
1345         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix a warning.
1346
1347         * aot-runtime.c (mono_aot_get_method): Refactor some code into a new helper
1348         function mono_aot_get_array_helper_from_wrapper ().
1349
1350         * aot-compiler.c (add_generic_class): Refactor the code a bit, really emit
1351         array helper methods.
1352
1353 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
1354
1355         * simd-intrinsics.c (load_simd_vreg): Add extra argument to signal if
1356         the value was loaded from memory.
1357
1358         * simd-intrinsics.c (simd_intrinsic_emit_setter): Store back to memory if
1359         the value was loader from there.
1360
1361         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Fail correctly for Shuffle
1362         without constant swizzle.
1363
1364 2009-11-02 Jonathan Chambers <joncham@gmail.com>
1365
1366         * mini-amd64.c: Put soft debugger functions behind a
1367         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
1368
1369         * mini-amd64.h: disable the soft debugger in windows.
1370
1371         Code contributed under MIT/X11 license.
1372
1373 2009-11-02 Jonathan Chambers <joncham@gmail.com>
1374
1375         * mini-x86.c: Put soft debugger functions behind a
1376         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
1377
1378         Code contributed under MIT/X11 license.
1379
1380 2009-11-02 Jonathan Chambers <joncham@gmail.com>
1381
1382         * exceptions-x86.c (win32_handle_stack_overflow): Fix parameters
1383         to mono_arch_find_jit_info_ext.
1384
1385         Code contributed under MIT/X11 license.
1386
1387 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
1388
1389         * debugger-agent.c: Include netinet/in.h to fix the bsd build.
1390
1391         * debugger-agent.c: Add support for filtering events by assemblies.
1392
1393         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Return false if
1394         the agent is not enabled.
1395
1396 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
1397
1398         * exceptions-x86.c: hopefully last change to fix the windows build.
1399         This one courtesy of Jonathan Chambers.
1400
1401 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
1402
1403         * debugger-agent.c: remove unused function.
1404
1405 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
1406
1407         * debugger-agent.c: add #ifdefs for a few header files.
1408         * mini-x86.h: disable the soft debugger in windows.
1409         Step 1 of 2 to make this compile on windows with gcc.
1410
1411 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
1412
1413         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Comment this out for now
1414         as it breaks the build.
1415
1416 2009-07-01  Zoltan Varga  <vargaz@gmail.com>
1417
1418         Merge the soft debugger branch.
1419
1420         * debugger-agent.h debugger-agent.c: New files containing the soft
1421         mode debugger module.
1422
1423         * method-to-ir.c (mono_method_to_ir): Generate OP_SEQ_POINT opcodes
1424         at the appropriate locations.
1425
1426         * mini-<ARCH>.c (mono_arch_output_basic_block): Handle OP_SEQ_POINT
1427         opcode.
1428
1429         * mini-<ARCH>.c: Add new arch-specific functions to set/clear breakpoints,
1430         enable/disable single stepping.
1431
1432         * exceptions-<ARCH>.c (mono_arch_find_jit_info_ext): New stack unwinding api
1433         which returns all information in a StackFrameInfo structure, and can handle the
1434         LMF frames added by the debugger.
1435
1436         * mini-<ARCH>.h (MonoLMFExt): New structure containing additional information
1437         about an LMF frame.
1438
1439         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): New stack
1440         walker function which works on a specific thread and passes a StackFrameInfo
1441         structure to its callback.
1442
1443         * mini.c (mini_init): Initialize the debugger agent.
1444
1445         * aot-compiler.c aot-runtime.c: Add soft-debug support.
1446
1447         * mini-ops.h: Add OP_SEQ_POINT opcode.
1448
1449         * driver.c (mono_main): Add new '--debugger-agent' option for passing
1450         arguments to the debugger agent.
1451
1452 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
1453
1454         * mini.c (mini_method_compile): Disable llvm for methods with an lmf here to
1455         speed things up.
1456
1457         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOCALLOC.
1458
1459         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Implement this for x86.
1460
1461         * mini.c (mini_init): Avoid using the IMT trampoline in the LLVM case.
1462
1463         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add a static rgctx trampoline
1464         if needed.
1465         (mono_create_llvm_imt_trampoline): New function to create a trampoline which
1466         sets the IMT argument and makes a virtual call.
1467
1468         * mini-llvm.c: Enable interface calls using the llvm imt trampoline.
1469
1470 2009-11-01  Zoltan Varga  <vargaz@gmail.com>
1471
1472         * Makefile.am (llvm_sources): Enable the llvm option since it no longer breaks
1473         the windows build.
1474
1475 2009-10-30  Zoltan Varga  <vargaz@gmail.com>
1476
1477         * mini.c (mini_cleanup): Call profiler shutdown before shutting down the
1478         runtime. Fixes #551228.
1479
1480 2009-10-29  Zoltan Varga  <vargaz@gmail.com>
1481
1482         * mini-x86.c (mono_arch_output_basic_block): Fix % 1. Fixes #550970.
1483
1484         * basic.cs: Add a test.
1485
1486         * method-to-ir.c (mono_method_to_ir): Use EMIT_NEW_LOAD_MEMBASE_TYPE to
1487         load vtypes instead if OP_LOADV_MEMBASE in the implementation of
1488         CONSTRAINED. Fixes #550964.
1489
1490         * generics.cs: Add a test.
1491
1492 2009-10-28  Mark Probst  <mark.probst@gmail.com>
1493
1494         * mini-posix.c (add_signal_handler): Use
1495         mono_gc_get_suspend_signal() instead of GC_get_suspend_signal().
1496
1497 2009-10-28 Jerry Maine <crashfourit@gmail.com>
1498
1499         Contributed under the terms of the MIT/X11 license by
1500         Jerry Maine <crashfourit@gail.com>.
1501
1502         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
1503         sse4a for simd intrinsics.
1504
1505         * mini-amd64.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
1506         sse4a for simd intrinsics.
1507
1508 2009-10-27  Zoltan Varga  <vargaz@gmail.com>
1509
1510         * ir-emit.h method-to-ir.c: Change a few _IMM macros to assign to inst_imm
1511         instead of inst_p1 which is not the same on ILP32 platforms.
1512
1513 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
1514
1515         * mini-ppc.c (mono_arch_emit_prolog): Load the current got address,
1516         not the mscorlib one before calling mono_get_lmf_addr.
1517
1518         * tramp-ppc.c (mono_arch_create_trampoline_code_full): Fix the storing
1519         of the ip to the LMF.
1520
1521         * method-to-ir.c (mono_method_to_ir): Fix the handling of the
1522         immediate in the op->op_imm optimization.
1523
1524         * mini-ppc.c: Add a 'vtregs' field to ArgInfo to make the code easier to
1525         understand. VTypes now work, but are not abi compliant, as they are
1526         split into 4 byte parts instead of 8.
1527         (emit_memcpy): Fix the unrolled case to work on the PS3.
1528
1529         * mini-ppc.c (get_delegate_invoke_impl): Fix this for the PS3.
1530
1531         * aot-compiler.c (mono_compile_assembly): Make the autoreg option
1532         the default when static linking.
1533
1534         * mini-ppc.c (mono_arch_emit_prolog): Fix handling of I8 arguments.
1535
1536         * aot-compiler.c: Add an autoreg option to automatically register
1537         statically linked aot modules using ELF .ctors.
1538
1539         * genmdesc.pl: Add __ppc64__ to allowed defines.
1540
1541 2009-10-25  Zoltan Varga  <vargaz@gmail.com>
1542
1543         * mini-posix.c (add_signal_handler): Delay the GC suspend signal while
1544         executing a SIGSEGV handler on an altstack, since libgc can't handle that.
1545
1546 2009-10-24  Mark Probst  <mark.probst@gmail.com>
1547
1548         * exceptions-x86.c (mono_arch_find_jit_info): Fix build.
1549
1550 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
1551
1552         * mini-exceptions.c (mini_jit_info_table_find): Add an 'out_domain' argument
1553         which will contain the domain where the method was found.
1554
1555         * exceptions-<ARCH>.c mini-exceptions.c: Update callers of
1556         mini_jit_info_table_find ().
1557
1558         * aot-compiler.c (xdebug_end_emit): Remove so stray debug code.
1559
1560         * branch-opts.c (mono_if_conversion): Avoid running deadce if it is disabled.
1561
1562 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
1563
1564         * mini-x86.c (mono_arch_emit_prolog): Disable aot for methods with save_lmf
1565         set, its not supported yet.
1566
1567 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
1568
1569         * aot-runtime.c (mono_aot_get_method): Avoid asserting if a array generic
1570         iface wrapper is not found.
1571         (mono_aot_get_method): Ditto for GetGenericValueImpl.
1572
1573 2009-10-21  Zoltan Varga  <vargaz@gmail.com>
1574
1575         * aot-runtime.c (mono_aot_get_method): Fix support for the IList<T> wrappers,
1576         which have a different name.
1577
1578         * aot-runtime.c (mono_aot_get_method): Special case the array generic iface
1579         wrappers and Array.GetGenericValueImpl ().
1580
1581         * aot-compiler.c: Avoid emitting some wrappers which are not needed anymore
1582         because of the change above.
1583
1584         * generics.cs: Add a test for full aot + generic array ifaces.
1585
1586 2009-10-19  Sebastien Pouliot  <sebastien@ximian.com>
1587
1588         * aot-compiler.c (emit_plt): Remove duplicate 'debug_sym' variable 
1589         that hides the previous one.
1590
1591 2009-10-18  Zoltan Varga  <vargaz@gmail.com>
1592
1593         * aot-compiler.c (can_marshal_struct): Allow some System.dll structs to be
1594         marshalled. Fixes #541623.
1595
1596 2009-10-16  Zoltan Varga  <vargaz@gmail.com>
1597
1598         * aot-compiler.c (emit_extra_methods): Remove some asserts which are not needed.
1599
1600 2009-10-15  Zoltan Varga  <vargaz@gmail.com>
1601
1602         * mini.c (mono_op_imm_to_op): Handle OP_AND/OR/XOR_IMM.
1603
1604 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
1605
1606         * mini-posix.c (sigprof_signal_handler):
1607         Implemented support for building stat call chans in different ways.
1608
1609 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
1610
1611         * mini-exceptions.c (mono_find_jit_info):
1612         Also check that a jit info has been found (fixes a profiler crash).
1613
1614 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
1615
1616         * mini.c (mono_codegen):
1617         Call mono_profiler_code_buffer_new with correct code address.
1618
1619 2009-10-14  Zoltan Varga  <vargaz@gmail.com>
1620
1621         * driver.c (mono_main): Change the date in the copyright.
1622
1623 2009-10-14  Mark Probst  <mark.probst@gmail.com>
1624
1625         * method-to-ir.c (mono_method_to_ir): Don't use a managed array
1626         allocator in shared generic code for open classes, because we
1627         can't get those classes' vtables.  We need to make managed
1628         allocators not depend on the vtable at compile-time to solve this.
1629
1630 2009-10-13  Martin Baulig  <martin@ximian.com>
1631
1632         * debug-mini.c (mono_debugger_trampoline_compiled): Add
1633         `const guint8 *trampoline' argument; send both the old and the new
1634         notification.
1635
1636 2009-09-30  Zoltan Varga  <vargaz@gmail.com>
1637
1638         * aot-compiler.c (add_wrappers): Add a runtime invoke wrapper which is used by
1639         mono_runtime_capture_context () without calling mono_runtime_invoke ().
1640         (can_marshal_struct): Skip structures with auto layout.
1641
1642         * tramp-arm.c (GEN_TRAMP_SIZE): Increase this by 4.
1643
1644 2009-10-02  Zoltan Varga  <vargaz@gmail.com>
1645
1646         * mini-sparc.c (mono_arch_emit_setret): Emit long return values using OP_LMOVE.
1647         (mono_arch_create_vars): Instead of allocating a stack slot by hand, allocate
1648         a variable to hold the stack slot used by the int<->float conversion opcodes.
1649
1650         * mini-sparc.c (mono_arch_build_imt_thunk): Implement support for fail_tramp.
1651
1652 2009-10-04  Zoltan Varga  <vargaz@gmail.com>
1653
1654         * aot-compiler.c (add_generic_class): Only add GetGenericValueImpl wrappers
1655         when using full-aot.
1656
1657 2009-10-06  Zoltan Varga  <vargaz@gmail.com>
1658
1659         * aot-compiler.c (add_generic_class): Add an instance of GenericComparer<T> for
1660         each instance of Comparer<T>.
1661
1662         * generics.cs: Add a new test.
1663
1664 2009-10-09  Zoltan Varga  <vargaz@gmail.com>
1665
1666         * driver.c (parse_debug_options): Add a 'gdb' option.
1667
1668         * mini.c (mini_parse_debug_options): Add a 'gdb' option.
1669
1670         * image-writer.c: Add support for emitting the image into a memory buffer.
1671
1672         * dwarfwriter.c: Add support for sharing one IL file between multiple images.
1673
1674         * aot-compiler.c: Add support for registering debug info with GDB using the
1675         new JIT debugging interface in GDB 7.0. It can be turned on by setting
1676         MONO_XDEBUG to 'gdb'.
1677
1678 2009-10-10  Zoltan Varga  <vargaz@gmail.com>
1679
1680         * aot-compiler.c (mono_save_trampoline_xdebug_info): Implement this for the
1681         gdb mode.
1682
1683 2009-10-11  Zoltan Varga  <vargaz@gmail.com>
1684
1685         * aot-compiler.c (mono_save_xdebug_info): Emit a symbol for the method which
1686         can be used to set breakpoints in gdb.
1687
1688         * image-writer.c (bin_writer_emit_writeout): Add support for setting the text
1689         segment to an absolute address.
1690
1691 2009-10-13  Mark Probst  <mark.probst@gmail.com>
1692
1693         * method-to-ir.c: Use the managed array allocator method if
1694         available.
1695
1696 2009-10-13  Bill Holmes  <billholmes54@gmail.com>
1697
1698         * aot-compiler.c : Fix the MSVC builds
1699
1700         Code is contributed under MIT/X11 license.
1701
1702 2009-10-13  Zoltan Varga  <vargaz@gmail.com>
1703
1704         * aot-compiler.c (mono_save_xdebug_info): Group methods into groups of 10 to
1705         avoid registering 1 symbol file per method with gdb.
1706
1707 2009-09-29  Zoltan Varga  <vargaz@gmail.com>
1708
1709         * mini-sparc.c: Fix the handling of enums with base type long.
1710
1711         * mini-sparc.c (mono_arch_output_basic_block): Fix IREM_UN_IMM.
1712
1713         * mini-sparc.c (mono_arch_allocate_vars): Use mono_class_from_mono_type ()
1714         instead of using type->data.klass as the later doesn't work with generics.
1715
1716 2009-09-25  Mark Probst  <mark.probst@gmail.com>
1717
1718         * method-to-ir.c, mini.h, mini-alpha.c, mini-amd64.c, mini-arm.c,
1719         mini-hppa.c, mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c,
1720         mini-s390x.c, mini-sparc.c, mini-x86.c: Thread.get_CurrentThread
1721         works differently now and we don't handle it in the JIT anymore.
1722
1723         * mini.c, mini-exceptions.c, mini-posix.c, debug-debugger.c,
1724         debug-mini.c, tramp-amd64.c, tramp-x86.c: Changes resulting from
1725         the Thread class split.
1726
1727 2009-09-25  Zoltan Varga  <vargaz@gmail.com>
1728
1729         * driver.c: Don't run tests with the obsolete treeprop optimization.
1730
1731         * mini-sparc.c (mono_arch_create_vars): Make the component vars of a long ret
1732         variable volatile. Fixes #541577.
1733
1734         * basic-calls.cs: Add a new test.
1735
1736         * basic-long.cs: Remove tests which are now in basic-calls.cs.
1737
1738 2009-09-24  Zoltan Varga  <vargaz@gmail.com>
1739
1740         * dwarfwriter.c (emit_debug_info_end): Disable this as it doesn't seem to
1741         work/required with recent iphone sdk versions.
1742
1743         * aot-compiler.c (add_wrappers): Generate PtrToStructure wrappers for more
1744         structures.
1745
1746         * decompose.c (mono_decompose_vtype_opts): Avoid reading uninitialized memory
1747         in the VCALL decomposition code.
1748
1749 2009-09-22  Zoltan Varga  <vargaz@gmail.com>
1750
1751         * mini-ia64.c (mono_arch_output_basic_block): Fix ISHR/ISHR_IMM.
1752
1753         * basic.cs: Add a test.
1754
1755         * mini-ia64.c (mono_arch_build_imt_thunk): Implement support the virtual
1756         generic invokes.
1757
1758         * mini-exceptions.c (mini_jit_info_table_find): New helper function which
1759         searches all the domains of the current thread.
1760
1761         * exceptions-<ARCH>.c: Use it. Fixes #539394.
1762
1763 2009-09-21  Zoltan Varga  <vargaz@gmail.com>
1764
1765         * exceptions-arm.c (mono_arm_throw_exception): Set ctx->ebp to fp instead of sp
1766         so catching exceptions thrown in the same method works. Fixes exception17.exe.
1767
1768         * tramp-arm.c (mono_arch_create_trampoline_code_full): Store NULL into lmf->method
1769         for non-jit trampolines.
1770
1771         * mini.c (mono_jit_runtime_invoke): Allow string ctors with dyn runtime invoke.
1772
1773         * aot-compiler.c (add_wrappers): Ditto.
1774
1775         * mini-arm.c: Implement support for passing vtypes and floats, and increase
1776         the size of the param area used by dyn_call to 6 which covers the majority of
1777         methods.
1778
1779         * mini.c aot-compiler.c: Allow dyn_call for string methods except ctors.
1780
1781         * mini-arm.c: Implement support for passing/receiving
1782         longs and receiving floats in the dyn_call code.
1783
1784         * mini-amd64.c: Implement support for receiving vtypes in registers in
1785         the dyn_call code.
1786
1787         * mini.c mini-amd64.c: Implement partial support for passing vtypes in
1788         the dyn_call code.
1789
1790 2009-09-20  Zoltan Varga  <vargaz@gmail.com>
1791
1792         * mini-arm.c (get_call_info): Return more precise information in
1793         ArgInfo->regtype.
1794         (dyn_call_supported): Use the information in CallInfo.
1795
1796         * mini-arm.c: Enable support for returning vtypes in the dyn_call code.
1797
1798         * mini.c mini-amd64.c: Enable support for returning vtypes in the dyn_call
1799         code.
1800
1801         * mini-arm.c: Update after the dyn_call api changes.
1802
1803         * mini.c (mini_create_jit_domain_info): Register a destructor function
1804         for the runtime_invoke_hash.
1805
1806         * mini-amd64.c (mono_arch_get_dyn_call_args): Rename this to
1807         'mono_arch_dyn_call_start'. Pass the pointer to the return value buffer to
1808         this function.
1809         (mono_arch_get_dyn_call_ret): Rename this to 'mono_arch_dyn_call_finish'.
1810         (dyn_call_supported): Simplify this by using get_call_info ().
1811         (mono_arch_dyn_call_free): New destructor function.
1812
1813         * generics.cs: Remove a printf.
1814
1815         * method-to-ir.c (mono_method_to_ir): Allocate some param area for DYN_CALL.
1816
1817         * mini-arm.c: Add support for enum return values and passing a few arguments
1818         on the stack.
1819         
1820         * mini.c (mono_jit_runtime_invoke): Add support for enum return values to
1821         dyn invoke.
1822
1823         * mini-amd64.c (mono_arch_get_dyn_call_ret): Ditto.
1824
1825         * aot-compiler.c (add_wrappers): Add a few restrictions for the use of
1826         the dynamic invoke wrappers.
1827
1828         * mini-arm.c: Implement OP_DYN_CALL for arm.
1829
1830         * aot-compiler.c (add_wrappers): Avoid aot-ing runtime invoke wrappers
1831         supported by the dynamic runtime invoke wrapper.
1832
1833         * aot-compiler.c aot-runtime.c: Add support for encoding the dynamic
1834         runtime invoke wrapper.
1835
1836         * mini.c (mono_jit_runtime_invoke): Use the dynamic runtime invoke wrappers
1837         if possible when running with full-aot.
1838
1839         * mini-ops.h: Add OP_DYN_CALL opcode.
1840
1841         * mini-amd64.c method-to-ir.c: Add infrastructure for making method calls
1842         with dynamic arguments lists similar to libffi.
1843
1844 2009-09-19  Zoltan Varga  <vargaz@gmail.com>
1845
1846         * method-to-ir.c: Fix the previous change on 64 bit platforms.
1847         
1848         * method-to-ir.c: Applied patch from Rodrigo Kumpera. Allow an i8 argument
1849         to NEWARR.
1850
1851         * iltests.il.in: Add a new test.
1852         
1853 2009-09-18  Zoltan Varga  <vargaz@gmail.com>
1854
1855         * aot-compiler.c (add_generic_instances): Add more instances of
1856         GenericEqualityComparer.
1857
1858 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
1859
1860         * mini.c: Add asserts for mono_class_vtable calls that are not meant to fail.
1861
1862 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
1863
1864         * method-to-ir.c: Handle failures from mono_class_vtable. Added some
1865         comments on some functions that now can fail.
1866
1867 2009-09-17  Andrew Jorgensen  <ajorgensen@novell.com>
1868
1869         * Makefile.am: Add Info.plist to EXTRA_DIST
1870
1871 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
1872
1873         * method-to-ir.c (mono_method_to_ir): Allow AOT for CEE_LDTOKEN in
1874         static synchronized wrappers. Fixes #539500.
1875
1876 2009-09-14  Rodrigo Kumpera  <rkumpera@novell.com>
1877
1878         * jit-icalls.c (mono_class_static_field_address): handle vtable failure
1879         properly.
1880
1881 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
1882
1883         * mini-exceptions.c (mono_handle_exception_internal): Store the computed
1884         lmf before calling filter clauses as well. Fixes #539550.
1885
1886         * exceptions.cs: Add a test.
1887         
1888 2009-09-14  Zoltan Varga  <vargaz@gmail.com>
1889
1890         * aot-compiler.c (add_generic_class): Add instances of
1891         Array.GetGenericValueImpl as well.
1892
1893         * Makefile.am (fullaotcheck): Copy and aot more assemblies so linq
1894         can be tested too.
1895
1896         * generics.cs: Add a fullaot linq test.
1897
1898 2009-09-10  Zoltan Varga  <vargaz@gmail.com>
1899
1900         * aot-compiler.c (arch_emit_static_rgctx_trampoline): Don't clobber argument
1901         reg r1 on arm.
1902
1903 2009-09-10  Bill Holmes  <billholmes54@gmail.com>
1904
1905         * mini-trampolines.c (mono_delegate_trampoline) : Call
1906           mono_cominterop_get_invoke if the delegate target object
1907           is a COM object.
1908
1909         Code is contributed under MIT/X11 license.
1910
1911 2009-09-09  Sebastien Pouliot  <sebastien@ximian.com>
1912
1913         * method-to-ir.c: For CoreCLR throw a SecurityException if an 
1914         internal call is defined outside platform code. Reduce code 
1915         duplication with existing [Method|Field]AccessException
1916
1917 2009-09-08  Rodrigo Kumpera  <rkumpera@novell.com>
1918
1919         * mini-x86.c (mono_arch_emit_call): Don't reduce stack usage by 4
1920         if the return value is a small struct passed on regs.
1921
1922 2009-09-09  Zoltan Varga  <vargaz@gmail.com>
1923
1924         * cpu-arm.md mini-arm.c: Remove unused opcodes.
1925
1926         * mini-codegen.c: Enable the cpu description validation for arm.
1927
1928 2009-09-08  Zoltan Varga  <vargaz@gmail.com>
1929
1930         * basic-calls.cs: Move the test_0_float_load_and_store_with_big_offset ()
1931         test which depends on structs to objects.cs.
1932         
1933         * basic-calls.cs: Remove calls to Console.WriteLine and throws, since those
1934         require object model related stuff working.
1935
1936         * cpu-x86.md mini-x86.c: Remove more unused opcodes.
1937
1938         * mini-ops.h: Fix OP_BIGMUL instruction descriptions.
1939
1940         * mini-codegen.c (mono_local_regalloc): Validate the cpu description 
1941         against the instruction metadata in mini-ops.h. amd64 only for now.
1942
1943         * mini-ops.h: Fix some instruction descriptions.
1944
1945         * mini-ops.h mini-x86.c mini-amd64.c cpu-<ARCH>.md: Remove some
1946         unused instructions.
1947
1948 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
1949
1950         * exceptions.cs: Add a new test.
1951
1952 2009-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
1953
1954         * mini-x86.c (needs_stack_frame): OSX requires full frames to keep proper alignment.
1955
1956 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
1957
1958         * mini-llvm.c (mono_llvm_emit_method): Add a few more missing casts,
1959         skip empty phi opcodes.
1960         
1961         * mini-llvm.c (mono_llvm_emit_method): Handle unsigned volatile variables
1962         correctly by zero extending after loads. Skip methods containing calls
1963         to the monitor enter/exit trampolines.
1964
1965         * tramp-x86.c (mono_arch_create_trampoline_code): Align the stack
1966         when calling mono_thread_force_interruption_checkpoint ().
1967
1968         * mini.c (mini_method_compile): Disable llvm when AOT compiling.
1969
1970         * tramp-amd64.c (mono_arch_patch_callsite): Add support for 32 bit ->
1971         64 bit thunks.
1972         (mono_arch_nullify_class_init_trampoline): Read 'buf' instead of 'code'.
1973
1974         * mini-llvm.c (mono_llvm_emit_method): Add a few missing conversions so a 
1975         bootstrap could run.
1976
1977 2009-09-04  Zoltan Varga  <vargaz@gmail.com>
1978
1979         * mini.c (mini_init): Set callbacks.get_runtime_build_info ().
1980
1981 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
1982
1983         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass the start
1984         of the method to
1985         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
1986         LLVM might be very short.
1987
1988         * mini-x86.c (mono_arch_output_basic_block): Maintain stack alignment
1989         in OP_THROW/RETHROW.
1990
1991         * exceptions-x86.c: Rewrite the throw trampolines so they maintain stack
1992         alignment on osx.
1993
1994 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
1995
1996         * mini-amd64.c (mono_arch_get_vcall_slot): Pass the start of the method to
1997         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
1998         LLVM might be very short.
1999
2000 2009-09-01  Zoltan Varga  <vargaz@gmail.com>
2001
2002         * exceptions-x86.c (throw_exception): Fix the previous change by substracting
2003         the alignment for the value of sp.
2004
2005 2009-09-01  Geoff Norton  <gnorton@novell.com>
2006
2007         * mini.c (mono_get_lmf_addr): Fix jit_thread_attach for native to 
2008         managed wrappers in full aot.
2009
2010 2009-08-31  Zoltan Varga  <vargaz@gmail.com>
2011
2012         * exceptions-x86.c (get_throw_exception): Align the stack on osx.
2013
2014 2009-08-28  Zoltan Varga  <vargaz@gmail.com>
2015
2016         * mini-llvm-cpp.cpp mini-llvm.c: Update to latest llvm api.
2017
2018 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
2019
2020         * aot-compiler.c (emit_exception_debug_info): Emit ei->flags too.
2021
2022         * aot-runtime.c (decode_exception_debug_info): Decode ei->flags from the
2023         saved info.
2024
2025         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
2026
2027         * aot-runtime.c aot-compiler.c: Emit exception causes fully so we don't
2028         depend on the info MonoMethodHeader which could be missing in IL stripped
2029         assemblies.
2030
2031 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
2032
2033         * mini-arm.c (add_general): Fix the passing of 64 bit values on darwin, where
2034         they are only 4 byte aligned.
2035
2036 2009-08-21  Zoltan Varga  <vargaz@gmail.com>
2037
2038         * mini-arm.c (mono_arch_allocate_vars): Use FP as the frame pointer as
2039         was done previously, since using SP causes too many problems.
2040
2041         * exceptions-arm.c: Fix the handling of sp/fp so unwinding through
2042         frames without a frame pointer works.
2043
2044         * mini-arm.c (mono_arch_get_global_int_regs): Avoid using V5 as a
2045         global register in methods with calls, since the calls can go through
2046         a static rgctx trampoline which doesn't save it.
2047
2048 2009-08-19  Zoltan Varga  <vargaz@gmail.com>
2049
2050         * mini-arm.c (mono_arch_context_get_int_reg): Handle SP as well.
2051
2052 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
2053
2054         * aot-compiler.c (add_generic_instances): Fix the net 1.1 build.
2055
2056 2009-08-18  Christian Hergert  <chris@dronelabs.com>
2057
2058         * method-to-ir.c: Fix warnings for uninitialized variables.
2059
2060 2009-08-18  Christian Hergert  <chris@dronelabs.com>
2061
2062         * mini-exceptions.c:
2063         * aot-compiler.c: Fix printf warnings.
2064
2065 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
2066
2067         * aot-compiler.c (add_generic_instances): Add string[] wrapper methods.
2068         Add GetGenericValueImpl<string>.
2069         
2070         * aot-compiler.c (add_generic_instances): Add instances of
2071         GenericEqualityComparer<T> for primitive types. Only emit the array
2072         wrappers into the mscorlib image.
2073
2074 2009-08-15  Zoltan Varga  <vargaz@gmail.com>
2075
2076         * aot-runtime.c (load_method): Rename 'aot_module' -> 'amodule'. Allocate
2077         the methods_loaded array using amodule->info->nmethods.
2078
2079         * mini.h (MonoAotFileInfo): Add an 'nmethods' field.
2080         (MONO_AOT_FILE_VERSION): Bump this.
2081
2082         * aot-compiler.c: Emit more generic instances allowing some parts of linq
2083         to work.
2084
2085         * aot-runtime.c (mono_aot_get_unwind_info): Handle the case when the
2086         MonoJitInfo doesn't belong to its methods aot image.
2087
2088 2009-08-14  Zoltan Varga  <vargaz@gmail.com>
2089
2090         * mini-arm.c (mono_arch_allocate_vars): Use SP as the default frame reg.
2091
2092         * mini-arm.c: Fix warnings.
2093         
2094         * mini-arm.c (mono_arm_emit_load_imm): Only emit a movt if needed.
2095
2096         * mini-arm.c (mono_arm_emit_load_imm): Use movt/movw if the cpu
2097         supports it.
2098
2099 2009-08-12  Zoltan Varga  <vargaz@gmail.com>
2100
2101         * aot-compiler.c (arch_emit_imt_thunk): Rework the arm code to
2102         avoid clobbering IP.
2103
2104         * mini-trampolines.c (mono_magic_trampoline): Allocate a local to
2105         hold the trampoline argument, so its initial value is available during
2106         debugging.
2107
2108 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
2109
2110         * exceptions-arm.c:
2111         * exceptions-hppa.c:
2112         * mini.c:
2113         * exceptions-s390x.c:
2114         * exceptions-mips.c:
2115         * exceptions-ppc.c:
2116         * exceptions-sparc.c:
2117         * exceptions-alpha.c:
2118         * aot-runtime.c:
2119         * mini-trampolines.c:
2120         * exceptions-x86.c:
2121         * exceptions-s390.c: add and use #define's instead of sizeof()
2122         for MonoJitInfo and MonoJitInfoTable.
2123
2124 2009-08-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
2125
2126         * tramp-arm.c:
2127         * tramp-amd64.c:
2128         * tramp-ppc.c:
2129         * tramp-x86.c: use a #define instead of sizeof() for a few
2130         structures that use a zero-length array.
2131
2132 2009-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
2133
2134         * method-to-ir.c (mono_method_to_ir/CEE_CONSTRAINED_): Handle the
2135         case when the method is dynamic. Fixes #529238.
2136
2137 2009-08-06  Zoltan Varga  <vargaz@gmail.com>
2138
2139         * mini.c (mono_jit_compile_method_inner): Throw an exception instead
2140         of asserting when a method is JIT compiled in full-aot mode.
2141
2142 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
2143         
2144         Contributed under the terms of the MIT/X11 license by
2145         Jerry Maine <crashfourit@gail.com>.
2146         
2147         * fixed wrong dates in changelog.
2148
2149 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
2150         
2151         Contributed under the terms of the MIT/X11 license by
2152         Jerry Maine <crashfourit@gail.com>.
2153
2154         * basic-simd.cs: added test for packed double square root.
2155         * cpu-amd64.md: added opcode info for packed double square root.
2156         * cpu-x86.md: added opcode info for packed double square root.
2157         * mini-ops.h: added IR opcode for packed double square root.
2158         * mini-x86.c: added IR to native translation code for packed double square root.
2159         * mini-amd64.c: removed todo for packed double square root.
2160         * simd-intrinsics.c: added method to IR opcode converstion for
2161         packed double square root.
2162
2163 2009-08-03 Jerry Maine <crashfourit@gmail.com>
2164
2165         Contributed under the terms of the MIT/X11 license by
2166         Jerry Maine <crashfourit@gail.com>.
2167
2168         * mini-amd64.c: Added a change to help tell the difference as 
2169         to what perpose the xmm register is being used--mainly to help
2170         with debuging.
2171         * mini-amd64.h: Changed callee regs to use 15 out of 16 
2172         (one used for special cases) xmm registers for both fp
2173         and simd ops. Added define to turn on new feature in the regalloc
2174         that allows fp and simd ops to share the xmm regs happily.
2175         * codegen.c: Added code to detect for which perpose an xmm reg is
2176         being used (fp or simd) and to translate back and forth to the
2177         correct logical reg bank (fp or simd) for 'spill load's.
2178
2179 2009-08-03 Jerry Maine <crashfourit@gmail.com>
2180
2181         Contributed under the terms of the MIT/X11 license by
2182         Jerry Maine <crashfourit@gail.com>.
2183
2184         * basic-simd.cs: Added tests for stressing the regalloc when running with
2185         16 simd regs and when simd and fp ops share the same reg bank.
2186
2187 2009-08-01  Mark Probst  <mark.probst@gmail.com>
2188
2189         * method-to-ir.c (mini_emit_stobj): If we call mono_value_copy()
2190         in shared generic code, we might have to look up the class in the
2191         RGCTX.  If we use the class directly, compute its GC descriptor.
2192
2193 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
2194
2195         * mini.c (mono_jit_runtime_invoke): Fix a warning.
2196
2197 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
2198
2199         * mini.c (mono_jit_runtime_invoke): Initialize the class and
2200         check for errors. Fixed the case when the class with the Main
2201         method is broken.
2202
2203 2009-07-31 Jerry Maine <crashfourit@gmail.com>
2204
2205         Contributed under the terms of the MIT/X11 license by
2206         Jerry Maine <crashfourit@gail.com>.
2207
2208         * cpu-amd64.md: Fixed simple bug in machine discrition file.
2209
2210 2009-07-31  Zoltan Varga  <vargaz@gmail.com>
2211
2212         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_IREM_UN_IMM.
2213
2214 2009-08-30  Rodrigo Kumpera  <rkumpera@novell.com>
2215
2216         * method-to-ir.c: Fix naming of stelem and ldelem.
2217
2218 2009-07-30  Zoltan Varga  <vargaz@gmail.com>
2219
2220         * driver.c (main_thread_handler): Check that the assembly loaded
2221         matches the filename when doing AOT.
2222
2223 2009-07-30  Mark Probst  <mark.probst@gmail.com>
2224
2225         * mini.c: get_ip_from_sigctx installer has been removed, so don't
2226         call it anymore.
2227
2228         * mini-x86.h, mini-amd64.h, mini-ppc.h: UCONTEXT macros moved (to
2229         utils/mono-sigcontext.h).
2230
2231         * exceptions-amd64.c: Use the UCONTEXT_GREGS macro instead of an
2232         #ifdef.
2233
2234 2009-07-29  Massimiliano Mantione  <massi@ximian.com>
2235
2236         * mini.c (mono_codegen):
2237         Call profiler hook to keep track of method code buffers.
2238
2239 2009-07-27  Mark Probst  <mark.probst@gmail.com>
2240
2241         * method-to-ir.c: Invoke write barriers for the
2242         Interlocked.(Compare)Exchange JIT intrinsics.
2243
2244 2009-07-26  Raja R Harinath  <harinath@hurrynot.org>
2245
2246         * Makefile.am (version.h): Fix issues when built out of tree.
2247         Remove some redundant 'grep's piped through 'sed's.
2248
2249 Fri Jul 24 17:28:37 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
2250
2251         This patch is contributed under the terms of the MIT/X11 license
2252
2253         * mini-ppc.c (mono_arch_output_basic_block):
2254         (OP_STOREI1_MEMBASE_REG): Handle 32-bit offsets combining addis
2255         for bits 32-47 with signed load/store diplacements for bits
2256         48-63.  Use prefered base/offset order for indexed form.
2257         (OP_STOREI2_MEMBASE_REG, OP_STORE_MEMBASE_REG): Same.
2258         (OP_LOAD_MEMBASE, OP_LOADI4_MEMBASE, OP_LOADU4_MEMBASE,
2259         OP_LOADI1_MEMBASE, OP_LOADU1_MEMBASE, OP_LOADU2_MEMBASE,
2260         OP_LOADI2_MEMBASE): Same.
2261         (OP_STORER8_MEMBASE_REG, OP_LOADR8_MEMBASE,
2262         OP_STORER4_MEMBASE_REG, OP_LOADR4_MEMBASE): Same.
2263         (OP_STOREI1_MEMINDEX): Use prefered base/offset order for
2264         indexed form.
2265         (OP_STOREI2_MEMINDEX, OP_STORE_MEMINDEX): Same.
2266         (OP_LOAD_MEMINDEX, OP_LOADI4_MEMINDEX, OP_LOADU4_MEMINDEX,
2267         OP_LOADU2_MEMINDEX, OP_LOADI2_MEMINDEX, OP_LOADU1_MEMINDEX,
2268         OP_LOADI1_MEMINDEX): Same
2269         (OP_LOADR4_MEMINDEX, OP_LOADR8_MEMINDEX, OP_STORER4_MEMINDEX,
2270         OP_STORER8_MEMINDEX): Same
2271         (OP_JMP): Use addis/addi sequence for int cfg->stack_usage
2272         computations.
2273         (mono_arch_emit_prolog): Handle 32-bit offsets combining addis
2274         for bits 32-47 with signed load/store diplacements for bits
2275         48-63.  Use prefered base/offset order for indexed form.
2276
2277 Fri Jul 24 16:57:12 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
2278
2279 This patch is contributed under the terms of the MIT/X11 license
2280
2281         * mini-ppc.c: Define PPC_MOVE_FPR_GPR and PPC_ISA_64.
2282         (mono_arch_get_vcall_slot): Fx pointer to int cast warning.
2283         (mono_arch_decompose_opts): Make OP_ICONV_TO_R4 and
2284         OP_ICONV_TO_R8 decompose conditional on !PPC_ISA_64.
2285         (mono_arch_output_basic_block) [OP_JMP]: Use ppc_load32 for
2286         cfg->stack_usage to avoid size warnings.
2287         (mono_arch_output_basic_block) [__mono_ppc64__]: Replace
2288         store/load sequence with mffgpr if PPC_MOVE_FPR_GPR is true.
2289         (mono_arch_output_basic_block) [!__mono_ppc64__]: For
2290         OP_ICONV_TO_R4 or OP_ICONV_TO_R8 and PPC_ISA_64 use fcfid
2291         to convert.
2292         (mono_arch_emit_prolog): Move mono_emit_unwind_op_def_cfa 
2293         after code varible is initialized.
2294         Add g_assert ppc_is_imm16 for ainfo->offset. Handle
2295         ainfo->size == 8 when ainfo->offset !ppc_is_imm16.
2296         (mono_arch_emit_epilog): 
2297         Move Use ppc_load32 for cfg->stack_usage to avoid size
2298         warnings.
2299
2300 2009-07-24  Mark Probst  <mark.probst@gmail.com>
2301
2302         * method-to-ir.c: The write barrier doesn't do the store anymore,
2303         so we have always to emit it.  Also, emit the wbarrier after the
2304         store.
2305
2306 2009-07-24  Zoltan Varga  <vargaz@gmail.com>
2307
2308         * mini-arm.c (mono_arch_get_delegate_invoke_impls): Add a trampoline
2309         for argument count 3 too.
2310
2311 2009-07-23  Zoltan Varga  <vargaz@gmail.com>
2312
2313         * mini.c (mono_jit_compile_method_with_opt): Add an 'ex' argument to let
2314         the caller handle the exceptions.
2315         (mono_jit_runtime_invoke): Handle exceptions thrown while compiling the
2316         method. Fixes #524498.
2317
2318 2009-07-22  Geoff Norton  <gnorton@novell.com>
2319
2320         * mini-exceptions.c: Fix build on ia64.
2321
2322 2009-07-22  Mark Probst  <mark.probst@gmail.com>
2323
2324         * mini-exceptions.c (ves_icall_get_frame_info): Use write
2325         barriers.
2326
2327 2009-07-21  Zoltan Varga  <vargaz@gmail.com>
2328
2329         * mini-arm.c (mono_arch_emit_prolog): Fix thread attaching in aot
2330         code.
2331
2332 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
2333
2334         * basic-simd.cs (Main): Pass args to the test driver.
2335
2336 2009-07-20  Geoff Norton  <gnorton@novell.com>
2337
2338         * mini-x86.h: Fix the x86 version guards to use Apple's
2339         properly defined macros.
2340
2341 2009-07-20  Geoff Norton  <gnorton@novell.com>
2342
2343         * mini-x86.c: Fix --trace on darwin-x86 and other systems which require
2344         aligned access.
2345
2346 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
2347
2348         * mini.c (mono_jit_runtime_invoke): Speed this up by adding a hash to
2349         MonoJitDomainInfo which maps MonoMethod's to a structure containing all
2350         the information which is needed for invokes, so only one locking+hash table
2351         lookup is needed.
2352
2353         * aot-compiler.c: Add a 'tool-prefix' option to be used when cross-compiling.
2354         
2355         * aot-compiler.c (add_generic_instances): Emit instances of 
2356         GenericComparer<T> for primitive types.
2357
2358 2009-07-19 Rodrigo Kumpera  <rkumpera@novell.com>
2359
2360         * mini-posix.c: Fix linux build.
2361
2362 2009-07-19  Geoff Norton  <gnorton@novell.com>
2363
2364         * mini.h: Add prototypes for mono_runtime_syscall_fork and
2365         mono_gdb_render_native_backtraces
2366         * mini-darwin.c: Apple's syscall(SYS_fork) is very weird on x86,
2367         so we implement the sane semantics to the runtime here
2368         (mono_gdb_render_native_backtraces).  Apple also uses an ancient gdb
2369         so we need to call it differently (mono_gdb_render_native_backtraces)
2370         * mini-posix.c: Move the old semantics from mini.c to the prototypes
2371         here for default implementations.
2372         * mini.c: Refactor mono_handle_native_sigsegv so that we can properly
2373         support Apple's weird syscall (SYS_fork) implementation and not busy
2374         loop in abort() on native crashes on OSX anymore.
2375
2376 2009-07-18  Zoltan Varga  <vargaz@gmail.com>
2377
2378         * aot-runtime.c (load_method): Change the handling of the
2379         MONO_LASTAOT env variable so MONO_LASTAOT=0 means that no aot methods
2380         are used.
2381
2382         * mini.c (mono_patch_info_equal): Really fix the handling of RGCTX_FETCH.
2383
2384 2009-07-17  Zoltan Varga  <vargaz@gmail.com>
2385
2386         * mini.c (mono_patch_info_equal): Revert the last change for now as it
2387         seems to break the aot tests.
2388         
2389         * mini.c (mono_patch_info_equal): Fix the handling of 
2390         MONO_PATCH_INFO_RGCTX_FETCH.
2391
2392 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
2393
2394         * unwind.c: Use TARGET_AMD64 instead of __x86_64__.
2395
2396         * mini.c (mono_patch_info_hash): Fix the handling of 
2397         MONO_PATCH_INFO_INTERNAL_METHOD.
2398         (mono_patch_info_equal): Ditto.
2399
2400 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
2401
2402         * mini-llvm.c (mono_llvm_emit_method): Use module instead of ctx->module
2403         in a few places.
2404         
2405         * mini-llvm.c: Add some infrastructure for AOT support.
2406
2407 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
2408
2409         * mini-llvm-cpp.c: Update to the latest llvm api.
2410         
2411         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Set the EnablePrettyStackTrace
2412         option to false to prevent llvm from installing signal handlers which
2413         trip up the gc.
2414         
2415 2009-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
2416
2417         * cpu-x86.md:
2418         * cpu-amd64.md: Revert previous change as those instructions
2419         take 2 separate arguments. Remember to read the arch docs more
2420         carefully next time.
2421
2422 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
2423
2424         * mini-llvm-cpp.cpp (mono_llvm_build_alloca): Update to latest llvm api.
2425
2426 Wed Jul 15 17:20:27 CEST 2009 Paolo Molaro <lupus@ximian.com>
2427
2428         * mini-ppc.c: exploit multiple load/store units if available (rest of
2429         the change from Steven Munroe (<munroesj@us.ibm.com>) first patch at 
2430         http://bugzilla.novell.com/show_bug.cgi?id=487846).
2431
2432 Wed Jul 15 16:24:57 CEST 2009 Paolo Molaro <lupus@ximian.com>
2433
2434         * mini-ppc.c: integrate most of Steven Munroe (<munroesj@us.ibm.com>)
2435         first patch at http://bugzilla.novell.com/show_bug.cgi?id=487846.
2436
2437 2009-07-14 Rodrigo Kumpera  <rkumpera@novell.com>
2438
2439         * cpu-x86.md: Fix missing clobbering from trancendental simd
2440         ops.
2441
2442         * cpu-amd64.md: Same.
2443
2444 2009-07-14 Jerry Maine <crashfourit@gmail.com>
2445
2446         Contributed under the terms of the MIT/X11 license by
2447         Jerry Maine <crashfourit@gail.com>.
2448
2449         * basic-simd.cs: Added tests for single and doulble indexers.
2450
2451         * cpu-amd64.md: Added simd opcode information.
2452
2453         * mini-amd64.c: Added IR to native simd generation code.
2454         Added simd register names and function that returns them.
2455
2456         * mini-amd64.h: Added marcos to turn on simd code compilation in
2457         amd64. Added max simd register count marco. Added caller/callee
2458         register mask marcos. Added marcos to use simd register bank.
2459
2460         * mini.h: Added helper marco for shufling dwords and simple
2461         floats.
2462
2463 2009-07-14  Zoltan Varga  <vargaz@gmail.com>
2464
2465         * mini-llvm-cpp.cpp: Update to latest llvm SVN api.
2466
2467         * Makefile.am (mono_LDADD): Pass LLVM_LDFLAGS to the linked.
2468
2469         * unwind.c (mono_unwind_get_ops_from_fde): Make this return
2470         the length of the native code as well.
2471
2472         * basic-simd.cs: Add a test for #521662.
2473
2474 Mon Jul 13 17:58:50 CEST 2009 Paolo Molaro <lupus@ximian.com>
2475
2476         * mini-ppc.c: fixed bug introduced by Steven's TLS changes.
2477
2478 2009-07-13  Mark Probst  <mark.probst@gmail.com>
2479
2480         * mini.c: Register function for getting the IP from a signal
2481         context with metadata.
2482
2483 2009-07-13  Zoltan Varga  <vargaz@gmail.com>
2484
2485         * method-to-ir.c (mono_method_to_ir): When calling a gshared method,
2486         call a generic class init trampoline if needed. Fixes #519336.
2487
2488         * generics.cs: Add a test.
2489         
2490 2009-07-09  Mark Probst  <mark.probst@gmail.com>
2491
2492         * method-to-ir.c: When doing a call which might be remote from
2493         shared generic code to other shared code with open type arguments,
2494         get the remoting invoke wrapper from the RGCTX and do an indirect
2495         call to it.
2496
2497 2009-07-03  Zoltan Varga  <vargaz@gmail.com>
2498
2499         * mini-trampolines.c (get_unbox_trampoline): Add an rgctx trampoline
2500         after the unbox trampoline in the full-aot case.
2501
2502 2009-07-02  jonas echterhoff <jonas@unity3d.com>
2503         
2504         * mini.c: Move initialization of jit_mutex before debugger initialization
2505         
2506         to avoid crashes.
2507         
2508         
2509         * Info.plist: added Info.plist and link flag to enable the mono executable
2510         to access other processes. Requires codesigning of the executable to work.
2511         
2512         * mdb-debug-info32-darwin.s: The same as mdb-debug-info32.s, changed to 
2513         
2514         compile on OS X.
2515         
2516
2517 2009-06-30  Zoltan Varga  <vargaz@gmail.com>
2518
2519         * driver.c (mini_regression): Handle loading errors. Fixes #508869.
2520
2521 2009-06-29  Zoltan Varga  <vargaz@gmail.com>
2522
2523         * mini-exceptions.c (get_generic_context_from_stack_frame): Fix the case
2524         when the generic instance is an instantiation of a subclass of the
2525         methods class. Fixes #517166.
2526
2527 2009-06-26  Zoltan Varga  <vargaz@gmail.com>
2528
2529         * mini-amd64.c (mono_arch_emit_prolog): Fix thread attaching in AOTed
2530         code.
2531
2532         * mini.c (mono_jit_thread_attach): Allow domain to be NULL for calls from
2533         AOTed code.
2534
2535         * CMakeLists.txt: Add minimal support for installation.
2536
2537 2009-06-25  Zoltan Varga  <vargaz@gmail.com>
2538
2539         * aot-compiler.c (emit_and_reloc_code): Factor out the code to
2540         determine whenever a method is directly callable to a separate function.
2541
2542         * mini-<ARCH>.c tramp-<ARCH>.c: Remove needless casts and add new
2543         needed ones as a result of the previous change.
2544
2545         * mini-<ARCH>.c tramp-<ARCH>.c: Use mgreg_t* as the
2546         type of register arrays.
2547
2548         * mini-trampolines.c tramp-<ARCH>.c aot-runtime.c: Use mgreg_t* as the
2549         type of register arrays.
2550
2551 2009-06-24  Jerry Maine  <crashfourit@gmail.com>
2552         
2553         Contributed under the terms of the MIT/X11 license by
2554         Jerry Maine <crashfourit@gail.com>.
2555
2556         * mini-amd64.c: Added code to convert simd IR to native amd64 sse.
2557
2558 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
2559
2560         * aot-compiler.c (emit_plt): Define debug labels for most plt entries.
2561
2562 2009-06-24  Neale Ferguson <neale@sinenomine.net>
2563
2564         * mini-s390x.c: Correct LCONV_TO_Ix and ICONV_TO_Ix routines. Fix leave_method
2565         dump of structure return value. Fix some formatting.
2566         * cpu-s390x.md: Fix lengths of instruction sequences.
2567         * mini-s390.c: Minor formatting changes.
2568
2569 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
2570
2571         * mini-x86.h: Applied patch from Romain Tartiere (romain@blogreen.org).
2572         Use sigaction on freebsd as well.
2573
2574 2009-06-23  Zoltan Varga  <vargaz@gmail.com>
2575
2576         * mini.h: Don't define MONO_ARCH_HAVE_TLS_GET to 0, as some code
2577         uses #ifdef on it.
2578         
2579         * mini.c (mini_init): Revert a change which breaks cross-compilation.
2580
2581 2009-06-22  Mark Probst  <mark.probst@gmail.com>
2582
2583         * mini-ppc.c, cpu-ppc.md: Enable TLS on Darwin/G4.
2584
2585 2009-06-22  Mark Probst  <mark.probst@gmail.com>
2586
2587         * mini.c, mini.h: Tell the runtime whether we support MONO_TLS.
2588
2589 2009-06-20  Martin Baulig  <martin@ximian.com>
2590
2591         * debug-mini.c
2592         (MonoDebuggerThreadFlags): New enum typedef.
2593         (MonoDebuggerThreadInfo): Added `guint32 thread_flags'.
2594         (mono_debugger_thread_created): Added `gpointer func' argument;
2595         initialize the new `thread_flags' field.
2596
2597 2009-06-18  Martin Baulig  <martin@ximian.com>
2598
2599         * debug-debugger.h (MonoDebuggerRuntimeFlags): New enum typedef.
2600         (MonoDebuggerInfo): Renamed the `dummy' field info `runtime_info'.
2601
2602         * debug-debugger.c
2603         (mini_debugger_set_attach_ok): New function; sets the attach-ok
2604         flag in `MONO_DEBUGGER__info.runtime_info'.
2605
2606         * driver.c
2607         (mono_main): Call mini_debugger_set_attach_ok() if generics
2608         sharing is disabled.
2609
2610 2009-06-22  Zoltan Varga  <vargaz@gmail.com>
2611
2612         * aot-compiler.c (add_wrappers): Fix a warning.
2613
2614         * mini-ppc.c tramp-ppc.c exceptions-ppc.c aot-compiler.c: Update after
2615         the ppc load/store macro changes.
2616
2617 2009-06-21  Zoltan Varga  <vargaz@gmail.com>
2618
2619         * tramp-ppc.c (mono_arch_patch_plt_entry): Implement this.
2620
2621         * aot-compiler.c (mono_compile_assembly): Sanitize the plt symbol too,
2622         not just the got symbol.
2623
2624         * mini-ppc.c aot-compiler.c unwind.c: Implement generation of unwind info
2625         on ppc.
2626
2627         * aot-compiler.c unwind.c: Add infrastructure for unwind support on
2628         ppc.
2629         
2630         * aot-compiler.c: Remove some fixmes.
2631
2632         * driver.c (mono_main): Print a helpful message when cross-compiling.
2633
2634         * mini.c (mini_init): Disable signal handlers when cross-compiling.
2635
2636         * method-to-ir.c (initialize_array_data): Do the optimization if the
2637         target byte order is little endian, instead of the host byte order.
2638
2639         * aot-compiler.c: Emit sizes for most symbols, only emit runtime-invoke
2640         wrappers into the mscorlib image, Emit a unique plt symbol for each
2641         image, emit symbols for plt entries.
2642
2643         * image-writer.c (img_writer_emit_symbol_size): New function to emit
2644         a .size directive.
2645         
2646 2009-06-20  Zoltan Varga  <vargaz@gmail.com>
2647
2648         * aot-compiler.c (add_wrappers): Avoid calling 
2649         mono_marshal_get_type_info () since it can assert for some types.
2650
2651         * method-to-ir.c (mono_method_to_ir): Disable aot when some forms of 
2652         ldtoken are used inside wrappers.
2653
2654         * helpers.c: Add support for prefixing tools with the arch name.
2655
2656         * mini.h (OP_LOADR_MEMBASE): New opcodes to load/store pointer sized
2657         quantities when using ilp32.
2658
2659         * mini-codegen.c: Use OP_LOADR_MEMBASE/OP_STORER_MEMBASE for loading/storing
2660         spill slots. Use sizeof(mgreg_t) for the spill slot size.
2661
2662         * image-writer.c: Use .long on ilp32.
2663
2664         * aot-compiler.c: Use 32 bit loads on ilp32.
2665         
2666 2009-06-19  Zoltan Varga  <vargaz@gmail.com>
2667
2668         * tramp-ppc.c (mono_arch_create_trampoline_code): Fix the ppc build.
2669
2670         * mini-ops.h: Use TARGET_POWERPC define for consistency.
2671
2672         * patch-info.h: Add 'MSCORLIB_GOT_ADDR' patch type.
2673
2674         * aot-compiler.c aot-runtime.c: Put the mscorlib got address into the 
2675         second got slot of every aot image.
2676         
2677         * aot-compiler.c aot-runtime.c mini-trampolines.c: Add support for
2678         aot on platforms with function pointers.
2679
2680         * mini-ppc.h mini-ppp.c cpu-ppc.md exceptions-ppc.c tramp-ppc.c: Add
2681         support for aot/full aot on ppc/ppc64.
2682         
2683         * tramp-<ARCH>.c (mono_arch_patch_plt_entry): Add 'got' and 'regs'
2684         arguments which are needed on ppc.
2685
2686         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Add 'regs'
2687         argument.
2688
2689         * mini-trampolines.c aot-runtime.c: Update after the above changes.
2690         
2691         * liveness.c (BITS_PER_CHUNK): Use MONO_BITSET_BITS_PER_CHUNK.
2692
2693         * regalloc2.c (BITS_PER_CHUNK): Ditto.  
2694
2695         * aot-compiler.c (emit_got_info): Fix reading unused memory.
2696
2697         * ir-emit.h (alloc_dreg): Add a 'return -1' to quiet some compilers.
2698
2699 2009-06-17  Geoff Norton  <gnorton@novell.com>
2700
2701         * aot-compiler.c: Ensure we dont try to close a null dwarf writer.
2702
2703 2009-06-17  Zoltan Varga  <vargaz@gmail.com>
2704
2705         * dwarfwriter.c (mono_dwarf_writer_create): Add an 'appending' parameter
2706         to control whenever the dwarf writer is in xdebug or aot mode.
2707         (emit_class_dwarf_info): Use a separate abbrev for structures without
2708         children.
2709
2710         * aot-compiler.c: Pass the appending parameter to 
2711         mono_dwarf_writer_create ().
2712
2713         * branch-opts.c (mono_merge_basic_blocks): Fix the case when bbn
2714         falls through to its next bblock. Fixes #513931.
2715
2716         * iltests.il: Add a test.
2717
2718         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Emit some line number
2719         infor even if emit_line is FALSE, as the apple linker seems to require it.
2720
2721         * image-writer.c (asm_writer_emit_symbol_diff): Call get_label ().
2722
2723         * dwarfwriter.c (emit_cie): Emit a separate symbol for the cie start, as
2724         gcc does.
2725         (emit_fde): Ditto.
2726
2727 2009-06-15  Zoltan Varga  <vargaz@gmail.com>
2728
2729         * exceptions-mips.c (mono_arch_get_throw_exception_by_name): Fix the
2730         mips build.
2731
2732 2009-06-13  Zoltan Varga  <vargaz@gmail.com>
2733
2734         * mini.h (struct MonoBasicBlock): Add 'has_jump_table' and 
2735         'has_call_handler' fields.
2736
2737         * method-to-ir.c (mono_method_to_ir): Set them if needed.
2738
2739         * branch-opts.c (mono_merge_basic_blocks): Avoid iterating through the
2740         first bblock if not needed. Fixes #512790.
2741         
2742 2009-06-11  Zoltan Varga  <vargaz@gmail.com>
2743
2744         * aot-compiler.c (mono_compile_assembly): Fix a warning.
2745         
2746         * aot-compiler.c (add_wrappers): Don't emit remoting-invoke-with-check
2747         wrappers.
2748
2749         * aot-runtime.c (mono_aot_get_method): Use the original method's code for
2750         remoting-invoke-with-check wrappers, which are not needed when running with
2751         full-aot, since it doesn't support remoting.
2752         
2753 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
2754
2755         * aot-compiler.c (emit_got_info): Don't emit offsets for the plt got entries.
2756
2757         * aot-compiler.c aot-runtime.c: Don't emit the first got offset in the
2758         method info, it is not used anymore.
2759
2760         * mini.h: Bump AOT file format version.
2761         
2762         * aot-compiler.c (arch_emit_plt_entry): Make the arm plt entries one
2763         word smaller.
2764
2765         * aot-runtime.c (mono_aot_get_plt_info_offset): Update after the
2766         change above.
2767         
2768         * tramp-arm.c (mono_arch_patch_plt_entry): Ditto.
2769
2770         * mini.h: Bump AOT file format version.
2771         
2772 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
2773
2774         * image-writer.c (asm_writer_emit_symbol_diff): Disable the 
2775         TARGET_ASM_APPLE stuff for now, as it doesn't seem to work on the
2776         iphone.
2777
2778         * mini-arm.c (mono_arch_output_basic_block): Fix the implementation
2779         of CKFINITE and FBGE for VFP.
2780
2781 2009-06-09  Zoltan Varga  <vargaz@gmail.com>
2782
2783         * aot-compiler.c: Don't align code to 16 bytes on arm.
2784         
2785         * aot-compiler.c (emit_method_code): Emit the unbox trampolines right
2786         before the methods they belong to.
2787
2788         * aot-runtime.c (mono_aot_plt_resolve): Avoid creating trampolines in
2789         the full-aot case if possible, since the trampoline will be called right 
2790         away.
2791
2792         * aot-compiler.c (mono_compile_assembly): Decrease the number of full aot
2793         trampolines to 1024 after the change above.
2794
2795         * aot-compiler.c (arch_emit_specific_trampoline): Rework the arm
2796         trampoline to save 8 bytes per trampoline.
2797
2798         * tramp-arm.c (mono_arch_create_trampoline_code_full): Update after the
2799         change above.
2800
2801 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
2802
2803         * aot-compiler.c: Use acfg->temp_prefix instead of .L to prefix labels.
2804
2805 2009-06-08  Martin Baulig  <martin@ximian.com>
2806
2807         * debug-mini.c
2808         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
2809         (_mono_debugger_throw_exception): Don't make this static.
2810         (_mono_debugger_unhandled_exception): Likewise.
2811         (mono_debugger_handle_exception): Moved to mini-exceptions.c
2812
2813         * debug-mini.c
2814         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
2815         (_mono_debugger_throw_exception): Add function prototype.
2816         (_mono_debugger_unhandled_exception): Likewise.
2817
2818         * mini-exceptions.c
2819         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
2820         arg; return the first exception handler if the exception is caught
2821         and we're running inside the debugger.
2822         (mono_debugger_handle_exception): Moved here from debug-mini.c;
2823         improve exception handle inside runtime-invoke, check whether the
2824         exception is actually caught in the method being invoked and not
2825         by the runtime-invoke-wrapper.
2826
2827 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
2828
2829         * image-writer.c: Improve support for the osx assembler.
2830
2831         * dwarfwriter.c: Avoid the usage of subsections if the assembler doesn't
2832         support them.
2833
2834 2009-06-08  Martin Baulig  <martin@ximian.com>
2835
2836         * debug-mini.c
2837         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
2838         (_mono_debugger_throw_exception): Don't make this static.
2839         (_mono_debugger_unhandled_exception): Likewise.
2840         (mono_debugger_handle_exception): Moved to mini-exceptions.c
2841
2842         * debug-mini.c
2843         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
2844         (_mono_debugger_throw_exception): Add function prototype.
2845         (_mono_debugger_unhandled_exception): Likewise.
2846
2847         * mini-exceptions.c
2848         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
2849         arg; return the first exception handler if the exception is caught
2850         and we're running inside the debugger.
2851         (mono_debugger_handle_exception): Moved here from debug-mini.c;
2852         improve exception handle inside runtime-invoke, check whether the
2853         exception is actually caught in the method being invoked and not
2854         by the runtime-invoke-wrapper.
2855
2856 2009-06-07  Zoltan Varga  <vargaz@gmail.com>
2857
2858         * image-writer.c (append_subsection): Don't align subsections of the
2859         debug_line section as a workaround.
2860
2861         * dwarfwriter.c: Emit line number info in the AOT case as well.
2862
2863 2009-06-06  Steven Munroe  <munroesj@us.ibm.com>
2864
2865         This patch is contributed under the terms of the MIT/X11 license
2866
2867        * mini-ppc.c (mono_arch_emit_exceptions): Change assert to
2868        code_len <= code_size
2869
2870 2009-06-06  Zoltan Varga  <vargaz@gmail.com>
2871
2872         * mini-mips.c (mips_emit_exc_by_name): Fix the mips build.
2873
2874 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
2875
2876         * aot-compiler.c aot-runtime.c: Delete references to static rgctx
2877         invoke wrappers, we now use trampolines instead.
2878
2879 2009-06-04  Mark Probst  <mark.probst@gmail.com>
2880
2881         * mini-darwin.c: The exception thread must not be registered with
2882         the GC.
2883
2884 2009-06-04  Mark Probst  <mark.probst@gmail.com>
2885
2886         * mini-gc.c: Disable the code because it makes SGen crash.
2887
2888 2009-06-03  Zoltan Varga  <vargaz@gmail.com>
2889
2890         * aot-compiler.c (mono_compile_assembly): Handle file open errors gracefully
2891         instead of asserting.
2892
2893 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
2894
2895         * aot-compiler.c (mono_compile_assembly): Move the creation of the
2896         output file after the code has been compiled.
2897
2898 2009-05-30  Zoltan Varga  <vargaz@gmail.com>
2899
2900         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Fix 64 bit support.
2901
2902 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
2903
2904         * aot-compiler.c aot-runtime.c: Get rid of the shared/non-shared got
2905         entries distinction to simplify the code.
2906
2907         * mini.h: Bump AOT file format version.
2908         
2909 2009-05-28  Zoltan Varga  <vargaz@gmail.com>
2910
2911         * objects.cs: Fix the signature of one of the tests.
2912
2913         * mini.c (mini_create_ftnptr): New helper function, moved here from
2914         object.c.
2915         (mini_get_addr_from_ftnptr): Ditto.
2916         (mini_init): Install the new helpers.
2917
2918 2009-05-28  Martin Baulig  <martin@ximian.com>
2919
2920         Correctly initialize the debugger when embedding Mono.
2921
2922         * mdb-debug-info32.s, mdb-debug-info64.s: Add a global variable
2923         `MONO_DEBUGGER__using_debugger' to the `.mdb_debug_info' section;
2924         see documentation in mini_debug_running_inside_mdb().
2925
2926         * debug-debugger.c
2927         (mini_debug_running_inside_mdb): New function to check whether
2928         we're running inside mdb.
2929
2930         * mini.c (mini_init): Call mini_debugger_init() if we're running
2931         inside the debugger.
2932
2933         * driver.c (mono_main): Moved the call to mini_debugger_init()
2934         into mini_init() to make this work when embedding Mono.
2935
2936         * debug-debugger.c (mini_debugger_init): Warn about duplicate
2937         calls to mini_debugger_init().
2938
2939         * mini.h: Rename mono_debugger_init() -> mini_debugger_init(),
2940         mono_debugger_main() -> mini_debugger_main() and put them inside a
2941         `MONO_DEBUGGER_SUPPORTED' conditional.
2942
2943 2009-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
2944
2945         * mini-trampolines.c: Kill mono_find_delegate_trampoline_by_addr as
2946         this is no longer in use.
2947         * mini.h: Same.
2948
2949 2009-05-26  Zoltan Varga  <vargaz@gmail.com>
2950
2951         * mini-sparc.c (add_outarg_load): Fix the sparc build.
2952
2953         * aot-compiler.c (emit_method_code): Always write out C style symbols for
2954         methods.
2955
2956 2009-05-27  Martin Baulig  <martin@ximian.com>
2957
2958 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
2959
2960         * mini-x86.c (mono_arch_output_basic_block): Fix the precision of
2961         long_conv_to_r_un to 64 bits.
2962
2963         * cpu-x86.md: Increase the instruction size due to the changes.
2964
2965         * iltests.il.in: Add regression test.
2966
2967         Fixes #467201.
2968
2969 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
2970
2971         * objects.cs: Move the previous test from basic.cs to here.
2972
2973 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
2974
2975         * basic.cs: Add regression test for #506915.
2976
2977 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
2978
2979         * method-to-ir.c (mono_method_to_ir): When doing the ldobj+stobj
2980         optimization we must check the bb of the first byte of stobj as
2981         it's the only one set in cil_offset_to_bb.
2982
2983         Fixes #506915.  
2984
2985 2009-05-25  Zoltan Varga  <vargaz@gmail.com>
2986
2987         * image-writer.c: Fix pointer directive on ppc64.
2988
2989 2009-05-24  Zoltan Varga  <vargaz@gmail.com>
2990
2991         * image-writer.c (asm_writer_emit_section_change): Avoid using
2992         .bss subsections on ppc too.
2993
2994 2009-05-23  Zoltan Varga  <vargaz@gmail.com>
2995
2996         * image-writer.c: Fix the definition of TARGET_ASM_....
2997         
2998         * image-writer.c: Fix the emission of assembler directives in the last
2999         change.
3000
3001         * mini-ppc.c (mono_arch_emit_exceptions): Increase the size of the
3002         exception throwing code to accomodate ppc64.
3003
3004         * tramp-ppc.c (mono_arch_get_nullified_class_init_trampoline): Increase the
3005         size to work on ppc64 too.
3006
3007         * mini-ppc.h (MonoCompileArch): Enable static rgctx trampolines on ppc64
3008         too.
3009
3010         * image-writer.c: Clean up the #ifdef hell a bit by adding defines for
3011         the assembler dialect instead of using platform specific defines.
3012
3013 2009-05-22  Geoff Norton  <gnorton@novell.com>
3014
3015         * mini-arm.c (get_call_info): If a structure is split between the stack
3016         and argument registers, we should not advance the stack pointer by the entire
3017         native size, but just by the amount that spilled.
3018
3019 2009-05-22  Zoltan Varga  <vargaz@gmail.com>
3020
3021         * mini-arm.c (get_call_info): Handle structures with alignment requirements
3022         correctly.
3023
3024 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
3025
3026         * aot-compiler.c (emit_extra_methods): Encode direct runtime invoke
3027         wrappers normally.
3028         
3029         * aot-compiler.c (add_extra_method): Fix up the collection of extra
3030         methods so wrapper don't get added twice.
3031         (add_generic_instances): Don't add methods of arrays.
3032
3033         * generics.cs: Mark one test as !FULLAOT.
3034
3035 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
3036
3037         * mini-x86.c (emit_move_return_value): Remove unused vars.
3038
3039 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
3040
3041         * mini-x86.c (mono_arch_emit_call): The decompose code now supports
3042         decomposing 8 bytes structs into a LCALL.
3043
3044         * mini-x86.c (emit_move_return_value): We no longer push the vtype
3045         pointer for where to store the returned regs.
3046
3047         * decompose.c (mono_decompose_vtype_opts): Fix the comment to properly
3048         state the concern.
3049
3050         Fixes #471747, #471751 and #4734530 (in fact, it's a bunch of dups).
3051
3052 2009-05-20  Miguel de Icaza  <miguel@novell.com>
3053
3054         * aot-runtime.c (mono_aot_init): Use g_getenv to work on systems
3055         without getenv.
3056
3057 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
3058
3059         * aot-compiler.c (add_wrappers): Add StructureToPtr/PtrToStructure wrappers.
3060
3061         * basic.cs: Move the test_2_cprop_bug () test to generics.cs as it involves
3062         generics.
3063
3064 2009-05-20 Rodrigo Kumpera  <rkumpera@novell.com>
3065
3066         * local-propagation.c (mono_local_cprop): Avoid local propagation
3067         across paired add/sub if the first instruction dest reg is it's
3068         source reg. For example:
3069
3070         int_add_imm R12 <- R12 [1] clobbers: 1
3071         int_sub_imm R42 <- R12 [1] clobbers: 1
3072
3073         The cprop pass would wrongly const prop + 1 to int_sub_imm which doesn't
3074         maintain the math identify.
3075
3076         Fixes #505375.
3077
3078 2009-05-20  Andreia Gaita  <avidigal@novell.com>
3079
3080         * Makefile.am: avoid going on the network just to get the revision,
3081         use git log instead
3082
3083 2009-05-19  Massimiliano Mantione  <massi@ximian.com>
3084
3085         Fixed estimate for short branches on amd64 (they were off mark, and
3086         enabling call prolog-epilog instrumentations caused assertions).
3087         * mini.h (struct MonoBasicBlock): added max_length field to hold the
3088         estimate for the maximum length of this basic block.
3089         * mini-amd64.c:
3090         - mono_arch_emit_prolog: compute max_length for each basic block
3091           (instead of max_offset), and inflate size estimate also for entry bb
3092           in case of code instrumentation.
3093         - mono_arch_output_basic_block: get rid of "cpos" (the current
3094           estimated "position" in the code), and always use "offset" instead,
3095           which is accurate; at the beginning of the function quickly recompute
3096           max_offset for all the remaining blocks, starting from the current
3097           cfg->code_len (which is correct, and not estimated) and using the
3098           estimated block lengths computed previously.
3099
3100 2009-05-17  Zoltan Varga  <vargaz@gmail.com>
3101
3102         * exceptions-ppc.c: Remove the caching from the trampoline creation 
3103         functions, it is already done in the caller.
3104
3105         * mini-trampolines.c (mono_llvm_vcall_trampoline): Fix the llvm build.
3106
3107         * mini-ppc.h mini-arm.h mini-x86.h mini-amd64.h: Add 
3108         MONO_ARCH_GSHARED_SUPPORTED define.
3109
3110         * mini.c (mini_init): Use the MONO_ARCH_GSHARED_SUPPORTED define.
3111
3112         * mini-arm.c mini.c: Get rid of the unused mono_arch_fixup_jinfo ()
3113         function.
3114
3115 2009-05-16  Zoltan Varga  <vargaz@gmail.com>
3116
3117         * jit-icalls.c (mono_helper_compile_generic_method): Get rid of the 
3118         call to mono_marshal_get_rgctx_invoke ().
3119
3120         * mini.c method-to-ir.c mini-trampolines.c: Get rid of the usage of
3121         mono_marshal_get_static_rgctx_invoke (), all platforms which support
3122         gshared use the static rgctx trampolines now.
3123         
3124         * mini.c (mini_init): Call mono_set_generic_sharing_supported () if the
3125         platform supports it.
3126
3127 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
3128
3129         * mini-arm.c (mono_arch_allocate_vars): Correctly save R5 when using AOT.
3130
3131         * aot-compiler.c (emit_method_code): Avoid duplicate labels for methods.
3132
3133 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
3134
3135         * mini-ppc.c (mono_arch_emit_exceptions): Nullify the processed patches.
3136
3137         * tramp-ppc.c (mono_arch_nullify_class_init_trampoline): Implement this
3138         for ppc.
3139
3140 2009-05-15  Massimiliano Mantione  <massi@ximian.com>
3141
3142         Made it possible for mono_arch_instrument_epilog to preserve
3143         argument registers, otherwise instrumenting the "epilogue" before
3144         a tail call would clobber them.
3145         * mini.h: Added "mono_arch_instrument_epilog_full" prototype, which
3146         if like mono_arch_instrument_epilog but with an additional parameter
3147         that states if argument registers must be preserved.
3148         * mini.c: implemented mono_arch_instrument_epilog as a call to
3149         mono_arch_instrument_epilog_full without asking to preserve argument
3150         registers (this makes the existing code work as usual).
3151         * mini-amd64.c:
3152         - mono_arch_instrument_epilog: add parameter to transform it into
3153         mono_arch_instrument_epilog_full, and preserve argument registers
3154         when required.
3155         - mono_arch_output_basic_block, OP_TAILCALL case: call
3156         mono_arch_instrument_epilog_full.
3157         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
3158         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-x86.c:
3159         only transformed mono_arch_instrument_epilog into
3160         mono_arch_instrument_epilog_full.
3161
3162 2009-05-15  Geoff Norton  <gnorton@novell.com>
3163
3164         * mini-darwin.c: This works on arm now.
3165
3166 2009-05-14  Geoff Norton  <gnorton@novell.com>
3167
3168         * jit.h, driver.c: Allow full-aot to be decided programatically by the
3169         embedding api.
3170
3171 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
3172
3173         * aot-compiler.c (emit_method_code): Skip a few more characters in the debug
3174         label names.
3175
3176         * mini-trampolines.c (mono_magic_trampoline): Handle static rgctx invoke
3177         wrappers during full aot mode correctly.
3178
3179         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle shared generic
3180         methods correctly.
3181
3182         * aot-compiler.c (mono_aot_method_hash): Use our internal version of
3183         mono_metadata_type_hash ().
3184
3185 2009-05-14  Massimiliano Mantione  <massi@ximian.com>
3186
3187         * mini.h, mini-codegen.c, mini-alpha.c, mini-amd64.c, mini-arm.c,
3188         mini-hppa.h, mini-hppa.c, mini-ia64.c, mini-mips.h, mini-mips.c,
3189         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-886.c:
3190         Removed MONO_INST_BRLABEL from the instruction flags, and the
3191         remaining code that used it, because we do not support branches inside
3192         basic blocks (and branch target labels) anymore.
3193         * Makefile.am: As part of the above cleanup, remove reference to
3194         BURG files which don't exist anymore.
3195
3196 2009-05-14  Zoltan Varga  <vargaz@gmail.com>
3197
3198         * image-writer.c (asm_writer_emit_local_symbol): Make this a nop on
3199         osx.
3200
3201         * mini-mips.c mini-mips.h exceptions-mips.c: Transition the mips backend
3202         to use mono_arch_throw_corlib_exception.
3203
3204         * mini-ppc.c mini-ppc.h exceptions-ppc.c: Use 
3205         mono_arch_throw_corlib_exception for throwing corlib exceptions.
3206
3207         * aot-runtime.c (decode_patch): Allocate the data for R4/R8 from the
3208         domain mempool.
3209
3210         * mini.c (mono_patch_info_dup_mp): Copy the table of switch targets too.
3211
3212         * aot-compiler.c: Emit a local symbol prefixed with the assembly name 
3213         for the got to make debugging easier and to avoid confusing it with the
3214         system got.
3215         
3216         * aot-compiler.c (emit_method_code): Emit a C style symbol for each
3217         method so a breakpoint can be set when using gdb.
3218
3219 2009-05-13  Zoltan Varga  <vargaz@gmail.com>
3220
3221         * aot-compiler.c (mono_aot_method_hash): Implement this properly based
3222         on mono_method_get_imt_slot ().
3223
3224         * aot-runtime.c (find_extra_method_in_amodule): Get rid of the
3225         num_decodes variables.
3226
3227         * aot-compiler.c (mono_aot_method_hash): Revert part of the last
3228         change as it doesn't seem to work.
3229         
3230         * aot-compiler.c (mono_aot_method_hash): Improve the hashing of
3231         wrappers.
3232
3233 2009-05-12  Zoltan Varga  <vargaz@gmail.com>
3234
3235         * aot-compiler.c mini.c mini-amd64.h mini-arm.h: Kill 
3236         MONO_ARCH_FULL_AOT_IMT_SUPPORTED define, both platforms now support imt.
3237
3238         * mini.c (mini_init): Install mono_aot_get_imt_thunk as the IMT thunk
3239         builder when using full aot.
3240
3241         * mini-amd64.c (mono_arch_build_imt_thunk): Don't handle the full-aot case
3242         here, it is already handled.
3243         
3244         * mini-arm.c (mono_arch_emit_imt_argument): Pass the dynamic imt arg
3245         correctly for IMT.
3246
3247         * aot-compiler.c (arch_emit_imt_thunk): Implement this for ARM.
3248
3249         * mini-arm.h: Enable IMT for full aot.
3250         
3251         * aot-compiler.c (mono_compile_assembly): Don't emit imt thunk if the
3252         arch doesn't support it.
3253
3254         * mini.c (mini_init): Don't disable IMT for full aot if the
3255         architecture supports it.
3256
3257         * mini.h (MonoAotTrampoline): New enum containing the different types
3258         of 'numerous' trampolines.
3259         (MONO_AOT_FILE_VERSION): Bump this.
3260
3261         * aot-compiler.c aot-runtime.c: Unify the handling of specific and
3262         static rgctx trampolines. Add support for full-aot IMT thunks.
3263
3264         * mini-amd64.h: Enable IMT for full aot.
3265
3266         * TestDriver.cs: Add a CategoryAttribute class and an --exclude option
3267         to exclude tests belonging to a category.
3268
3269         * generics.cs: Mark some tests with a !FULLAOT category.
3270
3271         * Makefile.am (fullaotcheck): Run tests with --exclude !FULLAOT. Include
3272         generics tests.
3273
3274 2009-05-11  Zoltan Varga  <vargaz@gmail.com>
3275
3276         * aot-compiler.c (emit_and_reloc_code): Move the implementation of
3277         MONO_PATCH_INFO_GOT_OFFSET to a separate arch-specific function.
3278         (emit_plt): Fix a warning.
3279
3280 2009-05-10  Zoltan Varga  <vargaz@gmail.com>
3281
3282         * aot-compiler.c aot-runtime.c: Fix the build by moving is_shared_got_patch
3283         back into aot-compiler.c to a place where the other functions shared by
3284         the runtime and aot compiler are.
3285         
3286         * aot-compiler.c aot-runtime.c: Emit the got addr using a separate symbol,
3287         as done previously, instead of in MonoAotFileInfo, since pointers might have
3288         alignment requirements.
3289
3290         * mini.h: Bump AOT file format version.
3291
3292 2009-05-10  Miguel de Icaza  <miguel@novell.com>
3293
3294         * aot-runtime.c (mono_aot_is_shared_got_patch): Move this routine
3295         that is used at runtime from the aot-compiler.c, this makes it
3296         work on setups that remove the AOT compiler from the output
3297         image. 
3298
3299 2009-05-09  Zoltan Varga  <vargaz@gmail.com>
3300
3301         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Implement this for
3302         PPC.
3303
3304         * mini-ppc.h: Enable static rgctx trampolines for ppc.
3305
3306         * mini-<ARCH>.h: Kill the MONO_ARCH_ENABLE_EMIT_STATE_OPT define.
3307
3308         * decompose.c (mono_decompose_long_opts): Move the ppc/sparc specific 
3309         stuff to mono_arch_decompose_long_opts ().
3310         (mono_decompose_opcode): Remove some dead code.
3311
3312 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
3313
3314         * method-to-ir.c (mono_method_to_ir): Fix boostrap of non amd64 builds
3315         cmethod can be null for quite a some reasons.
3316
3317 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
3318
3319         * method-to-ir.c (mono_method_to_ir): Fix non amd64 builds.
3320
3321 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
3322
3323         * aot-compiler.c (arch_emit_got_access): Fix the aot-not-supported build.
3324
3325 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
3326
3327         * method-to-ir.c (mono_emit_call_args): Add a 'tail' flag argument.
3328         (mono_method_to_ir): Use MONO_ARCH_USE_OP_TAIL_CALL macro to determine
3329         whenever to make tail calls using OP_TAIL_CALL. Enable support for tail
3330         calls returning structures by addr on amd64.
3331
3332         * mini-amd64.h (MONO_ARCH_USE_OP_TAIL_CALL): New arch-specific macro.
3333
3334         * iltests.il.in: Restructure the tail call tests a bit.
3335         
3336 2009-05-07  Zoltan Varga  <vargaz@gmail.com>
3337
3338         * aot-compiler.c (add_wrappers): Add remoting-invoke-with-check wrappers
3339         for virtual methods too.
3340
3341 2009-05-06  Raja R Harinath  <harinath@hurrynot.org>
3342
3343         * method-to-ir.c (mono_method_to_ir): Revert change of 2009-05-02
3344         due to regression in verifying System.dll.
3345
3346 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
3347
3348         * debug-mini.c (mono_debugger_method_has_breakpoint): Allow breakpoints
3349         in dynamic methods.
3350
3351         * dwarfwriter.c (emit_class_dwarf_info): Add support for generic
3352         instances.
3353
3354         * aot-compiler.c aot-runtime.c: Use our own hash function instead of
3355         g_str_hash () which can change.
3356
3357         * driver.c (mini_regression): Disable optimizations not supported by
3358         the cpu. Fixes #500019.
3359
3360         * aot-runtime.c (mono_aot_get_unwind_info): Fix the --enable-minimal=aot
3361         build.
3362
3363 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
3364
3365         * mini-llvm.c (mono_llvm_emit_method): Update the OP_TLS_GET implementation
3366         to the latest LLVM code.
3367
3368 2009-05-05  Zoltan Varga  <vargaz@gmail.com>
3369
3370         * genmdesc.pl (load_opcodes): Fix this after the TARGET_... changes.
3371
3372 2009-05-04  Zoltan Varga  <vargaz@gmail.com>
3373
3374         * mini-llvm.c (mono_llvm_emit_method): Implement TLS support on 
3375         x86/amd64.
3376
3377         * aot-compiler.c (encode_patch_list): Simplify this considerably as we are
3378         no longer saving offsets, so just save the patch types along with the other
3379         info.
3380         * aot-runtime.c (load_patch_info): Update after the changes to 
3381         encode_patch_list ().
3382         (decode_got_entry): Removed, merged into load_patch_info ().
3383         (is_shared_got_patch): Removed, call the same function from
3384         aot-compiler.c.
3385
3386         * mini.h: Bump aot file format version.
3387         
3388         * aot-compiler.c aot-runtime.c: Resurrect static linking support. Kill the
3389         half-finished no-dlsym code.
3390
3391         * aot-runtime.c (load_method): Kill the old and bit-rotten use_loaded_code
3392         option.
3393
3394         * mini-<ARCH>.h mini-trampolines.c aot-runtime.c: Kill the 
3395         MONO_ARCH_HAVE_CREATE_TRAMPOLINE_FROM_TOKEN define.
3396
3397 2009-05-02  Zoltan Varga  <vargaz@gmail.com>
3398
3399         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Increase the
3400         buffer length to work with AOT code.
3401
3402         * method-to-ir.c (mono_method_to_ir): Handle loading errors in the
3403         ldfld/stfld opcodes.
3404
3405         * exceptions-x86.c (mono_arch_get_throw_exception_by_name): Simplify this
3406         as it is not used.
3407
3408         * mini-llvm.c mini-x86.c: Implement 32 bit and x86 support.
3409
3410         * ssa.c (mono_ssa_compute): Don't skip I8 values when using LLVM.
3411
3412         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Update to the latest
3413         LLVM API.
3414
3415         * mini.c (mini_method_compile): Set the from_llvm flag in MonoJitInfo
3416         if needed. Don't decompose long operations when using llvm.
3417
3418 2009-05-01  Zoltan Varga  <vargaz@gmail.com>
3419
3420         * aot-compiler.c aot-runtime.c: Use mono_pagesize () instead of the
3421         PAGESIZE constant.
3422
3423         * aot-runtime.c (load_aot_module): Get rid of another mprotect call.
3424
3425 2009-05-03  Martin Baulig  <martin@ximian.com>
3426
3427         * debug-debugger.c (debugger_insert_source_breakpoint): Don't call
3428         mono_debugger_insert_method_breakpoint() since the class init
3429         handler we're inserting at the top of the method already gives us
3430         a notification.
3431
3432 2009-04-30  Zoltan Varga  <vargaz@gmail.com>
3433
3434         * decompose.c (mono_decompose_long_opts): Move the implementation of LNEG
3435         to mono_arch_decompose_long_opts () for x86 and arm.
3436
3437 2009-04-29  Zoltan Varga  <vargaz@gmail.com>
3438
3439         * mini-codegen.c (mono_regstate_alloc_int): Use __x86_64__ instead of
3440         TARGET_AMD64 here.
3441
3442 2009-04-28  Zoltan Varga  <vargaz@gmail.com>
3443
3444         * *.h *.c: Use TARGET_<ARCH> defines instead of __<arch>__ defines in the
3445         JIT code.
3446
3447 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
3448
3449         * aot-runtime.c (mono_aot_create_specific_trampoline): Add a stat for the
3450         number of trampolines used in full-aot mode.
3451
3452         * aot-compiler.c: Add an ntrampolines option to set the number of 
3453         trampolines emitted in full-aot mode.
3454
3455 2009-04-27  Zoltan Varga  <vargaz@gmail.com>
3456
3457         * mini-llvm.c (mono_llvm_emit_method): Implement OP_CHECK_THIS using
3458         a volatile load. Get rid of get_tempname (), llvm assigns names
3459         automatically.
3460
3461         * mini-llvm-cpp.cpp (mono_llvm_build_volatile_load): New instruction
3462         builder function.
3463
3464         * mini-llvm.c (mono_llvm_emit_method): Don't call LLVMGetParam on
3465         a value.
3466
3467         * abcremoval.c (REPORT_ABC_REMOVAL): Don't output messages at verbose
3468         level 1.
3469
3470         * mini-codegen.c (mono_local_regalloc): Prevent sreg1/dreg to be allocated
3471         to the same register as a fixed sreg2. Fixes #497271.
3472
3473         * iltests.il.in: Add a new test.
3474
3475 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
3476
3477         * mini-amd64.c: Use moves instead of pushes for passing arguments on the
3478         stack, since pushes complicate exception handling.
3479
3480         * exceptions-amd64.c (mono_arch_find_jit_info): Don't pop the arguments of
3481         the stack if they are passed using moves.
3482
3483         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
3484
3485         * method-to-ir.c (mono_method_to_ir): Disable fast virtual generic methods
3486         when using llvm.
3487
3488         * mini-llvm.c (mono_llvm_emit_method): Call jit icall wrappers, not the 
3489         icalls themselves. Convert arguments of FCOMPARE. Convert the destination
3490         of FMOVE if it is an R4.
3491
3492 2009-04-25  Zoltan Varga  <vargaz@gmail.com>
3493
3494         * mini-ops.h: Add OP_LLVM_OUTARG_VT opcode.
3495
3496         * mini.h (LLVMCallInfo): New structure to store calling convention 
3497         information for the LLVM back end similar to the CallInfo structures in 
3498         the back-ends.
3499
3500         * mini-amd64.c (mono_arch_get_llvm_call_info): New arch function to return
3501         call information in a format usable by LLVM.
3502         (mono_arch_emit_call): Move the LLVM handling code to mono_llvm_emit_call ().
3503
3504         * method-to-ir.c (mono_emit_call_args): Emit calls using 
3505         mono_llvm_emit_call () when compiling using LLVM.
3506
3507         * mini-llvm.c: Implement support for passing/receiving valuetypes. Add
3508         comments to all functions. Fix memory leaks. Add a public init/cleanup
3509         function.
3510
3511         * mini.c: Call the llvm init/cleanup functions in mini_init()/cleanup().
3512
3513         * method-to-ir.c (handle_array_new): Disable llvm when calling the vararg
3514         mono_array_new_va () jit icall.
3515         
3516 Fri Apr 24 16:44:08 CEST 2009 Paolo Molaro <lupus@ximian.com>
3517
3518         * Makefile.am, genmdesc.c, genmdesc.pl: tiny refactor to allow
3519         multiple machine description files to be specified.
3520         * mini-ops.h: fixes for cross-compilation.
3521
3522 2009-04-22  Miguel de Icaza  <miguel@novell.com>
3523
3524         * aot-runtime.c (make_writable): Use mono_mprotect to simplify
3525         some porting work.
3526
3527 2009-04-22  Zoltan Varga  <vargaz@gmail.com>
3528
3529         * method-to-ir.c (mono_method_to_ir): Force init_locals to be TRUE
3530         to prevent asserts in various passes. Fixes #497220.
3531
3532 2009-04-21  Zoltan Varga  <vargaz@gmail.com>
3533
3534         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove
3535         a racy assert.
3536
3537         * aot-compiler.c aot-runtime.c: Emit the unwind info into a separate
3538         table to avoid duplicates.
3539
3540         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
3541         
3542         * aot-compiler.c (emit_method_code): Avoid writing symbols if the nodebug
3543         option is used.
3544
3545 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
3546
3547         * mini.c (mini_method_verify): Fail fulltrust code if the exception
3548         is for method or field access.
3549
3550 2009-04-20  Zoltan Varga  <vargaz@gmail.com>
3551
3552         * mini-llvm-cpp.cpp (mono_llvm_dump_value): New helper function to print
3553         a Value to stdout.
3554
3555         * mini-llvm.c (mono_llvm_emit_method): Use it.
3556         
3557         * mini-llvm.c (type_to_llvm_type): Fix the mapping of enums.
3558         (mono_llvm_emit_method): Add support for CAS. Fix handling of CSET opcodes
3559         on volatile values.
3560
3561         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add support for 
3562         synchronized methods.
3563
3564         * mini.c (mini_method_compile): Disable LLVM for dynamic methods.
3565
3566         * mini.c (mini_method_compile): Enable ABCREM when running with LLVM.
3567
3568         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOADI4_MEM/
3569         OP_LOADI8_MEM.
3570
3571         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add a MONO_LLVM env variable
3572         allowing some options to be set dynamically.
3573
3574 2009-04-19  Zoltan Varga  <vargaz@gmail.com>
3575
3576         * mini-llvm.c (mono_llvm_emit_method): Handle compares followed by an
3577         unconditional branch.
3578
3579         * mini.h (MonoTrampolineType): Add new trampoline type 
3580         'MONO_TRAMPOLINE_LLVM_VCALL' which handles virtual calls made from LLVM
3581         compiled code.
3582
3583         * mini-trampolines.c (mono_llvm_vcall_trampoline): New C trampoline 
3584         function.
3585
3586         * mini-trampolines.c (mono_create_llvm_vcall_trampoline): New trampoline
3587         creation function.
3588
3589         * mini.c (mini_init): Avoid using the common vtable trampoline when LLVM
3590         is enabled. Instead, use the llvm vcall trampoline.
3591         
3592         * mini-trampolines.c (mono_get_vcall_slot_addr): New helper function.
3593
3594         * mini-trampolines.c tramp-amd64.c tramp-x86.c: Use it.
3595         
3596         * mini-<ARCH>.c: Get rid of the identical mono_arch_get_vcall_slot_addr ()
3597         functions.
3598
3599         * mini-<ARCH>.h mini-trampolines.c mini.c: Get rid of 
3600         MONO_ARCH_COMMON_VTABLE_TRAMPOLINE, it is supported by all archs.
3601
3602         * mini-ia64.c (mono_arch_lowering_pass): Null out the sregs of the
3603         OP_IA64_CSET opcode.
3604
3605         * mini.c: Fix a warning.
3606
3607         * mini-llvm.c (mono_llvm_emit_method): Convert arguments of SWITCH and
3608         THROW to the appropriate llvm type.
3609
3610 2009-04-18  Zoltan Varga  <vargaz@gmail.com>
3611
3612         * mini.c (mini_method_compile): Add statistics for methods JITted
3613         with/without LLVM.
3614
3615 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
3616
3617         * method-to-ir.c: Fix the computation of ins_sreg_counts for ia64
3618         OP_IA64_CMP_<cond>_IMM opcodes.
3619
3620 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
3621
3622         * mini-llvm.c (emit_cond_system_exception): Implement throwing of
3623         corlib exceptions.
3624
3625         * dwarfwriter.c (mono_dwarf_writer_emit_method): Handle --regression
3626         correctly.
3627
3628         * mini-llvm.c (type_to_llvm_type): Avoid accessing t->data.klass for
3629         GENERICINST.
3630
3631 2009-04-17  Atsushi Enomoto  <atsushi@ximian.com>
3632
3633         * mini-exceptions.c : add thread id to EXCEPTION trace message.
3634
3635 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
3636
3637         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Fix AOT
3638         support.
3639
3640         * tramp-x86.c (mono_arch_get_unbox_trampoline): Implement static
3641         rgctx invoke trampolines for x86.
3642
3643         * mini-x86.c (mono_arch_output_basic_block): Add a few nops before
3644         indirect calls to simplify get_vcall_slot_addr (). Fixes #494567.
3645         (mono_arch_get_vcall_slot): Simplify this.
3646
3647 2009-04-16  Zoltan Varga  <vargaz@gmail.com>
3648
3649         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Move the calls to
3650         mono_debug_add_delegate_trampoline () to get_delegate_invoke_impl ().
3651
3652 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
3653
3654         * aot-compiler.c tramp-arm.c mini-arm.c: Implement static rgctx 
3655         trampolines for ARM. Add full-aot support for delegate invokes for ARM.
3656
3657         * mini-trampolines.c (mono_magic_trampoline): Fix the build.
3658
3659         * liveness.c (visit_bb): Remove a needless assert.
3660
3661 2009-04-13  Zoltan Varga  <vargaz@gmail.com>
3662
3663         * mini-trampolines.c (mono_create_delegate_trampoline): Delegate the
3664         full aot support to the arch specific code.
3665
3666         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Add full-aot support.
3667
3668         * aot-compiler.c (emit_trampolines): Emit delegate invoke impl trampolines.
3669
3670         * aot-compiler.c (emit_named_code): Rename this to 'emit_trampoline'.
3671         
3672         * mini-amd64.c (mono_arch_get_delegate_invoke_impls): New function to
3673         collect information about the delegate invoke impl trampolines.
3674
3675         * mini.h (MonoAotTrampInfo): New structure collecting the information needed
3676         to save trampolines during full-aot mode.
3677
3678         * mini-trampolines.c (mono_create_static_rgctx_trampoline): New trampoline
3679         creation function which returns a trampoline which sets the rgctx
3680         argument.
3681         (mono_magic_trampoline): Use the rgctx trampoline instead of an rgctx
3682         wrapper if possible.
3683         (mono_delegate_trampoline): Ditto.
3684
3685         * mini.c (mono_jit_runtime_invoke): Ditto.
3686
3687         * tramp-amd64.c: Add an implemention of static rgctx trampolines for AMD64.
3688         
3689         * aot-compiler.c aot-runtime.c: Add support for static rgctx trampolines.
3690
3691         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
3692         
3693 2009-04-12  Zoltan Varga  <vargaz@gmail.com>
3694
3695         * mini-ia64.c (mono_arch_lowering_pass): Use NULLIFY_INS instead of
3696         just setting the opcode to OP_NOP.
3697
3698 2009-04-11  Zoltan Varga  <vargaz@gmail.com>
3699
3700         * mini.c (mini_method_compile): Put the last change inside an 
3701         #ifdef MONO_ARCH_HAVE_LIVERANGE_OPS.
3702         
3703         * mini.c (mini_method_compile): Disable sharing of stack slots/registers
3704         and extend live ranges to cover the whole method when using xdb.
3705
3706         * jit-icalls.c (ldvirtfn_internal): Avoid creating rgctx wrappers here,
3707         do it in the trampolines.
3708
3709         * mini-trampolines.c (mono_magic_trampoline): Add an rgctx wrapper if
3710         needed.
3711
3712         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
3713         
3714         * method-to-ir.c (mono_method_to_ir): Avoid using the fast virtual method
3715         call code in full-aot mode since IMT is disabled there.
3716         (mono_method_to_ir): Inline ldfld wrappers which return structures too, the
3717         new JIT no longer has that restriction.
3718
3719         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
3720
3721         * aot-compiler.c (emit_extra_methods): Emit the wrapper method names in
3722         a more compact format.
3723         (mono_aot_wrapper_name): New function to return a unique name for a
3724         wrapper method, also used by the AOT runtime.
3725
3726         * aot-runtime.c (find_extra_method_in_amodule): Update after the changes to
3727         aot-compiler.c.
3728
3729         * aot-compiler.c (add_generic_class): Add the helper methods from T[]
3730         when a ICollection<T> etc is encountered.
3731         (add_generic_instances): Process method arguments/locals too.
3732         (emit_trampolines): Emit unbox trampolines for extra methods too. Shorten
3733         trampoline names.
3734
3735         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle extra methods too.
3736         
3737 2009-04-10  Zoltan Varga  <vargaz@gmail.com>
3738
3739         * aot-compiler.c: Disable the AOT compiler if the JIT is disabled.
3740
3741         * dwarfwriter.c (emit_type): Emit byref to reference types as 'int' for now.
3742
3743         * decompose.c (mono_decompose_opcode): Make this return a MonoInst*
3744         representing the result of the decomposition. Nullify instructions
3745         instead of setting them to OP_NOP since nops can't have registers
3746         set.
3747
3748 2009-04-09  Zoltan Varga  <vargaz@gmail.com>
3749
3750         * aot-compiler.c (mono_compile_assembly): Split this huge function into
3751         smaller parts. Add 'nodebug' option to prevent generation of DWARF debug
3752         info. Strip 'mapping symbols' on ARM.
3753
3754         * iltests.il.in (test_0_fconv_to_i): Disable this on ARM too.
3755         
3756         * genmdesc.pl: Applied patch by Martin Fuzzey (mfuzzey@parkeon.com). Sync
3757         this with the native genmdesc.
3758
3759 2009-04-08  Bill Holmes  <billholmes54@gmail.com>
3760
3761         * aot-runtime.c:  Fixing the MSVC build.
3762
3763         Code is contributed under MIT/X11 license.
3764
3765 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
3766
3767         * mini-llvm.c (mono_llvm_emit_method): Pass i1/i2 arguments as i4 since 
3768         JITted code depends on it.
3769
3770 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
3771
3772         * aot-compiler.c: Use new MonoGenericParam accessors.
3773
3774 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
3775
3776         Reduce memory usage and improve correctness wrt MonoGenericParam
3777         * aot-runtime.c (decode_klass_ref): Simplify generic parameter
3778         handing.  Avoid allocating MonoGenericParams, but use the ones in
3779         the container itself.
3780
3781 2009-04-07  Miguel de Icaza  <miguel@novell.com>
3782
3783         * tasklets.c: Return exceptions in the out argument.
3784
3785 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
3786
3787         * mini-llvm.c (mono_llvm_emit_method): Fix alignment in the LOCALLOC_IMM
3788         opcode. Use pointer types in more places instead of casting them to 
3789         integers.
3790
3791         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Create a pass manager to run
3792         optimizations.
3793         (mono_llvm_optimize_method): New helper function to optimize a method.
3794
3795         * method-to-ir.c (mono_emit_widen_call_res): Extract the call result 
3796         widening code so it could be called from more places.
3797         (mono_method_to_ir): Call mono_emit_widne_call_res () in several more
3798         code paths in the call opcodes.
3799
3800 Mon Apr 6 14:19:54 CEST 2009 Paolo Molaro <lupus@ximian.com>
3801
3802         * exceptions-amd64.c, mini-amd64.h: amd64 support code for continuations.
3803
3804 2009-04-06  Zoltan Varga  <vargaz@gmail.com>
3805
3806         * dwarfwriter.c: Use _ to separate class name 
3807         components as gdb can't handle '.'. Represent reference variables
3808         as 'class <NAME>&'.
3809         
3810         * mini.h (MonoCompile): Add locals_min_stack_offset/locals_max_stack_offset.
3811
3812         * mini-amd64.c (mono_arch_allocate_vars): Save min/max stack offset.
3813         
3814         * mini-gc.c: New file, contains the SGEN GC related parts of the JIT.
3815
3816         * gc-test.cs: New file with GC stack marking tests.
3817         
3818         * mini-arm.c (mono_arch_output_basic_block): Fix int->float conversion of
3819         negative numbers for vfp.
3820
3821         * basic-float.cs: Add a test.
3822         
3823 Mon Apr 6 14:12:10 CEST 2009 Paolo Molaro <lupus@ximian.com>
3824
3825         * exceptions-x86.c, mini-x86.h: x86 support code for continuations.
3826
3827 Mon Apr 6 14:09:53 CEST 2009 Paolo Molaro <lupus@ximian.com>
3828
3829         * tasklets.h, tasklets.c, mini.h, mini.c, Makefile.am: arch-indep
3830         part of tasklet/continuation support.
3831
3832 2009-04-05  Zoltan Varga  <vargaz@gmail.com>
3833
3834         * mini-llvm.c (mono_llvm_emit_method): Move the handling of
3835         amd64 opcodes inside an ifdef.
3836
3837         * dwarfwriter.c: Emit inheritance information for classes, emit fields
3838         of complex types.
3839         
3840         * dwarfwriter.c (emit_type): Emit the class info for classes.
3841
3842 2009-04-04  Zoltan Varga  <vargaz@gmail.com>
3843
3844         * Makefile.am (AM_CXXFLAGS): Add GLIB_CFLAGS to this.
3845
3846         * mini-llvm-cpp.h: New header file for mini-llvm-cpp.cpp.
3847
3848         * mini-llvm.c: Remove unused fields from EmitContext, fix memory leaks.
3849
3850         * ssa.c (mono_ssa_compute): Fix some memory leaks.
3851
3852 2009-04-03  Zoltan Varga  <vargaz@gmail.com>
3853
3854         * mini.c mini-amd64.c method-to-ir.c: Use COMPILE_LLVM in a few more places.
3855
3856         * mini-llvm.c: Update comments.
3857
3858         * mini.h (COMPILE_LLVM): New macro.
3859
3860         * decompose.c (mono_decompose_opcode): Use the COMPILE_LLVM macro.
3861
3862         * ssa.c (mono_ssa_compute): Ditto.
3863         
3864         * unwind.c (mono_unwind_get_ops_from_fde): New helper function to extract
3865         the unwind ops from a DWARF FDE.
3866
3867         * mini-llvm.c: Implement generation of unwind info for LLVM compiled
3868         methods by extracting the dwarf unwind ops from the unwind info generated
3869         by LLVM.
3870         
3871         * mini-llvm.c (mono_llvm_emit_method): Enable support for non-IMT virtual
3872         calls.
3873
3874         * mini-amd64.c (mono_arch_get_vcall_slot): Handle more kinds of the SIB
3875         addressing modes.
3876
3877 2009-04-02  Zoltan Varga  <vargaz@gmail.com>
3878
3879         * Makefile.am (llvm_sources): Enable this.
3880
3881         * mini.c (mini_method_compile): Add support for compiling with LLVM, 
3882         failing back to the JIT if something cannot be handled.
3883
3884         * mini-amd64.c (mono_arch_emit_call): Emit the arguments more simple when
3885         compiling with LLVM.
3886
3887         * decompose.c (mono_decompose_opcode): Avoid decomposing some opcodes when
3888         compiling with LLVM.
3889
3890         * method-to-ir.c (mono_method_to_ir): Avoid decomposing SWITCH when 
3891         compiling with LLVM.
3892
3893         * mini-ops.h: Add a few opcodes needed by LLVM.
3894
3895         * dwarfwriter.c (mono_dwarf_writer_emit_method): Avoid crashes if the method
3896         has no unwind info.
3897
3898         * mini-llvm.c mini-llvm-cpp.cpp: New files containing the experimental llvm
3899         backend.
3900
3901         * mini-arm.c (mono_arch_output_basic_block): Fix the ARM_FPU_NONE build.
3902
3903         * mini-arm.h mini-arm.c cpu-arm.md: Finish VFP support.
3904
3905 2009-04-01  Mark Probst  <mark.probst@gmail.com>
3906
3907         * regalloc.h, mini-codegen.c: Make vassign members gint32 to fix
3908         ridiculously large methods.
3909
3910 2009-03-31  Martin Baulig  <martin@ximian.com>
3911
3912         * debug-debugger.c (debugger_remove_breakpoint): Call
3913         mono_debugger_remove_class_init_callback ().
3914
3915 2009-03-31  Zoltan Varga  <vargaz@gmail.com>
3916
3917         * aot-compiler.c (mono_compile_assembly): Call img_writer_emit_start ()
3918         right before emitting code, not at the start.
3919
3920         * mini.c (mono_postprocess_patches): Extract this into a separate function
3921         from mono_codegen ().
3922
3923         * ssa.c (mono_ssa_compute): Set ins->klass for every PHI node, handle
3924         byref types correctly.
3925
3926 2009-03-30  Zoltan Varga  <vargaz@gmail.com>
3927
3928         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix a crash introduced
3929         by the last change.
3930
3931 2009-03-29  Zoltan Varga  <vargaz@gmail.com>
3932
3933         * mini-amd64.c (mono_arch_output_basic_block): Emit a few nops before 
3934         indirect calls, this avoids problems where get_vcall_slot () would get
3935         confused by the native code for the instruction preceeding the call.
3936         (mono_arch_get_vcall_slot): Simplify this.
3937         (mono_arch_emit_imt_argument): Remove this, it is no longer needed.
3938
3939         * mini-ops.h: Fix the definitions of the OP_IA64 opcodes, since the local
3940         register allocator now seems to depend on them instead of the data in
3941         cpu-<ARCH>.md.
3942
3943         * mini.c (mini_method_compile): Throw the correct type of exception if
3944         mono_method_get_header () fails because of a loading error.
3945
3946 2009-03-28  Zoltan Varga  <vargaz@gmail.com>
3947
3948         * mini.c (mini_method_compile): Clear the loader error if the method
3949         header cannot be decoded.
3950
3951         * mini-trampolines.c (mono_magic_trampoline): Handle generic virtual 
3952         interface methods on proxies correctly.
3953
3954         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix handling of the
3955         this argument for vtype methods. Add precise liveness info for arguments.
3956
3957         * mini-codegen.c (mono_print_ins_index): Print the vreg of the
3958         LIVERANGE_START/END opcodes.
3959
3960         * method-to-ir.c (mono_spill_global_vars): Fix liverange calculation
3961         for arguments and values in registers.
3962
3963 2009-03-27  Zoltan Varga  <vargaz@gmail.com>
3964
3965         * method-to-ir.c (mono_method_to_ir): Disable tail calls for calls which
3966         return a valuetype. Fixes #487518.
3967
3968         * iltests.il: Add a test.
3969         
3970         * aot-compiler.c: Use mono_thread_create () to create helper threads.
3971
3972         * mini-trampolines.c (mono_delegate_trampoline): Handle static delegates
3973         closed over a null reference correctly.
3974
3975 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
3976
3977         * method-to-ir.c (mono_handle_global_vregs): Fix support for ternary ops.
3978
3979 2009-03-25  Mark Probst  <mark.probst@gmail.com>
3980
3981         * mini-codegen.c (mono_local_regalloc): Don't let sregs get
3982         allocated to the same registers as fixed sregs.
3983
3984 2009-03-24  Mark Probst  <mark.probst@gmail.com>
3985
3986         * mini-ops.h: New ternary ATOMIC_CAS ops replace the old
3987         ATOMIC_CAS_IMM ops.
3988
3989         * method-to-ir.c: Handle more cases for
3990         Interlocked.CompareExchange.
3991
3992         * cpu-x86.md, mini-x86.c, mini-x86.h, cpu-amd64.md, mini-amd64.c,
3993         mini-amd64.h, cpu-ppc.md, cpu-ppc64.md, mini-ppc.c, mini-ppc.h:
3994         ATOMIC_CAS implementations for x86, AMD64, PPC and PPC64.
3995
3996 2009-03-23  Zoltan Varga  <vargaz@gmail.com>
3997
3998         * aot-runtime.c (decode_method_ref): Fix a warning.
3999
4000         * unwind.c (mono_unwind_frame): Ditto.  
4001
4002 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
4003
4004         * aot-compiler.c (arch_emit_unbox_trampoline): Fix the binary writer support.
4005         (mono_compile_assembly): Enable the binary writer for full-aot as well.
4006
4007         * image-writer.c (do_reloc): Add support for the JUMP24 relocation,
4008         fix the handling of large values in the ALU_PC_G0_NC relocation.
4009
4010 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
4011
4012         * local-propagation.c method-to-ir.c local-propagation.c: Fix warnings.
4013
4014 2009-03-22  Mark Probst  <mark.probst@gmail.com>
4015
4016         * method-to-ir.c (mono_spill_global_vars): Support for ternary
4017         ops.
4018
4019 2009-03-22  Mark Probst  <mark.probst@gmail.com>
4020
4021         * method-to-ir.c: MINI_OP3 needs a comma.
4022
4023         * method-to-ir.c, mini.h, mini.c: Remove
4024         mono_init_op_sreg_counts ().
4025
4026 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
4027
4028         * mini-arm.c (mono_arch_output_basic_block): Fix aot support in
4029         OP_JMP.
4030         
4031         * mini-arm.c (mono_arch_build_imt_thunk): Disable the !fail_tramp
4032         assertion.
4033
4034         * mini-ops.h: Fix arguments of the MEMINDEX opcodes.
4035
4036         * mini-amd64.c (mono_arch_build_imt_thunk): Simplify the fail handling
4037         code somewhat.
4038
4039 2009-03-21  Mark Probst  <mark.probst@gmail.com>
4040
4041         * cfold.c, cprop.c, decompose.c, genmdesc.c, helpers.c, ir-emit.h,
4042         liveness.c, local-propagation.c, method-to-ir.c, mini-codegen.c,
4043         mini.c, mini.h, simd-intrinsics.c, ssa.c: Support for ternary IR
4044         operations.
4045
4046 2009-03-20  Zoltan Varga  <vargaz@gmail.com>
4047
4048         * driver.c: Change location of gc_wrapper.h.
4049
4050         * method-to-ir.c (mono_find_block_region): Handle try clauses nested
4051         inside finally clauses correctly. Fixes #485721.
4052
4053         * mini.c (mono_find_spvar_for_region): This needs to handle try regions
4054         after the change above.
4055
4056         * exceptions.cs: Add a test.
4057         
4058 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
4059
4060         * unwind.c (mono_unwind_ops_encode): Increase the size of the encode buffer.
4061
4062         * mini-amd64.c (mono_arch_emit_epilog): Remove the encoding of stack size
4063         into cfg->used_int_regs, it is not needed with the dwarf unwinder.
4064         (mono_arch_compute_omit_fp): Remove the emit_epilog () workaround.
4065
4066         * mini-amd64.c (mono_arch_compute_omit_fp): Add another check to avoid hitting
4067         the stack_alloc_size < (1 << 16) assertion in emit_prolog ().
4068
4069 2009-03-19  Sebastien Pouliot  <sebastien@ximian.com>
4070
4071         * method-to-ir.c: Allow CoreCLR to throw FieldAccessException. 
4072         Simplify logic for ensure_method_is_allowed_to_call_method. 
4073         Handle wrappers on callers.
4074
4075 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
4076
4077         * Makefile.am (fullaotcheck): Don't run the generics tests, some of
4078         them don't run yet.
4079
4080         * basic-simd.cs: Fix the names of some test methods.
4081
4082 2009-03-18  Geoff Norton  <gnorton@novell.com>
4083
4084         * mini.c: Only chain sigfpe if it wasn't generated in mangaed code.
4085
4086 2009-03-18  Zoltan Varga  <vargaz@gmail.com>
4087
4088         * dwarfwriter.c (token_handler): Fix a crash caused by the last change.
4089
4090 2009-03-17  Jb Evain  <jbevain@novell.com>
4091
4092         * driver.c: remove now uneeded call to mono_gc_base_init before
4093         mono_profiler_load.
4094
4095 2009-03-17  Jb Evain  <jbevain@novell.com>
4096
4097         * dwarfwriter.c (token_handler): handle more cases.
4098
4099 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com> 
4100
4101         * method-to-ir.c: Remove more dead code (that was required only
4102         because of method_is_safe). Fix compiler warnings.
4103
4104 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com>
4105
4106         * method-to-ir.c: Remove unneeded/useless method_is_safe
4107         http://lists.ximian.com/archives/public/mono-devel-list/2009-March/031404.html
4108
4109 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
4110
4111         * mini.c (mini_method_compile): Print the method been compiled with
4112         verbose level 1 instead of 3 as this helps a lot debugging JIT crashes
4113         for people not familiar with the runtime.
4114
4115 2009-03-17  Zoltan Varga  <vargaz@gmail.com>
4116
4117         * mini-exceptions.c (get_generic_info_from_stack_frame): Avoid returning
4118         a managed object which is later put into a GList. Return its class instead.
4119
4120         * mini.c (mono_allocate_stack_slots_full): Avoid sharing ref and non-ref
4121         stack slots when using sgen.
4122
4123 2009-03-16  Zoltan Varga  <vargaz@gmail.com>
4124
4125         * dwarfwriter.c (emit_line_number_info): Really fix the eglib build.
4126
4127 2009-03-14  Zoltan Varga  <vargaz@gmail.com>
4128
4129         * local-propagation.c (reg_is_softreg_no_fpstack): Use >= instead of
4130         > so it works on the first vreg as well.
4131
4132 2009-03-13  Zoltan Varga  <vargaz@gmail.com>
4133
4134         * dwarfwriter.c (emit_line_number_info): Disable an assert which seems to
4135         trigger randomly.
4136
4137         * aot-compiler.c: Get rid of xdebug_lock (), use the loader lock instead.
4138         
4139         * dwarfwriter.c (emit_line_number_info): Fix eglib build as eglib doesn't
4140         implement GArray.
4141
4142 2009-03-12  Zoltan Varga  <vargaz@gmail.com>
4143
4144         * dwarfwriter.c (emit_line_number_info): Optimize the computation of the
4145         native->IL offset mapping.
4146
4147 2009-03-11  Zoltan Varga  <vargaz@gmail.com>
4148
4149         * mini-amd64.c (mono_arch_output_basic_block): Fix % 1. Fixes #484323.
4150
4151         * basic.cs: Add a test.
4152
4153 2009-03-11  Mark Probst  <mark.probst@gmail.com>
4154
4155         * mini-x86.c (mono_arch_output_basic_block): Use different
4156         registers in case the ones we want to overwrite are used by the
4157         other operand.  Fixes regression in #480807.
4158
4159 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
4160
4161         * aot-compiler.c (mono_compile_assembly): Make the output less verbose.
4162
4163         * dwarfwriter.c (emit_line_number_info): The line number info for
4164         IL code was off by one. Fix that.
4165
4166         * mini-s390x.c: Fix support for vtypes whose addresses are passed on the
4167         stack.
4168
4169 2009-03-09  Mark Probst  <mark.probst@gmail.com>
4170
4171         Contributed under the terms of the MIT/X11 license by Steven
4172         Munroe <munroesj@us.ibm.com>.
4173
4174         * mini-ppc.c: Correct handling of OP_LOADI4_MEMINDEX for ppc64.
4175         Fixes #483462.
4176
4177 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
4178
4179         * dwarfwriter.c (token_handler): Decode method references in non-wrappers
4180         as well.
4181
4182 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
4183
4184         * method-to-ir.c (mono_method_to_ir): Check for type load exceptions in
4185         the delegate ctor handling code. Fixes #482638.
4186         
4187         * method-to-ir.c (mini_emit_memset): Fix the handling of size '3'. Fixes
4188         #481458.
4189
4190         * iltests.il.in: Add a test.
4191         
4192         * mini-darwin.c (mono_chain_signal): Remove this, it is already in
4193         mini-posix.c.
4194
4195 2009-03-05  Mark Probst  <mark.probst@gmail.com>
4196
4197         * mini-trampolines.c (mono_create_jump_trampoline): If the method
4198         is shared generic code, return the trampoline, even if the method
4199         has already been compiled.  Fixes #479763.
4200
4201         * mini.c, mini.h: New function
4202         mono_jit_find_compiled_method_with_jit_info() which is the same as
4203         mono_jit_find_compiled_method() but also returns the jit info.
4204
4205 2009-03-05  Mark Probst  <mark.probst@gmail.com>
4206
4207         * method-to-ir.c (mono_method_to_ir): Only force the vtable var
4208         for methods which actually have one.  For all other methods, make
4209         sure the this argument var is live the whole method.
4210
4211         * mini.c (mini_method_compile): Every shared method has a
4212         this/vtable/mrgctx info.  Fixes #480807.
4213
4214 2009-03-05  Mark Probst  <mark.probst@gmail.com>
4215
4216         * mini-ppc.c (mono_arch_build_imt_thunk): Add support for mixed
4217         generic/imt thunks where some entries branch through the vtable,
4218         while other entries branch directly.
4219
4220 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
4221
4222         * mini-darwin.c (mono_chain_signal): Define this to fix the build.
4223
4224         * mini-windows.c: Ditto.
4225         
4226         * mini.c (mono_jit_runtime_invoke): Speed up the invoking of parameterless
4227         ctors.
4228
4229 2009-03-04  Zoltan Varga  <vargaz@gmail.com>
4230
4231         * dwarfwriter.c (emit_line_number_info): Add some debug code to help track
4232         down an assert.
4233
4234 2009-03-04  Mark Probst  <mark.probst@gmail.com>
4235
4236         * method-to-ir.c: Don't inline methods that use JMP.  Fixes
4237         #481403.
4238
4239 2009-03-04  Mark Probst  <mark.probst@gmail.com>
4240
4241         * exceptions-x86.c: Include debug-mini.h - fixes build.
4242
4243 2009-03-04  Martin Baulig  <martin@ximian.com>
4244
4245         * debug-mini.c: Clean up the exception API and add documentation.
4246         (mono_debugger_handle_exception): New public method; this is
4247         called when throwing an exception or encountering an unhandled one.
4248         (mono_debugger_call_exception_handler): Formerly known as
4249         mono_debugger_handle_exception(); this is used to tell the
4250         debugger that we're about to invoke an exception handler.
4251
4252 2009-03-04  Martin Baulig  <martin@ximian.com>
4253
4254         * debug-mini.c (mono_debugger_runtime_invoke): Moved here from
4255         ../metadata/mono-debug-debugger.c; save and reset exception state.
4256
4257 2009-03-02  Martin Baulig  <martin@ximian.com>
4258
4259         * debug-mini.c: Moved the debugger exception handling here from
4260         ../metadata/mono-debug-debugger.c.
4261
4262         * debug-mini.h
4263         (MonoDebuggerExceptionAction): New exception typedef.
4264
4265         * debug-mini.c
4266         (MonoDebuggerThreadInfo): Added `MonoObject *last_exception'.
4267
4268         * exceptions-amd64.c
4269         (mono_amd64_throw_exception): Use the new debugger exception
4270         handling code.
4271
4272         * mini-exceptions.c
4273         (mono_handle_exception_internal): Don't call
4274         mono_debugger_unhandled_exception() here.
4275
4276 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
4277
4278         * mini.c aot-compiler.c: Update after the changes to 
4279         mono_marshal_get_runtime_invoke ().
4280
4281         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): 
4282         Virtual generic methods might not have method->slot set, work around
4283         that.
4284
4285         * generics.cs: Add a test.
4286
4287 2009-03-02  Geoff Norton  <gnorton@novell.com>
4288
4289         * mini.c:
4290         * driver.c: Allow signal chaining of SIGFPE as well.
4291
4292 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
4293
4294         * mini-trampolines.c (mono_generic_virtual_remoting_trampoline): Update
4295         this since it now receives the method not its generic context in the
4296         IMT reg.
4297
4298         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for mixed
4299         generic/imt thunks where some entries branch through the vtable, while
4300         other entries branch directly.
4301
4302         * mini-x86.c (mono_arch_build_imt_thunk): Ditto.
4303
4304         * method-to-ir.c (mono_method_to_ir): Enable fast virtual generic call 
4305         support for interface methods as well.
4306
4307         * mini-trampolines.c: Add support for virtual generic methods in interfaces
4308         using the normal IMT thunks.
4309
4310         generics.cs: Add new tests.
4311         
4312         * method-to-ir.c (mono_method_to_ir): Pass the method instead of
4313         the generic inst to the generic imt thunks. This fixes AOT support, 
4314         improves consistency with the normal IMT thunks, and makes it easier to
4315         add support for interface generic virtual methods later.
4316
4317         * mini-trampolines.c (mono_magic_trampoline): Ditto.    
4318         
4319 2009-02-28  Zoltan Varga  <vargaz@gmail.com>
4320
4321         * driver.c (mono_set_signal_chaining): New public API function to enable
4322         signal chaining on POSIX platforms.
4323
4324         * mini-posix.c mini.c: Applied a variant of a patch by Simon Rowland 
4325         (si@lindenlab.com) to implement signal chaining. The original patch was
4326         contributed under the MIT X/11 license:
4327         https://bugzilla.novell.com/show_bug.cgi?id=318894
4328
4329 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
4330
4331         * iltests.il.in (test_0_implicit_float_to_double_conversion): Disable this
4332         too until it can be made to run on amd64.
4333
4334 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
4335
4336         * mini-x86.c (mono_arch_get_this_arg_from_call): Avoid expensive calls
4337         to  get_generic_context_from_code () + get_call_info () if possible.
4338
4339 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
4340
4341         * mini-exceptions.c (mono_handle_native_sigsegv): Implement the
4342         suspend-on-sigsegv functionality.
4343
4344         * mini.c (mini_parse_debug_options): Add a new 'suspend-on-sigsegv' option
4345         to suspend when a native SIGSEGV is received. This is useful for debugging
4346         crashes which don't happen under gdb, since a live process contains more
4347         information than a core file.
4348
4349         * mini-exceptions.c (mono_print_thread_dump): Use 
4350         MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX instead of platform defines.
4351
4352         * mini-x86.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): New define.
4353
4354         * mini-amd64.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): Ditto.
4355         
4356         * basic-float.cs: Disable the tests which currently fail on amd64.
4357
4358         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass a non-null 
4359         value to mono_arch_patch_callsite () to fix crashes.
4360         
4361         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix a warning.
4362
4363 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
4364
4365         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Replace the
4366         nop code by patching the call address to point to the nullified class init
4367         trampoline, as the former does not seem to be safe on SMP machines.
4368
4369 2009-02-23  Mark Probst  <mark.probst@gmail.com>
4370
4371         * mini-ops.h: Fix the argument types for a few x86 opcodes where
4372         they were wrong.
4373
4374 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
4375
4376         * basic-float.cs basic-calls.cs: Fix warnings.
4377
4378 2009-02-22  Mark Probst  <mark.probst@gmail.com>
4379
4380         * tramp-ppc.c (mono_arch_create_trampoline_code): Store the
4381         correct frame pointer in the LMF.  Should fix #478394.
4382
4383 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
4384
4385         * Makefile.am (fullaotcheck): Copy Mono.Simd.dll as well.
4386
4387         * image-writer.c: Make the binary writer less verbose.
4388
4389 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
4390
4391         * method-to-ir.c (mono_method_to_ir): Don't assert if string ctors
4392         are called from runtime invoke wrappers.
4393
4394 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
4395
4396         * cpu-ppc.md (store_memindex): Increase the size of this.
4397
4398 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
4399
4400         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
4401
4402         * cpu-x86.md: Fix the sizes for long_conv_to_r_un and long_conv_to_r_un_2.
4403
4404         * mini-x86.c (mono_arch_output_basic_block): Use only 64bits of precision for
4405         OP_LCONV_TO_R_UN.
4406
4407         Last fix for of #467201.
4408
4409
4410 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
4411
4412         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
4413
4414         * cpu-x86.md: Fix the sizes for fcall(_reg,_membase), long_conv_to_r4_2
4415         and long_conv_to_r8_2:
4416
4417         Fixed part of #467201.
4418
4419 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
4420
4421         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
4422
4423         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of int to float
4424         conversion to 32 bits.
4425
4426         * cpu-x86.md: Increase the size of int_conv_to_r4.
4427
4428         * basic-float.cs: Add a test for this.
4429
4430         Fixed part of #467201.
4431
4432 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
4433
4434         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
4435
4436         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of long to double
4437         conversion to 64 bits.
4438
4439         * basic-float.cs: Add a test for this.
4440
4441         Fixed part of #467201.
4442
4443 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
4444
4445         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
4446
4447         * mini-x86.c (emit_move_return_value): Don't reduce precision of functions returning float.
4448         This behavior is compatible with MS.
4449
4450         * iltest.il.in: Add a test for this.
4451
4452         Fixed part of #467201.
4453
4454 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
4455
4456         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
4457
4458         * mini-x86.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_R4, it must
4459         change the precision of the value.
4460
4461         * cpu-x86.md: Define len for float_conv_to_r4.
4462
4463         * basic-float.cs: Add a test for this.
4464
4465         Fixed part of #467201.
4466
4467 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
4468
4469         * mini.c: Adjust locking order to the new semantics where the loader lock
4470         comes first.
4471
4472 2009-02-18  Rodrigo Kumpera  <rkumpera@novell.com>
4473
4474         * aot-runtime.c:
4475         * mini-amd64.c:
4476         * mini-arm.c:
4477         * mini-ia64.c:
4478         * mini-mips.c:
4479         * mini-ppc.c:
4480         * mini-sparc.c:
4481         * mini-trampolines.c:
4482         * mini-x86.c:
4483         * mini.c:
4484         * tramp-alpha.c:
4485         * tramp-amd64.c:
4486         * tramp-arm.c:
4487         * tramp-hppa.c:
4488         * tramp-ia64.c:
4489         * tramp-mips.c:
4490         * tramp-ppc.c:
4491         * tramp-s390.c:
4492         * tramp-s390x.c:
4493         * tramp-sparc.c:
4494         * tramp-x86.c: Use mono_domain_code_* functions instead of using MonoDomain::code_mp directly.
4495
4496 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
4497
4498         * mini-codegen.c (mono_local_regalloc): Remove a ! from if (!dest_sreg1)
4499         as it is incorrect.
4500
4501 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
4502
4503         * aot-compiler.c (add_generic_class): Only add rgctx invoke wrappers
4504         for cctors if needed.
4505
4506 2009-02-17  Mark Probst  <mark.probst@gmail.com>
4507
4508         * mini-ppc.c: Fix build on Darwin.
4509
4510 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
4511
4512         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Use 2 as the DWARF
4513         version instead of 3 as valgrind doesn't like version 3.
4514
4515         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
4516
4517         * aot-compiler.c (mono_aot_method_hash): New function to return a hash
4518         usable for hashing methods.
4519         (emit_extra_methods): Use the new hash to avoid putting every method in the
4520         same hash bucket.
4521
4522         * aot-runtime.c (find_extra_method_in_amodule): Use the new hash.
4523
4524         * aot-runtime.c (can_method_ref_match_method): New function to quickly check
4525         whenever a method ref could match a method.
4526         
4527         * aot-runtime.c (load_image): Revert the previous change, it causes an AOT
4528         test to fail.
4529         
4530         * aot-runtime.c (find_extra_method_in_amodule): Add a cache for decoded 
4531         methods refs.
4532
4533         * aot-runtime.c (load_image): Pass our basedir to mono_assembly_load.
4534
4535         * aot-compiler.c (emit_exception_debug_info): Bump the maximum size of
4536         the encoding buffer.
4537
4538         * method-to-ir.c (mono_method_check_inlining): Avoid calling 
4539         mono_method_get_header () on inflated methods as an optimization.
4540
4541 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
4542
4543         * ssa.c (fold_ins): Fix another crash if the instruction following the
4544         switch was optimized away.
4545
4546 2009-02-16  Mark Probst  <mark.probst@gmail.com>
4547
4548         Contributed under the terms of the MIT/X11 license by Steven
4549         Munroe <munroesj@us.ibm.com>.
4550
4551         * mini-ppc.c, mini-ppc.h: Implement TLS for PPC64.
4552
4553 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
4554
4555         * mini.c method-to-ir.c mini-trampolines.c aot-runtime.c: Remove locking
4556         around the mono_domain_alloc calls, it is now done by the functions
4557         themselves.
4558
4559         * aot-compiler.c (compile_method): Only add wrappers referenced by
4560         the method if compiling with full AOT.
4561         (mono_compile_assembly): Error out if --aot=full is specified on
4562         a platform where it is not supported.
4563
4564         * aot-compiler.c (emit_trampolines): Emit generic class init trampolines
4565         on ARM too.
4566
4567         * tramp-arm.c (mono_arch_create_generic_class_init_trampoline_full): Add
4568         AOT support.
4569
4570         * aot-runtime.c (load_named_code): Handle 
4571         mono_arm_throw_exception_by_token.
4572
4573         * mini-arm.h: Add declaration of mono_arm_throw_exception_by_token.
4574
4575         * image-writer.c (asm_writer_emit_pointer_unaligned): Make this really
4576         unaligned.
4577
4578         * Makefile.am (fullaotcheck): Exit if a test fails.
4579
4580         * aot-compiler.c (mono_compile_assembly): Use the ASM writer for full aot
4581         on ARM.
4582         (mono_compile_assembly): Handle the assembler failing.
4583
4584         * image-writer.c (asm_writer_emit_section_change): Handle ARM gas not
4585         accepting subsections of .bss.
4586
4587         * ssa.c (visit_inst): Fix a crash if the instruction following a switch
4588         was optimized away.
4589
4590         * aot-compiler.c: Remove some unused includes.
4591         
4592         * aot-compiler.c (MonoAotCompile): Remove some unused fields which are
4593         now in MonoImageWriter.
4594
4595         * mini-x86.c (mono_arch_get_vcall_slot): Handle yet another
4596         code sequence which matches a non-virtual call. Fixes #472654.
4597
4598 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
4599
4600         * aot-compiler.c: Use xdebug_lock ()/unlock () macros for locking in the
4601         xdebug code.
4602         
4603         * aot-compiler.c: Make the xdebug code not depend on the AOT compiler,
4604         use the image/dwarf writers directly.
4605
4606         * image-writer.c (struct _MonoImageWriter): Remove the unused 'image'
4607         field.
4608
4609         * aot-compiler.c (MonoAotCompile): Remove fields which are now in
4610         MonoDwarfWriter.
4611
4612         * image-writer.h: Fix some typos.
4613
4614         * dwarfwriter.h dwarfwriter.c: New files.
4615         
4616         * aot-compiler.c: Extract the DWARF info writing functionality into a 
4617         separate module.
4618
4619         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add a 'out_unwind_ops'
4620         argument to return unwind info.
4621
4622         * tramp-arm.c (mono_arch_create_trampoline_code_full): Ditto.
4623
4624         * aot-compiler.c: Emit unwind info for trampolines in full-aot mode.
4625         
4626         * aot-runtime.c (decode_method_ref): Add a case for 
4627         MONO_AOT_METHODREF_WRAPPER_NAME.
4628
4629         * mini.h: Add constants for the magic numbers used in encode_method_ref ()
4630         for AOT.
4631
4632         * aot-compiler.c (encode_method_ref): Use the new constants.
4633
4634         * aot-runtime.c (decode_method_ref): Ditto.
4635
4636         * aot-compiler.c (compile_method): For generic icalls, queue the wrapper to
4637         be compiled, not the icall itself.
4638
4639 2009-02-14  Zoltan Varga  <vargaz@gmail.com>
4640
4641         * aot-runtime.c (find_extra_method_in_amodule): Avoid decoding wrapper names
4642         using decode_method_ref ().
4643
4644         * method-to-ir.c (mini_emit_ldelema_1_ins): If the array index is a long,
4645         convert it to an in32. Fixes #475859.
4646
4647         * arrays.cs: Add a test.
4648
4649 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
4650
4651         * mini-s390x.c (mono_arch_output_basic_block): Fix the shift amounts in 
4652         OP_LCONV_TO_U2.
4653
4654         * basic-long.cs: Add a test.
4655
4656 2009-02-12  Mark Probst  <mark.probst@gmail.com>
4657
4658         * mini-x86.c, mini-x86.h: Very simple frame pointer removal.  We
4659         remove the frame pointer in leaf methods which don't receive any
4660         arguments, don't throw exceptions and don't do dynamic stack
4661         allocations.
4662
4663 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
4664
4665         * mini-amd64.c (mono_arch_build_imt_thunk): Fix size calculation after
4666         the fail_tramp changes. Hopefully fixes #475132.
4667
4668 2009-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
4669
4670         * method-to-ir.c (mono_emit_method_call_full): Use mono_metadata_signature_dup_mempool
4671         instead of mono_metadata_signature_dup_full.
4672
4673 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
4674
4675         * ssa.c (fold_ins): Use MONO_IS_JUMP_TABLE () and MONO_JUMP_TABLE_FROM_INS ()
4676         for processing jump tables. Fixes #473787.
4677
4678 2009-02-11  Mark Probst  <mark.probst@gmail.com>
4679
4680         * mini-generic-sharing.c: mini_method_get_context() just calls
4681         mono_method_get_context_general() now.
4682
4683         * mini.c, mini.h: Moved get_object_generic_inst(),
4684         construct_object_context_for_method() and
4685         mono_domain_lookup_shared_generic() to metadata/generic-sharing.c.
4686
4687 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
4688
4689         * branch-opts.c (mono_if_conversion): Handle the case where the merged 
4690         basic block fell through to its successor bblock without a branch. Fixes
4691         #474718.
4692
4693         * iltests.il.in: Add a test.
4694         
4695         * aot-compiler.c (encode_method_ref): Encode methods of array types.
4696         (can_encode_patch): We can now handle arrays of generic parameters and
4697         array methods.
4698
4699         * aot-runtime.c (decode_method_ref_2): Handle methods of array types.
4700
4701         * aot-compiler.c aot-runtime.c: Emit the size of specific trampolines into
4702         the AOT file to avoid some #ifdefs in aot-runtime.c
4703
4704         * mini.h: Bump AOT file format version.
4705
4706 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
4707
4708         * Makefile.am (fullaotcheck): Make this run the tests.
4709
4710         * aot-compiler.c: Make the printing of skipped methods runtime configurable.
4711
4712 2009-02-10  Mark Probst  <mark.probst@gmail.com>
4713
4714         * mini-x86.c (mono_arch_context_get_int_reg): Handle all registers
4715         individually.  Fixes #473482.
4716
4717 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
4718
4719         * mini-arm.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
4720
4721 2009-02-09  Jeffrey Stedfast  <fejj@novell.com>
4722
4723         * aot-compiler.c (arch_emit_plt_entry): Fixed to compile.
4724         (mono_compile_assembly): Hush compile warnings about
4725         uninitialized [tmp_]outfile_name variables in the !use_bin_writer
4726         code path.
4727
4728 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
4729
4730         * exceptions-arm.c (mono_arch_find_jit_info): Fix aot support.
4731
4732         * mini-arm.c: Checkin unwind related changes missing from an earlier commit.
4733
4734         * aot-compiler.c: Fix arm support.
4735
4736         * image-writer.c: Move the R_ARM constants to image-writer.h. Export a
4737         img_writer_emit_unset_mode () function.
4738
4739         * unwind.c (mono_unwind_get_dwarf_data_align): New helper function.
4740         (mono_unwind_get_dwarf_pc_reg): Ditto.
4741
4742         * aot-compiler.c (emit_dwarf_abbrev): Another large reorganization.
4743         Move almost all platform specific code to a set of arch_ functions, 
4744         and document them to ease porting.
4745         
4746         * aot-compiler.c (mono_xdebug_init): Fix xdebug support.
4747
4748         * image-writer.h image-writer.c: New files, extracted from aot-compiler.c.
4749
4750         * aot-compiler.c: Extract the image writing functionality into a separate
4751         module to reduce the size of this file.
4752
4753 2009-02-09  Geoff Norton  <gnorton@novell.com>
4754
4755         * mini-s390.c: Fix the signature of emit_sig_cookie.
4756
4757 2009-02-09  Zoltan Varga  <vargaz@gmail.com>
4758
4759         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_IMAGE.
4760
4761         * aot-runtime.c (is_shared_got_patch): Ditto.
4762
4763         * aot-runtime.c (load_named_code): Cope with the fact that 
4764         decode_got_entry () won't decode the patch fully if its corresponding got
4765         entry is already filled.
4766         
4767         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): 
4768         Initialize *ji.
4769         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
4770
4771         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code'
4772         as the moving pointer instead of 'buf' for consistency with the rest of the
4773         codebase.
4774         (mono_arch_create_monitor_exit_trampoline): Ditto.
4775
4776         * aot-compiler.c (emit_trampolines): Add throw_pending_exception/
4777         generic_class_init trampolines.
4778         (add_generic_class): Extract some code from add_generic_instances () into a
4779         separate function so it can be called from other places too.
4780         (compile_method): Call add_generic_class () for the classes of inflated methods
4781         referenced by the method.
4782         (can_encode_patch): Allow references to generic parameters.
4783
4784         * aot-runtime.c: Add support the patches required by the new trampolines.
4785         
4786         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Add full-aot
4787         support.
4788
4789         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline_full): Add
4790         full-aot support.
4791
4792         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Rename
4793         this from get_throw_pending_exception, make the signature full aot compatible.
4794
4795         * Makefile.am (fullaotcheck): New target to run full-aot tests.
4796
4797         * method-to-ir.c (inline_method): Save/Restore cfg->ret_var_set too.
4798
4799         * exceptions.cs: Add a test.
4800
4801 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
4802
4803         * unwind.c (mono_unwind_frame): Eliminate the data_align_factor argument,
4804         use the DWARF_DATA_ALIGN constant instead.
4805
4806         * exception-<ARCH>.c: Update after the above change.
4807
4808         * exceptions-arm.c (mono_arch_find_jit_info): Transition this to use the
4809         dwarf unwinder.
4810
4811         * mini-arm.c: Enable the dwarf unwinder.
4812
4813         * mini-trampolines.c (mono_magic_trampoline): Use mono_class_get_vtable_entry ()
4814         instead of mono_class_setup_vtable ().
4815
4816 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
4817
4818         * exceptions-x86.c (mono_arch_find_jit_info): Transition this to use the
4819         dwarf unwinder.
4820
4821         * mini-x86.h: Enable the dwarf unwinder.
4822
4823 2009-02-06  Raja R Harinath  <harinath@hurrynot.org>
4824
4825         Fix mcs/tests/test-7.cs
4826         * mini-amd64.c (mono_arch_allocate_vars): Revert change from
4827         2009-02-03.
4828
4829 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
4830
4831         * mini.c (print_jit_stats): Remove some unused statistics.
4832
4833 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
4834
4835         * aot-compiler.c (emit_klass_info): Update after MonoClass changes.
4836
4837 2009-02-05  Mark Probst  <mark.probst@gmail.com>
4838
4839         * jit-icalls.c (mono_helper_compile_generic_method): Don't inflate
4840         the method we get from mono_object_get_virtual_method() because
4841         that function does it properly, now.
4842
4843 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
4844
4845         * unwind.c (mono_unwind_ops_encode): Handle offsets greater than 32 between
4846         opcodes. Fixes #472775.
4847
4848 2009-02-05  Mark Probst  <mark.probst@gmail.com>
4849
4850         * mini-exceptions.c (ves_icall_get_frame_info): Account for the
4851         fact that mono_find_jit_info() sometimes returns the context
4852         corresponding to the jit info in new_ctx.  Fixes #472600.
4853
4854 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
4855
4856         * method-to-ir.c mini-hppa.c mini.c trace.c mini-s390x.c aot-compiler.c
4857         mini-s390.c: Use mono_class_enum_basetype () instead of accessing
4858         klass->enum_basetype directly.
4859
4860         * aot-compiler.c (emit_class_dwarf_info): Add support for all possible
4861         enum subtypes.
4862
4863         * unwind.c: Avoid 0 sized arrays.
4864
4865 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
4866
4867         * mini-exceptions.c (mono_setup_altstack): Use a more reasonable altstack
4868         size on systems with 64k pages. Fixes #471389.
4869
4870 2009-02-04  Mark Probst  <mark.probst@gmail.com>
4871
4872         Contributed under the terms of the MIT/X11 license by Steven
4873         Munroe <munroesj@us.ibm.com>.
4874
4875         * mini-ppc.c (mono_arch_output_basic_block): Generate better code
4876         for LOADI4_MEMBASE.  Use addi instead of addic if it's not
4877         necessary.
4878
4879 2009-02-04  Mark Probst  <mark.probst@gmail.com>
4880
4881         Contributed under the terms of the MIT/X11 license by Steven
4882         Munroe <munroesj@us.ibm.com>.
4883
4884         * exceptions-ppc.c (mono_arch_get_restore_context): Code size
4885         comparison fix.
4886
4887         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline):
4888         The trampoline can be longer on PPC64.
4889
4890 2009-02-04  Mark Probst  <mark.probst@gmail.com>
4891
4892         Contributed under the terms of the MIT/X11 license by Steven
4893         Munroe <munroesj@us.ibm.com>.
4894
4895         * mini-ppc.c: Compiler warning fixes and trivial code
4896         simplifications.
4897
4898 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
4899
4900         * method-to-ir.c (mono_spill_global_vars): Fix problems caused by reading
4901         ins->dreg which could be a hardware register, not a vreg.
4902
4903         * aot-compiler.c (emit_method_dwarf_info): Ditto.
4904         
4905         * mini.h (MonoCompile): Remove vreg_to_var_num array, it is no longer used.
4906         (struct MonoMethodVar): Add a vreg field, holding the vreg of variable.
4907
4908         * mini.c (mono_compile_create_var_for_vreg): Set var->vreg.
4909         
4910         * mini-amd64.c (mono_arch_output_basic_block): Avoid reading cfg->varinfo[..]
4911         ->dreg, that is not the vreg we are looking for.
4912
4913         * mini-amd64.h mini-x86.h: Enable MONO_ARCH_LIVENESS_OPS again.
4914
4915         * mini-x86.c (mono_arch_output_basic_block): Add support for LIVERANGE_START/
4916         LIVERANGE_END.
4917
4918         * method-to-ir.c (mono_spill_global_vars): Add an assert to help track down
4919         strange crashes.
4920
4921 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
4922
4923         * mini-x86.c (mono_arch_emit_prolog): Emit unwind info.
4924
4925         * aot-compiler.c (emit_line_number_info): Fix line number emission when
4926         the line diff is 0.
4927
4928         * aot-compiler.c: Add xdebug support on x86.
4929
4930         * unwind.c: Add x86 support.
4931         
4932         * aot-compiler.c (emit_exception_debug_info): Control the emission of
4933         unwind info using a new MONO_ARCH_HAVE_XP_UNWIND define.
4934
4935         * mini.c (mini_method_compile): Ditto.
4936         
4937         * mini-amd64.c (mono_arch_allocate_vars): Avoid setting cfg->ret->dreg to
4938         the variable index.
4939
4940         * aot-compiler.c: Add emit_push_section ()/emit_pop_section () helper functions
4941         which mimic .push_section/.pop_section in GAS.
4942         
4943         * aot-compiler.c: Emit precise live range information for variables.
4944
4945         * mini-amd64.c (mono_arch_output_basic_block): Add OP_LIVERANGE_START/END.
4946
4947         * method-to-ir.c (mono_spill_global_vars): Compute the instructions marking
4948         the live ranges of variables, and emit OP_LIVERANGE_START/END opcodes for
4949         them.
4950
4951         * mini-ops.h: Add OP_LIVERANGE_START/END opcodes to mark
4952         the live ranges of variables.
4953
4954         * mini.h (struct MonoMethodVar): Add two fields containing the live range
4955         of the variable in terms of native offsets.
4956
4957 2009-02-03  Rodrigo Kumpera  <rkumpera@novell.com>
4958
4959         * arrays.cs: Test for Get/SetValue of array with negate lower bounds.
4960         
4961 2009-02-02  Mark Probst  <mark.probst@gmail.com>
4962
4963         Contributed under the terms of the MIT/X11 license by Steven
4964         Munroe <munroesj@us.ibm.com>.
4965
4966         * exceptions-ppc.c (restore_regs_from_context): Correct operand
4967         order (offset then base reg) for ppc_load_multiple_regs.
4968         (emit_save_saved_regs) Correct operand order for
4969         ppc_store_multiple_regs.
4970         (mono_arch_get_call_filter): Correct operand order for
4971         ppc_load_multiple_regs.
4972
4973         * mini-ppc.c (emit_memcpy): Fix operand order for
4974         ppc_load_reg_update and ppc_store_reg_update.
4975         (mono_arch_output_basic_block): Correct operand order for ppc_lha.
4976         (mono_arch_emit_epilog): Correct operand order for
4977         ppc_load_multiple_regs.
4978
4979         * tramp-ppc.c (mono_arch_create_trampoline_code): Correct operand
4980         order for ppc_store_multiple_regs and ppc_load_multiple_regs.
4981
4982 2009-02-02  Mark Probst  <mark.probst@gmail.com>
4983
4984         * cpu-ppc64.md: Fixed storer4_memindex length.
4985
4986 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
4987
4988         * aot-compiler.c (emit_line_number_info): Optimize the size of the emitted
4989         line number info.
4990         
4991         * aot-compiler.c (emit_line_number_info): Optimize this.
4992
4993 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
4994
4995         * aot-compiler.c: Disassemble tokens in the IL disassembly.
4996         
4997         * aot-compiler.c: Add debug info for methods without debug info by
4998         emitting an IL file and having the line number info referencing that file.
4999
5000         * aot-compiler.c: Optimize the size of the generated line number info.
5001
5002         * aot-compiler.c: Emit line number info in xdebug mode.
5003
5004         * aot-compiler.c (mono_save_xdebug_info): Receive a MonoCompile instead of a
5005         million arguments.
5006
5007 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
5008
5009         * aot-compiler.c (emit_method_dwarf_info): Emit names for local variables.
5010
5011         * driver.c (mono_main): Enable debugging support automatically if XDEBUG
5012         is used.
5013
5014 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
5015
5016         * basic-calls.cs: Test for the weird crash found on arm.
5017         
5018 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
5019
5020         * cpu-arm.md: Increase the size of storer8_membase_reg and
5021         loadr8_membase_reg to 24 bytes to accomodate the extra add.
5022
5023         * mini-arm.c (mono_arch_output_basic_block): Under FPA, when emitting
5024         OP_STORER8_MEMBASE_REG and OP_LOADR8_MEMBASE_REG, add the original
5025         reg to LR otherwise we'll be loading/storing from just the offset.
5026
5027 2009-01-30  Miguel de Icaza  <miguel@novell.com>
5028
5029         Question: if we are storing gint32's inside the "*native_offset",
5030         should we change the signature to "gint32 *native_offset" to
5031         ensure that we do not have type definition problems?
5032         
5033         * mini-exceptions.c (ves_icall_get_frame_info): Cast the gint32 to
5034         an int * as this is what the other function expects, causes
5035         problems with Freescale's compiler that defined int32_t to be a
5036         long and makes int incompatible 
5037
5038 2009-01-30  Miguel de Icaza  <miguel@novell.com>
5039
5040         * Rename generic-sharing.c to mini-generic-sharing.c to avoid the
5041         filename conflict with bjam.
5042
5043 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
5044
5045         * cpu-arm.md: Increase the size of storer8_membase_reg to 20 bytes
5046         as it might use decomposed ops.
5047
5048 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
5049
5050         * jit-icalls.c (mono_imul_ovf): Fix one of the literals.
5051
5052         * mini.c (mini_init): Emulate mul.ovf opcodes if MONO_ARCH_EMULATE_MUL_OVF
5053         is defined.
5054
5055         * mini-arm.h (MONO_ARCH_EMULATE_MUL_OVF): New define.
5056
5057         * mini-arm.c (mono_arch_build_imt_thunk): Rewrite this to allow large vtable
5058         offsets.
5059
5060         * mini-arm.c (mono_arch_context_get_int_reg): Adapt this to the "clever"
5061         way registers are stored in MonoContext on arm.
5062
5063         * unwind.c: Rewrite the handling of the cached_info array to use hazard pointers
5064         instead of locking so mono_get_cached_unwind_info () becomes signal safe.
5065
5066         * mini.c (mini_init): Emuate OP_FCONV_TO_I when using soft float.
5067
5068         * mini-arm.c (emit_load_volatile_arguments): Avoid an unneccesary assert.
5069
5070         * mini.c (mini_init): Register mono_isfinite.
5071
5072         * jit-icalls.c (mono_isfinite): New jit icall.
5073
5074         * method-to-ir.c (mono_decompose_soft_float): Add support for OP_CKFINITE.
5075         
5076         * exceptions-arm.c (mono_arch_find_jit_info): When unwinding using the LMF,
5077         set esp to ARMREG_FP instead of R12, since R12 stores the value of sp for
5078         the parent frame.
5079
5080 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
5081
5082         * exceptions-arm.c (mono_arch_find_jit_info): The frame layout on arm have
5083         separate frame and stack pointers, so we must use FP to find the register
5084         spill area.
5085         The FP reg is retrieved from the MonoContext::regs array.
5086
5087 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
5088
5089         * mini-arm.c (mono_arch_output_basic_block): Emit two cond ops for OP_FBGE
5090         as FPA requires it.
5091
5092 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
5093
5094         * mini-arm.c (mono_arch_emit_setret): Emit OP_FMOVE for methods that
5095         return R4 and R8 when not running under softfloat.
5096
5097         Fixes basic-calls.exe
5098
5099 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
5100
5101         * mini-arm.c: Implement some overflow opcodes.
5102
5103 2009-01-29  Miguel de Icaza  <miguel@novell.com>
5104
5105         * ssa.c: handle another alloca.h
5106
5107         * mini-exceptions.c (mono_handle_native_sigsegv): Do not use
5108         PLATFORM_WIN32 for detecting if we have sigaction.   Instead use
5109         MONO_ARCH_USE_SIGACTION. 
5110
5111         * aot-runtime.c, mini-exceptions.c: Replace platform define with
5112         capability defines.
5113
5114         * method-to-ir.c (mono_method_to_ir): Type cast fix on some platforms.
5115
5116         * mini-ppc.h (MONO_ARCH_USE_SIGACTION): Do not define this for all
5117         PPC targets as sigaction does not exist on all platforms, define
5118         this on a per-platform basis.
5119
5120         Instead of erroring out if the platform is not defined, include
5121         mini-ppc-os.h, and expect that the OS specific setting provides
5122         the required information.   
5123
5124 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
5125
5126         * aot-compiler.c: Fix --enable-minimal=aot.
5127
5128 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
5129
5130         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Fix the
5131         previous change.
5132
5133 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
5134
5135         * exceptions-arm.c: Fix warnings.
5136
5137         * tramp-arm.c aot-compiler.c unwind.h unwind.c: Implement xdebug support for
5138         ARM.
5139
5140         * mini-x86.c: Fix --enable-minimal=jit build.
5141
5142         * mini.c: Really fix --enable-minimal=jit build.
5143         
5144         * mini.c (construct_object_context_for_method): Move this outside
5145         the DISABLE_JIT block to fix the --enable-minimal=jit build.
5146
5147         "Backported" of r124984 from 2.0 branch.
5148         
5149         * aot-compiler.c aot-runtime.c: Add full-aot support delegate BeginInvoke/EndInvoke.
5150
5151         "Backport" of r124977 + r124978 from 2.0 branch.
5152         
5153         * exceptions-arm.c (mono_arm_throw_exception_by_token): New helper function
5154         to avoid calling mono_exception_from_token () from the throw trampoline.
5155         (mono_arch_get_throw_exception_generic): call throw_exception_by_token
5156         for throwing corlib exceptions, this fixes full-aot support for corlib
5157         exceptions.
5158
5159         * aot-compiler.c (compile_method): Make a copy of cfg->locals to fix the build.
5160
5161 2009-01-29  Miguel de Icaza  <miguel@novell.com>
5162
5163         * mini-darwin.c, mini-windows.c, mini-posix.c: Commit the first
5164         part of the changes to split the code in mini into operating
5165         system specific files.
5166
5167         This patch was done by copying mini.c to the respective files to
5168         preserve SVN history.
5169
5170 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
5171
5172         * aot-compiler.c (emit_method_dwarf_info): Add minimal support for locals.
5173
5174 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
5175
5176         * method-to-ir.c (mono_method_to_ir): Avoid generic sharing for calls made to
5177         remoting-invoke-with-check wrappers of shared methods.
5178
5179         * mini.c (print_jit_stats): Print out major gc count/time for libgc too.
5180
5181 2009-01-27  Mark Probst  <mark.probst@gmail.com>
5182
5183         * method-to-ir.c (emit_stloc_ir): Only apply the reg-reg move
5184         optimization if the top of stack is the last instruction in the
5185         bblock.  Otherwise it might have been used after its definition.
5186         Fixes #469742.
5187
5188 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
5189
5190         * mini-trampolines.c (mono_magic_trampoline): Print out the caller
5191         method as well when get_vcall_slot () fails to match a code sequence.
5192
5193         * mini-arm.c: Fix the android build, which doesn't have
5194         __aeabi_read_tp.
5195
5196 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
5197
5198         * mini-s390x.c: Remove a stray declaration of emit_sig_cookie () to fix
5199         the s390x build.
5200
5201 2009-01-26  Rodrigo Kumpera  <rkumpera@novell.com>
5202
5203         * unwind.c (mono_unwind_cleanup): Don't crash if cached_info is NULL.
5204
5205 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
5206
5207         * mini.c (mini_method_compile): Save the unwind info generated by the JIT
5208         and put its id into jinfo->used_regs. This is only used on amd64,
5209         which is currently the only platform generating unwind info.
5210
5211         * exceptions-amd64.c: Instead of unwinding based on a register mask, use
5212         the dwarf unwinder. This is required to correctly handle async exceptions
5213         like thread abort and stack overflows, which can happen while a method
5214         is in the middle of its prolog or epilog.
5215         
5216         * aot-runtime.c (mono_aot_get_unwind_info): New helper function to obtain
5217         the unwind info belonging to an AOTed method.
5218
5219         * aot-compiler.c aot-runtime.c: Save/Load the unwind info emitted by the JIT
5220         into cfg->unwind_ops.
5221         
5222         * unwind.c (mono_unwind_frame): Use <= instead of < for the loop exit check.
5223
5224         * mini.c (mini_init): Call mono_unwind_init ().
5225         (mini_cleanup): Call mono_unwind_cleanup ().
5226
5227         * unwind.c: Add functions for managing a set of unwind info entries, allowing
5228         unwind info to be shared between methods.
5229
5230         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info for the registers
5231         saved in the LMF.
5232
5233         * exceptions-amd64.c (mono_arch_exceptions_init): Call 
5234         get_throw_pending_exception () to avoid initialization races.
5235
5236         * mini-exceptions.c (mono_exceptions_init): Call an arch specific
5237         mono_arch_exceptions_init () function.
5238
5239         * mini.h (MONO_INST_NEW): Remove duplicate setting of cil_code.
5240
5241 2009-01-25  Zoltan Varga  <vargaz@gmail.com>
5242
5243         * mini.c (mono_get_domain_intrinsic): New helper function.
5244         (mono_get_thread_intrinsic): Ditto.
5245
5246         * mini-arm.c mini-ia64.c: Use the new helper functions.
5247         
5248         * method-to-ir.c (mono_method_to_ir): Fix the comment for
5249         the last constrained_call change, since it is needed in the non-AOT
5250         case as well.
5251
5252         * mini-arm.c: Implement OP_TLS_GET on arm eabi linux.
5253         
5254         * mini-arm.c (mono_arch_emit_prolog): Add an inlined version of 
5255         mono_get_lmf_addr () on arm eabi linux.
5256
5257 2009-01-24  Zoltan Varga  <vargaz@gmail.com>
5258
5259         * mini-amd64.c (mono_arch_get_vcall_slot): Handle yet another
5260         code sequence which matches a non-virtual call.
5261
5262 2009-01-23  Mark Probst  <mark.probst@gmail.com>
5263
5264         * mini-ppc.c (mono_arch_context_get_int_reg): Allow access to the
5265         stack pointer (r1).
5266
5267 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
5268
5269         * aot-compiler.c aot-runtime.c: Treat delegate-invoke wrappers similarly to
5270         runtime-invoke wrappers, since they are also shared based on signature.
5271
5272 2009-01-22  Mark Probst  <mark.probst@gmail.com>
5273
5274         * mini-exceptions.c (ves_icall_get_frame_info): Fetch the generic
5275         info from the (correct) context.
5276
5277 2009-01-22  Zoltan Varga  <vargaz@gmail.com>
5278
5279         * unwind.c (mono_unwind_frame): Remove a stray g_free ().
5280         
5281         * unwind.c (mono_unwind_frame): New function to unwind through a frame
5282         using dwarf unwinding info. Not yet used.
5283
5284         * mini.c (mini_init): When using xdebug, disable freeing of domains.
5285
5286 2009-01-21  Mark Probst  <mark.probst@gmail.com>
5287
5288         * mini-ppc.c (mono_arch_delegate_invoke_impl): Return function
5289         descriptors.
5290
5291         * mini-trampolines.c (mono_delegate_trampoline): Remove the PPC64
5292         special case and handle mono_arch_delegate_invoke_impl() returning
5293         function descriptors.
5294
5295         * tramp-ppc.c (mono_arch_create_trampoline_code): Delegate
5296         trampolines return function descriptors, too.
5297
5298 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
5299
5300         * method-to-ir.c (handle_alloc): Avoid generic instances in the
5301         out_of_line optimization.
5302
5303 2009-01-21  Martin Baulig  <martin@ximian.com>
5304
5305         * mini.h
5306         (MonoCompile): Added `disable_deadce_vars' to disable removing
5307         unused variables.
5308
5309         * mini.c
5310         (mini_method_compile): Set `cfg->disable_deadce_vars' when running
5311         inside the debugger.
5312
5313         * liveness.c (mono_analyze_liveness): Don't remove any unused
5314         variables if `cfg->disable_deadce_vars' is set.
5315
5316 2009-01-21  Mark Probst  <mark.probst@gmail.com>
5317
5318         * method-to-ir.c: Only apply exception constructor optimization if
5319         the the method actually belongs to an exception class.  Fixes
5320         #467456.
5321
5322 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
5323
5324         * mini-trampolines.c (mono_delegate_trampoline): Put back the previous
5325         change inside a #ifdef __mono_ppc64__.
5326
5327         * aot-compiler.c (compile_method): Remove the previous limitation.
5328
5329         * method-to-ir.c (method-to-ir.c): Add support for the constrained prefix
5330         on type variables in AOTed code.
5331         
5332         * aot-compiler.c (compile_method): Skip generic methods having type 
5333         constraints on their generic parameters.
5334
5335         * aot-compiler.c (compile_method): Check for methods which cannot be
5336         encoded inside RGCTX_FETCH patches as well.
5337
5338         * mini-exceptions.c (mono_print_thread_dump): Fix the windows
5339         build.
5340
5341 2009-01-20  Mark Probst  <mark.probst@gmail.com>
5342
5343         * method-to-ir.c: Force the vtable variable in shared generic code
5344         for the case that they might show up on a stack trace where they
5345         are needed.
5346
5347         * mini-exceptions.c: Save and use generic sharing info as well as
5348         IP in stack traces to resolve shared generic instantiations.
5349
5350 2009-01-20  Zoltan Varga  <vargaz@gmail.com>
5351
5352         * mini-trampolines.c (mono_delegate_trampoline): Revert the change which
5353         added a mono_get_addr_from_ftnptr () as it breaks the ia64 build.
5354
5355 2009-01-20  Mark Probst  <mark.probst@gmail.com>
5356
5357         * method-to-ir.c: Do generic sharing for array constructors.
5358
5359 2009-01-20  Rodrigo Kumpera  <rkumpera@novell.com>
5360
5361         * mini-exceptions.c (mono_print_thread_dump): Add information
5362         about the thread state using wapi_current_thread_desc.
5363
5364 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
5365
5366         * basic-simd.cs: Tests for the new constructors. 
5367
5368 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
5369
5370         * mini-ops.h: Added OP_EXPAND_*
5371
5372         * cpu-x86.md: Same.
5373
5374         * mini-x86.c (mono_arch_output_basic_block): Same.
5375         
5376         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for single element constructors.
5377
5378 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
5379
5380         * iltests.il.in: Add a test for #467385.
5381
5382 2009-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
5383
5384         * mini.c (mini_thread_cleanup): Don't cleanup TLS storage if the
5385         thread been cleaned up is not the same currently in execution.
5386
5387         Fixes appdomain-unload crashes on windows, osx and linux variants
5388         without the __thread keyword.
5389
5390 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
5391
5392         * mini-arm.c (mono_arch_flush_icache): Applied patch from Koushik Dutta
5393         (koush@koushikdutta.com). Implement this for android.
5394
5395         * helpers.c (mono_disassemble_code): Avoid assembler errors if the id
5396         begins with a digit.
5397
5398         * method-to-ir.c: Call mono_gc_get_write_barrier () instead of
5399         mono_marshal_get_write_barrier ().
5400
5401 2009-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
5402
5403         * decompose.c (mono_decompose_vtype_opts): Fix the decomposition
5404         of OP_VCALL_* ops for 8 bytes vtypes on 32 bits archs and platorms
5405         that pass them on a register pair.
5406
5407         This affects windows, OSX and FreeBSD. The mono/tests/handleref.exe
5408         test was crashing due to that.
5409
5410 Fri Jan 16 15:21:21 CET 2009 Paolo Molaro <lupus@ximian.com>
5411
5412         * exceptions-ppc.c: tweaks from malc (OV-Soft) to fix the size of the
5413         trampoline code. Include ucontext.h only if available.
5414
5415 2009-01-15  Mark Probst  <mark.probst@gmail.com>
5416
5417         * mini.c: mono_domain_lookup_shared_generic() takes an open method
5418         and doesn't check whether it's sharable, like it was before
5419         removing the shared generics hash.  This brings IronPython
5420         performance back to what it was before that change.
5421
5422 2009-01-14  Mark Probst  <mark.probst@gmail.com>
5423
5424         * method-to-ir.c: Handle delegate invocation optimization earlier,
5425         otherwise it would be handled (much more slowly) by the
5426         final/sealed optimization.
5427
5428 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
5429
5430         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes when the current thread or
5431         domain is not set. Fixes #465864.
5432
5433 2009-01-12  Mark Probst  <mark.probst@gmail.com>
5434
5435         * method-to-ir.c: Don't stop sharing of generic methods with catch
5436         clauses - we already handle those.
5437
5438 2009-01-12  Mark Probst  <mark.probst@gmail.com>
5439
5440         * mini.c, mini.h: lookup_generic_method() is now
5441         mono_domain_lookup_shared_generic() and uses the jit_code_hash,
5442         making the shared_generics_hash obsolete.
5443
5444 2009-01-12  Mark Probst  <mark.probst@gmail.com>
5445
5446         * mini-ppc.c, exceptions-ppc.c, cpu-ppc.md, cpu-ppc64.md: Don't
5447         use the red zone.  Make room on the stack first and then use it,
5448         not the other way around.
5449
5450 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
5451
5452         * mini.c (mini_init): Call mono_xdebug_init ().
5453
5454         * aot-compiler.c (mono_xdebug_init): Make this non-static.
5455
5456 2009-01-11  Zoltan Varga  <vargaz@gmail.com>
5457
5458         * TestDriver.cs: Add an --iter argument to run tests multiple times.
5459
5460         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Emit debug info for
5461         trampolines.
5462
5463         * aot-compiler.c (mono_save_trampoline_xdebug_info): New function to emit
5464         debug+unwind info for trampolines.
5465
5466         * mini.c (mono_create_unwind_op): New helper function.
5467
5468         * unwind.h: Add macros for emitting unwind ops without a MonoCompile.
5469
5470 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
5471
5472         * aot-compiler.c: Fix the build.
5473
5474 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
5475
5476         * Makefile.am: Update dtrace-prelink.sh location.
5477
5478 2009-01-08  Zoltan Varga  <vargaz@gmail.com>
5479
5480         * method-to-ir.c (mono_method_to_ir): Fix the check for the mscorlib ldstr 
5481         optimization. Fixes #464520.
5482
5483 2009-01-07  Bill Holmes  <billholmes54@gmail.com>
5484
5485         * mini-amd64.c : Adding code to save/restore non-volatile registers
5486            on Winx64.
5487
5488         * exceptions-amd64.c : Adding code to save/restore non-volatile 
5489           registers on Winx64.
5490
5491         Contributed under MIT/X11 license.
5492
5493 2009-01-07  Zoltan Varga  <vargaz@gmail.com>
5494
5495         * mini-arm.c (mono_arch_flush_icache): Use __GNUC_PREREQ instead of checking
5496         __GNUC_MINOR__ which can break when the major version changes.
5497
5498 2009-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
5499
5500         * basic-simd.cs: Add tests for usage of the sizeof opcode.
5501
5502 2009-01-07  Geoff Norton  <gnorton@novell.com>
5503
5504         * helpers.c:  Allow mono -v -v -v to work on darwin.
5505
5506 2009-01-05  Bill Holmes  <billholmes54@gmail.com>
5507
5508         * mini-amd64.c (mono_arch_get_vcall_slot) : Handle an additional instruction
5509           pattern. 
5510
5511         Contributed under MIT/X11 license.
5512
5513 2009-01-05  Zoltan Varga  <vargaz@gmail.com>
5514
5515         * mini.c (mono_allocate_stack_slots_full2): Use mono_class_from_mono_type
5516         instead of directly accessing type->data.klass. Fixes #462016.
5517         (mono_allocate_stack_slots_full): Ditto.
5518
5519         * mini-arm.c (mono_arch_flush_icache): Applied patch from Riku Voipio 
5520         <novell@kos.to>. Fix cache flush on kernels without OLDABI compat option.
5521
5522         * aot-compiler.c (emit_plt): Fix ARM build.
5523
5524 2009-01-04  Zoltan Varga  <vargaz@gmail.com>
5525
5526         * branch-opts.c (mono_if_conversion): Optimize this using ins->prev.
5527         
5528         * branch-opts.c (mono_if_conversion): Fix an assert introduced by the last
5529         change.
5530
5531         * branch-opts.c (mono_if_conversion): Use branch->inst_true_bb/inst_false_bb
5532         instead of bblock->out_bb [0]/[1], the two might not be the same. Fixes
5533         #463357.
5534
5535         * iltests.il.in: Add a regression test.
5536
5537 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
5538
5539         * mini-codegen.c (mono_print_ins_index): Pretty print XPHI and VPHI.
5540
5541 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
5542
5543         * basic-simd.cs: Add a regression test for #462457.
5544
5545 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
5546
5547         * mini-ops.h: Add a definition of XPHI.
5548
5549         * mini.h (MONO_IS_PHI): Make is aware of simd instrincs. 
5550
5551         * ssa.c (op_phi_to_move): Handle XPHI.
5552
5553         * ssa.c (mono_ssa_compute): Generate a XPHI for simd intrinsics instead of VPHI.
5554
5555         Fixes #462457
5556
5557 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
5558
5559         * method-to-ir.c (mono_emit_rgctx_calli): Fix a warning.
5560
5561 2008-12-31  Geoff Norton  <gnorton@novell.com>
5562
5563         * mini-ppc.c: The prolog size allocated can be too small for darwin
5564         ppc32 under certain circumstances.  Also fix a small logic bug.
5565
5566 2008-12-29  Zoltan Varga  <vargaz@gmail.com>
5567
5568         * mini.c (mono_jit_compile_method_inner): Avoid holding the domain lock
5569         while loading AOT methods.
5570
5571         * mini-exceptions.c: Check jit_tls->class_cast_from instead of class_cast_to
5572         since only the former is nulled out after a successful cast. This prevents
5573         crashes with rethrown exceptions when using --debug=casts.
5574
5575 2008-12-24  Mark Probst  <mark.probst@gmail.com>
5576
5577         * mini.h: New macro for checking whether a method is final,
5578         i.e. whether the method or its class is marked final.
5579
5580         * method-to-ir.c: Use the new macro for all final-checks
5581         consistently.  Fixes the crash in the System.ServiceModel tests.
5582
5583 2008-12-23  Mark Probst  <mark.probst@gmail.com>
5584
5585         * mini-exceptions.c (get_exception_catch_class): Corrected another
5586         overly strict assertion.
5587
5588 2008-12-23  Mark Probst  <mark.probst@gmail.com>
5589
5590         * mini-ppc.c (mono_arch_build_imt_thunk): Save and restore r11.
5591         Clobbering it is not allowed because the caller might use it as
5592         the vtable register in the interface call.
5593
5594 2008-12-19  Mark Probst  <mark.probst@gmail.com>
5595
5596         * mini-exceptions.c (get_exception_catch_class): Corrected an
5597         overly strict assertion.
5598
5599 2008-12-18  Mark Mason  <mmason@upwardaccess.com>
5600         
5601         * method-to-ir.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P or sizeof(gpointer) when appropriate.
5602
5603         * mini.h: Move typedef to mgreg_t up above include of mini-arch.h
5604
5605         * local-propogation.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P when appropriate
5606
5607         * cpu-mips.md: correct lengths for certain long_ opcodes.
5608
5609         * mini-mips.h: Only emulate long operations when SIZEOF_REGISTER==4. Add missing func decl.
5610
5611         * 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().
5612         
5613 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
5614
5615         * exceptions-mips.c (mono_arch_find_jit_info): decode sd instructions as well when looking for registers.
5616         
5617 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
5618         
5619         * mini-mips.c (mono_arch_output_basic_block): OP_JUMP_TABLE stores patch type in inst_c1, not inst_i1.
5620         
5621 2008-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
5622
5623         * branch-opts.c (remove_block_if_useless): Even if BB0 falls through, don't add a br to the
5624         next basic block.
5625         
5626 2008-12-16  Mark Mason  <mmason@upwardaccess.com>
5627
5628         * 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
5629
5630         * 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)
5631         
5632 2008-12-15  Mark Mason  <mmason@upwardaccess.com>
5633         
5634         * trace.c (mono_trace_enter_method): correctly handle arguments smaller than the stack slot size on big endian systems.
5635         
5636 2008-12-14  Zoltan Varga  <vargaz@gmail.com>
5637
5638         * liveness.c (mono_analyze_liveness): Avoid eliminating the 'this' var in
5639         gshared code. Fixes #458947.
5640
5641         * generics.cs: Add a test.
5642
5643 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
5644         
5645         * method-to-ir.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
5646         
5647         * mini-mips.c: first pass n32 code generation.
5648
5649         * mini-mips.h: datatypes and defines for n32 support.
5650
5651         * exceptions-mips.c: first pass n32 code generation.
5652         
5653         * tramp-mips.c: first pass n32 code generation.
5654         
5655         * cpu-mips.md: add long_ opcodes.
5656         
5657 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
5658
5659         * liveness.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
5660
5661         * cfold.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
5662         
5663         * local-propogation.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
5664         
5665         * regalloc2.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
5666
5667         * mini.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
5668
5669         * mini-codegen.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
5670
5671         * ssa.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
5672
5673         * decompose.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
5674
5675         * helpers.c: for mips/n32, don't pass -mips32 to objdump
5676
5677 2008-12-12  Zoltan Varga  <vargaz@gmail.com>
5678
5679         * mini-arm.c tramp-arm.c: Fix calls to mono_arch_flush_icache.
5680
5681 2008-12-12  Andres G. Aragoneses  <aaragoneses@novell.com>
5682
5683         * driver.c: Sync --help-trace with man page (EXPR,EXPR).
5684
5685 2008-12-12  Mark Probst  <mark.probst@gmail.com>
5686
5687         * mini-ppc.h, exceptions-ppc.c, tramp-ppc.c: Create function
5688         descriptors for helper functions directly in front of the code.
5689
5690 2008-12-11  Mark Probst  <mark.probst@gmail.com>
5691
5692         * method-to-ir.c: Removed an unnecessary assertion.
5693
5694 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
5695
5696         * method-to-ir.c: Merge SGEN changes from the old JIT.
5697
5698 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
5699
5700         * driver.c (compile_all_methods_thread_main): Handle failure of
5701         mono_get_method ().
5702
5703 2008-12-10  Mark Probst  <mark.probst@gmail.com>
5704
5705         * mini-ppc.c: Merged with mini-ppc64.c.
5706
5707         * mini-ppc.h: Define PPC_MINIMAL_PARAM_AREA_SIZE on all targets.
5708
5709         * Makefile.am: Use the same sources for PPC and PPC64.
5710
5711         * mini-ppc64.c: Removed.
5712
5713 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
5714
5715         * branch-opts.c (remove_block_if_useless): Extract fall through detection
5716         code to mono_bb_is_fall_through.
5717         
5718         * branch-opts.c (mono_remove_critical_edges): Same.
5719
5720 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
5721
5722         * ssa.c (fold_ins): branch opt can kill dummy switch ops so we can't
5723         expect that an OP_BR_REG will be there.
5724
5725 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
5726
5727         * branch-opts.c (remove_block_if_useless): Use MONO_IS_BRANCH_OP instead of checking
5728         for the many branch ops. The original check miss OP_BR_REG.
5729
5730         Fixes #457574.
5731         
5732 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
5733
5734         * mini-mips.h mini-mips.c exceptions-mips.c tramp-mips.c: first round of changes necessary to eventually support n32.
5735
5736 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
5737
5738         * aot-runtime.c (load_method): Avoid calling decode_exception_debug_info
5739         while holding the aot lock.
5740
5741 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
5742
5743         * mini-mips.c (mono_arch_output_basic_block): use mfc1/lwc1 instead of mfc1d/ldc1
5744         
5745 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
5746
5747         * mini.c (mini_cleanup) : Adding a call to cominterop_release_all_rcws 
5748           to release all runtime callable wrappers held by the runtime.
5749
5750         Contributed under MIT/X11 license.
5751
5752 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
5753
5754         * tramp-amd64.c (mono_arch_create_trampoline_code_full) : Increase the code size for
5755           for Winx64.
5756
5757         Contributed under MIT/X11 license.
5758
5759 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
5760
5761         * aot-runtime.c (decode_exception_debug_info): Acquire the domain
5762         lock when calling mono_domain_alloc (). Hopefully fixes #415608.
5763
5764 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
5765
5766         * cpu-mips.md: fix ckfinite length
5767
5768         * mini-mips.c: at least recognize n32 ABI when used (not yet supported)
5769         (mono_arch_lowering_pass): cleanup, rearrange for clarity
5770         (mono_arch_output_basic_block): implement OP_CKFINITE, add more asserts
5771         
5772 2008-12-08  Mark Mason   <mmason@upwardaccess.com>
5773
5774         * exceptions-mips.c (mono_arch_find_jit_info): init new_ctx with ctx, dont' call setup_context.
5775         
5776 2008-12-08  Geoff Norton  <gnorton@novell.com>
5777
5778         * tramp-amd64.c: r120895 stores RAX, so we need to increase the window
5779         size by 8 bytes as well.
5780
5781 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
5782
5783         * basic-simd.cs: Fix method names for Vector16b.
5784         
5785 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
5786
5787         * basic-simd.cs: Fix method names for Vector16sb.
5788
5789 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
5790
5791         * basic-simd.cs: Fix method names for Vector8us.
5792         
5793 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
5794
5795         * basic-simd.cs: Fix method names for Vector8s.
5796         
5797 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
5798
5799         * basic-simd.cs: Fix method names for Vector4ui.
5800
5801 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
5802
5803         * basic-simd.cs: Fix method names for Vector2l.
5804
5805 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
5806
5807         * basic-simd.cs: Fix method names for Vector2d.
5808
5809 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
5810
5811         * simd-intrinsics.c (mono_emit_simd_intrinsics): Add support for intrinsics
5812         that are extension methods.
5813
5814 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
5815
5816         * basic-simd.cs: Fix method names for Vector4f.
5817
5818 2008-12-08  Zoltan Varga  <vargaz@gmail.com>
5819
5820         * mini-exceptions.c (mono_print_thread_dump): Mark threadpool threads
5821         as such. Fixes #456669.
5822
5823 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
5824
5825         * mini-mips.c (mono_arch_emit_call): narrow float arguments when passing as args.
5826         
5827 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
5828
5829         * mini-mips.c (mono_arch_lowering_pass): don't handle OP_ICONV_TO_R* or OP_R*CONST
5830         (mono_arch_emit_setret): use OP_MIPS_CVTSD to return SP floats
5831         (mono_arch_output_basic_block): simplify FP load/store, handle OP_MIPS_FBLT_UN
5832         (mips_adjust_stackframe): handle FP spills
5833                 
5834         * mini-ops.h: add mips_mtc1_s2
5835         
5836         * cpu-mips.md: add mips_mtc1_s2
5837         
5838 2008-12-07  Zoltan Varga  <vargaz@gmail.com>
5839
5840         * unwind.c: New file, move the unwind info encoding functions here from
5841         aot-compiler.c, so they could be used at runtime too.
5842
5843 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
5844
5845         * mini-mips.c (mono_arch_lowering_pass): handle OP_IMUL_IMM as well
5846         (mono_arch_output_basic_block): fix OP_LOCALLOC code generation
5847         
5848 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
5849
5850         * mini-mips.c: cleanup warnings
5851         (mono_arch_lowering_pass): handle OP_LOCALLOC_IMM
5852         (mips_adjust_stackframe): handle case of taking the address of stack locals
5853         
5854 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
5855
5856         * aot-compiler.c: Implement a few functions missing from the asm writer.
5857         (emit_method_code): Only write symbols for methods when using the bin
5858         writer, since the assembler can't deal with the characters in our method
5859         names.
5860
5861         * aot-compiler.c (is_plt_patch): ICALL_ADDR is also a plt patch.
5862
5863         * method-to-ir.c (mono_method_to_ir): Transform aotconst+calli into a direct
5864         call.
5865
5866         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Rework the code
5867         a bit to also restore %rax.
5868
5869 2008-12-05  Mark Probst  <mark.probst@gmail.com>
5870
5871         * mini-ppc.c: Some simple merges from mini-ppc64.c.
5872
5873 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
5874
5875         * ssa.c (mono_ssa_compute): Only add an implicit reference at start for
5876         arguments.
5877
5878 2008-12-05  Mark Probst  <mark.probst@gmail.com>
5879
5880         * exceptions-ppc.c: Merged with exceptions-ppc64.c.
5881
5882         * mini-ppc.c, mini-ppc.h: Remove PPC_STACK_ALIGNMENT and use
5883         MONO_ARCH_FRAME_ALIGNMENT.  Struct for PPC64 function descriptors.
5884
5885         * exceptions-ppc64.c: Removed.
5886
5887         * Makefile.am: Use exceptions-ppc.c instead of exceptions-ppc64.c.
5888
5889 2008-12-05  Mark Probst  <mark.probst@gmail.com>
5890
5891         * tramp-ppc.c, mini-ppc.c, mini-ppc.h: Merged tramp-ppc.c with
5892         tramp-ppc64.c.
5893
5894         * Makefile.am: Use tramp-ppc.c instead of tramp-ppc64.c.
5895
5896         * tramp-ppc64.c: Removed.
5897
5898 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
5899
5900         * aot-compiler.c (add_generic_instances): Skip non-generic classes in
5901         the TYPESPEC table.
5902
5903 2008-12-05  Mark Probst  <mark.probst@gmail.com>
5904
5905         * mini-ppc.h: Merged mini-ppc64.h with mini-ppc.h.
5906
5907         * exceptions-ppc64.c, tramp-ppc64.c, mini-arch.h, Makefile.am: Use
5908         mini-ppc.h instead of mini-ppc64.h.
5909
5910         * mini-ppc64.h: Removed.
5911
5912 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
5913
5914         * mini-mips.c: introduce USE_LDC_SDC: use ldc1/sdc1 to load/store doubles, disabled by default
5915         
5916         * mini-mips.c (mono_arch_emit_outarg_vt): fix offset calculation for memcpy in structure passing.
5917         
5918 2008-12-05  Mark Probst  <mark.probst@gmail.com>
5919
5920         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c:
5921         Removed FIRST/LAST_[GF]REG macros, to make merging PPC64 with PPC
5922         code easier.
5923
5924 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
5925
5926         * basic-simd.cs: Tests for operator == and != on  Vector8us and Vector16b.
5927
5928 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
5929
5930         * simd-intrinsics.c: Add support for operator == and != to Vector8(u)s and Vector16(s)b.
5931
5932 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
5933
5934         * basic-simd.cs: Tests for operator == and != on Vector4f.
5935
5936 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
5937
5938         * simd-intrinsics.c (simd_intrinsic_emit_equality): Adapt to support Vector4f.
5939
5940         * simd-intrinsics.c: Kill useless enum.
5941
5942 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
5943
5944         * cpu-mips.md: add long_conv_to_ovf_i4_2
5945         * mini-mips.c: update/add various _OVF_ opcodes to fix test failures
5946
5947 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
5948
5949         * mini-mips.c: ifdef protect automatic promotions of R4 to R8.
5950         
5951         * mini-mips.c (mono_arch_emit_setret): handle R4 case with FCONV_TO_R4 instead of FMOVE
5952
5953 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
5954
5955         * mini-mips.c (mono_arch_output_basic_block): fix codegen for OP_OR_IMM/OP_IOR_IMM
5956         
5957 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
5958
5959         * basic-simd.cs: Add tests for new methods.
5960
5961 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
5962
5963         * simd-intrinsics.c: Add support for operator == and !=
5964         on Vector4(u)i.
5965
5966         * simd-methods.h: Add SN_op_Inequality and SN_op_Equality.
5967
5968 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
5969
5970         * simd-intrinsics.c: Remove ExtractByteMask intrinsics.
5971
5972 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
5973
5974         * aot-compiler.c (add_wrappers): Add pinvoke wrappers.
5975
5976         * mini.c (mono_resolve_patch_target): Allow pinvoke methods in 
5977         MONO_PATCH_INFO_ICALL_ADDR.
5978
5979         * aot-runtime.c (MonoAotFileInfo): Correct order of fields.
5980
5981         * aot-compiler.c: Resurrect full-aot support.
5982
5983 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
5984
5985         * mini-mips.c (mono_arch_lowering_pass): handle OP_COMPARE and OP_ICOMPARE
5986         
5987 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
5988
5989         * mini-mips.c (mono_arch_output_basic_block): fix OP_IREM_UN code generation
5990         
5991 2008-12-03  Rodrigo Kumpera  <rkumpera@novell.com>
5992
5993         * basic-simd.cs: Fix tests to work under ppc.
5994         Remove tests for methods that will be removed.
5995
5996 2008-12-03  Mark Probst  <mark.probst@gmail.com>
5997
5998         * method-to-ir.c (mono_method_to_ir): Handle ldtoken of an open
5999         generic type (via a typedef or typeref) correctly.
6000
6001 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
6002
6003         * mini-trampolines.c (mono_magic_trampoline): Add some debugging code to help
6004         diagnose an assertion failure.
6005
6006 2008-12-02  Mark Probst  <mark.probst@gmail.com>
6007
6008         * tramp-ppc64.c (mono_arch_create_rgctx_lazy_fetch_trampoline):
6009         Fix trampoline size.
6010
6011         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: A few floating point
6012         conversion opcodes are implemented natively instead via emulation.
6013
6014 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
6015
6016         * cpu-mips.md: remove mips_xori
6017
6018         * mini-ops.h:  remove mips_xori
6019
6020         * mini-mips.h: replace OP_MIPS_XORI with OP_IXOR
6021
6022         * mini-mips.c (mono_arch_decompose_long_opts): Add ladd_imm, lsub, lsub_imm, lneg, lsub_ovf, lsub_ovf_un.
6023         
6024         * mini-mips.c (mono_arch_lowering_pass, mono_arch_output_basic_block): fix IXOR handling
6025         
6026 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
6027
6028         * cpu-mips.md: fix instruction lengths.
6029
6030         * mini-mips.h: define MONO_ARCH_NO_IOV_CHECK
6031
6032         * mini-mips.c: move most instruction rewriting into decompose_ops. Implement conditional branches and exceptions. Fix jump table patch handling. Implement add/sub OVF.
6033
6034         * mini-ops.h: fix slti / sltiu op profiles.
6035         
6036 2008-12-02  Martin Baulig  <martin@ximian.com>
6037
6038         * method-to-ir.c (mono_method_to_ir): Disable debugging
6039         information for the init locals block to make the debugger stop
6040         after all locals have been initalized.
6041
6042 2008-12-02  Martin Baulig  <martin@ximian.com>
6043
6044         * mini.c (mini_method_compile): Disable MONO_OPT_DEADCE when
6045         running inside the debugger.
6046
6047 2008-12-01  Zoltan Varga  <vargaz@gmail.com>
6048
6049         * mini.c (mini_method_compile): Only run local deadce if MONO_OPT_DEADCE
6050         is enabled.
6051
6052         * method-to-ir.c (mono_method_to_ir): Fix invalid code generated by the 
6053         alu->alu imm optimization which only shows if deadce is disabled.
6054
6055         * aot-compiler.c: Rename the function names for the binary and asm writers
6056         so they can coexist in the same process. Rework the xdebug code to use the
6057         asm writer. This avoids the need to call into the runtime to dump the
6058         debugging info. Add more debugging info for types.
6059
6060         * mini-<ARCH>.h: Kill MONO_ARCH_HAVE_NORMALIZE_OPCODES define.
6061
6062         * genmdesc.c genmdesc.pl mini.h: Don't put the CEE_ opcodes into the
6063         cpu description tables, they can't occur in cpu-<ARCH>.md.
6064
6065         * method-to-ir.c (mono_method_to_ir): Set the type of the value pushed on
6066         the stack in CEE_LDFLDA. Fixes #450542.
6067
6068         * generics.cs: Add a new test.
6069
6070 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
6071
6072         * mini-ops.h: updated MIPS opcodes
6073         * mini-mips.c: decompose long opts
6074         * mini-mips.h: decompose long opts
6075         
6076 2008-11-29  Mark Mason   <mmason@upwardaccess.com>
6077
6078         * cpu-mips.md: fix length on int_rem_un
6079         * mini-mips.c (mips_stackframe_adjust): fix insertion of spillvars region in MIPS stackframes.
6080         
6081 2008-11-29  Zoltan Varga  <vargaz@gmail.com>
6082
6083         * mini.h aot-runtime.c: Fix building with DISABLE_AOT.
6084
6085         * mini-codegen.c (mono_print_ins_index): Handle OP_VOIDCALL_MEMBASE.
6086
6087 2008-11-29  Martin Baulig  <martin@ximian.com>
6088
6089         * mini-exceptions.c (mono_handle_native_sigsegv): Check
6090         mono_debug_using_mono_debugger() in addition to the
6091         `no_gdb_backtrace' flag in the `MonoDebugOptions'.
6092
6093 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
6094
6095         * mini-ops.h: updated more MIPS opcodes
6096         * mini-mips.c: FP compare/branch working again, clean up last of CEE_ -> OP_ mappings
6097         * cpu-mips.md: Added MIPS versions of new FP compare/branch opcodes.
6098         
6099 2008-11-28  Mark Probst  <mark.probst@gmail.com>
6100
6101         * mini-ppc64.c: Patch the RGCTX fetch trampoline correctly.
6102
6103 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
6104
6105         * mini-mips.c (mono_arch_emit_call): adding missing conversion to fp single when passing in integer arg register.
6106         * mini-mips.c (mips_adjust_stackframe): compensate for spill-down logic.
6107         * mini-ops.h: correct selected mips opcode entries
6108         
6109 2008-11-28  Mark Probst  <mark.probst@gmail.com>
6110
6111         * mini-ppc64.c, mini-ppc64.h: Enable generalized IMT thunks and
6112         make them work.
6113
6114 2008-11-28  Mark Probst  <mark.probst@gmail.com>
6115
6116         * mini-ppc64.h, tramp-ppc64.c: Make generic code sharing work.
6117
6118 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
6119
6120         * method-to-ir.c, mini-trampolines.c: protect IMG code with #ifdef MONO_ARCH_HAVE_IMT to fix compile errors.
6121         * mini-mips.c: Fixup stackframe assignments after allocation of spillvars.
6122         * mini-mips.h: disable IMT
6123         * tramp-mips.c (mono_arch_get_vcall_slot): fix offset extraction
6124         
6125 2008-11-28  Mark Probst  <mark.probst@gmail.com>
6126
6127         * mini-ppc64.c, mini-ppc64.h: Don't emulate long ops.
6128
6129 2008-11-28  Mark Probst  <mark.probst@gmail.com>
6130
6131         * mini-ppc64.c, exceptions-ppc64.c: Several fixes.
6132
6133 2008-11-28  Zoltan Varga  <vargaz@gmail.com>
6134
6135         * method-to-ir.c (handle_isinst): Use PCONST instead of ICONST for
6136         consistency.
6137
6138 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
6139
6140         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
6141         for Set/GetVector aligned versions.
6142
6143 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
6144
6145         * basic-simd.cs: Add tests for Get/SetVector.
6146
6147 2008-11-27  Mark Probst  <mark.probst@gmail.com>
6148
6149         * mini.c: Removed g_slist_append_mempool().  Now in
6150         metadata/mempool.c.
6151
6152 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
6153
6154         * simd-intrinsics.c (mono_emit_vector_ldelema): Extract the element
6155         size properly and make the bounds check optional.
6156
6157         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
6158         for SetVector and IsAligned.
6159
6160 2008-11-27  Zoltan Varga  <vargaz@gmail.com>
6161
6162         * mini.c: Remove unused mono_normalize_opcodes () function.
6163
6164 2008-11-26  Mark Probst  <mark.probst@gmail.com>
6165
6166         * method-to-ir.c (mini_emit_inst_for_method): Small fix: we're
6167         using the new atomic add ops now.
6168
6169         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Implemented atomic
6170         add.
6171
6172 2008-11-26  Mark Probst  <mark.probst@gmail.com>
6173
6174         * mini-ppc64.c: Several fixes.
6175
6176 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
6177
6178         * cpu-mips.md: added jump_table
6179         * mini-mips.c: added jump_table. Eliminate compare-imm when lowering. Remove dead function.             
6180
6181 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
6182
6183         * mini-mips.c, mini-mips.h, tramp-mips.c, cpu-mips.md: Initial upgrade of MIPS port to new IR.
6184
6185 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
6186
6187         * mini-ops.h: corrected a handful of MIPS opcodes.
6188
6189 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
6190
6191         * aot-compiler.c: MIPS to use ELF writer
6192
6193 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
6194
6195         * mini-codegen.c: remove MIPS specific assert.
6196
6197 2008-11-25  Mark Probst  <mark.probst@gmail.com>
6198
6199         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Several
6200         fixes.  PPC64 now passes most of the runtime regressions.
6201
6202 2008-11-24  Zoltan Varga  <vargaz@gmail.com>
6203
6204         * regalloc2.c: Distinguish between use/def positions. Optimize the creation of
6205         volatile intervals a bit.
6206
6207 2008-11-24  Mark Probst  <mark.probst@gmail.com>
6208
6209         * basic-long.cs: New test case.
6210
6211 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
6212
6213         * mini.c (mini_method_compile): Disable globalra for large methods for 
6214         now.
6215
6216         * regalloc2.c (order_moves): Add fp support.
6217
6218         * branch-opts.c (mono_remove_critical_edges): Split non-critical edges whose
6219         source bblock ends with an OP_BR_REG.
6220
6221         * ratests.cs: Add a new test.
6222
6223 2008-11-23  Mark Probst  <mark.probst@gmail.com>
6224
6225         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c: Disable generic code
6226         sharing.  PPC64 now passes generics.exe.
6227
6228 2008-11-23  Mark Probst  <mark.probst@gmail.com>
6229
6230         * mini-ppc64.c: Several fixes.  PPC64 now runs iltests.exe.
6231
6232 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
6233
6234         * exceptions-x86.c (mono_arch_find_jit_info): Avoid reading uninitialized
6235         memory when mono_jit_info_table_find () can't find the method in the
6236         LMF case.
6237
6238         * aot-compiler.c (mono_save_xdebug_info): Emit complete debug info for
6239         AOTed code too.
6240         
6241         * aot-compiler.c (mono_save_xdebug_info): Make this work with the assembly
6242         writer too.
6243
6244 2008-11-23  Mark Probst  <mark.probst@gmail.com>
6245
6246         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, cpu-ppc64.md:
6247         Several fixes.  PPC64 now runs exceptions.exe and
6248         devirtualization.exe.
6249
6250 2008-11-22  Mark Probst  <mark.probst@gmail.com>
6251
6252         * mini-ppc64.c, tramp-ppc64.c: Small fixes.  PPC64 now runs
6253         arrays.exe and basic-math.exe.
6254
6255 2008-11-22  Mark Probst  <mark.probst@gmail.com>
6256
6257         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c,
6258         cpu-ppc64.md: Several fixes.  PPC64 now runs objects.exe.
6259
6260 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
6261
6262         * simd-intrinsics.c: Add support ArrayExtension intrinsics.
6263
6264 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
6265
6266         * method-to-ir.c: Move bounds checking macros to ir-emit.h
6267
6268         * ir-emit.h: Move macros from method-to-ir.c to here.
6269
6270 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
6271
6272         * mini-ops.h: Correct the long simd ops to use LREG.
6273
6274 2008-11-21  Zoltan Varga  <vargaz@gmail.com>
6275
6276         * mini-ops.h: Correct the dreg type of OP_LOADI8_MEMBASE.
6277         
6278         * mini-ops.h: Correct the dreg type of a few long opcodes.
6279
6280         * mini-amd64.h: Applied patch from Mihai Chelaru <kefren@ngnetworks.ro>.
6281         Add netbsd support.
6282
6283 Fri Nov 21 12:52:23 CET 2008 Paolo Molaro <lupus@ximian.com>
6284
6285         * mini-ppc.c: remove negative stack references in epilog
6286         for platforms that don't support the red zone.
6287
6288 2008-11-21  Mark Probst  <mark.probst@gmail.com>
6289
6290         * mini-ppc64.h, cpu-ppc64.md: Fixed caller/callee saved floating
6291         point regs.  Now PPC64 passes basic-calls.exe.
6292
6293 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6294
6295         * basic-simd.cs: Add tests for accessors of Vector2l.
6296
6297 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6298
6299         * mini-ops.h: Added OP_INSERTX_I8_SLOW,.
6300
6301         * mini-x86.c (mono_arch_decompose_long_opts): Decompose OP_INSERTX_I8_SLOW.
6302         
6303         * simd-intrinsics.c: Add support for Vector2l and Vector2ul.
6304
6305 2008-11-21  Mark Probst  <mark.probst@gmail.com>
6306
6307         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Several fixes.  Now
6308         PPC64 passes basic-long.exe.
6309
6310 2008-11-20  Mark Probst  <mark.probst@gmail.com>
6311
6312         * decompose.c: Decompose carry and overflow add on PPC64 like on
6313         other 64 bit archs.  Don't decompose sub at all on PPC64.
6314
6315         * mini-ppc64.c, exceptions-ppc64.c, tramp-ppc64.c, cpu-ppc64.md:
6316         Several fixes and new opcodes.  Now PPC64 runs (but doesn't pass)
6317         basic-long.exe.
6318
6319 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6320
6321         * basic-simd.cs: Add tests for accessors of Vector2d.
6322
6323 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6324
6325         * mini-ops.h: Added OP_INSERTX_R8_SLOW,.
6326
6327         * cpu-x86.md: Same.
6328
6329         * mini-x86.c (mono_arch_output_basic_block): Same.
6330         
6331         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector2d.
6332
6333 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6334
6335         * basic-simd.cs: Add tests for accessors of Vector4f.
6336
6337 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6338
6339         * mini-ops.h: Added OP_INSERTX_R4_SLOW,.
6340
6341         * cpu-x86.md: Same.
6342
6343         * mini-x86.c (mono_arch_output_basic_block): Same.
6344         
6345         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4f.
6346
6347 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6348
6349         * basic-simd.cs: Add tests for accessors of Vector4i and Vector4ui.
6350
6351 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6352
6353         * mini-ops.h: Added OP_INSERTX_I4_SLOW,.
6354
6355         * cpu-x86.md: Same.
6356
6357         * mini-x86.c (mono_arch_output_basic_block): Same.
6358         
6359         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4i and Vector4ui.
6360
6361 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6362
6363         * cpu-x86.md: Use reasonable sizes for extractx_u2 and insertx_u1_slow.
6364
6365 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6366
6367         * simd-intrinsics.c: Enable setters for Vector16sb.
6368
6369 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
6370
6371         * mini-ops.h: Added OP_EXTRACTX_U2, OP_INSERTX_U1_SLOW.
6372
6373         * cpu-x86.md: Same.
6374
6375         * mini-x86.c (mono_arch_output_basic_block): Same.
6376         
6377         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector16b.
6378
6379 2008-11-19  Rodrigo Kumpera  <rkumpera@novell.com>
6380
6381         * simd-intrinsics.c: Implement setter for Vector8us.
6382
6383 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
6384
6385         * aot-compiler.c (mono_save_xdebug_info): Emit correct location info
6386         for dead variables.
6387
6388 Wed Nov 19 18:27:41 CET 2008 Paolo Molaro <lupus@ximian.com>
6389
6390         * mini-ppc.c: remove references to the red zone in the prolog
6391         (for systems that don't support it).
6392
6393 2008-11-19  Mark Probst  <mark.probst@gmail.com>
6394
6395         * cpu-ppc64.md: Fixed a few instruction lengths.
6396
6397         * mini-ppc64.c: Don't emit SETLRET.  PPC64 passes basic-float.exe,
6398         now.
6399
6400 2008-11-19  Mark Probst  <mark.probst@gmail.com>
6401
6402         * mini-ppc64.c, cpu-ppc64.md: Fixed some opcodes.  PPC64 passes
6403         basic.exe now.
6404
6405 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
6406
6407         * aot-compiler.c (mono_save_xdebug_info): Add more parameter types.
6408
6409 2008-11-18  Rodrigo Kumpera  <rkumpera@novell.com>
6410
6411         * mini-ops.h: Added OP_INSERT_I2.
6412
6413         * cpu-x86.md: Same.
6414
6415         * mini-x86.c (mono_arch_output_basic_block): Same.
6416         
6417         * simd-intrinsics.c: Implement setter for Vector8s.
6418
6419         * simd-methods.h: Add the names of get setters of Vector8s.
6420
6421 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
6422
6423         * aot-compiler.c (mono_save_xdebug_info): Add support for parameters.
6424         
6425         * aot-compiler.c (mono_save_xdebug_info): Add preliminary support for
6426         parameters.
6427
6428         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
6429
6430 2008-11-18  Mark Probst  <mark.probst@gmail.com>
6431
6432         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Changes
6433         for PPC64.  An empty program runs now.
6434
6435 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
6436
6437         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
6438
6439         * aot-compiler.c mini.c mini.h: Add a JIT debugging mode modelled after
6440         a similar mode in Kaffe: When the the MONO_XDEBUG env var is set, debugging
6441         info for JITted code is emitted into a shared library, loadable into gdb.
6442
6443 2008-11-18  Mark Probst  <mark.probst@gmail.com>
6444
6445         * Makefile.am: Changes to build PPC64.
6446
6447         * mini-arch.h: Include mini-ppc64.h on PPC64.
6448
6449 2008-11-18  Mark Probst  <mark.probst@gmail.com>
6450
6451         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Updated with changes
6452         in PPC code up to r119147.
6453
6454 2008-11-18  Mark Probst  <mark.probst@gmail.com>
6455
6456         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
6457         cpu-ppc64.md: Changes for PPC64.
6458
6459         Based on code submitted by andreas.faerber@web.de at
6460         https://bugzilla.novell.com/show_bug.cgi?id=324134 under the
6461         X11/MIT license.
6462
6463 2008-11-18  Mark Probst  <mark.probst@gmail.com>
6464
6465         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
6466         cpu-ppc64.md: Copied from the corresponding PPC files from
6467         r118846.
6468
6469 2008-11-18  Scott Peterson  <lunchtimemama@novell.com>
6470
6471         * mini-ops.h: Added OP_ROUND.
6472
6473         * cpu-x86.md: Added round.
6474
6475         * mini-x86.c: Added support for intrinsicing Math.Round (double).
6476
6477         * basic-math.cs: Added test_0_round to test rounding.
6478
6479         Contributed under MIT/X11 license.
6480
6481 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
6482
6483         * aot-compiler.c : Fix the Winx64 build.
6484
6485         Contributed under MIT/X11 license.
6486
6487 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
6488
6489         * mini-x86.c (mono_arch_output_basic_block): Use movsd instead of monvups
6490         in OP_EXTRACT_R8 to avoid possible stack corruption.
6491
6492 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
6493
6494         * mini-ops.h: Added OP_EXTRACT_R8/I8.
6495
6496         * cpu-x86.md: Added extract_r8.
6497
6498         * mini-x86.c (mono_arch_output_basic_block): Emmit OP_EXTRACT_R8.
6499         
6500         * mini-x86.c: Added mono_arch_decompose_long_opts to break OP_EXTRACT_I8 into
6501         a couple of OP_EXTRACT_I4.
6502
6503         * mini-x86.h: Define MONO_ARCH_HAVE_DECOMPOSE_LONG_OPTS if simd is enabled.
6504
6505         * simd-intrinsics.c: Implement getters for Vector2l/2ul/2d.
6506
6507 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
6508
6509         * simd-intrinsics.c (vector2l_intrinsics): CompareGreaterThan requires sse 4.2
6510         and not 4.1. 
6511
6512 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
6513
6514         * method-to-ir.c (handle_delegate_ctor): Emit the address of the delegate
6515         trampoline as an AOT const of the proper type instead of MONO_PATCH_INFO_ABS.
6516
6517         * mini.c (mono_codegen): Remove the handling of delegate trampolines, they
6518         are not needed any more.
6519
6520         * mini.h: Remove the unused INS_LIST macros.
6521
6522         * mini.c (mini_method_compile): Remove a disable globalra case which is no
6523         longer needed.
6524
6525         * *.h *.c: Remove duplicate MonoInst emission macros, use the ones in
6526         ir-emit.h.
6527
6528         * regalloc.h *.c: Remove references to mono_regstate_next_int (), use
6529         mono_alloc_ireg () instead.
6530
6531         * mini-<ARCH>.c: Include ir-emit.h. Remove duplicate MonoInst emission
6532         macros.
6533
6534         * mini-amd64.c (emit_load_volatile_arguments): Removed, not needed
6535         on amd64.
6536
6537         * aot-runtime.c (load_aot_module): Disable AOT when running under
6538         CAS.
6539
6540         * mini-amd64.h: Change the monitor fastpath defines to check for
6541         !PLATFORM_WIN32 so they work on *bsd too.
6542
6543         * mini.h mini.c mini-hhpa.c: Remove more unused code.
6544
6545         * mini-s390.c mini-s390x.c: Remove !cfg->new_ir code.
6546
6547         * mini.h (MonoCompile): Remove new_ir flag.
6548
6549         * regalloc.h regalloc.c: Remove unused code.
6550
6551         * cpu-*.md: Remove more unused opcodes.
6552
6553         * simple-cee-ops.h simple-mini-ops.h: Removed.
6554
6555         * mini-ops.h *.c cpu-<ARCH>.md: Remove more unused opcodes.
6556         
6557 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
6558
6559         * aliasing.h: Removed.
6560
6561         * *.c: Remove references to aliasing.h and inssel.h.
6562
6563         * mini.c: Remove additional unused functions.
6564
6565         * mini-ops.h cpu-*.md: Remove unused opcodes.
6566
6567 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
6568
6569         Remove the old JIT code.
6570
6571         * inssel*.brg: Removed.
6572
6573         * ssa.c abcremoval.c aliasing.c: Removed.
6574
6575         * ssa2.c: Renamed to ssa.c.
6576
6577         * abcremoval2.c: Renamed to abcremoval.c.
6578
6579         * *.c: Removed all !cfg->new_ir code.
6580
6581         * mini-<ARCH>.c: Removed mono_arch_call_opcode (), 
6582         mono_arch_emit_this_vret_args (), and mono_arch_get_inst_for_method ().
6583
6584         * mini.c: Removed the old mono_method_to_ir () and all the code used by it.
6585         
6586 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
6587
6588         * aot-compiler.c aot-runtime.c: Emit most of the non-table data in a structure
6589         to simplify the code and cut back on the number of global symbols in the AOT
6590         file.
6591         
6592         * aot-compiler.c aot-runtime.c: Get rid of the unused plt_jump_table.
6593
6594 2008-11-15  Zoltan Varga  <vargaz@gmail.com>
6595
6596         * aot-runtime.c aot-compiler.c: Unify the plt_jump_table/plt_info tables
6597         with the got/got_info tables.
6598
6599         * mini.h: Bump AOT file format version.
6600         
6601         * unwind.h: New file, contains definitions for stack unwinding.
6602
6603         * mini.c (mono_emit_unwind_op): New helper function to append an unwind op
6604         to cfg->unwind_ops.
6605         
6606         * aot-compiler.c: Generalize the emitting of unwind information to use the
6607         information in cfg->unwind_ops.
6608
6609         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info.
6610
6611         * aot-compiler.c: Emit dwarf unwind information so gdb can unwind through
6612         AOT method frames. Enable writing symbols for methods by default.
6613
6614 2008-11-14  Rodrigo Kumpera  <rkumpera@novell.com>
6615
6616         * simd-intrinsics.c (simd_intrinsic_emit_getter): Generalize this code
6617         and make it work with vectors of element sizes 1, 2 and 4.
6618
6619         * simd-intrinsics.c: Enable getter for all vectors with element size
6620         1, 2 or 4.
6621
6622         * simd-methods.h: Add the names of other getters.
6623
6624         * mini-ops.h: Added OP_EXTRACT_I2/U2/I1/U1.
6625
6626         * cpu-x86.md: Same.
6627
6628         * mini-x86.c: Same.
6629
6630 Fri Nov 14 15:54:18 CET 2008 Paolo Molaro <lupus@ximian.com>
6631
6632         * mini-ppc.h: portability fix.
6633
6634 Fri Nov 14 15:39:50 CET 2008 Paolo Molaro <lupus@ximian.com>
6635
6636         * mini-ppc.h, mini-ppc.c: avoid using the red zone as some kernels are
6637         buggy and will overwrite it.
6638
6639 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
6640
6641         * aot-compiler.c: Add functionality to emit local symbols to the elf writer.
6642         Use it to emit local symbols for all methods so AOTed methods show up with
6643         their full name in gdb/valgrind output.
6644
6645 Fri Nov 14 12:56:27 CET 2008 Paolo Molaro <lupus@ximian.com>
6646
6647         * mini-ppc.c: portability fixes.
6648
6649 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
6650
6651         * mini-trampolines.c (mono_magic_trampoline): Move the patching of plt
6652         entries out of the if (!generic_shared...) code so it is always done.
6653         (mono_class_init_trampoline): Do the patching when running under valgrind
6654         too, newer versions of valgrind have no problems with it.
6655
6656 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
6657
6658         * aot-compiler.c (emit_writeout): Rework this to make it easier to add
6659         further sections.
6660
6661 2008-11-13  Mark Probst  <mark.probst@gmail.com>
6662
6663         * mini-ppc.c, cpu-ppc.md: Reserve space for the parameter area in
6664         filters.
6665
6666 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
6667
6668         * simd-intrinsics.c: Add getter support for Vector4i and Vector4ui. 
6669
6670 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
6671
6672         * mini-ops.h: Kill diplicated ops OP_SHUFLEPS.
6673
6674         * cpu-x86.md: Same.
6675
6676         * mini-x86.c: Same.
6677
6678         * simd-intrinsics.c: Same.
6679
6680 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
6681
6682         * simd-intrinsics.c: Enable constructor intrinsics for all types.
6683
6684 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
6685
6686         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Generalize this method
6687         to work with more Vector types.
6688
6689 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
6690
6691         * simd-intrinsics.c (simd_intrinsic_emit_ctor): If the target is already a pointer
6692         store the elemens directly instead of using and intermediate.
6693
6694 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
6695
6696         * mini-amd64.c (emit_call_body): Avoid aligning call sites in AOTed code.
6697
6698         * tramp-x86.c (mono_arch_create_trampoline_code): Rework the return sequence
6699         to preserve %eax for aot plt trampolines.
6700
6701         * aot-compiler.c (compile_method): Don't skip synchronized methods.
6702         (encode_method_ref): Flag synchronized methods so they won't go through
6703         the AOT trampoline.
6704
6705         * aot-compiler.c: Additional work to support AOTing synchronized methods/
6706         wrappers.
6707
6708         * cpu-ia64.md (jmp): Increase max length.
6709
6710 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
6711
6712         * aot-runtime.c (load_method): Avoid calling runtime_class_init () for
6713         open generic classes.
6714
6715         * aot-compiler.c: Enable the ELF writer on ELF platforms.
6716
6717         * method-to-ir.c (mono_method_to_ir2): Revert the last change to the
6718         box+brtrue optimization since it causes test failures on x86.
6719
6720 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
6721
6722         * mini-ops.h: Remove OP_PUSH_R4 and OP_LOADX_STACK.
6723
6724         * cpu-x86.md: Same.
6725
6726         * mini-x86.c: Same.
6727
6728         * mini.h (struct MonoCompile): Add simd_ctor_var to be used as storage
6729         for simd ctor values. 
6730
6731         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Use simd_ctor_var for the constructor
6732         instead of directly pushing the values on stack. This saves about 15 bytes of generated code.
6733
6734 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
6735
6736         * simd-methods.h: Rename SubWithSaturation, ArithmeticRightShift and
6737         LogicalRightShift.
6738
6739         * simd-instrincs.c: Same.
6740
6741         * basic-simd.cs: Same.
6742
6743 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
6744
6745         * ratests.cs: Add more tests.
6746
6747         * regalloc2.c (add_spill_code): Handle more corner cases.
6748
6749 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
6750
6751         * regalloc2.c (INS_POS_INTERVAL): Decrease this to 8 to avoid overflows.
6752         (update_liveness): Avoid holes in the liveness ranges of hregs if they are
6753         both the source an destination of an instruction.
6754
6755 Tue Nov 11 19:30:50 CET 2008 Paolo Molaro <lupus@ximian.com>
6756
6757         * jit-icalls.c, local-propagation.c, mini.c, ssa.c, ssapre.c, trace.c,
6758         wapihandles.c: more portability changes.
6759
6760 Tue Nov 11 18:56:33 CET 2008 Paolo Molaro <lupus@ximian.com>
6761
6762         * aot-compiler.c, aliasing.c, abcremoval.c: portability changes.
6763         * mini.c mini.h, aot-runtime.c: the aot segfault-handling code is not
6764         safe to execute in a signal handler and the kernel provides better
6765         the info in /proc/self/smaps. Avoid the assert on sigaction during
6766         cleanup.
6767
6768 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
6769
6770         * method-to-ir.c (mono_method_to_ir2): In the box+brtrue optimization, only
6771         do the bblock linking hack if it is actually needed.
6772
6773         * Makefile.am (patch-libtool): New helper target to patch libtool to speed
6774         up linking.
6775
6776         * liveness.c (ENABLE_LIVENESS2): Reenable this for 64 bit archs as the
6777         crash problem is fixed.
6778
6779         * branch-opts.c (mono_remove_critical_edges): Link up newly added
6780         bblocks.
6781
6782         * mini.c (mini_method_compile): Compute unreachable bblocks properly even
6783         for catch clauses.
6784         (mini_method_compile): Set the starting value of next_vreg to 
6785         MAX_IREGS + MAX_FREGS when using globalra.
6786
6787         * method-to-ir.c (mono_method_to_ir2): Mark bblocks starting
6788         filter clauses with BB_EXCEPTION_HANDLER.
6789
6790         * regalloc2.c (assign_spill_slots): Set cfg->rgctx_var.
6791
6792 2008-11-10  Mark Probst  <mark.probst@gmail.com>
6793
6794         * mini-x86.c (mono_arch_get_argument_info): Don't align argument
6795         space for stdcall.  Fixes regressions on Win32.
6796
6797 2008-11-10  Zoltan Varga  <vargaz@gmail.com>
6798
6799         * regalloc2.c (handle_reg_constraints): Avoid adding code to unreachable
6800         bblocks.
6801         (linear_scan): Remove an assert which doesn't seem to be needed.
6802
6803         * local-propagation.c (mono_local_deadce): Avoid a call to
6804         MONO_DELETE_INS which would screw up the instruction linking.
6805
6806         * mini.c (mono_decompose_op_imm): Make this work with globalra.
6807
6808         * regalloc2.c: Upgrade to work the current JIT code.
6809
6810 2008-11-09  Zoltan Varga  <vargaz@gmail.com>
6811
6812         * method-to-ir.c (inline_method): Merge more basic blocks to help the AOT
6813         case.
6814
6815         * aot-runtime.c: Remove some dead code.
6816
6817         * tramp-arm.c: Use 'code' as the runnning pointer in code generation for
6818         consistency.
6819         (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Implement aot support.
6820
6821         * aot-runtime.c (load_named_code): Decode the offset of lazy fetch
6822         trampolines using sscanf since atoi doesn't work on large unsigned values.
6823
6824         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): 
6825         Initialize code_size.
6826
6827 2008-11-08  Mark Probst  <mark.probst@gmail.com>
6828
6829         * method-to-ir.c (mini_emit_inst_for_method): Make
6830         Interlocked.CompareExchange work for Int arguments on 32 bit
6831         archs, as well.
6832
6833 2008-11-07  Mark Probst  <mark.probst@gmail.com>
6834
6835         * method-to-ir.c (mono_method_to_ir2): Fixed a funny commit error.
6836
6837 2008-11-06  Bill Holmes  <billholmes54@gmail.com>
6838
6839         * main.c Fix MSVC build.
6840
6841         Contributed under MIT/X11 license.
6842
6843 2008-11-06  Mark Probst  <mark.probst@gmail.com>
6844
6845         * mini-x86.c (mono_arch_allocate_vars): Make sure locals that need
6846         alignment larger than 8 bytes are aligned correctly, too.
6847
6848         * mini.c: Honor the min_align field of MonoClass when laying out
6849         the stack.
6850
6851 2008-11-06  Zoltan Varga  <vargaz@gmail.com>
6852
6853         * method-to-ir.c (mono_method_to_ir2): Fix AOT support for CEE_SWITCH on arm.
6854
6855         * aot-compiler.c (emit_plt): Fix a warning.
6856         
6857         * aot-compiler.c: Implement ARM support in the binary writer.
6858
6859 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
6860
6861         * basic-simd.cs: Add test for getter with byref arg.
6862         Fix the naming of a few tests.
6863         Add missing checks to a test.
6864
6865 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
6866
6867         * aot-compiler.c (emit_plt): Make the arm code work with the binary writer.
6868
6869         * aot-compiler.c aot-runtime.c mini-trampolines.c tramp-amd64.c: Implement
6870         most of the full-aot support for monitor enter/exit trampolines.
6871
6872         * tramp-x86.c tramp_amd64.c: Add AOT compatible variants of the monitor
6873         enter/exit trampoline creation functions.
6874
6875         * Makefile.am: Fix the generation of buildver.h so it is not invoked during
6876         make dist.
6877
6878 Wed Nov 5 16:28:53 CET 2008 Paolo Molaro <lupus@ximian.com>
6879
6880         * mini.h, aot-compiler.c, method-to-ir.c, aot-runtime.c: remove the
6881         incorrectly added MONO_WRAPPER_MONITOR_* (in r117651-r117652) and
6882         implement the needed functionality without adding crap to the runtime.
6883
6884 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
6885
6886         * mini-trampolines.c (mono_create_monitor_enter_trampoline): Fix the
6887         non-x86 builds.
6888
6889         * mini.c (mono_build_date): New global version holding the build date in
6890         string format.
6891         
6892         * Makefile.am (buildver.c): Generate a file containing the build date.
6893
6894         * main.c: Set the build date from the generated file.
6895
6896         * mini.c (mono_get_runtime_build_info): New helper function returning build
6897         information in a string format.
6898         
6899         * driver.c (mono_main): Print the build date in --version.
6900
6901         * aot-compiler.c aot-runtime.c: Embed the build information into the AOT
6902         file when the bind-to-runtime-version option is used.
6903
6904 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
6905
6906         * simd-intrinsics.c: Fix bug when using getters and byref args. 
6907
6908 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
6909
6910         * simd-methods.h: Rename prefetch methods.
6911
6912         * simd-intrinsics.c: Same.      
6913
6914 2008-11-05  Mark Probst  <mark.probst@gmail.com>
6915
6916         * tramp-amd64.c: Enlarge the Monitor.Enter/Exit trampoline code
6917         sizes.
6918
6919 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
6920
6921         * aot-compiler.c: Use the bundled elf header files instead of depending on
6922         the system one.
6923         
6924         * aot-compiler.c (emit_symbol_diff): Allocate memory from the acfg
6925         mempool.
6926
6927         * method-to-ir.c (mono_method_check_inlining): Avoid a getenv () call
6928         on every call.
6929
6930 2008-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
6931
6932         * cpu-x86.md: Add store nta ops.
6933
6934         * mini-ops.h: Same.
6935
6936         * mini-x86.c: Same.
6937
6938         * mini.h: Add an enum for simd prefetch modes.
6939
6940         * simd-methods.h: Refactor the store_aligned code to handle multiple kinds
6941         of store. Use the changed code to support store nta.
6942
6943         * simd-intrinsics.c: Add prefetch ops for all vector types.
6944
6945 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
6946
6947         * aot-compiler.c: Add an option for JIT compiling the methods by multiple 
6948         threads.
6949         
6950         * aot-compiler.c: Use statically allocated buffers for constructing symbol 
6951         names.
6952
6953         * aot-runtime.c aot-compiler.c: Add support for the MONITOR_ENTER/EXIT
6954         trampolines.
6955
6956 2008-11-04  Mark Probst  <mark.probst@gmail.com>
6957
6958         * mini-x86.c: Fixed commit.
6959
6960 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
6961
6962         * aot-compiler.c (emit_plt): Align the plt section only on x86.
6963
6964 2008-11-04  Mark Probst  <mark.probst@gmail.com>
6965
6966         * mini-trampolines.c, mini.h: Two new trampolines: MONITOR_ENTER
6967         and MONITOR_EXIT, for the ASM fastpaths.
6968
6969         * method-to-ir.c: Use the ASM fastpath for Monitor.Enter/Exit if
6970         available.
6971
6972         * mini.c, patch-info.h: Signature and patch infos for
6973         Monitor.Enter/Exit trampolines.
6974
6975         * mini-amd64.c, mini-x86.c: Make emit_tls_get() non-static.
6976
6977         * tramp-amd64.c, tramp-x86.c, mini-amd64.h, mini-amd64.h:
6978         Monitor.Enter/Exit ASM fastpath for Linux.
6979
6980 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
6981
6982         * mini.c (mono_method_to_ir): Fix soft-float support in Array.Get/Set.
6983
6984         * objects.cs: Add a new test.
6985         
6986         * aot-compiler.c: Use mono_100ns_ticks () for computing the profiling info.
6987
6988         * aot-runtime.c (load_method): Run class initialization in the PLT case even
6989         if MONO_LOG_LEVEL is set.
6990
6991         * debug-mini.c (serialize_variable): Fix the encoding of dead variables.
6992
6993         * aot-runtime.c (mono_aot_get_method): Skip out-of-date AOT modules.
6994
6995         * aot-compiler.c (emit_and_reloc_code): Speed this up a little.
6996         
6997         * aot-compiler.c: Change the relocation code to use virtual addresses instead
6998         of file offsets. Align the sections belonging to the data segment to 
6999         PAGESIZE.
7000
7001 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
7002
7003         * aot-compiler.c: Simplify the elf writer by depending on the definitions in
7004         elf.h. Port it to amd64.
7005
7006 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
7007
7008         * driver.c: Enable SIMD by default.
7009
7010 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
7011
7012         * cpu-x86.md: Add prefetch op.
7013
7014         * mini-ops.h: Same.
7015
7016         * mini-x86.c: Same.
7017
7018         * mini.h: Add an enum for simd prefetch modes.
7019
7020         * simd-methods.h: Add prefetch function names.
7021
7022         * simd-intrinsics.c: Add prefetch ops for all vector types.
7023
7024 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
7025
7026         * aot-compiler.c (emit_bytes): Speed this up a little.
7027
7028 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
7029
7030         * aot-compiler.c: Add JIT time etc. statistics.
7031         
7032         * aot-compiler.c (compile_method): Fix the copying of the cfgs array.
7033
7034         * mini.h (MonoCompile): Add 'got_offset' field.
7035
7036         * aot-compiler.c: Store the got offset in MonoCompile, get rid of the
7037         method_got_offsets array.
7038
7039         * aot-compiler.c aot-runtime.c: Add support for the monitor enter/exit
7040         wrappers.
7041
7042         * aot-compiler.c (compile_method): Add generic method instances referenced
7043         by the method to the list of methods to be compiled, this is required so if
7044         A<T> references B<T>, and another assembly references A<int>, then it will
7045         also get a copy of B<int>.
7046
7047         * method-to-ir.c (mini_emit_inst_for_method): Use the proper wrapper type
7048         when checking for monitor enter/exit.
7049
7050 2008-10-30  Mark Probst  <mark.probst@gmail.com>
7051
7052         * method-to-ir.c (mini_emit_inst_for_method): Use the IL fastpaths
7053         for Monitor.Enter and Monitor.Exit if enabled.
7054
7055         * mini-x86.h, mini-amd64.h: Enable the IL fastpaths for Linux and
7056         Solaris.
7057
7058 2008-10-30  Zoltan Varga  <vargaz@gmail.com>
7059
7060         * method-to-ir.c (type_from_op): Convert CEE_CONV_U on OP_ICONV_TO_U instead
7061         of an OP_MOVE. Fixes #440046.
7062
7063         * basic-long.cs: Add a new test.
7064
7065 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
7066
7067         * mini.h: Add synchronization note for the managed counter-part.
7068
7069         * simd-intrinsics.c: Add SimdRuntime.get_AccelMode intrinsic that
7070         returns the simd caps of the current cpu.
7071
7072 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
7073
7074         * basic-simd.cs: Remove Console.WriteLine.
7075
7076 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
7077
7078         * basic-simd.cs: New tests for Vector2ul.
7079
7080 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
7081
7082         * simd-intrinsics.c: Add new vector type Vector2ul.
7083
7084 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
7085
7086         * basic-simd.cs: New tests for Vector2l.
7087
7088 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
7089
7090         * cpu-x86.md: Add long version of most packed int ops.
7091
7092         * mini-ops.h: Same.
7093
7094         * mini-x86.h: Same.
7095
7096         * simd-intrinsics.c: Add new vector type Vector2l.
7097
7098 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
7099
7100         * simd-intrinsics.c: Replace SN_op_BitwiseXor with SN_op_ExclusiveOr.
7101
7102         * simd-methods.h: Remove SN_op_BitwiseXor.
7103
7104 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
7105
7106         * mini.c (mono_allocate_stack_slots_full): Align the size of vtypes to their
7107         alignment.
7108
7109 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
7110
7111         * basic-simd.cs: Test for Vector2d.
7112
7113         * basic-simd.cs (test_vector8s_pack_signed_sat): Fixed broken
7114         value.
7115
7116 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
7117
7118         * cpu-x86.md: Add double version of all packed float ops.
7119
7120         * mini-ops.h: Same.
7121
7122         * mini-x86.h: Same.
7123
7124         * simd-intrinsics.c: Add new vector type Vector2d.
7125
7126         * simd-intrinsics.c (vector4f_intrinsics): Fix ordering.
7127
7128         * simd-methods.h: Add Duplicate.
7129
7130 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
7131
7132         * basic-simd.cs: Test for packing with signed saturation.
7133
7134 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
7135
7136         * aot-compiler.c (add_generic_instances): Add all methods of generic instances
7137         found in the TYPESPEC table.
7138
7139 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
7140
7141         * aot-runtime.c (mono_aot_get_method): Log not found methods for extra methods
7142         too.
7143
7144         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
7145
7146         * mini.c (mono_method_to_ir): For MONO_PATCH_INFO_RVA, save field the token
7147         instead of the RVA, since the RVA can be changed by tools like the cil 
7148         stripper.
7149
7150         * method-to-ir.c (mono_method_to_ir2): Ditto.
7151
7152         * debug-mini.c (serialize_variable): Handle ADDRESS_MODE_DEAD.
7153         (deserialize_variable): Ditto.
7154
7155 2008-10-25  Martin Baulig  <martin@ximian.com>
7156
7157         * debug-mini.c (write_variable): Use
7158         `MONO_DEBUG_VAR_ADDRESS_MODE_DEAD' for dead variables.
7159
7160 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
7161
7162         * cpu-x86.md: Add unsigned variants of packd and packw.
7163
7164         * mini-ops.h: Same.
7165
7166         * mini-x86.h: Emit the right instruction for packd and packw.
7167         Add unsigned variants of packd and packw.
7168
7169         * simd-intrinsics.c: Packd and packw were used in place of their
7170         unsigned variants. Change that.
7171         Add intrinsics for (Signed)PackWithSignedSaturation.
7172
7173         * simd-methods.h: Add (Signed)PackWithSignedSaturation.
7174
7175 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
7176
7177         * simd-intrinsics.c (vector4i_intrinsics): New table of intrinsic type.
7178
7179 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
7180
7181         * mini-ops.h: Remove dword packed add/sub with saturation ops.
7182
7183         * cpu-x86.md: Remove dword packed add/sub with saturation ops.
7184
7185         * simd-intrinsics.c (vector4ui_intrinsics): Remove methods without
7186         sse instructions.
7187
7188         * simd-intrinsics.c (vector8s_intrinsics): Fix ordering.
7189
7190 2008-10-24  Mark Probst  <mark.probst@gmail.com>
7191
7192         * method-to-ir.c, mini.c: Special casing for the synchronized
7193         wrapper for the ldtoken+GetTypeFromHandle case.
7194
7195 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
7196
7197         * mini.c (mono_replace_ins): Move this to branch-opts.c.
7198
7199         * mini.c (mono_replace_ins): Propagate has_array_access flag to the newly
7200         created/split bblocks.
7201
7202 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
7203
7204         * mini-ops.h: Add packed signed mul high.
7205         
7206         * cpu-x86.md: Same.
7207
7208         * mini-x86.c (mono_arch_output_basic_block): Same.
7209
7210         * simd-methods.h: Add PackWithUnsignedSaturation and ShiftRightLogic.
7211
7212         * simd-intrinsics.c (vector8s_intrinsics): New table of intrinsic type.
7213
7214 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
7215
7216         * basic-simd.cs: Tests for Vector16sb.
7217
7218 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
7219
7220         * inssel.brg (stmt): Fix OP_HARD_NOP rule.
7221
7222 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
7223
7224         * mini-ops.h: Add packed signed min, max and compare greater.
7225         
7226         * cpu-x86.md: Same.
7227
7228         * mini-x86.c (mono_arch_output_basic_block): Same. Add packed add/sub with
7229         saturation.
7230
7231         * simd-methods.h: Add CompareGreaterThan.
7232
7233         * simd-methods.h: Remove CompareEquals.
7234
7235         * simd-intrinsics.c: Add new TODO entry and some cosmetic changes.
7236
7237         * simd-intrinsics.c (vector16sb_intrinsics): New table of intrinsic type.
7238
7239         * simd-intrinsics.c (vector4f_intrinsics): Rename CompareEquals to
7240         CompareEqual.
7241
7242 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
7243
7244         * basic-simd.cs: Fix tests due to change in the API.
7245
7246 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
7247
7248         * mini.c method-to-ir.c: Use mono_field_get_name () for accessing field->name.
7249
7250 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
7251
7252         * basic-simd.cs: Fix name change in Vector4f::CompareEqual.
7253
7254         * simd-intrinsics.c (simd_intrinsic_emit_store_aligned): Don't use
7255         inst_offset as this has invalid values for LDADDR.
7256
7257 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
7258
7259         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
7260
7261         * simd-intrinsics.c (vector4ui_intrinsics): Add SignedPackWithUnsignedSaturation.
7262
7263 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
7264
7265         * method-to-ir.c (initialize_array_data): Use mono_field_get_data ()
7266         for accessing field->data.
7267
7268 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
7269
7270         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
7271
7272 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
7273
7274         * simd-methods.h: Add SignedPackWithUnsignedSaturation.
7275
7276         * simd-intrinsics.c (vector8us_intrinsics): Add SignedPackWithUnsignedSaturation.
7277
7278 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
7279
7280         * dominators.c (mono_compute_natural_loops): Allocate GList enties
7281         from the cfg mempool.
7282
7283 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
7284
7285         * basic-simd.cs: Tests for new methods in Vector8us.
7286
7287 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
7288
7289         * mini-ops.h: Add multiply and store high.
7290         
7291         * cpu-x86.md: Same.
7292
7293         * mini-x86.c (mono_arch_output_basic_block): Same.
7294
7295         * simd-methods.h: Same.
7296
7297         * simd-intrinsics.c (vector8us_intrinsics): Add MultiplyStoreHigh
7298         and CompareEqual.
7299
7300 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
7301
7302         * method-to-ir.c (mono_emit_method_call_full): Remove a needless call to
7303         mono_class_setup_vtable ().
7304
7305         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Use
7306         mono_class_get_vtable_entry () for accessing klass->vtable.
7307
7308         * aot-runtime.c (load_method): Avoid a crash when using MONO_LOG_LEVEL.
7309
7310         * aot-compiler.c (add_generic_instances): Avoid a crash if a class is not
7311         found.
7312
7313         * method-to-ir.c (mono_save_token_info): Don't save references made from
7314         wrappers.
7315
7316         * aot-compiler.c (add_generic_instances): Add static rgctx wrappers for cctors
7317         of generic instances.
7318
7319         * aot-runtime.c (find_extra_method): Search in all loaded AOT images.
7320
7321 2008-10-19  Mark Probst  <mark.probst@gmail.com>
7322
7323         * cpu-ppc.md, mini-ppc.c: The length of the code generated for
7324         OP_JMP depends on the method signature.  Calculate it properly.
7325
7326 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
7327         
7328         * aot-runtime.c (mono_aot_find_jit_info): Handle extra methods which are
7329         called directly.
7330
7331         * aot-compiler.c (emit_and_reloc_code): Allow direct calling of generic
7332         instances.
7333         (emit_extra_methods): Add another table mapping method indexes to 
7334         offsets in the extra_method_info table.
7335
7336         * mini.h: Bump AOT file format version.
7337         
7338         * aot-runtime.c: Merge most of the code from mono_aot_get_method
7339         and mono_aot_get_method_from_token () into one function.
7340
7341 2008-10-19  Mark Probst  <mark.probst@gmail.com>
7342
7343         * mini-ppc.c (emit_load_volatile_arguments): Inner loop needs a
7344         separate counter.
7345
7346 2008-10-18  Zoltan Varga  <vargaz@gmail.com>
7347
7348         * aot-compiler.c aot-runtime.c: Fix the hash function used for the extra
7349         methods.
7350
7351         * method-to-ir.c (mono_method_to_ir2): Change a !compile_aot assert to
7352         disable_aot.
7353
7354         * mini.c (mono_patch_info_equal): Compare the generic context as well.
7355
7356         * mini.h: Bump aot file format version.
7357
7358         * aot-compiler.c aot-runtime.c: Generalize the wrapper handling code so the
7359         AOT file can contain native code for methods which are not in the METHOD
7360         table. Generate code for non-sharable generic instances of generic methods
7361         found in the METHODSPEC table.
7362         
7363         * method-to-ir.c (mono_method_to_ir2): Remove the aot restriction when
7364         encoding generic type handles.
7365
7366         * ir-emit.h (NEW_AOTCONST_TOKEN): Add a generic_context argument.
7367         (NEW_TYPE_FROM_HANDLE_CONST): Add a generic_context argument.
7368
7369         * ir-emit.h: Rewrite the EMIT_NEW_XXXCONST macros to use the NEW_XXXCONST
7370         macros + MONO_ADD_INS.
7371
7372         * mini.c (mono_jump_info_token_new2): New function which takes a generic
7373         context as well.
7374
7375         * mini.h (MonoJumpInfoToken): Include fields for a generic context.
7376
7377         * mini.h: Bump aot file format version.
7378
7379         * aot-compiler.c aot-runtime.c: Update after changes to MonoJumpInfoToken.
7380
7381 2008-10-17  Mark Probst  <mark.probst@gmail.com>
7382
7383         * mini-x86.h, mini-x86.c, exceptions-x86.c: Align stack on all
7384         platforms, with definable stack alignment value.  Set to 16 now
7385         for all platforms.
7386
7387         * mini.c, mini.h, driver.c: Command line option for disabling
7388         stack alignment.
7389
7390 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
7391
7392         * basic-simd.cs: Tests for new methods in Vector4ui.
7393
7394 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
7395
7396         * mini-ops.h: Add packed int shuffle.
7397         
7398         * cpu-x86.md: Same.
7399
7400         * mini-x86.c (mono_arch_output_basic_block): Same.
7401
7402         * simd-intrinsics.c (vector4ui_intrinsics): Add compare equal,
7403         extract mask, max, min, shuffle.
7404
7405         * simd-intrinsics.c (vector8us_intrinsics): Add max and min.
7406
7407 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
7408
7409         * basic-simd.cs: Tests for new methods in Vector8us.
7410
7411 2008-10-17  Mark Probst  <mark.probst@gmail.com>
7412
7413         * method-to-ir.c (mono_method_to_ir2): "refanytype" produces a
7414         RuntimeTypeHandle, not a TypedReference.
7415
7416 Fri Oct 17 14:40:50 CEST 2008 Paolo Molaro <lupus@ximian.com>
7417
7418         * simd-intrinsics.c: remove relocations.
7419
7420 2008-10-17  Zoltan Varga  <vargaz@gmail.com>
7421
7422         * mini-amd64.c (mono_arch_output_basic_block): Port the IREM_IMM 
7423         optimizations from the x86 backend.
7424
7425 Fri Oct 17 12:00:51 CEST 2008 Paolo Molaro <lupus@ximian.com>
7426
7427         * simd-methods.h, simd-intrinsics.c: debloat method names and
7428         prepare for no relocations.
7429
7430 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
7431
7432         * mini-ops.h: Add packed min/equal and sum of absolute differences.
7433         
7434         * cpu-x86.md: Same.
7435
7436         * mini-x86.c (mono_arch_output_basic_block): Same.
7437
7438         * simd-intrinsics.c (vector16b_intrinsics): Add average, compare equal,
7439         extract mask, max, min and sum of absolute differences.
7440
7441         * simd-intrinsics.c: Increase SIMD_INTRINSIC_NAME_MAX due to new huge
7442         method name.
7443
7444 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
7445
7446         * basic-simd.cs: Test for the other mono_simd_simplify_indirection bug.
7447         Renamed one test for consistency.
7448
7449 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
7450
7451         * simd-intrinsics.c (mono_simd_simplify_indirection): Apply the previous
7452         fix to the code that deal with other blocks.
7453
7454 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
7455
7456         * basic-simd.cs: Test for the mono_simd_simplify_indirection bug.
7457
7458 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
7459
7460         * simd-intrinsics.c (mono_simd_simplify_indirection): Simplify the code
7461         that deals with vreg interference. Explicitly check for OP_LDADDR to be
7462         able to process the source reg.
7463
7464 2008-10-16  Martin Baulig  <martin@ximian.com>
7465
7466         * mini-ops.h, cpu-amd64.md, cpu-x86.md: Added new `hard_nop' opcode.
7467
7468         * inssel.brg: Add `OP_HARD_NOP'.
7469
7470         * mini.h (MonoCompile): Added `keep_cil_nops' flag.
7471
7472         * mini.c (mono_method_to_ir): In `CEE_NOP': generate a
7473         `OP_HARD_NOP' instruction when running inside the debugger.
7474
7475         * method-to-ir.c (mono_method_to_ir2): In `CEE_NOP': generate a
7476         `OP_HARD_NOP' instruction when running inside the debugger.
7477
7478 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
7479
7480         * simd-intrinsics.c (get_simd_vreg): Using sreg1 of OP_XMOVE
7481         now works. The issue with the regalloc tripping up no longer
7482         happens.
7483
7484         * simd-intrinsics.c (load_simd_vreg): Same.
7485
7486 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
7487         
7488         * basic-simd.cs: Tests for new Vector8ui methods.
7489
7490 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
7491
7492         * simd-intrinsics.c (get_simd_vreg): Simplify code and test
7493         only for type. This fixes crashes where MonoInst::klass is checked
7494         for ops of type != VTYPE or OBJ.
7495
7496         * simd-intrinsics.c (load_simd_vreg): Same.
7497
7498 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
7499
7500         * mini-ops.h: Add ops for packed shuffle/max/avg and
7501         extract mask.
7502         
7503         * cpu-x86.md: Same.
7504
7505         * mini-x86.c (mono_arch_output_basic_block): Same.
7506
7507         * simd-intrinsics.c (vector8us_intrinsics): Add avg, shuffle and
7508         extract mask.
7509
7510         * simd-intrinsics.c (simd_intrinsic_emit_extract_mask): New function
7511         to emit extract mask op.
7512
7513         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Retrofic this function
7514         to emit word shuffles.
7515
7516 2008-10-15  Mark Probst  <mark.probst@gmail.com>
7517
7518         * mini.c (mono_allocate_stack_slots_full): Align stack frame to
7519         the largest alignment needed by a variable, but at least
7520         sizeof(gpointer).
7521
7522 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
7523
7524         * basic-simd.cs: Tests for the fixes in the last commit.
7525
7526 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
7527
7528         * simd-intrinsics.c (get_simd_vreg): Drop the is_this_ptr, this function
7529         no longer handles STACK_PTR input.
7530
7531         * simd-intrinsics.c (get_simd_vreg): Don't crash when MonoInst::klass == -1.
7532
7533         * simd-intrinsics.c (load_simd_vreg): New function that works like 
7534         get_simd_vreg   but handles STACK_PTR input.
7535
7536         * simd-intrinsics.c (simd_intrinsic_emit_getter): Use load_simd_vreg
7537         as the input can be an arbitrary pointer.
7538
7539         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Try the
7540         LDADDR local optimization directly otherwise use a store op.
7541
7542 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
7543
7544         * basic-simd.cs: Tests for dup low and dup high.
7545
7546 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
7547
7548         * mini-ops.h: Add dup low and dup high ops.
7549         
7550         * cpu-x86.md: Same.
7551
7552         * mini-x86.c (mono_arch_output_basic_block): Same.
7553
7554         * simd-intrinsics.c (vector4f_intrinsics): Same.
7555
7556 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
7557
7558         * basic-simd.cs: Tests for recently added functionality.
7559
7560 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
7561
7562         * mini-ops.h: Add remaining sse1 fp ops.
7563         
7564         * cpu-x86.md: Add remaining sse1 fp ops.
7565
7566         * mini-x86.c (mono_arch_output_basic_block): Same.
7567
7568         * mini.h: Add enum for simd FP compare conditions.
7569
7570         * simd-intrinsics.c (vector4f_intrinsics): Add all new ops.
7571
7572         * simd-intrinsics.c (simd_intrinsic_emit_binary): Set inst_c0 to flags
7573         so the backed can generate the appropriate op.
7574
7575 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
7576         This patch squeese one more byte from the SimdIntrinsc struct.
7577
7578         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions: Use the version number
7579         a a shift amount intead of simply or'ing it.
7580
7581         * mini.h: Change SIMD_VERSION_* values to be sequential intead of masks.
7582
7583         * simd-intrinsics.c (struct SimdIntrinsc): Squeese simd_version and simd_emit_mode into a single
7584         byte so we can have an aditional flags field without increasing struct size.
7585
7586         * simd-intrinsics.c (emit_intrinsics): Use the value of simd_version as a shift amount before checking
7587         against the simd_supported_versions bitmask.
7588
7589         * simd-intrinsics.c: Set SIMD_INTRINSIC_NAME_MAX to an appropriate value.
7590
7591 Mon Oct 13 10:58:10 CEST 2008 Paolo Molaro <lupus@ximian.com>
7592
7593         * mini.c: remove rawbuffer code (the only use here is unsafe because
7594         it takes locks during signal handling and the kernel now provides much
7595         better info in proc/pid/smaps these days).
7596
7597 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
7598
7599         * mini-amd64.c (mono_arch_output_basic_block): Fix the changes to
7600         OP_X86_PUSH_OBJ. Fixes #434620.
7601
7602         * objects.cs: Add a test.
7603         
7604 2008-10-12  Rodrigo Kumpera  <rkumpera@novell.com>
7605
7606         * basic-simd.cs: Remove PackWithUnsignedSaturation tests as it turns out
7607         that the packuswb/packusdw don't work with unsigned numbers for what
7608         would be negative numbers in signed format.
7609
7610         * cpu-x86.md: Add doubleword forms of many ops and packing ones.
7611         Fix the len of fconv_to_r8_x and xconv_r8_to_i4.
7612
7613         * mini-ops.h: Add doubleword forms of many ops and packing ones.
7614
7615         * mini-x86.c: Emit doubleword forms of many ops and packing ones.
7616
7617         * simd-intrinsics.c (SimdIntrinsc): Rename the flags field to simd_version.
7618
7619         * simd-intrinsics.c (vector4f_intrinsics): Use simd_version field for sse3 ops.
7620
7621         * simd-intrinsics.c (vector4u_intrinsics): Rename to vector4ui_intrinsics and
7622         add more ops.
7623
7624         * simd-intrinsics.c (simd_version_name): New function, returns the name of the
7625         version as the enum in mini.h.
7626
7627         * simd-intrinsics.c (emit_intrinsics): Instead of having a special emit mode
7628         for sse3 ops, check the simd_version field if present. This way the code
7629         works with all versions of sse.
7630
7631 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
7632
7633         * simd-intrinsics.c: Fixed intrinsic name typo.
7634
7635         * mini.h: Added missing simd exported function.
7636
7637         * basic-simd.cs: Added tests for Vector4ui.
7638         Fixed broken test for Vector16b.
7639
7640 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
7641
7642         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Increase
7643         the max length to 64.
7644
7645 2008-10-10  Mark Probst  <mark.probst@gmail.com>
7646
7647         * method-to-ir.c: Only do the fast virtual generic method call for
7648         non-wrapper methods.
7649
7650         * mini.h, mini-trampolines.c: The new generic virtual remoting
7651         trampoline handles virtual method calls via the vtable (as done by
7652         the fast virtual generic method calls) to remoting proxies.
7653
7654         * mini.c (mono_jit_create_remoting_trampoline): For generic
7655         methods reate a generic virtual remoting trampoline.
7656
7657         * mini-amd64.h: Enable fast virtual generic method calls again.
7658
7659 2008-10-10  Mark Probst  <mark.probst@gmail.com>
7660
7661         * mini-ppc.c: Use SP (r1), not frame_reg (which might be r31) to
7662         restore registers when doing tail calls.
7663
7664 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
7665
7666         * simd-intrinsics.c (emit_intrinsics): Vector4u was renamed to
7667         Vector4ui.
7668
7669 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
7670
7671         * basic-simd.cs: Add test for Vecto16b.PackWithUnsignedSaturation.
7672
7673 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
7674
7675         * simd-intrinsics.c (emit_intrinsics): Retrofit to new type names.
7676
7677 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
7678
7679         * basic-simd.cs: Retrofit for API changes.
7680
7681 2008-10-10  Mark Probst  <mark.probst@gmail.com>
7682
7683         * mini-ppc.c: Handle integer stack arguments for tail calls.
7684
7685 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
7686
7687         * optflags-def.h: Removed sse3 optimization.
7688
7689         * driver.c: Same.
7690
7691         * mini-x86.c (mono_arch_cpu_optimizazions): Remove detection of
7692         sse3.
7693
7694         * mini-x86.c: Added mono_arch_cpu_enumerate_simd_versions.
7695
7696         * mini.h: Added enumeration with simd versions.
7697
7698         * simd-intrinsics.c (emit_intrinsics): Use the new static var
7699         for detecting SSE3.
7700
7701         * simd-intrinsics.c: Added mono_simd_intrinsics_init.
7702
7703         * mini.c (mini_init): Call mono_simd_intrinsics_init.
7704
7705 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
7706
7707         * basic-simd.cs: Added tests for Vector8u and Vector16u.
7708
7709         * basic-simd.cs: Fixed test naming.
7710
7711 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
7712
7713         * mini-ops.h: Added ops for packed and saturated math, shifts
7714         and packing/unpacking.
7715
7716         * cpu-x86.md: Added descriptors for the above ops.
7717
7718         * mini-x86.c: Added code to emmit the above ops.
7719
7720         * simd-intrinsics.c: Added support for Vector16u and Vector8u.
7721
7722 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
7723
7724         * aot-compiler.c (compile_method): Enable AOT for generic code.
7725
7726         * ir-emit.h (NEW_DOMAINCONST): Use domainvars in AOT code as well.
7727
7728 Wed Oct 8 16:35:43 CEST 2008 Paolo Molaro <lupus@ximian.com>
7729
7730         * mini.c: add a workaround for a common screwup that ends up blamed
7731         to mono (other processes blocking signal delivery).
7732
7733 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
7734
7735         * method-to-ir.c (mono_method_to_ir2): Clear ins_flag on all code paths
7736         in the LDFLD/STFLD opcodes. Fixes #432673.
7737
7738         * iltests.il.in: Add a new test.
7739
7740 Tue Oct 7 19:59:07 CEST 2008 Paolo Molaro <lupus@ximian.com>
7741
7742         * mini-arm.c: attach the thread in unmanaged->managed transitions
7743         using delegates (bug #433148).
7744
7745 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
7746
7747        * basic-simd.cs: Use new ShuffleSel constants.
7748
7749 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
7750
7751         * driver.c (opt_sets): Added combinations of simd, sse2 and sse3.
7752
7753         * mini-x86.c (mono_arch_cpu_optimizazions): Detect sse3 and now
7754         only disable simd intrinsics if no sse2 is detected.
7755
7756         * optflags-def.h: Added sse3.
7757
7758         * simd-intrinsics.c: Avoid generated sse3 intrinsics if the optimization
7759         is disabled.
7760
7761 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
7762
7763         * aot-compiler.c (add_wrappers): Fix Delegate/MulticastDelegate classes
7764         when adding delegate-invoke wrappers.
7765
7766 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
7767
7768         * Makefile.am: Reenable the simd tests.
7769
7770 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
7771
7772         * mini-amd64.c (mono_arch_emit_outarg_vt) : In the ArgValuetypeAddrInIReg case,
7773           add a call to mono_call_inst_add_outarg_reg for the arg->dreg to make sure that no
7774           other vreg is allocated to that hreg.
7775
7776         Contributed under MIT/X11 license.
7777
7778 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
7779
7780         * Makefile.am: Disable the simd tests for now as Mono.Simd is not
7781         yet checked in.
7782
7783 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
7784
7785         * basic-simd.cs: New test suite for SIMD intrinsics.
7786
7787         * Makefile.am: Added new tests.
7788
7789 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
7790
7791         * cpu-x86.md: Added new instructions to handle float to int using SSE regs.
7792
7793         * mini-ops.h: Same.
7794
7795         * mini-x86.h: Enable mono_arch_decompose_opts if simd intrinsics are enabled.
7796
7797         * mini-x86.c (mono_arch_decompose_opts): Decompose float to int conversion
7798         using SSE2 aware opcodes.
7799
7800         * mini-x86.c (emit_float_to_int): Disable the SSE2 optimization if OPT_SIMD
7801         is enabled, this code path is only reachable if conversion ops are emmited after
7802         mono_method_to_ir.
7803
7804         * mini.h: Added MonoCompile::fconv_to_r8_x_var to hold the float to int var.
7805
7806         This optimization saves 6 bytes per conversion against the old version.
7807
7808 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
7809
7810         * aot-compiler.c (compile_method): Don't skip methods referencing 
7811         generic methods without a corresponding entry in token_info_hash, since
7812         encode_method_ref () can handle all generic methods now.
7813
7814         * method-to-ir.c (mono_save_token_info): Don't save the token info if a 
7815         generic context is set.
7816         
7817         * method-to-ir.c (mono_method_to_ir2): Put back a disable_aot for
7818         generic sharing of LDTOKEN.
7819
7820 2008-10-06  Mark Probst  <mark.probst@gmail.com>
7821
7822         * mini-amd64.h: Temporarily disabled fast virtual generic method
7823         calls because it breaks the System.Runtime.Remoting tests.
7824
7825 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
7826
7827         * aot-compiler.c (add_wrappers): Add delegate-invoke wrappers.
7828
7829         * method-to-ir.c (check_inline_called_method_name_limit): Return TRUE
7830         so inlining actually works.
7831         (check_inline_caller_method_name_limit): Ditto.
7832
7833 Mon Oct 6 11:04:38 CEST 2008 Paolo Molaro <lupus@ximian.com>
7834
7835         * mini-ppc.c: mono_arch_flush_icache () cast pointer using gsize for
7836         64 bit safety (from Olaf Hering and Andreas Farber).
7837
7838 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
7839         
7840         * mini-trampolines.c (mono_aot_trampoline): Delegate processing to
7841         mono_magic_trampoline () if aot_get_method_from_token () fails. Remove
7842         unused virtual call support code.
7843
7844         * aot-runtime.c (decode_method_ref): Add a 'no_aot_trampoline' out argument.
7845         
7846         * aot-runtime.c (mono_aot_get_method_from_vt_slot): Return NULL for methods
7847         which can't use aot trampolines.
7848         (decode_patch): Don't create aot trampolines for methods which can't use
7849         them.
7850
7851         * aot-compiler.c (encode_method_ref): Add a marker for methods which can't
7852         use aot trampolines.
7853
7854         * mini.h: Bump AOT image format version.
7855         
7856 2008-10-05  Zoltan Varga  <vargaz@gmail.com>
7857
7858         * method-to-ir.c (mono_method_to_ir2): Pass cil_method instead of cmethod
7859         to save_token_info () since cmethod is inflated for constrained calls.
7860
7861         * mini-<ARCH>.h mini-x86.c: Remove some unused defines.
7862
7863 2008-10-04  Andreas Farber  <andreas.faerber@web.de>
7864
7865         * Makefile.am: Add build rules for ppc64.
7866         This avoids the build failing at pedump with unresolved symbols
7867         due to lack of arch_sources. Instead it will now fail earlier
7868         due to lack of cpu-ppc64.md.
7869
7870         Contributed under MIT/X11 license.
7871
7872 2008-10-04  Mark Probst  <mark.probst@gmail.com>
7873
7874         * mini-amd64.c (mono_arch_emit_call): Support stack arguments for
7875         tail calls.
7876
7877         * iltests.il.in: Add test case for tail call with many arguments.
7878
7879 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
7880
7881         * method-to-ir.c (mono_method_to_ir2): Add an !cfg->compile_aot assert
7882         to the fast virtual generic method code until the aot case is fixed.
7883
7884 2008-10-03  Mark Probst  <mark.probst@gmail.com>
7885
7886         * mini-ppc.c, mini-ppc.h: Implement generic virtual method thunks.
7887
7888 2008-10-03  Mark Probst  <mark.probst@gmail.com>
7889
7890         * mini-amd64.c, mini-amd64.h: Implement generic virtual method
7891         thunks.
7892
7893 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
7894         
7895         * simd-intrinsics.c: Forgot to add this one.
7896
7897         * mini-codegen.c: Fix macro in case SIMD is not supported.
7898
7899 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
7900         
7901         This patch land initial JIT support for simd intrinsics.
7902
7903         * mini-x86.h: Added new define to make --enable_minimal work on x86.
7904
7905         * Makefile.am: Added simd-intrinsics.c
7906
7907         * simd-intrinsics.c: New file with simd instrinsic related
7908         code.
7909
7910         * cfold.c (mono_constant_fold_ins2): Fold XZERO.
7911
7912         * cpu-x86.md: Add simd related instructions.
7913
7914         * driver.c: Added MONO_OPT_SIMD to the default set of optimizations.
7915
7916         * driver.c: Added two new --regression variants.
7917
7918         * ir-emit.h (MONO_EMIT_NEW_VZERO): Emit XZERO if the type is a simd intrinsic.
7919
7920         * local-propagation.c (mono_local_cprop2): Eliminate useless XMOVE.
7921
7922         * local-propagation.c (mono_local_deadce): Use new macro MONO_IS_NON_FP_MOVE and
7923         extract some complicated logic to helper functions.
7924
7925         * method-to-ir.c (mono_type_to_regmove): Handle simd intrinsics.
7926
7927         * method-to-ir.c (mini_emit_inst_for_method): Emit simd intrinsics.
7928
7929         * method-to-ir.c (mono_handle_global_vregs): If a simd intrinsic was found, apply
7930         the specialized simplification pass.
7931
7932         * method-to-ir.c (mono_spill_global_vars): Use new macro.
7933
7934         * mini-codegen.c: Added SIMD constants to all regbanks arrays.
7935
7936         * mini-codegen.c: Added reg_bank_table_init to initialize the reg desc -> bank
7937         table.
7938
7939         * mini-codegen.c: Define a version of the reg_bank macro that uses desc_to_reg_type
7940         if MONO_ARCH_NEED_SIMD_BANK is defined.
7941
7942         * mini-ops.h: Added the new simd ops.
7943
7944         * mini-x86.c: Added mono_arch_xregname.
7945
7946         * mini-x86.c (mono_arch_cpu_optimizazions): Disable MONO_OPT_SIMD if SSE3 is not detected.
7947
7948         * mini-x86.c (mono_arch_output_basic_block): Add simd related opcodes.
7949
7950         * mini-x86.h: Define simd related MONO_ARCH macros.
7951
7952         * mini.c (mono_type_to_load_membase): Handle simd intrinsics.
7953
7954         * mini.c (mono_type_to_store_membase): Handle simd intrinsics.
7955
7956         * mini.h: Added new macros MONO_IS_NON_FP_MOVE, MONO_IS_REAL_MOVE, MONO_IS_ZERO and
7957         MONO_CLASS_IS_SIMD to deal with simd related IR.
7958
7959         * mini.h (MonoInst): Added spill_var to the backend union.
7960
7961         * mini.h (MonoCompile): Added uses_simd_intrinsics and iconv_raw_var.
7962
7963         * mini.h: Added forward declarations of the new simd fuctions.
7964
7965         * optflags-def.h: Added new optimization names SIMD.
7966
7967         * regalloc.c (mono_regstate_reset): Set next vreg to be the max value of the 3 reg banks.
7968
7969         * regalloc.h: Added support for working with 3 register banks.
7970
7971         * regalloc.h (MonoRegState): Added xsymbolic field if a third regbank is required.
7972
7973         * ssa2.c (mono_ssa_deadce2): Use new MONO_IS_ZERO macro.
7974
7975 Fri Oct 3 16:03:22 CEST 2008 Paolo Molaro <lupus@ximian.com>
7976
7977         * mini-exceptions.c: remove 64 bit related ifdef clutter.
7978
7979 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
7980
7981         * mini-exceptions.c (mono_handle_soft_stack_ovf): Unprotect two pages
7982         instead of one on 64 bit systems.
7983
7984         * method-to-ir.c: Remove unused includes.
7985
7986 2008-10-02  Zoltan Varga  <vargaz@gmail.com>
7987
7988         * aot-compiler.c (emit_exception_debug_info): Use jinfo->used_regs instead of
7989         cfg->used_int_regs, since the two are different on arm.
7990
7991 2008-10-02  Mark Probst  <mark.probst@gmail.com>
7992
7993         * method-to-ir.c, inssel.brg, mini-trampolines.c: Use
7994         mono_method_get_vtable_index() to get the vtable index.
7995
7996 2008-10-02  Mark Probst  <mark.probst@gmail.com>
7997
7998         * method-to-ir.c (mono_method_to_ir2): Don't create native
7999         wrappers for array methods, because they're never called (and if
8000         they were called they wouldn't work).
8001
8002 2008-10-02  Mark Probst  <mark.probst@gmail.com>
8003
8004         * method-to-ir.c (mono_method_to_ir2): Array methods are
8005         special-cased and must not be invoked indirectly via the (M)RGCTX
8006         when generic sharing is turned on.  Fixes #431413.
8007
8008 2008-10-01  Mark Probst  <mark.probst@gmail.com>
8009
8010         * method-to-ir.c: When generic sharing is active, call
8011         non-interface virtual generic methods via the standard trampoline.
8012
8013         * mini-trampolines.c: Handle virtual generic shared methods.
8014
8015         * mini.h, mini-x86.c, mini-x86.h: New argument for
8016         mono_arch_build_imt_thunk() which is non-NULL for virtual generic
8017         method thunks and which is the trampoline to call if the lookup
8018         fails.  Enable the virtual generic method thunk for x86.
8019
8020         * mini-amd64.c, mini-arm.c, mini-ia64.c, mini-sparc.c,
8021         mini-ppc.c (mono_arch_build_imt_thunk): Add the additional
8022         argument but assert that it's NULL, because these archs don't yet
8023         implement the virtual generic method thunk.  Changes in the IMT
8024         thunk data structures.
8025
8026 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
8027
8028         * aot-compiler.c (emit_globals): Avoid invalid characters in
8029         the static linking symbol.
8030
8031         * objects.cs: Add a test for the range check optimization. Fix warnings.
8032
8033         * branch-opts.c (mono_if_conversion): Add back the 'optimize range checks'
8034         optimization from the current JIT.
8035
8036         * method-to-ir.c (mini_emit_inst_for_method): Decompose String.Length
8037         later in decompose_array_access_opts () to allow more optimizations.
8038
8039         * method-to-ir.c (mono_handle_soft_float): Rename this to 
8040         mono_decompose_soft_float () for consistency.
8041
8042         * mini-ops.h: Fix arguments of OP_STRLEN.
8043
8044         * method-to-ir.c (save_cast_details): Extract the cast details saving code
8045         into a separate function.
8046         (reset_cast_details): Ditto.
8047         (handle_unbox): Save cast details. Fixes #431254.
8048
8049         * method-to-ir.c: Remove some obsolete FIXMEs.
8050
8051 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
8052
8053         * ir-emit.h (alloc_dreg): Write a warning before crashing.
8054
8055 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
8056
8057         * mini-codegen.c: More work on macros to make them
8058         ready for multiple regbanks.
8059
8060 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
8061
8062         * method-to.ir.c (mono_type_to_regmove): Remove static modifier.
8063
8064         * mini.h: Export mono_type_to_regmove. Fix signature of mono_regname_full.
8065
8066 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
8067
8068         * mini-codegen.c (mono_spillvar_offset): Proper support for
8069         multiple regbanks.
8070
8071 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
8072
8073         * mini-amd64.c (mono_arch_emit_epilog): Remove some duplicated code from
8074         the stack overflow changes.
8075
8076 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
8077
8078         * mini-codegen.c: Make all bank macros depend on reg_bank.
8079
8080         * mini-codegen.c (mono_local_regalloc): Make free mask
8081         initialization regbank aware.
8082
8083 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
8084
8085         * mini-codegen.c (mono_local_regalloc): Extract callee
8086         mask selection to a function and make it regbank aware.
8087
8088 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
8089
8090         * mini-codegen.c (mono_local_regalloc): Changed the cloberring
8091         code to deal with many regbanks.
8092
8093 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
8094
8095         * mini-codegen.c: More fp->regbank changes.
8096
8097 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
8098
8099         * mini-codegen.c: Change asserts to use MONO_NUM_REGBANKS instead
8100         of a hardcoded constant.
8101
8102 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
8103
8104         * method-to-ir.c (type_from_stack_type): Fix typo.
8105
8106 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
8107
8108         * mini-ia64.c (emit_move_return_value): Convert float return values to
8109         double.
8110
8111         * objects.cs: Add a new test.
8112         
8113         * mini-ia64.c (mono_arch_allocate_vars): Disable fp elimination for
8114         VARARG methods to fix an assert later.
8115
8116         * mini-mips.h mini-mips.c mini-ops.h cpu-mips.md: Update the mips back
8117         end so it at least compiles.
8118
8119 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
8120
8121         * method-to-ir.c (emit_optimized_ldloca_ir): Fix this.
8122
8123 2008-09-28  Rodrigo Kumpera  <rkumpera@novell.com>
8124
8125         * method-to-ir.c (mono_method_to_ir2): Extract the ldloca + initobj
8126         optimization to a new function (emit_optimized_ldloca_ir) and enable
8127         it for both ldloca and ldloca_s.
8128
8129 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
8130
8131         * method-to-ir.c (mono_method_to_ir2): Remove an unnecessary assert in the
8132         gshared CASTCLASS code.
8133
8134         * driver.c (mono_main): Add a workaround for shutdown crashes seen on
8135         amd64, where the libc stack unwinder encounters stack frames referring to
8136         native code in unmapped memory.
8137
8138         * method-to-ir.c (mini_emit_check_array_type): Add support for generic
8139         sharing.
8140
8141         * generics.cs: Add new test.
8142
8143 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
8144
8145         * mini-arm.h driver.c: Print the fp model when using --version on arm. Also,
8146         add a check that one of the ARM_FPU_ constants is defined.
8147
8148         * mini-exceptions.c (mono_handle_soft_stack_ovf): Really fix the build.
8149         
8150         * mini-exceptions.c: Fix build on non-altstack platforms.
8151
8152         * method-to-ir.c (mono_method_to_ir2): Fix aot support for the
8153         sharing of vtypes.
8154
8155         * ir-emit.h: Add a comment to NEW_PCONST.
8156
8157         * mini-exceptions.c (mono_altstack_restore_prot): Fix a warning.
8158
8159         * mini.h (MonoJitDomainInfo): Move some fields here from MonoDomain.
8160
8161         * mini.c aot-runtime.c method-to-ir.c driver.c mini-trampolines.c: Update
8162         after the changes to MonoJitDomainInfo.
8163
8164 2008-09-27  Mark Probst  <mark.probst@gmail.com>
8165
8166         * mini-ppc.c, tramp-ppc.c, mini-ppc.h: Implement generic code sharing.
8167
8168 2008-09-27  Mark Probst  <mark.probst@gmail.com>
8169
8170         * mini-ppc.c: Compiler warning fixes.
8171
8172 2008-09-27  Mark Probst  <mark.probst@gmail.com>
8173
8174         * mini-ppc.c: Special handling for 1/2 byte structs on Darwin only
8175         for pinvokes.
8176
8177 2008-09-27  Mark Probst  <mark.probst@gmail.com>
8178
8179         * exceptions-ppc.c, mini-ppc.h: Compile
8180         mono_arch_handle_altstack_exception() on Darwin, too.
8181
8182 2008-09-27  Mark Probst  <mark.probst@gmail.com>
8183
8184         * method-to-ir.c (mono_emit_rgctx_method_call_full): Must also
8185         work on archs which don't have generic sharing implemented, only
8186         without the vtable_arg.
8187
8188 2008-09-26  Mark Probst  <mark.probst@gmail.com>
8189
8190         * mini.c: Added comment explaining why delegate ctor icall
8191         wrappers are compiled.
8192
8193 2008-09-26  Mark Probst  <mark.probst@gmail.com>
8194
8195         * mini.c: Don't produce trampolines to delegate ctor icall
8196         wrappers but compile them upfront.
8197
8198 Fri Sep 26 17:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
8199
8200         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: amd64 support code for calling a
8201         runtime-set function when going back to managed code. Currently this
8202         is used to set back the protection on the soft ovf pages and/or to
8203         throw the stack overflow exception that happened in unmanaged code.
8204
8205 Fri Sep 26 16:46:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
8206
8207         * tramp-x86.c, mini-x86.h, mini-x86.c: x86 support code for calling a
8208         runtime-set function when going back to managed code. Currently this
8209         is used to set back the protection on the soft ovf pages and/or to
8210         throw the stack overflow exception that happened in unmanaged code.
8211
8212 Fri Sep 26 16:34:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
8213
8214         * mini.h, mini.c, mini-trampolines.c, mini-exceptions.c: added
8215         the support code for restoring stack protection after stack overflows
8216         that happen in unmanaged code. Don't set the exec permission on the
8217         soft overflow area.
8218
8219 2008-09-26  Zoltan Varga  <vargaz@gmail.com>
8220
8221         * mini-trampolines.c (mono_delegate_trampoline): Add wrappers even if
8222         delegate->method_ptr is set. Fixes #428054.
8223
8224 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
8225
8226         * tests.cs: Rename to ratests.cs.
8227
8228         * method-to-ir.c: Merge the emit_get_rgctx () calls into the 
8229         emit_get_rgctx_... functions.
8230
8231 2008-09-25  Mark Probst  <mark.probst@gmail.com>
8232
8233         * method-to-ir.c: Eliminated macro EMIT_GET_RGCTX.
8234
8235 2008-09-25  Mark Probst  <mark.probst@gmail.com>
8236
8237         * mini-trampolines.c (mono_magic_trampoline): Unwrap wrappers
8238         before asserting that method is sharable.
8239
8240 2008-09-25  Mark Probst  <mark.probst@gmail.com>
8241
8242         * method-to-ir.c, mini.c, jit-icalls.c: New function for checking
8243         whether method needs a static RGCTX wrapper used instead of
8244         complex conditions.
8245
8246         * generic-sharing.c, mini.h: A few functions moved to
8247         metadata/generic-sharing.c.
8248
8249 2008-09-25  Mark Probst  <mark.probst@gmail.com>
8250
8251         * method-to-ir.c, mini.c, mini-exceptions.c, mini-trampolines.c:
8252         Generic code sharing for value types, which essentially means
8253         treating value type methods like static methods.  The RGCTX is
8254         passed in the same way.
8255
8256 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
8257
8258         * method-to-ir.c (mono_method_to_ir2): Avoid an assert in the NEWOBJ
8259         opcode when creating multi-dimensional arrays of open types.
8260
8261         * generic-sharing.c (mono_method_check_context_used): Handle arrays of
8262         open generic types.
8263
8264         * generics.cs: Add a test.
8265
8266         * mini-codegen.c: Use macros everywhere for checking floats instead of == 'f'.
8267
8268 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
8269
8270         * mini.h (MonoCompile): Add 'disable_vreg_to_lvreg' flag.
8271
8272         * mini.c (mini_method_compile): Set it when running under the debugger. 
8273
8274         * method-to-ir.c (mono_handle_global_vregs): Disable global->local
8275         vreg optimization if the flag is set.
8276
8277         * driver.c (mono_main): Add --attach= option to pass options to
8278         the attach agent.
8279
8280         * mini.c (sigquit_signal_handler): Start the attach agent.
8281
8282         * ssapre.c: Disable this to save space since it is not yet ported to
8283         linear IR.
8284
8285         * regalloc2.c: Disable this to save space.
8286
8287         * mini.h (MonoJitStats): Remove unused analyze_stack_repeat.
8288
8289 Wed Sep 24 16:01:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
8290
8291         * decompose.c, method-to-ir.c, mini-codegen.c, regalloc2.c: make
8292         the -v option useful again.
8293
8294 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
8295
8296         * mini-amd64.c (mono_arch_output_basic_block): Add support for
8297         --break-at-bb.
8298
8299         * inssel.brg (mini_emit_castclass): Avoid the szarray!=array checks for
8300         arrays of arrays. Fixes #428406.
8301
8302         * method-to-ir.c (mini_emit_castclass): Ditto.
8303
8304         * objects.cs: Add new test.
8305         
8306 2008-09-23  Rodrigo Kumpera  <rkumpera@novell.com>
8307
8308         * method-to-ir.c (type_to_eval_stack_type): The code path for the new JIT
8309         was wrong at it choked against target_type_is_incompatible for byref types.
8310
8311 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
8312
8313         * mini-codegen.c: Use 'bank' macros instead of 'is_fp' macros in most 
8314         places.
8315
8316 Tue Sep 23 15:31:45 CEST 2008 Paolo Molaro <lupus@ximian.com>
8317
8318         * mini-exceptions.c: update a few more exceptions-related counters.
8319
8320 Tue Sep 23 15:28:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
8321
8322         * aot-runtime.c, method-to-ir.c, mini.c, mini-trampolines.c: use the
8323         new functions to allocate from persistent mempools.
8324
8325 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
8326
8327         * mini.h regalloc.h mini-codegen.c: Generalize the regalloc code to allow 
8328         multiple register banks in the future.
8329
8330         * mini-codegen.c (mono_local_regalloc): Fix a warning.
8331
8332 2008-09-22  Rodrigo Kumpera  <rkumpera@novell.com>
8333
8334         * mini.c (type_to_eval_stack_type): Remove duplicated function.
8335
8336         * method-to-ir.c (type_to_eval_stack_type): Make this version compatible with both JIT.
8337
8338         * mini.h: Export type_to_eval_stack_type.
8339
8340         This function was nearly duplicated in method-to-ir.c and mini.c. The difference
8341         is only ins->klass of byref types.
8342
8343 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
8344
8345         * method-to-ir.c (mini_emit_memset): Use a default alignment of 4.
8346         (mini_emit_memcpy2): Ditto.
8347
8348         * mini-amd64.c: Fix a warning.
8349
8350 2008-09-21  Mark Probst  <mark.probst@gmail.com>
8351
8352         * exceptions-ppc.c (mono_arch_get_call_filter): Fixed stack frame
8353         linking.
8354
8355 2008-09-19  Rodrigo Kumpera  <rkumpera@novell.com>
8356
8357         * method-to-ir.c: Extract stloc micro-optimization to a
8358         function and apply it to all cases.
8359
8360 2008-09-19  Mark Probst  <mark.probst@gmail.com>
8361
8362         * method-to-ir.c: Don't fail generic code sharing in cases we
8363         already support.
8364
8365 2008-09-18  Mark Probst  <mark.probst@gmail.com>
8366
8367         * mini-ppc.c: Handle structs in tailcalls on Darwin.
8368
8369 Tue Sep 16 21:07:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
8370
8371         * *.c, *.md, mini-ops.h: introduced relaxed_nop opcode for spin wait
8372         implementation.
8373
8374 Tue Sep 16 16:39:16 CEST 2008 Paolo Molaro <lupus@ximian.com>
8375
8376         * trace.c: make tracing more useful and correct, with per-thread
8377         id and indent info.
8378
8379 2008-09-15  Mark Probst  <mark.probst@gmail.com>
8380
8381         * mini-ppc.c (mono_arch_emit_call): Convert floats to R4 when
8382         doing a method call and the argument is an R4.
8383
8384 2008-09-14  Zoltan Varga  <vargaz@gmail.com>
8385
8386         * aot-compiler.c (add_wrappers): Do not generate runtime invoke wrappers for
8387         generic methods.
8388
8389 2008-09-13  Mark Probst  <mark.probst@gmail.com>
8390
8391         * mini-ppc.c: Convert result to single for OP_ICONV_TO_R4.
8392
8393 2008-09-12  Zoltan Varga  <vargaz@gmail.com>
8394
8395         * mini.h (MONO_IS_JUMP_TABLE): Handle GOT_ENTRY.
8396         (MONO_JUMP_TABLE_FROM_INS): Ditto.
8397
8398 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
8399
8400         * driver.c: Add a --agent argument (not supported yet) to load managed
8401         agent assemblies before loading the main assembly, similarly to how the
8402         Java VM handles agents.
8403
8404 2008-09-11  Mark Probst  <mark.probst@gmail.com>
8405
8406         * mini-ppc.c (mono_arch_allocate_vars): Use arch-independent
8407         function to do stack layout of local variables.
8408
8409 2008-09-11  Mark Probst  <mark.probst@gmail.com>
8410
8411         * mini-ppc.c (calculate_sizes): Bugfix in sigcookie position
8412         calculation.
8413
8414 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
8415
8416         * method-to-ir.c ssa2.c mini.c mini-amd64.c decompose.c ssa.c abcremoval.c
8417         abcremoval2.c branch-opts.c driver.c dominators.c: Disable parts of the
8418         JIT if DISABLE_JIT is defined.
8419
8420         * Makefile.am: Avoid compiling/linking in inssel.c if DISABLE_JIT is
8421         defined.
8422
8423 2008-09-10  Mark Probst  <mark.probst@gmail.com>
8424
8425         * iltests.il.in: Disable the fconv test on PPC (the result is
8426         undefined according to ECMA).
8427
8428 2008-09-10  Mark Probst  <mark.probst@gmail.com>
8429
8430         * iltests.il.in: Enable tail call tests for PPC.
8431
8432         * mini.h: Add variable for storing incoming valuetype argument
8433         addresses for tail calls.
8434
8435         * mini-ppc.c: Implement valuetype arguments and return values for
8436         tailcalls on Linux.
8437
8438 2008-09-09  Mark Probst  <mark.probst@gmail.com>
8439
8440         * mini-ppc.c: Partially implement tail calls (struct arguments and
8441         return values not supported).
8442
8443         * method-to-ir.c: Enable tail calls on PPC.
8444
8445 2008-09-08  Zoltan Varga  <vargaz@gmail.com>
8446
8447         * aot-compiler.c (emit_wrapper_info): Omit the klass name from
8448         runtime-invoke wrappers to work around the problem of them getting
8449         assigned to a random class.
8450
8451         * aot-runtime.c (mono_aot_get_method): Ditto.
8452         
8453 2008-09-07  Zoltan Varga  <vargaz@gmail.com>
8454
8455         * mini-exceptions.c mini-mips.h mini-s390.h exceptions-mips.c: Kill
8456         the CUSTOM_EXCEPTION_HANDLING and CUSTOM_STACK_WALK defines.
8457
8458 2008-09-07  Mark Probst  <mark.probst@gmail.com>
8459
8460         * method-to-ir.c (mono_method_to_ir2): Disable tail calls for PPC
8461         until they're implemented properly.
8462
8463         * exceptions-ppc.c: Use arch-independent exception-handling code
8464         instead of custom one.
8465
8466         * exceptions-ppc.c, mini-ppc.c, mini-ppc.h: Bug fixes and changes
8467         for Linear IR.
8468
8469         * tramp-ppc.c, mini-ppc.c: Fixed warnings.
8470
8471         * decompose.c, aot-runtime.c, aot-compiler.c: PPC code also
8472         applies when __powerpc__ is defined.
8473
8474 2008-09-06  Zoltan Varga  <vargaz@gmail.com>
8475
8476         * aot-runtime.c (mono_aot_get_method): Add another cache mapping wrapper
8477         methods to their code to avoid computing the full name of wrappers and
8478         doing a lookup in a string hash table.
8479
8480 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
8481
8482         * method-to-ir.c: Remove the CHECK_BBLOCK () stuff it is not needed since
8483         we identify bblocks before method_to_ir () is ran.
8484
8485         * branch-opts.c (mono_optimize_branches): Avoid nullifying the exit bblock.
8486         Also avoid optimizing branches pointing to themselves.
8487
8488         * mini.c (mini_method_compile): Ditto. Fixes #422947.
8489
8490 2008-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
8491
8492         * driver.c (mono_main): Enable the new verifier under core-clr and cas.
8493
8494 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
8495
8496         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Implement this.
8497         (mono_arch_patch_plt_entry): Fix the calculation of the jump_entry.
8498         (mono_arch_get_nullified_class_init_trampoline): Return 'code' instead of
8499         'buf'.
8500
8501         * aot-compiler.c (emit_plt): Fix the arm plt entries, previously they all 
8502         jumped to the same entry in plt_jump_table.
8503
8504 2008-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
8505
8506         * method-to-ir.c (initialize_array_data): Handle field with RVA from
8507         dynamic images.
8508
8509 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
8510
8511         * method-to-ir.c (handle_isinst): Do the assignment at the beginning, so the
8512         other assignment can be if converted. Saves 1.5% on corlib size and fixes
8513         #421807.
8514
8515 2008-08-29  Geoff Norton  <gnorton@novell.com>
8516
8517         * aot-compiler.c: The Mach/ARM compiler doesn't understand the bss
8518         segment, and doesn't properly handle .space as .text.  Fixes
8519         AOT Mach/ARM
8520
8521 2008-08-29  Geoff Norton  <gnorton@novell.com>
8522
8523         * mini.c: Disable the mach exception handler when running on 
8524         ARM
8525
8526 2008-08-29  Geoff Norton  <gnorton@novell.com>
8527
8528         * aot-compiler.c: Patch from Renaldas Zioma to properly register 
8529         globals on Darwin/ARM
8530
8531 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
8532
8533         * mini.c: Avoid not initializing the runtime when doing AOT compilation, 
8534         since too many things depend on it. Instead, call 
8535         mono_runtime_set_no_exec ().
8536         
8537         * mini.c (mono_create_tls_get): Call mono_alloc_preg (cfg) when running with
8538         the new JIT.
8539
8540         * aot-compiler.c: Add an 'asm-only' AOT option.
8541
8542         * mini.c: Avoid initializing the runtime when doing AOT compilation.
8543                 
8544         * aot-compiler.c (compile_method): Disable gshared support for now as it
8545         doesn't yet work.
8546
8547 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
8548
8549         * mini-amd64.h : Fix a compiler warning.
8550
8551         * exceptions-amd64.c (mono_arch_unwindinfo_install_unwind_info) :
8552           Changed to use a callback function to retrieve the unwind info.
8553           This avoids problems observed when code blocks were removed by
8554           unloading an app domain.
8555
8556         * mini-amd64.c (mono_arch_cpu_optimizazions) : Removing the peephole 
8557           and branch excludes for Winx64.  The fix in exceptions-amd64.c allows them
8558           to work properly.
8559
8560         Contributed under MIT/X11 license.
8561
8562 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
8563
8564         * mini-amd64.c (mono_arch_output_basic_block) : Fix the OP_X86_PUSH_OBJ
8565           case to keep the stack aligned to 8.
8566
8567         Contributed under MIT/X11 license.
8568
8569 2008-08-26  Zoltan Varga  <vargaz@gmail.com>
8570
8571         * aot-runtime.c (mono_aot_get_method): Add a cache for wrapper names to
8572         avoid repeated linear searches.
8573
8574 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
8575
8576         * aot-compiler.c (add_wrappers): Avoid calling get_runtime_invoke with
8577         methods it can't handle.
8578         
8579         * aot-compiler.c (add_method): Avoid adding a method twice.
8580         (add_wrappers): Add runtime invoke wrappers for all methods.
8581
8582         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): New
8583         function to create an aot-compatible version of this trampoline.
8584
8585         * aot-compiler.c aot-runtime.c: Add support for AOT rgctx fetch trampolines.
8586
8587 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
8588
8589         * aot-compiler.c (compile_method): Skip wrappers of generic icalls.
8590
8591         * method-to-ir.c (mono_method_to_ir2): Replace an assert in UNBOX_ANY
8592         with a generic sharing failure.
8593
8594         * aot-compiler.c (emit_klass_info): Call mono_class_get_nested_types ().
8595
8596         * method-to-ir.c (mono_method_to_ir2): Rethrow the correct exception in
8597         CEE_RETHROW. Fixes #419634.
8598
8599         * mini.c (mono_method_to_ir): Ditto.
8600
8601         * exceptions.cs: Add a new test.
8602         
8603         * generic-sharing.c (mini_type_stack_size): Always pass TRUE as allow_open
8604         to mono_type_stack_size_internal () since some callers might not pass in
8605         an rgctx.
8606
8607         * mini-x86.c (mono_arch_emit_prolog): Store the rgctx before calling
8608         instrument_prolog. Fixes #419878.
8609
8610         * mini.c (mono_compile_create_var_for_vreg): Make the lvars representing
8611         doubles in soft float mode volatile.
8612
8613 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
8614
8615         * ir-emit.h (NEW_ARGSTORE): Use cfg->args and cfg->arg_types to fix the build.
8616
8617         * method-to-ir.c (mono_save_args): Use ARGSTORE instead of TEMPSTORE
8618         to handle soft float correctly.
8619
8620         * tramp-arm.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Implement
8621         the fast path.
8622
8623         * mini.h (struct MonoCallInst): Add dynamic_imt_arg boolean field.
8624
8625         * exceptions-arm.c (mono_arch_find_jit_info): Set ctx->regs [ARMREG_R11]
8626         to sp, since the generics catch code requires it.
8627
8628         * mini-arm.h (MONO_ARCH_VTABLE_REG): Use R0 for this to avoid needless
8629         copying.
8630
8631         * method-to-ir.c (emit_imt_argument): Pass imt_arg to 
8632         mono_arch_emit_imt_argument ().
8633
8634         * mini-<ARCH>.c (mono_arch_emit_imt_argument): Add an 'imt_arg' argument.
8635
8636         * mini-arm.c tramp-arm.c: Generic sharing updates.
8637
8638 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
8639
8640         * mini-arm.c: Fix the arm build.
8641
8642         * generic-sharing.c (mini_type_get_underlying_type): New helper function
8643         handling enums, generic instances and generic sharing.
8644         (mini_type_stack_size_full): Ditto.
8645
8646         * mini-amd64.c mini-x86.c mini-arm.c: Use the new functions.
8647         
8648         * mini.h (struct): Add 'uses_rgctx_reg' and 'uses_vtable_reg' fields.
8649
8650         * method-to-ir.c: Set the new fields when using RGCTX_REG/VTABLE_REG.
8651
8652         * tramp-arm.c: Implement the rgctx fetch and the generic class init 
8653         trampolines.
8654
8655         * mini-arm.c: Various small generic sharing changes.
8656
8657         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline): Implement
8658         this for x86.
8659         (mono_arch_create_trampoline_code): Remove most of the GENERIC_CLASS_INIT
8660         custom code.
8661
8662         * mini-trampolines.c (mono_create_generic_class_init_trampoline): New
8663         helper function to return a generic class init trampoline.
8664
8665         * method-to-ir.c mini.c: Use it.
8666         
8667         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline): New
8668         arch-specfic function to return a generic class init trampoline.
8669
8670         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Remove most of
8671         the GENERIC_CLASS_INIT custom code.
8672
8673         * method-to-ir.c (mono_method_to_ir2): If RGCTX_REG is not defined, that is
8674         a fatal error, not a sharing failure.
8675
8676         * tramp-<ARCH>.c (mono_arch_get_rgctx_lazy_fetch_offset): Removed, no longer
8677         needed.
8678
8679         * mini-trampolines.c (mono_rgctx_lazy_fetch_trampoline): Get the additional
8680         trampoline argument from MONO_ARCH_VTABLE_REG.
8681
8682         * tramp-x86.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
8683         order of the arguments to the C trampoline: pass 'slot' as the trampoline
8684         argument, and pass the vtable in VTABLE_REG.
8685
8686         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
8687         order of the arguments to the C trampoline: pass 'slot' as the trampoline
8688         argument, and pass the vtable in VTABLE_REG.
8689         (mono_arch_create_trampoline_code_full): Remove some special casing for
8690         the rgctx fetch trampoline.
8691
8692         * mini.c (mono_method_to_ir): Fix the STELEM_ANY+null value optimization.
8693         Fixes #419273.
8694
8695         * iltests.il: Add a test for it.
8696
8697 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
8698
8699         * aot-compiler.c (compile_method): Enable AOT support for generics sharing.
8700
8701         * method-to-ir.c (mono_method_to_ir2): Remove an aot restriction which is
8702         no longer needed.
8703
8704         * mini-trampolines.c (mono_magic_trampoline): Add a sync wrapper here,
8705         use mono_jit_info_table_find () to avoid recursion.
8706         (mono_delegate_trampoline): Add a sync wrapper here.
8707
8708         * method-to-ir.c (mono_method_to_ir2): Don't call mono_ldftn_nosyc
8709         here.
8710
8711         * mini.c (mono_method_to_ir): Ditto.
8712         
8713         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Remove
8714         add_sync_wrapper argument. Don't add a sync wrapper here.
8715         (mono_create_jump_trampoline): Don't add a sync wrapper here.
8716
8717         * jit-icalls.c (mono_ldftn_nosync): Removed, no longer needed.
8718         
8719 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
8720
8721         * exceptions-amd64.c (seh_handler):  For Winx64 adding missing copy 
8722           of nonvolatile registers back from MonoContext to CONTEXT.
8723
8724         Contributed under MIT/X11 license.
8725
8726 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
8727
8728         * mini-amd64.c (mono_arch_get_delegate_invoke_impl):  When shifting the
8729           arguments on Winx64 there are only 4 argument registers.  For this
8730           logic to work the last argument must be pulled from the stack.  
8731
8732         Contributed under MIT/X11 license.
8733
8734 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
8735
8736         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
8737
8738         * aot-runtime.c aot-compiler.c patch-info.h mini.c: Get rid of
8739         MONO_PATCH_INFO_WRAPPER, encode/decode wrapper methods like the others in
8740         encode/decode_method_ref ().
8741
8742         * aot-compiler.c (encode_patch): Handle STATIC_RGCTX_INVOKE wrappers.
8743
8744         * aot-runtime.c (decode_patch): Ditto.  
8745
8746         * mini.c (mono_resolve_patch_target): Handle RGCTX_FETCH sub-patches of type
8747         MONO_PATCH_INFO_METHOD.
8748
8749         * aot-runtime.c (decode_exception_debug_info): Decode the contents of
8750         MonoGenericJitInfo.
8751
8752         * aot-compiler.c (emit_exception_debug_info): Emit the contents of
8753         MonoGenericJitInfo.
8754
8755         * method-to-ir.c (emit_imt_argument): Fix AOT+gshared support.
8756
8757         * mini-amd64.c (add_valuetype): Use a dummy gsctx if we didn't receive
8758         one from the caller.
8759
8760         * aot-runtime.c (decode_generic_inst): New function to decode and
8761         return a interned generic inst.
8762         (decode_klass_ref): Use it.
8763         (decode_method_ref): Ditto.
8764
8765         * aot-compiler.c (emit_exception_debug_info): Save 
8766         jinfo->has_generic_jit_info too.
8767
8768 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
8769
8770         * mini-ia64.c (mono_arch_output_basic_block): Add OP_FCONV_TO_I.
8771
8772         * iltests.il.in: Add a test for fconv_to_i.
8773
8774         * liveness.c: Disable the liveness2 pass for now to save space.
8775
8776         * regalloc2.c: Include mempool-internals.h to fix warnings.
8777
8778         * aot-compiler.c (encode_method_ref): Encode the context of generic
8779         instance methods.
8780
8781         * aot-runtime.c (decode_method_ref): Inflate generic methods using
8782         the context saved in the aot file.
8783
8784         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
8785
8786         * mini-x86.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
8787
8788         * method-to-ir.c (mono_method_to_ir2): When using CEE_JMP, make arguments
8789         volatile so they won't be optimized away.
8790
8791 2008-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
8792
8793         * ssa.c:
8794         * ssa2.c:
8795         * mini.c:
8796         * regalloc2.c:
8797         * dominators.c: Remove duplicated functions that now are in
8798         mempool-internals.h.
8799
8800 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
8801
8802         * aot-compiler.c: Fix warnings.
8803
8804         * aot-runtime.c (decode_klass_ref): Add support for VARs/MVARs.
8805
8806         * aot-compiler.c (encode_klass_ref): Encode is_method too for VARs/MVARs.
8807
8808         * method-to-ir.c (emit_get_rgctx_method): Use MONO_PATCH_INFO_METHODCONST
8809         as the patch type.
8810
8811         * mini.c (mono_resolve_patch_target): Ditto.
8812         
8813         * aot-compiler.c (encode_patch): Add support for RGCTX_FETCH.
8814         (encode_klass_ref): Add support for encoding VARs/MVARs.
8815
8816         * mini.c (mono_patch_info_dup_mp): Handle RGCTX_FETCH.
8817
8818         * aot-runtime.c (decode_patch_info): Rename to 'decode_patch'. Split out
8819         the handling of the got entries into a separate 'decode_got_entry' function.
8820         Add support for RGCTX_FETCH.
8821
8822         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RDI since RAX is
8823         clobbered by the trampoline code.
8824
8825         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RAX since that is
8826         not clobbered by the indirect calling code.
8827
8828 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
8829
8830         * mini-x86.c (mono_arch_patch_code): Handle RGCTX_FETCH/GENERIC_CLASS_INIT
8831         to fix the build.
8832
8833 2008-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
8834
8835         * method-to-ir.c (mono_emit_method_call_full): Alloc the constructor
8836         signature using the compilation mempool otherwise we would leak it.
8837
8838 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
8839
8840         * method-to-ir.c (mono_method_to_ir2): Emit the generic class inits using
8841         mono_emit_abs_call ().
8842
8843         * patch-info.h: Add GENERIC_CLASS_INIT.
8844
8845         * mini.c (mono_resolve_patch_target): Handle GENERIC_CLASS_INIT.
8846
8847         * mini-amd64.c (emit_call_body): Treat abs calls which have a patch info
8848         as their target as a near call.
8849
8850         * mini.c (mono_codegen): Handle patches stored in cfg->abs_patches in the
8851         ABS handling code.
8852         (mono_resolve_patch_target): Add support for MONO_PATCH_INFO_RGCTX_FETCH.
8853
8854         * method-to-ir.c (mono_emit_abs_call): New helper function which emits a
8855         call to a runtime function described by a patch.
8856
8857         * method-to-ir.c: Emit rgctx entry fetches and class init trampolines using
8858         mono_emit_abs_call, this has the advantage that the ABS handling code in
8859         mono_codegen () can handle them both, and can handle other stuff in the
8860         future without additional code.
8861
8862         * mini.h (struct MonoJumpInfoRgctxEntry): New structure describing an rgctx
8863         entry.
8864         (MonoCompile): Add 'abs_patches' hashtable, which contains patches describing
8865         abs addresses.
8866
8867         * mini.h: Add missing bblock related prototypes.
8868
8869         * mini.h (MonoCompile): Remove unused reverse_inst_list and
8870         reverse_inst_list_len fields.
8871
8872         * mini.c: Refactor this file a bit by moving branch optimizations to 
8873         branch-opts.c.
8874
8875         * method-to-ir.c: Merge generic sharing changes missed earlier.
8876
8877         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST.
8878
8879         * aot-runtime.c (decode_patch_info): Refactor the code dealing with the
8880         shared patches. Process METHODCONST as a shared patch.
8881
8882         * liveness.c (mono_analyze_liveness): Disable the liveness2 code for now
8883         as it crashes on the 2.0 mscorlib.
8884
8885         * aot-compiler.c (is_shared_got_patch): Revert the last change as it seems
8886         to cause crashes.
8887         
8888         * aot-compiler.c: Use is_plt_patch () in a few additional places.
8889         (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST, which is generated
8890         by IMT.
8891
8892         * aot-compiler.c: Reorganize the got handling code to be a bit more
8893         understandable.
8894
8895 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
8896
8897         * aot-compiler.c: Make the patch_to_plt_offset hash table use 
8898         mono_patch_info_equals/hash, and use it to massively simplify
8899         get_plt_index ().
8900
8901         * mini.c (mono_patch_info_hash): Simplify this and add support for
8902         more patch types.
8903
8904         * patch-info.h: Rename RGCTX_LAZY_FETCH_TRAMPOLINE to just RGCTX_FETCH.
8905
8906         * mini.c aot-compiler.c aot-runtime.c: Revert the LAZY_FETCH_TRAMPOLINE
8907         handling code, since an offset is not enough to identify a trampoline.
8908
8909         * method-to-ir.c: Remove some g_assert (!cfg->compile_aot) lines.
8910
8911 2008-08-17  Mark Probst  <mark.probst@gmail.com>
8912
8913         * mini.c (mono_op_imm_to_op): Add case for OP_IMUL_IMM.
8914
8915         * method-to-ir.c (mono_method_to_ir2): Decompose OP_CKFINITE.
8916
8917         * mini-ops.h: Argument and result types for OVF_CARRY ops.
8918
8919         * decompose.c: PPC decompositions for various ops.
8920
8921         * cpu-ppc.md, inssel-ppc.brg, mini-ppc.c: PPC changes for Linear IL.
8922
8923 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
8924
8925         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Make this
8926         call the generic trampoline code using a call, instead of a jump, to
8927         remove some special casing from the generic trampoline code.
8928
8929         * mini.c (mono_resolve_patch_target): Handle LAZY_FETCH_TRAMPOLINE.
8930         (mono_codegen): Ditto.
8931
8932         * aot-compiler.c aot-runtime.c: Ditto.
8933
8934         * patch-info.h: Add MONO_PATCH_INFO_RGCTX_LAZY_FETCH_TRAMPOLINE.
8935
8936         * mini-trampolines.c (mono_find_rgctx_lazy_fetch_trampoline_by_addr): New
8937         helper function to find the offset corresponding to a lazy fetch trampoline.
8938
8939         * mini.h (MonoCompile): Add 'orig_method' field to hold the original method
8940         when doing generic sharing.
8941
8942         * aot-compiler.c: Use cfg->orig_method instead of cfg->method in a lot of
8943         places.
8944         
8945         * mini.c (mono_create_rgctx_lazy_fetch_trampoline): Move this to
8946         mini-trampolines.c to be with the other trampoline creation functions.
8947
8948         * method-to-ir.c (mono_emit_method_call): Remove the 'signature' argument
8949         as it is equal to method->signature in most cases, add a 
8950         mono_emit_method_call_full variant which takes a signature and an imt
8951         argument as well.
8952
8953 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
8954
8955         * jit-icalls.c (mono_helper_compile_generic_method): Don't pass the context
8956         to this function, since it could be computed easily from the method 
8957         argument.
8958         (mono_helper_compile_generic_method_wo_context): Removed, not needed any
8959         more.
8960
8961         * method-to-ir.c mini.c: Remove references to 
8962         compile_generic_method_wo_context.
8963
8964         * method-to-ir.c (mono_method_to_ir2): Enable AOT for virtual
8965         generic method calls.
8966         
8967         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_1 for 1
8968         dimensional non-szarrays.
8969
8970         * mini.c (mini_init): Register mono_array_new_1.
8971
8972         * jit-icalls.c (mono_array_new_1): New jit icall.
8973
8974         * mini-trampolines.c (mono_magic_trampoline): For jumps, patch the GOT entries
8975         pointing to the method.
8976
8977         * aot-runtime.c (mono_aot_get_method_from_token): Register GOT slots holding
8978         method addresses belonging to METHOD_JUMP patches in the 
8979         jump_target_got_slot_hash.
8980         (mono_aot_load_method): Ditto.
8981
8982         * aot-compiler.c (compile_method): Allow AOT compilation of methods with
8983         METHOD_JUMP patches.
8984
8985         * mini.c (mini_create_jit_domain_info): New helper function which 
8986         initializes/frees domain->runtime_info.
8987         (mini_free_jit_domain_info): Ditto.
8988         (mini_init): Install the domain hook functions with the runtime.
8989
8990         * mini.h (MonoJitDomainInfo): New structure which stores the domain specific
8991         information maintained by the JIT.
8992
8993         * mini.c (mono_resolve_patch_target): For PATCH_INFO_METHOD_JUMP, move the
8994         insertion into jump_table_hash into mono_codegen (), also implement proper
8995         locking.
8996
8997         * method-to-ir.c (mono_method_to_ir2): Don't disable AOT for CEE_JMP and
8998         tail calls, it is already done by the aot code.
8999         
9000         * method-to-ir.c (mono_method_to_ir2): Handle CEE_JMP using the tail call
9001         mechanism on amd64.
9002
9003         * iltests.il.in: Make the jmp test a bit more complex.
9004
9005         * aot-compiler.c (encode_method_ref): Handle references to normal methods of
9006         generic instances which doesn't have a token.
9007
9008         * aot-runtime.c (decode_method_ref): Ditto.
9009         
9010         * method-to-ir.c (handle_unbox_nullable): Don't disable AOT, the aot code
9011         can handle this case now.
9012         (handle_box): Ditto.
9013
9014 2008-08-15  Geoff Norton  <gnorton@novell.com>
9015
9016         * mini-x86.c: Fix alignment on Apple x86, and re-disable the alignment
9017         debugging check.
9018
9019 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
9020
9021         * method-to-ir.c (mono_method_to_ir2): Allow AOT compilation of methods
9022         calling generic methods.
9023
9024         * aot-compiler.c (encode_patch): Handle MONO_PATCH_INFO_METHOD_RGCTX.
9025
9026         * aot-runtime.c (decode_patch_info): Ditto.
9027
9028         * mini.c (mono_resolve_patch_target): Ditto.
9029         
9030         * patch-info.h: Add METHOD_RGCTX.
9031
9032         * mini-amd64.c (mono_arch_output_basic_block): Optimize LOCALLOC_IMM.
9033
9034 2008-08-14  Zoltan Varga  <vargaz@gmail.com>
9035
9036         * mini-amd64.c (mono_arch_emit_call): Nullify call->vret_var if returning
9037         arguments in registers.
9038
9039         * decompose.c (mono_decompose_vtype_opts): Create a var for the vreg in
9040         OP_VCALL too, don't depend on OP_OUTARG_VTRETADDR doing it.
9041
9042         * mini.c (mini_method_compile): Abort aot compilation for generic
9043         methods if generic sharing is disabled.
9044         
9045         * mini.c (mono_method_to_ir): Disable AOT for virtual calls requiring
9046         an mrgctx.
9047
9048         * method-to-ir.c (mono_method_to_ir2): Disable AOT for virtual calls 
9049         requiring an mrgctx.
9050
9051         * decompose.c (mono_decompose_vtype_opts): Emit the correct sized
9052         store instructions when converting a vcall to a normal call.
9053
9054         * mini.c (sigprof_signal_handler): Call mono_find_jit_info instead of
9055         mono_arch_find_jit_info.
9056
9057 2008-08-13  Zoltan Varga  <vargaz@gmail.com>
9058
9059         * method-to-ir.c (check_inline_called_method_name_limit): Optimize this to
9060         avoid calling mono_method_full_name () for every method even if the
9061         env var is not set.
9062         (check_inline_caller_method_name_limit): Ditto.
9063
9064 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
9065
9066         * driver.c (main_thread_handler): Allow AOT compilation of multiple 
9067         assemblies in one run.
9068
9069         * aot-compiler.c (mono_compile_assembly): Only print out a count of
9070         skipped methods if it is not 0.
9071
9072         * Makefile.am (aotcheck): AOT compile all test assemblies in one run.
9073
9074 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
9075
9076         * mini.c (mono_codegen):  Changing a preprocessor check from WIN64 to
9077           MONO_ARCH_HAVE_UNWIND_TABLE.
9078
9079         Contributed under MIT/X11 license.
9080
9081 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
9082
9083         * mini-amd64.c (mono_arch_cpu_optimizazions):  Remove peephole and branch
9084           from default optimizaton list on Winx64.
9085
9086         * mini-amd64.c (emit_tls_get):  Added Winx64 specific implementation for GetTLS.
9087
9088         * mini-amd64.c (mono_arch_emit_prolog):  Adding an offset on Winx64 to get
9089           the LMF from the MonoJitTlsData structure.
9090
9091         * mini-amd64.c (mono_arch_setup_jit_tls_data):  Added Winx64 implementation.
9092
9093         Contributed under MIT/X11 license.
9094
9095 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
9096
9097         * mini.c (sigsegv_signal_handler): Fix the build.
9098
9099         * mini-amd64.c (emit_call_body): Use image->aot_module instead of 
9100         assembly->aot_module.
9101
9102         * aot-runtime.c: Use image->aot_module instead of searching in the aot_modules
9103         hash table. This simplifies and speeds up a lot of code, and fixes support
9104         for .netmodules.
9105
9106         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes if the thread is not registered
9107         with the runtime.
9108
9109         * mini-exceptions.c: Ditto.
9110         
9111         * exceptions-*c.c (mono_arch_find_jit_info): Remove unused 'trace' and
9112         'native_offset' argument, since these are computed in the 
9113         mono_find_jit_info () function.
9114
9115         * mini-exceptions.c (mono_find_jit_info): Make this non-static, as it
9116         is used by exceptions-ppc.c.
9117
9118         * exceptions-ppc.c: Call mono_find_jit_info () instead of 
9119         mono_arch_find_jit_info ().
9120         
9121         * mini-ppc.h exceptions-ppc.c mini-mips.h mini-mips.c exceptions-mips.c
9122         mini-exceptions.c: Get rid of the CUSTOM_STACK_WALK stuff, use the
9123         generic code in mini-exceptions.c.
9124
9125 2008-08-11  Zoltan Varga  <vargaz@gmail.com>
9126
9127         * mini-ppc.c (mono_arch_flush_register_windows): Add this for ppc.
9128
9129         * aot-runtime.c (mono_aot_get_plt_info_offset): Fix a warning.
9130         
9131         * aot-runtime.c (mono_aot_get_method): Avoid doing all the loading inside
9132         the aot lock, to avoid deadlocks when mono_aot_get_class_from_name () is
9133         called while holding the loader lock. Fixes #415608.
9134         (mono_aot_get_method_from_token_inner): Ditto.
9135
9136 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
9137
9138         * exceptions-ppc.c (mono_jit_walk_stack): Use MONO_INIT_CONTEXT_FROM_CURRENT
9139         to reduce differences between this and the generic implementation in
9140         mini-exceptions.c.
9141         (ves_icall_get_frame_info): Ditto.
9142
9143         * mini-ppc.h (MONO_INIT_CONTEXT_FROM_CURRENT): Define this for ppc too.
9144
9145         * mini-exceptions.c (mono_exceptions_init): Remove an #ifdef which is no
9146         longer neccesarry.
9147
9148         * exceptions-ppc.c (arch_get_call_filter): Rename this to 
9149         mono_arch_get_call_filter () and make it non-static, for consistency with the
9150         other architectures.
9151
9152 2008-08-09  Rodrigo Kumpera  <rkumpera@novell.com>
9153
9154         * mini.c:
9155         * local-propagation.c:
9156         * mini-x86.c: Correct the name of arch defines.
9157
9158 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
9159
9160         * method-to-ir.c (mono_op_to_op_imm_noemul): Correct name of
9161         NO_EMULATE_LONG_SHIFT_OPS define.
9162
9163 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
9164
9165         * method-to-ir.c (mono_method_to_ir2): Remove some code from CEE_MONO_LDPTR
9166         now that aot-ed icall wrappers use CEE_MONO_ICALL_ADDR.
9167
9168         * aot-compiler.c aot-runtime.c: Add support for static aot compilation.
9169         MACH fixes. Merged from the 2.0 branch.
9170
9171         * method-to-ir.c (mono_method_to_ir2): Handle CEE_MONO_ICALL_ADDR.
9172
9173         * mini.c (mono_resolve_patch_target): Error out if an icall is not found.
9174         (mono_method_to_ir): Handle CEE_MONO_ICALL_ADDR.
9175
9176         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Add AOT support.
9177
9178         * method-to-ir.c mini.c driver.c aot-compiler.c: Update after
9179         mono_marshal_get_native_wrapper () signature changes.
9180
9181 2008-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
9182
9183         * jit-icalls.c (mono_fconv_ovf_u8): Work around soft-float double to long
9184         conversion bug under arm.
9185
9186 2008-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
9187
9188         * cpu-arm.md: Increase long_conv_to_ovf_i4_2 max length to 36.
9189
9190         * mini-arm.c (mono_arch_output_basic_block): Implement long to int conversion
9191         with overflow checking.
9192
9193 2008-08-05  Marek Habersack  <mhabersack@novell.com>
9194
9195         * Makefile.am (GENMDESC_PRG): when cross-compiling use full path
9196         to the genmdesc.pl file
9197
9198 2008-08-05  Zoltan Varga  <vargaz@gmail.com>
9199
9200         * ir-emit.h (EMIT_NEW_ARGSTORE): Fix the usage of param_types and
9201         arg_array in the soft-float versions of the LOAD/STORE macros.
9202
9203         * method-to-ir.c (mono_method_to_ir2): Fix a warning in the arm switch
9204         implementation.
9205
9206         * ir-emit.h (NEW_VARLOADA): Handle SOFT_FLOAT correctly.
9207
9208 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
9209
9210         * mini-ia64.c (add_valuetype): Only reserve half parameter slot for each member of
9211         a float HFA. Fixes #413621.
9212
9213 2008-08-02  Gert Driesen  <drieseng@users.sourceforge.net>
9214
9215         * mini-x86.c (mono_arg_get_argument_info): Rename last occurrence of
9216         frame_size to args_size. Fixes build.
9217
9218 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
9219
9220         * mini-x86.c (mono_arch_get_argument_info): Rename frame_size to args_size,
9221         and don't align it to MONO_ARCH_FRAME_ALIGNMENT.
9222
9223         * mini-x86.h: Change MONO_ARCH_FRAME_ALIGNMENT to 8 so doubles stored on
9224         the stack are not unaligned. Fixes #413247.
9225         
9226 Fri Aug 1 18:46:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
9227
9228         * mini.c: update jitted methods performance counters.
9229
9230 Fri Aug 1 16:30:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
9231
9232         * mini-exceptions.c: increase the exceptions thrown performance
9233         counter in mono_handle_exception ().
9234
9235 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
9236
9237         * aot-runtime.c: Use MonoImage's as keys in the aot_modules hash so the aot
9238         can work with netmodules.
9239
9240 2008-07-28  Geoff Norton  <gnorton@novell.com>
9241
9242         * mini-x86.h: Correct the frame alignment on OSX.  Fixes the jit 
9243         regression tests.
9244
9245 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
9246
9247         * mini-x86.c (mono_arch_emit_call): Emi the osx stack alignment at the
9248         correct place.
9249
9250 2008-07-28  Bill Holmes  <billholmes54@gmail.com>
9251
9252         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
9253           The float param registers and other param registers must be the 
9254           same index on Windows x64.
9255
9256         * mini-amd64.c (mono_arch_allocate_vars) : Implementing the 
9257           ArgValuetypeAddrInIReg argument case.  Setting the argument
9258           op to OP_VTARG_ADDR (OP_REGOFFSET)).
9259
9260         * mini-amd64.c (mono_arch_call_opcode) : Winx64 fix.  Use the size
9261           variable computed above as the copy length for arguments of storage
9262           type ArgValuetypeAddrInIReg.
9263
9264         * mini-amd64.c (mono_arch_emit_call) :  Implementing the 
9265           ArgValuetypeAddrInIReg argument case.  This case will rely on
9266           mono_arch_emit_outarg_vt to emit the correct code later in the process.
9267
9268         * mini-amd64.c (mono_arch_emit_call) :  On Winx64 there always needs to be
9269           a 32 byte stack allocation for all calls.  We will omit the adjustment for
9270           jump and tail call instructoins as they do not follow the typical call behavior.
9271
9272         * mini-amd64.c (mono_arch_emit_outarg_vt) :  Implementing the case for
9273           ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
9274           local variable and pass the local variable by reference to the called method.
9275
9276         * mini-amd64.c (mono_arch_emit_prolog, emit_load_volatile_arguments) :
9277           Implementing the ArgValuetypeAddrInIReg argument case.  When the address
9278           of a struct is passed in a register it must be saved with the other
9279           volatile argument on the stack.
9280
9281         * mini-amd64.c (mono_arch_emit_prolog) : Winx64 fix.  When omitting the
9282           frame pointer the stack adjustment value must be saved to the unwind 
9283           info structure.
9284
9285         Contributed under MIT/X11 license.
9286
9287 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
9288
9289         * inssel-x86.brg (stmt): Add missing OP_X86_OUTARG_ALIGN_STACK rule
9290         which got lost in the merge.
9291
9292 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
9293
9294         * method-to-ir.c: Make the helper_sig variables extern to fix the ppc
9295         build.
9296
9297         * mini-amd64.c (emit_call_body): Add a no_patch case missed earlier.
9298         
9299         * mini-amd64.c (emit_call_body): Avoid aligning the call instruction on
9300         icalls, since they won't be patched.
9301
9302         * exceptions-amd64.c (mono_arch_get_restore_context_full): Use a slightly
9303         different code sequence when running under valgrind to prevent some valgrind
9304         errors.
9305
9306         * iltests.il.in: Add new regression test.
9307
9308         * method-to-ir.c (mono_method_to_ir2): Fix handling of inlined methods which
9309         end with a throw.
9310
9311         * method-to-ir.c (mono_method_to_ir2): Use get_vreg_to_inst () instead of
9312         accessing cfg->vreg_to_inst directly to prevent a crash in LDFLD.
9313
9314         * iltests.il.in: Add new test.
9315
9316         * aot-compiler.c: Fix some warnings.
9317
9318         * decompose.c (mono_decompose_long_opts): Implement OP_ICONV_TO_OVF_I8_UN.
9319         Fixes #412494.
9320
9321 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
9322
9323         * driver.c (mono_main): Fix the --gc=none build. Fixes #412482.
9324         (mini_usage_jitdeveloper): Add a missing --wapi option.
9325
9326 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
9327
9328         * mini-codegen.c: Simplify the is_fp macros.
9329         (free_up_ireg): Remove, use free_up_reg instead.
9330         (free_up_reg): Fix the fp case.
9331
9332 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
9333
9334         * cpu-arm.md (loadr8_membase): Increase the length of this as this is not
9335         lowered earlier.
9336
9337         * exceptions-x86.c: Merge some changes which seemed to have got lost
9338         in the linear-ir merge.
9339
9340         * liveness.c: Disable the liveness2 pass on 32 bit platforms.
9341
9342         * method-to-ir.c (mono_handle_global_vregs): Make the component vregs of a
9343         long vreg volatile even if the variable was already created.
9344
9345         * liveness.c (update_liveness2): Avoid eliminating dead definitions of
9346         volatile variables.
9347
9348 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
9349
9350         * cpu-x86.md (fcall_membase): Increase the size of the fcall opcodes.
9351
9352         * mini.c (mono_jit_compile_method_inner): Add support for 
9353         MONO_EXCEPTION_BAD_IMAGE.
9354
9355         * method-to-ir.c (mono_method_to_ir2): Avoid a crash if 
9356         mini_method_get_context () returns NULL. Fixes #356531.
9357
9358         * mini.c (mono_method_to_ir): Ditto.
9359         
9360         * method-to-ir.c (mono_method_to_ir2): Create a variable if needed when
9361         accessing a field of a valuetype in LDFLD/STFLD. Fixes #412399.
9362
9363 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
9364
9365         * method-to-ir.c (mono_method_to_ir2): Initialize an uninitialized variable
9366         in the LDFTN implementation.
9367
9368 2008-07-25  Mark Probst  <mark.probst@gmail.com>
9369
9370         * mini-trampolines.c (mono_magic_trampoline): When sharing generic
9371         code, patch calls to icalls, too, even if they're not in the
9372         shared generic code hash.  Fixes #411962.
9373
9374 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
9375
9376         * cpu-x86.md: Increase the length of the fcall opcodes.
9377
9378         * mini-x86.c (emit_move_return_value): Avoid some precision issues for
9379         calls returning floats.
9380
9381         * method-to-ir.c (mono_method_to_ir2): Remove the generic sharing restrictions
9382         on NEWARR.
9383         
9384         * method-to-ir.c (mono_method_to_ir2): Merge some LDFTN gsharing changes
9385         missed earlier.
9386
9387         * method-to-ir.c (handle_delegate_ctor): Avoid putting dynamic methods
9388         into the domain->method_code_hash.
9389
9390         * aot-compiler.c: Fix win32 build.
9391
9392         * method-to-ir.c (EMIT_GET_RGCTX): Call EMIT_NEW_LDARG in emit_get_rgctx ().
9393         
9394         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_specific in the
9395         gshared NEWARR implementation.
9396
9397         * cpu-sparc.md: Remove duplicate localloc_imm opcode.
9398
9399         * ir-emit.h (NEW_ARGLOAD): Use cfg->args and cfg->arg_types so this macro
9400         can be used outside of method_to_ir.
9401
9402         * mini.h (MonoCompile): Add arg_types field.
9403
9404         * method-to-ir.c (inline_method): Save/Restore cfg->args and cfg->arg_types.
9405         
9406         * method-to-ir.c (mono_method_to_ir2): Set cfg->args and cfg->arg_types to
9407         the values of the local arg_array and param_types array.
9408
9409 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
9410
9411         * method-to-ir.c (mono_method_to_ir2): Allocate a GOT var for NEWOBJ, since
9412         got accesses might only get generated later when NEWOBJ is decomposed.
9413         
9414         * method-to-ir.c (handle_delegate_ctor): Add an optimization to avoid
9415         looking up the native code of the target method when a delegate is called
9416         for the first time.
9417
9418         * mini-trampolines.c (mono_delegate_trampoline): Add the other half of the
9419         optimization.
9420
9421         * debug-debugger.c (MONO_DEBUGGER__debugger_info): Fix a warning.
9422
9423         * aot-runtime.c aot-compiler.c: Add a new option 'no-dlsym' which makes
9424         AOT work on platforms without a working dlsym implementation.
9425
9426         * mini.h: Bump AOT image format version.
9427         
9428 2008-07-24  Mark Probst  <mark.probst@gmail.com>
9429
9430         * mini-exceptions.c: Free a MonoType with
9431         mono_metadata_free_type() instead of g_free().
9432
9433         * aot-runtime.c: Free a MonoType.
9434
9435 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
9436
9437         * method-to-ir.c (mono_method_to_ir2): Add a comment for the box+brtrue
9438         optimization.
9439
9440         * mini-codegen.c (mono_local_regalloc): Remove the remaining items from the
9441         fp stack on x86.
9442
9443 2008-07-23  Massimiliano Mantione  <massi@ximian.com>
9444         * mini.c (sigprof_signal_handler): call the new "runtime initialized"
9445         profiler hook.
9446
9447 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
9448
9449         * method-to-ir.c (mono_method_to_ir2): Set the stack type properly for
9450         NEWOBJ calls on valuetypes.
9451
9452         * iltests.il.in: Add new test.
9453
9454         * mini-x86.c (mono_arch_emit_call): Use mini_type_stack_size ().
9455
9456 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
9457
9458         * mini-exceptions.c: Fix some warnings. Remove one ia64 special case as it
9459         is no longer needed.
9460
9461         * mini-ia64.c (mono_arch_emit_prolog): In native-to-managed wrappers, widen
9462         non register sized integer arguments.
9463         (mono_arch_call_opcode): Add support for ArgInFloatRegR4.
9464         (mono_arch_emit_outarg_vt): Pass a more reasonable alignment to 
9465         emit_memcpy2 ().
9466
9467         * method-to-ir.c (mono_method_to_ir2): Handle the ret_var_is_local case in
9468         CEE_MONO_RETOBJ.
9469         
9470         * method-to-ir.c (ADD_WIDEN_OP): New macro to insert a widening op when
9471         two a binop with different sized arguments is emitted.
9472
9473         * mini.c (mono_bblock_insert_after_ins): Properly link up with the next
9474         instruction in the ins==NULL case.
9475
9476 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
9477
9478         * mini-ops.h: Add OP_X86_OUTARG_ALIGN_STACK.
9479
9480         * mini-x86.c: Fix osx build.
9481
9482         * mini-amd64.c (mono_arch_output_basic_block): Handle varargs in the CALL_REG
9483         opcodes as well.
9484
9485         * method-to-ir.c (mono_spill_global_vars): Avoid fusing a load+store into the
9486         instruction for non int sized variables.
9487
9488         * method-to-ir.c (mono_method_to_ir2): Fix an assert in the LDFLD
9489         implementation.
9490
9491 2008-07-23  Robert Jordan  <robertj@gmx.net>
9492
9493         * method-to-ir.c: Fix MSVC build.
9494
9495 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
9496
9497         * method-to-ir.c (mono_method_to_ir2): When calling native code which returns
9498         a non int sized type, widen it to an int since newer versions of gcc seem to
9499         generate code which needs this.
9500
9501         * ssa2.c abcremoval2.c: Fix warnings.
9502
9503         * *: Merge the Linear IR branch.
9504
9505         The original branch is at trunk/branches/vargaz/mini-linear-il, and
9506         the ChangeLog file there describes all the changes done over the years. 
9507         Further documentation can be found at www.mono-project.com/Linear_IL.
9508
9509 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
9510
9511         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
9512           The float param registers and other param registers must be the 
9513           same index on Windows x64.
9514
9515         Contributed under MIT/X11 license.
9516
9517 2008-07-21  Rodrigo Kumpera  <rkumpera@novell.com>
9518
9519         * mini.c: Make the previous fix GC safe.
9520
9521 2008-07-21  Raja R Harinath  <harinath@hurrynot.org>
9522
9523         * Makefile.am (version.h): Allow a trailing '/' in the repository URL.
9524
9525 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
9526
9527         * mini-amd64.c (get_call_info): Correcting the case for MONO_TYPE_TYPEDBYREF
9528           on Winx64.  This type will not be passed on the stack (ArgOnStack), but 
9529           ArgValuetypeAddrInIReg instead.
9530
9531         Contributed under MIT/X11 license.
9532
9533 2008-07-21  Zoltan Varga  <vargaz@gmail.com>
9534
9535         * mini-codegen.c (get_register_spilling): Fix a warning.
9536
9537 2008-07-17  Rodrigo Kumpera  <rkumpera@novell.com>
9538
9539         * mini.c: Use mono_runtime_class_init_full to avoid leaking memory
9540         for types which the initialization fails. Raises the provided exception
9541         at the right stop after cleanup.
9542
9543 2008-07-16  Zoltan Varga  <vargaz@gmail.com>
9544
9545         * aot-compiler.c: Free most of the memory allocated during compilation.
9546
9547         * mini.c (mini_parse_debug_options): Fix a leak.
9548         
9549         * mini.c (mini_method_compile): Don't add the method to the jit info tables
9550         during aot compilation.
9551
9552 2008-07-14  Zoltan Varga  <vargaz@gmail.com>
9553
9554         * mini.c (mono_method_to_ir): Disable aot for code using CCASTCLASS on x86 as 
9555         it has too much register pressure.
9556
9557 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
9558
9559         * inssel.brg (CEE_CASTCLASS): Remove some dead code.
9560
9561 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
9562
9563         * mini-x86.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
9564         on x86.
9565
9566         * mini-amd64.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
9567         on amd64 similar to the way it is done on arm.
9568
9569         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
9570
9571         * aot-runtime.c (load_aot_module): Rename 'info' to 'amodule' for 
9572         consistency, normalize error messages, avoid loading aot-only modules in
9573         normal mode.
9574
9575         * driver.c (mono_main): Rename --aot-only command line option to --full-aot
9576         for consistency.
9577
9578         * aot-compiler.c aot-runtime.c tramp-arm.c: Implement aot-only support.
9579
9580 2008-07-11  Martin Baulig  <martin@ximian.com>
9581
9582         * debug-debugger.h
9583         (MonoDebuggerInfo): Add `interruption_request'.
9584
9585 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
9586
9587         * aot-compiler.c (emit_plt): Remove some dead code.
9588
9589         * exceptions-arm.c (mono_arch_get_call_filter_full): Initialize ji.
9590
9591         * aot-runtime.c (mono_aot_get_plt_info_offset): New helper function to
9592         return the plt info offset belonging to a given plt entry.
9593
9594         * mini-trampolines.c (mono_aot_plt_trampoline): Use 
9595         mono_aot_get_plt_info_offset.
9596         
9597         * aot-runtime.c aot-compiler.c tramp-arm.c: Change the arm plt code to be
9598         similar to the amd64 code by makeing jumps through a separate jump table 
9599         instead of embedding the jump addresses into the code.
9600
9601 2008-07-11  Zoltan Varga  <vargaz@gmail.com>
9602
9603         * mini.c (mono_method_to_ir): Disable aot for calling ldtoken in a generic
9604         method.
9605
9606 2008-07-10  Martin Baulig  <martin@ximian.com>
9607
9608         * mini.c (mini_method_compile): Disable generics sharing when
9609         running in the debugger.
9610
9611 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
9612
9613         * mini.c (mono_method_to_ir): Create the got var in CEE_REFANYVAL.
9614
9615         * inssel.brg (CEE_CASTCLASS): Avoid reusing temporary registers to prevent
9616         the local register allocator from running out of registers on x86 when 
9617         using aot.
9618
9619 2008-07-10  Bill Holmes  <billholmes54@gmail.com>
9620
9621         * inssel-long.brg For OP_LCONV_TO_OVF_I4 an int cast is needed when 
9622         expressing IntMin for the VS Compiler.  See Compiler Warning (level 2) 
9623         C4146.
9624
9625         Contributed under MIT/X11 license.
9626
9627 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
9628
9629         * aot-compiler.c: Get rid of whitespace in the generated assembly file to
9630         speed up the assembler.
9631
9632 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
9633
9634         * mini-arm.h tramp-arm.c exceptions-arm.c aot-compiler.c: Beginnings of aot-only
9635         support.
9636
9637         * mini.c: Move the soft float handling macros a bit earlier, add 
9638         NEW_TEMPSTORE_SOFT_FLOAT macro, fix warnings, add soft-float support in one
9639         place.
9640
9641         * mini.h: Add prototype for mono_arch_fixup_jinfo.
9642
9643         * mini.c (mini_init): In aot-only mode, set the root domain code manager to
9644         read-only to help catch code allocation requests.
9645         
9646         * mini.c inssel.brg aot-compiler.c: Make the use of IMT runtime configurable,
9647         and turn it off when using --aot-only or when compiling with --aot=full.
9648
9649         * mini.c (mono_resolve_patch_target): In aot-only mode, allocate the
9650         jump table for switches from the normal domain mempool, not the code
9651         manager.
9652
9653         * mini-trampolines.c (get_unbox_trampoline): New function to return an
9654         unbox trampoline which handles aot-only mode too.
9655
9656         * aot-runtime.c (mono_aot_get_unbox_trampoline): New function to lookup
9657         an AOTed unbox trampoline.
9658
9659         * aot-compiler.c (emit_trampolines): Emit unbox trampolines.
9660
9661 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
9662
9663         * wapihandles.c: Fixing MSVC builds.  Include statement changed from <> to
9664         ""
9665
9666         Contributed under MIT/X11 license.
9667
9668 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
9669
9670         * mini.c (mono_codegen):  Allocate space at the end of the code block and store
9671           the unwind information for the method at the end of the allocated block.
9672           
9673         * mini-amd64.h: Added declarations for the unwind routines and adding field to 
9674           MonoCompileArch to hold the unwind info for SEH on Winx64
9675         
9676         * mini-amd64.c (mono_arch_emit_prolog): Calls to the unwind routines added to store
9677           frame pointer info for the method being compiled.
9678           
9679         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception): Added a stack adjustment before
9680           the call to mono_exception_from_token.
9681           
9682         * exceptions-amd64.c: Added mono_arch_unwindinfo* implementations.  This code is responsible
9683           storing the method prolog information in a format that the Winx64 SEH can understand.  This
9684           information is stored a the end of the method block because it is all 32-bit offset based.
9685
9686         Contributed under MIT/X11 license.
9687
9688 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
9689
9690         * mini.h: Remove duplicate definitions of the mini_wapi_ functions.
9691
9692         * wapihandles.c: Fix warnings.
9693
9694         * aot-runtime.c (load_aot_module): Add a missing error message in aot-only
9695         mode.
9696
9697         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Avoid calling 
9698         mono_jit_compile_method in aot-only mode since that calls the type 
9699         initializer.
9700         
9701         * mini-trampolines.c (mono_create_delegate_trampoline): Avoid calling
9702         get_delegate_invoke_impl in aot-only mode.
9703
9704         * mini.c (mono_global_codeman_reserve): Reenable the aot-only check.
9705
9706 2008-07-08  Zoltan Varga  <vargaz@gmail.com>
9707
9708         * trace.c (mono_trace_enter_method): Fix printing of Type instances.
9709
9710         * aot-compiler.c (compile_method): Disable the check for GSHARED since it
9711         is on by default.
9712
9713         * inssel-long.brg (reg): Add a rule for LCALL_REG (OP_I8CONST).
9714
9715         * tramp-amd64.c (mono_arch_nullify_plt_entry): Read the nullified class
9716         init trampoline from the AOT file as well.
9717
9718         * mini-amd64.c (mono_arch_register_lowlevel_calls): Register
9719         mono_amd64_throw_exception as a jit icall since it is needed by the aot-only
9720         code.
9721
9722         * mini.c (mini_init): Move the call to mono_exceptions_init () after 
9723         mono_init.
9724
9725         * exceptions-amd64.c: Add _full variants for the remaining exception code
9726         creation functions as well, allow emission of relocatable code, remove
9727         caching since that is now done by the caller.
9728
9729         * mini-exceptions.c: Add _full variants for the remaining exception code
9730         creation functions as well, add aot-only support.
9731
9732         * aot-compiler.c (compile_method): Allow calls to methods of constructed types
9733         if we can determine a proper token for them.
9734         (add_wrappers): Add a few more wrappers.
9735         (emit_method_code): Remove some dead code.
9736         (emit_trampolines): Emit exception code too.
9737
9738         * mini.c (mono_method_to_ir): Call mono_array_new_2 if possible.
9739
9740         * jit-icalls.c (mono_array_new_2): New jit icall, specialized version of
9741         mono_array_new_va which avoids varargs.
9742
9743         * mini-exceptions.c (mono_exceptions_init): Fix the ppc build.
9744
9745         * mini-trampolines.c: Call mono_create_specific_trampoline () instead of
9746         mono_arch_create_specific_trampoline () in all places.
9747
9748         * aot-compiler.c aot-runtime.c: Refactor the trampoline emitting/loading code
9749         a bit so it can be used for other things as well.
9750         
9751         * mini-exceptions.c (mono_exceptions_init): Initialize throw_exception_by_name
9752         on demand as well.
9753
9754         * exceptions-amd64.c: Rename the caching from the exception code creation
9755         functions, it is done by the caller instead.
9756         
9757         * exceptions-amd64.c: Change the signature of the exception code creation 
9758         functions to allow the creation of relocatable code later.
9759
9760         * mini-exceptions.c: Add a set of functions to query the various 
9761         runtime-generated exception functions.
9762
9763         * mini.c mini-exceptions.c: Use the newly added functions instead of the
9764         mono_arch_.. () functions.
9765         
9766 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
9767
9768         * mini-trampolines.c (mono_aot_get_trampoline_code): Removed, no longer used.
9769
9770         * aot-runtime.c aot-compiler.c: AOT the generic trampolines in aot-only mode.
9771
9772         * mini.c (mini_get_imt_trampoline): Call mono_create_specific_trampoline ().
9773         (mini_get_vtable_trampoline): Ditto.
9774
9775         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Create relocatable
9776         code in the AOT case by returning the code size and a list of relocations to
9777         the caller.
9778
9779         * mini-trampolines.c (mono_create_specific_trampoline): New helper function.
9780
9781 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
9782
9783         * mini-amd64.c:  On Winx64 the calling convention always requires the caller to 
9784           clean the stack.
9785
9786         Contributed under MIT/X11 license.
9787
9788 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
9789
9790         * aot-compiler.c (emit_exception_debug_info): Serialize the debug info first
9791         so the buffer size can be computed correctly. Fixes #404735.
9792
9793         * debug-mini.c (mono_debug_serialize_debug_info): Lookup the debug info
9794         normally as cfg->debug_info is already freed.
9795
9796 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
9797
9798         * mini-amd64.c: For calls returning vtypes in registers, don't store
9799         the return address on the stack, instead allocate a separate local for
9800         it. Fixes #404729.
9801
9802 2008-07-05  Mark Probst  <mark.probst@gmail.com>
9803
9804         * mini-trampolines.c, mini.h: Add an argument to
9805         mono_create_jit_trampoline_in_domain() for turning off the adding
9806         of the sync wrapper.
9807
9808         * mini.c: Use the JIT trampoline without sync instead of
9809         ldftn_nosync in static RGCTX invoke wrappers so that the call can
9810         be patched.
9811
9812 2008-07-04  Mark Probst  <mark.probst@gmail.com>
9813
9814         * driver.c: Turn on GSHARED optimization by default.
9815
9816 2008-07-04  Zoltan Varga  <vargaz@gmail.com>
9817
9818         * mini-trampolines.c mini.c mini.h tramp-<ARCH>.c: Rename MONO_TRAMPOLINE_GENERIC
9819         to MONO_TRAMPOLINE_JIT since it better reflects what it does.
9820
9821         * mini-trampolines.c (mono_get_aot_trampoline_code): New internal function to
9822         create a variant of the generic trampoline code callable from AOTed trampolines.
9823
9824         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add support for generic
9825         trampoline code callable from AOTed trampolines.
9826
9827         * aot-compiler.c aot-runtime.c: Add support for AOTing trampolines.
9828
9829 2008-07-04  Mark Probst  <mark.probst@gmail.com>
9830
9831         * inssel.brg, mini-ops.h: New opcode for doing CHECK_THIS in a
9832         pass-through manner.
9833
9834         * mini.c: Generic method sharing.  Pass MRGCTX to generic methods
9835         and don't fail sharing for them anymore.
9836
9837         * mini-exceptions.c: Handle exceptions in shared generic methods.
9838
9839         * generic-sharing.c: When checking the context of a generic
9840         method, also check its class's context.  Don't treat wrappers as
9841         sharable.
9842
9843         * mini-trampolines.c: Some code factored out to
9844         metadata/generic-sharing.c.  Handle the MRGCTX case.
9845
9846         * jit-icalls.c, jit-icalls.h: ldvirtfn icall for generic sharing -
9847         we must deal with the method being of another instantiation of the
9848         class.  Add static rgctx invoke wrappers to generic methods.
9849
9850 2008-07-04  Mark Probst  <mark.probst@gmail.com>
9851
9852         * mini.c: Provide all jit infos of generic shared methods with a
9853         generic jit info.
9854
9855         * mini-exceptions.c: Handle the new situation that a generic info
9856         might be available, but not info about the this/vtable/mrgctx
9857         variable.
9858
9859 2008-07-03  Mark Probst  <mark.probst@gmail.com>
9860
9861         * mini.c: Don't accept ldftn and ldvirtftn with uninstantiated
9862         generic methods.
9863
9864 2008-07-03  Zoltan Varga  <vargaz@gmail.com>
9865
9866         * dominators.c (check_dominance_frontier): Fix a warning.
9867
9868         * mini.h: Add some missing prototypes.
9869
9870         * ssa.c local-propagation.c debug-debuger.c: Fix warnings.
9871
9872         * driver.c (mono_jit_init_version): Correct the comments since the first
9873         argument should be the name of the root domain, not a filename.
9874
9875         * aot-runtime.c (make_writable): Error out if this is called while running
9876         with --aot-only.
9877         (load_aot_module): Ditto.
9878
9879         * aot-compiler.c: Really fix the computation of method indexes.
9880
9881         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Remove the previous 
9882         optimizations as this is no longer called frequently.
9883
9884         * mini-trampolines.c (mono_create_delegate_trampoline): Precompute the invoke
9885         method and the invoke impl code and pass it to the delegate trampoline instead of
9886         just the delegate class.
9887
9888 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
9889
9890         * aot-compiler.c: Fixup the computation of method indexes.
9891         (add_wrappers): Create the base methods of the runtime invoke wrappers using
9892         the method builder infrastructure.
9893
9894         * aot-runtime.c (decode_exception_debug_info): Don't crash if the method
9895         has no header.
9896
9897         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): In aot-only
9898         mode, load the method right away instead of creating a trampoline.
9899
9900         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Eliminate locking.
9901
9902         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Eliminate locking, speed up
9903         some checks a bit.
9904
9905 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
9906
9907         * aot-runtime.c (decode_patch_info): Don't create trampolines in aot_only mode.
9908         (mono_aot_load_method): Use method_index instead of method->token.
9909
9910         * mini.c (mono_jit_compile_method_inner): Move the aot_only check down, so it
9911         can handle icalls etc. properly.
9912
9913         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
9914
9915         * aot-compiler.c aot-runtime.c: Allow AOTing many wrapper types.
9916
9917         * mini.c (mono_resolve_patch_target): Handle JIT_ICALL_ADDR.
9918         (mono_codegen): Convert calls made by JIT icall wrappers to the icalls into
9919         JIT_ICALL_ADDR patch type.
9920
9921         * patch-info.h: Add JIT_ICALL_ADDR patch type.
9922
9923         * mini.c (mono_method_to_ir): Allow AOTing methods which access the interruption
9924         request flag.
9925         (mono_resolve_patch_target): Handle INTERRUPTION_REQUEST_FLAG.
9926
9927         * patch-info.h: Add INTERRUPTION_REQUEST_FLAG.
9928
9929 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
9930
9931         * mini.c: Use domain->jit_code_hash_lock for controlling access to
9932         domain->jit_code_hash.
9933
9934 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
9935
9936         * mini.c (mini_parse_debug_options): Add 'dont-free-domains' option.
9937
9938 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
9939
9940         * mini-trampolines.c (mono_delegate_trampoline): Don't pass a gsctx to
9941         get_this_arg_from_call, let it compute it when needed.
9942
9943         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'code' argument, compute
9944         gsctx from code only when needed.
9945
9946         * mini-trampolines.c (get_generic_context): Rename this to 
9947         mono_get_generic_context_from_code (), and move it to generic-sharing.c, where
9948         it can be called by the arch backends.
9949
9950         * mini-exceptions.c (mono_print_thread_dump): Allow the argument to be NULL.
9951
9952 2008-06-26  Zoltan Varga  <vargaz@gmail.com>
9953
9954         * driver.c (mono_main): Add experimental --aot-only command line option.
9955
9956         * mini.c: Error out when creating trampolines or JIT compiling if --aot-only is
9957         set.
9958
9959 2008-06-26  Kornel Pal  <kornelpal@gmail.com>
9960
9961         * driver.c (DllMain): Remove mono_module_handle.
9962
9963         Contributed under MIT/X11 license.
9964
9965 2008-06-25  Zoltan Varga  <vargaz@gmail.com>
9966
9967         * aot-compiler.c: Add not-yet-usable 'full' option. Add some infrastructure code
9968         for emitting methods which are not in the source assembly. Detect and report
9969         failure of assembling+linking.
9970         
9971         * aot-compiler.c (emit_klass_info): Call mono_class_setup_vtable ().
9972
9973         * aot-compiler.c: Move the contents of the has_glot_slots array to MonoCompile.
9974
9975 2008-06-24  Rodrigo Kumpera  <rkumpera@novell.com>
9976
9977         * mini.c: Check if stats is enabled so we don't allocate memory when not needed.
9978
9979 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
9980
9981         * mini.h: Remove some obsolete prototypes.
9982
9983         * mini.c: Avoid storing MonoMethod pointers in the JIT stats, store their string format instead.
9984
9985 2008-06-24  Mark Probst  <mark.probst@gmail.com>
9986
9987         * mini.c (get_object_generic_inst): Variable-sized arrays are not
9988         supported by Visual Studio, so use alloca().
9989
9990 2008-06-23  Zoltan Varga  <vargaz@gmail.com>
9991
9992         * mini-ia64.c (add_valuetype): Increase *gr too when passing a HFA to be in sync with the ABi.
9993         Fixes #402585.
9994
9995 2008-06-23  Mark Probst  <mark.probst@gmail.com>
9996
9997         * mini.c: Fail sharing of a generic method if it contains an open
9998         catch clause (because we don't pass MRGCTXs yet).
9999
10000 2008-06-23  Mark Probst  <mark.probst@gmail.com>
10001
10002         * mini.c: When compiling a method with generic sharing, insert the
10003         method instantiated with an all-Object generic context into the
10004         jit info table, instead of the context of the first instantiation
10005         of the method we happen to compile.
10006
10007 2008-06-18  Martin Baulig  <martin@ximian.com>
10008
10009         * debug-debugger.h (MonoDebuggerInfo): Replaced `version' with
10010         `major_version' and `minor_version'.
10011
10012 2008-06-17  Mark Probst  <mark.probst@gmail.com>
10013
10014         * generic-sharing.c, mini.c, mini.h, aot-runtime.c:
10015         mono_method_is_generic_sharable_impl() takes an additional
10016         argument specifying whether to treat type variables as reference
10017         types.
10018
10019 2008-06-17  Mark Probst  <mark.probst@gmail.com>
10020
10021         * mini.h: Removed obsolete prototypes.
10022
10023 2008-06-17  Mark Probst  <mark.probst@gmail.com>
10024
10025         * mini.c: Don't fail generic sharing for initobj and sizeof - we
10026         already handle them.
10027
10028 2008-06-17  Mark Probst  <mark.probst@gmail.com>
10029
10030         * mini.h, mini-trampolines.c, tramp-alpha.c, tramp-amd64.c,
10031         tramp-arm.c, tramp-hppa.c, tramp-ia64.c, tramp-mips.c,
10032         tramp-ppc.c, tramp-s390.c, tramp-s390x.c, tramp-sparc.c,
10033         tramp-x86.c: Added a MonoGenericContext* argument to
10034         mono_arch_get_unbox_trampoline() so that it can call other
10035         functions which require it.
10036
10037 2008-06-17  Mark Probst  <mark.probst@gmail.com>
10038
10039         * mini.h, mini-trampolines.c, mini-amd64.c, mini-x86.c,
10040         mini-alpha.c, mini-arm.c, mini-ia64.c, mini-ppc.c:
10041         mono_arch_get_this_arg_from_call() takes a
10042         MonoGenericSharingContext* as well.
10043
10044 2008-06-17  Mark Probst  <mark.probst@gmail.com>
10045
10046         * mini.c: Factor out code for emitting unbox into emit_unbox() and
10047         implement generic sharing of unbox.
10048
10049 2008-06-17  Mark Probst  <mark.probst@gmail.com>
10050
10051         * mini.c: Don't compute the vtable to determine whether a field is
10052         special static, because it might not work for open types.
10053
10054 2008-06-17  Mark Probst  <mark.probst@gmail.com>
10055
10056         * mini.c: Removed the unused token_type and token_source arguments
10057         from get_runtime_generic_context_ptr().
10058
10059 2008-06-17  Marek Habersack  <mhabersack@novell.com>
10060
10061         * mini.c (ADD_BINOP): fix the build
10062
10063 2008-06-16  Zoltan Varga  <vargaz@gmail.com>
10064
10065         * mini.c (ADD_BINOP): When operating on a native int and an int32, insert
10066         a widening op.
10067
10068 2008-06-16  Mark Probst  <mark.probst@gmail.com>
10069
10070         * mini.h: Removed class relations enum that's not used anymore.
10071
10072 2008-06-16  Mark Probst  <mark.probst@gmail.com>
10073
10074         * tramp-x86.c, tramp-amd64.c: Slot access code for MRGCTXs.
10075
10076         * mini-trampolines.c: Distinguish between RGCTXs and MRGCTXs in
10077         the lazy fetch trampoline access code.
10078
10079 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
10080
10081         * mini-codegen.c (mono_local_regalloc): Add some micro optimizations.
10082
10083 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
10084
10085         * mini.c: Fix some soft-float bugs. Fixes #378735 and #398348.
10086
10087         * mini.h (MONO_INST_LIST_ENTRY): Fix warnings on arm.
10088
10089         * mini.c (mono_method_to_ir): Check call signature for NEWOBJ as well.
10090
10091 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
10092
10093         * mini-x86.c inssel-x86.brg cpu-x86.md: Implement unsigned min/max
10094         intrinsics.
10095
10096         * mini-ops.h: Add MIN/MAX_UN opcodes.
10097
10098         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Implement unsigned min/max
10099         intrinsics.
10100
10101         * basic-math.cs: Add more min/max tests.
10102
10103         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
10104
10105 2008-06-13  Mark Probst  <mark.probst@gmail.com>
10106
10107         * mini.c: Small fix in the prologue of emit_castclass.
10108
10109 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
10110
10111         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
10112
10113         * mini.c (mini_get_inst_for_method): Remove the Min/Max intrinsics, they
10114         do not work even for unsigned types. Fixes #400014.
10115
10116         * basic-math.cs: Add regression tests for unsigned Min/Max.
10117
10118 2008-06-13  Mark Probst  <mark.probst@gmail.com>
10119
10120         * mini.c: Added additional context_used argument to several
10121         functions, which will be needed for sharing generic methods.  Use
10122         GET_RGCTX macro wherever appropriate.  Declare only one
10123         context_used in mono_method_to_ir().
10124
10125 2008-06-13  Mark Probst  <mark.probst@gmail.com>
10126
10127         * mini.c, generic-sharing.c: Removed generic class relations.
10128
10129         * mini.c, tramp-amd64.c, tramp-x86.c: Additional arguments to
10130         functions due to MRGCTX changes.
10131
10132 2008-06-13  Mark Probst  <mark.probst@gmail.com>
10133
10134         * inssel.brg, inssel-long.brg, inssel-long32.brg, mini-ops.h,
10135         graph.c, local-propagation.c, aliasing.c: New opcodes for calls
10136         with calculated IMT.
10137
10138         * mini.c: Generic sharing of calls via generic interfaces.
10139
10140         * jit-icalls.c, jit-icalls.h: Helper function for compiling a
10141         generic method with non-constant MonoGenericContext*.  Instead,
10142         the context is taken out of the method itself.
10143
10144 2008-06-13  Mark Probst  <mark.probst@gmail.com>
10145
10146         * mini.c: Generic sharing of ldvirtftn.
10147
10148 2008-06-13  Mark Probst  <mark.probst@gmail.com>
10149
10150         * mini.c: Generic sharing of ldftn.
10151
10152 2008-06-13  Mark Probst  <mark.probst@gmail.com>
10153
10154         * mini.c: Do pass VTable/RGCTX argument to static generic methods.
10155
10156 2008-06-13  Mark Probst  <mark.probst@gmail.com>
10157
10158         * mini.c: Generic sharing of the special case of ldtoken followed
10159         by a call to GetTypeFromHandle.
10160
10161 2008-06-13  Mark Probst  <mark.probst@gmail.com>
10162
10163         * mini.c: Generic sharing of box for nullable types.
10164
10165 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
10166
10167         * mini-s390x.c (add_stackParm): Fix computation of offsets when arguments
10168         are passed on the stack. Fixes #324807.
10169
10170 2008-06-12  Bill Holmes  <billholmes54@gmail.com>
10171
10172         * mini-amd64.c:add_valuetype: Adding Winx64 code to fill the ArgInfo
10173         for the ArgValuetypeAddrInIReg case.
10174
10175         * mini-amd64.c:mono_arch_allocate_vars:  Adding a case for 
10176         ArgValuetypeAddrInIReg to avoid asserts.  Code needs to be added here.
10177
10178         * mini-amd64.c: mono_arch_call_opcode:  Adding Winx64 code for an ArgInfo of 
10179         type ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
10180         local variable and pass the local variable by reference to the called method.
10181           
10182         * mini-amd64.c: mono_arch_emit_prolog:  Adjust the stack for calls to
10183         mono_jit_thread_attach and mono_get_lmf_addr for Winx64.
10184
10185         Contributed under MIT/X11 license.
10186
10187 2008-06-10  Rodrigo Kumpera  <rkumpera@novell.com>
10188
10189         * debug-mini.c (mono_debug_free_method_jit_info): Moved to metadata/mono-debug.c.
10190
10191         * debug-mini.c (mono_debug_print_vars): Release memory after printing
10192         everything.
10193
10194 2008-06-10  Martin Baulig  <martin@ximian.com>
10195
10196         * debug-mini.c
10197         (mono_debug_close_method): Check whether `cfg->epilogue_begin != NULL'.
10198
10199 2008-06-09  Kornel Pal  <kornelpal@gmail.com>
10200
10201         * main.c: Add and set argv [argc] to NULL to match C specification that fixes
10202         possible error when no arguments are passed.
10203
10204         Contributed under MIT/X11 license.
10205
10206 2008-06-09  Rodrigo Kumpera  <rkumpera@novell.com>
10207
10208         * mini-exceptions.c (ves_icall_get_trace): Skip source locations
10209         where the file name is NULL.
10210
10211 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
10212
10213         * mini.c: Fix s390 build.
10214
10215 2008-06-08  Zoltan Varga  <vargaz@gmail.com>
10216
10217         * trace.c (mono_trace_parse_options): Fix warnings.
10218
10219         * mini-amd64.c: Revert most of the last patch for now as it breaks the build.
10220
10221 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
10222
10223         * mini.c (remove_block_if_useless): Avoid printing the method name.
10224         
10225         * mini.c: Remove needless setting of ins->cil_code which is now done by 
10226         MONO_INST_NEW.
10227
10228         * mini-amd64.c: Add some code to avoid saving callee saved registers in the
10229         LMF. Not yet used.
10230
10231         * tramp-amd64.c (mono_arch_patch_callsite): Tell valgrind to discard the
10232         translated code after it has been patched.
10233
10234 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
10235
10236         * mini-amd64.c (emit_call_body): Align the call displacement to 4 bytes to
10237         avoid problems during code patching on SMP systems.
10238         (emit_call): Avoid adding a patch info which is already added by 
10239         emit_call_body.
10240         (mono_arch_emit_exceptions): Ditto.
10241
10242 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
10243
10244         * tramp-*.c (mono_arch_get_unbox_trampoline): No need to check for ret->byref,
10245         MONO_TYPE_ISSTRUCT already checks for it.
10246
10247 2008-06-05  Bill Holmes  <billholmes54@gmail.com>
10248
10249         * mini-amd64.c:merge_argument_class_from_type: When marshaling 
10250           structs with floats on Winx64 the float registers are not used.  
10251           The integer registers are always used..
10252         * mini-amd64.c:add_valuetype:  When marshaling structs on Winx64 
10253           only one register will be used and only if the size of the struct 
10254           is 1,2,4, or 8 bytes.
10255
10256         * tramp-amd64.c :  Adjusting size used for mono_global_codeman_reserve
10257           to work for Winx64.
10258
10259         Contributed under MIT/X11 license.
10260
10261 2008-06-05  Martin Baulig  <martin@ximian.com>
10262
10263         * debug-debugger.c (debugger_lookup_class): Also call
10264         mono_class_setup_methods() here; we're only called from RTI.
10265
10266 2008-06-05  Andreas Farber  <andreas.faerber@web.de>
10267
10268         * mini.c (mini_init): Add DTrace probes ves-init-{begin,end}.
10269         (mini_method_compile) Add DTrace probes method-compile-{begin,end}.
10270         * Makefile.am (libmono_la_LIBADD,libmono_static_la_LIBADD,mono_LDADD):
10271         Post-process object files and add dtrace-generated object, if necessary.
10272
10273         Contributed under MIT/X11 license.
10274
10275 2008-06-04  Mark Probst  <mark.probst@gmail.com>
10276
10277         * inssel.brg, mini-ops.h: Added opcode for unboxcast with computed
10278         element class.
10279
10280         * mini.c: Generic sharing for unbox.any and castclass.
10281
10282 2008-06-04  Mark Probst  <mark.probst@gmail.com>
10283
10284         * mini.c: Ignore tailcall prefix in shared generic code and when
10285         doing calls which require a vtable/rgctx argument.
10286
10287 2008-06-04  Mark Probst  <mark.probst@gmail.com>
10288
10289         * mini.c: Don't free the JIT info.
10290
10291         * driver.c: Changes in the JIT info table testing code.
10292
10293 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
10294
10295         * tramp-arm.c (mono_arch_create_trampoline_code): Check for thread 
10296         interruption. Fix some warnings.
10297
10298         * tramp-*.c (mono_arch_create_trampoline_code): Call the _force_ variant of
10299         interruption_checkpoint.
10300
10301 Tue Jun 3 13:07:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
10302
10303         * jit.h, mini.h, trace.c, driver.c: introduce an API to enable tracing
10304         from embedding applications.
10305
10306 2008-06-02  William Holmes  <billholmes54@gmail.com>
10307
10308         * mini-amd64.c :  Correcting some of the issues for Winx64 dealing with
10309           reserving 32 bytes on the stack when making calls. 
10310
10311         Contributed under MIT/X11 license.
10312
10313 2008-06-01  Zoltan Varga  <vargaz@gmail.com>
10314
10315         * mini-arm.c (mono_arch_output_basic_block): Merge some small fixes from
10316         the linear IL branch.
10317
10318         * driver.c: Print out more information for --version on arm.
10319
10320 2008-05-30  Zoltan Varga  <vargaz@gmail.com>
10321
10322         * mini-amd64.c (mono_arch_emit_prolog): Increase max_offset when processing
10323         bb_exit instead, since out of line bblocks might not actually be emitted
10324         out-of-line.
10325         
10326         * mini-amd64.c (mono_arch_emit_prolog): Increase bb->max_offset by the
10327         maximum epilog size for out of line bblocks if tracing is enabled.
10328
10329         * iltests.il.in: Merge tests/long-shift.regalloc.il into this file.
10330
10331 2008-05-28  Rodrigo Kumpera  <rkumpera@novell.com>
10332
10333         * arrays.cs: Regression tests for allocating arrays with negative sizes.
10334
10335 2008-05-28  Zoltan Varga  <vargaz@gmail.com>
10336
10337         * mini-x86.h mini-x86.c inssel-x86.brg cpu-x86.md: Add support for
10338         CAS instrinsics. Optimize the implementation of the ATOMIC_EXCHANGE 
10339         opcodes.
10340
10341 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
10342
10343         * mini.c (mini_get_inst_for_method): Add support for CAS instrinsics when
10344         the 'value' to store is a constant.
10345
10346         * mini-ops.h: Add OP_ATOMIC_CAS_IMM opcodes.
10347
10348         * mini-amd64.c (mono_arch_output_basic_block): Optimize the the implementation
10349         of ATOMIC_EXCHANGE opcodes, add support for the CAS opcodes.
10350
10351 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
10352
10353         * mini.c generic-sharing.c jit-icalls.c aot-compiler.c: Use accessor functions
10354         for accessing method->generic_container.
10355
10356 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
10357
10358         * mini.c (mono_method_check_inlining): Avoid creating vtables if possible.
10359         
10360         * mini.c (SIG_HANDLER_SIGNATURE): Fix sparc build too.
10361
10362         * mini.c (SIG_HANDLER_SIGNATURE): Fix IA64 build.
10363
10364         * mini.c (mono_jit_compile_method_inner): Avoid a crash if mono_class_vtable ()
10365         fails.
10366
10367 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
10368
10369         * driver.c (mono_main): Set mono_setup_vtable_in_class_init to FALSE.
10370
10371         * mini.c: Handle the case when mono_class_vtable () fails.
10372
10373 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
10374         * mini.c (sigprof_signal_handler): Support call chains (backtrace) in
10375         the stat profiler.
10376
10377 2008-05-22  Mark Probst  <mark.probst@gmail.com>
10378
10379         * mini.c, jit-icalls.c, jit-icalls.h: Make generic sharing work
10380         together with domain sharing.
10381
10382 2008-05-22  Mark Probst  <mark.probst@gmail.com>
10383
10384         * mini.c: Treat callvirts to final methods like non-virtual calls
10385         when doing generic sharing, i.e. look them up in the runtime
10386         generic context.
10387
10388 2008-05-22  Mark Probst  <mark.probst@gmail.com>
10389
10390         * inssel.brg, mini-ops.h: Added opcodes for mkrefany and refanyval
10391         with computed types (for generic sharing).
10392
10393         * mini.c: Generic sharing for mkrefany and refanyval.
10394
10395 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
10396
10397         * inssel.brg (mini_emit_virtual_call): Avoid constructing a generic vtable if
10398         possible.
10399
10400         * mini-trampolines.c (mono_magic_trampoline): Avoid calling setup_methods () in
10401         the generic sharing code.
10402         
10403         * mini-trampolines.c (mono_magic_trampoline): Call mono_class_setup_methods ()
10404         when needed.
10405
10406 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
10407
10408         * mini.h: Remove the declaration of mono_aot_init_vtable ().
10409
10410 2008-05-21  C.J. Adams-collier <cjac@colliertech.org>
10411
10412         * driver.c: updated copyright date
10413
10414 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
10415
10416         * aot-runtime.c mini.c: Remove the AOT init_vtable stuff as it is no longer
10417         needed.
10418
10419 2008-05-19  Martin Baulig  <martin@ximian.com>
10420
10421         * debug-debugger.h (MonoDebuggerInfo): Add `using_mono_debugger'
10422         pointing to the new `_mono_debug_using_mono_debugger' variable.
10423
10424         * driver.c
10425         (mono_main): Check mono_debug_using_mono_debugger() rather than
10426         the `MONO_INSIDE_MDB' environment variable to check whether we're
10427         inside the debugger.
10428
10429 2008-05-19  Zoltan Varga  <vargaz@gmail.com>
10430
10431         * mini.c (mini_method_compile): Use cfg->args [0] for accessing the this
10432         argument.
10433
10434 2008-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
10435
10436         * declsec.h: Move MONO_SECMAN_FLAG to metadata/metadata-internals.h.
10437
10438         * mini.c: Added mini_assembly_can_skip_verification. This
10439         function checks if the assembly requested to skip verification. 
10440         Fixes part of #387274.
10441
10442 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
10443
10444         * mini.c (mini_get_method): Disable the check for open generic classes when
10445         using generic sharing.
10446
10447         * generics.cs: Add a test for #387034.
10448
10449         * mini.c (mini_get_method): Check whenever the method class is an open generic
10450         type, and return NULL in that case, causing a verification error. Fixes
10451         #384123.
10452
10453 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
10454
10455         * driver.c (mono_main): Revert r102623. The right
10456         thing to do is to enable the verifier under verifiable
10457         unless a --security flag was passed.
10458
10459         We need this non-trivial behavior for --verify-all otherwise
10460         mcs-compileall won't be able to use it. As it needs everything to
10461         be verified under validil.
10462
10463 2008-05-06  Martin Baulig  <martin@ximian.com>
10464
10465         Fix #383749.
10466
10467         * debug-mini.c (mono_debugger_thread_created): Add proper locking.
10468         (mono_debugger_thread_cleanup): Likewise.
10469         (mono_debugger_extended_notification): Likewise.
10470
10471 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
10472
10473         * mini.c (mono_method_to_ir): Verify visibility of call related opcodes
10474         against both inflated and non-inflated methods. We need to check against the
10475         generic definition for cases where the instantiated method is not visible.
10476         We need to check against the inflated types for cases where the instantiation
10477         changes any super type. This fixes #382986.
10478
10479         Note that this doesn't need to be applied to other parts of mono_method_to_ir
10480         that check for visibiliy as generic params only appears as the type subject
10481         of tokens on call opcodes. Field manipulation and ldftn must always
10482         target an exact type.
10483
10484 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
10485
10486         * driver.c (mono_main): Using --verify-all enables the verifier under validil mode
10487         if no related --security flag is passed.
10488
10489 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
10490
10491         * mini-arch.h: Prepare support for ppc64.
10492
10493         Contributed under MIT/X11 license.
10494
10495 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
10496
10497         * aot-runtime.c: Prepare support for ppc64.
10498
10499         Contributed under MIT/X11 license.
10500
10501 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
10502
10503         * mini-ops.h: Prepare support for ppc64.
10504
10505         Contributed under MIT/X11 license.
10506
10507 2008-05-04  Andreas Farber  <andreas.faerber@web.de>
10508
10509         * helpers.c: Add support for OSX/ppc64 and Linux/ppc64 (dis)assemblers.
10510
10511         Contributed under MIT/X11 license.
10512
10513 2008-05-03  Zoltan Varga  <vargaz@gmail.com>
10514
10515         * aot-runtime.c (load_aot_module): Avoid trying to load aot code for dynamic
10516         assemblies, since aot_name is not a full path, causing us to load MS.NET 
10517         assemblies on windows.
10518
10519 ?2008-04-28  Kornel Pal  <kornelpal@gmail.com>
10520
10521         * mini.c (mono_jit_compile_method_inner): Use g_warning instead of g_error
10522         for unsupported METHOD_IMPL_ATTRIBUTE_NATIVE.
10523         * main.c: Use UTF-8 encoded command line instead of Windows default code
10524         page on Windows to support Unicode.
10525         * driver.c (DllMain): New function for mixed-mode assembly support.
10526         * Makefile.am: Add -Wl,--kill-at to libmono_la_LDFLAGS on Windows to
10527         export __stdcall functions without decoration.
10528
10529         Contributed under MIT/X11 license.
10530
10531 2008-04-28  Mark Probst  <mark.probst@gmail.com>
10532
10533         * tramp-amd64.c, mini-amd64.c: Preserve R11 in the trampoline by
10534         saving it very early.
10535
10536 2008-04-28  Mark Probst  <mark.probst@gmail.com>
10537
10538         * mini.h, mini.c: Lots of code for accessing the old RGCTX
10539         deleted.  The only way to access the new RGCTX is via the
10540         trampline.
10541
10542         * mini.c, mini-amd64, mini-x86.c, mini-exceptions.c: Pass the
10543         vtable instead of the RGCTX to static methods.
10544
10545         * mini-tramplines.c, tramp-amd64.c, tramp-x86.c: Trampoline for
10546         accessing the new RGCTX.
10547
10548         * generic-sharing.c: There is no separation between self, type
10549         arguments and other types in the RGCTX anymore.
10550
10551 2008-04-25  Jonathan Chambers <joncham@gmail.com>
10552
10553         * mini-amd64.c (add_general): Remove previous stack adjustment.
10554         (mono_arch_call_opcode): Remove OP_OUTARG_MEMBASE and instead simply
10555         adjust stack pointer after pushing args. Adjust ARGS_OFFSET to account
10556         for 32 bytes of stack space reserved for all calls.
10557         
10558         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Remove.
10559         (OP_AMD64_OUTARG_ALIGN_STACK): Take argument to specify size of stack 
10560         adjustment.
10561         
10562         Code contributed under MIT/X11 license.
10563
10564 2008-04-23  Rodrigo Kumpera  <rkumpera@novell.com>
10565
10566         * mini.c (mini_method_verify): Only verify non-inflated methods, check
10567         against the root definition, peeling out method and type instantiations.
10568         Cache verify success results, code that fails verification is still
10569         checked multiple times.
10570
10571 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
10572
10573         * mini.c (mono_method_to_ir): Avoid inserting write barriers for stores of null.
10574
10575 2008-04-23  Jonathan Chambers <joncham@gmail.com>
10576
10577         * mini-amd64.c (add_general): Always increment stack on Win64.
10578         (mono_arch_call_opcode): Use OP_OUTARG_MEMBASE instead of OP_OUTARG
10579         on Win64.
10580         
10581         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Add OP_OUTARG_MEMBASE for 
10582         stack based argument handling on Win64.
10583         
10584         Code contributed under MIT/X11 license.
10585
10586 2008-04-23  Raja R Harinath  <harinath@hurrynot.org>
10587
10588         * Makefile.am (version.h): Add support for git-svn.
10589
10590 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
10591
10592         * mini-exceptions.c (mono_handle_native_sigsegv): Rework the gdb calling code
10593         so instead of calling g_spawn_command_line_sync, we do everything by hand, 
10594         avoiding allocations and libc functions which might deadlock.
10595         
10596         * mini-exceptions.c (mono_handle_native_sigsegv): Avoid calling gdb if the
10597         'no-gdb-backtrace' option is set.
10598
10599         * mini.c (mini_parse_debug_options): Parse 'no-gdb-backtrace' option.
10600
10601         * mini.h (MonoDebugOptions): Add 'no_gdb_backtrace' option.
10602
10603 2008-04-21  Martin Baulig  <martin@ximian.com>
10604
10605         * debug-debugger.h (MonoDebuggerInfo): Removed `attach', `detach'
10606         and `get_lmf_addr'; `notification_address' is no longer a pointer.
10607
10608 2008-04-21  Martin Baulig  <martin@ximian.com>
10609
10610         * debug-debugger.h (MonoDebuggerInfo): Added `thread_vtable_ptr',
10611         `thread_vtable', `event_handler_ptr' and `event_handler'.
10612
10613 2008-04-21  Martin Baulig  <martin@ximian.com>
10614
10615         * debug-debugger.h (MonoDebuggerInfo): Added `init_code_buffer';
10616         allows delayed initialization of the `executable_code_buffer' when
10617         attaching.
10618
10619 2008-04-21  Martin Baulig  <martin@ximian.com>
10620
10621         * mini.h (mono_debugger_create_notification_function): Removed.
10622         * tramp-*.c (mono_debugger_create_notification_function): Removed.
10623
10624         * mdb-debug-info64.s
10625         (MONO_DEBUGGER__notification_function): Added this in the .text section.
10626
10627         * mdb-debug-info32.s
10628         (MONO_DEBUGGER__notification_function): Added this in the .text section.
10629
10630         * Makefile.am: Fix the mdb-debug-info*.s logic; the debugger
10631         currently only works on x86 and x86_64, so don't create it on ppc.
10632
10633 2008-04-21  Martin Baulig  <martin@ximian.com>
10634
10635         * mini.h (MonoDebugOptions): Added `mdb_optimizations'.
10636
10637         * mini.c
10638         (mini_method_compile): In the fp elimination check, check
10639         `debug_options.mdb_optimizations' in addition to
10640         mono_debug_using_mono_debugger().       
10641
10642         * driver.c (mono_main): Added `--debug=mdb-optimizations' option to
10643         disable some JIT optimizations which are only disabled when
10644         running inside the debugger.
10645         Added `--help-debug' option to describe the debugging options.
10646         (parse_debug_options): New static function to parse the `--debug'
10647         options, so we can easily add more stuff in future.
10648
10649 2008-04-20  Zoltan Varga  <vargaz@gmail.com>
10650
10651         * mini.c (set_exception_type_from_invalid_il): Avoid reading invalid memory when
10652         the method has no body.
10653
10654 2008-04-19  Jonathan Chambers <joncham@gmail.com>
10655
10656         * mini-amd64.c (cpuid): Implement with MSVC intrinsic as inline
10657         assembly is not allowed in MSVC 64-bit compiler. 
10658         (mono_arch_cpu_init): Don't set floating point precision on MSVC build
10659         as we get floating point exceptions everywhere.
10660         
10661         * exceptions-amd64.c (get_throw_trampoline): Push empty args on stack to
10662         correctly align arguments for call to throw_exception.
10663         (prepare_for_guard_pages): Cast to guint64 instead of unsigned long.
10664         
10665         Code contributed under MIT/X11 license.
10666
10667 2008-04-19  Zoltan Varga  <vargaz@gmail.com>
10668
10669         * mini-amd64.c (amd64_patch): Make the check for (%rip) addressing more strict.
10670
10671 2008-04-17  Zoltan Varga  <vargaz@gmail.com>
10672
10673         * inssel.brg (OP_SWITCH): Use (gint64) instead of (long) to cast a large constant.
10674
10675         * mini-amd64.c (NEW_INS): Set cil_code.
10676
10677         * mini.c (mini_method_compile): Move the disabling of fp elimination to here
10678         from mini-amd64.c so all debugger related logic is in one place.
10679
10680         * mini.c: Set cfg->ip to NULL after passes which set it so instructions created
10681         later won't have a random ip assigned to them.
10682
10683 2008-04-16  Zoltan Varga  <vargaz@gmail.com>
10684
10685         * mini-trampolines.c (mono_create_jump_trampoline): Add an assert to check that
10686         the arch specific function initializes code_size.
10687         (mono_create_delegate_trampoline): Ditto.
10688
10689         * mini-mips.h mini-mips.c inssel-mips.brg inssel-long32-mips.brg cpu-mips.md
10690         tramp-mips.c: Resurrect MIPS port and also fix the issues on little-endian
10691         platforms.
10692
10693         * liveness.c (mono_analyze_liveness): Disable the initlocals optimization if 
10694         running under the debugger.
10695
10696         * linear-scan.c (mono_linear_scan): Avoid sharing registers if running under the
10697         debugger.
10698
10699         * mini.c (mini_method_compile): Set a few flags in cfg if running under the
10700         debugger. Also move the disabling of optimizations here from driver.c.
10701         (mono_allocate_stack_slots_full): Avoid sharing stack slots if running under the
10702         debugger.
10703
10704         * mini.h (MonoCompile): Add a few new flags.
10705
10706 2008-04-15  Zoltan Varga  <vargaz@gmail.com>
10707
10708         * mini.c (mono_method_to_ir): Set cfg->ip before processing an IL instruction
10709         so the cil_code field of created MonoInst's is properly set.
10710         (mini_select_instructions): Ditto.
10711
10712         * mini.h (MONO_INST_NEW): Initialize the cil_code field using cfg->ip.
10713         (MONO_INST_NEW_CALL): Ditto.
10714
10715         * mini.c inssel.brg inssel-x86.brg inssel-amd64.brg: Use MONO_INST_NEW ()
10716         in many places so the ins->cil_code field is properly initialized.
10717
10718         * mini.c (mono_bblock_add_inst): Call MONO_ADD_INS () so the logic is in one
10719         place.
10720
10721 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
10722
10723         * mini.c (mini_method_compile): Print a different message when compiling a 
10724         shared method.
10725         
10726         * mini.c (GENERIC_SHARING_FAILURE): Print a failure message when verbose_level
10727         > 1.
10728
10729 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
10730
10731         * mini-amd64.c (mono_arch_output_basic_block): Implement OP_ABS directly using
10732         SSE2 instructions.
10733
10734         * basic-math.cs: Fix warnings. Add a test for Math.Abs ().
10735         
10736 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
10737
10738         * mini.c (handle_stack_args): Make this return void since its return value was
10739         never used. Also set cfg->unverifiable for invalid IL instead of calling
10740         G_BREAKPOINT ().
10741
10742 2008-04-10  Mark Probst  <mark.probst@gmail.com>
10743
10744         * mini.c: Make sure "this" is live in catch clauses with type
10745         variables in shared generic code.
10746
10747 2008-04-08  Mark Probst  <mark.probst@gmail.com>
10748
10749         * mini.c: Replaced uses of MONO_TYPE_IS_REFERENCE with calls to
10750         generic_class_is_reference_type() to ensure the proper behaviour
10751         when sharing generic code and the type in question is a type
10752         argument.
10753
10754 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
10755
10756         * mini-exceptions.c: Applied patch from Mark Spruiell (mes@zeroc.com). Fix
10757         race conditions when printing thread dumps. Fixes #377738.
10758
10759 2008-04-08  Massimiliano Mantione  <massi@ximian.com>
10760         
10761         aliasing.c (update_aliasing_information_on_inst): Fixed a bug which
10762         shows up when both MonoInst arguments can cause aliasig.
10763         There is likely no way in the current JIT to trigger this problem, but
10764         it showed up in the development of generics sharing, when in a new
10765         opcode both args of an OP_GROUP can be aliases (addresses of a local).
10766         When the generics sharing code will be committed, its tests will be
10767         valid also for this bug.
10768
10769 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
10770
10771         * aot-runtime.c (decode_patch_info): Always transform PATCH_INFO_WRAPPER to
10772         PATCH_INFO_METHOD.
10773
10774         * mini.c (mono_resolve_patch_target): Fix a crash in the AOT case if method is
10775         NULL.
10776
10777 2008-04-07  Zoltan Varga  <vargaz@gmail.com>
10778
10779         * mini-exceptions.c (mono_handle_exception_internal): When --debug=casts is used,
10780         use a more detailed exception message for InvalidCastException.
10781
10782         * mini.h (MonoJitTlsData): Add 'class_cast_from' and 'class_cast_to' fields.
10783
10784         * driver.c (mono_main): Add --debug=casts option to turn on better 
10785         InvalidCastException message details.
10786
10787         * mini.c (mini_get_debug_options): New helper function to return the address of
10788         the debug_options variable.
10789
10790         * mini.c (mono_get_jit_tls_intrinsic): New helper function to create a load of
10791         the jit_tls TLS variable.
10792
10793         * mini.c (mono_jit_tls): New TLS variable.
10794
10795         * inssel.brg: Save the details of a cast to a TLS variable when the --debug=casts
10796         option is used.
10797
10798 2008-04-07  Rodrigo Kumpera  <rkumpera@novell.com>
10799
10800         * mini.h: Removed verifer related stuff. This code was moved to verify.c
10801
10802         * mini.c: Removed verifer related stuff, code moved to verify.c.
10803
10804         * driver.c: Using code from verify.c instead of mini.c.
10805
10806 2008-04-05  Zoltan Varga  <vargaz@gmail.com>
10807
10808         * mini.c (check_for_method_verify): Remove the mscorlib comment since it is no
10809         longer valid.
10810
10811 2008-04-04  Rodrigo Kumpera  <rkumpera@novell.com>
10812
10813         * mini.c (check_for_method_verify): Enabling verification of
10814         corlib if mono_verify_all is set. Bugs in the verifier preventing that
10815         have been fixed.
10816
10817 2008-04-04  Zoltan Varga  <vargaz@gmail.com>
10818
10819         * exceptions-amd64.c (throw_exception): Unify the win32/non-win32 cases, save
10820         caller saved registers as well.
10821         
10822         * exceptions-amd64.c (mono_arch_get_restore_context): Restore most caller
10823         saved registers as well.
10824
10825 2008-03-30  Zoltan Varga  <vargaz@gmail.com>
10826
10827         * mini-x86.c cpu-x86.md inssel-x86.brg: Add min/max intrinsics.
10828
10829         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of the non-SSE2 floating point
10830         code.
10831
10832 2008-03-27  Zoltan Varga  <vargaz@gmail.com>
10833
10834         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'gsctx' argument and pass it
10835         to get_call_info.
10836         (get_call_info): Take a gsctx argument instead of 'cfg'.
10837
10838 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
10839
10840         * mini.c (check_for_method_verify): Avoid verifying mscorlib methods even if
10841         mono_verify_all is set.
10842
10843         * driver.c (compile_all_methods_thread_main): Don't exit at the first error.
10844
10845         * mini.c mini.h: Remove the unused and incomplete stack merge verification code.
10846
10847 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
10848
10849         * driver.c (compile_all_methods_thread_main): Error out if compilation fails with
10850         an exception.
10851
10852         * driver.c mini.c mini.h: Add a --verify-all development option to test the
10853         verifier and the code generated by the compiler.
10854
10855 2008-03-25  Mark Probst  <mark.probst@gmail.com>
10856
10857         * mini.c: Generic sharing of the non-nullable case of the box
10858         instruction.
10859
10860 2008-03-24  Zoltan Varga  <vargaz@gmail.com>
10861
10862         * inssel.brg: Fix the build.
10863
10864         * iltests.il.in: Add a test for lconv.ovf.u8.un.
10865
10866 2008-03-24  Rodrigo Kumpera  <rkumpera@novell.com>
10867
10868         * mini.c (mono_method_to_ir): Implement readonly for ldelema and
10869         Array:Address. Fixes #372410.
10870
10871         * iltests.il.in: New tests for readonly prefix.
10872
10873 2008-03-23  Zoltan Varga  <vargaz@gmail.com>
10874
10875         * mini.h mini.c mini-trampolines.c: Move trampoline related code to 
10876         mini-trampolines.c.
10877
10878         * mini.h mini.c mini-exceptions.c: Move mini_init_exceptions () to 
10879         mini-exceptions.c.
10880
10881         * mini-amd64.c mini-s390.c (mono_arch_lowering_pass): Use mono_decompose_op_imm ().
10882         
10883         * mini.c (mono_decompose_op_imm): New helper function.
10884
10885         * mini-s390x.c (calculate_sizes): Rename this to get_call_info for consistency
10886         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
10887         return value.
10888
10889         * mini-s390x.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
10890         mono_arch_output_basic_block. Fix warnings.
10891
10892         * inssel-s390x.brg: Remove the unneccesary OP_LMUL_IMM rule to fix the s390x build
10893         for now.
10894
10895 2008-03-22  Zoltan Varga  <vargaz@gmail.com>
10896
10897         * mini-exceptions.c (ves_icall_get_frame_info): Remove the ia64/s390 workarounds
10898         since the extra frame is now detected automatically inside the loop.
10899
10900         * mini-s390.c (mono_arch_peephole_pass_2): Remove the arch independent peephole 
10901         opts which are now in mono_peephole_ins ().
10902         
10903         * mini-s390.c (mono_arch_output_basic_block): Fix OP_FCALL_MEMBASE.
10904
10905         * mini-exceptions.c (ves_icall_get_frame_info): Skip native-to-managed wrapper
10906         frames and skip duplicate managed-to-native frames. Fixes #367665.
10907
10908         * mini-x86.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
10909         opts which are now in mono_peephole_ins ().
10910         (mono_arch_peephole_pass_2): Ditto.
10911
10912         * mini-codegen.c (mono_peephole_ins): Fix a problem on 32 bit platforms.
10913
10914         * mini-codegen.c (mono_peephole_ins): New helper function containing the
10915         arch independent peephole optimizations.
10916
10917         * mini-amd64.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
10918         opts which are now in mono_peephole_ins ().
10919
10920         * mini-amd64.c (mono_arch_peephole_pass_2): Ditto.
10921         
10922         * mini-s390.c (mono_arch_output_basic_block): Fix build.
10923
10924         * tramp-s390.c (mono_arch_get_vcall_slot): Handle an additional instruction
10925         pattern.
10926
10927         * mini-s390.c (mono_arch_output_basic_block): Handle big offsets in the
10928         CALL_MEMBASE opcodes. Fix setting of the destination in the OP_LCONV_TO_OVF_I
10929         opcode. 
10930
10931 2008-03-21  Zoltan Varga  <vargaz@gmail.com>
10932
10933         * mini-s390.c (calculate_sizes): Rename this to get_call_info for consistency
10934         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
10935         return value.
10936
10937         * mini-s390.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
10938         mono_arch_output_basic_block. Fix warnings.
10939
10940 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
10941
10942         * inssel-long32.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
10943         conv.ovf.u.un.
10944
10945 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
10946
10947         * inssel-long.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
10948         conv.ovf.u.un.
10949
10950         * iltests.il: Add new tests.
10951
10952 2008-03-20  Kornel Pal  <kornelpal@gmail.com>
10953
10954         * mini.c: Removed Windows version macros.
10955
10956 2008-03-20  Mark Probst  <mark.probst@gmail.com>
10957
10958         * generic-sharing.c: Put reflection types in the extensible part
10959         of the runtime generic context.
10960
10961         * mini.c: Generic sharing of the GetTypeHandle special case of the
10962         ldtoken instruction.
10963
10964 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
10965
10966         * mini.h (MONO_BB_FOR_EACH_INS_SAFE): New helper macro.
10967
10968         * mini-<ARCH>.c: Use the new macro instead in the peephole/lowering passes.
10969         
10970         * mini.h (MONO_DEL_INS): Rename to MONO_DELETE_INS and Add a 'bb' argument for 
10971         consistency with the other version on the linear IR branch.
10972
10973         * mini-<ARCH>.c: Update callers of MONO_DEL_INS.
10974
10975         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i/conv.ovf.u.
10976
10977         * iltests.il.in: Add new tests.
10978
10979 2008-03-19  Zoltan Varga  <vargaz@gmail.com>
10980
10981         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i.un/conv.ovf.u.un.
10982
10983         * iltests.il.in: Add new tests.
10984
10985 2008-03-19  Mark Probst  <mark.probst@gmail.com>
10986
10987         * mini.c: Two variables with the same name were declared in
10988         nesting contexts and one wasn't initialized.  Fixed.
10989
10990 2008-03-19  Mark Probst  <mark.probst@gmail.com>
10991
10992         * mini.c: Generic sharing of the initobj instruction.
10993
10994 Tue Mar 18 20:18:02 CET 2008 Paolo Molaro <lupus@ximian.com>
10995
10996         * mini.c: make the test to optimize ldtoken from typeof() more
10997         precise.
10998
10999 2008-03-18  Mark Probst  <mark.probst@gmail.com>
11000
11001         * mini.c: Generic sharing of the initobj instruction for reference
11002         types.
11003
11004 Tue Mar 18 12:39:27 CET 2008 Paolo Molaro <lupus@ximian.com>
11005
11006         * mini.h, mini-amd64.c, mini-x86.c, tramp-amd64.c, tramp-x86.c: change
11007         the mono_breakpoint_clean_code() code to perform bound checks.
11008
11009 Tue Mar 18 11:50:14 CET 2008 Paolo Molaro <lupus@ximian.com>
11010
11011         * mini.h, mini-trampolines.c, tramp-*.c: change the signature of
11012         mono_arch_patch_callsite() to include the start of the managed method
11013         to be able to perform bound checks.
11014
11015 2008-03-17  Mark Probst  <mark.probst@gmail.com>
11016
11017         * mini.c: Generic sharing for the isinst instruction.
11018
11019 2008-03-17  Mark Probst  <mark.probst@gmail.com>
11020
11021         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
11022         inssel-long32-mips.brg: Added opcodes for doing indirect calls
11023         with the runtime generic context argument.
11024
11025         * mini.c: Share calls to several types of unsharable methods by
11026         putting the address of the method code in the runtime generic
11027         context and doing an indirect call.
11028
11029         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
11030         to switches.
11031
11032 2008-03-16  Mark Probst  <mark.probst@gmail.com>
11033
11034         * generic-sharing.c: Change due to a change in the runtime genric
11035         context API.
11036
11037 2008-03-15  Martin Baulig  <martin@ximian.com>
11038
11039         * tramp-x86.c
11040         (mono_arch_nullify_class_init_trampoline): Add call to
11041         mono_breakpoint_clean_code() to make things work when running
11042         inside the debugger.
11043
11044         * tramp-amd64.c
11045         (mono_arch_nullify_class_init_trampoline): Add call to
11046         mono_breakpoint_clean_code() to make things work when running
11047         inside the debugger.
11048
11049 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
11050
11051         * inssel-long.brg (reg): Fix 64 bit build.
11052
11053 2008-03-14  Mark Probst  <mark.probst@gmail.com>
11054
11055         * mini.c, mini.h: Share static generic code by passing it an
11056         implicit argument pointing to the runtime generic context.
11057
11058         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
11059         inssel-long32-mips.brg: New opcodes for calling shared static,
11060         which need to be passed the runtime generic context.
11061
11062         * mini-amd64.c, mini-x86.c: Save the runtime generic context
11063         argument on the stack in the prologue if needed.  New function for
11064         finding the runtime generic context argument from the registers
11065         saved by the trampoline.
11066
11067         * mini-amd64.h, mini-x86.h: Specify which register to use for the
11068         runtime generic context argument.
11069
11070         * tramp-amd64.c: Also restore the register used for the runtime
11071         generic context argument.
11072
11073         * mini-trampoline.c: Resolve shared static calls by consulting the
11074         runtime generic context via the new argument.
11075
11076         * generic-sharing.c: Add an argument to sharability-checking
11077         functions that specifies whether type variables should be treated
11078         as sharable type arguments.
11079
11080         * inssel-x86.brg: Removed a superfluous, buggy rule.
11081
11082         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
11083         to switches.
11084
11085 2008-03-14  Martin Baulig  <martin@ximian.com>
11086
11087         * debug-debugger.c (main_thread_handler): Call
11088         mono_runtime_run_main() without sending any notifications.
11089
11090         * debug-debugger.h (MonoDebuggerInfo): Added `get_method_signature.
11091
11092 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
11093
11094         * mini-trampolines.c (mono_magic_trampoline): Fix build on platforms without IMT.
11095
11096 2008-03-14  Mark Probst  <mark.probst@gmail.com>
11097
11098         * tramp-x86.c: Fixed register restore offsets in the trampoline
11099         code for ECX and EDX.
11100
11101 2008-03-12  Geoff Norton  <gnorton@novell.com>
11102
11103         * mini-arm.h: Add some #defines for locating sp, pc, r4 with
11104         different ucontext_t implementations.
11105         * exceptions-arm.c: Use the above defines to get exceptions working on 
11106         iPhone (based on a patch by Luke Howard lukeh@padl.com)
11107         * mini-arm.c: Implement iPhone icache support (based on a patch by
11108         Luke Howard lukeh@padl.com)
11109
11110 2008-03-12  Mark Probst  <mark.probst@gmail.com>
11111
11112         * mini.c: Enable generic sharing of calls to non-static
11113         non-interface non-generic non-value-type methods.
11114
11115         * mini-trampolines.c: Resolve calls from shared generic code.
11116
11117 2008-03-11  Zoltan Varga  <vargaz@gmail.com>
11118
11119         * Makefile.am il2tests.il iltests.il.in: Delete il2tests, merge it into iltests.
11120
11121         * tramp-amd64.c (mono_arch_create_trampoline_code): Correctly save RBP as well.
11122
11123 Mon Mar 10 11:59:34 CET 2008 Paolo Molaro <lupus@ximian.com>
11124
11125         * mini.c: some fixes for the AOT compiler.
11126
11127 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
11128
11129         * cpu-amd64.md: Add clob:1 to some float opcodes.
11130
11131 2008-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
11132
11133         * mini.h: Added MiniVerifierMode enumeration.
11134
11135         * mini.c: Added mini_verifier_set_mode to control
11136         the usage of the new verifier.
11137
11138         * mini.c (mono_method): Integrated the new verifier.
11139
11140         * driver.c: Extended --security option with validil and
11141         verifiable options to activate the new verifier.
11142
11143 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
11144
11145         * mini.c jit-icalls.h jit-icalls.c: Generalize the exception creation 
11146         optimization to ctors taking 0 or 2 arguments too.
11147
11148         * mini.c (mono_method_to_ir): Optimalize the size of the exception throwing code
11149         a bit.
11150
11151         * jit-icalls.h (mono_create_corlib_exception): New JIT icall.
11152
11153         * mini-amd64.c (mono_arch_emit_prolog): Improve the first_bb optimization a bit.
11154
11155 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
11156
11157         * mini.c (mono_method_to_ir): Apply one of the ldstr optimizations in the
11158         non-aot case as well.
11159
11160         * cpu-amd64.md: Reduce the max size of some frequently used opcodes.
11161
11162         * aot-runtime.c (decode_patch_info): Update this after the ldfld/stfld wrapper
11163         changes.
11164
11165         * aot-compiler.c (encode_patch): Ditto.
11166
11167         * mini.h (G_MININT32): Fix the definition of this.
11168
11169 2008-03-05  Zoltan Varga  <vargaz@gmail.com>
11170
11171         * mini.h: Define G_MININT32/G_MAXINT32 if using an older glib version.
11172
11173         * cfold.c: Remove definition of G_MININT32 which is now in mini.h.
11174
11175 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
11176
11177         * mini-amd64.c (mono_arch_compute_omit_fp): Don't disable fp elimination for 
11178         methods returning vtypes in registers.
11179         (mono_arch_allocate_vars): Ditto.
11180
11181         * mini-amd64.c (mono_arch_get_this_arg_reg): New arch specific helper function.
11182
11183         * tramp-amd64.c (mono_arch_get_unbox_trampoline): Use mono_arch_get_this_arg_reg ().    
11184
11185         * generics.cs: Add a test from the linear IR branch.
11186
11187         * mini-amd64.c (emit_load_volatile_arguments): Handle vtypes passed in regs too.
11188
11189         * mini.c (inline_method): Cache failed inline attempts.
11190
11191 2008-03-04  Mark Probst  <mark.probst@gmail.com>
11192
11193         * mini.c: For shared methods of generic classes put the location
11194         of "this" into the MonoGenericJitInfo.
11195
11196         * mini-x86.c, mini-amd64.c, mini.h: Added function for fetching a
11197         register out of a MonoContext by register number.  Add the generic
11198         sharing context as an argument to mono_arch_find_this_argument().
11199
11200         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
11201         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c: Added stub
11202         for new arch function.
11203
11204         * mini-exception.c: Handle open exception clauses in shared
11205         generic code.
11206
11207         * mini-trampolines.c: Supply additional argument to
11208         mono_arch_find_this_argument().
11209
11210 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
11211
11212         * Makefile.am (regtests): Run the bench.exe tests last.
11213
11214 2008-03-03  Zoltan Varga  <vargaz@gmail.com>
11215
11216         * mini-amd64.c (mono_arch_emit_prolog): Improve the first bblock optimization
11217         a bit.
11218
11219 2008-03-02  Zoltan Varga  <vargaz@gmail.com>
11220
11221         * mini.c (mono_method_to_ir): Allow callvirt on static methods for compatibility
11222         with MS.
11223
11224         * mini-amd64.c (mono_arch_emit_prolog): Fix tracing after the last change.
11225         
11226         * mini-amd64.c (mono_arch_emit_prolog): Avoid saving dead arguments.
11227
11228         * mini.c (mono_method_check_inlining): Avoid disabling inlining for methods
11229         whose class has no cctor.
11230
11231         * liveness.c (mono_analyze_liveness): Mark dead arguments with MONO_INST_IS_DEAD.
11232
11233 2008-03-01  Zoltan Varga  <vargaz@gmail.com>
11234
11235         * mini.c (mono_method_to_ir): Report calling a static method using callvirt as
11236         unverified.
11237
11238 2008-02-29  Zoltan Varga  <vargaz@gmail.com>
11239
11240         * mini-ops.h: Remove OP_SPARC_INARG_VT, add a new OP_VTARG_ADDR opcode instead
11241         to be in sync with the code on the linear IR branch.
11242
11243         * mini-sparc.c inssel-sparc.brg: Use OP_VTARG_ADDR.
11244
11245         * inssel-s390.brg (OP_SETRET (freg)): Set dreg correctly.
11246
11247 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
11248
11249         * mini-mips.c: Use cfg->vret_addr instead of cfg->ret.
11250
11251         * mini-s390x.c: Use cfg->vret_addr instead of cfg->ret.
11252
11253         * mini-s390.c: Use cfg->vret_addr instead of cfg->ret.
11254
11255         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_VARS define.
11256
11257         * mini-<ARCH>.c (mono_arch_create_vars): Define this for all architectures.
11258         
11259         * mini.c (mono_method_to_ir): Avoid invalid memory reads for methods without a
11260         body.
11261
11262 2007-11-14  Yoichi NAKAYAMA  <nakayama@pixela.co.jp>
11263
11264         * inssel-mips.brg (OP_OUTARG_MEMBASE (CEE_LDIND_R4 (base))): Add missing
11265         OP_LOADR4_MEMBASE emission.
11266
11267         * mini-codegen.c (mono_spillvar_offset_int): Remove assertion.
11268         (mono_spillvar_offset_float): Ditto.
11269
11270         * mini-mips.c (mono_arch_emit_prolog): Ditto.
11271
11272         * inssel-long32-mips.brg: Fix wrong branching, reduce redundant code
11273         emission.
11274
11275         * basic-long.cs: Add regression tests for them.
11276
11277         * mini-mips.c (add_float32_arg): Respect o32 calling convention in gr
11278         use.
11279         (mono_arch_allocate_vars): Fix representation of single-precision float
11280         argument.
11281         (mono_arch_output_basic_block): Ditto.
11282
11283         * inssel-mips.brg: Ditto, remove duplicate items.
11284
11285         * mini-mips.c (emit_load_volatile_arguments): New function to handle
11286         arguments of tail calls as on other platforms.
11287         (mono_arch_output_basic_block): Handle tail calls.
11288
11289         * inssel-mips.brg (OP_OUTARG_VT (CEE_LDOBJ (base))): Correct destination
11290         register.
11291
11292         * objects.cs (test_5_pass_static_struct): Add test for it.
11293
11294         Contributed under MIT/X11 license.
11295
11296 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
11297
11298         * Makefile.am: Use gmcs for compiling the regression tests.
11299
11300         * *.2.cs *.2.il: Rename to *.cs and *.il.
11301
11302 2008-02-24  Zoltan Varga  <vargaz@gmail.com>
11303
11304         * regalloc.h: Make the vassign array smaller.
11305
11306         * mini.c (mini_method_compile): Remove an unused field in cfg.
11307
11308         * mini-codegen.c: Add a bunch of micro optimizations.
11309
11310 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
11311
11312         * regalloc.h: Remove some unused fields.
11313
11314 2008-02-22  Zoltan Varga  <vargaz@gmail.com>
11315
11316         * mini-amd64.c (mono_arch_patch_code): Fix a warning.
11317
11318         * ssa.c (mono_ssa_remove): Avoid declaring volatile variables dead.
11319
11320 2008-02-22  Mark Probst  <mark.probst@gmail.com>
11321
11322         * mini.h: New trampoline type (RGCTX_LAZY_FETCH).
11323
11324         * mini-trampolines.c, tramp-amd64.c, tramp-x86.c: RGCTX lazy fetch
11325         trampoline: Fetch an entry from the runtime generic context.  If
11326         it's NULL, jump to the actual trampoline to fill the runtime
11327         generic context.  Otherwise, return it.
11328
11329         * mini.c: Call the lazy fetch trampoline to get entries out of the
11330         runtime generic context.
11331
11332         * tramp-ia64.c, tramp-arm.c, tramp-alpha.c, tramp-s390.c,
11333         tramp-s390x.c, tramp-ppc.c, tramp-hppa.c, tramp-mips.c,
11334         tramp-sparc.c: Stubs for the lazy fetch trampoline.
11335
11336 2008-02-21  Mark Probst  <mark.probst@gmail.com>
11337
11338         * mini.c: Fetch data out of the extensible part of the runtime
11339         generic context instead of calling a helper function.
11340
11341         * generic-sharing.c: Some functions moved into
11342         metadata/generic-sharing.c.  Helper function for fetching other
11343         types now checks and asserts against extensible rgctx (just for
11344         debugging purposes - the helper function isn't called anymore
11345         unless for debugging).
11346
11347 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
11348
11349         * mini-arm.c (mono_arch_output_basic_block): Implement proper argument passing
11350         for tail calls up to the point that the tests in iltests.exe run. Also add a
11351         dummy CKFINITE implementation.
11352         (mono_arch_emit_prolog): Avoid saving the method in the LMF since it is only
11353         needed for trampoline LMF frames.
11354
11355         * exceptions-arm.c (mono_arch_find_jit_info): Only read lmf->method for 
11356         trampoline LMF frames.
11357
11358 2008-02-21  Rodrigo Kumpera  <rkumpera@novell.com>
11359
11360         * mini.c (inline_method): clean any pending loader error when inlining fail.
11361         Otherwise loader errors in mono_method_to_ir leaks and cause spurious errors.
11362
11363 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
11364
11365         * aot-compiler.c (encode_patch): Handle ICALL_ADDR patch type.
11366
11367         * aot-runtime.c (decode_patch_info): Ditto.
11368
11369         * mini.c (mono_resolve_patch_target): Ditto.
11370         
11371         * aot-compiler.c (compile_method): Add some experimental code for AOT compiling
11372         icall wrappers.
11373
11374         * patch-info.h (PATCH_INFO): Add 'ICALL_ADDR' patch type.
11375         
11376         * mini.c (mono_method_to_ir): Convert a CEE_MONO_LDPTR opcode to an AOT constant
11377         if it references an icall address.
11378
11379 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
11380
11381         * cpu-s390x.md: Remove some more unused opcodes.
11382         
11383         * cpu-s390x.md: Remove some unused opcodes.
11384
11385         * mini-ia64.c (mono_arch_lowering_pass): Add some more opcodes. Use
11386         mono_op_imm_to_op ().
11387
11388         * mini-sparc.c (opcode_to_sparc_cond): Use the mono_opcode_to_cond () functions
11389         instead of a switch statement.
11390         
11391         * mini-sparc.c (mono_arch_allocate_vars): Allocate a stack slot for use by
11392         the int<->float conversion opcodes instead of using mono_spillvar_offset_float ().
11393
11394         * mini-codegen.c: Eliminate rassign macro which is no longer needed.
11395         
11396         * mini-codegen.c: Remove unused mono_regstate2_... functions.
11397
11398         * mini-codegen.c (mono_print_ins_index): Avoid printing an index when it is
11399         -1.
11400
11401 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
11402
11403         * driver.c (mono_main): Improve error reporting when an assembly cannot be
11404         opened. Fixes #362607.
11405
11406         * cpu-ia64.md cpu-s390x.md: Remove some unused opcodes.
11407
11408         * iltests.il.in: Add a test for static methods in interfaces.
11409
11410 2008-02-18  Zoltan Varga  <vargaz@gmail.com>
11411
11412         * genmdesc.c (build_table): Fix a crash on older glib versions.
11413
11414         * cpu-sparc.md: Remove some unused opcodes.
11415         
11416         * genmdesc.c: Error out if the .md contains CEE_ opcodes if 
11417         MONO_ARCH_ENABLE_NORMALIZE_OPCODES is defined.
11418
11419         * cpu-amd64.md: Remove some unused opcodes.
11420
11421         * mini.h mini-ops.h mini.c: Define the OP_Ccc opcodes in mini-ops.h normally
11422         like the other opcodes.
11423
11424 2008-02-17  Zoltan Varga  <vargaz@gmail.com>
11425
11426         * mini-ia64.c: Use cfg->vret_addr instead of cfg->ret.
11427
11428         * mini-arm.h mini-arm.c: Use cfg->vret_addr instead of cfg->ret.
11429
11430         * mini-sparc.c: Use cfg->vret_addr instead of cfg->ret. Name the MonoCompile
11431         variables 'cfg' instead of 'm' for consistency.
11432
11433         * mini-x86.c: Use cfg->vret_addr instead of cfg->ret.
11434
11435         * mini.h (MonoCompile): Add new 'vret_addr' field which represents the hidden
11436         argument holding the vtype return address, to avoid the ambigious use of
11437         cfg->ret for this purpose.
11438
11439         * mini.c (NEW_RETLOADA): Use vret_addr if set.
11440
11441         * mini-amd64.c: Use cfg->vret_addr instead of cfg->ret.
11442         
11443         * mini-codegen.c (mono_print_ins): Rename to mono_print_ins_index (), Add a
11444         new mono_print_ins () function which only takes one argument.
11445
11446 2008-02-15  Zoltan Varga  <vargaz@gmail.com>
11447
11448         * mini-s390.h (MONO_OUTPUT_VTR): Use cfg instead of s, avoid assignments to
11449         macro arguments.
11450
11451 2008-02-14  Zoltan Varga  <vargaz@gmail.com>
11452
11453         * mini-ops.h: Get rid of OP_SPARC_LOCALLOC_IMM.
11454
11455         * mini-sparc.c inssel-sparc.brg: Use OP_LOCALLOC_IMM instead of OP_SPARC_LOCALLOC_IMM.
11456
11457         * mini-x86.c: Sync with the version on the linear IR branch by adding new 
11458         opcodes and other small changes.
11459
11460         * mini-ops.h: Add some new opcodes from the linear IR branch.
11461
11462         * mini-ops.h: Get rid of the OP_X86_..._MEMBASE opcodes.
11463
11464         * mini-x86.c inssel-x86.brg cpu-x86.md: Get rid of the confusing _MEMBASE
11465         opcodes, use the REG_MEMBASE opcodes instead.
11466         
11467         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Get rid of the confusing _MEMBASE
11468         opcodes, use the REG_MEMBASE opcodes instead.
11469         
11470         * mini-amd64.c (mono_arch_output_basic_block): Sync with the version on the
11471         linear IR branch.
11472
11473         * mini.c (mono_op_imm_to_op): New helper function.
11474
11475         * mini-ops.h: Add some opcodes from linear IR branch.
11476
11477 2008-02-13  Zoltan Varga  <vargaz@gmail.com>
11478
11479         * mini-alpha.h mini-alpha.c tramp-alpha.c: Alpha port updates from Sergey Tikhonov 
11480         <tsv@solvo.ru>.
11481
11482 2008-02-12  Zoltan Varga  <vargaz@gmail.com>
11483
11484         * mini.c (mono_normalize_opcodes): Always convert CEE_CONV_R4/R8 to 
11485         OP_ICONV_TO_R4/R8.
11486
11487         * mini-ia64.c cpu-ia64.md: Add OP_ICONV_TO_R4/R8.
11488
11489 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
11490
11491         * aot-compiler.c (emit_method_code): Add an assert.
11492
11493         * mini-arm.h mini-arm.c exceptions-arm.c: Modify the exception throwing code and
11494         the IMT code so it is AOT friendly. Enable AOT for methods which call interface
11495         methods.
11496
11497 2008-02-08  Zoltan Varga  <vargaz@gmail.com>
11498
11499         * mini-arm.c (mono_arch_output_basic_block): Fix the ordering of arguments for 
11500         some load/store opcodes so they are consistent. 
11501         (mono_arch_emit_prolog): Simplify some code.
11502
11503         * aot-runtime.c (mono_aot_get_plt_entry): Fix a warning.
11504
11505         * objects.cs: Add tests for large argument offsets on ARM.
11506
11507         * mini-arm.c (mono_arch_emit_prolog): Fix handling of arguments with large 
11508         stack offsets. Fixes #359651.
11509
11510         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R4/R8 properly.
11511
11512         * cpu-s390x.md: Add OP_LCONV_TO_R4/R8.
11513
11514         * cpu-ia64.md mini-ia64.h mini-ia64.c: Get rid of CEE_ opcodes.
11515
11516         * mini-ops.h: Add OP_ICONV_TO_R_UN opcode.
11517
11518         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R_UN too.
11519
11520         * cpu-s390x.md cpu-s390.md mini-s390x.c mini-arm.c cpu-arm.md mini-s390.c: Get
11521         rid of CEE_CONV_R_UN.
11522
11523         * mini-s390x.c mini-s390x.h cpu-s390x.md inssel-s390x.brg: Get rid of CEE_ opcodes.
11524
11525 2008-02-07  Zoltan Varga  <vargaz@gmail.com>
11526
11527         * mini-s390.c mini-s390.h cpu-s390.md: Get rid of CEE_ opcodes.
11528
11529         * mini.c (mono_normalize_opcodes): Add some more opcodes.
11530
11531         * mini-arm.c mini-arm.h cpu-arm.md: Get rid of CEE_ opcodes.
11532
11533         * cpu-amd64.md: Remove some unused opcodes.
11534
11535         * mini-sparc.c mini-sparc.h cpu-sparc.md: Get rid of CEE_ opcodes.
11536
11537         * mini-x86.c mini-x86.h cpu-x86.md: Get rid of CEE_ opcodes.
11538
11539         * mini.c mini-<ARCH>.c: Remove mono_arch_local_regalloc (), instead make 
11540         arch specific functions for its parts. Call the peephole pass after local
11541         regalloc so the prolog can compute a more accurate max_offset.
11542         
11543         * mini.c (mono_normalize_opcodes): New mini pass to convert CEE_ opcodes to
11544         the corresponding OP_I/OP_L opcodes.
11545
11546         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of CEE_ opcodes.
11547
11548         * mini-sparc.c (mono_arch_output_basic_block): Fix the sparc build.
11549
11550 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
11551
11552         * mini-s390.c (mono_arch_get_inst_for_method): Remove the Interlocked cases
11553         as they are handled in mini.c.
11554
11555         * mini-s390x.c (mono_arch_get_inst_for_method): Ditto.
11556         
11557         * mini-<ARCH>.c (mono_arch_get_inst_for_method): Remove the MemoryBarrier
11558         case since it is handled in mini.c.
11559
11560         * cpu-sparc.md (sparc_setfreg_float): Fix the sparc build.
11561
11562         * mini-ops.h: Add new opcodes OP_CALL/OP_CALLVIRT.
11563
11564         * *.c: Use the new opcodes in the IR and back end code.
11565
11566         * mini-ops.h cpu-<ARCH>.md: Correct the name of the bgt_un opcodes.
11567
11568         * mini-amd64.c (emit_call_body): Use a far-call for calling dynamic methods.
11569
11570 2008-02-06  Mark Probst  <mark.probst@gmail.com>
11571
11572         * mini-trampolines.c (mono_generic_class_init_trampoline): Removed
11573         an assert because it has a race condition.
11574
11575 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
11576
11577         * tramp-amd64.c (mono_arch_patch_callsite): Add more diagnostics.
11578
11579         * inssel.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused CEE_RET opcode.
11580
11581         * mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused LDIND/STIND opcodes.
11582
11583         * *.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of OP_SETREG/OP_SETFREG/OP_SETREGIMM,
11584         use OP_MOVE/OP_FMOVE/OP_ICONST instead.
11585
11586 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
11587
11588         * cpu-amd64.md (move): Correct the maximum size of move.
11589
11590 2008-02-05  Mark Probst  <mark.probst@gmail.com>
11591
11592         * tramp-amd64.c, tramp-x86.c, mini-trampolines.c: Added a check in
11593         the generic class init trampoline to return quickly if the class
11594         is already inited.
11595
11596 2008-02-04  Zoltan Varga  <vargaz@gmail.com>
11597
11598         * tramp-amd64.c (mono_arch_patch_callsite): Add some diagnostics to help debug
11599         issues where an 32 bit callsite cannot be patched by a 64 bit address.
11600
11601 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
11602
11603         * generics.2.cs generics-variant-types.2.il: Merge some tests from the linear IR
11604         branch.
11605
11606 2008-01-31  Zoltan Varga  <vargaz@gmail.com>
11607
11608         * objects.cs: Add some soft-float tests.
11609
11610         * mini.c: Fix a couple more soft-float issues.
11611
11612         * helpers.c (mono_disassemble_code): Fix disassembly on ARM.
11613
11614         * mini-amd64.c (peephole_pass): Use IXOR instead of LXOR for zeroing a register to
11615         avoid a REX prefix.
11616
11617 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
11618
11619         * exceptions-x86.c (mono_arch_find_jit_info): Fix stack unwinding when an
11620         exception happens while compiling a virtual method.
11621
11622 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
11623
11624         * mini-sparc.c (mono_arch_emit_epilog): Fix folding of negative return values.
11625         
11626         * mini-sparc.c: Fix build.
11627
11628         * mini-sparc.c (get_call_info): Add support for generic sharing.
11629
11630         * mini-exceptions.c: Add a FIXME.
11631
11632 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
11633
11634         * mini-exceptions.c (mono_handle_exception_internal): Remove the old style
11635         altstack handling code.
11636
11637         * mini-s390.c (mono_arch_emit_exceptions): Really fix a warning.
11638         
11639         * mini-s390.c (mono_arch_emit_exceptions): Fix a warning.
11640
11641         * mini-s390.c: Add support for generic sharing.
11642
11643         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
11644         Fix CAS on s390.
11645         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
11646
11647         * mini-s390x.c (mono_arch_emit_exceptions): Fix a warning.
11648
11649         * mini-s390x.c: Add support for generic sharing.
11650         
11651         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
11652         Fix CAS on ia64.
11653         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
11654
11655         * mini-s390x.c: Use is_imm16 instead of is_uimm16 when checking whenever s390_aghi
11656         can be used since it takes a 16 bit signed immediate.
11657
11658         * inssel-s390x.brg: Fix OP_SETRET.
11659
11660         * mini-s390x.c (mono_arch_output_basic_block): Fix OP_BREAK.
11661
11662         * mini-codegen.c (mono_opcode_to_cond): Fix a warning.
11663
11664         * mini-s390x.c cpu-s390x.md: Implement sext.i4 properly by sign extension.
11665
11666         * mini.c (mono_create_delegate_trampoline): Don't use mono_create_ftpntr here.
11667
11668         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_addr_from_ftnptr
11669         in one place.
11670
11671         * mini-ia64.h mini-ia64.c: Add minimal support for the delegate trampoline 
11672         stuff.
11673
11674         * mini.h inssel-x86.brg inssel-amd64.brg tramp-alpha.c tramp-ia64.c: Get rid
11675         of the unused mono_arch_patch_delegate_trampoline stuff.
11676
11677 2008-01-26  Zoltan Varga  <vargaz@gmail.com>
11678
11679         * basic-long.cs: Move the fp related tests to basic-float.cs.
11680
11681         * mini-ops.h (OP_OUTARG_FREG_R4): New opcode.
11682
11683         * mini-ia64.c inssel-ia64.brg: Implement proper R4 argument passing.
11684
11685         * basic-calls.cs: Add a test for proper float argument passing.
11686
11687         * mini-ia64.h (mono_ia64_context_get_ip): Do not substract 1 from the ip
11688         if the context corresponds to an exception received through a signal.
11689
11690         * exceptions.cs: Add a test for nullref handling at the start of a try
11691         clause.
11692
11693         * mini-ia64.c (mono_arch_call_opcode): Fix ia64 argument passing.
11694
11695         * jit-icalls.c (mono_break): New JIT icall.
11696
11697         * mini-<ARCH>.c: Use mono_break instead of mono_arch_break.
11698
11699         * mini-arm.c (arm_patch): Add support for patching the blx calling sequence.
11700
11701 2008-01-25  Zoltan Varga  <vargaz@gmail.com>
11702
11703         * cpu-*.md: Get rid of unused opcodes.
11704
11705         * cpu-g4.md: Rename this to cpu-ppc.md for consistency with other archs.
11706
11707         * Makefile.am: Move mini-trampolines.c to $(common_sources) since it is now used
11708         by all platforms.
11709
11710         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_SPECIFIC_TRAMPOLINE
11711         define.
11712
11713         * mini-s390x.h tramp-s390x.c Makefile.am: Rework the s390x trampoline code to use
11714         the arch independent trampoline code in mini-trampolines.c.
11715
11716         * aot-runtime.c (mono_aot_init_vtable): Fix a warning.
11717
11718         * mini.c (get_runtime_generic_context_ptr): Fix a warning.
11719
11720         * mini-s390.h: Remove an unused define.
11721         
11722         * mini-s390.h tramp-s390.c Makefile.am: Rework the s390 trampoline code to use
11723         the arch independent trampoline code in mini-trampolines.c.
11724
11725         * mini-arm.c (mono_arch_emit_prolog): Fix build.
11726
11727 2008-01-24  Zoltan Varga  <vargaz@gmail.com>
11728
11729         * mini-sparc.c (mono_arch_output_basic_block): Remove some unecessary code.
11730
11731         * mini-s390.c (mono_arch_emit_prolog): Fix build.
11732
11733         * mini-s390x.c (mono_arch_emit_prolog): Fix build.
11734
11735         * mini-ppc.c (mono_arch_emit_prolog): Fix build.
11736
11737         * cpu-amd64.md: Use smaller sizes for int opcodes.
11738
11739         * *.c: Get rid of the NOT_IMPLEMENTED define which is now in mini.h.
11740
11741         * *.cs: Add some tests from the linear-ir branch. Move structs tests to 
11742         objects.cs.
11743
11744         * driver.c (mono_main): Add a --break-at-bb command line argument for JIT
11745         debugging.
11746
11747         * mini.h *.c: Change cfg->vars to contain the MonoMethodVar entries directly
11748         instead of though a pointer to save an indirection when accessing elements of
11749         the array.
11750
11751         * mini.h (MONO_IS_COND_BRANCH_OP): Move these macros here from mini.c. Fix
11752         some typos.
11753         (NOT_IMPLEMENTED): New helper macro.
11754         (MONO_BB_FOR_EACH_INS): New helper macro to iterate through the instructions
11755         of a bb.
11756
11757         * *.c: Use the new helper macro.
11758
11759 2008-01-21  Zoltan Varga  <vargaz@gmail.com>
11760
11761         * mini-x86.h (MONO_ARCH_AOT_SUPPORTED): Disable AOT for apple x86.
11762
11763 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
11764
11765         * mini-amd64.c (mono_arch_emit_prolog): Optimize the omit fp case to save two
11766         stack slots.
11767
11768 2008-01-18  Zoltan Varga  <vargaz@gmail.com>
11769
11770         * mini-amd64.c (mono_arch_emit_prolog): Disable the new optimization if
11771         profiling is enabled.
11772         
11773         * mini-amd64.c (mono_arch_call_opcode): Emit the save_sp_to_lmf instruction at
11774         the end.
11775         (mono_arch_emit_prolog): Add more first bblock optimizations.
11776
11777         * mini-amd64.c (mono_arch_call_opcode): Keep assignments to the arg registers
11778         in order if possible.
11779         (mono_arch_emit_prolog): Optimize assignments to arg registers in the first
11780         bblock, since the arguments are still in their original registers.
11781
11782         * mini.c (type_from_op): Calling add.ovf on floats is not valid IL code.
11783
11784 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
11785
11786         * mini.c (mono_method_to_ir): Use the no-spilling optimization for CEE_CALLI
11787         as well.
11788
11789         * mini-amd64.c (mono_arch_emit_prolog): Save an instruction if the LMF is at
11790         offset 0.
11791
11792         * mini-amd64.h (MONO_ARCH_HAVE_NOTIFY_PENDING_EXC): Turn on this for amd64.
11793
11794         * exceptions-amd64.c (mono_arch_notify_pending_exc): New function to 
11795         process async exceptions received while in unmanaged code.
11796
11797         * mini.c (mini_init): Install a callback with the runtime which will be called
11798         when a thread receives an async exception while in unmanaged code.
11799
11800         * mini.c driver.c: Update after mono_get_native_wrapper () signature change.
11801
11802         * mini-s390x.c (mono_arch_output_basic_block): Fix s390x build.
11803
11804 2008-01-16  Wade Berrier  <wberrier@novell.com>
11805
11806         * cpu-g4.md:
11807         * cpu-arm.md:
11808         * cpu-s390x.md:
11809         fix build
11810
11811 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
11812
11813         * mini-x86.c (mono_arch_output_basic_block): Remove some gccism which prevents
11814         compilation with sun cc.
11815
11816         * cpu-*.md: Fix the build.
11817
11818         * cpu-x86.md: Fix the length of some load membase opcodes. Fixes #354241.
11819
11820         * mini-amd64.h: Add some comments to the MonoLMF structure.
11821
11822         * mini-ops.h cpu-amd64.c: Add a OP_AMD64_SAVE_SP_TO_LMF opcode.
11823         
11824         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Avoid setting the rip field
11825         in the LMF structure if possible. This saves two instructions in the
11826         managed->native wrappers.
11827
11828         * mini-ops.h *.md: Make some opcodes names uniform by removing the op_ prefix.
11829
11830 2008-01-16  Mark Probst  <mark.probst@gmail.com>
11831
11832         * generic-sharing.c: New type argument lookup code which uses the
11833         runtime generic context template.
11834
11835 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
11836
11837         * mini.c (mono_method_to_ir): Avoid emitting a write barrier when storing NULL.
11838
11839         * mini-arm.c (add_general): Fix arm eabi parameter passing.
11840         (mono_arch_output_basic_block): Fix localloc implementation.
11841
11842         * mini-amd64.c (peephole_pass): Sync store+load optimizations with the x86 version.
11843
11844         * mini-ia64.c (peephole_pass): Fix ia64 build.
11845
11846         * mini-amd64.c (peephole_pass): Fix a warning.
11847         
11848         * mini-amd64.c (mono_arch_allocate_vars): Make sure the LMF is always stored
11849         at a constant offset from sp/fp.
11850
11851         * exceptions-amd64.c (mono_arch_find_jit_info): Compute the LMF address from fp/sp
11852         instead of obtaining it from *lmf in the managed method case.
11853
11854 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
11855
11856         * exceptions-amd64.c (mono_arch_find_jit_info): Remove some duplicate code.
11857
11858 Mon Jan 14 12:33:06 CET 2008  David S. Miller  <davem@davemloft.net>
11859
11860         * mini.h (MonoInstList): New type.
11861         (MONO_INST_LIST_INIT, MONO_INST_LIST_EMPTY,
11862         __MONO_INST_LIST_ADD, MONO_INST_LIST_ADD,
11863         MONO_INST_LIST_ADD_TAIL, __MONO_INST_LIST_DEL,
11864         __MONO_INST_LIST_SPLICE, MONO_INST_LIST_SPLICE,
11865         MONO_INST_LIST_SPLICE_TAIL, MONO_INST_LIST_SPLICE_INIST,
11866         MONO_INST_LIST_SPLICE_TAIL_INIT, mono_container_of,
11867         MONO_INST_LIST_ENTRY, MONO_INST_LIST_FIRST_ENTRY,
11868         MONO_INST_LIST_LAST_ENTRY, MONO_INST_LIST_FOR_EACH,
11869         MONO_INST_LIST_FOR_EACH_PREV, MONO_INST_LIST_FOR_EACH_SAFE,
11870         MONO_INST_LIST_FOR_EACH_PREV_SAFE,
11871         MONO_INST_LIST_FOR_EACH_ENTRY,
11872         MONO_INST_LIST_FOR_EACH_ENTRY_REVERSE,
11873         MONO_INST_LIST_FOR_EACH_ENTRY_SAFE,
11874         mono_inst_list_first, mono_inst_list_last,
11875         mono_inst_list_next, mono_inst_list_prev): New instruction
11876         list handling interfaces.
11877         (MonoBasicBlock): Remove 'last_ins' and 'code', replace with
11878         list head 'ins_list'.
11879         (MonoInst): Replace next pointer with list head 'node'.
11880         (MonoCallInst): Make 'out_args' a MonoInstList.
11881         (MONO_INST_NEW_CALL): Explicitly init ->out_args.
11882         (MonoCompile): Delete reverse_inst_list and
11883         reverse_inst_list_len.
11884         * mini-hppa.c (mono_arch_call_opcode, NEW_INS,
11885         mono_arch_lowering_pass, mono_arch_local_regalloc,
11886         mono_arch_output_basic_block, mono_arch_emit_prolog):
11887         Convert to new instruction lists.
11888         (insert_after_ins): Delete.
11889         * inssel.brg (MONO_EMIT_NEW_BRANCH_BLOCK): Convert to new
11890         instruction lists.
11891         * mini-hppa.h (MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Likewise.
11892         * mini.c (NEW_BBLOCK, ADD_BBLOCK, CHECK_BBLOCK,
11893         split_bblock, mono_add_ins_to_end, mono_emit_call_args,
11894         mono_emulate_opcode, mono_emit_load_got_addr,
11895         inline_method, mono_method_to_ir, mono_print_bb_code,
11896         print_dfn, decompose_pass, nullify_basic_block,
11897         replace_out_block_in_code, remove_block_if_useless,
11898         merge_basic_blocks, move_basic_block_to_end,
11899         try_unsigned_compare, optimize_branches, mono_print_code,
11900         mini_select_instructions, remove_critical_edges): Likewise.
11901         * mini-amd64.c (emit_sig_cookie, mono_arch_call_opcode,
11902         peephole_pass_1, peephole_pass, mono_arch_lowering_pass,
11903         mono_arch_output_basic_block, mono_arch_emit_prolog):
11904         Likewise.
11905         * mini-mips.c (mono_arch_call_opcode, peephole_pass,
11906         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
11907         mono_arch_output_basic_block): Likewise.
11908         (inst_list_prepend, insert_after_ins): Delete.
11909         * mini-mips.h (MONO_EMIT_NEW_BRANCH_NONZERO_LABEL,
11910         MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Convert to new
11911         instruction lists.
11912         * mini-x86.c (emit_sig_cookie, mono_arch_call_opcode,
11913         peephole_pass_1, peephole_pass, mono_arch_output_basic_block,
11914         mono_arch_emit_prolog): Likewise.
11915         * cfold.c (mono_constant_fold): Likewise.
11916         * liveness.c (visit_bb, mono_analyze_liveness,
11917         optimize_initlocals): Likewise.
11918         * ssapre.c (dump_code, process_bb, code_motion): Likewise.
11919         * graph.c (mono_draw_code_cfg): Likewise.
11920         * ssa.c (mono_ssa_rename_vars, mono_ssa_compute,
11921         mono_ssa_remove, mono_ssa_avoid_copies, mono_ssa_create_def_use,
11922         mono_ssa_cprop): Likewise.
11923         * abcremoval (get_relations_from_previous_bb, process_block):
11924         Likewise.
11925         * local-propagation (mono_cprop_invalidate_values,
11926         mono_local_cprop_bb): Likewise.
11927         * mini-s390x.c (mono_arch_call_opcode, emit_sig_cookie,
11928         peephole_pass, mono_arch_output_basic_block,
11929         mono_arch_emit_prolog): Likewise.
11930         * mini-arm.c (mono_arch_call_opcode, peephole_pass,
11931         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
11932         mono_arch_emit_prolog): Likewise.
11933         (insert_after_ins): Delete.
11934         * aliasing.c (print_code_with_aliasing_information,
11935         mono_build_aliasing_information, mono_aliasing_deadce):
11936         Convert to new instruction lists.
11937         * mini-ia64.c (emit_sig_cookie, mono_arch_call_opcode,
11938         peephole_pass, NEW_INS, mono_arch_lowering_pass,
11939         mono_arch_local_regalloc, mono_arch_output_basic_block):
11940         Likewise.
11941         (insert_after_ins): Delete.
11942         * mini-sparc.c (emit_sig_cookie, mono_arch_call_opcode,
11943         peephole_pass, mono_arch_output_basic_block): Convert to
11944         new instruction lists.
11945         * mini-codegen (InstList, inst_list_prepend,
11946         insert_after_ins): Delete.
11947         (insert_before_ins, get_register_force_spilling,
11948         get_register_spilling, free_up_ireg, free_up_reg,
11949         create_copy_ins, create_spilled_store, alloc_int_reg,
11950         alloc_float_reg, alloc_reg, mono_local_regalloc): Convert
11951         to new instruction lists.
11952         * mini-ppc.c (mono_arch_call_opcode, peephole_pass,
11953         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
11954         mono_arch_output_basic_block, mono_arch_emit_prolog): Likewise.
11955         (insert_after_ins): Delete.
11956         * mini-alpha.c (NEW_INS, peephole_pass, mono_arch_lowering_pass,
11957         mono_arch_local_regalloc, mono_arch_output_basic_block,
11958         mono_arch_call_opcode): Convert to new instruction lists.
11959         (insert_after_ins): Delete.
11960         * mini-s390.c (mono_arch_call_opcode, emit_sig_cookie,
11961         peephole_pass, mono_arch_output_basic_block,
11962         mono_arch_emit_prolog): Convert to new instruction lists.
11963
11964 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
11965
11966         * mini-amd64.c (mono_arch_output_basic_block): Use a 4 byte load in OP_CHECK_THIS.
11967
11968         * mini-sparc.c (mono_arch_output_basic_block): Use a byte load in CHECK_THIS.
11969         Fixes #353182.
11970
11971         * Makefile.am (version.h): Make this work with non-bash shells.
11972
11973 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
11974
11975         * mini.c (handle_delegate_ctor): Optimize away setting of NULL target.
11976
11977 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
11978
11979         * mini.c (mono_method_to_ir): Fix possible reading of invalid memory in 
11980         the InitializeArray optimization.
11981
11982 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
11983
11984         * mini.c driver.c: Don't include os/gc_wrapper.h.
11985
11986 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
11987
11988         * mini.c (print_jit_stats): Print GC statistics if available.
11989
11990 2008-01-04  Zoltan Varga  <vargaz@gmail.com>
11991
11992         * mini-amd64.c (mono_arch_allocate_vars): Align argument storage offsets to 8.
11993
11994 2007-12-29  Zoltan Varga  <vargaz@gmail.com>
11995
11996         * mini-ppc.c (mono_arch_get_delegate_invoke_impl): Fix flushing of icache.
11997
11998 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
11999
12000         * mini.c (mini_init): Move the setting of GC_stackbottom to mono_gc_base_init ().
12001         
12002         * mini.c (mini_init): Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
12003
12004         * driver.c (mono_main): Ditto.
12005
12006 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
12007
12008         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_delegate_invoke ().
12009
12010         * aot-compiler.c (emit_klass_info): Avoid emitting info if one of the methods
12011         in the vtable can't be encoded.
12012         (compile_method): Ditto.
12013
12014 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
12015
12016         * mini.c (setup_jit_tls_data): Use the MONO_ARCH_INIT_TOP_LMF_ENTRY macro if
12017         defined.
12018
12019         * mini-amd64.h mini-amd64.c exceptions-amd64.c tramp-amd64.c: Rename lmf->ebp to 
12020         lmf->rbp.
12021
12022         * exceptions-amd64.c (mono_arch_find_jit_info): Fix the detection of whenever
12023         the top LMF entry belongs to the current method.
12024
12025         * mini.c: Update after renaming of mono_thread_get_pending_exception ().
12026
12027 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
12028
12029         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix a warning.
12030         
12031         * tramp-ia64.c (mono_arch_create_trampoline_code): Ditto.
12032
12033         * tramp-sparc.c (mono_arch_create_trampoline_code): Check for thread interruption.
12034
12035         * tramp-amd64.c (mono_arch_create_trampoline_code): Ditto.
12036
12037         * tramp-x86.c (mono_arch_create_trampoline_code): Check for thread interruption.
12038
12039         * cpu-amd64.md mini-amd64.h mini-amd64.c inssel-amd64.brg: Add ulong->double 
12040         implementation.
12041
12042         * basic-float.cs: Add an ulong->double cast test.
12043
12044 2007-12-15  Zoltan Varga  <vargaz@gmail.com>
12045
12046         * mini.c (mono_method_to_ir): Fix a warning.
12047
12048 2007-12-14  Zoltan Varga  <vargaz@gmail.com>
12049
12050         * mini-ops.h: Add OP_SWITCH.
12051
12052         * mini.c graph.c ssa.c aliasing.c mini-<ARCH>.c inssel-<ARCH>.brg: Avoid using
12053         CEE_SWITCH in back-end code, use OP_SWITCH instead.
12054
12055 2007-12-11  Geoff Norton  <gnorton@novell.com>
12056
12057         * mini-s390x.c: Minor change to the MAX() define to allow
12058         it to compile with other gcc versions.
12059
12060 2007-12-11  Geoff Norton  <gnorton@novell.com>
12061
12062         * cpu-s390x.md:
12063         * mini-s390x.c: Implement sext_i4 to fix the build on s390x
12064
12065 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
12066
12067         exceptions-arm.c (mono_arch_get_restore_context): Restore
12068         the frame pointer.
12069
12070         exceptions-arm.c (throw_exception): Save the frame pointer.
12071         This is a partial fix for #323747. Only the client side is
12072         fixed.
12073
12074 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
12075
12076         * mini.c (mono_method_to_ir): Verbose message in CEE_NEWOBJ
12077         was using an unrelated variable to log the class which
12078         needed the cctor to be called. This was crashing on arm.
12079
12080 2007-12-09  Robert Jordan  <robertj@gmx.net>
12081
12082         * mini-x86.c (mono_arch_emit_epilog):
12083         Consider all kinds of 64-bit types. Fixes #323114.
12084
12085 2007-12-08  Zoltan Varga  <vargaz@gmail.com>
12086
12087         * tramp-amd64.c (mono_arch_create_trampoline_code): Clean up the code a bit.
12088
12089 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
12090
12091         * mini-amd64.c (peephole_pass): Add a missing instruction check.
12092
12093 Fri Dec 7 22:08:23 CET 2007 Paolo Molaro <lupus@ximian.com>
12094
12095         * mini.c: run type ctor before allocating an object, not only
12096         when running it's constructor method (fixes at least part of bug #342507).
12097
12098 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
12099         
12100         * mini-trampolines.c (mono_delegate_trampoline): Fix a warning.
12101         
12102         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove a debug printf.
12103         * mini.h mini-amd64.c mini-x86.c: Get rid of the mono_arch_find_vtable () 
12104         function.
12105
12106         * tramp-x86.c tramp-amd64.c mini-trampolines.c: Pass the vtable argument to
12107         mono_generic_class_init_trampoline () the same as it is done with the other
12108         trampolines.
12109
12110         * mini-arm.h mini-arm.c tramp-arm.c inssel-arm.brg cpu-arm.md 
12111         aot-runtime.c aot-compiler.c: Implement AOT support.    
12112
12113 2007-12-07  Mark Probst  <mark.probst@gmail.com>
12114
12115         * mini-trampolines.c (mono_generic_class_init_trampoline): Fixed
12116         build for archs which don't have the vtable trampoline defined
12117         yet.
12118
12119 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
12120
12121         * tramp-x86.c (mono_arch_create_trampoline_code): Fix the build.
12122
12123         * tramp-ppc.c (mono_arch_create_trampoline_code): Use the new helper function.
12124
12125         * mini-trampolines.c (mono_get_trampoline_func): New helper function.
12126
12127         * tramp-<ARCH>.c: Use the new helper function.
12128
12129 2007-12-07  Mark Probst  <mark.probst@gmail.com>
12130
12131         * inssel.brg: Added a pattern for the OP_TRAMPCALL_VTABLE
12132         trampoline call, which takes a vtable argument.
12133
12134         * graph.c, mini-ops.h, local-propagation.c, aliasing.c: Treat
12135         OP_TRAMPCALL_VTABLEs like other calls.
12136
12137         * mini-amd64.c, mini-amd64.h, mini-x86.c, mini-x86.h: Designated a
12138         register to hold the vtable argument to the OP_TRAMPCALL_VTABLE
12139         call.  Implemented a support function which fetches the vtable
12140         from a register set.
12141
12142         * mini.c, mini.h, tramp-amd64.c, tramp-x86.c, mini-trampolines.c:
12143         Implemented a generic class init trampoline, using the
12144         OP_TRAMPCALL_VTABLE opcode.
12145
12146         * mini.c: Implemented static field access when sharing generic
12147         code.  This implies initing the class using the new
12148         OP_TRAMPCALL_VTABLE call.
12149
12150 2007-12-07  Mark Probst  <mark.probst@gmail.com>
12151
12152         * mini.c: Don't compile methods with sharing enabled if their
12153         classes are disabled for sharing.
12154
12155 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
12156
12157         * inssel.brg: Add a missing sign extension to the GETCHR and array access
12158         opcodes. Fixes #346563.
12159
12160         * objects.cs: Add a new test.
12161
12162         * aot-compiler.c (emit_method_code): Put back an #ifdef which is needed.
12163
12164         * mini-<ARCH>.h mini.c aot-compiler.c aot-runtime.c: Get rid of the
12165         HAVE_PIC_AOT define and use AOT_SUPPORTED instead.
12166
12167 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
12168
12169         * mini-arm.h mini-arm.c: Add support for the common vtable trampoline.
12170
12171 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
12172
12173         * mini-arm.c (mono_arch_emit_exceptions): Avoid uninitialized memory in the
12174         code stream.
12175
12176 2007-12-02  Zoltan Varga  <vargaz@gmail.com>
12177
12178         * patch-info.h (PATCH_INFO): Add DELEGATE_TRAMPOLINE.
12179
12180         * mini.c aot-compiler.c aot-runtime.c: Implement the delegate creation 
12181         optimization in the AOT case.
12182         
12183 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
12184
12185         * aot-runtime (mono_aot_get_method_from_vt_slot): Add support for multi-byte method ref encodings.
12186         
12187         * aot-runtime.c (decode_klass_ref): Implement decoding of generic instances.
12188
12189         * aot-compiler.c (encode_klass_ref): Implement proper encoding of generic instances.
12190
12191         * mini.c (mono_method_to_ir): Optimize the common ldftn+create delegate combination.
12192
12193         * mini-trampolines.c (mono_delegate_trampoline): Add some code to handle the case when the delegate
12194         is created by the inlined delegate ctor.
12195
12196         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.  
12197
12198         * mini.c (mono_jit_compile_method_inner): Replace calls to delegate invoke with the trampoline here too.
12199
12200 2007-11-29  Zoltan Varga  <vargaz@gmail.com>
12201
12202         * cpu-x86.md: Fix the length of ckfinite.
12203
12204 2007-11-28  Zoltan Varga  <vargaz@gmail.com>
12205
12206         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.
12207         
12208         * mini-x86.c (mono_arch_output_basic_block): Clean up the fp stack properly in CKFINITE.
12209         (mono_arch_output_basic_block): Get rid of unused last_ins and last_offset.
12210
12211         * mini-x86.c (mono_arch_output_basic_block): Add some micro optimizations.
12212
12213         * mini-x86.c inssel-x86.brg cpu-x86.md: Move the implementation of the 
12214         OP_START_HANDLER/OP_ENDFINALLY/OP_ENDFILTER opcodes to mini-x86.c.
12215
12216 2007-11-28  Martin Baulig  <martin@ximian.com>
12217
12218         * mini-x86.c
12219         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline()
12220         after creating the trampoline.
12221
12222 2007-11-27  Zoltan Varga  <vargaz@gmail.com>
12223
12224         * aot-runtime.c (load_aot_module): Check runtime version if needed.
12225
12226         * aot-compiler.c: Add bind-to-runtime-version for producing AOT files which only load into a runtime with
12227         the same version.
12228
12229         * generic-sharing.c (mono_helper_get_rgctx_other_ptr): Change the signature to take the calling class
12230         instead of the calling method to help AOT.
12231
12232         * mini.c (get_runtime_generic_context_other_ptr): Update after the change.
12233
12234 2007-11-26  Zoltan Varga  <vargaz@gmail.com>
12235
12236         * aot-runtime.c (mono_aot_init_vtable): Simplify this if MONO_ARCH_COMMON_VTABLE_TRAMPOLINE
12237         is defined.
12238
12239 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
12240
12241         * aot-compiler.c (emit_class_name_table): Properly encode generic class names.
12242         
12243         * aot-compiler.c (compile_method): Correct check for generic method definitions.
12244         (encode_method_ref): No need to handle generic method definitions specially.
12245
12246         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
12247
12248         * aot-runtime.c (decode_klass_ref): Clean this up and rename from 
12249         decode_klass_info.
12250
12251         * aot-compiler.c (encode_klass_ref): Clean this up and rename from
12252         encode_klass_info.
12253         (compile_method): Enable generic sharing.
12254
12255 2007-11-22  Zoltan Varga  <vargaz@gmail.com>
12256
12257         * mini.c (get_runtime_generic_context_other_ptr): Disable AOT here.
12258         (mini_method_compile): Add preliminary support for AOTing shared generic code.
12259
12260         * aot-compiler.c (compile_method): Add preliminary support for AOTing shared
12261         generic code.
12262
12263         * mini-trampolines.c: Fix a warning.
12264
12265         * mini.c (get_runtime_generic_context_other_ptr): Use NEW_METHODCONST instead of
12266         NEW_PCONST.
12267         (mono_method_to_ir): Use NEW_DOMAINCONST in one place.
12268         (generic_class_is_reference_type): Remove unused function.
12269
12270         * mini-trampolines.c (mono_magic_trampoline): Avoid loading metadata if possible
12271         in the generic vtable trampoline case.
12272
12273         * aot-runtime.c (mono_aot_init_vtable): Use the generic vtable trampoline.
12274         
12275         * aot-runtime.c (mono_aot_get_method_from_vt_slot): New helper function to
12276         return an AOT method based on a vtable slot.
12277
12278         * aot-compiler.c (compile_method): Avoid AOTing synchronized methods for now.
12279
12280         * mini.c (mini_get_vtable_trampoline): Export this.
12281
12282 2007-11-22  Martin Baulig  <martin@ximian.com>
12283
12284         * debug-debugger.h
12285         (MonoDebuggerInfo): Move `debugger_version' up.
12286
12287 2007-11-22  Martin Baulig  <martin@ximian.com>
12288
12289         * mini-amd64.c
12290         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline().
12291
12292         * mini-trampolines.c
12293         (mono_delegate_trampoline): Call mono_debugger_trampoline_compiled()
12294         after compiling the method.
12295
12296 2007-11-20  Martin Baulig  <martin@ximian.com>
12297
12298         * debug-mini.c
12299         (mono_debugger_insert_method_breakpoint): Moved into mono-debug-debugger.c.
12300         (mono_debugger_remove_breakpoint): Likewise.
12301         (mono_debugger_check_breakpoints): Likewise.
12302
12303         * debug-debugger.c: Implement the new breakpoint interface here.
12304
12305 2007-11-18  Zoltan Varga  <vargaz@gmail.com>
12306
12307         * mini-amd64.c (mono_arch_output_basic_block): Unify the implementation of
12308         CEE_CONV_I1/SEXT_I1 and I2 since they are the same.
12309
12310         * mini-x86.c (mono_arch_output_basic_block): Ditto.     
12311
12312 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
12313
12314         * mini-amd64.c (mono_arch_output_basic_block): Fix a typo.
12315
12316         * mini-x86.c (mono_arch_get_inst_for_method): Remove code which is now in
12317         mini.c.
12318
12319         * mini-ia64.c (mono_arch_get_inst_for_method): Remove code which is now in
12320         mini.c.
12321
12322         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for methods
12323         returning a vtype in a register.
12324
12325         * mini.c (mini_get_inst_for_method): Move the handling of the atomic operations
12326         here from the arch specific code.
12327
12328         * mini-amd64.c (mono_arch_get_inst_for_method): Remove code which is now in
12329         mini.c.
12330
12331         * mini-amd64.c (mono_arch_output_basic_block): Add some micro optimizations.
12332         (mono_arch_emit_prolog): Increment maximum prolog size.
12333
12334         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Move the implementation of the
12335         START_HANDLER/ENDFINALLY/ENDFILTER opcodes to mini-amd64.c.
12336
12337         * mini-x86.c (get_call_info): Receive a MonoCompile instead of a 
12338         MonoGenericSharingContext.
12339
12340         * mini-ia64.c (get_call_info): Receive a MonoCompile instead of a 
12341         MonoGenericSharingContext. Allocate memory from the cfg mempool.
12342
12343 2007-11-15  Mark Probst  <mark.probst@gmail.com>
12344
12345         * mini.c, mini.h, generic-sharing.c: Functions for producing code
12346         which extract fields out of the runtime generic context.  Full
12347         sharing of the NEWARR opcode.
12348
12349 Thu Nov 15 14:20:21 CET 2007 Paolo Molaro <lupus@ximian.com>
12350
12351         * abcremoval.c, mini.c, ssa.c, ssapre.c: updated to implement
12352         --enable-minimal=ssa.
12353
12354 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
12355
12356         * mini-trampolines.c (mono_delegate_trampoline): Update after 
12357         mono_marshal_get_delegate_invoke () signature change.
12358
12359 2007-11-13  Mark Probst  <mark.probst@gmail.com>
12360
12361         * mini.c: Removed the shared context in favor of the generic
12362         sharing context.  Allocate the MonoJitInfo structure with room for
12363         the generic sharing context if it's needed.
12364
12365         * mini.h: Remove MonoGenericSharingContext declaration.  It's in
12366         domain-internals.h now.
12367
12368         * mini-x86.c: Pass the generic sharing context to get_call_info ().
12369
12370         * generic-sharing.c: Several changes for working without a shared
12371         context and instead operating on open types instead.
12372
12373 2007-11-12  David S. Miller  <davem@davemloft.net>
12374
12375        * inssel-sparc.brg: Fix double instruction emit.
12376
12377 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
12378
12379         * mini.c (mono_jit_runtime_invoke): Avoid trying to compile the Array 
12380         Get/Set/Address methods.
12381         
12382         * mini.c debug-debugger.c mini-trampolines.c: Update after 
12383         mono_marshal_get_delegate_invoke signature change.
12384
12385 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
12386
12387         * cpu-arm.md: Increase the max size of OP_THROW to 24 bytes.
12388         This can happens with dynamic methods. Fixes the other bug in #322722.
12389
12390 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
12391
12392         * tramp-arm.c (mono_arch_patch_callsite): Support patching
12393         BX call sequence.
12394
12395         * mini-arm.c (arm_patch): Implement patching of BX call
12396         sequence. Fixes one of the bugs in #322722.
12397
12398 2007-11-03  David S. Miller  <davem@huronp11.davemloft.net>
12399
12400        * mini-sparc.c (mono_arch_flush_icache): Make more efficient
12401        under Linux.  We only need to flush every 32-byte cache line.    
12402
12403 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
12404
12405         * mini.c:
12406         move_basic_block_to_end: Add branches when needed, eventually creating
12407         a new BB.
12408         optimize_branches: added a parameter that tells if it's ok to create
12409         new BBs (doing is "df_visit" has been called is (IMHO) a nightmare),
12410         and avoid calling move_basic_block_to_end when it's not ok.
12411         Fixes bug 318677.
12412
12413 2007-11-07  Mark Probst  <mark.probst@gmail.com>
12414
12415         * mini.c: Abort inlining call to InitializeArray if something
12416         looks wrong.  Let the icall handle it, which now has proper safety
12417         checks.
12418
12419 2007-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
12420
12421         * mini.c (mono_spill_call): add support for soft-float.
12422
12423         * mini.c (mono_method_to_ir): add support for soft-float
12424         to inlined functions that return float.
12425
12426         * mini.c (mono_method_to_ir): add support for soft-float
12427         to cee_stsfld opcode on float fields.
12428
12429 2007-11-05  Geoff Norton  <gnorton@novell.com>
12430
12431         * mini-x86.h: Fix the structure access for X86 Leopard.
12432
12433
12434 2007-11-05  Martin Baulig  <martin@ximian.com>
12435
12436         * mini-trampolines.c
12437         (mono_magic_trampoline): Call mono_debugger_trampoline_compiled()
12438         after compiling the method to notify the debugger.
12439
12440 2007-11-05  Martin Baulig  <martin@ximian.com>
12441
12442         * debug-debugger.h (MonoDebuggerInfo): Use the new breakpoint tables.
12443
12444 2007-11-02  Zoltan Varga  <vargaz@gmail.com>
12445
12446         * mini-sparc.c (EMIT_COND_SYSTEM_EXCEPTION_GENERAL): Applied patch from
12447         David Miller <davem@davemloft.net>. Allow larger offsets in branches.
12448
12449 2007-11-01  Zoltan Varga  <vargaz@gmail.com>
12450
12451         * mini-amd64.c (mono_arch_emit_prolog): Check the domain as well for
12452         native-to-managed wrappers.
12453         
12454 2007-11-01  Geoff Norton  <gnorton@novell.com>
12455
12456         * mini-ppc.h, mini-x86.h:  Handle Leopards renaming of some structure 
12457         members.
12458
12459 Wed Oct 31 20:23:14 CET 2007 Paolo Molaro <lupus@ximian.com>
12460
12461         * mini.c, mini-x86.c: when getting back from unmanaged code
12462         to managed via a marshaled delegate we also need to set the
12463         right domain.
12464
12465 Wed Oct 31 19:53:33 CET 2007 Paolo Molaro <lupus@ximian.com>
12466
12467         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: breakpoint table support
12468         for amd64.
12469
12470 Wed Oct 31 19:29:30 CET 2007 Paolo Molaro <lupus@ximian.com>
12471
12472         * mini.c, mini.h, mini-x86, tramp-x86.c, mini-x86.h: added API to
12473         let the debugger or other external agents to tell the JIT when
12474         a sw breakpoint has been inserted in the code that the JIT needs
12475         to be able to inspect.
12476
12477 2007-10-31  Martin Baulig  <martin@ximian.com>
12478
12479         * debug-debugger.h
12480         (MonoDebuggerInfo): Remove `runtime_class_init'.
12481
12482 2007-10-30  Martin Baulig  <martin@ximian.com>
12483
12484         * debug-mini.h
12485         (mono_debugger_thread_created): Added `MonoThread *' argument.
12486         (mono_debugger_extended_notification): New public method.
12487         (mono_debugger_trampoline_compiled): New public method.
12488
12489         * debug-mini.c
12490         (MonoDebuggerThreadInfo): Added `thread' and
12491         `extended_notifications' fields.
12492
12493         * debug-debugger.c
12494         (debugger_executable_code_buffer): New static variable.
12495
12496         * debug-debugger.h
12497         (MonoDebuggerInfo): Added `executable_code_buffer',
12498         `executable_code_buffer_size', `breakpoint_info_area',
12499         `breakpoint_table' and `breakpoint_table_size'.
12500
12501 2007-10-26  Rodrigo Kumpera  <rkumpera@novell.com>
12502
12503         * mini-arm.c (mono_arch_build_imt_thunk): Take the advantage
12504         that IP  either is an unused value or the vtable pointer. IMT 
12505         calls use vtable + offset now. Reduced by almost half the size
12506         of IMT entries.
12507
12508 2007-10-26  Jonathan Chambers <joncham@gmail.com>
12509
12510         * mini-amd64.c: Begin Win64 port. Use AMD64_ARG_REG#
12511         defines to access param registers. Replace long usage with
12512         gsize as sizeof(long) != sizeof(void*) on Win64.
12513
12514         * mini-amd64.h: Add %rdi and %rsi to MonoLMF structure
12515         on Win64. Fix intrinsic, use _AddressOfReturnAddress
12516         instead of non-existant _GetAddressOfReturnAddress.
12517
12518         * tramp-amd64.c: Use AMD64_ARG_REG#     defines to access 
12519         param registers. Save/restore %rdi and %rsi in MonoLMF.
12520
12521         * exceptions-amd64.c: Use AMD64_ARG_REG# defines to access 
12522         param registers. Modify (throw_exception) signature to take 
12523         %rdi and %rsi on Win64. 
12524
12525         Code is contributed under MIT/X11 license.
12526
12527 Thu Oct 25 23:06:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
12528
12529         * helpers.c: unlink debugging output files.
12530
12531 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
12532
12533         * mini.c: Move mono_create_ftnptr () to object.c.
12534
12535 2007-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
12536
12537         * helpers.c (mono_disassemble_code): MonoCompile parameter is now
12538         optional. This function can now be used to disassemble code generated
12539         outside the JIT such as trampolines and IMT thunks.
12540
12541         * mini-arm.h: defined MONO_ARCH_HAVE_IMT.
12542
12543         * mini-arm.c (decode_vcall_slot_from_ldr): added, extract the
12544         vtable pointer from a ldr instruction.
12545
12546         * mini-arm.c (mono_arch_get_vcall_slot_addr): support the
12547         new IMT call sequence.
12548
12549         * mini-arm.c (mono_arch_output_basic_block): emit the IMT
12550         call sequence for interface invocations.
12551
12552         * mini-arm.c (mono_arch_emit_imt_argument): added, required
12553         for imt support. This function is empty since IMT on ARM requires no
12554         special handling on the IR side.
12555
12556         * mini-arm.c (mono_arch_find_imt_method): added, required for
12557         imt support.
12558
12559         * mini-arm.c (mono_arch_find_this_argument): added, required
12560         for imt support.
12561
12562         * mini-arm.c (arm_emit_value_and_patch_ldr): added, patches
12563         a ldr instruction to load a value stored in the code stream.
12564
12565         * mini-arm.c (mono_arch_build_imt_thunk):added, required
12566         for imt support.
12567
12568
12569 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
12570
12571         * mini.c (mini_init): Install the jump trampoline callback.
12572
12573 Tue Oct 23 17:07:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
12574
12575         * mini-trampolines.c: handle synchronized methods with the common
12576         vtable trampoline (bug #335601).
12577
12578 2007-10-17  Zoltan Varga  <vargaz@gmail.com>
12579
12580         * mini-ia64.h mini-amd64.c: Add support for the common vtable trampoline.
12581
12582         * inssel.brg (mini_emit_virtual_call): Fix the computation of ins->inst_offset on
12583         64 bit platforms.
12584
12585         * mini-ia64.h mini-ia64.c: Add support for IMT.
12586
12587         * mini-x86.c (mono_arch_emit_prolog): Increase the size allocated for the
12588         prolog. Fixes #331958.
12589
12590 2007-10-15  Zoltan Varga  <vargaz@gmail.com>
12591
12592         * mini-sparc.h mini-sparc.c: Add support for the common vtable trampoline.
12593
12594 Mon Oct 15 11:18:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
12595
12596         * mini-ppc.c, mini-ppc.h: ppc support for the common vtable
12597         trampoline.
12598
12599 Mon Oct 15 10:41:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
12600
12601         * mini-amd64.c, mini-amd64.h: amd64 support for the common vtable
12602         trampoline.
12603
12604 Mon Oct 15 10:39:26 CEST 2007 Paolo Molaro <lupus@ximian.com>
12605
12606         * mini-x86.c, mini-x86.h: x86 support for the common vtable
12607         trampoline.
12608
12609 Mon Oct 15 10:37:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
12610
12611         * mini-trampolines.c: changed the magic rampoline to understand
12612         the common vtable trampoline method: the method to invoke is
12613         determined by the vtable displacement of the call.
12614
12615 Mon Oct 15 10:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
12616
12617         * mini.c, mini.h: register the common vtable trampoline if the
12618         architecture supports it.
12619
12620 Mon Oct 15 09:50:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
12621
12622         * cpu-amd64.md: use the correct max length for tls_get.
12623
12624 2007-10-14  Zoltan Varga  <vargaz@gmail.com>
12625
12626         * mini.c (mono_method_to_ir): Use mini_get_class in CEE_LDELEM_ANY and
12627         CEE_STELEM_ANY. Fixes #333696.
12628
12629 Thu Oct 11 18:04:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
12630
12631         * exceptions-x86.c: provide more graceful handling of the case where
12632         we followed a bogus function pointer from managed code (bug #332866).
12633
12634 2007-10-11  Mark Probst  <mark.probst@gmail.com>
12635
12636         * mini.h, mini.c: Introduced the MonoGenericSharingContext, which
12637         replaces the generic_shared flag and will carry more information
12638         in the future.
12639
12640         * generic-sharing.c: Added mini_type_stack_size() which allows
12641         allows open types if given a generic sharing context.
12642         mini_get_basic_type_from_generic() takes a
12643         MonoGenericSharingContext* instead of a MonoCompile* now.
12644
12645         * mini-alpha.c, mini-amd64.c, mini-arm.c, mini-hppa.c,
12646         mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c, mini-s390x.c,
12647         mini-sparc.c, mini-x86.c: Trivial changes required by the two
12648         changes above.  Just passing arguments through to the right
12649         places.
12650
12651 Wed Oct 10 19:44:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
12652
12653         * mini-arm.c: unify the call emission to emit_code_seq().
12654
12655 Wed Oct 10 13:05:46 CEST 2007 Paolo Molaro <lupus@ximian.com>
12656
12657         * tramp-arm.c: reduced the trampoline size.
12658
12659 2007-10-10  Mark Probst  <mark.probst@gmail.com>
12660
12661         * generic-sharing.c, mini.h, mini-amd64.c, mini-x86.c: Moved type
12662         variable handling out of arch-specific code.
12663
12664 Wed Oct 10 10:49:28 CEST 2007 Paolo Molaro <lupus@ximian.com>
12665
12666         * mini-arm.c: implemented fast delegate dispatch.
12667
12668 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
12669
12670         * mini-amd64.c (mono_arch_compute_omit_fp): Add more checks to ensure
12671         that fp elimination is turned off if the space required by locals is too
12672         big. Fixes #331958.
12673
12674 Tue Oct 9 21:01:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
12675
12676         * Makefile.am, mini-arm.c, mini-arm.h, tramp-arm.c: ported
12677         ARM to the new style trampoline.
12678
12679 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
12680
12681         * tramp-amd64.c: Rework the specific trampoline code to make it smaller.
12682
12683         * mini-amd64.h mini-amd64.c: Export amd64_patch as mono_amd64_patch.
12684
12685 2007-10-09  Martin Baulig  <martin@ximian.com>
12686
12687         * debug-debugger.h
12688         (MonoDebuggerMetadataInfo): Added `field_info_type_offset' and
12689         `field_info_offset_offset'.     
12690
12691 Tue Oct 9 09:47:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
12692
12693         * mini-ppc.c, mini-ppc.h, mini-ops.h, inssel-ppc.brg, cpu-g4.md:
12694         removed more internal usage of the r11 register and made it available
12695         to the register allocator.
12696
12697 2007-10-08  Mark Probst  <mark.probst@gmail.com>
12698
12699         * mini.c, mini-amd64.c, mini-x86.c: Allow open generic contexts
12700         when sharing generics and treat type variables as references.
12701
12702 Mon Oct 8 10:55:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
12703
12704         * mini-ppc.c: started removing the internal uses of register r11
12705         to eventually allow the register allocator to manage it as an
12706         additional available register.
12707
12708 Mon Oct 8 14:25:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
12709
12710         * tramp-amd64.c: fixed memory corruption in the trampoline generation.
12711
12712 Mon Oct 8 12:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
12713
12714         * tramp-ppc.c, tramp-x86.c: reduce the alignment requirements for
12715         specific trampolines as they are not performance critical as a jump
12716         target (maybe align as before only for AOT code?). This saves about
12717         200 KB of native code on x86 for monodevelop startup.
12718
12719 Mon Oct 8 10:04:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
12720
12721         * tramp-ppc.c: reduce the size of the trampolines, saves 160KB on
12722         monodevelop startup.
12723
12724 2007-10-06  Zoltan Varga  <vargaz@gmail.com>
12725
12726         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Allow signed displacements.
12727
12728         * mini-sparc.h mini-sparc.c: Implement IMT support.
12729
12730         * tramp-sparc.c (mono_arch_create_trampoline_code): Rework the trampoline code so
12731         its smaller and doesn't clobber sparc_g1.
12732
12733         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Update after trampoline changes.
12734
12735 Fri Oct 5 18:28:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
12736
12737         * mini-ppc.c: optimized the size of the IMT thunks a bit.
12738
12739 Fri Oct 5 18:08:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
12740
12741         * mini-ppc.c: implemented fast delegate invocation.
12742
12743 Fri Oct 5 00:01:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
12744
12745         * mini-ppc.h, mini-ppc.c: IMT support for the PPC architecture.
12746
12747 Thu Oct 4 22:04:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
12748
12749         * mini-ppc.c, mini-ppc.h, tramp-ppc.c, Makefile.am: port the PPC
12750         code to the new style trampoline in preparation for IMT support.
12751
12752 Thu Oct 4 19:01:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
12753
12754         * mini-ppc.c, tramp-ppc.c: don't use r13 as it's used by the PPC EABI
12755         systems already. This also reduces the specific trampiline sizes and
12756         prepares for the use of r12 as the IMT identifier register.
12757
12758 Thu Oct 4 16:38:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
12759
12760         * mini-mips.h: endianess fix (simplified from a patch by
12761         Thomas Kunze <thommy@tabao.de>, bug #323737).
12762
12763 Thu Oct 4 14:43:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
12764
12765         * exceptions-ppc.c, mini-ppc.h: refactor to use macros
12766         to access ucontext fields and enable netbsd support
12767         (partially from Magnus Henoch <mange@freemail.hu>).
12768
12769 Thu Oct 4 12:35:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
12770
12771         * genmdesc.pl: patch from Henryk Plotz <henryk@openmoko.org> to
12772         use the preprocessor from the CPP env var if it is set.
12773
12774 Wed Oct 3 17:11:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
12775
12776         * mini-trampolines.c: fixed an assertion and moved it earlier in the
12777         code, before interface_offset gets used.
12778
12779 2007-10-02  Zoltan Varga  <vargaz@gmail.com>
12780
12781         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call 
12782         mono_class_setup_vtable () before accessing klass->vtable.
12783
12784 2007-10-01  Zoltan Varga  <vargaz@gmail.com>
12785
12786         * aot-compiler.c (get_plt_index): Rework the handling of wrappers to be not so
12787         hackish.
12788
12789 Mon Oct 1 15:00:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
12790
12791         * mini.c, mini-trampolines.c, mini.h: enable the lazy filling of the
12792         IMT slots (this saves hundreds of KB of memory in programs like
12793         IronPython and Monodevelop).
12794
12795 Mon Oct 1 14:44:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
12796
12797         * mini.c: print the delegate counter.
12798
12799 Mon Oct 1 14:36:50 CEST 2007 Paolo Molaro <lupus@ximian.com>
12800
12801         * mini-x86.c: make it easier to enable the debugging code for IMT
12802         slots.
12803
12804 2007-09-28  Martin Baulig  <martin@ximian.com>
12805
12806         * debug-debugger.h
12807         (MonoDebuggerMetadataInfo): Add `klass_image_offset',
12808         `mono_method_klass_offset' and `mono_method_token_offset'.
12809
12810 2007-09-20  Mark Probst  <mark.probst@gmail.com>
12811
12812         * mini.c: First generics sharing implementation.  Can only share
12813         in very simple cases.  If sharing doesn't work it falls back to
12814         dedicated compilation.
12815
12816         * mini.h: Flag in MonoCompile to specify whether generic
12817         compilation is shared.  Flags enum for marking which generic inst
12818         of a context is used.  Prototypes for helper functions.
12819
12820         * generic-sharing.c: Helper functions for generic method sharing.
12821
12822         * optflags-def.h: Optimization flag (gshared) for enabling generic
12823         method sharing added.
12824
12825         * Makefile.am: generic-sharing.c added.
12826
12827 2007-09-19 Daniel Nauck <dna@mono-project.de>
12828
12829         * mini.c (mono_thread_abort): fixed typo in r86014. It should be '==' instead of '!='.
12830
12831 2007-09-19  Massimiliano Mantione  <massi@ximian.com>
12832         * mini.c (mono_thread_abort): Correctly handle ThreadAbortException,
12833         fixes bug 325507.
12834
12835 2007-09-19  Martin Baulig  <martin@ximian.com>
12836
12837         * mini.c (mini_cleanup): Only call mono_debugger_cleanup() here;
12838         mono_debug_cleanup() is now part of mono_cleanup().
12839
12840 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
12841
12842         * driver.c (mono_main): Fix a warning.
12843
12844 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
12845
12846         * aot-compiler.c: Optimize various parts when processing large assemblies.
12847         Fixes ##325568.
12848
12849         * mini.c (mono_patch_info_hash): Improve hash function.
12850
12851 2007-09-14  Jonathan Chambers <joncham@gmail.com>
12852
12853         * mini-exceptions.c: Add HAVE_UNISTD_H check around include.
12854         
12855         Code is contributed under MIT/X11 license.
12856
12857 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
12858
12859         * mini.c (mini_init): Fix a leak.
12860
12861         * debug-mini.c (mono_debug_free_method_jit_info): Fix a leak.
12862
12863 Fri Sep 14 12:53:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
12864
12865         * mini.c: redirect string.InternalAllocStr() to the managed allocator.
12866
12867 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
12868
12869         * mini-amd64.c (mono_arch_find_imt_method): Add support for AOT code.
12870
12871 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
12872
12873         * Makefile.am generics-variant-types.2.il generics.cs: Add some generics
12874         variance tests.
12875
12876         * inssel.brg: Reorganize the isinst/castclass code to reduce code duplication.
12877
12878         * mini.c (handle_alloc): Enable managed allocators in AOT code.
12879
12880         * aot-compiler.c (encode_patch): Add support for MONO_WRAPPER_ALLOC.
12881
12882         * aot-runtime.c (decode_patch_info): Ditto.
12883
12884 2007-09-12  Jonathan Chambers <joncham@gmail.com>
12885
12886         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement
12887         static case. Cache delegates in architecture specific code, 
12888         based on number of parameters.
12889         
12890         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Cache delegates
12891         in architecture specific code, based on number of parameters.
12892         
12893         * mini-trampolines.c (mono_delegate_trampoline): Architecture specific 
12894         caching happen in architecture specific code now.
12895         
12896         Code is contributed under MIT/X11 license.
12897
12898 2007-09-12  Jonathan Chambers <joncham@gmail.com>
12899
12900         * mini.h, mini.c, mini-x86.c, mini-amd64.c, mini-hppa.c, mini-mips.c,
12901         mini-s390x.c, mini-arm.c, mini-ia64.c, mini-sparc.c, mini-ppc.c, mini-alpha.c,
12902         mini-s390.c: Add mono_arch_init and mono_arch_cleanup methods.
12903
12904         Code is contributed under MIT/X11 license.
12905
12906 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
12907         * mini.c: (mono_thread_abort) Fixed bug #82416.
12908
12909 Tue Sep 11 16:15:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
12910
12911         * mini.: hook the new managed GC allocation feature into the JIT.
12912
12913 Tue Sep 11 16:14:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
12914
12915         * mini.c: implementation for the new runtime tls opcode.
12916
12917 2007-09-11  Martin Baulig  <martin@ximian.com>
12918
12919         * debug-debugger.h
12920         (MonoDebuggerMetadataInfo): Add `mono_method_flags_offset' and
12921         `mono_method_inflated_offset'.
12922
12923 2007-09-07  Zoltan Varga  <vargaz@gmail.com>
12924
12925         * driver.c mini.h mini.c: Add a new devel command line option for injecting
12926         async exceptions into a method.
12927
12928         * mini-amd64.h mini-amd64.c: Implement injecting of async exceptions for the
12929         purpose of testing whenever the unwinder works at every instruction.
12930
12931 Thu Sep 6 12:42:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
12932
12933         * mini.c: check accessibility of method used in ldftn (fixes
12934         bug #82635).
12935
12936 2007-09-04  Zoltan Varga  <vargaz@gmail.com>
12937
12938         * mini-amd64.c (mono_arch_output_basic_block): Fix a warning.
12939
12940         * inssel.brg: Fix a warning.
12941
12942 2007-09-03  Martin Baulig  <martin@ximian.com>
12943
12944         * debug-debugger.c: `MONO_DEBUGGER_EVENT_INITIALIZE_MANAGED_CODE'
12945         now takes the `main_method' as argument.
12946
12947 2007-09-02  Zoltan Varga  <vargaz@gmail.com>
12948
12949         * cpu-sparc.md (endfilter): Add missing src1:i argument.
12950
12951 2007-08-30  Jonathan Chambers <joncham@gmail.com>
12952
12953         * driver.c: include the cil-coff.h header on Windows.
12954         
12955         Code is contributed under MIT/X11 license.
12956
12957 Thu Aug 30 16:17:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
12958
12959         * mini.c, driver.c: don't include the cil-coff.h header.
12960
12961 Thu Aug 30 14:50:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
12962
12963         * mini.c: flag places that needs fixes fo soft-float support.
12964
12965 Wed Aug 29 18:26:20 CEST 2007 Paolo Molaro <lupus@ximian.com>
12966
12967         * mini.h, inssel-float.brg: fix soft-float constant loads on big
12968         endian systems (partially from Dean Jenkins, bug #81924).
12969
12970 2007-08-28  Mark Probst  <mark.probst@gmail.com>
12971
12972         * mini.c (check_linkdemand): Remove embedded reference object in
12973         call to LinkDemandSecurityException.
12974         (mono_jit_compile_method_inner): Call LinkDemandSecurityException
12975         with an IntPtr instead of a reference object.
12976
12977 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
12978
12979         * mini.c (handle_initobj): Handle alignment properly.
12980
12981         * inssel.brg (mini_emit_memset): Ditto. 
12982
12983         * inssel.brg (mini_emit_memcpy): Ditto. 
12984
12985         * inssel-sparc.brg: Ditto.              
12986
12987         * mini.h mini.c inssel-*.brg: Pass alignment information to OP_MEMCPY/MEMSET.
12988
12989 2007-08-26  Zoltan Varga  <vargaz@gmail.com>
12990
12991         * mini-exceptions.c (mono_handle_exception_internal): Skip the first frame for
12992         exceptions raised in unmanaged code. Fixes part of #82594.
12993
12994 2007-08-24  Mark Probst  <mark.probst@gmail.com>
12995
12996         * mini.c (mono_method_to_ir), declsec.c
12997         (mono_declsec_linkdemand_aptc): Fixed custom attr leaks.
12998
12999 2007-08-22  Martin Baulig  <martin@ximian.com>
13000
13001         * debug-mini.h
13002         (MonoDebuggerThreadInfo): New typedef.
13003         (mono_debugger_thread_table): New global variable.
13004         (mono_debugger_thread_created): New public function.
13005         (mono_debugger_thread_cleanup): New public function.
13006
13007         * debug-debugger.h
13008         (MonoDebuggerInfo):
13009         - removed `get_current_thread' and `lookup_assembly'.
13010         - removed `data_table'.
13011         - added `thread_table'.
13012
13013         * mini.c
13014         (mono_thread_start_cb): Call mono_debugger_thread_created().
13015         (mono_thread_attach_cb): Likewise.
13016         (mini_thread_cleanup): Call mono_debugger_thread_cleanup().
13017         (mini_cleanup): Move mono_debug_cleanup() down, after free'ing the
13018         initial domain.
13019
13020         * driver.c (mono_main): Move mono_debug_init() up, before calling
13021         mini_init(); mono_debug_init_1() and mono_debug_init_2() are gone.
13022
13023 Tue Aug 21 16:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
13024
13025         * mini-x86.c, inssel-x86.brg: group multiple stack adjustments
13026         together when passing several arguments of type double (gives a small
13027         speedup and saves a few bytes of generated code).
13028
13029 2007-08-20  Jb Evain  <jbevain@novell.com>
13030
13031         * mini.c (mono_method_to_ir): fix leak on InvalidProgramException.
13032
13033 2007-08-20  Jb Evain  <jbevain@novell.com>
13034
13035         * mini.c (mono_method_to_ir): throw MethodAccessException
13036         and FieldAccessException instead of InvalidProgramException.
13037
13038 2007-08-20  Mark Probst  <mark.probst@gmail.com>
13039
13040         * mini.c: CoreCLR security checks.
13041
13042         * mini.h: Removed MonoSecurityMode (moved to
13043         metadata/security-manager.h) and mono_security_mode global var
13044         (replaced by set/get functions in security-manager.h).
13045
13046         * driver.c: Added "core-clr-test" security mode for testing.  Used
13047         set-function for setting security mode.
13048
13049 2007-08-17  Mark Probst  <mark.probst@gmail.com>
13050
13051         * mini.c: MonoJitInfo's are freed hazardously now.  Statistics for
13052         the new jit_info_table.
13053
13054         * driver.c: Test code for the new jit_info_table (enabled by the
13055         define MONO_JIT_INFO_TABLE_TEST).
13056
13057 2007-08-14  Zoltan Varga  <vargaz@gmail.com>
13058
13059         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
13060         detection of call <REG> instruction sequence. Fixes build on freebsd.
13061
13062 2007-08-13  Zoltan Varga  <vargaz@gmail.com>
13063
13064         * mini-exceptions.c: Fix a warning.
13065
13066 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
13067
13068         * exceptions-amd64.c (mono_arch_handle_altstack_exception): Enable the new
13069         stack overflow handling code on amd64 too.
13070
13071         * mini-exceptions.c (mono_setup_altstack): Make this use 
13072         mono_thread_get_stack_bounds ().
13073
13074         * mini-x86.h: Disable sigaltstack on solaris x86.
13075
13076 2007-08-10  Zoltan Varga  <vargaz@gmail.com>
13077
13078         * mini-exceptions.c (mono_setup_altstack): Enable this to work on solaris x86.
13079
13080 2007-08-10  Geoff Norton  <gnorton@customerdna.com>
13081
13082         * tramp-x86.c: Remove some unneeded alignment changes on Apple.  Fixes #82387.
13083
13084 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
13085
13086         * mini-exceptions.c (mono_print_thread_dump): Enable this on amd64 too.
13087
13088         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Fix a warning.
13089
13090 2007-08-03  Neale Ferguson <neale@sinenomine.net>
13091
13092         * mini-s390.c (add_general): Adjust offset calculation to take into account of rounding up
13093         due to alignment.
13094
13095 Thu Aug 2 17:36:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
13096
13097         * mini-ppc.c: avoid an invalid encoding of unsigned right shift by 0
13098         to be emitted (bug #82281).
13099
13100 2007-08-01  Martin Baulig  <martin@ximian.com>
13101
13102         Merged the `debugger-dublin' branch.
13103
13104         * debug-debugger.h (MonoDebuggerInfo):
13105         Removed the `old_*' compatibility entries.
13106         Added `debugger_version' and `data_table'.
13107         Renamed `get_method_addr_or_bpt' -> `insert_breakpoint'.
13108         Renamed `remove_method_breakpoint' -> `remove_breakpoint'.
13109
13110         * debug-mini.c
13111         (MiniDebugMethodBreakpointInfo): Add `address_list'.
13112         (mono_debugger_check_breakpoints): Take a `MonoDebugMethodAddress *'
13113         instead of a `gconstpointer'.
13114         (mono_debugger_insert_method_breakpoint): Return a
13115         `MonoDebugMethodAddressList *'.
13116
13117 2007-06-28  Martin Baulig  <martin@ximian.com>
13118
13119         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
13120
13121 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
13122
13123         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Avoid using 
13124         __builtin_frame_address () since it is broken on older gcc versions.
13125
13126 Tue Jul 31 17:34:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
13127
13128         * mini.c, mini.h, mini-exceptions.c: added a bit of documentation
13129         on the stack overflow handling and made the managed stack overflows
13130         catchable in most cases using soft guard pages.
13131         * exceptions-x86.c: added code to restore the protection in the soft
13132         guard pages at the end of exception handling.
13133
13134 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
13135
13136         * mini.c (SIG_HANDLER_SIGNATURE): Fix a warning.
13137
13138 Mon Jul 30 17:43:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
13139
13140         * exceptions-ppc.c, mini-ppc.h: arch-specific stack overflow
13141         exception handling.
13142
13143 Mon Jul 30 17:38:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
13144
13145         * mini-alpha.h, mini-ia64.h, mini-sparc.h: disable the altstack
13146         signal handling support until it has been ported to the new mechanism.
13147         * mini.c: fixed stack overflow detection and use the new
13148         architecture code  to handle signals on the altstack.
13149
13150 Mon Jul 30 17:33:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
13151
13152         * exceptions-amd64.c, mini-amd64.h: amd64 code to handle
13153         stack overflows on the alt stack.
13154
13155 Mon Jul 30 17:29:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
13156
13157         * exceptions-x86.c, mini-x86.h, mini.h: new code to handle
13158         stack overflows on the alt stack.
13159
13160 Mon Jul 30 11:50:06 CEST 2007 Paolo Molaro <lupus@ximian.com>
13161
13162         * exceptions-ppc.c: cleanup preparing for altstack support.
13163
13164 Mon Jul 30 11:31:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
13165
13166         * exceptions-arm.c: cleanup preparing for altstack support.
13167
13168 2007-07-27  Mark Probst  <mark.probst@gmail.com>
13169
13170         * mini.c (print_jit_stats): Output hazard pointer stats.
13171
13172 2007-07-26  Mark Probst  <mark.probst@gmail.com>
13173
13174         * driver.c, mini.c: Replaced security mode flags with a single
13175         enum variable.
13176
13177 Thu Jul 26 20:12:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
13178
13179         * mini.c, mini-exceptions.c: cleanup the sigaltstack code.
13180
13181 2007-07-25  Mark Probst  <mark.probst@gmail.com>
13182
13183         * mini.c, mini.h, driver.c (mono_main): Added command-line flag
13184         (which doesn't do anything yet) for activating Core CLR
13185         (Silverlight) security.
13186
13187 Tue Jul 24 21:16:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
13188
13189         * mini-codegen.c: work around a possible gcc bug on arm.
13190
13191 Tue Jul 24 17:20:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
13192
13193         * driver.c, mini-x86.h, mini-amd64.h: print a nice error
13194         message for platforms that don't support AOT compilation.
13195
13196 Mon Jul 23 10:29:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
13197
13198         * mini.h, mini.c, driver.c: temporary smcs hack.
13199
13200 Mon Jul 23 09:29:34 CEST 2007 Paolo Molaro <lupus@ximian.com>
13201
13202         * mini-arm.h, mini-arm.c: arm EABI fixes.
13203
13204 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
13205
13206         * exceptions-x86.c (mono_arch_find_jit_info): Handle the lmf->method == NULL
13207         case.
13208
13209         * tramp-x86.c (mono_arch_create_trampoline_code): Only set lmf->method for
13210         trampolines taking a method argument.
13211
13212         * mini-x86.h (MonoLMF): Add an 'esp' field plus comments.
13213
13214         * mini-x86.c (mono_arch_emit_prolog): Update after changes to the LMF structure.
13215         * tramp-x86.c (mono_arch_create_trampoline_code): Ditto.
13216
13217         * exceptions-x86.c (mono_arch_get_jit_info): Properly clean up the stack after
13218         JIT compilation throws an exception. Fixes #82050.
13219
13220 2007-07-19  Mark Probst  <mark.probst@gmail.com>
13221
13222         * mini.c: Removed the MonoLoaderErrorKind enum and replaced it
13223         with the MONO_EXCEPTION_ defines.
13224
13225 2007-07-17  Zoltan Varga  <vargaz@gmail.com>
13226
13227         * mini-amd64.c (mono_arch_find_imt_method): Handle mov reg,IMM64 case. Fixes
13228         #82117.
13229         
13230         * mini-amd64.c (mono_arch_find_imt_method): Add some debug code to help find out
13231         the cause of an assertion.
13232
13233 Mon Jul 16 19:31:21 CEST 2007 Paolo Molaro <lupus@ximian.com>
13234
13235         * mini.c, jit-icalls.c: mono_get_inflated_method() is obsolete,
13236         removed.
13237
13238 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
13239
13240         * mini-amd64.c (mono_arch_build_imt_thunk): Remove the non-32bit MonoMethod
13241         assert. Should fix #82103.
13242
13243 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
13244
13245         * mini-exceptions.c (mono_jit_walk_stack_from_ctx): Use MONO_CONTEXT_GET_SP ()
13246         here too. Fixes #82095.
13247
13248         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for non-32bit MonoMethod
13249         addresses.
13250
13251         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a couple asserts.
13252
13253         * mini-amd64.h: Enable IMT for amd64.
13254         
13255         * mini-amd64.c (mono_arch_build_imt_thunk): Optimize IMT thunk size.
13256
13257 2007-07-12  Zoltan Varga  <vargaz@gmail.com>
13258
13259         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for IMT call sequences.
13260
13261 2007-07-12  Mark Probst  <mark.probst@gmail.com>
13262
13263         * mini.c (check_linkdemand, mono_method_to_ir): Abort compilation
13264         as soon as check_linkdemand sets an exception_type.
13265
13266 Thu Jul 12 12:18:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
13267
13268         * mini-x86.c: fixed offsets for IMT call sequence.
13269         * mini-x86.h: enable IMT again.
13270
13271 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
13272
13273         * trace.c (mono_trace_enter_method): Decode MonoType too.
13274
13275         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Handle signed displacements too.
13276
13277         * mini.h mini-x86.h mini-trampolines.c: Change the signature of mono_arch_find_imt_method () to pass the calling code address too.
13278
13279         * mini-amd64.c: Add preliminary IMT implementation.
13280         
13281 Wed Jul 11 18:21:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
13282
13283         * mini-x86.c: adjusted mono_arch_get_vcall_slot_addr () to
13284         understand the new IMT-base interface invocation (thanks to
13285         Daniel Nauck for the report and the remote debugging session).
13286
13287 Wed Jul 11 14:54:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
13288
13289         * mini-x86.c: size and speed optimizations for the IMT bsearch.
13290
13291 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
13292
13293         * Makefile.am (aotcheck): Make this actually use the AOTed code.
13294
13295 Wed Jul 11 12:41:32 CEST 2007 Paolo Molaro <lupus@ximian.com>
13296
13297         * mini-trampolines.c: implement AOT IMT support.
13298         * mini-x86.h: enable IMT support for wider testing.
13299
13300 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
13301
13302         * inssel.brg (emit_imt_argument): Add aot support here.
13303
13304         * aot-runtime.c (decode_patch_info): Fix reading of MONO_PATCH_INFO_METHOD.
13305
13306 Tue Jul 10 17:50:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
13307
13308         * mini-x86.c, mini-x86.h, tramp-x86.c: x86 arch-specific changes
13309         of the IMT implementation, partially from massi, with my
13310         implementation of the bsearch sequence. Disabled by default until
13311         the AOT code is implemented.
13312
13313 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
13314
13315         * cpu-x86.md: The source argument of sext_i1/i2 must by a byte reg.
13316
13317         * inssel-x86.brg: Add reg:ldind.i1(regvar) rules. Fixes #82056.
13318
13319 Tue Jul 10 17:33:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
13320
13321         * inssel.brg, mini.c, mini.h, mini-trampolines.c:
13322         arch-independent IMT JIT code from Massimiliano
13323         Mantione (massi@ximian.com) with small cleanups from me.
13324
13325 Tue Jul 10 13:07:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
13326
13327         * Makefile.am: fix svn invocation to get the svn revision to be
13328         independent of the local language (build fix).
13329
13330 2007-07-09  Mark Probst  <mark.probst@gmail.com>
13331
13332         * mini.c (inline_method): Reset cfg->exception_type if the
13333         inlining is aborted.  Fixes: 82049.
13334
13335 Mon Jul 9 17:26:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
13336
13337         * mini.c: remove assert from exception handling code when exception_ptr
13338         is not set.
13339
13340 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
13341
13342         * mini.c (mono_codegen): Add an assert.
13343
13344         * mini-x86.c (mono_arch_emit_prolog): Allocate space for the profiler method 
13345         enter and leave code.
13346         * mini-amd64.c (mono_arch_emit_prolog): Likewise.
13347
13348 Thu Jul 5 20:12:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
13349
13350         * mini-ppc.c: fixed memory corruption for localloc(0)
13351         (bug #81852).
13352
13353 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
13354         
13355         * mini.c: Fix warnings.
13356
13357 Wed Jul 4 15:30:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
13358
13359         * optflags-def.h, mini-x86.c: added sse2 optimization flag and use it
13360         to emit better double->int conversions.
13361
13362 Tue Jul 3 19:42:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
13363
13364         * mini.c: the provided Min/Max optimizations are valid for unisgned
13365         ints.
13366
13367 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
13368
13369         * 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
13370
13371 2007-06-28  Miguel de Icaza  <miguel@novell.com>
13372
13373         * mini.c (mono_running_on_valgrind): Add support for reporting the
13374         method and  its boundaries to valgrind.
13375
13376 2007-06-28  Martin Baulig  <martin@ximian.com>
13377
13378         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
13379
13380 2007-06-25  Zoltan Varga  <vargaz@gmail.com>
13381
13382         * ssa.c (visit_inst): Add support for OP_BR. Fixes #81946.
13383
13384         * generic.2.cs: Add new test case.
13385
13386 2007-06-25  Martin Baulig  <martin@ximian.com>
13387
13388         Merged the `debugger-dublin' branch.
13389
13390         * debug-mini.c
13391         (mono_debugger_insert_method_breakpoint): New public method.
13392         (mono_debugger_remove_method_breakpoint): Likewise.
13393         (mono_debugger_check_breakpoints): New static method.
13394         (mono_debug_close_method): Call mono_debugger_check_breakpoints().
13395
13396         * debug-debugger.h (MonoDebuggerInfo):
13397         Renamed (to keep backward compatibility in the vtable):
13398         `insert_breakpoint' -> `old_insert_breakpoint'.
13399         `remove_breakpoint' -> `old_remove_breakpoint'.
13400         `create_string' -> `old_create_string'.
13401         `lookup_class' -> `old_lookup_class'.
13402         `lookup_type' -> removed; changed into a dummy field.
13403         `lookup_assembly' -> `old_lookup_assembly'.
13404         Added (same functionality, but different signature):
13405         `create_string', `lookup_class', `lookup_assembly'
13406         Added new:
13407         `get_method_addr_or_bpt', `remove_method_breakpoint',
13408         `runtime_class_init'.
13409
13410         * debug-debugger.c: Merged the `debugger-dublin' branch.
13411
13412 2007-06-23  Zoltan Varga  <vargaz@gmail.com>
13413
13414         * mini-amd64.c (peephole_pass_1): Optimize away moves at the beginning of the bb as
13415         well.
13416         (peephole_pass): Likewise.
13417
13418 Fri Jun 22 09:17:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
13419
13420         * driver.c: hopefully make setaffinity work also for ancient
13421         versions of linux.
13422
13423 2007-06-22  Atsushi Enomoto  <atsushi@ximian.com>
13424
13425         * driver.c : win32 build fix.
13426
13427 Thu Jun 21 19:24:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
13428
13429         * driver.c: check for the MONO_NO_SMP env var and bind to a single
13430         processor if it is set.
13431
13432 2007-06-21  Martin Baulig  <martin@ximian.com>
13433
13434         * debug-mini.h: New file.
13435
13436         * debug-mini.c
13437         (mono_debugger_insert_breakpoint_full): Moved here from
13438         ../metadata/mono-debug-debugger.c.
13439         (mono_debugger_remove_breakpoint): Likewise.
13440         (mono_debugger_breakpoint_callback): Likewise.
13441
13442 2007-06-15  Raja R Harinath  <rharinath@novell.com>
13443
13444         * jit-icalls.c (mono_helper_compile_generic_method): Update to
13445         changes in MonoGenericClass.
13446
13447 2007-06-14  Zoltan Varga  <vargaz@gmail.com>
13448
13449         * mini-codegen.c (mono_opcode_to_type): Fix ia64 build.
13450
13451 2007-06-14  Raja R Harinath  <rharinath@novell.com>
13452
13453         * jit-icalls.c (mono_helper_compile_generic_method): Update to
13454         removal of MonoGenericMethod.
13455
13456 Thu Jun 14 12:42:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
13457
13458         * mini-exceptions.c: hooks for the exception events profiling API.
13459
13460 2007-06-14  Randolph Chung  <tausq@debian.org>
13461
13462         * Makefile.ma: Add hppa target.
13463         * mini-arch.h: Include mini-hppa.h
13464         * cpu-hppa.md, exceptions-hppa.c, inssel-hppa.brg, mini-hppa.c,
13465         mini-hppa.h, tramp-hppa.c: New files for 32-bit HPPA port.
13466         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
13467
13468 2007-06-14  Randolph Chung  <tausq@debian.org>
13469
13470         * inssel.brg: Add rules for "chained" compare-branch operations so that
13471         a single compare op can affect multiple branches.  Adjust cost for
13472         OP_CEQ/OP_CGT/OP_CGT_UN/OP_CLT/OP_CLT_UN.
13473         * inssel-long32.brg: Update rules to use compare-branch macros.  Adjust
13474         cost for some rules so that they can more easily be overridden by
13475         per-arch rules (with fixes from lupus).
13476         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
13477
13478 2007-06-13  Randolph Chung  <tausq@debian.org>
13479
13480         * mini-ops.h: Reorder branch ops so that they match the order of the
13481         corresponding CEE_* ops.  The code expects them this way.
13482         Add new ops for HPPA target.
13483         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
13484
13485 2007-06-13  Randolph Chung  <tausq@debian.org>
13486
13487         * mini-exceptions.c: Handle cases where the stack grows towards
13488         larger addresses.
13489         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
13490
13491 Wed Jun 13 19:13:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
13492
13493         * jit-icalls.c, mini.h, mini.c: added virtual generic invoke
13494         counter.
13495         * driver.c: explain where a non-matching corlib is found.
13496
13497 2007-06-13  Mark Probst  <mark.probst@gmail.com>
13498
13499         * mini.c (print_jit_stats): Output dynamic code allocation stats.
13500
13501 2007-06-10  Sanghyeon Seo <sanxiyn@gmail.com>
13502
13503         * mini-exceptions.c: Generate a method profile leave event during
13504         an exception to ensure that the profiler gets notified.
13505
13506 2007-06-07  Zoltan Varga  <vargaz@gmail.com>
13507
13508         * mini-amd64.c (peephole_pass): Merge some small changes from the linear-ir 
13509         branch.
13510
13511         * cpu-amd64.md: Add long_and/or/xor opcodes.
13512
13513 2007-06-06  Wade Berrier  <wberrier@novell.com>
13514
13515         * cpu-s390x.md (shr_imm): Correct the length of shr_imm instruction.
13516         (./class/lib/monolite/mcs.exe:25498): WARNING **: wrong maximal instruction 
13517         length of instruction shr_imm (expected 8, got 10)
13518
13519 2007-06-06  Zoltan Varga  <vargaz@gmail.com>
13520
13521         * mini-ia64.c (mono_arch_output_basic_block): Really fix the build.
13522
13523 2007-06-06  Mark Probst  <mark.probst@gmail.com>
13524
13525         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
13526         MonoInternalHashTable again (fixed bug in the internal hash table
13527         code).
13528
13529 2007-06-06  Mark Probst  <mark.probst@gmail.com>
13530
13531         * mini.c, driver.c: Reverted the MonoInternalHashTable changes.
13532         Have to figure out what makes it crash the SWF regression.
13533
13534 2007-06-05  Zoltan Varga  <vargaz@gmail.com>
13535
13536         * mini-ia64.c (mono_arch_lowering_pass): Fix ia64 build.
13537
13538 Tue Jun 5 17:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
13539
13540         * mini.c: optimize out the type check when storing null in a
13541         reference array.
13542
13543 2007-06-04  Mark Probst  <mark.probst@gmail.com>
13544
13545         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
13546         MonoInternalHashTable.
13547
13548 Mon Jun 4 11:29:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
13549
13550         * inssel.brg, mini.c, mini-ops.h: optimized Math.Mini/Max
13551         signed integer methods.
13552
13553 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
13554
13555         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case 
13556         permanently since the current approach doesn't work.
13557
13558 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
13559
13560         * inssel.brg (stmt): Only call delegate->invoke_impl if 
13561         MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE is defined.
13562
13563 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
13564
13565         * mini-amd64.c (mono_arch_output_basic_block): Unify div/rem opcodes and handle
13566         the sreg2==rdx case.
13567         
13568         * mini-amd64.c cpu-amd64.md: Correct length of r4const instruction and take into
13569         account if it contains a rex prefix.
13570         (peephole_pass): Handle OP_FMOVE as well.
13571
13572 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
13573
13574         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case for now
13575         as it causes regressions.
13576
13577 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
13578
13579         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement support for the
13580         static case as well.
13581
13582         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix ia64 build.
13583
13584         * mini-x86.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
13585         (mono_arch_get_this_arg_from_call): Ditto.
13586
13587         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Removed.
13588
13589         * inssel.brg (mini_emit_virtual_call): Call delegate->Invoke through the delegate's
13590         invoke_impl field.
13591
13592         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
13593         (mono_arch_get_this_arg_from_call): Ditto.
13594
13595         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Removed.
13596         
13597         * mini-trampolines.c (mono_delegate_trampoline): Complete rewrite. On first call,
13598         try to create optimized invoke code and use that for further invocations. 
13599         Otherwise, use the original mono_marshal_get_delegate_invoke () implementation.
13600
13601         * mini-x86.h mini-ia64.h: Remove MONO_ARCH_HAS_CREATE_DELEGATE_TRAMPOLINE for now.
13602
13603 2007-05-29  Rodrigo Kumpera  <kumpera@gmail.com>
13604
13605         * inssel.brg (mini_emit_virtual_call): Statically dispatch virtual calls to
13606         sealed classes or methods.
13607         *devirtualization.cs: tests for the new optimization
13608
13609 2007-05-29  Zoltan Varga  <vargaz@gmail.com>
13610
13611         * liveness.c (update_gen_kill_set): No need to set VOLATILE flags here, it is done
13612         by the update_volatile () function.
13613
13614 2007-05-27  Zoltan Varga  <vargaz@gmail.com>
13615
13616         * driver.c (mono_main): Call g_thread_init () early since newer glib versions
13617         require it.
13618
13619         * abcremoval.c (mono_perform_abc_removal): Avoid using alloca.
13620
13621 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
13622
13623         * mini.c: Add configure checks for header files.
13624         * mini-x86.c: Add configure checks for header files.
13625         * trace.c: Add configure checks for header files.
13626         * aot-runtime.c: Add configure checks for header files.
13627         * aot-compiler.c: Add configure checks for header files.
13628         * driver.c: Add configure checks for header files.
13629         * mini-codegen.c: Add configure checks for header files.
13630         
13631         Code is contributed under MIT/X11 license.
13632
13633 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
13634
13635         * mini-ia64.c (mono_arch_lowering_pass): Fix the handling of
13636         icompare_imm -128 + op_iclt. Fixes #81703.
13637
13638 2007-05-19  Zoltan Varga  <vargaz@gmail.com>
13639
13640         * mini-codegen.c (mono_local_regalloc): Fix long-shift-regalloc on amd64.
13641
13642 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
13643
13644         * inssel.brg: added "mini_emit_load_intf_bit_reg_vtable", and used it
13645         inside "mini_emit_isninst_iface_cast" and "mini_emit_castclass_iface"
13646         so that all isinst checks now use "interface_bitmap".
13647
13648 2007-05-15  Zoltan Varga  <vargaz@gmail.com>
13649
13650         * cpu-amd64.md (jmp): Fix a warning.
13651
13652         * inssel.brg (CEE_SWITCH): Hopefully fix #80738.
13653
13654         * basic.cs: Add new regression test.
13655
13656         * basic.cs: Remove test which is now in basic-long.cs.
13657
13658         * mini-ia64.c (mono_arch_output_basic_block): Sign extend in CEE_CONV_I8/CEE_CONV_I.
13659
13660         * basic-long.cs: Add new test.
13661         
13662 2007-05-13  Zoltan Varga  <vargaz@gmail.com>
13663
13664         * mini-sparc.c (mono_spillvar_offset_float): Fix sparc build.
13665
13666 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
13667
13668         * cpu-x86.md minix-86.c: Add a peephole_pass_1 () as on amd64.
13669
13670         * mini-x86.c (mono_arch_output_basic_block): Use mono_opcode_to_cond () in a few
13671         places.
13672         
13673         * mini-x86.c (mono_arch_emit_exceptions): Decrease the size of the exception 
13674         throwing code a bit.
13675
13676         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Decrease the size of 
13677         the exception throwing code a bit.
13678
13679         * mini-x86.c (get_call_info): Allocate result from a mempool.
13680
13681 2007-05-11  Zoltan Varga  <vargaz@gmail.com>
13682
13683         * aot-compiler.c (find_typespec_for_class): Fix the assert.
13684
13685         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
13686
13687         * mini.h (MonoCompile): Add 'token_info_hash' field.
13688
13689         * mini.c: Save token->method associations during compilation so the AOT 
13690         compiler can use it.
13691         
13692         * aot-compiler.c aot-runtime.c: Add support for compiling non-generic methods
13693         which reference generic classes and methods.
13694
13695 2007-05-10  Zoltan Varga  <vargaz@gmail.com>
13696
13697         * mini.h mini-<ARCH>.h: Get rid of MONO_ARCH_HAS_XP_LOCAL_REGALLOC.
13698
13699         * aot-compiler.c (compile_method): Fix a typo in a comment.
13700
13701         * aot-runtime.c (decode_cached_class_info): Skip generic types.
13702
13703         * aot-compiler.c: Add minimal support for AOTing generic code by skipping 
13704         everything generic.
13705
13706         * mini.c (mono_method_to_ir): Disable AOT when calling helper_compile_generic_method.
13707
13708 2007-05-09  Zoltan Varga  <vargaz@gmail.com>
13709
13710         * mini.h (MonoCompile): Add 'args' field.
13711
13712         * mini.c (mono_compile_create_vars): Store variables representing the arguments
13713         into cfg->args.
13714
13715         * mini-<ARCH>.c: Use cfg->args for accessing the method arguments.
13716
13717 2007-05-08  Zoltan Varga  <vargaz@gmail.com>
13718
13719         * mini.c (mono_compile_get_interface_var): Remove this unused function.
13720
13721         * mini-ops.h inssel.brg mini-<ARCH>.c: Add a new opcode for ckfinite as well.
13722
13723         * mini-ops.h: Introduce new opcodes used in the IR instead of the original CEE_
13724         opcodes for some opcodes.
13725
13726         * mini.h *.brg *.c: Use the new opcodes.
13727
13728 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
13729
13730         * mini.h: Bumped aot revision.
13731
13732         * inssel.brg: modified code generation of type checks for interfaces
13733         to use the new "MonoClass.interface_bitmap" instead of the old
13734         "MonoClass.interface_offsets".
13735
13736 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
13737
13738         * cpu-amd64.md (jmp): Increase the maximum size of the jmp opcode to 128.
13739
13740 2007-04-29  Zoltan Varga  <vargaz@gmail.com>
13741
13742         * abcremoval.c (summarize_integer_value): Handle OP_LCONV_TO_I4 to fix abcrem on
13743         64 bit platforms.
13744
13745 2007-04-27  Neale Ferguson <neale@sinenomine.net>
13746
13747         * mini-s390x.c: Fix MONO_TYPE_VALUETYPE processing.
13748
13749 2007-04-27  Wade Berrier  <wberrier@novell.com>
13750
13751         * mini-s390x.c: Remove redeclaration of CompRelation and CompType (defined in 
13752         mini.h) to fix build.
13753
13754 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
13755
13756         * mini-amd64.c (peephole_pass_1): Fix and reenable this pass.
13757         
13758         * mini-amd64.c (mono_arch_local_regalloc): Disable the new peephole_pass_1 as it
13759         causes the corlib unit tests to fail.
13760
13761 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
13762
13763         * mini-codegen.c (mono_opcode_to_type): Fix a bug in the previous patch.
13764
13765         * mini-amd64.c (peephole_pass_1): New pass to perform before local regalloc.
13766
13767         * mini-codegen.c (mono_opcode_to_cond): New helper function to convert conditional 
13768         opcodes to the comparison relations.
13769
13770         * mini-codegen.c (mono_opcode_to_type): New helper function to convert conditional 
13771         opcodes to their types.
13772         
13773         * mini-ia64.c mini-amd64.c: Use mono_opcode_to_cond and mono_opcode_to_type.
13774
13775         * mini-amd64.c (get_call_info): Allocate the result from the cfg mempool and cache 
13776         it in cfg->arch.cinfo.
13777
13778         * local-propagation.c (mono_local_cprop_bb): Fix a warning.
13779
13780         * mini.h mini.c branch-opts.c: Change bbhash to be an array and store it in 
13781         cfg->cil_offset_to_bb.
13782
13783 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
13784
13785         * liveness.c (optimize_initlocals): New mini-pass to optimize away dead assignments
13786         created becase of initlocals.
13787
13788 2007-04-23  Zoltan Varga  <vargaz@gmail.com>
13789
13790         * mini-alpha.c cpu-alpha.md: More alpha port work from 
13791         Sergey Tikhonov <tsv@solvo.ru>.
13792
13793 2007-04-21  Andreas Faerber  <andreas.faerber@web.de>
13794
13795         * Makefile.am (BUILT_SOURCES): Fix for automake 1.6.x. Fixes #81417.
13796
13797 2007-04-19  Zoltan Varga  <vargaz@gmail.com>
13798
13799         * cpu-s390.md (break): Correct the length of break instruction.
13800
13801 Thu Apr 19 16:28:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
13802
13803         * mini.c: fix a couple of soft-float issues and comments.
13804
13805 2007-04-15  Miguel de Icaza  <miguel@novell.com>
13806
13807         * trace.c (is_filenamechar): - is also a filename char.
13808
13809 2007-04-15  Neale Ferguson <neale@sinenomine.net>
13810
13811         * mini-s390.c: Correct checking for enum type in return value processing.
13812
13813 2007-04-14  Raja R Harinath  <rharinath@novell.com>
13814
13815         * Makefile.am (BUILT_SOURCES): Add 'version.h'.
13816         (version.h): Makefile is in the build directory.
13817
13818 2007-04-06  Andreas Faerber  <andreas.faerber@web.de>
13819
13820         * mini-amd64.h: fix for assertion failure on Solaris/amd64
13821
13822 2007-04-11  Martin Baulig  <martin@ximian.com>
13823
13824         * mini.c (can_access_member): Fix handling of generic classes;
13825         fixes #81259.
13826
13827 2007-04-10  Zoltan Varga  <vargaz@gmail.com>
13828
13829         * aot-runtime.c (mono_aot_plt_resolve): Fix disabling of AOT. Fixes #81316.
13830
13831 2007-04-05  Zoltan Varga  <vargaz@gmail.com>
13832
13833         * aot-runtime.c: Fix disabling of AOT. Fixes #81316.
13834
13835 Fri Mar 23 20:25:31 CET 2007 Paolo Molaro <lupus@ximian.com>
13836
13837         * mini-codegen.c: make sure the right spill amount is
13838         used for fp or integer registers (fixes the float_sub_spill() on ppc).
13839
13840 Fri Mar 23 19:43:35 CET 2007 Paolo Molaro <lupus@ximian.com>
13841
13842         * mini-ppc.c: fixes for the fp_branch_nan test.
13843
13844 2007-03-23  Zoltan Varga  <vargaz@gmail.com>
13845
13846         * basic.cs: Comment out new test which still fails on ia64.
13847
13848 Fri Mar 23 15:54:23 CET 2007 Paolo Molaro <lupus@ximian.com>
13849
13850         * mini.c: immediate shifted or fix (mono_metadata_user_string assert).
13851
13852 Fri Mar 23 12:53:28 CET 2007 Paolo Molaro <lupus@ximian.com>
13853
13854         * mini-ppc.c, mini-ppc.h: struct passing ABI fix (bug #77968).
13855
13856 2007-03-22  Zoltan Varga  <vargaz@gmail.com>
13857
13858         * cfold.c (FOLD_BINOP): Cast the result to gint32 to prevent overflow problems
13859         on 64 bit machines. Fixes part of #80738.
13860
13861         * basic.cs: Add regression test.
13862
13863 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
13864
13865         * inssel.brg basic.cs: Revert previous change to fix build.
13866
13867         * inssel.brg (SWITCH): Clean out the upper word of the switch value on 64 bit
13868         platforms.
13869         
13870         * inssel.brg (SWITCH): Use an integer comparison. Fixes #80738.
13871
13872         * basic.cs: Add new regression test.
13873
13874 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
13875
13876         * mini-ia64.c (mono_arch_emit_prolog): Fix an assert when a function has too
13877         many arguments.
13878
13879 2007-03-16  Neale Ferguson <neale@sinenomine.net>
13880
13881         * cpu-s390x.md: Correct length of break instruction.
13882
13883 2007-03-16  Neale Ferguson <neale@sinenomine.net>
13884
13885         * mini-s390x.c, cpu-s390x.md: Fix #80507 for s390x.
13886         * mini-s390.c, cpu-s390.md: Fix #80507 for s390.
13887
13888 2007-03-15  Jonathan Chambers  <joncham@gmail.com>
13889
13890         * *.c: Begin WIN64 port.
13891         * mini.c:  Use correct register in profiler.
13892         * mini-amd64.c: No inline assembly on Win64.
13893         * mini-amd64.h: Implement MONO_INIT_CONTEXT_FROM_FUNC for Win64.
13894         Only define MONO_ARCH_USE_SIGACTION on non-windows platforms.
13895         * exceptions-amd64.c: Only need gregs_from_ucontext if MONO_ARCH_USE_SIGACTION
13896         is defined. Implement mono_arch_sigctx_to_monoctx, mono_arch_monoctx_to_sigctx, and
13897         mono_arch_ip_from_context for Win64.
13898         
13899         Contributed under MIT/X11 license.
13900
13901 2007-03-15  Zoltan Varga  <vargaz@gmail.com>
13902
13903         * exceptions-amd64.c (seh_handler): Ditto.
13904
13905         * exceptions-x86.c (seh_handler): Fix a memory leak.
13906
13907 Thu Mar 15 13:47:59 CET 2007 Paolo Molaro <lupus@ximian.com>
13908
13909         * mini-arm.c, mini-mips.c, mini-ppc.c, mini-s390.c,
13910         mini-s390x.c: fixed peephole optimizations to deal
13911         correctly with 1 and 2 byte reload avoidance.
13912
13913 Thu Mar 15 10:17:54 CET 2007 Paolo Molaro <lupus@ximian.com>
13914
13915         * cpu-s390.md, cpu-s390x.md: update localloc length.
13916
13917 Wed Mar 14 21:00:19 CET 2007 Paolo Molaro <lupus@ximian.com>
13918
13919         * cpu-g4.md: added missing descriptions.
13920
13921 2007-03-14  Miguel de Icaza  <miguel@novell.com>
13922
13923         *  Makefile.am: Add support so the tail tests are not executed on
13924         PowerPC as that is a known limitation of the PowerPC port.
13925
13926 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
13927
13928         * runmdesc.bat:  Move to msvc directory.
13929         
13930 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
13931
13932         * runmdesc.bat:  Run executable that was produced by the current
13933         target and sent via an argument.
13934         
13935 2007-03-11  Zoltan Varga  <vargaz@gmail.com>
13936
13937         * mini.c (mono_method_to_ir): Fix box+brtrue optimization. Fixes
13938         #81102.
13939
13940         * generics.2.cs: Add regression test.
13941
13942 2007-03-09  Wade berrier  <wberrier@novell.com>
13943
13944         * mini-ppc.h: Undo typo of MONO_CONTEXT_SET_SP (ppc doesn't define this symbol)
13945
13946 2007-03-09  Zoltan Varga  <vargaz@gmail.com>
13947
13948         * aot-runtime.c (load_aot_module): Load all dependent assemblies eagerly since all
13949         AOT code depends on this.
13950
13951 Thu Mar 8 19:36:13 CET 2007 Paolo Molaro <lupus@ximian.com>
13952
13953         * mini.c: more precise tracking of types in the eval stack
13954         (part of fix for bug #81044).
13955
13956 2007-03-07  Zoltan Varga  <vargaz@gmail.com>
13957
13958         * aot-runtime.c (mono_aot_get_class_from_name): Add a cache.
13959
13960         * aot-compiler.c (encode_patch): Remove an obsolete comment.
13961
13962 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
13963
13964         * mini-exceptions.c (mono_handle_native_sigsegv): Fix a warning.
13965
13966         * mini.c (mono_method_to_ir): Add a workaround for bug #80733.
13967
13968 2007-02-22  Zoltan Varga  <vargaz@gmail.com>
13969
13970         * mini.c (type_from_op): Convert CEE_CONV_U to OP_LCONV_TO_U when the argument is
13971         a pointer on 64 bit systems. Fixes #80190.
13972
13973         * iltests.il: Add new regression test.
13974
13975 Tue Feb 20 11:33:28 CET 2007 Paolo Molaro <lupus@ximian.com>
13976
13977         * mini.c: inline a constant for Environment.IsRunningOnWindows.
13978
13979 2007-02-19  Geoff Norton  <gnorton@customerdna.com>
13980
13981         * trace.c: Remove an erroneous alignemnt check when tracing.
13982           Fixes --trace on OSX86.
13983
13984 Wed Feb 14 19:45:56 CET 2007 Paolo Molaro <lupus@ximian.com>
13985
13986         * mini-$(arch).h: initialize SP in context for all the archs.
13987
13988 2007-02-14  Sebastien Pouliot  <sebastien@ximian.com>
13989
13990         * mini-x86.h: Initialize SP in MONO_INIT_CONTEXT_FROM_FUNC. Fix CAS
13991         regressions in the thread tests.
13992
13993 2007-02-14  Zoltan Varga  <vargaz@gmail.com>
13994
13995         * *-alpha.*: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>:
13996         - fixed implementation of LOCALLOC opcode
13997         - implemented non-un compare for floats
13998         - code cleanup
13999         - implementation of FDIV and CKFINITE opcodes
14000         - fixes for latest mono updates
14001         - additional arch opcodes
14002
14003 Mon Feb 12 11:54:16 CET 2007 Paolo Molaro <lupus@ximian.com>
14004
14005         * Makefile.am: simplify and merge rules for cross-compilation.
14006
14007 2007-02-07  Massimiliano Mantione  <massi@ximian.com>
14008
14009         * local-propagation.c: Actually *apply* the fix for bug 80591...
14010
14011 Tue Feb 6 19:03:19 CET 2007 Paolo Molaro <lupus@ximian.com>
14012
14013         * mini-exceptions.c: backuot part of the last change
14014         (fixes cas tests on amd64 related to GetExecutingAssembly ()).
14015
14016 2007-02-06  Massimiliano Mantione  <massi@ximian.com>
14017         * inssel.brg: Fix bug 59286.
14018
14019
14020 Tue Feb 6 12:23:50 CET 2007 Paolo Molaro <lupus@ximian.com>
14021
14022         * mini-exceptions.c: patch from Zoltan to correctly check for
14023         stack boundaries (using the stack register, not the frame register),
14024         fixes bugs #80724, #79717.
14025
14026 2007-02-03  Zoltan Varga  <vargaz@gmail.com>
14027
14028         * mini-ia64.c inssel-sparc.brg mini-sparc.c cpu-sparc.md: Get rid of OP_SETREG/
14029         OP_SETREGIMM, use OP_MOVE/OP_ICONST instead.
14030
14031         * mini-amd64.c (mono_arch_output_basic_block): Fix ATOMIC_EXCHANGE in the
14032         presence of frame pointer elimination.
14033
14034 2007-02-01  Geoff Norton  <gnorton@customerdna.com>
14035         
14036         * mini-x86.h: NetBSD UCONTEX_REG defines.
14037
14038 2007-02-01  Zoltan Varga  <vargaz@gmail.com>
14039
14040         * inssel-amd64.brg: Fix amd64 build.
14041
14042 Thu Feb 1 14:02:09 CET 2007 Paolo Molaro <lupus@ximian.com>
14043
14044         * mini.h: remove extern to workaround what looks likes gcc bug 26905
14045         on amd64.
14046
14047 2007-01-31  Zoltan Varga  <vargaz@gmail.com>
14048
14049         * mini-codegen.c (mono_is_regsize_var): New helper function usable by the back
14050         ends.
14051
14052         * mini-<ARCH>.c: Use mono_is_regsize_var ().
14053
14054 2007-01-30 Mark Mason <mason@broadcom.com>
14055
14056            * exceptions-mips.c: Lots of exception handling fixes, LMFs now work, some cleanups.
14057            * mini-mips.h: Add LMF magic numbers, and fix context set/get macros.
14058            * mini-mips.c: Cleanups, LMF handling now works, optimize store of zero, implement localloc
14059            beginning support for CEE_JMP [not quite working yet]
14060            * tramp-mips.c: LMF handling now works
14061         
14062 2007-01-30  Zoltan Varga  <vargaz@gmail.com>
14063
14064         * mini-amd64.c (peephole_pass): Optimize code common in initlocals blocks.
14065
14066         * mini.h (NULLIFY_INS): New macro.
14067
14068 Tue Jan 30 16:33:33 CET 2007 Paolo Molaro <lupus@ximian.com>
14069
14070         * mini.c: statistical profiler fix for windows, patch
14071         from Tor Lillqvist (tml@novell.com).
14072
14073 2007-01-30  Massimiliano Mantione  <massi@ximian.com>
14074         * local-propagation.c: Fix bug 80591.
14075
14076 Mon Jan 29 12:14:34 CET 2007 Paolo Molaro <lupus@ximian.com>
14077
14078         * Makefile.am: put back the --export-dynamic option as with
14079         the previous gmodule flags (thanks to Robert Jordan).
14080
14081 2007-01-28  Zoltan Varga  <vargaz@gmail.com>
14082
14083         * mini-sparc.c (peephole_pass): Fix #80622 for sparc as well.
14084
14085         mini.h *.c: Allocate fp vregs from the same pool as the int vregs. Use this to
14086         simplify and speed up the local register allocator. Also rename some fields
14087         like iassign->vassign.
14088         
14089         * regalloc.c: Remove some functions which are no longer used since their
14090         inlined version is in mini-codegen.c.
14091         
14092         * mini-codegen.c: Rename mono_regstate2_ functions to mono_regstate_.
14093
14094         * basic.cs objects.cs iltests.il: Merge tests from the linear IL branch.
14095
14096 2007-01-27  Zoltan Varga  <vargaz@gmail.com>
14097
14098         * mini-amd64.c (peephole_pass): Remove optimizations which omit a 
14099         narrowing. Fixes #80622.
14100
14101         * iltests.il: Add new regresssion test. 
14102
14103 Fri Jan 26 18:31:45 CET 2007 Paolo Molaro <lupus@ximian.com>
14104
14105         * mini.h, mini-trampolines.c, aliasing.c, mini-codegen.c,
14106         debug-debugger.c, debug-debugger.h: warning fixes.
14107         * driver.c: updated copyright year and made it fit in one line.
14108
14109 Fri Jan 26 12:48:39 CET 2007 Paolo Molaro <lupus@ximian.com>
14110
14111         * aot-runtime.c: updated to use mono-dl instead of gmodule.
14112
14113 2007-01-25  Zoltan Varga  <vargaz@gmail.com>
14114
14115         * mini-x86.c (mono_arch_output_basic_block): Fix #80507 for x86.
14116
14117         * mini-amd64.c (mono_arch_output_basic_block): Fix #80507 for amd64.
14118
14119         * iltests.il: Add new test for bug #80507.
14120
14121 Wed Jan 24 19:10:28 CET 2007 Paolo Molaro <lupus@ximian.com>
14122
14123         * mini-arm.h: use soft-float also on vfp for now.
14124
14125 Wed Jan 24 14:54:40 CET 2007 Paolo Molaro <lupus@ximian.com>
14126
14127         * mini.c: fix some more soft-float issues.
14128
14129 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
14130
14131         * mini-sparc.h (MONO_ARCH_FRAME_ALIGNMENT): Fix sparc build.
14132
14133 2007-01-24  Massimiliano Mantione  <massi@ximian.com>
14134         * mini-arch.h, , inssel-amd64.brg, mini-x86.c, inssel-x86.brg,
14135         mini-ia64.c, mini-sparc.c, mini-alpha.c: Introduced
14136         MONO_ARCH_LOCALLOC_ALIGNMEENT to fix bug 80498.
14137
14138 Wed Jan 24 12:04:39 GMT 2007 Paolo Molaro <lupus@ximian.com>
14139
14140         * mini-arm.c: typo fix.
14141
14142 2007-01-23  Neale Ferguson <neale@sinenomine.net>
14143
14144         * mini-s390x.c: Use lgb instructions for I1 type variables instead of lb.
14145
14146 2007-01-21  Zoltan Varga  <vargaz@gmail.com>
14147
14148         * mini.c (mono_allocate_stack_slots_full): Allocate memory from the cfg mempool.
14149         Share stack slots for scalar types. Avoid expensive g_list_free () calls.
14150
14151         * mini-x86.c (mono_arch_allocate_vars): Don't free the result of allocate_stack_slots_full.
14152
14153         * mini-amd64.c mini-ia64.c mini-alpha.c: Ditto. 
14154
14155         * mini.h (MonoJitStats): Add a new JIT statistics: locals_stack_size.
14156         
14157         * inssel.brg: Fix a warning.
14158
14159         * mini.h (MonoBasicBlock): Make bb->dominated a GSList.
14160
14161         * abcremoval.c ssa.c ssapre.c: Update after this change.
14162         
14163         * dominators.c (compute_dominators): Allocate bb->dominated from the cfg mempool.
14164
14165         * dominators.c (df_set): Use mono_bitset_union_fast.    
14166
14167 Sat Jan 20 16:59:01 CET 2007 Paolo Molaro <lupus@ximian.com>
14168
14169         * mini.h, genmdesc.c, genmdesc.pl, mini-${arch}.c, cprop.c,
14170         mini-codegen.c: reduce relocations and memory usage for the cpu
14171         description.
14172
14173 2007-01-20  Zoltan Varga  <vargaz@gmail.com>
14174
14175         * mini-codegen.c (mono_regstate2_alloc_int): Optimize this using bsfq on amd64.
14176
14177         * genmdesc.c genmdesc.pl mini.h: Remove some unused fields from the mdesc tables
14178         to reduce their size.
14179
14180 2007-01-19 Mark Mason <mason@broadcom.com>
14181
14182         * exceptions-mips.c: fix mono_arch_ip_from_context(), increase exception debug support.
14183         * mini-mips.c: more configuration macros, support long conditional branches, additional
14184         asserts, fix epilog instrumentation.
14185         * mini-mips.h: use standard stack walk
14186         * cpu-mips.md: increase size of div, rem and conditional branches
14187         
14188 Fri Jan 19 17:23:32 CET 2007 Paolo Molaro <lupus@ximian.com>
14189
14190         * mini.h, mini-codegen.c, mini-$(arch).h: claenup references
14191         to cpu spec data.
14192
14193 2007-01-19  Zoltan Varga  <vargaz@gmail.com>
14194
14195         * aot-compiler.c (encode_klass_info): Allow classes of the form <Type>[][].
14196         (compile_method): Ditto.
14197
14198         * aot-runtime.c (decode_klass_info): Ditto.
14199
14200         * mini.c (mono_method_to_ir): Call mono_get_got_var () in a place where it is
14201         needed by the code generated by inssel.brg. Also fix a warning.
14202
14203 Thu Jan 18 17:55:22 CET 2007 Paolo Molaro <lupus@ximian.com>
14204
14205         * mini.c: deal with enums that become genericinsts by
14206         being nested in a generic class (bug #79956).
14207
14208 Thu Jan 18 16:52:56 CET 2007 Paolo Molaro <lupus@ximian.com>
14209
14210         * mini.c: match the generic definition to check for
14211         private access with generic types (bug #78431).
14212
14213 Thu Jan 18 11:50:13 CET 2007 Paolo Molaro <lupus@ximian.com>
14214
14215         * genmdesc.pl, Makefile.am: perl implementation of genmdesc,
14216         to make life easier for people cross-compiling that insist on not
14217         using scratchbox.
14218
14219 2007-01-17 Mark Mason <mason@broadcom.com>
14220
14221         * inssel-long.brg: patch to deal with mips missing flags
14222         * inssel-long32-mips.brg: implement overflow checks
14223         * insset-mips.brg: implement overflow checks
14224         * mini-mips.h: implement conditional exception handling
14225         * mini-mips.c: add mips_emit_exc_by_name(), implement conditional exception handling.
14226           Remove unused code, minor cleanups.
14227         * exceptions-mips.c: minor cleanups
14228         * mini-ops.h: add mips conditional exception ops
14229         * cpu-mips.md: add mips conditional exception ops
14230
14231         
14232 Wed Jan 17 19:22:34 CET 2007 Paolo Molaro <lupus@ximian.com>
14233
14234         * inssel.brg: patch from Mark Mason <mason@broadcom.com>
14235         to deal with mips missing of flags.
14236
14237 Tue Jan 16 20:01:01 CET 2007 Paolo Molaro <lupus@ximian.com>
14238
14239         * exceptions-ppc.c: execute fault handlers.
14240
14241 Tue Jan 16 19:54:44 CET 2007 Paolo Molaro <lupus@ximian.com>
14242
14243         * mini-ppc.c: handle missing call locationss with FORCE_INDIR_CALL.
14244
14245 Tue Jan 16 13:14:31 CET 2007 Paolo Molaro <lupus@ximian.com>
14246
14247         * mini.c: handle also floating point values in initialize_array.
14248
14249 Tue Jan 16 12:42:40 CET 2007 Paolo Molaro <lupus@ximian.com>
14250
14251         * mini.c, aot-runtime.c, aot-compiler.c: enable aot compilation of
14252         array initialization and make it conditional on the intrins option.
14253
14254 Tue Jan 16 11:28:45 CET 2007 Paolo Molaro <lupus@ximian.com>
14255
14256         * mini.h, patch-info.h, Makefile.am, aot-compiler.c: reduce
14257         relocations and put the patch info names close to the enum definition.
14258
14259 2007-01-15 Mark Mason <mason@broadcom.com>
14260
14261         * basic.cs, exceptions.cs: break up large tests to increase debugability.
14262
14263 Mon Jan 15 18:57:14 CET 2007 Paolo Molaro <lupus@ximian.com>
14264
14265         * mini.c: optimized RuntimeHelpers::InitializeArray () calls.
14266
14267 2007-01-12  Raja R Harinath  <rharinath@novell.com>
14268
14269         * mini.c (mono_method_to_ir): Use new MonoGenericContext accessor.
14270
14271 Thu Jan 11 11:16:42 CET 2007 Paolo Molaro <lupus@ximian.com>
14272
14273         * Makefile.am: distribute the mips sources.
14274
14275 Wed Jan 10 19:49:33 CET 2007 Paolo Molaro <lupus@ximian.com>
14276
14277         * mini-codegen.h: handle bug #80489 here, by excluding ecx
14278         directly.
14279
14280 Wed Jan 10 19:08:05 CET 2007 Paolo Molaro <lupus@ximian.com>
14281
14282         * cpu-x86.md: back out for now as this triggers other regressions.
14283
14284 Wed Jan 10 18:33:16 CET 2007 Paolo Molaro <lupus@ximian.com>
14285
14286         * cpu-x86.md: force src1 and dest regpair for long shift instructions
14287         to eax:edx, so ecx can't get allocated to them (bug #80489).
14288
14289 Tue Jan 9 12:36:11 CET 2007 Paolo Molaro <lupus@ximian.com>
14290
14291         * mini.c, mini-exceptions.c: enabled running fault handlers
14292         (bug #80469).
14293
14294 2007-01-03  Miguel de Icaza  <miguel@novell.com>
14295
14296         * driver.c: If nothing fail, do not use the string "failed",
14297         because it makes it very annoying to view test result logs on the
14298         web. 
14299
14300 2006-12-30  Miguel de Icaza  <miguel@novell.com>
14301
14302         * debug-debugger.c (mono_debugger_main): Rename "main" to
14303         "main_method" to prevent a warning.
14304
14305         Remove a warning for unused field.
14306
14307 2006-12-28  Martin Baulig  <martin@ximian.com>
14308
14309         * debug-debugger.c
14310         (MONO_DEBUGGER__debugger_info): Add `get_lmf_addr'.
14311
14312 2006-12-22  Martin Baulig  <martin@ximian.com>
14313
14314         * mdb-debug-info32.s, mdb-debug-info64.s: New files.
14315         Put a pointer to the `MONO_DEBUGGER__debugger_info' into a
14316         seperate `.mdb_debug_info' section, so we can access it from the
14317         debugger even if the binary is stripped.
14318
14319         * debug-debug.c: Reference the `MONO_DEBUGGER__debugger_info_ptr'
14320         from the `.mdb_debug_info' here to prevent the linker from
14321         removing that section.
14322
14323         * Makefile.am (mono_debugger_sources): Add mdb-debug-info32.s /
14324         mdb-debug-info64.s.
14325
14326 2006-12-19  Robert Jordan  <robertj@gmx.net>
14327
14328         * mini-x86: enable the code to return small structures in
14329         registers for FreeBSD as well. Fixes bug #80278.
14330         * aot-runtime.c: Include sys/wait.h for WEXITSTATUS/WIFEXITED.
14331
14332 Mon Dec 18 19:47:17 CET 2006 Paolo Molaro <lupus@ximian.com>
14333
14334         * mini-x86.c: align the stack when calling the profiler
14335         function instrumenting the prolog (on OSX).
14336
14337 Thu Dec 14 15:22:43 CET 2006 Paolo Molaro <lupus@ximian.com>
14338
14339         * mini.c: emit a break opcode where Debugger.Break () is called.
14340
14341 2006-12-13  Miguel de Icaza  <miguel@novell.com>
14342
14343         * mini.c (mono_method_to_ir): Provide useful information on this
14344         assert, to prevent others from debugging like I did.
14345
14346 Tue Dec 12 17:01:38 CET 2006 Paolo Molaro <lupus@ximian.com>
14347
14348         * mini.c: enable code which was incorrectly commented
14349         (bug #80235).
14350
14351 Tue Dec 12 16:28:15 CET 2006 Paolo Molaro <lupus@ximian.com>
14352
14353         * mini-x86.c: enable on OSX, too, the code to return small
14354         structures in registers.
14355
14356 Mon Dec 11 19:22:35 CET 2006 Paolo Molaro <lupus@ximian.com>
14357
14358         * mini-x86.c: remove the use of the dynamic code manager here, too.
14359
14360 Mon Dec 11 19:08:33 CET 2006 Paolo Molaro <lupus@ximian.com>
14361
14362         * mini.h, debug-debugger.c, tramp-*.c: fixed 
14363         mono_debugger_create_notification_function() to use
14364         mono_global_codeman_reserve () instead of a dynamic code manager.
14365
14366 Tue Dec 5 17:54:50 CET 2006 Paolo Molaro <lupus@ximian.com>
14367
14368         * mini.c, jit-icalls.h, jit-icalls.c: remove the 
14369         ves_array_element_address() jit icall and use a generated
14370         managed method instead (which is about 4 times faster for a rank 3
14371         array access).
14372
14373 2006-11-29  Mark Mason  <mason@broadcom.com>
14374
14375         * basic-calls.cs: additional tests for passing
14376         structures as function arguments.
14377
14378 2006-11-29  Mark Mason  <mason@broadcom.com>
14379
14380         * mini-mips.h: disable custom exception handling
14381         * mini-mips.c: throw/rethrow should use jalr to call
14382         exception stubs.  Fixed bug with passing structures
14383         by value. More support for tracing floating point
14384         functions.
14385
14386 Wed Nov 29 20:28:17 CET 2006 Paolo Molaro <lupus@ximian.com>
14387
14388         * mini.c: fixed typo in the soft-float ldind.r4 handling
14389         (bug #80086).
14390
14391 Wed Nov 29 11:33:03 CET 2006 Paolo Molaro <lupus@ximian.com>
14392
14393         * mini.c, mini.h, driver.c: added --runtime command line
14394         option to select a different runtime than the autodetected one.
14395         * jit.h: added API for embedders to initialize with a specific
14396         runtime version.
14397
14398 Tue Nov 28 21:24:55 CET 2006 Paolo Molaro <lupus@ximian.com>
14399
14400         * mini.c: handle also boxing of r4 values (bug #80024).
14401
14402 Tue Nov 28 19:45:44 CET 2006 Paolo Molaro <lupus@ximian.com>
14403
14404         * mini-ppc.c: force indirect calls until we reserve
14405         enough address space for all the generated code.
14406
14407 Tue Nov 28 20:04:34 GMT 2006 Paolo Molaro <lupus@ximian.com>
14408
14409         * exceptions-arm.c: workaround bugs in the libc definition
14410         of struct ucontext.
14411
14412 Mon Nov 27 15:13:41 CET 2006 Paolo Molaro <lupus@ximian.com>
14413
14414         * inssel.brg: fixes from me and Mark Mason.
14415
14416 2006-11-23  Dick Porter  <dick@ximian.com>
14417
14418         * wapihandles.c (mini_wapi_seminfo): No need to adjust the counter
14419         semaphore display now we've fixed the initial value
14420
14421 Wed Nov 22 11:04:37 CET 2006 Paolo Molaro <lupus@ximian.com>
14422
14423         * inssel.brg: partially revert the last change to fix the build.
14424
14425 2006-11-21  Mark Mason  <mason@broadcom.com>
14426
14427         * inssel.brg: Add and use compare-and-branch macros to support
14428         architectures that do not have condition code registers (ie. MIPS).
14429         * *-mips.{c,brg,md}: Fix copyright statements
14430
14431 2006-11-20  Mark Mason  <mason@broadcom.com>
14432
14433         * Makefile.am: remove mini-codegen.c from list of MIPS sources
14434         * mini.c: Allow GET_CONTEXT to be specified by the arch port
14435         * mini.h: Added declaration for mono_print_ins()
14436         * mini-codegen.c: added ins_spec initializer for MIPS
14437         * mini-codegen.c (mono_call_inst_add_outarg_reg): added asserts for
14438         vreg to be virtual and hreg to be non-virtual.
14439         * mini-codegen.c (mono_spillvar_offset): assert if MIPS - spilling
14440         is not yet working/implemented correctly.
14441         * mini-codegen.c (print_ins): rename to mono_print_ins(), make
14442         non-static, fixup calls to print_ins() from other parts in the file.
14443
14444 2006-11-20  Mark Mason  <mason@broadcom.com>
14445
14446         * basic-calls.cs: added tests for passing structures as arguments
14447         to calls.
14448
14449 Mon Nov 20 19:40:11 CET 2006 Paolo Molaro <lupus@ximian.com>
14450
14451         * inssel-long32.brg: optimize signed division by power of two.
14452
14453 Mon Nov 20 17:37:58 CET 2006 Paolo Molaro <lupus@ximian.com>
14454
14455         * mini-arm.c: added support for interworking with thumb code
14456         (mono must be still be built using the ARM instruction encoding).
14457
14458 2006-11-19  Miguel de Icaza  <miguel@novell.com>
14459
14460         * mini.c (type_from_op): Separate the conditions for OP_EQ as the
14461         verifier has different rules for it.   Fixes a few verifier issues
14462         in the test suite.
14463
14464         * mini-exceptions.c (mono_handle_native_sigsegv): Put the message
14465         at the end, so people know what happened.
14466
14467 Thu Nov 16 14:07:18 CET 2006 Paolo Molaro <lupus@ximian.com>
14468
14469         * brach-opts.c: in optimize_exception_target() make sure we
14470         are in a catch clause (fixes bug #79871).
14471
14472 Thu Nov 16 12:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
14473
14474         * jit-icalls.c, jit-icalls.h, mini-arm.c, mini.c:
14475         more soft-float support fixes.
14476
14477 Wed Nov 15 18:45:47 GMT 2006 Paolo Molaro <lupus@ximian.com>
14478
14479         * mini-arm.c, inssel-arm.brg: ABI fix for longs and doubles
14480         that are passed half on the stack and half in registers.
14481
14482 Wed Nov 15 17:00:27 CET 2006 Paolo Molaro <lupus@ximian.com>
14483
14484         * mini-ops.h, mini-arch.h, helpers.c, Makefile.am:
14485         more mips integration work from Mark E Mason 
14486         <mark.e.mason@broadcom.com>.
14487
14488 Wed Nov 15 16:34:03 CET 2006 Paolo Molaro <lupus@ximian.com>
14489
14490         * exceptions-mips.c, inssel-mips.brg, mini-mips.h,
14491         cpu-mips.md, inssel-long32-mips.brg, mini-mips.c,
14492         tramp-mips.c: added sources for the mips port, not
14493         integrated in the build yet. Contributed by
14494         Mark E Mason <mark.e.mason@broadcom.com>.
14495
14496 2006-11-14  Neale Ferguson <neale@sinenomine.net>
14497
14498         * mini-s390[x].c (is_regsize_var): Support PTR/FNPTR too.
14499
14500 Tue Nov 14 16:06:37 CET 2006 Paolo Molaro <lupus@ximian.com>
14501
14502         * Makefile.am, inssel-float.brg, inssel-softfloat.brg:
14503         put the soft-float rules in its own file since it seems to
14504         break s390 compilation.
14505
14506 Mon Nov 13 15:54:38 CET 2006 Paolo Molaro <lupus@ximian.com>
14507
14508         * mini-arm.c: fixed wrnings.
14509
14510 Fri Nov 10 19:18:32 CET 2006 Paolo Molaro <lupus@ximian.com>
14511
14512         * mini-arm.c, mini-arm.h, cpu-arm.md, inssel-float.brg,
14513         inssel-arm.brg: ARM support for soft-float.
14514
14515 Fri Nov 10 18:38:15 CET 2006 Paolo Molaro <lupus@ximian.com>
14516
14517         * mini.c, jit-icalls.c, jit-icalls.h: added first cut at handling
14518         loads and stores of 32 bit fp values.
14519
14520 2006-11-10  Zoltan Varga  <vargaz@gmail.com>
14521
14522         * mini-sparc.c (is_regsize_var): Support PTR/FNPTR too.
14523
14524         * tramp-sparc.c (mono_arch_patch_callsite): Fix this function so it actually
14525         works. Fixes #79852 and #79463.
14526
14527 Thu Nov 9 16:56:13 CET 2006 Paolo Molaro <lupus@ximian.com>
14528
14529         * mini.c, mini-codegen.c, jit-icalls.c, jit-icalls.h:
14530         more soft-float support WIP and fixes.
14531
14532 Wed Nov 8 16:40:02 CET 2006 Paolo Molaro <lupus@ximian.com>
14533
14534         * mini-arm.c: some VFP updates.
14535
14536 Tue Nov 7 19:45:51 CET 2006 Paolo Molaro <lupus@ximian.com>
14537
14538         * mini-exceptions.c: 0 is a valid local var offset in some
14539         architectures, don't assert (bug #78508).
14540
14541 Tue Nov 7 18:17:52 GMT 2006 Paolo Molaro <lupus@ximian.com>
14542
14543         * exceptions-arm.c: fixed off by one error in stack walk code.
14544
14545 Tue Nov 7 11:27:26 CET 2006 Paolo Molaro <lupus@ximian.com>
14546
14547         * mini.h, mini.c: more precise tracking of type load exceptions.
14548
14549 2006-11-03  Robert Jordan  <robertj@gmx.net>
14550
14551         * Makefile.am: [WIN32] Add monow.exe target.
14552         * driver.c: [WIN32] Don't detach the console when debugging.
14553         Fixes bug #79797.
14554         
14555 2006-10-30  Miguel de Icaza  <miguel@novell.com>
14556
14557         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Eliminate warning.
14558
14559 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
14560
14561         * aot-compiler.c (emit_method_info): Add a case missed earlier.
14562
14563         * driver.c (mini_regression): Fix --regression with AOT.
14564
14565         * aot-compiler.c (emit_method_info): Fix AOT on amd64.
14566
14567 2006-10-17  Zoltan Varga  <vargaz@gmail.com>
14568
14569         * mini.c (GET_CONTEXT): Correct the definition of this for sparc/linux.
14570
14571         * mini-sparc.h: Don't use sigaction on sparc/linux.
14572
14573         * exceptions-sparc.c: Call mono_arch_flush_icache () in a couple of places.
14574
14575         * mini-sparc.c (mono_sparc_flushw): Call mono_arch_flush_icache ().
14576
14577         * mini-exceptions.c: Add proper include files for getpid ().
14578
14579 2006-10-16  Zoltan Varga  <vargaz@gmail.com>
14580
14581         * aot-runtime.c (mono_aot_get_method): Change this to return the native code
14582         address instead of a MonoJitInfo* to avoid decoding the exception info for the
14583         method.
14584
14585         * aot-runtime.c aot-compiler.c: Use uint16 instead of uint32 entries in the
14586         name cache to reduce its size.
14587
14588         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
14589
14590 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
14591
14592         * mini-x86.c: Save/restore the current LMF structure more efficiently using
14593         the mono_lmf TLS variable.
14594
14595         * exceptions-x86.c (mono_arch_find_jit_info): Only access lmf->method in 
14596         trampoline lmf frames.  
14597
14598         * mini-sparc.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Define this on sparc as well.
14599
14600 2006-10-14  Zoltan Varga  <vargaz@gmail.com>
14601
14602         * mini-amd64.c: Save/restore the current LMF structure more efficiently using
14603         the mono_lmf TLS variable.
14604
14605         * mini-exceptions.c: Access the LMF structure through accessors.
14606
14607         * mini.c: Allow the backends the option for storing the lmf in a dedicated TLS 
14608         variable instead of in jit_tls->lmf.
14609
14610         * mini-x86.c mini-amd64.c: Update after lmf->lmf_addr name change.
14611         
14612         * exceptions-amd64.c (mono_arch_find_jit_info): Only access lmf->method in 
14613         trampoline lmf frames.
14614
14615         * mini-amd64.c (mono_arch_emit_prolog): Do not set lmf->method as it is not needed.
14616
14617 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
14618
14619        * mini.c trace.c mini-x86.c: Revert these too.
14620         
14621        * mini.c trace.c mini-x86.c: Remove warning workarounds after the mono_type_size ()
14622        signature change.
14623
14624 Tue Oct 10 11:35:20 CEST 2006 Paolo Molaro <lupus@ximian.com>
14625
14626         * genmdesc.c: removed now dead code.
14627
14628 2006-10-09  Robert Jordan <robertj@gmx.net>
14629
14630         * mini.c: Disable the CrashReporter on MacOS X; Fixes #74869
14631
14632 Mon Oct 9 17:06:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
14633
14634         * mini.h: do not leave gaps in the opcode values.
14635
14636 Mon Oct 9 16:08:51 CEST 2006 Paolo Molaro <lupus@ximian.com>
14637
14638         * jit-icalls.h: flag functions as internal here, too.
14639
14640 Mon Oct 9 15:58:18 CEST 2006 Paolo Molaro <lupus@ximian.com>
14641
14642         * mini.h, aliasing.h, declsec.h, regalloc.h, trace.h: mark internal
14643         functions with the internal attribute.
14644
14645 Mon Oct 9 15:52:45 CEST 2006 Paolo Molaro <lupus@ximian.com>
14646
14647         * aot-compiler.c: fclose the file descriptor in the profile read loop.
14648
14649 Fri Oct 6 16:01:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
14650
14651         * mini.c, jit-icalls.c, inssel-float.brg: beginnings of support
14652         for soft-float.
14653
14654 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
14655
14656         * mini-x86.c (emit_load_volatile_arguments): New function to handle arguments of
14657         tail calls as on other platforms.
14658
14659         * mini.c (mono_method_to_ir): Fix a few tailcall problems. Fixes #79557.
14660
14661         * iltests.il: Add a few tailcall tests.
14662
14663 Tue Oct 3 16:33:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
14664
14665         * driver.c: fix loop for old compilers (bug #79521).
14666
14667 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
14668
14669         * mini-exceptions.c (ves_icall_get_trace): Remove debug printf.
14670
14671         * aot-runtime.c (mono_aot_get_class_from_name): Avoid a memory allocation.
14672
14673         * aot-compiler.c: Add a new option 'metadata-only' to only emit the cached
14674         metadata without any code.
14675
14676         * mini-exceptions.c (mono_handle_native_sigsegv): Add some code to print out
14677         more precise debugging information using gdb.
14678
14679 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
14680
14681         * inssel-ia64.brg: Make the helper methods static.
14682
14683 Thu Sep 28 16:40:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
14684
14685         * inssel-x86.brg: make the helper methods static.
14686
14687 Thu Sep 28 16:31:32 CEST 2006 Paolo Molaro <lupus@ximian.com>
14688
14689         * inssel-amd64.brg, mini-amd64.c: small cleanup, use inst_call.
14690
14691 Thu Sep 28 15:36:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
14692
14693         * mini.c: updates for monoburg changes.
14694         * inssel.brg: make a few helper functions static as they should.
14695
14696 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
14697
14698         * Makefile.am: Move mini-codegen.c to common_sources.
14699
14700 Wed Sep 27 15:07:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
14701
14702         * mini.h: instroduce inst_call in MonoInst for use in OUTARG
14703         instructions.
14704         * Makefile.am, cpu-g4.md, inssel-ppc.brg, mini-codegen.c, mini-ppc.c,
14705         mini-ppc.h: port to use the common local register allocator.
14706
14707 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
14708
14709         * mini.h: Remove the comment too then.
14710
14711 Tue Sep 26 14:02:58 CEST 2006 Paolo Molaro <lupus@ximian.com>
14712
14713         * mini.h: put back backend.data which is to be used shortly and
14714         doesn't increase the size of MonoInst. If any 64 bit arch aligned
14715         pointers on 4 byte boundaries it'd have much bigger issues running
14716         and you can ifdef it out anyway.
14717
14718 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
14719
14720         * mini.h (MonoInst): Remove backend.data field since it is unused and increases
14721         MonoInst size by 4 bytes on 64 bit machines.
14722
14723 Tue Sep 26 11:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
14724
14725         * *.{c,h,brg}: long due removal of the unused field in MonoInst and
14726         replacement with more meaningful field names. Arch maintainers, please
14727         check the assigned names are good enough for your arch.
14728
14729 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
14730
14731         * cpu-ia64.md mini-ia64.c inssel-ia64.brg mini-ops.h: Get rid of the 
14732         OP_IA64_FETCHADD opcodes, use OP_ATOMIC_ADD_IMM_NEW opcodes instead.
14733
14734 Mon Sep 25 11:05:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
14735
14736         * mini.h, driver.c, optflags-def.h, Makefile.am: reduce runtime
14737         relocations and memory requirements, put the optimization flags
14738         definitions in their own file.
14739
14740 2006-09-24  Zoltan Varga  <vargaz@gmail.com>
14741
14742         * jit-icalls.c (mono_helper_stelem_ref): Remove this unused helper function.
14743
14744         * mini.c (mini_init): Remove reference to mono_helper_stelem_ref.
14745
14746 2006-09-22  Zoltan Varga  <vargaz@gmail.com>
14747
14748         * mini-amd64.c (add_valuetype): Fix an uninitialized memory issue.
14749
14750 Thu Sep 21 19:06:09 CEST 2006 Paolo Molaro <lupus@ximian.com>
14751
14752         * inssel.brg: use the correct function to get the size of an item
14753         in an array, given an element class.
14754         * aot-compiler.c: do not access class->class_size directly.
14755
14756 Thu Sep 21 12:10:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
14757
14758         * mini.h, debug-mini.c: added a debugging function to print
14759         info about local variables and arguments in a jitted method.
14760
14761 2006-09-20  Zoltan Varga  <vargaz@gmail.com>
14762
14763         * mini-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
14764
14765         * exceptions-ia64.c: Fix some problems reported by Bill Seurer <seurer@us.ibm.com>.
14766
14767 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
14768
14769         * mini-ia64.c (mono_arch_call_opcode): Avoid using the same loop index in the
14770         inner and outer loops when passing vtypes.
14771
14772 Tue Sep 19 17:53:40 CEST 2006 Paolo Molaro <lupus@ximian.com>
14773
14774         * mini-ppc.c: take into account the cpu errata for cache flushing
14775         which caused some random errors (bug #79381).
14776
14777 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
14778
14779         * mini-amd64.c (mono_arch_emit_exceptions): Emit the call to 
14780         mono_arch_throw_corlib_exception using emit_call () too. Fixes #79271.
14781
14782 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
14783
14784         * aot-runtime.c (load_aot_module): Return immeditely if the AOT module was already
14785         loaded.
14786
14787         * exceptions-amd64.c (gregs_from_ucontext): Apply another patch from the
14788         freebsd ports tree.
14789
14790         * mini-amd64.c (emit_call): Avoid near calls on freebsd.
14791         (mono_arch_patch_code): Remove the unused handling of MONO_PATCH_INFO_CLASS_INIT.
14792
14793         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix check for 32 bitness of
14794         displacement.
14795
14796 2006-09-13  Zoltan Varga  <vargaz@gmail.com>
14797
14798         * aot-runtime.c (load_aot_module_from_cache): Fix PPC build.
14799
14800 2006-09-12  Zoltan Varga  <vargaz@gmail.com>
14801
14802         * mini.c (UNVERIFIED): Add a 'break-on-unverified' MONO_DEBUG option so this 
14803         macro does not have to be changed during debugging.
14804
14805         * 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>.
14806
14807         * cpu-pentium.md: Rename this to cpu-x86.md for consistency with other platforms.
14808
14809         * Makefile.am mini-x86.c mini-codegen.c: Rename pentium_desc to x86_desc.
14810         
14811         * mini.c (mini_get_ldelema_ins): Allow ldelema2d optimization if 
14812         MONO_ARCH_NO_EMULATE_MUL is defined.
14813
14814         * mini-ia64.h (MONO_ARCH_CALLEE_FREGS): Reserve f33 for use by instructions.
14815
14816         * mini-ia64.h: Define MONO_ARCH_NO_EMULATE_MUL.
14817
14818         * mini-ia64.c: Implement CEE_MUL based on gcc emitted code.
14819
14820         * mini-ia64.c (mono_arch_lowering_pass): Optimize store_membase_imm with offset==0.
14821         
14822 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
14823
14824         * mini-x86.h mini-amd64.h mini-exceptions.c: Move the bsd specific MAP_ANON
14825         stuff to mini-exceptions.c where it is used.
14826
14827         * mini-sparc.c (mono_arch_setup_jit_tls_data): Remove the duplicate altstack
14828         setup code, the real one is in mini-exceptions.c.
14829
14830         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Move all dependencies on the
14831         layout of ucontext_t to helper functions in exceptions-amd64.c, as on x86. Add
14832         some changes from the freebsd ports tree.
14833
14834         * mini-amd64.h exceptions-amd64.c: Fix the amd64 build. Get rid of the SC_
14835         constants.
14836         
14837         * mini-amd64.h: Freebsd has MAP_ANON instead of MAP_ANONYMOUS.
14838
14839 Mon Sep 11 13:18:55 CEST 2006 Paolo Molaro <lupus@ximian.com>
14840
14841         * mini.c: on Linux, check for /proc to be mounted
14842         (bug# 79351, novell bug#201204).
14843
14844 Mon Sep 11 13:10:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
14845
14846         * mini.c: handle cases where pthread_attr_getstack() behaves
14847         incorrectly (bug #78096).
14848
14849 Mon Sep 11 11:31:10 BST 2006 Paolo Molaro <lupus@ximian.com>
14850
14851         * mini-arm.c: support larger stack frames (bug #79272).
14852
14853 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
14854
14855         * aot-runtime.c (mono_aot_get_class_from_name): Remove a debug printf.
14856
14857         * aot-compiler.c: Add a hash table to the AOT file mapping class names to typedef 
14858         tokens.
14859
14860         * aot-runtime.c (mono_aot_get_class_from_name): New function used by 
14861         mono_class_from_name () to find a class from its name.
14862
14863         * mini.c (mini_init): Register mono_aot_get_class_from_name () with the runtime.
14864
14865 2006-09-07  Zoltan Varga  <vargaz@gmail.com>
14866
14867         * mini-amd64.c (emit_call): Avoid strstr () call if possible.
14868
14869 2006-09-05  Kornel Pal  <kornelpal@gmail.com>
14870
14871         * Makefile.am: Renamed mono-1.dll to mono.dll. (-avoid-version)
14872
14873 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
14874
14875         * mini.c (mono_icall_get_wrapper): Fix a race condition on initializing
14876         callinfo->trampoline.
14877
14878         * mini-amd64.c (emit_call): Special case calls to the vararg array icalls. Hopefully
14879         fixes #79271.
14880         (mono_arch_patch_code): Add some debug code to help track down similar failures in the
14881         future.
14882
14883 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
14884
14885         * aot-runtime.c (mono_aot_plt_resolve): Add an assert.
14886
14887 2006-09-02  Zoltan Varga  <vargaz@gmail.com>
14888
14889         * tramp-x86.c (mono_arch_create_specific_trampoline): Don't increase
14890         stats.method_trampolines, it is already done by the generic trampoline code.
14891
14892         * tramp-amd64.c (mono_arch_create_specific_trampoline): Ditto.
14893         
14894 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
14895
14896         * mini.c: Remove some references to mono_compile_aot, and use cfg->compile_aot instead.
14897
14898         * aot-runtime.c: Add some tweaks to the MONO_AOT_CACHE functionality.
14899
14900         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix a FIXME.
14901
14902         * mini.c (print_jit_stats): Print mscorlib mempool size too.
14903         
14904         * mini.c (print_jit_stats): Print new stats.
14905
14906         * *-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
14907
14908 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
14909
14910         * mini.c (mini_get_ldelema_ins): Fix verifier error when calling
14911         Address on two dimensional arrays. Fixes #78729.
14912
14913         * mini.h (MonoCompile): Add a 'skip_visibility' field.
14914
14915         * mini.c (method_to_ir): Disable visibility checks if skip_visibility is set on
14916         a method.
14917
14918         * mini-amd64.c (mono_arch_emit_exceptions): Fix assertion introduced by the last change.
14919
14920         * mini.c (mono_runtime_cleanup_handlers): Clean up signal handlers on unix. Fixes
14921         #79130.
14922         
14923         * mini.c (handle_array_new): Applied patch from "briaeros007". Fix
14924         a race condition.
14925         (mini_get_ldelema_ins): Ditto.
14926
14927 2006-08-30  Zoltan Varga  <vargaz@gmail.com>
14928
14929         * mini-amd64.c (mono_arch_emit_exceptions): Align fp constants to 16 bytes.
14930         (mono_arch_output_basic_block): Avoid unaligned accesses in FNEG implementation. 
14931         Fixes #79213.
14932
14933 2006-08-29 Neale Ferguson <neale@sinenomine.net>
14934
14935         * mini-s390.c, mini-s390x.c: Fix VARARG case processing with 0 arguments. Add
14936         mono_arch_get_patch_offset as a dummy entry point to allow successful link. 
14937
14938         * exceptions-s390x.c: Cosmetic change.
14939
14940         * tramp-s390.c: Fix warning.
14941
14942         * cpu-s390.md: Correct length of mul_imm.
14943
14944 Wed Aug 23 19:24:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
14945
14946         * aot-compiler.c: added binary writer with ELF backend
14947         implementation (only on Linux/x86 for now).
14948
14949 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
14950
14951         * Makefile.am: Don't run net 2.0 AOT tests.
14952
14953         * aot-compiler.c (compile_method): Skip methods with tail calls as well.
14954         (mono_compile_assembly): Skip net 2.0 assemblies as well.
14955
14956         * aot-runtime.c (load_patch_info): Fix an uninitialized memory error.
14957
14958 Fri Aug 18 19:38:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
14959
14960         * aot-compiler.c: simplified and refactored the asm-writing code
14961         to allow different backends.
14962
14963 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
14964
14965         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
14966
14967         * aot-compiler.c aot-runtime.c: Reorg the GOT slot allocation code a 
14968         little. Share patches of type TYPE_FROM_HANDLE as well.
14969
14970         * mini.c (mono_patch_info_equal): New helper function.
14971         (mono_patch_info_hash): Ditto.
14972
14973         * aot-compiler.c (emit_method_code): Fix s390 build.
14974
14975         * mini.c (mono_allocate_stack_slots_full): Fix yet another place where byref
14976         is not handled because it is stored as a flag and not as a type ctor. Fixes
14977         #79016.
14978
14979 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
14980
14981         * aot-compiler.c: Fix computation of GOT slot statistics.
14982         
14983         * aot-compiler.c aot-runtime.c: Implement sharing of GOT slots for classes/fields.
14984         Also remove support for not PIC AOT.
14985
14986         * mini.h: Bump AOT file format version.
14987
14988         * objects.cs: Add a test for #78990.
14989
14990         * mini-x86.c (mono_arch_output_basic_block): Applied patch from Peter Dettman
14991         (peter.dettman@iinet.net.au). Fixes #79087.
14992
14993         * basic-long.cs: Add a test for the above.
14994
14995 2006-08-16  Zoltan Varga  <vargaz@gmail.com>
14996
14997         * aot-compiler.c (get_got_offset): Add a cache for GOT entries, not yet used.
14998         
14999         * aot-compiler.c (get_plt_index): Add a cache for wrappers too. Simplify the
15000         code somewhat.
15001
15002 2006-08-15  Zoltan Varga  <vargaz@gmail.com>
15003
15004         * mini.c (mini_init): Fix registration of idiv/imul opcodes which can throw
15005         exceptions.
15006
15007 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
15008
15009         * mini.c: Don't verify COM proxy invoke calls
15010         
15011
15012 2006-08-10  Dick Porter  <dick@ximian.com>
15013
15014         * wapihandles.c (mini_wapi_seminfo): More info, to help track down
15015         which process is holding semaphores locked.
15016
15017 2006-08-08  Zoltan Varga  <vargaz@gmail.com>
15018
15019         * mini-ia64.c mini-amd64.c: Fix #79027.
15020
15021         * mini-sparc.c (mono_arch_call_opcode): Fix the previous patch.
15022
15023         * mini-sparc.c (mono_arch_call_opcode): Fix #79027.
15024
15025         * mini-x86.c (mono_arch_call_opcode): Handle the case where there are no
15026         implicit arguments in a vararg call. Fixes #79027.
15027
15028 2006-08-07  Zoltan Varga  <vargaz@freemail.hu>
15029
15030         * mini.c (mono_get_element_address_signature): Use CDECL calling convention on windows. Fixes #78969.
15031         (mono_get_array_new_va_signature): Ditto.
15032
15033 2006-08-05  Zoltan Varga  <vargaz@gmail.com>
15034
15035         * aot-runtime.c: Call init_plt lazily.
15036
15037         * inssel-long.brg: Fix unsigned long->int conversion.
15038
15039         * aot-runtime.c (init_plt): Remove a redundant make_writable () call.
15040
15041         * aot-compiler.c aot-runtime.c: Reorganize the file structure in the amd64 case so
15042         that most data is now in the .rss/.data section.
15043
15044 2006-08-04  Zoltan Varga  <vargaz@gmail.com>
15045
15046         * aot-compiler.c: Correct the computation of the 'direct-calls' statistic.      
15047
15048         * aot-compiler.c: Print the number of methods without GOT slots as a statistics.
15049
15050         * aot-compiler.c aot-runtime.c tramp-amd64.c: Resurrect amd64 AOT support.
15051
15052         * tramp-amd64.c (mono_arch_patch_callsite): Fix a warning.
15053
15054         * jit-icalls.c (mono_helper_compile_generic_method): Unbox vtypes since this is a
15055         virtual call. Fixes #79010.
15056
15057         * mini.c (mono_method_to_ir): Pass an additional out arg to compile_generic_method 
15058         and use the result as the this argument in the real call.
15059
15060         * generics.2.cs: Add a new test for #79010.
15061         
15062 2006-08-03  Zoltan Varga  <vargaz@gmail.com>
15063
15064         * mini-x86.c: Fix a warning.
15065
15066         * aot-compiler.c: Add a bunch of statistics.
15067
15068         * mini.c (inline_method): Disable inlining in out-of-line bblocks.
15069
15070 2006-08-02  Zoltan Varga  <vargaz@gmail.com>
15071
15072         * mini-arch.h Makefile.am mini-ops.h mini-codegen.c: More alpha updates.
15073
15074 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
15075
15076         * 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>.
15077
15078 2006-07-13  Miguel de Icaza  <miguel@novell.com>
15079
15080         * mini.c (mono_method_to_ir): Obtain the original method in the
15081         CIL stream and use this to perform validation.
15082
15083         Fixed: #78816
15084
15085 2006-07-19  Zoltan Varga  <vargaz@gmail.com>
15086
15087         * mini-x86.c (mono_arch_get_argument_info): Fix a warning.
15088         (mono_arch_call_opcode): Ditto.
15089
15090         * mini.c (mono_method_to_ir): Clear ins_flag at the end of CEE_CALL. Fixes
15091         #78826.
15092
15093         * mini.c (mono_patch_info_dup_mp): New helper function.
15094         
15095         * aot-compiler.c (compile_method): Fix some of the memory allocated during
15096         compilation. Fixes #78827.
15097
15098 2006-07-18  Kornel Pal  <kornelpal@gmail.com>
15099
15100         * declsec.c: Use original security informations for
15101           MONO_WRAPPER_MANAGED_TO_MANAGED.
15102
15103 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
15104
15105         * mini.c: Allow Com Interop methods/classes and
15106         don't verify COM wrapper calls
15107         
15108
15109 2006-07-13  Zoltan Varga  <vargaz@gmail.com>
15110
15111         * inssel-long32.brg: Fix long->i4 checked conversion.
15112
15113         * exceptions.cs: Add a test for the above.
15114
15115 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
15116
15117         * mini-exceptions.c (mono_setup_altstack): Fix a memory leak.
15118
15119         * mini.c: Applied patch from Joachim Ante (joe@otee.dk). Fix some shutdown 
15120         leaks.
15121
15122         * helpers.c (mono_disassemble_code): Avoid using fixed temporary files. Fixes
15123         #78775.
15124
15125 2006-07-03  Zoltan Varga  <vargaz@gmail.com>
15126
15127         * mini.c: Fix solaris/x86 exception handling.
15128
15129         * Makefile.am: Get rid of $(ICU_LIBS).
15130
15131 2006-07-02  Zoltan Varga  <vargaz@gmail.com>
15132
15133         * mini-exceptions.c: Fix handling of unhandled SIGSEGV exceptions on ia64.
15134         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Use MONO_INIT_CONTEXT_FROM_CURRENT.
15135         (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): Ditto.
15136
15137         * mini-ia64.h (MONO_CONTEXT_SET_FUNC): New macro.
15138
15139         * mini-exceptions.c (mono_handle_native_sigsegv): Prevent infinite loops if
15140         this function causes a SIGSEGV.
15141
15142 2006-06-22  Zoltan Varga  <vargaz@gmail.com>
15143
15144         * mini.c: Remove unused solaris/x86 includes.
15145
15146 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
15147
15148         * jit.h: Add G_BEGIN_DECLS/G_END_DECLS.
15149
15150 2006-06-20  Jb Evain  <jbevain@gmail.com>
15151
15152         * cpu-g4.md: fix max length of start_handler instruction.
15153
15154 2006-06-20  Massimiliano Mantione  <massi@ximian.com>
15155         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78656.
15156
15157 2006-06-16  Massimiliano Mantione  <massi@ximian.com>
15158         * ssa.c: Fixed bug 78653 for SSA based deadce.
15159         * mini.h: added MONO_INST_DEFINITION_HAS_SIDE_EFFECTS flag go
15160         MonoInst.flags, used in SSA based deadce.
15161         * aliasing.c: Fixed bug 78653 for "fastpath" deadce.
15162         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78653.
15163
15164 Thu Jun 15 16:52:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
15165
15166         * tramp-ppc.c: don't use malloc () for trampoline code, sometimes
15167         it can end up using non executable memory on ppc64 systems
15168         running ppc32 userspace (fix from Johannes Berg).
15169
15170 2006-06-14  Dick Porter  <dick@ximian.com>
15171
15172         * wapihandles.c: Fix a bunch of signed/unsigned warnings from gcc
15173         4.1.1
15174
15175 2006-06-13  Massimiliano Mantione  <massi@ximian.com>
15176         * mini.c: Made so that inline is locally disabled if it would
15177         trigger a .cctor, because too many apps depend on this behavior
15178         (which seems to be also the one of the MS CLR).
15179
15180 2006-06-13  Zoltan Varga  <vargaz@gmail.com>
15181
15182         * mini-amd64.c (mono_emit_stack_alloc): Fix initialization of localloc'ed memory.
15183         No idea why this worked before.
15184
15185         * branch-opts.c (mono_branch_optimize_exception_target): Avoid branches
15186         which branch to outer exception clauses since they could skip the
15187         inner finally clauses. Fixes #78633.
15188
15189         * exceptions.cs: Add a test for the above.
15190
15191         * mini.c (merge_basic_blocks): Nullify the branch at the end of the first bb.
15192         Fixes #78629.
15193
15194         * iltests.il: Add a test for the above.
15195
15196 2006-06-12  Zoltan Varga  <vargaz@gmail.com>
15197
15198         * mini.c (remove_block_if_useless): Do not remove the bblock immediately
15199         after the end of a try bblock, to prevent asserts in mini_method_compile ().
15200
15201         * iltests.il: Add a test for the above.
15202
15203 2006-06-10  Zoltan Varga  <vargaz@gmail.com>
15204
15205         * mini-ia64.c (mono_arch_lowering_pass): Remove some code duplication.
15206         
15207         * mini-ia64.c inssel-ia64.brg: Implement the new net 2.0 Interlocked.Add
15208         methods as instrinsics.
15209
15210 2006-06-09  Wade Berrier <wberrier@novell.com>
15211
15212         * Makefile.am: Fix sources list for svn rename so that make dist succeeds
15213         (simple-cee-ops.h ssapre-mini-ops.h)
15214
15215 2006-06-09  Neale Ferguson <neale@sinenomine.net>
15216
15217         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on s390/s390x.
15218         * mini-s390x.c, mini-s390.c: Correct ATOMIC operations (incorrect register for CS
15219         instruction).
15220         * mini-s390x.h, mini-s390.h: Simplify MCONTEXT_GET_BP.
15221         * cpu-s390x.md: Fix max. length values for a couple of instructions.
15222
15223 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
15224
15225         * mini-exceptions.c: Minor fix for building mono in Visual Studio.
15226
15227 2006-06-08  Massimiliano Mantione  <massi@ximian.com>
15228
15229         * ssapre-cee-ops.h: Renamed as "simple-cee-ops.h"
15230         * simple-cee-ops.h: Was "ssapre-cee-ops.h" (renamed).
15231         * ssapre-mini-ops.h: Renamed as "simple-mini-ops.h"
15232         * simple-mini-ops.h: Was "ssapre-mini-ops.h" (renamed).
15233         * local-propagation.c: In mono_cprop_invalidate_values use a whitelist
15234         of opcodes, so that bug 78549 should not happen again.
15235         * ssapre.c: Updated to use the renamed files.
15236
15237 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
15238
15239         * mini-amd64.c (mono_arch_output_basic_block): Fix a wrong reg-reg move 
15240         in OP_ATOMIC_EXCHANGE_I4.
15241
15242 2006-06-07  Wade Berrier <wberrier@novell.com>
15243
15244         * tramp-s390.c: Fix s390 build (add missing pointer declarations 
15245         in mono_debugger_create_notification_function)
15246
15247 2006-06-06  Zoltan Varga  <vargaz@gmail.com>
15248
15249         * mini.c (NEW_AOTCONST_TOKEN): Fix amd64 build.
15250         
15251         * mini.c (type_from_stack_type): Disable some changes which do not
15252         seem to work.
15253
15254         * driver.c: Reenable opts.
15255
15256         * mini.h (MonoStackSlot): New structure to keep track of the verification state
15257         of the evaluation stack.
15258         
15259         * mini.h (MonoBasicBlock): Add a 'stack_state' field to keep track of the
15260         evaluation stack trace at entry to the bblock.
15261
15262         * mini.c (merge_stacks): New function to perform verification of stack merges.
15263         Turned off by default.
15264
15265         * mini.c: Fill up ins->klass for instructions whose type is STACK_OBJ or
15266         STACK_MP.
15267         
15268 2006-06-06  Massimiliano Mantione  <massi@ximian.com>
15269
15270         * local-propagation.c: Fixed bug 78549.
15271
15272 2006-06-04  Zoltan Varga  <vargaz@gmail.com>
15273
15274         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on ia64.
15275
15276 2006-06-02  Miguel de Icaza  <miguel@novell.com>
15277
15278         * tramp-sparc.c, tramp-ppc.c, tramp-s390.c, tramp-s390x.c,
15279         tramp-arm.c, tramp-ia64.c
15280         (mono_debugger_create_notification_function): Update signature to
15281         new signature and use new protocol for creating the notification
15282         function.  
15283
15284         Should fix the build.
15285
15286 2006-06-02  Geoff Norton  <gnorton@customerdna.com>
15287
15288         * exceptions-ppc.c (mono_jit_walk_stack)
15289         (ves_icall_get_frame_info): Fix the build
15290
15291 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
15292
15293         * mini.c (mono_set_defaults): Fix the handling of -O=-all.
15294
15295 2006-05-31  Raja R Harinath  <rharinath@novell.com>
15296
15297         * il2tests.2.il: New file for generics CIL tests.  Add test for
15298         #78019.
15299         * Makefile.am: Update.
15300
15301         Fix #78019
15302         * mini.c (mono_method_to_ir): Don't apply box+brtrue optimization
15303         to nullable types.
15304
15305 2006-05-30  Massimiliano Mantione  <massi@ximian.com>
15306
15307         * aliasing.c: Fixed bug 78311.
15308
15309 2006-05-29  Martin Baulig  <martin@ximian.com>
15310
15311         * mini-exceptions.c (mono_find_jit_info): When computing the
15312         native offset, check whether we're actually inside the method's
15313         code; call mono_debug_print_stack_frame() to format the frame.
15314         (ves_icall_System_Exception_get_trace): Call
15315         mono_debug_print_stack_frame() to format the stack frame.
15316         (ves_icall_get_trace): Update to the new debugging API.
15317         (mono_jit_walk_stack_from_ctx): Likewise.
15318         (ves_icall_get_frame_info): Likewise.
15319
15320         * mini.c (get_method_from_ip): Use the new debugging API.
15321         (mono_print_method_from_ip): Likewise.
15322
15323         * exceptions-ppc.c
15324         (mono_jit_walk_stack): Use the new debugging API.
15325         (ves_icall_get_frame_info): Likewise.   
15326
15327 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
15328
15329         * mini-amd64.c (mono_arch_output_basic_block): Fix MONO_PROFILE_COVERAGE.
15330
15331 2006-05-25  Massimiliano Mantione  <massi@ximian.com>
15332
15333         * mini.c: Added "limitator" to inline for debugging.
15334
15335 2006-05-24  Martin Baulig  <martin@ximian.com>
15336
15337         * debug-debugger.c (mono_debugger_init): Create a private,
15338         malloc()-based code manager for the notification function and
15339         intentionally leak it on exit.  This fixes the crash-on-exit race
15340         condition.
15341
15342         * tramp-amd64.c
15343         (mono_debugger_create_notification_function): Added
15344         `MonoCodeManager *' argument.
15345
15346         * tramp-x86.c
15347         (mono_debugger_create_notification_function): Added
15348         `MonoCodeManager *' argument.
15349
15350 2006-05-23  Massimiliano Mantione  <massi@ximian.com>
15351
15352         * aliasing.c: Fixed 64 bit issue.
15353         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
15354         default since all known bugs are fixed (one more time!).
15355
15356 Tue May 23 13:47:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
15357
15358         * mini.c: write barrier support.
15359
15360 2006-05-23  Martin Baulig  <martin@ximian.com>
15361
15362         * debug-debugger.c: Revert Paolo's change.  Add comment and #error
15363         check at the top of the file.
15364
15365 Sun May 21 12:22:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
15366
15367         * debug-debugger.c: fix the build. Again. Hopefully Martin will stop
15368         reverting changes without reason and without changelog entries.
15369
15370 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
15371
15372         * mini-sparc.c (mono_arch_output_basic_block): Add support for large stack offets
15373         to a few opcodes. Fixes #78439.
15374
15375         * mini-sparc.c: Rename mono_sparch_break () to mono_arch_break () to improve
15376         consistency with other archs.
15377
15378         * mini-ia64.c (mono_arch_emit_prolog): Remove debug stuff left in by mistake.
15379
15380 Wed May 17 18:07:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
15381
15382         * debug-debugger.c: fix the build.
15383
15384 2006-05-17  Martin Baulig  <martin@ximian.com>
15385
15386         * debug-debugger.c
15387         (debugger_thread_vtable): Moved here from ../metadata/threads.c.
15388         (debugger_init_threads): Formerly known as mono_debugger_init_threads().
15389         (debugger_finalize_threads): Formaly known as mono_debugger_finalize_threads().
15390         (debugger_attach): Call GC_mono_debugger_add_all_threads().
15391
15392 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
15393
15394         * mini.c (mini_init): Call pthread_attr_destroy () to fix a small memory leak.
15395
15396 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
15397
15398         * mini-x86.c (mono_arch_instrument_epilog): Fix handling of 
15399         MONO_TYPE_GENERICINST.
15400         
15401         * mini-amd64.c (mono_arch_instrument_epilog): Fix handling of 
15402         MONO_TYPE_GENERICINST.
15403
15404 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
15405
15406         * mini-x86.c (mono_arch_get_vcall_slot_addr): Add a missing call sequence. Fixes
15407         #78325.
15408
15409 2006-05-08  Zoltan Varga  <vargaz@gmail.com>
15410
15411         * mini.c (mono_create_jump_trampoline): Allocate MonoJitInfo from the domain
15412         mempool.
15413         (mono_jit_free_method): Remove the method from jump_trampoline_hash as well.
15414
15415 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
15416
15417         * mini.c (mini_cleanup): Applied patch from Joachim Ante (joe@otee.dk). Call
15418         mono_trace_cleanup ().
15419
15420         * iltests.il: Fix problem with the newly added test.
15421
15422         * mini-codegen.c (mono_local_regalloc): When changing the dreg of an instruction
15423         due to register constraints, free up the previous hreg. Fixes #78314.
15424
15425         * iltests.il: Add new test for #78314.  
15426
15427         * mini-x86.c (mono_arch_get_inst_for_method): Use OP_ATOMIC_ADD_NEW_I4 for
15428         Interlocked.Add. Fixes #78312.
15429
15430         * mini-amd64.c (mono_arch_get_inst_for_method): Ditto.
15431         
15432 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
15433
15434         * inssel.brg (mini_emit_virtual_call): Fix a warning.
15435
15436 2006-05-05  Martin Baulig  <martin@ximian.com>
15437
15438         * debug-mini.c (mono_debug_open_block): New method.
15439
15440         * mini-amd64.c
15441         (mono_arch_output_basic_block): Call mono_debug_open_block() at
15442         the beginning of each basic block.
15443
15444         * mini-x86.c
15445         (mono_arch_output_basic_block): Call mono_debug_open_block() at
15446         the beginning of each basic block.
15447
15448 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
15449
15450         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
15451         default until I understand why they break the build on amd64.
15452
15453 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
15454
15455         * mini.c (mini_cleanup): Call mono_cleanup ().
15456
15457         * mini.c (UNVERIFIED): New macro to make it easier to track down verification
15458         errors.
15459
15460 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
15461
15462         * aliasing.c: Fixed shameful cut&paste error that caused JIT crashes.
15463         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
15464         default since all known bugs are fixed, and I cannot reproduce bug
15465         77944... I'm asking Matt Hargett to test again after this commit.
15466
15467 2006-04-28  Massimiliano Mantione  <massi@ximian.com>
15468
15469         * mini-codegen.c: Fixed typo that thrashed inline.
15470
15471 2006-04-28  Zoltan Varga  <vargaz@gmail.com>
15472
15473         * dominators.c (compute_dominators): Avoid using a worklist since
15474         it is not correct in some cases. Instead, iterate over all bblocks as
15475         in the original paper. Fixes --compile-all -O=all System.Xml.dll.
15476
15477 2006-04-28  Miguel de Icaza  <miguel@novell.com>
15478
15479         * mini.c (mono_jit_compile_method_inner): Use
15480         mono_prepare_exception_from_error that resets the value
15481         internally.
15482
15483 2006-04-27  Miguel de Icaza  <miguel@novell.com>
15484
15485         * mini.c: Move the mini_loader_error_to_exception to metadata. 
15486         
15487 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
15488
15489         * aliasing.c: Fixed bug 78210.
15490
15491 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
15492
15493         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
15494         default until all their problems (or the ones they trigger) are fixed.
15495
15496 2006-04-26  Zoltan Varga  <vargaz@gmail.com>
15497
15498         * aot-runtime.c (mono_aot_get_method_from_token_inner): Fix the previous patch.
15499         
15500         * aot-runtime.c (mono_aot_get_method_from_token_inner): Mark the method
15501         as loaded only after resolving patches since that could invoke the same method.
15502
15503         * aot-runtime.c (mono_aot_plt_resolve): Fix ppc etc. builds.
15504
15505         * aot-compiler.c: Refactor mono_aot_compile_aot () into a bunch of smaller
15506         functions.
15507
15508         * aot-runtime.c (init_plt): Use a normal trampoline to transfer code to the
15509         AOT loader.
15510
15511         * aot-compiler.c (emit_plt): Pass the plt offset in %eax instead of on the
15512         stack.
15513
15514         * mini-trampolines.c (mono_aot_plt_trampoline): New trampoline to handle calls
15515         made from AOT code through the PLT table.
15516
15517         * mini-x86.h mini-amd64.h: Define MONO_ARCH_AOT_PLT_OFFSET_REG to the register
15518         holding the plt offset when a call is made to the aot plt trampoline.
15519         
15520 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
15521
15522         * aot-runtime.c aot-compiler.c cpu-amd64.md mini-amd64.c: Update parts of the 
15523         amd64 AOT support.
15524
15525         * Makefile.am (common_sources): Fix build breakage.
15526
15527         * aot-runtime.c aot-compiler.c: Reorganize the AOT code yet again: Make all
15528         calls through a jump table similar to the ELF PLT table. Avoid indirect calls for
15529         intra-assembly calls if possible.
15530         
15531         * tramp-*.c: Add new functions for patching/nullifying PLT entries.
15532
15533         * mini-trampolines.c: Handle PLT entries.
15534
15535         * mini.c: Avoid creating a GOT var for calls.
15536
15537         * jit-icalls.c (helper_ldstr_mscorlib): New helper function for loading strings
15538         from mscorlib code.
15539
15540         * jit-icalls.c (helper_newobj_mscorlib): New helper function to create objects
15541         from mscorlib code.
15542
15543         * mini.c (mono_method_to_ir): Use the new helper functions in throw bblocks in
15544         AOT code.       
15545
15546         * mini.h: Bump AOT file format version.
15547         
15548         * mini.c (get_basic_blocks): Fix the calculation of bb->out_of_line so it
15549         covers more cases.
15550
15551 2006-04-25  Martin Baulig  <martin@ximian.com>
15552
15553         * driver.c: Disable copyprop, consprop and inline when running
15554         inside the debugger.
15555
15556 2006-04-25  Martin Baulig  <martin@ximian.com>
15557
15558         * debug-debugger.h (MonoDebuggerInfo): Replaced `get_thread_id'
15559         with `get_current_thread' and added `detach'.
15560         (MonoDebuggerMetadataInfo): Added `thread_size',
15561         `thread_tid_offset', `thread_stack_ptr_offset' and
15562         `thread_end_stack_offset'.
15563
15564 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
15565
15566         * aot.c Makefile.am: Split aot.c into two new files aot-compiler.c and 
15567         aot-runtime.c.
15568
15569         * inssel.brg (mini_emit_load_intf_reg_vtable): Use a new kind of AOT constant
15570         ADJUSTED_IID to avoid the need for adjusting the IID at runtime.
15571
15572         * mini.h (MonoJumpInfoType): Add MONO_PATCH_INFO_ADJUSTED_IID.
15573
15574         * mini.c (mono_resolve_patch_target): Handle ADJUSTED_IID.
15575
15576         * aot.c: Add support for ADJUSTED_IID.  
15577
15578 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
15579
15580         * aot.c (emit_method_order): Don't align method_order_end.
15581
15582         * inssel.brg (stmt): Fix interface calls in AOT code which got broken by
15583         the interface ID changes.
15584
15585 2006-04-21  Dick Porter  <dick@ximian.com>
15586
15587         * mini.c (mini_thread_cleanup): Clear the JIT TLS data when
15588         cleaning up a thread.  Fixes the new part of bug 77470.
15589
15590 2006-04-20  Geoff Norton  <gnorton@customerdna.com>
15591
15592         * mini-ppc.c: Call mono_jit_thread_attach when transitioning a native
15593         to managed wrapper.
15594                      
15595 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
15596
15597         * mini.h mini.c: Remove mono_type_to_ldind/stind () which are now in marshal.c.
15598         
15599         * mini.c (mono_runtime_install_handlers): Handle SIGABRT similarly to
15600         SIGSEGV. Fixes #78072.
15601
15602         * mini-exceptions.c (mono_handle_native_sigsegv): Add a 'signal' argument,
15603         unregister our SIGABRT handler.
15604
15605 2006-04-19  Massimiliano Mantione  <massi@ximian.com>
15606
15607         * mini.c: Disabled inline where it can alter the call stack in a
15608         way visible from managed code.
15609         * driver.c: enabled inline,consprop,copyprop,treeprop,deadce by
15610         default.
15611
15612 2006-04-16  Zoltan Varga  <vargaz@gmail.com>
15613
15614         * mini-amd64.c (mono_arch_emit_prolog): Attach the thread to the runtime as it is done
15615         on other platforms. Fixes #78089.
15616
15617 2006-04-13  Martin Baulig  <martin@ximian.com>
15618
15619         * driver.c: Also check a `MONO_INSIDE_MDB' environment variable to
15620         determine whether we're inside the debugger.
15621
15622         * debug-debugger.h
15623         (MonoDebuggerMetadataInfo): Added all offsets from `MonoDefaults'.
15624
15625 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
15626
15627         * mini.c (mono_method_to_ir): Handle multiple LEAVE statements inside a single
15628         handler clauses. Fixes #78024.
15629
15630         * mini-sparc.c (mono_arch_output_basic_block): Handle large offsets
15631         in the CALL_MEMBASE opcodes. Fixes #78088.
15632         (mono_arch_get_vcall_slot_addr): Ditto.
15633
15634 2006-04-10  Martin Baulig  <martin@ximian.com>
15635
15636         * debug-debugger.c: The thread handling code has now been moved
15637         into ../metadata/threads.c.
15638
15639 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
15640
15641         * driver.c (mono_main): Fix --with-gc=none build.
15642
15643         * mini-codegen.c (mono_spillvar_offset): Improve alignment.
15644         (mono_spillvar_offset_float): Ditto.
15645         (mono_local_regalloc): Only do the OP_MOVE optimization if ins->dreg is a local
15646         hreg, not when its !global, since on ia64, there is a third category: stacked
15647         registers.      
15648
15649 Mon Apr 10 14:39:49 CEST 2006 Paolo Molaro <lupus@ximian.com>
15650
15651         * mini.c: set MonoInst->klass for load field address and a few other
15652         places.
15653
15654 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
15655
15656         * helpers.c (mono_disassemble_code): Emit debug info on amd64 as well.
15657
15658 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
15659
15660         * dominators.c (compute_dominators): Fix yet another bug which surfaced after
15661         the branch opt changes.
15662
15663 2006-04-06  Dick Porter  <dick@ximian.com>
15664
15665         * wapihandles.c (mini_wapi_semdel): Fix parameters in semctl () call.
15666         
15667         * wapihandles.c (mini_wapi_seminfo): 
15668         * driver.c (mono_main): Add semaphore info option
15669
15670 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
15671
15672         * dominators.c (compute_dominators): Fix a bug which surfaced after the recent
15673         branch optimization changes. Fixes #78009.
15674
15675 Wed Apr 5 16:40:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
15676
15677         * mini.c: ignore accessibility of methods in managed->native wrappers.
15678
15679 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
15680
15681         * mini.c (mini_cleanup): Call print_jit_stats () earlier since it accesses metadata.
15682         
15683         * mini.c (mini_cleanup): Free 'emul_opcode_map' as well.
15684
15685 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
15686
15687         * mini.c: Modify the branch optimizations to preserve the invariant that
15688         the entries inside the in_bb and out_bb arrays are unique.
15689         (mono_unlink_bblock): Avoid creation of new arrays.
15690
15691 2006-04-02  Zoltan Varga  <vargaz@gmail.com>
15692
15693         * mini.c (mono_unlink_bblock): Fix regression caused by previous
15694         change (#77992).
15695
15696 2006-04-01  Zoltan Varga  <vargaz@gmail.com>
15697
15698         * mini.c (optimize_branches): Remove the "optimizations" in
15699         the cbranch1/cbranch2 -> branch cases which were causing several
15700         problems in the past. Fixes #77986.
15701
15702 2006-03-31  Chris Toshok  <toshok@ximian.com>
15703
15704         * driver.c (DEFAULT_OPTIMIZATIONS): back out the new set of
15705         default optimizations :(
15706
15707 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
15708
15709         * inssel-x86.brg mini-codegen.c mini.c: Merge some changes/fixes from linear-il
15710         branch.
15711
15712 2006-03-31  Massimiliano Mantione  <massi@ximian.com>
15713
15714         * local-propagation.c: Added comments to structs and removed
15715         "Mono" prefixes from local tree mover types.
15716
15717 2006-03-30  Zoltan Varga  <vargaz@gmail.com>
15718
15719         * Makefile.am (arch_sources): Define this for each architecture so 
15720         libmono_la_SOURCES is defined in one place.
15721
15722 Wed Mar 29 20:51:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
15723
15724         * driver.c, wapihandles.c, Makefile.am: integrate the io-layer utils
15725         from handles/.
15726
15727 Wed Mar 29 17:16:57 CEST 2006 Paolo Molaro <lupus@ximian.com>
15728
15729         * driver.c: print the GC name supplied by configure.
15730
15731 2006-03-29  Massimiliano Mantione  <massi@ximian.com>
15732
15733         * local-propagation.c: Added tree mover, and moved here all the
15734         local propagation code from mini.c
15735         * mini.c: Added support for treeprop, and moved all the local
15736         propagation code to local-propagation.c
15737         * mini.h: Added support for treeprop
15738         * driver.c: Added support for treeprop, enabled consprop, copyprop,
15739         treeprop, inline and deadce by default
15740         * Makefile.am: Added local-propagation.c
15741
15742 2006-03-25  Zoltan Varga  <vargaz@gmail.com>
15743
15744         * exceptions-sparc.c: Applied patch from David S. Miller  <davem@sunset.davemloft.net>: Implement correct support for sparc/linux.
15745
15746 Fri Mar 24 20:07:19 CET 2006 Paolo Molaro <lupus@ximian.com>
15747
15748         * debug-debugger.c: make it compile without the Boehm GC.
15749
15750 Wed Mar 22 18:25:18 CET 2006 Paolo Molaro <lupus@ximian.com>
15751
15752         * mini.c: fixed issue with mismatch when an icall is registered
15753         with multiple names but same address.
15754
15755 Tue Mar 21 15:59:57 CET 2006 Paolo Molaro <lupus@ximian.com>
15756
15757         * declsec.c, mini-exceptions.c: use write barrier to set reference
15758         fields of managed objects.
15759
15760 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
15761
15762         * mini.c (mono_print_method_from_ip): Recognize JIT trampolines as well.
15763         (can_access_internals): Fix a warning.
15764
15765         * mini.c (print_method_from_ip): Rename this to 
15766         mono_print_method_from_ip so it gets exported.
15767
15768         * trace.c: Deal with strings inside StringBuilder's containing garbage
15769         and fix memory leaks. Fixes #77848.
15770
15771 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
15772
15773         * mini.c (mini_init): Disable the setting of GC_stackbottom on ia64. Hopefully
15774         fixes #77787.
15775
15776 2006-03-16 Neale Ferguson <neale@sinenomine.net>
15777         
15778         * mini-s390.c: Remove OP_X86_TEST_NULL.
15779
15780 Thu Mar 16 17:19:04 CET 2006 Paolo Molaro <lupus@ximian.com>
15781
15782         * mini.c: use the correct GetHashCode() for the moving collector.
15783
15784 2006-03-16  Massimiliano Mantione  <massi@ximian.com>
15785
15786         * liveness.c: Regalloc spill cost tuning.
15787
15788 2006-03-15 Neale Ferguson <neale@sinenomine.net>
15789         
15790         * mini-s390x.h: Correct S390_LONG macro.
15791
15792         * mini-s390x.c: Cleanup unused code.
15793
15794 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
15795
15796         * jit-icalls.h: New file.
15797
15798         * Makefile.am mini.c jit-icalls.c: Use a proper include file for the jit
15799         icalls and include that instead of including jit-icalls.c.
15800
15801         * mini-ppc.c (mono_arch_output_basic_block): Remove references to
15802         OP_X86 opcodes.
15803
15804 Tue Mar 14 20:23:53 CET 2006 Paolo Molaro <lupus@ximian.com>
15805
15806         * mini.c: when checking for member accessibility, also check for
15807         friend assemblies and for explicit interface implementations.
15808
15809 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
15810
15811         * mini-codegen.c (mono_local_regalloc): Remove incorrect g_free () calls.
15812
15813         * cpu-arm.md cpu-g4.md: Remove x86_ opcodes.
15814
15815         * mini-x86.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
15816         common cases are done first.    
15817
15818         * mini-ops.h: Only define platform specific opcodes on the given platform.
15819
15820         * mini.h regalloc.h mini-codegen.c: Merge optimizations from the linear-il
15821         branch.
15822         
15823 2006-03-14  Martin Baulig  <martin@ximian.com>
15824
15825         Revert Paolo's change from r57348:
15826
15827         * mini.h: don't use gboolean for bitfields.
15828         * mini.c: verifier changes for fields and methods accessibility.
15829
15830 2006-03-13  Neale Ferguson <neale@sinenomine.net>
15831
15832         * mini-s390.h, mini-s390x.h: Fix calls to mono_call_inst_add_outarg_reg.
15833
15834         * mini-s390x.c: Fix conv_r_un.
15835
15836         * cpu-s390, cpu-s390x.md: Fix lengths.
15837
15838 Sun Mar 12 17:31:22 CET 2006 Paolo Molaro <lupus@ximian.com>
15839
15840         * mini.c: nested types have access to all the nesting
15841         levels, not just the enclosing types.
15842
15843 Sun Mar 12 16:23:11 CET 2006 Paolo Molaro <lupus@ximian.com>
15844
15845         * mini.c: added a few more verification checks.
15846
15847 2006-03-12  Zoltan Varga  <vargaz@gmail.com>
15848
15849         * liveness.c: Merge optimizations from the linear-il branch.
15850
15851 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
15852
15853         * mini-ia64.c (emit_call): Add a comment.
15854
15855         * tramp-ia64.c (mono_arch_patch_callsite): Handle indirect calls as well.
15856
15857         * tramp-ia64.c: Fix some warnings.
15858
15859 Sat Mar 11 20:15:59 CET 2006 Paolo Molaro <lupus@ximian.com>
15860
15861         * mini.h: don't use gboolean for bitfields.
15862         * mini.c: verifier changes for fields and methods accessibility.
15863
15864 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
15865
15866         * mini.c (mono_icall_get_wrapper): Fix an ia64 bug introduced by the
15867         lazy icall wrapper changes.
15868
15869         * dominators.c: Replace all the dominator algorithms with faster
15870         ones from the linear-il branch.
15871
15872         * inssel-*.brg: Allocate call->out_ireg_args and call->out_freg_args from
15873         the mempool.
15874
15875         * mini-amd64.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
15876         common cases are done first.
15877
15878         * mini-amd64.c: Fix some warnings.
15879
15880         * mini-codegen.c mini-*.c: Allocate call->out_ireg_args and call->out_freg_args
15881         from the mempool.
15882
15883         * mini.c (mono_jit_compile_method_with_opt): Fix a race in the newly
15884         added code.
15885
15886         * mini.h: Add a missing prototype.
15887
15888 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
15889
15890         * mini.c: Compile icall wrappers lazily.
15891
15892         * mini-codegen.c: Use printf instead of g_print since its much faster.
15893
15894         * mini.h (mono_bitset_foreach_bit): Use the faster mono_bitset_find_start ()
15895         function.
15896
15897         * mini.c (optimize_branches): Cache the negative result from 
15898         remove_block_if_useless ().
15899
15900         * mini.c (optimize_branches): Avoid restarting the iteration after each change. 
15901         Also fix some bblock linking issues.
15902
15903         * helpers.c (mono_disassemble_code): Reduce the size of the temporary
15904         assembly files.
15905
15906         * mini.h: Define G_LIKELY/G_UNLIKELY macros for older glib versions.
15907
15908         * mini.h (MonoBasicBlock): Reorganize the fields, putting more frequently
15909         accessed fields first, for better cache behavior.
15910         
15911 Fri Mar 10 18:21:41 CET 2006 Paolo Molaro <lupus@ximian.com>
15912
15913         * mini.c: speedup IList<T> array accesses.
15914
15915 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
15916
15917         * mini.c (mono_method_to_ir): Handle large methods overflowing the 
15918         inline_costs counter. Fixes #77190.
15919
15920 2006-03-06  Zoltan Varga  <vargaz@gmail.com>
15921
15922         * mini-exceptions.c: Call mono_trace_is_enabled () before printing
15923         trace messages. Fixes #77706.
15924
15925 2006-03-04  Martin Baulig  <martin@ximian.com>
15926
15927         * tramp-amd64.c, tramp-x86.c
15928         (mono_debugger_create_notification_function): Use
15929         mono_global_codeman_reserve() to allocate a buffer at runtime and
15930         return it.
15931
15932         * debug-debugger.h (MonoDebuggerInfo): Added `initialize'.
15933
15934         * debug-debugger.c (mono_debugger_init): Dynamically allocate the
15935         notification function at runtime and then call `initialize' in the
15936         `MONO_DEBUGGER__debugger_info' vtable.
15937
15938 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
15939
15940         * iltests.il: Fix a visibility problem.
15941
15942 Wed Mar 1 15:55:25 CET 2006 Paolo Molaro <lupus@ximian.com>
15943
15944         * driver.c, mini.c: add hooks for the counters API.
15945
15946 Wed Mar 1 12:28:04 CET 2006 Paolo Molaro <lupus@ximian.com>
15947
15948         * driver.c: show disabled options.
15949
15950 Wed Mar 1 12:18:51 CET 2006 Paolo Molaro <lupus@ximian.com>
15951
15952         * linear-scan.c: always use cost-driven selection.
15953
15954 2006-02-28  Raja R Harinath  <rharinath@novell.com>
15955
15956         * jit-icalls.c (helper_compile_generic_method): Revert change from
15957         2006-02-24.
15958
15959 Mon Feb 27 18:58:19 GMT 2006 Paolo Molaro <lupus@ximian.com>
15960
15961         * cpu-arm.md, mini-arm.c: implemented MemoryBarrier.
15962
15963 Sat Feb 25 17:39:21 CET 2006 Paolo Molaro <lupus@ximian.com>
15964
15965         * inssel.brg: style fixes, mostly to force the updated monoburg
15966         to run for people using svn.
15967
15968 Sat Feb 25 17:07:42 CET 2006 Paolo Molaro <lupus@ximian.com>
15969
15970         * mini.c: match monoburg changes.
15971
15972 Sat Feb 25 16:04:33 CET 2006 Paolo Molaro <lupus@ximian.com>
15973
15974         * mini.h, mini.c, abcremoval.c, aliasing.c, liveness.c,
15975         ssapre.c, graph.c, ssa.c: put the mono_burg_arity[]
15976         declaration in the header file.
15977
15978 Sat Feb 25 14:19:31 CET 2006 Paolo Molaro <lupus@ximian.com>
15979
15980         * helpers.c: reduce relocations and mem usage.
15981
15982 Sat Feb 25 11:58:16 CET 2006 Paolo Molaro <lupus@ximian.com>
15983
15984         * mini.h, mini-codegen.c: disable logging features if
15985         requested by configure.
15986
15987 Sat Feb 25 11:54:49 CET 2006 Paolo Molaro <lupus@ximian.com>
15988
15989         * mini.c: tiny verifier changes.
15990
15991 Fri Feb 24 18:17:52 CET 2006 Paolo Molaro <lupus@ximian.com>
15992
15993         * mini-ops.h, inssel-x86.brg, tramp-x86.c, mini-x86.c,
15994         cpu-pentium.md: stack alignment changes for osx/x86,
15995         partially from Geoff Norton <gnorton@customerdna.com>.
15996
15997 2006-02-24  Raja R Harinath  <harinath@gmail.com>
15998
15999         * jit-icalls.c (helper_compile_generic_method): Update to changes
16000         in metadata/class.c.
16001
16002 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
16003         
16004         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a missing check.
16005         
16006         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for
16007         interface calls with large offsets.
16008
16009 2006-02-23  Raja R Harinath  <rharinath@novell.com>
16010
16011         * jit-icalls.c (helper_compile_generic_method): Document the
16012         special-case we depend on so that we can inflate the method twice
16013         with the same context with no bad side-effects.
16014
16015 Thu Feb 23 13:45:46 CET 2006 Paolo Molaro <lupus@ximian.com>
16016
16017         * mini-x86.c, mini-amd64.c: fix for case when xen support
16018         is disabled.
16019
16020 Wed Feb 22 19:38:40 CET 2006 Paolo Molaro <lupus@ximian.com>
16021
16022         * mini-x86.c, mini-amd64.c: generate code to access tls items
16023         in a faster way for Xen systems.
16024
16025 Wed Feb 22 10:31:25 CET 2006 Paolo Molaro <lupus@ximian.com>
16026
16027         * exceptions-x86.c, mini-x86.h, driver.c, mini-codegen.c:
16028         updates and compilation fixes for the OSX/x86 port, mostly from
16029         Geoff Norton <gnorton@customerdna.com>.
16030
16031 Tue Feb 21 19:56:55 CET 2006 Paolo Molaro <lupus@ximian.com>
16032
16033         * inssel.brg: faster interface call implementation
16034         to sync with the interface_offsets MonoVTable changes.
16035
16036 Mon Feb 20 10:37:57 CET 2006 Paolo Molaro <lupus@ximian.com>
16037
16038         * mini.c: more verification checks.
16039
16040 Fri Feb 17 19:47:29 CET 2006 Paolo Molaro <lupus@ximian.com>
16041
16042         * mini.c: added a few more verification checks.
16043
16044 2006-02-17      Neale Ferguson <neale@sinenomine.net>
16045
16046         * mini-s390x.c, mini-s390x.h: Check for presence of long displacement
16047         facility on the processor and use it if available.
16048
16049 Fri Feb 17 16:12:52 CET 2006 Paolo Molaro <lupus@ximian.com>
16050
16051         * driver.c, aot.c, mini.c: throw exception if the IL code is
16052         invalid or unverifiable.
16053
16054 2006-02-17  Raja R Harinath  <rharinath@novell.com>
16055
16056         * generics.2.cs (test_0_ldfld_stfld_mro): Use m.struct_field, not
16057         m.StructField.
16058
16059 2006-02-16  Zoltan Varga  <vargaz@gmail.com>
16060
16061         * generics.2.cs: Add some tests for generics ldfld/stfld wrappers.
16062
16063 Wed Feb 15 16:23:17 CET 2006 Paolo Molaro <lupus@ximian.com>
16064
16065         * mini-s390x.c, mini-s390.c, mini.c, mini-amd64.c, mini-arm.c,
16066         mini-ia64.c, mini-sparc.c, mini-x86.c, mini-ppc.c: fixed
16067         handling of instantiated generic valuetypes.
16068
16069 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
16070
16071         * mini-exceptions.c mini-x86.h mini-x86.c: Get rid of 
16072         MONO_INIT_CONTEXT_FROM_CALLER, and use MONO_INIT_CONTEXT_FROM_FUNC
16073         instead.
16074
16075         * generics.2.cs: Revert the nullable reftypes tests.
16076
16077 2006-02-10  Zoltan Varga  <vargaz@gmail.com>
16078
16079         * mini-exceptions.c (MONO_INIT_CONTEXT_FROM_CALLER): Avoid
16080         using __builtin_frame_address (1) as it doesn't work in the presence
16081         of optimizations. Hopefully fixes #77273.
16082
16083         * Makefile.am generics.cs generics.2.cs: Revert the generics.2.cs
16084         -> generics.cs change as it doesn't work with some automake versions.
16085
16086 Thu Feb 9 16:24:44 CET 2006 Paolo Molaro <lupus@ximian.com>
16087
16088         * mini.c: handle systems that sue a different way to
16089         retrieve the stack address of the current thread.
16090
16091 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
16092
16093         * Makefile.am generics.2.cs: Rename this to generics.cs and handle
16094         it specially in the makefile.
16095
16096         * generics.2.cs: Add tests for nullable reference types.
16097
16098 Wed Feb 8 19:33:17 CET 2006 Paolo Molaro <lupus@ximian.com>
16099
16100         * mini.c: always handle the case when mono_jit_init()
16101         is called in a thread different from the main thread,
16102         confusing libgc (bug #77309).
16103
16104 Mon Feb 6 09:01:24 EST 2006 Paolo Molaro <lupus@ximian.com>
16105
16106         * mini-ppc.c: fix handling of exceptions in large methods (bug #74932).
16107
16108 Fri Feb 3 18:51:35 CET 2006 Paolo Molaro <lupus@ximian.com>
16109
16110         * mini.c: change optimize_branches () to use a single loop
16111         and introduce a new optimization to simplify some range checks.
16112
16113 2006-02-03  Martin Baulig  <martin@ximian.com>
16114
16115         * debug-debugger.c (debugger_thread_manager_thread_created): Removed
16116         and merged with debugger_thread_manager_add_thread().
16117         (mono_debugger_main): Call debugger_thread_manager_add_thread() to
16118         inform the debugger about the main thread.
16119
16120 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
16121
16122         * basic.cs: Add test for div.un/rem.un constant folding.
16123
16124 2006-02-03  Neale Ferguson <neale@sinenomine.net>
16125
16126         * cpu-s390x.md: correct int_xor_imm length
16127
16128 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
16129
16130         * generics.2.cs: New test for #77442.
16131
16132         * jit-icalls.c (helper_compile_generic_method): Check for null. Fixes
16133         #77442.
16134
16135 2006-02-02  Martin Baulig  <martin@ximian.com>
16136
16137         * tramp-x86.c, tramp-amd64.c: It's now safe to #include
16138         <mono/metadata/mono-debug-debugger.h>   
16139
16140         * debug-mini.c: Don't #define _IN_THE_MONO_DEBUGGER.
16141
16142 2006-02-02  Martin Baulig  <martin@ximian.com>
16143
16144         * debug-debugger.h: New header file for debug-debugger.c.
16145
16146         * debug-debugger.c: Big API cleanup; don't run the managed Main()
16147         function is a separate thread anymore; add support for attaching.
16148
16149 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
16150
16151         * tramp-x86.c: Fix a warning.
16152
16153 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
16154
16155         * mini-amd64.c (mono_arch_compute_omit_fp): Avoid hitting an assertion
16156         on very large methods.
16157
16158         * aot.c (load_patch_info): Fix a warning.
16159
16160 Mon Jan 30 12:51:10 CET 2006 Paolo Molaro <lupus@ximian.com>
16161
16162         * cpu-pentium.md, mini-x86.c, inssel.brg, inssel-x86.brg,
16163         mini-ops.h: alu membase optimizations.
16164
16165 Fri Jan 27 21:11:08 CET 2006 Paolo Molaro <lupus@ximian.com>
16166
16167         * mini-ops.h, mini.c, inssel.brg, inssel-x86.brg: opcode
16168         to speedup StringBuilder.
16169
16170 2006-01-27  Zoltan Varga  <vargaz@gmail.com>
16171
16172         * dominators.c (mono_compute_natural_loops): Fix detection of
16173         loop body start blocks.
16174
16175         * mini-exceptions.c (mono_print_thread_dump): Fix non x86 builds.
16176
16177 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
16178
16179         * mini.h mini.c mini-exceptions.c: Add thread dump support. Fixes
16180         #75145.
16181
16182 2006-01-25  Massimiliano Mantione  <massi@ximian.com>
16183
16184         * aliasing.c: Fixed aliasing issue on 64 bit archs.
16185
16186 2006-01-25  Martin Baulig  <martin@ximian.com>
16187
16188         * debug-debugger.c: Moved the `MonoDebuggerManager' and
16189         `MonoDebuggerThread' typedefs here from mono-debug-debugger.h and
16190         started to cleanup this file a little bit.
16191
16192 Tue Jan 24 18:20:48 CET 2006 Paolo Molaro <lupus@ximian.com>
16193
16194         * mini.c: optimize a codepath frequently happening in generics code.
16195
16196 2006-01-23  Martin Baulig  <martin@ximian.com>
16197
16198         * Makefile.am: Only compile debug-debugger.c on supported platforms.
16199
16200         * debug-debugger.c: Kill the IO_LAYER() hack and use the io-layer
16201         functions directly.
16202
16203         * driver.c: debug-debugger.c is only available if
16204         `MONO_DEBUGGER_SUPPORTED' is defined.   
16205
16206 2006-01-23  Martin Baulig  <martin@ximian.com>
16207
16208         * debug-debugger.c: Only enable this on platforms where the Mono
16209         Debugger is working (x86 and x86_64).
16210
16211 2006-01-21  Martin Baulig  <martin@ximian.com>
16212
16213         The Mono Debugger is now using the normal `mono' instead of the
16214         `mono-debugger-mini-wrapper' when executing managed code.
16215
16216         * debug-debugger.c: New file; previously known as
16217         debugger/wrapper/wrapper.c.
16218
16219         * debug-mini.c (mono_init_debugger): Removed.
16220
16221         * driver.c (mono_main): Added new `--inside-mdb' command line
16222         argument which is used when running inside the debugger.
16223
16224 2006-01-20  Zoltan Varga  <vargaz@gmail.com>
16225
16226         * liveness.c (mono_analyze_liveness): Remove some unused data
16227         structures.
16228
16229 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
16230
16231         * mini.h: Move mono_bitset_test_fast macro to monobitset.h where it belongs.
16232
16233 2006-01-16  Zoltan Varga  <vargaz@gmail.com>
16234
16235         * mini.h (mono_bitset_test_fast): Disable the 'fast' implementation which
16236         depends on implementation details of monobitset.
16237
16238         * mini.c (mini_get_ldelema_ins): Fix handling of 1 dimensional arrays.
16239         Fixes #77271.
16240
16241 2006-01-15  Zoltan Varga  <vargaz@gmail.com>
16242
16243         * liveness.c: Update after monobitset changes.
16244
16245 2006-01-14  Zoltan Varga  <vargaz@gmail.com>
16246
16247         * mini-amd64.c (mono_arch_compute_omit_fp): Fix a leak.
16248
16249 2006-01-11 Neale Ferguson <neale@sinenomine.net>
16250
16251         * inssel-s390x.brg: Fix reg: OP_LDADDR(OP_S390_LOADARG) register setting.
16252
16253         * mini-s390x.c: Remove warning messages.
16254
16255 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
16256
16257         * mini.c: pass the jitinfo to mono_profiler_method_end_jit.
16258
16259 2006-01-10  Zoltan Varga  <vargaz@gmail.com>
16260
16261         * generics.2.cs: Add ldelem/stelem_any test.
16262
16263 2006-01-10 Neale Ferguson <neale@sinenomine.net>
16264
16265         * mini-s390.c: Fix ATOMIC_ADD_I4 operation.
16266
16267 2006-01-07  Zoltan Varga  <vargaz@gmail.com>
16268
16269         * inssel-long.brg: Fix int->long ovf conversion rules. Fixes #77172.
16270         
16271 2006-01-06  Zoltan Varga  <vargaz@gmail.com>
16272
16273         * generics.2.cs: Reenable vtype tests.
16274
16275         * inssel-x86.brg: Remove an icorrect valuetype rule.
16276
16277 2006-01-06 Neale Ferguson <neale@sinenomine.net>
16278
16279         * mini-s390x.c, inssel-s390x.brg, cpu-s390x.md: Fix ATOMIC_I8 operations. Provide
16280         initial support for OP_ABS.
16281
16282 2006-01-05 Neale Ferguson <neale@sinenomine.net>
16283
16284         * mini-s390x.c (emit_float_to_int): Correct r8 to unsigned int algorithm.
16285
16286 2006-01-05 Neale Ferguson <neale@sinenomine.net>
16287
16288         * mini-s390.c, mini-s390.h, inssel-s390.brg, cpu-s390.md: Fix r8 to unsigned int 
16289         conversion and implement LADD/LSUB.
16290
16291         * exceptions-s390.c: Standardize mono_arch_find_jit_info to match other
16292         architectures.
16293
16294 2006-01-05 Neale Ferguson <neale@sinenomine.net>
16295
16296         * mini-s390x.c, mini-s390x.h: Fix r8 to unsigned int conversion.
16297
16298         * exceptions-s390x.c: Standardize mono_arch_find_jit_info to match other
16299         architectures.
16300
16301 2006-01-05 Neale Ferguson <neale@sinenomine.net>
16302
16303         * mini-s390x.c, mini-s390x.h, mini-s390.c, mini-s390.h: Fix lmf handling when 
16304         localloc is encountered.  Fixes crash in test-183.cs when using gmcs 
16305         (stack walk problem).
16306
16307 2006-01-04  Zoltan Varga  <vargaz@gmail.com>
16308
16309         * aot.c (mono_aot_load_method): Fix a warning.
16310
16311 2006-01-03  Neale Ferguson <neale@sinenomine.net>
16312
16313         * mini-s390x.h, exceptions-s390x.c, inssel-s390x.brg: Fix compiler warnings
16314
16315 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
16316
16317         * iltests.il: Add test for #77148.
16318
16319         * mini.c (mini_get_ldelema_ins): Handle arrays with rank 1 too. Fixes
16320         #77148.
16321
16322 2006-01-03  Neale Ferguson <neale@sinenomine.net>
16323
16324         * mini-s390x.c, inssel-s390x.brg: Remove debug statements
16325
16326 2006-01-03  Neale Ferguson <neale@sinenomine.net>
16327
16328         * mini-s390x.c, mini-s390x.h, exceptions-s390x.c, tramp-s390x.c, inssel-s390x.brg,
16329         cpu-s390x.md, mini-codegen.c, Makefile.am: add 64-bit s390 support to JIT.
16330
16331         * basic-long.cs: Add lconv-to-r4/r8 tests.
16332
16333 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
16334
16335         * mini.c (mono_method_to_ir): Fix DynamicMethod support in some opcodes.
16336
16337         * mini-sparc.c (mono_arch_call_opcode): Use mono_class_value_size ()
16338         here as on other archs.
16339
16340 2005-12-29 Neale Ferguson <neale@sinenomine.net>
16341
16342         * mini-s390.c (mono_arch_get_inst_for_method): Add memory_barrier support.
16343
16344 2005-12-29 Neale Ferguson <neale@sinenomine.net>
16345
16346         * inssel-s390.brg: Correct register assignment; Rework L[ADD|SUB]_OVF[_UN] for s390.
16347         
16348         * cpu-s390.md: Fix lengths of a couple of long instructions; Add memory_barrier.
16349
16350         * mini-s390.c: Fix long add/sub overflow instructions; Fix displacement handling in
16351         instrument_prolog; Add memory_barrier instruction.
16352
16353 2005-12-26  Zoltan Varga  <vargaz@gmail.com>
16354
16355         * exceptions-x86.c mini-x86.h: Fix solaris/x86 exception handling.
16356
16357 2005-12-23  Zoltan Varga  <vargaz@gmail.com>
16358
16359         * tramp-ia64.c (mono_arch_get_unbox_trampoline): Flush icache.
16360
16361         * aliasing.c inssel.brg: Fix warnings.
16362
16363         * inssel-ia64.brg (OP_MEMSET): Fix an optimization which previously
16364         could skip initialization of some parts of memory.
16365
16366         * mini.c mini-ia64.c: Fix warnings.
16367
16368         * inssel-sparc.brg: Add an implementation of lneg which actually works.
16369
16370 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
16371
16372         * aliasing.c (mono_build_aliasing_information): Add a workaround for
16373         a crash seen on sparc.
16374
16375         * mini-sparc.c: Add implementation of Thread.MemoryBarrier.
16376         
16377         * cpu-sparc.md: Add memory_barrier opcode. Remove unused opcodes.
16378
16379 2005-12-21 Neale Ferguson <neale@sinenomine.net>
16380
16381         * mini-ops.h: Add s390_backchain instruction
16382
16383         * inssel-s390.brg: Use backchaining instruction for LOADARG/STKARG operations.
16384
16385         * cpu-s390.md: Add s390_backchain instruction
16386
16387         * mini-s390.c: Significant ABI changes
16388
16389         * mini-s390.h: Cater for zero length structures
16390
16391 2005-12-20 Neale Ferguson <neale@sinenomine.net>
16392
16393         * mini-s390.c: ABI fixes
16394
16395         * inssel-s390.brg: Remove debug statements
16396
16397         * cpu-s390.md: Fix length of ATOMIC_xx operations
16398
16399 2005-12-19  Zoltan Varga  <vargaz@gmail.com>
16400
16401         * basic-float.cs: Add float<->long conversion tests.
16402
16403 2005-12-16 Neale Ferguson <neale@sinenomine.net>
16404
16405         * mini-s390.c: Fix LOCALLOC processing.
16406
16407         * tramp-s390.c (s390_magic_trampoline): Fix base calculation.
16408
16409 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
16410
16411         * iltests.il: Add tests for some opcodes not covered by the other
16412         tests.
16413
16414 2005-12-15 Neale Ferguson <neale@sinenomine.net>
16415
16416         * mini-s390.c: Fix ADDCC/SBB bug revealed by test_0_ulong_regress; Correct 
16417         register loading for Tail processing; Correct trace output.
16418
16419         * inssel-s390.brg: Reimplement LSUB_OVF due to s390 implementation of signed math.
16420
16421         * cpu-s390.md: Correct size of jmp instruction. 
16422
16423 2005-12-13 Neale Ferguson <neale@sinenomine.net>
16424
16425         * mini-s390.c (mono_arch_emit_prolog): Remove some debugging bits.
16426
16427 2005-12-13 Neale Ferguson <neale@sinenomine.net>
16428
16429         * inssel-s390.brg tramp-s390.c cpu-s390.md mini-s390.c mini-s390.h:
16430           Bring s390 up to current level.
16431
16432 2005-12-12  Zltan Varga  <vargaz@gmail.com>
16433
16434         * generics.2.cs: Disable the newly added tests as they do not work yet.
16435         
16436         * generics.2.cs: Add valuetype tests.
16437
16438 2005-12-09  Zoltan Varga  <vargaz@gmail.com>
16439
16440         * basic-long.cs: Add i4->u8 test.
16441
16442         * objects.cs: Add tests for JIT intrinsic.
16443
16444         * mini.c (mini_get_inst_for_method): Resurrect the array Rank/Length
16445         optimizations lost by a mistake.
16446
16447 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
16448
16449         * basic-long.cs: Remove a test moved to objects.cs.
16450
16451         * arrays.cs: Add more array tests.
16452
16453 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
16454
16455         * arrays.cs: Add new tests for multi-dimensional arrays.
16456
16457 2005-12-06  Raja R Harinath  <rharinath@novell.com>
16458
16459         * Makefile.am (test_sources2): Add generics.2.cs.
16460         (EXTRA_DIST): Add test_sources2.
16461
16462 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
16463
16464         Support for boxing and unboxing nullable types as well as the
16465         isinst operation on nullables, per the CLI ammendment.
16466
16467         * inssel.brg (CEE_ISINST): Special case for nullable
16468
16469         * mini.c (handle_unbox_nullable): new method
16470         (handle_box): Special case for nullable types
16471         (mono_method_to_ir): Call handle_unbox_nullable in correct
16472         places.
16473
16474         * generics.2.cs: New test suite
16475
16476         * Makefile.am: Support for regression tests with generics.
16477
16478 2005-12-03  Zoltan Varga  <vargaz@gmail.com>
16479
16480         * mini-amd64.c (emit_load_volatile_arguments): Add loading of arguments
16481         allocated to registers. Fixes #76800.
16482
16483 Thu Dec 1 12:59:40 EST 2005 Paolo Molaro <lupus@ximian.com>
16484
16485         * mini-ppc.c, inssel-ppc.brg: fix ABI issue (pinvoke3.cs).
16486
16487 2005-11-30  Zoltan Varga  <vargaz@gmail.com>
16488
16489         * exceptions.cs: Disable test_0_long_cast () test, since it fails on a lot 
16490         of platforms.
16491
16492 2005-11-29  Zoltan Varga  <vargaz@gmail.com>
16493
16494         * objects.cs basic-calls.cs: Move a test depending on valuetypes to
16495         objects.cs.
16496
16497         * inssel-long32.brg (CEE_CONV_I8): Remove unused labels.
16498         
16499         * inssel-long32.brg (CEE_CONV_I8): Convert this to a branchless version.
16500 Tue Nov 29 05:41:34 EST 2005 Paolo Molaro <lupus@ximian.com>
16501
16502         * mini-ppc.c, cpu-g4.md: ensure a fp register is converted to
16503         single precision before storing to a single precision location.
16504
16505 2005-11-28  Raja R Harinath  <rharinath@novell.com>
16506
16507         * Makefile.am (ILASM): Use profile-dependent location of ilasm.
16508
16509 2005-11-27  Zoltan Varga  <vargaz@gmail.com>
16510
16511         * basic-long.cs basic-calls.cs objects.cs: Move some tests to the
16512         correct files.
16513
16514         * basic.cs: Remove test_0_byte_compares test which was moved to
16515         objects.cs a long time ago.
16516
16517 2005-11-22  Massimiliano Mantione  <massi@ximian.com>
16518
16519         * aliasing.c: Fixed aliasing issue on 64 bit archs.
16520
16521 2005-11-20  Zoltan Varga  <vargaz@gmail.com>
16522
16523         * mini-ia64.c exceptions-ia64.c: Simplify the way filters/finally
16524         handlers are called.
16525
16526         * mini-ia64.c (mono_arch_emit_exceptions): Optimize size of exception
16527         throwing code.
16528
16529          * mini-ia64.c: Add support for the throw->branch exception 
16530         optimization.   
16531
16532         * driver.c (DEFAULT_OPTIMIZATIONS): Add MONO_OPT_EXCEPTION.
16533
16534 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
16535
16536         * mini.c: Enabled "fastpath" deadce :-)
16537         
16538 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
16539
16540         * mini.c: Added "fastpath" deadce (deadce without SSA), and a simple
16541         alias analysis pass to support it.
16542         * mini.h: Likewise.
16543         * ssa.c: Likewise.
16544         * liveness.c: Likewise (liveness computation can use aliasing
16545         information to be more accurate).
16546         * driver.c: Added an "ssa" option go tell the JIT to use SSA, and
16547         moreover made so that "--compile-all" uses the given optimization
16548         flags and not the default ones.
16549         * aliasing.c: Alias analysis (new file).
16550         * aliasing.h: Likewise.
16551         * Makefile.am: added "aliasing.c" and "aliasing.h".
16552         
16553 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
16554
16555         * mini-ops.h: Add missing OP_I opcodes so it is in synch with the
16556         OP_L opcodes.
16557
16558 2005-11-13  Zoltan Varga  <vargaz@gmail.com>
16559
16560         * mini-exceptions.c (mono_handle_exception_internal): Remove the 
16561         fp >= end_of_stack exit condition, as it is not needed, and it might
16562         become true for fp eliminated frames.
16563
16564 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
16565
16566         * mini-x86.c (mono_arch_emit_epilog): Use G_STRUCT_OFFSET instead of hard
16567         coded offsets.
16568
16569 Tue Nov 8 11:28:20 GMT 2005 Paolo Molaro <lupus@ximian.com>
16570
16571         * mini-arm.c: fixed alignment of doubles/longs to match
16572         the C ABI (bug #76635).
16573
16574 Mon Nov 7 16:13:21 CET 2005 Paolo Molaro <lupus@ximian.com>
16575
16576         * aot.c: fix compilation with --enable-minimal=aot.
16577
16578 Fri Nov 4 12:34:15 GMT 2005 Paolo Molaro <lupus@ximian.com>
16579
16580         * mini-arm.c: fixed compatibility with the new
16581         floating point emulator package for compares.
16582
16583 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com?
16584
16585         * mini.c : reverted sig->pinvoke changes (r51396-51397).
16586
16587 2005-11-01  Zoltan Varga  <vargaz@freemail.hu>
16588
16589         * mini-exceptions.c (print_stack_frame): Output to stderr.
16590         (mono_handle_native_sigsegv): Ditto.
16591
16592 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
16593
16594         * mini-amd64.c (mono_arch_output_basic_block): Remove unused
16595         OP_LCONV_TO_OVF_I implementation.
16596
16597         * mini-amd64.c: Add support for the throw->branch exception 
16598         optimization.
16599
16600         * branch-opts.c (mono_branch_optimize_exception_target): Allow the case
16601         when the catch clause catches a more general exception, i.e. Object.
16602
16603 2005-10-30  Zoltan Varga  <vargaz@gmail.com>
16604
16605         * cpu-ia64.md: Remove unused opcodes.
16606
16607         * mini.c (GET_CONTEXT): Simplify this somewhat by removing arch
16608         specific defines for architectures defining USE_SIGACTION.
16609
16610         * mini-ia64.c: Fix some warnings.
16611
16612         * exceptions-ia64.c (mono_arch_ip_from_context): Fix this, the previous
16613         version seemed to skip a frame.
16614
16615 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
16616
16617         * mini.c: Clean up the usage of sig->pinvoke flag. Now
16618         only calls which are made to native code use this flag.
16619
16620 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
16621
16622         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for
16623         varargs methods as well.
16624         
16625         * mini-amd64.c exceptions-amd64.c: Allow fp elimination in methods
16626         which have save_lmf set. Reorganize methods prologs a bit.
16627
16628         * mini-amd64.c (mono_arch_compute_omit_fp): Move the check for the
16629         debugger to the proper place.
16630
16631 2005-10-29  Martin Baulig  <martin@ximian.com>
16632
16633         * mini-amd64.c (debug_omit_fp): Temporarily disable fp elimination
16634         when running inside the debugger until the debugger has support
16635         for it.
16636
16637 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
16638
16639         * mini.h: Fix a warning.
16640
16641 2005-10-24  Miguel de Icaza  <miguel@novell.com>
16642
16643         * mini.c (mono_pmip): Just a wrapper for get_method_from_ip which
16644         we expose publicly, this returns the string.
16645
16646 2005-10-22  Zoltan Varga  <vargaz@freemail.hu>
16647
16648         * exceptions-amd64.c (mono_arch_find_jit_info): Fix some corner cases
16649         with fp elimination.
16650
16651 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
16652
16653         * mini-exceptions.c (mono_handle_native_sigsegv): Try to print a
16654         native stacktrace using the glibc 'backtrace' function if available.
16655
16656 2005-10-20  Zoltan Varga  <vargaz@gmail.com>
16657
16658         * mini.h (MonoDebugOptions): Remove 'abort_on_sigsegv' option.
16659
16660         * mini-exceptions.c (mono_handle_native_sigsegv): New function to 
16661         handle SIGSEGVs received while in native code.
16662
16663         * mini.c (sigsegv_signal_handler): If the SIGSEGV happened in native
16664         code, call mono_handle_native_sigsegv which will abort the runtime
16665         after printing some diagnostics, instead of converting it into a
16666         confusing NullReferenceException.
16667
16668 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
16669
16670         * cpu-pentium.md: Remove unused opcodes.
16671
16672 2005-10-18  Zoltan Varga  <vargaz@freemail.hu>
16673
16674         * mini-amd64.h (MonoLMF): Add rsp field.
16675
16676         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Save the sp reg into
16677         the lmf too.
16678
16679 2005-10-17  Zoltan Varga  <vargaz@gmail.com>
16680
16681         * mini-codegen.c (get_register_spilling): Fix some warnings.
16682
16683 2005-10-16  Zoltan Varga  <vargaz@freemail.hu>
16684
16685         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Add support for fp
16686         elimination during exception handling. Enable fp elimination by
16687         default.
16688
16689         * mini-amd64.h mini-amd64.c: Add preliminary support for frame pointer
16690         elimination.
16691
16692 2005-10-16  Martin Baulig  <martin@ximian.com>
16693
16694         * mini-exceptions.c
16695         (mono_debugger_run_finally): New public method for the debugger.
16696
16697 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
16698
16699         * debug-mini.c (mono_debug_init_method): Fix warning.
16700
16701         * mini.h branch-opts.c (mono_branch_optimize_exception_target): Make
16702         the 'exname' parameter const to fix some warnings.
16703
16704 2005-10-09  Zoltan Varga  <vargaz@freemail.hu>
16705
16706         * mini-exceptions.c (mono_handle_exception_internal): Fix another bug
16707         introduced by the previous patch.
16708
16709 2005-10-08  Zoltan Varga  <vargaz@gmail.com>
16710
16711         * basic-float.cs: Add test for precision of float arithmetic.
16712
16713         * mini-ia64.c (mono_arch_output_basic_block): Convert to/from doubles
16714         when loading/storing single values from/to memory.
16715
16716         * mini.c (mono_jit_compile_method_with_opt): Create the function
16717         pointers in the correct domain.
16718
16719 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
16720
16721         * mini-exceptions.c (mono_handle_exception_internal): Fix bug 
16722         introduced by previous patch.
16723         
16724         * mini-exceptions.c (mono_handle_exception_internal): Handle the case
16725         when out_filter_idx is NULL.
16726
16727         * mini-exceptions.c: Don't run filter clauses twice during exception
16728         handling. Fixes #75755.
16729
16730 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
16731
16732         * aot.c: Add support for ldflda wrappers.
16733
16734         * mini.c (mono_method_to_ir): Use ldflda wrappers for CEE_LDFLDA. Fixes
16735         #75902.
16736
16737 Tue Oct 4 20:23:25 CEST 2005 Paolo Molaro <lupus@ximian.com>
16738
16739         * mini.c, mini.h: do not consider exception handlers blocks when
16740         setting up interface variables.
16741
16742 2005-10-04  Zoltan Varga  <vargaz@freemail.hu>
16743
16744         * aot.c (emit_section_change): Fix emitting of sections on win32. Fixes #76322.
16745
16746 2005-10-03  Zoltan Varga  <vargaz@gmail.com>
16747
16748         * liveness.c (mono_analyze_liveness): Revert parts of r51051 since it
16749         causes a regression.
16750
16751         * mini.c (mini_thread_cleanup): Fix reading of freed memory.
16752
16753 2005-10-02  Zoltan Varga  <vargaz@freemail.hu>
16754
16755         * mini.h (OP_PCONST): Move the definition of OP_PCONST into the rest
16756         of the OP_P definitions.
16757
16758         * TODO: Add a proposal for dealing with the CEE/OP mess.
16759
16760         * mini-amd64.c (mono_arch_output_basic_block): Merge mul_imm 
16761         optimizations from the x86 port.
16762
16763         * cpu-amd64.md: Ditto.
16764
16765         * basic.cs basic-long.cs: Add tests.
16766
16767 Fri Sep 30 20:07:20 CEST 2005 Paolo Molaro <lupus@ximian.com>
16768
16769         * Makefile.am, driver.c, mini-x86.c, mini.c, mini.h, branch-opts.c:
16770         Patrik Torstensson's implementation of my exception-handling
16771         optimization idea, when the exception object is not used
16772         (bug #62150).
16773
16774 Fri Sep 30 19:10:29 CEST 2005 Paolo Molaro <lupus@ximian.com>
16775
16776         * mini-x86.c, cpu-pentium.md: Patrik Torstensson's port
16777         of the mul_imm optimizations from the old jit.
16778
16779 Fri Sep 30 11:37:51 EDT 2005 Paolo Molaro <lupus@ximian.com>
16780
16781         * mini.c, liveness.c: patch by Patrik Torstensson and
16782         Zoltan Varga to improve performance in methods with
16783         exception clauses.
16784
16785 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
16786
16787         * driver.c: Remove 'Globalization' entry from --version.
16788
16789 2005-09-28  Zoltan Varga  <vargaz@gmail.com>
16790
16791         * mini.c (mono_jit_compile_method_inner): Do not load AOT code when
16792         there is a profiler interested in JIT events.
16793
16794         * aot.c: Load profile files produced by the AOT profiling module, and
16795         reorder methods based on the profiling info. Add a 'method_order' table
16796         to the AOT file to make mono_aot_find_jit_info work with the reordered
16797         methods.
16798
16799         * mini.h: Bump AOT file version info.
16800
16801 Wed Sep 28 17:12:48 CEST 2005 Paolo Molaro <lupus@ximian.com>
16802
16803         * mini-arm.h: work around what looks like a gcc bug when optimizations
16804         are enabled.
16805
16806 2005-09-28  Raja R Harinath  <rharinath@novell.com>
16807
16808         * Makefile.am (AM_CFLAGS): Don't use += to append inside
16809         conditionals.  Use ...
16810         (PLATFORM_CFLAGS, ARCH_CFLAGS): ... these.
16811
16812 2005-09-27  Zoltan Varga  <vargaz@freemail.hu>
16813
16814         * mini-amd64.c (mono_arch_call_opcode): Use mono_class_value_size ()
16815         to determine the amount of memory to copy when passing valuetypes.
16816
16817         * inssel-amd64.brg: Remove PUSH(LDIND4) rules since they convert an
16818         4 byte load into a 8 byte load. Fix aligning of size in OP_OUTARG_VT.
16819
16820 2005-09-27  Zoltan Varga  <vargaz@gmail.com>
16821
16822         * mini.h mini.c aot.c: Add infrastructure to collect pagefault 
16823         information about aot.
16824
16825 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
16826
16827         * *.c: Replace the use of {Enter,Leave}CriticalSection with
16828         macros. This will allow a deadlock debugger to easily be plugged
16829         in.
16830
16831 Tue Sep 27 09:32:11 EDT 2005 Paolo Molaro <lupus@ximian.com>
16832
16833         * mini-ppc.c, cpu-g4.md: added memory barrier instruction.
16834
16835 2005-09-27  Raja R Harinath  <rharinath@novell.com>
16836
16837         * Makefile.am (AM_CFLAGS): Rename from INCLUDES.
16838         (AM_CFLAGS) [PLATFORM_WIN32): Append to it, don't set it.
16839         (AM_CFLAGS) [ARM]: Add arch/arm directory from the build tree.
16840         ($(arch_built)) [CROSS_COMPILING]: Error out.
16841
16842 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
16843
16844         * aot.c: Add support for the no_special_static flag for classes.
16845
16846 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
16847
16848         * Reapply reverted patches.
16849
16850         * *: Revert r50174 as well.
16851
16852         * mini-amd64.c cpu-amd64.md inssel-amd64.brg: Revert r50170 as well.
16853
16854 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
16855
16856         * mini-amd64.c: Revert r50342 to see if this fixed buildbot.
16857
16858 2005-09-23  Miguel de Icaza  <miguel@novell.com>
16859
16860         * mini.c (SIG_HANDLER_SIGNATURE): Only dereference info if it is
16861         part of the SIG_HANDLER_SIGNATURE.  
16862
16863 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
16864
16865         * mini.h mini.c: Add a new MONO_DEBUG option to collect metadata pagefault
16866         statistics.
16867
16868         * mini-x86.c (mono_arch_call_opcode): Fix vararg calling convention 
16869         introduced by previous patch.
16870
16871 2005-09-21  Zoltan Varga  <vargaz@gmail.com>
16872
16873         * tramp-x86.c (mono_arch_create_trampoline_code): Restore caller
16874         saved registers too.
16875
16876         * mini-x86.c (mono_arch_allocate_vars): Rewrite this so it works based 
16877         upon the information returned by get_call_info ().
16878         
16879         * mini-x86.c (add_float): Fix stack size calculation.
16880         (mono_arch_call_opcode): Rewrite this so it works based up the
16881         information returned by get_call_info ().
16882         (mono_arch_get_this_vret_args): Ditto.
16883
16884 2005-09-21  Zoltan Varga  <vargaz@freemail.hu>
16885
16886         * mini-amd64.c (mono_arch_emit_this_vret_args): Use the information
16887         in cinfo to determine the registers which need to be used.
16888
16889 2005-09-20  Miguel de Icaza  <miguel@novell.com>
16890
16891         * driver.c (mono_main): Add --server and --desktop flags. 
16892
16893 2005-09-16  Zoltan Varga  <vargaz@gmail.com>
16894
16895         * mini-ia64.h: Make register masks 64 bit. Don't treat argument
16896         registers as global registers.
16897
16898         * inssel-ia64.brg (stmt): Remove OP_OUTARG_REG () rules which are no 
16899         longer needed with the new register allocator.
16900
16901         * mini-ia64.c: Use OP_MOVE instead of OP_SETREG for reg-reg moves.
16902
16903         * cpu-ia64.md: Remove unused opcodes.
16904         
16905         * regalloc.c mini-codegen.c: Make register masks 64 bit on ia64.
16906         
16907 2005-09-16  Zoltan Varga  <vargaz@freemail.hu>
16908
16909         * cpu-amd64.md: Remove unused opcodes.
16910
16911         * inssel-amd64.brg: Remove OP_OUTARG_REG () rules which are no longer
16912         needed with the new register allocator.
16913
16914         * inssel-amd64.brg mini-amd64.c: Use OP_MOVE instead of OP_SETREG for
16915         reg-reg moves.
16916
16917 2005-09-16  Raja R Harinath  <rharinath@novell.com>
16918
16919         * Makefile.am (check-local): Don't invoke semdel-wrapper.
16920
16921 2005-09-16  Martin Baulig  <martin@ximian.com>
16922
16923         * exceptions-amd64.c
16924         (throw_exception): Don't call mono_debugger_throw_exception() if
16925         we're a rethrow - see the FIXME in the code.
16926
16927 2005-09-15  Geoff Norton  <gnorton@customerdna.com>
16928
16929         * mini.c (mono_init_exceptions): This only works on some architectures.
16930         
16931 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
16932
16933         * mini.c (mono_method_to_ir): Add OP_LMUL imm -> OP_LMUL_IMM conversion
16934         on ia64.
16935
16936         * inssel-long.brg mini-ia64.c: Add OP_LMUL_IMM rules.
16937
16938         * mini-ia64.h mini-ia64.c: Remove the altstack support code which is
16939         now in mini-exceptions.c.
16940
16941 2005-09-15  Zoltan Varga  <vargaz@freemail.hu>
16942
16943         * mini-amd64.h mini-am64.c: Remove the altstack support code which is
16944         now in mini-exceptions.c.
16945
16946 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
16947
16948         * exceptions-x86.c: Applied patch from Patrik Torstensson 
16949         <patrik.torstensson@gmail.com>. Add stack overflow handling support for win32.
16950
16951         * mini-exceptions.c mini-x86.c mini.c: Move the altstack setup/teardown
16952         code into mini-exceptions.c. Add some assertions to it.
16953
16954 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
16955
16956         * aot.c (emit_section_change): Applied patch from "The Software Team" 
16957         (<software@solmersa.com>). Fix as errors on windows.
16958
16959 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
16960
16961         * tramp-amd64.c (mono_arch_create_trampoline_code): Fix saving of
16962         method info into the LMF.
16963
16964 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
16965         
16966         * mini-ia64.c: Add proper unwind info for method epilogs.
16967
16968         * exceptions-ia64.c: Add some code to help debugging.
16969         
16970         * mini-ia64.c mini-ia64.h: Add sigaltstack support.
16971
16972         * mini-exceptions.c: Fix warning.
16973
16974 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
16975
16976         * mini.c: Really fix build.
16977
16978         * mini-x86.c mini-amd64.c: Fix build.
16979
16980 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
16981
16982         * mini-ia64.c inssel-ia64.brg: Add InterlockedExchange instrinsics.
16983
16984         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Implement
16985         some Interlocked methods as intrinsics.
16986
16987         * mini.c (mini_get_inst_for_method): Call arch_get_inst_for_method
16988         for Thread methods as well.
16989
16990         * mini-ops.h: Add OP_MEMORY_BARRIER opcode.
16991
16992         * inssel.brg: Add rule for OP_MEMORY_BARRIER.
16993
16994         * mini-ia64.c mini-x86.c mini-amd64.c 
16995         cpu-ia64.md cpu-pentium.md cpu-amd64.md: Add implementation of 
16996         OP_MEMORY_BARRIER.
16997         
16998         * mini.c (mono_init_exceptions): Fix build breakage.
16999
17000 2005-09-10  Zoltan Varga  <vargaz@gmail.com>
17001
17002         * mini-ia64.c exceptions-ia64.c tramp-ia64.c: Remove 'manual' emitting
17003         of instructions. Use the new ia64_unw_op macros for emitting unwind
17004         info.
17005
17006         * mini.c (mono_init_exceptions): Initialize exception handling
17007         related trampolines at startup.
17008
17009 Fri Sep 9 19:30:37 BST 2005 Paolo Molaro <lupus@ximian.com>
17010
17011         * cpu-arm.md, mini-arm.c: fix for dynamic code (Gtk# apps).
17012
17013 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
17014
17015         * mini.c: Handle type loading errors gracefully during compilation and
17016         throw the appropriate exception.
17017
17018 Fri Sep 9 09:49:14 CEST 2005 Paolo Molaro <lupus@ximian.com>
17019
17020         * ldscript.mono, Makefile.am: use anonymous versions in the ldscript
17021         for the mono binary.
17022
17023 2005-09-09  Martin Baulig  <martin@ximian.com>
17024
17025         * mini.c (mono_method_to_ir): Comment out the G_BREAKPOINT()'s for
17026         the release.
17027
17028 Thu Sep 8 14:53:45 BST 2005 Paolo Molaro <lupus@ximian.com>
17029
17030         * mini-arm.h: use emulation for conv.r.un for the release.
17031
17032 Thu Sep 8 11:28:45 BST 2005 Paolo Molaro <lupus@ximian.com>
17033
17034         * mini-arm.c, objects.cs: more fixes and tests for them.
17035
17036 Wed Sep 7 17:14:26 BST 2005 Paolo Molaro <lupus@ximian.com>
17037
17038         * mini-arm.c: align structures to at least 4 bytes to be able
17039         to keep our current optimized memcpy.
17040
17041 Tue Sep 6 22:51:08 BST 2005 Paolo Molaro <lupus@ximian.com>
17042
17043         * mini-arm.c, cpu-arm.md, inssel-arm.brg: bugfixes.
17044
17045 2005-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17046
17047         * mini.c: ignore SIGPIPE.
17048
17049 2005-09-04  Zoltan Varga  <vargaz@gmail.com>
17050
17051         * mini-ia64.c (mono_arch_lowering_pass): Convert 'and_imm 255' to zext1.
17052
17053         * mini-ia64.h mini-ia64.c: Add some minor optimizations.
17054
17055 2005-09-02  Zoltan Varga  <vargaz@gmail.com>
17056
17057         * mini.h: Add prototype for mono_allocate_stack_slots_full.
17058
17059 Thu Sep 1 21:05:26 BST 2005 Paolo Molaro <lupus@ximian.com>
17060
17061         * exceptions-arm.c, mini.c, mini-arm.c, mini-arm.h:
17062         exception handling support.
17063         * mini-arm.c, mini-arm.h: bigendian fixes (partially from a
17064         patch by Brian Koropoff <briank@marakicorp.com>).
17065
17066 Thu Sep 1 10:22:44 EDT 2005 Paolo Molaro <lupus@ximian.com>
17067
17068         * mini.c: revert another 'optimization' which breaks when
17069         items on the eval stack need to be saved at a basic block end
17070         (bug #75940).
17071
17072 Wed Aug 31 17:29:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
17073
17074         * jit-icalls.c: for arrays, ensure we always provide
17075         lower bounds.
17076
17077 2005-08-30  Zoltan Varga  <vargaz@gmail.com>
17078
17079         * mini.c (mono_allocate_stack_slots_full): Fix ia64 build.
17080         
17081         * mini.c (mini_get_inst_for_method): Special case Object:.ctor as well.
17082
17083 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
17084
17085         * mini-ia64.h mini-ia64.c: Implement frame pointer elimination. Keep
17086         arguments in their original register.
17087
17088 2005-08-28  Zoltan Varga  <vargaz@gmail.com>
17089
17090         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Optimize
17091         memset/memcpy.
17092
17093         * mini.c (mono_method_to_ir): Disable the MUL->MUL_IMM optimization
17094         when ssapre is enabled.
17095
17096         * inssel-long.brg: Fix bug in previous patch.
17097
17098         * mini-ia64.c mini-ia64.h mini.c inssel-long.brg: Optimize 
17099         multiplication by a constant.
17100
17101 2005-08-27  Zoltan Varga  <vargaz@gmail.com>
17102
17103         * mini-ia64.c (mono_arch_setup_jit_tls_data): Add support for intel
17104         icc.
17105
17106         * tramp-ia64.c (mono_arch_create_trampoline_code): Use st8.spill for
17107         saving registers.
17108
17109 Fri Aug 26 11:09:28 BST 2005 Paolo Molaro <lupus@ximian.com>
17110
17111         * inssel-arm.brg: apply changes tested by Brian Koropoff
17112         <briank@marakicorp.com>.
17113
17114 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
17115
17116         * mini-x86.c (mono_arch_emit_prolog): Fix calling of mono_jit_thread_attach () under windows.
17117         
17118 2005-08-24  Zoltan Varga  <vargaz@gmail.com>
17119
17120         * mini-codegen.c (mono_local_regalloc): Avoid allocating dreg and sreg1/2
17121         to the same register if dreg is just a base register.
17122         (print_ins): Improve printing of membase opcodes.
17123
17124         * inssel-x86.brg: Add optimized ldind(reg) rules.
17125
17126         * mini-x86.c cpu-pentium.md: Changes required to support the new rules.
17127
17128 Wed Aug 24 19:39:36 CEST 2005 Paolo Molaro <lupus@ximian.com>
17129
17130         * mini.c: when running under valgrind, set the stack bottom for
17131         the GC at the actual approximate stack for the app (fixes running
17132         mono with valgrind).
17133
17134 Tue Aug 23 21:38:50 CEST 2005 Paolo Molaro <lupus@ximian.com>
17135
17136         * mini.c: do no break at the first valuetype to init found
17137         (fixes bug #75791).
17138
17139 Tue Aug 23 16:53:21 BST 2005 Paolo Molaro <lupus@ximian.com>
17140
17141         * cpu-arm.md, mini-arm.c: more fixes and LMF support.
17142
17143 Tue Aug 23 15:11:44 CEST 2005 Paolo Molaro <lupus@ximian.com>
17144
17145         * cpu-g4.md: fixed instruction length exposed by the nemerle compiler.
17146
17147 2005-08-23  Zoltan Varga  <vargaz@freemail.hu>
17148
17149         * inssel-amd64.brg inssel-x86.brg: Fix the fcall rules.
17150
17151 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
17152
17153         * inssel-x86.brg: Fix assert in patch_delegate_trampoline.
17154
17155         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Add some debug
17156         code.
17157
17158         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Add some debug
17159         code.
17160
17161         * mini.c (optimize_branches): Don't quit after 1000 iterations on large
17162         methods.
17163
17164 Mon Aug 22 19:16:29 BST 2005 Paolo Molaro <lupus@ximian.com>
17165
17166         * tramp-arm.c: allocate less memory for the trampoline and fix typo.
17167
17168 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
17169
17170         * mini.c (mono_method_to_ir): Remove instructions inserted after a branch
17171         in the tail recursion optimization.
17172
17173         * mini.h helpers.c (mono_disassemble_code): Emit starts of basic blocks as 
17174         debug info into the assembly file.
17175
17176         * iltests.il: Add test for filter regions.
17177
17178         * mini.c (mono_method_to_ir): Fix handling of nested FILTER clauses. Fix
17179         initial stack of filter regions. Fixes #75755.
17180
17181 Mon Aug 22 17:49:16 BST 2005 Paolo Molaro <lupus@ximian.com>
17182
17183         * mini-arm.c, cpu-arm.c: fixes and support for methods with bigger
17184         stack requirements.
17185
17186 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
17187
17188         * mini.c (mono_create_delegate_trampoline): Fix memory leak. Put back
17189         the check for an already compiled method on non-ia64 platforms.
17190         (mono_create_jump_trampoline): Store the MonoJitInfo structure into the
17191         proper domain.
17192
17193         * mini-x86.h tramp-x86.c: Add support for delegate trampolines.
17194
17195         * inssel-x86.brg: Add some optimized call rules.
17196
17197 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
17198
17199         * mini.c (mono_create_delegate_trampoline): Do not return an already compiled
17200         method here.
17201
17202         * mini.h mini-trampolines.c: Pass the trampoline argument to 
17203         mono_arch_patch_delegate_trampoline.
17204
17205         * mini-ia64.h mini-ia64.c tramp-ia64.c: Add support for delegate trampolines.
17206
17207         * mini-trampolines.c: Fix build.
17208
17209         * mini-amd64.h: Add delegate trampolines.
17210
17211         * mini.h mini.c mini-trampolines.c tramp-amd64.c: Add delegate trampolines.
17212
17213         * inssel-amd64.brg: Add optimized call rules.
17214         
17215         * mini-ia64.c tramp-ia64.c: Improve instruction scheduling.
17216
17217         * inssel-ia64.brg: Add optimized ldind(reg) rules.
17218
17219 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
17220
17221         * mini.c (mono_create_class_init_trampoline): Fix bug caused by last
17222         change.
17223
17224         * mini-ia64.c: Remove LMF fixmes.
17225
17226         * mini-ia64.h: Remove most fields from LMF.
17227
17228         * inssel-ia64.brg (stmt): Fix unaligned access errors.
17229
17230         * mini-trampolines.c: Add support for IA64 function descriptors.
17231
17232         * mini.h mini.c jit-icalls.c exceptions-ia64.cdriver.c: Add support
17233         for IA64 function descriptors.
17234
17235 Sat Aug 20 16:51:44 BST 2005 Paolo Molaro <lupus@ximian.com>
17236
17237         * tramp-arm.c: patch the vtable for virtual calls. Added
17238         support code to register/unregister the LMF.
17239         * mini-arm.c, mini-arm.h: warning fixes, fixes, speedups,
17240         more LMF work.
17241
17242 2005-08-19  Dick Porter  <dick@ximian.com>
17243
17244         * mini.c: Use a gsize to store the thread ID, so it can hold a 64
17245         bit value if needed.
17246
17247 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
17248
17249         * mini.c (mini_get_method): Move handling of wrapper data here.
17250
17251         * mini.c (mono_method_to_ir): Add support for dynamic methods.
17252
17253         * mini.c (mono_method_to_ir): Convert nonvirtual calls to abstract methods into
17254         virtual.
17255
17256         * mini.c (mono_method_to_ir): Emit IR for CEE_NOP as well, so 
17257         bblock->code does not remain empty.
17258
17259 2005-08-17  Zoltan Varga  <vargaz@freemail.hu>
17260
17261         * arrays.cs: Add regression test for #75832.
17262
17263         * inssel-amd64.brg cpu-amd64.md mini-amd64.c: Fix LDELEMA optimization
17264         rules. Fixes #75832.
17265
17266         * mini-ia64.c tramp-ia64.c exceptions-ia64.c: Implement improved
17267         instruction scheduling.
17268
17269 2005-08-12  Zoltan Varga  <vargaz@freemail.hu>
17270
17271         * mini-exceptions.c (ves_icall_get_frame_info): Fix IA64 build.
17272
17273 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
17274
17275         * mini-exceptions.c mini-x86.h: Move VC stuff into macros in mini-x86.h.
17276
17277         * mini-codegen.c: Fix VC build.
17278
17279         * cpu-pentium.md: Increase length of atomic_exhange_i4.
17280
17281 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17282
17283         * mini.h: fix signature for mono_register_opcode_emulation.
17284
17285 2005-08-09  Zoltan Varga  <vargaz@freemail.hu>
17286
17287         * mini.c: Get rid of most of the helper_sig_... constants using
17288         mono_create_icall_signature ().
17289
17290 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
17291
17292         * jit-icalls.c (helper_ldstr): New helper function.
17293
17294         * mini.c (get_basic_blocks): Set out_of_line for bblocks containing a throw.
17295
17296         * mini.c (mono_method_to_ir): If an LDSTR instruction is in a bblock with a
17297         throw, load the string using a helper call instead of creating a string object.
17298
17299         * aot.c: Update after LDSTR changes.
17300
17301         * mini.h: Bump AOT file version.
17302         
17303         * aot.c: Save class size info into the AOT file. Print more statistics during
17304         compilation.
17305
17306         * mini.h: Bump AOT file version.
17307
17308         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
17309         ordering of disasm cases. Fixes #74957.
17310
17311 Thu Aug 4 19:47:24 BST 2005 Paolo Molaro <lupus@ximian.com>
17312
17313         * mini-ops.h, mini-arch.h, inssel.brg, mini.c, mini.h,
17314         jit-icalls.c, mini-codegen.c, Makefile.am: changes in
17315         the generic code needed for the ARM port.
17316
17317 Thu Aug 4 19:42:54 BST 2005 Paolo Molaro <lupus@ximian.com>
17318
17319         * exceptions-arm.c, tramp-arm.c, mini-arm.c, mini-arm.h, cpu-arm.md,
17320         inssel-arm.brg: more ARM features and fixes.
17321
17322 Mon Aug 1 18:37:38 BST 2005 Paolo Molaro <lupus@ximian.com>
17323
17324         * tramp-arm.c, mini-arm.c, cpu-arm.md, inssel-arm.brg: more
17325         ARM port work in progress.
17326
17327 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
17328
17329         * mini-ia64.c (mono_arch_call_opcode): Ongoing IA64 work.
17330
17331         * mini-exceptions.c mini-ia64.h: Ongoing IA64 work.
17332
17333         * mini-ia64.c (ia64_emit_bundle): Ongoing IA64 work.
17334
17335         * inssel.brg (mini_emit_memset): Add support for unaligned access.
17336
17337         * *-ia64.*: Ongoing IA64 work.
17338         
17339         * mini-ia64.c exceptions-ia64.c: Ongoing IA64 work.
17340
17341 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
17342
17343         * TODO: Remove out-of-data todo stuff.
17344
17345         * mini.h mini.c (mono_create_jit_trampoline_from_token): Remove some
17346         dead code.
17347
17348         * aot.c: Save/load MonoCachedClassInfo->has_nested_classes.
17349
17350         * mini.h: Bump corlib version.
17351
17352 2005-07-27  Martin Baulig  <martin@ximian.com>
17353
17354         * mini-codegen.c
17355         (create_copy_ins): Added `const unsigned char *ip' argument; set
17356         `copy->cil_code' from it.
17357
17358 2005-07-27  Martin Baulig  <martin@ximian.com>
17359
17360         * mini-exceptions.c (mono_handle_exception): Don't call
17361         mono_debugger_handle_exception() for filters.
17362
17363 2005-07-27  Zoltan Varga  <vargaz@freemail.hu>
17364
17365         * mini-trampolines.c (mono_aot_trampoline): Handle AppDomain:InvokeInDomain
17366         as well.
17367
17368 2005-07-26  Martin Baulig  <martin@ximian.com>
17369
17370         Committing a patch from Michal Moskal <michal.moskal@gmail.com>.
17371
17372         * mini.c (mono_method_to_ir): In `CEE_CALLI', only use
17373         helper_compile_generic_method() if the method is actually virtual
17374         and non-final.
17375
17376 2005-07-26  Martin Baulig  <martin@ximian.com>
17377
17378         * mini.c
17379         (trampoline_code): Renamed to `mono_trampoline_code' and made it
17380         public; this is now accessed directly by the debugger.
17381         (mono_generic_trampoline_code): Removed.
17382
17383         * debug-mini.c
17384         (mono_debug_init_method): Also add interncalls and wrappers.
17385
17386 2005-07-23  Zoltan Varga  <vargaz@freemail.hu>
17387
17388         * mini-ia64.c mini-ia64.h: Add support for tracing/profiling.
17389
17390 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
17391
17392         * aot.c (mono_aot_get_method_from_token): Fix a potential crash here.
17393
17394 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
17395
17396         * aot.c (load_patch_info): Fix handling of stfld_remote wrapper.
17397
17398 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
17399
17400         * mini-amd64.c (mono_arch_setup_jit_tls_data): Use the nice way of
17401         getting TLS offsets on AMD64 too.
17402
17403 2005-07-20  Kornel Pal <kornelpal@hotmail.com>
17404
17405         * driver.c: Detach console when executing IMAGE_SUBSYSTEM_WINDOWS_GUI on win32
17406
17407 Wed Jul 20 18:05:19 BST 2005 Paolo Molaro <lupus@ximian.com>
17408
17409         * exceptions-arm.c, mini-arm.c, tramp-arm.c, cpu-arm.md,
17410         inssel-arm.brg, mini-arm.h: ARM port work in progress.
17411
17412 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
17413
17414         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix build.
17415
17416         * mini.h mini.c mini-*.h tramp-*.c: Move more cross platform trampoline code
17417         to mini.c.
17418
17419         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Call 
17420         mono_sparc_is_virtual_call ().
17421         
17422         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix warning.
17423
17424         * tramp-sparc.c (mono_arch_create_trampoline_code): Fix order of
17425         trampoline parameters.
17426
17427         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix signature.
17428         
17429         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Rename this
17430         to mono_arch_get_vcall_slot_addr.
17431
17432         * Makefile.am tramp-sparc.c: Update the sparc port to use the generic
17433         trampoline code.
17434
17435         * *-sparc.*: Merge the mini-xp-regalloc branch for sparc.
17436
17437 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
17438
17439         * mini-ia64.h mini-ia64.c: Finish pinvoke support.
17440
17441 2005-07-19  Martin Baulig  <martin@ximian.com>
17442
17443         * exceptions-amd64.c (throw_exception): Call
17444         mono_debugger_throw_exception() here like we're doing it on i386.
17445
17446 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
17447
17448         * mini-ia64.c: Add optimized TLS access support.
17449
17450 2005-07-18  Zoltan Varga  <vargaz@freemail.hu>
17451
17452         * mini-exceptions.c: Ongoing IA64 work.
17453
17454         * mini-ia64.c inssel-long.brg: Ongoing IA64 work.
17455
17456         * mini.c: Use the default optimization set when embedding. Fixes
17457         #75194.
17458
17459 2005-07-11  Zoltan Varga  <vargaz@freemail.hu>
17460
17461         * tramp-amd64.c tramp-ia64.c Makefile.am: Move arch independent parts 
17462         of trampolines to a separate file.
17463
17464         * mini-trampolines.c: New file.
17465
17466         * mini.h tramp-x86.c: Move arch independent parts of trampolines to a 
17467         separate file.
17468         
17469         * tramp-x86.c: Reorganize the trampoline code to be similar to the 
17470         amd64/ia64 code.
17471
17472         * mini-codegen.c: Fix cygwin build.
17473
17474 2005-07-10  Zoltan Varga  <vargaz@freemail.hu>
17475
17476         * mini.c: Add some minor changes needed by the IA64 port.
17477
17478         * *-ia64.*: Ongoing IA64 work.
17479
17480 2005-07-09  Zoltan Varga  <vargaz@freemail.hu>
17481
17482         * tramp-amd64.c mini-amd64.c: Update after latest AOT changes. Split 
17483         trampolines into arch-independent and arch-dependent parts.
17484
17485         * mini-amd64.c (mono_arch_lowering_pass): Fix store_membase_imm -> store_membase_reg rule.
17486
17487 2005-07-08  Zoltan Varga  <vargaz@freemail.hu>
17488
17489         * cpu-amd64.md: Merge the xp-regalloc-branch for amd64.
17490
17491         * mini-ops.h mini-amd64.h mini-amd64.c inssel-amd64.brg Makefile.am: Merge
17492         the xp-regalloc-branch for amd64.
17493
17494         * mini-x86.h mini-x86.c cpu-pentium.md Makefile.am: Merge the
17495         xp-regalloc-branch for x86.
17496
17497 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
17498
17499         * inssel.brg (OP_THROW_OR_NULL): Allways rethrow the abort exception.
17500
17501 2005-07-06  Martin Baulig  <martin@ximian.com>
17502
17503         * mini.c
17504         (mono_jit_compile_method_inner): Call mono_get_inflated_method().
17505         (mono_jit_runtime_invoke): Likewise.
17506
17507 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
17508
17509         * aot.c (mono_compile_assembly): Allocate the GOT in the .bss segment
17510         on x86 too.
17511         
17512         * aot.c: Add new mono_aot_get_method_from_token () function to load AOT methods
17513         without loading their metadata. Reorganize the file format so exception handling+
17514         debug info is kept separate from normal method info. Create MonoJitInfo 
17515         structures for methods lazily.
17516
17517         * tramp-x86.c (x86_aot_trampoline): Use the new from_token method to avoid
17518         loading metadata.
17519         (x86_class_init_trampoline): Patch AOT class init trampolines too.
17520
17521         * mini.c (mini_init): Install the new mono_aot_find_jit_info hook.
17522
17523         * mini.c (mono_method_to_ir): Reduce the number of class init trampoline calls
17524         in AOT code.
17525
17526         * mini.h: Bump AOT file version.
17527
17528 2005-07-04  Zoltan Varga  <vargaz@freemail.hu>
17529
17530         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
17531
17532 2005-07-01  Raja R Harinath  <rharinath@novell.com>
17533
17534         * Makefile.am (check-local): Call semdel-wrapper.
17535
17536 2005-06-29  Zoltan Varga  <vargaz@freemail.hu>
17537
17538         * mini-x86.c: Revert the last change as it seems to break the build..
17539
17540 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
17541
17542         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
17543         
17544         * mini-x86.c (mono_arch_cpu_init): Fix setting of fp precision in the VC build.
17545
17546 2005-06-27  Ben Maurer  <bmaurer@ximian.com>
17547
17548         * mini.c (NEW_AOTCONST): make sure to call mono_get_got_var
17549         outside of the macro, so strange stuff doesn't happen with gcc4
17550         (NEW_AOTCONST_TOKEN): Likewise.
17551
17552 2005-06-28  Martin Baulig  <martin@ximian.com>
17553
17554         * mini.c (mini_class_is_system_array): New static method; use this
17555         instead of `klass->parent == mono_defaults.array_class' everywhere
17556         since this also works for the new generic array class.
17557
17558 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
17559
17560         * inssel.brg: Remove warnings.
17561
17562 2005-06-24  Zoltan Varga  <vargaz@freemail.hu>
17563
17564         * mini-ia64.c: Ongoing IA64 work.
17565
17566         * basic-float.cs: Add float->i1 conversion test.
17567
17568         * iltests.il: Add conv.u4 test.
17569
17570 2005-06-23  Zoltan Varga  <vargaz@freemail.hu>
17571
17572         * inssel-long.brg: Fix bug caused by last change.
17573
17574 2005-06-23  Geoff Norton  <gnorton@customerdna.com>
17575
17576         * mini-x86.h: Add __APPLE__ to the SC_* redefines with the other 
17577         BSDs.  Allows the x86 JIT to work on OSX86
17578
17579 2005-06-22  Zoltan Varga  <vargaz@freemail.hu>
17580
17581         * inssel-long.brg: Use OP_LSHR_UN_IMM instead of OP_SHR_UN_IMM in
17582         u4->i8 conversion.
17583
17584         * mini-ia64.c: Ongoing IA64 work.
17585
17586 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
17587
17588         * mini-ia64.c: Ongoing IA64 work.
17589
17590         * driver.c: Clean up jit_code_hash as well when using --regression.
17591
17592         * inssel-long.brg: Fix long->i4/u4 conversion rules.
17593
17594         * basic-long.cs: Add tests for long->u4 conversion.
17595
17596 2005-06-18  Ben Maurer  <bmaurer@ximian.com>
17597
17598         * mini.c: Take mono_get_domainvar out of macros. This makes sure
17599         that we do not depend on undefined C behavior: the order stuff
17600         gets evaluated within an expression. Fixes mono when compiled on
17601         GCC 4.
17602
17603 2005-06-18  Zoltan Varga  <vargaz@freemail.hu>
17604
17605         * *-ia64.*: Ongoing IA64 work.
17606
17607         * aot.c: Lower memory usage while loading AOT methods.
17608
17609         * tramp-x86.c: Avoid allocating+freeing MonoJitInfo structures.
17610
17611         * mini.h: Bump AOT file format version.
17612
17613 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
17614
17615         * mini.c (mono_method_to_ir): Allow STACK_PTR as input to SWITCH.
17616
17617 2005-06-16  Sebastien Pouliot  <sebastien@ximian.com>
17618
17619         * declsec.c: Fixed APTC to check for FullTrust on caller assembly (and
17620         not on callee assembly). Fixed some comments.
17621
17622 2005-06-16  Zoltan Varga  <vargaz@freemail.hu>
17623
17624         * aot.c (mono_compile_assembly): Mark the "methods" symbol as a function so
17625         it gets proper disassembly.
17626         (emit_method_info): Remove some dead code.
17627
17628         * mini.c (mini_method_compile): Allways allocate the GOT var in
17629         mono_method_to_ir for emulating opcodes.
17630
17631 2005-06-13  Zoltan Varga  <vargaz@freemail.hu>
17632
17633         * mini.c (mono_jit_free_method): Remove the method from the JitInfo table
17634         before freeing the code memory. Fixes #74990.
17635
17636         * objects.cs: Add regression test for #74992.
17637
17638         * liveness.c: Extend live ranges of arguments to the beginning of the
17639         method. Fixes #74992.
17640
17641         * exceptions-ia64.c mini-ia64.h: Modify ip during exception handling
17642         so it points into the faulting instruction.
17643
17644 2005-06-12  Zoltan Varga  <vargaz@freemail.hu>
17645
17646         * jit-icalls.c (mono_imul_ovf): Add exception handling.
17647
17648         * *-ia64.*: Ongoing IA64 work.
17649
17650         * mini.c (mini_init): Fix signature of mono_delegate_ctor.
17651
17652 2005-06-11  Zoltan Varga  <vargaz@freemail.hu>
17653
17654         * mini-ia64.h exceptions-ia64.c: Ongoing IA64 work.
17655
17656         * *-ia64.*: Ongoing IA64 work.
17657
17658 2005-06-10  Zoltan Varga  <vargaz@freemail.hu>
17659
17660         * basic-long.cs: Add tests for add/sub.ovf.
17661
17662         * basic.cs: Add tests for sub.ovf.
17663
17664         * *-ia64.*: Ongoing IA64 work.
17665
17666 2005-06-09  Zoltan Varga  <vargaz@freemail.hu>
17667
17668         * *-ia64.*: Ongoing IA64 work.
17669
17670         * basic.cs: Add conv.ovf.i4.un test.
17671
17672 2005-06-09  Massimiliano Mantione  <massi@ximian.com>
17673
17674         * mini.c: (remove_block_if_useless) Fixed bug 75061.
17675         
17676 2005-06-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17677
17678         * mini.c: no SIGUSR2 on windows. Remove it for PLATFORM_WIN32.
17679
17680 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
17681
17682         * *-ia64.*: Ongoing IA64 work.
17683
17684 2005-06-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17685
17686         * trace.[ch]:
17687         * mini.c: added the ability to toggle trace on/off using SIGUSR2.
17688
17689 2005-06-04  Zoltan Varga  <vargaz@freemail.hu>
17690
17691         * mini-ia64.c mini-ia64.h: Fix cleanup of memory stack.
17692
17693 2005-06-03  Zoltan Varga  <vargaz@freemail.hu>
17694
17695         * mini-amd64.c (emit_call): Fix yet another bug in the near call optimization.
17696
17697         * mini-amd64.c (amd64_patch): Add an assert to check that the destination
17698         of a call is callable by a near call.
17699
17700 2005-05-31  Zoltan Varga  <vargaz@freemail.hu>
17701
17702         * mini-ia64.c: Ongoing IA64 work.
17703
17704 2005-05-29  Zoltan Varga  <vargaz@freemail.hu>
17705
17706         * genmdesc.c: Make the generated array non-static.
17707
17708         * inssel-long.brg: Fix LSHR_IMM rule.
17709
17710         * *-ia64.*: Ongoing IA64 work.
17711
17712         * *-ia64.*: Ongoing IA64 work.
17713
17714 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
17715
17716         * *-ia64.*: Ongoing IA64 work.
17717
17718         * *-ia64.*: Ongoing IA64 work.
17719         
17720         * mini-ia64.c: Ongoing IA64 work.
17721
17722         * *-ia64.* jit-icalls.c mini-codegen.c: Ongoing IA64 work.
17723
17724 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
17725
17726         * objects.cs basic-calls.cs: Move some tests to objects.cs.
17727         
17728         * objects.cs basic-long.cs: Move some tests to objects.cs.
17729
17730 2005-05-26  Zoltan Varga  <vargaz@freemail.hu>
17731
17732         * *-ia64.*: Ongoing IA64 work.
17733
17734         * iltests.il: Add a new test.
17735
17736         * mini.c (mono_method_to_ir): Initialize valuetypes when created using
17737         newobj. Fixes #75042.
17738
17739 2005-05-22  Zoltan Varga  <vargaz@freemail.hu>
17740
17741         * *-ia64.*: Ongoing IA64 work.
17742         
17743         * *-ia64.*: Ongoing IA64 work.
17744         
17745         * *-ia64.*: Ongoing IA64 work.
17746
17747         * basic.cs objects.cs: Move tests accessing static variables as well.
17748
17749         * basic.cs objects.cs: Move test_0_pin_string to objects.cs.
17750
17751 2005-05-21  Zoltan Varga  <vargaz@freemail.hu>
17752
17753         * mini.c (SIG_HANDLER_SIGNATURE): Fix warning.
17754
17755         * driver.c: Always print failed tests.
17756
17757         * mini-codegen.c: Use cfg->frame_reg instead of a macro for the
17758         frame pointer.
17759
17760         * *ia64*: Ongoing IA64 work.
17761
17762 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
17763
17764         * basic.cs: Add tests for add.ovf. Fix warnings.
17765
17766 2005-05-18  Miguel de Icaza  <miguel@novell.com>
17767
17768         * driver.c (mono_main): Avoid crash if no argument is passed to
17769         --break;  Do not use g_error, but f_printf.   And fix all other
17770         ocurrences of the same crash.
17771
17772 2005-05-17  Zoltan Varga  <vargaz@freemail.hu>
17773
17774         * mini.h mini.c: Generalize the existing uses of the MONO_DEBUG env variable
17775         and add a new one: aborting when a SIGSEGV is raised while in unmanaged code.
17776         Fixes #74742.
17777
17778 2005-05-14  Zoltan Varga  <vargaz@freemail.hu>
17779
17780         * *-ia64.*: Add beginnings of IA64 backend.
17781
17782         * Makefile.am mini-arch.h mini-codegen.c: Add IA64 support.     
17783
17784 2005-05-13  Zoltan Varga  <vargaz@freemail.hu>
17785
17786         * inssel-long.brg: Add missing ulong->{i1, i2} checked conversions.
17787         Fixes #74925.
17788
17789         * basic-long.cs exceptions.cs: Add new tests. Fix some warnings.
17790
17791         * mini-amd64.c: Fix a warning.
17792
17793 2005-05-10  Zoltan Varga  <vargaz@freemail.hu>
17794
17795         * mini-amd64.c (mono_arch_output_basic_block): Fix stack space leakage
17796         in float_neg. Fixes #74897.
17797
17798         * mini-amd64.c (emit_call): Fix another near call bug.
17799
17800 2005-05-06  Sebastien Pouliot  <sebastien@ximian.com>
17801
17802         * declsec.c: Keep the appdomain information in the structure. Added a 
17803         missing "return FALSE" for Unmanaged if FullTrust is set (or else the
17804         value gets overwritten).
17805         * declsec.h: Set the default MonoArray for the the stack to 6. Added
17806         an MonoAppDomain member to MonoSecurityFrame.
17807         * mini-exceptions.c: Do not use a glist to keep GC allocated objects
17808         used in the stack walk. Now use a MonoArray which grow (double) when
17809         it gets full.
17810
17811 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
17812
17813         * mini.c: Re-enabled runtime cleanup, since running threads should
17814         now properly stop when exiting.
17815
17816 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
17817
17818         * mini-codegen.c: New file contaning the arch-independent local
17819         register allocator. Not used by any architectures yet.
17820
17821         * mini.h linear-scan.c: Merge some changes from the 
17822         mini-xp-local-regalloc branch.
17823
17824 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
17825
17826         * mini-amd64.c (emit_call): Fix calls to native functions when the
17827         runtime is compiled as a shared library. Fixes #74756.
17828
17829         * mini.c (mono_method_to_ir): Assert if ldsfld and friends are used
17830         on a literal field. Fixes #74751.
17831
17832 2005-04-25  Raja R Harinath  <rharinath@novell.com>
17833
17834         * Makefile.am (RUNTIME): Add MONO_CFG_DIR.
17835
17836 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
17837
17838         * objects.cs: Add missing null casting test.
17839
17840 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
17841
17842         * mini-exceptions.c (mono_find_jit_info): Fix native offset calculation
17843         in wrapper methods. Also rename 'address' variable to 'offset'.
17844
17845 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
17846
17847         * mini.c debug-mini.c aot.c tramp-x86.c driver.c: Fix some gcc 4.0
17848         warnings.
17849         
17850         * Makefile.am (MCS): Use -unsafe instead of --unsafe.
17851
17852         * aot.c: Applied patch from "The Software Team" <software@solmersa.com>. Make AOT compilation
17853         work on windows.
17854
17855 Mon Apr 18 16:20:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
17856
17857         * exceptions-ppc.c: update code to handle stack traces (fixes bug #74452).
17858
17859 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
17860
17861         * mini-x86.c (mono_emit_stack_alloc): Initialize the whole allocated area not
17862         just the last bytes.
17863
17864 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
17865
17866         * aot.c (mono_compile_assembly): Fix warning.
17867
17868         * mini-exceptions.c (ves_icall_get_frame_info): Fix bug introduced
17869         by the _MSC_VER stuff.
17870
17871 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
17872
17873         * inssel-long.brg: Fix #74588.
17874
17875         * cpu-amd64.md: Fix #74591.
17876
17877         * iltests.il: Add new regression tests.
17878
17879 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
17880
17881         * trace.c (mono_trace_enter_method): Print enums as an int, not as a
17882         valuetype.
17883
17884 2005-04-11  Zoltan Varga  <vargaz@freemail.hu>
17885
17886         * mini-x86.c (setup_stack): Unconditionally call pthread_attr_init ().
17887
17888         * exceptions-x86.c mini-x86.h mini-x86.c: Applied some freebsd patches 
17889         from Bill Middleton <flashdict@gmail.com>.
17890
17891 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
17892
17893         * arrays.cs: Add new regression test. Fix warnings.
17894
17895 2005-04-09  Zoltan Varga  <vargaz@freemail.hu>
17896
17897         * mini-amd64.c (mono_arch_output_basic_block): Fix stack alignment
17898         and leakage in CKFINITE.
17899
17900         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Change
17901         this to a null op since it is called on amd64 too.
17902
17903         * exceptions-amd64.c (get_throw_trampoline): Align stack.
17904
17905         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Remove
17906         body since this is not used on amd64.
17907         
17908         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Remove duplicate define.
17909
17910         * mini-amd64.c: Remove obsolete fixmes.
17911
17912         * mini.c (print_method_from_ip): Fix debugging support.
17913
17914 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
17915
17916         * ssapre.c: Fix a subtle bug about availability, and limit SSAPRE
17917         so that expressions that don't give much gain are not reduced.
17918         * ssapre.h: Likewise.
17919
17920 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
17921
17922         * exceptions-x86.c (mono_arch_find_jit_info): Remove last SC_EBP reference.
17923
17924         * mini-x86.c (mono_emit_stack_alloc): Fix localloc under windows.
17925
17926         * mini-x86.h exceptions-x86.c: Hopefully fix compilation on *BSD.
17927
17928 2005-04-01  Zoltan Varga  <vargaz@freemail.hu>
17929
17930         * mini-sparc.c mini-sparc.h: Add asserts when running with sigaltstack.
17931
17932         * exceptions-x86.c (mono_arch_monoctx_to_sigctx): Fix cygwin build.
17933
17934 2005-03-31  Zoltan Varga  <vargaz@freemail.hu>
17935
17936         * mini-x86.c: If sigaltstack support is enabled, perform win32 style
17937         stack touching.
17938
17939         * mini.h (mono_arch_sigctx_to_monoctx): New arch-specific function.
17940
17941         * mini.h (mono_arch_monoctx_to_sigctx): New arch-specific function.
17942
17943         * mini.c: sigaltstack support requires MONO_ARCH_USE_SIGACTION.
17944
17945         * mini-x86.h mini-x86.c exceptions-x86.c: Add support for 
17946         MONO_ARCH_USE_SIGACTION. Fixes #74252.
17947
17948         * mini-x86.h: Enable MONO_ARCH_USE_SIGACTION on linux.
17949
17950         * mini-x86.c: Fix up stack overflow handling.   
17951
17952         * exceptions.cs: Add new regression test.
17953
17954 2005-03-30  Zoltan Varga  <vargaz@freemail.hu>
17955
17956         * mini-x86.c (mono_arch_emit_prolog): Adjust stack after calls to
17957         mono_jit_thread_attach.
17958
17959         * mini.c (mono_method_to_ir): Verify called method is not abstract.
17960
17961 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
17962
17963         * mini.c (mono_method_to_ir): Applied Ben's patch from bug #61441 to
17964         avoid calling constructors using callvirt.
17965
17966         * inssel.brg: Fix #74073.
17967
17968 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
17969
17970         * aot.c, mini.h: Added mono-compiler.h header to allow/ease 
17971         compilation with non-GCC compilers.
17972         * mini-exceptions.c, mini-x86.c|h: Patches to make compilation of mono
17973         possible using VS.NET. Adapted from the work of J Lothian (for VC6).
17974
17975 Tue Mar 29 11:43:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
17976
17977         * inssel.brg, arrays.cs: fix long standing 64 bit issue in access to
17978         klass->interface_offsets (will likely fix bug#74073).
17979
17980 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
17981
17982         * mini-amd64.c (mono_arch_is_int_overflow): Fix rex handling.
17983
17984 2005-03-28  Zoltan Varga  <vargaz@freemail.hu>
17985
17986         * mini-amd64.c (mono_arch_output_basic_block): Fix order of parameters
17987         to amd64_div_reg_size ().
17988         
17989         * mini-amd64.c (mono_arch_emit_exceptions): Emit a near call here too.
17990
17991 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
17992
17993         * cpu-amd64.md (store_membase_reg): Fix length of storer8 opcodes.
17994
17995 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
17996
17997         * driver.c: Turn off automatic command line globbing under windows. Fixes #73763.
17998
17999 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
18000
18001         * mini.c (mono_method_to_ir): Remove debugging stuff left in by mistake.
18002         
18003         * mini.c (mono_precompile_assembly): Load and precompile referenced
18004         assemblies as well. Fixes #74015.
18005
18006 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
18007
18008         * cpu-amd64.md (sin): Fix up maximum lengths of some opcodes.
18009
18010 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
18011
18012         * declsec.c: Skip linkdemand checks for intra-corlib calls. This skips
18013         a lot of checks and (anyway) permissions cannot work until corlib is 
18014         loaded.
18015
18016 Wed Mar 23 14:29:49 CET 2005 Paolo Molaro <lupus@ximian.com>
18017
18018         * mini-ppc.c: fixed ABI issue on sysv/ppc.
18019
18020 Tue Mar 22 19:03:17 CET 2005 Paolo Molaro <lupus@ximian.com>
18021
18022         * tramp-ppc.c, exceptions-ppc.c: added missing icache flush
18023         calls (fixes bug#72824).
18024
18025 Tue Mar 22 16:28:48 CET 2005 Paolo Molaro <lupus@ximian.com>
18026
18027         * mini.c: fix tail recursion elimination (see test in bug#73936).
18028
18029 2005-03-21  Zoltan Varga  <vargaz@freemail.hu>
18030
18031         * mini-amd64.c (mono_arch_output_basic_block): Add inline versions of
18032         some fp functions in sse2 mode.
18033
18034 2005-03-20  Zoltan Varga  <vargaz@freemail.hu>
18035
18036         * mini-x86.c (emit_tls_get): Move tls handling into a separate helper function.
18037
18038 2005-03-19  Zoltan Varga  <vargaz@freemail.hu>
18039
18040         * mini.h mini.c: Add mono_get_jit_tls_key ().
18041
18042         * mini-x86.c: Enable fast TLS support on windows.
18043
18044 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
18045
18046         * declsec.c: Renamed aptc to allowpartiallytrustedcallers.
18047         * mini.c: Check for p/invoke method when generating code. If a
18048         p/invoke method, or it's class, isn't decorated with [Suppress
18049         UnmanagedCodeSecurity] then generate code to call System.Security.
18050         UnmanagedDemand (only if the security manager is active).
18051
18052 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
18053
18054         * tramp-amd64.c (create_specific_trampoline): Revert parts of the 
18055         last change as it seems to cause strange crashes.
18056         
18057 Wed Mar 16 16:24:11 CET 2005 Paolo Molaro <lupus@ximian.com>
18058
18059         * *.c: handle unsafe function pointers where needed.
18060
18061 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
18062
18063         * mini.c (mono_jit_free_method): Remove the fixme too.
18064
18065 2005-03-15  Miguel de Icaza  <miguel@novell.com>
18066
18067         * mini.c: As discussed, make the code actually free the delegate
18068         thunk now, to enable the debugging of delegate problems, use
18069         MONO_DEBUG=1 when running Mono. 
18070
18071         This takes also care of parts of the leaks as seen by Joe.
18072
18073 2005-03-15  Zoltan Varga  <vargaz@freemail.hu>
18074
18075         * mini-amd64.c (mono_arch_setup_jit_tls_data): Enable 
18076         thread_tls_offset calculation.
18077
18078 2005-03-14  Sebastien Pouliot  <sebastien@ximian.com>
18079
18080         * declsec.c: Reworked linkdemand checks for icall. The previous code
18081         was using the declaration code (untrusted) and didn't work as expected
18082         with the CLR 2.0. We're now more compatible with 2.0 than 1.x for this
18083         specific case.
18084
18085 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
18086
18087         * iltests.il: Add new localloc test.
18088
18089         * mini-amd64.c: Handle large stack allocations the same way as on
18090         windows if stack overflow handling is working.
18091         
18092         * mini-amd64.c: Allocate the signal stack using mmap.
18093
18094         * mini.c (sigsegv_signal_handler): Fix reading of context.
18095
18096         * mini-exceptions.c: Fix up stack overflow handling.
18097
18098         * mini-amd64.h mini-amd64.c: Fix up stack overflow handling.
18099
18100         * tramp-amd64.c (create_specific_trampoline): Optimize trampoline size.
18101
18102         * exceptions-amd64.c (mono_amd64_exceptions_init): Remove this.
18103
18104         * mini.h mini.c tramp-*.c: Move common trampoline code to mini.c.
18105
18106         * mini-x86.h mini-x86.c mini-amd64.h mini-amd64.c: Get rid of the
18107         tramp_init functions as they are no longer needed.
18108
18109 2005-03-12  Zoltan Varga  <vargaz@freemail.hu>
18110
18111         * tramp-amd64.c (mono_amd64_tramp_init): Fix typo.
18112         
18113         * tramp-amd64.c (mono_amd64_tramp_init): Init AOT trampoline as well.
18114
18115         * mini-amd64.h mini-amd64.c (mono_amd64_exceptions_init): Remove this.
18116         
18117         * mini.c mini-*.h: Remove OUT_OF_LINE_BBLOCK defines since all arches
18118         support that now.
18119
18120         * mini-ops.h: Add OP_LMUL_IMM.
18121
18122         * mini.c jit-icalls.cmini-amd64.h mini-amd64.c cpu-amd64.md: Implement
18123         long mul/div opcodes as intrinsic.
18124
18125         * mini-amd64.c (emit_call): Handle the case when the callee might be
18126         an AOT method.
18127
18128 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
18129
18130         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Reorder cases to be
18131         extra safe.
18132         
18133         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Fix ordering of cases.
18134
18135         * aot.c (mono_aot_load_method): Get rid of bogus make_writable call.
18136
18137 2005-03-09  Ben Maurer  <bmaurer@ximian.com>
18138
18139         * mini.c (mono_codegen): Don't leak here, to help people running
18140         monogrind.
18141
18142 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
18143
18144         * mini-amd64.c (mono_arch_output_basic_block): Fix int->float 
18145         conversions in sse2 mode.
18146
18147         * basic-float.cs: Add regression test.
18148         
18149         * mini-amd64.c: Reenable sse2.
18150
18151 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
18152
18153         * mini-amd64.c: Disable sse2 until some regressions are fixed.
18154
18155 2005-03-07      Joerg Rosenkranz <joergr@voelcker.com>
18156
18157         * driver.c: Copyright text should include 2005.
18158         
18159 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
18160
18161         * cpu-amd64.md (load_membase): Fix more max lengths.
18162
18163 2005-03-06  Zoltan Varga  <vargaz@freemail.hu>
18164
18165         * cpu-amd64.md (load_membase): Fix max length.
18166
18167         * mini-ops.h: Add OP_F<xx>_MEMBASE opcodes.
18168
18169         * inssel.brg: Add MONO_EMIT_BIALU_MEMBASE macro.
18170
18171         * cpu-amd64.md inssel-amd64.brg mini-amd64.h mini-amd64.brg: Finish SSE2
18172         support and enable it by default. Also add OP_F<xxx>_MEMBASE opcodes.
18173
18174         * basic-float.cs: Add rounding regression test.
18175
18176         * mini-amd64.c (INST_IGNORES_CFLAGS): Add more instructions.
18177
18178 2005-03-04  Neale Ferguson <NealeFerguson@earthlink.net>
18179
18180         * inssel-s390.brg, mini-s390.c: Add support for passing/returning small
18181         structures in registers for pinvoke wrappers.
18182
18183 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
18184
18185         * mini-exceptions.c (ves_icall_get_trace): Return wrapper info as well.
18186
18187 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
18188
18189         * mini.h mini.c mini-x86.c: Pass the domain of the native->managed
18190         wrapper to mono_jit_thread_attach.
18191
18192         * mini.c (mini_jit_thread_attach): New jit icall.
18193
18194         * mini-x86.c (mono_arch_emit_prolog): Attach to the VM in 
18195         native->managed wrappers.
18196
18197         * exceptions.cs: Add new regression test.
18198
18199         * mini.c (optimize_branches): Check regions in the cbranch to throw
18200         block case as well. Fixes #73242.
18201
18202 Tue Mar 1 18:35:27 CET 2005 Paolo Molaro <lupus@ximian.com>
18203
18204         * mini.c: thread safety fixes.
18205
18206 2005-02-27  Zoltan Varga  <vargaz@freemail.hu>
18207
18208         * tramp-amd64.c (amd64_magic_trampoline): Disable the method_ptr
18209         patching stuff, since delegates use jump trampolines so there is
18210         no caller.
18211
18212         * tramp-amd64.c (create_trampoline_code): Pass NULL as 'code' in 
18213         jump trampolines.
18214         
18215         * tramp-amd64.c: Fix build.
18216
18217         * mini-x86.c tramp-x86.c: Moved get_vtable_slot_addr into mini-x86.c and rename
18218         it to mono_arch_.... Add get_delegate_method_ptr implementation for x86.
18219
18220         * mini-amd64.h mini.h mini-amd64.c tramp-amd64.c (mono_amd64_get_vcall_slot_addr):
18221         Rename this to mono_arch....
18222         (mono_amd64_get_delegate_method_ptr_addr): Ditto.
18223
18224         * mini-amd64.c (mono_amd64_get_delegate_method_ptr_addr): New helper function.
18225
18226         * mini-amd64.c (emit_call): If both the caller and the callee is
18227         guaranteed to have 32 bit addresses, emit a normal call.
18228
18229         * tramp-amd64.c: Adapt to changes in mini-amd64.c.
18230
18231         * tramp-amd64.c (amd64_magic_trampoline): Remove patching of trampolines. 
18232         * tramp-amd64.c (amd64_magic_trampoline): Add support for patching the
18233         method_ptr inside delegates.
18234
18235 2005-02-26  Zoltan Varga  <vargaz@freemail.hu>
18236
18237         * mini.c (mono_jit_free_method): Free the method info even if the native code is
18238         invalidated. Fixes #73001.
18239
18240         * mini.c: Add a proper icall wrapper for mono_delegate_ctor.
18241
18242         * mini-x86.c: Only use stdcall for pinvokes on windows.
18243
18244 Thu Feb 24 15:22:30 CET 2005 Paolo Molaro <lupus@ximian.com>
18245
18246         * mini.c, mini.h: make mono_lmf_addr a fast-access thread var.
18247         * mini-x86.c: remove unreliable __thread var offset detection,
18248         use the correct accessors and enable by default.
18249
18250 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
18251
18252         * mini.c (mono_jit_free_method): Fix memory leak.
18253
18254 2005-02-22  Zoltan Varga  <vargaz@freemail.hu>
18255
18256         * mini.c (mono_method_to_ir): Allocate a GOT var for THROW and RETHROW. 
18257
18258 2005-02-21  Zoltan Varga  <vargaz@freemail.hu>
18259
18260         * cpu-amd64.md: Fix lengths of atomic opcodes.
18261
18262 Mon Feb 21 16:52:20 CET 2005 Paolo Molaro <lupus@ximian.com>
18263
18264         * driver.c: try to not imply using ICU is any good.
18265
18266 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
18267
18268         * mini-amd64.c (mono_arch_get_inst_for_method): Implement more 
18269         functions as inline ops.
18270
18271         * mini-ops.h inssel-amd64.brg cpu-amd64.md mini-amd64.c: Implement
18272         some Interlocked functions as inline ops.
18273
18274         * mini.c (move_basic_block_to_end): Fix bug in last patch.
18275
18276         * mini.h (MonoBasicBlock): Reorganize fields a bit.
18277
18278         * mini-ops.h inssel.brg: Add OP_NOT_REACHED.
18279
18280         * mini.c: Add support for OP_NOT_TAKEN.
18281
18282         * mini-amd64.h mini-amd64.c: Add support for passing/returning small 
18283         structures in registers for pinvoke wrappers.
18284
18285         * mini-amd64.c: Fix warnings.
18286
18287 2005-02-19  Zoltan Varga  <vargaz@freemail.hu>
18288
18289         * mini.h (MonoCompile): Add 'ret_var_is_local' field.
18290
18291         * mini.h mini.c (mono_arch_create_vars): Add new arch specific hook.
18292
18293         * mini.c (NEW_RETLOADA): If the ret variable is a local, use its 
18294         address instead of loading the address from it.
18295
18296         * mini-x86.c: Add support for returning small structs in registers
18297         on Win32. Fixes part of #70864.
18298         
18299 2005-02-18  Zoltan Varga  <vargaz@freemail.hu>
18300
18301         * trace.c (get_token): Improve error checking.
18302
18303 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
18304
18305         * jit-icalls.c (mono_ldvirtfn): Explicitly check for a NULL obj here.
18306
18307 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com> 
18308  
18309         * mini.h: Moved MONO_EXCEPTION_* enum to metadata/class-internals.h so
18310         it can be reused for MonoClass.
18311         * mini.c: Renamed MONO_EXCEPTION_SECURITY to MONO_EXCEPTION_SECURITY
18312         _LINKDEMAND.
18313
18314 2005-02-15  Sebastien Pouliot  <sebastien@ximian.com>
18315
18316         * mini.c: Fixed 2 cases where I sent a MonoMethod to managed code 
18317         instead of a MonoReflectionMethod. The method information wasn't used
18318         when displaying SecurityException details (but will be now).
18319
18320 2005-02-15  Atsushi Enomoto  <atsushi@ximian.com>
18321
18322         * Makefile.am : windows build fix.
18323
18324 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
18325
18326         * iltests.il: Add new regression test.
18327
18328         * mini.c (mono_method_to_ir): Allocate a GOT var in CEE_NEWOBJ. Fixes
18329         #72522.
18330
18331 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com> 
18332  
18333         * mini.c: Moved linkdemand check into helper function check_linkdemand
18334         to allow reuse for all intructions (CALL, CALLVIRT, NEWOBJ, JMP, 
18335         LDFTN, LDVIRTFTN).
18336
18337 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com>
18338
18339         * declsec.c: Added statistics counter for different kinds of 
18340         LinkDemands.
18341         * mini.h: Added CAS statistic counters to MonoJitStats. Removed unused
18342         (and commented) declaration.
18343         * mini.c: Added statistics counter for security Demand code 
18344         generation. Added display of security statistics.
18345
18346 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
18347
18348         * declsec.c (mono_declsec_linkdemand_aptc): Applied patch from Robert Jordan (robertj@gmx.net).
18349         Fix compilation errors under gcc-2.95.
18350
18351 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
18352
18353         * mini.c, driver.c: Use the new jit trampoline hashtable
18354
18355 Fri Feb 11 18:47:11 CET 2005 Paolo Molaro <lupus@ximian.com>
18356
18357         * mini.c, jit-icalls.c: use the managed implementation of memcpy, too.
18358
18359 2005-02-11  Martin Baulig  <martin@ximian.com>
18360
18361         * debug-mini.c (mono_debug_close_method): Free the line number array.
18362
18363 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
18364
18365         * aot.c: Break up large methods into smaller ones. Share GOT slots for
18366         icalls.
18367
18368         * mini.h: Bump AOT file format version. 
18369
18370 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
18371
18372         * declsec.c: Added LinkDemand support and it's special cases for ECMA,
18373         APTC and P/Invoke.
18374         * declsec.h: Added macros to get/set lazyly initialized security 
18375         informations about assemblies. Added new enum for different type of
18376         possible LinkDemand violation. Added function to check LinkDemands.
18377         * mini.h: Added a field to MonoCompile to hold any security violation
18378         detected when JITting a method (so it can be thrown later).
18379         * mini.c: Added LinkDemand checks in mono_method_to_ir for CEE_CALL 
18380         and CEE_CALLVIRT. Added code to throw exception at the end of
18381         mini_method_compile (note: the exception is unhandled right now).
18382
18383 Thu Feb 10 15:49:44 CET 2005 Paolo Molaro <lupus@ximian.com>
18384
18385         * mini.c, jit-icalls.c: use the managed implementation of
18386         memset for initobj and memset, to avoid managed <-> unmanaged
18387         transitions.
18388
18389 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
18390
18391         * inssel.brg (mini_emit_virtual_call): Disable the virtual->nonvirtual
18392         optimization if it would need a GOT var.
18393
18394         * basic.cs: Add tests for constant propagation and switch statements.
18395
18396         * ssa.c: Fix out-of-range constant propagation and switch statements.
18397
18398 2005-02-09    <vargaz@freemail.hu>
18399
18400         * inssel-x86.brg (reg): Align the allocation size in the localloc(imm) case too.
18401
18402 2005-02-08  Zoltan Varga  <vargaz@freemail.hu>
18403
18404         * cpu-amd64.md (load_membase): Fix max length of load_membase.
18405
18406 Tue Feb 8 18:21:11 CET 2005 Paolo Molaro <lupus@ximian.com>
18407
18408         * mini.c: update to new signature of mono_class_get_allocation_ftn().
18409
18410 2005-02-06  Neale Ferguson <NealeFerguson@earthlink.net>
18411
18412         * cpu-s390.md,  mini-s390.c: Correct bug with register usage on certain 
18413         arithmetic operations.
18414
18415 Sun Feb 6 07:10:12 EST 2005 Paolo Molaro <lupus@ximian.com>
18416
18417         * mini-ppc.c: add a workaround for broken user code that
18418         DllImports vararg functions with non-vararg signatures.
18419
18420 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
18421
18422         * mini.c (mono_jit_compile_method_inner): Add detection and a 
18423         meaningfull error message for assemblies written in Managed C++.
18424
18425         * tramp-amd64.c mini-amd64.h: Add support for 
18426         create_trampoline_from_token ().
18427
18428         * aot.c mini-x86.c abcremoval.c: Applied patch from
18429         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
18430
18431 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
18432
18433         * mini.h mini.c mini-x86.h tramp-x86.c: Add a new kind of trampoline 
18434         which takes a MonoImage/token as parameter instead of a MonoMethod.
18435
18436         * aot.c: Use the new trampoline for initializing vtables.
18437
18438         * aot.c: Add support for ldfld/stfld_remote wrappers.
18439
18440         * mini-ops.h cpu-pentium.md inssel-x86.brg mini-x86.c: Add optimized
18441         rules for compare <MEM>, IMM.
18442
18443         * mini.h (MONO_AOT_FILE_VERSION): Bump it.
18444
18445         * aot.c: Handle inherited finalizers correctly.
18446
18447 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
18448
18449         * inssel.brg (stmt): Add a missing _setup_... ().
18450
18451         * aot.c: Save some parts of the class state to the AOT file and use it
18452         to recompute that state when a class is initialized.
18453
18454         * mini.c: Install AOT hooks into the runtime.
18455
18456         * mini.h: Bump AOT file format version.
18457         
18458         * mini.c (mono_method_to_ir): Initialize pointer type locals correctly.
18459         Fixes #72148.
18460
18461         * iltests.il: Add new test.
18462
18463 Wed Feb 2 16:53:59 CET 2005 Paolo Molaro <lupus@ximian.com>
18464
18465         * mini.c: fix typo.
18466
18467 Wed Feb 2 16:37:13 CET 2005 Paolo Molaro <lupus@ximian.com>
18468
18469         * mini.c: setup the statistical profiler in the thread attach
18470         callback to cope with the new single thread code.
18471
18472 Wed Feb 2 15:43:58 CET 2005 Paolo Molaro <lupus@ximian.com>
18473
18474         * mini-ppc.c: ensure we have enough room for the profiler
18475         calls (fixed bug#72084).
18476
18477 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
18478
18479         * aot.c: Get rid of the MonoAotMethod structure and the hashtable holding 
18480         it.
18481
18482 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
18483
18484         * driver.c: Re-enabled SSAPRE (two commits, I was just dumb).
18485
18486 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
18487
18488         * ssapre.c: Fixed an issue with down safety (this allows IronPython
18489         to succesfully execute parrotbench).
18490         * ssapre.h: Likewise.
18491
18492 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
18493
18494         * ssa.c: In mono_ssa_rename_vars, forced the creation of a new SSA
18495         variable for stores to method arguments (fixes a SSAPRE issue).
18496
18497 Tue Feb 1 15:52:26 CET 2005 Paolo Molaro <lupus@ximian.com>
18498
18499         * mini.c: handle value types in dup, fixes gen-112.cs.
18500
18501 Tue Feb 1 11:45:19 CET 2005 Paolo Molaro <lupus@ximian.com>
18502
18503         * mini-ppc.c, cpu-g4.md, tramp-ppc.c: use a slower code
18504         sequence for calls in dynamic methods to avoid thunks.
18505
18506 Tue Feb 1 11:44:01 CET 2005 Paolo Molaro <lupus@ximian.com>
18507
18508         * mini.c: correctly remove dynamic methods from the hashtable.
18509
18510 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
18511
18512         * driver.c: Disabled SSAPRE until fix the bug that appears
18513         in IronPython's parrotbench.
18514
18515 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
18516
18517         * aot.c (mono_compile_assembly): Get rid of Skip (other) messages.
18518
18519         * mini.c (mono_method_to_ir): Revert the previous change.
18520         
18521         * mini.c (mono_method_to_ir): Do not inline ldfld and stfld wrappers
18522         when AOT compiling.
18523
18524         * tramp-x86.c (x86_magic_trampoline): Avoid calls to 
18525         mono_jit_info_table_find () etc. when running under valgrind.
18526
18527         * inssel.brg: Fix warnings.
18528
18529         * mini-exceptions.c: Fix warnings.
18530
18531 2005-01-31  Martin Baulig  <martin@ximian.com>
18532
18533         * driver.c (compile_all_methods_thread_main): Don't try to compile
18534         generic methods or anything which has type parameters.
18535
18536 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
18537
18538         * aot.c: Avoid costly calls to mono_method_full_name in tracing code and fix memory leaks.
18539
18540         * TestDriver.cs: Add --verbose flags.
18541
18542         * graph.c ssa.c: Fix 64 bit warnings.
18543         
18544         * abcremoval.h ssapre.h abcremoval.c ssapre.c mini.c tramp-amd64.c 
18545         trace.c mini-exceptions.c linear-scan.c inssel-amd64.brg inssel.brg:
18546         Fix 64 bit warnings.
18547
18548         * mini-amd64.c (mono_arch_output_basic_block): Fix uninitialized
18549         variable not spotted by gcc.
18550         
18551         * mini-amd64.c inssel-amd64.brg: Applied patch from  
18552         Willibald Krenn <Willibald.Krenn@gmx.at>. Clean up usage of 
18553         X86_COMPARE_MEMBASE opcodes.
18554
18555         * exceptions-amd64.c (mono_arch_find_jit_info): Fix AMD64 build.
18556
18557 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
18558
18559         * *: MonoMethod->signature might be NULL now. You *MUST* use
18560         mono_method_signature.
18561
18562 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
18563
18564         * driver.c (compile_all_methods_thread_main): Compile the methods
18565         without invoking cctors.
18566
18567 Fri Jan 28 18:28:26 CET 2005 Paolo Molaro <lupus@ximian.com>
18568
18569         * mini.c: remove ben's "optimizations" to dup+stloc (bug #71905).
18570         * basic-calls.cs: test for the above.
18571
18572 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
18573
18574         * mini.c mini-exceptions.c aot.c exceptions-*.c: Update after 
18575         MonoJitInfo changes.
18576
18577 2005-01-27  Zoltan Varga  <vargaz@freemail.hu>
18578
18579         * mini-exceptions.c (mono_handle_exception): Compute the stack trace
18580         eagerly if it contains dynamic methods.
18581         
18582         * mini-exceptions.c (ves_icall_System_Exception_get_trace): New icall.
18583
18584         * mini-exceptions.c (mono_handle_exception): Avoid computing the stack
18585         trace, it is now computed by an icall from trace_ips.
18586         
18587         * mini-exceptions.c: Fix a warning.
18588
18589 Thu Jan 27 13:38:34 CET 2005 Paolo Molaro <lupus@ximian.com>
18590
18591         * mini-exceptions.c: don't bother getting stack trace info if
18592         it's not going to be used.
18593
18594 2005-01-27  Raja R Harinath  <rharinath@novell.com>
18595
18596         * Makefile.am (common_sources): Add ssapre-cee-ops.h and
18597         ssapre-mini-ops.h.
18598
18599 2005-01-26  Zoltan Varga  <vargaz@freemail.hu>
18600
18601         * mini.c (remove_block_if_useless): Only print debug stuff with -v -v.
18602
18603         * aot.c: Avoid calling mono_method_get_header () if not needed.
18604
18605         * mini.h: Bump AOT file format version.
18606         
18607         * mini.c (mono_emit_native_call): Allocate a GOT var here.
18608
18609         * mini.c (mono_print_tree): Print more info for calls.
18610
18611 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
18612
18613         * declsec.h: Remove warning by adding missing include for marshal.h
18614
18615 2005-01-26  Martin Baulig  <martin@ximian.com>
18616
18617         * mini.c (mono_method_to_ir): In CEE_UNBOX_ANY, don't increase
18618         `ip' twice.
18619
18620 2005-01-25  Zoltan Varga  <vargaz@freemail.hu>
18621
18622         * mini-amd64.c (mono_arch_call_opcode): Add missing MONO_SSA_LOAD/STORE
18623         flags.
18624
18625         * ssa.c (mono_ssa_compute): Fix crashes when using AOT.
18626
18627         * aot.c (mono_compile_assembly): Fix a warning.
18628
18629 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com>
18630
18631         * declsec.c: Look for security attributes on the original MonoMethod 
18632         (and not the wrapped one). This fix permissions on icalls.
18633
18634 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
18635
18636         * mini-amd64.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
18637
18638         * mini.c (mono_allocate_stack_slots): Add a fixme.
18639
18640         * mini-x86.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
18641
18642 Sun Jan 23 16:16:48 CET 2005 Paolo Molaro <lupus@ximian.com>
18643
18644         * inssel.brg: optimize casts of sealed types (more
18645         optimizations waiting for fixes in remoting).
18646
18647 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
18648
18649         * inssel.brg (stmt): Add another dummy rule.
18650
18651         * driver.c: Fix warnings.
18652
18653         * driver.c (mono_main): If running under valgrind, instruct glib to use
18654         the system allocation functions so valgrind can track the memory
18655         allocated by the g_... functions.
18656
18657         * inssel.brg (stmt): Add DUMMY rule for OP_DUMMY_STORE.
18658
18659         * mini-ops.h: Add OP_DUMMY_STORE opcode.
18660
18661         * mini.h (MONO_BBLOCK_IS_IN_REGION): New helper macro.
18662
18663         * liveness.c: Handle OP_DUMMY_STORE. Enable register allocation for
18664         variables in try regions.
18665
18666         * mini.c (mini_method_compile): Don't disable optimizations on large
18667         methods when AOT compiling.
18668
18669         * mini.c (mono_allocate_stack_slots): New arch independent method to 
18670         allocate stack slots. Not yet used.
18671
18672 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
18673
18674         * debug-mini.c (mono_debug_close_method): Plug some leaks.
18675
18676 Sat Jan 22 13:41:51 EST 2005 Paolo Molaro <lupus@ximian.com>
18677
18678         * mini-ppc.c: make the branch info relative as the code
18679         buffer can be reallocated.
18680
18681 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
18682
18683         * aot.c: Allow decoding of the new  MONO_PATCH_INFO_DECLSEC.
18684         * driver.c: Removed the AOT/security restriction. Now initialize the
18685         security manager (in metadata) if --security is used.
18686         * mini.c|h: Add the MONO_PATCH_INFO_DECLSEC code to use the index,
18687         rather than the pointer to declarative security, when AOT is used.
18688
18689 Sat Jan 22 09:35:19 EST 2005 Paolo Molaro <lupus@ximian.com>
18690
18691         * mini.h, mini-ppc.h, mini-ppc.c: updated to use out of line
18692         basic blocks, reduced intrinsic exception throwing code size.
18693
18694 2005-01-22  Miguel de Icaza  <miguel@ximian.com>
18695
18696         * driver.c (mini_usage): Reorder the usage screen.
18697
18698 2005-01-21  Zoltan Varga  <vargaz@freemail.hu>
18699
18700         * mini.c (mono_resolve_patch_target): Fix warning.
18701
18702 2005-01-20  Zoltan Varga  <vargaz@freemail.hu>
18703
18704         * mini-x86.c (mono_arch_local_regalloc): Fix bug introduced by
18705         previous patch.
18706
18707         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
18708
18709         * mini-amd64.c (mono_arch_local_regalloc): Revert last patch as it
18710         breaks the amd64 build.
18711
18712         * mini-x86.c (mono_arch_local_regalloc): Fix bug in div/rem 
18713         register allocation. Fixes #71454.
18714
18715         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
18716
18717         * arrays.cs: Add new regression test.   
18718
18719 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
18720
18721         * ssapre.c: Turned usage of snprintf to GString.
18722         * ssapre.h: disabled MONO_APPLY_SSAPRE_TO_SINGLE_METHOD
18723         (I left it on by mistake in my previous commit).
18724
18725 Thu Jan 20 12:00:45 CET 2005 Paolo Molaro <lupus@ximian.com>
18726
18727         * mini.c, cfold.c, basic-calls.cs: preserve side effects
18728         on cond branch optimization (fixes bug# 71515).
18729
18730 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
18731
18732         * abcremoval.c: Fixed bug 71062.
18733         * abcremoval.h: Likewise.
18734
18735 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
18736
18737         * mini.c: Added a new functionality to optimize_branches, the removal
18738         of useless basic blocks, and fixed some problem in the removal of
18739         critical edges; some utility functions added for both purposes.
18740         * ssapre.c: Added complex expression support, and fixed bug 70637.
18741         * ssapre.h: Likewise.
18742         * ssapre-cee-ops.h: Added file with list of "CEE_*" opcodes
18743         enabled in SSAPRE.
18744         * ssapre-mini-ops.h: Likewise, but for "OP_*" opcodes.
18745         * driver.c: Re-enabled SSAPRE.
18746
18747 2005-01-19  Martin Baulig  <martin@ximian.com>
18748
18749         * mini.c (mono_method_to_ir): Call mono_get_inflated_method() on
18750         the result of mono_get_method_constrained().
18751
18752 2005-01-18  Neale Ferguson <NealeFerguson@earthlink.net>
18753
18754         * exceptions-s390.c tramp-s390.c: Allocate code using the global code
18755         manager.
18756
18757 2005-01-18  Geoff Norton  <gnorton@customerdna.com>
18758
18759         * jit-icalls.c (mono_llmult_ovf): Fix other overflow conditions to
18760         be detected.  Fixes #59296.
18761
18762 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
18763
18764         * mini-amd64.c (mono_arch_output_basic_block): Remove some assertions
18765         which can happen. Fixes #71361.
18766
18767 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
18768
18769         * exceptions-sparc.c tramp-sparc.c: Allocate code using the global code
18770         manager.
18771
18772 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
18773
18774         * mini.c (mono_create_jump_trampoline): Revert last change as it causes
18775         appdomain-unload.exe to fail.
18776         
18777         * mini.c: Fix some memory leaks.
18778
18779 Mon Jan 17 16:16:23 CET 2005 Paolo Molaro <lupus@ximian.com>
18780
18781         * inssel.brg: handle the new size of rank, idepth, max_interface_id.
18782         Fixed bug and sped up some codepaths.
18783
18784 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
18785
18786         * mini.c: Fix some memory leaks.
18787
18788         * exceptions.cs basic-long.cs: Add test for checked ulong->int 
18789         conversion.
18790
18791         * inssel-long.brg: Implement long_conv_to_ovf_i4_un. Fixes #71319.
18792
18793         * inssel-long.brg: Fix conv.ovf.i8 when run on an int32. Fixes
18794         #71320.
18795
18796         * iltests.il: Add regression test for #71320.
18797
18798 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
18799
18800         * mini.c (mono_codegen): Fix installation of profiler hooks.
18801
18802         * mini-sparc.c mini-amd64.c: Don't allocate stack space for dead vars.
18803
18804 Sun Jan 16 12:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
18805
18806         * mini.h, mini.c, cfold.c: optimize access to enum
18807         readonly fields, too. Eval conditional branches if possible
18808         to perform unreachable code removal in more cases.
18809
18810 2005-01-15  Zoltan Varga  <vargaz@freemail.hu>
18811
18812         * tramp-amd64.c exceptions-amd64.c: Use the new global code manager.
18813
18814         * mini.c (mono_global_codeman_reserve): New function to allocate code memory from a global
18815         code manager.
18816
18817         * tramp-x86.c mini-x86.c exceptions-x86.c: Allocate all code memory so mono works with
18818         WinXP DEP. Fixes #71244.
18819
18820 2005-01-14  Zoltan Varga  <vargaz@freemail.hu>
18821
18822         * inssel.brg: Allways convert CEE_CONV_OVF_I4 to a move on 64 bit platforms. Fixes #71236.
18823
18824 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
18825
18826         * mini-x86.c (mono_arch_output_basic_block): Fix OP_ATOMIC_ADD_NEW_I4.
18827
18828 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
18829
18830         * mini-exceptions.c exceptions-ppc.c aot.c: Cope with MonoJitInfo 
18831         changes.
18832
18833         * mini.h: Bump AOT version.
18834
18835         * mini.h (MonoCompile): Change exvar to a hash table.
18836
18837         * mini.c: Allocate a separate exvar for each handler block.
18838
18839         * mini.c: Get rid of the computation of filter_lengths, its not needed.
18840
18841         * mini.c inssel.brg: Change OP_THROW_OR_NULL to compare the current
18842         ex var with the pending exception and only throw if the two are equal.
18843         Fixes #68552.
18844         
18845         * exceptions.cs: Add tests for rethrow and nested catch clauses.
18846
18847         * mini-x86.c: Fix warnings.
18848
18849         * Makefile.am (common_sources): Move mini-exceptions.c here as it is
18850         used by all the ports now.
18851
18852         * aot.c: Add write-symbols and save-temps options.
18853
18854 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
18855
18856         * mini-x86.c: Add support for returning structs in registers from pinvoke functions on WIN32.
18857
18858 Mon Jan 10 16:11:16 EST 2005 Neale Ferguson <nealeferguson@earthlink.net>
18859
18860         * mini-ops.h, inssel-s390.brg, cpu-s390.md: Support OP_ATOMIC__xxx 
18861         operations.
18862
18863         * tramp-s390.c: Check vtable slot belongs to the domain.
18864
18865         * mini-exceptions.c, exceptions-s390.c: Standardize exception handling
18866         as per other platforms.
18867
18868         * mini-s390.c, mini-s390.h: Enable out-of-line bblock support.
18869
18870 Mon Jan 10 18:53:05 CET 2005 Paolo Molaro <lupus@ximian.com>
18871
18872         * driver.c: we don't run the Main() code in a subthread anymore.
18873
18874 Mon Jan 10 17:54:16 CET 2005 Paolo Molaro <lupus@ximian.com>
18875
18876         * mini.c: added experimental rtc support in the statistical
18877         profiler: if the user has the permission, more accurate statistics
18878         are gathered. Run with: MONO_RTC=4096 mono --profiler=default:stat ....
18879         The MONO_RTC value must be restricted to what the linux rtc allows:
18880         power of two from 64 to 8192 Hz.
18881
18882 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
18883
18884         * mini-x86.c (mono_arch_emit_exceptions): Fix #71121.
18885
18886 Mon Jan 10 05:20:49 EST 2005 Paolo Molaro <lupus@ximian.com>
18887
18888         * mini-ppc.c: better icache flush for smp.
18889
18890 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
18891
18892         * mini-amd64.c (emit_move_return_value): Fix memory leak.
18893
18894         * mini-x86.c (get_call_info): Add the get_call_info () code from the
18895         amd64 port, not yet used.
18896
18897 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
18898
18899         * mini.c (mono_method_to_ir): Disable inlining of ldfld wrappers with
18900         a struct type.
18901
18902 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
18903
18904         * driver.c: Added --security option to activate the security manager.
18905         Right now this will allow code generation for declarative demands and
18906         is disabled when AOT is specified.
18907         * mini.c: Add code generation for declarative security demands.
18908         * mini.h: Add mono_use_security_manager as an extern gboolean.
18909
18910 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
18911
18912         * aot.c (mono_compile_assembly): Speed up compilation a bit by
18913         emitting more dense assembly code.
18914
18915         * mini-sparc.c mini-sparc.h exceptions-sparc.c: Enable optimized corlib
18916         exception throwing stuff.
18917
18918 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
18919
18920         * mini-sparc.c (mono_arch_emit_exceptions): Fix typo in previous patch. Remove
18921         dead code.
18922
18923         * mini-amd64.c (mono_arch_emit_exceptions): Remove duplicate epilog stuff
18924         left in by mistake.
18925
18926         * driver.c (EXCLUDED_FROM_ALL): Disable SSAPRE until bug #70637 is 
18927         fixed.
18928
18929         * mini-sparc.h mini-sparc.c: Enable out-of-line bblock support.
18930
18931         * tramp-*.c: Only patch vtable slots if the object is in the current
18932         domain. Fixes appdomain-unload.exe.
18933
18934         * mini-amd64.c mini-amd64.h: Enable out-of-line bblock support.
18935         
18936         * mini-amd64.c (mono_arch_local_regalloc): Port regalloc fix from
18937         x86 branch.
18938
18939 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
18940
18941         * mini.c (reverse_branch_op): New helper function.
18942
18943         * mini.c (optimize_branches): Run the new optimization only on 
18944         platforms which support it. Also reverse all kinds of branches.
18945
18946         * mini.h (MonoBasicBlock): Add 'out_of_line' field.
18947
18948         * mini.c (mono_method_to_ir): Set 'out_of_line' for bblocks which have
18949         a throw statement.
18950
18951         * mini.c (optimize_branches): Reverse not-equals branches if the false
18952         bblock is a throw. This happens a lot of time with argument checking in
18953         corlib.
18954
18955         * mini.c (mono_codegen): Add support for placing basic blocks after
18956         the function epilogue.
18957
18958         * mini-x86.c mini-x86.h: Add support for placing basic blocks after the
18959         function epilogue.
18960         
18961 2005-01-05  Miguel de Icaza  <miguel@ximian.com>
18962
18963         * mini.c (setup_stat_profiler): Only set this up if the platform
18964         supports ITIMER_PROF.
18965
18966 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
18967
18968         * mini-x86.c (mono_arch_local_regalloc): Fix a bug introduced by the
18969         previous patch.
18970
18971         * inssel.brg: Fix a warning.
18972
18973 Wed Jan 5 16:40:18 CET 2005 Paolo Molaro <lupus@ximian.com>
18974
18975         * mini.c: added support for statistical profiler 
18976         (run with: --profile=default:stat).
18977
18978 2005-01-04  Zoltan Varga  <vargaz@freemail.hu>
18979
18980         * mini-x86.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Enable this on x86.
18981
18982         * mini-x86.c cpu-pentium.md: More fixes for usage of global registers.
18983
18984         * mini-amd64.c (mono_arch_local_regalloc): Port some regalloc fixes 
18985         related to global registers from the amd64 port.
18986
18987 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
18988
18989         * mini.c (mono_method_to_ir): Handle MONO_CLASSCONST.
18990
18991         * mini-amd64.c (mono_arch_local_regalloc): Fix some regalloc problems
18992         with global registers.
18993         (mono_arch_output_basic_block): Fix SWITCH in the AOT case.
18994
18995         * aot.c (emit_method_code): Fix the 'method emitted as' messages.
18996
18997 2004-12-31  Zoltan Varga  <vargaz@freemail.hu>
18998
18999         * debug-mini.c (encode_value): Fix off-by-one.
19000
19001         * aot.c (encode_value): Likewise.
19002
19003         * mini.c (mono_method_to_ir): Disable AOT for methods containing LDPTR.
19004
19005 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
19006
19007         * mini.c linear-scan.c: Add a workaround for the mcs crash when using 
19008         AOT.
19009
19010         * aot.c (mono_aot_load_method): Free up patch info if no longer needed.
19011         
19012         * aot.c (emit_method_info): Increase size of temp buffer.
19013
19014         * mini-x86.c cpu-pentium.md mini.c: Load fp constants differently in 
19015         the AOT case.
19016
19017 2004-12-28  Zoltan Varga  <vargaz@freemail.hu>
19018
19019         * aot.c (emit_method_info): Fix build.
19020         
19021         * aot.c: Further rework of the AOT file format to reduce the size of
19022         the method info data.
19023
19024         * mini.h: Bump AOT file format version.
19025
19026 2004-12-27  Martin Baulig  <martin@ximian.com>
19027
19028         * mini.c (mini_get_method): New static method; call
19029         mono_get_method_full() and mono_get_inflated_method().
19030         (mono_method_to_ir): Use mini_get_method() instead of
19031         mono_get_method_full(). 
19032
19033 2004-12-26  Patrik Torstensson  <patrik.torstensson@gmail.com>
19034
19035         * mini-x86.c (atomic ops): fixed bug interlocked bug #70784. 
19036
19037 2004-12-25  Zoltan Varga  <vargaz@freemail.hu>
19038
19039         * inssel.brg (ldind_to_load_membase): Handle CEE_LDIND_I8.
19040
19041         * inssel-amd64.brg: Add some optimization rules.
19042
19043 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
19044
19045         * aot.c: Remove the use of MonoGHashTable and other GC stuff. The
19046         standard not GC'd stuff is fine.
19047
19048 2004-12-24  Zoltan Varga  <vargaz@freemail.hu>
19049
19050         * aot.c: Rework the AOT file format to get rid of most of the global
19051         symbols. This reduces the size of the mscorlib.dll.so by 1MB.
19052
19053         * mini.h: Bump AOT file format version.
19054         
19055 2004-12-23  Zoltan Varga  <vargaz@freemail.hu>
19056
19057         * mini.h: Bump AOT file format version.
19058
19059         * aot.c (mono_aot_is_got_entry): New function to determine if an 
19060         address is inside a GOT.
19061
19062         * aot.c mini-x86.c tramp-x86.c: Make all patches use the GOT.
19063
19064         * cpu-pentium.md: Increase the maximum size of some instructions which
19065         might involve a got access.
19066         
19067         * mini.c (get_method_from_ip): Another debug helper function.
19068
19069         * mini.c: Call mono_get_got_var () in a couple places. Handle the case
19070         when got var accesses are created during the decompose phase.
19071
19072         * mini-sparc.c: Change mono_compile_aot to cfg->compile_aot.
19073
19074         * mini.h mini.c mini-x86.c aot.c mini-sparc.c: Add a 'compile_corlib'
19075         argument mini_compile_method and to MonoCompile, and use this to
19076         determine whenever a given method is compiled for AOT. This allows the
19077         other methods compiled during AOT compilation to be free of AOT stuff,
19078         so the backends does not need to add special support for them by
19079         creating a fake GOT etc.
19080
19081         * mini-x86.c (mono_arch_patch_code): Remove fake got stuff as it is no
19082         longer needed.
19083
19084 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
19085
19086         * mini.c (mono_method_to_ir): It turns out that some of the
19087         x-appdomain wrappers are lax with types, so just ignore this for
19088         all wrappers.
19089
19090         * inssel.brg (OP_CHECK_ARRAY_TYPE): Optimize this by only looking
19091         at the vtable->klass. If it is non-shared code we can just use the
19092         vtable.
19093
19094 Tue Dec 21 17:43:06 CET 2004 Paolo Molaro <lupus@ximian.com>
19095
19096         * mini-ppc.c: access MonoDomain from tls, too.
19097
19098 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com>
19099
19100         * declsec.c: Removed unused variable (and related warning ;-)
19101
19102 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
19103
19104         * iltests.il: New test for LDELEMA on an array of ref types.
19105
19106         * mini.c (CEE_LDELEMA): We need to emit OP_CHECK_ARRAY_TYPE for
19107         all ldelema's on reftypes.
19108         (check_call_signature): Remove the OP_CHECK_ARRAY_TYPE from here,
19109         it was the wrong place to put it.
19110
19111         * mini-x86.c (mono_arch_output_basic_block): Just use ecx as the
19112         register to pop to make this cleaner, at the request of Paolo.
19113
19114 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
19115
19116         * mini-ops.h (OP_GETHASHCODE): New op.
19117
19118         * inssel.brg (OP_GETHASHCODE): Emit code for the new opcode
19119
19120         * mini.c (mini_get_inst_for_method): Create the intrinsic hash
19121         operation.
19122
19123         For a microbenchmark, this reduces the cost of Hashtable.get_Item
19124         by 25%.
19125         
19126         * mini-x86.c (mono_arch_output_basic_block): Rather than
19127
19128         add ebp, 4
19129
19130         Emit
19131
19132         pop edx
19133
19134         The first is 3 bytes while the second is 1. This saves 36 kb on
19135         mscorlib, quite a big saving. When bootstraping mcs, I was able to
19136         see a small boost because of icache locality.
19137
19138         * cfold.c (FOLD_BINOPCOMM): Kill add foo, 0
19139
19140 Mon Dec 20 12:19:40 EST 2004 Paolo Molaro <lupus@ximian.com>
19141
19142         * Makefile.am, mini-ppc.h, mini-exceptions.c, exceptions-ppc.c:
19143         started code sharing with the generic code.
19144
19145 Mon Dec 20 11:08:06 EST 2004 Paolo Molaro <lupus@ximian.com>
19146
19147         * mini-ppc.c, cpu-g4.md: added code for direct access to
19148         tls data slots.
19149
19150 Mon Dec 20 10:58:28 EST 2004 Paolo Molaro <lupus@ximian.com>
19151
19152         * mini-ops.h, inssel-x86.brg, cpu-amd64.md, inssel.brg, inssel-amd64.brg,
19153          mini-amd64.c, mini-x86.c, cpu-pentium.md: renamed OP_X86_TLS_GET
19154         to OP_TLS_GET.
19155
19156 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
19157
19158         * declsec.c|h: Added functions to cache the declarative stack modifiers
19159         in MonoJitInfo and to create a security frame from a MonoJitInfo 
19160         structure.
19161         * mini.c: Initialize jinfo->cas_inited to FALSE when MonoJitInfo is
19162         created. Register internal calls for System.Security.SecurityFrame::
19163         _GetSecurityFrame and _GetSecurityStack.
19164         * mini.h: Added definition for new icalls (in mini-exceptions.c) and
19165         the definitions for the new stack walk/callback mechanism.
19166         * mini-exceptions.c: Added internal call GetSecurityFrame (to get the 
19167         first security frame for LinkDemands and InheritanceDemands) and
19168         GetSecurityStack for Demands. Both use the new mono_walk_stack code
19169         from lupus.
19170         * mini-x86.h, mini-amd64.h, mini-sparc.h: Architecture specific stack
19171         walk initialization (lupus).
19172
19173 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
19174
19175         * mini.c (mono_method_to_ir): In CEE_DUP, handle the dup / stloc
19176         idiom.
19177         (handle_loaded_temps): Do not create a temporary variable for
19178         things that we know are temps. They will never be modified.
19179         (mono_spill_call): Set MONO_INST_IS_TEMP
19180         (mono_emulate_opcode): ditto
19181         (emit_tree): ditto
19182         (mono_method_to_ir.CEE_DUP): ditto
19183
19184 2004-12-19  Ben Maurer  <bmaurer@ximian.com>
19185
19186         * mini.c (type_to_eval_stack_type): Make this handle the void type
19187         (mono_emit_call_args): set the call->type with type_to_eval_stack_type
19188         (emit_tree): use ip_in_bb to special case some common idioms
19189         Update all callers to pass in the IP.
19190         (mono_method_to_ir): Make CEE_CALL* do the above as well.
19191
19192         This gives us a nice 2% speedup in mcs bootstrap.
19193
19194         * mini-x86.c (peephole_pass): Peephole pass to make
19195         mov  [foo], eax
19196         push [foo]
19197
19198         into
19199
19200         mov [foo], eax
19201         push eax
19202
19203         * mini.c (ip_in_bb): new method.
19204         (mono_method_to_ir): use this method rather than doing the hash
19205         lookup ourselves.
19206
19207         * linear-scan.c (mono_linear_scan): When expiring actives, you
19208         don't need to keep around variables that expire on this
19209         instruction. This makes it so that:
19210              a = b + 1
19211         will turn into:
19212              store (ebx add (ebx, 1))
19213         which will become
19214              add ebx, 1
19215
19216 2004-12-19  Zoltan Varga  <vargaz@freemail.hu>
19217
19218         * mini.c (mono_method_to_ir): Optimize the common ldobj+stloc 
19219         combination to avoid doing two copies. Fix up problems with previous
19220         patch.
19221
19222         * mini.c: Fix 64 bit warnings.
19223
19224         * mini-x86.c (INST_IGNORES_CFLAGS): Add OP_STOREI4_MEMBASE_REG.
19225
19226 2004-12-17  Zoltan Varga  <vargaz@freemail.hu>
19227
19228         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Port exception handling
19229         changes from the x86 code.
19230
19231         * mini.h: Add prototype for mono_arch_get_throw_corlib_exception ().
19232
19233 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
19234
19235         * mini-x86.c (mono_arch_emit_epilog): Optimize the corlib exception
19236         throwing code to reduce its size, unify the AOT and non-aot code and 
19237         get rid of relocations in the AOT case.
19238
19239         * mini-x86.h mini.c exceptions-x86.c 
19240         (mono_arch_get_throw_corlib_exception): New arch specific function to 
19241         raise corlib exceptions which doesn't require relocations in the 
19242         caller.
19243
19244         * aot.c (emit_method): Handle PATCH_INFO_NONE as well.
19245
19246 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
19247
19248         * mini.c (mono_emit_method_call): Only allocate the got var when it is
19249         needed.
19250
19251         * mini-x86.c (mono_arch_patch_code): Add missing PATCH_INFO_METHOD_REL
19252         in the AOT case.
19253
19254 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
19255
19256         * mini-x86.c, cpu-pentium.md, inssel-x86.brg: Fixed bug
19257         with add function when used from Inc/dec atomic 
19258         functions. Re-enabled optimization on x86.
19259         * mini-ops.h: renamed atomic_add functions to
19260         allow _add to match the Interlocked::Add and
19261         _add_next to match Interlocked::Inc/Dec.
19262
19263 2004-12-15  Massimiliano Mantione  <massi@ximian.com>
19264
19265         * mini.c: Fixed a subtle bug in mono_method_to_ir, about the
19266         linking of BBs to the end BB, and enabled SSAPRE also with
19267         consprop and copyprop (which was prevented by that bug).
19268
19269 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
19270
19271         * mini-x86.c: disabling the Interlocked optimizing code. 
19272
19273 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
19274
19275         * aot.c (load_aot_module): Move reading of got_addr after the AOT
19276         file version check.
19277         
19278 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
19279
19280         * mini-x86.c, inssel-x86.brg, cpu-pentium.md: removed _imm 
19281         interlocked optimization due lack of support on x86, rewrote 
19282         exchange to take into account that base may be in eax.
19283         
19284         xsp works again; activated Interlocked optimizing code.
19285         
19286 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
19287
19288         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
19289
19290 2004-12-13  Zoltan Varga  <vargaz@freemail.hu>
19291
19292         * mini-ops.h: Add new opcodes.
19293
19294         * mini.h: Add new patch types. Add got_var to MonoCompile.
19295
19296         * mini.h mini-x86.c mini-amd64.c aot.c: Rename 
19297         mono_arch_get_aot_patch_offset () to mono_arch_get_patch_offset () and
19298         make it work with all kinds of patchable code.
19299
19300         * inssel.brg inssel-x86.brg: Add new rules dealing with computing the
19301         address of the GOT, and referencing entries in the GOT.
19302
19303         * mini.c: Add code to load the GOT address if needed by an opcode.
19304
19305         * aot.c mini-x86.h mini-x86.c cpu-pentium.md: Add support for position 
19306         independent AOT code on the x86 using an elf-style Global Offset Table.
19307
19308 2004-12-14  Raja R Harinath  <rharinath@novell.com>
19309
19310         * Makefile.am (RUNTIME): Set MONO_SHARED_DIR.
19311
19312 2004-12-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19313
19314         * mini-x86.c: disabling the Interlocked optimizing code. It segfaults
19315         when running xsp.
19316
19317 2004-12-13  Patrik Torstensson  <patrik.torstensson@gmail.com>
19318
19319         * mini-x86.c,mini-ops.h,inssel-x86.brg,cpu-pentium.md: Implementation
19320         of Interlocked:Increment/Decrement/Add as inline ops.
19321         (mini-x86.c (mono_arch_get_inst_for_method and mono_arch_output_basic_block))
19322
19323 2004-12-12  Geoff Norton  <gnorton@customerdna.com>
19324
19325         * exceptions-ppc.c: Reorder code so gcc3.4 can compile it
19326         * mini-ppc.c: Unify mono_arch_patch_code with changes in r37636.
19327
19328 2004-12-12  Duncan Mak  <duncan@ximian.com>
19329
19330         * mini-ppc.c (mono_arch_patch_code): Hopefully made this build
19331         again. `patch_info->table_size' is no longer valid after Zoltan's
19332         commit #37636.
19333
19334 2004-12-12  Martin Baulig  <martin@ximian.com>
19335
19336         * mini.c (mono_method_to_ir): Only call mono_debug_init_method()
19337         if we are the "real" method, ie. not an inlined method inside it.
19338
19339 2004-12-11  Ben Maurer  <bmaurer@ximian.com>
19340
19341         * mini.c (CEE_LDSFLD): Make sure that the vtable has been init'd
19342         before we look in the special fields table. This fixes
19343         ../tests/thread-static-init.cs.
19344
19345 2004-12-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19346
19347         * mini.c: return immediately after setting OP_ARRAY_RANK or CEE_LDLEN
19348         for Array get_Rank and get_Length. Fixes bug #70465.
19349
19350 2004-12-11  Zoltan Varga  <vargaz@freemail.hu>
19351
19352         * mini.h mini.c aot.c: Put the bblock table for a SWITCH patch into a
19353         separate structure to reduce the size of MonoJumpInfo.
19354
19355 Fri Dec 10 18:09:22 CET 2004 Paolo Molaro <lupus@ximian.com>
19356
19357         * mini.c, mini.h, aot.c, driver.c: allow disabling the aot code.
19358
19359 2004-12-10  Patrik Torstensson  <patrik.torstensson@gmail.com>
19360
19361         * mini.c (mini_get_inst_for_method): Changed to allow ports
19362         to return a MonoInst instead of opcode 
19363         (renamed mini_get_opcode_for_method to better reflect the new functionality)
19364         
19365         * mini-[x86|s390|s390x|ppc|sparc].c (mono_arch_get_inst_for_method): 
19366         Allow ports to return a created MonoInst instead of op-code, will enable
19367         new optimizations.
19368         (renamed mini_get_opcode_for_method to better reflected the functionality)
19369
19370 2004-12-09  Zoltan Varga  <vargaz@freemail.hu>
19371
19372         * mini.c (NEW_AOTCONST): Share some code between the different NEW_AOTCONST macros.
19373
19374 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
19375
19376         * mini.c jit-icalls.c: Pass generic_context to mono_ldtoken_wrapper.
19377         Fixes #69985.
19378
19379 2004-12-08  Martin Baulig  <martin@ximian.com>
19380
19381         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use `fsig->signature'
19382         if we're a CEE_CONSTRAINED call.  Fixes gen-118.cs.
19383
19384 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
19385
19386         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_<X>
19387         correctly.
19388
19389         * exceptions.cs: Disable some tests which depend on properties of x86 fp
19390         arithmetic.
19391
19392 2004-12-08  Raja R Harinath  <rharinath@novell.com>
19393
19394         * Makefile.am (CLEANFILES): Add *.exe, *.dll.
19395
19396 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
19397
19398         * mini-sparc.c (mono_arch_output_basic_block): Fix LOCALLOC_IMM
19399         bug introduced by the previous patch.
19400
19401 Tue Dec 7 11:44:39 CET 2004 Paolo Molaro <lupus@ximian.com>
19402
19403         * mini-ppc.c, objectc.cs: handle large structs passed by value
19404         (fixes bug #69972).
19405
19406 Tue Dec 7 10:43:31 CET 2004 Paolo Molaro <lupus@ximian.com>
19407
19408         * mini-ppc.c: OP_ARGLIST implementation from
19409         Geoff Norton  <gnorton@customerdna.com>.
19410
19411 Tue Dec 7 10:14:25 CET 2004 Paolo Molaro <lupus@ximian.com>
19412
19413         * inssel-x86.brg, inssel-ppc.brg: fix reference to register
19414         in stmt: OP_OUTARG_VT (reg) (should fix bug #69785).
19415
19416 Tue Dec 7 10:06:39 CET 2004 Paolo Molaro <lupus@ximian.com>
19417
19418         * exceptions-ppc.c: avoid calling ppc_patch in exception trampolines.
19419
19420 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
19421
19422         * inssel-s390.brgi, mini-ops.h, mini-s390.c : Add stubs for support of tls offset
19423         support.
19424
19425 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
19426
19427         * mini-sparc.c: Zero out localled-ed memory.
19428
19429         * iltests.il: Add tests for zeroing out localloc-ed memory.
19430
19431 2004-12-04  Martin Baulig  <martin@ximian.com>
19432
19433         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use the new
19434         mono_method_get_signature_full().       
19435
19436 2004-12-03  Massimiliano Mantione  <massi@ximian.com>
19437
19438         * mini.c: Added removal of critical edges (prerequisite for SSAPRE),
19439         and some utility functions (always for SSAPRE), integrated SSAPRE.
19440         * mini.h: Likewise.
19441         * driver.c: Added ssapre option.
19442         * ssa.c: Small fix on OP_ARG handling.
19443         * ssapre.c, ssapre.h: Added files containing SSAPRE implementation.
19444         * Makefile.am: Likewise.
19445
19446 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
19447
19448         * tramp-x86.c (mono_arch_create_jit_trampoline): Remove code which is
19449         now in the xp code.
19450
19451         * mini.c (mini_init): Register mono_thread_force_interruption_checkpoint
19452         icall.
19453
19454 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
19455
19456         * inssel-s390.brg : Add OP_OUTARG_VT (OP_REFANYTYPE (reg)) rule.
19457         
19458         * cpu-s390.md : Increase instruction length of oparglist.
19459
19460         * mini-s390.c : Implement vararg and TYPEDEBYREF support.
19461
19462 2004-11-30  Martin Baulig  <martin@ximian.com>
19463
19464         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, added support for
19465         virtual generic methods.  We call a special helper_compile_generic_method()
19466         icall to retrieve the method from the vtable, inflate and compile
19467         it and then do a CEE_CALLI.  Thanks a lot to Paolo for this idea.
19468
19469         * jit-icalls.c (helper_compile_generic_method): New JIT icall.
19470
19471 2004-11-30  Zoltan Varga  <vargaz@freemail.hu>
19472
19473         * mini-sparc.c: Fix up vararg corner cases. Fixes #70019.
19474
19475 2004-11-29  Zoltan Varga  <vargaz@freemail.hu>
19476
19477         * cpu-sparc.md mini-sparc.c (long_conv_to_ovf_i): Fill missing delay slot.
19478         Fixes #69929.
19479
19480 2004-11-27  Ben Maurer  <bmaurer@ximian.com>
19481
19482         * inssel.brg (CEE_SWITCH): The AOT stuff Zoltan added is only for
19483         platforms with PIC aot.
19484
19485 2004-11-28  Martin Baulig  <martin@ximian.com>
19486
19487         * mini.c (mono_method_to_ir): In CEE_DUP, added handle_stobj().
19488         Fixes gen-112.cs.
19489
19490 2004-11-28  Martin Baulig  <martin@ximian.com>
19491
19492         * mini-x86.c (mono_arch_call_opcode): Use the original type, not
19493         the result of mono_type_get_underlying_type() to check whether
19494         we're byref.
19495
19496 2004-11-26  Martin Baulig  <martin@ximian.com>
19497
19498         * mini.c
19499         (mono_method_to_ir): Use `!method->signature->has_type_parameters'
19500         in the g_assert().
19501
19502 2004-11-26  Zoltan Varga  <vargaz@freemail.hu>
19503
19504         * mini-amd64.c (mono_arch_emit_this_vret_args): Handle this and vret
19505         the same way as the other arguments so they won't get clobbered.
19506
19507         * mini-amd64.c (mono_arch_output_basic_block): Avoid doing virtual 
19508         calls through R11 since it is clobbered by the trampoline code.
19509
19510 2004-11-26  Raja R Harinath  <rharinath@novell.com>
19511
19512         * Makefile.am: Consistently use $(RUNTIME) rather than ./mono to
19513         pick up in-tree mscorlib.dll.
19514
19515 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
19516
19517         * aot.c: Rename MonoAOTModule->cleanup to out_of_date.
19518
19519         * mini-amd64.c aot.c: Switch to PIC relative AOT code. References to 
19520         runtime data/code are now stored in a table similar to the GOT in ELF. 
19521         This allows the code itself to be position independent.
19522
19523         * aot.c: Fix loading of referenced assemblies after the lazy assembly
19524         loading changes.
19525
19526         * aot.c: Attach ELF type (object/function) directives to all global
19527         symbols.
19528
19529         * tramp-amd64.c (amd64_magic_trampoline): Patch RIP relative calls too.
19530
19531         * inssel.brg (SWITCH): Emit an AOT_CONST in the aot case.
19532
19533         * mini-amd64.h: Turn on PIC AOT code.
19534
19535         * mini.h (mono_arch_get_aot_patch_offset): New arch specific function
19536         returning the offset within an OP_AOTCONST instruction where the GOT
19537         offset needs to be added.
19538
19539         * mini.h: Bump AOT file format version.
19540
19541 2004-11-25  Martin Baulig  <martin@ximian.com>
19542
19543         * mini.c (mono_method_to_ir): In CEE_CALL, don't allow calling any
19544         uninflated generic methods.
19545
19546 2004-11-25  Martin Baulig  <martin@ximian.com>
19547
19548         * mini.c (mono_method_to_ir): Don't allow any uninflated generic methods.
19549
19550 2004-11-24  Martin Baulig  <martin@ximian.com>
19551
19552         * minit.c (type_to_eval_stack_type): Set `inst->klass' to the
19553         original klass (this only applies for generic instances).
19554
19555 2004-11-24  Martin Baulig  <martin@ximian.com>
19556
19557         * mini.c (mono_method_to_ir): Use `STACK_OBJ' instead of
19558         `ldind_type [CEE_LDIND_REF]' (which would be beyond the end of
19559         that array).
19560
19561 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
19562
19563         * mini.c (mono_method_to_ir): Disable inlining for methods containing
19564         localloc. Fixes #69678.
19565
19566         * iltests.il (test_0_localloc_inline): Add regression test for #69678.
19567         
19568 2004-11-23  Zoltan Varga  <vargaz@freemail.hu>
19569
19570         * mini-amd64.c (mono_arch_output_basic_block): Set %al to the number of
19571         used SSE registers on pinvoke calls. Fixes #69774.
19572
19573 2004-11-23  Geoff Norton  <gnorton@customerdna.com>
19574
19575         * inssel-ppc.brg, mini-ppc.c: Use mono_class_from_mono_type instead of
19576         vt->inst_vtype->data.klass.  This fixes generic structs and bug #69766
19577
19578 2004-11-23  Raja R Harinath  <rharinath@novell.com>
19579
19580         * Makefile.am (MCS,ILASM): Don't refer to runtime/ directory.
19581         Refer directly to the mcs/ tree.
19582
19583 2004-11-19  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
19584
19585         * mini-s390.c, tramp-s390.c, mini-s390.h: Add LMF processing for trampolines.
19586         Check if a trampoline for a synchronized method is required. 
19587
19588 Fri Nov 19 17:34:21 CET 2004 Paolo Molaro <lupus@ximian.com>
19589
19590         * mini-ppc.c, cpu-g4.md: set to zero the memory allocated
19591         with localloc if needed. Throe arithmetric exception in
19592         div an rem if needed. Implement ovf checks in OP_LCONV_TO_OVF_I.
19593         Adapted from a patch by Geoff Norton  <gnorton@customerdna.com>.
19594
19595 2004-11-19  Geoff Norton  <gnorton@customerdna.com>
19596
19597         * mini-ppc.c: Call mono_type_get_underlying_type to unwrap generic
19598         types before switching on type.  Fixes #69622.
19599
19600 2004-11-19  Raja R Harinath  <rharinath@novell.com>
19601
19602         * Makefile.am (check-local): New.  Integrate into 'make check'.
19603         (MCS,RUNTIME): Define using in-tree mono and mcs.
19604         (ILASM): New.
19605         (%.exe): Use $(ILASM).
19606
19607 Fri Nov 19 14:54:07 CET 2004 Paolo Molaro <lupus@ximian.com>
19608
19609         * mini-ppc.c: adjust initial prolog size (bug #69691).
19610
19611 2004-11-18  Zoltan Varga  <vargaz@freemail.hu>
19612
19613         * cpu-pentium.md (localloc): Increase max instruction len. Fixes
19614         #69664.
19615
19616 2004-11-17  Raja R Harinath  <rharinath@novell.com>
19617
19618         * Makefile.am (clean-local): Rename from 'clean'.
19619
19620 2004-11-15  Nelae Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
19621
19622         * mini.c, mini-x86.c, mini-amd64.c, exceptions-s390.c: Add siginfo_t parameter
19623         to mono_arch_is_int_overflow. 
19624         * exceptions-s390.c: Add mono_arch_is_int_overflow routine to discern between
19625         SIGFPE events.
19626
19627 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
19628
19629         * declsec.c|h: New files to support declarative security attributes.
19630         Added function to check if a method has (applicable) security.
19631         * mini.c|h: Add check for declarative security attributes in
19632         mono_method_check_inlining.
19633         * Makefile.am: Added declsec.c and declsec.h to the build.
19634
19635 Mon Nov 15 11:53:46 CET 2004 Paolo Molaro <lupus@ximian.com>
19636
19637         * mini.c, mini.h: update to keep dynamic code info per-domain.
19638
19639 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
19640
19641         * mini.c mini-*.h: Get rid of MONO_ARCH_HAVE_RETHROW since all architectures support it now.
19642         (mini_init): Get rid of it from here too.
19643
19644 Thu Nov 11 20:17:17 CET 2004 Paolo Molaro <lupus@ximian.com>
19645
19646         * mini-ppc.c, mini-ppc,h, cpu-g5.md, exceptions-ppc.c:
19647         implemented OP_RETHROW (patch by Geoff Norton
19648         <gnorton@customerdna.com>).
19649
19650 2004-11-10  Geoff Norton  <gnorton@customerdna.com>
19651
19652         * tramp-ppc.c (ppc_magic_trampoline): Don't trampoline methods
19653         between appdomains.  Fixes appdomain-unload on PPC.
19654
19655 2004-10-26  Lluis Sanchez Gual  <lluis@novell.com>
19656
19657         * exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
19658         mini-exceptions.c: handle the new wrapper types.
19659         * mini.c: The CEE_ISINST and CEE_CASTCLASS opcodes now take the
19660         token value as a MonoClass* when compiling a wrapper.
19661         mono_jit_create_remoting_trampoline now takes an additional
19662         MonoRemotingTarget parameter.
19663         
19664 2004-11-10  Martin Baulig  <martin@localhost>
19665
19666         * mini.c (mono_method_to_ir): Use `generic_container->context'
19667         rather than creating a new one.
19668
19669 2004-11-09  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
19670
19671         * exceptions-s390.c, mini-s390, cpu-s390.md: Add support for OP_RETHROW.
19672
19673         * inssel-390.md, mini-s390.c: Correct register allocation for globals.
19674
19675 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
19676
19677         * aot.c (mono_aot_init): Add MONO_AOT_CACHE env variable to turn on
19678         the experimental aot cache stuff.
19679
19680 Tue Nov 9 17:30:20 CET 2004 Paolo Molaro <lupus@ximian.com>
19681
19682         * aot.c, mini.c, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
19683         mini-exceptions.c: update to exception clause structure changes.
19684
19685 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
19686
19687         * exceptions-x86.c (throw_exception): Fix warnings.
19688
19689         * mini-x86.h mini-x86.c cpu-pentium.md exceptions-x86.c: Add support 
19690         for OP_RETHROW.
19691
19692 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
19693
19694         * exceptions-sparc.c (get_throw_exception): Really fix this.
19695
19696 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
19697
19698         * tramp-*.c: we no longer support icalls without wrappers, so
19699         a bit of code can be removed here
19700
19701 2004-11-07  Zoltan Varga  <vargaz@freemail.hu>
19702
19703         * exceptions-sparc.c (get_throw_exception): Fix more bugs in previous
19704         patch.
19705
19706         * cpu-sparc.md: Add op_rethrow.
19707
19708         * exceptions-sparc.c (get_throw_exception): Fix bug in previous patch.
19709
19710         * mini-sparc.h mini-sparc.c exceptions-sparc.c: Add support for OP_RETHROW.
19711
19712         * mini.h: Add mono_arch_get_rethrow_exception () arch specific function.
19713         * mini-ops.h: Add OP_RETHROW.
19714
19715         * mini.c inssel.brg: Distinguish between THROW and RETHROW.
19716
19717         * cpu-amd64.c mini-amd64.c exceptions-amd64.c: Add support for OP_RETHROW.
19718
19719 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
19720         
19721         * helpers.c: Change otool arguments from -V -v -t to -v -t on Darwin
19722         Makes the output much easier to read
19723
19724 2004-11-05  Ben Maurer  <bmaurer@ximian.com>
19725
19726         * ssa.c: allocate MonoMethodVar.uses from the mempool. First, this
19727         prevents another huge leak when compiling with ssa. Secondly, the
19728         performance of doing this rather than freeing the lists is much
19729         better. GList does a lock every time you allocate a list link,
19730         so that it can use a memory pool. So, it is better to just use
19731         a memory pool of our own.
19732         
19733         * ssa.c, linear-scan.c: replace g_list_remove_link with
19734         g_list_delete.  The remove one does not free the GList, so we were
19735         leaking memory. On -O=all --compile-all with corlib, this cut down
19736         3 MB of allocations.
19737
19738 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
19739
19740         * tramp-sparc.c (mono_arch_create_jit_trampoline): Fix sparc build.
19741
19742         * tramp-amd64.c (mono_arch_create_jit_trampoline): Fix amd64 build.
19743
19744         * mini.h mini.c tramp-*.c: Moved xp parts of JIT trampoline creation
19745         into a new function mono_create_jit_trampoline ().
19746
19747 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
19748
19749         * trace.c (get_spec): Allow tracing of classes without a namespace.
19750
19751 2004-11-02  Sebastien Pouliot  <sebastien@ximian.com>
19752
19753         * mini.c: Fix pointer overwrite in mini_method_compile.
19754
19755 2004-11-2  Geoff Norton  <gnorton@customerdna.com>
19756
19757         * inssel-ppc.brg (OP_OUTARG_VT (CEE_LDOBJ (base))):
19758         The darwin ABI needs some special handling for 1 and 2 byte structs
19759         Lets use lbz/lhz instead of lwz everywhere.
19760         * mini-ppc.c (calculate_sizes):  The Darwin ABI needs from special handling
19761         for 1 and 2 byte structs and struct which are size >= 3 || size % 4 != 0.
19762         Use stb/sth for the former, and put the latter always on stack instead of in
19763         argument registers.
19764
19765 2004-10-30  Zoltan Varga  <vargaz@freemail.hu>
19766
19767         * trace.c (is_filenamechar): Add '_'.
19768
19769 2004-10-29  Neale Ferguson  <Neale.Ferguson@SoftwareAG-usa.com>
19770
19771         * mini-s390.c: Fix prolog length to allow for large trace requirements.
19772
19773         * exceptions-s390.c: Remove dwarf unwinding stuff that was unused.
19774
19775 2004-10-29  Zoltan Varga  <vargaz@freemail.hu>
19776
19777         * Makefile.am (libgc_libs): Do some automake magic so libmono/mono
19778         depends on libmonogc. Fixes #68805.
19779
19780 2004-10-26  Miguel de Icaza  <miguel@ximian.com>
19781
19782         * mini.c (mono_jit_free_method): Provide extra information for
19783         this error.  Currently this leaks, but will be turned into a
19784         developer option in the future.
19785
19786 2004-10-26  Zoltan Varga  <vargaz@freemail.hu>
19787
19788         * driver.c (mono_main): Applied patch from Willibald Krenn <willibald.krenn@gmx.at>. Make --graph work for icalls and pinvoke methods.
19789
19790 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
19791
19792         * aot.c (mono_aot_load_method): Align PATCH_INFO_R8 on an 8 byte 
19793         boundary. Fixes reading of PATCH_INFO_R4 and R8.
19794         (mono_aot_load_method): Do not allocate MonoAotMethod in the GC heap.
19795
19796 2004-10-24  Zoltan Varga  <vargaz@freemail.hu>
19797
19798         * mini-amd64.c (mono_arch_patch_code): Fix patching of class init
19799         trampolines for AOT code.
19800
19801 2004-10-22    <vargaz@freemail.hu>
19802
19803         * aot.c (mono_compile_assembly): Disable AOT for methods containing calls to methods of
19804         constructed types. Fixes #68136.
19805
19806 2004-10-21  Martin Baulig  <martin@ximian.com>
19807
19808         * exceptions-x86.c (throw_exception): Call mono_debugger_throw_exception();
19809         if it returns true, unwind the stack to the call instruction.
19810
19811 2004-10-21    <vargaz@freemail.hu>
19812
19813         * aot.c: Reorganize the AOT file format to avoid relocations. Fix warnings.
19814
19815         * mini.h: Bump AOT version number.
19816
19817         * objects.cs: Add another test for unbox trampolines.
19818
19819         * tramp-amd64.c (amd64_magic_trampoline): Disable patching of trampolines for 
19820         valuetype methods.
19821
19822 2004-10-20    <vargaz@freemail.hu>
19823
19824         * driver.c: Add SHARED to the set of optimizations tested.
19825
19826         * tramp-amd64.c (amd64_magic_trampoline): Patch trampoline code as well.
19827
19828         * mini.c (mono_method_to_ir): Mark the domainvar as volatile when it is implicitly
19829         used by CEE_NEWARR.
19830
19831         * ssa.c (mono_ssa_deadce): Do not optimize away accesses to volatile variables.
19832
19833 2004-10-20  Martin Baulig  <martin@ximian.com>
19834
19835         * mini-exceptions.c (mono_handle_exception): Call
19836         mono_debugger_handle_exception() to tell the debugger about
19837         catch/finally clauses.
19838
19839 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
19840
19841         * exceptions-amd64.c (mono_arch_find_jit_info): Pop arguments of the stack.
19842
19843         * mini-amd64.c (mono_amd64_get_vcall_slot_addr): Handle extended registers. Fixes
19844         #68447.
19845
19846 2004-10-15  Geoff Norton  <gnorton@customerdna.com>
19847
19848         * mini-ppc.c (calculate_sizes): Marshal valuetypes for pinvoke
19849         methods as their native size, fixed bug #57543, #57545.
19850         * mini-ppc.c (mono_arch_output_basic_block): Use mulli for imm16 types
19851         This saves a temporary register and mullw call down into 1 (minor perf
19852         increase for cases like sum = sum * 5;  This use to translate into:
19853             li r11,5
19854             mullw r28,r28,r11
19855         It now translates to
19856             mulli r28,r28,5
19857
19858 2004-10-15  Zoltan Varga  <vargaz@freemail.hu>
19859
19860         * trace.c (mono_trace_eval): Use mono_method_desc_full_match. Fixes
19861         #68388.
19862
19863 2004-10-11  Martin Baulig  <martin@ximian.com>
19864
19865         * mini.c (mono_method_to_ir): If we're a generic method, get the
19866         MonoGenericContainer from our MonoMethodNormal and create a
19867         MonoGenericContext from it.
19868
19869 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
19870
19871         * inssel-long32.brg (OP_LCONV_TO_OVF_I2): Fix CONV_I1 -> CONV_I2.
19872
19873         * basic-long.cs: Add test for checked i8->i2 cast.
19874
19875 Wed Oct 6 12:40:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
19876
19877         * inssel-ppc.brg: added a couple of speedup rules.
19878
19879 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
19880
19881         * Makefile.am (genmdesc_LDADD): Don't link this against libmetadata
19882         to speed up rebuilds.
19883
19884 2004-10-04  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
19885
19886         * mini-s390.c: Minor fix to OP_OR_IMM.
19887
19888 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
19889
19890         * tramp-sparc.c (sparc_magic_trampoline): Handle appdomain stuff
19891         better. Fixes appdomain-unload.exe on sparc.
19892
19893 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
19894
19895         * ssa.c: Fixed casts to unsigned where the value was of 64 bits in
19896         simulate_long_compare, patch by will@exomi.com (Ville-Pertti Keinonen),
19897         see bug 67324.
19898
19899 2004-10-02  Zoltan Varga  <vargaz@freemail.hu>
19900
19901         * jit-icalls.c: Handle a nonexisting trunc function more correctly.
19902
19903 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
19904
19905         * mini.c: Always generate a field read/write wrapper for members
19906         of the class MarshalByRefObject since the actual instance could
19907         be a CBO.
19908
19909 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
19910
19911         * mini.c: Use mono_thread_exit() to stop threads, instead of ExitThread.
19912
19913 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
19914
19915         * driver.c mini.h trace.c: Move the setting of the main assembly into
19916         a separate function called mono_trace_set_assembly () and call it after
19917         actually loading the main assembly. Fixes #66872.
19918
19919 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
19920
19921         * mini-amd64.h mini-amd64.c tramp-amd64.c: Allocate trampoline memory
19922         using the code manager.
19923
19924 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
19925
19926         * tramp-amd64.c mini-amd64.h: Add support for MONO_ARCH_HAVE_INVALIDATE_METHOD.
19927
19928 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
19929
19930         * cpu-amd64.md: Fix bug in previous patch.
19931         
19932         * cpu-amd64.md: Fix instruction lengths of membase opcodes. Fixes
19933         #66650.
19934
19935 Wed Sep 22 19:03:20 CEST 2004 Paolo Molaro <lupus@ximian.com>
19936
19937         * mini.h, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
19938         mini-exceptions.c: updates for changed stack walk interface.
19939
19940 2004-09-21  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
19941
19942         * mini-s390.c, cpu-s390.md: Minor changes to OP_ARGLIST handling
19943
19944 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
19945
19946         * mini.c (mono_method_to_ir): Fix LDSTR in dynamic methods. Fixes #66132.
19947
19948 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
19949
19950         * driver.c (mini_regression_list): Do not call mono_assembly_close 
19951         since assemblies can't be unloaded.
19952         
19953 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
19954
19955         * cpu-amd64.md: Fix more instruction lengths.
19956
19957         * cpu-amd64.md: Fix lengths of some instructions.
19958
19959 2004-09-11 Ben Maurer  <bmaurer@users.sourceforge.net>
19960
19961         * inssel.brg: Make the array ldelema check aot friendly.
19962
19963 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
19964
19965         * mini-amd64.c (mono_arch_get_argument_info): Fix stack_unwind test.
19966
19967         * cpu-amd64.md inssel-long.brg inssel-amd64.brg: Small optimizations.
19968
19969 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
19970
19971         * mini-x86.c: Fix build.
19972
19973         * mini-sparc.c mini-x86.c mini-amd64.c: Use the new 
19974         mono_type_get_underlying_type () helper function to simplify code.
19975         
19976 2004-09-09  Martin Baulig  <martin@ximian.com>
19977
19978         * mini-amd64.c: Don't access `type->data.klass' directly, call
19979         mono_class_from_mono_type() instead since the type may be a
19980         generic instance.
19981
19982 2004-09-09  Martin Baulig  <martin@ximian.com>
19983
19984         * mini-amd64.c (get_call_info): Fix support for generic instances.
19985         (add_valuetype): Use mono_class_from_mono_type() to get the class
19986         since we can be a generic instance.
19987
19988 Thu Sep 9 01:43:53 PDT 2004 Paolo Molaro <lupus@ximian.com>
19989
19990         * mini-ppc.c, mini.h, regalloc.c, regalloc.h: powerpc speedups.
19991
19992 2004-09-07 Ben Maurer  <bmaurer@users.sourceforge.net>
19993
19994         * liveness.c: reset spill costs on each scan: bug 62107
19995
19996 2004-09-07  Bernie Solomon  <bernard@ugsolutions.com>
19997
19998         * exceptions-sparc.c (mono_arch_find_jit_info): remove
19999         unnecessary line that doesn't compile
20000
20001 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
20002
20003         * mini.c mini.h mini-x86.h tramp-x86.c: Instead of freeing delegate
20004         trampolines, make them call an error function so people can fix their
20005         code.
20006
20007 2004-09-06  Martin Baulig  <martin@ximian.com>
20008
20009         * mini.c (mono_method_to_ir): When initializing locals, handle a
20010         generic instances like a valuetype if it's a valuetype and like a
20011         class if it's a class.
20012
20013 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
20014
20015         * exceptions-x86.c (mono_arch_find_jit_info): Pop arguments off the
20016         stack. Fixes #64674.
20017
20018         * exceptions.cs: Add test for unwinding of call arguments.
20019
20020 Mon Sep 6 05:50:02 PDT 2004 Paolo Molaro <lupus@ximian.com>
20021
20022         * mini-*.c, mini-ops.h, inssel-long32.brg: introduced
20023         OP_ADDCC_IMM and OP_SUBCC_IMM (add/sub immediate that will
20024         set the carry/borrow flag). The sparc and s390 implementations
20025         can now use optimized versions (and simplify the code). ppc bugfixes.
20026
20027 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
20028
20029         * exceptions-ppc.c (mono_arch_find_jit_info): Fix memory leak.
20030
20031 2004-09-05  Zoltan Varga  <vargaz@freemail.hu>
20032
20033         * inssel-amd64.brg: Remove leftover 32 bit rule.
20034
20035         * mini-amd64.c (mono_arch_instrument_prolog): Fix tracing support.
20036
20037 2004-09-04  Zoltan Varga  <vargaz@freemail.hu>
20038
20039         * mini-exceptions.c (mono_find_jit_info): Refactor common code from
20040         mono_arch_find_jit_info functions into a new function. Fix a memory
20041         leak.
20042
20043         * exceptions-x86.c exceptions-amd64.c exceptions-sparc.c: Remove
20044         refactored code.
20045         
20046 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
20047
20048         * exceptions.cs inssel-long32.brg: Handle the OP_LCONV_TO_OVF_I2 case
20049         as well.
20050         
20051         * exceptions.cs: Add array size tests.
20052
20053         * mini.c: Allocate a separate icall wrapper for each arity of 
20054         mono_array_new_va. Fixes #59509.
20055
20056         * exceptions.cs: Add testcase for 64578.
20057
20058         * inssel-long32.brg: Fix OP_LCONV_TO_OVF_I1 rule. Fixes #64578.
20059
20060         * trace.c (is_filenamechar): Allow 0..9 in strings. Fixes #65094.
20061         
20062 2004-09-02  Martin Baulig  <martin@ximian.com>
20063
20064         * mini.c (mono_method_to_ir): When initializing the locals, call
20065         handle_initobj() on the generic instance itself, not its
20066         underlying type.
20067
20068 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
20069
20070         * mini.h (MonoJitDynamicMethodInfo): New structure, extension of 
20071         MonoJitInfo for dynamic methods.
20072
20073         * mini.c: Rename trampoline_hash_mutex to jit_mutex.
20074
20075         * mini.c: Add support for freeing JIT data for dynamic methods.
20076         
20077 2004-09-01  Martin Baulig  <martin@ximian.com>
20078
20079         * mini-x86.c (is_regsize_var): Added support for generic
20080         instances.
20081         (mono_arch_emit_prolog): Make this compile again, use
20082         `x86_push_imm_template (code)'.
20083
20084 2004-08-30 Ben Maurer  <bmaurer@users.sourceforge.net>
20085
20086         * mini-x86.c: make all push_imm instructions that get
20087         patched always emit the long form
20088
20089 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
20090
20091         * mini.c (mono_create_jump_trampoline): Store the jump trampolines 
20092         in a per-domain hash.
20093
20094         * mini-amd64.c (merge_argument_class_from_type): Handle generic
20095         types.
20096
20097 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
20098
20099         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: Ongoing SSE
20100         work.
20101         
20102         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: More SSE
20103         work.
20104
20105         * mini-amd64.c cpu-amd64.md: Implement checked int<->uint casts.
20106         Beginnings of SSE2 support.
20107
20108         * exceptions.cs: Add more tests for checked int<->uint casts.
20109
20110 2004-08-28  Martin Baulig  <martin@ximian.com>
20111
20112         * mini-x86.c (mono_arch_instrument_epilog): Added support for
20113         generic instances.
20114
20115         * mini.c
20116         (mono_type_to_ldind, mono_type_to_stind, type_to_eval_stack_type):
20117         Handle generic instances recursively.
20118
20119 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
20120
20121         * iltests.il: test for conv.u8 on a constant
20122
20123 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
20124
20125         * inssel-long32.brg: c&p rules for LCONV_x4 (membase) and
20126         LCONV_x4 (shrun_32 (membase)).
20127
20128 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
20129
20130         * inssel-x86.brg: c&p rules for push/setret of long
20131
20132 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
20133
20134         * inssel-x86.brg: c&p rules for compare (base, regvar) and
20135         compare (regvar, base)
20136
20137         * inssel-x86.brg: more burg love
20138
20139         * inssel.brg: more cleanup
20140
20141         * inssel-x86.brg, inssel-long32.brg: burg cleanup.
20142
20143 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
20144
20145         * basic-long.cs, basic-calls.cs: new tests for optimization.
20146
20147 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
20148
20149         * mini-amd64.c (read_tls_offset_from_method): Fix typo in previous
20150         patch.
20151
20152 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
20153
20154         * mini-amd64.c (read_tls_offset_from_method): Add another case.
20155         
20156 2004-08-25  Bernie Solomon  <bernard@ugsolutions.com>
20157
20158         * inssel.brg (mini_emit_memcpy): use 
20159         NO_UNALIGNED_ACCESS to disable memcpy optimization
20160
20161 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
20162
20163         * mini-amd64.c: Handle generic types in various places.
20164
20165         * mini.c (mono_method_to_ir): Handle generic types in init locals.
20166
20167 2004-08-24  Zoltan Varga  <vargaz@freemail.hu>
20168
20169         * mini.c (handle_box): Fix warning.
20170
20171         * mini-amd64.c (mono_arch_local_regalloc): Fix regalloc problem.
20172
20173         * mini-amd64.h: Enable the emit_state optimization.
20174
20175         * mini-ops.h cpu-amd64.md: Add new amd64_test_null opcode.
20176
20177         * mini-amd64.c: Add some new 64 bit peephole opts.
20178
20179         * inssel.brg (mini_emit_memcpy): Optimize for 64 bit architectures.
20180
20181         * cpu-amd64.md: sreg1 of div instructions must be %rax.
20182
20183         * mini-amd64.c: Register allocator fixes.
20184
20185         * mini.c: Add an optimization to emit_state to avoid allocation of new
20186         registers on some platforms.
20187
20188 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
20189
20190         * inssel-x86.brg inssel-amd64: Add yet another missing tree->dreg assignment.
20191
20192         * mini-x86.c (mono_arch_local_regalloc): Fix bug in long register
20193         allocation. Fixes #63085.
20194
20195         * basic-long.cs: Add new regression test.
20196
20197         * mini-amd64.c: Register allocator improvements.
20198
20199 2004-08-21  Zoltan Varga  <vargaz@freemail.hu>
20200
20201         * mini-amd64.c (read_tls_offset_from_method): Add another code
20202         sequence.
20203
20204         * tramp-amd64.c (amd64_class_init_trampoline): Use a more efficient
20205         instruction sequence for nullifying class init trampolines.
20206
20207         * objects.cs: Add new regalloc test.
20208
20209         * mini-amd64.c inssel-amd64.brg: Optimize parameter passing.
20210
20211 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
20212
20213         * mini-amd64.c (mono_arch_call_opcode): Refactor this a little.
20214         
20215         * mini-amd64.c (mono_arch_regalloc_cost): Adjust regalloc costs for
20216         arguments.
20217
20218         * driver.c: Fix profiling after TLS changes.
20219         
20220         * driver.c (mono_main): Set mono_stats.enabled if needed.
20221
20222         * mini.c (handle_alloc): New helper function used by CEE_NEWOBJ and
20223         CEE_BOX.
20224
20225 2004-08-20 Ben Maurer  <bmaurer@users.sourceforge.net>
20226
20227         * mini-x86.c: use a 1 op rather than a 2 op tls access
20228         instruction -> faster.
20229
20230 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
20231
20232         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from
20233         x86 backend.
20234
20235 2004-08-19 Bernie Solomon <bernard@ugsolutions.com>
20236
20237         * exceptions-sparc.c (throw_exception): fix typo
20238
20239 2004-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
20240
20241         * mini-x86.c, cpu-pentium.md, inssel-x86.brg:
20242         set tree->dreg correctly with tls. Allow any
20243         register to be used.
20244
20245         * mini-x86.c (read_tls_offset_from_method): add new code
20246         generation pattern seen with GCC.
20247
20248
20249 Thu Aug 19 17:26:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
20250
20251         * mini-exceptions.c, exceptions-x86.c, exceptions-amd64.c,
20252         exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
20253         exceptions-sparc.c: fix some performance issues in exception
20254         handling and setting of the stack trace for exceptions that were
20255         already thrown.
20256
20257 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
20258
20259         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from 
20260         x86 backend.
20261         
20262         * mini-amd64.c (mono_arch_is_int_overflow): Handle all possible 
20263         registers.
20264
20265 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
20266
20267         This patch inlines tls access, when possible.
20268         
20269         * mini.h: new arch functions for TLS intrinsics.
20270         All platforms updated with a stub.
20271
20272         * mini.c: use the new intrinsics
20273
20274         * mini-x86.c, cpu-pentium.md, inssel-x86.brg, mini-ops.h:
20275         arch specific intrinsic for tls variables
20276
20277 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
20278
20279         * Makefile.am (libmono_la_LDFLAGS): Enable creating of libmono dll
20280         under windows.
20281
20282 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
20283
20284         * mini.c: thread local allocation
20285
20286 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
20287
20288         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Enable.
20289
20290         * Makefile.am: Link against the static version of libmonogc.
20291         
20292         * Makefile.am: Link the static versions of the convenience libraries
20293         into the mono executable.
20294
20295         * mini-x86.h mini-x86.c: Throw the correct exception on integer overflow.
20296
20297 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
20298
20299         * mini.h mini.c mini-amd64.h mini-amd64.c: Throw the correct exception
20300         on integer overflow.
20301
20302         * mini-amd64.c: Reorganize function call code.
20303
20304         * mini-amd64.c (peephole_pass): Merge changes from mini-x86.c.
20305
20306 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
20307
20308         * inssel-x86.brg: use xor eax,eax.
20309         
20310         * basic.cs: new tests
20311
20312 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
20313
20314         * mini-amd64.c (mono_arch_emit_epilog): Use RIP relative addressing
20315         in exception throwing code.
20316         
20317 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
20318
20319         * inssel-x86.brg: use xor esi,esi.
20320
20321 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
20322
20323         * driver.c (mono_main): Call mono_trace_parse_options earlier so it
20324         can trace methods compiled during mini_init () too.
20325
20326         * cpu-amd64.md mini-amd64.c (mono_arch_output_basic_block): Handle 
20327         CEE_CONV_U4.
20328
20329 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
20330
20331         * Makefile.am: static link on x86 (r=zoltan)
20332
20333 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
20334
20335         * tramp-amd64.c (amd64_magic_trampoline): Avoid patching the trampoline
20336         code since it causes some programs to fail.
20337
20338 2004-08-12  Zoltan Varga  <vargaz@freemail.hu>
20339
20340         * mini-amd64.c (bb_is_loop_start): Merge changes from mini-x86.c.
20341
20342 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
20343
20344         * mini.c: ovfops_op_map - add STACK_OBJ case for
20345         CONV_I 
20346         * basic.cs: add test_0_pin_string as test
20347         case for above.
20348
20349 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
20350
20351         * Makefile.am: build C# if srcdir != builddir
20352
20353 Tue Aug 10 19:23:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
20354
20355         * dominators.c, mini.h, mini-x86.c: fix loop alignment with
20356         fall-through blocks.
20357
20358 Tue Aug 10 16:18:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
20359
20360         * driver.c: enable loop by default again and include abcrem in -O=all.
20361
20362 2004-08-08  Zoltan Varga  <vargaz@freemail.hu>
20363
20364         * iltests.il: Add some localloc tests.
20365
20366         * mini.c (mono_method_to_ir): Set stack type of LOCALLOC correctly.
20367
20368         * inssel-amd64.brg inssel-x86.brg: Set dreg of LOCALLOC correctly. 
20369         Fixes #62574.
20370
20371         * inssel-amd64.brg: Add some optimizations.
20372
20373         * mini-amd64.c (mono_arch_setup_jit_tls_data): Add tls offset detection
20374         for gcc-3.4.
20375
20376         * Makefile.am: Statically link mono against libmono on AMD64.
20377         
20378         * mini-amd64.c inssel-amd64.brg: Optimizations.
20379
20380 2004-08-07  Zoltan Varga  <vargaz@freemail.hu>
20381
20382         * mini-amd64.c (mono_arch_emit_prolog): Optimize lmf saving a bit.
20383
20384         * tramp-amd64.c: Patch calling code in trampolines.
20385
20386 2004-08-06  Zoltan Varga  <vargaz@freemail.hu>
20387
20388         * mini-amd64.c: pinvoke struct passing fixes.
20389
20390 2004-08-05  Bernie Solomon  <bernard@ugsolutions.com>
20391
20392         * mini-sparc.c: redo change, make mono_arch_cpu_init call
20393         mono_arch_cpu_optimizazions so sparcv9 is initialized when embedded
20394
20395 2004-08-05  Duncan Mak  <duncan@ximian.com>
20396
20397         * mini.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
20398         CEE_LDELEM_ANY.
20399
20400 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
20401
20402         * mini-amd64.c (emit_move_return_value): Move return value for normal
20403         calls too.
20404
20405 2004-08-05  Martin Baulig  <martin@ximian.com>
20406
20407         * mini.c (ret_type_to_call_opcode): Don't use a `t' variable for
20408         `type->type'; just modify `type' itself when dealing with enums
20409         and generic instances.
20410         (check_call_signature): Make `simple_type' a `MonoType *'.
20411
20412 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
20413
20414         * mini.c: Use OP_PADD to add offsets to addresses.
20415
20416         * mini-amd64.h: Disable SIGSEGV_ON_ALTSTACK.
20417
20418 2004-08-04  Bernie Solomon  <bernard@ugsolutions.com>
20419
20420         * mini-sparc.c (mono_arch_emit_epilog): fix check
20421         for folding last op into restore instruction
20422
20423 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
20424
20425         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Allocate
20426         helper methods using the code manager.
20427         
20428         * exceptions-amd64.c (mono_arch_get_throw_exception): Fix maximum length.
20429
20430         * mini-amd64.c (mono_arch_allocate_vars): Fix tls offset detection.
20431
20432 Tue Aug 3 23:50:00 EST 2004 Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
20433         
20434         * mini-s390x.c mini-s390x.h tramp-s390x.c inssel-s390x.brg
20435           cpu-s390x.md exceptions-s390x.c Makefile.am: S/390 64-bit JIT
20436
20437         * mini-s390.c: fix tail processing
20438
20439 Tue Aug 3 01:35:44 PDT 2004 Paolo Molaro <lupus@ximian.com>
20440
20441         * mini-ppc.c: mul.ovf.un exception name fix.
20442
20443 2004-08-03  Martin Baulig  <martin@ximian.com>
20444
20445         * mini-x86.c (mono_arch_call_opcode): Correctly handle generic
20446         instances; before jumping to `handle_enum', also modify `ptype'.
20447
20448 2004-08-02  Bernie Solomon  <bernard@ugsolutions.com>
20449
20450         * cpu-sparc.md: fcall maximal length too small.
20451
20452 2004-08-02  Zoltan Varga  <vargaz@freemail.hu>
20453
20454         * mini-amd64.c mini.h: Add initial support for passing/returning 
20455         structures to/from pinvoked methods.
20456
20457 Mon Aug 2 11:59:35 PDT 2004 Paolo Molaro <lupus@ximian.com>
20458
20459         * mini-ppc.c: reg allocator fix.
20460
20461 2004-07-31  Zoltan Varga  <vargaz@freemail.hu>
20462
20463         * mini-amd64.c (mono_arch_output_basic_block): Fix OP_X86_PUSH_OBJ.
20464
20465         * inssel.brg: Optimize memset on 64 bit machines.
20466
20467         * mini-amd64.c: Fix some vararg cases.
20468
20469 2004-07-30  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
20470
20471         * mini-s390.c: Corrected macro in emit_float_to_int
20472
20473         * s390-abi.cs: Tests to exercise the s390 ABI
20474
20475 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
20476
20477         * exceptions-amd64.c (mono_arch_find_jit_info): Fix restoring of
20478         caller saved regs.
20479
20480         * basic.cs: Add a test for add.ovf.un.
20481
20482 2004-07-30  Bernie Solomon  <bernard@ugsolutions.com>
20483
20484         * mini-sparc.c: add case for OP_IDIV_UN
20485
20486 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
20487
20488         * mini-amd64.c mini-amd64.h mini.c: Add support for vararg pinvoke calls.
20489         
20490         * mini-amd64.c cpu-amd64.md: Ongoing JIT work.
20491
20492 2004-07-30  Ben Maurer  <bmaurer@ximian.com>
20493
20494         * basic.cs: regression tests.
20495
20496         * inssel-x86.brg: Disable cmp BYTE PTR [eax], imm, it causes various
20497         regressions.
20498
20499 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
20500
20501         * basic.cs: Add a new test.
20502
20503         * mini-amd64.c aot.c cpu-amd64.md: Add support for tracing, profiling 
20504         and AOT. Various fixes and optimizations.
20505
20506         * inssel.brg (CALL_REG): Add 64 bit versions of call_reg rules.
20507
20508 Fri Jul 30 15:49:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
20509
20510         * mini-ppc.c: make sure temp regs are not used for global reg
20511         allocation.
20512
20513 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
20514
20515         * cpu-sparc.md: conv_i8 fix for 64bits
20516
20517         * mini-sparc.c: add cases for OP_IXXX codes for 64bits
20518
20519 2004-07-29  Ben Maurer  <bmaurer@ximian.com>
20520         
20521         * cpu-pentium.md, mini-x86.c, inssel-x86.brg, mini-ops.h:
20522         add opcode for cmp BYTE PTR [eax], imm.
20523
20524         * inssel.brg: Make memcpy and memset takes bases.
20525
20526 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
20527
20528         * *-amd64.*: More AMD64 work.
20529         
20530 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
20531
20532         * cpu-pentium.md, inssel-x86.brg, mini-ops.h, mini-x86.c:
20533         add a compare-not-equal opcode.
20534         
20535 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
20536
20537         * mini.c: Use mono_init_from_assembly instead of mono_init.
20538         
20539 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
20540
20541         * mini.c: Fix opcode mapping for STACK_MP on 64 bit platforms.
20542
20543         * mini.c (CEE_NEWOBJ): Call mono_array_new_va using the correct signature.
20544
20545         * mini.c: Use MONO_ARCH_SIGACTION on AMD64 as well.
20546
20547         * inssel.brg: 64 bit fixes.
20548
20549         * mini.h (MonoCallInst): Add some AMD64 specific data.
20550
20551         * mini.h: Add some OP_P opcodes.
20552
20553 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
20554
20555         * basic.cs: tests for 61797 and 61740
20556
20557 Tue Jul 27 16:05:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
20558
20559         * mini-ppc.c, mini-sparc.c, mini-s390.c: keep track of line
20560         numbers in the debug info (spotted by Geoff Norton, <gnorton@customerdna.com>).
20561
20562 2004-07-24  Zoltan Varga  <vargaz@freemail.hu>
20563
20564         * mini-sparc.c (mono_arch_output_basic_block): Add CEE_CONV_U8/I8.
20565
20566         * *-amd64*.*: Ongoing AMD64 work.
20567
20568 2004-07-23 Zoltan Varga <vargaz@freemail.hu>
20569
20570         * inssel-long.brg: Implement CONV_I8/CONV_U8 in the backends.
20571
20572         * *-amd64*: Ongoing AMD64 work.
20573
20574         * mini-arch.h: Add AMD64 support.
20575
20576         * mini-sparc.c (mono_arch_is_inst_imm): New arch dependent function.
20577
20578         * mini.h: Add new arch dependent function mono_arch_is_inst_imm.
20579
20580         * mini-ops.h: Add new opcodes.
20581
20582         * Makefile.am: Add AMD64 support.
20583
20584         * inssel.brg inssel-long32.brg inssel-long.brg: Move mul/div and shift
20585         rules into the inssel-long*.brg files.
20586
20587         * *-amd64.*: Add beginnings of AMD64 backend.
20588
20589 2004-07-22  Ben Maurer  <bmaurer@ximian.com>
20590
20591         * mini.c (print_dfn): commenting out the code that prints
20592         the cil. With -O=deadce, this makes -v -v crash.
20593         
20594         * cpu-pentium.md: make checkthis have a length of 2
20595
20596 2004-04-21  Bernie Solomon  <bernard@ugsolutions.com>
20597
20598         * mini-sparc.h: fix implementations of __builtin
20599         functions for Sun compiler for V9.
20600
20601 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
20602
20603         * mini.c: use the new stelem.ref wrapper
20604         * exceptions.cs, arrays.cs: new stelem.ref tests
20605
20606 Wed Jul 14 19:08:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
20607
20608         * mini-ppc.c, exceptions-ppc.c: cleanups and fixes (the
20609         new XSP should work with these changes).
20610
20611 2004-07-14  Ben Maurer  <bmaurer@ximain.com>
20612         
20613         * inssel-{long32,x86,}.brg: trivial optimizations.
20614         
20615 Mon Jul 12 20:25:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
20616
20617         * mini.c: load value when emitting box operation in
20618         constrained calls.
20619
20620 2004-07-12  Ben Maurer  <bmaurer@ximian.com>
20621
20622         * mini-x86.c (OP_CHECK_THIS): cmp DWORD PTR [eax], eax
20623         is one byte shorter than cmp DWORD PTR [eax], 0.
20624
20625 Mon Jul 12 17:47:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
20626
20627         * inssel-ppc.brg: arguments on the stack are always
20628         relative to the stack pointer (spotted by Neale Ferguson).
20629
20630 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20631
20632         * exceptions-x86.c: delay appending the method name to the trace until
20633         after mono_jit_info_table_find is called, as this gets the real
20634         MonoMethod.
20635
20636 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
20637
20638         * aot.c: register roots
20639
20640 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
20641
20642         * aot.c : I could just use PLATFORM_WIN32 flag.
20643
20644 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
20645
20646         * aot.c : Reverting the previous fix. This time it broke linux build.
20647
20648 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
20649
20650         * aot.c : quick cygwin build fix. mkdir() with two args does not exist.
20651
20652 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
20653
20654         * mini.c (handle_stack_args): Remove some more debugging code.
20655         
20656         * mini.c (handle_stack_args): Remove debug output left in by mistake.
20657
20658         * driver.c mini.h aot.c: Allow additional options to be specified with
20659         --aot and pass them to mono_compile_assembly.
20660
20661         * aot.c: Add experimental code to AOT compile all loaded assemblies
20662         on demand and save the code into a cache in the filesystem.
20663
20664         * aot.c: Add support for more wrapper methods.
20665         
20666         * mini.c (handle_stack_args): Handle some corner cases. Fixes 
20667         58863.
20668
20669         * cpu-*.md: Remove removed opcodes.
20670
20671         * mini.h mini.c: Move JIT icall handling to icall.c. Replace usage of
20672         CEE_MONO_PROC<x> with CEE_MONO_ICALL. Move registration of marshalling
20673         related icalls to marshal.c.
20674
20675 2004-07-06  Zoltan Varga  <vargaz@freemail.hu>
20676
20677         * mini-ops.h: Add OP_SAVE_LMF and OP_RESTORE_LMF.
20678
20679         * Makefile.am (EXTRA_DIST): Add inssel-long[32].brg.
20680
20681         * inssel.brg: Fix warning. Add rules for SAVE_LMF and RESTORE_LMF.
20682
20683 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
20684         * liveness.c: If liveness is recomputated we need to reset the information
20685         for each variable. This way, if the liveness range has been narrowed
20686         by optimizations that happened after the last computation, we can return
20687         a smaller range.
20688         
20689         For example, if you have
20690         
20691         {
20692                 int i = 0;
20693                 
20694                 // Tons of code that does not affect i
20695                 
20696                 i = foo ();
20697                 ...
20698         }
20699         
20700         i = 0 is dead code and will be removed by SSA. However, when
20701         linear scan gets to the code, i will still appear to be live
20702         throughout the entire block. This prevents good register allocation.
20703
20704 2004-07-06  Martin Baulig  <martin@ximian.com>
20705
20706         * debug-mini.c (mono_debug_init_method): Allow
20707         MONO_WRAPPER_MANAGED_TO_NATIVE wrappers.
20708         (mono_debug_add_icall_wrapper): New method.
20709
20710         * mini.c (mono_icall_get_wrapper): Call mono_debug_add_icall_wrapper().
20711
20712 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
20713
20714         * mini.c (optimize_branches): Fix linking of bblocks in branch->branch
20715         optimization.
20716
20717 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
20718
20719         * aot.c (mono_aot_load_method): Fix loading of debug info.
20720
20721 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
20722
20723         * aot.c: Add logging support.
20724
20725 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
20726
20727         * mini.h: Add prototype for mono_print_method_from_ip.
20728
20729         * mini.c: 64 bit fixes. Use LCOMPARE for comparing longs.
20730
20731         * inssel.brg: 64 bit fixes.
20732
20733         * inssel.brg inssel-long32.brg: Move 32 bit arithmetic rules to 
20734         inssel-long32.brg.
20735
20736         * Makefile.am: Add SPARC64 support.
20737
20738 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
20739
20740         * aot.c: Fix alignment problems on 32 bit platforms.
20741
20742 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
20743
20744         * helpers.c (mono_disassemble_code): Pass -xarch=v9 to assembler on
20745         SPARC64.
20746
20747         * aot.c: Add SPARC64 support. Reorganize patch table to fix alignment
20748         problems.
20749
20750         * mini.h: Bump AOT file version. Some 64 bit fixes.
20751
20752 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
20753
20754         * inssel-sparc.brg: Add new rule to avoid register moves.
20755
20756         * inssel.brg: Add ldind_to_load_membase helper function.
20757
20758 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
20759
20760         * mini.c: OffsetToStringData intrinsic.
20761         
20762 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
20763
20764         * ssa.c: Handle OP_LCOMPARE the same as OP_COMPARE.
20765
20766         * objects.cs exceptions.cs basic.cs basic-long.cs basic-calls.cs: New
20767         regression tests.
20768
20769         * mini-ops.h cpu-sparc.md mini-sparc.h mini-sparc.c exceptions-sparc.c tramp-sparc.c inssel-long.brg: Add SPARC64 support.
20770 Mon Jun 28 18:05:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
20771
20772         * mini.c: reinstated mono_compile_get_interface_var()
20773         on x86, too, since the change breaks the Gtk# build there as well.
20774
20775 Fri Jun 25 17:36:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
20776
20777         * driver.c: remove loop from the default optimizations: it seems to
20778         interact badly with some of the other options (see bug #60613).
20779
20780 2004-06-25  Zoltan Varga  <vargaz@freemail.hu>
20781
20782         * mini.c mini-x86.h mini-x86.c: Applied patch from Guenter Feldmann 
20783         (fld@informatik.uni-bremen.de): Add Solaris x86 support.
20784
20785 Tue Jun 22 21:29:11 CEST 2004 Paolo Molaro <lupus@ximian.com>
20786
20787         * mini-ppc.c, cpu-g4.md: small updates to be able to compile
20788         vararg-using methods.
20789
20790 2004-06-21  Martin Baulig  <martin@ximian.com>
20791
20792         * mini/mini-exceptions.c
20793         (mono_handle_exception): Added `gpointer original_ip' argument.
20794         After calling mono_unhandled_exception(), call
20795         mono_debugger_unhandled_exception() and if that returns true,
20796         restore the context and return.
20797
20798 Mon Jun 21 19:26:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
20799
20800         * mini-ppc.c: prefer the use of relative branches so
20801         they won't need to be patched in aot code (patch from Patrick Beard).
20802
20803 Mon Jun 21 19:03:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
20804
20805         * aot.c: patch from Patrick Beard to make the output assembly
20806         more correct for the MacOSX assembler. Small tweak to
20807         generate sane images on Linux/PPC, too.
20808
20809 Fri Jun 18 18:24:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
20810
20811         * mini.c, mini.h, mini-ppc.c: handle varargs methods with a special
20812         case until bug #59509 is fixed (shows up in #60332).
20813
20814 Tue Jun 15 16:36:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
20815
20816         * mini.c: make sure the needed wrappers are compiled, too, with
20817         precomp.
20818
20819 Mon Jun 14 18:36:08 CEST 2004 Paolo Molaro <lupus@ximian.com>
20820
20821         * driver.c: remove NPTL reference in --version output.
20822
20823 Sun Jun 13 17:25:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
20824
20825         * aot.c: patch from Patrick Beard (pcbeard@mac.com) to
20826         generate valid assembly for the Mach-O assembler.
20827
20828 Sun Jun 13 15:59:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
20829
20830         * driver.c: don't include abcrem in the all optimization specifier
20831         since it slows down jit compilation too much for now.
20832
20833 2004-06-12 Ben Maurer  <bmaurer@users.sourceforge.net>
20834
20835         * mini.c: use BIGMUL only if both operands have the same signage.
20836         * iltests.il: Test for bug 60056. (errors related to signage in
20837         BIGMUL).
20838
20839         r=lupus.
20840
20841 Thu Jun 10 16:06:42 CEST 2004 Paolo Molaro <lupus@ximian.com>
20842
20843         * mini.c, aot.c: memory leak fixes.
20844
20845 Tue Jun 8 16:37:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
20846
20847         * inssel-long32.brg: implemented a few missing ulong cast opcodes.
20848
20849 Tue Jun 8 15:36:30 CEST 2004 Paolo Molaro <lupus@ximian.com>
20850
20851         * Makefile.am: remove the -static hack completely, it links in
20852         statically glib as well.
20853
20854 Sat Jun 5 16:32:33 CEST 2004 Paolo Molaro <lupus@ximian.com>
20855
20856         * iltests.il, mini.c: fixed bug#59580 in branch optimization.
20857         * exceptions.cs: make it compile with new mcs/csc.
20858
20859 2004-06-03 Massimiliano Mantione <massi@ximian.com>
20860         * cpu-pentium.md basic-float.cs Fixed bug on fpu spills (see bug 54467),
20861         and added relevant test case.
20862
20863 Mon May 31 19:41:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
20864
20865         * mini.c revert Zoltan's fix to bug#58863 on ppc, since it causes
20866         regressions in gtk-sharp.
20867
20868 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
20869
20870         * exceptions.cs: New regression tests.
20871
20872         * jit-icalls.c (mono_llmult_ovf): Fix some boundary conditions.
20873
20874 Sat May 29 10:45:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
20875
20876         * mini.c: emit castclass/isinst in their own trees (bug #54209/59057).
20877
20878 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
20879
20880         * mini-sparc.h (MONO_ARCH_NEED_DIV_CHECK): Define this.
20881
20882         * cpu-sparc.md mini-sparc.c: Add overflow detection to div opcodes.
20883
20884 2004-05-28      Patrik Torstensson <totte@hiddenpeaks.com>
20885
20886         * mini.c (mono_jit_runtime_invoke): Init class in this
20887         method instead of trusting mono_jit_compile_method to
20888         do the work (because wrappers can be in object class)
20889
20890 2004-05-27  Zoltan Varga  <vargaz@freemail.hu>
20891
20892         * mini-sparc.c (mono_arch_output_basic_block): Fix sub.imm.
20893
20894         * basic-long.cs: New regression test.
20895
20896 Thu May 27 15:50:52 CEST 2004 Paolo Molaro <lupus@ximian.com>
20897
20898         * cpu-g4.md, mini-ppc.c: fixes to long add/sub ovf opcodes
20899         and div/rem checks.
20900
20901 Thu May 27 12:36:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
20902
20903         * Makefile.am: fix miguel's change to build mono statically against
20904         libmono (track build dependencies).
20905
20906 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
20907
20908         * cfold.c: Some glib versions do not have G_MININT32.
20909
20910 2004-05-26  Massimiliano Mantione  <massi@ximian.com>
20911
20912         * mini-x86.c cpu-pentium.md Makefile.am basic-math.cs: Fixed problem
20913         with precision of tan, atan, sin and cos, and implemented related
20914         regressions tests (fixes bug 54467, but one new problem appeared and
20915         is not fixed yet).
20916
20917 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
20918
20919         * cfold.c (FOLD_BINOPZ): Avoid division by zero.
20920
20921         * exceptions.cs: Add test for constant folding && division by zero.
20922
20923         * driver.c mini.h mini.c mini-x86.c: Revert most of the previous patch
20924         since driver.c is in libmono too, so the optimization was useless.
20925
20926         * driver.c mini.h mini.c mini-x86.c: Moved the mono_lmf_addr TLS 
20927         variable to driver.c so the compiler can emit more efficient code to
20928         access them.
20929
20930 2004-05-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20931
20932         * Makefile.am: don't distribute generated inssel.[ch] files.
20933
20934 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
20935
20936         * mini.c (mono_jit_compile_method_with_opt): Really emit icall wrappers
20937         into the default appdomain. Fixes #58707.
20938
20939         * jit-icalls.c: Remove the broken approximation for truncl, doing
20940         no conversion is better.
20941
20942         * mini.c (handle_stack_args): Avoid reusing variables for stack slots.
20943         Fixes #58863.
20944
20945 Tue May 25 14:33:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
20946
20947         * mini-ops.h, mini-ppc.c, cpu-g4.md, inssel-ppc.brg: eliminate the use
20948         of the mcrxr instruction which is not available on some processors
20949         even if it's documented to be. Implement add and sub overflow correctly
20950         (still not complete for long unsigned). Speed up icalls a bit.
20951
20952 2004-05-25 13:01 CET Patrik Torstenson <totte@hiddenpeaks.com>
20953
20954         * mini.c (mono_jit_compile_method_with_opt): Make sure that
20955         we run .cctor in the current domain instead of target_domain.
20956         
20957         Fixes bug #58558, .cctor not being called in -O=shared.
20958
20959 Tue May 25 12:46:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
20960
20961         * mini-ppc.h, jit-icalls.c: added explicit checks for divide by zero.
20962
20963 2004-05-24 Ben Maurer  <bmaurer@users.sourceforge.net>
20964
20965         * mini-x86.c (EMIT_COND_BRANCH): If an OP_LABEL has an offset
20966         which can be done with an imm8, do it that way.
20967         (mono_arch_output_basic_block): ditto for a jmp
20968         (mono_arch_emit_prolog): Computate maximum offset of a label.
20969
20970 2004-05-24 18:18 CET Patrik Torstenson <totte@hiddenpeaks.com>
20971
20972         * mini-x86.c (mono_arch_local_regalloc): the reg allocator
20973         now tries to allocate prefered physical reg's for virtual
20974         regs. This reduces the number of emited spills/loads with
20975         20-30% on our core assemblies.
20976
20977 Mon May 24 18:21:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
20978
20979         * jit-icalls.c: truncl() is not needed and trunc() is
20980         the correct thing to do anyway (bug #58287).
20981
20982 2004-05-24  Zoltan Varga  <vargaz@freemail.hu>
20983
20984         * mini-sparc.c (mono_arch_flush_icache): Call sync_instruction_memory
20985         if available.
20986
20987 Mon May 24 12:49:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
20988
20989         * driver.c: enable loop optimizations by default.
20990
20991 Mon May 24 11:13:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
20992
20993         * mini-x86.c: fix calc of max loop size when aligning loops start.
20994
20995 2004-05-23  Zoltan Varga  <vargaz@freemail.hu>
20996
20997         * ssa.c (mono_ssa_cprop): Allocate carray dynamically instead of on
20998         the stack.
20999
21000 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
21001
21002         * mini-sparc.c (mono_arch_output_basic_block): ADD_IMM and SUB_IMM
21003         should set carry.
21004
21005         * basic-long.cs: Add tests for add/subtract of immediates with carry.
21006
21007         * mini.c exceptions-x86.c: Remove MONO_USE_EXC_TABLES stuff.
21008         
21009         * mini.c (inline_method): Allways inline some wrappers even if the cost
21010         is too large. Fixes #58785.
21011
21012         * mini.c: Add support for MARSHAL_CONV_FTN_DEL.
21013         
21014 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
21015
21016         * mini-sparc.c exceptions-sparc.c: Applied patch from Mark Crichton
21017         (crichton@gimp.org). Beginning of support for sparc/linux.
21018
21019         * mini-sparc.c: Optimize retrieval of LMF address.
21020
21021 Fri May 21 08:00:12 EDT 2004 Paolo Molaro <lupus@ximian.com>
21022
21023         * exceptions-ppc.c:  handle alloca in methods with clauses.
21024
21025 Fri May 21 07:35:30 EDT 2004 Paolo Molaro <lupus@ximian.com>
21026
21027         * mini-ppc.c: cleanups, off-by-one fixes, avoid recursive thunks.
21028
21029 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
21030
21031         * mini.c: Delegate most of the abort signal work to 
21032           mono_thread_request_interruption, which also handles Stop and Suspend
21033           states.
21034
21035 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
21036
21037         * mini.c mini.h: Allow inlining of icall wrappers if the backend 
21038         supports the save/restore lmf opcodes.
21039
21040 2004-05-19  Zoltan Varga  <vargaz@freemail.hu>
21041
21042         * mini-x86.c (mono_arch_setup_jit_tls_data): Handle code generated
21043         by gcc-3.4 as well.
21044
21045         * mini-x86.h mini-x86.c tramp-x86.c: Optimize lmf restoring code.
21046
21047 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
21048
21049         * mini.h mini.c (mini_method_compile): Only run abc removal pass on 
21050         methods which contain array accesses.
21051
21052         * mini.c (CEE_LDTOKEN): Handle this instruction correctly on bb
21053         boundaries. Fixes #58537.
21054
21055         * iltests.il: Add regression test for #58537.
21056
21057 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
21058
21059         * mini-x86.c (mono_arch_local_regalloc): Last part of
21060         fix for bug #58633 (releasing register to early).
21061
21062 2004-05-18  Miguel de Icaza  <miguel@ximian.com>
21063
21064         * basic-long.cs: Add new regression test.
21065
21066 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
21067
21068         * mini-x86.c (mono_arch_local_regalloc): Avoid releasing a
21069         register too early on the chain.
21070
21071 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
21072
21073         * mini.c (create_helper_signature): Use a helper function to reduce
21074         the code which needs to be written. Also set the calling convention of
21075         icalls on windows. Fixes #57840.
21076
21077 Tue May 18 11:05:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
21078
21079         * mini.h, exceptions-x86.c, exceptions-sparc.c, exceptions-s390.c,
21080         exceptions-ppc.c: added helper function to get the instruction address
21081         from a signal handler context.
21082
21083 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
21084
21085         * helpers.c: use g_get_tmp_dir. Invokes happyness 
21086         from gonzalo.
21087
21088 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
21089
21090         * helpers.c: Add new env variable to pass args to objdump.
21091         Specifically for those of us who love -Mintel. r=miguel, gonzalo.
21092
21093 2004-05-17  Radek Doulik  <rodo@ximian.com>
21094
21095         * Makefile.am (common_sources): added abcremoval.h so it get
21096         disted and daily mono packages on go-mono.com will build again
21097
21098 2004-05-17  Massimiliano Mantione  <massi@ximian.com>
21099
21100         * abcremoval.c: Fixed coding style, added copyright header.
21101
21102         * abcremoval.h: Fixed style and moved prototype to mini.h, added copyright header.
21103
21104         * mini.h: Added prototype for abc removal main function.
21105
21106         * build_relations_propagation_table.pl: Added copyright header.
21107
21108 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
21109
21110         * basic-long.cs: reg test for complex ceq_long bug.
21111
21112 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
21113
21114         * mini-x86.c (mono_arch_local_regalloc): Correctly free 
21115         reg in long and clob case (bug #58343). Fixed/added comments.
21116
21117 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
21118
21119         * mini.c (mono_jit_runtime_invoke): Follow new convention
21120         of calling the invoke method with an function pointer.
21121
21122 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
21123
21124         * ChangeLog: Fix author of memory leak patch.
21125
21126 Fri May 14 15:13:06 CEST 2004 Paolo Molaro <lupus@ximian.com>
21127
21128         * Makefile.am: fix make dist as well...
21129
21130
21131 2004-05-14  Massimiliano Mantione  <massi@ximian.com>
21132
21133         * cfold.c: Made so that conversions from pointer to int4 are no-ops
21134         on archs where pointers are 4 bytes long.
21135
21136         * Makefile.am: Added abcremoval.c source file.
21137
21138         * abcremoval.c: Added abcremoval.c.
21139
21140         * abcremoval.h: Added abcremoval.h.
21141
21142         * build_relations_propagation_table.pl: Added build_relations_propagation_table.pl.
21143
21144         * inssel.brg: Enabled bounds check removal.
21145
21146         * mini.c: Added support for abcrem optimization.
21147
21148         * mini.h: Added abcrem optimization label.
21149
21150         * driver.c: Added support for abcrem optimization.
21151
21152         * propagated_relations_table.def: Added propagated_relations_table.def.
21153
21154 Fri May 14 14:30:13 CEST 2004 Paolo Molaro <lupus@ximian.com>
21155
21156         * mini.c, cfold.c: fix style.
21157
21158 Fri May 14 14:28:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
21159
21160         * mini.c: handle issue with the low-level implementation of
21161         some long opcodes (bug #54209).
21162
21163 2004-05-13 Ben Maurer  <bmaurer@users.sourceforge.net>
21164
21165         * basic.cs: test for my new cmov stuff.
21166
21167 2004-05-13      Patrik Torstensson
21168
21169         * mini-x86.c: added OP_X86_COMPARE_MEMBASE_IMM peephole
21170         opt and added peephole documentation.
21171
21172 Thu May 13 11:41:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
21173
21174         * tramp-ppc.c: rewrote the generic trampoline code.
21175
21176 2004-05-11      Patrik Torstensson
21177
21178         * mini-x86.c: optimize long shl/shr asm code (one less branch)
21179
21180 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
21181
21182         * basic.cs basic-long.cs objects.cs: Make these compile under MS csc.
21183
21184         * mini.h mini.c dominators.c: Applied patch from Derek Woo
21185         (derek@eecg.toronto.edu): Fix memory leaks in loop optimizations.
21186
21187         * mini.c: Add new icalls for AsAny marshalling.
21188
21189 Tue May 11 16:00:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
21190
21191         * tramp-ppc.c, mini-ppc.c: more cleanups.
21192
21193 2004-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21194
21195         * mini.c: no warnings.
21196
21197 Tue May 11 13:59:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
21198
21199         * mini-ppc.c, mini.c: use mono_resolve_patch_target ().
21200
21201 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
21202
21203         * mini.c: In the thread abort signal handler, if the thread is in the
21204         process of being stoped, don't throw the Abort exception, just stop the
21205         thread.
21206
21207 Tue May 11 12:15:24 CEST 2004 Paolo Molaro <lupus@ximian.com>
21208
21209         * tramp-ppc.c: removed old code.
21210
21211 Tue May 11 12:02:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
21212
21213         * mini.h, mini-ppc.c, cfold.c: export mono_is_power_of_two().
21214         do some simple speed optimizations on ppc.
21215
21216 Mon May 10 17:21:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
21217
21218         * mini-ppc.c, cpu-g4.md: fixes to handle large stack frames
21219         and large offsets in load/store.
21220
21221 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
21222
21223         * mini-x86.c (mono_arch_local_regalloc): Remove the previous fix, since
21224         it causes regressions.
21225
21226 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
21227
21228         * mini-sparc.c: Fix vararg support + add beginnings of sigaltstack
21229         support.
21230
21231 Fri May 7 13:25:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
21232
21233         * jit-icalls.c: remove warnings.
21234         * inssel-x86.brg, inssel.brg, mini-x86.c, cfold.c: some simple
21235         speedups for unsafe code.
21236
21237 2004-05-07 Ben Maurer  <bmaurer@users.sourceforge.net>
21238
21239         * inssel.brg: Optimize Stind.[ui][12]. r=zoltan.
21240
21241 2004-05-06  Zoltan Varga  <vargaz@freemail.hu>
21242
21243         * basic-calls.cs: Add new regression test.
21244
21245         * mini.c (mono_runtime_install_handlers): Use SA_ONSTACK since it is
21246         more portable.
21247
21248         * mini.c (mono_method_to_ir): Handle opcode emulation for *_OVF opcodes.
21249
21250         * mini-x86.c (mono_arch_local_regalloc): Free new_dest register when it
21251         is no longer used.
21252
21253 2004-05-06      Patrik Torstensson
21254
21255         * mini-x86.[c|h], inssel-x86.brg, cpu-pentium.md, mini.c: enabled
21256         long reg allocation in any reg (not only eax:edx) and implemented 
21257         long shl/shr ops in asm instead of helpers.
21258
21259 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
21260
21261         * mini-sparc.h: Fix warnings.
21262
21263         * exceptions-sparc.c (mono_arch_find_jit_info): Pop unused lfm off the
21264         stack.
21265
21266         * mini-exceptions.c (mono_handle_exception): Call the filter in a
21267         separate statement for clarity.
21268
21269         * mini-sparc.c: Update status.
21270
21271 2004-05-04  Zoltan Varga  <vargaz@freemail.hu>
21272
21273         * mini-exceptions.c (ves_icall_get_frame_info): Flush register windows
21274         here.
21275
21276 Mon May 3 22:58:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
21277
21278         * inssel-ppc.brg: another small pre-release workaround:
21279         we don't do overflow detection for long_sub_un.
21280
21281 Sun May 2 20:12:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
21282
21283         * mini.c, mini-ops, inssel-long32.brg: speedup ulong >> 32
21284         (also works around a weird ppc bug: 57957).
21285
21286 Sat May 1 16:56:10 EDT 2004 Paolo Molaro <lupus@ximian.com>
21287
21288         * tramp-ppc.c: trampoline fixes.
21289
21290 Fri Apr 30 15:54:26 EDT 2004    Paolo Molaro <lupus@ximian.com>
21291
21292         * mini-ppc.c: fixed typos.
21293
21294 Thu Apr 29 20:15:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
21295
21296         * mini-ppc.c, exceptions-ppc.c: more code saves registers
21297         at the top of the stack. Fixed typos. Use a frame registers
21298         for all the methods with exception clauses.
21299
21300 Thu Apr 29 18:52:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
21301
21302         * exceptions-ppc.c: restore fp registers.
21303
21304 Thu Apr 29 18:26:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
21305
21306         * mini-ppc.c, exceptions-ppc.c: save the registers in reverse
21307         order from the stack top (moved the stack room to save the
21308         return value for trace after the param area). Fixed corruption
21309         in restoring registers on unwind.
21310
21311 Thu Apr 29 16:47:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
21312
21313         * mini-ppc.c, cpu-g4.md: fixed unisgned -> double conversion.
21314
21315 Thu Apr 29 13:50:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
21316
21317         * exceptions-ppc.c, mini-ppc.h, mini-ppc.c: fixed localloc
21318         and prolog/epilog for methods that use it. Allow
21319         enough param area room for varargs methods. Fix miguel's
21320         breakage in exception handling.
21321
21322 Thu Apr 29 12:06:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
21323
21324         * Makefile.am: run genmdesc only on current arch.
21325
21326 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21327
21328         * exceptions-x86.c:
21329         * mini-x86.h: fix the build on windows.
21330
21331 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
21332
21333         * 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.
21334
21335         * exceptions-sparc.c exceptions-ppc.c exceptions-s390.c mini-ppc.h mini-s390.h mini-sparc.h: Fix up ports after changes.
21336
21337         * mini-exceptions.c: New file.
21338         
21339         * mini.c mini-exceptions.c mini-x86.h exceptions-x86.c Makefile.am:
21340         Move some parts of the x86 exception handling code to an 
21341         arch-independent file so it can be shared with other ports.
21342
21343 Tue Apr 27 12:15:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
21344
21345         * trace.c, cpu-g4.md, inssel-ppc.brg, mini-ppc.c: some fixes for FP code.
21346
21347 2004-04-26  David Waite  <mass@akuma.org>
21348
21349         * driver.c: remove comma from end of enumeration declaration
21350
21351 2004-04-26  Jackson Harper  <jackson@ximian.com>
21352
21353         * driver.c: parse config file before loading first assembly. This
21354         allows the user gac to be enabled/disabled. 
21355         
21356 2004-04-23  Miguel de Icaza  <miguel@ximian.com>
21357
21358         * mini-ppc.c (ppc_patch): Replaced the branch code patching with a
21359         simpler mechanism: we do not care what is encoded initially
21360         (branch absolute or relative), we care about the code and its
21361         target.  I kept the old code for reference for now.
21362
21363         The new code tries first to determine if the jump is anywhere in
21364         the -/+32 absolute meg range, if it succeeds, it encodes using the
21365         absolute branch;  If not, it tried to find something in the
21366         relative range, if not, it uses the handle_thunk code. 
21367
21368 Fri Apr 23 14:20:40 EDT 2004 Paolo Molaro <lupus@ximian.com>
21369
21370         * exceptions-ppc.c: use the correct ip register on macosx.
21371
21372 Thu Apr 22 13:23:16 EDT 2004 Paolo Molaro <lupus@ximian.com>
21373
21374         * exceptions.c, mini.c, mini-ppc.h: adapt code to macosx.
21375
21376 Thu Apr 22 18:08:37 CEST 2004 Paolo Molaro <lupus@ximian.com>
21377
21378         * mini-ppc.c, cpu-g4.md: made the branch macros more flexible.
21379         Raise exception on integer divide by zero by hand since the hw
21380         doesn't support it. Handle NaNs in FP compares.
21381
21382 Thu Apr 22 16:10:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
21383
21384         * exceptions-ppc.c, mini-ppc.h, mini.c: simplified some
21385         code reducing duplication between the platforms and enabled
21386         signal exception handling (on linux for now).
21387
21388 Wed Apr 21 12:27:48 EDT 2004 Paolo Molaro <lupus@ximian.com>
21389
21390         * exceptions-ppc.c: more macosx support.
21391
21392 Wed Apr 21 16:38:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
21393
21394         * mini-ppc.h, mini-ppc.c, cpu-g4.md: enable bigmul optimization.
21395
21396 Wed Apr 21 16:20:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
21397
21398         * mini.h, mini-ppc.c, cpu-g4.md: support for implicit exceptions.
21399
21400 2004-04-19 Ben Maurer  <bmaurer@users.sourceforge.net>
21401
21402         * iltests.il: more tests.
21403
21404 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
21405
21406         * mini-*.c (mono_arch_get_allocatable_int_vars): Skip written-only
21407         vars as well.
21408
21409 Mon Apr 19 19:39:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
21410
21411         * mini-ppc.c: some fixes to bootstrap mcs/corlib/etc.
21412
21413 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
21414
21415         * liveness.c: Mark variables as volatile in all basic blocks reachable
21416         from exception clauses.
21417
21418 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
21419
21420         * exceptions.cs (test_0_rethow_stacktrace): Make this work with
21421         inlining.
21422
21423 2004-04-18 Ben Maurer  <bmaurer@users.sourceforge.net>
21424
21425         * iltests.il, basic.cs: more tests for regalloc.
21426
21427 2004-04-17 Ben Maurer  <bmaurer@users.sourceforge.net>
21428
21429         * iltests.il: Some tests for register allocation modifications
21430         I have locally.
21431
21432 2004-04-16  Zoltan Varga  <vargaz@freemail.hu>
21433
21434         * exceptions.cs: Add regression test for bug #56782.
21435
21436         * exceptions-*.c (mono_arch_handle_exception): Do not overwrite the
21437         original stack trace if an exception is rethrown. Fixes #56782. Oh,
21438         the beauty of fixing the same thing in 5 different files...
21439
21440 2004-04-15  Zoltan Varga  <vargaz@freemail.hu>
21441
21442         * mini.c (mono_method_to_ir): Do not compute coverage for inlined
21443         methods.
21444
21445 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
21446
21447         * mini.c: Add support for STRWLPARRAY marshalling convention.
21448
21449 Wed Apr 14 18:15:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
21450
21451         * exceptions-ppc.c: missing fixes in mono_jit_walk_stack (need
21452         to init the context to setup the regs pointer).
21453
21454 Wed Apr 14 17:59:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
21455
21456         * exceptions-ppc.c: more exceptions work.
21457
21458 Wed Apr 14 17:46:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
21459
21460         * mini.c: avoid reusing the same MonoInst on multiple trees: this is
21461         not allowed.
21462
21463 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
21464
21465         * inssel-x86.brg (reg): Add new rules for add, sub and mul that
21466         can use the memory directly.
21467
21468         * cpu-pentium.md: Update documentation from a post from Zoltan. 
21469
21470         add x86_add_membase, x86_sub_membase, x86_mul_membase
21471
21472 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
21473
21474         * mini-ppc.c: Remove unused definitions FLOAT_REGS and
21475         GENERAL_REGS they were also hardcoded for all PPC ports.
21476
21477         (add_general): Use PPC_NUM_REG_ARGS instead of GENERAL_REGS.
21478
21479         Remove hard-coded limit for floating point registers, use
21480         PPC_LAST_FPARG_REG instead in MONO_TYPE_R4 and MONO_TYPE_R8.
21481
21482         Notice that in MacOS X calling conventions you can fit a lot more
21483         floating point values in registers, so I should update the PInvoke
21484         test to excercise the passing of floating point values on the
21485         stack (currently broken).
21486         
21487 2004-04-06  Miguel de Icaza  <miguel@ximian.com>
21488
21489         * tramp-ppc.c (create_trampoline_code): Added
21490         JUMP_TRAMPOLINE_SIZE. 
21491         (ppc_magic_trampoline): Follow the pattern from
21492         x86_magic_trampoline: if code is set to zero, return. 
21493         (create_trampoline_code): Always pass MonoMethod to the jump
21494         trampoline, before it was passing a null.
21495         (mono_arch_create_jump_trampoline): Implement the jump stub, could
21496         share the code with mono_arch_create_jit_trampoline. 
21497
21498         * mini-ppc.c (mono_arch_output_basic_block): CEE_JMP opcode
21499         implemented.
21500         (mono_arch_patch_code): MONO_PATCH_INFO_METHOD_JUMP patch type
21501         implemented.  
21502
21503         * cpu-g4.md: Added length for jmp instruction, the worst case
21504         scenario is 92 bytes (4 mandatory bytes, potential 19 registers
21505         for save_lmf).
21506
21507 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
21508
21509         * aot.c (mono_compile_assembly): Add back unlink removed by mistake.
21510
21511 2004-04-07  Zoltan Varga  <vargaz@freemail.hu>
21512
21513         * mini.c: Only set bblock->real_offset when adding a new bblock, and
21514         before each IL instruction.
21515
21516         * mini.c (CEE_BOX): Fix warnings.
21517
21518 2004-04-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21519
21520         * mini.c: removed a few unused vars and extra whitespace.
21521
21522 2004-04-05 Ben Maurer  <bmaurer@users.sourceforge.net>
21523
21524         * inssel.brg (MONO_EMIT_BOUNDS_CHECK): a new macro to emit bounds
21525         checks.
21526         (MONO_EMIT_BOUNDS_CHECK_IMM): the above, but when you know the
21527         index.
21528         (OP_GETCHR): use the above
21529         (CEE_LDELEMA): use the above.
21530
21531         * inseel-x86.brg (MONO_EMIT_BOUNDS_CHECK): a faster and smaller
21532         version of the generic impl.
21533         (MONO_EMIT_BOUNDS_CHECK_IMM): the same
21534         (CEE_LDELEMA): use the above.
21535
21536 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
21537
21538         * inssel-long32.brg (CEE_CONV_OVF_I8): Sign extend the i4 value to i8.
21539         Fixes #56317.
21540
21541         * iltests.il: Added new regression test for #56317.
21542
21543 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
21544
21545         * mini-x86.c (mono_arch_setup_jit_tls_data): Use pthread_attr_get_np
21546         under NetBSD. Fixes #56450.
21547
21548         * liveness.c (update_gen_kill_set): Fix previous patch.
21549
21550 2004-04-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21551
21552         * mini-x86.h: SA_STACK defined as SA_ONSTACK. Fixed build under NetBSD.
21553
21554 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
21555
21556         * mini.c (mono_method_to_ir): Avoid handle_loaded_temps in
21557         ldsfld and ldsflda.
21558
21559         * inssel-sparc.brg: Add more optimizations.
21560
21561         * mini-sparc.c: Replace multiply/divide with shifts if possible.
21562
21563 2004-04-01  Martin Baulig  <martin@ximian.com>
21564
21565         * mini.c (handle_box): New static function; moved the
21566         implementation of CEE_BOX here.
21567         (mono_method_to_ir): Added `constrained_call' variable.
21568         (mono_method_to_ir:CEE_CONSTRAINED_): Set it.
21569         (mono_method_to_ir:CEE_CALL): If `constrained_call' is set, use
21570         mono_method_get_constrained() to get the method.
21571
21572 2004-04-01  Martin Baulig  <martin@ximian.com>
21573
21574         * mini.c (TYPE_PARAM_TO_TYPE, TYPE_PARAM_TO_CLASS): Removed.
21575         (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): Removed.
21576         (mono_method_to_ir): We don't need these macros anymore since
21577         mono_class_get_full() already takes care of it. 
21578
21579 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21580
21581         * aot.c: set aot_verbose to 0, fixed format string that caused sigsegv,
21582         use @function (as doesn't accept #function here) and check the return
21583         value of system and stop if fails.
21584
21585 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21586
21587         * mini.c: set the timeout to 2s when calling mono_domain_finalize.
21588
21589 2004-03-31  Zoltan Varga  <vargaz@freemail.hu>
21590
21591         * mini-ppc.c (mono_arch_patch_code): Fix ppc build.
21592
21593         * inssel-sparc.brg mini-sparc.c aot.c: Implement AOT support.
21594
21595         * inssel-long32.brg (OP_LNEG): Use ADC instead of ADD here. Fixes
21596         #56223.
21597
21598         * basic-long.cs: Add test for negation of Int64.MinValue.
21599
21600 2004-03-30  Zoltan Varga  <vargaz@freemail.hu>
21601
21602         * mini-sparc.c: Update status.
21603
21604         * mini-sparc.c tramp-sparc.c: Save lmf in trampolines.
21605
21606         * exceptions-sparc.c: Fix return value in filters.
21607
21608         * inssel-sparc.brg: Fix register allocation in some rules.
21609
21610 2004-03-28  Martin Baulig  <martin@ximian.com>
21611
21612         * mini.c (mmono_method_to_ir): In CEE_STELEM, do a handle_stobj()
21613         if neccessary.  
21614
21615 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
21616
21617         * mini-x86.c (mono_arch_patch_code): Fix warnings.
21618         
21619         * mini-x86.c (mono_arch_output_basic_block): Fix CEE_MUL_OVF_UN if 
21620         dreg is not EAX. Thanks to Willibard Krenn for spotting this. Also
21621         remove unused conv_u4 opcode.
21622
21623         * mini-x86.c: Remove valgrind workaround since it slows down things
21624         even when mono is not run under valgrind.
21625
21626 2004-03-26  Zoltan Varga  <vargaz@freemail.hu>
21627
21628         * mini-sparc.c: Update status.
21629
21630         * inssel-sparc.brg: Add some optimizations.
21631
21632         * inssel-sparc.brg mini-sparc.c: Rework branch instructions to allow
21633         future delay slot filling. Add support for varargs, tail calls and JMP.
21634
21635         * inssel.brg mini-ops.h mini.c: Use OP_REFANYTYPE instead of 
21636         CEE_REFANYTYPE, since CEE_REFANYTYPE needs a prefix to be unique.
21637
21638         * inssel.brg: Fix register allocation in OP_ARGLIST.
21639
21640         * inssel.brg: Fix warnings.
21641
21642 2004-03-25  Martin Baulig  <martin@ximian.com>
21643
21644         * mini.c (inflate_generic_field): Removed.
21645         (mini_get_method): Removed, use mono_get_method_full(),
21646         (mini_get_class): Removed, use mono_class_get_full().
21647         (mono_method_to_ir): Pass our generic context to
21648         mono_field_from_token().        
21649
21650 2004-03-25  Martin Baulig  <martin@ximian.com>
21651
21652         * mini.c (mini_get_class): Take a `MonoGenericContext *' instead
21653         of a `MonoMethod *'.
21654         (mini_get_method): Take a `MonoGenericContext *' instead
21655         of a `MonoMethod *'.
21656         (TYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_TYPE): mono_method_to_ir() has
21657         a new local variable called `generic_context' which holds the
21658         current `MonoGenericContext *'; use it to lookup things.
21659
21660 2004-03-24  Martin Baulig  <martin@ximian.com>
21661
21662         * mini.c (mini_get_class): New static method; if we're inside a
21663         generic instance, inflate the class if neccessary.
21664         (mono_method_to_ir): Use mini_get_class() instead of mono_class_get().
21665
21666 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
21667
21668         * iltests.il: New regression test for #55976.
21669
21670         * mini.c (mono_method_to_ir): Empty the stack in endfinally. Fixes
21671         #55976.
21672
21673 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
21674
21675         * exceptions-sparc.c (mono_sparc_handle_exception): Remove debugging
21676         output.
21677
21678 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
21679
21680         * liveness.c: Consider SSA stores as well as loads when making vars
21681         volatile.
21682
21683         * exceptions.cs: New regression tests for register allocation.
21684         
21685 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
21686
21687         * mini-ppc.c, tramp-ppc.c: Added lock for accessing the domain code manager.
21688         * mini.c: Removed domain lock from mono_jit_compile_method_with_opt. Use
21689           domain lock only to protect puntual access to data structures.
21690           Added access lock for sighash, jit_icall_hash_name, 
21691           jit_icall_hash_addr and domain->code_mp.
21692
21693 2004-03-20  Zoltan Varga  <vargaz@freemail.hu>
21694
21695         * driver.c: Print SIGSEGV handling method.
21696
21697         * mini-x86.c (mono_arch_free_jit_tls_data): Add missing ifdef.
21698
21699         * mini.c (setup_jit_tls_data): Handle case when this is called
21700         multiple times for a thread.
21701
21702         * mini-x86.c cpu-pentium.md: Fix floating point branch opcodes so fbxx 
21703         is different from fbxx_un. Fixes #54303. Also use constants instead of
21704         magic numbers in a lot of places.
21705
21706 2004-03-19  Zoltan Varga  <vargaz@freemail.hu>
21707
21708         * exceptions.cs: Fix cctor test when --regression is used.
21709
21710 Thu Mar 18 19:57:56 CET 2004 Paolo Molaro <lupus@ximian.com>
21711
21712         * mini-ppc.c, exceptions-ppc.c: basic exceptions support 
21713         for Linux/ppc.
21714
21715 Thu Mar 18 19:56:19 CET 2004 Paolo Molaro <lupus@ximian.com>
21716
21717         * inssel-ppc.brg: fixed register assignments for some rules.
21718
21719 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
21720
21721         * exceptions.cs: Add test for exceptions in static constructors.
21722
21723         * mini.c (mono_jit_compile_method_with_out): Move the calling of
21724         static constructors outside the domain lock. Fixes #55720.
21725
21726 2004-03-17  Martin Baulig  <martin@ximian.com>
21727
21728         * mini.c (get_generic_field_inst): Removed, this'll never happen.
21729         (inflate_generic_field): Take the `MonoMethod *' instead of the
21730         `MonoClass *' and added support for generic method.
21731         (mono_method_to_ir): In CEE_LDSFLD and CEE_STSFLD, assert we never
21732         have a `field->parent->gen_params', only inflate the field if it's
21733         an open constructed type.
21734
21735 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
21736
21737         * exceptions-x86.c (mono_arch_handle_exception): Allocate a new
21738         exception object instead of the preconstructed ones.
21739
21740 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21741
21742         * mini.c: reverted changed to sigsegv_signal_handler commited
21743         accidentally in the previous patch.
21744
21745 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21746
21747         * mini.c:
21748         (mono_method_to_ir): CEE_CALLVIRT, abort if no method. It hanged when
21749         running --aot with an old assembly.
21750
21751 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
21752
21753         * mini-sparc.c (mono_arch_instrument_epilog): Fix handling of floating
21754         point values.
21755
21756         * mini-sparc.c: Add support for v9 branches with prediction.
21757
21758 2004-03-15  Bernie Solomon  <bernard@ugsolutions.com>
21759
21760         * mini.c (mini_init): #warning is GNUC only
21761
21762         * mini-sparc.h: implement __builtin_frame_address
21763         and __builtin_return_address for Sun C compiler
21764
21765 2004-03-15  Zoltan Varga  <vargaz@freemail.hu>
21766
21767         * exceptions-sparc.c (mono_arch_has_unwind_info): Add missing function.
21768
21769 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
21770
21771         * basic-calls.cs: Add test for unaligned byref long argument passing.
21772
21773         * mini-ops.h: Add sparcv9 compare and branch instructions.
21774
21775         * inssel-sparc.brg mini-sparc.h mini-sparc.c cpu-sparc.md: Use some
21776         v9 instructions if we have a v9 cpu.
21777
21778         * mini-sparc.c (mono_arch_get_global_int_regs): Use unused input
21779         registers for global allocation.
21780
21781         * exceptions-sparc.c: Fixes.
21782         
21783 2004-03-11  Zoltan Varga  <vargaz@freemail.hu>
21784
21785         * liveness.c (mono_analyze_liveness): Optimized version.
21786
21787         * inssel-sparc.brg cpu-sparc.md: Ongoing sparc work.
21788
21789         * mini-sparc.h mini-sparc.c tramp-sparc.c exceptions-sparc.c: Ongoing
21790         sparc work.
21791
21792         * basic-float.cs basic-calls.cs: New regression tests.
21793
21794 2004-03-10  Zoltan Varga  <vargaz@freemail.hu>
21795
21796         * mini-x86.h: Define SIGSEGV_ON_ALTSTACK only if we have a working
21797         sigaltstack implementation.
21798
21799         * mini-x86.c (mono_arch_setup_jit_tls_data): Fix previous patch.
21800         
21801         * mini-x86.c (mono_arch_setup_jit_tls_data): Turn off the sigaltstack
21802         stuff if SIGSEGV_ON_ALTSTACK is not defined.
21803
21804 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
21805
21806         * mini.c: Fix warnings.
21807         
21808         * mini.c (mono_resolve_patch_target): New function which contains the
21809         arch independent part of the patching process.
21810
21811         * mini-x86.c (mono_arch_patch_code): Move arch independent parts of the
21812         patching code to a separate function.
21813
21814 2004-03-09  Bernie Solomon  <bernard@ugsolutions.com>
21815
21816         * mini.c (add_signal_handler): ifdef out on Windows
21817
21818 2004-03-08  Zoltan Varga  <vargaz@freemail.hu>
21819
21820         * mini-sparc.h mini-sparc.c inssel-sparc.brg exceptions-sparc.c 
21821         cpu-sparc.md: Add exception handling support + other fixes.
21822
21823         * driver.c: Print --help output to stdout. Fixes #55261. Also fix
21824         typed GC detection in --version.
21825
21826         * basic.cs exceptions.cs: New regression tests.
21827
21828         * mini.h mini-x86.h mini-ppc.h: Add MonoCompileArch structure where
21829         the arch specific code can store data during a compilation.
21830
21831         * mini-ops.h: Add OP_SETFRET.
21832
21833         * mini.c (mini_get_ldelema_ins): Instead of allways calling the same
21834         function, register a separate icall for each arity, so the icalls can
21835         get a wrapper.
21836         
21837         * mini.c (mono_print_tree): Print negative offsets in a more readable
21838         form.
21839         
21840         * mini.c: Make signal handling work on sparc.
21841         
21842         * mini.c (mini_init): Add emulation for lconv_to_r8_un.
21843
21844         * inssel-long32.brg: Fix OP_LSUB_OVF_UN rule.
21845
21846         * jit-icalls.c: Emulate truncl by aintl on solaris.
21847
21848         * jit-icalls.c (mono_lconv_to_r8_un): New icall emulation function.
21849
21850 2004-03-05  Zoltan Varga  <vargaz@freemail.hu>
21851
21852         * mini.c (mini_init): fconv_to_ovf can raise exceptions.
21853
21854 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
21855
21856         * mini.c: In CEE_ISINST and CEE_CASTCLASS, if the type is an interface or
21857         a MarshalByRef type, inline a method that performs the check, taking into
21858         account that the object can be a proxy. Also implemented tow new opcodes:
21859         CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
21860         * inssel.brg: Implemented two new opcodes, mini-ops.h: OP_CISINST and 
21861         OP_CCASTCLASS, which implement CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
21862
21863 Tue Mar 2 17:23:48 CET 2004 Paolo Molaro <lupus@ximian.com>
21864
21865         * mini-ppc.c: if a relative branch displacement is too big
21866         but it points to and area reachable with an absolute branch, 
21867         avoid the thunks.
21868
21869 Tue Mar 2 16:59:40 CET 2004 Paolo Molaro <lupus@ximian.com>
21870
21871         * mini.c: optimize small copies in cpblk.
21872
21873 2004-03-01  Zoltan Varga  <vargaz@freemail.hu>
21874
21875         * basic-calls.cs basic-float.cs: New regression tests.
21876
21877         * mini-sparc.c inssel-sparc.brg mini-ops.h: Access local variables at 
21878         negative offsets from %fp. Implement localloc. Fix local register 
21879         allocation. Fix the case when the this argument needs to be saved to
21880         the stack. Implement some missing opcodes.
21881
21882 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
21883
21884         * mini.c (mini_method_compile): Reenable global regalloc in methods
21885         with exception handlers.
21886
21887         * linear-scan.c (mono_varlist_sort): Fix warning.
21888
21889         * linear-scan.c (mono_linear_scan): Fix computation of used_regs.
21890
21891         * mini-x86.c (mono_arch_regalloc_cost): Reenable precise computation of
21892         regalloc costs.
21893
21894         * liveness.c: Make all variables uses in exception clauses volatile, to
21895         prevent them from being allocated to registers. Fixes #42136.
21896
21897 2004-02-25  Zoltan Varga  <vargaz@freemail.hu>
21898
21899         * mini-x86.c (mono_arch_regalloc_cost): Revert this change since it
21900         causes regressions.
21901
21902         * mini.h linear-scan.c mini-x86.c mini-sparc.c mini-ppc.c: Add 'cfg'
21903         argument to mono_arch_regalloc_cost.
21904
21905         * mini-x86.c (mono_arch_regalloc_cost): Compute regalloc costs 
21906         precisely.
21907
21908 2004-02-24  Zoltan Varga  <vargaz@freemail.hu>
21909
21910         * mini.h mini-x86.c mini-ppc.c mini-sparc.c linear-scan.c: 
21911         Make the cost of allocating a variable to a register arch dependent.
21912
21913         * basic-calls.cs: Fix compilation of tests.
21914         
21915         * mini.h mini.c tramp-x86.c mini-x86.c: Add mono_running_on_valgrind ()
21916         helper function to cut back on the number of #ifdefs needed.
21917
21918         * mini-ppc.c: Fix compilation.
21919
21920         * basic-calls.cs: New regression tests.
21921
21922         * mini-sparc.c (mono_sparc_is_virtual_call): New helper function.
21923
21924         * tramp-sparc.c (create_specific_trampoline): Use g5 register instead
21925         of l0 since that is callee saved.
21926
21927         * tramp-sparc.c (sparc_magic_trampoline): Apply unbox trampoline only
21928         to virtual calls.
21929
21930         * mini-sparc.c: Ongoing work + flag virtual calls with a special kind 
21931         of delay instruction.
21932
21933         * inssel.brg (OP_CHECK_THIS): Set tree->sreg1 and dreg correctly.
21934
21935         * mini.h (MonoCallInst): Add 'virtual' flag.
21936
21937         * inssel.brg (mini_emit_virtual_call): Set 'virtual' flag.
21938
21939 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
21940
21941         * *.cs: New regression tests.
21942
21943         * mini-sparc.c inssel-sparc.brg: Update after latest changes. Ongoing sparc 
21944         work.
21945
21946         * mini.c (mono_runtime_install_handlers): Fix build.
21947
21948         * mini.h (MonoJitTlsData): Add 'stack_size', 'signal_stack' and
21949         'signal_stack_size' members.
21950
21951         * mini.h mini.c mini-x86.h mini-x86.c: Run sigsegv handlers on an 
21952         alternate signal stack.
21953
21954         * exceptions-x86.c: Add stack overflow handling.
21955
21956         * mini.h mini.c mini-x86.c mini-ppc.c trace.h trace.c: Move tracing 
21957         functions to arch independent code.
21958
21959         * mini.c (mono_print_tree): Print more detailed info for load_membase
21960         opcodes.
21961         
21962 2004-02-23  Martin Baulig  <martin@ximian.com>
21963
21964         * mini.c (mini_get_method): Set `gmethod->generic_inst'.
21965
21966 Sun Feb 22 22:25:19 CET 2004 Paolo Molaro <lupus@ximian.com>
21967
21968         * mini-x86.c: fixed reg allocation for div/rem.
21969
21970 2004-02-22  Miguel de Icaza  <miguel@ximian.com>
21971
21972         * driver.c (mono_main): Report some configuratio options on --version.
21973
21974 Fri Feb 20 11:01:44 PST 2004 Paolo Molaro <lupus@ximian.com>
21975
21976         * mini-ppc.c: fixed clt.un, cgt.un. Optimized calls to functions
21977         low in the address space. Correctly flush memory in thunks where we
21978         output native code.
21979
21980 2004-02-20  Martin Baulig  <martin@ximian.com>
21981
21982         * mini.c (mini_get_method): New static method; inflate all generic
21983         methods and methods in open generic instances.
21984         (mono_method_to_ir): Use mini_get_method() instead of mono_get_method().
21985         (ret_type_to_call_opcode): Added support for MONO_TYPE_GENERICINST.
21986
21987 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
21988
21989         * mini-sparc.c (mono_arch_patch_code): Update after domain->code_mp changes.
21990
21991         * tramp-sparc.c (mono_arch_create_jump_trampoline): Set ji->method.
21992
21993 2004-02-19  Bernie Solomon  <bernard@ugsolutions.com>
21994
21995         * helpers.c (mono_disassemble_code): use Sun's dis if not using gcc
21996
21997         * mini-sparc.c (flushi mono_arch_output_basic_block): make
21998         it compile using Sun's compiler.
21999
22000 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
22001
22002         * 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.
22003
22004         * basic-calls.cs basic-float.cs basic-long.cs objects.cs: New regression tests.
22005
22006 Tue Feb 17 21:41:20 CET 2004 Paolo Molaro <lupus@ximian.com>
22007
22008         * aot.c, mini-x86.c, mini.c: use the code manager instead of a mempool to hold native
22009         code.
22010         * mini-ppc.c: handle calls outside of the allowed range with thunks
22011         allocated using the code manager.
22012         * tramp-ppc.c: use the code manager to hold generated native code.
22013         Fixed the magic trampoline to just patch vtable entries.
22014
22015 2004-02-17  Zoltan Varga  <vargaz@freemail.hu>
22016
22017         * inssel.brg inssel-x86.brg: Move call(immediate) rules to the platform
22018         independent file.
22019
22020 2004-02-16  Zoltan Varga  <vargaz@freemail.hu>
22021
22022         * tramp-ppc.c (mono_arch_create_jump_trampoline): Fix compilation on
22023         PPC.
22024
22025         * mini-x86.c: Call mono_arch_get_lmf_addr instead of mono_get_lmf_addr
22026         if we have a working __thread implementation.
22027
22028         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Remove 
22029         OP_CALL_IMM opcodes, since the CALL opcodes handles immediates as well.
22030
22031 2004-02-15  Zoltan Varga  <vargaz@freemail.hu>
22032
22033         * mini-x86.c: Fix compilation under gcc 2.
22034         
22035 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
22036
22037         * mini.c (mono_codegen): Avoid infinite loop when an icall wrapper
22038         contains a call to the wrapped function.
22039
22040         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Add 
22041         OP_<CALL>_IMM opcodes, and use them under X86.
22042         
22043         * mini.c (mono_jit_find_compiled_method): Fix warning.
22044
22045         * cpu-pentium.md: Fix length of opcodes which use x86_alu_membase_imm.
22046
22047         * jit-icalls.c (mono_ldftn_nosync): New JIT icall.
22048
22049         * tramp-x86.c (mono_arch_create_jump_trampoline): Move arch independent
22050         functionality to mini.c.
22051
22052         * mini.c (mono_create_jump_trampoline): New function to create a jump
22053         trampoline. Return a compiled method instead of a trampoline if it
22054         exists. Add a cache for jump trampolines.
22055
22056         * mini.c (mono_jit_find_compiled_method): New function to return a
22057         compiled method if it exists.
22058
22059         * mini-x86.c: Call mono_create_jump_trampoline instead of 
22060         mono_arch_create_jit_trampoline.
22061
22062         * jit-icalls.c (mono_ldftn): Do not compile the method. Instead, return
22063         a jump trampoline. Fixes #52092.
22064         
22065 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
22066
22067         * debug-mini.c (mono_init_debugger): Remove call to mono_verify_corlib,
22068         which is not up-to-date. Add check_corlib_version () instead.
22069
22070         * mini.c (mini_init): Call mono_thread_attach () so embedders do not 
22071         have to call it.
22072         
22073         * mini.c (mono_runtime_install_handlers): Remove check for valgrind
22074         since newer valgrind versions do not need it.
22075
22076         * mini.c (mono_jit_compile_method_with_opt): New helper function to
22077         compile a method with a given set of optimizations.
22078
22079         * mini.c: Compile icall wrappers on-demand instead of at startup.
22080
22081         * mini-sparc.c mini-ppc.c: Call mono_icall_get_wrapper to obtain the
22082         wrapper for an icall.
22083
22084 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
22085
22086         * mini.c (mono_method_to_ir): Handle switch with non-empty stack. Fixes
22087         #54063.
22088
22089         * iltests.il: Add test for non-empty stack before switch instruction.
22090
22091 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
22092
22093         * mini.c: Add support for new stringbuilder marshalling conventions.
22094
22095         * mini.c (mono_method_to_ir): Fix stack management of generic CEE_BOX.
22096
22097 2004-02-01  Martin Baulig  <martin@ximian.com>
22098
22099         * mini.c (MTYPE_PARAM_TO_TYPE): Method type arguments are stored
22100         in `ginst->mtype_argv'.
22101
22102 2004-01-31  Miguel de Icaza  <miguel@ximian.com>
22103
22104         * mini.c: Add comments, replace CEE_XXX+128 with OP_XXX to
22105         facilitate grepping.
22106
22107 Wed Jan 28 14:04:58 CET 2004 Paolo Molaro <lupus@ximian.com>
22108
22109         * mini.c: fixed buglet in initobj generic implementation for references.
22110
22111 Fri Jan 23 16:10:44 EST 2004 Paolo Molaro <lupus@ximian.com>
22112
22113         * Makefile.am: make the version script conditional.
22114         * jit-icalls.c: handle missing truncl().
22115
22116 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
22117
22118         * exceptions.cs: Add more tests for double->int conversion.
22119
22120         * jit-icalls.c (mono_fconv_ovf_i8): Call truncl before comparison, so
22121         we don't throw exceptions when converting 1.1 to a long. Fixes #53250.
22122
22123 Fri Jan 23 17:12:08 CET 2004 Paolo Molaro <lupus@ximian.com>
22124
22125         * driver.c: make --verbose --version emit an error
22126         if the loaded corlib doesn't match the runtime version.
22127
22128 Mon Jan 19 17:44:50 CET 2004 Paolo Molaro <lupus@ximian.com>
22129
22130         * mini-ppc.h: export ppc_patch().
22131         * mini-ppc.c: call convention fixes. Added assert in ppc_patch().
22132         * tramp-ppc.c: call convention fixes: Linux/PPC support should be
22133         on par or better than on MacOSX.
22134
22135 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
22136
22137         * mini.c tramp-x86.c tramp-sparc.c: Updated after changes to
22138         mono_lookup_pinvoke_call.
22139
22140         * mini-x86.c: Under windows, the default pinvoke calling convention is
22141         stdcall. Fixes #52834.
22142
22143         * mini.c (optimize_branches): Add an upper bound to the number of
22144         iterations to prevent infinite loops on strange loops. Fixes #53003.
22145
22146 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
22147
22148         * inssel.brg: Add vectors<->one dimensional array checking to CASTCLASS
22149         and ISINST. Fixes #52093.
22150
22151         * objects.cs (test_0_vector_array_cast): New tests.
22152         
22153 2004-01-15  Zoltan Varga  <vargaz@freemail.hu>
22154
22155         * jit-icalls.c (helper_stelem_ref_check): New jit icall for array type
22156         checking in Array.Set ().
22157
22158         * mini.c (method_to_ir): Add array type checking in Array.Set (). Fixes
22159         #52590.
22160
22161         * object.cs (test_0_multi_array_cast): New regression test.
22162
22163 Thu Jan 15 16:30:24 CET 2004 Paolo Molaro <lupus@ximian.com>
22164
22165         * exceptions-ppc.c: fix build on Linux/PPC.
22166
22167 2004-01-14  Zoltan Varga  <vargaz@freemail.hu>
22168
22169         * tramp-x86.c (x86_magic_trampoline): Disable code patching when
22170         running under valgrind.
22171         (x86_magic_trampoline): Fix build bustage.
22172
22173         * debug-mini.c: Modify the debug info serialize/deserialize code so it handles
22174         negative values as well. This is needed for the encoding of the line number
22175         info, since sometimes the line numbers are not in increasing order.
22176
22177 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
22178
22179         * cpu-pentium.md (localloc): Increase the size of the localloc 
22180         instruction since it is a loop under Win32.
22181
22182         * debug-mini.c (record_line_number): Get rid of unneccesary memory
22183         allocation.
22184
22185 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
22186
22187         * exceptions-ppc.c exceptions-x86.c exceptions-sparc.c 
22188         tramp-x86.c tramp-ppc.c tramp-sparc.c: Applied patch from 
22189         Max Horn (max@quendi.de). Fix file names in comments.
22190
22191 2004-01-03  Zoltan Varga  <vargaz@freemail.hu>
22192
22193         * ssa.c (mono_ssa_rename_vars): Allocate new_stack on the heap to
22194         avoid stack overflow.
22195         (replace_usage): Avoid uninitialized variable warnings.
22196
22197         * mini.c (mono_method_to_ir): Avoid disabling SSA for array operations
22198         and taking the address of valuetype variables.
22199
22200 2004-01-03  Patrik Torstensson
22201
22202         * mini-x86.c: renamed fpflags to flags in RegTrack, going to be used
22203         for other purposes than FP later on.
22204
22205 2004-01-02  Zoltan Varga  <vargaz@freemail.hu>
22206
22207         * mini.c (mono_method_to_ir): Prevent register allocation for arguments
22208         of tail calls.
22209
22210 Fri Jan 2 13:37:25 CET 2004 Paolo Molaro <lupus@ximian.com>
22211
22212         * mini-ops.h, mini.c, inssel.brg: Object.GetType () speedup.
22213
22214 2003-12-30  Patrik Torstensson <p@rxc.se>
22215
22216         * mini-x86.h: Decreased number of availiable fp regs.
22217         Solves corner cases with FP spilling.
22218
22219 2003-12-23  Patrik Torstensson <p@rxc.se>
22220
22221         * mini-x86.c, mini-ops.h, cpu-pentium.md: Added support
22222         for floating point stack tracking / spilling on x86. 
22223         Fixes bug #49012.
22224         
22225         * basic-float.cs: added float mul overflow test.
22226
22227 2003-12-23  Zoltan Varga  <vargaz@freemail.hu>
22228
22229         * mini.c (mono_method_to_ir): Add workaround for bug #51126.
22230
22231 Sun Dec 21 19:53:16 CET 2003 Paolo Molaro <lupus@ximian.com>
22232
22233         * mini.h, mini-ppc.c, mini-ppc.h: small cleanups and
22234         supports for cond branches that overflow the immediate
22235         overflow offset. mcs can compile simple programs.
22236
22237 Fri Dec 19 21:17:16 CET 2003 Paolo Molaro <lupus@ximian.com>
22238
22239         * exceptions-ppc.c: exception handling support wip:
22240         finally handlers get run on exception.
22241
22242 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
22243
22244         * aot.c (mono_aot_get_method_inner): Avoid loading AOT code while 
22245         profiling.
22246
22247 Fri Dec 19 17:58:28 CET 2003 Paolo Molaro <lupus@ximian.com>
22248
22249         * cpu-g4.md, mini-ppc.c, exceptions-ppc.c, mini-ppc.h:
22250         initial support for stack walking and unwinding.
22251
22252 2003-12-18  Zoltan Varga  <vargaz@freemail.hu>
22253
22254         * driver.c (mono_main): Make corlib-out-of-sync message more 
22255         descriptive. Also remove verify_corlib call.
22256
22257 Wed Dec 17 15:31:41 CET 2003 Paolo Molaro <lupus@ximian.com>
22258
22259         * mini.c: make CEE_NEWARR calls and other emulated opcodes 
22260         not overlap with other call's arguments, too.
22261
22262 Wed Dec 17 12:49:23 CET 2003 Paolo Molaro <lupus@ximian.com>
22263
22264         * mini.h, mini.c, mini-ppc.c, mini-sparc.c, mini-x86.c: 
22265         move to arch-specific code the choice of arch-specific
22266         intrinsics (from Laurent Morichetti (l_m@pacbell.net)).
22267         * mini.c: ensure emulation calls will not interleave
22268         with other calls.
22269
22270 Wed Dec 17 12:27:26 CET 2003 Paolo Molaro <lupus@ximian.com>
22271
22272         * tramp-ppc.c, basic-calls.cs: rework trampolines so that
22273         the magic trampoline stack frame is dropped before executing
22274         the new method.
22275
22276 Mon Dec 15 18:13:57 CET 2003 Paolo Molaro <lupus@ximian.com>
22277
22278         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed some opcode lengths
22279         and integer to fp conversions. Added support for overflowing
22280         arguments on the stack. Reserve a couple more registers as temps.
22281         Added support for aot compilation (as output still needs to be
22282         tweaked, though).
22283
22284 Sat Dec 13 17:49:10 CET 2003 Paolo Molaro <lupus@ximian.com>
22285
22286         * mini-ppc.c, basic-long.cs: fix jumps to known labels.
22287         Don't overwrite return register in some corner cases.
22288
22289 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
22290
22291         * mini.h mini.c driver.c mini-x86.c mini-ppc.c aot.c: Do not run
22292         static constructors when AOT compiling.
22293
22294         * driver.c (mono_main): Call mono_check_corlib_version.
22295
22296 Sat Dec 13 10:31:12 CET 2003 Paolo Molaro <lupus@ximian.com>
22297
22298         * cpu-g4.md, basic.cs: fixed div target register.
22299
22300 Sat Dec 13 09:45:56 CET 2003 Paolo Molaro <lupus@ximian.com>
22301
22302         * mini-ppc.c, basic.cs: shl_imm fix with test.
22303
22304 Fri Dec 12 21:25:14 CET 2003 Paolo Molaro <lupus@ximian.com>
22305
22306         * inssel-ppc.brg, mini-ppc.h, mini-ppc.c: support for passing 
22307         structures by value. Misc fixes.
22308         * objects.cs: more tests.
22309
22310 Fri Dec 12 10:11:49 CET 2003 Paolo Molaro <lupus@ximian.com>
22311
22312         * mini-ppc.c: lconv.ovf.i implemented.
22313
22314 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22315
22316         * mini.c:
22317         (mini_init): don't error out if someone already called g_thread_init.
22318
22319 Tue Dec 9 17:27:14 CET 2003 Paolo Molaro <lupus@ximian.com>
22320
22321         * exceptions-x86.c, exceptions-ppc.c: allow the exception object
22322         to be any type per the spec. Fix abnormal memory usage when
22323         the same object is repeatedly thrown.
22324
22325 Tue Dec 9 15:39:54 CET 2003 Paolo Molaro <lupus@ximian.com>
22326
22327         * mini.c: check for overruns in IL code.
22328
22329 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
22330
22331         * TODO: Add/remove some todo entries.
22332
22333 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
22334
22335         * driver.c (mono_main): Call mono_verify_corlib.
22336
22337 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
22338
22339         * inssel.brg: In CEE_ISINST and CEE_CASTCLASS, removed check for proxy. 
22340         This has been moved to mini.c
22341         * mini.c: in mono_method_to_ir, CEE_ISINST and CEE_CASTCLASS cases, if the
22342         type being casted is marshalbyref it could be a proxy, so instead of
22343         emitting the type check code, emit a call to a runtime method that will
22344         perform the check by calling CanCastTo if needed.
22345
22346 2003-12-06  Zoltan Varga  <vargaz@freemail.hu>
22347
22348         * mini-x86.c (mono_arch_emit_prolog): Fix stack space allocation for
22349         methods with large stack frames under Win32.
22350
22351 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
22352
22353         * Makefile.am: Distribute regression tests.
22354
22355         * mini-x86.c (mono_arch_get_allocatable_int_vars): Sort the var list
22356         at the end instead of inserting each variable into the sorted list.
22357
22358         * linear-scan.c (mono_varlist_sort): New helper function.
22359         
22360 Wed Dec 3 20:46:28 CET 2003 Paolo Molaro <lupus@ximian.com>
22361
22362         * mini.c: ensure arguments and locals are within bounds.
22363
22364 Wed Dec 3 17:59:10 CET 2003 Paolo Molaro <lupus@ximian.com>
22365
22366         * mini-ppc.c, cpu-g4.md, basic.cs, basic-long.cs: more tests and 
22367         related fixes.
22368
22369 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
22370
22371         * mini.c (mono_cprop_copy_values): Fix crash.
22372
22373         * aot.c: Set verbosity back to 0.
22374         
22375 Wed Dec 3 15:42:27 CET 2003 Paolo Molaro <lupus@ximian.com>
22376
22377         * regalloc.c: complete memory leak fix by Laurent Morichetti
22378         (l_m@pacbell.net).
22379
22380 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
22381
22382         * driver.c (main_thread_handler): Revert the previous patch.
22383
22384         * tramp-x86.c (x86_class_init_trampoline): Avoid patching when running
22385         under valgrind.
22386
22387         * mini-x86.c (mono_arch_local_regalloc): Do not allocate transient
22388         memory from the memory pool.
22389
22390         * driver.c (main_thread_handler): Turn on all optimizations when
22391         --aot is used.
22392
22393         * mini.c (mono_find_jit_opcode_emulation): Turn emul_opcode_hash into
22394         an array for better performance.
22395
22396         * regalloc.c (mono_regstate_assign): Fix memory leak.
22397
22398         * debug-mini.c (mono_debug_serialize_debug_info): New function to
22399         serialize the debug info.
22400
22401         * debug-mini.c (mono_debug_add_aot_method): New function to load the
22402         debug info from the serialized representation.
22403
22404         * aot.c: Save debug info into the generated file and load it when 
22405         loading a method.
22406
22407         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
22408
22409 Mon Dec 1 16:54:05 CET 2003 Paolo Molaro <lupus@ximian.com>
22410
22411         * mini-ppc.c, tramp-ppc.c: save FP arguments in the trampoline.
22412         More FP-related fixes.
22413
22414 Sun Nov 30 19:13:52 CET 2003 Paolo Molaro <lupus@ximian.com>
22415
22416         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed finally handlers
22417         and register allocation buglet. Hello world now runs.
22418
22419 Fri Nov 28 23:03:05 CET 2003 Paolo Molaro <lupus@ximian.com>
22420
22421         * cpu-g4.md, inssel-ppc.brg, mini-ppc.c: better long return support.
22422         * tramp-ppc.c: fixed class init trampoline.
22423         * inssel-ppc.brg, mini.c, jit-icalls.c, mini-ppc.h: more emulation.
22424
22425 Fri Nov 28 16:36:29 CET 2003 Paolo Molaro <lupus@ximian.com>
22426
22427         * cpu-g4.md, inssel-ppc.brg, jit-icalls.c, mini-ppc.c, mini-ppc.h,
22428         mini.c: more ppc changes/fixes.
22429
22430 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
22431
22432         * mini.c (mono_method_to_ir): Fix tail calls with valuetype arguments.
22433         Also optimize the case when the arguments are the same in the caller 
22434         and in the callee.
22435
22436         * iltests.il: Add tests for tail calls with valuetype arguments.
22437
22438 Thu Nov 27 21:06:37 CET 2003 Paolo Molaro <lupus@ximian.com>
22439
22440         * mini-ppc.c: fixes for struct return type.
22441
22442 Thu Nov 27 19:02:07 CET 2003 Paolo Molaro <lupus@ximian.com>
22443
22444         * mini.h, mini.c, mini-x86.c, mini-ppc.c, mini-sparc.c: move 
22445         mono_spillvar_offset() to arch-specific code.
22446
22447 Thu Nov 27 18:30:42 CET 2003 Paolo Molaro <lupus@ximian.com>
22448
22449         * mini-ppc.h, mini-ppc.c: handle some different ABI call convention issues.
22450
22451 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
22452
22453         * exceptions-x86.c: Fix stack space leaks.
22454         
22455         * exceptions-x86.c (mono_arch_find_jit_info): Restore callee saved
22456         registers from the lmf if the method has save_lmf set.
22457
22458 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
22459
22460         * tramp-x86.c (x86_magic_trampoline): Avoid patching in the addresses
22461         of icall wrappers into InvokeInDomain, since these are now per-domain.
22462
22463 Wed Nov 26 20:15:04 CET 2003 Paolo Molaro <lupus@ximian.com>
22464
22465         * mini-ppc.h, mini-x86.h, mini.c, inssel-ppc.brg, jit-icalls.c:
22466         make some opcode emulation and intrinsic ops enabled/disabled 
22467         according to the architecture. More fixes.
22468
22469 Wed Nov 26 19:59:09 CET 2003 Paolo Molaro <lupus@ximian.com>
22470
22471         * mini-ppc.c, mini-sparc.c, cpu-g4.md: more bug fixes.
22472
22473 Wed Nov 26 19:18:29 CET 2003 Paolo Molaro <lupus@ximian.com>
22474
22475         * mini.h, inssel.brg, mini-x86.c, mini-ppc.c, mini-sparc.c: move
22476         arch-specific handling for 'this' and struct return type to
22477         arch-specific code.
22478
22479 2003-11-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22480
22481         * aot.c: prevent divide by zero error when reporting (it happened with
22482         Accessibility.dll).
22483
22484 2003-11-25  Zoltan Varga  <vargaz@freemail.hu>
22485
22486         * mini.h (inst_switch): Remove unused macro.
22487
22488 2003-11-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22489
22490         * aot.c:
22491         (load_aot_module): free 'info->methods' and 'info' properly. No more
22492         "free(): invalid pointer blah" messages when you have an old aot
22493         compiled assembly.
22494
22495 2003-11-21  Lluis Sanchez Gual <lluis@ximian.com>
22496
22497         * jit-icalls.c, mini.c: Added support for context static fields.
22498
22499 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
22500
22501         * mini.c (mono_method_blittable): Methods which set LastError are not 
22502         blittable either. Fixes #51108.
22503         
22504 Tue Nov 18 16:41:37 CET 2003 Paolo Molaro <lupus@ximian.com>
22505
22506         * mini.c: flush icache.
22507         * cpu-g4.md, mini-ppc.c, inssel.brg: more fixes. Trace support.
22508
22509 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
22510
22511         * mini.c (mono_type_blittable): OBJECT is not blittable. Fixes #47842.
22512
22513 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
22514
22515         * tramp-x86.c (x86_class_init_trampoline): Make code patching thread
22516         safe on IA32.
22517
22518         * mini-x86.c (mono_arch_call_opcode): Disable AOT for methods with 
22519         vararg calls.
22520
22521         * inssel.brg (CEE_MKREFANY): Fix AOT case.
22522
22523 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
22524
22525         * mini-x86.c (mono_arch_local_regalloc): Fix regalloc for div 
22526         instruction when the result is discarded.
22527
22528         * iltests.il (test_0_div_regalloc): New regression test.
22529
22530         * arrays.cs: Fix compilation error.
22531
22532 Fri Nov 14 21:34:06 CET 2003 Paolo Molaro <lupus@ximian.com>
22533
22534         * inssel-x86.brg, inssel-float.brg, mini-ops.h: move x86-specific
22535         float rules to inssel-x86.brg: sane architectures with FP registers
22536         don't need to implement these rules.
22537
22538 Fri Nov 14 20:52:12 CET 2003 Paolo Molaro <lupus@ximian.com>
22539
22540         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: updates and fixes to the ppc port.
22541
22542 Fri Nov 14 17:58:27 CET 2003 Paolo Molaro <lupus@ximian.com>
22543
22544         * mini.h, inssel-long32.brg: fixed endianess issues in int64
22545         implementation of 32 bit systems.
22546
22547 Thu Nov 13 16:14:41 CET 2003 Paolo Molaro <lupus@ximian.com>
22548
22549         * exceptions-ppc.c: fix build on Linux/ppc from Jeroen@xs4all.nl
22550         (Jeroen Zwartepoorte).
22551
22552 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
22553
22554         * mini.c (mono_method_to_ir): Use CEE_JMP only if the signature of
22555         the caller and the callee matches.
22556         
22557         * mini.c (mono_method_to_ir): Add comment.
22558
22559         * mini-x86.c (mono_arch_output_basic_block): Use mono_signbit, since
22560         signbit is missing on some platforms.
22561
22562 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
22563
22564         * mini.h (mono_arch_setup_jit_tls_data): New arch specific function.
22565
22566         * mini.c (setup_jit_tls_data): Call the new function.
22567         
22568         * mini-x86.c mini-ppc.c mini-sparc.c: Define the new function.
22569
22570         * mini-x86.c: Add experimental support for fast access to the lmf
22571         structure under NPTL/Linux 2.6.x.
22572
22573 2003-11-06  Martin Baulig  <martin@ximian.com>
22574
22575         * ldscript: Make `GC_push_all_stack', `GC_start_blocking',
22576         `GC_end_blocking' and 'gc_thread_vtable' public; they're used by
22577         the debugger.
22578
22579 2003-11-02  Martin Baulig  <martin@ximian.com>
22580
22581         * mini.c (inflate_generic_field): New static method.
22582         (mono_method_to_ir): In CEE_LDFLD and CEE_LDSFLD: if we're a
22583         generic instance and the field is declared in a generic type, call
22584         inflate_generic_field() to inflate it.  Fixes gen-28.cs.
22585
22586 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
22587
22588         * mini.h mini.c (mono_method_same_domain): New function to return
22589         whenever the caller and the callee are in the same domain.
22590
22591         * tramp-x86.c (x86_magic_trampoline): Use the new function.     
22592
22593 2003-10-30  Martin Baulig  <martin@ximian.com>
22594
22595         * mini.c (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): New macros;
22596         similar to TYPE_PARAM_TO_TYPE and TYPE_PARAM_TO_CLASS, but for
22597         method parameters.
22598         (mono_method_to_ir): Added support for MONO_TYPE_MVAR; similar to
22599         MONO_TYPE_VAR, we the actual types from MTYPE_PARAM_TO_CLASS(). 
22600
22601 2003-10-29  Zoltan Varga  <vargaz@freemail.hu>
22602
22603         * mini.c mini-ops.h inssel.brg: Implement undeniable exception 
22604         propagation.
22605
22606         * mini.c (sigusr1_signal_handler): Move creation of the thread abort
22607         object here, so it is in the correct appdomain etc.
22608
22609 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
22610
22611         * mini.c (mono_jit_compile_method_inner): Lookup icalls here if not
22612         already done.
22613         (mono_method_to_ir): Avoid freeing the type created returned from
22614         mono_type_create_from_typespec, since it is put into an internal cache
22615         by the function. Fixes pointer.exe.
22616
22617         * mini.c tramp-x86.c tramp-sparc.c tramp-ppc.c: Use the normal 
22618         trampolines for icalls and pinvokes as well. Fixes #33569.
22619
22620 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
22621
22622         * mini.c: Update after appdomain changes.
22623
22624         * mini.c (mono_jit_compile_method_inner): Allways compile native
22625         method wrappers in the root domain, since there can only be one
22626         instance of them, whose address is stored in method->info.
22627
22628 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
22629
22630         * mini.c (mono_runtime_install_handlers): Get rid of the MONO_VALGRIND
22631         environment variable. Instead detect automatically whenever running
22632         under valgrind using the magic macro RUNNING_ON_VALGRIND from
22633         valgrind.h.
22634
22635 2003-10-16  Miguel de Icaza  <miguel@ximian.com>
22636
22637         * trace.c, trace.h: New files that implement the new trace option
22638         parsing. 
22639
22640         * driver.c: Document new --trace options.
22641
22642         * exceptions-ppc.c, exceptions-x86.c, mini-ppc.c, mini-sparc.c,
22643         mini-x86.c: Apply:
22644
22645         -       if (mono_jit_trace_calls)
22646         +       if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
22647
22648         * mini.h: prototypes.
22649         
22650 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
22651
22652         * mini.c (mono_method_to_ir): Fix initialization of typedbyref locals.
22653
22654         * mini.c inssel.brg: Implement typedefbyref opcodes.
22655
22656         * mini.c (mono_jit_compile_method): Remove unused local variable.
22657
22658         * mini.c (mono_jit_compile_method_inner): Ditto.
22659         
22660 2003-10-12  Zoltan Varga  <vargaz@freemail.hu>
22661
22662         * tramp-x86.c (x86_class_init_trampoline): Fix build.
22663         
22664         * tramp-x86.c (x86_class_init_trampoline): Thread safety fixes.
22665
22666 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
22667
22668         * mini.c (mono_no_aot): Remove unused global variable.
22669
22670         * mini.c: Thread safety fixes.
22671
22672 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
22673
22674         * mini.c (mono_create_class_init_trampoline): Add a lock around
22675         class_init_hash_addr.
22676
22677         * arrays.cs (test_0_newarr_emulation): Add new regression test for
22678         #30073.
22679
22680         * mini.c: Decompose the NEWARR instruction before decomposing its
22681         arguments. Fixes #30073.
22682
22683 2003-10-08  Zoltan Varga  <vargaz@freemail.hu>
22684
22685         * mini-x86.c (mono_arch_emit_epilog): Add support for stdcall calling
22686         convention.
22687
22688 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
22689
22690         * mini.c (mono_method_to_ir): Allow wrapper data for CEE_LDELEMA.
22691
22692         * inssel-x86.brg (OP_LOCALLOC): Fix register assignment for localloc.
22693
22694         * driver.c: Add support for compiling icall wrappers to --compile.
22695
22696 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
22697
22698         * inssel.brg: The empty value in class->interface_offsets is -1, not
22699         0. Fixes #49287.
22700
22701 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
22702
22703         * objects.cs: New test for 'is' operator on an array of interfaces.
22704
22705 Wed Oct 1 19:40:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
22706
22707         * tramp-ppc.c: update trampoline code to support jumps
22708         and class initialization.
22709
22710 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
22711
22712         * mini.c (mono_jit_compile_method): Fix reading of freed memory.
22713
22714         * inssel.brg (OP_UNBOXCAST): Fix #46027.
22715
22716         * inssel.brg (OP_UNBOX): Remove unused rule.
22717
22718         * mini.h mini.c inssel-x86.brg: Allocate one SP variable for each
22719         region instead of one for each method. Fixes #47813.
22720
22721 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
22722
22723         * exceptions.cs (test_0_nested_finally): New regression test for
22724         nested exception handlers.
22725
22726         * mini.c (mono_jit_runtime_invoke): Fix for the previous fix.
22727
22728         * mini.c (mono_method_to_ir): Avoid inlining tail calls.
22729
22730         * mini.c (mono_method_to_ir): Fix tail recursion in the presence of 
22731         inlining.
22732
22733         * mini.c (mono_method_check_inlining): Make the inlining limit 
22734         configurable by an environment variable.
22735         
22736         * mini.c (mono_jit_runtime_invoke): Add Gonzalo's fix for #36545.
22737
22738         * mini.h: Bump AOT file version.
22739
22740         * mini.h mini.c aot.c mini-x86.c: For relocations which refer to a 
22741         token, store the image along with the token, since the token might not 
22742         refer to the same image as the method containing the relocation, 
22743         because of inlining.
22744
22745 2003-09-27  Zoltan Varga  <vargaz@freemail.hu>
22746
22747         * mini.c (mono_precompile_assemblies): New function to compile
22748         all methods in all loaded assemblies.
22749
22750         * mini.h driver.c: Added new optimization flag MONO_OPT_PRECOMP.
22751
22752         * regalloc.h regalloc.c (MonoRegState): Change the type of 
22753         iassign and fassign to int*, since they can contain large negative
22754         values if the register is spilled. Also added some comments. Fixes
22755         #45817.
22756
22757         * exceptions-x86.c (seh_handler): Fix handling of system exceptions
22758         under Win32. Fixes #42964.
22759
22760 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
22761
22762         * mini.h (MONO_PATCH_INFO_WRAPPER): New patch type.
22763
22764         * aot.c: Added support for AOT compiling methods which contain calls
22765         to wrappers. Currently, only remoting-invoke-with-check wrappers are
22766         handled.
22767         
22768         * driver.c (compile_all_methods): Run the compilation in a thread
22769         managed by mono. Fixes #44023.
22770
22771         * mini.c (mono_codegen): Print full method name in verbose output.
22772
22773         * mini-x86.c (mono_arch_patch_code): Fix warning.
22774         
22775         * mini-x86.c (mono_arch_patch_code): Allways create a trampoline for
22776         jumps, since the method we are jumping to might be domain-specific.
22777
22778         * aot.c: Added support for MONO_PATCH_INFO_METHOD_JUMP.
22779
22780 Tue Sep 23 10:50:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
22781
22782         * inssel.brg: string chars are unsigned.
22783
22784 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
22785
22786         * TODO: New todo item.
22787
22788         * tramp-x86.c (x86_class_init_trampoline): New trampoline function
22789         which calls mono_runtime_class_init and patches the call site to
22790         avoid further calls.
22791         (mono_arch_create_class_init_trampoline): New arch specific function 
22792         to create a class init trampoline.
22793         (create_trampoline_code): Generalized so it can create
22794         class init trampolines as well.
22795
22796         * mini.c (helper_sig_class_init_trampoline): New helper variable.
22797         (mono_create_class_init_trampoline): New function to create and cache
22798         class init trampolines.
22799         (mono_find_class_init_trampoline_by_addr): New function to lookup the
22800         vtable given the address of a class init trampoline. Used by the
22801         patching process.
22802         (mono_codegen): Generate a call to a trampoline instead of
22803         mono_runtime_class_init in LDSFLD[A].
22804         (mono_codegen): Add relocations for the new trampoline.
22805         
22806         * mini.h mini-x86.c aot.c: Added a new relocation type: 
22807         MONO_PATCH_INFO_CLASS_INIT.
22808
22809         * mini.h: Bump AOT version number.
22810
22811         * aot.c: Create a copy of the loaded code instead of using the original
22812         so methods which call each other will be close in memory, improving
22813         cache behaviour.
22814         
22815         * exceptions-x86.c (mono_arch_has_unwind_info): Back out the previous
22816         patch since it breaks the regression tests.
22817         
22818         * exceptions-x86.c (mono_arch_has_unwind_info): Added explicit check
22819         for the register saving instruction sequence since the 
22820         frame_state_for function in glibc 2.3.2 don't seem to detect it.
22821
22822 2003-09-14  Zoltan Varga  <vargaz@freemail.hu>
22823
22824         * TODO: Fix todo item && remove another.
22825
22826 2003-09-12  Zoltan Varga  <vargaz@freemail.hu>
22827
22828         * mini-x86.c (mono_arch_patch_code): Fix tail calls broken by a
22829         previous checkin.
22830
22831         * aot.c: Moved the check for MONO_LASTAOT into the initialization
22832         function of the module.
22833
22834         * mini.h mini.c aot.c: Added a new optimization flag OPT_AOT for
22835         turning on/off the usage of AOT code. Got rid of mono_no_aot and the
22836         --no-aot command line option.
22837
22838 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
22839
22840         * helpers.c (mono_disassemble_code): Make this work under cygwin. Patch
22841         by Bernie Solomon (bernard@ugsolutions.com).
22842
22843         * inssel.brg: Refactor the interface offset table related code into
22844         its separate functions and add support for the AOT case.
22845
22846 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
22847
22848         * aot.c (mono_aot_get_method_inner): Fix memory leak.
22849         
22850         * aot.c: Added mono_aot_verbose variable and made all debugging
22851         output depend on the value of this variable.
22852
22853         * aot.c (mono_aot_get_method_inner): Avoid dynamic allocation of
22854         method_label and info_label.
22855
22856         * mini.h mini-x86.c aot.c: Added a new relocation type 
22857         MONO_PATCH_INFO_IID for klass->interface_id.
22858
22859         * mini.h mini.c driver.c aot.c: Changed mono_aot_get_method to return
22860         the MonoJitInfo structure.
22861
22862         * mini.c (mono_jit_compile_method): Avoid using non-shared AOT in
22863         a non-root appdomain in shared mode.
22864
22865 Tue Sep 9 16:33:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
22866
22867         * aot.c: make aot loader less verbose. Remove free of unused variable.
22868
22869 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
22870
22871         * aot.c (mono_aot_get_method_inner): Fix MONO_PATCH_INFO_IMAGE.
22872
22873         * .cvsignore: Added *.dll.
22874
22875         * mini.c (mono_print_tree_nl): New function callable while debugging.
22876
22877         * mini.c (mono_print_code): Export this.
22878
22879         * tramp-x86.c (x86_magic_trampoline): Tell valgrind to recompile the
22880         patched code.
22881
22882 2003-09-05  Zoltan Varga  <vargaz@freemail.hu>
22883
22884         * mini.h (MonoCompile): Added 'jit_info' field.
22885
22886         * mini.c (mini_method_compile): Save the generated MonoJitInfo into
22887         the cfg structure, since it is needed by the AOT compiler.
22888
22889         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
22890
22891         * aot.c: A major rewrite. Changes include:
22892         - save exception tables for methods which have them.
22893         - cache failed lookups in aot_get_method () to avoid the (slow) calls 
22894         to g_module_symbol.
22895         - reworked the file format so it is now much smaller and needs
22896         fewer relocation entries.
22897         
22898 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
22899
22900         * aot.c (load_aot_module): Fix build bustage on platforms without
22901         Boehm GC.
22902
22903 2003-09-04  Martin Baulig  <martin@ximian.com>
22904
22905         * Makefile.am (INCLUDES): Added $(LIBGC_CFLAGS).
22906
22907 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
22908
22909         * TODO: Some new optimization ideas.
22910
22911         * aot.c: Move AOT module loading logic here from mono_assembly_open.
22912
22913         * aot.c: Save the optimization flags used to compile the code into
22914         the AOT module.
22915
22916         * mini.h mini-x86.c mini.c aot.c: Added new types of relocations to
22917         support emitting domain specific code.
22918         
22919         * mini.h mini.c aot.c: Modified the JIT so the generated AOT code is 
22920         no longer domain neutral. It can be made domain neutral by compiling 
22921         with --optimize=shared.
22922
22923         * aot.c (mono_aot_get_method_inner): Allow sharing of AOT methods
22924         between appdomains.
22925
22926         * driver.c mini.h mini.c: New --no-aot debugging option which disables
22927         loading of AOT code.
22928
22929         * inssel-x86.brg: Added missing AOTCONST -> OUTARG_VT rule.
22930         
22931         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling method
22932         if there is no domain neutrality information.
22933
22934 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
22935
22936         * aot.c (mono_compile_assembly): Emit a symbol containing the file 
22937         format version into the generated library.
22938
22939         * mini-x86.c (mono_arch_patch_code): Do not emit the address of the
22940         callee method into the caller since one of them could be shared.
22941
22942         * mini.h mini-x86.c aot.c: Added two new relocations so throwing
22943         system exceptions from AOT code now works.
22944
22945         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling 
22946         method if it is domain neutral and the callee is not.
22947
22948         * graph.c (cfg_emit_one_loop_level): Fix warning.
22949
22950 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
22951
22952         * aot.c (mono_compile_assembly): Oops. Remove debugging cruft from
22953         last checkin.
22954
22955 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
22956
22957         * mini.c (mini_init): Call mono_marshal_init () explicitly since it
22958         is needed  by code which is executed before mono_runtime_init ().
22959         Thanks to Bernie Solomon (bernard@ugsolutions.com) for noticing this.
22960         
22961         * mini.c (mono_thread_abort): Fix warning.
22962         (mono_jit_compile_method): Call static constructor in the AOT case too.
22963
22964         * aot.c (mono_compile_assembly): Fix warning.
22965
22966 2003-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22967
22968         * mini.c: register a SIGINT handler if MONO_DEBUG is defined.
22969
22970 2003-08-28  Zoltan Varga  <vargaz@freemail.hu>
22971
22972         * inssel.brg (OP_UNBOXCAST): Add support for the AOT case.
22973
22974         * cpu-pentium.md: Fix the length of call opcodes so they include the
22975         ESP restoring instruction. Fixes #47968.
22976
22977 2003-08-28  Martin Baulig  <martin@ximian.com>
22978
22979         * mini-x86.c (mono_arch_call_opcode): Added support for
22980         MONO_TYPE_GENERICINST.
22981
22982         * mini.c (check_call_signature): Added support for MONO_TYPE_GENERICINST.       
22983
22984 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
22985
22986         * Makefile.am (BUILT_SOURCES): Fix compilation on platforms without
22987         a JIT. Patch by Bernie Solomon (bernard@ugsolutions.com).
22988
22989         * mini.c jit-icalls.c tramp-x86.c tramp-ppc.c tramp-sparc.c: Get rid of
22990         metadata_section.
22991
22992 2003-08-26  Martin Baulig  <martin@ximian.com>
22993
22994         * mini.c (get_basic_blocks): Added `unsigned char **pos' argument;
22995         when reporting an error, set this to the actual error location.
22996         (mono_method_to_ir): Report the correct error location if
22997         get_basic_blocks() returned an error.
22998
22999 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
23000
23001         * mini.c (mono_type_blittable): OBJECT is not blittable.
23002         (mono_method_blittable): Methods which have marshalling descriptors
23003         are not blittable either. Fixes #47842.
23004
23005 2003-08-22  Zoltan Varga  <vargaz@freemail.hu>
23006
23007         * driver.c mini.c: Use an environment variable instead of a global 
23008         variable. Also fix the build.
23009
23010         * mini.c (mini_init): Call g_thread_init () to make glib thread-safe. 
23011         Fixes #47682. Thanks to Laurent Morichetti (l_m@pacbell.net) for 
23012         reporting this. 
23013
23014         * driver.c mini.c: Added --with-valgrind option to turn off some
23015         code which prevents mono from running under valgrind.
23016
23017         * mini.c (mono_emit_call_args): Fixed warning.
23018
23019         * mini.c (mono_emulate_opcode): Fixed warning.
23020
23021 Thu Aug 21 19:10:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
23022
23023         * inssel.brg: 64bit fixes from Laurent Morichetti <l_m@pacbell.net>.
23024         * linear-scan.c, mini-ppc.h, mini-sparc.h, mini-x86.h, mini.h,
23025         regalloc.c, regalloc.h: specify available registers in arch-specific
23026         code and support floats in the regallocator (patch by Laurent Morichetti 
23027         <l_m@pacbell.net>)
23028
23029 Wed Aug 20 19:02:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
23030
23031         * mini.c: mono_thread_current() can be called only after
23032         mono_runtime_init(): rearrange code to not call it early on.
23033
23034 Wed Aug 20 13:14:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
23035
23036         * mini.c: allocate jump tables in the code mempools.
23037
23038 Wed Aug 20 13:04:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
23039
23040         * mini.c, mini.h: make sure per-thread data allocated by the jit is
23041         freed.
23042
23043 2003-08-10  Miguel de Icaza  <miguel@ximian.com>
23044
23045         * cpu-pentium.md (ldtoken): Change the length for mul.ovf.un from
23046         12 to 16.  This fixes bug #47453.
23047
23048
23049 Thu Aug 7 15:59:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
23050
23051         * mini-ppc.c: fixed indexed load and unsigned compares.
23052
23053 2003-08-06  Lluis Sanchez Gual  <lluis@ximian.com>
23054
23055         * mini.c: reenabled installation of handler for
23056           thread abort signal.
23057
23058 Tue Aug 5 12:21:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
23059
23060         * cprop.c, mini-x86.c, cpu-pentium.md: fix buglets spotted
23061         by Laurent Morichetti <l_m@pacbell.net>. Disabled local cprop
23062         until it's fixed and actually useful.
23063
23064 Mon Aug 4 12:12:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
23065
23066         * inssel-long32.brg: couple more opcodes implemented.
23067
23068 Thu Jul 31 22:43:02 EDT 2003 Mark Crichton <crichton@gimp.org>
23069         
23070         * mini-sparc.c: Even more opcodes implemeted.
23071
23072 Thu Jul 31 19:36:03 EDT 2003 Mark Crichton <crichton@gimp.org>
23073
23074         * mini-sparc.c: More opcodes implemented.
23075
23076 Thu Jul 31 15:16:26 EDT 2003 Mark Crichton <crichton@gimp.org>
23077
23078         * mini-sparc.c: More opcodes implemented.
23079
23080 Wed Jul 30 22:31:02 EDT 2003 Mark Crichton <crichton@gimp.org>
23081
23082         * inssel-sparc.brg: Add some needed rules.  Direct
23083         copy from PPC.
23084         * Makefile.am: Use inssel-sparc.brg
23085         * exceptions-sparc.c: 0xdeadbeef/0xdecafbad to keep
23086         an assert happy for now.
23087
23088 Wed Jul 30 20:44:07 EDT 2003 Mark Crichton <crichton@gimp.org>
23089
23090         * mini-sparc.c: Fixed compile errors.
23091         * exceptions-sparc.c: Same.  We now produce a mono binary 
23092         on sparc-linux.  Yea.
23093
23094 Wed Jul 30 14:10:12 EDT 2003 Mark Crichton <crichton@gimp.org>
23095
23096         * mini-sparc.c: Renamed registers.  Also some macro cleanups.
23097         * exceptions-sparc.c, tramp-sparc.c: Various compile fixes.
23098         They compile, but do not work.
23099
23100 Wed Jul 30 17:52:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
23101
23102         * Makefile.am, cpu-sparc.md, exceptions-sparc.c, mini-sparc.c,
23103         mini-sparc.h, tramp-sparc.c: Beginning of sparc support
23104         from Mark Crichton <crichton@gimp.org> and Christopher Taylor
23105         (ct@gentoo.org).
23106
23107 Tue Jul 29 12:43:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
23108
23109         * mini.c: more opcodes implemented and better support for generics.
23110
23111 Fri Jul 25 18:51:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
23112
23113         * cpu-g4.md, cpu-pentium.md: updates for new instructions.
23114         * mini.c, mini.h: first cut at generics support: some new instructions 
23115         added and changed the behaviour of some of the existing ones.
23116
23117 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
23118
23119         * mini.c: Removed definition of metadata_shared mutex here.
23120
23121 Tue Jul 22 15:21:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
23122
23123         * mini-x86.c: make vararg calls work for instance methods.
23124
23125 Fri Jul 18 19:26:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
23126
23127         * mini.c, mini.h, mini-x86.c, mini-ppc.c: mono_arch_call_opcode()
23128         returns the arguments in a separte list, now.
23129
23130 Fri Jul 18 13:16:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
23131
23132         * aot.c, mini.c: updates for array type representation changes.
23133
23134 Fri Jul 18 11:28:28 CEST 2003 Paolo Molaro <lupus@ximian.com>
23135
23136         * mini.c: register function to perform jit shutdown.
23137
23138 Thu Jul 17 16:02:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
23139
23140         * mini.c: use a faster allocator if possible.
23141
23142 Thu Jul 17 16:00:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
23143
23144         * aot.c: some cleanups and portability changes.
23145
23146 Wed Jul 2 11:08:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
23147
23148         * mini.c: use faster allocation for CEE_BOX if possible.
23149
23150 Mon Jun 30 19:16:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
23151
23152         * mini.c, mini-ops.h, inssel.brg, mini-x86.c: optimized access to fields.
23153         Moved inlined mempcy code to its own function so that is can be
23154         reused. Added an inline memset function as well (optimized initobj).
23155         * cpu-pentium.md, inssel-x86.brg: add and use lea_membase.
23156
23157 Fri Jun 27 11:19:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
23158
23159         * mini.c, mini-ops.h, inssel.brg: optimized a couple of Array methods.
23160
23161 Wed Jun 25 13:19:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
23162
23163         * mini.c, mini.h, mini.x86.c, mini-ppc.c: added facility so that
23164         arch code can setup the cpu for CLR execution, if needed.
23165         We use it on x86 to set the precision of FP operations.
23166
23167 Tue Jun 17 19:02:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
23168
23169         * mini.c: disable some optimizations if we can guess they'll cost too
23170         much for a given method.
23171
23172 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
23173
23174         * mini.h mini.c: Rework last patch based on suggestions by Paolo.
23175         
23176 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
23177         * mini.h mini.c mini-x86.c: Added instruction level coverage 
23178         info collection support.
23179
23180 Mon Jun 16 18:13:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
23181
23182         * driver.c, mini-ppc.c, mini-x86.c, mini.c, mini.h: the coverage stuff
23183         is now implemented in the profiling API. Get rid of a couple of
23184         unnecessary global variables.
23185
23186 2003-06-15  Nick Drochak <ndrochak@gol.com>
23187
23188         * basic-long.cs: tests for negative values for bigmul, and unsigned.
23189         * cpu-g4.md: add op_bigmul and op_bigmul_un
23190         * cpu_pentium.md: add op_bigmul_un
23191         * inssel-long32.brg: add rule for unsigned bigmul
23192         * mini-ops.h: define OP_BIGMUL_UN
23193         * mini-x86.c: THE BUG: handle (un)signed properly
23194         * mini.c: choose unsigned opcode if needed.
23195         This set of patches fixes bug #44291
23196
23197 2003-06-13  Dietmar Maurer  <dietmar@ximian.com>
23198
23199         * mini.c (optimize_branches): improved to handle all kinds of
23200         conditional branches.
23201
23202 Wed Jun 11 18:01:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
23203
23204         * mini.c, mini.h, jit-icalls.c: speedup emulation of opcodes that
23205         don't raise exceptions.
23206
23207 Tue Jun 10 19:00:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
23208
23209         * tramp-x86.c, tramp-ppc.c, debug-mini.c: move arch-specific code
23210         to arch-specific files.
23211
23212 2003-06-09  Martin Baulig  <martin@ximian.com>
23213
23214         * Makefile.am (libs): Added $(LIBGC_LIBS).
23215
23216 Mon Jun 9 20:21:47 CEST 2003 Paolo Molaro <lupus@ximian.com>
23217
23218         * cpu-pentium.md, mini-x86.c: fix (well, actually implement) OP_TAN
23219         and OP_ATAN (fixes bug#44293).
23220
23221 Mon Jun 9 19:00:56 CEST 2003 Paolo Molaro <lupus@ximian.com>
23222
23223         * Makefile.am, mini-x86.c: rename cpu description array to
23224         pentium_desc, since some compilers define the 'pentium' preprocessor
23225         symbol.
23226
23227 2003-05-28  Dietmar Maurer  <dietmar@ximian.com>
23228
23229         * mini.c (mini_select_instructions): add explicit branch if the
23230         following block is not the false target of a conditional branch -
23231         we need this with any optimization that reorder or remove bblocks
23232
23233         * mini.c (optimize_branches): bug fixes
23234
23235 2003-06-06  Dietmar Maurer  <dietmar@ximian.com>
23236
23237         * mini.c (mono_method_to_ir): inline static readonly fields
23238
23239         * ssa.c (fold_tree): start cfold support for long (very simple
23240         cases only)
23241
23242         * cfold.c (mono_constant_fold_inst): opt. CEE_CONV_I8 (OP_ICONST)
23243
23244 Fri Jun 6 11:41:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
23245
23246         * inssel.brg: fixed memcpy (bug #44219).
23247
23248 2003-06-05  Dick Porter  <dick@ximian.com>
23249
23250         * driver.c: Set the glib log levels to not abort if g_message
23251         recurses.
23252
23253         g_set_prgname() has to happen before mini_init() so that the
23254         process handle gets the info.
23255         
23256 Thu Jun 5 20:11:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
23257
23258         * driver.c: add intrins to the default optimizations to get wider
23259         exposure.
23260
23261 Wed Jun 4 19:47:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
23262
23263         * mini.h: some large basic blocks will overflow a 16-bit
23264         integers for symbolic registers.
23265
23266 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
23267
23268         * mini-x86.c (mono_arch_output_basic_block): revert previous fprem changes.
23269         (mono_arch_output_basic_block): fix bug 43499 
23270
23271 Wed Jun 4 13:13:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
23272
23273         * mini.c: kill duplicated definition of mono_debug_format.
23274
23275 Wed Jun 4 13:09:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
23276
23277         * mini-x86.c, arrays.cs: fixed register allocation bug.
23278
23279 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
23280
23281         * mini-x86.c (mono_arch_output_basic_block): use IEEE compatible fprem1
23282
23283         * mini.c (mini_get_opcode_for_method): inline IEEERemainder
23284
23285 2003-06-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23286
23287         * mini.c:
23288         (print_method_from_ip): also print source location information if
23289         available.
23290
23291 2003-06-02  Dietmar Maurer  <dietmar@ximian.com>
23292
23293         * mini.c (mono_find_block_region): bug fix in region code
23294         (mini_method_compile): enable removing unreachable code again, but
23295         only in methods without exception clauses.
23296
23297 Fri May 30 18:40:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
23298
23299         * mini.c, mini-ops.h, cpu-pentium.md, inssel.brg, mini-x86.c, mini.h:
23300         Implemented arglist opcode and handling of TypedReference type.
23301         Fixed x86 call convention when a structure is returned.
23302         Minimal support for calling static vararg methods.
23303
23304 2003-05-30  Dietmar Maurer  <dietmar@ximian.com>
23305
23306         * mini.c (mini_method_compile):  always remove unreachable code,
23307         because the code in them may be inconsistent  (access to dead
23308         variables for example).
23309
23310 Thu May 29 11:44:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
23311
23312         * driver.c, debug-mini.c: warning fixes.
23313
23314 Wed May 28 11:19:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
23315
23316         * Makefile.am, jit.h, mini.h: install header for embedding mono.
23317
23318 Tue May 27 17:56:12 CEST 2003 Paolo Molaro <lupus@ximian.com>
23319
23320         * mini.c: thread-static fields are registered in mono_class_vtable(),
23321         so ensure the function is called before checking for them.
23322
23323 2003-05-27  Dietmar Maurer  <dietmar@ximian.com>
23324
23325         * mini.c (optimize_branches): fix for bug 43586
23326
23327         * jit-icalls.c (mono_llmult_ovf): added an additional check for
23328         overflow (fixes Bug #43639)
23329
23330 Tue May 27 11:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
23331
23332         * mini.c, objects.cs: allow the use of stobj for primitive types.
23333
23334 Tue May 27 10:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
23335
23336         * mini.c: be less strict about argument checking until we support
23337         running the verifier.
23338
23339 2003-05-27  Nick Drochak <ndrochak@gol.com>
23340
23341         * basic-long.cs: tests for (ulong)int * (ulong)int also
23342         * mini.c: use the same trick for (ulong)int * (ulong)int
23343
23344 2003-05-27  Nick Drochak <ndrochak@gol.com>
23345
23346         * basic-long.cs: add regression test for (long)int * (long)int
23347         * cpu-pentium.md: add op_bigmul specification
23348         * inssel-long32.brg: add OP_BIGMUL rule
23349         * mini-ops.h: add OP_BIGMUL
23350         * mini-x86.c: register allocator: handle case where src1 needs to be
23351         in EAX.
23352         * mini.c: substitute special BIGMUL opcode in the tree for 
23353         (long)int * (long)int
23354
23355 Mon May 26 20:20:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
23356
23357         * jit-icalls.c: call the type ctor on field access if needed.
23358
23359 Mon May 26 15:21:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
23360
23361         * mini-ops.h, mini.c, inssel.brg, exceptions.cs: validate arguments passed
23362         to a method (including results of ldelema, bug#43207).
23363
23364 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
23365
23366         * graph.c (cfg_emit_one_loop_level): loop over all blocks. use
23367         colors to show exception handler blocks.
23368
23369         * inssel-x86.brg (OP_OUTARG_VT): dont push zero sized structures
23370         (fix for pinvoke7.cs).
23371
23372 Mon May 26 12:11:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
23373
23374         * mini.h, mini.c: ensure correct initialization order for types that
23375         require it. Prepare for lazy compilation of jit icall wrappers.
23376         Provide a name for opcode emulation to reduce unneeded mallocing.
23377
23378 Fri May 23 16:08:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
23379
23380         * mini-x86.c: better register restoring code and profiling
23381         support for tail calls.
23382
23383 Fri May 23 15:30:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
23384
23385         * mini.h, driver.c: prepare for leaf methods optimization.
23386
23387 Fri May 23 15:28:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
23388
23389         * mini.c: get targets of branches before converting a method.
23390
23391 2003-05-23  Dietmar Maurer  <dietmar@ximian.com>
23392
23393         * mini.c (optimize_branches): added some experimental code (disbaled) 
23394
23395 2003-05-22  Dietmar Maurer  <dietmar@ximian.com>
23396
23397         * mini.c (optimize_branches): fix branch to branch optimization 
23398
23399         * exceptions-x86.c (mono_arch_handle_exception): bug fix.
23400
23401         * mini-x86.c (mono_arch_output_basic_block): cleanup up exception code
23402
23403         * inssel-x86.brg: added OP_START_HANDLER, CEE_ENDFINALLY, OP_ENDFILTER
23404
23405         * mini-x86.c (mono_arch_allocate_vars): only reserve space for lmf
23406         if needed.
23407
23408 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
23409
23410         * mini.c (mono_method_to_ir): call handle_loaded_temps before inlining.
23411         enable use of interface variables again.
23412
23413         * mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate
23414         I1 to registers because there is no simply way to sign extend 8bit
23415         quantities in caller saved registers on x86.
23416
23417         * inssel-float.brg: set costs of some rules to 2 so
23418         that monobure always select the arch. specific ones if supplied,
23419         regardless of the order we pass the files to monoburg.
23420
23421 Tue May 20 17:19:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
23422
23423         * mini.c, mini-x86.c: since the magic trampoline for jumps
23424         can't patch the code directly, we do it as soon as the
23425         method gets compiled.
23426
23427 Tue May 20 16:02:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
23428
23429         * mini-x86.c, mini.h: introduce a new patching method
23430         to support CEE_JMP and tail calls.
23431         * mini.c: obey tail.call. Don't precompile methods target
23432         of CEE_JMP.
23433         * tramp-x86.c: new trampoline code to handle methods
23434         reached through a jump.
23435
23436 2003-05-20  Dietmar Maurer  <dietmar@ximian.com>
23437
23438         * mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16
23439         bit values to registers
23440
23441 2003-05-19  Dietmar Maurer  <dietmar@ximian.com>
23442
23443         * mini.c (mono_compile_get_interface_var): share interface
23444         variables if possible.
23445
23446 2003-05-16  Martin Baulig  <martin@ximian.com>
23447
23448         * debug-mini.c (mono_init_debugger): New function to initialize
23449         the debugger.  This is not in the debugger since it needs to
23450         access some of mini's internals.
23451
23452 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
23453
23454         * mini.c (mono_method_to_ir): inlining fixes/cleanups
23455
23456 Fri May 16 13:27:23 CEST 2003 Paolo Molaro <lupus@ximian.com>
23457
23458         * mini.c, mini-opts.h, inssel.brg: inline small memcpy
23459         for value type handling.
23460
23461 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
23462
23463         * mini.c (mono_method_to_ir): inline LDFLD/STFLD wrappers
23464         (mono_method_check_inlining): enable inlining of all kinds of wrappers
23465
23466 2003-05-15  Lluis Sanchez Gual  <lluis@ideary.com>
23467
23468         * mini.c: fixed little bug in CEE_NEWOBJ case when calling
23469           the constructor through a proxy.
23470
23471 Thu May 15 17:17:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
23472
23473         * jit-icalls.c, inssel.brg: fixes to array element address
23474         calculations.
23475
23476 2003-05-15  Dietmar Maurer  <dietmar@ximian.com>
23477
23478         * mini-x86.c (is_regsize_var): allocate pointer to registers
23479
23480 Thu May 15 13:04:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
23481
23482         * driver.c: fixed typo, added intrins to the set of optimizations
23483         tested with regressions.
23484
23485 Thu May 15 11:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
23486
23487         * mini-ops.h, mini.c, inssel.brg: optimize access to 2D arrays.
23488         * jit-icalls.c, exceptions.cs: fixed index out of range checks, added
23489         test case.
23490
23491 2003-05-14  Dietmar Maurer  <dietmar@ximian.com>
23492
23493         * inssel.brg: remove some common pop instructions without side effects
23494
23495 Wed May 14 12:40:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
23496
23497         * inssel-x86.brg: fixed thinko in int to double conversions.
23498
23499 Wed May 14 12:01:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
23500
23501         * mini.c, jit-icalls.c: added runtime thread-static variable support.
23502
23503 Tue May 13 22:02:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
23504
23505         * inssel-long32.brg: two more missing instructions.
23506
23507 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
23508
23509         * mini.c (mono_emit_call_args): set the cil_code for all arguments
23510         if not already set.
23511
23512 2003-05-12  Zoltan Varga  <vargaz@freemail.hu>
23513
23514         * mini-x86.c (mono_arch_output_basic_block): Handle negative zero
23515         correctly.
23516
23517         * basic-float.cs: Added tests for negative zero.
23518
23519 Sun May 11 14:56:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
23520
23521         * inssel-long32.brg, basic-long.cs, exceptions.cs: handle
23522         a couple of missing operations for long casts, with test cases.
23523
23524 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23525
23526         * exceptions-x86.c: fixed small leaks in mono_arch_handle_exception.
23527
23528 2003-05-09  Dietmar Maurer  <dietmar@ximian.com>
23529
23530         * mini-x86.c (mono_arch_emit_prolog): avoid reallocs with better
23531         code size estimation.
23532
23533 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
23534
23535         * mini.c (mono_jit_create_remoting_trampoline): make it work with
23536         abstract methods (fix bug 42542)
23537
23538         * aot.c: add ability to handle array types
23539         
23540 2003-05-08  Zoltan Varga  <vargaz@freemail.hu>
23541
23542         * mini.c: Call the _specific versions of the object allocation
23543         functions if possible.
23544
23545 Tue May 6 17:18:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
23546
23547         * driver.c: call setlocale ().
23548
23549 Tue May 6 14:38:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
23550
23551         * mini.h, mini.c, aot.c, debug-mini.c, exceptions.c: build fixes for
23552         windows build.
23553
23554 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
23555
23556         * mini.c (optimize_branches): dont touch code inside exception clauses (fix bug 38136)
23557
23558         * exceptions-x86.c (ves_icall_get_frame_info): also skip remoting
23559         wrappers (fix bug 42122)
23560
23561 2003-05-04  Martin Baulig  <martin@ximian.com>
23562
23563         * mini.h (mono_jit_init, mono_jit_cleanup): Added prototypes.
23564
23565         * driver.c: s/MONO_OPT_SAHRED/MONO_OPT_SHARED/g.
23566         s/mini_set_defaults/mono_set_defaults/g.
23567
23568 2003-05-04  Martin Baulig  <martin@ximian.com>
23569
23570         * driver.c: s/mini_parse_default_optimizations/mono_parse_default_optimizations/g.
23571
23572 Sun May 4 11:48:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
23573
23574         * inssel-long32.brg: add missing lreg: OP_LCONV_TO_U8 (lreg) rule
23575         (reported by Don Roberts).
23576
23577 Fri May 2 18:36:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
23578
23579         * mini.c: temporarily work around two bugs for this release.
23580
23581 Fri May 2 17:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
23582
23583         * Makefile.am: avoid linking libmono with GMODULE_LIBS, because
23584         that contains -export-dynamic and it makes using the ld script
23585         useless.
23586         * mini.h, main.c, driver.c: s/mini_main/mono_main/g.
23587
23588 Fri May 2 12:52:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
23589
23590         * mini.h, mini-x86.c, driver.c: disable optimizations not available on a
23591         specific cpu.
23592
23593 Thu May 1 15:28:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
23594
23595         * mini.c: make sure leave calls all the needed finally blocks,
23596         even when the target jumps out of multiple exception clauses.
23597
23598 Thu May 1 15:18:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
23599
23600         * ldscript, Makefile.am: add linker script to reduce the number of
23601         exported symbols (should also fix the issues with libwine defining
23602         some of the same symbols in io-layer).
23603
23604 2003-05-01  Zoltan Varga  <vargaz@freemail.hu>
23605
23606         * driver.c (mini_main): Avoid assertion when no file name is given on 
23607         the command line.
23608
23609 Wed Apr 30 15:33:11 CEST 2003 Paolo Molaro <lupus@ximian.com>
23610
23611         * driver.c: added --version/-V command line option.
23612         Added the inline optimization in the regression tests.
23613
23614 Wed Apr 30 15:16:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
23615
23616         * mini.c, basic-calls.cs: when inlining, save arguments to locals according 
23617         to the type in the method signature (fixes bug#42134).
23618
23619 Wed Apr 30 12:38:44 CEST 2003 Paolo Molaro <lupus@ximian.com>
23620
23621         * mini.c: when inlining, check this is not null only when needed (bug #42135).
23622
23623 Wed Apr 30 11:44:36 CEST 2003 Paolo Molaro <lupus@ximian.com>
23624
23625         * mini-ppc.h, tramp-pcc.c: type fixes from Max Horn <max@quendi.de>.
23626
23627 2003-04-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23628
23629         * driver.c: fixed bug #42100.
23630
23631 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
23632
23633         * mini.c (mono_method_to_ir): UNBOX need to CAST objects first
23634
23635 Mon Apr 28 17:03:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
23636
23637         * mini.c: moved most of the code required to do inlining to its own
23638         function so it can be reused. Inline also ctors if appropriate.
23639
23640 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
23641
23642         * Makefile.am: Link with -export-dynamic so shared libs loaded by
23643         the runtime can call mono API functions.
23644
23645 2003-04-27  Martin Baulig  <martin@ximian.com>
23646
23647         * debug-mini.c (mono_debug_init_method): Added
23648         `guint32 breakpoint_id' argument; if the method has a breakpoint,
23649         send a notification to the debugger.
23650
23651         * mini.c (mono_method_to_ir): Don't insert a breakpoint if we're
23652         running in the Mono Debugger, just pass the breakpoint number to
23653         mono_debug_init_method().
23654
23655         * tramp-x86.c, tramp-ppc.c: Removed the breakpoint trampolines.
23656
23657 Sun Apr 27 13:18:04 CEST 2003 Paolo Molaro <lupus@ximian.com>
23658
23659         * mini.c: allow some more unsafe compares.
23660
23661 Sat Apr 26 11:55:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
23662
23663         * mini-x86.c, Makefile.am: make distcheck works (partially from
23664         a patch by Richard Lee <r.h.lee@attbi.com>).
23665         * regset.c, regset.h: removed, they are unused.
23666
23667 2003-04-25  Dick Porter  <dick@ximian.com>
23668
23669         * driver.c: Usage reports the name as 'mono' not 'mini'
23670         * exceptions-x86.c: Build and run on freebsd
23671
23672 Thu Apr 24 17:09:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
23673
23674         * Makefile.am: install the program with the 'mono' name and
23675         the library as libmono instead of mini and libmini.
23676
23677 Thu Apr 24 17:08:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
23678
23679         * driver.c: provide the APIs for the embedding interface of the old jit.
23680
23681 2003-04-23  Dietmar Maurer  <dietmar@ximian.com>
23682
23683         * jit-icalls.c (helper_stelem_ref): impl. (fix bug 41775)
23684
23685 2003-04-23  Martin Baulig  <martin@ximian.com>
23686
23687         * tramp-x86.c, tramp-ppc.c: Reenable the debugger breakpoint interface.
23688
23689         * driver.c: Added `--debug' command line argument to enable
23690         debugging support.
23691
23692 2003-04-23  Martin Baulig  <martin@ximian.com>
23693
23694         * debug.[ch]: Removed.  The code is now in
23695         ../metadata/mono-debug.[ch] and mono-debug-debugger.[ch].
23696
23697         * debug-stabs.c, debug-dwarf2.c: Removed; nobody used this for the
23698         last six months.
23699
23700 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
23701
23702         * mini.c (mono_method_to_ir): set the cil_code address (fix bug 41525)
23703
23704 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23705
23706         * mini.c:
23707         (mini_cleanup): moved mono_runtime_cleanup call after the call to
23708         mono_domain_finalize.
23709         (mini_method_compile): use mono_method_profile* if the the option is
23710         enabled.
23711
23712 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
23713
23714         * tramp-x86.c (mono_arch_create_jit_trampoline): Subsitute synchronized
23715         methods with their wrapper.
23716
23717         * tramp-ppc.c (mono_arch_create_jit_trampoline): Subsitute synchronized
23718         methods with their wrapper.
23719
23720         * jit-icalls.c (mono_ldvirtfn): Subsitute synchronized methods with
23721         their wrapper.
23722
23723         * mini.c (mono_method_to_ir): Subsitute synchronized methods with their
23724         wrapper.
23725
23726         * mini.c (mono_method_check_inlining): Avoid inlining synchronized
23727         methods.
23728
23729 2003-04-17  Dietmar Maurer  <dietmar@ximian.com>
23730
23731         * exceptions-x86.c (mono_arch_handle_exception): fix for bug 36252
23732
23733 2003-04-16  Dietmar Maurer  <dietmar@ximian.com>
23734
23735         * mini.c (mono_compile_create_var): use g_malloc/g_realloc instead
23736         of the mempool. This is slightly faster and uses less memory
23737
23738 Wed Apr 16 12:53:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
23739
23740         * mini.c: avoid O(n) allocation for variables.
23741
23742 Tue Apr 15 19:13:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
23743
23744         * mini.c: handle items on the stack after inlining methods.
23745
23746 Tue Apr 15 14:17:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
23747
23748         * mini.c: make the method->opcode optimization dependent
23749         on MONO_OPT_INSTRINS and do it lazily.
23750
23751 Tue Apr 15 14:15:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
23752
23753         * driver.c: print overall results at the end of regression run.
23754
23755 Tue Apr 15 11:18:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
23756
23757         * inssel.brg: don't overwrite symbolic registers.
23758
23759 Mon Apr 14 17:41:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
23760
23761         * inssel-x86.brg: fix conversion from long to float.
23762
23763 2003-04-11  Dietmar Maurer  <dietmar@ximian.com>
23764
23765         * mini.c (mini_init): use an opcode for get_Chars (OP_GETCHR)
23766
23767 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
23768
23769         * mini.c (mono_type_blittable): MONO_TYPE_OBJECT is blittable.
23770
23771         * driver.c: Added --print-vtable option as in the old JIT.
23772
23773 Thu Apr 10 17:43:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
23774
23775         * inssel-long32.brg, exceptions.cs: fix conversions from long, too.
23776
23777 Thu Apr 10 16:27:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
23778
23779         * inssel.brg, basic.cs: fixed checked conversions to byte and short.
23780
23781 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
23782
23783         * mini.c regalloc.c regalloc.h: Fix memory leak.
23784
23785 2003-04-09  Dietmar Maurer  <dietmar@ximian.com>
23786
23787         * aot.c (mono_aot_get_method): register all used strings
23788
23789 Wed Apr 9 15:22:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
23790
23791         * mini.c: always intern strings references with ldstr at compile time.
23792
23793 Tue Apr 8 11:41:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
23794
23795         * Makefile.am: add BUILT_SOURCES.
23796
23797 Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
23798
23799         * driver.c: give a better error message when the assembly to execute
23800         doesn't have an entry point.
23801
23802 2003-04-07  Dietmar Maurer  <dietmar@ximian.com>
23803
23804         * Makefile.am: added hack for automake
23805
23806         * mono/mini/mini.c (mono_save_args): always copy arguments to keep
23807         correct sematics.
23808
23809         * mono/mini/ssa.c (mono_ssa_avoid_copies): don't optimize calls
23810
23811 22003-04-07  Martin Baulig  <martin@ximian.com>
23812
23813         * Makefile.am: Added Makefile.am.
23814
23815         * debugger-main.c: Removed, this is now in the debugger where it
23816         belongs.
23817
23818         * mini.pc.in: Call this package `mini' for the moment.
23819
23820
23821
23822
23823
23824
23825
23826
23827
23828
23829
23830
23831
23832
23833