2010-06-26 Zoltan Varga <vargaz@gmail.com>
[mono.git] / mono / mini / ChangeLog
1 2010-06-26  Zoltan Varga  <vargaz@gmail.com>
2
3         * mini-llvm.c: Fix a few problems exposed by make check.
4
5 2010-06-25  Mark Probst  <mark.probst@gmail.com>
6
7         * mini-trampolines.c (common_call_trampoline): An ugly hack to
8         work around a potentially very hard to fix problem with inflating
9         generic methods.
10
11 2010-06-26  Zoltan Varga  <vargaz@gmail.com>
12
13         * method-to-ir.c (mono_emit_wb_aware_memcpy): Remove the workaround as the core
14         problem has been fixes.
15
16 2010-06-25  Zoltan Varga  <vargaz@gmail.com>
17
18         * Makefile.am: Add an 'SGEN' make variable to allow tests to be run with SGEN.
19
20         * mini-gc.c (mini_gc_init_cfg): Use mono_gc_is_moving () instead of HAVE_SGEN_GC.
21         It might be be better to define a MonoGCJitOptions structure later and have the
22         GC return that.
23
24         * mini-darwin.c: Don't undefine pthread_ calls for SGEN, they are no longer defined.
25
26         * Makefile.am: Use libwapi.la for both sgen and non-sgen builds.
27
28         * debugger-agent.c (get_objref): Implement support for sgen.
29
30         * driver.c: Remove the unused gc_wrapper.h include.
31
32         * driver.c (mono_main): Delegate the --desktop mode optimizations to the GC
33         implementation.
34
35 2010-06-25  Zoltan Varga  <vargaz@gmail.com>
36
37         * driver.c (mono_main): Use mono_gc_get_description () to print the GC name.
38
39         * mini-gc.c (mini_gc_init_cfg): New function to initialize GC specific flags
40         in MonoCompile.
41
42         * method-to-ir.c mini.c: Remove usage of HAVE_SGEN_GC and use runtime checks
43         instead.
44
45 2010-06-23  Miguel de Icaza  <miguel@novell.com>
46
47         * Makefile.am: Build the mono-sgen binary a Mono VM with the Sgen
48         GC enabled as well as libmono-sgen-2.0 and libomonosgen-static
49
50         * driver.c: Do not depend on the USED_GC_NAME when using SGen, use
51         it only for Boehm diagnostics.
52
53         * Makefile.am: Make the file a bit more consistent.
54
55         * debug-debugger.c: Wrap the entire file with an #ifdef
56         MONO_DEBUGGER_SUPPORTED to simplify the build.
57
58         * Makefile.am: Fix the opcodes build issue by including the
59         source, not by including the .lo file directly
60
61         Always bring the MDB sources into the build, to drop the
62         dependency on the AM_CONDITIONAL from configure.in as the hard
63         debugger supports Boehm, but not Sgen, this simplifies the build. 
64
65         * Renamed the *.s files into *.S
66
67 2010-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
68
69         * method-to-ir.c (mono_emit_wb_aware_memcpy): Don't emit bitmap
70         wb for now on 64bits systems while issues with valuetype returns
71         are not fixed.
72
73 2010-06-24  Zoltan Varga  <vargaz@gmail.com>
74
75         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add support for using a standard set of
76         passes by calling createStandardFunctionPasses ().
77
78 2010-06-23  Zoltan Varga  <vargaz@gmail.com>
79
80         * mini.h (MONO_INS_HAS_NO_SIDE_EFFECT): Add OP_LDADDR.
81
82 2010-06-22  Zoltan Varga  <vargaz@gmail.com>
83
84         * method-to-ir.c (mono_method_to_ir): Don't mark loads from OP_LDADDR with
85         MONO_INST_FAULT.
86
87         * mini-llvm.c (mono_llvm_emit_method): Recalculate MONO_INST_INDIRECT flags to
88         allow better optimization if the OP_LDADDR which caused the flag to be set was
89         optimized away.
90
91         * exceptions-amd64.c (get_throw_trampoline): Align the stack properly.
92
93         * mini-amd64.c (mono_arch_emit_exceptions): Pass only the type token index, not
94         the type token.
95
96         * mini-llvm.c (emit_entry_bb): Save the this argument only in gshared methods.
97
98         * mini-llvm.c: Fix a couple memory leaks. Get rid of a few #ifdefs.
99
100 2010-06-22  Zoltan Varga  <vargaz@gmail.com>
101
102         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Call patch_callsite ()
103         to handle the code sequence generated for non-near calls. Fixes #616056.
104
105 2010-06-21  Zoltan Varga  <vargaz@gmail.com>
106
107         * exceptions-x86.c (mono_arch_find_jit_info_ext): Adjust eip in the lmf case too.
108
109         * exceptions-x86.c: Add a resume_unwind trampoline for LLVM.
110
111         * mini-llvm.c (exception_cb): For nested clauses, add the same try range to the
112         nesting clause too.
113         (mono_llvm_check_method_supported): Enable llvm for methods with nested clauses.
114         (mono_llvm_emit_method): Instead of calling 'mono_resume_unwind' directly, call a
115         trampoline which saves the context, so changes made to callee saved registers in
116         finally clauses are visible to a nesting catch clause.
117
118         * exceptions-amd64.c: Add a resume_unwind trampoline for LLVM.
119
120         * mini-exceptions.c (mono_handle_exception_internal): Fix support for nested clauses
121         in LLVM compiled code.
122         (mono_handle_exception_internal): Add a 'ctx' argument containing the state after
123         the finally handler has ran.
124
125         * mini.h (ResumeState): New structure containing information required to resume
126         exception handling after executing LLVM compiled finally clauses.
127
128         * exceptions-amd64.c (get_throw_trampoline): Clean up the amd64 throw trampolines a
129         bit, by passing all the registers as one argument.
130
131 2010-06-19  Zoltan Varga  <vargaz@gmail.com>
132
133         * tramp-amd64.c (mono_arch_create_generic_trampoline): Increase the buf len a little,
134         to avoid an assert.
135
136 2010-06-18  Zoltan Varga  <vargaz@gmail.com>
137
138         * aot-compiler.c (emit_klass_info): Mark unloadable classes properly.
139
140         * aot-compiler.c aot-runtime.c: Fix LLVM support.
141
142         * mini-llvm.c: When emitting OP_CALL_HANDLER, avoid branching directly to the landing
143         pad, branch to a new bblock instead.
144
145         * aot-compiler.c (emit_method_code): Use cfg->header instead of the header of
146         orig_method.
147
148         * exceptions-amd64.c (mono_arch_exceptions_init): Fix fullaot support.
149
150         * mini-llvm.c (process_bb): Add support for OP_SQRT when using the LLVM mono branch.
151
152 2010-06-17  Geoff Norton  <gnorton@novell.com>
153
154         * mini-arm.h:
155         * exceptions-arm.c: Move the UCONTEXT macros to mono-sigcontext.h so they
156         can be used by sgen.
157
158 2010-06-17  Zoltan Varga  <vargaz@gmail.com>
159
160         * aot-compiler.c (emit_klass_info): Handle type load exceptions.
161
162         * method-to-ir.c (mono_method_to_ir): Avoid a crash if mono_method_get_header ()
163         fails.
164
165         * exceptions-x86.c (mono_x86_throw_corlib_exception): Negate the decrement of
166         the ip done by throw_exception (), it is not needed for corlib exceptions.
167
168 2010-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
169
170         * method-to-ir.c (mono_emit_wb_aware_memcpy): Simplify this function.
171         Call new jit icall mono_gc_wbarrier_value_copy_bitmap for vt wbarrier
172         of size > 5 words. This support fast barriers for value types up to
173         256/512 bytes which     beyond that the copying itself is the major issue.
174
175         * method-to-ir.c (mini_emit_stobj): The intrinsic version is safe
176         for gsharing, so use it.
177
178         This eliminate all calls to mono_value_copy from managed code in
179         gmcs, fsharp and ipy.
180
181         This gives a 2% perf boost on ipy and 1% on gmcs over previous patches.
182
183         Even thou a lot of mono_value_copy calls were eliminated from fsharp,
184         performance kept
185
186         * mini.c (mini_init): Register new icall.
187
188 2010-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
189
190         * method-to-ir.c (mono_emit_wb_aware_memcpy): Handle nested valuetypes.
191         This eliminates 2% of mono_value_copy calls on ipy and 12% on fsharp.
192
193 2010-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
194
195         * method-to-ir.c (mini_emit_stobj): Don't call mono_value_copy for small
196         value types as the overhead is huge. Manually expand it up to 5 words to
197         avoid code bloat.
198
199         This improves gmcs times by 5% and unmodified binary-tree by 78%. The later
200         is an exception that performance is dominated by mono_value_copy.
201
202         This puts sgen about 5% ahead of boehm in terms of wall-clock on a Core2Quad.
203
204 2010-06-17  Zoltan Varga  <vargaz@gmail.com>
205
206         * mini-llvm.c (process_call): Disable LLVM for calls to generic class init
207         trampolines on x86, since those have their own cconv.
208
209         * exceptions-x86.c (mono_arch_exceptions_init): Implement the llvm throw corlib
210         exception trampolines.
211
212         * tramp-x86.c: Add xdebug info for a few trampolines.
213
214         * mini-llvm.c: Set the name of the arguments.
215
216         * mini-llvm.c (emit_cond_system_exception): Pass the ip of to throw_corlib_trampoline
217         using a block address if using the LLVM mono branch.
218
219         * exceptions-amd64.c (mono_arch_exceptions_init): Add new LLVM throw corlib exception
220         trampolines.
221
222 2010-06-15  Zoltan Varga  <vargaz@gmail.com>
223
224         * mini-ppc.c (mono_arch_get_cie_program): Define this for powerpc too.
225
226         * mini-llvm.c (process_bb): Add a missing CHECK_FAILURE.
227
228         * mini.c (mini_init): Remove some of the llvm restrictions, they are no longer needed.
229
230         * method-to-ir.c (mono_method_to_ir): Enable fast virtual calls when using llvm.
231
232         * mini-trampolines.c (mono_llvm_vcall_trampoline): Rewrite this to use one vtable
233         trampoline per vtable slot index. The slot, along with the 'this' argument is enough
234         to identify the vtable slot address plus the method which needs to be compiled.
235
236         * mini.c (mini_get_vtable_trampoline): Use one vtable trampoline per vtable slot when
237         using llvm.
238
239         * mini-x86.c (get_call_info_internal): Change the managed calling convention so
240         'this' is always passed as the first argument, before the vtype ret arg. This
241         simplifies get_this_arg_reg () and LLVM integration.
242
243         * mini-amd64.c (get_call_info): Fix the handling of MONO_TYPE_TYPEDBYREF after
244         the latest changes.
245
246         * tramp-x86.c (mono_arch_create_generic_trampoline): Emit unwind info for
247         these trampolines.
248
249         * mini-x86.c (mono_arch_get_cie_program): Implement this for x86.
250
251         * mini-llvm.c: Fix compilation with llvm 2.6.
252
253         * mini-amd64.c (CallInfo): Fix the position of the vret_arg_index field.
254
255         * mini-llvm.c (mono_llvm_emit_method): Fix the build if LLVM_MONO_BRANCH is not
256         defined.
257
258         * mini-amd64.c (get_call_info): Change the managed calling convention so 'this'
259         is always passed as the first argument, before the vtype ret arg. This simplifies
260         get_this_arg_reg () and LLVM integration.
261
262 2010-06-14 Rodrigo Kumpera  <rkumpera@novell.com>
263
264         * method-to-ir.c (mono_method_to_ir): Add support for .ctor intrinsics.
265
266         * method-to-ir.c (mini_emit_inst_for_ctor): New function for .ctor intrinsics.
267         For now just call simd intrinsics. This makes "x[0] = new Vector4f (10)" 
268         translate into much nicer code.
269
270 2010-06-14  Zoltan Varga  <vargaz@gmail.com>
271
272         * mini-llvm.c (sig_to_llvm_sig_full): Add a 'sinfo' out argument which returns
273         parameter index information. Use this to simplify a lot of code.
274
275         * unwind.c (mono_unwind_decode_fde): Handle augmentions using a loop.
276
277 2010-06-12  Zoltan Varga  <vargaz@gmail.com>
278
279         * aot-compiler.c (compile_method): Add a 'depth' parameter to add_generic_class too
280         to fix infinite generic recursion. Fixes #612702.
281
282 2010-06-11  Zoltan Varga  <vargaz@gmail.com>
283
284         * object.c: Use a callback to create IMT trampolines, allowing the usage of one
285         imt trampoline per imt slot when using LLVM.
286
287 2010-06-10  Jonathan Pryor  <jpryor@novell.com>
288
289         * mini.c (mini_cleanup): Call mono_runtime_shutdown(). Fixes #438454.
290
291 2010-06-09  Levi Bard  <levi@unity3d.com>
292
293         * debugger-agent.c: Clear unloaded types on appdomain unload.
294
295 2010-06-08  Zoltan Varga  <vargaz@gmail.com>
296
297         * liveness.c (visit_bb): Make the component vregs of long vars volatile as well.
298         Fixes #612206.
299
300         * exceptions.cs: Add a test.
301
302 2010-06-06  Zoltan Varga  <vargaz@gmail.com>
303
304         * mini-llvm.c (mono_llvm_check_method_supported): Only disable llvm for nested clauses.
305
306         * mini.c (mini_method_compile): Move the LLVM checks to a function in mini-llvm.c.
307
308         * mini.c (mono_jit_runtime_invoke): Initialize *exc to NULL before calling the wrapper,
309         so it doesn't have to do it.
310
311         * helpers.c (mono_disassemble_code): Flush stdout, so the output from the spawned
312         process does not mix with ours.
313
314         * mini-llvm.c (mono_llvm_emit_method): Refactor this giant function into smaller
315         ones.
316
317         * mini-llvm.c method-to-ir.c ir-emit.h: When using the llvm mono branch, allow
318         loads/stores which can throw exceptions inside clauses.
319
320 2010-06-05  Zoltan Varga  <vargaz@gmail.com>
321
322         * mini-llvm.c (mono_llvm_emit_method): Fix support for finally clauses with more than
323         one ENDFINALLY.
324
325         * mini.c (mini_init): Register mono_resume_unwind as an icall.
326
327 2010-06-03  Zoltan Varga  <vargaz@gmail.com>
328
329         * dwarfwriter.c: Update after the mono_debug_lookup_locals () changes.
330
331         * debugger-agent.c (method_commands_internal): Ditto. Return scope information for
332         locals.
333
334 2010-06-03  Zoltan Varga  <vargaz@gmail.com>
335
336         * debugger-agent.c (appdomain_unload): Clear all breakpoint instances in the dying
337         appdomain.
338
339 2010-06-02  Zoltan Varga  <vargaz@gmail.com>
340
341         * method-to-ir.c (set_rgctx_arg): New helper function to remove some duplicate code.
342         Use a separate generic class init trampoline for llvm, since it needs a different
343         signature.
344
345         * unwind.c (mono_unwind_decode_fde): Make this decode the mono specific LSDA which
346         includes the location of this/rgctx.
347
348         * mini-llvm.c aot-runtime.c: Enable generic sharing for llvm if using the LLVM mono
349         branch.
350
351 2010-06-01  Zoltan Varga  <vargaz@gmail.com>
352
353         * mini.c (mini_method_compile): Enable llvm+exceptions on LLVM SVN.
354
355         * mini-llvm.c (emit_cond_system_exception): Disable llvm when this occurs in a
356         clause.
357
358 2010-05-31  Zoltan Varga  <vargaz@gmail.com>
359
360         * unwind.c (mono_unwind_decode_fde): The FDE only has an augmention if the CIE
361         says so.
362
363         * aot-runtime.c (decode_eh_frame): Fix an assert condition.
364
365         * aot-compiler.c (patch_to_string): New debugging helper function.
366
367 2010-05-30  Zoltan Varga  <vargaz@gmail.com>
368
369         * exceptions-amd64.c (get_throw_trampoline): Fix the xdebug name of the corlib
370         trampoline.
371
372         * exceptions-x86.c (mono_arch_exceptions_init): Create an llvm rethrow trampoline too.
373
374         * mini-llvm.c (mono_llvm_emit_method): Implement OP_RETHROW.
375
376         * method-to-ir.c (mono_method_to_ir): Emit a OP_NOT_REACHED after a rethrow.
377
378         * mini-llvm.c (emit_call): Compute the containing try clause correctly for nested
379         clauses.
380
381         * mini.c (create_jit_info): Print EH clause info for LLVM too.
382
383 2010-05-28  Mark Probst  <mark.probst@gmail.com>
384
385         * method-to-ir.c (mono_method_to_ir): Emit a write barrier for
386         cpobj with reference types.
387
388 2010-05-28  Mark Probst  <mark.probst@gmail.com>
389
390         * method-to-ir.c (mono_method_to_ir): Only explicitly add the
391         write barrier for reference types.
392
393 2010-05-27  Zoltan Varga  <vargaz@gmail.com>
394
395         * mini-s390x.c (mono_arch_output_basic_block): Applied patch from Aurelien Minvielle
396         . Fix OP_ATOMIC_EXCHANGE_I4 on s390x. Fixes #609023.
397
398 2010-05-31  Martin Baulig  <martin@ximian.com>
399
400         Fix #608271.
401
402         * debugger-agent.c (breakpoints_cleanup): Iterate over `event_requests', call
403         clear_breakpoint() on all breakpoint events and remove them from the list.
404
405 2010-05-27  Martin Baulig  <martin@ximian.com>
406
407         Fix #605698.
408
409         * debugger-agent.c (method_commands, type_commands): Temporarily
410         set the appdomain while executing this method; do all metadata
411         calls in the debuggee's appdomain where user assemblies are loaded.
412
413 2010-05-27  Zoltan Varga  <vargaz@gmail.com>
414
415         * mini-s390x.c (mono_arch_get_delegate_invoke_impls): Fix the s390x build.
416
417 2010-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
418
419         * method-to-ir.c (mono_method_to_ir): Add missing write barrier to stobj.
420
421 2010-05-26  Zoltan Varga  <vargaz@gmail.com>
422
423         * method-to-ir.c: Instead of freeing method headers immediately, save them in a list in
424         MonoCompile, and free them in mono_destroy_compile (), since the MonoType's in them could
425         be referenced even after the header is freed.
426
427         * aot-runtime.c: Remove the half finished support for decoding the .arm_exidx
428         section.
429
430 2010-05-25  Zoltan Varga  <vargaz@gmail.com>
431
432 2010-05-25  Bill Holmes  <billholmes54@gmail.com>
433
434         * genmdesc.c (main): Fixing the detection of the nacl switch.
435
436         Code is contributed under MIT/X11 license.
437
438 2010-05-25  Zoltan Varga  <vargaz@gmail.com>
439
440         * exceptions-amd64.c (mono_arch_find_jit_info_ext): Adjust the ip for LMF frames too.
441
442         * mini-llvm.c aot-compiler.c: More LLVM 2.8 updates.
443
444         * mini.h (LLVM_CHECK_VERSION): New helper macro.
445
446 2010-05-25  Miguel de Icaza  <miguel@novell.com>
447
448         * genmdesc.pl (build_spec): Add support for nacl: keyword also to
449         the Perl program
450
451         * genmdesc.c: Added support for nacl: key on the machine
452         description files to support the extra space required by Google
453         Native Client.
454
455 2010-05-23  Zoltan Varga  <vargaz@gmail.com>
456
457         * mini.c (mono_jit_compile_method_inner): Propagate exceptions in one more place.
458
459 2010-05-23  Zoltan Varga  <vargaz@gmail.com>
460
461         * mini.c (mono_jit_compile_method_inner): Propagate exceptions from
462         mono_runtime_class_init_full ().
463         (mono_jit_runtime_invoke): Ditto. Fixes #608073.
464
465 2010-05-22  Zoltan Varga  <vargaz@gmail.com>
466
467         * mini-llvm.c mini-llvm-cpp.cpp: Update after LLVM 2.8 changes.
468
469 2010-05-21  Zoltan Varga  <vargaz@gmail.com>
470
471         * mini-ppc.c (mono_arch_output_basic_block): Use ins->inst_c1 instead of p1, the
472         two are not the same on ilp32.
473
474 2010-05-21  Zoltan Varga  <vargaz@gmail.com>
475
476         * mini.c (mono_jit_compile_method_inner): Remove a DISABLE_JIT block which was
477         added by mistake.
478
479         * mini-ppc.c: Fix the DISABLE_JIT build.
480
481 2010-05-20  Zoltan Varga  <vargaz@gmail.com>
482
483         * aot-runtime.c (decode_resolve_method_ref): Rename this from decode_method_ref_2.
484         (make_writable): Remove this unused function.
485
486 2010-05-20  Zoltan Varga  <vargaz@gmail.com>
487
488         * aot-compiler.c: Collect all information about a PLT entry into a separate MonoPltEntry
489         structure. Make the labels to plt entries local symbols instead of assembler local
490         labels, since tha latter causes problems for the iphone linker.
491
492 2010-05-19  Zoltan Varga  <vargaz@gmail.com>
493
494         * mini-ppc.c (mono_ppc_is_direct_call_sequence): Handle one more case with ilp32.
495
496 2010-05-17  Zoltan Varga  <vargaz@gmail.com>
497
498         * mini-ppc.c (mono_ppc_is_direct_call_sequence): Handle ilp32.
499         (ppc_patch_full): Ditto.
500
501         * mini-arm.c (mono_arch_build_imt_thunk): Fix the fail_tramp case.
502
503         * method-to-ir.c (mono_method_to_ir): Use fast generic virtual method invocation
504         if gshared is enabled, to avoid asserts in the trampoline code.
505
506         * mini-ia64.c (mono_arch_build_imt_thunk): Implement generalized imt thunks
507         on ia64.
508
509 2010-05-15  Geoff Norton  <gnorton@novell.com>
510
511         * dwarfwriter.c, xdebug.c: Fix a pretty large leak when running in 
512         xdebug mode.
513
514 2010-05-14  Geoff Norton  <gnorton@novell.com>
515
516         * exceptions-x86.c: Fix the alignment of this trampoline so we dont get a 
517         misaligned stack on darwin.
518
519 2010-05-14  Zoltan Varga  <vargaz@gmail.com>
520
521         * mini-arm.c aot-compiler.c: Implement support for generalized imt thunks on
522         arm.
523
524 2010-05-14  Zoltan Varga  <vargaz@gmail.com>
525
526         * xdebug.c: Fix ARM support.
527
528 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
529
530         * exceptions-x86.c (mono_arch_handle_exception): Resume from the signal handler
531         and do most of the work on the normal stack.
532         (mono_x86_get_signal_exception_trampoline): New x86 specific trampoline function.
533
534 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
535
536         * aot-compiler.c: Put non-code data into the .rodata section on linux.
537
538 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
539
540         * exceptions-arm.c (mono_arch_handle_exception): Fix the cross-compile case.
541
542 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
543
544         * exceptions-arm.c (mono_arch_handle_exception): Resume from the signal handler
545         and do most of the work on the normal stack.
546
547 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
548
549         * exceptions-amd64.c (mono_arch_handle_exception): Resume from the signal handler
550         and do most of the work on the normal stack even if sigaltstack is disabled.
551
552 2010-05-12  Zoltan Varga  <vargaz@gmail.com>
553
554         * exceptions-amd64.c (mono_arch_sigctx_to_monoctx): Simplify this now that
555         UCONTEXT_REG_ constants are available on linux as well.
556         (mono_arch_monoctx_to_sigctx): Ditto.
557         (mono_arch_ip_from_context): Ditto.
558
559 2010-05-12  Zoltan Varga  <vargaz@gmail.com>
560
561         * debugger-agent.c (set_breakpoint): Fix setting of pending breakpoints in
562         other domains.
563
564 2010-05-11  Zoltan Varga  <vargaz@gmail.com>
565
566         * aot-compiler.c (emit_plt): Don't align the plt to a pagesize on x86, it is
567         no longer needed.
568
569 2010-05-10  Zoltan Varga  <vargaz@gmail.com>
570
571         * debugger-agent.c (insert_breakpoint): Print a more descriptive error message
572         if a breakpoint cannot be inserted.
573
574 2010-05-08  Zoltan Varga  <vargaz@gmail.com>
575
576         * aot-compiler.c (emit_and_reloc_code): Fix a warning.
577
578 2010-05-07  Zoltan Varga  <vargaz@gmail.com>
579
580         * debugger-agent.c (frame_commands): Return an error instead of asserting if
581         no JIT info is found for the method.
582
583 2010-05-05 Jonathan Chambers  <joncham@gmail.com>
584
585         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Protect against a NULL sigctx
586         in debug printf.
587
588 2010-05-05  Zoltan Varga  <vargaz@gmail.com>
589
590         * mini-amd64.c (mono_arch_get_trampolines): New arch specific function returning
591         a list of arch specific trampolines.
592
593         * aot-compiler.c (emit_trampolines): Use it.
594
595 2010-05-05  Zoltan Varga  <vargaz@gmail.com>
596
597         * tramp-<ARCH>.c exceptions-<ARCH>.c mini-trampolines.c mini-exceptions.c
598         aot-compiler.c: Use the _full trampoline creation functions on all platforms,
599         get rid of the _full from their name.
600
601 2010-05-05  Zoltan Varga  <vargaz@gmail.com>
602
603         * tramp-x86.c (mono_arch_create_generic_trampoline): Call
604         get_nullified_class_init_trampoline to remove some code duplication.
605
606 2010-05-03  Zoltan Varga  <vargaz@gmail.com>
607
608         * mini-x86.c (mono_arch_emit_prolog): Fix full-aot support for thread
609         attach.
610
611 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
612
613         * mini-amd64.c (mono_arch_emit_load_aotconst): New arch-specific function.
614
615         * tramp-amd64.c: Use emit_load_aotconst to remove some code duplication.
616
617         * aot-runtime.c (init_plt): Make the default entries point to the AOT trampoline,
618         there is no need to jump through the first plt entry.
619
620         * aot-runtime.c (mono_aot_get_named_code): Rename to mono_aot_get_trampoline.
621
622         * aot-runtime.c (mono_aot_get_plt_entry): Move the arch specific parts to an
623         arch-specific function.
624         (mono_aot_get_plt_info_offset): Ditto.
625
626         * aot-runtime.c (mono_aot_register_jit_icall): New helper function called from
627         mono_arch_init () to register jit icalls called from full-aot trampolines.
628         (load_function): Get rid of the arch specific #ifdefs, move the relevant code
629         to mini-<ARCH>.c.
630
631         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception_full): Get rid of
632         the specialized throw corlib exception trampoline, use a variant of the normal
633         trampoline along with a new C function which does the call to
634         mono_exception_from_token (), just like on x86.
635
636 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
637
638         * mini-trampolines.c aot-compiler.c tramp-<ARCH>.c exceptions-<ARCH>.c:
639         Reorganize the full aot trampoline creation functions, instead of taking a bunch
640         of out arguments, they will now take a MonoTrampInfo** out argument. Simplify
641         some code in aot-compiler.c because of this. Remove the non-full aot trampoline
642         creation functions on architectures which have the full-aot ones.
643
644 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
645
646         * mini-ppc.c (mono_arch_decompose_long_opts): Fix LNEG.
647
648 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
649
650         * mini-ppc.c (mono_arch_emit_exceptions): Initialize exc_throw_pos/found
651         explicitly, this seems to be required by some gcc versions at -O2.
652
653         * mini-arm.c: Ditto.
654
655 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
656
657         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Fix full-aot support for
658         has_target delegate invokes.
659
660 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
661
662         * mini.h (MonoAotTrampInfo): Rename this to MonoTrampInfo, add patches/unwind
663         info fields.
664
665         * aot-compiler.c (mono_aot_tramp_info_create): Rename to mono_tramp_info_create,
666         add patches/unwind info arguments, move to mini.c.
667
668         * mini-<ARCH>.c aot-compiler.c: Update after the above changes.
669
670 2010-04-30  Zoltan Varga  <vargaz@gmail.com>
671
672         * debugger-agent.c (type_commands): Add a new CMD_TYPE_GET_SOURCE_FILES_2
673         command which returns full path names.
674
675 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
676
677         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline_full): Set the
678         code_size output variable.
679
680         * mini-x86.c (mono_arch_emit_prolog): Compute the GOT addr before calling
681         mono_get_lmf_addr.
682         
683 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
684
685         * mini-x86.c (mono_arch_emit_prolog): Remove a disable_aot which is not needed.
686         (mono_arch_cpu_optimizazions): Make this a no-op when running with full aot.
687         (mono_arch_cpu_enumerate_simd_versions): Ditto.
688
689 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
690
691         * image-writer.c (asm_writer_emit_alignment): Use ilog2 for alignments for the
692         apple assembler.
693
694 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
695
696         * mini-x86.c (mono_arch_emit_prolog): Avoid an assert in full-aot mode.
697
698 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
699
700         * aot-runtime.c (load_function): Use TARGET_X86 instead of __i386__.
701
702 2010-04-28  Zoltan Varga  <vargaz@gmail.com>
703
704         * aot-compiler.c (emit_got_info): Double the buffer size to avoid an assert.
705
706 2010-04-27  Zoltan Varga  <vargaz@gmail.com>
707
708         * dwarfwriter.c (emit_line_number_info): Get rid of the usage of GArray, so
709         line number support works with eglib.
710
711 2010-04-27  Miguel de Icaza  <miguel@novell.com>
712
713         * driver.c, mini.c: Since linking with LLVM makes the default Mono
714         dirty an extra 70kb pages on startup we are now going to choose a
715         different strategy: ship mono and mono-llvm binaries, with the
716         second being the one that links with LLVM and defaults to LLVM
717         being enabled.
718
719 2010-04-27  Zoltan Varga  <vargaz@gmail.com>
720
721         * tramp-x86.c exceptions-x86.c mini-x86.c aot-compiler.c aot-runtime.c: 
722         Implement full-aot support on x86.
723
724         * method-to-ir.c: Always use a got var on x86 too, just like on ppc, because the
725         trampolines depend on it. Use MONO_ARCH_GOT_REG as the got register, instead of
726         the first register returned by get_global_int_regs ().
727
728         * cpu-x86.md: Fix the length of insertx_u1_slow.
729
730         * iltests.il.in: Disable tail call tests when running with full-aot.
731
732 2010-04-26  Zoltan Varga  <vargaz@gmail.com>
733
734         * method-to-ir.c (mono_op_to_op_imm_noemul): Fix a warning.
735
736 2010-04-24  Mark Probst  <mark.probst@gmail.com>
737
738         * mini.c, driver.c: Initialize mono_use_llvm in mono_main(), not
739         in the initializer, because it's non-constant.
740
741 2010-04-23  Miguel de Icaza  <miguel@novell.com>
742
743         * mini.c: Use MONO_USE_LLVM as an environment flag to turn the use
744         of LLVM on by default.   Used for buildbots and other setups.
745
746 2010-04-24  Zoltan Varga  <vargaz@gmail.com>
747
748         * mini.c: Set mono_use_llvm to FALSE even if mono is compiled with LLVM.
749
750 2010-04-23  Kornel Pal  <kornelpal@gmail.com>
751
752         * method-to-ir.c (mono_method_to_ir): Enable inlining of pointer-sized unmanaged
753         initonly static fields when using moving GC.
754
755         Contributed under MIT/X11 license.
756
757 2010-04-23  Geoff Norton  <gnorton@novell.com>
758
759         * mini-amd64.h: Darwin x86_64 support.
760
761 2010-04-20  Jonathan Pryor  <jpryor@novell.com>
762
763         * exceptions-arm.c: Remove platform checks in favor of configure checks.
764
765 2010-04-19  Jonathan Pryor  <jpryor@novell.com>
766
767         * exceptions-arm.c: Add Android support for sigcontext structure.
768
769 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
770
771         * mini.c (mono_jit_compile_method_inner): Implement the check for native func
772         wrappers correctly now that their wrapper info is NULL.
773
774 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
775
776         * mini.c (mono_jit_compile_method_inner): Avoid calling
777         mono_marshal_method_from_wrapper () for native func wrappers. Fixes #597189.
778
779 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
780
781         * genmdesc.c (inst_name): Define this as a copy of mono_inst_name in helpers.c,
782         so the latter can be #ifndef DISABLE_JIT-ed.
783
784         * helpers.c: Comment out the opstr array if DISABLE_JIT is set.
785
786 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
787
788         * method-to-ir.c driver.c: Disable a few more things when DISABLE_JIT is set.
789
790 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
791
792         * mini-llvm.c (emit_entry_bb): Fix support for simd arguments passed on the
793         stack.
794
795 2010-04-15  Zoltan Varga  <vargaz@gmail.com>
796
797         * debugger-agent.c (type_commands): Call mono_class_setup_methods () before
798         calling mono_class_num_methods (). Fixes #592244.
799
800 2010-04-14  Zoltan Varga  <vargaz@gmail.com>
801
802         * mini-x86.c (mono_arch_get_llvm_call_info): Handle empty structures correctly.
803
804         * mini-llvm.c: Disable LLVM for calls with non-default calling conventions.
805
806 2010-04-14  Zoltan Varga  <vargaz@gmail.com>
807
808         * method-to-ir.c (handle_box_inst): Merge into handle_box, simplify the merged
809         version.
810         * (handle_alloc): Ditto.
811         (mono_method_to_ir): Remove the constrained call restriction added by a previous
812         change, its not needed anymore.
813
814 2010-04-12  Zoltan Varga   Kumpera  <rkumpera@novell.com>
815
816         * mini-posix.c (sigusr1_signal_handler): Fix build on
817         non x86/amd64 systems.
818
819 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
820
821         * method-to-ir.c (mono_method_to_ir): Disable generic sharing for constrained
822         calls where the constrained class needs a context. Fixes #595863.
823
824         * iltests.il.in: Add a test.
825
826 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
827
828         * mini.c (mini_method_compile): Disable llvm+methods with clauses again, llvm
829         2.6/SVN seems to have broken support for them.
830
831 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
832
833         * mini-llvm.c: Fix support for LLVM 2.6.
834
835 2010-04-10  Zoltan Varga  <vargaz@gmail.com>
836
837         * debugger-agent.c (thread_commands): Add a GET_ID command to get the
838         MonoInternalThread belonging to the thread.
839
840 Fri Apr 9 15:28:01 CEST 2010 Paolo Molaro <lupus@ximian.com>
841
842         * driver.c, optflags-def.h, ir-emit.h: introduce an unsupported
843         unsafe optimization that will remove bound checks.
844
845 2010-04-08  Kornel Pal  <kornelpal@gmail.com>
846
847         * method-to-ir.c (mini_emit_inst_for_method): Fix a typo that caused
848         CompareExchange not to be inlined for I8.
849
850         Contributed under MIT/X11 license.
851
852 2010-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
853
854         * array.cs: Add tests for cast between primitive array types.
855
856 2010-04-07 Andreia Gaita  <avidigal@novell.com>
857
858         * Makefile.am: create a convenience library for moon to link with
859
860 2010-04-07 Paolo Molaro <lupus@ximian.com>
861
862         * method-to-ir.c: optimize array accesses from generic interfaces.
863
864 2010-04-06  Zoltan Varga  <vargaz@gmail.com>
865
866         * mini-llvm.c: Update after the memset/memcpy intrinsics changes in LLVM SVN.
867
868 2010-04-05 Rodrigo Kumpera  <rkumpera@novell.com>
869
870         * method-to-ir.c (mono_method_to_ir): Handle call to virtual final methods
871         of marshalbyref classes.
872
873         Fixes #515884.
874
875 2010-04-05 Rodrigo Kumpera  <rkumpera@novell.com>
876
877         * aot-compiler.c (emit_exception_debug_info): Encode try holes
878         information.
879
880         * aot-runtime.c (decode_exception_debug_info): Decode try holes
881         information.
882
883         * mini.h: Increase AOT version.
884
885 2010-04-04  Andreas Faerber  <andreas.faerber@web.de>
886
887         * mini-x86.h: Only enable soft debugger when using sigaction or on
888         Windows. Fixes build on Haiku (lacks siginfo_t).
889
890         Code is contributed under MIT/X11 license.
891
892 2010-04-02  Andreas Faerber  <andreas.faerber@web.de>
893
894         * mini.h, mini-x86.h: Suppress sigaction for Haiku, add support for
895         BeOS-style signal handlers.
896
897         Code is contributed under MIT/X11 license.
898         
899 2010-04-02  Zoltan Varga  <vargaz@gmail.com>
900
901         * mini-posix.c (sigusr1_signal_handler): Fix openbsd support.
902
903 2010-04-01 Rodrigo Kumpera  <rkumpera@novell.com>
904
905         * mini-exceptions.c: Fix win32 build.
906
907 2010-04-01  Mark Probst  <mark.probst@gmail.com>
908
909         * mini.c, driver.c: Call mono_gc_base_init() before
910         mono_debug_init().
911
912 2010-04-01  Sebastien Pouliot  <sebastien@ximian.com>
913
914         * method-to-ir.c (ensure_method_is_allowed_to_[access_field|
915         call_method]): Delegate the actual work in security-core-clr.c
916         to ease code sharing.
917
918 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
919
920         * decompose.c (mono_decompose_opcode): Set the cfg exception if the unsupported
921         float conv.ovf.un opcodes are encountered, instead of asserting later.
922         Fixes #566296.
923
924 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
925
926         * decompose.c (mono_decompose_opcode): Add OP_ICONV_TO_U4_UN as a no-op.
927
928         * iltests.il.in: Add a test.
929
930 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
931
932         * mini-amd64.c (mono_arch_emit_call): Fail compilation if an argument is too
933         large. Fixes #567040.
934
935         * method-to-ir.c: Call CHECK_CFG_EXCEPTION after emitting a call.
936
937 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
938
939         * method-to-ir.c (handle_ccastclass): Call save_cast_details (). Fixes
940         #592711.
941
942 2010-03-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
943
944         * mini-trampolines.c: Surround mono_handler_block_guard_trampoline and
945         mono_create_handler_block_trampoline with the proper #ifdef so that it
946         compiles on amd64.
947
948 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
949
950         * mini-exceptions.c: Introduce mono_walk_stack_full, which
951         allows to select if it's new or old context that is passed to 
952         the callback.
953
954         * mini-exceptions.c (mono_handle_exception_internal): Handle the
955         case when executing a guarded handler from the EH machinery.
956
957         * mini-exceptions.c (mono_install_handler_block_guard): New function
958         responsible for checking for handler blocks, installing the guard and
959         clearing abort state.
960
961         * mini-posix.c (sigusr1_signal_handler): Call mono_install_handler_block_guard
962         to check for handler blocks and skip interruption logic if one was found.
963
964         * mini-trampolines.c (mono_handler_block_guard_trampoline): Function called
965         by the handler block guard trampoline. Resumes interruption by raising the
966         pending ThreadAbortException.
967
968         * mini.c (create_jit_info): Calculate the end address of a finally block.
969
970         * mini-x86.c (mono_arch_install_handler_block_guard): Patch the return address
971         of a finally block to a specified address and return the old one.
972
973         * tramp-x86.c (mono_arch_create_handler_block_trampoline): The handler block
974         trampoline patches the original return address and calls the trampoline function.
975
976 2010-03-30  Zoltan Varga  <vargaz@gmail.com>
977
978         * mini-trampolines.c (mono_aot_trampoline): Remove some dead code.
979
980         * aot-runtime.c (mono_aot_patch_plt_entry): New helper function, which only
981         does the patching if the callee is in the same domain.
982
983         * aot-runtime.c mini-trampolines.c: Call mono_aot_patch_plt_entry instead
984         of mono_arch_patch_plt_entry ().
985
986 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
987
988         * mini.c (create_jit_info): Fix try block hole length encoding.
989
990 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
991
992         * mini.c (create_jit_info): Emit saner debug spew. Now it doesn't
993         duplicate information and print offsets instead of absolute addresses.
994
995 2010-03-29  Zoltan Varga  <vargaz@gmail.com>
996
997         * debugger-agent.c (jit_end): Send type loads for types loaded before the VMStart
998         event is sent. Fixes #591733.
999
1000 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
1001
1002         * mini-posix.c (SIG_HANDLER_SIGNATURE): Handle the case when ctx is NULL on
1003         OpenBSD.
1004
1005 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
1006
1007         * debugger-agent.c (mono_debugger_agent_init): Set the GC type of the
1008         thread_to_tls hash table.
1009
1010         * image-writer.c (bin_writer_emit_writeout): Fix the size of the got.plt
1011         section. Fixes #591000.
1012
1013 2010-03-26  Andreas Faerber  <andreas.faerber@web.de>
1014
1015         * Makefile.am (version.h): Check for pure .git directory only,
1016         fixes SVN revision when using git without git-svn.
1017
1018         Contributed under MIT/X11 license.
1019
1020 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
1021
1022         * aot-runtime.c: Apply some openbsd changes from openbsd ports.
1023
1024 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1025
1026         * basic-simd.cs: Test for vector x scalar binary operators.
1027
1028 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1029
1030         * simd-intrincs.c (simd_intrinsic_emit_binary): Support binary
1031         intrinsics with expanded scalar arguments.
1032
1033 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1034
1035         * mini-exceptions.c (get_exception_catch_class): Non catch clauses
1036         don't have an exception class, so don't decode it. This would crash
1037         with filter clauses.
1038
1039 2010-03-24  U-anarquia\miguel  <miguel@anarquia>
1040
1041         Make sure that trunk builds with DISABLE_JIT, an update to the
1042         PlayStation 3 port.
1043         
1044         * mini.c (mini_get_shared_method): this code seems to be necessary
1045         regardless of whether DISABLE_JIT has been defined.
1046
1047         (mono_jit_compile_method_inner): it seems that this method is
1048         required even in full AOT mode, so ifdef out only the pieces that
1049         try to genrate code (the body of code that applies patches to the
1050         code).  
1051
1052         (mini_method_compile): do not compile when using DISABLE_JIT.
1053
1054         * mini-ppc.c (mono_arch_get_allocatable_int_vars)
1055         (mono_arch_output_basic_block, mono-arch_emit_exceptions): Do not
1056         compile when DISABLE_JIT is set.
1057
1058 2010-03-24  Mark Probst  <mark.probst@gmail.com>
1059
1060         * mini.c (mono_create_tls_get): Only create a TLS operation if the
1061         arch really supports it.
1062
1063 2010-03-24  Mark Probst  <mark.probst@gmail.com>
1064
1065         * mini-x86.c, mini-x86.h, mini.c: CEE_MONO_TLS support for Darwin/x86.
1066
1067 2010-03-23  Neale Ferguson <neale@sinenomine.net>
1068
1069         * exceptions-s390x.c: Add support for
1070         mono_arch_get_throw_corlib_exception and fix throw by name.
1071
1072         * mini-s390x.c: Add IMT support; Fix stack parameter passing
1073         logic (especially for varargs); Correct localloc sizing; Add
1074         mono_arch_get_this_arg_from_call and
1075         mono_arch_get_this_arg_from_call.
1076
1077         * mini-s390x.h: Add support for facility list extraction;
1078         Correct/update MONO_ARCH_xxx settings.
1079
1080         * mini-s390.c: Minor corrections to instruction output for
1081         varargs. No IMT implementation - I think it's time to deprecate
1082         s390 and just leave s390x.
1083
1084         * tramp-s390x.c: Correct creation of trampoline instruction
1085
1086
1087         * cpu-s390x.md: Update some instruction lengths
1088
1089 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
1090
1091         * mini-generic-sharing.c (fill_in_rgctx_template_slot): Remove an assert which
1092         can be hit with partial sharing.
1093
1094         * mini-generic-sharing.c (get_shared_class): Handle partially shared methods
1095         in non-shared classes correctly.
1096         (generic_inst_is_sharable): Allow all primitive types in partial sharing.
1097         Turn on partial sharing.
1098
1099 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
1100
1101         * mini-amd64.h: Put back MONO_ARCH_NOMAP32BIT for OpenBSD which was removed
1102         by mistake.
1103
1104 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
1105
1106         * method-to-ir.c (mono_method_to_ir): Handle the failure of
1107         mono_method_signature ().
1108
1109         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
1110
1111         * mini.c (mini_method_compile): Get the signature of cfg->method early with
1112         error checking, so later calls do not need error checking.
1113
1114 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
1115
1116         * exceptions-amd64.c: Add support for OpenBSD which has no UCONTEXT_GREGS.
1117
1118         * mini-amd64.h: Enable MONO_ARCH_USE_SIGACTION on OpenBSD as well.
1119
1120 2010-03-22 Rodrigo Kumpera  <rkumpera@novell.com>
1121
1122         * mini-exceptions.c (mono_handle_exception_internal): Don't
1123         check try_end for archs different than s390. 
1124
1125         * mini.c (create_jit_info): Don't crash if the finallt block is the
1126         last one.
1127
1128 2010-03-22 Rodrigo Kumpera  <rkumpera@novell.com>
1129
1130         * driver.c (mono_main): Don't free global codeman under linux since
1131         glic now peeks at code on stack for more archs than just amd64.
1132
1133 Mon Mar 22 18:09:09 CET 2010 Paolo Molaro <lupus@ximian.com>
1134
1135         * mini.c, method-to-ir.c: changes to support compressed interface
1136         bitmaps.
1137
1138 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
1139
1140         * mini-x86.h: Applied patch from Robert Nagy (Robert@openbsd.org).
1141         Use sigaction on OpenBSD too.
1142
1143 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
1144
1145         * debugger-agent.c (event_req_matches_assembly): Handle request modifiers too.
1146
1147 2010-03-21  Andreas Faerber  <andreas.faerber@web.de>
1148
1149         * debugger-agent.c: #include sys/select.h for fd_set.
1150
1151         Code is contributed under MIT/X11 license.
1152
1153 2010-03-21  Zoltan Varga  <vargaz@gmail.com>
1154
1155         * mini.c (SIG_HANDLER_SIGNATURE): Fix the build on platforms without sigaction
1156         (openbsd+amd64 ?).
1157
1158 2010-03-21  Zoltan Varga  <vargaz@gmail.com>
1159
1160         * mini-ppc.c (mono_arch_emit_exceptions): Avoid an assert in ppc_patch () for
1161         some large methods with lots of exception handlers. Fixes #440924.
1162
1163 Sat Mar 20 11:56:24 CET 2010 Paolo Molaro <lupus@ximian.com>
1164
1165         * method-to-ir.c: remove code duplication for interface checks.
1166
1167 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
1168
1169         * debugger-agent.c (clear_event_requests_for_assembly): New helper function.
1170         (assembly_unload): Clear all event requests referencing the to-be unloaded
1171         assembly.
1172
1173
1174 Fri Mar 19 16:45:20 CET 2010 Paolo Molaro <lupus@ximian.com>
1175
1176         * mini.h, mini-exceptions.c: restore the state of the stack
1177         guard page permissions.
1178
1179 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
1180
1181         * mini-trampolines.c (common_call_trampoline): Remove the condition guarding the
1182         call site patching code, it doesn't appear to be needed.
1183
1184 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
1185
1186         * mini-generic-sharing.c: Add infrastructure for partial sharing, ie.
1187         sharing generic methods whose type arguments are a mix of reference and
1188         non-reference types. Not yet turned on.
1189
1190         * mini.c (mini_get_shared_method): New helper function to return
1191         the method which will be compiled/registered in the JIT tables when doing
1192         generic sharing.
1193         (mono_domain_lookup_shared_generic): Moved to mini.c from mini-generic-sharing.c,
1194         use mini_get_shared_method ().
1195
1196         * mini.c (mini_method_compile): Register the same method which is compiled when
1197         doing generic sharing.
1198
1199         * mini.c aot-compiler.c aot-runtime.c: Add support for partial sharing.
1200
1201         * generics.cs: Add partial sharing tests.
1202
1203 2010-03-17 Jerry Maine  <crashfourit@gmail.com>
1204
1205         * mini.h : Changed the SIMD_VERSION* enum values to match those in Mono.Simd.AccelMode.
1206                    Add an enum value that or's all possable values together. Add an enum value
1207                    that marks the end of the used bit indexes.
1208
1209         * mini-amd64.c : Make changes to match the changes in mini.h 
1210
1211         * mini-x86.c : Make changes to match the changes in mini.h
1212
1213         * simd-intrinsics.c : Reorder the SimdIntrinsc struct to add more bits to
1214                    simd_version to support more simd versions. Changed the name of
1215                    simd_version to simd_version_flags to make it more intuitive that
1216                    it now contains bit flags. Reordered the *_intrinsics arrays to
1217                    match the changes above. Changed emit_intrinsics() to use the new
1218                    setup mentioned above.
1219
1220         Code is contributed under MIT/X11 license.
1221
1222 2010-03-17 Rodrigo Kumpera  <rkumpera@novell.com>
1223
1224         * mini-*.c (mono_arch_output_basic_block): Record try block holes on all
1225         remaining archs. Alpha and hppa maintainers, please stand up.
1226
1227 2010-03-17  Zoltan Varga  <vargaz@gmail.com>
1228
1229         * mini-ppc.c (mono_arch_build_imt_thunk): Always save and restore r11 since it
1230         is needed even when fail_tramp!=NULL.
1231
1232 2010-03-17  Zoltan Varga  <vargaz@gmail.com>
1233
1234         * debugger-agent.c (insert_breakpoint): Write a log message.
1235
1236 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1237
1238         * iltests.il.in: Add a few tests for LEAVE going over multiple
1239         finally clauses.
1240
1241 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1242
1243          * mini-x86.c (mono_arch_output_basic_block): Record try block holes.
1244
1245 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1246
1247         * mini.h (MonoBasicBlock): Add native_length field.
1248         * mini.h (MonoCompile): Add try_block_holes field.
1249         * mini.h (MonoInst): Add exception_clause pointer to
1250         the data union.
1251
1252         * mini.c (mono_codegen): Calculate MonoBasicBlock::native_length.
1253         * mini.c (mono_cfg_add_try_hole): New function to register possible
1254         holes in try blocks.
1255         * mini.c (create_jit_info): Fill in the holes information.
1256
1257         * mini-exceptions.c: Verify for holes when checking if an IP is covered
1258         by a try block.
1259
1260         * method-to-ir.c: Add the EH clause to the CALL_HANDLE instruction.
1261
1262 Tue Mar 16 13:16:16 CET 2010 Paolo Molaro <lupus@ximian.com>
1263
1264         * jit-icalls.c: adjusted for the array API changes.
1265
1266 2010-03-16  Zoltan Varga  <vargaz@gmail.com>
1267
1268         * iltests.il.in: Disable the fconv_to_i test on sparc too.
1269
1270 2010-03-16  Zoltan Varga  <vargaz@gmail.com>
1271
1272         * debugger-agent.c: Simplify the way breakpoints are processed by removing
1273         the 'pending' flag. This fixes support for appdomains too.
1274
1275
1276 Mon Mar 15 18:25:49 CET 2010 Paolo Molaro <lupus@ximian.com>
1277
1278         * mini-amd64.c, mini-ia64.c: remove direct access to method->header.
1279
1280 2010-03-12  Zoltan Varga  <vargaz@gmail.com>
1281
1282         * simd-intrinsics.c (simd_intrinsic_emit_getter): Don't emit shuffle opcodes
1283         when using LLVM, LLVM generates it itself when needed.
1284
1285         * mini-llvm-cpp.cpp (mono_llvm_build_aligned_load): New helper function.
1286
1287         * mini-llvm.c: Use an unaligned load for OP_LOADX_MEMBASE. Add zero extension
1288         to some OP_EXTRACT_ opcodes. Fix the naming of some sse intrinsics. Fix
1289         OP_ANDNPS/OP_ANDNPD.
1290
1291 2010-03-11  Zoltan Varga  <vargaz@gmail.com>
1292
1293         * tramp-x86.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code' for
1294         the pc instead of 'buf'. Fix the call to mono_arch_flush_icache ().
1295         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
1296
1297 2010-03-11  Martin Baulig  <martin@ximian.com>
1298
1299         * debugger-agent.c (type_commands): Add NULL check to
1300         `CMD_TYPE_GET_SOURCE_FILES'.
1301
1302 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
1303
1304         * mini-ppc.c (mono_arch_decompose_opts): Fix OP_ICONV_TO_R_UN when cross-compiling.
1305
1306 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
1307
1308         * mini-codegen.c (mono_peephole_ins): Fix the OP_FMOVE optimization. Fixes
1309         #586664.
1310
1311         * iltests.il.in: Add a test.
1312
1313 2010-03-05  Martin Baulig  <martin@ximian.com>
1314
1315         Add support for aborting invocations.
1316
1317         * debugger-agent.c
1318         (InvokeData): Added `InvokeData *last_invoke'.
1319         (DebuggerTlsData): Renamed `invoke' into `pending_invoke' and
1320         added a new `invoke' field to keep the `InvokeData *' throughout
1321         the invocation.
1322         (ErrorCode): Added `ERR_NO_INVOCATION'.
1323         (CmdVM): Added `CMD_VM_ABORT_INVOKE'.
1324         (mono_debugger_agent_handle_exception): Don't report any exception
1325         if an abort was requested.
1326         (invoke_method): Store the `InvokeData *' in `tls->invoke'; reset
1327         a thread abort if necessary.
1328         (vm_commands): Implement `CMD_VM_ABORT_INVOKE'.
1329
1330 2010-03-08  Rodrigo Kumpera  <rkumpera@novell.com>
1331
1332         * method-to-ir.c: Store the initial basic block returned by mono_basic_block_split
1333         so we can release the whole list and not just the first one. Free
1334         it in more places as well.
1335
1336 2010-03-08  Rodrigo Kumpera  <rkumpera@novell.com>
1337
1338         * method-to-ir.c: Revert r153222 as it doesn't belong here.
1339
1340 Mon Mar 8 17:58:26 CET 2010 Paolo Molaro <lupus@ximian.com>
1341
1342         * mini.h, *.c: prepare for MonoMethodHeader to become a transient entity.
1343
1344 Mon Mar 8 17:35:26 CET 2010 Paolo Molaro <lupus@ximian.com>
1345
1346         * driver.c: report also other misc build options.
1347
1348 2010-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
1349
1350         * method-to-ir.c: Generate better code for the NewObject
1351         intrinsic.
1352         
1353 2010-03-07  Zoltan Varga  <vargaz@gmail.com>
1354
1355         * branch-opts.c (mono_if_conversion): Disable one of the cases when deadce
1356         is disabled. Fixes #582322.
1357
1358         * iltests.il.in: Add a test.
1359
1360 2010-03-06  Zoltan Varga  <vargaz@gmail.com>
1361
1362         * tramp-amd64.c (mono_arch_create_monitor_exit_trampoline_full): Delegate
1363         the handling of obj->synchronization == null and owner != current thread to
1364         mono_monitor_exit ().
1365
1366         * tramp-x86.c (mono_arch_create_monitor_exit_trampoline_full): Ditto.
1367
1368
1369 Sat Mar 6 18:14:15 CET 2010 Paolo Molaro <lupus@ximian.com>
1370
1371         * mini.c: change the way emulated opcode info is stored and save about
1372         4 KB of runtime memory.
1373
1374 2010-03-04  David S. Miller  <davem@davemloft.net>
1375
1376        * mini-sparc.h: Always use MONO_ARCH_USE_SIGACTION.  Linux kernels
1377        that don't provide the siginfo in the second signal handler argument
1378        are buggy, and this has been fixed for years.
1379        * mini.h (GET_CONTEXT): Remove __sparc__ special case.
1380        (SIG_HANDLER_SIGNATURE, SIG_HANDLER_PARMS): Likewise.
1381
1382 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
1383
1384         * aot-runtime.c (find_symbol): Fix a leak.
1385         (decode_patch): Ditto.
1386
1387 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
1388
1389         * mini.h (MONO_INST_IS_TEMP): Kill this unused define.
1390
1391 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
1392
1393         * mini.c (mono_resolve_patch_target): Fix an uninitialized variable.
1394
1395 Wed Mar 3 19:19:21 CET 2010 Paolo Molaro <lupus@ximian.com>
1396
1397         * method-to-ir.c: MONO_PROFILE_STRING_ALLOC is dead.
1398
1399 2010-03-03  Rodrigo Kumpera  <rkumpera@novell.com>
1400
1401         * method-to-ir.c (mono_method_to_ir): Don't create a runtime vtable
1402         to check for errors, it's enough to create the metadata open.
1403
1404         Fixes #562150
1405
1406 2010-03-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1407
1408         * trace.c|h:
1409         * mini-exceptions.c: Add support for printing stack traces when handling
1410         exceptions, and when printing exceptions thrown while tracing also print
1411         the exception message.
1412
1413 2010-03-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1414
1415         * trace.c: We need to parse exclude tokens ('-') before string tokens,
1416         since the exclude token is a valid string character.
1417
1418 2010-03-02  Levi Bard  <levi@unity3d.com>
1419
1420         * debugger-agent.c: Invalidate thread stacks on domain unload.
1421
1422 2010-03-02  Mark Probst  <mark.probst@gmail.com>
1423
1424         * method-to-ir.c: Emit dummy_use for stored reference after write
1425         barriers to make sure the object is pinned if the GC interrupts
1426         before the write barrier is done.
1427
1428 2010-03-02  Zoltan Varga  <vargaz@gmail.com>
1429
1430         * cpu-<ARCH>.md: dummy_use was missing src1:i.
1431
1432 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1433
1434         * debugger-agent.c: Add a log message printing the protocol version.
1435
1436 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1437
1438         * debugger-agent.c: Add a new command to communicate the protocol version used
1439         by the client. This could be used to allow newer runtimes to communicate with
1440         older clients.
1441
1442 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1443
1444         * debugger-agent.c (domain_commands): Add a new command to create a boxed value.
1445
1446 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1447
1448         * debugger-agent.c (type_commands): Fix the setting of fields with a reference
1449         type.
1450
1451 Mon Mar 1 15:20:44 CET 2010 Paolo Molaro <lupus@ximian.com>
1452
1453         * mini-arm.c: make the arm cpu arch configurable with the
1454         MONO_CPU_ARCH env var (for example: "armv4 thumb").
1455         Bug #584198.
1456
1457 Mon Mar 1 14:48:35 CET 2010 Paolo Molaro <lupus@ximian.com>
1458
1459         * mini.c, mini.h, driver.c: added the --jitmap option to enable
1460         support for the perf tool on Linux.
1461
1462 Mon Mar 1 14:43:55 CET 2010 Paolo Molaro <lupus@ximian.com>
1463
1464         * method-to-ir.c: make string.InsertenalSetChar() specialization
1465         effective.
1466
1467 2010-03-01  Robert Jordan  <robertj@gmx.net>
1468
1469         * Makefile.am: fix the non-static build.
1470
1471 2010-02-26  Zoltan Varga  <vargaz@gmail.com>
1472
1473         * mini-generic-sharing.c: Move the contents of ../metadata/generic-sharing.c
1474         here.
1475
1476 2010-02-26  Robert Jordan  <robertj@gmx.net>
1477
1478         * tasklets.c (continuation_store): Return from an error condition
1479         immediately.
1480
1481 2010-02-26  Martin Baulig  <martin@ximian.com>
1482
1483         * debug-debugger.c (MonoDebuggerInfo): Added `abort_runtime_invoke'.
1484
1485         * debug-mini.c
1486         (MonoDebuggerThreadInfo): Added `internal_flags'.
1487         (MonoDebuggerInternalThreadFlags): New enum.
1488         (_mono_debugger_throw_exception): Don't signal the debugger if a
1489         type abort was requested.
1490         (_mono_debugger_unhandled_exception): Likewise.
1491         (mono_debugger_abort_runtime_invoke): New method to abort an invocation.
1492         (mono_debugger_runtime_invoke): If the debugger requested a thread
1493         abort during the invocation, reset it here.
1494
1495 2010-02-26  Martin Baulig  <martin@ximian.com>
1496
1497         * debug-mini.c (MonoDebuggerThreadInfo): Use `MonoInternalThread *'
1498         instead of `MonoThread *'.
1499
1500 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
1501
1502         * aot-runtime.c (mono_aot_find_jit_info): Use a merge sort for sorting the
1503         code offsets table, as it is mostly sorted.
1504
1505 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
1506
1507         * debugger-agent.c (do_invoke_method): Fix invoking of static methods on vtypes.
1508         Fixes #582991.
1509
1510 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
1511
1512         * driver.c (mono_main): Get rid of mono_setup_vtable_in_class_init.
1513
1514 Wed Feb 24 15:58:03 CET 2010 Paolo Molaro <lupus@ximian.com>
1515
1516         * Makefile.am: build the new ABI version of the libmono library.
1517         * debugger-agent.c, mini.c: fix warnings with the new API.
1518         * jit.h: don't depend on glib.h being included.
1519
1520 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
1521
1522         * method-to-ir.c (mono_method_to_ir): Implement AOT support for fast TLS access.
1523
1524 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
1525
1526         * method-to-ir.c (mono_method_to_ir): Implement support for fast access to
1527         ThreadStatic variables.
1528
1529 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
1530
1531         * debugger-agent.c (notify_thread): Skip terminated threads, since their tls
1532         data is not freed yet. Fixes #582460.
1533
1534 2010-02-23  Zoltan Varga  <vargaz@gmail.com>
1535
1536         * debugger-agent.c: Add support for the caught/uncaught flags on exception
1537         event requests. Bump protocol minor version.
1538
1539 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
1540
1541         * decompose.c (mono_decompose_long_opts): Handle OP_LCONV_TO_OVF_I8 here too.
1542
1543 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
1544
1545         * decompose.c (mono_decompose_opcode): Handle OP_LCONV_TO_OVF_I8. Fixes
1546         #581950.
1547
1548         * iltests.il.in: Add a test.
1549
1550 2010-02-22  Rodrigo Kumpera  <rkumpera@novell.com>
1551
1552         * mini.c (inline_method): Check for loader errors.
1553
1554 2010-02-22  Rodrigo Kumpera  <rkumpera@novell.com>
1555
1556         * mini.c (mono_method_check_inlining): Use !mono_method_get_header_summary
1557         instead of mono_method_get_header as it doesn't decode locals
1558         so the called method can have unresolved dependencies that will only
1559         be satisfied after the current method is JIT'd.
1560
1561         Fixes #550968.
1562
1563 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
1564
1565         * basic.cs (test_0_div_opt): Speed this up a bit.
1566
1567 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
1568
1569         * mini-amd64.c: Fix DISABLE_JIT support after the latest changes.
1570
1571         * mini.c (mono_jit_create_remoting_trampoline): Call
1572         mono_create_specific_trampoline () instead of
1573         mono_arch_create_specific_trampoline ().
1574
1575         * mini-trampolines.c tramp-arm.c: Disable more stuff when DISABLE_JIT is set.
1576
1577 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
1578
1579         * unwind.c (mono_unwind_get_cie_program): New function, moved here from
1580         aot-compiler.c, so it can be found even if DISABLE_JIT is set.
1581
1582         * aot-compiler.c xdebug.c: Update callers of mono_arch_unwind_get_cie_program ().
1583
1584         * mini-amd64.c: Fix DISABLE_JIT support.
1585
1586 2010-02-20  Geoff Norton  <gnorton@novell.com>
1587
1588         * aot-runtime.c: Ensure we dont leak a held lock when unwinding exceptions.
1589
1590 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
1591
1592         * debugger-agent.c (mono_debugger_agent_handle_exception): Receive two contexts,
1593         one for the throw and one for the catch. Mark uncaught exceptions by a NULL
1594         CATCH_TXT. Send normal exception events for unhandled exceptions too.
1595         (mono_debugger_agent_handle_unhandled_exception): Remove this, merged into
1596         handle_exception.
1597
1598 2010-02-18  Zoltan Varga  <vargaz@gmail.com>
1599
1600         * exceptions-x86.c (mono_arch_get_restore_context): Changes this so it restores
1601         edx/ecx too. This is needed to support OP_SEQ_POINT.
1602
1603 2010-02-18  Zoltan Varga  <vargaz@gmail.com>
1604
1605         * exceptions-amd64.c (get_throw_trampoline): Add xdebug info.
1606
1607         * method-to-ir.c (mono_method_to_ir): Fix SIZEOF in dynamic methods.
1608
1609 2010-02-16  Zoltan Varga  <vargaz@gmail.com>
1610
1611         * mini-llvm.c aot-compiler.c aot-runtime.c unwind.c: Finish support
1612         LLVM+AOT+exceptions, not enabled yet.
1613
1614 2010-02-15  Zoltan Varga  <vargaz@gmail.com>
1615
1616         * mini.c (SIG_HANDLER_SIGNATURE): Fix the windows build.
1617
1618 2010-02-15  Zoltan Varga  <vargaz@gmail.com>
1619
1620         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Emit
1621         xdebug info for these.
1622
1623         * mini-trampolines.c (common_call_trampoline): Use mini_jit_info_table_find ()
1624         in a few places.
1625
1626         * mini.c (mini_get_vtable_trampoline): Make this take a 'slot_index' argument,
1627         not used yet.
1628
1629 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
1630
1631         * aot-compiler.c (load_profile_files): Update after the profiler changes.
1632
1633 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
1634
1635         * mini.c (mono_jit_compile_method_inner): Avoid passing icall wrappers to
1636         mono_profiler_method_end_jit, since the profiler has no way to process wrappers.
1637
1638         * aot-runtime.c mini.c: Resurrect the aot pagefault profiling stuff, it is useful
1639         for mtouch.
1640
1641 2010-02-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
1642
1643         * debugger-agent.c: handle incomplete reads and EINTR in
1644         recv()/send(). This could have been causing random
1645         disconnections.
1646
1647 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
1648
1649         * aot-runtime.c (decode_exception_debug_info): Fix aot support for sequence
1650         points.
1651
1652         * mini-arm.c (mono_arch_allocate_vars): Allocate the seq point related vars first
1653         so they have small offsets. Fixes #566311.
1654
1655 2010-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
1656
1657         * method-to-ir.c (mono_method_check_inlining): Check for loader errors.
1658
1659 2010-02-11  Zoltan Varga  <vargaz@gmail.com>
1660
1661         * mini-amd64.c: Remove the special casing of byref in a few places now that
1662         mini_type_get_underlying_type () handles it.
1663
1664         * mini-generic-sharing.c (mini_type_get_underlying_type): Handle byref as well
1665         by returning native int. Fixes #577984.
1666
1667 2010-02-11  Zoltan Varga  <vargaz@gmail.com>
1668
1669         * method-to-ir.c (handle_isinst): Factor out the is_complex_isinst check into
1670         a macro.
1671
1672         * mini-llvm.c (exception_cb): Put the clause index into the type info instead
1673         of putting the clause itself.
1674
1675         * mini-arm.c mini.c linear-scan.c: Disable more stuff when DISABLE_JIT is used.
1676
1677 2010-02-09  Zoltan Varga  <vargaz@gmail.com>
1678
1679         * unwind.c (mono_unwind_frame): Use read32 for reading a 32 bit value, since it
1680         might be unaligned.
1681
1682 2010-02-10  Geoff Norton  <gnorton@novell.com>
1683
1684         * aot-compiler.c: Make the number of IMT trampolines configurable as well.
1685
1686 2010-02-08  Zoltan Varga  <vargaz@gmail.com>
1687
1688         * aot-compiler.c (emit_code): Create the ut trampolines here, so they work for
1689         llvm methods too.
1690
1691         * aot-compiler.c (emit_code): Don't add the llvm label prefix to 'methods', since
1692         it is not an LLVM generated symbol.
1693
1694         * mini-llvm.c (emit_entry_bb): Fix the handling of simd types.
1695
1696         * method-to-ir.c (handle_castclass): Turn off the more efficient isinst/castclass
1697         implementation in gshared mode because it causes regressions.
1698
1699         * mini-trampolines.c: Add a stat for the number of calls to trampolines.
1700
1701         * image-writer.c (asm_writer_emit_global): Don't prepend the global prefix, it
1702         should be done by the caller.
1703
1704         * mini-llvm.c (mono_llvm_emit_method): Don't make the debug symbols global.
1705
1706         * aot-compiler.c (emit_code): Add the llvm label prefix before 'methods'.
1707
1708         * mini-exceptions.c (mini_jit_info_table_find): Search the root domain as well,
1709         since mono_jit_info_table_find () doesn't do it anymore.
1710
1711         * mini-generic-sharing.c debugger-agent.c: Call mini_jit_info_table_find ()
1712         instead of mono_jit_info_table_find ().
1713
1714 2010-02-07  Zoltan Varga  <vargaz@gmail.com>
1715
1716         * aot-compiler.c aot-runtime.c: Add support for MONO_WRAPPER_WRITE_BARRIER.
1717
1718         * aot-compiler.c (encode_method_ref): Update after the removal of
1719         mono_gc_get_managed_allocator_type ().
1720
1721         * method-to-ir.c (mono_method_to_ir): Place a seq point just before a RET.
1722         Fixes #564538.
1723
1724 2010-02-06  Zoltan Varga  <vargaz@gmail.com>
1725
1726         * method-to-ir.c (handle_castclass): Use the icall for classes with variant
1727         generic params as well.
1728         (handle_isinst): Ditto.
1729
1730         * method-to-ir.c: Make isninst/castclass checks in gshared code more efficient
1731         instead of always calling an icall.
1732
1733         * aot-compiler.c (emit_llvm_file): Take into account trampolines etc when
1734         computing the size of the got.
1735
1736         * aot-compiler.c (emit_code): Change the way the 'methods' symbol is emitted
1737         when using LLVM. Instead of emitting it as an LLVM method, emit it using
1738         the assembly directive '.set' so it points to the first LLVM emitted method.
1739
1740 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
1741
1742         * mini.c (mini_method_verify): Report the method which failed to verify.
1743
1744 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
1745
1746         * method-to-ir.c (mono_method_to_ir): Use the new basic block formation pass
1747         to avoid JIT'ng dead basic blocks. This is the same behavior as the
1748         runtime MS verifier.
1749
1750 2010-02-04  Zoltan Varga  <vargaz@gmail.com>
1751
1752         * debugger-agent.c (decode_value): Fix decoding of vtype instances. Fixes
1753         #561962.
1754
1755 2010-02-04  Zoltan Varga  <vargaz@gmail.com>
1756
1757         * mini-llvm.c: Init the jit module only when first JITting.
1758
1759         * aot-compiler.c (emit_plt): Fix the naming of plt entries of llvm+darwin.
1760
1761         * mini-llvm.c (get_plt_entry): Make the plt entries have hidden visibility.
1762
1763         * mini-llvm.c (mono_llvm_emit_aot_module): Remove the dummy got after it is
1764         replaced with the real got.
1765
1766         * debugger-agent.c (type_commands): Return the enumness if the type as well.
1767
1768         * image-writer.c: Reduce the amount of #ifdefs a bit.
1769
1770         * aot-compiler.c: Reduce the amount of #ifdefs. Add beginnings of support for
1771         llvm on darwin/arm.
1772
1773         * aot-compiler.c (mono_compile_assembly): Handle asmonly+llvm mode.
1774
1775         * mini-llvm.c (mono_llvm_emit_method): Don't make the 'type_info' symbols
1776         global.
1777
1778 2010-02-02  Zoltan Varga  <vargaz@gmail.com>
1779
1780         * mini-llvm.c (mono_llvm_emit_method): Add support for unaligned loads.
1781         (mono_llvm_emit_method): Fix unaligned stores too.
1782
1783         * mini-amd64.c (mono_arch_emit_prolog): Initialize lmf->rsp in the prolog too
1784         so async stack walks don't crash.
1785
1786 2010-02-02  Zoltan Varga  <vargaz@gmail.com>
1787
1788         * mini-trampolines.c (common_call_trampoline): Fix a problem where the callsite
1789         was not patched if the callee needed an rgctx trampoline.
1790
1791 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
1792
1793         * mini-ppc.c (mono_arch_get_global_int_regs): Reserve r29 for holding the
1794         vtable address in AOT code.
1795
1796 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
1797
1798         * mini-codegen.c: Remove support for CEE_ opcodes which cannot occur in
1799         MonoInst's.
1800
1801 Mon Feb 1 16:29:10 CET 2010 Paolo Molaro <lupus@ximian.com>
1802
1803         * genmdesc.pl: remove dependency on external cpp.
1804
1805 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
1806
1807         * method-to-ir.c (mini_emit_ldelema_1_ins): Avoid emitting an OP_SEXT_I4 when
1808         using LLVM, its not needed, and abcrem can't handle it.
1809
1810 Mon Feb 1 14:29:43 CET 2010 Paolo Molaro <lupus@ximian.com>
1811
1812         * genmdesc.c, genmdesc.pl, cpu-x86.md: introduced templates to make
1813         it easier to group instructions and reduce duplication.
1814
1815 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
1816
1817         * decompose.c: Move the array/soft float decompose routines here from
1818         method-to-ir.c.
1819
1820         * method-to-ir.c: Export a few functions so they can be used from decompose.c.
1821
1822 2010-01-31  Zoltan Varga  <vargaz@gmail.com>
1823
1824         * mini-llvm.c (mono_llvm_emit_method): Add a call to llvm.invariant.start
1825         to tell LLVM that the got is constant, not used yet.
1826
1827         * aot-compiler.c: Pass more optimization flags to llvm's 'opt'.
1828
1829 2010-01-30  Zoltan Varga  <vargaz@gmail.com>
1830
1831         * mini-ppc.c (mono_arch_emit_prolog): Fix full aot support for native to
1832         managed wrappers.
1833
1834 2010-01-30  Zoltan Varga  <vargaz@gmail.com>
1835
1836         * aot-compiler.c (add_wrappers): Commit the hack which generates
1837         native-to-managed wrappers for methods decorated with the MonoPInvokeCallback
1838         custom attribute.
1839
1840 2010-01-29  Zoltan Varga  <vargaz@gmail.com>
1841
1842         * mini.h (MONO_INST_FAULT): New instruction flag for loads which can cause
1843         a fault, only used by the LLVM backend.
1844
1845         * ir-emit.h: Add _FAULT variants of the LOAD_MEMBASE macros. Mark
1846         OP_CHECK_THIS with OP_IMPLICIT_EXCEPTION.
1847
1848         * method-to-ir.c: Use the new LOAD_MEMBASE_FAULT opcodes, get rid of the
1849         calls to MONO_EMIT_NULL_CHECK which is automatically done by the new macros.
1850
1851         * mini-llvm.c: Only generate volatile loads from load instructions which have
1852         the MONO_INST_FAULT flag set.
1853
1854 2010-01-29  Zoltan Varga  <vargaz@gmail.com>
1855
1856         * unwind.c (mono_unwind_decode_fde): Fix the decoding of the LSDA offset on
1857         64 bit platforms.
1858
1859 2010-01-28  Zoltan Varga  <vargaz@gmail.com>
1860
1861         * mini.c (mono_save_seq_point_info): Fix the handling of bblocks without
1862         sequence points. Fixes #571236.
1863
1864 2010-01-28  Zoltan Varga  <vargaz@gmail.com>
1865
1866         * debugger-agent.c (mono_debugger_agent_init): Call appdomain_unload at the
1867         end of the appdomain unload process, after assemblies have been unloaded.
1868         Fixes #574842.
1869
1870 2010-01-27  Zoltan Varga  <vargaz@gmail.com>
1871
1872         * abcremoval.c (process_block): Fix the if (region) check so abcrem actually
1873         works.
1874
1875         * mini-amd64.c: Make the soft debugger work on platforms without MAP_32BIT.
1876         Fixes #573988.
1877
1878 2010-01-26  Zoltan Varga  <vargaz@gmail.com>
1879
1880         * dwarfwriter.c (emit_type): Treat MONO_TYPE_PTR as 'I' not 'I4'.
1881
1882 2010-01-26  Geoff Norton  <gnorton@novell.com>
1883
1884         * aot-compiler.c: Fix a logic error introduced when guarding against enums
1885         with struct marshalability.
1886
1887 2010-01-24  Zoltan Varga  <vargaz@gmail.com>
1888
1889         * mini.c (mini_method_compile): Improve the processing MONO_VERBOSE_METHOD so
1890         it supports class names as well.
1891
1892         * mini.h (MonoCompile): Add a few flags to control JIT behavior which are
1893         needed by the GC map code.
1894
1895         * mini.c (mini_method_compile): Call a function in mini-gc.c to set the new
1896         flags if needed.
1897
1898         * method-to-ir.c (mono_method_to_ir): Emit initialization code for ref variables
1899         if cfg->init_ref_vars is set.
1900
1901         * liveness.c (optimize_initlocals): Disable the initlocals opt for ref vars if
1902         cfg->disable_initlocals_op_refs is set.
1903
1904         * method-to-ir.c (mono_spill_global_vars): Compute more precise live ranges
1905         using liveness info if cfg->compute_precise_live_ranges is set.
1906
1907         * mini-gc.c: Ongoing work. Improve logging and debugging support. Handle
1908         volatile variables correctly. Add comments about the live ranges. Not enabled
1909         yet.
1910
1911 2010-01-24  Zoltan Varga  <vargaz@gmail.com>
1912
1913         * mini.h (MonoDebugOptions): Add an option to init stack frames by writing
1914         0x2a into them in method prologs.
1915
1916         * mini-amd64.c (mono_arch_emit_prolog): Implement it.
1917
1918 2010-01-22  Zoltan Varga  <vargaz@gmail.com>
1919
1920         * mini-llvm-cpp.cpp: Remove uses of dynamic_cast, it no longer works with llvm
1921         classes, since llvm is compiled with -fno-rtti.
1922
1923         * mini.h (COMPILE_SOFT_FLOAT): New macro, similar to COMPILE_LLVM.
1924
1925         * method-to-ir.c ir-emit.h: Use if (COMPILE_SOFT_FLOAT) in a few places since
1926         llvm does not require it.
1927
1928         * aot-runtime.c (load_method): Print the full name of the last aot method.
1929
1930 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
1931
1932         * exceptions-amd64.c (mono_arch_notify_pending_exc): Avoid a crash if the
1933         thread has not fully started yet.
1934
1935 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
1936
1937         * aot-compiler.c (can_marshal_struct): Allow marshalling enums.
1938
1939 2010-01-21  Miguel de Icaza  <miguel@novell.com>
1940
1941         * driver.c: Do not abort if LLVM is not supported, print a
1942         warning and add the information to the Mono JIT information.
1943
1944 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
1945
1946         * ir-emit.h (MONO_EMIT_NULL_CHECK): Don't emit an OP_IMPLICIT_EXCEPTION when
1947         using explicit null checks.
1948
1949 2010-01-20  Zoltan Varga  <vargaz@gmail.com>
1950
1951         * xdebug.c: New file extracted from aot-compiler.c, containing the XDEBUG
1952         related code.
1953
1954         * aot-compiler.c (encode_method_ref): Use mono_marshal_wrapper_info_from_wrapper
1955         () in one place.
1956         (mono_aot_wrapper_name): Remove the special handling of delegate invoke wrappers,
1957         its no longer needed.
1958
1959         * method-to-ir.c (mono_method_to_ir): Fix a warning.
1960
1961         * exceptions-<ARCH>.c: Introduce a MONO_ARCH_HAVE_THROW_EXCEPTION_BY_NAME
1962         define for platforms still using it (s390). Get rid of the
1963         mono_arch_get_throw_exception_by_name () routines on all other platforms.
1964
1965         * exceptions-x86.c: Rework the throw trampolines so there is only one function
1966         which can generate throw/rethrow/corlib trampolines for llvm/not llvm code.
1967
1968         * exceptions-x86.c: Add LLVM specific throw trampolines which doesn't assume
1969         the caller pushed the arguments.
1970
1971         * mini-llvm.c: Enable throwing exceptions on x86.
1972
1973         * mini-posix.c (SIG_HANDLER_SIGNATURE): Avoid
1974         "Thread (nil) may have been prematurely finalized" messages if this is called
1975         on a thread not registered with the runtime.
1976
1977         * mini-exceptions.c (mono_handle_native_sigsegv): Ditto.
1978
1979 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
1980
1981         * jit-icalls.c (mono_array_new_3): New jit icall.
1982
1983         * aot-compiler.c aot-runtime.c: Add support for ElementAddr wrappers.
1984
1985         * arrays.cs: Add a test for 3 dimensional arrays.
1986
1987 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
1988
1989         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Emit xdebug info.
1990         (mono_arch_find_jit_info_ext): Disable the popping of arguments when LLVM is
1991         used.
1992
1993         * mini-llvm.c (emit_cond_system_exception): Abort when an implicit exception is
1994         thrown on x86.
1995
1996         * unwind.c (mono_unwind_decode_fde): Fix an assert on x86.
1997
1998         * mini-x86.h (MONO_CONTEXT_SET_LLVM_EXC_REG): Define this for x86.
1999
2000         * mini-llvm.c: Disable OP_THROW on x86, it doesn't work yet.
2001
2002 2010-01-18  Bill Holmes  <billholmes54@gmail.com>
2003
2004         * debugger-agent.c : Changing the PLATFORM_WIN32 preprocessor check to
2005           HOST_WIN32.  Also including winsock2. to define struct in_addr.
2006
2007         * mini-amd64.h : Changing the PLATFORM_WIN32 preprocessor check to HOST_WIN32.
2008
2009         * mini-x86.h : Changing the PLATFORM_WIN32 preprocessor check to HOST_WIN32.
2010
2011         Code is contributed under MIT/X11 license.
2012
2013 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
2014
2015         * mini.h (MonoCompile): Add 'disable_out_of_line_bblocks' flag.
2016
2017         * branch-opts.c (mono_optimize_branches): Honor the new flag.
2018
2019         * mini.c (mini_method_compile): Set the new flag when running under the
2020         debugger.
2021
2022 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
2023
2024         * mini-gc.c: Change the GC map to use a ref/noref/pin value instead of just
2025         a ref/noref value + a global pin flag, so parts of stack frames can still be
2026         precisely marked even if they include stuff which needs pinning. Improve logging.
2027         Fix many bugs. Not enabled yet.
2028
2029         * gc-test.cs: Add a few tests.
2030
2031         * liveness.c (mono_analyze_liveness): Make the debug output controllable by
2032         the normal -v options. Avoid propagating liveness information through bblocks
2033         which end with a NOT_REACHED opcode.
2034
2035         * mini.c (mono_jit_compile_method_inner): Avoid reading cfg->prof_options
2036         after cfg has been freed.
2037
2038 2010-01-17  Zoltan Varga  <vargaz@gmail.com>
2039
2040         * branch-opts.c (mono_branch_optimize_exception_target): Stop the optimization
2041         if a clause is skipped because it uses the exception object, since it could
2042         have caught the exception.
2043
2044         * exceptions.cs: Add a test.
2045
2046 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2047
2048        * mini-trampolines.c (mono_create_static_rgctx_trampoline): Add an assert.
2049
2050         * aot-runtime.c (mono_aot_get_method): Handle ftnptr's correctly for the
2051         ICollection<T> wrappers.
2052
2053 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2054
2055         * debugger-agent.c (decode_value): Fix the decoding of I/U/PTR.
2056
2057 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2058
2059         * mini-amd64.c (emit_call_body): Always use near calls when AOTing even if
2060         NOMAP32BIT or optimize_for_xen is set.
2061
2062 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2063
2064         * aot-compiler.c aot-runtime.c: Get rid of mono_aot_str_hash (), use
2065         mono_metadata_str_hash () instead.
2066
2067 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
2068
2069         * ir-emit.h (MONO_EMIT_NEW_ICOMPARE_IMM): Use sizeof (mgreg_t) instead of
2070         sizeof (void*).
2071
2072         * unwind.c (mono_unwind_frame): Use mgreg_t instead of gssize.
2073
2074 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
2075
2076         * ir-emit.h (MONO_EMIT_NEW_CHECK_THIS): Emit an explicit null check if the
2077         flag is set.
2078
2079         * mini-ppc.c (mono_arch_emit_exceptions): Compute the size of the exception
2080         throwing code correctly.
2081
2082         * mini.h (MONO_AOT_FILE_VERSION): Bump this because of the IMT hashing changes.
2083
2084 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
2085
2086         * aot-runtime.c (mono_aot_plt_resolve): Reenable the previous assert for
2087         ftnptrs created by us, handle RGCTX_FETCH correctly.
2088         (mono_aot_get_lazy_fetch_trampoline): Add an ftnptr.
2089
2090         * mini-trampolines.c (mono_create_generic_class_init_trampoline): Remove the
2091         ftnptr added by mono_aot_get_named_code ().
2092
2093 2010-01-14  Zoltan Varga  <vargaz@gmail.com>
2094
2095         * mini-arm.c: Fix a few LLVM problems.
2096
2097         * mini-llvm.c (simd_class_to_llvm_type): Fix compilation on !x86/amd64.
2098
2099 2010-01-13  Mark Probst  <mark.probst@gmail.com>
2100
2101         * method-to-ir.c (mini_emit_stobj): Use EMIT_NEW_CLASSCONST when
2102         AOT compiling.
2103
2104 Wed Jan 13 15:54:53 CET 2010 Paolo Molaro <lupus@ximian.com>
2105
2106         * jit.h, method-to-ir.c: added ability to set the policy for
2107         inserting breakpoints from the break IL instruction or the
2108         Debugger.Break () API call.
2109
2110 2010-01-13  Zoltan Varga  <vargaz@gmail.com>
2111
2112         * aot-runtime.c (load_aot_module): Add more comments to explain why referenced
2113         assemblies need to be eagerly loaded.
2114
2115 2010-01-12  Zoltan Varga  <vargaz@gmail.com>
2116
2117         * dwarfwriter.c (emit_line_number_info): Fix the eglib case so it doesn't crash.
2118
2119 2010-01-11  Zoltan Varga  <vargaz@gmail.com>
2120
2121         * debugger-agent.c (mono_debugger_agent_parse_options): Allow onthrow without
2122         an argument which matches any exception.
2123
2124 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
2125
2126         * method-to-ir.c (mono_emit_method_call_full): Avoid the virt->nonvirt
2127         optimization if the called method is gshared and marshalbyref, since gshared
2128         methods can' have wrappers. Fixes #569390.
2129
2130         * generics.cs: Add a test.
2131
2132 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
2133
2134         * mini-exceptions.c (mono_print_thread_dump_from_ctx): New helper function
2135         callable from gdb.
2136
2137 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
2138
2139         * mini.c (mono_print_method_from_ip): Fix the lookup of trampolines.
2140
2141 2010-01-09  Zoltan Varga  <vargaz@gmail.com>
2142
2143         * debugger-agent.c (transport_connect): comment out freeaddrinfo calls under win32,
2144         since it is not supported in win2000.
2145
2146 2010-01-08  Zoltan Varga  <vargaz@gmail.com>
2147
2148         * aot-runtime.c (load_image): Add a SET_ERROR argument to set the loader
2149         error if loading an assembly fails.
2150         (mono_aot_plt_resolve): Return NULL instead of asserting if loading fails.
2151
2152         * mini-trampolines.c (mono_aot_plt_trampoline): Throw a pending loader error
2153         if exists.
2154
2155         * aot-runtime.c (decode_exception_debug_info): Set jinfo->from_llvm for LLVM
2156         compiled methods.
2157
2158         * mini-llvm-cpp.cpp: Remove the unused ctx variable.
2159
2160         * mini-llvm.c (mono_llvm_emit_method): Add some comments about why aot+clauses
2161         is not supported yet.
2162
2163         * unwind.c (DW_EH_PE_absptr): Add more DW_EH_PE_ constants.
2164
2165 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2166
2167         * method-to-ir.c: All types with variant arguments must fallback to the
2168         slow path. This makes cast of variant delegates work.
2169
2170         * mini-trampolines.c (mono_get_vcall_slot_addr): Add new variance_used out
2171         argument that is set to TRUE is the returned vtable slot is for a variant
2172         interface. Changed a g_print + g_assert_not_reached to a g_error.
2173
2174         * mini-trampilines.c (common_call_trampoline): Handle variant interfaces in
2175         a similar fashion of generic virtual methods.
2176
2177 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2178
2179         * helpers.c (mono_disassemble_code): Fix a g_hash_table warning
2180         when cfg is null.
2181
2182         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Convert a given
2183         method using a variance aware function.
2184
2185         * mini-x86.c: Add support for dumping IMT thunks if DEBUG_IMT is defined.
2186
2187 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2188
2189         * method-to-ir.c (mono_method_to_ir): Casts to variant interfaces
2190         do an icall for now.
2191
2192 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
2193
2194         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add an ugly hack to fix #564695.
2195         If LLVM decides to set the code model to Large, reset it to Default.
2196
2197 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
2198
2199         * aot-compiler.c (mono_xdebug_flush): Export it so it is present in
2200         stripped binaries as well.
2201
2202 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
2203
2204         * mini-trampolines.c (common_call_trampoline): Add an rgctx trampoline if a shared
2205         method is called from LLVM compiled code, as that code can't pass an rgctx arg.
2206
2207         * mini-llvm.c (mono_llvm_emit_method): Enable calls to methods needing an rgctx
2208         reg.
2209
2210 2010-01-06  Zoltan Varga  <vargaz@gmail.com>
2211
2212         * mini.c (mini_method_compile): Extract the JIT info creation code into a
2213         separate function.
2214
2215         * mini-llvm.c (mono_llvm_emit_method): Pass the info in MonoExceptionClause
2216         as the type info to llvm.eh.selector.
2217         (exception_cb): Use the type info for filling out some fields of
2218         MonoJitExceptionInfo like the flags and the exception class. This is needed
2219         because the LLVM produced exception handling clauses might not match the original
2220         IL clauses, i.e. there might be more than one LLVM clause for one IL clause.
2221
2222         * unwind.c (mono_unwind_decode_fde): Extract the LSDA decoding code into a
2223         separate function. Add an extra argument which returns the type infos
2224         corresponding to the exception clauses.
2225
2226         * mini.c (mini_method_compile): Enable LLVM compilation of methods having
2227         exception handling clauses.
2228
2229 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2230
2231         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call
2232         mono_method_get_vtable_slot () instead of accessing imt_method->slot directly,
2233         to fix an AOT case.
2234
2235 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2236
2237         * mini.c (mono_compile_is_broken): Skip methods from serialization's
2238         internal assembly.
2239
2240 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2241
2242         * mini.c (mini_method_compile): Fix a few memory leaks introduced by the
2243         llvm code.
2244
2245 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2246
2247         * mini.c (mini_method_compile): Verify the method before calling
2248         mono_compile_create_vars as this might crash since it uses method
2249         information.
2250
2251         Fixes #560196.
2252
2253 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2254
2255         * method-to-ir.c (mono_method_to_ir): Avoid calling mono_class_vtable () in
2256         one case if AOTing, since the class might not be a concrete class.
2257
2258 2010-01-03  Zoltan Varga  <vargaz@gmail.com>
2259
2260         * mini-codegen.c abcremoval.c: Remove the duplicate g_slist_append_mempool
2261         functions which are now defined in mempool-internals.h.
2262
2263         * mini.c (mini_free_jit_domain_info): Free the seq point hash tables.
2264
2265         * mini-llvm.c (mono_llvm_emit_method): Handle OP_ABS.
2266
2267 2009-12-30  Rodrigo Kumpera  <rkumpera@novell.com>
2268
2269         * mini.c:
2270         * method-to.ir.c:
2271         * mini-*.c: Properly handle generic enums.
2272
2273         Fixes #566294
2274
2275 2009-12-28  Zoltan Varga  <vargaz@gmail.com>
2276
2277         * method-to-ir.c (mono_method_to_ir): Handle the failure of mono_class_vtable ()
2278         in a few more places.
2279
2280 2009-12-27  Zoltan Varga  <vargaz@gmail.com>
2281
2282         * aot-compiler.c (add_wrappers): Don't use dyn runtime invoke for methods with
2283         nullable parameters. Fixes #567351.
2284
2285 2009-12-26  Rodrigo Kumpera  <rkumpera@novell.com>
2286
2287         * mini-trampolines.c (common_call_trampoline): Add assert for NULL resolved generic method.
2288
2289 2009-12-26  Zoltan Varga  <vargaz@gmail.com>
2290
2291         * mini-trampolines.c: Use mono_arch_get_this_arg_from_call () to avoid the slow
2292         mono_get_generic_context_from_code () call.
2293
2294         * mini-<ARCH>.c: Get rid of mono_arch_find_this_arg (), it is no longer used.
2295
2296 2009-12-25  Zoltan Varga  <vargaz@gmail.com>
2297
2298         * aot-runtime.c (decode_klass_ref): Don't call mono_class_init (), its not
2299         needed.
2300
2301 2009-12-24  Sebastien Pouliot  <sebastien@ximian.com>
2302
2303         * method-to-ir.c (mono_method_to_ir): Avoid SIGSEGV when
2304         mono_method_get_signature returns NULL. Fix #567084
2305
2306 2009-12-25  Zoltan Varga  <vargaz@gmail.com>
2307
2308         * aot-runtime.c (find_extra_method): Call mono_aot_wrapper_name only once,
2309         instead of once for each module.
2310
2311 2009-12-22  Zoltan Varga  <vargaz@gmail.com>
2312
2313         * debugger-agent.c (ss_start): Implement step over for the last sequence
2314         point in methods.
2315
2316         * mini.c (mono_save_seq_point_info): Don't link sequence points which don't
2317         have the STEP_LOC flag set.
2318
2319         * aot-runtime.c (decode_klass_ref): Avoid a crash if a decode_klass_ref () call
2320         fails. Fixes #566689.
2321
2322 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
2323
2324         * mini.c (mono_add_seq_point): New helper function.
2325         (mono_save_seq_point_info): New function to save sequence point info, extracted
2326         from mini_method_compile ().
2327
2328         * mini-<ARCH>.c: Call mono_add_seq_point to remember sequence points.
2329
2330         * mini.h (MonoSeqPointInfo): New structure containing information about
2331         the sequence points of a JITted method.
2332         (MonoBasicBlock): Add 'seq_points' and 'last_seq_point' fields. Remove unused
2333         'bucket' field.
2334
2335         * mini.c debugger-agent.c aot-compiler.c aot-runtime.c: Change the way sequence
2336         point information is stored, use a MonoSeqPointInfo structure instead of a
2337         GPtrArray. For each seq point, compute a list of successor seq points.
2338
2339         * debugger-agent.c: Use the successor list to implement step-over more
2340         efficiently: instead of single stepping until a different line/IL offset is
2341         reached, place breakpoints into all successor seq points.
2342
2343         * mini.h: Bump AOT file format version.
2344
2345 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
2346
2347         * Makefile.am (AM_CFLAGS): Include LLVM_CFLAGS.
2348
2349         * mini-llvm.c: Avoid defining the __STDC_... macros if already defined.
2350
2351 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
2352
2353         * exceptions-ppc.c (mono_ppc_set_func_into_sigctx): Fix the cross-compiler
2354         build.
2355
2356 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
2357
2358         * mini-x86.c (mono_arch_get_argument_info): Allocate memory for CallInfo using
2359         alloca as g_malloc is not signal safe.
2360
2361 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
2362
2363         * tramp-x86.c (mono_arch_patch_callsite): Fix the call to
2364         VALGRIND_DISCARD_TRANSLATIONS.
2365
2366         * *.c: Include mono/utils/memcheck.h, and remove #ifdef HAVE_VALGRIND_MEMCHECK_H
2367         checks, they are no longer needed.
2368
2369         * exceptions-ppc.c (mono_ppc_set_func_into_sigctx): New helper function to set
2370         a function into a sigctx which can handle function pointers.
2371
2372         * mini-ppc.c: Implement soft debugger support on ppc64.
2373
2374         * mini-ppc.c: Implement soft debugger support.
2375
2376 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
2377
2378         * mini-llvm.c: Handle OP_LADD_OVF_UN. Place all alloca's into the entry bb.
2379
2380 2009-12-17  Marek Habersack  <mhabersack@novell.com>
2381
2382         * mini.c (mono_get_runtime_build_info): include Mono version in
2383         the returned value.
2384
2385         * driver.c (mono_main): VERSION is now included in the string
2386         returned from mono_get_runtime_build_info()
2387
2388 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
2389
2390         * method-to-ir.c (mono_method_to_ir): Add support for CALLI with unmanaged
2391         signatures. Fixes #565143.
2392
2393         * jit-icalls.c (mono_get_native_calli_wrapper): New JIT icall.
2394
2395 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
2396
2397         * aot-compiler.c (arch_emit_autoreg): Align code to 4 in the ppc case.
2398
2399 2009-12-16 Rodrigo Kumpera  <rkumpera@novell.com>
2400
2401         * mini-x86.h: Forgot to add a 0x to MONO_ARCH_MAX_FRAME_SIZE define
2402         making max stack 10x smaller.
2403
2404 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
2405
2406         * mini.c (mono_resolve_patch_target): Comment out an assert which could be hit.
2407
2408 2009-12-15 Rodrigo Kumpera  <rkumpera@novell.com>
2409
2410         * method-to-ir.c (mini_emit_memcpy): Assert if size is too big.
2411
2412 2009-12-15 Rodrigo Kumpera  <rkumpera@novell.com>
2413
2414         * mini-x86.c (mono_arch_allocate_vars): Fail compilation if the frame size is
2415         bigger than MONO_ARCH_MAX_FRAME_SIZE.
2416
2417         * mini-x86.c (mono_arch_emit_prolog): Handle huge frames.
2418
2419         * mini-x86.h: Define MONO_ARCH_MAX_FRAME_SIZE to be 1Mb.
2420
2421         * mini-amd64.c / mini-amd64.h: Same fixes as of above.
2422
2423         * mini.c (mini_method_compile): Check if mono_arch_allocate_vars failed
2424         the compilation.
2425
2426 2009-12-14  Miguel de Icaza  <miguel@novell.com>
2427
2428         * method-to-ir.c (mono_method_to_ir): CEE_UNUSUED opcodes now
2429         raise an invalid program exception.   
2430
2431         For other opcodes that we might not handle use a g_warning and
2432         raise the exception.   Beats termination.
2433
2434         Fixes #561724
2435
2436 2009-12-14  Zoltan Varga  <vargaz@gmail.com>
2437
2438         * method-to-ir.c (mono_emit_rgctx_method_call_full): Fix a warning.
2439
2440         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix the LLVM support
2441         by merging the LLVM and !MAP_32BIT cases.
2442
2443 2009-12-13 Jonathan Chambers <joncham@gmail.com>
2444
2445         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Handle a NULL
2446         sigctx being passed in, as we have no CONTEXT available in the APC.
2447
2448         (mono_debugger_agent_cleanup): Use explicit cond wait implementation
2449         for now.
2450
2451         Code contributed under MIT/X11 license.
2452
2453 2009-12-13  Zoltan Varga  <vargaz@gmail.com>
2454
2455         * method-to-ir.c mini-llvm.c: Fix support for monitor enter/exit trampolines
2456         in the LLVM backend on AMD64.
2457
2458         * aot-runtime.c (decode_eh_frame): Initialize the clauses from the info in the
2459         FDE.
2460
2461         * unwind.c (mono_unwind_decode_fde): Implement decoding of a couple more formats.
2462
2463         * mini-llvm.c: Export mono_personality for AOT.
2464
2465         * mini.c (mini_method_compile): Fix some problems with llvm+aot+clauses.
2466
2467         * mini-ops.h (OP_IMPLICIT_EXCEPTION): New opcode marking the place where an
2468         implicit exception can occur.
2469
2470         * ir-emit.h (MONO_EMIT_NEW_IMPLICIT_EXCEPTION): New macro to emit an
2471         OP_IMPLICIT_EXCEPTION instruction.
2472
2473         * ir-emit.h (MONO_EMIT_NEW_CHECK_THIS): New macro.
2474
2475         * method-to-ir.c: Use MONO_EMIT_NEW_CHECK_THIS in a few places.
2476
2477         * mini-llvm.c: Handle OP_IMPLICIT_EXCEPTION by disabling llvm if it occurs
2478         inside a protected block.
2479
2480         * mini-llvm.c: Revert the last change, the signature of monitor entry/exit
2481         trampolines doesn't include the argument.
2482
2483         * mini-llvm.c (mono_llvm_emit_method): Enable calls to monitor entry/exit
2484         trampolines on amd64.
2485
2486         * mini-amd64.h (MONO_ARCH_MONITOR_OBJECT_REG): Use MONO_AMD64_ARG_REG1 instead
2487         of RDI.
2488
2489         * mini.c (mini_method_compile): Add some comments as to why LLVM is currently
2490         disabled for methods with clauses.
2491
2492         * mini-llvm.c: Enable support for catch clauses.
2493
2494         * mini-exceptions.c (mono_resume_unwind): New function to resume unwinding at the
2495         end of an LLVM compiled finally clause.
2496         (mono_handle_exception_internal): Save the exception handling state in TLS
2497         before calling an LLVM compiled finally clause, so mono_resume_unwind () can
2498         resume unwinding from that point.
2499
2500         * unwind.c (mono_unwind_get_ops_from_fde): Rename this to
2501         mono_unwind_decode_fde, decode the Language Specific Data Area (LSDA) too,
2502         to obtain the addresses of the exception handling regions.
2503
2504         * mini-llvm.c: Add beginnings of support for exception handling, currently only
2505         finally clauses are supported.
2506
2507         * mini.c (mini_method_compile): Add support for LLVM code with exception
2508         handlers.
2509
2510 2009-12-12  Zoltan Varga  <vargaz@gmail.com>
2511
2512         * mini-llvm.c (mono_llvm_emit_method): Allocate the 'pindexes' array with the
2513         proper size.
2514
2515 2009-12-12  Zoltan Varga  <vargaz@gmail.com>
2516
2517         * debugger-agent.c: Encode the this argument of vtype methods as a struct, not
2518         as a primitive type.
2519
2520 2009-12-11  Zoltan Varga  <vargaz@gmail.com>
2521
2522         * driver.c: Applied patch from Matt McClellan (matt@mc-c.net). Add a check
2523         for 2 parameter sched_setaffinity in older glibc versions. Fixes
2524         #564000.
2525
2526 2009-12-11  Marek Habersack  <mhabersack@novell.com>
2527
2528         * method-to-ir.c (mini_redirect_call): do not redirect the
2529         InternalAllocateStr internal call if string profiling is enabled.
2530
2531 2009-12-10  Zoltan Varga  <vargaz@gmail.com>
2532
2533         * aot-compiler.c (add_wrappers): Avoid generating synchronized wrappers for
2534         generic methods.
2535
2536         * unwind.h: Rename this to mini-unwind.h to avoid conflicts with the gcc
2537         unwind.h header file.
2538
2539         * tramp-x86.c (mono_arch_patch_callsite): Patch the code when using valgrind,
2540         newer valgrind versions seems to handle this fine.
2541
2542 2009-12-09  Zoltan Varga  <vargaz@gmail.com>
2543
2544         * debugger-agent.c (start_runtime_invoke): Fix a crash if this is called
2545         on the debugger thread.
2546
2547 2009-12-08  Zoltan Varga  <vargaz@gmail.com>
2548
2549         * mini-llvm.c (mono_llvm_emit_method): Add more SIMD opcodes.
2550
2551         * mini.c (mono_print_method_from_ip): Fix the lookup of trampolines.
2552
2553         * mini-codegen.c (mono_local_regalloc): Allow non-call opcodes with cloc:c.
2554
2555         * cpu-<ARCH>.md: Make call_handler clob:c.
2556
2557         * mini.c: Reenable SSA for methods with clauses.
2558
2559         * mini.c (mini_method_compile): Disable SSA for now for methods with clauses,
2560         as it causes failures on x86.
2561
2562 2009-12-08  Sebastien Pouliot  <sebastien@ximian.com>
2563
2564         * driver.c: Fail gracefully with --compile-all if mono_method_signature
2565         returns NULL (e.g. a bad assembly).
2566
2567 2009-12-08  Geoff Norton  <gnorton@novell.com>
2568
2569         * debugger-agent.c:  Refactor the mono_runtime_invoke guarding against
2570         stepping out into native code.  There were issues with nested invokes
2571         like .cctors.
2572
2573 2009-12-07  Zoltan Varga  <vargaz@gmail.com>
2574
2575         * mini.c (mini_method_compile): Do the disable_llvm checks early
2576         and avoid the LLVM compile pass if the checks fail.
2577
2578         * mini.c ssa.c abcremoval.c: Enable SSA for methods with exception clauses.
2579
2580         * mini-llvm.c: Put our methods/globals into the 'llvm.used' array, so the
2581         LLVM optimizations don't try to remove them.
2582
2583         * aot-compiler.c (emit_llvm_file): Save the result of opt into a
2584         different file so the original remains.
2585
2586 2009-12-06  Zoltan Varga  <vargaz@gmail.com>
2587
2588         * mini-llvm.c mini.c: Fix alignment issues with SIMD vars.
2589
2590         * aot-runtime.c (decode_arm_exidx): Handle most descriptors created by gas.
2591
2592         * aot-runtime.c (decode_arm_exidx): Refactor this into two functions, add
2593         support for non-inline unwind descriptors.
2594
2595 2009-12-07  Geoff Norton  <gnorton@novell.com>
2596
2597         * debugger-agent.c:  Darwin can colesce signals, so we need to handle
2598         the interrupt_count slightly differently.  Native threads were never
2599         marked as resumed.
2600
2601 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
2602
2603         * aot-runtime.c (decode_arm_exidx): New function to initialize a MonoJitInfo
2604         based on the contents of the ARM .exidx section. Not yet used since llvm doesn't
2605         yet generate this info.
2606
2607         * mini-llvm.c: Fix the conversion of call results if they are unsigned.
2608
2609         * debugger-agent.c (buffer_add_value): Treat I/U as a valuetype, so the
2610         client can distinguish between intptrs and longs.
2611
2612 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
2613
2614         * aot-compiler.c (emit_trampoline): Emit the trampoline info into the global
2615         blob.
2616
2617         * aot-runtime.c (load_function): Update after the change above.
2618
2619         * mini.h: Bump AOT file format version.
2620
2621         * method-to-ir.c (mono_method_to_ir): Disallow the delegate optimization
2622         if the delegate class is dynamic.
2623
2624         * method-to-ir.c (handle_delegate_ctor): Allow the method_code optimization
2625         in gshared code too using the new rgctx info type
2626         MONO_RGCTX_INFO_METHOD_DELEGATE_CODE.
2627
2628 2009-12-04  Geoff Norton  <gnorton@novell.com>
2629
2630         * debugger-agent.c: When doing a func-eval invoke on a suspended runtime,
2631         we need to track the original suspend count so the thread properly
2632         wakes up in resume_thread.
2633
2634 2009-12-04  Zoltan Varga  <vargaz@gmail.com>
2635
2636         * method-to-ir.c (handle_delegate_ctor): Add support for using this from gshared
2637         code.
2638
2639         * generics.cs: Add a test.
2640
2641         * method-to-ir.c (emit_get_rgctx_method): Make this work even if context_used
2642         is 0. Simplify a lot of code using this.
2643
2644         * mini-trampolines.c (mono_delegate_trampoline): Call
2645         mono_create_static_rgctx_trampoline () before saving the final address in
2646         delegate->method_code, to avoid calling it each time a delegate is first called.
2647
2648         * method-to-ir.c (mono_method_to_ir): Allow fast delegate creation for methods
2649         which need static rgctx trampolines.
2650
2651         * mini-trampolines.c (mono_create_static_rgctx_trampoline): Use a cache
2652         keyed on the method+addr pair, since addr could be either the method addr or
2653         an unbox trampoline in the AOT case. Fixes #560246.
2654
2655 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2656
2657         * mini.c (mini_method_compile): Call handle_exception_clauses () in the same
2658         place it was called before too.
2659
2660 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2661
2662         * mini.c (mono_jit_runtime_invoke): Avoid the call to mono_class_setup_vtable ()
2663         if no security manager is present, to speed up the AOT case. Call
2664         mono_class_vtable () full with raise_on_error == TRUE instead.
2665
2666 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2667
2668         * mini.c (mini_method_compile): Call handle_exception_clauses earlier so
2669         the local optimization passes can take its result into account. Fixes
2670         #559876.
2671
2672         * exceptions.cs: Add a test.
2673
2674 2009-01-24  Steven Munroe  <munroesj@us.ibm.com>
2675
2676         This patch is contributed under the terms of the MIT/X11 license
2677
2678         * cpu-ppc64.md (load_memindex): Add loadi8_memindex.
2679
2680 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2681
2682         * mini.h (MonoInst): Remove unused 'ssa_op' field.
2683
2684         * debugger-agent.c: Rework the handling of stack traces of running threads to
2685         avoid crashes if compute_frames () tries to walk the stack of running thread.
2686
2687         * mini.c (mono_print_method_from_ip): Use mini_jit_info_table_find.
2688
2689         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): Set frame->lmf.
2690
2691         * mini.h (StackFrameInfo): Add an 'lmf' field.
2692
2693 2009-12-02  Zoltan Varga  <vargaz@gmail.com>
2694
2695         * debugger-agent.c (suspend_current): Always set really_suspended.
2696
2697         * debugger-agent.c (clear_event_request): Clear method entry/exit requests too.
2698
2699         * exceptions-x86.c (mono_arch_get_restore_context): Restore EAX too.
2700
2701 2009-12-01  Zoltan Varga  <vargaz@gmail.com>
2702
2703         * debugger-agent.c (vm_commands): Don't allow invokes on threads which are not
2704         really suspended.
2705
2706 2009-12-01  Zoltan Varga  <vargaz@gmail.com>
2707
2708         * cpu-ppc64.md (store_memindex): Add storei8_memindex.
2709
2710 2009-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
2711
2712         * mini-trampolines.c: Fix MSVC build.
2713
2714 2009-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
2715
2716         * mini-trampolines.c: Check for mono_method_get_vtable_slot failures.
2717
2718 2009-11-30  Zoltan Varga  <vargaz@gmail.com>
2719
2720         * mini-arm.c (mono_arch_lowering_pass): Fix an assert which is hit when
2721         the instruction following an OP_FCOMPARE is optimized away.
2722
2723 2009-11-30  Zoltan Varga  <vargaz@gmail.com>
2724
2725         * aot-compiler.c (arch_emit_autoreg): Extract the auto-registration code from
2726         emit_autoreg () into this arch-specific function.
2727
2728         * aot-compiler.c (emit_exception_debug_info): Don't emit the length of the
2729         code, it is no longer needed.
2730
2731         * aot-runtime.c (decode_exception_debug_info): Don't read the code length.
2732
2733         * mini.h: Bump AOT file format version.
2734
2735         * aot-runtime.c (mono_aot_find_jit_info): Compute the length of the method
2736         using the sorted_code_offsets array, instead of reading it from the
2737         exception debug info.
2738         (load_method): Call mono_aot_find_jit_info instead of
2739         decode_exception_debug_info ().
2740
2741         * aot-compiler.c (emit_exception_debug_info): Emit whenever the method was
2742         LLVM compiled as a flag.
2743
2744 2009-11-29  Zoltan Varga  <vargaz@gmail.com>
2745
2746         * debugger-agent.c (resume_thread): Fix a warning.
2747
2748         * aot-compiler.c: Add an option to set the number of static rgctx trampolines
2749         generated.
2750
2751 2009-11-28  Zoltan Varga  <vargaz@gmail.com>
2752
2753         * aot-compiler.c aot-runtime.c: Get rid of a few global symbols, move their
2754         contents to MonoAotFileInfo.
2755
2756 2009-11-27  Zoltan Varga  <vargaz@gmail.com>
2757
2758         * aot-compiler.c aot-runtime.c: Reorganize the AOT file format once again.
2759         Put all binary data into a giant blob, similarly to the way .net assemblies
2760         store binary data. Emit offset tables in a compact form to reduce their size.
2761
2762         * mini.h: Bump AOT file format version.
2763
2764         * aot-compiler.c (emit_globals_table): Use temp_prefix instead of .L in a few
2765         places.
2766
2767         * aot-compiler.c (emit_globals_table): Emit a hash table for the globals, to
2768         avoid linear searches at runtime.
2769
2770         * aot-runtime.c (find_symbol): Update this to use the hash.
2771
2772         * mini.h: Bump AOT file format version.
2773
2774 2009-11-26  Zoltan Varga  <vargaz@gmail.com>
2775
2776         * aot-compiler.c (emit_klass_info): Save whenever the class has a generic
2777         container.
2778
2779         * aot-runtime.c (decode_cached_class_info): Set the is_generic_container field
2780         too.
2781
2782         * aot-compiler.c (mono_compile_assembly): Add a 'stats' option to print out
2783         the distribution of got slot types.
2784
2785         * mini.h (MonoDebugOptions): Add 'explicit_null_checks' option.
2786
2787         * method-to-ir.c: Add support for generating explicit null checks.
2788
2789 2009-11-25  Zoltan Varga  <vargaz@gmail.com>
2790
2791         * debugger-agent.c (vm_commands): Implement EXIT by invoking Environment.Exit ()
2792         on a random thread if possible.
2793
2794         * aot-runtime.c (mono_aot_plt_resolve): Clean up the handling of function
2795         descriptors a bit, add comments, handle RGCTX_FETCH/GENERIC_CLASS_INIT_TRAMPOLINE
2796         correctly.
2797
2798         * exceptions-ppc.c (mono_arch_find_jit_info_ext): Use mgreg_t as the type of
2799         regs. Pass the real size of the regs array to mono_unwind_frame ().
2800
2801         * unwind.c (mono_unwind_frame): Remove an incorrect assert, add more correct
2802         ones instead.
2803
2804 2009-11-24  Geoff Norton  <gnorton@novell.com>
2805
2806         * mini-darwin.c: Work around apple bug rdar://7209349  See
2807         http://openradar.appspot.com/7209349 for details.  Synopsis,
2808         CoreFoundation SIGTRAP's if you dlopen it off the main thread if its
2809         never been initialized before.
2810
2811 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
2812
2813         * tramp-arm.c: Use blx instead of mov pc, reg to improve support for thumb.
2814
2815         * mini-arm.c (mono_arm_thumb_supported): New helper function.
2816
2817 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
2818
2819         * cfold.c (mono_constant_fold_ins): Fix a problem in the previous change,
2820         OP_SHL_IMM is not 32 bit.
2821
2822 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
2823
2824         * aot-compiler.c (encode_patch): Fix the encoding of R8 on big-endian systems.
2825
2826 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
2827
2828         * aot-compiler.c: Avoid infinite recursion when generic virtual recursion is
2829         encountered.
2830
2831         * debugger-agent.c (resume_vm): Signal the suspend_cond even if suspend_count
2832         > 0 since some threads can resume if their resume_count is > 0.
2833         (invoke_method): Avoid reading freed memory.
2834
2835         * debugger-agent.c (process_suspend): Extract the suspend code from
2836         process_single_step_inner () to a separate function. Rework the code to prevent
2837         races between this function and thread interrupts.
2838
2839         * debugger-agent.c (suspend_current): Check the resume_count field instead
2840         of resume_one so suspends+resumes during single threaded invokes work
2841         correctly.
2842
2843 2009-11-23  Zoltan Varga  <vargaz@gmail.com>
2844
2845         * aot-compiler.c (emit_llvm_file): Enable some llvm optimizations which seem
2846         to make the generated code smaller.
2847
2848         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Add a code
2849         sequence generated by recent LLVM versions.
2850
2851         * mini-llvm.c: Add support for a few simple cases which weren't supported
2852         before.
2853
2854         * mini-trampolines.c (mono_magic_trampoline): Don't call
2855         mono_arch_get_vcall_slot () when llvm is enabled.
2856
2857         * aot-compiler.c (emit_llvm_file): Add code to run the 'opt' llvm tool.
2858
2859         * mini-trampolines.c (mono_magic_trampoline): Extract the bulk of this function
2860         into a new function called common_call_trampoline () which is used by the
2861         llvm vcall trampoline as well.
2862
2863         * debugger-agent.c: Implement single threaded invokes.
2864
2865         * debugger-agent.c: Revert change which broke the agent on linux.
2866
2867         * method-to-ir.c (inline_method): Prevent infinite recursion. Fixes
2868         #557606.
2869
2870         * generics.cs: Add a test.
2871
2872 2009-11-22  Zoltan Varga  <vargaz@gmail.com>
2873
2874         * debugger-agent.c: Fix the cygwin build.
2875
2876 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
2877
2878         * cprop.c: Remove this unused file.
2879
2880 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
2881
2882         * cfold.c (mono_constant_fold_ins): Fix constant folding of shr_imm. Fixes
2883         #557262.
2884
2885         * basic.cs: Add a test.
2886
2887 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
2888
2889         * method-to-ir.c (mono_method_to_ir): Use mono_use_llvm instead of ENABLE_LLVM
2890         in one more place.
2891
2892 2009-11-20  Zoltan Varga  <vargaz@gmail.com>
2893
2894         * mini.c mini-trampolines.c driver.c: Add a 'mono_use_llvm' flag to control
2895         whenever the runtime uses LLVM code. Add a '--llvm' command line option to set
2896         it. Use this flag to control llvm related code paths instead of #ifdef
2897         ENABLE_LLVM, so a runtime configured without --enable-llvm can use LLVM compiled
2898         AOT code.
2899
2900         * aot-runtime.c aot-compiler.c: Add a 'flag' field to MonoAotFileInfo.
2901
2902         * mini.h: Bump AOT file format version.
2903
2904         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline_full): These
2905         receive their argument in MONO_ARCH_VTABLE_REG, not in the first argument reg.
2906
2907         * debugger-agent.c (create_event_list): Fix a crash if an empty assembly list
2908         was used as an assembly filter.
2909
2910 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
2911
2912         * unwind.c: Fix support for ppc.
2913
2914         * exceptions-ppc.c (mono_arch_find_jit_info): Change this to use dwarf frame
2915         unwind info. Change to the mono_arch_find_jit_info_ext () interface.
2916
2917 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
2918
2919         * mini-ppc.c (mono_arch_emit_prolog): Fix a copy-paste error to fix the ppc64
2920         port.
2921         (mono_arch_cpu_init): Don't set cpu_hw_flags to 0 at the end, this was somehow
2922         added by the ps3 changes.
2923
2924 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
2925
2926         * mini-gc.c: Resurrect this, so at least it compiles.
2927
2928         * debugger-agent.c (assembly_commands): Implement GET_NAME command.
2929
2930 2009-11-18  Zoltan Varga  <vargaz@gmail.com>
2931
2932         * debugger-agent.c (mono_debugger_agent_handle_exception): Pass a MonoJitInfo to
2933         create_event_list () so assembly filters can be used.
2934
2935         * exceptions-ppc.c (mono_arch_find_jit_info): Fix the restoration of registers
2936         from the LMF.
2937
2938 2009-11-17  Zoltan Varga  <vargaz@gmail.com>
2939
2940         * debugger-agent.c (mono_debugger_agent_breakpoint_hit): Fix a warning.
2941         (mono_debugger_agent_thread_interrupt): Make this return FALSE if the agent
2942         is disabled.
2943
2944         * aot-compiler.c (add_generic_instances): Emit instances of common generic
2945         classes for char/bool too.
2946
2947         * debugger-agent.c (DebuggerTlsData): Honor the DISABLE_SOFT_DEBUG option.
2948
2949         * debugger-agent.c (DebuggerTlsData): Add a 'really_suspended' flag, not yet
2950         used.
2951
2952         * debugger-agent.c: Add some definitions to make backporting to 2.6 easier.
2953         Fix warnings.
2954
2955 2009-11-15  Andreas Faerber  <andreas.faerber@web.de>
2956
2957         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Signature fix.
2958         
2959         Code contributed under MIT/X11 license.
2960
2961 2009-11-14  Zoltan Varga  <vargaz@gmail.com>
2962
2963         (mono_debugger_agent_thread_interrupt): Save the context so stacktraces for
2964         threads in native code work.
2965
2966         * debugger-agent.c: Pass the 'flags' argument to VM_INVOKE_METHOD earlier in
2967         the parameter list, so it can be acted upon by vm_commands (). Bump protocol
2968         version.
2969
2970 2009-11-13 Jonathan Chambers <joncham@gmail.com>
2971
2972         * debugger-agent.c: Implementation for Windows platform.
2973
2974         * mini-x86.c: Add support for Windows. Use mono-* synchronization
2975         primitives. Use SEH to implement breakpoints and single stepping.
2976
2977         * mini-x86.h: Enable soft debugger on Windows.
2978
2979         Code contributed under MIT/X11 license.
2980
2981 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
2982
2983         * mini-amd64.c (emit_call_body): Disable usage of near calls when running
2984         under XEN. Fixes #522894.
2985
2986         * patch-info.h: Add LLVM_IMT_TRAMPOLINE.
2987
2988         * mini-llvm.c aot-compiler.c aot-runtime.c mini.c: Add support for making
2989         interface calls in LLVM AOT code.
2990
2991         * aot-compiler.c mini-llvm.c: Abort llvm compilation if a non-encodable patch
2992         is found.
2993
2994         * mini-llvm.c: Add support for OP_VPHI.
2995
2996         * objects.cs: Add a test.
2997
2998 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
2999
3000         * debugger-agent.c (mono_debugger_agent_single_step_event): Avoid a crash if
3001         this is called on the debugger thread.
3002
3003 2009-11-12  Zoltan Varga  <vargaz@gmail.com>
3004
3005         * mini-llvm.c: Add soft-float support.
3006
3007         * method-to-ir.c (mono_decompose_soft_float): Restart after decomposing an
3008         FCALL which returns an R4.
3009
3010         * driver.c (mono_main): Add a missing '\n'.
3011
3012         * mini-trampolines.c (mono_create_llvm_imt_trampoline): Fix the build on
3013         platforms which doesn't support the LLVM IMT trampoline.
3014
3015 2009-11-11  Zoltan Varga  <vargaz@gmail.com>
3016
3017         * mini-llvm.c (mono_llvm_emit_method): Fix LOCALLOC.
3018
3019         * mini-llvm-cpp.cpp: Update to latest LLVM SVN.
3020
3021         * mini-llvm.c (mono_llvm_emit_method): Avoid creating plt entries for
3022         virtual calls.
3023
3024         * aot-runtime.c: Don't define HAVE_DL_ITERATE_PHDR, configure now does that.
3025
3026 2009-11-10  Zoltan Varga  <vargaz@gmail.com>
3027
3028         * aot-compiler.c aot-runtime.c: Change how mono_arch_find_jit_info () works.
3029         Instead of emitting a method_order table, sort the contents of the code_offsets
3030         table and do a binary search in the sorted table. The previous approach doesn't
3031         work with LLVM which emits methods in a arbitrary order.
3032
3033         * aot-runtime.c: Add support for creating MonoJitInfo structures by searching
3034         in the .eh_frame section in ELF files.
3035
3036         * mini.h: Bump corlib file format version.
3037
3038         * mini-llvm.c aot-compiler.c: Add support for AOT to the LLVM back end.
3039
3040         * exceptions-arm.c (mono_arch_get_call_filter_full): Update after the
3041         LDMIA->LDM macro name change.
3042
3043 2009-11-09  Zoltan Varga  <vargaz@gmail.com>
3044
3045         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Fix and enable this for
3046         x86.
3047
3048         * mini-llvm-cpp.cpp (JITMemoryManager): Fix compilation with LLVM 2.7
3049         SVN.
3050
3051         * aot-compiler.c: Ditto.
3052
3053         * mini-arm.c (mono_arch_allocate_vars): Fix the previous change by passing
3054         &align to mini_type_stack_size_full ().
3055
3056         * mini-arm.c (mono_arch_emit_prolog): Implement support for varargs.
3057
3058         * mini-ops.h: Add documentation for the OP_ARGLIST opcode.
3059
3060 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
3061
3062         * mini-arm.c: Compute the stack space used by arguments using
3063         mini_type_stack_size_full ().
3064
3065 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
3066
3067         * optflags-def.h: Remove dead TREEPROP optimization.
3068
3069 2009-11-08  Rodrigo Kumpera  <rkumpera@novell.com>
3070
3071         * mini-ppc.h: Make mono compiler under FreeBSD/ppc64. 
3072
3073         Patch by Justin Hibbits <chmeeedalf@gmail.com>.
3074
3075 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
3076
3077         * driver.c (mono_jit_parse_options): New public API function to parse options
3078         as done by the runtime executable.
3079
3080         * debugger-agent.c (buffer_add_cattrs): Fix reading an uninitialized variable
3081         when handling named arguments.
3082
3083 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
3084
3085         * mini-arm.c: Implement support for returning vtypes in registers, fix support
3086         for passing small vtypes in registers, make the CallInfo structures more
3087         similar to the code on the other platforms.
3088
3089         * mini-arm.c (mono_arch_allocate_vars): Align small vtypes to 4 bytes too since
3090         the code in the prolog requires it.
3091
3092 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
3093
3094         * mini-arm.c debugger-agent.c: Android changes from Koushik K. Dutta
3095         (koush@koushikdutta.com).
3096
3097         * mini-arm.c (handle_thunk): Add a domain argument to control the domain
3098         where the thunk memory should be allocated from. Fixes appdomain unloading
3099         on arm.
3100
3101 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
3102
3103         * mini-arm.c exceptions-arm.c: Make ctx->regs map directly to the 16 hardware
3104         registers, instead of r4..r11,ip,lr. Make restore_context () restore r0..r3 too.
3105
3106 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3107
3108         * mini-amd64.c (mono_arch_output_basic_block): Don't allow OP_SEQ_POINT in
3109         AOT, as it is not implemented yet.
3110
3111         * mini-x86.c (mono_arch_output_basic_block): Ditto.
3112
3113 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3114
3115         * debugger-agent.c: Fix windows build.
3116
3117 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3118
3119         * debugger-agent.c (debugger_thread): Call mono_set_is_debugger_attached ()
3120         after the client connects/disconnects.
3121
3122         * debugger-agent.c: Add an 'onthrow' option to start the debugger agent
3123         when an exception of a given type is thrown.
3124
3125         * debugger-agent.c: Add a 'onuncaught' option to start the debugger agent
3126         only on an uncaught exception.
3127
3128         * mini-exceptions.c: Notify the debugger agent on an uncaught exception.
3129
3130         * debugger-agent.c: Add a 'launch' option.
3131
3132 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3133
3134         * debugger-agent.c: Add a 'timeout' option.
3135
3136 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3137
3138         * debugger-agent.c: Implement the 'server' and 'suspend' options supported by
3139         the JDWP agent.
3140
3141 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3142
3143         * debugger-agent.c (set_breakpoint): Emit a log message.
3144
3145 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
3146
3147         * mini-arm.c: Fix the arm build.
3148
3149 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
3150
3151         * aot-compiler.c: don't leak the value returned from
3152         mono_type_full_name().
3153
3154 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
3155
3156         * debugger-agent.c: defer including mono-mutex.h until we know the
3157         agent is supported.
3158
3159 2009-11-04 Jonathan Chambers <joncham@gmail.com>
3160
3161         * debugger-agent.c: Changes to build on windows. Use mono-mutex instead
3162         of pthreads directly.
3163
3164         * mini.c (mono_sigfpe_signal_handler): Changed signature of Windows
3165         exception handlers. Pass info argument.
3166
3167         * mini.h: Adjust signatures of soft debugger functions to pass void*
3168         instead of siginfo_t. Adjust SIG_HANDLER_SIGNATURE on Windows.
3169
3170         * mini-amd64.c (mono_arch_is_single_step_event): Adjust signature to pass void*
3171         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3172         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
3173         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3174
3175         * mini-amd64.h: Adjust MonoW32ExceptionHandler signature.
3176
3177         * mini-x86.c (mono_arch_is_single_step_event): Adjust signature to pass void*
3178         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3179         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
3180         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3181
3182         * mini-x86.h: Adjust MonoW32ExceptionHandler signature.
3183
3184         * exceptions-x86.c: Adjust W32_SEH_HANDLE_EX for new signature.
3185
3186         * exceptions-amd64.c: Adjust W32_SEH_HANDLE_EX for new signature.
3187
3188         * mono-semaphore.h: Skeleton implementation for Windows.
3189
3190         Code contributed under MIT/X11 license.
3191
3192 2009-11-04 Jonathan Chambers <joncham@gmail.com>
3193
3194         * simd-intrinsics.c (simd_intrinsic_emit_setter): Unfix my fix.
3195
3196         Code contributed under MIT/X11 license.
3197
3198 2009-11-04 Jonathan Chambers <joncham@gmail.com>
3199
3200         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix windows build.
3201
3202         Code contributed under MIT/X11 license.
3203
3204 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
3205
3206         * aot-compiler.c (mono_save_xdebug_info): Bump the threshold for flushing
3207         debug info to 100 because 10 still slows down gdb too much.
3208
3209         * method-to-ir.c (mono_method_to_ir): Avoid rethrowing thread abort exceptions
3210         inside runtime invoke wrappers. This avoids the need to call ResetAbort () on
3211         them in the wrappers.
3212
3213 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
3214
3215         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
3216
3217         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix a warning.
3218
3219         * aot-runtime.c (mono_aot_get_method): Refactor some code into a new helper
3220         function mono_aot_get_array_helper_from_wrapper ().
3221
3222         * aot-compiler.c (add_generic_class): Refactor the code a bit, really emit
3223         array helper methods.
3224
3225 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
3226
3227         * simd-intrinsics.c (load_simd_vreg): Add extra argument to signal if
3228         the value was loaded from memory.
3229
3230         * simd-intrinsics.c (simd_intrinsic_emit_setter): Store back to memory if
3231         the value was loader from there.
3232
3233         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Fail correctly for Shuffle
3234         without constant swizzle.
3235
3236 2009-11-02 Jonathan Chambers <joncham@gmail.com>
3237
3238         * mini-amd64.c: Put soft debugger functions behind a
3239         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
3240
3241         * mini-amd64.h: disable the soft debugger in windows.
3242
3243         Code contributed under MIT/X11 license.
3244
3245 2009-11-02 Jonathan Chambers <joncham@gmail.com>
3246
3247         * mini-x86.c: Put soft debugger functions behind a
3248         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
3249
3250         Code contributed under MIT/X11 license.
3251
3252 2009-11-02 Jonathan Chambers <joncham@gmail.com>
3253
3254         * exceptions-x86.c (win32_handle_stack_overflow): Fix parameters
3255         to mono_arch_find_jit_info_ext.
3256
3257         Code contributed under MIT/X11 license.
3258
3259 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
3260
3261         * debugger-agent.c: Include netinet/in.h to fix the bsd build.
3262
3263         * debugger-agent.c: Add support for filtering events by assemblies.
3264
3265         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Return false if
3266         the agent is not enabled.
3267
3268 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
3269
3270         * exceptions-x86.c: hopefully last change to fix the windows build.
3271         This one courtesy of Jonathan Chambers.
3272
3273 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
3274
3275         * debugger-agent.c: remove unused function.
3276
3277 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
3278
3279         * debugger-agent.c: add #ifdefs for a few header files.
3280         * mini-x86.h: disable the soft debugger in windows.
3281         Step 1 of 2 to make this compile on windows with gcc.
3282
3283 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
3284
3285         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Comment this out for now
3286         as it breaks the build.
3287
3288 2009-07-01  Zoltan Varga  <vargaz@gmail.com>
3289
3290         Merge the soft debugger branch.
3291
3292         * debugger-agent.h debugger-agent.c: New files containing the soft
3293         mode debugger module.
3294
3295         * method-to-ir.c (mono_method_to_ir): Generate OP_SEQ_POINT opcodes
3296         at the appropriate locations.
3297
3298         * mini-<ARCH>.c (mono_arch_output_basic_block): Handle OP_SEQ_POINT
3299         opcode.
3300
3301         * mini-<ARCH>.c: Add new arch-specific functions to set/clear breakpoints,
3302         enable/disable single stepping.
3303
3304         * exceptions-<ARCH>.c (mono_arch_find_jit_info_ext): New stack unwinding api
3305         which returns all information in a StackFrameInfo structure, and can handle the
3306         LMF frames added by the debugger.
3307
3308         * mini-<ARCH>.h (MonoLMFExt): New structure containing additional information
3309         about an LMF frame.
3310
3311         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): New stack
3312         walker function which works on a specific thread and passes a StackFrameInfo
3313         structure to its callback.
3314
3315         * mini.c (mini_init): Initialize the debugger agent.
3316
3317         * aot-compiler.c aot-runtime.c: Add soft-debug support.
3318
3319         * mini-ops.h: Add OP_SEQ_POINT opcode.
3320
3321         * driver.c (mono_main): Add new '--debugger-agent' option for passing
3322         arguments to the debugger agent.
3323
3324 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
3325
3326         * mini.c (mini_method_compile): Disable llvm for methods with an lmf here to
3327         speed things up.
3328
3329         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOCALLOC.
3330
3331         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Implement this for x86.
3332
3333         * mini.c (mini_init): Avoid using the IMT trampoline in the LLVM case.
3334
3335         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add a static rgctx trampoline
3336         if needed.
3337         (mono_create_llvm_imt_trampoline): New function to create a trampoline which
3338         sets the IMT argument and makes a virtual call.
3339
3340         * mini-llvm.c: Enable interface calls using the llvm imt trampoline.
3341
3342 2009-11-01  Zoltan Varga  <vargaz@gmail.com>
3343
3344         * Makefile.am (llvm_sources): Enable the llvm option since it no longer breaks
3345         the windows build.
3346
3347 2009-10-30  Zoltan Varga  <vargaz@gmail.com>
3348
3349         * mini.c (mini_cleanup): Call profiler shutdown before shutting down the
3350         runtime. Fixes #551228.
3351
3352 2009-10-29  Zoltan Varga  <vargaz@gmail.com>
3353
3354         * mini-x86.c (mono_arch_output_basic_block): Fix % 1. Fixes #550970.
3355
3356         * basic.cs: Add a test.
3357
3358         * method-to-ir.c (mono_method_to_ir): Use EMIT_NEW_LOAD_MEMBASE_TYPE to
3359         load vtypes instead if OP_LOADV_MEMBASE in the implementation of
3360         CONSTRAINED. Fixes #550964.
3361
3362         * generics.cs: Add a test.
3363
3364 2009-10-28  Mark Probst  <mark.probst@gmail.com>
3365
3366         * mini-posix.c (add_signal_handler): Use
3367         mono_gc_get_suspend_signal() instead of GC_get_suspend_signal().
3368
3369 2009-10-28 Jerry Maine <crashfourit@gmail.com>
3370
3371         Contributed under the terms of the MIT/X11 license by
3372         Jerry Maine <crashfourit@gail.com>.
3373
3374         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
3375         sse4a for simd intrinsics.
3376
3377         * mini-amd64.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
3378         sse4a for simd intrinsics.
3379
3380 2009-10-27  Zoltan Varga  <vargaz@gmail.com>
3381
3382         * ir-emit.h method-to-ir.c: Change a few _IMM macros to assign to inst_imm
3383         instead of inst_p1 which is not the same on ILP32 platforms.
3384
3385 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
3386
3387         * mini-ppc.c (mono_arch_emit_prolog): Load the current got address,
3388         not the mscorlib one before calling mono_get_lmf_addr.
3389
3390         * tramp-ppc.c (mono_arch_create_trampoline_code_full): Fix the storing
3391         of the ip to the LMF.
3392
3393         * method-to-ir.c (mono_method_to_ir): Fix the handling of the
3394         immediate in the op->op_imm optimization.
3395
3396         * mini-ppc.c: Add a 'vtregs' field to ArgInfo to make the code easier to
3397         understand. VTypes now work, but are not abi compliant, as they are
3398         split into 4 byte parts instead of 8.
3399         (emit_memcpy): Fix the unrolled case to work on the PS3.
3400
3401         * mini-ppc.c (get_delegate_invoke_impl): Fix this for the PS3.
3402
3403         * aot-compiler.c (mono_compile_assembly): Make the autoreg option
3404         the default when static linking.
3405
3406         * mini-ppc.c (mono_arch_emit_prolog): Fix handling of I8 arguments.
3407
3408         * aot-compiler.c: Add an autoreg option to automatically register
3409         statically linked aot modules using ELF .ctors.
3410
3411         * genmdesc.pl: Add __ppc64__ to allowed defines.
3412
3413 2009-10-25  Zoltan Varga  <vargaz@gmail.com>
3414
3415         * mini-posix.c (add_signal_handler): Delay the GC suspend signal while
3416         executing a SIGSEGV handler on an altstack, since libgc can't handle that.
3417
3418 2009-10-24  Mark Probst  <mark.probst@gmail.com>
3419
3420         * exceptions-x86.c (mono_arch_find_jit_info): Fix build.
3421
3422 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
3423
3424         * mini-exceptions.c (mini_jit_info_table_find): Add an 'out_domain' argument
3425         which will contain the domain where the method was found.
3426
3427         * exceptions-<ARCH>.c mini-exceptions.c: Update callers of
3428         mini_jit_info_table_find ().
3429
3430         * aot-compiler.c (xdebug_end_emit): Remove so stray debug code.
3431
3432         * branch-opts.c (mono_if_conversion): Avoid running deadce if it is disabled.
3433
3434 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
3435
3436         * mini-x86.c (mono_arch_emit_prolog): Disable aot for methods with save_lmf
3437         set, its not supported yet.
3438
3439 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
3440
3441         * aot-runtime.c (mono_aot_get_method): Avoid asserting if a array generic
3442         iface wrapper is not found.
3443         (mono_aot_get_method): Ditto for GetGenericValueImpl.
3444
3445 2009-10-21  Zoltan Varga  <vargaz@gmail.com>
3446
3447         * aot-runtime.c (mono_aot_get_method): Fix support for the IList<T> wrappers,
3448         which have a different name.
3449
3450         * aot-runtime.c (mono_aot_get_method): Special case the array generic iface
3451         wrappers and Array.GetGenericValueImpl ().
3452
3453         * aot-compiler.c: Avoid emitting some wrappers which are not needed anymore
3454         because of the change above.
3455
3456         * generics.cs: Add a test for full aot + generic array ifaces.
3457
3458 2009-10-19  Sebastien Pouliot  <sebastien@ximian.com>
3459
3460         * aot-compiler.c (emit_plt): Remove duplicate 'debug_sym' variable 
3461         that hides the previous one.
3462
3463 2009-10-18  Zoltan Varga  <vargaz@gmail.com>
3464
3465         * aot-compiler.c (can_marshal_struct): Allow some System.dll structs to be
3466         marshalled. Fixes #541623.
3467
3468 2009-10-16  Zoltan Varga  <vargaz@gmail.com>
3469
3470         * aot-compiler.c (emit_extra_methods): Remove some asserts which are not needed.
3471
3472 2009-10-15  Zoltan Varga  <vargaz@gmail.com>
3473
3474         * mini.c (mono_op_imm_to_op): Handle OP_AND/OR/XOR_IMM.
3475
3476 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3477
3478         * mini-posix.c (sigprof_signal_handler):
3479         Implemented support for building stat call chans in different ways.
3480
3481 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3482
3483         * mini-exceptions.c (mono_find_jit_info):
3484         Also check that a jit info has been found (fixes a profiler crash).
3485
3486 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3487
3488         * mini.c (mono_codegen):
3489         Call mono_profiler_code_buffer_new with correct code address.
3490
3491 2009-10-14  Zoltan Varga  <vargaz@gmail.com>
3492
3493         * driver.c (mono_main): Change the date in the copyright.
3494
3495 2009-10-14  Mark Probst  <mark.probst@gmail.com>
3496
3497         * method-to-ir.c (mono_method_to_ir): Don't use a managed array
3498         allocator in shared generic code for open classes, because we
3499         can't get those classes' vtables.  We need to make managed
3500         allocators not depend on the vtable at compile-time to solve this.
3501
3502 2009-10-13  Martin Baulig  <martin@ximian.com>
3503
3504         * debug-mini.c (mono_debugger_trampoline_compiled): Add
3505         `const guint8 *trampoline' argument; send both the old and the new
3506         notification.
3507
3508 2009-09-30  Zoltan Varga  <vargaz@gmail.com>
3509
3510         * aot-compiler.c (add_wrappers): Add a runtime invoke wrapper which is used by
3511         mono_runtime_capture_context () without calling mono_runtime_invoke ().
3512         (can_marshal_struct): Skip structures with auto layout.
3513
3514         * tramp-arm.c (GEN_TRAMP_SIZE): Increase this by 4.
3515
3516 2009-10-02  Zoltan Varga  <vargaz@gmail.com>
3517
3518         * mini-sparc.c (mono_arch_emit_setret): Emit long return values using OP_LMOVE.
3519         (mono_arch_create_vars): Instead of allocating a stack slot by hand, allocate
3520         a variable to hold the stack slot used by the int<->float conversion opcodes.
3521
3522         * mini-sparc.c (mono_arch_build_imt_thunk): Implement support for fail_tramp.
3523
3524 2009-10-04  Zoltan Varga  <vargaz@gmail.com>
3525
3526         * aot-compiler.c (add_generic_class): Only add GetGenericValueImpl wrappers
3527         when using full-aot.
3528
3529 2009-10-06  Zoltan Varga  <vargaz@gmail.com>
3530
3531         * aot-compiler.c (add_generic_class): Add an instance of GenericComparer<T> for
3532         each instance of Comparer<T>.
3533
3534         * generics.cs: Add a new test.
3535
3536 2009-10-09  Zoltan Varga  <vargaz@gmail.com>
3537
3538         * driver.c (parse_debug_options): Add a 'gdb' option.
3539
3540         * mini.c (mini_parse_debug_options): Add a 'gdb' option.
3541
3542         * image-writer.c: Add support for emitting the image into a memory buffer.
3543
3544         * dwarfwriter.c: Add support for sharing one IL file between multiple images.
3545
3546         * aot-compiler.c: Add support for registering debug info with GDB using the
3547         new JIT debugging interface in GDB 7.0. It can be turned on by setting
3548         MONO_XDEBUG to 'gdb'.
3549
3550 2009-10-10  Zoltan Varga  <vargaz@gmail.com>
3551
3552         * aot-compiler.c (mono_save_trampoline_xdebug_info): Implement this for the
3553         gdb mode.
3554
3555 2009-10-11  Zoltan Varga  <vargaz@gmail.com>
3556
3557         * aot-compiler.c (mono_save_xdebug_info): Emit a symbol for the method which
3558         can be used to set breakpoints in gdb.
3559
3560         * image-writer.c (bin_writer_emit_writeout): Add support for setting the text
3561         segment to an absolute address.
3562
3563 2009-10-13  Mark Probst  <mark.probst@gmail.com>
3564
3565         * method-to-ir.c: Use the managed array allocator method if
3566         available.
3567
3568 2009-10-13  Bill Holmes  <billholmes54@gmail.com>
3569
3570         * aot-compiler.c : Fix the MSVC builds
3571
3572         Code is contributed under MIT/X11 license.
3573
3574 2009-10-13  Zoltan Varga  <vargaz@gmail.com>
3575
3576         * aot-compiler.c (mono_save_xdebug_info): Group methods into groups of 10 to
3577         avoid registering 1 symbol file per method with gdb.
3578
3579 2009-09-29  Zoltan Varga  <vargaz@gmail.com>
3580
3581         * mini-sparc.c: Fix the handling of enums with base type long.
3582
3583         * mini-sparc.c (mono_arch_output_basic_block): Fix IREM_UN_IMM.
3584
3585         * mini-sparc.c (mono_arch_allocate_vars): Use mono_class_from_mono_type ()
3586         instead of using type->data.klass as the later doesn't work with generics.
3587
3588 2009-09-25  Mark Probst  <mark.probst@gmail.com>
3589
3590         * method-to-ir.c, mini.h, mini-alpha.c, mini-amd64.c, mini-arm.c,
3591         mini-hppa.c, mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c,
3592         mini-s390x.c, mini-sparc.c, mini-x86.c: Thread.get_CurrentThread
3593         works differently now and we don't handle it in the JIT anymore.
3594
3595         * mini.c, mini-exceptions.c, mini-posix.c, debug-debugger.c,
3596         debug-mini.c, tramp-amd64.c, tramp-x86.c: Changes resulting from
3597         the Thread class split.
3598
3599 2009-09-25  Zoltan Varga  <vargaz@gmail.com>
3600
3601         * driver.c: Don't run tests with the obsolete treeprop optimization.
3602
3603         * mini-sparc.c (mono_arch_create_vars): Make the component vars of a long ret
3604         variable volatile. Fixes #541577.
3605
3606         * basic-calls.cs: Add a new test.
3607
3608         * basic-long.cs: Remove tests which are now in basic-calls.cs.
3609
3610 2009-09-24  Zoltan Varga  <vargaz@gmail.com>
3611
3612         * dwarfwriter.c (emit_debug_info_end): Disable this as it doesn't seem to
3613         work/required with recent iphone sdk versions.
3614
3615         * aot-compiler.c (add_wrappers): Generate PtrToStructure wrappers for more
3616         structures.
3617
3618         * decompose.c (mono_decompose_vtype_opts): Avoid reading uninitialized memory
3619         in the VCALL decomposition code.
3620
3621 2009-09-22  Zoltan Varga  <vargaz@gmail.com>
3622
3623         * mini-ia64.c (mono_arch_output_basic_block): Fix ISHR/ISHR_IMM.
3624
3625         * basic.cs: Add a test.
3626
3627         * mini-ia64.c (mono_arch_build_imt_thunk): Implement support the virtual
3628         generic invokes.
3629
3630         * mini-exceptions.c (mini_jit_info_table_find): New helper function which
3631         searches all the domains of the current thread.
3632
3633         * exceptions-<ARCH>.c: Use it. Fixes #539394.
3634
3635 2009-09-21  Zoltan Varga  <vargaz@gmail.com>
3636
3637         * exceptions-arm.c (mono_arm_throw_exception): Set ctx->ebp to fp instead of sp
3638         so catching exceptions thrown in the same method works. Fixes exception17.exe.
3639
3640         * tramp-arm.c (mono_arch_create_trampoline_code_full): Store NULL into lmf->method
3641         for non-jit trampolines.
3642
3643         * mini.c (mono_jit_runtime_invoke): Allow string ctors with dyn runtime invoke.
3644
3645         * aot-compiler.c (add_wrappers): Ditto.
3646
3647         * mini-arm.c: Implement support for passing vtypes and floats, and increase
3648         the size of the param area used by dyn_call to 6 which covers the majority of
3649         methods.
3650
3651         * mini.c aot-compiler.c: Allow dyn_call for string methods except ctors.
3652
3653         * mini-arm.c: Implement support for passing/receiving
3654         longs and receiving floats in the dyn_call code.
3655
3656         * mini-amd64.c: Implement support for receiving vtypes in registers in
3657         the dyn_call code.
3658
3659         * mini.c mini-amd64.c: Implement partial support for passing vtypes in
3660         the dyn_call code.
3661
3662 2009-09-20  Zoltan Varga  <vargaz@gmail.com>
3663
3664         * mini-arm.c (get_call_info): Return more precise information in
3665         ArgInfo->regtype.
3666         (dyn_call_supported): Use the information in CallInfo.
3667
3668         * mini-arm.c: Enable support for returning vtypes in the dyn_call code.
3669
3670         * mini.c mini-amd64.c: Enable support for returning vtypes in the dyn_call
3671         code.
3672
3673         * mini-arm.c: Update after the dyn_call api changes.
3674
3675         * mini.c (mini_create_jit_domain_info): Register a destructor function
3676         for the runtime_invoke_hash.
3677
3678         * mini-amd64.c (mono_arch_get_dyn_call_args): Rename this to
3679         'mono_arch_dyn_call_start'. Pass the pointer to the return value buffer to
3680         this function.
3681         (mono_arch_get_dyn_call_ret): Rename this to 'mono_arch_dyn_call_finish'.
3682         (dyn_call_supported): Simplify this by using get_call_info ().
3683         (mono_arch_dyn_call_free): New destructor function.
3684
3685         * generics.cs: Remove a printf.
3686
3687         * method-to-ir.c (mono_method_to_ir): Allocate some param area for DYN_CALL.
3688
3689         * mini-arm.c: Add support for enum return values and passing a few arguments
3690         on the stack.
3691         
3692         * mini.c (mono_jit_runtime_invoke): Add support for enum return values to
3693         dyn invoke.
3694
3695         * mini-amd64.c (mono_arch_get_dyn_call_ret): Ditto.
3696
3697         * aot-compiler.c (add_wrappers): Add a few restrictions for the use of
3698         the dynamic invoke wrappers.
3699
3700         * mini-arm.c: Implement OP_DYN_CALL for arm.
3701
3702         * aot-compiler.c (add_wrappers): Avoid aot-ing runtime invoke wrappers
3703         supported by the dynamic runtime invoke wrapper.
3704
3705         * aot-compiler.c aot-runtime.c: Add support for encoding the dynamic
3706         runtime invoke wrapper.
3707
3708         * mini.c (mono_jit_runtime_invoke): Use the dynamic runtime invoke wrappers
3709         if possible when running with full-aot.
3710
3711         * mini-ops.h: Add OP_DYN_CALL opcode.
3712
3713         * mini-amd64.c method-to-ir.c: Add infrastructure for making method calls
3714         with dynamic arguments lists similar to libffi.
3715
3716 2009-09-19  Zoltan Varga  <vargaz@gmail.com>
3717
3718         * method-to-ir.c: Fix the previous change on 64 bit platforms.
3719         
3720         * method-to-ir.c: Applied patch from Rodrigo Kumpera. Allow an i8 argument
3721         to NEWARR.
3722
3723         * iltests.il.in: Add a new test.
3724         
3725 2009-09-18  Zoltan Varga  <vargaz@gmail.com>
3726
3727         * aot-compiler.c (add_generic_instances): Add more instances of
3728         GenericEqualityComparer.
3729
3730 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
3731
3732         * mini.c: Add asserts for mono_class_vtable calls that are not meant to fail.
3733
3734 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
3735
3736         * method-to-ir.c: Handle failures from mono_class_vtable. Added some
3737         comments on some functions that now can fail.
3738
3739 2009-09-17  Andrew Jorgensen  <ajorgensen@novell.com>
3740
3741         * Makefile.am: Add Info.plist to EXTRA_DIST
3742
3743 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
3744
3745         * method-to-ir.c (mono_method_to_ir): Allow AOT for CEE_LDTOKEN in
3746         static synchronized wrappers. Fixes #539500.
3747
3748 2009-09-14  Rodrigo Kumpera  <rkumpera@novell.com>
3749
3750         * jit-icalls.c (mono_class_static_field_address): handle vtable failure
3751         properly.
3752
3753 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
3754
3755         * mini-exceptions.c (mono_handle_exception_internal): Store the computed
3756         lmf before calling filter clauses as well. Fixes #539550.
3757
3758         * exceptions.cs: Add a test.
3759         
3760 2009-09-14  Zoltan Varga  <vargaz@gmail.com>
3761
3762         * aot-compiler.c (add_generic_class): Add instances of
3763         Array.GetGenericValueImpl as well.
3764
3765         * Makefile.am (fullaotcheck): Copy and aot more assemblies so linq
3766         can be tested too.
3767
3768         * generics.cs: Add a fullaot linq test.
3769
3770 2009-09-10  Zoltan Varga  <vargaz@gmail.com>
3771
3772         * aot-compiler.c (arch_emit_static_rgctx_trampoline): Don't clobber argument
3773         reg r1 on arm.
3774
3775 2009-09-10  Bill Holmes  <billholmes54@gmail.com>
3776
3777         * mini-trampolines.c (mono_delegate_trampoline) : Call
3778           mono_cominterop_get_invoke if the delegate target object
3779           is a COM object.
3780
3781         Code is contributed under MIT/X11 license.
3782
3783 2009-09-09  Sebastien Pouliot  <sebastien@ximian.com>
3784
3785         * method-to-ir.c: For CoreCLR throw a SecurityException if an 
3786         internal call is defined outside platform code. Reduce code 
3787         duplication with existing [Method|Field]AccessException
3788
3789 2009-09-08  Rodrigo Kumpera  <rkumpera@novell.com>
3790
3791         * mini-x86.c (mono_arch_emit_call): Don't reduce stack usage by 4
3792         if the return value is a small struct passed on regs.
3793
3794 2009-09-09  Zoltan Varga  <vargaz@gmail.com>
3795
3796         * cpu-arm.md mini-arm.c: Remove unused opcodes.
3797
3798         * mini-codegen.c: Enable the cpu description validation for arm.
3799
3800 2009-09-08  Zoltan Varga  <vargaz@gmail.com>
3801
3802         * basic-calls.cs: Move the test_0_float_load_and_store_with_big_offset ()
3803         test which depends on structs to objects.cs.
3804         
3805         * basic-calls.cs: Remove calls to Console.WriteLine and throws, since those
3806         require object model related stuff working.
3807
3808         * cpu-x86.md mini-x86.c: Remove more unused opcodes.
3809
3810         * mini-ops.h: Fix OP_BIGMUL instruction descriptions.
3811
3812         * mini-codegen.c (mono_local_regalloc): Validate the cpu description 
3813         against the instruction metadata in mini-ops.h. amd64 only for now.
3814
3815         * mini-ops.h: Fix some instruction descriptions.
3816
3817         * mini-ops.h mini-x86.c mini-amd64.c cpu-<ARCH>.md: Remove some
3818         unused instructions.
3819
3820 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
3821
3822         * exceptions.cs: Add a new test.
3823
3824 2009-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
3825
3826         * mini-x86.c (needs_stack_frame): OSX requires full frames to keep proper alignment.
3827
3828 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
3829
3830         * mini-llvm.c (mono_llvm_emit_method): Add a few more missing casts,
3831         skip empty phi opcodes.
3832         
3833         * mini-llvm.c (mono_llvm_emit_method): Handle unsigned volatile variables
3834         correctly by zero extending after loads. Skip methods containing calls
3835         to the monitor enter/exit trampolines.
3836
3837         * tramp-x86.c (mono_arch_create_trampoline_code): Align the stack
3838         when calling mono_thread_force_interruption_checkpoint ().
3839
3840         * mini.c (mini_method_compile): Disable llvm when AOT compiling.
3841
3842         * tramp-amd64.c (mono_arch_patch_callsite): Add support for 32 bit ->
3843         64 bit thunks.
3844         (mono_arch_nullify_class_init_trampoline): Read 'buf' instead of 'code'.
3845
3846         * mini-llvm.c (mono_llvm_emit_method): Add a few missing conversions so a 
3847         bootstrap could run.
3848
3849 2009-09-04  Zoltan Varga  <vargaz@gmail.com>
3850
3851         * mini.c (mini_init): Set callbacks.get_runtime_build_info ().
3852
3853 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
3854
3855         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass the start
3856         of the method to
3857         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
3858         LLVM might be very short.
3859
3860         * mini-x86.c (mono_arch_output_basic_block): Maintain stack alignment
3861         in OP_THROW/RETHROW.
3862
3863         * exceptions-x86.c: Rewrite the throw trampolines so they maintain stack
3864         alignment on osx.
3865
3866 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
3867
3868         * mini-amd64.c (mono_arch_get_vcall_slot): Pass the start of the method to
3869         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
3870         LLVM might be very short.
3871
3872 2009-09-01  Zoltan Varga  <vargaz@gmail.com>
3873
3874         * exceptions-x86.c (throw_exception): Fix the previous change by substracting
3875         the alignment for the value of sp.
3876
3877 2009-09-01  Geoff Norton  <gnorton@novell.com>
3878
3879         * mini.c (mono_get_lmf_addr): Fix jit_thread_attach for native to 
3880         managed wrappers in full aot.
3881
3882 2009-08-31  Zoltan Varga  <vargaz@gmail.com>
3883
3884         * exceptions-x86.c (get_throw_exception): Align the stack on osx.
3885
3886 2009-08-28  Zoltan Varga  <vargaz@gmail.com>
3887
3888         * mini-llvm-cpp.cpp mini-llvm.c: Update to latest llvm api.
3889
3890 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
3891
3892         * aot-compiler.c (emit_exception_debug_info): Emit ei->flags too.
3893
3894         * aot-runtime.c (decode_exception_debug_info): Decode ei->flags from the
3895         saved info.
3896
3897         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
3898
3899         * aot-runtime.c aot-compiler.c: Emit exception causes fully so we don't
3900         depend on the info MonoMethodHeader which could be missing in IL stripped
3901         assemblies.
3902
3903 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
3904
3905         * mini-arm.c (add_general): Fix the passing of 64 bit values on darwin, where
3906         they are only 4 byte aligned.
3907
3908 2009-08-21  Zoltan Varga  <vargaz@gmail.com>
3909
3910         * mini-arm.c (mono_arch_allocate_vars): Use FP as the frame pointer as
3911         was done previously, since using SP causes too many problems.
3912
3913         * exceptions-arm.c: Fix the handling of sp/fp so unwinding through
3914         frames without a frame pointer works.
3915
3916         * mini-arm.c (mono_arch_get_global_int_regs): Avoid using V5 as a
3917         global register in methods with calls, since the calls can go through
3918         a static rgctx trampoline which doesn't save it.
3919
3920 2009-08-19  Zoltan Varga  <vargaz@gmail.com>
3921
3922         * mini-arm.c (mono_arch_context_get_int_reg): Handle SP as well.
3923
3924 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
3925
3926         * aot-compiler.c (add_generic_instances): Fix the net 1.1 build.
3927
3928 2009-08-18  Christian Hergert  <chris@dronelabs.com>
3929
3930         * method-to-ir.c: Fix warnings for uninitialized variables.
3931
3932 2009-08-18  Christian Hergert  <chris@dronelabs.com>
3933
3934         * mini-exceptions.c:
3935         * aot-compiler.c: Fix printf warnings.
3936
3937 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
3938
3939         * aot-compiler.c (add_generic_instances): Add string[] wrapper methods.
3940         Add GetGenericValueImpl<string>.
3941         
3942         * aot-compiler.c (add_generic_instances): Add instances of
3943         GenericEqualityComparer<T> for primitive types. Only emit the array
3944         wrappers into the mscorlib image.
3945
3946 2009-08-15  Zoltan Varga  <vargaz@gmail.com>
3947
3948         * aot-runtime.c (load_method): Rename 'aot_module' -> 'amodule'. Allocate
3949         the methods_loaded array using amodule->info->nmethods.
3950
3951         * mini.h (MonoAotFileInfo): Add an 'nmethods' field.
3952         (MONO_AOT_FILE_VERSION): Bump this.
3953
3954         * aot-compiler.c: Emit more generic instances allowing some parts of linq
3955         to work.
3956
3957         * aot-runtime.c (mono_aot_get_unwind_info): Handle the case when the
3958         MonoJitInfo doesn't belong to its methods aot image.
3959
3960 2009-08-14  Zoltan Varga  <vargaz@gmail.com>
3961
3962         * mini-arm.c (mono_arch_allocate_vars): Use SP as the default frame reg.
3963
3964         * mini-arm.c: Fix warnings.
3965         
3966         * mini-arm.c (mono_arm_emit_load_imm): Only emit a movt if needed.
3967
3968         * mini-arm.c (mono_arm_emit_load_imm): Use movt/movw if the cpu
3969         supports it.
3970
3971 2009-08-12  Zoltan Varga  <vargaz@gmail.com>
3972
3973         * aot-compiler.c (arch_emit_imt_thunk): Rework the arm code to
3974         avoid clobbering IP.
3975
3976         * mini-trampolines.c (mono_magic_trampoline): Allocate a local to
3977         hold the trampoline argument, so its initial value is available during
3978         debugging.
3979
3980 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
3981
3982         * exceptions-arm.c:
3983         * exceptions-hppa.c:
3984         * mini.c:
3985         * exceptions-s390x.c:
3986         * exceptions-mips.c:
3987         * exceptions-ppc.c:
3988         * exceptions-sparc.c:
3989         * exceptions-alpha.c:
3990         * aot-runtime.c:
3991         * mini-trampolines.c:
3992         * exceptions-x86.c:
3993         * exceptions-s390.c: add and use #define's instead of sizeof()
3994         for MonoJitInfo and MonoJitInfoTable.
3995
3996 2009-08-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
3997
3998         * tramp-arm.c:
3999         * tramp-amd64.c:
4000         * tramp-ppc.c:
4001         * tramp-x86.c: use a #define instead of sizeof() for a few
4002         structures that use a zero-length array.
4003
4004 2009-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
4005
4006         * method-to-ir.c (mono_method_to_ir/CEE_CONSTRAINED_): Handle the
4007         case when the method is dynamic. Fixes #529238.
4008
4009 2009-08-06  Zoltan Varga  <vargaz@gmail.com>
4010
4011         * mini.c (mono_jit_compile_method_inner): Throw an exception instead
4012         of asserting when a method is JIT compiled in full-aot mode.
4013
4014 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
4015         
4016         Contributed under the terms of the MIT/X11 license by
4017         Jerry Maine <crashfourit@gail.com>.
4018         
4019         * fixed wrong dates in changelog.
4020
4021 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
4022         
4023         Contributed under the terms of the MIT/X11 license by
4024         Jerry Maine <crashfourit@gail.com>.
4025
4026         * basic-simd.cs: added test for packed double square root.
4027         * cpu-amd64.md: added opcode info for packed double square root.
4028         * cpu-x86.md: added opcode info for packed double square root.
4029         * mini-ops.h: added IR opcode for packed double square root.
4030         * mini-x86.c: added IR to native translation code for packed double square root.
4031         * mini-amd64.c: removed todo for packed double square root.
4032         * simd-intrinsics.c: added method to IR opcode converstion for
4033         packed double square root.
4034
4035 2009-08-03 Jerry Maine <crashfourit@gmail.com>
4036
4037         Contributed under the terms of the MIT/X11 license by
4038         Jerry Maine <crashfourit@gail.com>.
4039
4040         * mini-amd64.c: Added a change to help tell the difference as 
4041         to what perpose the xmm register is being used--mainly to help
4042         with debuging.
4043         * mini-amd64.h: Changed callee regs to use 15 out of 16 
4044         (one used for special cases) xmm registers for both fp
4045         and simd ops. Added define to turn on new feature in the regalloc
4046         that allows fp and simd ops to share the xmm regs happily.
4047         * codegen.c: Added code to detect for which perpose an xmm reg is
4048         being used (fp or simd) and to translate back and forth to the
4049         correct logical reg bank (fp or simd) for 'spill load's.
4050
4051 2009-08-03 Jerry Maine <crashfourit@gmail.com>
4052
4053         Contributed under the terms of the MIT/X11 license by
4054         Jerry Maine <crashfourit@gail.com>.
4055
4056         * basic-simd.cs: Added tests for stressing the regalloc when running with
4057         16 simd regs and when simd and fp ops share the same reg bank.
4058
4059 2009-08-01  Mark Probst  <mark.probst@gmail.com>
4060
4061         * method-to-ir.c (mini_emit_stobj): If we call mono_value_copy()
4062         in shared generic code, we might have to look up the class in the
4063         RGCTX.  If we use the class directly, compute its GC descriptor.
4064
4065 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
4066
4067         * mini.c (mono_jit_runtime_invoke): Fix a warning.
4068
4069 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
4070
4071         * mini.c (mono_jit_runtime_invoke): Initialize the class and
4072         check for errors. Fixed the case when the class with the Main
4073         method is broken.
4074
4075 2009-07-31 Jerry Maine <crashfourit@gmail.com>
4076
4077         Contributed under the terms of the MIT/X11 license by
4078         Jerry Maine <crashfourit@gail.com>.
4079
4080         * cpu-amd64.md: Fixed simple bug in machine discrition file.
4081
4082 2009-07-31  Zoltan Varga  <vargaz@gmail.com>
4083
4084         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_IREM_UN_IMM.
4085
4086 2009-08-30  Rodrigo Kumpera  <rkumpera@novell.com>
4087
4088         * method-to-ir.c: Fix naming of stelem and ldelem.
4089
4090 2009-07-30  Zoltan Varga  <vargaz@gmail.com>
4091
4092         * driver.c (main_thread_handler): Check that the assembly loaded
4093         matches the filename when doing AOT.
4094
4095 2009-07-30  Mark Probst  <mark.probst@gmail.com>
4096
4097         * mini.c: get_ip_from_sigctx installer has been removed, so don't
4098         call it anymore.
4099
4100         * mini-x86.h, mini-amd64.h, mini-ppc.h: UCONTEXT macros moved (to
4101         utils/mono-sigcontext.h).
4102
4103         * exceptions-amd64.c: Use the UCONTEXT_GREGS macro instead of an
4104         #ifdef.
4105
4106 2009-07-29  Massimiliano Mantione  <massi@ximian.com>
4107
4108         * mini.c (mono_codegen):
4109         Call profiler hook to keep track of method code buffers.
4110
4111 2009-07-27  Mark Probst  <mark.probst@gmail.com>
4112
4113         * method-to-ir.c: Invoke write barriers for the
4114         Interlocked.(Compare)Exchange JIT intrinsics.
4115
4116 2009-07-26  Raja R Harinath  <harinath@hurrynot.org>
4117
4118         * Makefile.am (version.h): Fix issues when built out of tree.
4119         Remove some redundant 'grep's piped through 'sed's.
4120
4121 Fri Jul 24 17:28:37 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
4122
4123         This patch is contributed under the terms of the MIT/X11 license
4124
4125         * mini-ppc.c (mono_arch_output_basic_block):
4126         (OP_STOREI1_MEMBASE_REG): Handle 32-bit offsets combining addis
4127         for bits 32-47 with signed load/store diplacements for bits
4128         48-63.  Use prefered base/offset order for indexed form.
4129         (OP_STOREI2_MEMBASE_REG, OP_STORE_MEMBASE_REG): Same.
4130         (OP_LOAD_MEMBASE, OP_LOADI4_MEMBASE, OP_LOADU4_MEMBASE,
4131         OP_LOADI1_MEMBASE, OP_LOADU1_MEMBASE, OP_LOADU2_MEMBASE,
4132         OP_LOADI2_MEMBASE): Same.
4133         (OP_STORER8_MEMBASE_REG, OP_LOADR8_MEMBASE,
4134         OP_STORER4_MEMBASE_REG, OP_LOADR4_MEMBASE): Same.
4135         (OP_STOREI1_MEMINDEX): Use prefered base/offset order for
4136         indexed form.
4137         (OP_STOREI2_MEMINDEX, OP_STORE_MEMINDEX): Same.
4138         (OP_LOAD_MEMINDEX, OP_LOADI4_MEMINDEX, OP_LOADU4_MEMINDEX,
4139         OP_LOADU2_MEMINDEX, OP_LOADI2_MEMINDEX, OP_LOADU1_MEMINDEX,
4140         OP_LOADI1_MEMINDEX): Same
4141         (OP_LOADR4_MEMINDEX, OP_LOADR8_MEMINDEX, OP_STORER4_MEMINDEX,
4142         OP_STORER8_MEMINDEX): Same
4143         (OP_JMP): Use addis/addi sequence for int cfg->stack_usage
4144         computations.
4145         (mono_arch_emit_prolog): Handle 32-bit offsets combining addis
4146         for bits 32-47 with signed load/store diplacements for bits
4147         48-63.  Use prefered base/offset order for indexed form.
4148
4149 Fri Jul 24 16:57:12 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
4150
4151 This patch is contributed under the terms of the MIT/X11 license
4152
4153         * mini-ppc.c: Define PPC_MOVE_FPR_GPR and PPC_ISA_64.
4154         (mono_arch_get_vcall_slot): Fx pointer to int cast warning.
4155         (mono_arch_decompose_opts): Make OP_ICONV_TO_R4 and
4156         OP_ICONV_TO_R8 decompose conditional on !PPC_ISA_64.
4157         (mono_arch_output_basic_block) [OP_JMP]: Use ppc_load32 for
4158         cfg->stack_usage to avoid size warnings.
4159         (mono_arch_output_basic_block) [__mono_ppc64__]: Replace
4160         store/load sequence with mffgpr if PPC_MOVE_FPR_GPR is true.
4161         (mono_arch_output_basic_block) [!__mono_ppc64__]: For
4162         OP_ICONV_TO_R4 or OP_ICONV_TO_R8 and PPC_ISA_64 use fcfid
4163         to convert.
4164         (mono_arch_emit_prolog): Move mono_emit_unwind_op_def_cfa 
4165         after code varible is initialized.
4166         Add g_assert ppc_is_imm16 for ainfo->offset. Handle
4167         ainfo->size == 8 when ainfo->offset !ppc_is_imm16.
4168         (mono_arch_emit_epilog): 
4169         Move Use ppc_load32 for cfg->stack_usage to avoid size
4170         warnings.
4171
4172 2009-07-24  Mark Probst  <mark.probst@gmail.com>
4173
4174         * method-to-ir.c: The write barrier doesn't do the store anymore,
4175         so we have always to emit it.  Also, emit the wbarrier after the
4176         store.
4177
4178 2009-07-24  Zoltan Varga  <vargaz@gmail.com>
4179
4180         * mini-arm.c (mono_arch_get_delegate_invoke_impls): Add a trampoline
4181         for argument count 3 too.
4182
4183 2009-07-23  Zoltan Varga  <vargaz@gmail.com>
4184
4185         * mini.c (mono_jit_compile_method_with_opt): Add an 'ex' argument to let
4186         the caller handle the exceptions.
4187         (mono_jit_runtime_invoke): Handle exceptions thrown while compiling the
4188         method. Fixes #524498.
4189
4190 2009-07-22  Geoff Norton  <gnorton@novell.com>
4191
4192         * mini-exceptions.c: Fix build on ia64.
4193
4194 2009-07-22  Mark Probst  <mark.probst@gmail.com>
4195
4196         * mini-exceptions.c (ves_icall_get_frame_info): Use write
4197         barriers.
4198
4199 2009-07-21  Zoltan Varga  <vargaz@gmail.com>
4200
4201         * mini-arm.c (mono_arch_emit_prolog): Fix thread attaching in aot
4202         code.
4203
4204 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
4205
4206         * basic-simd.cs (Main): Pass args to the test driver.
4207
4208 2009-07-20  Geoff Norton  <gnorton@novell.com>
4209
4210         * mini-x86.h: Fix the x86 version guards to use Apple's
4211         properly defined macros.
4212
4213 2009-07-20  Geoff Norton  <gnorton@novell.com>
4214
4215         * mini-x86.c: Fix --trace on darwin-x86 and other systems which require
4216         aligned access.
4217
4218 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
4219
4220         * mini.c (mono_jit_runtime_invoke): Speed this up by adding a hash to
4221         MonoJitDomainInfo which maps MonoMethod's to a structure containing all
4222         the information which is needed for invokes, so only one locking+hash table
4223         lookup is needed.
4224
4225         * aot-compiler.c: Add a 'tool-prefix' option to be used when cross-compiling.
4226         
4227         * aot-compiler.c (add_generic_instances): Emit instances of 
4228         GenericComparer<T> for primitive types.
4229
4230 2009-07-19 Rodrigo Kumpera  <rkumpera@novell.com>
4231
4232         * mini-posix.c: Fix linux build.
4233
4234 2009-07-19  Geoff Norton  <gnorton@novell.com>
4235
4236         * mini.h: Add prototypes for mono_runtime_syscall_fork and
4237         mono_gdb_render_native_backtraces
4238         * mini-darwin.c: Apple's syscall(SYS_fork) is very weird on x86,
4239         so we implement the sane semantics to the runtime here
4240         (mono_gdb_render_native_backtraces).  Apple also uses an ancient gdb
4241         so we need to call it differently (mono_gdb_render_native_backtraces)
4242         * mini-posix.c: Move the old semantics from mini.c to the prototypes
4243         here for default implementations.
4244         * mini.c: Refactor mono_handle_native_sigsegv so that we can properly
4245         support Apple's weird syscall (SYS_fork) implementation and not busy
4246         loop in abort() on native crashes on OSX anymore.
4247
4248 2009-07-18  Zoltan Varga  <vargaz@gmail.com>
4249
4250         * aot-runtime.c (load_method): Change the handling of the
4251         MONO_LASTAOT env variable so MONO_LASTAOT=0 means that no aot methods
4252         are used.
4253
4254         * mini.c (mono_patch_info_equal): Really fix the handling of RGCTX_FETCH.
4255
4256 2009-07-17  Zoltan Varga  <vargaz@gmail.com>
4257
4258         * mini.c (mono_patch_info_equal): Revert the last change for now as it
4259         seems to break the aot tests.
4260         
4261         * mini.c (mono_patch_info_equal): Fix the handling of 
4262         MONO_PATCH_INFO_RGCTX_FETCH.
4263
4264 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
4265
4266         * unwind.c: Use TARGET_AMD64 instead of __x86_64__.
4267
4268         * mini.c (mono_patch_info_hash): Fix the handling of 
4269         MONO_PATCH_INFO_INTERNAL_METHOD.
4270         (mono_patch_info_equal): Ditto.
4271
4272 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
4273
4274         * mini-llvm.c (mono_llvm_emit_method): Use module instead of ctx->module
4275         in a few places.
4276         
4277         * mini-llvm.c: Add some infrastructure for AOT support.
4278
4279 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
4280
4281         * mini-llvm-cpp.c: Update to the latest llvm api.
4282         
4283         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Set the EnablePrettyStackTrace
4284         option to false to prevent llvm from installing signal handlers which
4285         trip up the gc.
4286         
4287 2009-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
4288
4289         * cpu-x86.md:
4290         * cpu-amd64.md: Revert previous change as those instructions
4291         take 2 separate arguments. Remember to read the arch docs more
4292         carefully next time.
4293
4294 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
4295
4296         * mini-llvm-cpp.cpp (mono_llvm_build_alloca): Update to latest llvm api.
4297
4298 Wed Jul 15 17:20:27 CEST 2009 Paolo Molaro <lupus@ximian.com>
4299
4300         * mini-ppc.c: exploit multiple load/store units if available (rest of
4301         the change from Steven Munroe (<munroesj@us.ibm.com>) first patch at 
4302         http://bugzilla.novell.com/show_bug.cgi?id=487846).
4303
4304 Wed Jul 15 16:24:57 CEST 2009 Paolo Molaro <lupus@ximian.com>
4305
4306         * mini-ppc.c: integrate most of Steven Munroe (<munroesj@us.ibm.com>)
4307         first patch at http://bugzilla.novell.com/show_bug.cgi?id=487846.
4308
4309 2009-07-14 Rodrigo Kumpera  <rkumpera@novell.com>
4310
4311         * cpu-x86.md: Fix missing clobbering from trancendental simd
4312         ops.
4313
4314         * cpu-amd64.md: Same.
4315
4316 2009-07-14 Jerry Maine <crashfourit@gmail.com>
4317
4318         Contributed under the terms of the MIT/X11 license by
4319         Jerry Maine <crashfourit@gail.com>.
4320
4321         * basic-simd.cs: Added tests for single and doulble indexers.
4322
4323         * cpu-amd64.md: Added simd opcode information.
4324
4325         * mini-amd64.c: Added IR to native simd generation code.
4326         Added simd register names and function that returns them.
4327
4328         * mini-amd64.h: Added marcos to turn on simd code compilation in
4329         amd64. Added max simd register count marco. Added caller/callee
4330         register mask marcos. Added marcos to use simd register bank.
4331
4332         * mini.h: Added helper marco for shufling dwords and simple
4333         floats.
4334
4335 2009-07-14  Zoltan Varga  <vargaz@gmail.com>
4336
4337         * mini-llvm-cpp.cpp: Update to latest llvm SVN api.
4338
4339         * Makefile.am (mono_LDADD): Pass LLVM_LDFLAGS to the linked.
4340
4341         * unwind.c (mono_unwind_get_ops_from_fde): Make this return
4342         the length of the native code as well.
4343
4344         * basic-simd.cs: Add a test for #521662.
4345
4346 Mon Jul 13 17:58:50 CEST 2009 Paolo Molaro <lupus@ximian.com>
4347
4348         * mini-ppc.c: fixed bug introduced by Steven's TLS changes.
4349
4350 2009-07-13  Mark Probst  <mark.probst@gmail.com>
4351
4352         * mini.c: Register function for getting the IP from a signal
4353         context with metadata.
4354
4355 2009-07-13  Zoltan Varga  <vargaz@gmail.com>
4356
4357         * method-to-ir.c (mono_method_to_ir): When calling a gshared method,
4358         call a generic class init trampoline if needed. Fixes #519336.
4359
4360         * generics.cs: Add a test.
4361         
4362 2009-07-09  Mark Probst  <mark.probst@gmail.com>
4363
4364         * method-to-ir.c: When doing a call which might be remote from
4365         shared generic code to other shared code with open type arguments,
4366         get the remoting invoke wrapper from the RGCTX and do an indirect
4367         call to it.
4368
4369 2009-07-03  Zoltan Varga  <vargaz@gmail.com>
4370
4371         * mini-trampolines.c (get_unbox_trampoline): Add an rgctx trampoline
4372         after the unbox trampoline in the full-aot case.
4373
4374 2009-07-02  jonas echterhoff <jonas@unity3d.com>
4375         
4376         * mini.c: Move initialization of jit_mutex before debugger initialization
4377         
4378         to avoid crashes.
4379         
4380         
4381         * Info.plist: added Info.plist and link flag to enable the mono executable
4382         to access other processes. Requires codesigning of the executable to work.
4383         
4384         * mdb-debug-info32-darwin.s: The same as mdb-debug-info32.s, changed to 
4385         
4386         compile on OS X.
4387         
4388
4389 2009-06-30  Zoltan Varga  <vargaz@gmail.com>
4390
4391         * driver.c (mini_regression): Handle loading errors. Fixes #508869.
4392
4393 2009-06-29  Zoltan Varga  <vargaz@gmail.com>
4394
4395         * mini-exceptions.c (get_generic_context_from_stack_frame): Fix the case
4396         when the generic instance is an instantiation of a subclass of the
4397         methods class. Fixes #517166.
4398
4399 2009-06-26  Zoltan Varga  <vargaz@gmail.com>
4400
4401         * mini-amd64.c (mono_arch_emit_prolog): Fix thread attaching in AOTed
4402         code.
4403
4404         * mini.c (mono_jit_thread_attach): Allow domain to be NULL for calls from
4405         AOTed code.
4406
4407         * CMakeLists.txt: Add minimal support for installation.
4408
4409 2009-06-25  Zoltan Varga  <vargaz@gmail.com>
4410
4411         * aot-compiler.c (emit_and_reloc_code): Factor out the code to
4412         determine whenever a method is directly callable to a separate function.
4413
4414         * mini-<ARCH>.c tramp-<ARCH>.c: Remove needless casts and add new
4415         needed ones as a result of the previous change.
4416
4417         * mini-<ARCH>.c tramp-<ARCH>.c: Use mgreg_t* as the
4418         type of register arrays.
4419
4420         * mini-trampolines.c tramp-<ARCH>.c aot-runtime.c: Use mgreg_t* as the
4421         type of register arrays.
4422
4423 2009-06-24  Jerry Maine  <crashfourit@gmail.com>
4424         
4425         Contributed under the terms of the MIT/X11 license by
4426         Jerry Maine <crashfourit@gail.com>.
4427
4428         * mini-amd64.c: Added code to convert simd IR to native amd64 sse.
4429
4430 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
4431
4432         * aot-compiler.c (emit_plt): Define debug labels for most plt entries.
4433
4434 2009-06-24  Neale Ferguson <neale@sinenomine.net>
4435
4436         * mini-s390x.c: Correct LCONV_TO_Ix and ICONV_TO_Ix routines. Fix leave_method
4437         dump of structure return value. Fix some formatting.
4438         * cpu-s390x.md: Fix lengths of instruction sequences.
4439         * mini-s390.c: Minor formatting changes.
4440
4441 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
4442
4443         * mini-x86.h: Applied patch from Romain Tartiere (romain@blogreen.org).
4444         Use sigaction on freebsd as well.
4445
4446 2009-06-23  Zoltan Varga  <vargaz@gmail.com>
4447
4448         * mini.h: Don't define MONO_ARCH_HAVE_TLS_GET to 0, as some code
4449         uses #ifdef on it.
4450         
4451         * mini.c (mini_init): Revert a change which breaks cross-compilation.
4452
4453 2009-06-22  Mark Probst  <mark.probst@gmail.com>
4454
4455         * mini-ppc.c, cpu-ppc.md: Enable TLS on Darwin/G4.
4456
4457 2009-06-22  Mark Probst  <mark.probst@gmail.com>
4458
4459         * mini.c, mini.h: Tell the runtime whether we support MONO_TLS.
4460
4461 2009-06-20  Martin Baulig  <martin@ximian.com>
4462
4463         * debug-mini.c
4464         (MonoDebuggerThreadFlags): New enum typedef.
4465         (MonoDebuggerThreadInfo): Added `guint32 thread_flags'.
4466         (mono_debugger_thread_created): Added `gpointer func' argument;
4467         initialize the new `thread_flags' field.
4468
4469 2009-06-18  Martin Baulig  <martin@ximian.com>
4470
4471         * debug-debugger.h (MonoDebuggerRuntimeFlags): New enum typedef.
4472         (MonoDebuggerInfo): Renamed the `dummy' field info `runtime_info'.
4473
4474         * debug-debugger.c
4475         (mini_debugger_set_attach_ok): New function; sets the attach-ok
4476         flag in `MONO_DEBUGGER__info.runtime_info'.
4477
4478         * driver.c
4479         (mono_main): Call mini_debugger_set_attach_ok() if generics
4480         sharing is disabled.
4481
4482 2009-06-22  Zoltan Varga  <vargaz@gmail.com>
4483
4484         * aot-compiler.c (add_wrappers): Fix a warning.
4485
4486         * mini-ppc.c tramp-ppc.c exceptions-ppc.c aot-compiler.c: Update after
4487         the ppc load/store macro changes.
4488
4489 2009-06-21  Zoltan Varga  <vargaz@gmail.com>
4490
4491         * tramp-ppc.c (mono_arch_patch_plt_entry): Implement this.
4492
4493         * aot-compiler.c (mono_compile_assembly): Sanitize the plt symbol too,
4494         not just the got symbol.
4495
4496         * mini-ppc.c aot-compiler.c unwind.c: Implement generation of unwind info
4497         on ppc.
4498
4499         * aot-compiler.c unwind.c: Add infrastructure for unwind support on
4500         ppc.
4501         
4502         * aot-compiler.c: Remove some fixmes.
4503
4504         * driver.c (mono_main): Print a helpful message when cross-compiling.
4505
4506         * mini.c (mini_init): Disable signal handlers when cross-compiling.
4507
4508         * method-to-ir.c (initialize_array_data): Do the optimization if the
4509         target byte order is little endian, instead of the host byte order.
4510
4511         * aot-compiler.c: Emit sizes for most symbols, only emit runtime-invoke
4512         wrappers into the mscorlib image, Emit a unique plt symbol for each
4513         image, emit symbols for plt entries.
4514
4515         * image-writer.c (img_writer_emit_symbol_size): New function to emit
4516         a .size directive.
4517         
4518 2009-06-20  Zoltan Varga  <vargaz@gmail.com>
4519
4520         * aot-compiler.c (add_wrappers): Avoid calling 
4521         mono_marshal_get_type_info () since it can assert for some types.
4522
4523         * method-to-ir.c (mono_method_to_ir): Disable aot when some forms of 
4524         ldtoken are used inside wrappers.
4525
4526         * helpers.c: Add support for prefixing tools with the arch name.
4527
4528         * mini.h (OP_LOADR_MEMBASE): New opcodes to load/store pointer sized
4529         quantities when using ilp32.
4530
4531         * mini-codegen.c: Use OP_LOADR_MEMBASE/OP_STORER_MEMBASE for loading/storing
4532         spill slots. Use sizeof(mgreg_t) for the spill slot size.
4533
4534         * image-writer.c: Use .long on ilp32.
4535
4536         * aot-compiler.c: Use 32 bit loads on ilp32.
4537         
4538 2009-06-19  Zoltan Varga  <vargaz@gmail.com>
4539
4540         * tramp-ppc.c (mono_arch_create_trampoline_code): Fix the ppc build.
4541
4542         * mini-ops.h: Use TARGET_POWERPC define for consistency.
4543
4544         * patch-info.h: Add 'MSCORLIB_GOT_ADDR' patch type.
4545
4546         * aot-compiler.c aot-runtime.c: Put the mscorlib got address into the 
4547         second got slot of every aot image.
4548         
4549         * aot-compiler.c aot-runtime.c mini-trampolines.c: Add support for
4550         aot on platforms with function pointers.
4551
4552         * mini-ppc.h mini-ppp.c cpu-ppc.md exceptions-ppc.c tramp-ppc.c: Add
4553         support for aot/full aot on ppc/ppc64.
4554         
4555         * tramp-<ARCH>.c (mono_arch_patch_plt_entry): Add 'got' and 'regs'
4556         arguments which are needed on ppc.
4557
4558         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Add 'regs'
4559         argument.
4560
4561         * mini-trampolines.c aot-runtime.c: Update after the above changes.
4562         
4563         * liveness.c (BITS_PER_CHUNK): Use MONO_BITSET_BITS_PER_CHUNK.
4564
4565         * regalloc2.c (BITS_PER_CHUNK): Ditto.  
4566
4567         * aot-compiler.c (emit_got_info): Fix reading unused memory.
4568
4569         * ir-emit.h (alloc_dreg): Add a 'return -1' to quiet some compilers.
4570
4571 2009-06-17  Geoff Norton  <gnorton@novell.com>
4572
4573         * aot-compiler.c: Ensure we dont try to close a null dwarf writer.
4574
4575 2009-06-17  Zoltan Varga  <vargaz@gmail.com>
4576
4577         * dwarfwriter.c (mono_dwarf_writer_create): Add an 'appending' parameter
4578         to control whenever the dwarf writer is in xdebug or aot mode.
4579         (emit_class_dwarf_info): Use a separate abbrev for structures without
4580         children.
4581
4582         * aot-compiler.c: Pass the appending parameter to 
4583         mono_dwarf_writer_create ().
4584
4585         * branch-opts.c (mono_merge_basic_blocks): Fix the case when bbn
4586         falls through to its next bblock. Fixes #513931.
4587
4588         * iltests.il: Add a test.
4589
4590         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Emit some line number
4591         infor even if emit_line is FALSE, as the apple linker seems to require it.
4592
4593         * image-writer.c (asm_writer_emit_symbol_diff): Call get_label ().
4594
4595         * dwarfwriter.c (emit_cie): Emit a separate symbol for the cie start, as
4596         gcc does.
4597         (emit_fde): Ditto.
4598
4599 2009-06-15  Zoltan Varga  <vargaz@gmail.com>
4600
4601         * exceptions-mips.c (mono_arch_get_throw_exception_by_name): Fix the
4602         mips build.
4603
4604 2009-06-13  Zoltan Varga  <vargaz@gmail.com>
4605
4606         * mini.h (struct MonoBasicBlock): Add 'has_jump_table' and 
4607         'has_call_handler' fields.
4608
4609         * method-to-ir.c (mono_method_to_ir): Set them if needed.
4610
4611         * branch-opts.c (mono_merge_basic_blocks): Avoid iterating through the
4612         first bblock if not needed. Fixes #512790.
4613         
4614 2009-06-11  Zoltan Varga  <vargaz@gmail.com>
4615
4616         * aot-compiler.c (mono_compile_assembly): Fix a warning.
4617         
4618         * aot-compiler.c (add_wrappers): Don't emit remoting-invoke-with-check
4619         wrappers.
4620
4621         * aot-runtime.c (mono_aot_get_method): Use the original method's code for
4622         remoting-invoke-with-check wrappers, which are not needed when running with
4623         full-aot, since it doesn't support remoting.
4624         
4625 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
4626
4627         * aot-compiler.c (emit_got_info): Don't emit offsets for the plt got entries.
4628
4629         * aot-compiler.c aot-runtime.c: Don't emit the first got offset in the
4630         method info, it is not used anymore.
4631
4632         * mini.h: Bump AOT file format version.
4633         
4634         * aot-compiler.c (arch_emit_plt_entry): Make the arm plt entries one
4635         word smaller.
4636
4637         * aot-runtime.c (mono_aot_get_plt_info_offset): Update after the
4638         change above.
4639         
4640         * tramp-arm.c (mono_arch_patch_plt_entry): Ditto.
4641
4642         * mini.h: Bump AOT file format version.
4643         
4644 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
4645
4646         * image-writer.c (asm_writer_emit_symbol_diff): Disable the 
4647         TARGET_ASM_APPLE stuff for now, as it doesn't seem to work on the
4648         iphone.
4649
4650         * mini-arm.c (mono_arch_output_basic_block): Fix the implementation
4651         of CKFINITE and FBGE for VFP.
4652
4653 2009-06-09  Zoltan Varga  <vargaz@gmail.com>
4654
4655         * aot-compiler.c: Don't align code to 16 bytes on arm.
4656         
4657         * aot-compiler.c (emit_method_code): Emit the unbox trampolines right
4658         before the methods they belong to.
4659
4660         * aot-runtime.c (mono_aot_plt_resolve): Avoid creating trampolines in
4661         the full-aot case if possible, since the trampoline will be called right 
4662         away.
4663
4664         * aot-compiler.c (mono_compile_assembly): Decrease the number of full aot
4665         trampolines to 1024 after the change above.
4666
4667         * aot-compiler.c (arch_emit_specific_trampoline): Rework the arm
4668         trampoline to save 8 bytes per trampoline.
4669
4670         * tramp-arm.c (mono_arch_create_trampoline_code_full): Update after the
4671         change above.
4672
4673 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
4674
4675         * aot-compiler.c: Use acfg->temp_prefix instead of .L to prefix labels.
4676
4677 2009-06-08  Martin Baulig  <martin@ximian.com>
4678
4679         * debug-mini.c
4680         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
4681         (_mono_debugger_throw_exception): Don't make this static.
4682         (_mono_debugger_unhandled_exception): Likewise.
4683         (mono_debugger_handle_exception): Moved to mini-exceptions.c
4684
4685         * debug-mini.c
4686         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
4687         (_mono_debugger_throw_exception): Add function prototype.
4688         (_mono_debugger_unhandled_exception): Likewise.
4689
4690         * mini-exceptions.c
4691         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
4692         arg; return the first exception handler if the exception is caught
4693         and we're running inside the debugger.
4694         (mono_debugger_handle_exception): Moved here from debug-mini.c;
4695         improve exception handle inside runtime-invoke, check whether the
4696         exception is actually caught in the method being invoked and not
4697         by the runtime-invoke-wrapper.
4698
4699 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
4700
4701         * image-writer.c: Improve support for the osx assembler.
4702
4703         * dwarfwriter.c: Avoid the usage of subsections if the assembler doesn't
4704         support them.
4705
4706 2009-06-08  Martin Baulig  <martin@ximian.com>
4707
4708         * debug-mini.c
4709         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
4710         (_mono_debugger_throw_exception): Don't make this static.
4711         (_mono_debugger_unhandled_exception): Likewise.
4712         (mono_debugger_handle_exception): Moved to mini-exceptions.c
4713
4714         * debug-mini.c
4715         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
4716         (_mono_debugger_throw_exception): Add function prototype.
4717         (_mono_debugger_unhandled_exception): Likewise.
4718
4719         * mini-exceptions.c
4720         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
4721         arg; return the first exception handler if the exception is caught
4722         and we're running inside the debugger.
4723         (mono_debugger_handle_exception): Moved here from debug-mini.c;
4724         improve exception handle inside runtime-invoke, check whether the
4725         exception is actually caught in the method being invoked and not
4726         by the runtime-invoke-wrapper.
4727
4728 2009-06-07  Zoltan Varga  <vargaz@gmail.com>
4729
4730         * image-writer.c (append_subsection): Don't align subsections of the
4731         debug_line section as a workaround.
4732
4733         * dwarfwriter.c: Emit line number info in the AOT case as well.
4734
4735 2009-06-06  Steven Munroe  <munroesj@us.ibm.com>
4736
4737         This patch is contributed under the terms of the MIT/X11 license
4738
4739        * mini-ppc.c (mono_arch_emit_exceptions): Change assert to
4740        code_len <= code_size
4741
4742 2009-06-06  Zoltan Varga  <vargaz@gmail.com>
4743
4744         * mini-mips.c (mips_emit_exc_by_name): Fix the mips build.
4745
4746 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
4747
4748         * aot-compiler.c aot-runtime.c: Delete references to static rgctx
4749         invoke wrappers, we now use trampolines instead.
4750
4751 2009-06-04  Mark Probst  <mark.probst@gmail.com>
4752
4753         * mini-darwin.c: The exception thread must not be registered with
4754         the GC.
4755
4756 2009-06-04  Mark Probst  <mark.probst@gmail.com>
4757
4758         * mini-gc.c: Disable the code because it makes SGen crash.
4759
4760 2009-06-03  Zoltan Varga  <vargaz@gmail.com>
4761
4762         * aot-compiler.c (mono_compile_assembly): Handle file open errors gracefully
4763         instead of asserting.
4764
4765 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
4766
4767         * aot-compiler.c (mono_compile_assembly): Move the creation of the
4768         output file after the code has been compiled.
4769
4770 2009-05-30  Zoltan Varga  <vargaz@gmail.com>
4771
4772         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Fix 64 bit support.
4773
4774 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
4775
4776         * aot-compiler.c aot-runtime.c: Get rid of the shared/non-shared got
4777         entries distinction to simplify the code.
4778
4779         * mini.h: Bump AOT file format version.
4780         
4781 2009-05-28  Zoltan Varga  <vargaz@gmail.com>
4782
4783         * objects.cs: Fix the signature of one of the tests.
4784
4785         * mini.c (mini_create_ftnptr): New helper function, moved here from
4786         object.c.
4787         (mini_get_addr_from_ftnptr): Ditto.
4788         (mini_init): Install the new helpers.
4789
4790 2009-05-28  Martin Baulig  <martin@ximian.com>
4791
4792         Correctly initialize the debugger when embedding Mono.
4793
4794         * mdb-debug-info32.s, mdb-debug-info64.s: Add a global variable
4795         `MONO_DEBUGGER__using_debugger' to the `.mdb_debug_info' section;
4796         see documentation in mini_debug_running_inside_mdb().
4797
4798         * debug-debugger.c
4799         (mini_debug_running_inside_mdb): New function to check whether
4800         we're running inside mdb.
4801
4802         * mini.c (mini_init): Call mini_debugger_init() if we're running
4803         inside the debugger.
4804
4805         * driver.c (mono_main): Moved the call to mini_debugger_init()
4806         into mini_init() to make this work when embedding Mono.
4807
4808         * debug-debugger.c (mini_debugger_init): Warn about duplicate
4809         calls to mini_debugger_init().
4810
4811         * mini.h: Rename mono_debugger_init() -> mini_debugger_init(),
4812         mono_debugger_main() -> mini_debugger_main() and put them inside a
4813         `MONO_DEBUGGER_SUPPORTED' conditional.
4814
4815 2009-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
4816
4817         * mini-trampolines.c: Kill mono_find_delegate_trampoline_by_addr as
4818         this is no longer in use.
4819         * mini.h: Same.
4820
4821 2009-05-26  Zoltan Varga  <vargaz@gmail.com>
4822
4823         * mini-sparc.c (add_outarg_load): Fix the sparc build.
4824
4825         * aot-compiler.c (emit_method_code): Always write out C style symbols for
4826         methods.
4827
4828 2009-05-27  Martin Baulig  <martin@ximian.com>
4829
4830 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
4831
4832         * mini-x86.c (mono_arch_output_basic_block): Fix the precision of
4833         long_conv_to_r_un to 64 bits.
4834
4835         * cpu-x86.md: Increase the instruction size due to the changes.
4836
4837         * iltests.il.in: Add regression test.
4838
4839         Fixes #467201.
4840
4841 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
4842
4843         * objects.cs: Move the previous test from basic.cs to here.
4844
4845 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
4846
4847         * basic.cs: Add regression test for #506915.
4848
4849 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
4850
4851         * method-to-ir.c (mono_method_to_ir): When doing the ldobj+stobj
4852         optimization we must check the bb of the first byte of stobj as
4853         it's the only one set in cil_offset_to_bb.
4854
4855         Fixes #506915.  
4856
4857 2009-05-25  Zoltan Varga  <vargaz@gmail.com>
4858
4859         * image-writer.c: Fix pointer directive on ppc64.
4860
4861 2009-05-24  Zoltan Varga  <vargaz@gmail.com>
4862
4863         * image-writer.c (asm_writer_emit_section_change): Avoid using
4864         .bss subsections on ppc too.
4865
4866 2009-05-23  Zoltan Varga  <vargaz@gmail.com>
4867
4868         * image-writer.c: Fix the definition of TARGET_ASM_....
4869         
4870         * image-writer.c: Fix the emission of assembler directives in the last
4871         change.
4872
4873         * mini-ppc.c (mono_arch_emit_exceptions): Increase the size of the
4874         exception throwing code to accomodate ppc64.
4875
4876         * tramp-ppc.c (mono_arch_get_nullified_class_init_trampoline): Increase the
4877         size to work on ppc64 too.
4878
4879         * mini-ppc.h (MonoCompileArch): Enable static rgctx trampolines on ppc64
4880         too.
4881
4882         * image-writer.c: Clean up the #ifdef hell a bit by adding defines for
4883         the assembler dialect instead of using platform specific defines.
4884
4885 2009-05-22  Geoff Norton  <gnorton@novell.com>
4886
4887         * mini-arm.c (get_call_info): If a structure is split between the stack
4888         and argument registers, we should not advance the stack pointer by the entire
4889         native size, but just by the amount that spilled.
4890
4891 2009-05-22  Zoltan Varga  <vargaz@gmail.com>
4892
4893         * mini-arm.c (get_call_info): Handle structures with alignment requirements
4894         correctly.
4895
4896 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
4897
4898         * aot-compiler.c (emit_extra_methods): Encode direct runtime invoke
4899         wrappers normally.
4900         
4901         * aot-compiler.c (add_extra_method): Fix up the collection of extra
4902         methods so wrapper don't get added twice.
4903         (add_generic_instances): Don't add methods of arrays.
4904
4905         * generics.cs: Mark one test as !FULLAOT.
4906
4907 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
4908
4909         * mini-x86.c (emit_move_return_value): Remove unused vars.
4910
4911 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
4912
4913         * mini-x86.c (mono_arch_emit_call): The decompose code now supports
4914         decomposing 8 bytes structs into a LCALL.
4915
4916         * mini-x86.c (emit_move_return_value): We no longer push the vtype
4917         pointer for where to store the returned regs.
4918
4919         * decompose.c (mono_decompose_vtype_opts): Fix the comment to properly
4920         state the concern.
4921
4922         Fixes #471747, #471751 and #4734530 (in fact, it's a bunch of dups).
4923
4924 2009-05-20  Miguel de Icaza  <miguel@novell.com>
4925
4926         * aot-runtime.c (mono_aot_init): Use g_getenv to work on systems
4927         without getenv.
4928
4929 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
4930
4931         * aot-compiler.c (add_wrappers): Add StructureToPtr/PtrToStructure wrappers.
4932
4933         * basic.cs: Move the test_2_cprop_bug () test to generics.cs as it involves
4934         generics.
4935
4936 2009-05-20 Rodrigo Kumpera  <rkumpera@novell.com>
4937
4938         * local-propagation.c (mono_local_cprop): Avoid local propagation
4939         across paired add/sub if the first instruction dest reg is it's
4940         source reg. For example:
4941
4942         int_add_imm R12 <- R12 [1] clobbers: 1
4943         int_sub_imm R42 <- R12 [1] clobbers: 1
4944
4945         The cprop pass would wrongly const prop + 1 to int_sub_imm which doesn't
4946         maintain the math identify.
4947
4948         Fixes #505375.
4949
4950 2009-05-20  Andreia Gaita  <avidigal@novell.com>
4951
4952         * Makefile.am: avoid going on the network just to get the revision,
4953         use git log instead
4954
4955 2009-05-19  Massimiliano Mantione  <massi@ximian.com>
4956
4957         Fixed estimate for short branches on amd64 (they were off mark, and
4958         enabling call prolog-epilog instrumentations caused assertions).
4959         * mini.h (struct MonoBasicBlock): added max_length field to hold the
4960         estimate for the maximum length of this basic block.
4961         * mini-amd64.c:
4962         - mono_arch_emit_prolog: compute max_length for each basic block
4963           (instead of max_offset), and inflate size estimate also for entry bb
4964           in case of code instrumentation.
4965         - mono_arch_output_basic_block: get rid of "cpos" (the current
4966           estimated "position" in the code), and always use "offset" instead,
4967           which is accurate; at the beginning of the function quickly recompute
4968           max_offset for all the remaining blocks, starting from the current
4969           cfg->code_len (which is correct, and not estimated) and using the
4970           estimated block lengths computed previously.
4971
4972 2009-05-17  Zoltan Varga  <vargaz@gmail.com>
4973
4974         * exceptions-ppc.c: Remove the caching from the trampoline creation 
4975         functions, it is already done in the caller.
4976
4977         * mini-trampolines.c (mono_llvm_vcall_trampoline): Fix the llvm build.
4978
4979         * mini-ppc.h mini-arm.h mini-x86.h mini-amd64.h: Add 
4980         MONO_ARCH_GSHARED_SUPPORTED define.
4981
4982         * mini.c (mini_init): Use the MONO_ARCH_GSHARED_SUPPORTED define.
4983
4984         * mini-arm.c mini.c: Get rid of the unused mono_arch_fixup_jinfo ()
4985         function.
4986
4987 2009-05-16  Zoltan Varga  <vargaz@gmail.com>
4988
4989         * jit-icalls.c (mono_helper_compile_generic_method): Get rid of the 
4990         call to mono_marshal_get_rgctx_invoke ().
4991
4992         * mini.c method-to-ir.c mini-trampolines.c: Get rid of the usage of
4993         mono_marshal_get_static_rgctx_invoke (), all platforms which support
4994         gshared use the static rgctx trampolines now.
4995         
4996         * mini.c (mini_init): Call mono_set_generic_sharing_supported () if the
4997         platform supports it.
4998
4999 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
5000
5001         * mini-arm.c (mono_arch_allocate_vars): Correctly save R5 when using AOT.
5002
5003         * aot-compiler.c (emit_method_code): Avoid duplicate labels for methods.
5004
5005 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
5006
5007         * mini-ppc.c (mono_arch_emit_exceptions): Nullify the processed patches.
5008
5009         * tramp-ppc.c (mono_arch_nullify_class_init_trampoline): Implement this
5010         for ppc.
5011
5012 2009-05-15  Massimiliano Mantione  <massi@ximian.com>
5013
5014         Made it possible for mono_arch_instrument_epilog to preserve
5015         argument registers, otherwise instrumenting the "epilogue" before
5016         a tail call would clobber them.
5017         * mini.h: Added "mono_arch_instrument_epilog_full" prototype, which
5018         if like mono_arch_instrument_epilog but with an additional parameter
5019         that states if argument registers must be preserved.
5020         * mini.c: implemented mono_arch_instrument_epilog as a call to
5021         mono_arch_instrument_epilog_full without asking to preserve argument
5022         registers (this makes the existing code work as usual).
5023         * mini-amd64.c:
5024         - mono_arch_instrument_epilog: add parameter to transform it into
5025         mono_arch_instrument_epilog_full, and preserve argument registers
5026         when required.
5027         - mono_arch_output_basic_block, OP_TAILCALL case: call
5028         mono_arch_instrument_epilog_full.
5029         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
5030         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-x86.c:
5031         only transformed mono_arch_instrument_epilog into
5032         mono_arch_instrument_epilog_full.
5033
5034 2009-05-15  Geoff Norton  <gnorton@novell.com>
5035
5036         * mini-darwin.c: This works on arm now.
5037
5038 2009-05-14  Geoff Norton  <gnorton@novell.com>
5039
5040         * jit.h, driver.c: Allow full-aot to be decided programatically by the
5041         embedding api.
5042
5043 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
5044
5045         * aot-compiler.c (emit_method_code): Skip a few more characters in the debug
5046         label names.
5047
5048         * mini-trampolines.c (mono_magic_trampoline): Handle static rgctx invoke
5049         wrappers during full aot mode correctly.
5050
5051         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle shared generic
5052         methods correctly.
5053
5054         * aot-compiler.c (mono_aot_method_hash): Use our internal version of
5055         mono_metadata_type_hash ().
5056
5057 2009-05-14  Massimiliano Mantione  <massi@ximian.com>
5058
5059         * mini.h, mini-codegen.c, mini-alpha.c, mini-amd64.c, mini-arm.c,
5060         mini-hppa.h, mini-hppa.c, mini-ia64.c, mini-mips.h, mini-mips.c,
5061         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-886.c:
5062         Removed MONO_INST_BRLABEL from the instruction flags, and the
5063         remaining code that used it, because we do not support branches inside
5064         basic blocks (and branch target labels) anymore.
5065         * Makefile.am: As part of the above cleanup, remove reference to
5066         BURG files which don't exist anymore.
5067
5068 2009-05-14  Zoltan Varga  <vargaz@gmail.com>
5069
5070         * image-writer.c (asm_writer_emit_local_symbol): Make this a nop on
5071         osx.
5072
5073         * mini-mips.c mini-mips.h exceptions-mips.c: Transition the mips backend
5074         to use mono_arch_throw_corlib_exception.
5075
5076         * mini-ppc.c mini-ppc.h exceptions-ppc.c: Use 
5077         mono_arch_throw_corlib_exception for throwing corlib exceptions.
5078
5079         * aot-runtime.c (decode_patch): Allocate the data for R4/R8 from the
5080         domain mempool.
5081
5082         * mini.c (mono_patch_info_dup_mp): Copy the table of switch targets too.
5083
5084         * aot-compiler.c: Emit a local symbol prefixed with the assembly name 
5085         for the got to make debugging easier and to avoid confusing it with the
5086         system got.
5087         
5088         * aot-compiler.c (emit_method_code): Emit a C style symbol for each
5089         method so a breakpoint can be set when using gdb.
5090
5091 2009-05-13  Zoltan Varga  <vargaz@gmail.com>
5092
5093         * aot-compiler.c (mono_aot_method_hash): Implement this properly based
5094         on mono_method_get_imt_slot ().
5095
5096         * aot-runtime.c (find_extra_method_in_amodule): Get rid of the
5097         num_decodes variables.
5098
5099         * aot-compiler.c (mono_aot_method_hash): Revert part of the last
5100         change as it doesn't seem to work.
5101         
5102         * aot-compiler.c (mono_aot_method_hash): Improve the hashing of
5103         wrappers.
5104
5105 2009-05-12  Zoltan Varga  <vargaz@gmail.com>
5106
5107         * aot-compiler.c mini.c mini-amd64.h mini-arm.h: Kill 
5108         MONO_ARCH_FULL_AOT_IMT_SUPPORTED define, both platforms now support imt.
5109
5110         * mini.c (mini_init): Install mono_aot_get_imt_thunk as the IMT thunk
5111         builder when using full aot.
5112
5113         * mini-amd64.c (mono_arch_build_imt_thunk): Don't handle the full-aot case
5114         here, it is already handled.
5115         
5116         * mini-arm.c (mono_arch_emit_imt_argument): Pass the dynamic imt arg
5117         correctly for IMT.
5118
5119         * aot-compiler.c (arch_emit_imt_thunk): Implement this for ARM.
5120
5121         * mini-arm.h: Enable IMT for full aot.
5122         
5123         * aot-compiler.c (mono_compile_assembly): Don't emit imt thunk if the
5124         arch doesn't support it.
5125
5126         * mini.c (mini_init): Don't disable IMT for full aot if the
5127         architecture supports it.
5128
5129         * mini.h (MonoAotTrampoline): New enum containing the different types
5130         of 'numerous' trampolines.
5131         (MONO_AOT_FILE_VERSION): Bump this.
5132
5133         * aot-compiler.c aot-runtime.c: Unify the handling of specific and
5134         static rgctx trampolines. Add support for full-aot IMT thunks.
5135
5136         * mini-amd64.h: Enable IMT for full aot.
5137
5138         * TestDriver.cs: Add a CategoryAttribute class and an --exclude option
5139         to exclude tests belonging to a category.
5140
5141         * generics.cs: Mark some tests with a !FULLAOT category.
5142
5143         * Makefile.am (fullaotcheck): Run tests with --exclude !FULLAOT. Include
5144         generics tests.
5145
5146 2009-05-11  Zoltan Varga  <vargaz@gmail.com>
5147
5148         * aot-compiler.c (emit_and_reloc_code): Move the implementation of
5149         MONO_PATCH_INFO_GOT_OFFSET to a separate arch-specific function.
5150         (emit_plt): Fix a warning.
5151
5152 2009-05-10  Zoltan Varga  <vargaz@gmail.com>
5153
5154         * aot-compiler.c aot-runtime.c: Fix the build by moving is_shared_got_patch
5155         back into aot-compiler.c to a place where the other functions shared by
5156         the runtime and aot compiler are.
5157         
5158         * aot-compiler.c aot-runtime.c: Emit the got addr using a separate symbol,
5159         as done previously, instead of in MonoAotFileInfo, since pointers might have
5160         alignment requirements.
5161
5162         * mini.h: Bump AOT file format version.
5163
5164 2009-05-10  Miguel de Icaza  <miguel@novell.com>
5165
5166         * aot-runtime.c (mono_aot_is_shared_got_patch): Move this routine
5167         that is used at runtime from the aot-compiler.c, this makes it
5168         work on setups that remove the AOT compiler from the output
5169         image. 
5170
5171 2009-05-09  Zoltan Varga  <vargaz@gmail.com>
5172
5173         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Implement this for
5174         PPC.
5175
5176         * mini-ppc.h: Enable static rgctx trampolines for ppc.
5177
5178         * mini-<ARCH>.h: Kill the MONO_ARCH_ENABLE_EMIT_STATE_OPT define.
5179
5180         * decompose.c (mono_decompose_long_opts): Move the ppc/sparc specific 
5181         stuff to mono_arch_decompose_long_opts ().
5182         (mono_decompose_opcode): Remove some dead code.
5183
5184 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
5185
5186         * method-to-ir.c (mono_method_to_ir): Fix boostrap of non amd64 builds
5187         cmethod can be null for quite a some reasons.
5188
5189 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
5190
5191         * method-to-ir.c (mono_method_to_ir): Fix non amd64 builds.
5192
5193 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
5194
5195         * aot-compiler.c (arch_emit_got_access): Fix the aot-not-supported build.
5196
5197 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
5198
5199         * method-to-ir.c (mono_emit_call_args): Add a 'tail' flag argument.
5200         (mono_method_to_ir): Use MONO_ARCH_USE_OP_TAIL_CALL macro to determine
5201         whenever to make tail calls using OP_TAIL_CALL. Enable support for tail
5202         calls returning structures by addr on amd64.
5203
5204         * mini-amd64.h (MONO_ARCH_USE_OP_TAIL_CALL): New arch-specific macro.
5205
5206         * iltests.il.in: Restructure the tail call tests a bit.
5207         
5208 2009-05-07  Zoltan Varga  <vargaz@gmail.com>
5209
5210         * aot-compiler.c (add_wrappers): Add remoting-invoke-with-check wrappers
5211         for virtual methods too.
5212
5213 2009-05-06  Raja R Harinath  <harinath@hurrynot.org>
5214
5215         * method-to-ir.c (mono_method_to_ir): Revert change of 2009-05-02
5216         due to regression in verifying System.dll.
5217
5218 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
5219
5220         * debug-mini.c (mono_debugger_method_has_breakpoint): Allow breakpoints
5221         in dynamic methods.
5222
5223         * dwarfwriter.c (emit_class_dwarf_info): Add support for generic
5224         instances.
5225
5226         * aot-compiler.c aot-runtime.c: Use our own hash function instead of
5227         g_str_hash () which can change.
5228
5229         * driver.c (mini_regression): Disable optimizations not supported by
5230         the cpu. Fixes #500019.
5231
5232         * aot-runtime.c (mono_aot_get_unwind_info): Fix the --enable-minimal=aot
5233         build.
5234
5235 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
5236
5237         * mini-llvm.c (mono_llvm_emit_method): Update the OP_TLS_GET implementation
5238         to the latest LLVM code.
5239
5240 2009-05-05  Zoltan Varga  <vargaz@gmail.com>
5241
5242         * genmdesc.pl (load_opcodes): Fix this after the TARGET_... changes.
5243
5244 2009-05-04  Zoltan Varga  <vargaz@gmail.com>
5245
5246         * mini-llvm.c (mono_llvm_emit_method): Implement TLS support on 
5247         x86/amd64.
5248
5249         * aot-compiler.c (encode_patch_list): Simplify this considerably as we are
5250         no longer saving offsets, so just save the patch types along with the other
5251         info.
5252         * aot-runtime.c (load_patch_info): Update after the changes to 
5253         encode_patch_list ().
5254         (decode_got_entry): Removed, merged into load_patch_info ().
5255         (is_shared_got_patch): Removed, call the same function from
5256         aot-compiler.c.
5257
5258         * mini.h: Bump aot file format version.
5259         
5260         * aot-compiler.c aot-runtime.c: Resurrect static linking support. Kill the
5261         half-finished no-dlsym code.
5262
5263         * aot-runtime.c (load_method): Kill the old and bit-rotten use_loaded_code
5264         option.
5265
5266         * mini-<ARCH>.h mini-trampolines.c aot-runtime.c: Kill the 
5267         MONO_ARCH_HAVE_CREATE_TRAMPOLINE_FROM_TOKEN define.
5268
5269 2009-05-02  Zoltan Varga  <vargaz@gmail.com>
5270
5271         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Increase the
5272         buffer length to work with AOT code.
5273
5274         * method-to-ir.c (mono_method_to_ir): Handle loading errors in the
5275         ldfld/stfld opcodes.
5276
5277         * exceptions-x86.c (mono_arch_get_throw_exception_by_name): Simplify this
5278         as it is not used.
5279
5280         * mini-llvm.c mini-x86.c: Implement 32 bit and x86 support.
5281
5282         * ssa.c (mono_ssa_compute): Don't skip I8 values when using LLVM.
5283
5284         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Update to the latest
5285         LLVM API.
5286
5287         * mini.c (mini_method_compile): Set the from_llvm flag in MonoJitInfo
5288         if needed. Don't decompose long operations when using llvm.
5289
5290 2009-05-01  Zoltan Varga  <vargaz@gmail.com>
5291
5292         * aot-compiler.c aot-runtime.c: Use mono_pagesize () instead of the
5293         PAGESIZE constant.
5294
5295         * aot-runtime.c (load_aot_module): Get rid of another mprotect call.
5296
5297 2009-05-03  Martin Baulig  <martin@ximian.com>
5298
5299         * debug-debugger.c (debugger_insert_source_breakpoint): Don't call
5300         mono_debugger_insert_method_breakpoint() since the class init
5301         handler we're inserting at the top of the method already gives us
5302         a notification.
5303
5304 2009-04-30  Zoltan Varga  <vargaz@gmail.com>
5305
5306         * decompose.c (mono_decompose_long_opts): Move the implementation of LNEG
5307         to mono_arch_decompose_long_opts () for x86 and arm.
5308
5309 2009-04-29  Zoltan Varga  <vargaz@gmail.com>
5310
5311         * mini-codegen.c (mono_regstate_alloc_int): Use __x86_64__ instead of
5312         TARGET_AMD64 here.
5313
5314 2009-04-28  Zoltan Varga  <vargaz@gmail.com>
5315
5316         * *.h *.c: Use TARGET_<ARCH> defines instead of __<arch>__ defines in the
5317         JIT code.
5318
5319 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
5320
5321         * aot-runtime.c (mono_aot_create_specific_trampoline): Add a stat for the
5322         number of trampolines used in full-aot mode.
5323
5324         * aot-compiler.c: Add an ntrampolines option to set the number of 
5325         trampolines emitted in full-aot mode.
5326
5327 2009-04-27  Zoltan Varga  <vargaz@gmail.com>
5328
5329         * mini-llvm.c (mono_llvm_emit_method): Implement OP_CHECK_THIS using
5330         a volatile load. Get rid of get_tempname (), llvm assigns names
5331         automatically.
5332
5333         * mini-llvm-cpp.cpp (mono_llvm_build_volatile_load): New instruction
5334         builder function.
5335
5336         * mini-llvm.c (mono_llvm_emit_method): Don't call LLVMGetParam on
5337         a value.
5338
5339         * abcremoval.c (REPORT_ABC_REMOVAL): Don't output messages at verbose
5340         level 1.
5341
5342         * mini-codegen.c (mono_local_regalloc): Prevent sreg1/dreg to be allocated
5343         to the same register as a fixed sreg2. Fixes #497271.
5344
5345         * iltests.il.in: Add a new test.
5346
5347 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
5348
5349         * mini-amd64.c: Use moves instead of pushes for passing arguments on the
5350         stack, since pushes complicate exception handling.
5351
5352         * exceptions-amd64.c (mono_arch_find_jit_info): Don't pop the arguments of
5353         the stack if they are passed using moves.
5354
5355         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
5356
5357         * method-to-ir.c (mono_method_to_ir): Disable fast virtual generic methods
5358         when using llvm.
5359
5360         * mini-llvm.c (mono_llvm_emit_method): Call jit icall wrappers, not the 
5361         icalls themselves. Convert arguments of FCOMPARE. Convert the destination
5362         of FMOVE if it is an R4.
5363
5364 2009-04-25  Zoltan Varga  <vargaz@gmail.com>
5365
5366         * mini-ops.h: Add OP_LLVM_OUTARG_VT opcode.
5367
5368         * mini.h (LLVMCallInfo): New structure to store calling convention 
5369         information for the LLVM back end similar to the CallInfo structures in 
5370         the back-ends.
5371
5372         * mini-amd64.c (mono_arch_get_llvm_call_info): New arch function to return
5373         call information in a format usable by LLVM.
5374         (mono_arch_emit_call): Move the LLVM handling code to mono_llvm_emit_call ().
5375
5376         * method-to-ir.c (mono_emit_call_args): Emit calls using 
5377         mono_llvm_emit_call () when compiling using LLVM.
5378
5379         * mini-llvm.c: Implement support for passing/receiving valuetypes. Add
5380         comments to all functions. Fix memory leaks. Add a public init/cleanup
5381         function.
5382
5383         * mini.c: Call the llvm init/cleanup functions in mini_init()/cleanup().
5384
5385         * method-to-ir.c (handle_array_new): Disable llvm when calling the vararg
5386         mono_array_new_va () jit icall.
5387         
5388 Fri Apr 24 16:44:08 CEST 2009 Paolo Molaro <lupus@ximian.com>
5389
5390         * Makefile.am, genmdesc.c, genmdesc.pl: tiny refactor to allow
5391         multiple machine description files to be specified.
5392         * mini-ops.h: fixes for cross-compilation.
5393
5394 2009-04-22  Miguel de Icaza  <miguel@novell.com>
5395
5396         * aot-runtime.c (make_writable): Use mono_mprotect to simplify
5397         some porting work.
5398
5399 2009-04-22  Zoltan Varga  <vargaz@gmail.com>
5400
5401         * method-to-ir.c (mono_method_to_ir): Force init_locals to be TRUE
5402         to prevent asserts in various passes. Fixes #497220.
5403
5404 2009-04-21  Zoltan Varga  <vargaz@gmail.com>
5405
5406         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove
5407         a racy assert.
5408
5409         * aot-compiler.c aot-runtime.c: Emit the unwind info into a separate
5410         table to avoid duplicates.
5411
5412         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5413         
5414         * aot-compiler.c (emit_method_code): Avoid writing symbols if the nodebug
5415         option is used.
5416
5417 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
5418
5419         * mini.c (mini_method_verify): Fail fulltrust code if the exception
5420         is for method or field access.
5421
5422 2009-04-20  Zoltan Varga  <vargaz@gmail.com>
5423
5424         * mini-llvm-cpp.cpp (mono_llvm_dump_value): New helper function to print
5425         a Value to stdout.
5426
5427         * mini-llvm.c (mono_llvm_emit_method): Use it.
5428         
5429         * mini-llvm.c (type_to_llvm_type): Fix the mapping of enums.
5430         (mono_llvm_emit_method): Add support for CAS. Fix handling of CSET opcodes
5431         on volatile values.
5432
5433         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add support for 
5434         synchronized methods.
5435
5436         * mini.c (mini_method_compile): Disable LLVM for dynamic methods.
5437
5438         * mini.c (mini_method_compile): Enable ABCREM when running with LLVM.
5439
5440         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOADI4_MEM/
5441         OP_LOADI8_MEM.
5442
5443         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add a MONO_LLVM env variable
5444         allowing some options to be set dynamically.
5445
5446 2009-04-19  Zoltan Varga  <vargaz@gmail.com>
5447
5448         * mini-llvm.c (mono_llvm_emit_method): Handle compares followed by an
5449         unconditional branch.
5450
5451         * mini.h (MonoTrampolineType): Add new trampoline type 
5452         'MONO_TRAMPOLINE_LLVM_VCALL' which handles virtual calls made from LLVM
5453         compiled code.
5454
5455         * mini-trampolines.c (mono_llvm_vcall_trampoline): New C trampoline 
5456         function.
5457
5458         * mini-trampolines.c (mono_create_llvm_vcall_trampoline): New trampoline
5459         creation function.
5460
5461         * mini.c (mini_init): Avoid using the common vtable trampoline when LLVM
5462         is enabled. Instead, use the llvm vcall trampoline.
5463         
5464         * mini-trampolines.c (mono_get_vcall_slot_addr): New helper function.
5465
5466         * mini-trampolines.c tramp-amd64.c tramp-x86.c: Use it.
5467         
5468         * mini-<ARCH>.c: Get rid of the identical mono_arch_get_vcall_slot_addr ()
5469         functions.
5470
5471         * mini-<ARCH>.h mini-trampolines.c mini.c: Get rid of 
5472         MONO_ARCH_COMMON_VTABLE_TRAMPOLINE, it is supported by all archs.
5473
5474         * mini-ia64.c (mono_arch_lowering_pass): Null out the sregs of the
5475         OP_IA64_CSET opcode.
5476
5477         * mini.c: Fix a warning.
5478
5479         * mini-llvm.c (mono_llvm_emit_method): Convert arguments of SWITCH and
5480         THROW to the appropriate llvm type.
5481
5482 2009-04-18  Zoltan Varga  <vargaz@gmail.com>
5483
5484         * mini.c (mini_method_compile): Add statistics for methods JITted
5485         with/without LLVM.
5486
5487 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
5488
5489         * method-to-ir.c: Fix the computation of ins_sreg_counts for ia64
5490         OP_IA64_CMP_<cond>_IMM opcodes.
5491
5492 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
5493
5494         * mini-llvm.c (emit_cond_system_exception): Implement throwing of
5495         corlib exceptions.
5496
5497         * dwarfwriter.c (mono_dwarf_writer_emit_method): Handle --regression
5498         correctly.
5499
5500         * mini-llvm.c (type_to_llvm_type): Avoid accessing t->data.klass for
5501         GENERICINST.
5502
5503 2009-04-17  Atsushi Enomoto  <atsushi@ximian.com>
5504
5505         * mini-exceptions.c : add thread id to EXCEPTION trace message.
5506
5507 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
5508
5509         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Fix AOT
5510         support.
5511
5512         * tramp-x86.c (mono_arch_get_unbox_trampoline): Implement static
5513         rgctx invoke trampolines for x86.
5514
5515         * mini-x86.c (mono_arch_output_basic_block): Add a few nops before
5516         indirect calls to simplify get_vcall_slot_addr (). Fixes #494567.
5517         (mono_arch_get_vcall_slot): Simplify this.
5518
5519 2009-04-16  Zoltan Varga  <vargaz@gmail.com>
5520
5521         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Move the calls to
5522         mono_debug_add_delegate_trampoline () to get_delegate_invoke_impl ().
5523
5524 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
5525
5526         * aot-compiler.c tramp-arm.c mini-arm.c: Implement static rgctx 
5527         trampolines for ARM. Add full-aot support for delegate invokes for ARM.
5528
5529         * mini-trampolines.c (mono_magic_trampoline): Fix the build.
5530
5531         * liveness.c (visit_bb): Remove a needless assert.
5532
5533 2009-04-13  Zoltan Varga  <vargaz@gmail.com>
5534
5535         * mini-trampolines.c (mono_create_delegate_trampoline): Delegate the
5536         full aot support to the arch specific code.
5537
5538         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Add full-aot support.
5539
5540         * aot-compiler.c (emit_trampolines): Emit delegate invoke impl trampolines.
5541
5542         * aot-compiler.c (emit_named_code): Rename this to 'emit_trampoline'.
5543         
5544         * mini-amd64.c (mono_arch_get_delegate_invoke_impls): New function to
5545         collect information about the delegate invoke impl trampolines.
5546
5547         * mini.h (MonoAotTrampInfo): New structure collecting the information needed
5548         to save trampolines during full-aot mode.
5549
5550         * mini-trampolines.c (mono_create_static_rgctx_trampoline): New trampoline
5551         creation function which returns a trampoline which sets the rgctx
5552         argument.
5553         (mono_magic_trampoline): Use the rgctx trampoline instead of an rgctx
5554         wrapper if possible.
5555         (mono_delegate_trampoline): Ditto.
5556
5557         * mini.c (mono_jit_runtime_invoke): Ditto.
5558
5559         * tramp-amd64.c: Add an implemention of static rgctx trampolines for AMD64.
5560         
5561         * aot-compiler.c aot-runtime.c: Add support for static rgctx trampolines.
5562
5563         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5564         
5565 2009-04-12  Zoltan Varga  <vargaz@gmail.com>
5566
5567         * mini-ia64.c (mono_arch_lowering_pass): Use NULLIFY_INS instead of
5568         just setting the opcode to OP_NOP.
5569
5570 2009-04-11  Zoltan Varga  <vargaz@gmail.com>
5571
5572         * mini.c (mini_method_compile): Put the last change inside an 
5573         #ifdef MONO_ARCH_HAVE_LIVERANGE_OPS.
5574         
5575         * mini.c (mini_method_compile): Disable sharing of stack slots/registers
5576         and extend live ranges to cover the whole method when using xdb.
5577
5578         * jit-icalls.c (ldvirtfn_internal): Avoid creating rgctx wrappers here,
5579         do it in the trampolines.
5580
5581         * mini-trampolines.c (mono_magic_trampoline): Add an rgctx wrapper if
5582         needed.
5583
5584         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
5585         
5586         * method-to-ir.c (mono_method_to_ir): Avoid using the fast virtual method
5587         call code in full-aot mode since IMT is disabled there.
5588         (mono_method_to_ir): Inline ldfld wrappers which return structures too, the
5589         new JIT no longer has that restriction.
5590
5591         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5592
5593         * aot-compiler.c (emit_extra_methods): Emit the wrapper method names in
5594         a more compact format.
5595         (mono_aot_wrapper_name): New function to return a unique name for a
5596         wrapper method, also used by the AOT runtime.
5597
5598         * aot-runtime.c (find_extra_method_in_amodule): Update after the changes to
5599         aot-compiler.c.
5600
5601         * aot-compiler.c (add_generic_class): Add the helper methods from T[]
5602         when a ICollection<T> etc is encountered.
5603         (add_generic_instances): Process method arguments/locals too.
5604         (emit_trampolines): Emit unbox trampolines for extra methods too. Shorten
5605         trampoline names.
5606
5607         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle extra methods too.
5608         
5609 2009-04-10  Zoltan Varga  <vargaz@gmail.com>
5610
5611         * aot-compiler.c: Disable the AOT compiler if the JIT is disabled.
5612
5613         * dwarfwriter.c (emit_type): Emit byref to reference types as 'int' for now.
5614
5615         * decompose.c (mono_decompose_opcode): Make this return a MonoInst*
5616         representing the result of the decomposition. Nullify instructions
5617         instead of setting them to OP_NOP since nops can't have registers
5618         set.
5619
5620 2009-04-09  Zoltan Varga  <vargaz@gmail.com>
5621
5622         * aot-compiler.c (mono_compile_assembly): Split this huge function into
5623         smaller parts. Add 'nodebug' option to prevent generation of DWARF debug
5624         info. Strip 'mapping symbols' on ARM.
5625
5626         * iltests.il.in (test_0_fconv_to_i): Disable this on ARM too.
5627         
5628         * genmdesc.pl: Applied patch by Martin Fuzzey (mfuzzey@parkeon.com). Sync
5629         this with the native genmdesc.
5630
5631 2009-04-08  Bill Holmes  <billholmes54@gmail.com>
5632
5633         * aot-runtime.c:  Fixing the MSVC build.
5634
5635         Code is contributed under MIT/X11 license.
5636
5637 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
5638
5639         * mini-llvm.c (mono_llvm_emit_method): Pass i1/i2 arguments as i4 since 
5640         JITted code depends on it.
5641
5642 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
5643
5644         * aot-compiler.c: Use new MonoGenericParam accessors.
5645
5646 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
5647
5648         Reduce memory usage and improve correctness wrt MonoGenericParam
5649         * aot-runtime.c (decode_klass_ref): Simplify generic parameter
5650         handing.  Avoid allocating MonoGenericParams, but use the ones in
5651         the container itself.
5652
5653 2009-04-07  Miguel de Icaza  <miguel@novell.com>
5654
5655         * tasklets.c: Return exceptions in the out argument.
5656
5657 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
5658
5659         * mini-llvm.c (mono_llvm_emit_method): Fix alignment in the LOCALLOC_IMM
5660         opcode. Use pointer types in more places instead of casting them to 
5661         integers.
5662
5663         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Create a pass manager to run
5664         optimizations.
5665         (mono_llvm_optimize_method): New helper function to optimize a method.
5666
5667         * method-to-ir.c (mono_emit_widen_call_res): Extract the call result 
5668         widening code so it could be called from more places.
5669         (mono_method_to_ir): Call mono_emit_widne_call_res () in several more
5670         code paths in the call opcodes.
5671
5672 Mon Apr 6 14:19:54 CEST 2009 Paolo Molaro <lupus@ximian.com>
5673
5674         * exceptions-amd64.c, mini-amd64.h: amd64 support code for continuations.
5675
5676 2009-04-06  Zoltan Varga  <vargaz@gmail.com>
5677
5678         * dwarfwriter.c: Use _ to separate class name 
5679         components as gdb can't handle '.'. Represent reference variables
5680         as 'class <NAME>&'.
5681         
5682         * mini.h (MonoCompile): Add locals_min_stack_offset/locals_max_stack_offset.
5683
5684         * mini-amd64.c (mono_arch_allocate_vars): Save min/max stack offset.
5685         
5686         * mini-gc.c: New file, contains the SGEN GC related parts of the JIT.
5687
5688         * gc-test.cs: New file with GC stack marking tests.
5689         
5690         * mini-arm.c (mono_arch_output_basic_block): Fix int->float conversion of
5691         negative numbers for vfp.
5692
5693         * basic-float.cs: Add a test.
5694         
5695 Mon Apr 6 14:12:10 CEST 2009 Paolo Molaro <lupus@ximian.com>
5696
5697         * exceptions-x86.c, mini-x86.h: x86 support code for continuations.
5698
5699 Mon Apr 6 14:09:53 CEST 2009 Paolo Molaro <lupus@ximian.com>
5700
5701         * tasklets.h, tasklets.c, mini.h, mini.c, Makefile.am: arch-indep
5702         part of tasklet/continuation support.
5703
5704 2009-04-05  Zoltan Varga  <vargaz@gmail.com>
5705
5706         * mini-llvm.c (mono_llvm_emit_method): Move the handling of
5707         amd64 opcodes inside an ifdef.
5708
5709         * dwarfwriter.c: Emit inheritance information for classes, emit fields
5710         of complex types.
5711         
5712         * dwarfwriter.c (emit_type): Emit the class info for classes.
5713
5714 2009-04-04  Zoltan Varga  <vargaz@gmail.com>
5715
5716         * Makefile.am (AM_CXXFLAGS): Add GLIB_CFLAGS to this.
5717
5718         * mini-llvm-cpp.h: New header file for mini-llvm-cpp.cpp.
5719
5720         * mini-llvm.c: Remove unused fields from EmitContext, fix memory leaks.
5721
5722         * ssa.c (mono_ssa_compute): Fix some memory leaks.
5723
5724 2009-04-03  Zoltan Varga  <vargaz@gmail.com>
5725
5726         * mini.c mini-amd64.c method-to-ir.c: Use COMPILE_LLVM in a few more places.
5727
5728         * mini-llvm.c: Update comments.
5729
5730         * mini.h (COMPILE_LLVM): New macro.
5731
5732         * decompose.c (mono_decompose_opcode): Use the COMPILE_LLVM macro.
5733
5734         * ssa.c (mono_ssa_compute): Ditto.
5735         
5736         * unwind.c (mono_unwind_get_ops_from_fde): New helper function to extract
5737         the unwind ops from a DWARF FDE.
5738
5739         * mini-llvm.c: Implement generation of unwind info for LLVM compiled
5740         methods by extracting the dwarf unwind ops from the unwind info generated
5741         by LLVM.
5742         
5743         * mini-llvm.c (mono_llvm_emit_method): Enable support for non-IMT virtual
5744         calls.
5745
5746         * mini-amd64.c (mono_arch_get_vcall_slot): Handle more kinds of the SIB
5747         addressing modes.
5748
5749 2009-04-02  Zoltan Varga  <vargaz@gmail.com>
5750
5751         * Makefile.am (llvm_sources): Enable this.
5752
5753         * mini.c (mini_method_compile): Add support for compiling with LLVM, 
5754         failing back to the JIT if something cannot be handled.
5755
5756         * mini-amd64.c (mono_arch_emit_call): Emit the arguments more simple when
5757         compiling with LLVM.
5758
5759         * decompose.c (mono_decompose_opcode): Avoid decomposing some opcodes when
5760         compiling with LLVM.
5761
5762         * method-to-ir.c (mono_method_to_ir): Avoid decomposing SWITCH when 
5763         compiling with LLVM.
5764
5765         * mini-ops.h: Add a few opcodes needed by LLVM.
5766
5767         * dwarfwriter.c (mono_dwarf_writer_emit_method): Avoid crashes if the method
5768         has no unwind info.
5769
5770         * mini-llvm.c mini-llvm-cpp.cpp: New files containing the experimental llvm
5771         backend.
5772
5773         * mini-arm.c (mono_arch_output_basic_block): Fix the ARM_FPU_NONE build.
5774
5775         * mini-arm.h mini-arm.c cpu-arm.md: Finish VFP support.
5776
5777 2009-04-01  Mark Probst  <mark.probst@gmail.com>
5778
5779         * regalloc.h, mini-codegen.c: Make vassign members gint32 to fix
5780         ridiculously large methods.
5781
5782 2009-03-31  Martin Baulig  <martin@ximian.com>
5783
5784         * debug-debugger.c (debugger_remove_breakpoint): Call
5785         mono_debugger_remove_class_init_callback ().
5786
5787 2009-03-31  Zoltan Varga  <vargaz@gmail.com>
5788
5789         * aot-compiler.c (mono_compile_assembly): Call img_writer_emit_start ()
5790         right before emitting code, not at the start.
5791
5792         * mini.c (mono_postprocess_patches): Extract this into a separate function
5793         from mono_codegen ().
5794
5795         * ssa.c (mono_ssa_compute): Set ins->klass for every PHI node, handle
5796         byref types correctly.
5797
5798 2009-03-30  Zoltan Varga  <vargaz@gmail.com>
5799
5800         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix a crash introduced
5801         by the last change.
5802
5803 2009-03-29  Zoltan Varga  <vargaz@gmail.com>
5804
5805         * mini-amd64.c (mono_arch_output_basic_block): Emit a few nops before 
5806         indirect calls, this avoids problems where get_vcall_slot () would get
5807         confused by the native code for the instruction preceeding the call.
5808         (mono_arch_get_vcall_slot): Simplify this.
5809         (mono_arch_emit_imt_argument): Remove this, it is no longer needed.
5810
5811         * mini-ops.h: Fix the definitions of the OP_IA64 opcodes, since the local
5812         register allocator now seems to depend on them instead of the data in
5813         cpu-<ARCH>.md.
5814
5815         * mini.c (mini_method_compile): Throw the correct type of exception if
5816         mono_method_get_header () fails because of a loading error.
5817
5818 2009-03-28  Zoltan Varga  <vargaz@gmail.com>
5819
5820         * mini.c (mini_method_compile): Clear the loader error if the method
5821         header cannot be decoded.
5822
5823         * mini-trampolines.c (mono_magic_trampoline): Handle generic virtual 
5824         interface methods on proxies correctly.
5825
5826         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix handling of the
5827         this argument for vtype methods. Add precise liveness info for arguments.
5828
5829         * mini-codegen.c (mono_print_ins_index): Print the vreg of the
5830         LIVERANGE_START/END opcodes.
5831
5832         * method-to-ir.c (mono_spill_global_vars): Fix liverange calculation
5833         for arguments and values in registers.
5834
5835 2009-03-27  Zoltan Varga  <vargaz@gmail.com>
5836
5837         * method-to-ir.c (mono_method_to_ir): Disable tail calls for calls which
5838         return a valuetype. Fixes #487518.
5839
5840         * iltests.il: Add a test.
5841         
5842         * aot-compiler.c: Use mono_thread_create () to create helper threads.
5843
5844         * mini-trampolines.c (mono_delegate_trampoline): Handle static delegates
5845         closed over a null reference correctly.
5846
5847 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
5848
5849         * method-to-ir.c (mono_handle_global_vregs): Fix support for ternary ops.
5850
5851 2009-03-25  Mark Probst  <mark.probst@gmail.com>
5852
5853         * mini-codegen.c (mono_local_regalloc): Don't let sregs get
5854         allocated to the same registers as fixed sregs.
5855
5856 2009-03-24  Mark Probst  <mark.probst@gmail.com>
5857
5858         * mini-ops.h: New ternary ATOMIC_CAS ops replace the old
5859         ATOMIC_CAS_IMM ops.
5860
5861         * method-to-ir.c: Handle more cases for
5862         Interlocked.CompareExchange.
5863
5864         * cpu-x86.md, mini-x86.c, mini-x86.h, cpu-amd64.md, mini-amd64.c,
5865         mini-amd64.h, cpu-ppc.md, cpu-ppc64.md, mini-ppc.c, mini-ppc.h:
5866         ATOMIC_CAS implementations for x86, AMD64, PPC and PPC64.
5867
5868 2009-03-23  Zoltan Varga  <vargaz@gmail.com>
5869
5870         * aot-runtime.c (decode_method_ref): Fix a warning.
5871
5872         * unwind.c (mono_unwind_frame): Ditto.  
5873
5874 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
5875
5876         * aot-compiler.c (arch_emit_unbox_trampoline): Fix the binary writer support.
5877         (mono_compile_assembly): Enable the binary writer for full-aot as well.
5878
5879         * image-writer.c (do_reloc): Add support for the JUMP24 relocation,
5880         fix the handling of large values in the ALU_PC_G0_NC relocation.
5881
5882 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
5883
5884         * local-propagation.c method-to-ir.c local-propagation.c: Fix warnings.
5885
5886 2009-03-22  Mark Probst  <mark.probst@gmail.com>
5887
5888         * method-to-ir.c (mono_spill_global_vars): Support for ternary
5889         ops.
5890
5891 2009-03-22  Mark Probst  <mark.probst@gmail.com>
5892
5893         * method-to-ir.c: MINI_OP3 needs a comma.
5894
5895         * method-to-ir.c, mini.h, mini.c: Remove
5896         mono_init_op_sreg_counts ().
5897
5898 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
5899
5900         * mini-arm.c (mono_arch_output_basic_block): Fix aot support in
5901         OP_JMP.
5902         
5903         * mini-arm.c (mono_arch_build_imt_thunk): Disable the !fail_tramp
5904         assertion.
5905
5906         * mini-ops.h: Fix arguments of the MEMINDEX opcodes.
5907
5908         * mini-amd64.c (mono_arch_build_imt_thunk): Simplify the fail handling
5909         code somewhat.
5910
5911 2009-03-21  Mark Probst  <mark.probst@gmail.com>
5912
5913         * cfold.c, cprop.c, decompose.c, genmdesc.c, helpers.c, ir-emit.h,
5914         liveness.c, local-propagation.c, method-to-ir.c, mini-codegen.c,
5915         mini.c, mini.h, simd-intrinsics.c, ssa.c: Support for ternary IR
5916         operations.
5917
5918 2009-03-20  Zoltan Varga  <vargaz@gmail.com>
5919
5920         * driver.c: Change location of gc_wrapper.h.
5921
5922         * method-to-ir.c (mono_find_block_region): Handle try clauses nested
5923         inside finally clauses correctly. Fixes #485721.
5924
5925         * mini.c (mono_find_spvar_for_region): This needs to handle try regions
5926         after the change above.
5927
5928         * exceptions.cs: Add a test.
5929         
5930 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
5931
5932         * unwind.c (mono_unwind_ops_encode): Increase the size of the encode buffer.
5933
5934         * mini-amd64.c (mono_arch_emit_epilog): Remove the encoding of stack size
5935         into cfg->used_int_regs, it is not needed with the dwarf unwinder.
5936         (mono_arch_compute_omit_fp): Remove the emit_epilog () workaround.
5937
5938         * mini-amd64.c (mono_arch_compute_omit_fp): Add another check to avoid hitting
5939         the stack_alloc_size < (1 << 16) assertion in emit_prolog ().
5940
5941 2009-03-19  Sebastien Pouliot  <sebastien@ximian.com>
5942
5943         * method-to-ir.c: Allow CoreCLR to throw FieldAccessException. 
5944         Simplify logic for ensure_method_is_allowed_to_call_method. 
5945         Handle wrappers on callers.
5946
5947 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
5948
5949         * Makefile.am (fullaotcheck): Don't run the generics tests, some of
5950         them don't run yet.
5951
5952         * basic-simd.cs: Fix the names of some test methods.
5953
5954 2009-03-18  Geoff Norton  <gnorton@novell.com>
5955
5956         * mini.c: Only chain sigfpe if it wasn't generated in mangaed code.
5957
5958 2009-03-18  Zoltan Varga  <vargaz@gmail.com>
5959
5960         * dwarfwriter.c (token_handler): Fix a crash caused by the last change.
5961
5962 2009-03-17  Jb Evain  <jbevain@novell.com>
5963
5964         * driver.c: remove now uneeded call to mono_gc_base_init before
5965         mono_profiler_load.
5966
5967 2009-03-17  Jb Evain  <jbevain@novell.com>
5968
5969         * dwarfwriter.c (token_handler): handle more cases.
5970
5971 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com> 
5972
5973         * method-to-ir.c: Remove more dead code (that was required only
5974         because of method_is_safe). Fix compiler warnings.
5975
5976 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com>
5977
5978         * method-to-ir.c: Remove unneeded/useless method_is_safe
5979         http://lists.ximian.com/archives/public/mono-devel-list/2009-March/031404.html
5980
5981 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
5982
5983         * mini.c (mini_method_compile): Print the method been compiled with
5984         verbose level 1 instead of 3 as this helps a lot debugging JIT crashes
5985         for people not familiar with the runtime.
5986
5987 2009-03-17  Zoltan Varga  <vargaz@gmail.com>
5988
5989         * mini-exceptions.c (get_generic_info_from_stack_frame): Avoid returning
5990         a managed object which is later put into a GList. Return its class instead.
5991
5992         * mini.c (mono_allocate_stack_slots_full): Avoid sharing ref and non-ref
5993         stack slots when using sgen.
5994
5995 2009-03-16  Zoltan Varga  <vargaz@gmail.com>
5996
5997         * dwarfwriter.c (emit_line_number_info): Really fix the eglib build.
5998
5999 2009-03-14  Zoltan Varga  <vargaz@gmail.com>
6000
6001         * local-propagation.c (reg_is_softreg_no_fpstack): Use >= instead of
6002         > so it works on the first vreg as well.
6003
6004 2009-03-13  Zoltan Varga  <vargaz@gmail.com>
6005
6006         * dwarfwriter.c (emit_line_number_info): Disable an assert which seems to
6007         trigger randomly.
6008
6009         * aot-compiler.c: Get rid of xdebug_lock (), use the loader lock instead.
6010         
6011         * dwarfwriter.c (emit_line_number_info): Fix eglib build as eglib doesn't
6012         implement GArray.
6013
6014 2009-03-12  Zoltan Varga  <vargaz@gmail.com>
6015
6016         * dwarfwriter.c (emit_line_number_info): Optimize the computation of the
6017         native->IL offset mapping.
6018
6019 2009-03-11  Zoltan Varga  <vargaz@gmail.com>
6020
6021         * mini-amd64.c (mono_arch_output_basic_block): Fix % 1. Fixes #484323.
6022
6023         * basic.cs: Add a test.
6024
6025 2009-03-11  Mark Probst  <mark.probst@gmail.com>
6026
6027         * mini-x86.c (mono_arch_output_basic_block): Use different
6028         registers in case the ones we want to overwrite are used by the
6029         other operand.  Fixes regression in #480807.
6030
6031 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
6032
6033         * aot-compiler.c (mono_compile_assembly): Make the output less verbose.
6034
6035         * dwarfwriter.c (emit_line_number_info): The line number info for
6036         IL code was off by one. Fix that.
6037
6038         * mini-s390x.c: Fix support for vtypes whose addresses are passed on the
6039         stack.
6040
6041 2009-03-09  Mark Probst  <mark.probst@gmail.com>
6042
6043         Contributed under the terms of the MIT/X11 license by Steven
6044         Munroe <munroesj@us.ibm.com>.
6045
6046         * mini-ppc.c: Correct handling of OP_LOADI4_MEMINDEX for ppc64.
6047         Fixes #483462.
6048
6049 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
6050
6051         * dwarfwriter.c (token_handler): Decode method references in non-wrappers
6052         as well.
6053
6054 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
6055
6056         * method-to-ir.c (mono_method_to_ir): Check for type load exceptions in
6057         the delegate ctor handling code. Fixes #482638.
6058         
6059         * method-to-ir.c (mini_emit_memset): Fix the handling of size '3'. Fixes
6060         #481458.
6061
6062         * iltests.il.in: Add a test.
6063         
6064         * mini-darwin.c (mono_chain_signal): Remove this, it is already in
6065         mini-posix.c.
6066
6067 2009-03-05  Mark Probst  <mark.probst@gmail.com>
6068
6069         * mini-trampolines.c (mono_create_jump_trampoline): If the method
6070         is shared generic code, return the trampoline, even if the method
6071         has already been compiled.  Fixes #479763.
6072
6073         * mini.c, mini.h: New function
6074         mono_jit_find_compiled_method_with_jit_info() which is the same as
6075         mono_jit_find_compiled_method() but also returns the jit info.
6076
6077 2009-03-05  Mark Probst  <mark.probst@gmail.com>
6078
6079         * method-to-ir.c (mono_method_to_ir): Only force the vtable var
6080         for methods which actually have one.  For all other methods, make
6081         sure the this argument var is live the whole method.
6082
6083         * mini.c (mini_method_compile): Every shared method has a
6084         this/vtable/mrgctx info.  Fixes #480807.
6085
6086 2009-03-05  Mark Probst  <mark.probst@gmail.com>
6087
6088         * mini-ppc.c (mono_arch_build_imt_thunk): Add support for mixed
6089         generic/imt thunks where some entries branch through the vtable,
6090         while other entries branch directly.
6091
6092 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
6093
6094         * mini-darwin.c (mono_chain_signal): Define this to fix the build.
6095
6096         * mini-windows.c: Ditto.
6097         
6098         * mini.c (mono_jit_runtime_invoke): Speed up the invoking of parameterless
6099         ctors.
6100
6101 2009-03-04  Zoltan Varga  <vargaz@gmail.com>
6102
6103         * dwarfwriter.c (emit_line_number_info): Add some debug code to help track
6104         down an assert.
6105
6106 2009-03-04  Mark Probst  <mark.probst@gmail.com>
6107
6108         * method-to-ir.c: Don't inline methods that use JMP.  Fixes
6109         #481403.
6110
6111 2009-03-04  Mark Probst  <mark.probst@gmail.com>
6112
6113         * exceptions-x86.c: Include debug-mini.h - fixes build.
6114
6115 2009-03-04  Martin Baulig  <martin@ximian.com>
6116
6117         * debug-mini.c: Clean up the exception API and add documentation.
6118         (mono_debugger_handle_exception): New public method; this is
6119         called when throwing an exception or encountering an unhandled one.
6120         (mono_debugger_call_exception_handler): Formerly known as
6121         mono_debugger_handle_exception(); this is used to tell the
6122         debugger that we're about to invoke an exception handler.
6123
6124 2009-03-04  Martin Baulig  <martin@ximian.com>
6125
6126         * debug-mini.c (mono_debugger_runtime_invoke): Moved here from
6127         ../metadata/mono-debug-debugger.c; save and reset exception state.
6128
6129 2009-03-02  Martin Baulig  <martin@ximian.com>
6130
6131         * debug-mini.c: Moved the debugger exception handling here from
6132         ../metadata/mono-debug-debugger.c.
6133
6134         * debug-mini.h
6135         (MonoDebuggerExceptionAction): New exception typedef.
6136
6137         * debug-mini.c
6138         (MonoDebuggerThreadInfo): Added `MonoObject *last_exception'.
6139
6140         * exceptions-amd64.c
6141         (mono_amd64_throw_exception): Use the new debugger exception
6142         handling code.
6143
6144         * mini-exceptions.c
6145         (mono_handle_exception_internal): Don't call
6146         mono_debugger_unhandled_exception() here.
6147
6148 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
6149
6150         * mini.c aot-compiler.c: Update after the changes to 
6151         mono_marshal_get_runtime_invoke ().
6152
6153         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): 
6154         Virtual generic methods might not have method->slot set, work around
6155         that.
6156
6157         * generics.cs: Add a test.
6158
6159 2009-03-02  Geoff Norton  <gnorton@novell.com>
6160
6161         * mini.c:
6162         * driver.c: Allow signal chaining of SIGFPE as well.
6163
6164 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
6165
6166         * mini-trampolines.c (mono_generic_virtual_remoting_trampoline): Update
6167         this since it now receives the method not its generic context in the
6168         IMT reg.
6169
6170         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for mixed
6171         generic/imt thunks where some entries branch through the vtable, while
6172         other entries branch directly.
6173
6174         * mini-x86.c (mono_arch_build_imt_thunk): Ditto.
6175
6176         * method-to-ir.c (mono_method_to_ir): Enable fast virtual generic call 
6177         support for interface methods as well.
6178
6179         * mini-trampolines.c: Add support for virtual generic methods in interfaces
6180         using the normal IMT thunks.
6181
6182         generics.cs: Add new tests.
6183         
6184         * method-to-ir.c (mono_method_to_ir): Pass the method instead of
6185         the generic inst to the generic imt thunks. This fixes AOT support, 
6186         improves consistency with the normal IMT thunks, and makes it easier to
6187         add support for interface generic virtual methods later.
6188
6189         * mini-trampolines.c (mono_magic_trampoline): Ditto.    
6190         
6191 2009-02-28  Zoltan Varga  <vargaz@gmail.com>
6192
6193         * driver.c (mono_set_signal_chaining): New public API function to enable
6194         signal chaining on POSIX platforms.
6195
6196         * mini-posix.c mini.c: Applied a variant of a patch by Simon Rowland 
6197         (si@lindenlab.com) to implement signal chaining. The original patch was
6198         contributed under the MIT X/11 license:
6199         https://bugzilla.novell.com/show_bug.cgi?id=318894
6200
6201 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
6202
6203         * iltests.il.in (test_0_implicit_float_to_double_conversion): Disable this
6204         too until it can be made to run on amd64.
6205
6206 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
6207
6208         * mini-x86.c (mono_arch_get_this_arg_from_call): Avoid expensive calls
6209         to  get_generic_context_from_code () + get_call_info () if possible.
6210
6211 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
6212
6213         * mini-exceptions.c (mono_handle_native_sigsegv): Implement the
6214         suspend-on-sigsegv functionality.
6215
6216         * mini.c (mini_parse_debug_options): Add a new 'suspend-on-sigsegv' option
6217         to suspend when a native SIGSEGV is received. This is useful for debugging
6218         crashes which don't happen under gdb, since a live process contains more
6219         information than a core file.
6220
6221         * mini-exceptions.c (mono_print_thread_dump): Use 
6222         MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX instead of platform defines.
6223
6224         * mini-x86.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): New define.
6225
6226         * mini-amd64.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): Ditto.
6227         
6228         * basic-float.cs: Disable the tests which currently fail on amd64.
6229
6230         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass a non-null 
6231         value to mono_arch_patch_callsite () to fix crashes.
6232         
6233         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix a warning.
6234
6235 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
6236
6237         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Replace the
6238         nop code by patching the call address to point to the nullified class init
6239         trampoline, as the former does not seem to be safe on SMP machines.
6240
6241 2009-02-23  Mark Probst  <mark.probst@gmail.com>
6242
6243         * mini-ops.h: Fix the argument types for a few x86 opcodes where
6244         they were wrong.
6245
6246 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
6247
6248         * basic-float.cs basic-calls.cs: Fix warnings.
6249
6250 2009-02-22  Mark Probst  <mark.probst@gmail.com>
6251
6252         * tramp-ppc.c (mono_arch_create_trampoline_code): Store the
6253         correct frame pointer in the LMF.  Should fix #478394.
6254
6255 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
6256
6257         * Makefile.am (fullaotcheck): Copy Mono.Simd.dll as well.
6258
6259         * image-writer.c: Make the binary writer less verbose.
6260
6261 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
6262
6263         * method-to-ir.c (mono_method_to_ir): Don't assert if string ctors
6264         are called from runtime invoke wrappers.
6265
6266 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
6267
6268         * cpu-ppc.md (store_memindex): Increase the size of this.
6269
6270 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6271
6272         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6273
6274         * cpu-x86.md: Fix the sizes for long_conv_to_r_un and long_conv_to_r_un_2.
6275
6276         * mini-x86.c (mono_arch_output_basic_block): Use only 64bits of precision for
6277         OP_LCONV_TO_R_UN.
6278
6279         Last fix for of #467201.
6280
6281
6282 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6283
6284         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6285
6286         * cpu-x86.md: Fix the sizes for fcall(_reg,_membase), long_conv_to_r4_2
6287         and long_conv_to_r8_2:
6288
6289         Fixed part of #467201.
6290
6291 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6292
6293         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6294
6295         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of int to float
6296         conversion to 32 bits.
6297
6298         * cpu-x86.md: Increase the size of int_conv_to_r4.
6299
6300         * basic-float.cs: Add a test for this.
6301
6302         Fixed part of #467201.
6303
6304 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6305
6306         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6307
6308         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of long to double
6309         conversion to 64 bits.
6310
6311         * basic-float.cs: Add a test for this.
6312
6313         Fixed part of #467201.
6314
6315 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6316
6317         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6318
6319         * mini-x86.c (emit_move_return_value): Don't reduce precision of functions returning float.
6320         This behavior is compatible with MS.
6321
6322         * iltest.il.in: Add a test for this.
6323
6324         Fixed part of #467201.
6325
6326 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6327
6328         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6329
6330         * mini-x86.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_R4, it must
6331         change the precision of the value.
6332
6333         * cpu-x86.md: Define len for float_conv_to_r4.
6334
6335         * basic-float.cs: Add a test for this.
6336
6337         Fixed part of #467201.
6338
6339 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
6340
6341         * mini.c: Adjust locking order to the new semantics where the loader lock
6342         comes first.
6343
6344 2009-02-18  Rodrigo Kumpera  <rkumpera@novell.com>
6345
6346         * aot-runtime.c:
6347         * mini-amd64.c:
6348         * mini-arm.c:
6349         * mini-ia64.c:
6350         * mini-mips.c:
6351         * mini-ppc.c:
6352         * mini-sparc.c:
6353         * mini-trampolines.c:
6354         * mini-x86.c:
6355         * mini.c:
6356         * tramp-alpha.c:
6357         * tramp-amd64.c:
6358         * tramp-arm.c:
6359         * tramp-hppa.c:
6360         * tramp-ia64.c:
6361         * tramp-mips.c:
6362         * tramp-ppc.c:
6363         * tramp-s390.c:
6364         * tramp-s390x.c:
6365         * tramp-sparc.c:
6366         * tramp-x86.c: Use mono_domain_code_* functions instead of using MonoDomain::code_mp directly.
6367
6368 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
6369
6370         * mini-codegen.c (mono_local_regalloc): Remove a ! from if (!dest_sreg1)
6371         as it is incorrect.
6372
6373 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
6374
6375         * aot-compiler.c (add_generic_class): Only add rgctx invoke wrappers
6376         for cctors if needed.
6377
6378 2009-02-17  Mark Probst  <mark.probst@gmail.com>
6379
6380         * mini-ppc.c: Fix build on Darwin.
6381
6382 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
6383
6384         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Use 2 as the DWARF
6385         version instead of 3 as valgrind doesn't like version 3.
6386
6387         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
6388
6389         * aot-compiler.c (mono_aot_method_hash): New function to return a hash
6390         usable for hashing methods.
6391         (emit_extra_methods): Use the new hash to avoid putting every method in the
6392         same hash bucket.
6393
6394         * aot-runtime.c (find_extra_method_in_amodule): Use the new hash.
6395
6396         * aot-runtime.c (can_method_ref_match_method): New function to quickly check
6397         whenever a method ref could match a method.
6398         
6399         * aot-runtime.c (load_image): Revert the previous change, it causes an AOT
6400         test to fail.
6401         
6402         * aot-runtime.c (find_extra_method_in_amodule): Add a cache for decoded 
6403         methods refs.
6404
6405         * aot-runtime.c (load_image): Pass our basedir to mono_assembly_load.
6406
6407         * aot-compiler.c (emit_exception_debug_info): Bump the maximum size of
6408         the encoding buffer.
6409
6410         * method-to-ir.c (mono_method_check_inlining): Avoid calling 
6411         mono_method_get_header () on inflated methods as an optimization.
6412
6413 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
6414
6415         * ssa.c (fold_ins): Fix another crash if the instruction following the
6416         switch was optimized away.
6417
6418 2009-02-16  Mark Probst  <mark.probst@gmail.com>
6419
6420         Contributed under the terms of the MIT/X11 license by Steven
6421         Munroe <munroesj@us.ibm.com>.
6422
6423         * mini-ppc.c, mini-ppc.h: Implement TLS for PPC64.
6424
6425 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
6426
6427         * mini.c method-to-ir.c mini-trampolines.c aot-runtime.c: Remove locking
6428         around the mono_domain_alloc calls, it is now done by the functions
6429         themselves.
6430
6431         * aot-compiler.c (compile_method): Only add wrappers referenced by
6432         the method if compiling with full AOT.
6433         (mono_compile_assembly): Error out if --aot=full is specified on
6434         a platform where it is not supported.
6435
6436         * aot-compiler.c (emit_trampolines): Emit generic class init trampolines
6437         on ARM too.
6438
6439         * tramp-arm.c (mono_arch_create_generic_class_init_trampoline_full): Add
6440         AOT support.
6441
6442         * aot-runtime.c (load_named_code): Handle 
6443         mono_arm_throw_exception_by_token.
6444
6445         * mini-arm.h: Add declaration of mono_arm_throw_exception_by_token.
6446
6447         * image-writer.c (asm_writer_emit_pointer_unaligned): Make this really
6448         unaligned.
6449
6450         * Makefile.am (fullaotcheck): Exit if a test fails.
6451
6452         * aot-compiler.c (mono_compile_assembly): Use the ASM writer for full aot
6453         on ARM.
6454         (mono_compile_assembly): Handle the assembler failing.
6455
6456         * image-writer.c (asm_writer_emit_section_change): Handle ARM gas not
6457         accepting subsections of .bss.
6458
6459         * ssa.c (visit_inst): Fix a crash if the instruction following a switch
6460         was optimized away.
6461
6462         * aot-compiler.c: Remove some unused includes.
6463         
6464         * aot-compiler.c (MonoAotCompile): Remove some unused fields which are
6465         now in MonoImageWriter.
6466
6467         * mini-x86.c (mono_arch_get_vcall_slot): Handle yet another
6468         code sequence which matches a non-virtual call. Fixes #472654.
6469
6470 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
6471
6472         * aot-compiler.c: Use xdebug_lock ()/unlock () macros for locking in the
6473         xdebug code.
6474         
6475         * aot-compiler.c: Make the xdebug code not depend on the AOT compiler,
6476         use the image/dwarf writers directly.
6477
6478         * image-writer.c (struct _MonoImageWriter): Remove the unused 'image'
6479         field.
6480
6481         * aot-compiler.c (MonoAotCompile): Remove fields which are now in
6482         MonoDwarfWriter.
6483
6484         * image-writer.h: Fix some typos.
6485
6486         * dwarfwriter.h dwarfwriter.c: New files.
6487         
6488         * aot-compiler.c: Extract the DWARF info writing functionality into a 
6489         separate module.
6490
6491         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add a 'out_unwind_ops'
6492         argument to return unwind info.
6493
6494         * tramp-arm.c (mono_arch_create_trampoline_code_full): Ditto.
6495
6496         * aot-compiler.c: Emit unwind info for trampolines in full-aot mode.
6497         
6498         * aot-runtime.c (decode_method_ref): Add a case for 
6499         MONO_AOT_METHODREF_WRAPPER_NAME.
6500
6501         * mini.h: Add constants for the magic numbers used in encode_method_ref ()
6502         for AOT.
6503
6504         * aot-compiler.c (encode_method_ref): Use the new constants.
6505
6506         * aot-runtime.c (decode_method_ref): Ditto.
6507
6508         * aot-compiler.c (compile_method): For generic icalls, queue the wrapper to
6509         be compiled, not the icall itself.
6510
6511 2009-02-14  Zoltan Varga  <vargaz@gmail.com>
6512
6513         * aot-runtime.c (find_extra_method_in_amodule): Avoid decoding wrapper names
6514         using decode_method_ref ().
6515
6516         * method-to-ir.c (mini_emit_ldelema_1_ins): If the array index is a long,
6517         convert it to an in32. Fixes #475859.
6518
6519         * arrays.cs: Add a test.
6520
6521 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
6522
6523         * mini-s390x.c (mono_arch_output_basic_block): Fix the shift amounts in 
6524         OP_LCONV_TO_U2.
6525
6526         * basic-long.cs: Add a test.
6527
6528 2009-02-12  Mark Probst  <mark.probst@gmail.com>
6529
6530         * mini-x86.c, mini-x86.h: Very simple frame pointer removal.  We
6531         remove the frame pointer in leaf methods which don't receive any
6532         arguments, don't throw exceptions and don't do dynamic stack
6533         allocations.
6534
6535 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
6536
6537         * mini-amd64.c (mono_arch_build_imt_thunk): Fix size calculation after
6538         the fail_tramp changes. Hopefully fixes #475132.
6539
6540 2009-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
6541
6542         * method-to-ir.c (mono_emit_method_call_full): Use mono_metadata_signature_dup_mempool
6543         instead of mono_metadata_signature_dup_full.
6544
6545 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
6546
6547         * ssa.c (fold_ins): Use MONO_IS_JUMP_TABLE () and MONO_JUMP_TABLE_FROM_INS ()
6548         for processing jump tables. Fixes #473787.
6549
6550 2009-02-11  Mark Probst  <mark.probst@gmail.com>
6551
6552         * mini-generic-sharing.c: mini_method_get_context() just calls
6553         mono_method_get_context_general() now.
6554
6555         * mini.c, mini.h: Moved get_object_generic_inst(),
6556         construct_object_context_for_method() and
6557         mono_domain_lookup_shared_generic() to metadata/generic-sharing.c.
6558
6559 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
6560
6561         * branch-opts.c (mono_if_conversion): Handle the case where the merged 
6562         basic block fell through to its successor bblock without a branch. Fixes
6563         #474718.
6564
6565         * iltests.il.in: Add a test.
6566         
6567         * aot-compiler.c (encode_method_ref): Encode methods of array types.
6568         (can_encode_patch): We can now handle arrays of generic parameters and
6569         array methods.
6570
6571         * aot-runtime.c (decode_method_ref_2): Handle methods of array types.
6572
6573         * aot-compiler.c aot-runtime.c: Emit the size of specific trampolines into
6574         the AOT file to avoid some #ifdefs in aot-runtime.c
6575
6576         * mini.h: Bump AOT file format version.
6577
6578 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
6579
6580         * Makefile.am (fullaotcheck): Make this run the tests.
6581
6582         * aot-compiler.c: Make the printing of skipped methods runtime configurable.
6583
6584 2009-02-10  Mark Probst  <mark.probst@gmail.com>
6585
6586         * mini-x86.c (mono_arch_context_get_int_reg): Handle all registers
6587         individually.  Fixes #473482.
6588
6589 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
6590
6591         * mini-arm.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
6592
6593 2009-02-09  Jeffrey Stedfast  <fejj@novell.com>
6594
6595         * aot-compiler.c (arch_emit_plt_entry): Fixed to compile.
6596         (mono_compile_assembly): Hush compile warnings about
6597         uninitialized [tmp_]outfile_name variables in the !use_bin_writer
6598         code path.
6599
6600 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
6601
6602         * exceptions-arm.c (mono_arch_find_jit_info): Fix aot support.
6603
6604         * mini-arm.c: Checkin unwind related changes missing from an earlier commit.
6605
6606         * aot-compiler.c: Fix arm support.
6607
6608         * image-writer.c: Move the R_ARM constants to image-writer.h. Export a
6609         img_writer_emit_unset_mode () function.
6610
6611         * unwind.c (mono_unwind_get_dwarf_data_align): New helper function.
6612         (mono_unwind_get_dwarf_pc_reg): Ditto.
6613
6614         * aot-compiler.c (emit_dwarf_abbrev): Another large reorganization.
6615         Move almost all platform specific code to a set of arch_ functions, 
6616         and document them to ease porting.
6617         
6618         * aot-compiler.c (mono_xdebug_init): Fix xdebug support.
6619
6620         * image-writer.h image-writer.c: New files, extracted from aot-compiler.c.
6621
6622         * aot-compiler.c: Extract the image writing functionality into a separate
6623         module to reduce the size of this file.
6624
6625 2009-02-09  Geoff Norton  <gnorton@novell.com>
6626
6627         * mini-s390.c: Fix the signature of emit_sig_cookie.
6628
6629 2009-02-09  Zoltan Varga  <vargaz@gmail.com>
6630
6631         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_IMAGE.
6632
6633         * aot-runtime.c (is_shared_got_patch): Ditto.
6634
6635         * aot-runtime.c (load_named_code): Cope with the fact that 
6636         decode_got_entry () won't decode the patch fully if its corresponding got
6637         entry is already filled.
6638         
6639         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): 
6640         Initialize *ji.
6641         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
6642
6643         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code'
6644         as the moving pointer instead of 'buf' for consistency with the rest of the
6645         codebase.
6646         (mono_arch_create_monitor_exit_trampoline): Ditto.
6647
6648         * aot-compiler.c (emit_trampolines): Add throw_pending_exception/
6649         generic_class_init trampolines.
6650         (add_generic_class): Extract some code from add_generic_instances () into a
6651         separate function so it can be called from other places too.
6652         (compile_method): Call add_generic_class () for the classes of inflated methods
6653         referenced by the method.
6654         (can_encode_patch): Allow references to generic parameters.
6655
6656         * aot-runtime.c: Add support the patches required by the new trampolines.
6657         
6658         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Add full-aot
6659         support.
6660
6661         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline_full): Add
6662         full-aot support.
6663
6664         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Rename
6665         this from get_throw_pending_exception, make the signature full aot compatible.
6666
6667         * Makefile.am (fullaotcheck): New target to run full-aot tests.
6668
6669         * method-to-ir.c (inline_method): Save/Restore cfg->ret_var_set too.
6670
6671         * exceptions.cs: Add a test.
6672
6673 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
6674
6675         * unwind.c (mono_unwind_frame): Eliminate the data_align_factor argument,
6676         use the DWARF_DATA_ALIGN constant instead.
6677
6678         * exception-<ARCH>.c: Update after the above change.
6679
6680         * exceptions-arm.c (mono_arch_find_jit_info): Transition this to use the
6681         dwarf unwinder.
6682
6683         * mini-arm.c: Enable the dwarf unwinder.
6684
6685         * mini-trampolines.c (mono_magic_trampoline): Use mono_class_get_vtable_entry ()
6686         instead of mono_class_setup_vtable ().
6687
6688 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
6689
6690         * exceptions-x86.c (mono_arch_find_jit_info): Transition this to use the
6691         dwarf unwinder.
6692
6693         * mini-x86.h: Enable the dwarf unwinder.
6694
6695 2009-02-06  Raja R Harinath  <harinath@hurrynot.org>
6696
6697         Fix mcs/tests/test-7.cs
6698         * mini-amd64.c (mono_arch_allocate_vars): Revert change from
6699         2009-02-03.
6700
6701 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
6702
6703         * mini.c (print_jit_stats): Remove some unused statistics.
6704
6705 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
6706
6707         * aot-compiler.c (emit_klass_info): Update after MonoClass changes.
6708
6709 2009-02-05  Mark Probst  <mark.probst@gmail.com>
6710
6711         * jit-icalls.c (mono_helper_compile_generic_method): Don't inflate
6712         the method we get from mono_object_get_virtual_method() because
6713         that function does it properly, now.
6714
6715 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
6716
6717         * unwind.c (mono_unwind_ops_encode): Handle offsets greater than 32 between
6718         opcodes. Fixes #472775.
6719
6720 2009-02-05  Mark Probst  <mark.probst@gmail.com>
6721
6722         * mini-exceptions.c (ves_icall_get_frame_info): Account for the
6723         fact that mono_find_jit_info() sometimes returns the context
6724         corresponding to the jit info in new_ctx.  Fixes #472600.
6725
6726 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
6727
6728         * method-to-ir.c mini-hppa.c mini.c trace.c mini-s390x.c aot-compiler.c
6729         mini-s390.c: Use mono_class_enum_basetype () instead of accessing
6730         klass->enum_basetype directly.
6731
6732         * aot-compiler.c (emit_class_dwarf_info): Add support for all possible
6733         enum subtypes.
6734
6735         * unwind.c: Avoid 0 sized arrays.
6736
6737 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
6738
6739         * mini-exceptions.c (mono_setup_altstack): Use a more reasonable altstack
6740         size on systems with 64k pages. Fixes #471389.
6741
6742 2009-02-04  Mark Probst  <mark.probst@gmail.com>
6743
6744         Contributed under the terms of the MIT/X11 license by Steven
6745         Munroe <munroesj@us.ibm.com>.
6746
6747         * mini-ppc.c (mono_arch_output_basic_block): Generate better code
6748         for LOADI4_MEMBASE.  Use addi instead of addic if it's not
6749         necessary.
6750
6751 2009-02-04  Mark Probst  <mark.probst@gmail.com>
6752
6753         Contributed under the terms of the MIT/X11 license by Steven
6754         Munroe <munroesj@us.ibm.com>.
6755
6756         * exceptions-ppc.c (mono_arch_get_restore_context): Code size
6757         comparison fix.
6758
6759         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline):
6760         The trampoline can be longer on PPC64.
6761
6762 2009-02-04  Mark Probst  <mark.probst@gmail.com>
6763
6764         Contributed under the terms of the MIT/X11 license by Steven
6765         Munroe <munroesj@us.ibm.com>.
6766
6767         * mini-ppc.c: Compiler warning fixes and trivial code
6768         simplifications.
6769
6770 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
6771
6772         * method-to-ir.c (mono_spill_global_vars): Fix problems caused by reading
6773         ins->dreg which could be a hardware register, not a vreg.
6774
6775         * aot-compiler.c (emit_method_dwarf_info): Ditto.
6776         
6777         * mini.h (MonoCompile): Remove vreg_to_var_num array, it is no longer used.
6778         (struct MonoMethodVar): Add a vreg field, holding the vreg of variable.
6779
6780         * mini.c (mono_compile_create_var_for_vreg): Set var->vreg.
6781         
6782         * mini-amd64.c (mono_arch_output_basic_block): Avoid reading cfg->varinfo[..]
6783         ->dreg, that is not the vreg we are looking for.
6784
6785         * mini-amd64.h mini-x86.h: Enable MONO_ARCH_LIVENESS_OPS again.
6786
6787         * mini-x86.c (mono_arch_output_basic_block): Add support for LIVERANGE_START/
6788         LIVERANGE_END.
6789
6790         * method-to-ir.c (mono_spill_global_vars): Add an assert to help track down
6791         strange crashes.
6792
6793 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
6794
6795         * mini-x86.c (mono_arch_emit_prolog): Emit unwind info.
6796
6797         * aot-compiler.c (emit_line_number_info): Fix line number emission when
6798         the line diff is 0.
6799
6800         * aot-compiler.c: Add xdebug support on x86.
6801
6802         * unwind.c: Add x86 support.
6803         
6804         * aot-compiler.c (emit_exception_debug_info): Control the emission of
6805         unwind info using a new MONO_ARCH_HAVE_XP_UNWIND define.
6806
6807         * mini.c (mini_method_compile): Ditto.
6808         
6809         * mini-amd64.c (mono_arch_allocate_vars): Avoid setting cfg->ret->dreg to
6810         the variable index.
6811
6812         * aot-compiler.c: Add emit_push_section ()/emit_pop_section () helper functions
6813         which mimic .push_section/.pop_section in GAS.
6814         
6815         * aot-compiler.c: Emit precise live range information for variables.
6816
6817         * mini-amd64.c (mono_arch_output_basic_block): Add OP_LIVERANGE_START/END.
6818
6819         * method-to-ir.c (mono_spill_global_vars): Compute the instructions marking
6820         the live ranges of variables, and emit OP_LIVERANGE_START/END opcodes for
6821         them.
6822
6823         * mini-ops.h: Add OP_LIVERANGE_START/END opcodes to mark
6824         the live ranges of variables.
6825
6826         * mini.h (struct MonoMethodVar): Add two fields containing the live range
6827         of the variable in terms of native offsets.
6828
6829 2009-02-03  Rodrigo Kumpera  <rkumpera@novell.com>
6830
6831         * arrays.cs: Test for Get/SetValue of array with negate lower bounds.
6832         
6833 2009-02-02  Mark Probst  <mark.probst@gmail.com>
6834
6835         Contributed under the terms of the MIT/X11 license by Steven
6836         Munroe <munroesj@us.ibm.com>.
6837
6838         * exceptions-ppc.c (restore_regs_from_context): Correct operand
6839         order (offset then base reg) for ppc_load_multiple_regs.
6840         (emit_save_saved_regs) Correct operand order for
6841         ppc_store_multiple_regs.
6842         (mono_arch_get_call_filter): Correct operand order for
6843         ppc_load_multiple_regs.
6844
6845         * mini-ppc.c (emit_memcpy): Fix operand order for
6846         ppc_load_reg_update and ppc_store_reg_update.
6847         (mono_arch_output_basic_block): Correct operand order for ppc_lha.
6848         (mono_arch_emit_epilog): Correct operand order for
6849         ppc_load_multiple_regs.
6850
6851         * tramp-ppc.c (mono_arch_create_trampoline_code): Correct operand
6852         order for ppc_store_multiple_regs and ppc_load_multiple_regs.
6853
6854 2009-02-02  Mark Probst  <mark.probst@gmail.com>
6855
6856         * cpu-ppc64.md: Fixed storer4_memindex length.
6857
6858 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
6859
6860         * aot-compiler.c (emit_line_number_info): Optimize the size of the emitted
6861         line number info.
6862         
6863         * aot-compiler.c (emit_line_number_info): Optimize this.
6864
6865 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
6866
6867         * aot-compiler.c: Disassemble tokens in the IL disassembly.
6868         
6869         * aot-compiler.c: Add debug info for methods without debug info by
6870         emitting an IL file and having the line number info referencing that file.
6871
6872         * aot-compiler.c: Optimize the size of the generated line number info.
6873
6874         * aot-compiler.c: Emit line number info in xdebug mode.
6875
6876         * aot-compiler.c (mono_save_xdebug_info): Receive a MonoCompile instead of a
6877         million arguments.
6878
6879 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
6880
6881         * aot-compiler.c (emit_method_dwarf_info): Emit names for local variables.
6882
6883         * driver.c (mono_main): Enable debugging support automatically if XDEBUG
6884         is used.
6885
6886 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
6887
6888         * basic-calls.cs: Test for the weird crash found on arm.
6889         
6890 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
6891
6892         * cpu-arm.md: Increase the size of storer8_membase_reg and
6893         loadr8_membase_reg to 24 bytes to accomodate the extra add.
6894
6895         * mini-arm.c (mono_arch_output_basic_block): Under FPA, when emitting
6896         OP_STORER8_MEMBASE_REG and OP_LOADR8_MEMBASE_REG, add the original
6897         reg to LR otherwise we'll be loading/storing from just the offset.
6898
6899 2009-01-30  Miguel de Icaza  <miguel@novell.com>
6900
6901         Question: if we are storing gint32's inside the "*native_offset",
6902         should we change the signature to "gint32 *native_offset" to
6903         ensure that we do not have type definition problems?
6904         
6905         * mini-exceptions.c (ves_icall_get_frame_info): Cast the gint32 to
6906         an int * as this is what the other function expects, causes
6907         problems with Freescale's compiler that defined int32_t to be a
6908         long and makes int incompatible 
6909
6910 2009-01-30  Miguel de Icaza  <miguel@novell.com>
6911
6912         * Rename generic-sharing.c to mini-generic-sharing.c to avoid the
6913         filename conflict with bjam.
6914
6915 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
6916
6917         * cpu-arm.md: Increase the size of storer8_membase_reg to 20 bytes
6918         as it might use decomposed ops.
6919
6920 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
6921
6922         * jit-icalls.c (mono_imul_ovf): Fix one of the literals.
6923
6924         * mini.c (mini_init): Emulate mul.ovf opcodes if MONO_ARCH_EMULATE_MUL_OVF
6925         is defined.
6926
6927         * mini-arm.h (MONO_ARCH_EMULATE_MUL_OVF): New define.
6928
6929         * mini-arm.c (mono_arch_build_imt_thunk): Rewrite this to allow large vtable
6930         offsets.
6931
6932         * mini-arm.c (mono_arch_context_get_int_reg): Adapt this to the "clever"
6933         way registers are stored in MonoContext on arm.
6934
6935         * unwind.c: Rewrite the handling of the cached_info array to use hazard pointers
6936         instead of locking so mono_get_cached_unwind_info () becomes signal safe.
6937
6938         * mini.c (mini_init): Emuate OP_FCONV_TO_I when using soft float.
6939
6940         * mini-arm.c (emit_load_volatile_arguments): Avoid an unneccesary assert.
6941
6942         * mini.c (mini_init): Register mono_isfinite.
6943
6944         * jit-icalls.c (mono_isfinite): New jit icall.
6945
6946         * method-to-ir.c (mono_decompose_soft_float): Add support for OP_CKFINITE.
6947         
6948         * exceptions-arm.c (mono_arch_find_jit_info): When unwinding using the LMF,
6949         set esp to ARMREG_FP instead of R12, since R12 stores the value of sp for
6950         the parent frame.
6951
6952 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
6953
6954         * exceptions-arm.c (mono_arch_find_jit_info): The frame layout on arm have
6955         separate frame and stack pointers, so we must use FP to find the register
6956         spill area.
6957         The FP reg is retrieved from the MonoContext::regs array.
6958
6959 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
6960
6961         * mini-arm.c (mono_arch_output_basic_block): Emit two cond ops for OP_FBGE
6962         as FPA requires it.
6963
6964 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
6965
6966         * mini-arm.c (mono_arch_emit_setret): Emit OP_FMOVE for methods that
6967         return R4 and R8 when not running under softfloat.
6968
6969         Fixes basic-calls.exe
6970
6971 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
6972
6973         * mini-arm.c: Implement some overflow opcodes.
6974
6975 2009-01-29  Miguel de Icaza  <miguel@novell.com>
6976
6977         * ssa.c: handle another alloca.h
6978
6979         * mini-exceptions.c (mono_handle_native_sigsegv): Do not use
6980         PLATFORM_WIN32 for detecting if we have sigaction.   Instead use
6981         MONO_ARCH_USE_SIGACTION. 
6982
6983         * aot-runtime.c, mini-exceptions.c: Replace platform define with
6984         capability defines.
6985
6986         * method-to-ir.c (mono_method_to_ir): Type cast fix on some platforms.
6987
6988         * mini-ppc.h (MONO_ARCH_USE_SIGACTION): Do not define this for all
6989         PPC targets as sigaction does not exist on all platforms, define
6990         this on a per-platform basis.
6991
6992         Instead of erroring out if the platform is not defined, include
6993         mini-ppc-os.h, and expect that the OS specific setting provides
6994         the required information.   
6995
6996 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
6997
6998         * aot-compiler.c: Fix --enable-minimal=aot.
6999
7000 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
7001
7002         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Fix the
7003         previous change.
7004
7005 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
7006
7007         * exceptions-arm.c: Fix warnings.
7008
7009         * tramp-arm.c aot-compiler.c unwind.h unwind.c: Implement xdebug support for
7010         ARM.
7011
7012         * mini-x86.c: Fix --enable-minimal=jit build.
7013
7014         * mini.c: Really fix --enable-minimal=jit build.
7015         
7016         * mini.c (construct_object_context_for_method): Move this outside
7017         the DISABLE_JIT block to fix the --enable-minimal=jit build.
7018
7019         "Backported" of r124984 from 2.0 branch.
7020         
7021         * aot-compiler.c aot-runtime.c: Add full-aot support delegate BeginInvoke/EndInvoke.
7022
7023         "Backport" of r124977 + r124978 from 2.0 branch.
7024         
7025         * exceptions-arm.c (mono_arm_throw_exception_by_token): New helper function
7026         to avoid calling mono_exception_from_token () from the throw trampoline.
7027         (mono_arch_get_throw_exception_generic): call throw_exception_by_token
7028         for throwing corlib exceptions, this fixes full-aot support for corlib
7029         exceptions.
7030
7031         * aot-compiler.c (compile_method): Make a copy of cfg->locals to fix the build.
7032
7033 2009-01-29  Miguel de Icaza  <miguel@novell.com>
7034
7035         * mini-darwin.c, mini-windows.c, mini-posix.c: Commit the first
7036         part of the changes to split the code in mini into operating
7037         system specific files.
7038
7039         This patch was done by copying mini.c to the respective files to
7040         preserve SVN history.
7041
7042 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
7043
7044         * aot-compiler.c (emit_method_dwarf_info): Add minimal support for locals.
7045
7046 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
7047
7048         * method-to-ir.c (mono_method_to_ir): Avoid generic sharing for calls made to
7049         remoting-invoke-with-check wrappers of shared methods.
7050
7051         * mini.c (print_jit_stats): Print out major gc count/time for libgc too.
7052
7053 2009-01-27  Mark Probst  <mark.probst@gmail.com>
7054
7055         * method-to-ir.c (emit_stloc_ir): Only apply the reg-reg move
7056         optimization if the top of stack is the last instruction in the
7057         bblock.  Otherwise it might have been used after its definition.
7058         Fixes #469742.
7059
7060 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
7061
7062         * mini-trampolines.c (mono_magic_trampoline): Print out the caller
7063         method as well when get_vcall_slot () fails to match a code sequence.
7064
7065         * mini-arm.c: Fix the android build, which doesn't have
7066         __aeabi_read_tp.
7067
7068 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
7069
7070         * mini-s390x.c: Remove a stray declaration of emit_sig_cookie () to fix
7071         the s390x build.
7072
7073 2009-01-26  Rodrigo Kumpera  <rkumpera@novell.com>
7074
7075         * unwind.c (mono_unwind_cleanup): Don't crash if cached_info is NULL.
7076
7077 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
7078
7079         * mini.c (mini_method_compile): Save the unwind info generated by the JIT
7080         and put its id into jinfo->used_regs. This is only used on amd64,
7081         which is currently the only platform generating unwind info.
7082
7083         * exceptions-amd64.c: Instead of unwinding based on a register mask, use
7084         the dwarf unwinder. This is required to correctly handle async exceptions
7085         like thread abort and stack overflows, which can happen while a method
7086         is in the middle of its prolog or epilog.
7087         
7088         * aot-runtime.c (mono_aot_get_unwind_info): New helper function to obtain
7089         the unwind info belonging to an AOTed method.
7090
7091         * aot-compiler.c aot-runtime.c: Save/Load the unwind info emitted by the JIT
7092         into cfg->unwind_ops.
7093         
7094         * unwind.c (mono_unwind_frame): Use <= instead of < for the loop exit check.
7095
7096         * mini.c (mini_init): Call mono_unwind_init ().
7097         (mini_cleanup): Call mono_unwind_cleanup ().
7098
7099         * unwind.c: Add functions for managing a set of unwind info entries, allowing
7100         unwind info to be shared between methods.
7101
7102         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info for the registers
7103         saved in the LMF.
7104
7105         * exceptions-amd64.c (mono_arch_exceptions_init): Call 
7106         get_throw_pending_exception () to avoid initialization races.
7107
7108         * mini-exceptions.c (mono_exceptions_init): Call an arch specific
7109         mono_arch_exceptions_init () function.
7110
7111         * mini.h (MONO_INST_NEW): Remove duplicate setting of cil_code.
7112
7113 2009-01-25  Zoltan Varga  <vargaz@gmail.com>
7114
7115         * mini.c (mono_get_domain_intrinsic): New helper function.
7116         (mono_get_thread_intrinsic): Ditto.
7117
7118         * mini-arm.c mini-ia64.c: Use the new helper functions.
7119         
7120         * method-to-ir.c (mono_method_to_ir): Fix the comment for
7121         the last constrained_call change, since it is needed in the non-AOT
7122         case as well.
7123
7124         * mini-arm.c: Implement OP_TLS_GET on arm eabi linux.
7125         
7126         * mini-arm.c (mono_arch_emit_prolog): Add an inlined version of 
7127         mono_get_lmf_addr () on arm eabi linux.
7128
7129 2009-01-24  Zoltan Varga  <vargaz@gmail.com>
7130
7131         * mini-amd64.c (mono_arch_get_vcall_slot): Handle yet another
7132         code sequence which matches a non-virtual call.
7133
7134 2009-01-23  Mark Probst  <mark.probst@gmail.com>
7135
7136         * mini-ppc.c (mono_arch_context_get_int_reg): Allow access to the
7137         stack pointer (r1).
7138
7139 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
7140
7141         * aot-compiler.c aot-runtime.c: Treat delegate-invoke wrappers similarly to
7142         runtime-invoke wrappers, since they are also shared based on signature.
7143
7144 2009-01-22  Mark Probst  <mark.probst@gmail.com>
7145
7146         * mini-exceptions.c (ves_icall_get_frame_info): Fetch the generic
7147         info from the (correct) context.
7148
7149 2009-01-22  Zoltan Varga  <vargaz@gmail.com>
7150
7151         * unwind.c (mono_unwind_frame): Remove a stray g_free ().
7152         
7153         * unwind.c (mono_unwind_frame): New function to unwind through a frame
7154         using dwarf unwinding info. Not yet used.
7155
7156         * mini.c (mini_init): When using xdebug, disable freeing of domains.
7157
7158 2009-01-21  Mark Probst  <mark.probst@gmail.com>
7159
7160         * mini-ppc.c (mono_arch_delegate_invoke_impl): Return function
7161         descriptors.
7162
7163         * mini-trampolines.c (mono_delegate_trampoline): Remove the PPC64
7164         special case and handle mono_arch_delegate_invoke_impl() returning
7165         function descriptors.
7166
7167         * tramp-ppc.c (mono_arch_create_trampoline_code): Delegate
7168         trampolines return function descriptors, too.
7169
7170 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
7171
7172         * method-to-ir.c (handle_alloc): Avoid generic instances in the
7173         out_of_line optimization.
7174
7175 2009-01-21  Martin Baulig  <martin@ximian.com>
7176
7177         * mini.h
7178         (MonoCompile): Added `disable_deadce_vars' to disable removing
7179         unused variables.
7180
7181         * mini.c
7182         (mini_method_compile): Set `cfg->disable_deadce_vars' when running
7183         inside the debugger.
7184
7185         * liveness.c (mono_analyze_liveness): Don't remove any unused
7186         variables if `cfg->disable_deadce_vars' is set.
7187
7188 2009-01-21  Mark Probst  <mark.probst@gmail.com>
7189
7190         * method-to-ir.c: Only apply exception constructor optimization if
7191         the the method actually belongs to an exception class.  Fixes
7192         #467456.
7193
7194 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
7195
7196         * mini-trampolines.c (mono_delegate_trampoline): Put back the previous
7197         change inside a #ifdef __mono_ppc64__.
7198
7199         * aot-compiler.c (compile_method): Remove the previous limitation.
7200
7201         * method-to-ir.c (method-to-ir.c): Add support for the constrained prefix
7202         on type variables in AOTed code.
7203         
7204         * aot-compiler.c (compile_method): Skip generic methods having type 
7205         constraints on their generic parameters.
7206
7207         * aot-compiler.c (compile_method): Check for methods which cannot be
7208         encoded inside RGCTX_FETCH patches as well.
7209
7210         * mini-exceptions.c (mono_print_thread_dump): Fix the windows
7211         build.
7212
7213 2009-01-20  Mark Probst  <mark.probst@gmail.com>
7214
7215         * method-to-ir.c: Force the vtable variable in shared generic code
7216         for the case that they might show up on a stack trace where they
7217         are needed.
7218
7219         * mini-exceptions.c: Save and use generic sharing info as well as
7220         IP in stack traces to resolve shared generic instantiations.
7221
7222 2009-01-20  Zoltan Varga  <vargaz@gmail.com>
7223
7224         * mini-trampolines.c (mono_delegate_trampoline): Revert the change which
7225         added a mono_get_addr_from_ftnptr () as it breaks the ia64 build.
7226
7227 2009-01-20  Mark Probst  <mark.probst@gmail.com>
7228
7229         * method-to-ir.c: Do generic sharing for array constructors.
7230
7231 2009-01-20  Rodrigo Kumpera  <rkumpera@novell.com>
7232
7233         * mini-exceptions.c (mono_print_thread_dump): Add information
7234         about the thread state using wapi_current_thread_desc.
7235
7236 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
7237
7238         * basic-simd.cs: Tests for the new constructors. 
7239
7240 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
7241
7242         * mini-ops.h: Added OP_EXPAND_*
7243
7244         * cpu-x86.md: Same.
7245
7246         * mini-x86.c (mono_arch_output_basic_block): Same.
7247         
7248         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for single element constructors.
7249
7250 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
7251
7252         * iltests.il.in: Add a test for #467385.
7253
7254 2009-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
7255
7256         * mini.c (mini_thread_cleanup): Don't cleanup TLS storage if the
7257         thread been cleaned up is not the same currently in execution.
7258
7259         Fixes appdomain-unload crashes on windows, osx and linux variants
7260         without the __thread keyword.
7261
7262 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
7263
7264         * mini-arm.c (mono_arch_flush_icache): Applied patch from Koushik Dutta
7265         (koush@koushikdutta.com). Implement this for android.
7266
7267         * helpers.c (mono_disassemble_code): Avoid assembler errors if the id
7268         begins with a digit.
7269
7270         * method-to-ir.c: Call mono_gc_get_write_barrier () instead of
7271         mono_marshal_get_write_barrier ().
7272
7273 2009-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
7274
7275         * decompose.c (mono_decompose_vtype_opts): Fix the decomposition
7276         of OP_VCALL_* ops for 8 bytes vtypes on 32 bits archs and platorms
7277         that pass them on a register pair.
7278
7279         This affects windows, OSX and FreeBSD. The mono/tests/handleref.exe
7280         test was crashing due to that.
7281
7282 Fri Jan 16 15:21:21 CET 2009 Paolo Molaro <lupus@ximian.com>
7283
7284         * exceptions-ppc.c: tweaks from malc (OV-Soft) to fix the size of the
7285         trampoline code. Include ucontext.h only if available.
7286
7287 2009-01-15  Mark Probst  <mark.probst@gmail.com>
7288
7289         * mini.c: mono_domain_lookup_shared_generic() takes an open method
7290         and doesn't check whether it's sharable, like it was before
7291         removing the shared generics hash.  This brings IronPython
7292         performance back to what it was before that change.
7293
7294 2009-01-14  Mark Probst  <mark.probst@gmail.com>
7295
7296         * method-to-ir.c: Handle delegate invocation optimization earlier,
7297         otherwise it would be handled (much more slowly) by the
7298         final/sealed optimization.
7299
7300 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
7301
7302         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes when the current thread or
7303         domain is not set. Fixes #465864.
7304
7305 2009-01-12  Mark Probst  <mark.probst@gmail.com>
7306
7307         * method-to-ir.c: Don't stop sharing of generic methods with catch
7308         clauses - we already handle those.
7309
7310 2009-01-12  Mark Probst  <mark.probst@gmail.com>
7311
7312         * mini.c, mini.h: lookup_generic_method() is now
7313         mono_domain_lookup_shared_generic() and uses the jit_code_hash,
7314         making the shared_generics_hash obsolete.
7315
7316 2009-01-12  Mark Probst  <mark.probst@gmail.com>
7317
7318         * mini-ppc.c, exceptions-ppc.c, cpu-ppc.md, cpu-ppc64.md: Don't
7319         use the red zone.  Make room on the stack first and then use it,
7320         not the other way around.
7321
7322 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
7323
7324         * mini.c (mini_init): Call mono_xdebug_init ().
7325
7326         * aot-compiler.c (mono_xdebug_init): Make this non-static.
7327
7328 2009-01-11  Zoltan Varga  <vargaz@gmail.com>
7329
7330         * TestDriver.cs: Add an --iter argument to run tests multiple times.
7331
7332         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Emit debug info for
7333         trampolines.
7334
7335         * aot-compiler.c (mono_save_trampoline_xdebug_info): New function to emit
7336         debug+unwind info for trampolines.
7337
7338         * mini.c (mono_create_unwind_op): New helper function.
7339
7340         * unwind.h: Add macros for emitting unwind ops without a MonoCompile.
7341
7342 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
7343
7344         * aot-compiler.c: Fix the build.
7345
7346 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
7347
7348         * Makefile.am: Update dtrace-prelink.sh location.
7349
7350 2009-01-08  Zoltan Varga  <vargaz@gmail.com>
7351
7352         * method-to-ir.c (mono_method_to_ir): Fix the check for the mscorlib ldstr 
7353         optimization. Fixes #464520.
7354
7355 2009-01-07  Bill Holmes  <billholmes54@gmail.com>
7356
7357         * mini-amd64.c : Adding code to save/restore non-volatile registers
7358            on Winx64.
7359
7360         * exceptions-amd64.c : Adding code to save/restore non-volatile 
7361           registers on Winx64.
7362
7363         Contributed under MIT/X11 license.
7364
7365 2009-01-07  Zoltan Varga  <vargaz@gmail.com>
7366
7367         * mini-arm.c (mono_arch_flush_icache): Use __GNUC_PREREQ instead of checking
7368         __GNUC_MINOR__ which can break when the major version changes.
7369
7370 2009-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
7371
7372         * basic-simd.cs: Add tests for usage of the sizeof opcode.
7373
7374 2009-01-07  Geoff Norton  <gnorton@novell.com>
7375
7376         * helpers.c:  Allow mono -v -v -v to work on darwin.
7377
7378 2009-01-05  Bill Holmes  <billholmes54@gmail.com>
7379
7380         * mini-amd64.c (mono_arch_get_vcall_slot) : Handle an additional instruction
7381           pattern. 
7382
7383         Contributed under MIT/X11 license.
7384
7385 2009-01-05  Zoltan Varga  <vargaz@gmail.com>
7386
7387         * mini.c (mono_allocate_stack_slots_full2): Use mono_class_from_mono_type
7388         instead of directly accessing type->data.klass. Fixes #462016.
7389         (mono_allocate_stack_slots_full): Ditto.
7390
7391         * mini-arm.c (mono_arch_flush_icache): Applied patch from Riku Voipio 
7392         <novell@kos.to>. Fix cache flush on kernels without OLDABI compat option.
7393
7394         * aot-compiler.c (emit_plt): Fix ARM build.
7395
7396 2009-01-04  Zoltan Varga  <vargaz@gmail.com>
7397
7398         * branch-opts.c (mono_if_conversion): Optimize this using ins->prev.
7399         
7400         * branch-opts.c (mono_if_conversion): Fix an assert introduced by the last
7401         change.
7402
7403         * branch-opts.c (mono_if_conversion): Use branch->inst_true_bb/inst_false_bb
7404         instead of bblock->out_bb [0]/[1], the two might not be the same. Fixes
7405         #463357.
7406
7407         * iltests.il.in: Add a regression test.
7408
7409 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7410
7411         * mini-codegen.c (mono_print_ins_index): Pretty print XPHI and VPHI.
7412
7413 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7414
7415         * basic-simd.cs: Add a regression test for #462457.
7416
7417 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7418
7419         * mini-ops.h: Add a definition of XPHI.
7420
7421         * mini.h (MONO_IS_PHI): Make is aware of simd instrincs. 
7422
7423         * ssa.c (op_phi_to_move): Handle XPHI.
7424
7425         * ssa.c (mono_ssa_compute): Generate a XPHI for simd intrinsics instead of VPHI.
7426
7427         Fixes #462457
7428
7429 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7430
7431         * method-to-ir.c (mono_emit_rgctx_calli): Fix a warning.
7432
7433 2008-12-31  Geoff Norton  <gnorton@novell.com>
7434
7435         * mini-ppc.c: The prolog size allocated can be too small for darwin
7436         ppc32 under certain circumstances.  Also fix a small logic bug.
7437
7438 2008-12-29  Zoltan Varga  <vargaz@gmail.com>
7439
7440         * mini.c (mono_jit_compile_method_inner): Avoid holding the domain lock
7441         while loading AOT methods.
7442
7443         * mini-exceptions.c: Check jit_tls->class_cast_from instead of class_cast_to
7444         since only the former is nulled out after a successful cast. This prevents
7445         crashes with rethrown exceptions when using --debug=casts.
7446
7447 2008-12-24  Mark Probst  <mark.probst@gmail.com>
7448
7449         * mini.h: New macro for checking whether a method is final,
7450         i.e. whether the method or its class is marked final.
7451
7452         * method-to-ir.c: Use the new macro for all final-checks
7453         consistently.  Fixes the crash in the System.ServiceModel tests.
7454
7455 2008-12-23  Mark Probst  <mark.probst@gmail.com>
7456
7457         * mini-exceptions.c (get_exception_catch_class): Corrected another
7458         overly strict assertion.
7459
7460 2008-12-23  Mark Probst  <mark.probst@gmail.com>
7461
7462         * mini-ppc.c (mono_arch_build_imt_thunk): Save and restore r11.
7463         Clobbering it is not allowed because the caller might use it as
7464         the vtable register in the interface call.
7465
7466 2008-12-19  Mark Probst  <mark.probst@gmail.com>
7467
7468         * mini-exceptions.c (get_exception_catch_class): Corrected an
7469         overly strict assertion.
7470
7471 2008-12-18  Mark Mason  <mmason@upwardaccess.com>
7472         
7473         * method-to-ir.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P or sizeof(gpointer) when appropriate.
7474
7475         * mini.h: Move typedef to mgreg_t up above include of mini-arch.h
7476
7477         * local-propogation.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P when appropriate
7478
7479         * cpu-mips.md: correct lengths for certain long_ opcodes.
7480
7481         * mini-mips.h: Only emulate long operations when SIZEOF_REGISTER==4. Add missing func decl.
7482
7483         * 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().
7484         
7485 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
7486
7487         * exceptions-mips.c (mono_arch_find_jit_info): decode sd instructions as well when looking for registers.
7488         
7489 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
7490         
7491         * mini-mips.c (mono_arch_output_basic_block): OP_JUMP_TABLE stores patch type in inst_c1, not inst_i1.
7492         
7493 2008-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
7494
7495         * branch-opts.c (remove_block_if_useless): Even if BB0 falls through, don't add a br to the
7496         next basic block.
7497         
7498 2008-12-16  Mark Mason  <mmason@upwardaccess.com>
7499
7500         * 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
7501
7502         * 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)
7503         
7504 2008-12-15  Mark Mason  <mmason@upwardaccess.com>
7505         
7506         * trace.c (mono_trace_enter_method): correctly handle arguments smaller than the stack slot size on big endian systems.
7507         
7508 2008-12-14  Zoltan Varga  <vargaz@gmail.com>
7509
7510         * liveness.c (mono_analyze_liveness): Avoid eliminating the 'this' var in
7511         gshared code. Fixes #458947.
7512
7513         * generics.cs: Add a test.
7514
7515 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
7516         
7517         * method-to-ir.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7518         
7519         * mini-mips.c: first pass n32 code generation.
7520
7521         * mini-mips.h: datatypes and defines for n32 support.
7522
7523         * exceptions-mips.c: first pass n32 code generation.
7524         
7525         * tramp-mips.c: first pass n32 code generation.
7526         
7527         * cpu-mips.md: add long_ opcodes.
7528         
7529 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
7530
7531         * liveness.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7532
7533         * cfold.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7534         
7535         * local-propogation.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7536         
7537         * regalloc2.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7538
7539         * mini.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7540
7541         * mini-codegen.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7542
7543         * ssa.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7544
7545         * decompose.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7546
7547         * helpers.c: for mips/n32, don't pass -mips32 to objdump
7548
7549 2008-12-12  Zoltan Varga  <vargaz@gmail.com>
7550
7551         * mini-arm.c tramp-arm.c: Fix calls to mono_arch_flush_icache.
7552
7553 2008-12-12  Andres G. Aragoneses  <aaragoneses@novell.com>
7554
7555         * driver.c: Sync --help-trace with man page (EXPR,EXPR).
7556
7557 2008-12-12  Mark Probst  <mark.probst@gmail.com>
7558
7559         * mini-ppc.h, exceptions-ppc.c, tramp-ppc.c: Create function
7560         descriptors for helper functions directly in front of the code.
7561
7562 2008-12-11  Mark Probst  <mark.probst@gmail.com>
7563
7564         * method-to-ir.c: Removed an unnecessary assertion.
7565
7566 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
7567
7568         * method-to-ir.c: Merge SGEN changes from the old JIT.
7569
7570 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
7571
7572         * driver.c (compile_all_methods_thread_main): Handle failure of
7573         mono_get_method ().
7574
7575 2008-12-10  Mark Probst  <mark.probst@gmail.com>
7576
7577         * mini-ppc.c: Merged with mini-ppc64.c.
7578
7579         * mini-ppc.h: Define PPC_MINIMAL_PARAM_AREA_SIZE on all targets.
7580
7581         * Makefile.am: Use the same sources for PPC and PPC64.
7582
7583         * mini-ppc64.c: Removed.
7584
7585 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
7586
7587         * branch-opts.c (remove_block_if_useless): Extract fall through detection
7588         code to mono_bb_is_fall_through.
7589         
7590         * branch-opts.c (mono_remove_critical_edges): Same.
7591
7592 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
7593
7594         * ssa.c (fold_ins): branch opt can kill dummy switch ops so we can't
7595         expect that an OP_BR_REG will be there.
7596
7597 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
7598
7599         * branch-opts.c (remove_block_if_useless): Use MONO_IS_BRANCH_OP instead of checking
7600         for the many branch ops. The original check miss OP_BR_REG.
7601
7602         Fixes #457574.
7603         
7604 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
7605
7606         * mini-mips.h mini-mips.c exceptions-mips.c tramp-mips.c: first round of changes necessary to eventually support n32.
7607
7608 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
7609
7610         * aot-runtime.c (load_method): Avoid calling decode_exception_debug_info
7611         while holding the aot lock.
7612
7613 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
7614
7615         * mini-mips.c (mono_arch_output_basic_block): use mfc1/lwc1 instead of mfc1d/ldc1
7616         
7617 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
7618
7619         * mini.c (mini_cleanup) : Adding a call to cominterop_release_all_rcws 
7620           to release all runtime callable wrappers held by the runtime.
7621
7622         Contributed under MIT/X11 license.
7623
7624 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
7625
7626         * tramp-amd64.c (mono_arch_create_trampoline_code_full) : Increase the code size for
7627           for Winx64.
7628
7629         Contributed under MIT/X11 license.
7630
7631 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
7632
7633         * aot-runtime.c (decode_exception_debug_info): Acquire the domain
7634         lock when calling mono_domain_alloc (). Hopefully fixes #415608.
7635
7636 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
7637
7638         * cpu-mips.md: fix ckfinite length
7639
7640         * mini-mips.c: at least recognize n32 ABI when used (not yet supported)
7641         (mono_arch_lowering_pass): cleanup, rearrange for clarity
7642         (mono_arch_output_basic_block): implement OP_CKFINITE, add more asserts
7643         
7644 2008-12-08  Mark Mason   <mmason@upwardaccess.com>
7645
7646         * exceptions-mips.c (mono_arch_find_jit_info): init new_ctx with ctx, dont' call setup_context.
7647         
7648 2008-12-08  Geoff Norton  <gnorton@novell.com>
7649
7650         * tramp-amd64.c: r120895 stores RAX, so we need to increase the window
7651         size by 8 bytes as well.
7652
7653 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7654
7655         * basic-simd.cs: Fix method names for Vector16b.
7656         
7657 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7658
7659         * basic-simd.cs: Fix method names for Vector16sb.
7660
7661 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7662
7663         * basic-simd.cs: Fix method names for Vector8us.
7664         
7665 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7666
7667         * basic-simd.cs: Fix method names for Vector8s.
7668         
7669 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7670
7671         * basic-simd.cs: Fix method names for Vector4ui.
7672
7673 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7674
7675         * basic-simd.cs: Fix method names for Vector2l.
7676
7677 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7678
7679         * basic-simd.cs: Fix method names for Vector2d.
7680
7681 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7682
7683         * simd-intrinsics.c (mono_emit_simd_intrinsics): Add support for intrinsics
7684         that are extension methods.
7685
7686 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7687
7688         * basic-simd.cs: Fix method names for Vector4f.
7689
7690 2008-12-08  Zoltan Varga  <vargaz@gmail.com>
7691
7692         * mini-exceptions.c (mono_print_thread_dump): Mark threadpool threads
7693         as such. Fixes #456669.
7694
7695 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
7696
7697         * mini-mips.c (mono_arch_emit_call): narrow float arguments when passing as args.
7698         
7699 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
7700
7701         * mini-mips.c (mono_arch_lowering_pass): don't handle OP_ICONV_TO_R* or OP_R*CONST
7702         (mono_arch_emit_setret): use OP_MIPS_CVTSD to return SP floats
7703         (mono_arch_output_basic_block): simplify FP load/store, handle OP_MIPS_FBLT_UN
7704         (mips_adjust_stackframe): handle FP spills
7705                 
7706         * mini-ops.h: add mips_mtc1_s2
7707         
7708         * cpu-mips.md: add mips_mtc1_s2
7709         
7710 2008-12-07  Zoltan Varga  <vargaz@gmail.com>
7711
7712         * unwind.c: New file, move the unwind info encoding functions here from
7713         aot-compiler.c, so they could be used at runtime too.
7714
7715 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
7716
7717         * mini-mips.c (mono_arch_lowering_pass): handle OP_IMUL_IMM as well
7718         (mono_arch_output_basic_block): fix OP_LOCALLOC code generation
7719         
7720 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
7721
7722         * mini-mips.c: cleanup warnings
7723         (mono_arch_lowering_pass): handle OP_LOCALLOC_IMM
7724         (mips_adjust_stackframe): handle case of taking the address of stack locals
7725         
7726 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
7727
7728         * aot-compiler.c: Implement a few functions missing from the asm writer.
7729         (emit_method_code): Only write symbols for methods when using the bin
7730         writer, since the assembler can't deal with the characters in our method
7731         names.
7732
7733         * aot-compiler.c (is_plt_patch): ICALL_ADDR is also a plt patch.
7734
7735         * method-to-ir.c (mono_method_to_ir): Transform aotconst+calli into a direct
7736         call.
7737
7738         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Rework the code
7739         a bit to also restore %rax.
7740
7741 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7742
7743         * mini-ppc.c: Some simple merges from mini-ppc64.c.
7744
7745 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
7746
7747         * ssa.c (mono_ssa_compute): Only add an implicit reference at start for
7748         arguments.
7749
7750 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7751
7752         * exceptions-ppc.c: Merged with exceptions-ppc64.c.
7753
7754         * mini-ppc.c, mini-ppc.h: Remove PPC_STACK_ALIGNMENT and use
7755         MONO_ARCH_FRAME_ALIGNMENT.  Struct for PPC64 function descriptors.
7756
7757         * exceptions-ppc64.c: Removed.
7758
7759         * Makefile.am: Use exceptions-ppc.c instead of exceptions-ppc64.c.
7760
7761 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7762
7763         * tramp-ppc.c, mini-ppc.c, mini-ppc.h: Merged tramp-ppc.c with
7764         tramp-ppc64.c.
7765
7766         * Makefile.am: Use tramp-ppc.c instead of tramp-ppc64.c.
7767
7768         * tramp-ppc64.c: Removed.
7769
7770 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
7771
7772         * aot-compiler.c (add_generic_instances): Skip non-generic classes in
7773         the TYPESPEC table.
7774
7775 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7776
7777         * mini-ppc.h: Merged mini-ppc64.h with mini-ppc.h.
7778
7779         * exceptions-ppc64.c, tramp-ppc64.c, mini-arch.h, Makefile.am: Use
7780         mini-ppc.h instead of mini-ppc64.h.
7781
7782         * mini-ppc64.h: Removed.
7783
7784 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7785
7786         * mini-mips.c: introduce USE_LDC_SDC: use ldc1/sdc1 to load/store doubles, disabled by default
7787         
7788         * mini-mips.c (mono_arch_emit_outarg_vt): fix offset calculation for memcpy in structure passing.
7789         
7790 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7791
7792         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c:
7793         Removed FIRST/LAST_[GF]REG macros, to make merging PPC64 with PPC
7794         code easier.
7795
7796 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
7797
7798         * basic-simd.cs: Tests for operator == and != on  Vector8us and Vector16b.
7799
7800 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
7801
7802         * simd-intrinsics.c: Add support for operator == and != to Vector8(u)s and Vector16(s)b.
7803
7804 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
7805
7806         * basic-simd.cs: Tests for operator == and != on Vector4f.
7807
7808 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
7809
7810         * simd-intrinsics.c (simd_intrinsic_emit_equality): Adapt to support Vector4f.
7811
7812         * simd-intrinsics.c: Kill useless enum.
7813
7814 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7815
7816         * cpu-mips.md: add long_conv_to_ovf_i4_2
7817         * mini-mips.c: update/add various _OVF_ opcodes to fix test failures
7818
7819 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7820
7821         * mini-mips.c: ifdef protect automatic promotions of R4 to R8.
7822         
7823         * mini-mips.c (mono_arch_emit_setret): handle R4 case with FCONV_TO_R4 instead of FMOVE
7824
7825 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7826
7827         * mini-mips.c (mono_arch_output_basic_block): fix codegen for OP_OR_IMM/OP_IOR_IMM
7828         
7829 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
7830
7831         * basic-simd.cs: Add tests for new methods.
7832
7833 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
7834
7835         * simd-intrinsics.c: Add support for operator == and !=
7836         on Vector4(u)i.
7837
7838         * simd-methods.h: Add SN_op_Inequality and SN_op_Equality.
7839
7840 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
7841
7842         * simd-intrinsics.c: Remove ExtractByteMask intrinsics.
7843
7844 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
7845
7846         * aot-compiler.c (add_wrappers): Add pinvoke wrappers.
7847
7848         * mini.c (mono_resolve_patch_target): Allow pinvoke methods in 
7849         MONO_PATCH_INFO_ICALL_ADDR.
7850
7851         * aot-runtime.c (MonoAotFileInfo): Correct order of fields.
7852
7853         * aot-compiler.c: Resurrect full-aot support.
7854
7855 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7856
7857         * mini-mips.c (mono_arch_lowering_pass): handle OP_COMPARE and OP_ICOMPARE
7858         
7859 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7860
7861         * mini-mips.c (mono_arch_output_basic_block): fix OP_IREM_UN code generation
7862         
7863 2008-12-03  Rodrigo Kumpera  <rkumpera@novell.com>
7864
7865         * basic-simd.cs: Fix tests to work under ppc.
7866         Remove tests for methods that will be removed.
7867
7868 2008-12-03  Mark Probst  <mark.probst@gmail.com>
7869
7870         * method-to-ir.c (mono_method_to_ir): Handle ldtoken of an open
7871         generic type (via a typedef or typeref) correctly.
7872
7873 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
7874
7875         * mini-trampolines.c (mono_magic_trampoline): Add some debugging code to help
7876         diagnose an assertion failure.
7877
7878 2008-12-02  Mark Probst  <mark.probst@gmail.com>
7879
7880         * tramp-ppc64.c (mono_arch_create_rgctx_lazy_fetch_trampoline):
7881         Fix trampoline size.
7882
7883         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: A few floating point
7884         conversion opcodes are implemented natively instead via emulation.
7885
7886 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
7887
7888         * cpu-mips.md: remove mips_xori
7889
7890         * mini-ops.h:  remove mips_xori
7891
7892         * mini-mips.h: replace OP_MIPS_XORI with OP_IXOR
7893
7894         * mini-mips.c (mono_arch_decompose_long_opts): Add ladd_imm, lsub, lsub_imm, lneg, lsub_ovf, lsub_ovf_un.
7895         
7896         * mini-mips.c (mono_arch_lowering_pass, mono_arch_output_basic_block): fix IXOR handling
7897         
7898 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
7899
7900         * cpu-mips.md: fix instruction lengths.
7901
7902         * mini-mips.h: define MONO_ARCH_NO_IOV_CHECK
7903
7904         * mini-mips.c: move most instruction rewriting into decompose_ops. Implement conditional branches and exceptions. Fix jump table patch handling. Implement add/sub OVF.
7905
7906         * mini-ops.h: fix slti / sltiu op profiles.
7907         
7908 2008-12-02  Martin Baulig  <martin@ximian.com>
7909
7910         * method-to-ir.c (mono_method_to_ir): Disable debugging
7911         information for the init locals block to make the debugger stop
7912         after all locals have been initalized.
7913
7914 2008-12-02  Martin Baulig  <martin@ximian.com>
7915
7916         * mini.c (mini_method_compile): Disable MONO_OPT_DEADCE when
7917         running inside the debugger.
7918
7919 2008-12-01  Zoltan Varga  <vargaz@gmail.com>
7920
7921         * mini.c (mini_method_compile): Only run local deadce if MONO_OPT_DEADCE
7922         is enabled.
7923
7924         * method-to-ir.c (mono_method_to_ir): Fix invalid code generated by the 
7925         alu->alu imm optimization which only shows if deadce is disabled.
7926
7927         * aot-compiler.c: Rename the function names for the binary and asm writers
7928         so they can coexist in the same process. Rework the xdebug code to use the
7929         asm writer. This avoids the need to call into the runtime to dump the
7930         debugging info. Add more debugging info for types.
7931
7932         * mini-<ARCH>.h: Kill MONO_ARCH_HAVE_NORMALIZE_OPCODES define.
7933
7934         * genmdesc.c genmdesc.pl mini.h: Don't put the CEE_ opcodes into the
7935         cpu description tables, they can't occur in cpu-<ARCH>.md.
7936
7937         * method-to-ir.c (mono_method_to_ir): Set the type of the value pushed on
7938         the stack in CEE_LDFLDA. Fixes #450542.
7939
7940         * generics.cs: Add a new test.
7941
7942 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
7943
7944         * mini-ops.h: updated MIPS opcodes
7945         * mini-mips.c: decompose long opts
7946         * mini-mips.h: decompose long opts
7947         
7948 2008-11-29  Mark Mason   <mmason@upwardaccess.com>
7949
7950         * cpu-mips.md: fix length on int_rem_un
7951         * mini-mips.c (mips_stackframe_adjust): fix insertion of spillvars region in MIPS stackframes.
7952         
7953 2008-11-29  Zoltan Varga  <vargaz@gmail.com>
7954
7955         * mini.h aot-runtime.c: Fix building with DISABLE_AOT.
7956
7957         * mini-codegen.c (mono_print_ins_index): Handle OP_VOIDCALL_MEMBASE.
7958
7959 2008-11-29  Martin Baulig  <martin@ximian.com>
7960
7961         * mini-exceptions.c (mono_handle_native_sigsegv): Check
7962         mono_debug_using_mono_debugger() in addition to the
7963         `no_gdb_backtrace' flag in the `MonoDebugOptions'.
7964
7965 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
7966
7967         * mini-ops.h: updated more MIPS opcodes
7968         * mini-mips.c: FP compare/branch working again, clean up last of CEE_ -> OP_ mappings
7969         * cpu-mips.md: Added MIPS versions of new FP compare/branch opcodes.
7970         
7971 2008-11-28  Mark Probst  <mark.probst@gmail.com>
7972
7973         * mini-ppc64.c: Patch the RGCTX fetch trampoline correctly.
7974
7975 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
7976
7977         * mini-mips.c (mono_arch_emit_call): adding missing conversion to fp single when passing in integer arg register.
7978         * mini-mips.c (mips_adjust_stackframe): compensate for spill-down logic.
7979         * mini-ops.h: correct selected mips opcode entries
7980         
7981 2008-11-28  Mark Probst  <mark.probst@gmail.com>
7982
7983         * mini-ppc64.c, mini-ppc64.h: Enable generalized IMT thunks and
7984         make them work.
7985
7986 2008-11-28  Mark Probst  <mark.probst@gmail.com>
7987
7988         * mini-ppc64.h, tramp-ppc64.c: Make generic code sharing work.
7989
7990 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
7991
7992         * method-to-ir.c, mini-trampolines.c: protect IMG code with #ifdef MONO_ARCH_HAVE_IMT to fix compile errors.
7993         * mini-mips.c: Fixup stackframe assignments after allocation of spillvars.
7994         * mini-mips.h: disable IMT
7995         * tramp-mips.c (mono_arch_get_vcall_slot): fix offset extraction
7996         
7997 2008-11-28  Mark Probst  <mark.probst@gmail.com>
7998
7999         * mini-ppc64.c, mini-ppc64.h: Don't emulate long ops.
8000
8001 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8002
8003         * mini-ppc64.c, exceptions-ppc64.c: Several fixes.
8004
8005 2008-11-28  Zoltan Varga  <vargaz@gmail.com>
8006
8007         * method-to-ir.c (handle_isinst): Use PCONST instead of ICONST for
8008         consistency.
8009
8010 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
8011
8012         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
8013         for Set/GetVector aligned versions.
8014
8015 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
8016
8017         * basic-simd.cs: Add tests for Get/SetVector.
8018
8019 2008-11-27  Mark Probst  <mark.probst@gmail.com>
8020
8021         * mini.c: Removed g_slist_append_mempool().  Now in
8022         metadata/mempool.c.
8023
8024 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
8025
8026         * simd-intrinsics.c (mono_emit_vector_ldelema): Extract the element
8027         size properly and make the bounds check optional.
8028
8029         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
8030         for SetVector and IsAligned.
8031
8032 2008-11-27  Zoltan Varga  <vargaz@gmail.com>
8033
8034         * mini.c: Remove unused mono_normalize_opcodes () function.
8035
8036 2008-11-26  Mark Probst  <mark.probst@gmail.com>
8037
8038         * method-to-ir.c (mini_emit_inst_for_method): Small fix: we're
8039         using the new atomic add ops now.
8040
8041         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Implemented atomic
8042         add.
8043
8044 2008-11-26  Mark Probst  <mark.probst@gmail.com>
8045
8046         * mini-ppc64.c: Several fixes.
8047
8048 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8049
8050         * cpu-mips.md: added jump_table
8051         * mini-mips.c: added jump_table. Eliminate compare-imm when lowering. Remove dead function.             
8052
8053 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8054
8055         * mini-mips.c, mini-mips.h, tramp-mips.c, cpu-mips.md: Initial upgrade of MIPS port to new IR.
8056
8057 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8058
8059         * mini-ops.h: corrected a handful of MIPS opcodes.
8060
8061 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8062
8063         * aot-compiler.c: MIPS to use ELF writer
8064
8065 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8066
8067         * mini-codegen.c: remove MIPS specific assert.
8068
8069 2008-11-25  Mark Probst  <mark.probst@gmail.com>
8070
8071         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Several
8072         fixes.  PPC64 now passes most of the runtime regressions.
8073
8074 2008-11-24  Zoltan Varga  <vargaz@gmail.com>
8075
8076         * regalloc2.c: Distinguish between use/def positions. Optimize the creation of
8077         volatile intervals a bit.
8078
8079 2008-11-24  Mark Probst  <mark.probst@gmail.com>
8080
8081         * basic-long.cs: New test case.
8082
8083 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
8084
8085         * mini.c (mini_method_compile): Disable globalra for large methods for 
8086         now.
8087
8088         * regalloc2.c (order_moves): Add fp support.
8089
8090         * branch-opts.c (mono_remove_critical_edges): Split non-critical edges whose
8091         source bblock ends with an OP_BR_REG.
8092
8093         * ratests.cs: Add a new test.
8094
8095 2008-11-23  Mark Probst  <mark.probst@gmail.com>
8096
8097         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c: Disable generic code
8098         sharing.  PPC64 now passes generics.exe.
8099
8100 2008-11-23  Mark Probst  <mark.probst@gmail.com>
8101
8102         * mini-ppc64.c: Several fixes.  PPC64 now runs iltests.exe.
8103
8104 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
8105
8106         * exceptions-x86.c (mono_arch_find_jit_info): Avoid reading uninitialized
8107         memory when mono_jit_info_table_find () can't find the method in the
8108         LMF case.
8109
8110         * aot-compiler.c (mono_save_xdebug_info): Emit complete debug info for
8111         AOTed code too.
8112         
8113         * aot-compiler.c (mono_save_xdebug_info): Make this work with the assembly
8114         writer too.
8115
8116 2008-11-23  Mark Probst  <mark.probst@gmail.com>
8117
8118         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, cpu-ppc64.md:
8119         Several fixes.  PPC64 now runs exceptions.exe and
8120         devirtualization.exe.
8121
8122 2008-11-22  Mark Probst  <mark.probst@gmail.com>
8123
8124         * mini-ppc64.c, tramp-ppc64.c: Small fixes.  PPC64 now runs
8125         arrays.exe and basic-math.exe.
8126
8127 2008-11-22  Mark Probst  <mark.probst@gmail.com>
8128
8129         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c,
8130         cpu-ppc64.md: Several fixes.  PPC64 now runs objects.exe.
8131
8132 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
8133
8134         * simd-intrinsics.c: Add support ArrayExtension intrinsics.
8135
8136 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
8137
8138         * method-to-ir.c: Move bounds checking macros to ir-emit.h
8139
8140         * ir-emit.h: Move macros from method-to-ir.c to here.
8141
8142 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
8143
8144         * mini-ops.h: Correct the long simd ops to use LREG.
8145
8146 2008-11-21  Zoltan Varga  <vargaz@gmail.com>
8147
8148         * mini-ops.h: Correct the dreg type of OP_LOADI8_MEMBASE.
8149         
8150         * mini-ops.h: Correct the dreg type of a few long opcodes.
8151
8152         * mini-amd64.h: Applied patch from Mihai Chelaru <kefren@ngnetworks.ro>.
8153         Add netbsd support.
8154
8155 Fri Nov 21 12:52:23 CET 2008 Paolo Molaro <lupus@ximian.com>
8156
8157         * mini-ppc.c: remove negative stack references in epilog
8158         for platforms that don't support the red zone.
8159
8160 2008-11-21  Mark Probst  <mark.probst@gmail.com>
8161
8162         * mini-ppc64.h, cpu-ppc64.md: Fixed caller/callee saved floating
8163         point regs.  Now PPC64 passes basic-calls.exe.
8164
8165 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8166
8167         * basic-simd.cs: Add tests for accessors of Vector2l.
8168
8169 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8170
8171         * mini-ops.h: Added OP_INSERTX_I8_SLOW,.
8172
8173         * mini-x86.c (mono_arch_decompose_long_opts): Decompose OP_INSERTX_I8_SLOW.
8174         
8175         * simd-intrinsics.c: Add support for Vector2l and Vector2ul.
8176
8177 2008-11-21  Mark Probst  <mark.probst@gmail.com>
8178
8179         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Several fixes.  Now
8180         PPC64 passes basic-long.exe.
8181
8182 2008-11-20  Mark Probst  <mark.probst@gmail.com>
8183
8184         * decompose.c: Decompose carry and overflow add on PPC64 like on
8185         other 64 bit archs.  Don't decompose sub at all on PPC64.
8186
8187         * mini-ppc64.c, exceptions-ppc64.c, tramp-ppc64.c, cpu-ppc64.md:
8188         Several fixes and new opcodes.  Now PPC64 runs (but doesn't pass)
8189         basic-long.exe.
8190
8191 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8192
8193         * basic-simd.cs: Add tests for accessors of Vector2d.
8194
8195 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8196
8197         * mini-ops.h: Added OP_INSERTX_R8_SLOW,.
8198
8199         * cpu-x86.md: Same.
8200
8201         * mini-x86.c (mono_arch_output_basic_block): Same.
8202         
8203         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector2d.
8204
8205 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8206
8207         * basic-simd.cs: Add tests for accessors of Vector4f.
8208
8209 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8210
8211         * mini-ops.h: Added OP_INSERTX_R4_SLOW,.
8212
8213         * cpu-x86.md: Same.
8214
8215         * mini-x86.c (mono_arch_output_basic_block): Same.
8216         
8217         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4f.
8218
8219 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8220
8221         * basic-simd.cs: Add tests for accessors of Vector4i and Vector4ui.
8222
8223 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8224
8225         * mini-ops.h: Added OP_INSERTX_I4_SLOW,.
8226
8227         * cpu-x86.md: Same.
8228
8229         * mini-x86.c (mono_arch_output_basic_block): Same.
8230         
8231         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4i and Vector4ui.
8232
8233 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8234
8235         * cpu-x86.md: Use reasonable sizes for extractx_u2 and insertx_u1_slow.
8236
8237 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8238
8239         * simd-intrinsics.c: Enable setters for Vector16sb.
8240
8241 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8242
8243         * mini-ops.h: Added OP_EXTRACTX_U2, OP_INSERTX_U1_SLOW.
8244
8245         * cpu-x86.md: Same.
8246
8247         * mini-x86.c (mono_arch_output_basic_block): Same.
8248         
8249         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector16b.
8250
8251 2008-11-19  Rodrigo Kumpera  <rkumpera@novell.com>
8252
8253         * simd-intrinsics.c: Implement setter for Vector8us.
8254
8255 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
8256
8257         * aot-compiler.c (mono_save_xdebug_info): Emit correct location info
8258         for dead variables.
8259
8260 Wed Nov 19 18:27:41 CET 2008 Paolo Molaro <lupus@ximian.com>
8261
8262         * mini-ppc.c: remove references to the red zone in the prolog
8263         (for systems that don't support it).
8264
8265 2008-11-19  Mark Probst  <mark.probst@gmail.com>
8266
8267         * cpu-ppc64.md: Fixed a few instruction lengths.
8268
8269         * mini-ppc64.c: Don't emit SETLRET.  PPC64 passes basic-float.exe,
8270         now.
8271
8272 2008-11-19  Mark Probst  <mark.probst@gmail.com>
8273
8274         * mini-ppc64.c, cpu-ppc64.md: Fixed some opcodes.  PPC64 passes
8275         basic.exe now.
8276
8277 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
8278
8279         * aot-compiler.c (mono_save_xdebug_info): Add more parameter types.
8280
8281 2008-11-18  Rodrigo Kumpera  <rkumpera@novell.com>
8282
8283         * mini-ops.h: Added OP_INSERT_I2.
8284
8285         * cpu-x86.md: Same.
8286
8287         * mini-x86.c (mono_arch_output_basic_block): Same.
8288         
8289         * simd-intrinsics.c: Implement setter for Vector8s.
8290
8291         * simd-methods.h: Add the names of get setters of Vector8s.
8292
8293 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
8294
8295         * aot-compiler.c (mono_save_xdebug_info): Add support for parameters.
8296         
8297         * aot-compiler.c (mono_save_xdebug_info): Add preliminary support for
8298         parameters.
8299
8300         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
8301
8302 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8303
8304         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Changes
8305         for PPC64.  An empty program runs now.
8306
8307 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
8308
8309         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
8310
8311         * aot-compiler.c mini.c mini.h: Add a JIT debugging mode modelled after
8312         a similar mode in Kaffe: When the the MONO_XDEBUG env var is set, debugging
8313         info for JITted code is emitted into a shared library, loadable into gdb.
8314
8315 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8316
8317         * Makefile.am: Changes to build PPC64.
8318
8319         * mini-arch.h: Include mini-ppc64.h on PPC64.
8320
8321 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8322
8323         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Updated with changes
8324         in PPC code up to r119147.
8325
8326 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8327
8328         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
8329         cpu-ppc64.md: Changes for PPC64.
8330
8331         Based on code submitted by andreas.faerber@web.de at
8332         https://bugzilla.novell.com/show_bug.cgi?id=324134 under the
8333         X11/MIT license.
8334
8335 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8336
8337         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
8338         cpu-ppc64.md: Copied from the corresponding PPC files from
8339         r118846.
8340
8341 2008-11-18  Scott Peterson  <lunchtimemama@novell.com>
8342
8343         * mini-ops.h: Added OP_ROUND.
8344
8345         * cpu-x86.md: Added round.
8346
8347         * mini-x86.c: Added support for intrinsicing Math.Round (double).
8348
8349         * basic-math.cs: Added test_0_round to test rounding.
8350
8351         Contributed under MIT/X11 license.
8352
8353 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
8354
8355         * aot-compiler.c : Fix the Winx64 build.
8356
8357         Contributed under MIT/X11 license.
8358
8359 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
8360
8361         * mini-x86.c (mono_arch_output_basic_block): Use movsd instead of monvups
8362         in OP_EXTRACT_R8 to avoid possible stack corruption.
8363
8364 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
8365
8366         * mini-ops.h: Added OP_EXTRACT_R8/I8.
8367
8368         * cpu-x86.md: Added extract_r8.
8369
8370         * mini-x86.c (mono_arch_output_basic_block): Emmit OP_EXTRACT_R8.
8371         
8372         * mini-x86.c: Added mono_arch_decompose_long_opts to break OP_EXTRACT_I8 into
8373         a couple of OP_EXTRACT_I4.
8374
8375         * mini-x86.h: Define MONO_ARCH_HAVE_DECOMPOSE_LONG_OPTS if simd is enabled.
8376
8377         * simd-intrinsics.c: Implement getters for Vector2l/2ul/2d.
8378
8379 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
8380
8381         * simd-intrinsics.c (vector2l_intrinsics): CompareGreaterThan requires sse 4.2
8382         and not 4.1. 
8383
8384 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
8385
8386         * method-to-ir.c (handle_delegate_ctor): Emit the address of the delegate
8387         trampoline as an AOT const of the proper type instead of MONO_PATCH_INFO_ABS.
8388
8389         * mini.c (mono_codegen): Remove the handling of delegate trampolines, they
8390         are not needed any more.
8391
8392         * mini.h: Remove the unused INS_LIST macros.
8393
8394         * mini.c (mini_method_compile): Remove a disable globalra case which is no
8395         longer needed.
8396
8397         * *.h *.c: Remove duplicate MonoInst emission macros, use the ones in
8398         ir-emit.h.
8399
8400         * regalloc.h *.c: Remove references to mono_regstate_next_int (), use
8401         mono_alloc_ireg () instead.
8402
8403         * mini-<ARCH>.c: Include ir-emit.h. Remove duplicate MonoInst emission
8404         macros.
8405
8406         * mini-amd64.c (emit_load_volatile_arguments): Removed, not needed
8407         on amd64.
8408
8409         * aot-runtime.c (load_aot_module): Disable AOT when running under
8410         CAS.
8411
8412         * mini-amd64.h: Change the monitor fastpath defines to check for
8413         !PLATFORM_WIN32 so they work on *bsd too.
8414
8415         * mini.h mini.c mini-hhpa.c: Remove more unused code.
8416
8417         * mini-s390.c mini-s390x.c: Remove !cfg->new_ir code.
8418
8419         * mini.h (MonoCompile): Remove new_ir flag.
8420
8421         * regalloc.h regalloc.c: Remove unused code.
8422
8423         * cpu-*.md: Remove more unused opcodes.
8424
8425         * simple-cee-ops.h simple-mini-ops.h: Removed.
8426
8427         * mini-ops.h *.c cpu-<ARCH>.md: Remove more unused opcodes.
8428         
8429 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
8430
8431         * aliasing.h: Removed.
8432
8433         * *.c: Remove references to aliasing.h and inssel.h.
8434
8435         * mini.c: Remove additional unused functions.
8436
8437         * mini-ops.h cpu-*.md: Remove unused opcodes.
8438
8439 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
8440
8441         Remove the old JIT code.
8442
8443         * inssel*.brg: Removed.
8444
8445         * ssa.c abcremoval.c aliasing.c: Removed.
8446
8447         * ssa2.c: Renamed to ssa.c.
8448
8449         * abcremoval2.c: Renamed to abcremoval.c.
8450
8451         * *.c: Removed all !cfg->new_ir code.
8452
8453         * mini-<ARCH>.c: Removed mono_arch_call_opcode (), 
8454         mono_arch_emit_this_vret_args (), and mono_arch_get_inst_for_method ().
8455
8456         * mini.c: Removed the old mono_method_to_ir () and all the code used by it.
8457         
8458 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
8459
8460         * aot-compiler.c aot-runtime.c: Emit most of the non-table data in a structure
8461         to simplify the code and cut back on the number of global symbols in the AOT
8462         file.
8463         
8464         * aot-compiler.c aot-runtime.c: Get rid of the unused plt_jump_table.
8465
8466 2008-11-15  Zoltan Varga  <vargaz@gmail.com>
8467
8468         * aot-runtime.c aot-compiler.c: Unify the plt_jump_table/plt_info tables
8469         with the got/got_info tables.
8470
8471         * mini.h: Bump AOT file format version.
8472         
8473         * unwind.h: New file, contains definitions for stack unwinding.
8474
8475         * mini.c (mono_emit_unwind_op): New helper function to append an unwind op
8476         to cfg->unwind_ops.
8477         
8478         * aot-compiler.c: Generalize the emitting of unwind information to use the
8479         information in cfg->unwind_ops.
8480
8481         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info.
8482
8483         * aot-compiler.c: Emit dwarf unwind information so gdb can unwind through
8484         AOT method frames. Enable writing symbols for methods by default.
8485
8486 2008-11-14  Rodrigo Kumpera  <rkumpera@novell.com>
8487
8488         * simd-intrinsics.c (simd_intrinsic_emit_getter): Generalize this code
8489         and make it work with vectors of element sizes 1, 2 and 4.
8490
8491         * simd-intrinsics.c: Enable getter for all vectors with element size
8492         1, 2 or 4.
8493
8494         * simd-methods.h: Add the names of other getters.
8495
8496         * mini-ops.h: Added OP_EXTRACT_I2/U2/I1/U1.
8497
8498         * cpu-x86.md: Same.
8499
8500         * mini-x86.c: Same.
8501
8502 Fri Nov 14 15:54:18 CET 2008 Paolo Molaro <lupus@ximian.com>
8503
8504         * mini-ppc.h: portability fix.
8505
8506 Fri Nov 14 15:39:50 CET 2008 Paolo Molaro <lupus@ximian.com>
8507
8508         * mini-ppc.h, mini-ppc.c: avoid using the red zone as some kernels are
8509         buggy and will overwrite it.
8510
8511 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
8512
8513         * aot-compiler.c: Add functionality to emit local symbols to the elf writer.
8514         Use it to emit local symbols for all methods so AOTed methods show up with
8515         their full name in gdb/valgrind output.
8516
8517 Fri Nov 14 12:56:27 CET 2008 Paolo Molaro <lupus@ximian.com>
8518
8519         * mini-ppc.c: portability fixes.
8520
8521 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
8522
8523         * mini-trampolines.c (mono_magic_trampoline): Move the patching of plt
8524         entries out of the if (!generic_shared...) code so it is always done.
8525         (mono_class_init_trampoline): Do the patching when running under valgrind
8526         too, newer versions of valgrind have no problems with it.
8527
8528 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
8529
8530         * aot-compiler.c (emit_writeout): Rework this to make it easier to add
8531         further sections.
8532
8533 2008-11-13  Mark Probst  <mark.probst@gmail.com>
8534
8535         * mini-ppc.c, cpu-ppc.md: Reserve space for the parameter area in
8536         filters.
8537
8538 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8539
8540         * simd-intrinsics.c: Add getter support for Vector4i and Vector4ui. 
8541
8542 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8543
8544         * mini-ops.h: Kill diplicated ops OP_SHUFLEPS.
8545
8546         * cpu-x86.md: Same.
8547
8548         * mini-x86.c: Same.
8549
8550         * simd-intrinsics.c: Same.
8551
8552 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8553
8554         * simd-intrinsics.c: Enable constructor intrinsics for all types.
8555
8556 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8557
8558         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Generalize this method
8559         to work with more Vector types.
8560
8561 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8562
8563         * simd-intrinsics.c (simd_intrinsic_emit_ctor): If the target is already a pointer
8564         store the elemens directly instead of using and intermediate.
8565
8566 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
8567
8568         * mini-amd64.c (emit_call_body): Avoid aligning call sites in AOTed code.
8569
8570         * tramp-x86.c (mono_arch_create_trampoline_code): Rework the return sequence
8571         to preserve %eax for aot plt trampolines.
8572
8573         * aot-compiler.c (compile_method): Don't skip synchronized methods.
8574         (encode_method_ref): Flag synchronized methods so they won't go through
8575         the AOT trampoline.
8576
8577         * aot-compiler.c: Additional work to support AOTing synchronized methods/
8578         wrappers.
8579
8580         * cpu-ia64.md (jmp): Increase max length.
8581
8582 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
8583
8584         * aot-runtime.c (load_method): Avoid calling runtime_class_init () for
8585         open generic classes.
8586
8587         * aot-compiler.c: Enable the ELF writer on ELF platforms.
8588
8589         * method-to-ir.c (mono_method_to_ir2): Revert the last change to the
8590         box+brtrue optimization since it causes test failures on x86.
8591
8592 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
8593
8594         * mini-ops.h: Remove OP_PUSH_R4 and OP_LOADX_STACK.
8595
8596         * cpu-x86.md: Same.
8597
8598         * mini-x86.c: Same.
8599
8600         * mini.h (struct MonoCompile): Add simd_ctor_var to be used as storage
8601         for simd ctor values. 
8602
8603         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Use simd_ctor_var for the constructor
8604         instead of directly pushing the values on stack. This saves about 15 bytes of generated code.
8605
8606 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
8607
8608         * simd-methods.h: Rename SubWithSaturation, ArithmeticRightShift and
8609         LogicalRightShift.
8610
8611         * simd-instrincs.c: Same.
8612
8613         * basic-simd.cs: Same.
8614
8615 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
8616
8617         * ratests.cs: Add more tests.
8618
8619         * regalloc2.c (add_spill_code): Handle more corner cases.
8620
8621 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
8622
8623         * regalloc2.c (INS_POS_INTERVAL): Decrease this to 8 to avoid overflows.
8624         (update_liveness): Avoid holes in the liveness ranges of hregs if they are
8625         both the source an destination of an instruction.
8626
8627 Tue Nov 11 19:30:50 CET 2008 Paolo Molaro <lupus@ximian.com>
8628
8629         * jit-icalls.c, local-propagation.c, mini.c, ssa.c, ssapre.c, trace.c,
8630         wapihandles.c: more portability changes.
8631
8632 Tue Nov 11 18:56:33 CET 2008 Paolo Molaro <lupus@ximian.com>
8633
8634         * aot-compiler.c, aliasing.c, abcremoval.c: portability changes.
8635         * mini.c mini.h, aot-runtime.c: the aot segfault-handling code is not
8636         safe to execute in a signal handler and the kernel provides better
8637         the info in /proc/self/smaps. Avoid the assert on sigaction during
8638         cleanup.
8639
8640 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
8641
8642         * method-to-ir.c (mono_method_to_ir2): In the box+brtrue optimization, only
8643         do the bblock linking hack if it is actually needed.
8644
8645         * Makefile.am (patch-libtool): New helper target to patch libtool to speed
8646         up linking.
8647
8648         * liveness.c (ENABLE_LIVENESS2): Reenable this for 64 bit archs as the
8649         crash problem is fixed.
8650
8651         * branch-opts.c (mono_remove_critical_edges): Link up newly added
8652         bblocks.
8653
8654         * mini.c (mini_method_compile): Compute unreachable bblocks properly even
8655         for catch clauses.
8656         (mini_method_compile): Set the starting value of next_vreg to 
8657         MAX_IREGS + MAX_FREGS when using globalra.
8658
8659         * method-to-ir.c (mono_method_to_ir2): Mark bblocks starting
8660         filter clauses with BB_EXCEPTION_HANDLER.
8661
8662         * regalloc2.c (assign_spill_slots): Set cfg->rgctx_var.
8663
8664 2008-11-10  Mark Probst  <mark.probst@gmail.com>
8665
8666         * mini-x86.c (mono_arch_get_argument_info): Don't align argument
8667         space for stdcall.  Fixes regressions on Win32.
8668
8669 2008-11-10  Zoltan Varga  <vargaz@gmail.com>
8670
8671         * regalloc2.c (handle_reg_constraints): Avoid adding code to unreachable
8672         bblocks.
8673         (linear_scan): Remove an assert which doesn't seem to be needed.
8674
8675         * local-propagation.c (mono_local_deadce): Avoid a call to
8676         MONO_DELETE_INS which would screw up the instruction linking.
8677
8678         * mini.c (mono_decompose_op_imm): Make this work with globalra.
8679
8680         * regalloc2.c: Upgrade to work the current JIT code.
8681
8682 2008-11-09  Zoltan Varga  <vargaz@gmail.com>
8683
8684         * method-to-ir.c (inline_method): Merge more basic blocks to help the AOT
8685         case.
8686
8687         * aot-runtime.c: Remove some dead code.
8688
8689         * tramp-arm.c: Use 'code' as the runnning pointer in code generation for
8690         consistency.
8691         (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Implement aot support.
8692
8693         * aot-runtime.c (load_named_code): Decode the offset of lazy fetch
8694         trampolines using sscanf since atoi doesn't work on large unsigned values.
8695
8696         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): 
8697         Initialize code_size.
8698
8699 2008-11-08  Mark Probst  <mark.probst@gmail.com>
8700
8701         * method-to-ir.c (mini_emit_inst_for_method): Make
8702         Interlocked.CompareExchange work for Int arguments on 32 bit
8703         archs, as well.
8704
8705 2008-11-07  Mark Probst  <mark.probst@gmail.com>
8706
8707         * method-to-ir.c (mono_method_to_ir2): Fixed a funny commit error.
8708
8709 2008-11-06  Bill Holmes  <billholmes54@gmail.com>
8710
8711         * main.c Fix MSVC build.
8712
8713         Contributed under MIT/X11 license.
8714
8715 2008-11-06  Mark Probst  <mark.probst@gmail.com>
8716
8717         * mini-x86.c (mono_arch_allocate_vars): Make sure locals that need
8718         alignment larger than 8 bytes are aligned correctly, too.
8719
8720         * mini.c: Honor the min_align field of MonoClass when laying out
8721         the stack.
8722
8723 2008-11-06  Zoltan Varga  <vargaz@gmail.com>
8724
8725         * method-to-ir.c (mono_method_to_ir2): Fix AOT support for CEE_SWITCH on arm.
8726
8727         * aot-compiler.c (emit_plt): Fix a warning.
8728         
8729         * aot-compiler.c: Implement ARM support in the binary writer.
8730
8731 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
8732
8733         * basic-simd.cs: Add test for getter with byref arg.
8734         Fix the naming of a few tests.
8735         Add missing checks to a test.
8736
8737 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
8738
8739         * aot-compiler.c (emit_plt): Make the arm code work with the binary writer.
8740
8741         * aot-compiler.c aot-runtime.c mini-trampolines.c tramp-amd64.c: Implement
8742         most of the full-aot support for monitor enter/exit trampolines.
8743
8744         * tramp-x86.c tramp_amd64.c: Add AOT compatible variants of the monitor
8745         enter/exit trampoline creation functions.
8746
8747         * Makefile.am: Fix the generation of buildver.h so it is not invoked during
8748         make dist.
8749
8750 Wed Nov 5 16:28:53 CET 2008 Paolo Molaro <lupus@ximian.com>
8751
8752         * mini.h, aot-compiler.c, method-to-ir.c, aot-runtime.c: remove the
8753         incorrectly added MONO_WRAPPER_MONITOR_* (in r117651-r117652) and
8754         implement the needed functionality without adding crap to the runtime.
8755
8756 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
8757
8758         * mini-trampolines.c (mono_create_monitor_enter_trampoline): Fix the
8759         non-x86 builds.
8760
8761         * mini.c (mono_build_date): New global version holding the build date in
8762         string format.
8763         
8764         * Makefile.am (buildver.c): Generate a file containing the build date.
8765
8766         * main.c: Set the build date from the generated file.
8767
8768         * mini.c (mono_get_runtime_build_info): New helper function returning build
8769         information in a string format.
8770         
8771         * driver.c (mono_main): Print the build date in --version.
8772
8773         * aot-compiler.c aot-runtime.c: Embed the build information into the AOT
8774         file when the bind-to-runtime-version option is used.
8775
8776 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
8777
8778         * simd-intrinsics.c: Fix bug when using getters and byref args. 
8779
8780 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
8781
8782         * simd-methods.h: Rename prefetch methods.
8783
8784         * simd-intrinsics.c: Same.      
8785
8786 2008-11-05  Mark Probst  <mark.probst@gmail.com>
8787
8788         * tramp-amd64.c: Enlarge the Monitor.Enter/Exit trampoline code
8789         sizes.
8790
8791 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
8792
8793         * aot-compiler.c: Use the bundled elf header files instead of depending on
8794         the system one.
8795         
8796         * aot-compiler.c (emit_symbol_diff): Allocate memory from the acfg
8797         mempool.
8798
8799         * method-to-ir.c (mono_method_check_inlining): Avoid a getenv () call
8800         on every call.
8801
8802 2008-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
8803
8804         * cpu-x86.md: Add store nta ops.
8805
8806         * mini-ops.h: Same.
8807
8808         * mini-x86.c: Same.
8809
8810         * mini.h: Add an enum for simd prefetch modes.
8811
8812         * simd-methods.h: Refactor the store_aligned code to handle multiple kinds
8813         of store. Use the changed code to support store nta.
8814
8815         * simd-intrinsics.c: Add prefetch ops for all vector types.
8816
8817 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
8818
8819         * aot-compiler.c: Add an option for JIT compiling the methods by multiple 
8820         threads.
8821         
8822         * aot-compiler.c: Use statically allocated buffers for constructing symbol 
8823         names.
8824
8825         * aot-runtime.c aot-compiler.c: Add support for the MONITOR_ENTER/EXIT
8826         trampolines.
8827
8828 2008-11-04  Mark Probst  <mark.probst@gmail.com>
8829
8830         * mini-x86.c: Fixed commit.
8831
8832 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
8833
8834         * aot-compiler.c (emit_plt): Align the plt section only on x86.
8835
8836 2008-11-04  Mark Probst  <mark.probst@gmail.com>
8837
8838         * mini-trampolines.c, mini.h: Two new trampolines: MONITOR_ENTER
8839         and MONITOR_EXIT, for the ASM fastpaths.
8840
8841         * method-to-ir.c: Use the ASM fastpath for Monitor.Enter/Exit if
8842         available.
8843
8844         * mini.c, patch-info.h: Signature and patch infos for
8845         Monitor.Enter/Exit trampolines.
8846
8847         * mini-amd64.c, mini-x86.c: Make emit_tls_get() non-static.
8848
8849         * tramp-amd64.c, tramp-x86.c, mini-amd64.h, mini-amd64.h:
8850         Monitor.Enter/Exit ASM fastpath for Linux.
8851
8852 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
8853
8854         * mini.c (mono_method_to_ir): Fix soft-float support in Array.Get/Set.
8855
8856         * objects.cs: Add a new test.
8857         
8858         * aot-compiler.c: Use mono_100ns_ticks () for computing the profiling info.
8859
8860         * aot-runtime.c (load_method): Run class initialization in the PLT case even
8861         if MONO_LOG_LEVEL is set.
8862
8863         * debug-mini.c (serialize_variable): Fix the encoding of dead variables.
8864
8865         * aot-runtime.c (mono_aot_get_method): Skip out-of-date AOT modules.
8866
8867         * aot-compiler.c (emit_and_reloc_code): Speed this up a little.
8868         
8869         * aot-compiler.c: Change the relocation code to use virtual addresses instead
8870         of file offsets. Align the sections belonging to the data segment to 
8871         PAGESIZE.
8872
8873 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
8874
8875         * aot-compiler.c: Simplify the elf writer by depending on the definitions in
8876         elf.h. Port it to amd64.
8877
8878 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
8879
8880         * driver.c: Enable SIMD by default.
8881
8882 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
8883
8884         * cpu-x86.md: Add prefetch op.
8885
8886         * mini-ops.h: Same.
8887
8888         * mini-x86.c: Same.
8889
8890         * mini.h: Add an enum for simd prefetch modes.
8891
8892         * simd-methods.h: Add prefetch function names.
8893
8894         * simd-intrinsics.c: Add prefetch ops for all vector types.
8895
8896 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
8897
8898         * aot-compiler.c (emit_bytes): Speed this up a little.
8899
8900 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
8901
8902         * aot-compiler.c: Add JIT time etc. statistics.
8903         
8904         * aot-compiler.c (compile_method): Fix the copying of the cfgs array.
8905
8906         * mini.h (MonoCompile): Add 'got_offset' field.
8907
8908         * aot-compiler.c: Store the got offset in MonoCompile, get rid of the
8909         method_got_offsets array.
8910
8911         * aot-compiler.c aot-runtime.c: Add support for the monitor enter/exit
8912         wrappers.
8913
8914         * aot-compiler.c (compile_method): Add generic method instances referenced
8915         by the method to the list of methods to be compiled, this is required so if
8916         A<T> references B<T>, and another assembly references A<int>, then it will
8917         also get a copy of B<int>.
8918
8919         * method-to-ir.c (mini_emit_inst_for_method): Use the proper wrapper type
8920         when checking for monitor enter/exit.
8921
8922 2008-10-30  Mark Probst  <mark.probst@gmail.com>
8923
8924         * method-to-ir.c (mini_emit_inst_for_method): Use the IL fastpaths
8925         for Monitor.Enter and Monitor.Exit if enabled.
8926
8927         * mini-x86.h, mini-amd64.h: Enable the IL fastpaths for Linux and
8928         Solaris.
8929
8930 2008-10-30  Zoltan Varga  <vargaz@gmail.com>
8931
8932         * method-to-ir.c (type_from_op): Convert CEE_CONV_U on OP_ICONV_TO_U instead
8933         of an OP_MOVE. Fixes #440046.
8934
8935         * basic-long.cs: Add a new test.
8936
8937 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
8938
8939         * mini.h: Add synchronization note for the managed counter-part.
8940
8941         * simd-intrinsics.c: Add SimdRuntime.get_AccelMode intrinsic that
8942         returns the simd caps of the current cpu.
8943
8944 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
8945
8946         * basic-simd.cs: Remove Console.WriteLine.
8947
8948 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
8949
8950         * basic-simd.cs: New tests for Vector2ul.
8951
8952 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
8953
8954         * simd-intrinsics.c: Add new vector type Vector2ul.
8955
8956 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
8957
8958         * basic-simd.cs: New tests for Vector2l.
8959
8960 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
8961
8962         * cpu-x86.md: Add long version of most packed int ops.
8963
8964         * mini-ops.h: Same.
8965
8966         * mini-x86.h: Same.
8967
8968         * simd-intrinsics.c: Add new vector type Vector2l.
8969
8970 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
8971
8972         * simd-intrinsics.c: Replace SN_op_BitwiseXor with SN_op_ExclusiveOr.
8973
8974         * simd-methods.h: Remove SN_op_BitwiseXor.
8975
8976 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
8977
8978         * mini.c (mono_allocate_stack_slots_full): Align the size of vtypes to their
8979         alignment.
8980
8981 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
8982
8983         * basic-simd.cs: Test for Vector2d.
8984
8985         * basic-simd.cs (test_vector8s_pack_signed_sat): Fixed broken
8986         value.
8987
8988 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
8989
8990         * cpu-x86.md: Add double version of all packed float ops.
8991
8992         * mini-ops.h: Same.
8993
8994         * mini-x86.h: Same.
8995
8996         * simd-intrinsics.c: Add new vector type Vector2d.
8997
8998         * simd-intrinsics.c (vector4f_intrinsics): Fix ordering.
8999
9000         * simd-methods.h: Add Duplicate.
9001
9002 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
9003
9004         * basic-simd.cs: Test for packing with signed saturation.
9005
9006 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
9007
9008         * aot-compiler.c (add_generic_instances): Add all methods of generic instances
9009         found in the TYPESPEC table.
9010
9011 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
9012
9013         * aot-runtime.c (mono_aot_get_method): Log not found methods for extra methods
9014         too.
9015
9016         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
9017
9018         * mini.c (mono_method_to_ir): For MONO_PATCH_INFO_RVA, save field the token
9019         instead of the RVA, since the RVA can be changed by tools like the cil 
9020         stripper.
9021
9022         * method-to-ir.c (mono_method_to_ir2): Ditto.
9023
9024         * debug-mini.c (serialize_variable): Handle ADDRESS_MODE_DEAD.
9025         (deserialize_variable): Ditto.
9026
9027 2008-10-25  Martin Baulig  <martin@ximian.com>
9028
9029         * debug-mini.c (write_variable): Use
9030         `MONO_DEBUG_VAR_ADDRESS_MODE_DEAD' for dead variables.
9031
9032 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9033
9034         * cpu-x86.md: Add unsigned variants of packd and packw.
9035
9036         * mini-ops.h: Same.
9037
9038         * mini-x86.h: Emit the right instruction for packd and packw.
9039         Add unsigned variants of packd and packw.
9040
9041         * simd-intrinsics.c: Packd and packw were used in place of their
9042         unsigned variants. Change that.
9043         Add intrinsics for (Signed)PackWithSignedSaturation.
9044
9045         * simd-methods.h: Add (Signed)PackWithSignedSaturation.
9046
9047 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9048
9049         * simd-intrinsics.c (vector4i_intrinsics): New table of intrinsic type.
9050
9051 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9052
9053         * mini-ops.h: Remove dword packed add/sub with saturation ops.
9054
9055         * cpu-x86.md: Remove dword packed add/sub with saturation ops.
9056
9057         * simd-intrinsics.c (vector4ui_intrinsics): Remove methods without
9058         sse instructions.
9059
9060         * simd-intrinsics.c (vector8s_intrinsics): Fix ordering.
9061
9062 2008-10-24  Mark Probst  <mark.probst@gmail.com>
9063
9064         * method-to-ir.c, mini.c: Special casing for the synchronized
9065         wrapper for the ldtoken+GetTypeFromHandle case.
9066
9067 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
9068
9069         * mini.c (mono_replace_ins): Move this to branch-opts.c.
9070
9071         * mini.c (mono_replace_ins): Propagate has_array_access flag to the newly
9072         created/split bblocks.
9073
9074 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9075
9076         * mini-ops.h: Add packed signed mul high.
9077         
9078         * cpu-x86.md: Same.
9079
9080         * mini-x86.c (mono_arch_output_basic_block): Same.
9081
9082         * simd-methods.h: Add PackWithUnsignedSaturation and ShiftRightLogic.
9083
9084         * simd-intrinsics.c (vector8s_intrinsics): New table of intrinsic type.
9085
9086 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9087
9088         * basic-simd.cs: Tests for Vector16sb.
9089
9090 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
9091
9092         * inssel.brg (stmt): Fix OP_HARD_NOP rule.
9093
9094 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
9095
9096         * mini-ops.h: Add packed signed min, max and compare greater.
9097         
9098         * cpu-x86.md: Same.
9099
9100         * mini-x86.c (mono_arch_output_basic_block): Same. Add packed add/sub with
9101         saturation.
9102
9103         * simd-methods.h: Add CompareGreaterThan.
9104
9105         * simd-methods.h: Remove CompareEquals.
9106
9107         * simd-intrinsics.c: Add new TODO entry and some cosmetic changes.
9108
9109         * simd-intrinsics.c (vector16sb_intrinsics): New table of intrinsic type.
9110
9111         * simd-intrinsics.c (vector4f_intrinsics): Rename CompareEquals to
9112         CompareEqual.
9113
9114 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
9115
9116         * basic-simd.cs: Fix tests due to change in the API.
9117
9118 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9119
9120         * mini.c method-to-ir.c: Use mono_field_get_name () for accessing field->name.
9121
9122 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9123
9124         * basic-simd.cs: Fix name change in Vector4f::CompareEqual.
9125
9126         * simd-intrinsics.c (simd_intrinsic_emit_store_aligned): Don't use
9127         inst_offset as this has invalid values for LDADDR.
9128
9129 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9130
9131         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
9132
9133         * simd-intrinsics.c (vector4ui_intrinsics): Add SignedPackWithUnsignedSaturation.
9134
9135 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9136
9137         * method-to-ir.c (initialize_array_data): Use mono_field_get_data ()
9138         for accessing field->data.
9139
9140 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9141
9142         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
9143
9144 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9145
9146         * simd-methods.h: Add SignedPackWithUnsignedSaturation.
9147
9148         * simd-intrinsics.c (vector8us_intrinsics): Add SignedPackWithUnsignedSaturation.
9149
9150 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9151
9152         * dominators.c (mono_compute_natural_loops): Allocate GList enties
9153         from the cfg mempool.
9154
9155 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
9156
9157         * basic-simd.cs: Tests for new methods in Vector8us.
9158
9159 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
9160
9161         * mini-ops.h: Add multiply and store high.
9162         
9163         * cpu-x86.md: Same.
9164
9165         * mini-x86.c (mono_arch_output_basic_block): Same.
9166
9167         * simd-methods.h: Same.
9168
9169         * simd-intrinsics.c (vector8us_intrinsics): Add MultiplyStoreHigh
9170         and CompareEqual.
9171
9172 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
9173
9174         * method-to-ir.c (mono_emit_method_call_full): Remove a needless call to
9175         mono_class_setup_vtable ().
9176
9177         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Use
9178         mono_class_get_vtable_entry () for accessing klass->vtable.
9179
9180         * aot-runtime.c (load_method): Avoid a crash when using MONO_LOG_LEVEL.
9181
9182         * aot-compiler.c (add_generic_instances): Avoid a crash if a class is not
9183         found.
9184
9185         * method-to-ir.c (mono_save_token_info): Don't save references made from
9186         wrappers.
9187
9188         * aot-compiler.c (add_generic_instances): Add static rgctx wrappers for cctors
9189         of generic instances.
9190
9191         * aot-runtime.c (find_extra_method): Search in all loaded AOT images.
9192
9193 2008-10-19  Mark Probst  <mark.probst@gmail.com>
9194
9195         * cpu-ppc.md, mini-ppc.c: The length of the code generated for
9196         OP_JMP depends on the method signature.  Calculate it properly.
9197
9198 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
9199         
9200         * aot-runtime.c (mono_aot_find_jit_info): Handle extra methods which are
9201         called directly.
9202
9203         * aot-compiler.c (emit_and_reloc_code): Allow direct calling of generic
9204         instances.
9205         (emit_extra_methods): Add another table mapping method indexes to 
9206         offsets in the extra_method_info table.
9207
9208         * mini.h: Bump AOT file format version.
9209         
9210         * aot-runtime.c: Merge most of the code from mono_aot_get_method
9211         and mono_aot_get_method_from_token () into one function.
9212
9213 2008-10-19  Mark Probst  <mark.probst@gmail.com>
9214
9215         * mini-ppc.c (emit_load_volatile_arguments): Inner loop needs a
9216         separate counter.
9217
9218 2008-10-18  Zoltan Varga  <vargaz@gmail.com>
9219
9220         * aot-compiler.c aot-runtime.c: Fix the hash function used for the extra
9221         methods.
9222
9223         * method-to-ir.c (mono_method_to_ir2): Change a !compile_aot assert to
9224         disable_aot.
9225
9226         * mini.c (mono_patch_info_equal): Compare the generic context as well.
9227
9228         * mini.h: Bump aot file format version.
9229
9230         * aot-compiler.c aot-runtime.c: Generalize the wrapper handling code so the
9231         AOT file can contain native code for methods which are not in the METHOD
9232         table. Generate code for non-sharable generic instances of generic methods
9233         found in the METHODSPEC table.
9234         
9235         * method-to-ir.c (mono_method_to_ir2): Remove the aot restriction when
9236         encoding generic type handles.
9237
9238         * ir-emit.h (NEW_AOTCONST_TOKEN): Add a generic_context argument.
9239         (NEW_TYPE_FROM_HANDLE_CONST): Add a generic_context argument.
9240
9241         * ir-emit.h: Rewrite the EMIT_NEW_XXXCONST macros to use the NEW_XXXCONST
9242         macros + MONO_ADD_INS.
9243
9244         * mini.c (mono_jump_info_token_new2): New function which takes a generic
9245         context as well.
9246
9247         * mini.h (MonoJumpInfoToken): Include fields for a generic context.
9248
9249         * mini.h: Bump aot file format version.
9250
9251         * aot-compiler.c aot-runtime.c: Update after changes to MonoJumpInfoToken.
9252
9253 2008-10-17  Mark Probst  <mark.probst@gmail.com>
9254
9255         * mini-x86.h, mini-x86.c, exceptions-x86.c: Align stack on all
9256         platforms, with definable stack alignment value.  Set to 16 now
9257         for all platforms.
9258
9259         * mini.c, mini.h, driver.c: Command line option for disabling
9260         stack alignment.
9261
9262 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
9263
9264         * basic-simd.cs: Tests for new methods in Vector4ui.
9265
9266 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
9267
9268         * mini-ops.h: Add packed int shuffle.
9269         
9270         * cpu-x86.md: Same.
9271
9272         * mini-x86.c (mono_arch_output_basic_block): Same.
9273
9274         * simd-intrinsics.c (vector4ui_intrinsics): Add compare equal,
9275         extract mask, max, min, shuffle.
9276
9277         * simd-intrinsics.c (vector8us_intrinsics): Add max and min.
9278
9279 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
9280
9281         * basic-simd.cs: Tests for new methods in Vector8us.
9282
9283 2008-10-17  Mark Probst  <mark.probst@gmail.com>
9284
9285         * method-to-ir.c (mono_method_to_ir2): "refanytype" produces a
9286         RuntimeTypeHandle, not a TypedReference.
9287
9288 Fri Oct 17 14:40:50 CEST 2008 Paolo Molaro <lupus@ximian.com>
9289
9290         * simd-intrinsics.c: remove relocations.
9291
9292 2008-10-17  Zoltan Varga  <vargaz@gmail.com>
9293
9294         * mini-amd64.c (mono_arch_output_basic_block): Port the IREM_IMM 
9295         optimizations from the x86 backend.
9296
9297 Fri Oct 17 12:00:51 CEST 2008 Paolo Molaro <lupus@ximian.com>
9298
9299         * simd-methods.h, simd-intrinsics.c: debloat method names and
9300         prepare for no relocations.
9301
9302 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9303
9304         * mini-ops.h: Add packed min/equal and sum of absolute differences.
9305         
9306         * cpu-x86.md: Same.
9307
9308         * mini-x86.c (mono_arch_output_basic_block): Same.
9309
9310         * simd-intrinsics.c (vector16b_intrinsics): Add average, compare equal,
9311         extract mask, max, min and sum of absolute differences.
9312
9313         * simd-intrinsics.c: Increase SIMD_INTRINSIC_NAME_MAX due to new huge
9314         method name.
9315
9316 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9317
9318         * basic-simd.cs: Test for the other mono_simd_simplify_indirection bug.
9319         Renamed one test for consistency.
9320
9321 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9322
9323         * simd-intrinsics.c (mono_simd_simplify_indirection): Apply the previous
9324         fix to the code that deal with other blocks.
9325
9326 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9327
9328         * basic-simd.cs: Test for the mono_simd_simplify_indirection bug.
9329
9330 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9331
9332         * simd-intrinsics.c (mono_simd_simplify_indirection): Simplify the code
9333         that deals with vreg interference. Explicitly check for OP_LDADDR to be
9334         able to process the source reg.
9335
9336 2008-10-16  Martin Baulig  <martin@ximian.com>
9337
9338         * mini-ops.h, cpu-amd64.md, cpu-x86.md: Added new `hard_nop' opcode.
9339
9340         * inssel.brg: Add `OP_HARD_NOP'.
9341
9342         * mini.h (MonoCompile): Added `keep_cil_nops' flag.
9343
9344         * mini.c (mono_method_to_ir): In `CEE_NOP': generate a
9345         `OP_HARD_NOP' instruction when running inside the debugger.
9346
9347         * method-to-ir.c (mono_method_to_ir2): In `CEE_NOP': generate a
9348         `OP_HARD_NOP' instruction when running inside the debugger.
9349
9350 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9351
9352         * simd-intrinsics.c (get_simd_vreg): Using sreg1 of OP_XMOVE
9353         now works. The issue with the regalloc tripping up no longer
9354         happens.
9355
9356         * simd-intrinsics.c (load_simd_vreg): Same.
9357
9358 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9359         
9360         * basic-simd.cs: Tests for new Vector8ui methods.
9361
9362 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9363
9364         * simd-intrinsics.c (get_simd_vreg): Simplify code and test
9365         only for type. This fixes crashes where MonoInst::klass is checked
9366         for ops of type != VTYPE or OBJ.
9367
9368         * simd-intrinsics.c (load_simd_vreg): Same.
9369
9370 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9371
9372         * mini-ops.h: Add ops for packed shuffle/max/avg and
9373         extract mask.
9374         
9375         * cpu-x86.md: Same.
9376
9377         * mini-x86.c (mono_arch_output_basic_block): Same.
9378
9379         * simd-intrinsics.c (vector8us_intrinsics): Add avg, shuffle and
9380         extract mask.
9381
9382         * simd-intrinsics.c (simd_intrinsic_emit_extract_mask): New function
9383         to emit extract mask op.
9384
9385         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Retrofic this function
9386         to emit word shuffles.
9387
9388 2008-10-15  Mark Probst  <mark.probst@gmail.com>
9389
9390         * mini.c (mono_allocate_stack_slots_full): Align stack frame to
9391         the largest alignment needed by a variable, but at least
9392         sizeof(gpointer).
9393
9394 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9395
9396         * basic-simd.cs: Tests for the fixes in the last commit.
9397
9398 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9399
9400         * simd-intrinsics.c (get_simd_vreg): Drop the is_this_ptr, this function
9401         no longer handles STACK_PTR input.
9402
9403         * simd-intrinsics.c (get_simd_vreg): Don't crash when MonoInst::klass == -1.
9404
9405         * simd-intrinsics.c (load_simd_vreg): New function that works like 
9406         get_simd_vreg   but handles STACK_PTR input.
9407
9408         * simd-intrinsics.c (simd_intrinsic_emit_getter): Use load_simd_vreg
9409         as the input can be an arbitrary pointer.
9410
9411         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Try the
9412         LDADDR local optimization directly otherwise use a store op.
9413
9414 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9415
9416         * basic-simd.cs: Tests for dup low and dup high.
9417
9418 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9419
9420         * mini-ops.h: Add dup low and dup high ops.
9421         
9422         * cpu-x86.md: Same.
9423
9424         * mini-x86.c (mono_arch_output_basic_block): Same.
9425
9426         * simd-intrinsics.c (vector4f_intrinsics): Same.
9427
9428 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
9429
9430         * basic-simd.cs: Tests for recently added functionality.
9431
9432 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
9433
9434         * mini-ops.h: Add remaining sse1 fp ops.
9435         
9436         * cpu-x86.md: Add remaining sse1 fp ops.
9437
9438         * mini-x86.c (mono_arch_output_basic_block): Same.
9439
9440         * mini.h: Add enum for simd FP compare conditions.
9441
9442         * simd-intrinsics.c (vector4f_intrinsics): Add all new ops.
9443
9444         * simd-intrinsics.c (simd_intrinsic_emit_binary): Set inst_c0 to flags
9445         so the backed can generate the appropriate op.
9446
9447 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
9448         This patch squeese one more byte from the SimdIntrinsc struct.
9449
9450         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions: Use the version number
9451         a a shift amount intead of simply or'ing it.
9452
9453         * mini.h: Change SIMD_VERSION_* values to be sequential intead of masks.
9454
9455         * simd-intrinsics.c (struct SimdIntrinsc): Squeese simd_version and simd_emit_mode into a single
9456         byte so we can have an aditional flags field without increasing struct size.
9457
9458         * simd-intrinsics.c (emit_intrinsics): Use the value of simd_version as a shift amount before checking
9459         against the simd_supported_versions bitmask.
9460
9461         * simd-intrinsics.c: Set SIMD_INTRINSIC_NAME_MAX to an appropriate value.
9462
9463 Mon Oct 13 10:58:10 CEST 2008 Paolo Molaro <lupus@ximian.com>
9464
9465         * mini.c: remove rawbuffer code (the only use here is unsafe because
9466         it takes locks during signal handling and the kernel now provides much
9467         better info in proc/pid/smaps these days).
9468
9469 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
9470
9471         * mini-amd64.c (mono_arch_output_basic_block): Fix the changes to
9472         OP_X86_PUSH_OBJ. Fixes #434620.
9473
9474         * objects.cs: Add a test.
9475         
9476 2008-10-12  Rodrigo Kumpera  <rkumpera@novell.com>
9477
9478         * basic-simd.cs: Remove PackWithUnsignedSaturation tests as it turns out
9479         that the packuswb/packusdw don't work with unsigned numbers for what
9480         would be negative numbers in signed format.
9481
9482         * cpu-x86.md: Add doubleword forms of many ops and packing ones.
9483         Fix the len of fconv_to_r8_x and xconv_r8_to_i4.
9484
9485         * mini-ops.h: Add doubleword forms of many ops and packing ones.
9486
9487         * mini-x86.c: Emit doubleword forms of many ops and packing ones.
9488
9489         * simd-intrinsics.c (SimdIntrinsc): Rename the flags field to simd_version.
9490
9491         * simd-intrinsics.c (vector4f_intrinsics): Use simd_version field for sse3 ops.
9492
9493         * simd-intrinsics.c (vector4u_intrinsics): Rename to vector4ui_intrinsics and
9494         add more ops.
9495
9496         * simd-intrinsics.c (simd_version_name): New function, returns the name of the
9497         version as the enum in mini.h.
9498
9499         * simd-intrinsics.c (emit_intrinsics): Instead of having a special emit mode
9500         for sse3 ops, check the simd_version field if present. This way the code
9501         works with all versions of sse.
9502
9503 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9504
9505         * simd-intrinsics.c: Fixed intrinsic name typo.
9506
9507         * mini.h: Added missing simd exported function.
9508
9509         * basic-simd.cs: Added tests for Vector4ui.
9510         Fixed broken test for Vector16b.
9511
9512 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
9513
9514         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Increase
9515         the max length to 64.
9516
9517 2008-10-10  Mark Probst  <mark.probst@gmail.com>
9518
9519         * method-to-ir.c: Only do the fast virtual generic method call for
9520         non-wrapper methods.
9521
9522         * mini.h, mini-trampolines.c: The new generic virtual remoting
9523         trampoline handles virtual method calls via the vtable (as done by
9524         the fast virtual generic method calls) to remoting proxies.
9525
9526         * mini.c (mono_jit_create_remoting_trampoline): For generic
9527         methods reate a generic virtual remoting trampoline.
9528
9529         * mini-amd64.h: Enable fast virtual generic method calls again.
9530
9531 2008-10-10  Mark Probst  <mark.probst@gmail.com>
9532
9533         * mini-ppc.c: Use SP (r1), not frame_reg (which might be r31) to
9534         restore registers when doing tail calls.
9535
9536 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9537
9538         * simd-intrinsics.c (emit_intrinsics): Vector4u was renamed to
9539         Vector4ui.
9540
9541 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9542
9543         * basic-simd.cs: Add test for Vecto16b.PackWithUnsignedSaturation.
9544
9545 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9546
9547         * simd-intrinsics.c (emit_intrinsics): Retrofit to new type names.
9548
9549 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9550
9551         * basic-simd.cs: Retrofit for API changes.
9552
9553 2008-10-10  Mark Probst  <mark.probst@gmail.com>
9554
9555         * mini-ppc.c: Handle integer stack arguments for tail calls.
9556
9557 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9558
9559         * optflags-def.h: Removed sse3 optimization.
9560
9561         * driver.c: Same.
9562
9563         * mini-x86.c (mono_arch_cpu_optimizazions): Remove detection of
9564         sse3.
9565
9566         * mini-x86.c: Added mono_arch_cpu_enumerate_simd_versions.
9567
9568         * mini.h: Added enumeration with simd versions.
9569
9570         * simd-intrinsics.c (emit_intrinsics): Use the new static var
9571         for detecting SSE3.
9572
9573         * simd-intrinsics.c: Added mono_simd_intrinsics_init.
9574
9575         * mini.c (mini_init): Call mono_simd_intrinsics_init.
9576
9577 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
9578
9579         * basic-simd.cs: Added tests for Vector8u and Vector16u.
9580
9581         * basic-simd.cs: Fixed test naming.
9582
9583 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
9584
9585         * mini-ops.h: Added ops for packed and saturated math, shifts
9586         and packing/unpacking.
9587
9588         * cpu-x86.md: Added descriptors for the above ops.
9589
9590         * mini-x86.c: Added code to emmit the above ops.
9591
9592         * simd-intrinsics.c: Added support for Vector16u and Vector8u.
9593
9594 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
9595
9596         * aot-compiler.c (compile_method): Enable AOT for generic code.
9597
9598         * ir-emit.h (NEW_DOMAINCONST): Use domainvars in AOT code as well.
9599
9600 Wed Oct 8 16:35:43 CEST 2008 Paolo Molaro <lupus@ximian.com>
9601
9602         * mini.c: add a workaround for a common screwup that ends up blamed
9603         to mono (other processes blocking signal delivery).
9604
9605 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9606
9607         * method-to-ir.c (mono_method_to_ir2): Clear ins_flag on all code paths
9608         in the LDFLD/STFLD opcodes. Fixes #432673.
9609
9610         * iltests.il.in: Add a new test.
9611
9612 Tue Oct 7 19:59:07 CEST 2008 Paolo Molaro <lupus@ximian.com>
9613
9614         * mini-arm.c: attach the thread in unmanaged->managed transitions
9615         using delegates (bug #433148).
9616
9617 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
9618
9619        * basic-simd.cs: Use new ShuffleSel constants.
9620
9621 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
9622
9623         * driver.c (opt_sets): Added combinations of simd, sse2 and sse3.
9624
9625         * mini-x86.c (mono_arch_cpu_optimizazions): Detect sse3 and now
9626         only disable simd intrinsics if no sse2 is detected.
9627
9628         * optflags-def.h: Added sse3.
9629
9630         * simd-intrinsics.c: Avoid generated sse3 intrinsics if the optimization
9631         is disabled.
9632
9633 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9634
9635         * aot-compiler.c (add_wrappers): Fix Delegate/MulticastDelegate classes
9636         when adding delegate-invoke wrappers.
9637
9638 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9639
9640         * Makefile.am: Reenable the simd tests.
9641
9642 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
9643
9644         * mini-amd64.c (mono_arch_emit_outarg_vt) : In the ArgValuetypeAddrInIReg case,
9645           add a call to mono_call_inst_add_outarg_reg for the arg->dreg to make sure that no
9646           other vreg is allocated to that hreg.
9647
9648         Contributed under MIT/X11 license.
9649
9650 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9651
9652         * Makefile.am: Disable the simd tests for now as Mono.Simd is not
9653         yet checked in.
9654
9655 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
9656
9657         * basic-simd.cs: New test suite for SIMD intrinsics.
9658
9659         * Makefile.am: Added new tests.
9660
9661 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
9662
9663         * cpu-x86.md: Added new instructions to handle float to int using SSE regs.
9664
9665         * mini-ops.h: Same.
9666
9667         * mini-x86.h: Enable mono_arch_decompose_opts if simd intrinsics are enabled.
9668
9669         * mini-x86.c (mono_arch_decompose_opts): Decompose float to int conversion
9670         using SSE2 aware opcodes.
9671
9672         * mini-x86.c (emit_float_to_int): Disable the SSE2 optimization if OPT_SIMD
9673         is enabled, this code path is only reachable if conversion ops are emmited after
9674         mono_method_to_ir.
9675
9676         * mini.h: Added MonoCompile::fconv_to_r8_x_var to hold the float to int var.
9677
9678         This optimization saves 6 bytes per conversion against the old version.
9679
9680 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
9681
9682         * aot-compiler.c (compile_method): Don't skip methods referencing 
9683         generic methods without a corresponding entry in token_info_hash, since
9684         encode_method_ref () can handle all generic methods now.
9685
9686         * method-to-ir.c (mono_save_token_info): Don't save the token info if a 
9687         generic context is set.
9688         
9689         * method-to-ir.c (mono_method_to_ir2): Put back a disable_aot for
9690         generic sharing of LDTOKEN.
9691
9692 2008-10-06  Mark Probst  <mark.probst@gmail.com>
9693
9694         * mini-amd64.h: Temporarily disabled fast virtual generic method
9695         calls because it breaks the System.Runtime.Remoting tests.
9696
9697 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
9698
9699         * aot-compiler.c (add_wrappers): Add delegate-invoke wrappers.
9700
9701         * method-to-ir.c (check_inline_called_method_name_limit): Return TRUE
9702         so inlining actually works.
9703         (check_inline_caller_method_name_limit): Ditto.
9704
9705 Mon Oct 6 11:04:38 CEST 2008 Paolo Molaro <lupus@ximian.com>
9706
9707         * mini-ppc.c: mono_arch_flush_icache () cast pointer using gsize for
9708         64 bit safety (from Olaf Hering and Andreas Farber).
9709
9710 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
9711         
9712         * mini-trampolines.c (mono_aot_trampoline): Delegate processing to
9713         mono_magic_trampoline () if aot_get_method_from_token () fails. Remove
9714         unused virtual call support code.
9715
9716         * aot-runtime.c (decode_method_ref): Add a 'no_aot_trampoline' out argument.
9717         
9718         * aot-runtime.c (mono_aot_get_method_from_vt_slot): Return NULL for methods
9719         which can't use aot trampolines.
9720         (decode_patch): Don't create aot trampolines for methods which can't use
9721         them.
9722
9723         * aot-compiler.c (encode_method_ref): Add a marker for methods which can't
9724         use aot trampolines.
9725
9726         * mini.h: Bump AOT image format version.
9727         
9728 2008-10-05  Zoltan Varga  <vargaz@gmail.com>
9729
9730         * method-to-ir.c (mono_method_to_ir2): Pass cil_method instead of cmethod
9731         to save_token_info () since cmethod is inflated for constrained calls.
9732
9733         * mini-<ARCH>.h mini-x86.c: Remove some unused defines.
9734
9735 2008-10-04  Andreas Farber  <andreas.faerber@web.de>
9736
9737         * Makefile.am: Add build rules for ppc64.
9738         This avoids the build failing at pedump with unresolved symbols
9739         due to lack of arch_sources. Instead it will now fail earlier
9740         due to lack of cpu-ppc64.md.
9741
9742         Contributed under MIT/X11 license.
9743
9744 2008-10-04  Mark Probst  <mark.probst@gmail.com>
9745
9746         * mini-amd64.c (mono_arch_emit_call): Support stack arguments for
9747         tail calls.
9748
9749         * iltests.il.in: Add test case for tail call with many arguments.
9750
9751 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
9752
9753         * method-to-ir.c (mono_method_to_ir2): Add an !cfg->compile_aot assert
9754         to the fast virtual generic method code until the aot case is fixed.
9755
9756 2008-10-03  Mark Probst  <mark.probst@gmail.com>
9757
9758         * mini-ppc.c, mini-ppc.h: Implement generic virtual method thunks.
9759
9760 2008-10-03  Mark Probst  <mark.probst@gmail.com>
9761
9762         * mini-amd64.c, mini-amd64.h: Implement generic virtual method
9763         thunks.
9764
9765 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
9766         
9767         * simd-intrinsics.c: Forgot to add this one.
9768
9769         * mini-codegen.c: Fix macro in case SIMD is not supported.
9770
9771 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
9772         
9773         This patch land initial JIT support for simd intrinsics.
9774
9775         * mini-x86.h: Added new define to make --enable_minimal work on x86.
9776
9777         * Makefile.am: Added simd-intrinsics.c
9778
9779         * simd-intrinsics.c: New file with simd instrinsic related
9780         code.
9781
9782         * cfold.c (mono_constant_fold_ins2): Fold XZERO.
9783
9784         * cpu-x86.md: Add simd related instructions.
9785
9786         * driver.c: Added MONO_OPT_SIMD to the default set of optimizations.
9787
9788         * driver.c: Added two new --regression variants.
9789
9790         * ir-emit.h (MONO_EMIT_NEW_VZERO): Emit XZERO if the type is a simd intrinsic.
9791
9792         * local-propagation.c (mono_local_cprop2): Eliminate useless XMOVE.
9793
9794         * local-propagation.c (mono_local_deadce): Use new macro MONO_IS_NON_FP_MOVE and
9795         extract some complicated logic to helper functions.
9796
9797         * method-to-ir.c (mono_type_to_regmove): Handle simd intrinsics.
9798
9799         * method-to-ir.c (mini_emit_inst_for_method): Emit simd intrinsics.
9800
9801         * method-to-ir.c (mono_handle_global_vregs): If a simd intrinsic was found, apply
9802         the specialized simplification pass.
9803
9804         * method-to-ir.c (mono_spill_global_vars): Use new macro.
9805
9806         * mini-codegen.c: Added SIMD constants to all regbanks arrays.
9807
9808         * mini-codegen.c: Added reg_bank_table_init to initialize the reg desc -> bank
9809         table.
9810
9811         * mini-codegen.c: Define a version of the reg_bank macro that uses desc_to_reg_type
9812         if MONO_ARCH_NEED_SIMD_BANK is defined.
9813
9814         * mini-ops.h: Added the new simd ops.
9815
9816         * mini-x86.c: Added mono_arch_xregname.
9817
9818         * mini-x86.c (mono_arch_cpu_optimizazions): Disable MONO_OPT_SIMD if SSE3 is not detected.
9819
9820         * mini-x86.c (mono_arch_output_basic_block): Add simd related opcodes.
9821
9822         * mini-x86.h: Define simd related MONO_ARCH macros.
9823
9824         * mini.c (mono_type_to_load_membase): Handle simd intrinsics.
9825
9826         * mini.c (mono_type_to_store_membase): Handle simd intrinsics.
9827
9828         * mini.h: Added new macros MONO_IS_NON_FP_MOVE, MONO_IS_REAL_MOVE, MONO_IS_ZERO and
9829         MONO_CLASS_IS_SIMD to deal with simd related IR.
9830
9831         * mini.h (MonoInst): Added spill_var to the backend union.
9832
9833         * mini.h (MonoCompile): Added uses_simd_intrinsics and iconv_raw_var.
9834
9835         * mini.h: Added forward declarations of the new simd fuctions.
9836
9837         * optflags-def.h: Added new optimization names SIMD.
9838
9839         * regalloc.c (mono_regstate_reset): Set next vreg to be the max value of the 3 reg banks.
9840
9841         * regalloc.h: Added support for working with 3 register banks.
9842
9843         * regalloc.h (MonoRegState): Added xsymbolic field if a third regbank is required.
9844
9845         * ssa2.c (mono_ssa_deadce2): Use new MONO_IS_ZERO macro.
9846
9847 Fri Oct 3 16:03:22 CEST 2008 Paolo Molaro <lupus@ximian.com>
9848
9849         * mini-exceptions.c: remove 64 bit related ifdef clutter.
9850
9851 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
9852
9853         * mini-exceptions.c (mono_handle_soft_stack_ovf): Unprotect two pages
9854         instead of one on 64 bit systems.
9855
9856         * method-to-ir.c: Remove unused includes.
9857
9858 2008-10-02  Zoltan Varga  <vargaz@gmail.com>
9859
9860         * aot-compiler.c (emit_exception_debug_info): Use jinfo->used_regs instead of
9861         cfg->used_int_regs, since the two are different on arm.
9862
9863 2008-10-02  Mark Probst  <mark.probst@gmail.com>
9864
9865         * method-to-ir.c, inssel.brg, mini-trampolines.c: Use
9866         mono_method_get_vtable_index() to get the vtable index.
9867
9868 2008-10-02  Mark Probst  <mark.probst@gmail.com>
9869
9870         * method-to-ir.c (mono_method_to_ir2): Don't create native
9871         wrappers for array methods, because they're never called (and if
9872         they were called they wouldn't work).
9873
9874 2008-10-02  Mark Probst  <mark.probst@gmail.com>
9875
9876         * method-to-ir.c (mono_method_to_ir2): Array methods are
9877         special-cased and must not be invoked indirectly via the (M)RGCTX
9878         when generic sharing is turned on.  Fixes #431413.
9879
9880 2008-10-01  Mark Probst  <mark.probst@gmail.com>
9881
9882         * method-to-ir.c: When generic sharing is active, call
9883         non-interface virtual generic methods via the standard trampoline.
9884
9885         * mini-trampolines.c: Handle virtual generic shared methods.
9886
9887         * mini.h, mini-x86.c, mini-x86.h: New argument for
9888         mono_arch_build_imt_thunk() which is non-NULL for virtual generic
9889         method thunks and which is the trampoline to call if the lookup
9890         fails.  Enable the virtual generic method thunk for x86.
9891
9892         * mini-amd64.c, mini-arm.c, mini-ia64.c, mini-sparc.c,
9893         mini-ppc.c (mono_arch_build_imt_thunk): Add the additional
9894         argument but assert that it's NULL, because these archs don't yet
9895         implement the virtual generic method thunk.  Changes in the IMT
9896         thunk data structures.
9897
9898 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
9899
9900         * aot-compiler.c (emit_globals): Avoid invalid characters in
9901         the static linking symbol.
9902
9903         * objects.cs: Add a test for the range check optimization. Fix warnings.
9904
9905         * branch-opts.c (mono_if_conversion): Add back the 'optimize range checks'
9906         optimization from the current JIT.
9907
9908         * method-to-ir.c (mini_emit_inst_for_method): Decompose String.Length
9909         later in decompose_array_access_opts () to allow more optimizations.
9910
9911         * method-to-ir.c (mono_handle_soft_float): Rename this to 
9912         mono_decompose_soft_float () for consistency.
9913
9914         * mini-ops.h: Fix arguments of OP_STRLEN.
9915
9916         * method-to-ir.c (save_cast_details): Extract the cast details saving code
9917         into a separate function.
9918         (reset_cast_details): Ditto.
9919         (handle_unbox): Save cast details. Fixes #431254.
9920
9921         * method-to-ir.c: Remove some obsolete FIXMEs.
9922
9923 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9924
9925         * ir-emit.h (alloc_dreg): Write a warning before crashing.
9926
9927 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9928
9929         * mini-codegen.c: More work on macros to make them
9930         ready for multiple regbanks.
9931
9932 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9933
9934         * method-to.ir.c (mono_type_to_regmove): Remove static modifier.
9935
9936         * mini.h: Export mono_type_to_regmove. Fix signature of mono_regname_full.
9937
9938 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9939
9940         * mini-codegen.c (mono_spillvar_offset): Proper support for
9941         multiple regbanks.
9942
9943 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
9944
9945         * mini-amd64.c (mono_arch_emit_epilog): Remove some duplicated code from
9946         the stack overflow changes.
9947
9948 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9949
9950         * mini-codegen.c: Make all bank macros depend on reg_bank.
9951
9952         * mini-codegen.c (mono_local_regalloc): Make free mask
9953         initialization regbank aware.
9954
9955 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9956
9957         * mini-codegen.c (mono_local_regalloc): Extract callee
9958         mask selection to a function and make it regbank aware.
9959
9960 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9961
9962         * mini-codegen.c (mono_local_regalloc): Changed the cloberring
9963         code to deal with many regbanks.
9964
9965 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
9966
9967         * mini-codegen.c: More fp->regbank changes.
9968
9969 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
9970
9971         * mini-codegen.c: Change asserts to use MONO_NUM_REGBANKS instead
9972         of a hardcoded constant.
9973
9974 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
9975
9976         * method-to-ir.c (type_from_stack_type): Fix typo.
9977
9978 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
9979
9980         * mini-ia64.c (emit_move_return_value): Convert float return values to
9981         double.
9982
9983         * objects.cs: Add a new test.
9984         
9985         * mini-ia64.c (mono_arch_allocate_vars): Disable fp elimination for
9986         VARARG methods to fix an assert later.
9987
9988         * mini-mips.h mini-mips.c mini-ops.h cpu-mips.md: Update the mips back
9989         end so it at least compiles.
9990
9991 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
9992
9993         * method-to-ir.c (emit_optimized_ldloca_ir): Fix this.
9994
9995 2008-09-28  Rodrigo Kumpera  <rkumpera@novell.com>
9996
9997         * method-to-ir.c (mono_method_to_ir2): Extract the ldloca + initobj
9998         optimization to a new function (emit_optimized_ldloca_ir) and enable
9999         it for both ldloca and ldloca_s.
10000
10001 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
10002
10003         * method-to-ir.c (mono_method_to_ir2): Remove an unnecessary assert in the
10004         gshared CASTCLASS code.
10005
10006         * driver.c (mono_main): Add a workaround for shutdown crashes seen on
10007         amd64, where the libc stack unwinder encounters stack frames referring to
10008         native code in unmapped memory.
10009
10010         * method-to-ir.c (mini_emit_check_array_type): Add support for generic
10011         sharing.
10012
10013         * generics.cs: Add new test.
10014
10015 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
10016
10017         * mini-arm.h driver.c: Print the fp model when using --version on arm. Also,
10018         add a check that one of the ARM_FPU_ constants is defined.
10019
10020         * mini-exceptions.c (mono_handle_soft_stack_ovf): Really fix the build.
10021         
10022         * mini-exceptions.c: Fix build on non-altstack platforms.
10023
10024         * method-to-ir.c (mono_method_to_ir2): Fix aot support for the
10025         sharing of vtypes.
10026
10027         * ir-emit.h: Add a comment to NEW_PCONST.
10028
10029         * mini-exceptions.c (mono_altstack_restore_prot): Fix a warning.
10030
10031         * mini.h (MonoJitDomainInfo): Move some fields here from MonoDomain.
10032
10033         * mini.c aot-runtime.c method-to-ir.c driver.c mini-trampolines.c: Update
10034         after the changes to MonoJitDomainInfo.
10035
10036 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10037
10038         * mini-ppc.c, tramp-ppc.c, mini-ppc.h: Implement generic code sharing.
10039
10040 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10041
10042         * mini-ppc.c: Compiler warning fixes.
10043
10044 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10045
10046         * mini-ppc.c: Special handling for 1/2 byte structs on Darwin only
10047         for pinvokes.
10048
10049 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10050
10051         * exceptions-ppc.c, mini-ppc.h: Compile
10052         mono_arch_handle_altstack_exception() on Darwin, too.
10053
10054 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10055
10056         * method-to-ir.c (mono_emit_rgctx_method_call_full): Must also
10057         work on archs which don't have generic sharing implemented, only
10058         without the vtable_arg.
10059
10060 2008-09-26  Mark Probst  <mark.probst@gmail.com>
10061
10062         * mini.c: Added comment explaining why delegate ctor icall
10063         wrappers are compiled.
10064
10065 2008-09-26  Mark Probst  <mark.probst@gmail.com>
10066
10067         * mini.c: Don't produce trampolines to delegate ctor icall
10068         wrappers but compile them upfront.
10069
10070 Fri Sep 26 17:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
10071
10072         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: amd64 support code for calling a
10073         runtime-set function when going back to managed code. Currently this
10074         is used to set back the protection on the soft ovf pages and/or to
10075         throw the stack overflow exception that happened in unmanaged code.
10076
10077 Fri Sep 26 16:46:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
10078
10079         * tramp-x86.c, mini-x86.h, mini-x86.c: x86 support code for calling a
10080         runtime-set function when going back to managed code. Currently this
10081         is used to set back the protection on the soft ovf pages and/or to
10082         throw the stack overflow exception that happened in unmanaged code.
10083
10084 Fri Sep 26 16:34:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
10085
10086         * mini.h, mini.c, mini-trampolines.c, mini-exceptions.c: added
10087         the support code for restoring stack protection after stack overflows
10088         that happen in unmanaged code. Don't set the exec permission on the
10089         soft overflow area.
10090
10091 2008-09-26  Zoltan Varga  <vargaz@gmail.com>
10092
10093         * mini-trampolines.c (mono_delegate_trampoline): Add wrappers even if
10094         delegate->method_ptr is set. Fixes #428054.
10095
10096 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
10097
10098         * tests.cs: Rename to ratests.cs.
10099
10100         * method-to-ir.c: Merge the emit_get_rgctx () calls into the 
10101         emit_get_rgctx_... functions.
10102
10103 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10104
10105         * method-to-ir.c: Eliminated macro EMIT_GET_RGCTX.
10106
10107 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10108
10109         * mini-trampolines.c (mono_magic_trampoline): Unwrap wrappers
10110         before asserting that method is sharable.
10111
10112 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10113
10114         * method-to-ir.c, mini.c, jit-icalls.c: New function for checking
10115         whether method needs a static RGCTX wrapper used instead of
10116         complex conditions.
10117
10118         * generic-sharing.c, mini.h: A few functions moved to
10119         metadata/generic-sharing.c.
10120
10121 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10122
10123         * method-to-ir.c, mini.c, mini-exceptions.c, mini-trampolines.c:
10124         Generic code sharing for value types, which essentially means
10125         treating value type methods like static methods.  The RGCTX is
10126         passed in the same way.
10127
10128 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
10129
10130         * method-to-ir.c (mono_method_to_ir2): Avoid an assert in the NEWOBJ
10131         opcode when creating multi-dimensional arrays of open types.
10132
10133         * generic-sharing.c (mono_method_check_context_used): Handle arrays of
10134         open generic types.
10135
10136         * generics.cs: Add a test.
10137
10138         * mini-codegen.c: Use macros everywhere for checking floats instead of == 'f'.
10139
10140 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
10141
10142         * mini.h (MonoCompile): Add 'disable_vreg_to_lvreg' flag.
10143
10144         * mini.c (mini_method_compile): Set it when running under the debugger. 
10145
10146         * method-to-ir.c (mono_handle_global_vregs): Disable global->local
10147         vreg optimization if the flag is set.
10148
10149         * driver.c (mono_main): Add --attach= option to pass options to
10150         the attach agent.
10151
10152         * mini.c (sigquit_signal_handler): Start the attach agent.
10153
10154         * ssapre.c: Disable this to save space since it is not yet ported to
10155         linear IR.
10156
10157         * regalloc2.c: Disable this to save space.
10158
10159         * mini.h (MonoJitStats): Remove unused analyze_stack_repeat.
10160
10161 Wed Sep 24 16:01:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
10162
10163         * decompose.c, method-to-ir.c, mini-codegen.c, regalloc2.c: make
10164         the -v option useful again.
10165
10166 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
10167
10168         * mini-amd64.c (mono_arch_output_basic_block): Add support for
10169         --break-at-bb.
10170
10171         * inssel.brg (mini_emit_castclass): Avoid the szarray!=array checks for
10172         arrays of arrays. Fixes #428406.
10173
10174         * method-to-ir.c (mini_emit_castclass): Ditto.
10175
10176         * objects.cs: Add new test.
10177         
10178 2008-09-23  Rodrigo Kumpera  <rkumpera@novell.com>
10179
10180         * method-to-ir.c (type_to_eval_stack_type): The code path for the new JIT
10181         was wrong at it choked against target_type_is_incompatible for byref types.
10182
10183 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
10184
10185         * mini-codegen.c: Use 'bank' macros instead of 'is_fp' macros in most 
10186         places.
10187
10188 Tue Sep 23 15:31:45 CEST 2008 Paolo Molaro <lupus@ximian.com>
10189
10190         * mini-exceptions.c: update a few more exceptions-related counters.
10191
10192 Tue Sep 23 15:28:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
10193
10194         * aot-runtime.c, method-to-ir.c, mini.c, mini-trampolines.c: use the
10195         new functions to allocate from persistent mempools.
10196
10197 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
10198
10199         * mini.h regalloc.h mini-codegen.c: Generalize the regalloc code to allow 
10200         multiple register banks in the future.
10201
10202         * mini-codegen.c (mono_local_regalloc): Fix a warning.
10203
10204 2008-09-22  Rodrigo Kumpera  <rkumpera@novell.com>
10205
10206         * mini.c (type_to_eval_stack_type): Remove duplicated function.
10207
10208         * method-to-ir.c (type_to_eval_stack_type): Make this version compatible with both JIT.
10209
10210         * mini.h: Export type_to_eval_stack_type.
10211
10212         This function was nearly duplicated in method-to-ir.c and mini.c. The difference
10213         is only ins->klass of byref types.
10214
10215 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
10216
10217         * method-to-ir.c (mini_emit_memset): Use a default alignment of 4.
10218         (mini_emit_memcpy2): Ditto.
10219
10220         * mini-amd64.c: Fix a warning.
10221
10222 2008-09-21  Mark Probst  <mark.probst@gmail.com>
10223
10224         * exceptions-ppc.c (mono_arch_get_call_filter): Fixed stack frame
10225         linking.
10226
10227 2008-09-19  Rodrigo Kumpera  <rkumpera@novell.com>
10228
10229         * method-to-ir.c: Extract stloc micro-optimization to a
10230         function and apply it to all cases.
10231
10232 2008-09-19  Mark Probst  <mark.probst@gmail.com>
10233
10234         * method-to-ir.c: Don't fail generic code sharing in cases we
10235         already support.
10236
10237 2008-09-18  Mark Probst  <mark.probst@gmail.com>
10238
10239         * mini-ppc.c: Handle structs in tailcalls on Darwin.
10240
10241 Tue Sep 16 21:07:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
10242
10243         * *.c, *.md, mini-ops.h: introduced relaxed_nop opcode for spin wait
10244         implementation.
10245
10246 Tue Sep 16 16:39:16 CEST 2008 Paolo Molaro <lupus@ximian.com>
10247
10248         * trace.c: make tracing more useful and correct, with per-thread
10249         id and indent info.
10250
10251 2008-09-15  Mark Probst  <mark.probst@gmail.com>
10252
10253         * mini-ppc.c (mono_arch_emit_call): Convert floats to R4 when
10254         doing a method call and the argument is an R4.
10255
10256 2008-09-14  Zoltan Varga  <vargaz@gmail.com>
10257
10258         * aot-compiler.c (add_wrappers): Do not generate runtime invoke wrappers for
10259         generic methods.
10260
10261 2008-09-13  Mark Probst  <mark.probst@gmail.com>
10262
10263         * mini-ppc.c: Convert result to single for OP_ICONV_TO_R4.
10264
10265 2008-09-12  Zoltan Varga  <vargaz@gmail.com>
10266
10267         * mini.h (MONO_IS_JUMP_TABLE): Handle GOT_ENTRY.
10268         (MONO_JUMP_TABLE_FROM_INS): Ditto.
10269
10270 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
10271
10272         * driver.c: Add a --agent argument (not supported yet) to load managed
10273         agent assemblies before loading the main assembly, similarly to how the
10274         Java VM handles agents.
10275
10276 2008-09-11  Mark Probst  <mark.probst@gmail.com>
10277
10278         * mini-ppc.c (mono_arch_allocate_vars): Use arch-independent
10279         function to do stack layout of local variables.
10280
10281 2008-09-11  Mark Probst  <mark.probst@gmail.com>
10282
10283         * mini-ppc.c (calculate_sizes): Bugfix in sigcookie position
10284         calculation.
10285
10286 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
10287
10288         * method-to-ir.c ssa2.c mini.c mini-amd64.c decompose.c ssa.c abcremoval.c
10289         abcremoval2.c branch-opts.c driver.c dominators.c: Disable parts of the
10290         JIT if DISABLE_JIT is defined.
10291
10292         * Makefile.am: Avoid compiling/linking in inssel.c if DISABLE_JIT is
10293         defined.
10294
10295 2008-09-10  Mark Probst  <mark.probst@gmail.com>
10296
10297         * iltests.il.in: Disable the fconv test on PPC (the result is
10298         undefined according to ECMA).
10299
10300 2008-09-10  Mark Probst  <mark.probst@gmail.com>
10301
10302         * iltests.il.in: Enable tail call tests for PPC.
10303
10304         * mini.h: Add variable for storing incoming valuetype argument
10305         addresses for tail calls.
10306
10307         * mini-ppc.c: Implement valuetype arguments and return values for
10308         tailcalls on Linux.
10309
10310 2008-09-09  Mark Probst  <mark.probst@gmail.com>
10311
10312         * mini-ppc.c: Partially implement tail calls (struct arguments and
10313         return values not supported).
10314
10315         * method-to-ir.c: Enable tail calls on PPC.
10316
10317 2008-09-08  Zoltan Varga  <vargaz@gmail.com>
10318
10319         * aot-compiler.c (emit_wrapper_info): Omit the klass name from
10320         runtime-invoke wrappers to work around the problem of them getting
10321         assigned to a random class.
10322
10323         * aot-runtime.c (mono_aot_get_method): Ditto.
10324         
10325 2008-09-07  Zoltan Varga  <vargaz@gmail.com>
10326
10327         * mini-exceptions.c mini-mips.h mini-s390.h exceptions-mips.c: Kill
10328         the CUSTOM_EXCEPTION_HANDLING and CUSTOM_STACK_WALK defines.
10329
10330 2008-09-07  Mark Probst  <mark.probst@gmail.com>
10331
10332         * method-to-ir.c (mono_method_to_ir2): Disable tail calls for PPC
10333         until they're implemented properly.
10334
10335         * exceptions-ppc.c: Use arch-independent exception-handling code
10336         instead of custom one.
10337
10338         * exceptions-ppc.c, mini-ppc.c, mini-ppc.h: Bug fixes and changes
10339         for Linear IR.
10340
10341         * tramp-ppc.c, mini-ppc.c: Fixed warnings.
10342
10343         * decompose.c, aot-runtime.c, aot-compiler.c: PPC code also
10344         applies when __powerpc__ is defined.
10345
10346 2008-09-06  Zoltan Varga  <vargaz@gmail.com>
10347
10348         * aot-runtime.c (mono_aot_get_method): Add another cache mapping wrapper
10349         methods to their code to avoid computing the full name of wrappers and
10350         doing a lookup in a string hash table.
10351
10352 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
10353
10354         * method-to-ir.c: Remove the CHECK_BBLOCK () stuff it is not needed since
10355         we identify bblocks before method_to_ir () is ran.
10356
10357         * branch-opts.c (mono_optimize_branches): Avoid nullifying the exit bblock.
10358         Also avoid optimizing branches pointing to themselves.
10359
10360         * mini.c (mini_method_compile): Ditto. Fixes #422947.
10361
10362 2008-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
10363
10364         * driver.c (mono_main): Enable the new verifier under core-clr and cas.
10365
10366 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
10367
10368         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Implement this.
10369         (mono_arch_patch_plt_entry): Fix the calculation of the jump_entry.
10370         (mono_arch_get_nullified_class_init_trampoline): Return 'code' instead of
10371         'buf'.
10372
10373         * aot-compiler.c (emit_plt): Fix the arm plt entries, previously they all 
10374         jumped to the same entry in plt_jump_table.
10375
10376 2008-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
10377
10378         * method-to-ir.c (initialize_array_data): Handle field with RVA from
10379         dynamic images.
10380
10381 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
10382
10383         * method-to-ir.c (handle_isinst): Do the assignment at the beginning, so the
10384         other assignment can be if converted. Saves 1.5% on corlib size and fixes
10385         #421807.
10386
10387 2008-08-29  Geoff Norton  <gnorton@novell.com>
10388
10389         * aot-compiler.c: The Mach/ARM compiler doesn't understand the bss
10390         segment, and doesn't properly handle .space as .text.  Fixes
10391         AOT Mach/ARM
10392
10393 2008-08-29  Geoff Norton  <gnorton@novell.com>
10394
10395         * mini.c: Disable the mach exception handler when running on 
10396         ARM
10397
10398 2008-08-29  Geoff Norton  <gnorton@novell.com>
10399
10400         * aot-compiler.c: Patch from Renaldas Zioma to properly register 
10401         globals on Darwin/ARM
10402
10403 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
10404
10405         * mini.c: Avoid not initializing the runtime when doing AOT compilation, 
10406         since too many things depend on it. Instead, call 
10407         mono_runtime_set_no_exec ().
10408         
10409         * mini.c (mono_create_tls_get): Call mono_alloc_preg (cfg) when running with
10410         the new JIT.
10411
10412         * aot-compiler.c: Add an 'asm-only' AOT option.
10413
10414         * mini.c: Avoid initializing the runtime when doing AOT compilation.
10415                 
10416         * aot-compiler.c (compile_method): Disable gshared support for now as it
10417         doesn't yet work.
10418
10419 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
10420
10421         * mini-amd64.h : Fix a compiler warning.
10422
10423         * exceptions-amd64.c (mono_arch_unwindinfo_install_unwind_info) :
10424           Changed to use a callback function to retrieve the unwind info.
10425           This avoids problems observed when code blocks were removed by
10426           unloading an app domain.
10427
10428         * mini-amd64.c (mono_arch_cpu_optimizazions) : Removing the peephole 
10429           and branch excludes for Winx64.  The fix in exceptions-amd64.c allows them
10430           to work properly.
10431
10432         Contributed under MIT/X11 license.
10433
10434 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
10435
10436         * mini-amd64.c (mono_arch_output_basic_block) : Fix the OP_X86_PUSH_OBJ
10437           case to keep the stack aligned to 8.
10438
10439         Contributed under MIT/X11 license.
10440
10441 2008-08-26  Zoltan Varga  <vargaz@gmail.com>
10442
10443         * aot-runtime.c (mono_aot_get_method): Add a cache for wrapper names to
10444         avoid repeated linear searches.
10445
10446 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
10447
10448         * aot-compiler.c (add_wrappers): Avoid calling get_runtime_invoke with
10449         methods it can't handle.
10450         
10451         * aot-compiler.c (add_method): Avoid adding a method twice.
10452         (add_wrappers): Add runtime invoke wrappers for all methods.
10453
10454         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): New
10455         function to create an aot-compatible version of this trampoline.
10456
10457         * aot-compiler.c aot-runtime.c: Add support for AOT rgctx fetch trampolines.
10458
10459 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
10460
10461         * aot-compiler.c (compile_method): Skip wrappers of generic icalls.
10462
10463         * method-to-ir.c (mono_method_to_ir2): Replace an assert in UNBOX_ANY
10464         with a generic sharing failure.
10465
10466         * aot-compiler.c (emit_klass_info): Call mono_class_get_nested_types ().
10467
10468         * method-to-ir.c (mono_method_to_ir2): Rethrow the correct exception in
10469         CEE_RETHROW. Fixes #419634.
10470
10471         * mini.c (mono_method_to_ir): Ditto.
10472
10473         * exceptions.cs: Add a new test.
10474         
10475         * generic-sharing.c (mini_type_stack_size): Always pass TRUE as allow_open
10476         to mono_type_stack_size_internal () since some callers might not pass in
10477         an rgctx.
10478
10479         * mini-x86.c (mono_arch_emit_prolog): Store the rgctx before calling
10480         instrument_prolog. Fixes #419878.
10481
10482         * mini.c (mono_compile_create_var_for_vreg): Make the lvars representing
10483         doubles in soft float mode volatile.
10484
10485 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
10486
10487         * ir-emit.h (NEW_ARGSTORE): Use cfg->args and cfg->arg_types to fix the build.
10488
10489         * method-to-ir.c (mono_save_args): Use ARGSTORE instead of TEMPSTORE
10490         to handle soft float correctly.
10491
10492         * tramp-arm.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Implement
10493         the fast path.
10494
10495         * mini.h (struct MonoCallInst): Add dynamic_imt_arg boolean field.
10496
10497         * exceptions-arm.c (mono_arch_find_jit_info): Set ctx->regs [ARMREG_R11]
10498         to sp, since the generics catch code requires it.
10499
10500         * mini-arm.h (MONO_ARCH_VTABLE_REG): Use R0 for this to avoid needless
10501         copying.
10502
10503         * method-to-ir.c (emit_imt_argument): Pass imt_arg to 
10504         mono_arch_emit_imt_argument ().
10505
10506         * mini-<ARCH>.c (mono_arch_emit_imt_argument): Add an 'imt_arg' argument.
10507
10508         * mini-arm.c tramp-arm.c: Generic sharing updates.
10509
10510 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
10511
10512         * mini-arm.c: Fix the arm build.
10513
10514         * generic-sharing.c (mini_type_get_underlying_type): New helper function
10515         handling enums, generic instances and generic sharing.
10516         (mini_type_stack_size_full): Ditto.
10517
10518         * mini-amd64.c mini-x86.c mini-arm.c: Use the new functions.
10519         
10520         * mini.h (struct): Add 'uses_rgctx_reg' and 'uses_vtable_reg' fields.
10521
10522         * method-to-ir.c: Set the new fields when using RGCTX_REG/VTABLE_REG.
10523
10524         * tramp-arm.c: Implement the rgctx fetch and the generic class init 
10525         trampolines.
10526
10527         * mini-arm.c: Various small generic sharing changes.
10528
10529         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline): Implement
10530         this for x86.
10531         (mono_arch_create_trampoline_code): Remove most of the GENERIC_CLASS_INIT
10532         custom code.
10533
10534         * mini-trampolines.c (mono_create_generic_class_init_trampoline): New
10535         helper function to return a generic class init trampoline.
10536
10537         * method-to-ir.c mini.c: Use it.
10538         
10539         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline): New
10540         arch-specfic function to return a generic class init trampoline.
10541
10542         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Remove most of
10543         the GENERIC_CLASS_INIT custom code.
10544
10545         * method-to-ir.c (mono_method_to_ir2): If RGCTX_REG is not defined, that is
10546         a fatal error, not a sharing failure.
10547
10548         * tramp-<ARCH>.c (mono_arch_get_rgctx_lazy_fetch_offset): Removed, no longer
10549         needed.
10550
10551         * mini-trampolines.c (mono_rgctx_lazy_fetch_trampoline): Get the additional
10552         trampoline argument from MONO_ARCH_VTABLE_REG.
10553
10554         * tramp-x86.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
10555         order of the arguments to the C trampoline: pass 'slot' as the trampoline
10556         argument, and pass the vtable in VTABLE_REG.
10557
10558         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
10559         order of the arguments to the C trampoline: pass 'slot' as the trampoline
10560         argument, and pass the vtable in VTABLE_REG.
10561         (mono_arch_create_trampoline_code_full): Remove some special casing for
10562         the rgctx fetch trampoline.
10563
10564         * mini.c (mono_method_to_ir): Fix the STELEM_ANY+null value optimization.
10565         Fixes #419273.
10566
10567         * iltests.il: Add a test for it.
10568
10569 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
10570
10571         * aot-compiler.c (compile_method): Enable AOT support for generics sharing.
10572
10573         * method-to-ir.c (mono_method_to_ir2): Remove an aot restriction which is
10574         no longer needed.
10575
10576         * mini-trampolines.c (mono_magic_trampoline): Add a sync wrapper here,
10577         use mono_jit_info_table_find () to avoid recursion.
10578         (mono_delegate_trampoline): Add a sync wrapper here.
10579
10580         * method-to-ir.c (mono_method_to_ir2): Don't call mono_ldftn_nosyc
10581         here.
10582
10583         * mini.c (mono_method_to_ir): Ditto.
10584         
10585         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Remove
10586         add_sync_wrapper argument. Don't add a sync wrapper here.
10587         (mono_create_jump_trampoline): Don't add a sync wrapper here.
10588
10589         * jit-icalls.c (mono_ldftn_nosync): Removed, no longer needed.
10590         
10591 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
10592
10593         * exceptions-amd64.c (seh_handler):  For Winx64 adding missing copy 
10594           of nonvolatile registers back from MonoContext to CONTEXT.
10595
10596         Contributed under MIT/X11 license.
10597
10598 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
10599
10600         * mini-amd64.c (mono_arch_get_delegate_invoke_impl):  When shifting the
10601           arguments on Winx64 there are only 4 argument registers.  For this
10602           logic to work the last argument must be pulled from the stack.  
10603
10604         Contributed under MIT/X11 license.
10605
10606 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
10607
10608         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
10609
10610         * aot-runtime.c aot-compiler.c patch-info.h mini.c: Get rid of
10611         MONO_PATCH_INFO_WRAPPER, encode/decode wrapper methods like the others in
10612         encode/decode_method_ref ().
10613
10614         * aot-compiler.c (encode_patch): Handle STATIC_RGCTX_INVOKE wrappers.
10615
10616         * aot-runtime.c (decode_patch): Ditto.  
10617
10618         * mini.c (mono_resolve_patch_target): Handle RGCTX_FETCH sub-patches of type
10619         MONO_PATCH_INFO_METHOD.
10620
10621         * aot-runtime.c (decode_exception_debug_info): Decode the contents of
10622         MonoGenericJitInfo.
10623
10624         * aot-compiler.c (emit_exception_debug_info): Emit the contents of
10625         MonoGenericJitInfo.
10626
10627         * method-to-ir.c (emit_imt_argument): Fix AOT+gshared support.
10628
10629         * mini-amd64.c (add_valuetype): Use a dummy gsctx if we didn't receive
10630         one from the caller.
10631
10632         * aot-runtime.c (decode_generic_inst): New function to decode and
10633         return a interned generic inst.
10634         (decode_klass_ref): Use it.
10635         (decode_method_ref): Ditto.
10636
10637         * aot-compiler.c (emit_exception_debug_info): Save 
10638         jinfo->has_generic_jit_info too.
10639
10640 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
10641
10642         * mini-ia64.c (mono_arch_output_basic_block): Add OP_FCONV_TO_I.
10643
10644         * iltests.il.in: Add a test for fconv_to_i.
10645
10646         * liveness.c: Disable the liveness2 pass for now to save space.
10647
10648         * regalloc2.c: Include mempool-internals.h to fix warnings.
10649
10650         * aot-compiler.c (encode_method_ref): Encode the context of generic
10651         instance methods.
10652
10653         * aot-runtime.c (decode_method_ref): Inflate generic methods using
10654         the context saved in the aot file.
10655
10656         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
10657
10658         * mini-x86.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
10659
10660         * method-to-ir.c (mono_method_to_ir2): When using CEE_JMP, make arguments
10661         volatile so they won't be optimized away.
10662
10663 2008-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
10664
10665         * ssa.c:
10666         * ssa2.c:
10667         * mini.c:
10668         * regalloc2.c:
10669         * dominators.c: Remove duplicated functions that now are in
10670         mempool-internals.h.
10671
10672 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
10673
10674         * aot-compiler.c: Fix warnings.
10675
10676         * aot-runtime.c (decode_klass_ref): Add support for VARs/MVARs.
10677
10678         * aot-compiler.c (encode_klass_ref): Encode is_method too for VARs/MVARs.
10679
10680         * method-to-ir.c (emit_get_rgctx_method): Use MONO_PATCH_INFO_METHODCONST
10681         as the patch type.
10682
10683         * mini.c (mono_resolve_patch_target): Ditto.
10684         
10685         * aot-compiler.c (encode_patch): Add support for RGCTX_FETCH.
10686         (encode_klass_ref): Add support for encoding VARs/MVARs.
10687
10688         * mini.c (mono_patch_info_dup_mp): Handle RGCTX_FETCH.
10689
10690         * aot-runtime.c (decode_patch_info): Rename to 'decode_patch'. Split out
10691         the handling of the got entries into a separate 'decode_got_entry' function.
10692         Add support for RGCTX_FETCH.
10693
10694         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RDI since RAX is
10695         clobbered by the trampoline code.
10696
10697         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RAX since that is
10698         not clobbered by the indirect calling code.
10699
10700 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
10701
10702         * mini-x86.c (mono_arch_patch_code): Handle RGCTX_FETCH/GENERIC_CLASS_INIT
10703         to fix the build.
10704
10705 2008-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
10706
10707         * method-to-ir.c (mono_emit_method_call_full): Alloc the constructor
10708         signature using the compilation mempool otherwise we would leak it.
10709
10710 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
10711
10712         * method-to-ir.c (mono_method_to_ir2): Emit the generic class inits using
10713         mono_emit_abs_call ().
10714
10715         * patch-info.h: Add GENERIC_CLASS_INIT.
10716
10717         * mini.c (mono_resolve_patch_target): Handle GENERIC_CLASS_INIT.
10718
10719         * mini-amd64.c (emit_call_body): Treat abs calls which have a patch info
10720         as their target as a near call.
10721
10722         * mini.c (mono_codegen): Handle patches stored in cfg->abs_patches in the
10723         ABS handling code.
10724         (mono_resolve_patch_target): Add support for MONO_PATCH_INFO_RGCTX_FETCH.
10725
10726         * method-to-ir.c (mono_emit_abs_call): New helper function which emits a
10727         call to a runtime function described by a patch.
10728
10729         * method-to-ir.c: Emit rgctx entry fetches and class init trampolines using
10730         mono_emit_abs_call, this has the advantage that the ABS handling code in
10731         mono_codegen () can handle them both, and can handle other stuff in the
10732         future without additional code.
10733
10734         * mini.h (struct MonoJumpInfoRgctxEntry): New structure describing an rgctx
10735         entry.
10736         (MonoCompile): Add 'abs_patches' hashtable, which contains patches describing
10737         abs addresses.
10738
10739         * mini.h: Add missing bblock related prototypes.
10740
10741         * mini.h (MonoCompile): Remove unused reverse_inst_list and
10742         reverse_inst_list_len fields.
10743
10744         * mini.c: Refactor this file a bit by moving branch optimizations to 
10745         branch-opts.c.
10746
10747         * method-to-ir.c: Merge generic sharing changes missed earlier.
10748
10749         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST.
10750
10751         * aot-runtime.c (decode_patch_info): Refactor the code dealing with the
10752         shared patches. Process METHODCONST as a shared patch.
10753
10754         * liveness.c (mono_analyze_liveness): Disable the liveness2 code for now
10755         as it crashes on the 2.0 mscorlib.
10756
10757         * aot-compiler.c (is_shared_got_patch): Revert the last change as it seems
10758         to cause crashes.
10759         
10760         * aot-compiler.c: Use is_plt_patch () in a few additional places.
10761         (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST, which is generated
10762         by IMT.
10763
10764         * aot-compiler.c: Reorganize the got handling code to be a bit more
10765         understandable.
10766
10767 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
10768
10769         * aot-compiler.c: Make the patch_to_plt_offset hash table use 
10770         mono_patch_info_equals/hash, and use it to massively simplify
10771         get_plt_index ().
10772
10773         * mini.c (mono_patch_info_hash): Simplify this and add support for
10774         more patch types.
10775
10776         * patch-info.h: Rename RGCTX_LAZY_FETCH_TRAMPOLINE to just RGCTX_FETCH.
10777
10778         * mini.c aot-compiler.c aot-runtime.c: Revert the LAZY_FETCH_TRAMPOLINE
10779         handling code, since an offset is not enough to identify a trampoline.
10780
10781         * method-to-ir.c: Remove some g_assert (!cfg->compile_aot) lines.
10782
10783 2008-08-17  Mark Probst  <mark.probst@gmail.com>
10784
10785         * mini.c (mono_op_imm_to_op): Add case for OP_IMUL_IMM.
10786
10787         * method-to-ir.c (mono_method_to_ir2): Decompose OP_CKFINITE.
10788
10789         * mini-ops.h: Argument and result types for OVF_CARRY ops.
10790
10791         * decompose.c: PPC decompositions for various ops.
10792
10793         * cpu-ppc.md, inssel-ppc.brg, mini-ppc.c: PPC changes for Linear IL.
10794
10795 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
10796
10797         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Make this
10798         call the generic trampoline code using a call, instead of a jump, to
10799         remove some special casing from the generic trampoline code.
10800
10801         * mini.c (mono_resolve_patch_target): Handle LAZY_FETCH_TRAMPOLINE.
10802         (mono_codegen): Ditto.
10803
10804         * aot-compiler.c aot-runtime.c: Ditto.
10805
10806         * patch-info.h: Add MONO_PATCH_INFO_RGCTX_LAZY_FETCH_TRAMPOLINE.
10807
10808         * mini-trampolines.c (mono_find_rgctx_lazy_fetch_trampoline_by_addr): New
10809         helper function to find the offset corresponding to a lazy fetch trampoline.
10810
10811         * mini.h (MonoCompile): Add 'orig_method' field to hold the original method
10812         when doing generic sharing.
10813
10814         * aot-compiler.c: Use cfg->orig_method instead of cfg->method in a lot of
10815         places.
10816         
10817         * mini.c (mono_create_rgctx_lazy_fetch_trampoline): Move this to
10818         mini-trampolines.c to be with the other trampoline creation functions.
10819
10820         * method-to-ir.c (mono_emit_method_call): Remove the 'signature' argument
10821         as it is equal to method->signature in most cases, add a 
10822         mono_emit_method_call_full variant which takes a signature and an imt
10823         argument as well.
10824
10825 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
10826
10827         * jit-icalls.c (mono_helper_compile_generic_method): Don't pass the context
10828         to this function, since it could be computed easily from the method 
10829         argument.
10830         (mono_helper_compile_generic_method_wo_context): Removed, not needed any
10831         more.
10832
10833         * method-to-ir.c mini.c: Remove references to 
10834         compile_generic_method_wo_context.
10835
10836         * method-to-ir.c (mono_method_to_ir2): Enable AOT for virtual
10837         generic method calls.
10838         
10839         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_1 for 1
10840         dimensional non-szarrays.
10841
10842         * mini.c (mini_init): Register mono_array_new_1.
10843
10844         * jit-icalls.c (mono_array_new_1): New jit icall.
10845
10846         * mini-trampolines.c (mono_magic_trampoline): For jumps, patch the GOT entries
10847         pointing to the method.
10848
10849         * aot-runtime.c (mono_aot_get_method_from_token): Register GOT slots holding
10850         method addresses belonging to METHOD_JUMP patches in the 
10851         jump_target_got_slot_hash.
10852         (mono_aot_load_method): Ditto.
10853
10854         * aot-compiler.c (compile_method): Allow AOT compilation of methods with
10855         METHOD_JUMP patches.
10856
10857         * mini.c (mini_create_jit_domain_info): New helper function which 
10858         initializes/frees domain->runtime_info.
10859         (mini_free_jit_domain_info): Ditto.
10860         (mini_init): Install the domain hook functions with the runtime.
10861
10862         * mini.h (MonoJitDomainInfo): New structure which stores the domain specific
10863         information maintained by the JIT.
10864
10865         * mini.c (mono_resolve_patch_target): For PATCH_INFO_METHOD_JUMP, move the
10866         insertion into jump_table_hash into mono_codegen (), also implement proper
10867         locking.
10868
10869         * method-to-ir.c (mono_method_to_ir2): Don't disable AOT for CEE_JMP and
10870         tail calls, it is already done by the aot code.
10871         
10872         * method-to-ir.c (mono_method_to_ir2): Handle CEE_JMP using the tail call
10873         mechanism on amd64.
10874
10875         * iltests.il.in: Make the jmp test a bit more complex.
10876
10877         * aot-compiler.c (encode_method_ref): Handle references to normal methods of
10878         generic instances which doesn't have a token.
10879
10880         * aot-runtime.c (decode_method_ref): Ditto.
10881         
10882         * method-to-ir.c (handle_unbox_nullable): Don't disable AOT, the aot code
10883         can handle this case now.
10884         (handle_box): Ditto.
10885
10886 2008-08-15  Geoff Norton  <gnorton@novell.com>
10887
10888         * mini-x86.c: Fix alignment on Apple x86, and re-disable the alignment
10889         debugging check.
10890
10891 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
10892
10893         * method-to-ir.c (mono_method_to_ir2): Allow AOT compilation of methods
10894         calling generic methods.
10895
10896         * aot-compiler.c (encode_patch): Handle MONO_PATCH_INFO_METHOD_RGCTX.
10897
10898         * aot-runtime.c (decode_patch_info): Ditto.
10899
10900         * mini.c (mono_resolve_patch_target): Ditto.
10901         
10902         * patch-info.h: Add METHOD_RGCTX.
10903
10904         * mini-amd64.c (mono_arch_output_basic_block): Optimize LOCALLOC_IMM.
10905
10906 2008-08-14  Zoltan Varga  <vargaz@gmail.com>
10907
10908         * mini-amd64.c (mono_arch_emit_call): Nullify call->vret_var if returning
10909         arguments in registers.
10910
10911         * decompose.c (mono_decompose_vtype_opts): Create a var for the vreg in
10912         OP_VCALL too, don't depend on OP_OUTARG_VTRETADDR doing it.
10913
10914         * mini.c (mini_method_compile): Abort aot compilation for generic
10915         methods if generic sharing is disabled.
10916         
10917         * mini.c (mono_method_to_ir): Disable AOT for virtual calls requiring
10918         an mrgctx.
10919
10920         * method-to-ir.c (mono_method_to_ir2): Disable AOT for virtual calls 
10921         requiring an mrgctx.
10922
10923         * decompose.c (mono_decompose_vtype_opts): Emit the correct sized
10924         store instructions when converting a vcall to a normal call.
10925
10926         * mini.c (sigprof_signal_handler): Call mono_find_jit_info instead of
10927         mono_arch_find_jit_info.
10928
10929 2008-08-13  Zoltan Varga  <vargaz@gmail.com>
10930
10931         * method-to-ir.c (check_inline_called_method_name_limit): Optimize this to
10932         avoid calling mono_method_full_name () for every method even if the
10933         env var is not set.
10934         (check_inline_caller_method_name_limit): Ditto.
10935
10936 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
10937
10938         * driver.c (main_thread_handler): Allow AOT compilation of multiple 
10939         assemblies in one run.
10940
10941         * aot-compiler.c (mono_compile_assembly): Only print out a count of
10942         skipped methods if it is not 0.
10943
10944         * Makefile.am (aotcheck): AOT compile all test assemblies in one run.
10945
10946 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
10947
10948         * mini.c (mono_codegen):  Changing a preprocessor check from WIN64 to
10949           MONO_ARCH_HAVE_UNWIND_TABLE.
10950
10951         Contributed under MIT/X11 license.
10952
10953 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
10954
10955         * mini-amd64.c (mono_arch_cpu_optimizazions):  Remove peephole and branch
10956           from default optimizaton list on Winx64.
10957
10958         * mini-amd64.c (emit_tls_get):  Added Winx64 specific implementation for GetTLS.
10959
10960         * mini-amd64.c (mono_arch_emit_prolog):  Adding an offset on Winx64 to get
10961           the LMF from the MonoJitTlsData structure.
10962
10963         * mini-amd64.c (mono_arch_setup_jit_tls_data):  Added Winx64 implementation.
10964
10965         Contributed under MIT/X11 license.
10966
10967 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
10968
10969         * mini.c (sigsegv_signal_handler): Fix the build.
10970
10971         * mini-amd64.c (emit_call_body): Use image->aot_module instead of 
10972         assembly->aot_module.
10973
10974         * aot-runtime.c: Use image->aot_module instead of searching in the aot_modules
10975         hash table. This simplifies and speeds up a lot of code, and fixes support
10976         for .netmodules.
10977
10978         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes if the thread is not registered
10979         with the runtime.
10980
10981         * mini-exceptions.c: Ditto.
10982         
10983         * exceptions-*c.c (mono_arch_find_jit_info): Remove unused 'trace' and
10984         'native_offset' argument, since these are computed in the 
10985         mono_find_jit_info () function.
10986
10987         * mini-exceptions.c (mono_find_jit_info): Make this non-static, as it
10988         is used by exceptions-ppc.c.
10989
10990         * exceptions-ppc.c: Call mono_find_jit_info () instead of 
10991         mono_arch_find_jit_info ().
10992         
10993         * mini-ppc.h exceptions-ppc.c mini-mips.h mini-mips.c exceptions-mips.c
10994         mini-exceptions.c: Get rid of the CUSTOM_STACK_WALK stuff, use the
10995         generic code in mini-exceptions.c.
10996
10997 2008-08-11  Zoltan Varga  <vargaz@gmail.com>
10998
10999         * mini-ppc.c (mono_arch_flush_register_windows): Add this for ppc.
11000
11001         * aot-runtime.c (mono_aot_get_plt_info_offset): Fix a warning.
11002         
11003         * aot-runtime.c (mono_aot_get_method): Avoid doing all the loading inside
11004         the aot lock, to avoid deadlocks when mono_aot_get_class_from_name () is
11005         called while holding the loader lock. Fixes #415608.
11006         (mono_aot_get_method_from_token_inner): Ditto.
11007
11008 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
11009
11010         * exceptions-ppc.c (mono_jit_walk_stack): Use MONO_INIT_CONTEXT_FROM_CURRENT
11011         to reduce differences between this and the generic implementation in
11012         mini-exceptions.c.
11013         (ves_icall_get_frame_info): Ditto.
11014
11015         * mini-ppc.h (MONO_INIT_CONTEXT_FROM_CURRENT): Define this for ppc too.
11016
11017         * mini-exceptions.c (mono_exceptions_init): Remove an #ifdef which is no
11018         longer neccesarry.
11019
11020         * exceptions-ppc.c (arch_get_call_filter): Rename this to 
11021         mono_arch_get_call_filter () and make it non-static, for consistency with the
11022         other architectures.
11023
11024 2008-08-09  Rodrigo Kumpera  <rkumpera@novell.com>
11025
11026         * mini.c:
11027         * local-propagation.c:
11028         * mini-x86.c: Correct the name of arch defines.
11029
11030 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
11031
11032         * method-to-ir.c (mono_op_to_op_imm_noemul): Correct name of
11033         NO_EMULATE_LONG_SHIFT_OPS define.
11034
11035 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
11036
11037         * method-to-ir.c (mono_method_to_ir2): Remove some code from CEE_MONO_LDPTR
11038         now that aot-ed icall wrappers use CEE_MONO_ICALL_ADDR.
11039
11040         * aot-compiler.c aot-runtime.c: Add support for static aot compilation.
11041         MACH fixes. Merged from the 2.0 branch.
11042
11043         * method-to-ir.c (mono_method_to_ir2): Handle CEE_MONO_ICALL_ADDR.
11044
11045         * mini.c (mono_resolve_patch_target): Error out if an icall is not found.
11046         (mono_method_to_ir): Handle CEE_MONO_ICALL_ADDR.
11047
11048         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Add AOT support.
11049
11050         * method-to-ir.c mini.c driver.c aot-compiler.c: Update after
11051         mono_marshal_get_native_wrapper () signature changes.
11052
11053 2008-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
11054
11055         * jit-icalls.c (mono_fconv_ovf_u8): Work around soft-float double to long
11056         conversion bug under arm.
11057
11058 2008-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
11059
11060         * cpu-arm.md: Increase long_conv_to_ovf_i4_2 max length to 36.
11061
11062         * mini-arm.c (mono_arch_output_basic_block): Implement long to int conversion
11063         with overflow checking.
11064
11065 2008-08-05  Marek Habersack  <mhabersack@novell.com>
11066
11067         * Makefile.am (GENMDESC_PRG): when cross-compiling use full path
11068         to the genmdesc.pl file
11069
11070 2008-08-05  Zoltan Varga  <vargaz@gmail.com>
11071
11072         * ir-emit.h (EMIT_NEW_ARGSTORE): Fix the usage of param_types and
11073         arg_array in the soft-float versions of the LOAD/STORE macros.
11074
11075         * method-to-ir.c (mono_method_to_ir2): Fix a warning in the arm switch
11076         implementation.
11077
11078         * ir-emit.h (NEW_VARLOADA): Handle SOFT_FLOAT correctly.
11079
11080 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
11081
11082         * mini-ia64.c (add_valuetype): Only reserve half parameter slot for each member of
11083         a float HFA. Fixes #413621.
11084
11085 2008-08-02  Gert Driesen  <drieseng@users.sourceforge.net>
11086
11087         * mini-x86.c (mono_arg_get_argument_info): Rename last occurrence of
11088         frame_size to args_size. Fixes build.
11089
11090 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
11091
11092         * mini-x86.c (mono_arch_get_argument_info): Rename frame_size to args_size,
11093         and don't align it to MONO_ARCH_FRAME_ALIGNMENT.
11094
11095         * mini-x86.h: Change MONO_ARCH_FRAME_ALIGNMENT to 8 so doubles stored on
11096         the stack are not unaligned. Fixes #413247.
11097         
11098 Fri Aug 1 18:46:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
11099
11100         * mini.c: update jitted methods performance counters.
11101
11102 Fri Aug 1 16:30:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
11103
11104         * mini-exceptions.c: increase the exceptions thrown performance
11105         counter in mono_handle_exception ().
11106
11107 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
11108
11109         * aot-runtime.c: Use MonoImage's as keys in the aot_modules hash so the aot
11110         can work with netmodules.
11111
11112 2008-07-28  Geoff Norton  <gnorton@novell.com>
11113
11114         * mini-x86.h: Correct the frame alignment on OSX.  Fixes the jit 
11115         regression tests.
11116
11117 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
11118
11119         * mini-x86.c (mono_arch_emit_call): Emi the osx stack alignment at the
11120         correct place.
11121
11122 2008-07-28  Bill Holmes  <billholmes54@gmail.com>
11123
11124         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
11125           The float param registers and other param registers must be the 
11126           same index on Windows x64.
11127
11128         * mini-amd64.c (mono_arch_allocate_vars) : Implementing the 
11129           ArgValuetypeAddrInIReg argument case.  Setting the argument
11130           op to OP_VTARG_ADDR (OP_REGOFFSET)).
11131
11132         * mini-amd64.c (mono_arch_call_opcode) : Winx64 fix.  Use the size
11133           variable computed above as the copy length for arguments of storage
11134           type ArgValuetypeAddrInIReg.
11135
11136         * mini-amd64.c (mono_arch_emit_call) :  Implementing the 
11137           ArgValuetypeAddrInIReg argument case.  This case will rely on
11138           mono_arch_emit_outarg_vt to emit the correct code later in the process.
11139
11140         * mini-amd64.c (mono_arch_emit_call) :  On Winx64 there always needs to be
11141           a 32 byte stack allocation for all calls.  We will omit the adjustment for
11142           jump and tail call instructoins as they do not follow the typical call behavior.
11143
11144         * mini-amd64.c (mono_arch_emit_outarg_vt) :  Implementing the case for
11145           ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
11146           local variable and pass the local variable by reference to the called method.
11147
11148         * mini-amd64.c (mono_arch_emit_prolog, emit_load_volatile_arguments) :
11149           Implementing the ArgValuetypeAddrInIReg argument case.  When the address
11150           of a struct is passed in a register it must be saved with the other
11151           volatile argument on the stack.
11152
11153         * mini-amd64.c (mono_arch_emit_prolog) : Winx64 fix.  When omitting the
11154           frame pointer the stack adjustment value must be saved to the unwind 
11155           info structure.
11156
11157         Contributed under MIT/X11 license.
11158
11159 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
11160
11161         * inssel-x86.brg (stmt): Add missing OP_X86_OUTARG_ALIGN_STACK rule
11162         which got lost in the merge.
11163
11164 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
11165
11166         * method-to-ir.c: Make the helper_sig variables extern to fix the ppc
11167         build.
11168
11169         * mini-amd64.c (emit_call_body): Add a no_patch case missed earlier.
11170         
11171         * mini-amd64.c (emit_call_body): Avoid aligning the call instruction on
11172         icalls, since they won't be patched.
11173
11174         * exceptions-amd64.c (mono_arch_get_restore_context_full): Use a slightly
11175         different code sequence when running under valgrind to prevent some valgrind
11176         errors.
11177
11178         * iltests.il.in: Add new regression test.
11179
11180         * method-to-ir.c (mono_method_to_ir2): Fix handling of inlined methods which
11181         end with a throw.
11182
11183         * method-to-ir.c (mono_method_to_ir2): Use get_vreg_to_inst () instead of
11184         accessing cfg->vreg_to_inst directly to prevent a crash in LDFLD.
11185
11186         * iltests.il.in: Add new test.
11187
11188         * aot-compiler.c: Fix some warnings.
11189
11190         * decompose.c (mono_decompose_long_opts): Implement OP_ICONV_TO_OVF_I8_UN.
11191         Fixes #412494.
11192
11193 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
11194
11195         * driver.c (mono_main): Fix the --gc=none build. Fixes #412482.
11196         (mini_usage_jitdeveloper): Add a missing --wapi option.
11197
11198 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
11199
11200         * mini-codegen.c: Simplify the is_fp macros.
11201         (free_up_ireg): Remove, use free_up_reg instead.
11202         (free_up_reg): Fix the fp case.
11203
11204 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
11205
11206         * cpu-arm.md (loadr8_membase): Increase the length of this as this is not
11207         lowered earlier.
11208
11209         * exceptions-x86.c: Merge some changes which seemed to have got lost
11210         in the linear-ir merge.
11211
11212         * liveness.c: Disable the liveness2 pass on 32 bit platforms.
11213
11214         * method-to-ir.c (mono_handle_global_vregs): Make the component vregs of a
11215         long vreg volatile even if the variable was already created.
11216
11217         * liveness.c (update_liveness2): Avoid eliminating dead definitions of
11218         volatile variables.
11219
11220 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
11221
11222         * cpu-x86.md (fcall_membase): Increase the size of the fcall opcodes.
11223
11224         * mini.c (mono_jit_compile_method_inner): Add support for 
11225         MONO_EXCEPTION_BAD_IMAGE.
11226
11227         * method-to-ir.c (mono_method_to_ir2): Avoid a crash if 
11228         mini_method_get_context () returns NULL. Fixes #356531.
11229
11230         * mini.c (mono_method_to_ir): Ditto.
11231         
11232         * method-to-ir.c (mono_method_to_ir2): Create a variable if needed when
11233         accessing a field of a valuetype in LDFLD/STFLD. Fixes #412399.
11234
11235 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
11236
11237         * method-to-ir.c (mono_method_to_ir2): Initialize an uninitialized variable
11238         in the LDFTN implementation.
11239
11240 2008-07-25  Mark Probst  <mark.probst@gmail.com>
11241
11242         * mini-trampolines.c (mono_magic_trampoline): When sharing generic
11243         code, patch calls to icalls, too, even if they're not in the
11244         shared generic code hash.  Fixes #411962.
11245
11246 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
11247
11248         * cpu-x86.md: Increase the length of the fcall opcodes.
11249
11250         * mini-x86.c (emit_move_return_value): Avoid some precision issues for
11251         calls returning floats.
11252
11253         * method-to-ir.c (mono_method_to_ir2): Remove the generic sharing restrictions
11254         on NEWARR.
11255         
11256         * method-to-ir.c (mono_method_to_ir2): Merge some LDFTN gsharing changes
11257         missed earlier.
11258
11259         * method-to-ir.c (handle_delegate_ctor): Avoid putting dynamic methods
11260         into the domain->method_code_hash.
11261
11262         * aot-compiler.c: Fix win32 build.
11263
11264         * method-to-ir.c (EMIT_GET_RGCTX): Call EMIT_NEW_LDARG in emit_get_rgctx ().
11265         
11266         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_specific in the
11267         gshared NEWARR implementation.
11268
11269         * cpu-sparc.md: Remove duplicate localloc_imm opcode.
11270
11271         * ir-emit.h (NEW_ARGLOAD): Use cfg->args and cfg->arg_types so this macro
11272         can be used outside of method_to_ir.
11273
11274         * mini.h (MonoCompile): Add arg_types field.
11275
11276         * method-to-ir.c (inline_method): Save/Restore cfg->args and cfg->arg_types.
11277         
11278         * method-to-ir.c (mono_method_to_ir2): Set cfg->args and cfg->arg_types to
11279         the values of the local arg_array and param_types array.
11280
11281 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
11282
11283         * method-to-ir.c (mono_method_to_ir2): Allocate a GOT var for NEWOBJ, since
11284         got accesses might only get generated later when NEWOBJ is decomposed.
11285         
11286         * method-to-ir.c (handle_delegate_ctor): Add an optimization to avoid
11287         looking up the native code of the target method when a delegate is called
11288         for the first time.
11289
11290         * mini-trampolines.c (mono_delegate_trampoline): Add the other half of the
11291         optimization.
11292
11293         * debug-debugger.c (MONO_DEBUGGER__debugger_info): Fix a warning.
11294
11295         * aot-runtime.c aot-compiler.c: Add a new option 'no-dlsym' which makes
11296         AOT work on platforms without a working dlsym implementation.
11297
11298         * mini.h: Bump AOT image format version.
11299         
11300 2008-07-24  Mark Probst  <mark.probst@gmail.com>
11301
11302         * mini-exceptions.c: Free a MonoType with
11303         mono_metadata_free_type() instead of g_free().
11304
11305         * aot-runtime.c: Free a MonoType.
11306
11307 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
11308
11309         * method-to-ir.c (mono_method_to_ir2): Add a comment for the box+brtrue
11310         optimization.
11311
11312         * mini-codegen.c (mono_local_regalloc): Remove the remaining items from the
11313         fp stack on x86.
11314
11315 2008-07-23  Massimiliano Mantione  <massi@ximian.com>
11316         * mini.c (sigprof_signal_handler): call the new "runtime initialized"
11317         profiler hook.
11318
11319 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
11320
11321         * method-to-ir.c (mono_method_to_ir2): Set the stack type properly for
11322         NEWOBJ calls on valuetypes.
11323
11324         * iltests.il.in: Add new test.
11325
11326         * mini-x86.c (mono_arch_emit_call): Use mini_type_stack_size ().
11327
11328 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
11329
11330         * mini-exceptions.c: Fix some warnings. Remove one ia64 special case as it
11331         is no longer needed.
11332
11333         * mini-ia64.c (mono_arch_emit_prolog): In native-to-managed wrappers, widen
11334         non register sized integer arguments.
11335         (mono_arch_call_opcode): Add support for ArgInFloatRegR4.
11336         (mono_arch_emit_outarg_vt): Pass a more reasonable alignment to 
11337         emit_memcpy2 ().
11338
11339         * method-to-ir.c (mono_method_to_ir2): Handle the ret_var_is_local case in
11340         CEE_MONO_RETOBJ.
11341         
11342         * method-to-ir.c (ADD_WIDEN_OP): New macro to insert a widening op when
11343         two a binop with different sized arguments is emitted.
11344
11345         * mini.c (mono_bblock_insert_after_ins): Properly link up with the next
11346         instruction in the ins==NULL case.
11347
11348 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
11349
11350         * mini-ops.h: Add OP_X86_OUTARG_ALIGN_STACK.
11351
11352         * mini-x86.c: Fix osx build.
11353
11354         * mini-amd64.c (mono_arch_output_basic_block): Handle varargs in the CALL_REG
11355         opcodes as well.
11356
11357         * method-to-ir.c (mono_spill_global_vars): Avoid fusing a load+store into the
11358         instruction for non int sized variables.
11359
11360         * method-to-ir.c (mono_method_to_ir2): Fix an assert in the LDFLD
11361         implementation.
11362
11363 2008-07-23  Robert Jordan  <robertj@gmx.net>
11364
11365         * method-to-ir.c: Fix MSVC build.
11366
11367 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
11368
11369         * method-to-ir.c (mono_method_to_ir2): When calling native code which returns
11370         a non int sized type, widen it to an int since newer versions of gcc seem to
11371         generate code which needs this.
11372
11373         * ssa2.c abcremoval2.c: Fix warnings.
11374
11375         * *: Merge the Linear IR branch.
11376
11377         The original branch is at trunk/branches/vargaz/mini-linear-il, and
11378         the ChangeLog file there describes all the changes done over the years. 
11379         Further documentation can be found at www.mono-project.com/Linear_IL.
11380
11381 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
11382
11383         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
11384           The float param registers and other param registers must be the 
11385           same index on Windows x64.
11386
11387         Contributed under MIT/X11 license.
11388
11389 2008-07-21  Rodrigo Kumpera  <rkumpera@novell.com>
11390
11391         * mini.c: Make the previous fix GC safe.
11392
11393 2008-07-21  Raja R Harinath  <harinath@hurrynot.org>
11394
11395         * Makefile.am (version.h): Allow a trailing '/' in the repository URL.
11396
11397 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
11398
11399         * mini-amd64.c (get_call_info): Correcting the case for MONO_TYPE_TYPEDBYREF
11400           on Winx64.  This type will not be passed on the stack (ArgOnStack), but 
11401           ArgValuetypeAddrInIReg instead.
11402
11403         Contributed under MIT/X11 license.
11404
11405 2008-07-21  Zoltan Varga  <vargaz@gmail.com>
11406
11407         * mini-codegen.c (get_register_spilling): Fix a warning.
11408
11409 2008-07-17  Rodrigo Kumpera  <rkumpera@novell.com>
11410
11411         * mini.c: Use mono_runtime_class_init_full to avoid leaking memory
11412         for types which the initialization fails. Raises the provided exception
11413         at the right stop after cleanup.
11414
11415 2008-07-16  Zoltan Varga  <vargaz@gmail.com>
11416
11417         * aot-compiler.c: Free most of the memory allocated during compilation.
11418
11419         * mini.c (mini_parse_debug_options): Fix a leak.
11420         
11421         * mini.c (mini_method_compile): Don't add the method to the jit info tables
11422         during aot compilation.
11423
11424 2008-07-14  Zoltan Varga  <vargaz@gmail.com>
11425
11426         * mini.c (mono_method_to_ir): Disable aot for code using CCASTCLASS on x86 as 
11427         it has too much register pressure.
11428
11429 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
11430
11431         * inssel.brg (CEE_CASTCLASS): Remove some dead code.
11432
11433 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
11434
11435         * mini-x86.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
11436         on x86.
11437
11438         * mini-amd64.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
11439         on amd64 similar to the way it is done on arm.
11440
11441         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
11442
11443         * aot-runtime.c (load_aot_module): Rename 'info' to 'amodule' for 
11444         consistency, normalize error messages, avoid loading aot-only modules in
11445         normal mode.
11446
11447         * driver.c (mono_main): Rename --aot-only command line option to --full-aot
11448         for consistency.
11449
11450         * aot-compiler.c aot-runtime.c tramp-arm.c: Implement aot-only support.
11451
11452 2008-07-11  Martin Baulig  <martin@ximian.com>
11453
11454         * debug-debugger.h
11455         (MonoDebuggerInfo): Add `interruption_request'.
11456
11457 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
11458
11459         * aot-compiler.c (emit_plt): Remove some dead code.
11460
11461         * exceptions-arm.c (mono_arch_get_call_filter_full): Initialize ji.
11462
11463         * aot-runtime.c (mono_aot_get_plt_info_offset): New helper function to
11464         return the plt info offset belonging to a given plt entry.
11465
11466         * mini-trampolines.c (mono_aot_plt_trampoline): Use 
11467         mono_aot_get_plt_info_offset.
11468         
11469         * aot-runtime.c aot-compiler.c tramp-arm.c: Change the arm plt code to be
11470         similar to the amd64 code by makeing jumps through a separate jump table 
11471         instead of embedding the jump addresses into the code.
11472
11473 2008-07-11  Zoltan Varga  <vargaz@gmail.com>
11474
11475         * mini.c (mono_method_to_ir): Disable aot for calling ldtoken in a generic
11476         method.
11477
11478 2008-07-10  Martin Baulig  <martin@ximian.com>
11479
11480         * mini.c (mini_method_compile): Disable generics sharing when
11481         running in the debugger.
11482
11483 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
11484
11485         * mini.c (mono_method_to_ir): Create the got var in CEE_REFANYVAL.
11486
11487         * inssel.brg (CEE_CASTCLASS): Avoid reusing temporary registers to prevent
11488         the local register allocator from running out of registers on x86 when 
11489         using aot.
11490
11491 2008-07-10  Bill Holmes  <billholmes54@gmail.com>
11492
11493         * inssel-long.brg For OP_LCONV_TO_OVF_I4 an int cast is needed when 
11494         expressing IntMin for the VS Compiler.  See Compiler Warning (level 2) 
11495         C4146.
11496
11497         Contributed under MIT/X11 license.
11498
11499 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
11500
11501         * aot-compiler.c: Get rid of whitespace in the generated assembly file to
11502         speed up the assembler.
11503
11504 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
11505
11506         * mini-arm.h tramp-arm.c exceptions-arm.c aot-compiler.c: Beginnings of aot-only
11507         support.
11508
11509         * mini.c: Move the soft float handling macros a bit earlier, add 
11510         NEW_TEMPSTORE_SOFT_FLOAT macro, fix warnings, add soft-float support in one
11511         place.
11512
11513         * mini.h: Add prototype for mono_arch_fixup_jinfo.
11514
11515         * mini.c (mini_init): In aot-only mode, set the root domain code manager to
11516         read-only to help catch code allocation requests.
11517         
11518         * mini.c inssel.brg aot-compiler.c: Make the use of IMT runtime configurable,
11519         and turn it off when using --aot-only or when compiling with --aot=full.
11520
11521         * mini.c (mono_resolve_patch_target): In aot-only mode, allocate the
11522         jump table for switches from the normal domain mempool, not the code
11523         manager.
11524
11525         * mini-trampolines.c (get_unbox_trampoline): New function to return an
11526         unbox trampoline which handles aot-only mode too.
11527
11528         * aot-runtime.c (mono_aot_get_unbox_trampoline): New function to lookup
11529         an AOTed unbox trampoline.
11530
11531         * aot-compiler.c (emit_trampolines): Emit unbox trampolines.
11532
11533 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
11534
11535         * wapihandles.c: Fixing MSVC builds.  Include statement changed from <> to
11536         ""
11537
11538         Contributed under MIT/X11 license.
11539
11540 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
11541
11542         * mini.c (mono_codegen):  Allocate space at the end of the code block and store
11543           the unwind information for the method at the end of the allocated block.
11544           
11545         * mini-amd64.h: Added declarations for the unwind routines and adding field to 
11546           MonoCompileArch to hold the unwind info for SEH on Winx64
11547         
11548         * mini-amd64.c (mono_arch_emit_prolog): Calls to the unwind routines added to store
11549           frame pointer info for the method being compiled.
11550           
11551         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception): Added a stack adjustment before
11552           the call to mono_exception_from_token.
11553           
11554         * exceptions-amd64.c: Added mono_arch_unwindinfo* implementations.  This code is responsible
11555           storing the method prolog information in a format that the Winx64 SEH can understand.  This
11556           information is stored a the end of the method block because it is all 32-bit offset based.
11557
11558         Contributed under MIT/X11 license.
11559
11560 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
11561
11562         * mini.h: Remove duplicate definitions of the mini_wapi_ functions.
11563
11564         * wapihandles.c: Fix warnings.
11565
11566         * aot-runtime.c (load_aot_module): Add a missing error message in aot-only
11567         mode.
11568
11569         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Avoid calling 
11570         mono_jit_compile_method in aot-only mode since that calls the type 
11571         initializer.
11572         
11573         * mini-trampolines.c (mono_create_delegate_trampoline): Avoid calling
11574         get_delegate_invoke_impl in aot-only mode.
11575
11576         * mini.c (mono_global_codeman_reserve): Reenable the aot-only check.
11577
11578 2008-07-08  Zoltan Varga  <vargaz@gmail.com>
11579
11580         * trace.c (mono_trace_enter_method): Fix printing of Type instances.
11581
11582         * aot-compiler.c (compile_method): Disable the check for GSHARED since it
11583         is on by default.
11584
11585         * inssel-long.brg (reg): Add a rule for LCALL_REG (OP_I8CONST).
11586
11587         * tramp-amd64.c (mono_arch_nullify_plt_entry): Read the nullified class
11588         init trampoline from the AOT file as well.
11589
11590         * mini-amd64.c (mono_arch_register_lowlevel_calls): Register
11591         mono_amd64_throw_exception as a jit icall since it is needed by the aot-only
11592         code.
11593
11594         * mini.c (mini_init): Move the call to mono_exceptions_init () after 
11595         mono_init.
11596
11597         * exceptions-amd64.c: Add _full variants for the remaining exception code
11598         creation functions as well, allow emission of relocatable code, remove
11599         caching since that is now done by the caller.
11600
11601         * mini-exceptions.c: Add _full variants for the remaining exception code
11602         creation functions as well, add aot-only support.
11603
11604         * aot-compiler.c (compile_method): Allow calls to methods of constructed types
11605         if we can determine a proper token for them.
11606         (add_wrappers): Add a few more wrappers.
11607         (emit_method_code): Remove some dead code.
11608         (emit_trampolines): Emit exception code too.
11609
11610         * mini.c (mono_method_to_ir): Call mono_array_new_2 if possible.
11611
11612         * jit-icalls.c (mono_array_new_2): New jit icall, specialized version of
11613         mono_array_new_va which avoids varargs.
11614
11615         * mini-exceptions.c (mono_exceptions_init): Fix the ppc build.
11616
11617         * mini-trampolines.c: Call mono_create_specific_trampoline () instead of
11618         mono_arch_create_specific_trampoline () in all places.
11619
11620         * aot-compiler.c aot-runtime.c: Refactor the trampoline emitting/loading code
11621         a bit so it can be used for other things as well.
11622         
11623         * mini-exceptions.c (mono_exceptions_init): Initialize throw_exception_by_name
11624         on demand as well.
11625
11626         * exceptions-amd64.c: Rename the caching from the exception code creation
11627         functions, it is done by the caller instead.
11628         
11629         * exceptions-amd64.c: Change the signature of the exception code creation 
11630         functions to allow the creation of relocatable code later.
11631
11632         * mini-exceptions.c: Add a set of functions to query the various 
11633         runtime-generated exception functions.
11634
11635         * mini.c mini-exceptions.c: Use the newly added functions instead of the
11636         mono_arch_.. () functions.
11637         
11638 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
11639
11640         * mini-trampolines.c (mono_aot_get_trampoline_code): Removed, no longer used.
11641
11642         * aot-runtime.c aot-compiler.c: AOT the generic trampolines in aot-only mode.
11643
11644         * mini.c (mini_get_imt_trampoline): Call mono_create_specific_trampoline ().
11645         (mini_get_vtable_trampoline): Ditto.
11646
11647         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Create relocatable
11648         code in the AOT case by returning the code size and a list of relocations to
11649         the caller.
11650
11651         * mini-trampolines.c (mono_create_specific_trampoline): New helper function.
11652
11653 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
11654
11655         * mini-amd64.c:  On Winx64 the calling convention always requires the caller to 
11656           clean the stack.
11657
11658         Contributed under MIT/X11 license.
11659
11660 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
11661
11662         * aot-compiler.c (emit_exception_debug_info): Serialize the debug info first
11663         so the buffer size can be computed correctly. Fixes #404735.
11664
11665         * debug-mini.c (mono_debug_serialize_debug_info): Lookup the debug info
11666         normally as cfg->debug_info is already freed.
11667
11668 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
11669
11670         * mini-amd64.c: For calls returning vtypes in registers, don't store
11671         the return address on the stack, instead allocate a separate local for
11672         it. Fixes #404729.
11673
11674 2008-07-05  Mark Probst  <mark.probst@gmail.com>
11675
11676         * mini-trampolines.c, mini.h: Add an argument to
11677         mono_create_jit_trampoline_in_domain() for turning off the adding
11678         of the sync wrapper.
11679
11680         * mini.c: Use the JIT trampoline without sync instead of
11681         ldftn_nosync in static RGCTX invoke wrappers so that the call can
11682         be patched.
11683
11684 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11685
11686         * driver.c: Turn on GSHARED optimization by default.
11687
11688 2008-07-04  Zoltan Varga  <vargaz@gmail.com>
11689
11690         * mini-trampolines.c mini.c mini.h tramp-<ARCH>.c: Rename MONO_TRAMPOLINE_GENERIC
11691         to MONO_TRAMPOLINE_JIT since it better reflects what it does.
11692
11693         * mini-trampolines.c (mono_get_aot_trampoline_code): New internal function to
11694         create a variant of the generic trampoline code callable from AOTed trampolines.
11695
11696         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add support for generic
11697         trampoline code callable from AOTed trampolines.
11698
11699         * aot-compiler.c aot-runtime.c: Add support for AOTing trampolines.
11700
11701 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11702
11703         * inssel.brg, mini-ops.h: New opcode for doing CHECK_THIS in a
11704         pass-through manner.
11705
11706         * mini.c: Generic method sharing.  Pass MRGCTX to generic methods
11707         and don't fail sharing for them anymore.
11708
11709         * mini-exceptions.c: Handle exceptions in shared generic methods.
11710
11711         * generic-sharing.c: When checking the context of a generic
11712         method, also check its class's context.  Don't treat wrappers as
11713         sharable.
11714
11715         * mini-trampolines.c: Some code factored out to
11716         metadata/generic-sharing.c.  Handle the MRGCTX case.
11717
11718         * jit-icalls.c, jit-icalls.h: ldvirtfn icall for generic sharing -
11719         we must deal with the method being of another instantiation of the
11720         class.  Add static rgctx invoke wrappers to generic methods.
11721
11722 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11723
11724         * mini.c: Provide all jit infos of generic shared methods with a
11725         generic jit info.
11726
11727         * mini-exceptions.c: Handle the new situation that a generic info
11728         might be available, but not info about the this/vtable/mrgctx
11729         variable.
11730
11731 2008-07-03  Mark Probst  <mark.probst@gmail.com>
11732
11733         * mini.c: Don't accept ldftn and ldvirtftn with uninstantiated
11734         generic methods.
11735
11736 2008-07-03  Zoltan Varga  <vargaz@gmail.com>
11737
11738         * dominators.c (check_dominance_frontier): Fix a warning.
11739
11740         * mini.h: Add some missing prototypes.
11741
11742         * ssa.c local-propagation.c debug-debuger.c: Fix warnings.
11743
11744         * driver.c (mono_jit_init_version): Correct the comments since the first
11745         argument should be the name of the root domain, not a filename.
11746
11747         * aot-runtime.c (make_writable): Error out if this is called while running
11748         with --aot-only.
11749         (load_aot_module): Ditto.
11750
11751         * aot-compiler.c: Really fix the computation of method indexes.
11752
11753         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Remove the previous 
11754         optimizations as this is no longer called frequently.
11755
11756         * mini-trampolines.c (mono_create_delegate_trampoline): Precompute the invoke
11757         method and the invoke impl code and pass it to the delegate trampoline instead of
11758         just the delegate class.
11759
11760 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
11761
11762         * aot-compiler.c: Fixup the computation of method indexes.
11763         (add_wrappers): Create the base methods of the runtime invoke wrappers using
11764         the method builder infrastructure.
11765
11766         * aot-runtime.c (decode_exception_debug_info): Don't crash if the method
11767         has no header.
11768
11769         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): In aot-only
11770         mode, load the method right away instead of creating a trampoline.
11771
11772         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Eliminate locking.
11773
11774         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Eliminate locking, speed up
11775         some checks a bit.
11776
11777 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
11778
11779         * aot-runtime.c (decode_patch_info): Don't create trampolines in aot_only mode.
11780         (mono_aot_load_method): Use method_index instead of method->token.
11781
11782         * mini.c (mono_jit_compile_method_inner): Move the aot_only check down, so it
11783         can handle icalls etc. properly.
11784
11785         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
11786
11787         * aot-compiler.c aot-runtime.c: Allow AOTing many wrapper types.
11788
11789         * mini.c (mono_resolve_patch_target): Handle JIT_ICALL_ADDR.
11790         (mono_codegen): Convert calls made by JIT icall wrappers to the icalls into
11791         JIT_ICALL_ADDR patch type.
11792
11793         * patch-info.h: Add JIT_ICALL_ADDR patch type.
11794
11795         * mini.c (mono_method_to_ir): Allow AOTing methods which access the interruption
11796         request flag.
11797         (mono_resolve_patch_target): Handle INTERRUPTION_REQUEST_FLAG.
11798
11799         * patch-info.h: Add INTERRUPTION_REQUEST_FLAG.
11800
11801 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
11802
11803         * mini.c: Use domain->jit_code_hash_lock for controlling access to
11804         domain->jit_code_hash.
11805
11806 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
11807
11808         * mini.c (mini_parse_debug_options): Add 'dont-free-domains' option.
11809
11810 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
11811
11812         * mini-trampolines.c (mono_delegate_trampoline): Don't pass a gsctx to
11813         get_this_arg_from_call, let it compute it when needed.
11814
11815         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'code' argument, compute
11816         gsctx from code only when needed.
11817
11818         * mini-trampolines.c (get_generic_context): Rename this to 
11819         mono_get_generic_context_from_code (), and move it to generic-sharing.c, where
11820         it can be called by the arch backends.
11821
11822         * mini-exceptions.c (mono_print_thread_dump): Allow the argument to be NULL.
11823
11824 2008-06-26  Zoltan Varga  <vargaz@gmail.com>
11825
11826         * driver.c (mono_main): Add experimental --aot-only command line option.
11827
11828         * mini.c: Error out when creating trampolines or JIT compiling if --aot-only is
11829         set.
11830
11831 2008-06-26  Kornel Pal  <kornelpal@gmail.com>
11832
11833         * driver.c (DllMain): Remove mono_module_handle.
11834
11835         Contributed under MIT/X11 license.
11836
11837 2008-06-25  Zoltan Varga  <vargaz@gmail.com>
11838
11839         * aot-compiler.c: Add not-yet-usable 'full' option. Add some infrastructure code
11840         for emitting methods which are not in the source assembly. Detect and report
11841         failure of assembling+linking.
11842         
11843         * aot-compiler.c (emit_klass_info): Call mono_class_setup_vtable ().
11844
11845         * aot-compiler.c: Move the contents of the has_glot_slots array to MonoCompile.
11846
11847 2008-06-24  Rodrigo Kumpera  <rkumpera@novell.com>
11848
11849         * mini.c: Check if stats is enabled so we don't allocate memory when not needed.
11850
11851 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
11852
11853         * mini.h: Remove some obsolete prototypes.
11854
11855         * mini.c: Avoid storing MonoMethod pointers in the JIT stats, store their string format instead.
11856
11857 2008-06-24  Mark Probst  <mark.probst@gmail.com>
11858
11859         * mini.c (get_object_generic_inst): Variable-sized arrays are not
11860         supported by Visual Studio, so use alloca().
11861
11862 2008-06-23  Zoltan Varga  <vargaz@gmail.com>
11863
11864         * mini-ia64.c (add_valuetype): Increase *gr too when passing a HFA to be in sync with the ABi.
11865         Fixes #402585.
11866
11867 2008-06-23  Mark Probst  <mark.probst@gmail.com>
11868
11869         * mini.c: Fail sharing of a generic method if it contains an open
11870         catch clause (because we don't pass MRGCTXs yet).
11871
11872 2008-06-23  Mark Probst  <mark.probst@gmail.com>
11873
11874         * mini.c: When compiling a method with generic sharing, insert the
11875         method instantiated with an all-Object generic context into the
11876         jit info table, instead of the context of the first instantiation
11877         of the method we happen to compile.
11878
11879 2008-06-18  Martin Baulig  <martin@ximian.com>
11880
11881         * debug-debugger.h (MonoDebuggerInfo): Replaced `version' with
11882         `major_version' and `minor_version'.
11883
11884 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11885
11886         * generic-sharing.c, mini.c, mini.h, aot-runtime.c:
11887         mono_method_is_generic_sharable_impl() takes an additional
11888         argument specifying whether to treat type variables as reference
11889         types.
11890
11891 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11892
11893         * mini.h: Removed obsolete prototypes.
11894
11895 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11896
11897         * mini.c: Don't fail generic sharing for initobj and sizeof - we
11898         already handle them.
11899
11900 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11901
11902         * mini.h, mini-trampolines.c, tramp-alpha.c, tramp-amd64.c,
11903         tramp-arm.c, tramp-hppa.c, tramp-ia64.c, tramp-mips.c,
11904         tramp-ppc.c, tramp-s390.c, tramp-s390x.c, tramp-sparc.c,
11905         tramp-x86.c: Added a MonoGenericContext* argument to
11906         mono_arch_get_unbox_trampoline() so that it can call other
11907         functions which require it.
11908
11909 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11910
11911         * mini.h, mini-trampolines.c, mini-amd64.c, mini-x86.c,
11912         mini-alpha.c, mini-arm.c, mini-ia64.c, mini-ppc.c:
11913         mono_arch_get_this_arg_from_call() takes a
11914         MonoGenericSharingContext* as well.
11915
11916 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11917
11918         * mini.c: Factor out code for emitting unbox into emit_unbox() and
11919         implement generic sharing of unbox.
11920
11921 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11922
11923         * mini.c: Don't compute the vtable to determine whether a field is
11924         special static, because it might not work for open types.
11925
11926 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11927
11928         * mini.c: Removed the unused token_type and token_source arguments
11929         from get_runtime_generic_context_ptr().
11930
11931 2008-06-17  Marek Habersack  <mhabersack@novell.com>
11932
11933         * mini.c (ADD_BINOP): fix the build
11934
11935 2008-06-16  Zoltan Varga  <vargaz@gmail.com>
11936
11937         * mini.c (ADD_BINOP): When operating on a native int and an int32, insert
11938         a widening op.
11939
11940 2008-06-16  Mark Probst  <mark.probst@gmail.com>
11941
11942         * mini.h: Removed class relations enum that's not used anymore.
11943
11944 2008-06-16  Mark Probst  <mark.probst@gmail.com>
11945
11946         * tramp-x86.c, tramp-amd64.c: Slot access code for MRGCTXs.
11947
11948         * mini-trampolines.c: Distinguish between RGCTXs and MRGCTXs in
11949         the lazy fetch trampoline access code.
11950
11951 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
11952
11953         * mini-codegen.c (mono_local_regalloc): Add some micro optimizations.
11954
11955 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
11956
11957         * mini.c: Fix some soft-float bugs. Fixes #378735 and #398348.
11958
11959         * mini.h (MONO_INST_LIST_ENTRY): Fix warnings on arm.
11960
11961         * mini.c (mono_method_to_ir): Check call signature for NEWOBJ as well.
11962
11963 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
11964
11965         * mini-x86.c inssel-x86.brg cpu-x86.md: Implement unsigned min/max
11966         intrinsics.
11967
11968         * mini-ops.h: Add MIN/MAX_UN opcodes.
11969
11970         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Implement unsigned min/max
11971         intrinsics.
11972
11973         * basic-math.cs: Add more min/max tests.
11974
11975         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
11976
11977 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11978
11979         * mini.c: Small fix in the prologue of emit_castclass.
11980
11981 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
11982
11983         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
11984
11985         * mini.c (mini_get_inst_for_method): Remove the Min/Max intrinsics, they
11986         do not work even for unsigned types. Fixes #400014.
11987
11988         * basic-math.cs: Add regression tests for unsigned Min/Max.
11989
11990 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11991
11992         * mini.c: Added additional context_used argument to several
11993         functions, which will be needed for sharing generic methods.  Use
11994         GET_RGCTX macro wherever appropriate.  Declare only one
11995         context_used in mono_method_to_ir().
11996
11997 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11998
11999         * mini.c, generic-sharing.c: Removed generic class relations.
12000
12001         * mini.c, tramp-amd64.c, tramp-x86.c: Additional arguments to
12002         functions due to MRGCTX changes.
12003
12004 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12005
12006         * inssel.brg, inssel-long.brg, inssel-long32.brg, mini-ops.h,
12007         graph.c, local-propagation.c, aliasing.c: New opcodes for calls
12008         with calculated IMT.
12009
12010         * mini.c: Generic sharing of calls via generic interfaces.
12011
12012         * jit-icalls.c, jit-icalls.h: Helper function for compiling a
12013         generic method with non-constant MonoGenericContext*.  Instead,
12014         the context is taken out of the method itself.
12015
12016 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12017
12018         * mini.c: Generic sharing of ldvirtftn.
12019
12020 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12021
12022         * mini.c: Generic sharing of ldftn.
12023
12024 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12025
12026         * mini.c: Do pass VTable/RGCTX argument to static generic methods.
12027
12028 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12029
12030         * mini.c: Generic sharing of the special case of ldtoken followed
12031         by a call to GetTypeFromHandle.
12032
12033 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12034
12035         * mini.c: Generic sharing of box for nullable types.
12036
12037 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
12038
12039         * mini-s390x.c (add_stackParm): Fix computation of offsets when arguments
12040         are passed on the stack. Fixes #324807.
12041
12042 2008-06-12  Bill Holmes  <billholmes54@gmail.com>
12043
12044         * mini-amd64.c:add_valuetype: Adding Winx64 code to fill the ArgInfo
12045         for the ArgValuetypeAddrInIReg case.
12046
12047         * mini-amd64.c:mono_arch_allocate_vars:  Adding a case for 
12048         ArgValuetypeAddrInIReg to avoid asserts.  Code needs to be added here.
12049
12050         * mini-amd64.c: mono_arch_call_opcode:  Adding Winx64 code for an ArgInfo of 
12051         type ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
12052         local variable and pass the local variable by reference to the called method.
12053           
12054         * mini-amd64.c: mono_arch_emit_prolog:  Adjust the stack for calls to
12055         mono_jit_thread_attach and mono_get_lmf_addr for Winx64.
12056
12057         Contributed under MIT/X11 license.
12058
12059 2008-06-10  Rodrigo Kumpera  <rkumpera@novell.com>
12060
12061         * debug-mini.c (mono_debug_free_method_jit_info): Moved to metadata/mono-debug.c.
12062
12063         * debug-mini.c (mono_debug_print_vars): Release memory after printing
12064         everything.
12065
12066 2008-06-10  Martin Baulig  <martin@ximian.com>
12067
12068         * debug-mini.c
12069         (mono_debug_close_method): Check whether `cfg->epilogue_begin != NULL'.
12070
12071 2008-06-09  Kornel Pal  <kornelpal@gmail.com>
12072
12073         * main.c: Add and set argv [argc] to NULL to match C specification that fixes
12074         possible error when no arguments are passed.
12075
12076         Contributed under MIT/X11 license.
12077
12078 2008-06-09  Rodrigo Kumpera  <rkumpera@novell.com>
12079
12080         * mini-exceptions.c (ves_icall_get_trace): Skip source locations
12081         where the file name is NULL.
12082
12083 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
12084
12085         * mini.c: Fix s390 build.
12086
12087 2008-06-08  Zoltan Varga  <vargaz@gmail.com>
12088
12089         * trace.c (mono_trace_parse_options): Fix warnings.
12090
12091         * mini-amd64.c: Revert most of the last patch for now as it breaks the build.
12092
12093 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
12094
12095         * mini.c (remove_block_if_useless): Avoid printing the method name.
12096         
12097         * mini.c: Remove needless setting of ins->cil_code which is now done by 
12098         MONO_INST_NEW.
12099
12100         * mini-amd64.c: Add some code to avoid saving callee saved registers in the
12101         LMF. Not yet used.
12102
12103         * tramp-amd64.c (mono_arch_patch_callsite): Tell valgrind to discard the
12104         translated code after it has been patched.
12105
12106 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
12107
12108         * mini-amd64.c (emit_call_body): Align the call displacement to 4 bytes to
12109         avoid problems during code patching on SMP systems.
12110         (emit_call): Avoid adding a patch info which is already added by 
12111         emit_call_body.
12112         (mono_arch_emit_exceptions): Ditto.
12113
12114 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
12115
12116         * tramp-*.c (mono_arch_get_unbox_trampoline): No need to check for ret->byref,
12117         MONO_TYPE_ISSTRUCT already checks for it.
12118
12119 2008-06-05  Bill Holmes  <billholmes54@gmail.com>
12120
12121         * mini-amd64.c:merge_argument_class_from_type: When marshaling 
12122           structs with floats on Winx64 the float registers are not used.  
12123           The integer registers are always used..
12124         * mini-amd64.c:add_valuetype:  When marshaling structs on Winx64 
12125           only one register will be used and only if the size of the struct 
12126           is 1,2,4, or 8 bytes.
12127
12128         * tramp-amd64.c :  Adjusting size used for mono_global_codeman_reserve
12129           to work for Winx64.
12130
12131         Contributed under MIT/X11 license.
12132
12133 2008-06-05  Martin Baulig  <martin@ximian.com>
12134
12135         * debug-debugger.c (debugger_lookup_class): Also call
12136         mono_class_setup_methods() here; we're only called from RTI.
12137
12138 2008-06-05  Andreas Farber  <andreas.faerber@web.de>
12139
12140         * mini.c (mini_init): Add DTrace probes ves-init-{begin,end}.
12141         (mini_method_compile) Add DTrace probes method-compile-{begin,end}.
12142         * Makefile.am (libmono_la_LIBADD,libmono_static_la_LIBADD,mono_LDADD):
12143         Post-process object files and add dtrace-generated object, if necessary.
12144
12145         Contributed under MIT/X11 license.
12146
12147 2008-06-04  Mark Probst  <mark.probst@gmail.com>
12148
12149         * inssel.brg, mini-ops.h: Added opcode for unboxcast with computed
12150         element class.
12151
12152         * mini.c: Generic sharing for unbox.any and castclass.
12153
12154 2008-06-04  Mark Probst  <mark.probst@gmail.com>
12155
12156         * mini.c: Ignore tailcall prefix in shared generic code and when
12157         doing calls which require a vtable/rgctx argument.
12158
12159 2008-06-04  Mark Probst  <mark.probst@gmail.com>
12160
12161         * mini.c: Don't free the JIT info.
12162
12163         * driver.c: Changes in the JIT info table testing code.
12164
12165 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
12166
12167         * tramp-arm.c (mono_arch_create_trampoline_code): Check for thread 
12168         interruption. Fix some warnings.
12169
12170         * tramp-*.c (mono_arch_create_trampoline_code): Call the _force_ variant of
12171         interruption_checkpoint.
12172
12173 Tue Jun 3 13:07:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
12174
12175         * jit.h, mini.h, trace.c, driver.c: introduce an API to enable tracing
12176         from embedding applications.
12177
12178 2008-06-02  William Holmes  <billholmes54@gmail.com>
12179
12180         * mini-amd64.c :  Correcting some of the issues for Winx64 dealing with
12181           reserving 32 bytes on the stack when making calls. 
12182
12183         Contributed under MIT/X11 license.
12184
12185 2008-06-01  Zoltan Varga  <vargaz@gmail.com>
12186
12187         * mini-arm.c (mono_arch_output_basic_block): Merge some small fixes from
12188         the linear IL branch.
12189
12190         * driver.c: Print out more information for --version on arm.
12191
12192 2008-05-30  Zoltan Varga  <vargaz@gmail.com>
12193
12194         * mini-amd64.c (mono_arch_emit_prolog): Increase max_offset when processing
12195         bb_exit instead, since out of line bblocks might not actually be emitted
12196         out-of-line.
12197         
12198         * mini-amd64.c (mono_arch_emit_prolog): Increase bb->max_offset by the
12199         maximum epilog size for out of line bblocks if tracing is enabled.
12200
12201         * iltests.il.in: Merge tests/long-shift.regalloc.il into this file.
12202
12203 2008-05-28  Rodrigo Kumpera  <rkumpera@novell.com>
12204
12205         * arrays.cs: Regression tests for allocating arrays with negative sizes.
12206
12207 2008-05-28  Zoltan Varga  <vargaz@gmail.com>
12208
12209         * mini-x86.h mini-x86.c inssel-x86.brg cpu-x86.md: Add support for
12210         CAS instrinsics. Optimize the implementation of the ATOMIC_EXCHANGE 
12211         opcodes.
12212
12213 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
12214
12215         * mini.c (mini_get_inst_for_method): Add support for CAS instrinsics when
12216         the 'value' to store is a constant.
12217
12218         * mini-ops.h: Add OP_ATOMIC_CAS_IMM opcodes.
12219
12220         * mini-amd64.c (mono_arch_output_basic_block): Optimize the the implementation
12221         of ATOMIC_EXCHANGE opcodes, add support for the CAS opcodes.
12222
12223 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
12224
12225         * mini.c generic-sharing.c jit-icalls.c aot-compiler.c: Use accessor functions
12226         for accessing method->generic_container.
12227
12228 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
12229
12230         * mini.c (mono_method_check_inlining): Avoid creating vtables if possible.
12231         
12232         * mini.c (SIG_HANDLER_SIGNATURE): Fix sparc build too.
12233
12234         * mini.c (SIG_HANDLER_SIGNATURE): Fix IA64 build.
12235
12236         * mini.c (mono_jit_compile_method_inner): Avoid a crash if mono_class_vtable ()
12237         fails.
12238
12239 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
12240
12241         * driver.c (mono_main): Set mono_setup_vtable_in_class_init to FALSE.
12242
12243         * mini.c: Handle the case when mono_class_vtable () fails.
12244
12245 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
12246         * mini.c (sigprof_signal_handler): Support call chains (backtrace) in
12247         the stat profiler.
12248
12249 2008-05-22  Mark Probst  <mark.probst@gmail.com>
12250
12251         * mini.c, jit-icalls.c, jit-icalls.h: Make generic sharing work
12252         together with domain sharing.
12253
12254 2008-05-22  Mark Probst  <mark.probst@gmail.com>
12255
12256         * mini.c: Treat callvirts to final methods like non-virtual calls
12257         when doing generic sharing, i.e. look them up in the runtime
12258         generic context.
12259
12260 2008-05-22  Mark Probst  <mark.probst@gmail.com>
12261
12262         * inssel.brg, mini-ops.h: Added opcodes for mkrefany and refanyval
12263         with computed types (for generic sharing).
12264
12265         * mini.c: Generic sharing for mkrefany and refanyval.
12266
12267 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
12268
12269         * inssel.brg (mini_emit_virtual_call): Avoid constructing a generic vtable if
12270         possible.
12271
12272         * mini-trampolines.c (mono_magic_trampoline): Avoid calling setup_methods () in
12273         the generic sharing code.
12274         
12275         * mini-trampolines.c (mono_magic_trampoline): Call mono_class_setup_methods ()
12276         when needed.
12277
12278 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
12279
12280         * mini.h: Remove the declaration of mono_aot_init_vtable ().
12281
12282 2008-05-21  C.J. Adams-collier <cjac@colliertech.org>
12283
12284         * driver.c: updated copyright date
12285
12286 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
12287
12288         * aot-runtime.c mini.c: Remove the AOT init_vtable stuff as it is no longer
12289         needed.
12290
12291 2008-05-19  Martin Baulig  <martin@ximian.com>
12292
12293         * debug-debugger.h (MonoDebuggerInfo): Add `using_mono_debugger'
12294         pointing to the new `_mono_debug_using_mono_debugger' variable.
12295
12296         * driver.c
12297         (mono_main): Check mono_debug_using_mono_debugger() rather than
12298         the `MONO_INSIDE_MDB' environment variable to check whether we're
12299         inside the debugger.
12300
12301 2008-05-19  Zoltan Varga  <vargaz@gmail.com>
12302
12303         * mini.c (mini_method_compile): Use cfg->args [0] for accessing the this
12304         argument.
12305
12306 2008-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
12307
12308         * declsec.h: Move MONO_SECMAN_FLAG to metadata/metadata-internals.h.
12309
12310         * mini.c: Added mini_assembly_can_skip_verification. This
12311         function checks if the assembly requested to skip verification. 
12312         Fixes part of #387274.
12313
12314 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
12315
12316         * mini.c (mini_get_method): Disable the check for open generic classes when
12317         using generic sharing.
12318
12319         * generics.cs: Add a test for #387034.
12320
12321         * mini.c (mini_get_method): Check whenever the method class is an open generic
12322         type, and return NULL in that case, causing a verification error. Fixes
12323         #384123.
12324
12325 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
12326
12327         * driver.c (mono_main): Revert r102623. The right
12328         thing to do is to enable the verifier under verifiable
12329         unless a --security flag was passed.
12330
12331         We need this non-trivial behavior for --verify-all otherwise
12332         mcs-compileall won't be able to use it. As it needs everything to
12333         be verified under validil.
12334
12335 2008-05-06  Martin Baulig  <martin@ximian.com>
12336
12337         Fix #383749.
12338
12339         * debug-mini.c (mono_debugger_thread_created): Add proper locking.
12340         (mono_debugger_thread_cleanup): Likewise.
12341         (mono_debugger_extended_notification): Likewise.
12342
12343 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
12344
12345         * mini.c (mono_method_to_ir): Verify visibility of call related opcodes
12346         against both inflated and non-inflated methods. We need to check against the
12347         generic definition for cases where the instantiated method is not visible.
12348         We need to check against the inflated types for cases where the instantiation
12349         changes any super type. This fixes #382986.
12350
12351         Note that this doesn't need to be applied to other parts of mono_method_to_ir
12352         that check for visibiliy as generic params only appears as the type subject
12353         of tokens on call opcodes. Field manipulation and ldftn must always
12354         target an exact type.
12355
12356 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
12357
12358         * driver.c (mono_main): Using --verify-all enables the verifier under validil mode
12359         if no related --security flag is passed.
12360
12361 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
12362
12363         * mini-arch.h: Prepare support for ppc64.
12364
12365         Contributed under MIT/X11 license.
12366
12367 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
12368
12369         * aot-runtime.c: Prepare support for ppc64.
12370
12371         Contributed under MIT/X11 license.
12372
12373 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
12374
12375         * mini-ops.h: Prepare support for ppc64.
12376
12377         Contributed under MIT/X11 license.
12378
12379 2008-05-04  Andreas Farber  <andreas.faerber@web.de>
12380
12381         * helpers.c: Add support for OSX/ppc64 and Linux/ppc64 (dis)assemblers.
12382
12383         Contributed under MIT/X11 license.
12384
12385 2008-05-03  Zoltan Varga  <vargaz@gmail.com>
12386
12387         * aot-runtime.c (load_aot_module): Avoid trying to load aot code for dynamic
12388         assemblies, since aot_name is not a full path, causing us to load MS.NET 
12389         assemblies on windows.
12390
12391 ?2008-04-28  Kornel Pal  <kornelpal@gmail.com>
12392
12393         * mini.c (mono_jit_compile_method_inner): Use g_warning instead of g_error
12394         for unsupported METHOD_IMPL_ATTRIBUTE_NATIVE.
12395         * main.c: Use UTF-8 encoded command line instead of Windows default code
12396         page on Windows to support Unicode.
12397         * driver.c (DllMain): New function for mixed-mode assembly support.
12398         * Makefile.am: Add -Wl,--kill-at to libmono_la_LDFLAGS on Windows to
12399         export __stdcall functions without decoration.
12400
12401         Contributed under MIT/X11 license.
12402
12403 2008-04-28  Mark Probst  <mark.probst@gmail.com>
12404
12405         * tramp-amd64.c, mini-amd64.c: Preserve R11 in the trampoline by
12406         saving it very early.
12407
12408 2008-04-28  Mark Probst  <mark.probst@gmail.com>
12409
12410         * mini.h, mini.c: Lots of code for accessing the old RGCTX
12411         deleted.  The only way to access the new RGCTX is via the
12412         trampline.
12413
12414         * mini.c, mini-amd64, mini-x86.c, mini-exceptions.c: Pass the
12415         vtable instead of the RGCTX to static methods.
12416
12417         * mini-tramplines.c, tramp-amd64.c, tramp-x86.c: Trampoline for
12418         accessing the new RGCTX.
12419
12420         * generic-sharing.c: There is no separation between self, type
12421         arguments and other types in the RGCTX anymore.
12422
12423 2008-04-25  Jonathan Chambers <joncham@gmail.com>
12424
12425         * mini-amd64.c (add_general): Remove previous stack adjustment.
12426         (mono_arch_call_opcode): Remove OP_OUTARG_MEMBASE and instead simply
12427         adjust stack pointer after pushing args. Adjust ARGS_OFFSET to account
12428         for 32 bytes of stack space reserved for all calls.
12429         
12430         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Remove.
12431         (OP_AMD64_OUTARG_ALIGN_STACK): Take argument to specify size of stack 
12432         adjustment.
12433         
12434         Code contributed under MIT/X11 license.
12435
12436 2008-04-23  Rodrigo Kumpera  <rkumpera@novell.com>
12437
12438         * mini.c (mini_method_verify): Only verify non-inflated methods, check
12439         against the root definition, peeling out method and type instantiations.
12440         Cache verify success results, code that fails verification is still
12441         checked multiple times.
12442
12443 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
12444
12445         * mini.c (mono_method_to_ir): Avoid inserting write barriers for stores of null.
12446
12447 2008-04-23  Jonathan Chambers <joncham@gmail.com>
12448
12449         * mini-amd64.c (add_general): Always increment stack on Win64.
12450         (mono_arch_call_opcode): Use OP_OUTARG_MEMBASE instead of OP_OUTARG
12451         on Win64.
12452         
12453         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Add OP_OUTARG_MEMBASE for 
12454         stack based argument handling on Win64.
12455         
12456         Code contributed under MIT/X11 license.
12457
12458 2008-04-23  Raja R Harinath  <harinath@hurrynot.org>
12459
12460         * Makefile.am (version.h): Add support for git-svn.
12461
12462 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
12463
12464         * mini-exceptions.c (mono_handle_native_sigsegv): Rework the gdb calling code
12465         so instead of calling g_spawn_command_line_sync, we do everything by hand, 
12466         avoiding allocations and libc functions which might deadlock.
12467         
12468         * mini-exceptions.c (mono_handle_native_sigsegv): Avoid calling gdb if the
12469         'no-gdb-backtrace' option is set.
12470
12471         * mini.c (mini_parse_debug_options): Parse 'no-gdb-backtrace' option.
12472
12473         * mini.h (MonoDebugOptions): Add 'no_gdb_backtrace' option.
12474
12475 2008-04-21  Martin Baulig  <martin@ximian.com>
12476
12477         * debug-debugger.h (MonoDebuggerInfo): Removed `attach', `detach'
12478         and `get_lmf_addr'; `notification_address' is no longer a pointer.
12479
12480 2008-04-21  Martin Baulig  <martin@ximian.com>
12481
12482         * debug-debugger.h (MonoDebuggerInfo): Added `thread_vtable_ptr',
12483         `thread_vtable', `event_handler_ptr' and `event_handler'.
12484
12485 2008-04-21  Martin Baulig  <martin@ximian.com>
12486
12487         * debug-debugger.h (MonoDebuggerInfo): Added `init_code_buffer';
12488         allows delayed initialization of the `executable_code_buffer' when
12489         attaching.
12490
12491 2008-04-21  Martin Baulig  <martin@ximian.com>
12492
12493         * mini.h (mono_debugger_create_notification_function): Removed.
12494         * tramp-*.c (mono_debugger_create_notification_function): Removed.
12495
12496         * mdb-debug-info64.s
12497         (MONO_DEBUGGER__notification_function): Added this in the .text section.
12498
12499         * mdb-debug-info32.s
12500         (MONO_DEBUGGER__notification_function): Added this in the .text section.
12501
12502         * Makefile.am: Fix the mdb-debug-info*.s logic; the debugger
12503         currently only works on x86 and x86_64, so don't create it on ppc.
12504
12505 2008-04-21  Martin Baulig  <martin@ximian.com>
12506
12507         * mini.h (MonoDebugOptions): Added `mdb_optimizations'.
12508
12509         * mini.c
12510         (mini_method_compile): In the fp elimination check, check
12511         `debug_options.mdb_optimizations' in addition to
12512         mono_debug_using_mono_debugger().       
12513
12514         * driver.c (mono_main): Added `--debug=mdb-optimizations' option to
12515         disable some JIT optimizations which are only disabled when
12516         running inside the debugger.
12517         Added `--help-debug' option to describe the debugging options.
12518         (parse_debug_options): New static function to parse the `--debug'
12519         options, so we can easily add more stuff in future.
12520
12521 2008-04-20  Zoltan Varga  <vargaz@gmail.com>
12522
12523         * mini.c (set_exception_type_from_invalid_il): Avoid reading invalid memory when
12524         the method has no body.
12525
12526 2008-04-19  Jonathan Chambers <joncham@gmail.com>
12527
12528         * mini-amd64.c (cpuid): Implement with MSVC intrinsic as inline
12529         assembly is not allowed in MSVC 64-bit compiler. 
12530         (mono_arch_cpu_init): Don't set floating point precision on MSVC build
12531         as we get floating point exceptions everywhere.
12532         
12533         * exceptions-amd64.c (get_throw_trampoline): Push empty args on stack to
12534         correctly align arguments for call to throw_exception.
12535         (prepare_for_guard_pages): Cast to guint64 instead of unsigned long.
12536         
12537         Code contributed under MIT/X11 license.
12538
12539 2008-04-19  Zoltan Varga  <vargaz@gmail.com>
12540
12541         * mini-amd64.c (amd64_patch): Make the check for (%rip) addressing more strict.
12542
12543 2008-04-17  Zoltan Varga  <vargaz@gmail.com>
12544
12545         * inssel.brg (OP_SWITCH): Use (gint64) instead of (long) to cast a large constant.
12546
12547         * mini-amd64.c (NEW_INS): Set cil_code.
12548
12549         * mini.c (mini_method_compile): Move the disabling of fp elimination to here
12550         from mini-amd64.c so all debugger related logic is in one place.
12551
12552         * mini.c: Set cfg->ip to NULL after passes which set it so instructions created
12553         later won't have a random ip assigned to them.
12554
12555 2008-04-16  Zoltan Varga  <vargaz@gmail.com>
12556
12557         * mini-trampolines.c (mono_create_jump_trampoline): Add an assert to check that
12558         the arch specific function initializes code_size.
12559         (mono_create_delegate_trampoline): Ditto.
12560
12561         * mini-mips.h mini-mips.c inssel-mips.brg inssel-long32-mips.brg cpu-mips.md
12562         tramp-mips.c: Resurrect MIPS port and also fix the issues on little-endian
12563         platforms.
12564
12565         * liveness.c (mono_analyze_liveness): Disable the initlocals optimization if 
12566         running under the debugger.
12567
12568         * linear-scan.c (mono_linear_scan): Avoid sharing registers if running under the
12569         debugger.
12570
12571         * mini.c (mini_method_compile): Set a few flags in cfg if running under the
12572         debugger. Also move the disabling of optimizations here from driver.c.
12573         (mono_allocate_stack_slots_full): Avoid sharing stack slots if running under the
12574         debugger.
12575
12576         * mini.h (MonoCompile): Add a few new flags.
12577
12578 2008-04-15  Zoltan Varga  <vargaz@gmail.com>
12579
12580         * mini.c (mono_method_to_ir): Set cfg->ip before processing an IL instruction
12581         so the cil_code field of created MonoInst's is properly set.
12582         (mini_select_instructions): Ditto.
12583
12584         * mini.h (MONO_INST_NEW): Initialize the cil_code field using cfg->ip.
12585         (MONO_INST_NEW_CALL): Ditto.
12586
12587         * mini.c inssel.brg inssel-x86.brg inssel-amd64.brg: Use MONO_INST_NEW ()
12588         in many places so the ins->cil_code field is properly initialized.
12589
12590         * mini.c (mono_bblock_add_inst): Call MONO_ADD_INS () so the logic is in one
12591         place.
12592
12593 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
12594
12595         * mini.c (mini_method_compile): Print a different message when compiling a 
12596         shared method.
12597         
12598         * mini.c (GENERIC_SHARING_FAILURE): Print a failure message when verbose_level
12599         > 1.
12600
12601 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
12602
12603         * mini-amd64.c (mono_arch_output_basic_block): Implement OP_ABS directly using
12604         SSE2 instructions.
12605
12606         * basic-math.cs: Fix warnings. Add a test for Math.Abs ().
12607         
12608 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
12609
12610         * mini.c (handle_stack_args): Make this return void since its return value was
12611         never used. Also set cfg->unverifiable for invalid IL instead of calling
12612         G_BREAKPOINT ().
12613
12614 2008-04-10  Mark Probst  <mark.probst@gmail.com>
12615
12616         * mini.c: Make sure "this" is live in catch clauses with type
12617         variables in shared generic code.
12618
12619 2008-04-08  Mark Probst  <mark.probst@gmail.com>
12620
12621         * mini.c: Replaced uses of MONO_TYPE_IS_REFERENCE with calls to
12622         generic_class_is_reference_type() to ensure the proper behaviour
12623         when sharing generic code and the type in question is a type
12624         argument.
12625
12626 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
12627
12628         * mini-exceptions.c: Applied patch from Mark Spruiell (mes@zeroc.com). Fix
12629         race conditions when printing thread dumps. Fixes #377738.
12630
12631 2008-04-08  Massimiliano Mantione  <massi@ximian.com>
12632         
12633         aliasing.c (update_aliasing_information_on_inst): Fixed a bug which
12634         shows up when both MonoInst arguments can cause aliasig.
12635         There is likely no way in the current JIT to trigger this problem, but
12636         it showed up in the development of generics sharing, when in a new
12637         opcode both args of an OP_GROUP can be aliases (addresses of a local).
12638         When the generics sharing code will be committed, its tests will be
12639         valid also for this bug.
12640
12641 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
12642
12643         * aot-runtime.c (decode_patch_info): Always transform PATCH_INFO_WRAPPER to
12644         PATCH_INFO_METHOD.
12645
12646         * mini.c (mono_resolve_patch_target): Fix a crash in the AOT case if method is
12647         NULL.
12648
12649 2008-04-07  Zoltan Varga  <vargaz@gmail.com>
12650
12651         * mini-exceptions.c (mono_handle_exception_internal): When --debug=casts is used,
12652         use a more detailed exception message for InvalidCastException.
12653
12654         * mini.h (MonoJitTlsData): Add 'class_cast_from' and 'class_cast_to' fields.
12655
12656         * driver.c (mono_main): Add --debug=casts option to turn on better 
12657         InvalidCastException message details.
12658
12659         * mini.c (mini_get_debug_options): New helper function to return the address of
12660         the debug_options variable.
12661
12662         * mini.c (mono_get_jit_tls_intrinsic): New helper function to create a load of
12663         the jit_tls TLS variable.
12664
12665         * mini.c (mono_jit_tls): New TLS variable.
12666
12667         * inssel.brg: Save the details of a cast to a TLS variable when the --debug=casts
12668         option is used.
12669
12670 2008-04-07  Rodrigo Kumpera  <rkumpera@novell.com>
12671
12672         * mini.h: Removed verifer related stuff. This code was moved to verify.c
12673
12674         * mini.c: Removed verifer related stuff, code moved to verify.c.
12675
12676         * driver.c: Using code from verify.c instead of mini.c.
12677
12678 2008-04-05  Zoltan Varga  <vargaz@gmail.com>
12679
12680         * mini.c (check_for_method_verify): Remove the mscorlib comment since it is no
12681         longer valid.
12682
12683 2008-04-04  Rodrigo Kumpera  <rkumpera@novell.com>
12684
12685         * mini.c (check_for_method_verify): Enabling verification of
12686         corlib if mono_verify_all is set. Bugs in the verifier preventing that
12687         have been fixed.
12688
12689 2008-04-04  Zoltan Varga  <vargaz@gmail.com>
12690
12691         * exceptions-amd64.c (throw_exception): Unify the win32/non-win32 cases, save
12692         caller saved registers as well.
12693         
12694         * exceptions-amd64.c (mono_arch_get_restore_context): Restore most caller
12695         saved registers as well.
12696
12697 2008-03-30  Zoltan Varga  <vargaz@gmail.com>
12698
12699         * mini-x86.c cpu-x86.md inssel-x86.brg: Add min/max intrinsics.
12700
12701         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of the non-SSE2 floating point
12702         code.
12703
12704 2008-03-27  Zoltan Varga  <vargaz@gmail.com>
12705
12706         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'gsctx' argument and pass it
12707         to get_call_info.
12708         (get_call_info): Take a gsctx argument instead of 'cfg'.
12709
12710 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
12711
12712         * mini.c (check_for_method_verify): Avoid verifying mscorlib methods even if
12713         mono_verify_all is set.
12714
12715         * driver.c (compile_all_methods_thread_main): Don't exit at the first error.
12716
12717         * mini.c mini.h: Remove the unused and incomplete stack merge verification code.
12718
12719 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
12720
12721         * driver.c (compile_all_methods_thread_main): Error out if compilation fails with
12722         an exception.
12723
12724         * driver.c mini.c mini.h: Add a --verify-all development option to test the
12725         verifier and the code generated by the compiler.
12726
12727 2008-03-25  Mark Probst  <mark.probst@gmail.com>
12728
12729         * mini.c: Generic sharing of the non-nullable case of the box
12730         instruction.
12731
12732 2008-03-24  Zoltan Varga  <vargaz@gmail.com>
12733
12734         * inssel.brg: Fix the build.
12735
12736         * iltests.il.in: Add a test for lconv.ovf.u8.un.
12737
12738 2008-03-24  Rodrigo Kumpera  <rkumpera@novell.com>
12739
12740         * mini.c (mono_method_to_ir): Implement readonly for ldelema and
12741         Array:Address. Fixes #372410.
12742
12743         * iltests.il.in: New tests for readonly prefix.
12744
12745 2008-03-23  Zoltan Varga  <vargaz@gmail.com>
12746
12747         * mini.h mini.c mini-trampolines.c: Move trampoline related code to 
12748         mini-trampolines.c.
12749
12750         * mini.h mini.c mini-exceptions.c: Move mini_init_exceptions () to 
12751         mini-exceptions.c.
12752
12753         * mini-amd64.c mini-s390.c (mono_arch_lowering_pass): Use mono_decompose_op_imm ().
12754         
12755         * mini.c (mono_decompose_op_imm): New helper function.
12756
12757         * mini-s390x.c (calculate_sizes): Rename this to get_call_info for consistency
12758         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
12759         return value.
12760
12761         * mini-s390x.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
12762         mono_arch_output_basic_block. Fix warnings.
12763
12764         * inssel-s390x.brg: Remove the unneccesary OP_LMUL_IMM rule to fix the s390x build
12765         for now.
12766
12767 2008-03-22  Zoltan Varga  <vargaz@gmail.com>
12768
12769         * mini-exceptions.c (ves_icall_get_frame_info): Remove the ia64/s390 workarounds
12770         since the extra frame is now detected automatically inside the loop.
12771
12772         * mini-s390.c (mono_arch_peephole_pass_2): Remove the arch independent peephole 
12773         opts which are now in mono_peephole_ins ().
12774         
12775         * mini-s390.c (mono_arch_output_basic_block): Fix OP_FCALL_MEMBASE.
12776
12777         * mini-exceptions.c (ves_icall_get_frame_info): Skip native-to-managed wrapper
12778         frames and skip duplicate managed-to-native frames. Fixes #367665.
12779
12780         * mini-x86.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
12781         opts which are now in mono_peephole_ins ().
12782         (mono_arch_peephole_pass_2): Ditto.
12783
12784         * mini-codegen.c (mono_peephole_ins): Fix a problem on 32 bit platforms.
12785
12786         * mini-codegen.c (mono_peephole_ins): New helper function containing the
12787         arch independent peephole optimizations.
12788
12789         * mini-amd64.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
12790         opts which are now in mono_peephole_ins ().
12791
12792         * mini-amd64.c (mono_arch_peephole_pass_2): Ditto.
12793         
12794         * mini-s390.c (mono_arch_output_basic_block): Fix build.
12795
12796         * tramp-s390.c (mono_arch_get_vcall_slot): Handle an additional instruction
12797         pattern.
12798
12799         * mini-s390.c (mono_arch_output_basic_block): Handle big offsets in the
12800         CALL_MEMBASE opcodes. Fix setting of the destination in the OP_LCONV_TO_OVF_I
12801         opcode. 
12802
12803 2008-03-21  Zoltan Varga  <vargaz@gmail.com>
12804
12805         * mini-s390.c (calculate_sizes): Rename this to get_call_info for consistency
12806         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
12807         return value.
12808
12809         * mini-s390.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
12810         mono_arch_output_basic_block. Fix warnings.
12811
12812 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
12813
12814         * inssel-long32.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
12815         conv.ovf.u.un.
12816
12817 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
12818
12819         * inssel-long.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
12820         conv.ovf.u.un.
12821
12822         * iltests.il: Add new tests.
12823
12824 2008-03-20  Kornel Pal  <kornelpal@gmail.com>
12825
12826         * mini.c: Removed Windows version macros.
12827
12828 2008-03-20  Mark Probst  <mark.probst@gmail.com>
12829
12830         * generic-sharing.c: Put reflection types in the extensible part
12831         of the runtime generic context.
12832
12833         * mini.c: Generic sharing of the GetTypeHandle special case of the
12834         ldtoken instruction.
12835
12836 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
12837
12838         * mini.h (MONO_BB_FOR_EACH_INS_SAFE): New helper macro.
12839
12840         * mini-<ARCH>.c: Use the new macro instead in the peephole/lowering passes.
12841         
12842         * mini.h (MONO_DEL_INS): Rename to MONO_DELETE_INS and Add a 'bb' argument for 
12843         consistency with the other version on the linear IR branch.
12844
12845         * mini-<ARCH>.c: Update callers of MONO_DEL_INS.
12846
12847         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i/conv.ovf.u.
12848
12849         * iltests.il.in: Add new tests.
12850
12851 2008-03-19  Zoltan Varga  <vargaz@gmail.com>
12852
12853         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i.un/conv.ovf.u.un.
12854
12855         * iltests.il.in: Add new tests.
12856
12857 2008-03-19  Mark Probst  <mark.probst@gmail.com>
12858
12859         * mini.c: Two variables with the same name were declared in
12860         nesting contexts and one wasn't initialized.  Fixed.
12861
12862 2008-03-19  Mark Probst  <mark.probst@gmail.com>
12863
12864         * mini.c: Generic sharing of the initobj instruction.
12865
12866 Tue Mar 18 20:18:02 CET 2008 Paolo Molaro <lupus@ximian.com>
12867
12868         * mini.c: make the test to optimize ldtoken from typeof() more
12869         precise.
12870
12871 2008-03-18  Mark Probst  <mark.probst@gmail.com>
12872
12873         * mini.c: Generic sharing of the initobj instruction for reference
12874         types.
12875
12876 Tue Mar 18 12:39:27 CET 2008 Paolo Molaro <lupus@ximian.com>
12877
12878         * mini.h, mini-amd64.c, mini-x86.c, tramp-amd64.c, tramp-x86.c: change
12879         the mono_breakpoint_clean_code() code to perform bound checks.
12880
12881 Tue Mar 18 11:50:14 CET 2008 Paolo Molaro <lupus@ximian.com>
12882
12883         * mini.h, mini-trampolines.c, tramp-*.c: change the signature of
12884         mono_arch_patch_callsite() to include the start of the managed method
12885         to be able to perform bound checks.
12886
12887 2008-03-17  Mark Probst  <mark.probst@gmail.com>
12888
12889         * mini.c: Generic sharing for the isinst instruction.
12890
12891 2008-03-17  Mark Probst  <mark.probst@gmail.com>
12892
12893         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
12894         inssel-long32-mips.brg: Added opcodes for doing indirect calls
12895         with the runtime generic context argument.
12896
12897         * mini.c: Share calls to several types of unsharable methods by
12898         putting the address of the method code in the runtime generic
12899         context and doing an indirect call.
12900
12901         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
12902         to switches.
12903
12904 2008-03-16  Mark Probst  <mark.probst@gmail.com>
12905
12906         * generic-sharing.c: Change due to a change in the runtime genric
12907         context API.
12908
12909 2008-03-15  Martin Baulig  <martin@ximian.com>
12910
12911         * tramp-x86.c
12912         (mono_arch_nullify_class_init_trampoline): Add call to
12913         mono_breakpoint_clean_code() to make things work when running
12914         inside the debugger.
12915
12916         * tramp-amd64.c
12917         (mono_arch_nullify_class_init_trampoline): Add call to
12918         mono_breakpoint_clean_code() to make things work when running
12919         inside the debugger.
12920
12921 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
12922
12923         * inssel-long.brg (reg): Fix 64 bit build.
12924
12925 2008-03-14  Mark Probst  <mark.probst@gmail.com>
12926
12927         * mini.c, mini.h: Share static generic code by passing it an
12928         implicit argument pointing to the runtime generic context.
12929
12930         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
12931         inssel-long32-mips.brg: New opcodes for calling shared static,
12932         which need to be passed the runtime generic context.
12933
12934         * mini-amd64.c, mini-x86.c: Save the runtime generic context
12935         argument on the stack in the prologue if needed.  New function for
12936         finding the runtime generic context argument from the registers
12937         saved by the trampoline.
12938
12939         * mini-amd64.h, mini-x86.h: Specify which register to use for the
12940         runtime generic context argument.
12941
12942         * tramp-amd64.c: Also restore the register used for the runtime
12943         generic context argument.
12944
12945         * mini-trampoline.c: Resolve shared static calls by consulting the
12946         runtime generic context via the new argument.
12947
12948         * generic-sharing.c: Add an argument to sharability-checking
12949         functions that specifies whether type variables should be treated
12950         as sharable type arguments.
12951
12952         * inssel-x86.brg: Removed a superfluous, buggy rule.
12953
12954         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
12955         to switches.
12956
12957 2008-03-14  Martin Baulig  <martin@ximian.com>
12958
12959         * debug-debugger.c (main_thread_handler): Call
12960         mono_runtime_run_main() without sending any notifications.
12961
12962         * debug-debugger.h (MonoDebuggerInfo): Added `get_method_signature.
12963
12964 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
12965
12966         * mini-trampolines.c (mono_magic_trampoline): Fix build on platforms without IMT.
12967
12968 2008-03-14  Mark Probst  <mark.probst@gmail.com>
12969
12970         * tramp-x86.c: Fixed register restore offsets in the trampoline
12971         code for ECX and EDX.
12972
12973 2008-03-12  Geoff Norton  <gnorton@novell.com>
12974
12975         * mini-arm.h: Add some #defines for locating sp, pc, r4 with
12976         different ucontext_t implementations.
12977         * exceptions-arm.c: Use the above defines to get exceptions working on 
12978         iPhone (based on a patch by Luke Howard lukeh@padl.com)
12979         * mini-arm.c: Implement iPhone icache support (based on a patch by
12980         Luke Howard lukeh@padl.com)
12981
12982 2008-03-12  Mark Probst  <mark.probst@gmail.com>
12983
12984         * mini.c: Enable generic sharing of calls to non-static
12985         non-interface non-generic non-value-type methods.
12986
12987         * mini-trampolines.c: Resolve calls from shared generic code.
12988
12989 2008-03-11  Zoltan Varga  <vargaz@gmail.com>
12990
12991         * Makefile.am il2tests.il iltests.il.in: Delete il2tests, merge it into iltests.
12992
12993         * tramp-amd64.c (mono_arch_create_trampoline_code): Correctly save RBP as well.
12994
12995 Mon Mar 10 11:59:34 CET 2008 Paolo Molaro <lupus@ximian.com>
12996
12997         * mini.c: some fixes for the AOT compiler.
12998
12999 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
13000
13001         * cpu-amd64.md: Add clob:1 to some float opcodes.
13002
13003 2008-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
13004
13005         * mini.h: Added MiniVerifierMode enumeration.
13006
13007         * mini.c: Added mini_verifier_set_mode to control
13008         the usage of the new verifier.
13009
13010         * mini.c (mono_method): Integrated the new verifier.
13011
13012         * driver.c: Extended --security option with validil and
13013         verifiable options to activate the new verifier.
13014
13015 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
13016
13017         * mini.c jit-icalls.h jit-icalls.c: Generalize the exception creation 
13018         optimization to ctors taking 0 or 2 arguments too.
13019
13020         * mini.c (mono_method_to_ir): Optimalize the size of the exception throwing code
13021         a bit.
13022
13023         * jit-icalls.h (mono_create_corlib_exception): New JIT icall.
13024
13025         * mini-amd64.c (mono_arch_emit_prolog): Improve the first_bb optimization a bit.
13026
13027 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
13028
13029         * mini.c (mono_method_to_ir): Apply one of the ldstr optimizations in the
13030         non-aot case as well.
13031
13032         * cpu-amd64.md: Reduce the max size of some frequently used opcodes.
13033
13034         * aot-runtime.c (decode_patch_info): Update this after the ldfld/stfld wrapper
13035         changes.
13036
13037         * aot-compiler.c (encode_patch): Ditto.
13038
13039         * mini.h (G_MININT32): Fix the definition of this.
13040
13041 2008-03-05  Zoltan Varga  <vargaz@gmail.com>
13042
13043         * mini.h: Define G_MININT32/G_MAXINT32 if using an older glib version.
13044
13045         * cfold.c: Remove definition of G_MININT32 which is now in mini.h.
13046
13047 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
13048
13049         * mini-amd64.c (mono_arch_compute_omit_fp): Don't disable fp elimination for 
13050         methods returning vtypes in registers.
13051         (mono_arch_allocate_vars): Ditto.
13052
13053         * mini-amd64.c (mono_arch_get_this_arg_reg): New arch specific helper function.
13054
13055         * tramp-amd64.c (mono_arch_get_unbox_trampoline): Use mono_arch_get_this_arg_reg ().    
13056
13057         * generics.cs: Add a test from the linear IR branch.
13058
13059         * mini-amd64.c (emit_load_volatile_arguments): Handle vtypes passed in regs too.
13060
13061         * mini.c (inline_method): Cache failed inline attempts.
13062
13063 2008-03-04  Mark Probst  <mark.probst@gmail.com>
13064
13065         * mini.c: For shared methods of generic classes put the location
13066         of "this" into the MonoGenericJitInfo.
13067
13068         * mini-x86.c, mini-amd64.c, mini.h: Added function for fetching a
13069         register out of a MonoContext by register number.  Add the generic
13070         sharing context as an argument to mono_arch_find_this_argument().
13071
13072         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
13073         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c: Added stub
13074         for new arch function.
13075
13076         * mini-exception.c: Handle open exception clauses in shared
13077         generic code.
13078
13079         * mini-trampolines.c: Supply additional argument to
13080         mono_arch_find_this_argument().
13081
13082 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
13083
13084         * Makefile.am (regtests): Run the bench.exe tests last.
13085
13086 2008-03-03  Zoltan Varga  <vargaz@gmail.com>
13087
13088         * mini-amd64.c (mono_arch_emit_prolog): Improve the first bblock optimization
13089         a bit.
13090
13091 2008-03-02  Zoltan Varga  <vargaz@gmail.com>
13092
13093         * mini.c (mono_method_to_ir): Allow callvirt on static methods for compatibility
13094         with MS.
13095
13096         * mini-amd64.c (mono_arch_emit_prolog): Fix tracing after the last change.
13097         
13098         * mini-amd64.c (mono_arch_emit_prolog): Avoid saving dead arguments.
13099
13100         * mini.c (mono_method_check_inlining): Avoid disabling inlining for methods
13101         whose class has no cctor.
13102
13103         * liveness.c (mono_analyze_liveness): Mark dead arguments with MONO_INST_IS_DEAD.
13104
13105 2008-03-01  Zoltan Varga  <vargaz@gmail.com>
13106
13107         * mini.c (mono_method_to_ir): Report calling a static method using callvirt as
13108         unverified.
13109
13110 2008-02-29  Zoltan Varga  <vargaz@gmail.com>
13111
13112         * mini-ops.h: Remove OP_SPARC_INARG_VT, add a new OP_VTARG_ADDR opcode instead
13113         to be in sync with the code on the linear IR branch.
13114
13115         * mini-sparc.c inssel-sparc.brg: Use OP_VTARG_ADDR.
13116
13117         * inssel-s390.brg (OP_SETRET (freg)): Set dreg correctly.
13118
13119 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
13120
13121         * mini-mips.c: Use cfg->vret_addr instead of cfg->ret.
13122
13123         * mini-s390x.c: Use cfg->vret_addr instead of cfg->ret.
13124
13125         * mini-s390.c: Use cfg->vret_addr instead of cfg->ret.
13126
13127         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_VARS define.
13128
13129         * mini-<ARCH>.c (mono_arch_create_vars): Define this for all architectures.
13130         
13131         * mini.c (mono_method_to_ir): Avoid invalid memory reads for methods without a
13132         body.
13133
13134 2007-11-14  Yoichi NAKAYAMA  <nakayama@pixela.co.jp>
13135
13136         * inssel-mips.brg (OP_OUTARG_MEMBASE (CEE_LDIND_R4 (base))): Add missing
13137         OP_LOADR4_MEMBASE emission.
13138
13139         * mini-codegen.c (mono_spillvar_offset_int): Remove assertion.
13140         (mono_spillvar_offset_float): Ditto.
13141
13142         * mini-mips.c (mono_arch_emit_prolog): Ditto.
13143
13144         * inssel-long32-mips.brg: Fix wrong branching, reduce redundant code
13145         emission.
13146
13147         * basic-long.cs: Add regression tests for them.
13148
13149         * mini-mips.c (add_float32_arg): Respect o32 calling convention in gr
13150         use.
13151         (mono_arch_allocate_vars): Fix representation of single-precision float
13152         argument.
13153         (mono_arch_output_basic_block): Ditto.
13154
13155         * inssel-mips.brg: Ditto, remove duplicate items.
13156
13157         * mini-mips.c (emit_load_volatile_arguments): New function to handle
13158         arguments of tail calls as on other platforms.
13159         (mono_arch_output_basic_block): Handle tail calls.
13160
13161         * inssel-mips.brg (OP_OUTARG_VT (CEE_LDOBJ (base))): Correct destination
13162         register.
13163
13164         * objects.cs (test_5_pass_static_struct): Add test for it.
13165
13166         Contributed under MIT/X11 license.
13167
13168 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
13169
13170         * Makefile.am: Use gmcs for compiling the regression tests.
13171
13172         * *.2.cs *.2.il: Rename to *.cs and *.il.
13173
13174 2008-02-24  Zoltan Varga  <vargaz@gmail.com>
13175
13176         * regalloc.h: Make the vassign array smaller.
13177
13178         * mini.c (mini_method_compile): Remove an unused field in cfg.
13179
13180         * mini-codegen.c: Add a bunch of micro optimizations.
13181
13182 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
13183
13184         * regalloc.h: Remove some unused fields.
13185
13186 2008-02-22  Zoltan Varga  <vargaz@gmail.com>
13187
13188         * mini-amd64.c (mono_arch_patch_code): Fix a warning.
13189
13190         * ssa.c (mono_ssa_remove): Avoid declaring volatile variables dead.
13191
13192 2008-02-22  Mark Probst  <mark.probst@gmail.com>
13193
13194         * mini.h: New trampoline type (RGCTX_LAZY_FETCH).
13195
13196         * mini-trampolines.c, tramp-amd64.c, tramp-x86.c: RGCTX lazy fetch
13197         trampoline: Fetch an entry from the runtime generic context.  If
13198         it's NULL, jump to the actual trampoline to fill the runtime
13199         generic context.  Otherwise, return it.
13200
13201         * mini.c: Call the lazy fetch trampoline to get entries out of the
13202         runtime generic context.
13203
13204         * tramp-ia64.c, tramp-arm.c, tramp-alpha.c, tramp-s390.c,
13205         tramp-s390x.c, tramp-ppc.c, tramp-hppa.c, tramp-mips.c,
13206         tramp-sparc.c: Stubs for the lazy fetch trampoline.
13207
13208 2008-02-21  Mark Probst  <mark.probst@gmail.com>
13209
13210         * mini.c: Fetch data out of the extensible part of the runtime
13211         generic context instead of calling a helper function.
13212
13213         * generic-sharing.c: Some functions moved into
13214         metadata/generic-sharing.c.  Helper function for fetching other
13215         types now checks and asserts against extensible rgctx (just for
13216         debugging purposes - the helper function isn't called anymore
13217         unless for debugging).
13218
13219 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
13220
13221         * mini-arm.c (mono_arch_output_basic_block): Implement proper argument passing
13222         for tail calls up to the point that the tests in iltests.exe run. Also add a
13223         dummy CKFINITE implementation.
13224         (mono_arch_emit_prolog): Avoid saving the method in the LMF since it is only
13225         needed for trampoline LMF frames.
13226
13227         * exceptions-arm.c (mono_arch_find_jit_info): Only read lmf->method for 
13228         trampoline LMF frames.
13229
13230 2008-02-21  Rodrigo Kumpera  <rkumpera@novell.com>
13231
13232         * mini.c (inline_method): clean any pending loader error when inlining fail.
13233         Otherwise loader errors in mono_method_to_ir leaks and cause spurious errors.
13234
13235 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
13236
13237         * aot-compiler.c (encode_patch): Handle ICALL_ADDR patch type.
13238
13239         * aot-runtime.c (decode_patch_info): Ditto.
13240
13241         * mini.c (mono_resolve_patch_target): Ditto.
13242         
13243         * aot-compiler.c (compile_method): Add some experimental code for AOT compiling
13244         icall wrappers.
13245
13246         * patch-info.h (PATCH_INFO): Add 'ICALL_ADDR' patch type.
13247         
13248         * mini.c (mono_method_to_ir): Convert a CEE_MONO_LDPTR opcode to an AOT constant
13249         if it references an icall address.
13250
13251 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
13252
13253         * cpu-s390x.md: Remove some more unused opcodes.
13254         
13255         * cpu-s390x.md: Remove some unused opcodes.
13256
13257         * mini-ia64.c (mono_arch_lowering_pass): Add some more opcodes. Use
13258         mono_op_imm_to_op ().
13259
13260         * mini-sparc.c (opcode_to_sparc_cond): Use the mono_opcode_to_cond () functions
13261         instead of a switch statement.
13262         
13263         * mini-sparc.c (mono_arch_allocate_vars): Allocate a stack slot for use by
13264         the int<->float conversion opcodes instead of using mono_spillvar_offset_float ().
13265
13266         * mini-codegen.c: Eliminate rassign macro which is no longer needed.
13267         
13268         * mini-codegen.c: Remove unused mono_regstate2_... functions.
13269
13270         * mini-codegen.c (mono_print_ins_index): Avoid printing an index when it is
13271         -1.
13272
13273 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
13274
13275         * driver.c (mono_main): Improve error reporting when an assembly cannot be
13276         opened. Fixes #362607.
13277
13278         * cpu-ia64.md cpu-s390x.md: Remove some unused opcodes.
13279
13280         * iltests.il.in: Add a test for static methods in interfaces.
13281
13282 2008-02-18  Zoltan Varga  <vargaz@gmail.com>
13283
13284         * genmdesc.c (build_table): Fix a crash on older glib versions.
13285
13286         * cpu-sparc.md: Remove some unused opcodes.
13287         
13288         * genmdesc.c: Error out if the .md contains CEE_ opcodes if 
13289         MONO_ARCH_ENABLE_NORMALIZE_OPCODES is defined.
13290
13291         * cpu-amd64.md: Remove some unused opcodes.
13292
13293         * mini.h mini-ops.h mini.c: Define the OP_Ccc opcodes in mini-ops.h normally
13294         like the other opcodes.
13295
13296 2008-02-17  Zoltan Varga  <vargaz@gmail.com>
13297
13298         * mini-ia64.c: Use cfg->vret_addr instead of cfg->ret.
13299
13300         * mini-arm.h mini-arm.c: Use cfg->vret_addr instead of cfg->ret.
13301
13302         * mini-sparc.c: Use cfg->vret_addr instead of cfg->ret. Name the MonoCompile
13303         variables 'cfg' instead of 'm' for consistency.
13304
13305         * mini-x86.c: Use cfg->vret_addr instead of cfg->ret.
13306
13307         * mini.h (MonoCompile): Add new 'vret_addr' field which represents the hidden
13308         argument holding the vtype return address, to avoid the ambigious use of
13309         cfg->ret for this purpose.
13310
13311         * mini.c (NEW_RETLOADA): Use vret_addr if set.
13312
13313         * mini-amd64.c: Use cfg->vret_addr instead of cfg->ret.
13314         
13315         * mini-codegen.c (mono_print_ins): Rename to mono_print_ins_index (), Add a
13316         new mono_print_ins () function which only takes one argument.
13317
13318 2008-02-15  Zoltan Varga  <vargaz@gmail.com>
13319
13320         * mini-s390.h (MONO_OUTPUT_VTR): Use cfg instead of s, avoid assignments to
13321         macro arguments.
13322
13323 2008-02-14  Zoltan Varga  <vargaz@gmail.com>
13324
13325         * mini-ops.h: Get rid of OP_SPARC_LOCALLOC_IMM.
13326
13327         * mini-sparc.c inssel-sparc.brg: Use OP_LOCALLOC_IMM instead of OP_SPARC_LOCALLOC_IMM.
13328
13329         * mini-x86.c: Sync with the version on the linear IR branch by adding new 
13330         opcodes and other small changes.
13331
13332         * mini-ops.h: Add some new opcodes from the linear IR branch.
13333
13334         * mini-ops.h: Get rid of the OP_X86_..._MEMBASE opcodes.
13335
13336         * mini-x86.c inssel-x86.brg cpu-x86.md: Get rid of the confusing _MEMBASE
13337         opcodes, use the REG_MEMBASE opcodes instead.
13338         
13339         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Get rid of the confusing _MEMBASE
13340         opcodes, use the REG_MEMBASE opcodes instead.
13341         
13342         * mini-amd64.c (mono_arch_output_basic_block): Sync with the version on the
13343         linear IR branch.
13344
13345         * mini.c (mono_op_imm_to_op): New helper function.
13346
13347         * mini-ops.h: Add some opcodes from linear IR branch.
13348
13349 2008-02-13  Zoltan Varga  <vargaz@gmail.com>
13350
13351         * mini-alpha.h mini-alpha.c tramp-alpha.c: Alpha port updates from Sergey Tikhonov 
13352         <tsv@solvo.ru>.
13353
13354 2008-02-12  Zoltan Varga  <vargaz@gmail.com>
13355
13356         * mini.c (mono_normalize_opcodes): Always convert CEE_CONV_R4/R8 to 
13357         OP_ICONV_TO_R4/R8.
13358
13359         * mini-ia64.c cpu-ia64.md: Add OP_ICONV_TO_R4/R8.
13360
13361 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
13362
13363         * aot-compiler.c (emit_method_code): Add an assert.
13364
13365         * mini-arm.h mini-arm.c exceptions-arm.c: Modify the exception throwing code and
13366         the IMT code so it is AOT friendly. Enable AOT for methods which call interface
13367         methods.
13368
13369 2008-02-08  Zoltan Varga  <vargaz@gmail.com>
13370
13371         * mini-arm.c (mono_arch_output_basic_block): Fix the ordering of arguments for 
13372         some load/store opcodes so they are consistent. 
13373         (mono_arch_emit_prolog): Simplify some code.
13374
13375         * aot-runtime.c (mono_aot_get_plt_entry): Fix a warning.
13376
13377         * objects.cs: Add tests for large argument offsets on ARM.
13378
13379         * mini-arm.c (mono_arch_emit_prolog): Fix handling of arguments with large 
13380         stack offsets. Fixes #359651.
13381
13382         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R4/R8 properly.
13383
13384         * cpu-s390x.md: Add OP_LCONV_TO_R4/R8.
13385
13386         * cpu-ia64.md mini-ia64.h mini-ia64.c: Get rid of CEE_ opcodes.
13387
13388         * mini-ops.h: Add OP_ICONV_TO_R_UN opcode.
13389
13390         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R_UN too.
13391
13392         * cpu-s390x.md cpu-s390.md mini-s390x.c mini-arm.c cpu-arm.md mini-s390.c: Get
13393         rid of CEE_CONV_R_UN.
13394
13395         * mini-s390x.c mini-s390x.h cpu-s390x.md inssel-s390x.brg: Get rid of CEE_ opcodes.
13396
13397 2008-02-07  Zoltan Varga  <vargaz@gmail.com>
13398
13399         * mini-s390.c mini-s390.h cpu-s390.md: Get rid of CEE_ opcodes.
13400
13401         * mini.c (mono_normalize_opcodes): Add some more opcodes.
13402
13403         * mini-arm.c mini-arm.h cpu-arm.md: Get rid of CEE_ opcodes.
13404
13405         * cpu-amd64.md: Remove some unused opcodes.
13406
13407         * mini-sparc.c mini-sparc.h cpu-sparc.md: Get rid of CEE_ opcodes.
13408
13409         * mini-x86.c mini-x86.h cpu-x86.md: Get rid of CEE_ opcodes.
13410
13411         * mini.c mini-<ARCH>.c: Remove mono_arch_local_regalloc (), instead make 
13412         arch specific functions for its parts. Call the peephole pass after local
13413         regalloc so the prolog can compute a more accurate max_offset.
13414         
13415         * mini.c (mono_normalize_opcodes): New mini pass to convert CEE_ opcodes to
13416         the corresponding OP_I/OP_L opcodes.
13417
13418         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of CEE_ opcodes.
13419
13420         * mini-sparc.c (mono_arch_output_basic_block): Fix the sparc build.
13421
13422 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
13423
13424         * mini-s390.c (mono_arch_get_inst_for_method): Remove the Interlocked cases
13425         as they are handled in mini.c.
13426
13427         * mini-s390x.c (mono_arch_get_inst_for_method): Ditto.
13428         
13429         * mini-<ARCH>.c (mono_arch_get_inst_for_method): Remove the MemoryBarrier
13430         case since it is handled in mini.c.
13431
13432         * cpu-sparc.md (sparc_setfreg_float): Fix the sparc build.
13433
13434         * mini-ops.h: Add new opcodes OP_CALL/OP_CALLVIRT.
13435
13436         * *.c: Use the new opcodes in the IR and back end code.
13437
13438         * mini-ops.h cpu-<ARCH>.md: Correct the name of the bgt_un opcodes.
13439
13440         * mini-amd64.c (emit_call_body): Use a far-call for calling dynamic methods.
13441
13442 2008-02-06  Mark Probst  <mark.probst@gmail.com>
13443
13444         * mini-trampolines.c (mono_generic_class_init_trampoline): Removed
13445         an assert because it has a race condition.
13446
13447 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
13448
13449         * tramp-amd64.c (mono_arch_patch_callsite): Add more diagnostics.
13450
13451         * inssel.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused CEE_RET opcode.
13452
13453         * mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused LDIND/STIND opcodes.
13454
13455         * *.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of OP_SETREG/OP_SETFREG/OP_SETREGIMM,
13456         use OP_MOVE/OP_FMOVE/OP_ICONST instead.
13457
13458 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
13459
13460         * cpu-amd64.md (move): Correct the maximum size of move.
13461
13462 2008-02-05  Mark Probst  <mark.probst@gmail.com>
13463
13464         * tramp-amd64.c, tramp-x86.c, mini-trampolines.c: Added a check in
13465         the generic class init trampoline to return quickly if the class
13466         is already inited.
13467
13468 2008-02-04  Zoltan Varga  <vargaz@gmail.com>
13469
13470         * tramp-amd64.c (mono_arch_patch_callsite): Add some diagnostics to help debug
13471         issues where an 32 bit callsite cannot be patched by a 64 bit address.
13472
13473 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
13474
13475         * generics.2.cs generics-variant-types.2.il: Merge some tests from the linear IR
13476         branch.
13477
13478 2008-01-31  Zoltan Varga  <vargaz@gmail.com>
13479
13480         * objects.cs: Add some soft-float tests.
13481
13482         * mini.c: Fix a couple more soft-float issues.
13483
13484         * helpers.c (mono_disassemble_code): Fix disassembly on ARM.
13485
13486         * mini-amd64.c (peephole_pass): Use IXOR instead of LXOR for zeroing a register to
13487         avoid a REX prefix.
13488
13489 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
13490
13491         * exceptions-x86.c (mono_arch_find_jit_info): Fix stack unwinding when an
13492         exception happens while compiling a virtual method.
13493
13494 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
13495
13496         * mini-sparc.c (mono_arch_emit_epilog): Fix folding of negative return values.
13497         
13498         * mini-sparc.c: Fix build.
13499
13500         * mini-sparc.c (get_call_info): Add support for generic sharing.
13501
13502         * mini-exceptions.c: Add a FIXME.
13503
13504 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
13505
13506         * mini-exceptions.c (mono_handle_exception_internal): Remove the old style
13507         altstack handling code.
13508
13509         * mini-s390.c (mono_arch_emit_exceptions): Really fix a warning.
13510         
13511         * mini-s390.c (mono_arch_emit_exceptions): Fix a warning.
13512
13513         * mini-s390.c: Add support for generic sharing.
13514
13515         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
13516         Fix CAS on s390.
13517         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
13518
13519         * mini-s390x.c (mono_arch_emit_exceptions): Fix a warning.
13520
13521         * mini-s390x.c: Add support for generic sharing.
13522         
13523         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
13524         Fix CAS on ia64.
13525         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
13526
13527         * mini-s390x.c: Use is_imm16 instead of is_uimm16 when checking whenever s390_aghi
13528         can be used since it takes a 16 bit signed immediate.
13529
13530         * inssel-s390x.brg: Fix OP_SETRET.
13531
13532         * mini-s390x.c (mono_arch_output_basic_block): Fix OP_BREAK.
13533
13534         * mini-codegen.c (mono_opcode_to_cond): Fix a warning.
13535
13536         * mini-s390x.c cpu-s390x.md: Implement sext.i4 properly by sign extension.
13537
13538         * mini.c (mono_create_delegate_trampoline): Don't use mono_create_ftpntr here.
13539
13540         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_addr_from_ftnptr
13541         in one place.
13542
13543         * mini-ia64.h mini-ia64.c: Add minimal support for the delegate trampoline 
13544         stuff.
13545
13546         * mini.h inssel-x86.brg inssel-amd64.brg tramp-alpha.c tramp-ia64.c: Get rid
13547         of the unused mono_arch_patch_delegate_trampoline stuff.
13548
13549 2008-01-26  Zoltan Varga  <vargaz@gmail.com>
13550
13551         * basic-long.cs: Move the fp related tests to basic-float.cs.
13552
13553         * mini-ops.h (OP_OUTARG_FREG_R4): New opcode.
13554
13555         * mini-ia64.c inssel-ia64.brg: Implement proper R4 argument passing.
13556
13557         * basic-calls.cs: Add a test for proper float argument passing.
13558
13559         * mini-ia64.h (mono_ia64_context_get_ip): Do not substract 1 from the ip
13560         if the context corresponds to an exception received through a signal.
13561
13562         * exceptions.cs: Add a test for nullref handling at the start of a try
13563         clause.
13564
13565         * mini-ia64.c (mono_arch_call_opcode): Fix ia64 argument passing.
13566
13567         * jit-icalls.c (mono_break): New JIT icall.
13568
13569         * mini-<ARCH>.c: Use mono_break instead of mono_arch_break.
13570
13571         * mini-arm.c (arm_patch): Add support for patching the blx calling sequence.
13572
13573 2008-01-25  Zoltan Varga  <vargaz@gmail.com>
13574
13575         * cpu-*.md: Get rid of unused opcodes.
13576
13577         * cpu-g4.md: Rename this to cpu-ppc.md for consistency with other archs.
13578
13579         * Makefile.am: Move mini-trampolines.c to $(common_sources) since it is now used
13580         by all platforms.
13581
13582         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_SPECIFIC_TRAMPOLINE
13583         define.
13584
13585         * mini-s390x.h tramp-s390x.c Makefile.am: Rework the s390x trampoline code to use
13586         the arch independent trampoline code in mini-trampolines.c.
13587
13588         * aot-runtime.c (mono_aot_init_vtable): Fix a warning.
13589
13590         * mini.c (get_runtime_generic_context_ptr): Fix a warning.
13591
13592         * mini-s390.h: Remove an unused define.
13593         
13594         * mini-s390.h tramp-s390.c Makefile.am: Rework the s390 trampoline code to use
13595         the arch independent trampoline code in mini-trampolines.c.
13596
13597         * mini-arm.c (mono_arch_emit_prolog): Fix build.
13598
13599 2008-01-24  Zoltan Varga  <vargaz@gmail.com>
13600
13601         * mini-sparc.c (mono_arch_output_basic_block): Remove some unecessary code.
13602
13603         * mini-s390.c (mono_arch_emit_prolog): Fix build.
13604
13605         * mini-s390x.c (mono_arch_emit_prolog): Fix build.
13606
13607         * mini-ppc.c (mono_arch_emit_prolog): Fix build.
13608
13609         * cpu-amd64.md: Use smaller sizes for int opcodes.
13610
13611         * *.c: Get rid of the NOT_IMPLEMENTED define which is now in mini.h.
13612
13613         * *.cs: Add some tests from the linear-ir branch. Move structs tests to 
13614         objects.cs.
13615
13616         * driver.c (mono_main): Add a --break-at-bb command line argument for JIT
13617         debugging.
13618
13619         * mini.h *.c: Change cfg->vars to contain the MonoMethodVar entries directly
13620         instead of though a pointer to save an indirection when accessing elements of
13621         the array.
13622
13623         * mini.h (MONO_IS_COND_BRANCH_OP): Move these macros here from mini.c. Fix
13624         some typos.
13625         (NOT_IMPLEMENTED): New helper macro.
13626         (MONO_BB_FOR_EACH_INS): New helper macro to iterate through the instructions
13627         of a bb.
13628
13629         * *.c: Use the new helper macro.
13630
13631 2008-01-21  Zoltan Varga  <vargaz@gmail.com>
13632
13633         * mini-x86.h (MONO_ARCH_AOT_SUPPORTED): Disable AOT for apple x86.
13634
13635 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
13636
13637         * mini-amd64.c (mono_arch_emit_prolog): Optimize the omit fp case to save two
13638         stack slots.
13639
13640 2008-01-18  Zoltan Varga  <vargaz@gmail.com>
13641
13642         * mini-amd64.c (mono_arch_emit_prolog): Disable the new optimization if
13643         profiling is enabled.
13644         
13645         * mini-amd64.c (mono_arch_call_opcode): Emit the save_sp_to_lmf instruction at
13646         the end.
13647         (mono_arch_emit_prolog): Add more first bblock optimizations.
13648
13649         * mini-amd64.c (mono_arch_call_opcode): Keep assignments to the arg registers
13650         in order if possible.
13651         (mono_arch_emit_prolog): Optimize assignments to arg registers in the first
13652         bblock, since the arguments are still in their original registers.
13653
13654         * mini.c (type_from_op): Calling add.ovf on floats is not valid IL code.
13655
13656 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
13657
13658         * mini.c (mono_method_to_ir): Use the no-spilling optimization for CEE_CALLI
13659         as well.
13660
13661         * mini-amd64.c (mono_arch_emit_prolog): Save an instruction if the LMF is at
13662         offset 0.
13663
13664         * mini-amd64.h (MONO_ARCH_HAVE_NOTIFY_PENDING_EXC): Turn on this for amd64.
13665
13666         * exceptions-amd64.c (mono_arch_notify_pending_exc): New function to 
13667         process async exceptions received while in unmanaged code.
13668
13669         * mini.c (mini_init): Install a callback with the runtime which will be called
13670         when a thread receives an async exception while in unmanaged code.
13671
13672         * mini.c driver.c: Update after mono_get_native_wrapper () signature change.
13673
13674         * mini-s390x.c (mono_arch_output_basic_block): Fix s390x build.
13675
13676 2008-01-16  Wade Berrier  <wberrier@novell.com>
13677
13678         * cpu-g4.md:
13679         * cpu-arm.md:
13680         * cpu-s390x.md:
13681         fix build
13682
13683 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
13684
13685         * mini-x86.c (mono_arch_output_basic_block): Remove some gccism which prevents
13686         compilation with sun cc.
13687
13688         * cpu-*.md: Fix the build.
13689
13690         * cpu-x86.md: Fix the length of some load membase opcodes. Fixes #354241.
13691
13692         * mini-amd64.h: Add some comments to the MonoLMF structure.
13693
13694         * mini-ops.h cpu-amd64.c: Add a OP_AMD64_SAVE_SP_TO_LMF opcode.
13695         
13696         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Avoid setting the rip field
13697         in the LMF structure if possible. This saves two instructions in the
13698         managed->native wrappers.
13699
13700         * mini-ops.h *.md: Make some opcodes names uniform by removing the op_ prefix.
13701
13702 2008-01-16  Mark Probst  <mark.probst@gmail.com>
13703
13704         * generic-sharing.c: New type argument lookup code which uses the
13705         runtime generic context template.
13706
13707 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
13708
13709         * mini.c (mono_method_to_ir): Avoid emitting a write barrier when storing NULL.
13710
13711         * mini-arm.c (add_general): Fix arm eabi parameter passing.
13712         (mono_arch_output_basic_block): Fix localloc implementation.
13713
13714         * mini-amd64.c (peephole_pass): Sync store+load optimizations with the x86 version.
13715
13716         * mini-ia64.c (peephole_pass): Fix ia64 build.
13717
13718         * mini-amd64.c (peephole_pass): Fix a warning.
13719         
13720         * mini-amd64.c (mono_arch_allocate_vars): Make sure the LMF is always stored
13721         at a constant offset from sp/fp.
13722
13723         * exceptions-amd64.c (mono_arch_find_jit_info): Compute the LMF address from fp/sp
13724         instead of obtaining it from *lmf in the managed method case.
13725
13726 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
13727
13728         * exceptions-amd64.c (mono_arch_find_jit_info): Remove some duplicate code.
13729
13730 Mon Jan 14 12:33:06 CET 2008  David S. Miller  <davem@davemloft.net>
13731
13732         * mini.h (MonoInstList): New type.
13733         (MONO_INST_LIST_INIT, MONO_INST_LIST_EMPTY,
13734         __MONO_INST_LIST_ADD, MONO_INST_LIST_ADD,
13735         MONO_INST_LIST_ADD_TAIL, __MONO_INST_LIST_DEL,
13736         __MONO_INST_LIST_SPLICE, MONO_INST_LIST_SPLICE,
13737         MONO_INST_LIST_SPLICE_TAIL, MONO_INST_LIST_SPLICE_INIST,
13738         MONO_INST_LIST_SPLICE_TAIL_INIT, mono_container_of,
13739         MONO_INST_LIST_ENTRY, MONO_INST_LIST_FIRST_ENTRY,
13740         MONO_INST_LIST_LAST_ENTRY, MONO_INST_LIST_FOR_EACH,
13741         MONO_INST_LIST_FOR_EACH_PREV, MONO_INST_LIST_FOR_EACH_SAFE,
13742         MONO_INST_LIST_FOR_EACH_PREV_SAFE,
13743         MONO_INST_LIST_FOR_EACH_ENTRY,
13744         MONO_INST_LIST_FOR_EACH_ENTRY_REVERSE,
13745         MONO_INST_LIST_FOR_EACH_ENTRY_SAFE,
13746         mono_inst_list_first, mono_inst_list_last,
13747         mono_inst_list_next, mono_inst_list_prev): New instruction
13748         list handling interfaces.
13749         (MonoBasicBlock): Remove 'last_ins' and 'code', replace with
13750         list head 'ins_list'.
13751         (MonoInst): Replace next pointer with list head 'node'.
13752         (MonoCallInst): Make 'out_args' a MonoInstList.
13753         (MONO_INST_NEW_CALL): Explicitly init ->out_args.
13754         (MonoCompile): Delete reverse_inst_list and
13755         reverse_inst_list_len.
13756         * mini-hppa.c (mono_arch_call_opcode, NEW_INS,
13757         mono_arch_lowering_pass, mono_arch_local_regalloc,
13758         mono_arch_output_basic_block, mono_arch_emit_prolog):
13759         Convert to new instruction lists.
13760         (insert_after_ins): Delete.
13761         * inssel.brg (MONO_EMIT_NEW_BRANCH_BLOCK): Convert to new
13762         instruction lists.
13763         * mini-hppa.h (MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Likewise.
13764         * mini.c (NEW_BBLOCK, ADD_BBLOCK, CHECK_BBLOCK,
13765         split_bblock, mono_add_ins_to_end, mono_emit_call_args,
13766         mono_emulate_opcode, mono_emit_load_got_addr,
13767         inline_method, mono_method_to_ir, mono_print_bb_code,
13768         print_dfn, decompose_pass, nullify_basic_block,
13769         replace_out_block_in_code, remove_block_if_useless,
13770         merge_basic_blocks, move_basic_block_to_end,
13771         try_unsigned_compare, optimize_branches, mono_print_code,
13772         mini_select_instructions, remove_critical_edges): Likewise.
13773         * mini-amd64.c (emit_sig_cookie, mono_arch_call_opcode,
13774         peephole_pass_1, peephole_pass, mono_arch_lowering_pass,
13775         mono_arch_output_basic_block, mono_arch_emit_prolog):
13776         Likewise.
13777         * mini-mips.c (mono_arch_call_opcode, peephole_pass,
13778         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
13779         mono_arch_output_basic_block): Likewise.
13780         (inst_list_prepend, insert_after_ins): Delete.
13781         * mini-mips.h (MONO_EMIT_NEW_BRANCH_NONZERO_LABEL,
13782         MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Convert to new
13783         instruction lists.
13784         * mini-x86.c (emit_sig_cookie, mono_arch_call_opcode,
13785         peephole_pass_1, peephole_pass, mono_arch_output_basic_block,
13786         mono_arch_emit_prolog): Likewise.
13787         * cfold.c (mono_constant_fold): Likewise.
13788         * liveness.c (visit_bb, mono_analyze_liveness,
13789         optimize_initlocals): Likewise.
13790         * ssapre.c (dump_code, process_bb, code_motion): Likewise.
13791         * graph.c (mono_draw_code_cfg): Likewise.
13792         * ssa.c (mono_ssa_rename_vars, mono_ssa_compute,
13793         mono_ssa_remove, mono_ssa_avoid_copies, mono_ssa_create_def_use,
13794         mono_ssa_cprop): Likewise.
13795         * abcremoval (get_relations_from_previous_bb, process_block):
13796         Likewise.
13797         * local-propagation (mono_cprop_invalidate_values,
13798         mono_local_cprop_bb): Likewise.
13799         * mini-s390x.c (mono_arch_call_opcode, emit_sig_cookie,
13800         peephole_pass, mono_arch_output_basic_block,
13801         mono_arch_emit_prolog): Likewise.
13802         * mini-arm.c (mono_arch_call_opcode, peephole_pass,
13803         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
13804         mono_arch_emit_prolog): Likewise.
13805         (insert_after_ins): Delete.
13806         * aliasing.c (print_code_with_aliasing_information,
13807         mono_build_aliasing_information, mono_aliasing_deadce):
13808         Convert to new instruction lists.
13809         * mini-ia64.c (emit_sig_cookie, mono_arch_call_opcode,
13810         peephole_pass, NEW_INS, mono_arch_lowering_pass,
13811         mono_arch_local_regalloc, mono_arch_output_basic_block):
13812         Likewise.
13813         (insert_after_ins): Delete.
13814         * mini-sparc.c (emit_sig_cookie, mono_arch_call_opcode,
13815         peephole_pass, mono_arch_output_basic_block): Convert to
13816         new instruction lists.
13817         * mini-codegen (InstList, inst_list_prepend,
13818         insert_after_ins): Delete.
13819         (insert_before_ins, get_register_force_spilling,
13820         get_register_spilling, free_up_ireg, free_up_reg,
13821         create_copy_ins, create_spilled_store, alloc_int_reg,
13822         alloc_float_reg, alloc_reg, mono_local_regalloc): Convert
13823         to new instruction lists.
13824         * mini-ppc.c (mono_arch_call_opcode, peephole_pass,
13825         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
13826         mono_arch_output_basic_block, mono_arch_emit_prolog): Likewise.
13827         (insert_after_ins): Delete.
13828         * mini-alpha.c (NEW_INS, peephole_pass, mono_arch_lowering_pass,
13829         mono_arch_local_regalloc, mono_arch_output_basic_block,
13830         mono_arch_call_opcode): Convert to new instruction lists.
13831         (insert_after_ins): Delete.
13832         * mini-s390.c (mono_arch_call_opcode, emit_sig_cookie,
13833         peephole_pass, mono_arch_output_basic_block,
13834         mono_arch_emit_prolog): Convert to new instruction lists.
13835
13836 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
13837
13838         * mini-amd64.c (mono_arch_output_basic_block): Use a 4 byte load in OP_CHECK_THIS.
13839
13840         * mini-sparc.c (mono_arch_output_basic_block): Use a byte load in CHECK_THIS.
13841         Fixes #353182.
13842
13843         * Makefile.am (version.h): Make this work with non-bash shells.
13844
13845 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
13846
13847         * mini.c (handle_delegate_ctor): Optimize away setting of NULL target.
13848
13849 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
13850
13851         * mini.c (mono_method_to_ir): Fix possible reading of invalid memory in 
13852         the InitializeArray optimization.
13853
13854 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
13855
13856         * mini.c driver.c: Don't include os/gc_wrapper.h.
13857
13858 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
13859
13860         * mini.c (print_jit_stats): Print GC statistics if available.
13861
13862 2008-01-04  Zoltan Varga  <vargaz@gmail.com>
13863
13864         * mini-amd64.c (mono_arch_allocate_vars): Align argument storage offsets to 8.
13865
13866 2007-12-29  Zoltan Varga  <vargaz@gmail.com>
13867
13868         * mini-ppc.c (mono_arch_get_delegate_invoke_impl): Fix flushing of icache.
13869
13870 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
13871
13872         * mini.c (mini_init): Move the setting of GC_stackbottom to mono_gc_base_init ().
13873         
13874         * mini.c (mini_init): Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
13875
13876         * driver.c (mono_main): Ditto.
13877
13878 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
13879
13880         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_delegate_invoke ().
13881
13882         * aot-compiler.c (emit_klass_info): Avoid emitting info if one of the methods
13883         in the vtable can't be encoded.
13884         (compile_method): Ditto.
13885
13886 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
13887
13888         * mini.c (setup_jit_tls_data): Use the MONO_ARCH_INIT_TOP_LMF_ENTRY macro if
13889         defined.
13890
13891         * mini-amd64.h mini-amd64.c exceptions-amd64.c tramp-amd64.c: Rename lmf->ebp to 
13892         lmf->rbp.
13893
13894         * exceptions-amd64.c (mono_arch_find_jit_info): Fix the detection of whenever
13895         the top LMF entry belongs to the current method.
13896
13897         * mini.c: Update after renaming of mono_thread_get_pending_exception ().
13898
13899 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
13900
13901         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix a warning.
13902         
13903         * tramp-ia64.c (mono_arch_create_trampoline_code): Ditto.
13904
13905         * tramp-sparc.c (mono_arch_create_trampoline_code): Check for thread interruption.
13906
13907         * tramp-amd64.c (mono_arch_create_trampoline_code): Ditto.
13908
13909         * tramp-x86.c (mono_arch_create_trampoline_code): Check for thread interruption.
13910
13911         * cpu-amd64.md mini-amd64.h mini-amd64.c inssel-amd64.brg: Add ulong->double 
13912         implementation.
13913
13914         * basic-float.cs: Add an ulong->double cast test.
13915
13916 2007-12-15  Zoltan Varga  <vargaz@gmail.com>
13917
13918         * mini.c (mono_method_to_ir): Fix a warning.
13919
13920 2007-12-14  Zoltan Varga  <vargaz@gmail.com>
13921
13922         * mini-ops.h: Add OP_SWITCH.
13923
13924         * mini.c graph.c ssa.c aliasing.c mini-<ARCH>.c inssel-<ARCH>.brg: Avoid using
13925         CEE_SWITCH in back-end code, use OP_SWITCH instead.
13926
13927 2007-12-11  Geoff Norton  <gnorton@novell.com>
13928
13929         * mini-s390x.c: Minor change to the MAX() define to allow
13930         it to compile with other gcc versions.
13931
13932 2007-12-11  Geoff Norton  <gnorton@novell.com>
13933
13934         * cpu-s390x.md:
13935         * mini-s390x.c: Implement sext_i4 to fix the build on s390x
13936
13937 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
13938
13939         exceptions-arm.c (mono_arch_get_restore_context): Restore
13940         the frame pointer.
13941
13942         exceptions-arm.c (throw_exception): Save the frame pointer.
13943         This is a partial fix for #323747. Only the client side is
13944         fixed.
13945
13946 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
13947
13948         * mini.c (mono_method_to_ir): Verbose message in CEE_NEWOBJ
13949         was using an unrelated variable to log the class which
13950         needed the cctor to be called. This was crashing on arm.
13951
13952 2007-12-09  Robert Jordan  <robertj@gmx.net>
13953
13954         * mini-x86.c (mono_arch_emit_epilog):
13955         Consider all kinds of 64-bit types. Fixes #323114.
13956
13957 2007-12-08  Zoltan Varga  <vargaz@gmail.com>
13958
13959         * tramp-amd64.c (mono_arch_create_trampoline_code): Clean up the code a bit.
13960
13961 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
13962
13963         * mini-amd64.c (peephole_pass): Add a missing instruction check.
13964
13965 Fri Dec 7 22:08:23 CET 2007 Paolo Molaro <lupus@ximian.com>
13966
13967         * mini.c: run type ctor before allocating an object, not only
13968         when running it's constructor method (fixes at least part of bug #342507).
13969
13970 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
13971         
13972         * mini-trampolines.c (mono_delegate_trampoline): Fix a warning.
13973         
13974         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove a debug printf.
13975         * mini.h mini-amd64.c mini-x86.c: Get rid of the mono_arch_find_vtable () 
13976         function.
13977
13978         * tramp-x86.c tramp-amd64.c mini-trampolines.c: Pass the vtable argument to
13979         mono_generic_class_init_trampoline () the same as it is done with the other
13980         trampolines.
13981
13982         * mini-arm.h mini-arm.c tramp-arm.c inssel-arm.brg cpu-arm.md 
13983         aot-runtime.c aot-compiler.c: Implement AOT support.    
13984
13985 2007-12-07  Mark Probst  <mark.probst@gmail.com>
13986
13987         * mini-trampolines.c (mono_generic_class_init_trampoline): Fixed
13988         build for archs which don't have the vtable trampoline defined
13989         yet.
13990
13991 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
13992
13993         * tramp-x86.c (mono_arch_create_trampoline_code): Fix the build.
13994
13995         * tramp-ppc.c (mono_arch_create_trampoline_code): Use the new helper function.
13996
13997         * mini-trampolines.c (mono_get_trampoline_func): New helper function.
13998
13999         * tramp-<ARCH>.c: Use the new helper function.
14000
14001 2007-12-07  Mark Probst  <mark.probst@gmail.com>
14002
14003         * inssel.brg: Added a pattern for the OP_TRAMPCALL_VTABLE
14004         trampoline call, which takes a vtable argument.
14005
14006         * graph.c, mini-ops.h, local-propagation.c, aliasing.c: Treat
14007         OP_TRAMPCALL_VTABLEs like other calls.
14008
14009         * mini-amd64.c, mini-amd64.h, mini-x86.c, mini-x86.h: Designated a
14010         register to hold the vtable argument to the OP_TRAMPCALL_VTABLE
14011         call.  Implemented a support function which fetches the vtable
14012         from a register set.
14013
14014         * mini.c, mini.h, tramp-amd64.c, tramp-x86.c, mini-trampolines.c:
14015         Implemented a generic class init trampoline, using the
14016         OP_TRAMPCALL_VTABLE opcode.
14017
14018         * mini.c: Implemented static field access when sharing generic
14019         code.  This implies initing the class using the new
14020         OP_TRAMPCALL_VTABLE call.
14021
14022 2007-12-07  Mark Probst  <mark.probst@gmail.com>
14023
14024         * mini.c: Don't compile methods with sharing enabled if their
14025         classes are disabled for sharing.
14026
14027 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
14028
14029         * inssel.brg: Add a missing sign extension to the GETCHR and array access
14030         opcodes. Fixes #346563.
14031
14032         * objects.cs: Add a new test.
14033
14034         * aot-compiler.c (emit_method_code): Put back an #ifdef which is needed.
14035
14036         * mini-<ARCH>.h mini.c aot-compiler.c aot-runtime.c: Get rid of the
14037         HAVE_PIC_AOT define and use AOT_SUPPORTED instead.
14038
14039 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
14040
14041         * mini-arm.h mini-arm.c: Add support for the common vtable trampoline.
14042
14043 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
14044
14045         * mini-arm.c (mono_arch_emit_exceptions): Avoid uninitialized memory in the
14046         code stream.
14047
14048 2007-12-02  Zoltan Varga  <vargaz@gmail.com>
14049
14050         * patch-info.h (PATCH_INFO): Add DELEGATE_TRAMPOLINE.
14051
14052         * mini.c aot-compiler.c aot-runtime.c: Implement the delegate creation 
14053         optimization in the AOT case.
14054         
14055 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
14056
14057         * aot-runtime (mono_aot_get_method_from_vt_slot): Add support for multi-byte method ref encodings.
14058         
14059         * aot-runtime.c (decode_klass_ref): Implement decoding of generic instances.
14060
14061         * aot-compiler.c (encode_klass_ref): Implement proper encoding of generic instances.
14062
14063         * mini.c (mono_method_to_ir): Optimize the common ldftn+create delegate combination.
14064
14065         * mini-trampolines.c (mono_delegate_trampoline): Add some code to handle the case when the delegate
14066         is created by the inlined delegate ctor.
14067
14068         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.  
14069
14070         * mini.c (mono_jit_compile_method_inner): Replace calls to delegate invoke with the trampoline here too.
14071
14072 2007-11-29  Zoltan Varga  <vargaz@gmail.com>
14073
14074         * cpu-x86.md: Fix the length of ckfinite.
14075
14076 2007-11-28  Zoltan Varga  <vargaz@gmail.com>
14077
14078         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.
14079         
14080         * mini-x86.c (mono_arch_output_basic_block): Clean up the fp stack properly in CKFINITE.
14081         (mono_arch_output_basic_block): Get rid of unused last_ins and last_offset.
14082
14083         * mini-x86.c (mono_arch_output_basic_block): Add some micro optimizations.
14084
14085         * mini-x86.c inssel-x86.brg cpu-x86.md: Move the implementation of the 
14086         OP_START_HANDLER/OP_ENDFINALLY/OP_ENDFILTER opcodes to mini-x86.c.
14087
14088 2007-11-28  Martin Baulig  <martin@ximian.com>
14089
14090         * mini-x86.c
14091         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline()
14092         after creating the trampoline.
14093
14094 2007-11-27  Zoltan Varga  <vargaz@gmail.com>
14095
14096         * aot-runtime.c (load_aot_module): Check runtime version if needed.
14097
14098         * aot-compiler.c: Add bind-to-runtime-version for producing AOT files which only load into a runtime with
14099         the same version.
14100
14101         * generic-sharing.c (mono_helper_get_rgctx_other_ptr): Change the signature to take the calling class
14102         instead of the calling method to help AOT.
14103
14104         * mini.c (get_runtime_generic_context_other_ptr): Update after the change.
14105
14106 2007-11-26  Zoltan Varga  <vargaz@gmail.com>
14107
14108         * aot-runtime.c (mono_aot_init_vtable): Simplify this if MONO_ARCH_COMMON_VTABLE_TRAMPOLINE
14109         is defined.
14110
14111 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
14112
14113         * aot-compiler.c (emit_class_name_table): Properly encode generic class names.
14114         
14115         * aot-compiler.c (compile_method): Correct check for generic method definitions.
14116         (encode_method_ref): No need to handle generic method definitions specially.
14117
14118         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
14119
14120         * aot-runtime.c (decode_klass_ref): Clean this up and rename from 
14121         decode_klass_info.
14122
14123         * aot-compiler.c (encode_klass_ref): Clean this up and rename from
14124         encode_klass_info.
14125         (compile_method): Enable generic sharing.
14126
14127 2007-11-22  Zoltan Varga  <vargaz@gmail.com>
14128
14129         * mini.c (get_runtime_generic_context_other_ptr): Disable AOT here.
14130         (mini_method_compile): Add preliminary support for AOTing shared generic code.
14131
14132         * aot-compiler.c (compile_method): Add preliminary support for AOTing shared
14133         generic code.
14134
14135         * mini-trampolines.c: Fix a warning.
14136
14137         * mini.c (get_runtime_generic_context_other_ptr): Use NEW_METHODCONST instead of
14138         NEW_PCONST.
14139         (mono_method_to_ir): Use NEW_DOMAINCONST in one place.
14140         (generic_class_is_reference_type): Remove unused function.
14141
14142         * mini-trampolines.c (mono_magic_trampoline): Avoid loading metadata if possible
14143         in the generic vtable trampoline case.
14144
14145         * aot-runtime.c (mono_aot_init_vtable): Use the generic vtable trampoline.
14146         
14147         * aot-runtime.c (mono_aot_get_method_from_vt_slot): New helper function to
14148         return an AOT method based on a vtable slot.
14149
14150         * aot-compiler.c (compile_method): Avoid AOTing synchronized methods for now.
14151
14152         * mini.c (mini_get_vtable_trampoline): Export this.
14153
14154 2007-11-22  Martin Baulig  <martin@ximian.com>
14155
14156         * debug-debugger.h
14157         (MonoDebuggerInfo): Move `debugger_version' up.
14158
14159 2007-11-22  Martin Baulig  <martin@ximian.com>
14160
14161         * mini-amd64.c
14162         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline().
14163
14164         * mini-trampolines.c
14165         (mono_delegate_trampoline): Call mono_debugger_trampoline_compiled()
14166         after compiling the method.
14167
14168 2007-11-20  Martin Baulig  <martin@ximian.com>
14169
14170         * debug-mini.c
14171         (mono_debugger_insert_method_breakpoint): Moved into mono-debug-debugger.c.
14172         (mono_debugger_remove_breakpoint): Likewise.
14173         (mono_debugger_check_breakpoints): Likewise.
14174
14175         * debug-debugger.c: Implement the new breakpoint interface here.
14176
14177 2007-11-18  Zoltan Varga  <vargaz@gmail.com>
14178
14179         * mini-amd64.c (mono_arch_output_basic_block): Unify the implementation of
14180         CEE_CONV_I1/SEXT_I1 and I2 since they are the same.
14181
14182         * mini-x86.c (mono_arch_output_basic_block): Ditto.     
14183
14184 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
14185
14186         * mini-amd64.c (mono_arch_output_basic_block): Fix a typo.
14187
14188         * mini-x86.c (mono_arch_get_inst_for_method): Remove code which is now in
14189         mini.c.
14190
14191         * mini-ia64.c (mono_arch_get_inst_for_method): Remove code which is now in
14192         mini.c.
14193
14194         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for methods
14195         returning a vtype in a register.
14196
14197         * mini.c (mini_get_inst_for_method): Move the handling of the atomic operations
14198         here from the arch specific code.
14199
14200         * mini-amd64.c (mono_arch_get_inst_for_method): Remove code which is now in
14201         mini.c.
14202
14203         * mini-amd64.c (mono_arch_output_basic_block): Add some micro optimizations.
14204         (mono_arch_emit_prolog): Increment maximum prolog size.
14205
14206         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Move the implementation of the
14207         START_HANDLER/ENDFINALLY/ENDFILTER opcodes to mini-amd64.c.
14208
14209         * mini-x86.c (get_call_info): Receive a MonoCompile instead of a 
14210         MonoGenericSharingContext.
14211
14212         * mini-ia64.c (get_call_info): Receive a MonoCompile instead of a 
14213         MonoGenericSharingContext. Allocate memory from the cfg mempool.
14214
14215 2007-11-15  Mark Probst  <mark.probst@gmail.com>
14216
14217         * mini.c, mini.h, generic-sharing.c: Functions for producing code
14218         which extract fields out of the runtime generic context.  Full
14219         sharing of the NEWARR opcode.
14220
14221 Thu Nov 15 14:20:21 CET 2007 Paolo Molaro <lupus@ximian.com>
14222
14223         * abcremoval.c, mini.c, ssa.c, ssapre.c: updated to implement
14224         --enable-minimal=ssa.
14225
14226 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
14227
14228         * mini-trampolines.c (mono_delegate_trampoline): Update after 
14229         mono_marshal_get_delegate_invoke () signature change.
14230
14231 2007-11-13  Mark Probst  <mark.probst@gmail.com>
14232
14233         * mini.c: Removed the shared context in favor of the generic
14234         sharing context.  Allocate the MonoJitInfo structure with room for
14235         the generic sharing context if it's needed.
14236
14237         * mini.h: Remove MonoGenericSharingContext declaration.  It's in
14238         domain-internals.h now.
14239
14240         * mini-x86.c: Pass the generic sharing context to get_call_info ().
14241
14242         * generic-sharing.c: Several changes for working without a shared
14243         context and instead operating on open types instead.
14244
14245 2007-11-12  David S. Miller  <davem@davemloft.net>
14246
14247        * inssel-sparc.brg: Fix double instruction emit.
14248
14249 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
14250
14251         * mini.c (mono_jit_runtime_invoke): Avoid trying to compile the Array 
14252         Get/Set/Address methods.
14253         
14254         * mini.c debug-debugger.c mini-trampolines.c: Update after 
14255         mono_marshal_get_delegate_invoke signature change.
14256
14257 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
14258
14259         * cpu-arm.md: Increase the max size of OP_THROW to 24 bytes.
14260         This can happens with dynamic methods. Fixes the other bug in #322722.
14261
14262 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
14263
14264         * tramp-arm.c (mono_arch_patch_callsite): Support patching
14265         BX call sequence.
14266
14267         * mini-arm.c (arm_patch): Implement patching of BX call
14268         sequence. Fixes one of the bugs in #322722.
14269
14270 2007-11-03  David S. Miller  <davem@huronp11.davemloft.net>
14271
14272        * mini-sparc.c (mono_arch_flush_icache): Make more efficient
14273        under Linux.  We only need to flush every 32-byte cache line.    
14274
14275 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
14276
14277         * mini.c:
14278         move_basic_block_to_end: Add branches when needed, eventually creating
14279         a new BB.
14280         optimize_branches: added a parameter that tells if it's ok to create
14281         new BBs (doing is "df_visit" has been called is (IMHO) a nightmare),
14282         and avoid calling move_basic_block_to_end when it's not ok.
14283         Fixes bug 318677.
14284
14285 2007-11-07  Mark Probst  <mark.probst@gmail.com>
14286
14287         * mini.c: Abort inlining call to InitializeArray if something
14288         looks wrong.  Let the icall handle it, which now has proper safety
14289         checks.
14290
14291 2007-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
14292
14293         * mini.c (mono_spill_call): add support for soft-float.
14294
14295         * mini.c (mono_method_to_ir): add support for soft-float
14296         to inlined functions that return float.
14297
14298         * mini.c (mono_method_to_ir): add support for soft-float
14299         to cee_stsfld opcode on float fields.
14300
14301 2007-11-05  Geoff Norton  <gnorton@novell.com>
14302
14303         * mini-x86.h: Fix the structure access for X86 Leopard.
14304
14305
14306 2007-11-05  Martin Baulig  <martin@ximian.com>
14307
14308         * mini-trampolines.c
14309         (mono_magic_trampoline): Call mono_debugger_trampoline_compiled()
14310         after compiling the method to notify the debugger.
14311
14312 2007-11-05  Martin Baulig  <martin@ximian.com>
14313
14314         * debug-debugger.h (MonoDebuggerInfo): Use the new breakpoint tables.
14315
14316 2007-11-02  Zoltan Varga  <vargaz@gmail.com>
14317
14318         * mini-sparc.c (EMIT_COND_SYSTEM_EXCEPTION_GENERAL): Applied patch from
14319         David Miller <davem@davemloft.net>. Allow larger offsets in branches.
14320
14321 2007-11-01  Zoltan Varga  <vargaz@gmail.com>
14322
14323         * mini-amd64.c (mono_arch_emit_prolog): Check the domain as well for
14324         native-to-managed wrappers.
14325         
14326 2007-11-01  Geoff Norton  <gnorton@novell.com>
14327
14328         * mini-ppc.h, mini-x86.h:  Handle Leopards renaming of some structure 
14329         members.
14330
14331 Wed Oct 31 20:23:14 CET 2007 Paolo Molaro <lupus@ximian.com>
14332
14333         * mini.c, mini-x86.c: when getting back from unmanaged code
14334         to managed via a marshaled delegate we also need to set the
14335         right domain.
14336
14337 Wed Oct 31 19:53:33 CET 2007 Paolo Molaro <lupus@ximian.com>
14338
14339         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: breakpoint table support
14340         for amd64.
14341
14342 Wed Oct 31 19:29:30 CET 2007 Paolo Molaro <lupus@ximian.com>
14343
14344         * mini.c, mini.h, mini-x86, tramp-x86.c, mini-x86.h: added API to
14345         let the debugger or other external agents to tell the JIT when
14346         a sw breakpoint has been inserted in the code that the JIT needs
14347         to be able to inspect.
14348
14349 2007-10-31  Martin Baulig  <martin@ximian.com>
14350
14351         * debug-debugger.h
14352         (MonoDebuggerInfo): Remove `runtime_class_init'.
14353
14354 2007-10-30  Martin Baulig  <martin@ximian.com>
14355
14356         * debug-mini.h
14357         (mono_debugger_thread_created): Added `MonoThread *' argument.
14358         (mono_debugger_extended_notification): New public method.
14359         (mono_debugger_trampoline_compiled): New public method.
14360
14361         * debug-mini.c
14362         (MonoDebuggerThreadInfo): Added `thread' and
14363         `extended_notifications' fields.
14364
14365         * debug-debugger.c
14366         (debugger_executable_code_buffer): New static variable.
14367
14368         * debug-debugger.h
14369         (MonoDebuggerInfo): Added `executable_code_buffer',
14370         `executable_code_buffer_size', `breakpoint_info_area',
14371         `breakpoint_table' and `breakpoint_table_size'.
14372
14373 2007-10-26  Rodrigo Kumpera  <rkumpera@novell.com>
14374
14375         * mini-arm.c (mono_arch_build_imt_thunk): Take the advantage
14376         that IP  either is an unused value or the vtable pointer. IMT 
14377         calls use vtable + offset now. Reduced by almost half the size
14378         of IMT entries.
14379
14380 2007-10-26  Jonathan Chambers <joncham@gmail.com>
14381
14382         * mini-amd64.c: Begin Win64 port. Use AMD64_ARG_REG#
14383         defines to access param registers. Replace long usage with
14384         gsize as sizeof(long) != sizeof(void*) on Win64.
14385
14386         * mini-amd64.h: Add %rdi and %rsi to MonoLMF structure
14387         on Win64. Fix intrinsic, use _AddressOfReturnAddress
14388         instead of non-existant _GetAddressOfReturnAddress.
14389
14390         * tramp-amd64.c: Use AMD64_ARG_REG#     defines to access 
14391         param registers. Save/restore %rdi and %rsi in MonoLMF.
14392
14393         * exceptions-amd64.c: Use AMD64_ARG_REG# defines to access 
14394         param registers. Modify (throw_exception) signature to take 
14395         %rdi and %rsi on Win64. 
14396
14397         Code is contributed under MIT/X11 license.
14398
14399 Thu Oct 25 23:06:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
14400
14401         * helpers.c: unlink debugging output files.
14402
14403 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
14404
14405         * mini.c: Move mono_create_ftnptr () to object.c.
14406
14407 2007-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
14408
14409         * helpers.c (mono_disassemble_code): MonoCompile parameter is now
14410         optional. This function can now be used to disassemble code generated
14411         outside the JIT such as trampolines and IMT thunks.
14412
14413         * mini-arm.h: defined MONO_ARCH_HAVE_IMT.
14414
14415         * mini-arm.c (decode_vcall_slot_from_ldr): added, extract the
14416         vtable pointer from a ldr instruction.
14417
14418         * mini-arm.c (mono_arch_get_vcall_slot_addr): support the
14419         new IMT call sequence.
14420
14421         * mini-arm.c (mono_arch_output_basic_block): emit the IMT
14422         call sequence for interface invocations.
14423
14424         * mini-arm.c (mono_arch_emit_imt_argument): added, required
14425         for imt support. This function is empty since IMT on ARM requires no
14426         special handling on the IR side.
14427
14428         * mini-arm.c (mono_arch_find_imt_method): added, required for
14429         imt support.
14430
14431         * mini-arm.c (mono_arch_find_this_argument): added, required
14432         for imt support.
14433
14434         * mini-arm.c (arm_emit_value_and_patch_ldr): added, patches
14435         a ldr instruction to load a value stored in the code stream.
14436
14437         * mini-arm.c (mono_arch_build_imt_thunk):added, required
14438         for imt support.
14439
14440
14441 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
14442
14443         * mini.c (mini_init): Install the jump trampoline callback.
14444
14445 Tue Oct 23 17:07:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14446
14447         * mini-trampolines.c: handle synchronized methods with the common
14448         vtable trampoline (bug #335601).
14449
14450 2007-10-17  Zoltan Varga  <vargaz@gmail.com>
14451
14452         * mini-ia64.h mini-amd64.c: Add support for the common vtable trampoline.
14453
14454         * inssel.brg (mini_emit_virtual_call): Fix the computation of ins->inst_offset on
14455         64 bit platforms.
14456
14457         * mini-ia64.h mini-ia64.c: Add support for IMT.
14458
14459         * mini-x86.c (mono_arch_emit_prolog): Increase the size allocated for the
14460         prolog. Fixes #331958.
14461
14462 2007-10-15  Zoltan Varga  <vargaz@gmail.com>
14463
14464         * mini-sparc.h mini-sparc.c: Add support for the common vtable trampoline.
14465
14466 Mon Oct 15 11:18:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14467
14468         * mini-ppc.c, mini-ppc.h: ppc support for the common vtable
14469         trampoline.
14470
14471 Mon Oct 15 10:41:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14472
14473         * mini-amd64.c, mini-amd64.h: amd64 support for the common vtable
14474         trampoline.
14475
14476 Mon Oct 15 10:39:26 CEST 2007 Paolo Molaro <lupus@ximian.com>
14477
14478         * mini-x86.c, mini-x86.h: x86 support for the common vtable
14479         trampoline.
14480
14481 Mon Oct 15 10:37:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
14482
14483         * mini-trampolines.c: changed the magic rampoline to understand
14484         the common vtable trampoline method: the method to invoke is
14485         determined by the vtable displacement of the call.
14486
14487 Mon Oct 15 10:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
14488
14489         * mini.c, mini.h: register the common vtable trampoline if the
14490         architecture supports it.
14491
14492 Mon Oct 15 09:50:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14493
14494         * cpu-amd64.md: use the correct max length for tls_get.
14495
14496 2007-10-14  Zoltan Varga  <vargaz@gmail.com>
14497
14498         * mini.c (mono_method_to_ir): Use mini_get_class in CEE_LDELEM_ANY and
14499         CEE_STELEM_ANY. Fixes #333696.
14500
14501 Thu Oct 11 18:04:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
14502
14503         * exceptions-x86.c: provide more graceful handling of the case where
14504         we followed a bogus function pointer from managed code (bug #332866).
14505
14506 2007-10-11  Mark Probst  <mark.probst@gmail.com>
14507
14508         * mini.h, mini.c: Introduced the MonoGenericSharingContext, which
14509         replaces the generic_shared flag and will carry more information
14510         in the future.
14511
14512         * generic-sharing.c: Added mini_type_stack_size() which allows
14513         allows open types if given a generic sharing context.
14514         mini_get_basic_type_from_generic() takes a
14515         MonoGenericSharingContext* instead of a MonoCompile* now.
14516
14517         * mini-alpha.c, mini-amd64.c, mini-arm.c, mini-hppa.c,
14518         mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c, mini-s390x.c,
14519         mini-sparc.c, mini-x86.c: Trivial changes required by the two
14520         changes above.  Just passing arguments through to the right
14521         places.
14522
14523 Wed Oct 10 19:44:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
14524
14525         * mini-arm.c: unify the call emission to emit_code_seq().
14526
14527 Wed Oct 10 13:05:46 CEST 2007 Paolo Molaro <lupus@ximian.com>
14528
14529         * tramp-arm.c: reduced the trampoline size.
14530
14531 2007-10-10  Mark Probst  <mark.probst@gmail.com>
14532
14533         * generic-sharing.c, mini.h, mini-amd64.c, mini-x86.c: Moved type
14534         variable handling out of arch-specific code.
14535
14536 Wed Oct 10 10:49:28 CEST 2007 Paolo Molaro <lupus@ximian.com>
14537
14538         * mini-arm.c: implemented fast delegate dispatch.
14539
14540 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
14541
14542         * mini-amd64.c (mono_arch_compute_omit_fp): Add more checks to ensure
14543         that fp elimination is turned off if the space required by locals is too
14544         big. Fixes #331958.
14545
14546 Tue Oct 9 21:01:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
14547
14548         * Makefile.am, mini-arm.c, mini-arm.h, tramp-arm.c: ported
14549         ARM to the new style trampoline.
14550
14551 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
14552
14553         * tramp-amd64.c: Rework the specific trampoline code to make it smaller.
14554
14555         * mini-amd64.h mini-amd64.c: Export amd64_patch as mono_amd64_patch.
14556
14557 2007-10-09  Martin Baulig  <martin@ximian.com>
14558
14559         * debug-debugger.h
14560         (MonoDebuggerMetadataInfo): Added `field_info_type_offset' and
14561         `field_info_offset_offset'.     
14562
14563 Tue Oct 9 09:47:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
14564
14565         * mini-ppc.c, mini-ppc.h, mini-ops.h, inssel-ppc.brg, cpu-g4.md:
14566         removed more internal usage of the r11 register and made it available
14567         to the register allocator.
14568
14569 2007-10-08  Mark Probst  <mark.probst@gmail.com>
14570
14571         * mini.c, mini-amd64.c, mini-x86.c: Allow open generic contexts
14572         when sharing generics and treat type variables as references.
14573
14574 Mon Oct 8 10:55:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
14575
14576         * mini-ppc.c: started removing the internal uses of register r11
14577         to eventually allow the register allocator to manage it as an
14578         additional available register.
14579
14580 Mon Oct 8 14:25:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
14581
14582         * tramp-amd64.c: fixed memory corruption in the trampoline generation.
14583
14584 Mon Oct 8 12:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
14585
14586         * tramp-ppc.c, tramp-x86.c: reduce the alignment requirements for
14587         specific trampolines as they are not performance critical as a jump
14588         target (maybe align as before only for AOT code?). This saves about
14589         200 KB of native code on x86 for monodevelop startup.
14590
14591 Mon Oct 8 10:04:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
14592
14593         * tramp-ppc.c: reduce the size of the trampolines, saves 160KB on
14594         monodevelop startup.
14595
14596 2007-10-06  Zoltan Varga  <vargaz@gmail.com>
14597
14598         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Allow signed displacements.
14599
14600         * mini-sparc.h mini-sparc.c: Implement IMT support.
14601
14602         * tramp-sparc.c (mono_arch_create_trampoline_code): Rework the trampoline code so
14603         its smaller and doesn't clobber sparc_g1.
14604
14605         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Update after trampoline changes.
14606
14607 Fri Oct 5 18:28:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
14608
14609         * mini-ppc.c: optimized the size of the IMT thunks a bit.
14610
14611 Fri Oct 5 18:08:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
14612
14613         * mini-ppc.c: implemented fast delegate invocation.
14614
14615 Fri Oct 5 00:01:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
14616
14617         * mini-ppc.h, mini-ppc.c: IMT support for the PPC architecture.
14618
14619 Thu Oct 4 22:04:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
14620
14621         * mini-ppc.c, mini-ppc.h, tramp-ppc.c, Makefile.am: port the PPC
14622         code to the new style trampoline in preparation for IMT support.
14623
14624 Thu Oct 4 19:01:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
14625
14626         * mini-ppc.c, tramp-ppc.c: don't use r13 as it's used by the PPC EABI
14627         systems already. This also reduces the specific trampiline sizes and
14628         prepares for the use of r12 as the IMT identifier register.
14629
14630 Thu Oct 4 16:38:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14631
14632         * mini-mips.h: endianess fix (simplified from a patch by
14633         Thomas Kunze <thommy@tabao.de>, bug #323737).
14634
14635 Thu Oct 4 14:43:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
14636
14637         * exceptions-ppc.c, mini-ppc.h: refactor to use macros
14638         to access ucontext fields and enable netbsd support
14639         (partially from Magnus Henoch <mange@freemail.hu>).
14640
14641 Thu Oct 4 12:35:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14642
14643         * genmdesc.pl: patch from Henryk Plotz <henryk@openmoko.org> to
14644         use the preprocessor from the CPP env var if it is set.
14645
14646 Wed Oct 3 17:11:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
14647
14648         * mini-trampolines.c: fixed an assertion and moved it earlier in the
14649         code, before interface_offset gets used.
14650
14651 2007-10-02  Zoltan Varga  <vargaz@gmail.com>
14652
14653         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call 
14654         mono_class_setup_vtable () before accessing klass->vtable.
14655
14656 2007-10-01  Zoltan Varga  <vargaz@gmail.com>
14657
14658         * aot-compiler.c (get_plt_index): Rework the handling of wrappers to be not so
14659         hackish.
14660
14661 Mon Oct 1 15:00:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14662
14663         * mini.c, mini-trampolines.c, mini.h: enable the lazy filling of the
14664         IMT slots (this saves hundreds of KB of memory in programs like
14665         IronPython and Monodevelop).
14666
14667 Mon Oct 1 14:44:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
14668
14669         * mini.c: print the delegate counter.
14670
14671 Mon Oct 1 14:36:50 CEST 2007 Paolo Molaro <lupus@ximian.com>
14672
14673         * mini-x86.c: make it easier to enable the debugging code for IMT
14674         slots.
14675
14676 2007-09-28  Martin Baulig  <martin@ximian.com>
14677
14678         * debug-debugger.h
14679         (MonoDebuggerMetadataInfo): Add `klass_image_offset',
14680         `mono_method_klass_offset' and `mono_method_token_offset'.
14681
14682 2007-09-20  Mark Probst  <mark.probst@gmail.com>
14683
14684         * mini.c: First generics sharing implementation.  Can only share
14685         in very simple cases.  If sharing doesn't work it falls back to
14686         dedicated compilation.
14687
14688         * mini.h: Flag in MonoCompile to specify whether generic
14689         compilation is shared.  Flags enum for marking which generic inst
14690         of a context is used.  Prototypes for helper functions.
14691
14692         * generic-sharing.c: Helper functions for generic method sharing.
14693
14694         * optflags-def.h: Optimization flag (gshared) for enabling generic
14695         method sharing added.
14696
14697         * Makefile.am: generic-sharing.c added.
14698
14699 2007-09-19 Daniel Nauck <dna@mono-project.de>
14700
14701         * mini.c (mono_thread_abort): fixed typo in r86014. It should be '==' instead of '!='.
14702
14703 2007-09-19  Massimiliano Mantione  <massi@ximian.com>
14704         * mini.c (mono_thread_abort): Correctly handle ThreadAbortException,
14705         fixes bug 325507.
14706
14707 2007-09-19  Martin Baulig  <martin@ximian.com>
14708
14709         * mini.c (mini_cleanup): Only call mono_debugger_cleanup() here;
14710         mono_debug_cleanup() is now part of mono_cleanup().
14711
14712 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
14713
14714         * driver.c (mono_main): Fix a warning.
14715
14716 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
14717
14718         * aot-compiler.c: Optimize various parts when processing large assemblies.
14719         Fixes ##325568.
14720
14721         * mini.c (mono_patch_info_hash): Improve hash function.
14722
14723 2007-09-14  Jonathan Chambers <joncham@gmail.com>
14724
14725         * mini-exceptions.c: Add HAVE_UNISTD_H check around include.
14726         
14727         Code is contributed under MIT/X11 license.
14728
14729 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
14730
14731         * mini.c (mini_init): Fix a leak.
14732
14733         * debug-mini.c (mono_debug_free_method_jit_info): Fix a leak.
14734
14735 Fri Sep 14 12:53:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
14736
14737         * mini.c: redirect string.InternalAllocStr() to the managed allocator.
14738
14739 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
14740
14741         * mini-amd64.c (mono_arch_find_imt_method): Add support for AOT code.
14742
14743 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
14744
14745         * Makefile.am generics-variant-types.2.il generics.cs: Add some generics
14746         variance tests.
14747
14748         * inssel.brg: Reorganize the isinst/castclass code to reduce code duplication.
14749
14750         * mini.c (handle_alloc): Enable managed allocators in AOT code.
14751
14752         * aot-compiler.c (encode_patch): Add support for MONO_WRAPPER_ALLOC.
14753
14754         * aot-runtime.c (decode_patch_info): Ditto.
14755
14756 2007-09-12  Jonathan Chambers <joncham@gmail.com>
14757
14758         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement
14759         static case. Cache delegates in architecture specific code, 
14760         based on number of parameters.
14761         
14762         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Cache delegates
14763         in architecture specific code, based on number of parameters.
14764         
14765         * mini-trampolines.c (mono_delegate_trampoline): Architecture specific 
14766         caching happen in architecture specific code now.
14767         
14768         Code is contributed under MIT/X11 license.
14769
14770 2007-09-12  Jonathan Chambers <joncham@gmail.com>
14771
14772         * mini.h, mini.c, mini-x86.c, mini-amd64.c, mini-hppa.c, mini-mips.c,
14773         mini-s390x.c, mini-arm.c, mini-ia64.c, mini-sparc.c, mini-ppc.c, mini-alpha.c,
14774         mini-s390.c: Add mono_arch_init and mono_arch_cleanup methods.
14775
14776         Code is contributed under MIT/X11 license.
14777
14778 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
14779         * mini.c: (mono_thread_abort) Fixed bug #82416.
14780
14781 Tue Sep 11 16:15:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
14782
14783         * mini.: hook the new managed GC allocation feature into the JIT.
14784
14785 Tue Sep 11 16:14:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
14786
14787         * mini.c: implementation for the new runtime tls opcode.
14788
14789 2007-09-11  Martin Baulig  <martin@ximian.com>
14790
14791         * debug-debugger.h
14792         (MonoDebuggerMetadataInfo): Add `mono_method_flags_offset' and
14793         `mono_method_inflated_offset'.
14794
14795 2007-09-07  Zoltan Varga  <vargaz@gmail.com>
14796
14797         * driver.c mini.h mini.c: Add a new devel command line option for injecting
14798         async exceptions into a method.
14799
14800         * mini-amd64.h mini-amd64.c: Implement injecting of async exceptions for the
14801         purpose of testing whenever the unwinder works at every instruction.
14802
14803 Thu Sep 6 12:42:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
14804
14805         * mini.c: check accessibility of method used in ldftn (fixes
14806         bug #82635).
14807
14808 2007-09-04  Zoltan Varga  <vargaz@gmail.com>
14809
14810         * mini-amd64.c (mono_arch_output_basic_block): Fix a warning.
14811
14812         * inssel.brg: Fix a warning.
14813
14814 2007-09-03  Martin Baulig  <martin@ximian.com>
14815
14816         * debug-debugger.c: `MONO_DEBUGGER_EVENT_INITIALIZE_MANAGED_CODE'
14817         now takes the `main_method' as argument.
14818
14819 2007-09-02  Zoltan Varga  <vargaz@gmail.com>
14820
14821         * cpu-sparc.md (endfilter): Add missing src1:i argument.
14822
14823 2007-08-30  Jonathan Chambers <joncham@gmail.com>
14824
14825         * driver.c: include the cil-coff.h header on Windows.
14826         
14827         Code is contributed under MIT/X11 license.
14828
14829 Thu Aug 30 16:17:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
14830
14831         * mini.c, driver.c: don't include the cil-coff.h header.
14832
14833 Thu Aug 30 14:50:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
14834
14835         * mini.c: flag places that needs fixes fo soft-float support.
14836
14837 Wed Aug 29 18:26:20 CEST 2007 Paolo Molaro <lupus@ximian.com>
14838
14839         * mini.h, inssel-float.brg: fix soft-float constant loads on big
14840         endian systems (partially from Dean Jenkins, bug #81924).
14841
14842 2007-08-28  Mark Probst  <mark.probst@gmail.com>
14843
14844         * mini.c (check_linkdemand): Remove embedded reference object in
14845         call to LinkDemandSecurityException.
14846         (mono_jit_compile_method_inner): Call LinkDemandSecurityException
14847         with an IntPtr instead of a reference object.
14848
14849 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
14850
14851         * mini.c (handle_initobj): Handle alignment properly.
14852
14853         * inssel.brg (mini_emit_memset): Ditto. 
14854
14855         * inssel.brg (mini_emit_memcpy): Ditto. 
14856
14857         * inssel-sparc.brg: Ditto.              
14858
14859         * mini.h mini.c inssel-*.brg: Pass alignment information to OP_MEMCPY/MEMSET.
14860
14861 2007-08-26  Zoltan Varga  <vargaz@gmail.com>
14862
14863         * mini-exceptions.c (mono_handle_exception_internal): Skip the first frame for
14864         exceptions raised in unmanaged code. Fixes part of #82594.
14865
14866 2007-08-24  Mark Probst  <mark.probst@gmail.com>
14867
14868         * mini.c (mono_method_to_ir), declsec.c
14869         (mono_declsec_linkdemand_aptc): Fixed custom attr leaks.
14870
14871 2007-08-22  Martin Baulig  <martin@ximian.com>
14872
14873         * debug-mini.h
14874         (MonoDebuggerThreadInfo): New typedef.
14875         (mono_debugger_thread_table): New global variable.
14876         (mono_debugger_thread_created): New public function.
14877         (mono_debugger_thread_cleanup): New public function.
14878
14879         * debug-debugger.h
14880         (MonoDebuggerInfo):
14881         - removed `get_current_thread' and `lookup_assembly'.
14882         - removed `data_table'.
14883         - added `thread_table'.
14884
14885         * mini.c
14886         (mono_thread_start_cb): Call mono_debugger_thread_created().
14887         (mono_thread_attach_cb): Likewise.
14888         (mini_thread_cleanup): Call mono_debugger_thread_cleanup().
14889         (mini_cleanup): Move mono_debug_cleanup() down, after free'ing the
14890         initial domain.
14891
14892         * driver.c (mono_main): Move mono_debug_init() up, before calling
14893         mini_init(); mono_debug_init_1() and mono_debug_init_2() are gone.
14894
14895 Tue Aug 21 16:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
14896
14897         * mini-x86.c, inssel-x86.brg: group multiple stack adjustments
14898         together when passing several arguments of type double (gives a small
14899         speedup and saves a few bytes of generated code).
14900
14901 2007-08-20  Jb Evain  <jbevain@novell.com>
14902
14903         * mini.c (mono_method_to_ir): fix leak on InvalidProgramException.
14904
14905 2007-08-20  Jb Evain  <jbevain@novell.com>
14906
14907         * mini.c (mono_method_to_ir): throw MethodAccessException
14908         and FieldAccessException instead of InvalidProgramException.
14909
14910 2007-08-20  Mark Probst  <mark.probst@gmail.com>
14911
14912         * mini.c: CoreCLR security checks.
14913
14914         * mini.h: Removed MonoSecurityMode (moved to
14915         metadata/security-manager.h) and mono_security_mode global var
14916         (replaced by set/get functions in security-manager.h).
14917
14918         * driver.c: Added "core-clr-test" security mode for testing.  Used
14919         set-function for setting security mode.
14920
14921 2007-08-17  Mark Probst  <mark.probst@gmail.com>
14922
14923         * mini.c: MonoJitInfo's are freed hazardously now.  Statistics for
14924         the new jit_info_table.
14925
14926         * driver.c: Test code for the new jit_info_table (enabled by the
14927         define MONO_JIT_INFO_TABLE_TEST).
14928
14929 2007-08-14  Zoltan Varga  <vargaz@gmail.com>
14930
14931         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
14932         detection of call <REG> instruction sequence. Fixes build on freebsd.
14933
14934 2007-08-13  Zoltan Varga  <vargaz@gmail.com>
14935
14936         * mini-exceptions.c: Fix a warning.
14937
14938 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
14939
14940         * exceptions-amd64.c (mono_arch_handle_altstack_exception): Enable the new
14941         stack overflow handling code on amd64 too.
14942
14943         * mini-exceptions.c (mono_setup_altstack): Make this use 
14944         mono_thread_get_stack_bounds ().
14945
14946         * mini-x86.h: Disable sigaltstack on solaris x86.
14947
14948 2007-08-10  Zoltan Varga  <vargaz@gmail.com>
14949
14950         * mini-exceptions.c (mono_setup_altstack): Enable this to work on solaris x86.
14951
14952 2007-08-10  Geoff Norton  <gnorton@customerdna.com>
14953
14954         * tramp-x86.c: Remove some unneeded alignment changes on Apple.  Fixes #82387.
14955
14956 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
14957
14958         * mini-exceptions.c (mono_print_thread_dump): Enable this on amd64 too.
14959
14960         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Fix a warning.
14961
14962 2007-08-03  Neale Ferguson <neale@sinenomine.net>
14963
14964         * mini-s390.c (add_general): Adjust offset calculation to take into account of rounding up
14965         due to alignment.
14966
14967 Thu Aug 2 17:36:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
14968
14969         * mini-ppc.c: avoid an invalid encoding of unsigned right shift by 0
14970         to be emitted (bug #82281).
14971
14972 2007-08-01  Martin Baulig  <martin@ximian.com>
14973
14974         Merged the `debugger-dublin' branch.
14975
14976         * debug-debugger.h (MonoDebuggerInfo):
14977         Removed the `old_*' compatibility entries.
14978         Added `debugger_version' and `data_table'.
14979         Renamed `get_method_addr_or_bpt' -> `insert_breakpoint'.
14980         Renamed `remove_method_breakpoint' -> `remove_breakpoint'.
14981
14982         * debug-mini.c
14983         (MiniDebugMethodBreakpointInfo): Add `address_list'.
14984         (mono_debugger_check_breakpoints): Take a `MonoDebugMethodAddress *'
14985         instead of a `gconstpointer'.
14986         (mono_debugger_insert_method_breakpoint): Return a
14987         `MonoDebugMethodAddressList *'.
14988
14989 2007-06-28  Martin Baulig  <martin@ximian.com>
14990
14991         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
14992
14993 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
14994
14995         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Avoid using 
14996         __builtin_frame_address () since it is broken on older gcc versions.
14997
14998 Tue Jul 31 17:34:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
14999
15000         * mini.c, mini.h, mini-exceptions.c: added a bit of documentation
15001         on the stack overflow handling and made the managed stack overflows
15002         catchable in most cases using soft guard pages.
15003         * exceptions-x86.c: added code to restore the protection in the soft
15004         guard pages at the end of exception handling.
15005
15006 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
15007
15008         * mini.c (SIG_HANDLER_SIGNATURE): Fix a warning.
15009
15010 Mon Jul 30 17:43:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
15011
15012         * exceptions-ppc.c, mini-ppc.h: arch-specific stack overflow
15013         exception handling.
15014
15015 Mon Jul 30 17:38:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
15016
15017         * mini-alpha.h, mini-ia64.h, mini-sparc.h: disable the altstack
15018         signal handling support until it has been ported to the new mechanism.
15019         * mini.c: fixed stack overflow detection and use the new
15020         architecture code  to handle signals on the altstack.
15021
15022 Mon Jul 30 17:33:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
15023
15024         * exceptions-amd64.c, mini-amd64.h: amd64 code to handle
15025         stack overflows on the alt stack.
15026
15027 Mon Jul 30 17:29:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
15028
15029         * exceptions-x86.c, mini-x86.h, mini.h: new code to handle
15030         stack overflows on the alt stack.
15031
15032 Mon Jul 30 11:50:06 CEST 2007 Paolo Molaro <lupus@ximian.com>
15033
15034         * exceptions-ppc.c: cleanup preparing for altstack support.
15035
15036 Mon Jul 30 11:31:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
15037
15038         * exceptions-arm.c: cleanup preparing for altstack support.
15039
15040 2007-07-27  Mark Probst  <mark.probst@gmail.com>
15041
15042         * mini.c (print_jit_stats): Output hazard pointer stats.
15043
15044 2007-07-26  Mark Probst  <mark.probst@gmail.com>
15045
15046         * driver.c, mini.c: Replaced security mode flags with a single
15047         enum variable.
15048
15049 Thu Jul 26 20:12:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
15050
15051         * mini.c, mini-exceptions.c: cleanup the sigaltstack code.
15052
15053 2007-07-25  Mark Probst  <mark.probst@gmail.com>
15054
15055         * mini.c, mini.h, driver.c (mono_main): Added command-line flag
15056         (which doesn't do anything yet) for activating Core CLR
15057         (Silverlight) security.
15058
15059 Tue Jul 24 21:16:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
15060
15061         * mini-codegen.c: work around a possible gcc bug on arm.
15062
15063 Tue Jul 24 17:20:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
15064
15065         * driver.c, mini-x86.h, mini-amd64.h: print a nice error
15066         message for platforms that don't support AOT compilation.
15067
15068 Mon Jul 23 10:29:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
15069
15070         * mini.h, mini.c, driver.c: temporary smcs hack.
15071
15072 Mon Jul 23 09:29:34 CEST 2007 Paolo Molaro <lupus@ximian.com>
15073
15074         * mini-arm.h, mini-arm.c: arm EABI fixes.
15075
15076 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
15077
15078         * exceptions-x86.c (mono_arch_find_jit_info): Handle the lmf->method == NULL
15079         case.
15080
15081         * tramp-x86.c (mono_arch_create_trampoline_code): Only set lmf->method for
15082         trampolines taking a method argument.
15083
15084         * mini-x86.h (MonoLMF): Add an 'esp' field plus comments.
15085
15086         * mini-x86.c (mono_arch_emit_prolog): Update after changes to the LMF structure.
15087         * tramp-x86.c (mono_arch_create_trampoline_code): Ditto.
15088
15089         * exceptions-x86.c (mono_arch_get_jit_info): Properly clean up the stack after
15090         JIT compilation throws an exception. Fixes #82050.
15091
15092 2007-07-19  Mark Probst  <mark.probst@gmail.com>
15093
15094         * mini.c: Removed the MonoLoaderErrorKind enum and replaced it
15095         with the MONO_EXCEPTION_ defines.
15096
15097 2007-07-17  Zoltan Varga  <vargaz@gmail.com>
15098
15099         * mini-amd64.c (mono_arch_find_imt_method): Handle mov reg,IMM64 case. Fixes
15100         #82117.
15101         
15102         * mini-amd64.c (mono_arch_find_imt_method): Add some debug code to help find out
15103         the cause of an assertion.
15104
15105 Mon Jul 16 19:31:21 CEST 2007 Paolo Molaro <lupus@ximian.com>
15106
15107         * mini.c, jit-icalls.c: mono_get_inflated_method() is obsolete,
15108         removed.
15109
15110 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
15111
15112         * mini-amd64.c (mono_arch_build_imt_thunk): Remove the non-32bit MonoMethod
15113         assert. Should fix #82103.
15114
15115 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
15116
15117         * mini-exceptions.c (mono_jit_walk_stack_from_ctx): Use MONO_CONTEXT_GET_SP ()
15118         here too. Fixes #82095.
15119
15120         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for non-32bit MonoMethod
15121         addresses.
15122
15123         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a couple asserts.
15124
15125         * mini-amd64.h: Enable IMT for amd64.
15126         
15127         * mini-amd64.c (mono_arch_build_imt_thunk): Optimize IMT thunk size.
15128
15129 2007-07-12  Zoltan Varga  <vargaz@gmail.com>
15130
15131         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for IMT call sequences.
15132
15133 2007-07-12  Mark Probst  <mark.probst@gmail.com>
15134
15135         * mini.c (check_linkdemand, mono_method_to_ir): Abort compilation
15136         as soon as check_linkdemand sets an exception_type.
15137
15138 Thu Jul 12 12:18:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
15139
15140         * mini-x86.c: fixed offsets for IMT call sequence.
15141         * mini-x86.h: enable IMT again.
15142
15143 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
15144
15145         * trace.c (mono_trace_enter_method): Decode MonoType too.
15146
15147         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Handle signed displacements too.
15148
15149         * mini.h mini-x86.h mini-trampolines.c: Change the signature of mono_arch_find_imt_method () to pass the calling code address too.
15150
15151         * mini-amd64.c: Add preliminary IMT implementation.
15152         
15153 Wed Jul 11 18:21:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
15154
15155         * mini-x86.c: adjusted mono_arch_get_vcall_slot_addr () to
15156         understand the new IMT-base interface invocation (thanks to
15157         Daniel Nauck for the report and the remote debugging session).
15158
15159 Wed Jul 11 14:54:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
15160
15161         * mini-x86.c: size and speed optimizations for the IMT bsearch.
15162
15163 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
15164
15165         * Makefile.am (aotcheck): Make this actually use the AOTed code.
15166
15167 Wed Jul 11 12:41:32 CEST 2007 Paolo Molaro <lupus@ximian.com>
15168
15169         * mini-trampolines.c: implement AOT IMT support.
15170         * mini-x86.h: enable IMT support for wider testing.
15171
15172 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
15173
15174         * inssel.brg (emit_imt_argument): Add aot support here.
15175
15176         * aot-runtime.c (decode_patch_info): Fix reading of MONO_PATCH_INFO_METHOD.
15177
15178 Tue Jul 10 17:50:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
15179
15180         * mini-x86.c, mini-x86.h, tramp-x86.c: x86 arch-specific changes
15181         of the IMT implementation, partially from massi, with my
15182         implementation of the bsearch sequence. Disabled by default until
15183         the AOT code is implemented.
15184
15185 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
15186
15187         * cpu-x86.md: The source argument of sext_i1/i2 must by a byte reg.
15188
15189         * inssel-x86.brg: Add reg:ldind.i1(regvar) rules. Fixes #82056.
15190
15191 Tue Jul 10 17:33:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
15192
15193         * inssel.brg, mini.c, mini.h, mini-trampolines.c:
15194         arch-independent IMT JIT code from Massimiliano
15195         Mantione (massi@ximian.com) with small cleanups from me.
15196
15197 Tue Jul 10 13:07:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
15198
15199         * Makefile.am: fix svn invocation to get the svn revision to be
15200         independent of the local language (build fix).
15201
15202 2007-07-09  Mark Probst  <mark.probst@gmail.com>
15203
15204         * mini.c (inline_method): Reset cfg->exception_type if the
15205         inlining is aborted.  Fixes: 82049.
15206
15207 Mon Jul 9 17:26:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
15208
15209         * mini.c: remove assert from exception handling code when exception_ptr
15210         is not set.
15211
15212 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
15213
15214         * mini.c (mono_codegen): Add an assert.
15215
15216         * mini-x86.c (mono_arch_emit_prolog): Allocate space for the profiler method 
15217         enter and leave code.
15218         * mini-amd64.c (mono_arch_emit_prolog): Likewise.
15219
15220 Thu Jul 5 20:12:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
15221
15222         * mini-ppc.c: fixed memory corruption for localloc(0)
15223         (bug #81852).
15224
15225 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
15226         
15227         * mini.c: Fix warnings.
15228
15229 Wed Jul 4 15:30:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
15230
15231         * optflags-def.h, mini-x86.c: added sse2 optimization flag and use it
15232         to emit better double->int conversions.
15233
15234 Tue Jul 3 19:42:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
15235
15236         * mini.c: the provided Min/Max optimizations are valid for unisgned
15237         ints.
15238
15239 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
15240
15241         * 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
15242
15243 2007-06-28  Miguel de Icaza  <miguel@novell.com>
15244
15245         * mini.c (mono_running_on_valgrind): Add support for reporting the
15246         method and  its boundaries to valgrind.
15247
15248 2007-06-28  Martin Baulig  <martin@ximian.com>
15249
15250         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
15251
15252 2007-06-25  Zoltan Varga  <vargaz@gmail.com>
15253
15254         * ssa.c (visit_inst): Add support for OP_BR. Fixes #81946.
15255
15256         * generic.2.cs: Add new test case.
15257
15258 2007-06-25  Martin Baulig  <martin@ximian.com>
15259
15260         Merged the `debugger-dublin' branch.
15261
15262         * debug-mini.c
15263         (mono_debugger_insert_method_breakpoint): New public method.
15264         (mono_debugger_remove_method_breakpoint): Likewise.
15265         (mono_debugger_check_breakpoints): New static method.
15266         (mono_debug_close_method): Call mono_debugger_check_breakpoints().
15267
15268         * debug-debugger.h (MonoDebuggerInfo):
15269         Renamed (to keep backward compatibility in the vtable):
15270         `insert_breakpoint' -> `old_insert_breakpoint'.
15271         `remove_breakpoint' -> `old_remove_breakpoint'.
15272         `create_string' -> `old_create_string'.
15273         `lookup_class' -> `old_lookup_class'.
15274         `lookup_type' -> removed; changed into a dummy field.
15275         `lookup_assembly' -> `old_lookup_assembly'.
15276         Added (same functionality, but different signature):
15277         `create_string', `lookup_class', `lookup_assembly'
15278         Added new:
15279         `get_method_addr_or_bpt', `remove_method_breakpoint',
15280         `runtime_class_init'.
15281
15282         * debug-debugger.c: Merged the `debugger-dublin' branch.
15283
15284 2007-06-23  Zoltan Varga  <vargaz@gmail.com>
15285
15286         * mini-amd64.c (peephole_pass_1): Optimize away moves at the beginning of the bb as
15287         well.
15288         (peephole_pass): Likewise.
15289
15290 Fri Jun 22 09:17:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
15291
15292         * driver.c: hopefully make setaffinity work also for ancient
15293         versions of linux.
15294
15295 2007-06-22  Atsushi Enomoto  <atsushi@ximian.com>
15296
15297         * driver.c : win32 build fix.
15298
15299 Thu Jun 21 19:24:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
15300
15301         * driver.c: check for the MONO_NO_SMP env var and bind to a single
15302         processor if it is set.
15303
15304 2007-06-21  Martin Baulig  <martin@ximian.com>
15305
15306         * debug-mini.h: New file.
15307
15308         * debug-mini.c
15309         (mono_debugger_insert_breakpoint_full): Moved here from
15310         ../metadata/mono-debug-debugger.c.
15311         (mono_debugger_remove_breakpoint): Likewise.
15312         (mono_debugger_breakpoint_callback): Likewise.
15313
15314 2007-06-15  Raja R Harinath  <rharinath@novell.com>
15315
15316         * jit-icalls.c (mono_helper_compile_generic_method): Update to
15317         changes in MonoGenericClass.
15318
15319 2007-06-14  Zoltan Varga  <vargaz@gmail.com>
15320
15321         * mini-codegen.c (mono_opcode_to_type): Fix ia64 build.
15322
15323 2007-06-14  Raja R Harinath  <rharinath@novell.com>
15324
15325         * jit-icalls.c (mono_helper_compile_generic_method): Update to
15326         removal of MonoGenericMethod.
15327
15328 Thu Jun 14 12:42:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
15329
15330         * mini-exceptions.c: hooks for the exception events profiling API.
15331
15332 2007-06-14  Randolph Chung  <tausq@debian.org>
15333
15334         * Makefile.ma: Add hppa target.
15335         * mini-arch.h: Include mini-hppa.h
15336         * cpu-hppa.md, exceptions-hppa.c, inssel-hppa.brg, mini-hppa.c,
15337         mini-hppa.h, tramp-hppa.c: New files for 32-bit HPPA port.
15338         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15339
15340 2007-06-14  Randolph Chung  <tausq@debian.org>
15341
15342         * inssel.brg: Add rules for "chained" compare-branch operations so that
15343         a single compare op can affect multiple branches.  Adjust cost for
15344         OP_CEQ/OP_CGT/OP_CGT_UN/OP_CLT/OP_CLT_UN.
15345         * inssel-long32.brg: Update rules to use compare-branch macros.  Adjust
15346         cost for some rules so that they can more easily be overridden by
15347         per-arch rules (with fixes from lupus).
15348         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15349
15350 2007-06-13  Randolph Chung  <tausq@debian.org>
15351
15352         * mini-ops.h: Reorder branch ops so that they match the order of the
15353         corresponding CEE_* ops.  The code expects them this way.
15354         Add new ops for HPPA target.
15355         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15356
15357 2007-06-13  Randolph Chung  <tausq@debian.org>
15358
15359         * mini-exceptions.c: Handle cases where the stack grows towards
15360         larger addresses.
15361         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15362
15363 Wed Jun 13 19:13:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
15364
15365         * jit-icalls.c, mini.h, mini.c: added virtual generic invoke
15366         counter.
15367         * driver.c: explain where a non-matching corlib is found.
15368
15369 2007-06-13  Mark Probst  <mark.probst@gmail.com>
15370
15371         * mini.c (print_jit_stats): Output dynamic code allocation stats.
15372
15373 2007-06-10  Sanghyeon Seo <sanxiyn@gmail.com>
15374
15375         * mini-exceptions.c: Generate a method profile leave event during
15376         an exception to ensure that the profiler gets notified.
15377
15378 2007-06-07  Zoltan Varga  <vargaz@gmail.com>
15379
15380         * mini-amd64.c (peephole_pass): Merge some small changes from the linear-ir 
15381         branch.
15382
15383         * cpu-amd64.md: Add long_and/or/xor opcodes.
15384
15385 2007-06-06  Wade Berrier  <wberrier@novell.com>
15386
15387         * cpu-s390x.md (shr_imm): Correct the length of shr_imm instruction.
15388         (./class/lib/monolite/mcs.exe:25498): WARNING **: wrong maximal instruction 
15389         length of instruction shr_imm (expected 8, got 10)
15390
15391 2007-06-06  Zoltan Varga  <vargaz@gmail.com>
15392
15393         * mini-ia64.c (mono_arch_output_basic_block): Really fix the build.
15394
15395 2007-06-06  Mark Probst  <mark.probst@gmail.com>
15396
15397         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
15398         MonoInternalHashTable again (fixed bug in the internal hash table
15399         code).
15400
15401 2007-06-06  Mark Probst  <mark.probst@gmail.com>
15402
15403         * mini.c, driver.c: Reverted the MonoInternalHashTable changes.
15404         Have to figure out what makes it crash the SWF regression.
15405
15406 2007-06-05  Zoltan Varga  <vargaz@gmail.com>
15407
15408         * mini-ia64.c (mono_arch_lowering_pass): Fix ia64 build.
15409
15410 Tue Jun 5 17:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
15411
15412         * mini.c: optimize out the type check when storing null in a
15413         reference array.
15414
15415 2007-06-04  Mark Probst  <mark.probst@gmail.com>
15416
15417         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
15418         MonoInternalHashTable.
15419
15420 Mon Jun 4 11:29:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
15421
15422         * inssel.brg, mini.c, mini-ops.h: optimized Math.Mini/Max
15423         signed integer methods.
15424
15425 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
15426
15427         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case 
15428         permanently since the current approach doesn't work.
15429
15430 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
15431
15432         * inssel.brg (stmt): Only call delegate->invoke_impl if 
15433         MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE is defined.
15434
15435 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
15436
15437         * mini-amd64.c (mono_arch_output_basic_block): Unify div/rem opcodes and handle
15438         the sreg2==rdx case.
15439         
15440         * mini-amd64.c cpu-amd64.md: Correct length of r4const instruction and take into
15441         account if it contains a rex prefix.
15442         (peephole_pass): Handle OP_FMOVE as well.
15443
15444 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
15445
15446         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case for now
15447         as it causes regressions.
15448
15449 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
15450
15451         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement support for the
15452         static case as well.
15453
15454         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix ia64 build.
15455
15456         * mini-x86.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
15457         (mono_arch_get_this_arg_from_call): Ditto.
15458
15459         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Removed.
15460
15461         * inssel.brg (mini_emit_virtual_call): Call delegate->Invoke through the delegate's
15462         invoke_impl field.
15463
15464         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
15465         (mono_arch_get_this_arg_from_call): Ditto.
15466
15467         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Removed.
15468         
15469         * mini-trampolines.c (mono_delegate_trampoline): Complete rewrite. On first call,
15470         try to create optimized invoke code and use that for further invocations. 
15471         Otherwise, use the original mono_marshal_get_delegate_invoke () implementation.
15472
15473         * mini-x86.h mini-ia64.h: Remove MONO_ARCH_HAS_CREATE_DELEGATE_TRAMPOLINE for now.
15474
15475 2007-05-29  Rodrigo Kumpera  <kumpera@gmail.com>
15476
15477         * inssel.brg (mini_emit_virtual_call): Statically dispatch virtual calls to
15478         sealed classes or methods.
15479         *devirtualization.cs: tests for the new optimization
15480
15481 2007-05-29  Zoltan Varga  <vargaz@gmail.com>
15482
15483         * liveness.c (update_gen_kill_set): No need to set VOLATILE flags here, it is done
15484         by the update_volatile () function.
15485
15486 2007-05-27  Zoltan Varga  <vargaz@gmail.com>
15487
15488         * driver.c (mono_main): Call g_thread_init () early since newer glib versions
15489         require it.
15490
15491         * abcremoval.c (mono_perform_abc_removal): Avoid using alloca.
15492
15493 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
15494
15495         * mini.c: Add configure checks for header files.
15496         * mini-x86.c: Add configure checks for header files.
15497         * trace.c: Add configure checks for header files.
15498         * aot-runtime.c: Add configure checks for header files.
15499         * aot-compiler.c: Add configure checks for header files.
15500         * driver.c: Add configure checks for header files.
15501         * mini-codegen.c: Add configure checks for header files.
15502         
15503         Code is contributed under MIT/X11 license.
15504
15505 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
15506
15507         * mini-ia64.c (mono_arch_lowering_pass): Fix the handling of
15508         icompare_imm -128 + op_iclt. Fixes #81703.
15509
15510 2007-05-19  Zoltan Varga  <vargaz@gmail.com>
15511
15512         * mini-codegen.c (mono_local_regalloc): Fix long-shift-regalloc on amd64.
15513
15514 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
15515
15516         * inssel.brg: added "mini_emit_load_intf_bit_reg_vtable", and used it
15517         inside "mini_emit_isninst_iface_cast" and "mini_emit_castclass_iface"
15518         so that all isinst checks now use "interface_bitmap".
15519
15520 2007-05-15  Zoltan Varga  <vargaz@gmail.com>
15521
15522         * cpu-amd64.md (jmp): Fix a warning.
15523
15524         * inssel.brg (CEE_SWITCH): Hopefully fix #80738.
15525
15526         * basic.cs: Add new regression test.
15527
15528         * basic.cs: Remove test which is now in basic-long.cs.
15529
15530         * mini-ia64.c (mono_arch_output_basic_block): Sign extend in CEE_CONV_I8/CEE_CONV_I.
15531
15532         * basic-long.cs: Add new test.
15533         
15534 2007-05-13  Zoltan Varga  <vargaz@gmail.com>
15535
15536         * mini-sparc.c (mono_spillvar_offset_float): Fix sparc build.
15537
15538 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
15539
15540         * cpu-x86.md minix-86.c: Add a peephole_pass_1 () as on amd64.
15541
15542         * mini-x86.c (mono_arch_output_basic_block): Use mono_opcode_to_cond () in a few
15543         places.
15544         
15545         * mini-x86.c (mono_arch_emit_exceptions): Decrease the size of the exception 
15546         throwing code a bit.
15547
15548         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Decrease the size of 
15549         the exception throwing code a bit.
15550
15551         * mini-x86.c (get_call_info): Allocate result from a mempool.
15552
15553 2007-05-11  Zoltan Varga  <vargaz@gmail.com>
15554
15555         * aot-compiler.c (find_typespec_for_class): Fix the assert.
15556
15557         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
15558
15559         * mini.h (MonoCompile): Add 'token_info_hash' field.
15560
15561         * mini.c: Save token->method associations during compilation so the AOT 
15562         compiler can use it.
15563         
15564         * aot-compiler.c aot-runtime.c: Add support for compiling non-generic methods
15565         which reference generic classes and methods.
15566
15567 2007-05-10  Zoltan Varga  <vargaz@gmail.com>
15568
15569         * mini.h mini-<ARCH>.h: Get rid of MONO_ARCH_HAS_XP_LOCAL_REGALLOC.
15570
15571         * aot-compiler.c (compile_method): Fix a typo in a comment.
15572
15573         * aot-runtime.c (decode_cached_class_info): Skip generic types.
15574
15575         * aot-compiler.c: Add minimal support for AOTing generic code by skipping 
15576         everything generic.
15577
15578         * mini.c (mono_method_to_ir): Disable AOT when calling helper_compile_generic_method.
15579
15580 2007-05-09  Zoltan Varga  <vargaz@gmail.com>
15581
15582         * mini.h (MonoCompile): Add 'args' field.
15583
15584         * mini.c (mono_compile_create_vars): Store variables representing the arguments
15585         into cfg->args.
15586
15587         * mini-<ARCH>.c: Use cfg->args for accessing the method arguments.
15588
15589 2007-05-08  Zoltan Varga  <vargaz@gmail.com>
15590
15591         * mini.c (mono_compile_get_interface_var): Remove this unused function.
15592
15593         * mini-ops.h inssel.brg mini-<ARCH>.c: Add a new opcode for ckfinite as well.
15594
15595         * mini-ops.h: Introduce new opcodes used in the IR instead of the original CEE_
15596         opcodes for some opcodes.
15597
15598         * mini.h *.brg *.c: Use the new opcodes.
15599
15600 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
15601
15602         * mini.h: Bumped aot revision.
15603
15604         * inssel.brg: modified code generation of type checks for interfaces
15605         to use the new "MonoClass.interface_bitmap" instead of the old
15606         "MonoClass.interface_offsets".
15607
15608 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
15609
15610         * cpu-amd64.md (jmp): Increase the maximum size of the jmp opcode to 128.
15611
15612 2007-04-29  Zoltan Varga  <vargaz@gmail.com>
15613
15614         * abcremoval.c (summarize_integer_value): Handle OP_LCONV_TO_I4 to fix abcrem on
15615         64 bit platforms.
15616
15617 2007-04-27  Neale Ferguson <neale@sinenomine.net>
15618
15619         * mini-s390x.c: Fix MONO_TYPE_VALUETYPE processing.
15620
15621 2007-04-27  Wade Berrier  <wberrier@novell.com>
15622
15623         * mini-s390x.c: Remove redeclaration of CompRelation and CompType (defined in 
15624         mini.h) to fix build.
15625
15626 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
15627
15628         * mini-amd64.c (peephole_pass_1): Fix and reenable this pass.
15629         
15630         * mini-amd64.c (mono_arch_local_regalloc): Disable the new peephole_pass_1 as it
15631         causes the corlib unit tests to fail.
15632
15633 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
15634
15635         * mini-codegen.c (mono_opcode_to_type): Fix a bug in the previous patch.
15636
15637         * mini-amd64.c (peephole_pass_1): New pass to perform before local regalloc.
15638
15639         * mini-codegen.c (mono_opcode_to_cond): New helper function to convert conditional 
15640         opcodes to the comparison relations.
15641
15642         * mini-codegen.c (mono_opcode_to_type): New helper function to convert conditional 
15643         opcodes to their types.
15644         
15645         * mini-ia64.c mini-amd64.c: Use mono_opcode_to_cond and mono_opcode_to_type.
15646
15647         * mini-amd64.c (get_call_info): Allocate the result from the cfg mempool and cache 
15648         it in cfg->arch.cinfo.
15649
15650         * local-propagation.c (mono_local_cprop_bb): Fix a warning.
15651
15652         * mini.h mini.c branch-opts.c: Change bbhash to be an array and store it in 
15653         cfg->cil_offset_to_bb.
15654
15655 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
15656
15657         * liveness.c (optimize_initlocals): New mini-pass to optimize away dead assignments
15658         created becase of initlocals.
15659
15660 2007-04-23  Zoltan Varga  <vargaz@gmail.com>
15661
15662         * mini-alpha.c cpu-alpha.md: More alpha port work from 
15663         Sergey Tikhonov <tsv@solvo.ru>.
15664
15665 2007-04-21  Andreas Faerber  <andreas.faerber@web.de>
15666
15667         * Makefile.am (BUILT_SOURCES): Fix for automake 1.6.x. Fixes #81417.
15668
15669 2007-04-19  Zoltan Varga  <vargaz@gmail.com>
15670
15671         * cpu-s390.md (break): Correct the length of break instruction.
15672
15673 Thu Apr 19 16:28:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
15674
15675         * mini.c: fix a couple of soft-float issues and comments.
15676
15677 2007-04-15  Miguel de Icaza  <miguel@novell.com>
15678
15679         * trace.c (is_filenamechar): - is also a filename char.
15680
15681 2007-04-15  Neale Ferguson <neale@sinenomine.net>
15682
15683         * mini-s390.c: Correct checking for enum type in return value processing.
15684
15685 2007-04-14  Raja R Harinath  <rharinath@novell.com>
15686
15687         * Makefile.am (BUILT_SOURCES): Add 'version.h'.
15688         (version.h): Makefile is in the build directory.
15689
15690 2007-04-06  Andreas Faerber  <andreas.faerber@web.de>
15691
15692         * mini-amd64.h: fix for assertion failure on Solaris/amd64
15693
15694 2007-04-11  Martin Baulig  <martin@ximian.com>
15695
15696         * mini.c (can_access_member): Fix handling of generic classes;
15697         fixes #81259.
15698
15699 2007-04-10  Zoltan Varga  <vargaz@gmail.com>
15700
15701         * aot-runtime.c (mono_aot_plt_resolve): Fix disabling of AOT. Fixes #81316.
15702
15703 2007-04-05  Zoltan Varga  <vargaz@gmail.com>
15704
15705         * aot-runtime.c: Fix disabling of AOT. Fixes #81316.
15706
15707 Fri Mar 23 20:25:31 CET 2007 Paolo Molaro <lupus@ximian.com>
15708
15709         * mini-codegen.c: make sure the right spill amount is
15710         used for fp or integer registers (fixes the float_sub_spill() on ppc).
15711
15712 Fri Mar 23 19:43:35 CET 2007 Paolo Molaro <lupus@ximian.com>
15713
15714         * mini-ppc.c: fixes for the fp_branch_nan test.
15715
15716 2007-03-23  Zoltan Varga  <vargaz@gmail.com>
15717
15718         * basic.cs: Comment out new test which still fails on ia64.
15719
15720 Fri Mar 23 15:54:23 CET 2007 Paolo Molaro <lupus@ximian.com>
15721
15722         * mini.c: immediate shifted or fix (mono_metadata_user_string assert).
15723
15724 Fri Mar 23 12:53:28 CET 2007 Paolo Molaro <lupus@ximian.com>
15725
15726         * mini-ppc.c, mini-ppc.h: struct passing ABI fix (bug #77968).
15727
15728 2007-03-22  Zoltan Varga  <vargaz@gmail.com>
15729
15730         * cfold.c (FOLD_BINOP): Cast the result to gint32 to prevent overflow problems
15731         on 64 bit machines. Fixes part of #80738.
15732
15733         * basic.cs: Add regression test.
15734
15735 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
15736
15737         * inssel.brg basic.cs: Revert previous change to fix build.
15738
15739         * inssel.brg (SWITCH): Clean out the upper word of the switch value on 64 bit
15740         platforms.
15741         
15742         * inssel.brg (SWITCH): Use an integer comparison. Fixes #80738.
15743
15744         * basic.cs: Add new regression test.
15745
15746 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
15747
15748         * mini-ia64.c (mono_arch_emit_prolog): Fix an assert when a function has too
15749         many arguments.
15750
15751 2007-03-16  Neale Ferguson <neale@sinenomine.net>
15752
15753         * cpu-s390x.md: Correct length of break instruction.
15754
15755 2007-03-16  Neale Ferguson <neale@sinenomine.net>
15756
15757         * mini-s390x.c, cpu-s390x.md: Fix #80507 for s390x.
15758         * mini-s390.c, cpu-s390.md: Fix #80507 for s390.
15759
15760 2007-03-15  Jonathan Chambers  <joncham@gmail.com>
15761
15762         * *.c: Begin WIN64 port.
15763         * mini.c:  Use correct register in profiler.
15764         * mini-amd64.c: No inline assembly on Win64.
15765         * mini-amd64.h: Implement MONO_INIT_CONTEXT_FROM_FUNC for Win64.
15766         Only define MONO_ARCH_USE_SIGACTION on non-windows platforms.
15767         * exceptions-amd64.c: Only need gregs_from_ucontext if MONO_ARCH_USE_SIGACTION
15768         is defined. Implement mono_arch_sigctx_to_monoctx, mono_arch_monoctx_to_sigctx, and
15769         mono_arch_ip_from_context for Win64.
15770         
15771         Contributed under MIT/X11 license.
15772
15773 2007-03-15  Zoltan Varga  <vargaz@gmail.com>
15774
15775         * exceptions-amd64.c (seh_handler): Ditto.
15776
15777         * exceptions-x86.c (seh_handler): Fix a memory leak.
15778
15779 Thu Mar 15 13:47:59 CET 2007 Paolo Molaro <lupus@ximian.com>
15780
15781         * mini-arm.c, mini-mips.c, mini-ppc.c, mini-s390.c,
15782         mini-s390x.c: fixed peephole optimizations to deal
15783         correctly with 1 and 2 byte reload avoidance.
15784
15785 Thu Mar 15 10:17:54 CET 2007 Paolo Molaro <lupus@ximian.com>
15786
15787         * cpu-s390.md, cpu-s390x.md: update localloc length.
15788
15789 Wed Mar 14 21:00:19 CET 2007 Paolo Molaro <lupus@ximian.com>
15790
15791         * cpu-g4.md: added missing descriptions.
15792
15793 2007-03-14  Miguel de Icaza  <miguel@novell.com>
15794
15795         *  Makefile.am: Add support so the tail tests are not executed on
15796         PowerPC as that is a known limitation of the PowerPC port.
15797
15798 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
15799
15800         * runmdesc.bat:  Move to msvc directory.
15801         
15802 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
15803
15804         * runmdesc.bat:  Run executable that was produced by the current
15805         target and sent via an argument.
15806         
15807 2007-03-11  Zoltan Varga  <vargaz@gmail.com>
15808
15809         * mini.c (mono_method_to_ir): Fix box+brtrue optimization. Fixes
15810         #81102.
15811
15812         * generics.2.cs: Add regression test.
15813
15814 2007-03-09  Wade berrier  <wberrier@novell.com>
15815
15816         * mini-ppc.h: Undo typo of MONO_CONTEXT_SET_SP (ppc doesn't define this symbol)
15817
15818 2007-03-09  Zoltan Varga  <vargaz@gmail.com>
15819
15820         * aot-runtime.c (load_aot_module): Load all dependent assemblies eagerly since all
15821         AOT code depends on this.
15822
15823 Thu Mar 8 19:36:13 CET 2007 Paolo Molaro <lupus@ximian.com>
15824
15825         * mini.c: more precise tracking of types in the eval stack
15826         (part of fix for bug #81044).
15827
15828 2007-03-07  Zoltan Varga  <vargaz@gmail.com>
15829
15830         * aot-runtime.c (mono_aot_get_class_from_name): Add a cache.
15831
15832         * aot-compiler.c (encode_patch): Remove an obsolete comment.
15833
15834 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
15835
15836         * mini-exceptions.c (mono_handle_native_sigsegv): Fix a warning.
15837
15838         * mini.c (mono_method_to_ir): Add a workaround for bug #80733.
15839
15840 2007-02-22  Zoltan Varga  <vargaz@gmail.com>
15841
15842         * mini.c (type_from_op): Convert CEE_CONV_U to OP_LCONV_TO_U when the argument is
15843         a pointer on 64 bit systems. Fixes #80190.
15844
15845         * iltests.il: Add new regression test.
15846
15847 Tue Feb 20 11:33:28 CET 2007 Paolo Molaro <lupus@ximian.com>
15848
15849         * mini.c: inline a constant for Environment.IsRunningOnWindows.
15850
15851 2007-02-19  Geoff Norton  <gnorton@customerdna.com>
15852
15853         * trace.c: Remove an erroneous alignemnt check when tracing.
15854           Fixes --trace on OSX86.
15855
15856 Wed Feb 14 19:45:56 CET 2007 Paolo Molaro <lupus@ximian.com>
15857
15858         * mini-$(arch).h: initialize SP in context for all the archs.
15859
15860 2007-02-14  Sebastien Pouliot  <sebastien@ximian.com>
15861
15862         * mini-x86.h: Initialize SP in MONO_INIT_CONTEXT_FROM_FUNC. Fix CAS
15863         regressions in the thread tests.
15864
15865 2007-02-14  Zoltan Varga  <vargaz@gmail.com>
15866
15867         * *-alpha.*: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>:
15868         - fixed implementation of LOCALLOC opcode
15869         - implemented non-un compare for floats
15870         - code cleanup
15871         - implementation of FDIV and CKFINITE opcodes
15872         - fixes for latest mono updates
15873         - additional arch opcodes
15874
15875 Mon Feb 12 11:54:16 CET 2007 Paolo Molaro <lupus@ximian.com>
15876
15877         * Makefile.am: simplify and merge rules for cross-compilation.
15878
15879 2007-02-07  Massimiliano Mantione  <massi@ximian.com>
15880
15881         * local-propagation.c: Actually *apply* the fix for bug 80591...
15882
15883 Tue Feb 6 19:03:19 CET 2007 Paolo Molaro <lupus@ximian.com>
15884
15885         * mini-exceptions.c: backuot part of the last change
15886         (fixes cas tests on amd64 related to GetExecutingAssembly ()).
15887
15888 2007-02-06  Massimiliano Mantione  <massi@ximian.com>
15889         * inssel.brg: Fix bug 59286.
15890
15891
15892 Tue Feb 6 12:23:50 CET 2007 Paolo Molaro <lupus@ximian.com>
15893
15894         * mini-exceptions.c: patch from Zoltan to correctly check for
15895         stack boundaries (using the stack register, not the frame register),
15896         fixes bugs #80724, #79717.
15897
15898 2007-02-03  Zoltan Varga  <vargaz@gmail.com>
15899
15900         * mini-ia64.c inssel-sparc.brg mini-sparc.c cpu-sparc.md: Get rid of OP_SETREG/
15901         OP_SETREGIMM, use OP_MOVE/OP_ICONST instead.
15902
15903         * mini-amd64.c (mono_arch_output_basic_block): Fix ATOMIC_EXCHANGE in the
15904         presence of frame pointer elimination.
15905
15906 2007-02-01  Geoff Norton  <gnorton@customerdna.com>
15907         
15908         * mini-x86.h: NetBSD UCONTEX_REG defines.
15909
15910 2007-02-01  Zoltan Varga  <vargaz@gmail.com>
15911
15912         * inssel-amd64.brg: Fix amd64 build.
15913
15914 Thu Feb 1 14:02:09 CET 2007 Paolo Molaro <lupus@ximian.com>
15915
15916         * mini.h: remove extern to workaround what looks likes gcc bug 26905
15917         on amd64.
15918
15919 2007-01-31  Zoltan Varga  <vargaz@gmail.com>
15920
15921         * mini-codegen.c (mono_is_regsize_var): New helper function usable by the back
15922         ends.
15923
15924         * mini-<ARCH>.c: Use mono_is_regsize_var ().
15925
15926 2007-01-30 Mark Mason <mason@broadcom.com>
15927
15928            * exceptions-mips.c: Lots of exception handling fixes, LMFs now work, some cleanups.
15929            * mini-mips.h: Add LMF magic numbers, and fix context set/get macros.
15930            * mini-mips.c: Cleanups, LMF handling now works, optimize store of zero, implement localloc
15931            beginning support for CEE_JMP [not quite working yet]
15932            * tramp-mips.c: LMF handling now works
15933         
15934 2007-01-30  Zoltan Varga  <vargaz@gmail.com>
15935
15936         * mini-amd64.c (peephole_pass): Optimize code common in initlocals blocks.
15937
15938         * mini.h (NULLIFY_INS): New macro.
15939
15940 Tue Jan 30 16:33:33 CET 2007 Paolo Molaro <lupus@ximian.com>
15941
15942         * mini.c: statistical profiler fix for windows, patch
15943         from Tor Lillqvist (tml@novell.com).
15944
15945 2007-01-30  Massimiliano Mantione  <massi@ximian.com>
15946         * local-propagation.c: Fix bug 80591.
15947
15948 Mon Jan 29 12:14:34 CET 2007 Paolo Molaro <lupus@ximian.com>
15949
15950         * Makefile.am: put back the --export-dynamic option as with
15951         the previous gmodule flags (thanks to Robert Jordan).
15952
15953 2007-01-28  Zoltan Varga  <vargaz@gmail.com>
15954
15955         * mini-sparc.c (peephole_pass): Fix #80622 for sparc as well.
15956
15957         mini.h *.c: Allocate fp vregs from the same pool as the int vregs. Use this to
15958         simplify and speed up the local register allocator. Also rename some fields
15959         like iassign->vassign.
15960         
15961         * regalloc.c: Remove some functions which are no longer used since their
15962         inlined version is in mini-codegen.c.
15963         
15964         * mini-codegen.c: Rename mono_regstate2_ functions to mono_regstate_.
15965
15966         * basic.cs objects.cs iltests.il: Merge tests from the linear IL branch.
15967
15968 2007-01-27  Zoltan Varga  <vargaz@gmail.com>
15969
15970         * mini-amd64.c (peephole_pass): Remove optimizations which omit a 
15971         narrowing. Fixes #80622.
15972
15973         * iltests.il: Add new regresssion test. 
15974
15975 Fri Jan 26 18:31:45 CET 2007 Paolo Molaro <lupus@ximian.com>
15976
15977         * mini.h, mini-trampolines.c, aliasing.c, mini-codegen.c,
15978         debug-debugger.c, debug-debugger.h: warning fixes.
15979         * driver.c: updated copyright year and made it fit in one line.
15980
15981 Fri Jan 26 12:48:39 CET 2007 Paolo Molaro <lupus@ximian.com>
15982
15983         * aot-runtime.c: updated to use mono-dl instead of gmodule.
15984
15985 2007-01-25  Zoltan Varga  <vargaz@gmail.com>
15986
15987         * mini-x86.c (mono_arch_output_basic_block): Fix #80507 for x86.
15988
15989         * mini-amd64.c (mono_arch_output_basic_block): Fix #80507 for amd64.
15990
15991         * iltests.il: Add new test for bug #80507.
15992
15993 Wed Jan 24 19:10:28 CET 2007 Paolo Molaro <lupus@ximian.com>
15994
15995         * mini-arm.h: use soft-float also on vfp for now.
15996
15997 Wed Jan 24 14:54:40 CET 2007 Paolo Molaro <lupus@ximian.com>
15998
15999         * mini.c: fix some more soft-float issues.
16000
16001 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
16002
16003         * mini-sparc.h (MONO_ARCH_FRAME_ALIGNMENT): Fix sparc build.
16004
16005 2007-01-24  Massimiliano Mantione  <massi@ximian.com>
16006         * mini-arch.h, , inssel-amd64.brg, mini-x86.c, inssel-x86.brg,
16007         mini-ia64.c, mini-sparc.c, mini-alpha.c: Introduced
16008         MONO_ARCH_LOCALLOC_ALIGNMEENT to fix bug 80498.
16009
16010 Wed Jan 24 12:04:39 GMT 2007 Paolo Molaro <lupus@ximian.com>
16011
16012         * mini-arm.c: typo fix.
16013
16014 2007-01-23  Neale Ferguson <neale@sinenomine.net>
16015
16016         * mini-s390x.c: Use lgb instructions for I1 type variables instead of lb.
16017
16018 2007-01-21  Zoltan Varga  <vargaz@gmail.com>
16019
16020         * mini.c (mono_allocate_stack_slots_full): Allocate memory from the cfg mempool.
16021         Share stack slots for scalar types. Avoid expensive g_list_free () calls.
16022
16023         * mini-x86.c (mono_arch_allocate_vars): Don't free the result of allocate_stack_slots_full.
16024
16025         * mini-amd64.c mini-ia64.c mini-alpha.c: Ditto. 
16026
16027         * mini.h (MonoJitStats): Add a new JIT statistics: locals_stack_size.
16028         
16029         * inssel.brg: Fix a warning.
16030
16031         * mini.h (MonoBasicBlock): Make bb->dominated a GSList.
16032
16033         * abcremoval.c ssa.c ssapre.c: Update after this change.
16034         
16035         * dominators.c (compute_dominators): Allocate bb->dominated from the cfg mempool.
16036
16037         * dominators.c (df_set): Use mono_bitset_union_fast.    
16038
16039 Sat Jan 20 16:59:01 CET 2007 Paolo Molaro <lupus@ximian.com>
16040
16041         * mini.h, genmdesc.c, genmdesc.pl, mini-${arch}.c, cprop.c,
16042         mini-codegen.c: reduce relocations and memory usage for the cpu
16043         description.
16044
16045 2007-01-20  Zoltan Varga  <vargaz@gmail.com>
16046
16047         * mini-codegen.c (mono_regstate2_alloc_int): Optimize this using bsfq on amd64.
16048
16049         * genmdesc.c genmdesc.pl mini.h: Remove some unused fields from the mdesc tables
16050         to reduce their size.
16051
16052 2007-01-19 Mark Mason <mason@broadcom.com>
16053
16054         * exceptions-mips.c: fix mono_arch_ip_from_context(), increase exception debug support.
16055         * mini-mips.c: more configuration macros, support long conditional branches, additional
16056         asserts, fix epilog instrumentation.
16057         * mini-mips.h: use standard stack walk
16058         * cpu-mips.md: increase size of div, rem and conditional branches
16059         
16060 Fri Jan 19 17:23:32 CET 2007 Paolo Molaro <lupus@ximian.com>
16061
16062         * mini.h, mini-codegen.c, mini-$(arch).h: claenup references
16063         to cpu spec data.
16064
16065 2007-01-19  Zoltan Varga  <vargaz@gmail.com>
16066
16067         * aot-compiler.c (encode_klass_info): Allow classes of the form <Type>[][].
16068         (compile_method): Ditto.
16069
16070         * aot-runtime.c (decode_klass_info): Ditto.
16071
16072         * mini.c (mono_method_to_ir): Call mono_get_got_var () in a place where it is
16073         needed by the code generated by inssel.brg. Also fix a warning.
16074
16075 Thu Jan 18 17:55:22 CET 2007 Paolo Molaro <lupus@ximian.com>
16076
16077         * mini.c: deal with enums that become genericinsts by
16078         being nested in a generic class (bug #79956).
16079
16080 Thu Jan 18 16:52:56 CET 2007 Paolo Molaro <lupus@ximian.com>
16081
16082         * mini.c: match the generic definition to check for
16083         private access with generic types (bug #78431).
16084
16085 Thu Jan 18 11:50:13 CET 2007 Paolo Molaro <lupus@ximian.com>
16086
16087         * genmdesc.pl, Makefile.am: perl implementation of genmdesc,
16088         to make life easier for people cross-compiling that insist on not
16089         using scratchbox.
16090
16091 2007-01-17 Mark Mason <mason@broadcom.com>
16092
16093         * inssel-long.brg: patch to deal with mips missing flags
16094         * inssel-long32-mips.brg: implement overflow checks
16095         * insset-mips.brg: implement overflow checks
16096         * mini-mips.h: implement conditional exception handling
16097         * mini-mips.c: add mips_emit_exc_by_name(), implement conditional exception handling.
16098           Remove unused code, minor cleanups.
16099         * exceptions-mips.c: minor cleanups
16100         * mini-ops.h: add mips conditional exception ops
16101         * cpu-mips.md: add mips conditional exception ops
16102
16103         
16104 Wed Jan 17 19:22:34 CET 2007 Paolo Molaro <lupus@ximian.com>
16105
16106         * inssel.brg: patch from Mark Mason <mason@broadcom.com>
16107         to deal with mips missing of flags.
16108
16109 Tue Jan 16 20:01:01 CET 2007 Paolo Molaro <lupus@ximian.com>
16110
16111         * exceptions-ppc.c: execute fault handlers.
16112
16113 Tue Jan 16 19:54:44 CET 2007 Paolo Molaro <lupus@ximian.com>
16114
16115         * mini-ppc.c: handle missing call locationss with FORCE_INDIR_CALL.
16116
16117 Tue Jan 16 13:14:31 CET 2007 Paolo Molaro <lupus@ximian.com>
16118
16119         * mini.c: handle also floating point values in initialize_array.
16120
16121 Tue Jan 16 12:42:40 CET 2007 Paolo Molaro <lupus@ximian.com>
16122
16123         * mini.c, aot-runtime.c, aot-compiler.c: enable aot compilation of
16124         array initialization and make it conditional on the intrins option.
16125
16126 Tue Jan 16 11:28:45 CET 2007 Paolo Molaro <lupus@ximian.com>
16127
16128         * mini.h, patch-info.h, Makefile.am, aot-compiler.c: reduce
16129         relocations and put the patch info names close to the enum definition.
16130
16131 2007-01-15 Mark Mason <mason@broadcom.com>
16132
16133         * basic.cs, exceptions.cs: break up large tests to increase debugability.
16134
16135 Mon Jan 15 18:57:14 CET 2007 Paolo Molaro <lupus@ximian.com>
16136
16137         * mini.c: optimized RuntimeHelpers::InitializeArray () calls.
16138
16139 2007-01-12  Raja R Harinath  <rharinath@novell.com>
16140
16141         * mini.c (mono_method_to_ir): Use new MonoGenericContext accessor.
16142
16143 Thu Jan 11 11:16:42 CET 2007 Paolo Molaro <lupus@ximian.com>
16144
16145         * Makefile.am: distribute the mips sources.
16146
16147 Wed Jan 10 19:49:33 CET 2007 Paolo Molaro <lupus@ximian.com>
16148
16149         * mini-codegen.h: handle bug #80489 here, by excluding ecx
16150         directly.
16151
16152 Wed Jan 10 19:08:05 CET 2007 Paolo Molaro <lupus@ximian.com>
16153
16154         * cpu-x86.md: back out for now as this triggers other regressions.
16155
16156 Wed Jan 10 18:33:16 CET 2007 Paolo Molaro <lupus@ximian.com>
16157
16158         * cpu-x86.md: force src1 and dest regpair for long shift instructions
16159         to eax:edx, so ecx can't get allocated to them (bug #80489).
16160
16161 Tue Jan 9 12:36:11 CET 2007 Paolo Molaro <lupus@ximian.com>
16162
16163         * mini.c, mini-exceptions.c: enabled running fault handlers
16164         (bug #80469).
16165
16166 2007-01-03  Miguel de Icaza  <miguel@novell.com>
16167
16168         * driver.c: If nothing fail, do not use the string "failed",
16169         because it makes it very annoying to view test result logs on the
16170         web. 
16171
16172 2006-12-30  Miguel de Icaza  <miguel@novell.com>
16173
16174         * debug-debugger.c (mono_debugger_main): Rename "main" to
16175         "main_method" to prevent a warning.
16176
16177         Remove a warning for unused field.
16178
16179 2006-12-28  Martin Baulig  <martin@ximian.com>
16180
16181         * debug-debugger.c
16182         (MONO_DEBUGGER__debugger_info): Add `get_lmf_addr'.
16183
16184 2006-12-22  Martin Baulig  <martin@ximian.com>
16185
16186         * mdb-debug-info32.s, mdb-debug-info64.s: New files.
16187         Put a pointer to the `MONO_DEBUGGER__debugger_info' into a
16188         seperate `.mdb_debug_info' section, so we can access it from the
16189         debugger even if the binary is stripped.
16190
16191         * debug-debug.c: Reference the `MONO_DEBUGGER__debugger_info_ptr'
16192         from the `.mdb_debug_info' here to prevent the linker from
16193         removing that section.
16194
16195         * Makefile.am (mono_debugger_sources): Add mdb-debug-info32.s /
16196         mdb-debug-info64.s.
16197
16198 2006-12-19  Robert Jordan  <robertj@gmx.net>
16199
16200         * mini-x86: enable the code to return small structures in
16201         registers for FreeBSD as well. Fixes bug #80278.
16202         * aot-runtime.c: Include sys/wait.h for WEXITSTATUS/WIFEXITED.
16203
16204 Mon Dec 18 19:47:17 CET 2006 Paolo Molaro <lupus@ximian.com>
16205
16206         * mini-x86.c: align the stack when calling the profiler
16207         function instrumenting the prolog (on OSX).
16208
16209 Thu Dec 14 15:22:43 CET 2006 Paolo Molaro <lupus@ximian.com>
16210
16211         * mini.c: emit a break opcode where Debugger.Break () is called.
16212
16213 2006-12-13  Miguel de Icaza  <miguel@novell.com>
16214
16215         * mini.c (mono_method_to_ir): Provide useful information on this
16216         assert, to prevent others from debugging like I did.
16217
16218 Tue Dec 12 17:01:38 CET 2006 Paolo Molaro <lupus@ximian.com>
16219
16220         * mini.c: enable code which was incorrectly commented
16221         (bug #80235).
16222
16223 Tue Dec 12 16:28:15 CET 2006 Paolo Molaro <lupus@ximian.com>
16224
16225         * mini-x86.c: enable on OSX, too, the code to return small
16226         structures in registers.
16227
16228 Mon Dec 11 19:22:35 CET 2006 Paolo Molaro <lupus@ximian.com>
16229
16230         * mini-x86.c: remove the use of the dynamic code manager here, too.
16231
16232 Mon Dec 11 19:08:33 CET 2006 Paolo Molaro <lupus@ximian.com>
16233
16234         * mini.h, debug-debugger.c, tramp-*.c: fixed 
16235         mono_debugger_create_notification_function() to use
16236         mono_global_codeman_reserve () instead of a dynamic code manager.
16237
16238 Tue Dec 5 17:54:50 CET 2006 Paolo Molaro <lupus@ximian.com>
16239
16240         * mini.c, jit-icalls.h, jit-icalls.c: remove the 
16241         ves_array_element_address() jit icall and use a generated
16242         managed method instead (which is about 4 times faster for a rank 3
16243         array access).
16244
16245 2006-11-29  Mark Mason  <mason@broadcom.com>
16246
16247         * basic-calls.cs: additional tests for passing
16248         structures as function arguments.
16249
16250 2006-11-29  Mark Mason  <mason@broadcom.com>
16251
16252         * mini-mips.h: disable custom exception handling
16253         * mini-mips.c: throw/rethrow should use jalr to call
16254         exception stubs.  Fixed bug with passing structures
16255         by value. More support for tracing floating point
16256         functions.
16257
16258 Wed Nov 29 20:28:17 CET 2006 Paolo Molaro <lupus@ximian.com>
16259
16260         * mini.c: fixed typo in the soft-float ldind.r4 handling
16261         (bug #80086).
16262
16263 Wed Nov 29 11:33:03 CET 2006 Paolo Molaro <lupus@ximian.com>
16264
16265         * mini.c, mini.h, driver.c: added --runtime command line
16266         option to select a different runtime than the autodetected one.
16267         * jit.h: added API for embedders to initialize with a specific
16268         runtime version.
16269
16270 Tue Nov 28 21:24:55 CET 2006 Paolo Molaro <lupus@ximian.com>
16271
16272         * mini.c: handle also boxing of r4 values (bug #80024).
16273
16274 Tue Nov 28 19:45:44 CET 2006 Paolo Molaro <lupus@ximian.com>
16275
16276         * mini-ppc.c: force indirect calls until we reserve
16277         enough address space for all the generated code.
16278
16279 Tue Nov 28 20:04:34 GMT 2006 Paolo Molaro <lupus@ximian.com>
16280
16281         * exceptions-arm.c: workaround bugs in the libc definition
16282         of struct ucontext.
16283
16284 Mon Nov 27 15:13:41 CET 2006 Paolo Molaro <lupus@ximian.com>
16285
16286         * inssel.brg: fixes from me and Mark Mason.
16287
16288 2006-11-23  Dick Porter  <dick@ximian.com>
16289
16290         * wapihandles.c (mini_wapi_seminfo): No need to adjust the counter
16291         semaphore display now we've fixed the initial value
16292
16293 Wed Nov 22 11:04:37 CET 2006 Paolo Molaro <lupus@ximian.com>
16294
16295         * inssel.brg: partially revert the last change to fix the build.
16296
16297 2006-11-21  Mark Mason  <mason@broadcom.com>
16298
16299         * inssel.brg: Add and use compare-and-branch macros to support
16300         architectures that do not have condition code registers (ie. MIPS).
16301         * *-mips.{c,brg,md}: Fix copyright statements
16302
16303 2006-11-20  Mark Mason  <mason@broadcom.com>
16304
16305         * Makefile.am: remove mini-codegen.c from list of MIPS sources
16306         * mini.c: Allow GET_CONTEXT to be specified by the arch port
16307         * mini.h: Added declaration for mono_print_ins()
16308         * mini-codegen.c: added ins_spec initializer for MIPS
16309         * mini-codegen.c (mono_call_inst_add_outarg_reg): added asserts for
16310         vreg to be virtual and hreg to be non-virtual.
16311         * mini-codegen.c (mono_spillvar_offset): assert if MIPS - spilling
16312         is not yet working/implemented correctly.
16313         * mini-codegen.c (print_ins): rename to mono_print_ins(), make
16314         non-static, fixup calls to print_ins() from other parts in the file.
16315
16316 2006-11-20  Mark Mason  <mason@broadcom.com>
16317
16318         * basic-calls.cs: added tests for passing structures as arguments
16319         to calls.
16320
16321 Mon Nov 20 19:40:11 CET 2006 Paolo Molaro <lupus@ximian.com>
16322
16323         * inssel-long32.brg: optimize signed division by power of two.
16324
16325 Mon Nov 20 17:37:58 CET 2006 Paolo Molaro <lupus@ximian.com>
16326
16327         * mini-arm.c: added support for interworking with thumb code
16328         (mono must be still be built using the ARM instruction encoding).
16329
16330 2006-11-19  Miguel de Icaza  <miguel@novell.com>
16331
16332         * mini.c (type_from_op): Separate the conditions for OP_EQ as the
16333         verifier has different rules for it.   Fixes a few verifier issues
16334         in the test suite.
16335
16336         * mini-exceptions.c (mono_handle_native_sigsegv): Put the message
16337         at the end, so people know what happened.
16338
16339 Thu Nov 16 14:07:18 CET 2006 Paolo Molaro <lupus@ximian.com>
16340
16341         * brach-opts.c: in optimize_exception_target() make sure we
16342         are in a catch clause (fixes bug #79871).
16343
16344 Thu Nov 16 12:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
16345
16346         * jit-icalls.c, jit-icalls.h, mini-arm.c, mini.c:
16347         more soft-float support fixes.
16348
16349 Wed Nov 15 18:45:47 GMT 2006 Paolo Molaro <lupus@ximian.com>
16350
16351         * mini-arm.c, inssel-arm.brg: ABI fix for longs and doubles
16352         that are passed half on the stack and half in registers.
16353
16354 Wed Nov 15 17:00:27 CET 2006 Paolo Molaro <lupus@ximian.com>
16355
16356         * mini-ops.h, mini-arch.h, helpers.c, Makefile.am:
16357         more mips integration work from Mark E Mason 
16358         <mark.e.mason@broadcom.com>.
16359
16360 Wed Nov 15 16:34:03 CET 2006 Paolo Molaro <lupus@ximian.com>
16361
16362         * exceptions-mips.c, inssel-mips.brg, mini-mips.h,
16363         cpu-mips.md, inssel-long32-mips.brg, mini-mips.c,
16364         tramp-mips.c: added sources for the mips port, not
16365         integrated in the build yet. Contributed by
16366         Mark E Mason <mark.e.mason@broadcom.com>.
16367
16368 2006-11-14  Neale Ferguson <neale@sinenomine.net>
16369
16370         * mini-s390[x].c (is_regsize_var): Support PTR/FNPTR too.
16371
16372 Tue Nov 14 16:06:37 CET 2006 Paolo Molaro <lupus@ximian.com>
16373
16374         * Makefile.am, inssel-float.brg, inssel-softfloat.brg:
16375         put the soft-float rules in its own file since it seems to
16376         break s390 compilation.
16377
16378 Mon Nov 13 15:54:38 CET 2006 Paolo Molaro <lupus@ximian.com>
16379
16380         * mini-arm.c: fixed wrnings.
16381
16382 Fri Nov 10 19:18:32 CET 2006 Paolo Molaro <lupus@ximian.com>
16383
16384         * mini-arm.c, mini-arm.h, cpu-arm.md, inssel-float.brg,
16385         inssel-arm.brg: ARM support for soft-float.
16386
16387 Fri Nov 10 18:38:15 CET 2006 Paolo Molaro <lupus@ximian.com>
16388
16389         * mini.c, jit-icalls.c, jit-icalls.h: added first cut at handling
16390         loads and stores of 32 bit fp values.
16391
16392 2006-11-10  Zoltan Varga  <vargaz@gmail.com>
16393
16394         * mini-sparc.c (is_regsize_var): Support PTR/FNPTR too.
16395
16396         * tramp-sparc.c (mono_arch_patch_callsite): Fix this function so it actually
16397         works. Fixes #79852 and #79463.
16398
16399 Thu Nov 9 16:56:13 CET 2006 Paolo Molaro <lupus@ximian.com>
16400
16401         * mini.c, mini-codegen.c, jit-icalls.c, jit-icalls.h:
16402         more soft-float support WIP and fixes.
16403
16404 Wed Nov 8 16:40:02 CET 2006 Paolo Molaro <lupus@ximian.com>
16405
16406         * mini-arm.c: some VFP updates.
16407
16408 Tue Nov 7 19:45:51 CET 2006 Paolo Molaro <lupus@ximian.com>
16409
16410         * mini-exceptions.c: 0 is a valid local var offset in some
16411         architectures, don't assert (bug #78508).
16412
16413 Tue Nov 7 18:17:52 GMT 2006 Paolo Molaro <lupus@ximian.com>
16414
16415         * exceptions-arm.c: fixed off by one error in stack walk code.
16416
16417 Tue Nov 7 11:27:26 CET 2006 Paolo Molaro <lupus@ximian.com>
16418
16419         * mini.h, mini.c: more precise tracking of type load exceptions.
16420
16421 2006-11-03  Robert Jordan  <robertj@gmx.net>
16422
16423         * Makefile.am: [WIN32] Add monow.exe target.
16424         * driver.c: [WIN32] Don't detach the console when debugging.
16425         Fixes bug #79797.
16426         
16427 2006-10-30  Miguel de Icaza  <miguel@novell.com>
16428
16429         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Eliminate warning.
16430
16431 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
16432
16433         * aot-compiler.c (emit_method_info): Add a case missed earlier.
16434
16435         * driver.c (mini_regression): Fix --regression with AOT.
16436
16437         * aot-compiler.c (emit_method_info): Fix AOT on amd64.
16438
16439 2006-10-17  Zoltan Varga  <vargaz@gmail.com>
16440
16441         * mini.c (GET_CONTEXT): Correct the definition of this for sparc/linux.
16442
16443         * mini-sparc.h: Don't use sigaction on sparc/linux.
16444
16445         * exceptions-sparc.c: Call mono_arch_flush_icache () in a couple of places.
16446
16447         * mini-sparc.c (mono_sparc_flushw): Call mono_arch_flush_icache ().
16448
16449         * mini-exceptions.c: Add proper include files for getpid ().
16450
16451 2006-10-16  Zoltan Varga  <vargaz@gmail.com>
16452
16453         * aot-runtime.c (mono_aot_get_method): Change this to return the native code
16454         address instead of a MonoJitInfo* to avoid decoding the exception info for the
16455         method.
16456
16457         * aot-runtime.c aot-compiler.c: Use uint16 instead of uint32 entries in the
16458         name cache to reduce its size.
16459
16460         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
16461
16462 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
16463
16464         * mini-x86.c: Save/restore the current LMF structure more efficiently using
16465         the mono_lmf TLS variable.
16466
16467         * exceptions-x86.c (mono_arch_find_jit_info): Only access lmf->method in 
16468         trampoline lmf frames.  
16469
16470         * mini-sparc.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Define this on sparc as well.
16471
16472 2006-10-14  Zoltan Varga  <vargaz@gmail.com>
16473
16474         * mini-amd64.c: Save/restore the current LMF structure more efficiently using
16475         the mono_lmf TLS variable.
16476
16477         * mini-exceptions.c: Access the LMF structure through accessors.
16478
16479         * mini.c: Allow the backends the option for storing the lmf in a dedicated TLS 
16480         variable instead of in jit_tls->lmf.
16481
16482         * mini-x86.c mini-amd64.c: Update after lmf->lmf_addr name change.
16483         
16484         * exceptions-amd64.c (mono_arch_find_jit_info): Only access lmf->method in 
16485         trampoline lmf frames.
16486
16487         * mini-amd64.c (mono_arch_emit_prolog): Do not set lmf->method as it is not needed.
16488
16489 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
16490
16491        * mini.c trace.c mini-x86.c: Revert these too.
16492         
16493        * mini.c trace.c mini-x86.c: Remove warning workarounds after the mono_type_size ()
16494        signature change.
16495
16496 Tue Oct 10 11:35:20 CEST 2006 Paolo Molaro <lupus@ximian.com>
16497
16498         * genmdesc.c: removed now dead code.
16499
16500 2006-10-09  Robert Jordan <robertj@gmx.net>
16501
16502         * mini.c: Disable the CrashReporter on MacOS X; Fixes #74869
16503
16504 Mon Oct 9 17:06:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
16505
16506         * mini.h: do not leave gaps in the opcode values.
16507
16508 Mon Oct 9 16:08:51 CEST 2006 Paolo Molaro <lupus@ximian.com>
16509
16510         * jit-icalls.h: flag functions as internal here, too.
16511
16512 Mon Oct 9 15:58:18 CEST 2006 Paolo Molaro <lupus@ximian.com>
16513
16514         * mini.h, aliasing.h, declsec.h, regalloc.h, trace.h: mark internal
16515         functions with the internal attribute.
16516
16517 Mon Oct 9 15:52:45 CEST 2006 Paolo Molaro <lupus@ximian.com>
16518
16519         * aot-compiler.c: fclose the file descriptor in the profile read loop.
16520
16521 Fri Oct 6 16:01:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
16522
16523         * mini.c, jit-icalls.c, inssel-float.brg: beginnings of support
16524         for soft-float.
16525
16526 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
16527
16528         * mini-x86.c (emit_load_volatile_arguments): New function to handle arguments of
16529         tail calls as on other platforms.
16530
16531         * mini.c (mono_method_to_ir): Fix a few tailcall problems. Fixes #79557.
16532
16533         * iltests.il: Add a few tailcall tests.
16534
16535 Tue Oct 3 16:33:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
16536
16537         * driver.c: fix loop for old compilers (bug #79521).
16538
16539 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
16540
16541         * mini-exceptions.c (ves_icall_get_trace): Remove debug printf.
16542
16543         * aot-runtime.c (mono_aot_get_class_from_name): Avoid a memory allocation.
16544
16545         * aot-compiler.c: Add a new option 'metadata-only' to only emit the cached
16546         metadata without any code.
16547
16548         * mini-exceptions.c (mono_handle_native_sigsegv): Add some code to print out
16549         more precise debugging information using gdb.
16550
16551 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
16552
16553         * inssel-ia64.brg: Make the helper methods static.
16554
16555 Thu Sep 28 16:40:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
16556
16557         * inssel-x86.brg: make the helper methods static.
16558
16559 Thu Sep 28 16:31:32 CEST 2006 Paolo Molaro <lupus@ximian.com>
16560
16561         * inssel-amd64.brg, mini-amd64.c: small cleanup, use inst_call.
16562
16563 Thu Sep 28 15:36:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
16564
16565         * mini.c: updates for monoburg changes.
16566         * inssel.brg: make a few helper functions static as they should.
16567
16568 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
16569
16570         * Makefile.am: Move mini-codegen.c to common_sources.
16571
16572 Wed Sep 27 15:07:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
16573
16574         * mini.h: instroduce inst_call in MonoInst for use in OUTARG
16575         instructions.
16576         * Makefile.am, cpu-g4.md, inssel-ppc.brg, mini-codegen.c, mini-ppc.c,
16577         mini-ppc.h: port to use the common local register allocator.
16578
16579 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
16580
16581         * mini.h: Remove the comment too then.
16582
16583 Tue Sep 26 14:02:58 CEST 2006 Paolo Molaro <lupus@ximian.com>
16584
16585         * mini.h: put back backend.data which is to be used shortly and
16586         doesn't increase the size of MonoInst. If any 64 bit arch aligned
16587         pointers on 4 byte boundaries it'd have much bigger issues running
16588         and you can ifdef it out anyway.
16589
16590 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
16591
16592         * mini.h (MonoInst): Remove backend.data field since it is unused and increases
16593         MonoInst size by 4 bytes on 64 bit machines.
16594
16595 Tue Sep 26 11:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
16596
16597         * *.{c,h,brg}: long due removal of the unused field in MonoInst and
16598         replacement with more meaningful field names. Arch maintainers, please
16599         check the assigned names are good enough for your arch.
16600
16601 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
16602
16603         * cpu-ia64.md mini-ia64.c inssel-ia64.brg mini-ops.h: Get rid of the 
16604         OP_IA64_FETCHADD opcodes, use OP_ATOMIC_ADD_IMM_NEW opcodes instead.
16605
16606 Mon Sep 25 11:05:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
16607
16608         * mini.h, driver.c, optflags-def.h, Makefile.am: reduce runtime
16609         relocations and memory requirements, put the optimization flags
16610         definitions in their own file.
16611
16612 2006-09-24  Zoltan Varga  <vargaz@gmail.com>
16613
16614         * jit-icalls.c (mono_helper_stelem_ref): Remove this unused helper function.
16615
16616         * mini.c (mini_init): Remove reference to mono_helper_stelem_ref.
16617
16618 2006-09-22  Zoltan Varga  <vargaz@gmail.com>
16619
16620         * mini-amd64.c (add_valuetype): Fix an uninitialized memory issue.
16621
16622 Thu Sep 21 19:06:09 CEST 2006 Paolo Molaro <lupus@ximian.com>
16623
16624         * inssel.brg: use the correct function to get the size of an item
16625         in an array, given an element class.
16626         * aot-compiler.c: do not access class->class_size directly.
16627
16628 Thu Sep 21 12:10:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
16629
16630         * mini.h, debug-mini.c: added a debugging function to print
16631         info about local variables and arguments in a jitted method.
16632
16633 2006-09-20  Zoltan Varga  <vargaz@gmail.com>
16634
16635         * mini-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
16636
16637         * exceptions-ia64.c: Fix some problems reported by Bill Seurer <seurer@us.ibm.com>.
16638
16639 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
16640
16641         * mini-ia64.c (mono_arch_call_opcode): Avoid using the same loop index in the
16642         inner and outer loops when passing vtypes.
16643
16644 Tue Sep 19 17:53:40 CEST 2006 Paolo Molaro <lupus@ximian.com>
16645
16646         * mini-ppc.c: take into account the cpu errata for cache flushing
16647         which caused some random errors (bug #79381).
16648
16649 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
16650
16651         * mini-amd64.c (mono_arch_emit_exceptions): Emit the call to 
16652         mono_arch_throw_corlib_exception using emit_call () too. Fixes #79271.
16653
16654 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
16655
16656         * aot-runtime.c (load_aot_module): Return immeditely if the AOT module was already
16657         loaded.
16658
16659         * exceptions-amd64.c (gregs_from_ucontext): Apply another patch from the
16660         freebsd ports tree.
16661
16662         * mini-amd64.c (emit_call): Avoid near calls on freebsd.
16663         (mono_arch_patch_code): Remove the unused handling of MONO_PATCH_INFO_CLASS_INIT.
16664
16665         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix check for 32 bitness of
16666         displacement.
16667
16668 2006-09-13  Zoltan Varga  <vargaz@gmail.com>
16669
16670         * aot-runtime.c (load_aot_module_from_cache): Fix PPC build.
16671
16672 2006-09-12  Zoltan Varga  <vargaz@gmail.com>
16673
16674         * mini.c (UNVERIFIED): Add a 'break-on-unverified' MONO_DEBUG option so this 
16675         macro does not have to be changed during debugging.
16676
16677         * 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>.
16678
16679         * cpu-pentium.md: Rename this to cpu-x86.md for consistency with other platforms.
16680
16681         * Makefile.am mini-x86.c mini-codegen.c: Rename pentium_desc to x86_desc.
16682         
16683         * mini.c (mini_get_ldelema_ins): Allow ldelema2d optimization if 
16684         MONO_ARCH_NO_EMULATE_MUL is defined.
16685
16686         * mini-ia64.h (MONO_ARCH_CALLEE_FREGS): Reserve f33 for use by instructions.
16687
16688         * mini-ia64.h: Define MONO_ARCH_NO_EMULATE_MUL.
16689
16690         * mini-ia64.c: Implement CEE_MUL based on gcc emitted code.
16691
16692         * mini-ia64.c (mono_arch_lowering_pass): Optimize store_membase_imm with offset==0.
16693         
16694 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
16695
16696         * mini-x86.h mini-amd64.h mini-exceptions.c: Move the bsd specific MAP_ANON
16697         stuff to mini-exceptions.c where it is used.
16698
16699         * mini-sparc.c (mono_arch_setup_jit_tls_data): Remove the duplicate altstack
16700         setup code, the real one is in mini-exceptions.c.
16701
16702         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Move all dependencies on the
16703         layout of ucontext_t to helper functions in exceptions-amd64.c, as on x86. Add
16704         some changes from the freebsd ports tree.
16705
16706         * mini-amd64.h exceptions-amd64.c: Fix the amd64 build. Get rid of the SC_
16707         constants.
16708         
16709         * mini-amd64.h: Freebsd has MAP_ANON instead of MAP_ANONYMOUS.
16710
16711 Mon Sep 11 13:18:55 CEST 2006 Paolo Molaro <lupus@ximian.com>
16712
16713         * mini.c: on Linux, check for /proc to be mounted
16714         (bug# 79351, novell bug#201204).
16715
16716 Mon Sep 11 13:10:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
16717
16718         * mini.c: handle cases where pthread_attr_getstack() behaves
16719         incorrectly (bug #78096).
16720
16721 Mon Sep 11 11:31:10 BST 2006 Paolo Molaro <lupus@ximian.com>
16722
16723         * mini-arm.c: support larger stack frames (bug #79272).
16724
16725 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
16726
16727         * aot-runtime.c (mono_aot_get_class_from_name): Remove a debug printf.
16728
16729         * aot-compiler.c: Add a hash table to the AOT file mapping class names to typedef 
16730         tokens.
16731
16732         * aot-runtime.c (mono_aot_get_class_from_name): New function used by 
16733         mono_class_from_name () to find a class from its name.
16734
16735         * mini.c (mini_init): Register mono_aot_get_class_from_name () with the runtime.
16736
16737 2006-09-07  Zoltan Varga  <vargaz@gmail.com>
16738
16739         * mini-amd64.c (emit_call): Avoid strstr () call if possible.
16740
16741 2006-09-05  Kornel Pal  <kornelpal@gmail.com>
16742
16743         * Makefile.am: Renamed mono-1.dll to mono.dll. (-avoid-version)
16744
16745 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
16746
16747         * mini.c (mono_icall_get_wrapper): Fix a race condition on initializing
16748         callinfo->trampoline.
16749
16750         * mini-amd64.c (emit_call): Special case calls to the vararg array icalls. Hopefully
16751         fixes #79271.
16752         (mono_arch_patch_code): Add some debug code to help track down similar failures in the
16753         future.
16754
16755 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
16756
16757         * aot-runtime.c (mono_aot_plt_resolve): Add an assert.
16758
16759 2006-09-02  Zoltan Varga  <vargaz@gmail.com>
16760
16761         * tramp-x86.c (mono_arch_create_specific_trampoline): Don't increase
16762         stats.method_trampolines, it is already done by the generic trampoline code.
16763
16764         * tramp-amd64.c (mono_arch_create_specific_trampoline): Ditto.
16765         
16766 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
16767
16768         * mini.c: Remove some references to mono_compile_aot, and use cfg->compile_aot instead.
16769
16770         * aot-runtime.c: Add some tweaks to the MONO_AOT_CACHE functionality.
16771
16772         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix a FIXME.
16773
16774         * mini.c (print_jit_stats): Print mscorlib mempool size too.
16775         
16776         * mini.c (print_jit_stats): Print new stats.
16777
16778         * *-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
16779
16780 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
16781
16782         * mini.c (mini_get_ldelema_ins): Fix verifier error when calling
16783         Address on two dimensional arrays. Fixes #78729.
16784
16785         * mini.h (MonoCompile): Add a 'skip_visibility' field.
16786
16787         * mini.c (method_to_ir): Disable visibility checks if skip_visibility is set on
16788         a method.
16789
16790         * mini-amd64.c (mono_arch_emit_exceptions): Fix assertion introduced by the last change.
16791
16792         * mini.c (mono_runtime_cleanup_handlers): Clean up signal handlers on unix. Fixes
16793         #79130.
16794         
16795         * mini.c (handle_array_new): Applied patch from "briaeros007". Fix
16796         a race condition.
16797         (mini_get_ldelema_ins): Ditto.
16798
16799 2006-08-30  Zoltan Varga  <vargaz@gmail.com>
16800
16801         * mini-amd64.c (mono_arch_emit_exceptions): Align fp constants to 16 bytes.
16802         (mono_arch_output_basic_block): Avoid unaligned accesses in FNEG implementation. 
16803         Fixes #79213.
16804
16805 2006-08-29 Neale Ferguson <neale@sinenomine.net>
16806
16807         * mini-s390.c, mini-s390x.c: Fix VARARG case processing with 0 arguments. Add
16808         mono_arch_get_patch_offset as a dummy entry point to allow successful link. 
16809
16810         * exceptions-s390x.c: Cosmetic change.
16811
16812         * tramp-s390.c: Fix warning.
16813
16814         * cpu-s390.md: Correct length of mul_imm.
16815
16816 Wed Aug 23 19:24:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
16817
16818         * aot-compiler.c: added binary writer with ELF backend
16819         implementation (only on Linux/x86 for now).
16820
16821 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
16822
16823         * Makefile.am: Don't run net 2.0 AOT tests.
16824
16825         * aot-compiler.c (compile_method): Skip methods with tail calls as well.
16826         (mono_compile_assembly): Skip net 2.0 assemblies as well.
16827
16828         * aot-runtime.c (load_patch_info): Fix an uninitialized memory error.
16829
16830 Fri Aug 18 19:38:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
16831
16832         * aot-compiler.c: simplified and refactored the asm-writing code
16833         to allow different backends.
16834
16835 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
16836
16837         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
16838
16839         * aot-compiler.c aot-runtime.c: Reorg the GOT slot allocation code a 
16840         little. Share patches of type TYPE_FROM_HANDLE as well.
16841
16842         * mini.c (mono_patch_info_equal): New helper function.
16843         (mono_patch_info_hash): Ditto.
16844
16845         * aot-compiler.c (emit_method_code): Fix s390 build.
16846
16847         * mini.c (mono_allocate_stack_slots_full): Fix yet another place where byref
16848         is not handled because it is stored as a flag and not as a type ctor. Fixes
16849         #79016.
16850
16851 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
16852
16853         * aot-compiler.c: Fix computation of GOT slot statistics.
16854         
16855         * aot-compiler.c aot-runtime.c: Implement sharing of GOT slots for classes/fields.
16856         Also remove support for not PIC AOT.
16857
16858         * mini.h: Bump AOT file format version.
16859
16860         * objects.cs: Add a test for #78990.
16861
16862         * mini-x86.c (mono_arch_output_basic_block): Applied patch from Peter Dettman
16863         (peter.dettman@iinet.net.au). Fixes #79087.
16864
16865         * basic-long.cs: Add a test for the above.
16866
16867 2006-08-16  Zoltan Varga  <vargaz@gmail.com>
16868
16869         * aot-compiler.c (get_got_offset): Add a cache for GOT entries, not yet used.
16870         
16871         * aot-compiler.c (get_plt_index): Add a cache for wrappers too. Simplify the
16872         code somewhat.
16873
16874 2006-08-15  Zoltan Varga  <vargaz@gmail.com>
16875
16876         * mini.c (mini_init): Fix registration of idiv/imul opcodes which can throw
16877         exceptions.
16878
16879 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
16880
16881         * mini.c: Don't verify COM proxy invoke calls
16882         
16883
16884 2006-08-10  Dick Porter  <dick@ximian.com>
16885
16886         * wapihandles.c (mini_wapi_seminfo): More info, to help track down
16887         which process is holding semaphores locked.
16888
16889 2006-08-08  Zoltan Varga  <vargaz@gmail.com>
16890
16891         * mini-ia64.c mini-amd64.c: Fix #79027.
16892
16893         * mini-sparc.c (mono_arch_call_opcode): Fix the previous patch.
16894
16895         * mini-sparc.c (mono_arch_call_opcode): Fix #79027.
16896
16897         * mini-x86.c (mono_arch_call_opcode): Handle the case where there are no
16898         implicit arguments in a vararg call. Fixes #79027.
16899
16900 2006-08-07  Zoltan Varga  <vargaz@freemail.hu>
16901
16902         * mini.c (mono_get_element_address_signature): Use CDECL calling convention on windows. Fixes #78969.
16903         (mono_get_array_new_va_signature): Ditto.
16904
16905 2006-08-05  Zoltan Varga  <vargaz@gmail.com>
16906
16907         * aot-runtime.c: Call init_plt lazily.
16908
16909         * inssel-long.brg: Fix unsigned long->int conversion.
16910
16911         * aot-runtime.c (init_plt): Remove a redundant make_writable () call.
16912
16913         * aot-compiler.c aot-runtime.c: Reorganize the file structure in the amd64 case so
16914         that most data is now in the .rss/.data section.
16915
16916 2006-08-04  Zoltan Varga  <vargaz@gmail.com>
16917
16918         * aot-compiler.c: Correct the computation of the 'direct-calls' statistic.      
16919
16920         * aot-compiler.c: Print the number of methods without GOT slots as a statistics.
16921
16922         * aot-compiler.c aot-runtime.c tramp-amd64.c: Resurrect amd64 AOT support.
16923
16924         * tramp-amd64.c (mono_arch_patch_callsite): Fix a warning.
16925
16926         * jit-icalls.c (mono_helper_compile_generic_method): Unbox vtypes since this is a
16927         virtual call. Fixes #79010.
16928
16929         * mini.c (mono_method_to_ir): Pass an additional out arg to compile_generic_method 
16930         and use the result as the this argument in the real call.
16931
16932         * generics.2.cs: Add a new test for #79010.
16933         
16934 2006-08-03  Zoltan Varga  <vargaz@gmail.com>
16935
16936         * mini-x86.c: Fix a warning.
16937
16938         * aot-compiler.c: Add a bunch of statistics.
16939
16940         * mini.c (inline_method): Disable inlining in out-of-line bblocks.
16941
16942 2006-08-02  Zoltan Varga  <vargaz@gmail.com>
16943
16944         * mini-arch.h Makefile.am mini-ops.h mini-codegen.c: More alpha updates.
16945
16946 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
16947
16948         * 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>.
16949
16950 2006-07-13  Miguel de Icaza  <miguel@novell.com>
16951
16952         * mini.c (mono_method_to_ir): Obtain the original method in the
16953         CIL stream and use this to perform validation.
16954
16955         Fixed: #78816
16956
16957 2006-07-19  Zoltan Varga  <vargaz@gmail.com>
16958
16959         * mini-x86.c (mono_arch_get_argument_info): Fix a warning.
16960         (mono_arch_call_opcode): Ditto.
16961
16962         * mini.c (mono_method_to_ir): Clear ins_flag at the end of CEE_CALL. Fixes
16963         #78826.
16964
16965         * mini.c (mono_patch_info_dup_mp): New helper function.
16966         
16967         * aot-compiler.c (compile_method): Fix some of the memory allocated during
16968         compilation. Fixes #78827.
16969
16970 2006-07-18  Kornel Pal  <kornelpal@gmail.com>
16971
16972         * declsec.c: Use original security informations for
16973           MONO_WRAPPER_MANAGED_TO_MANAGED.
16974
16975 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
16976
16977         * mini.c: Allow Com Interop methods/classes and
16978         don't verify COM wrapper calls
16979         
16980
16981 2006-07-13  Zoltan Varga  <vargaz@gmail.com>
16982
16983         * inssel-long32.brg: Fix long->i4 checked conversion.
16984
16985         * exceptions.cs: Add a test for the above.
16986
16987 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
16988
16989         * mini-exceptions.c (mono_setup_altstack): Fix a memory leak.
16990
16991         * mini.c: Applied patch from Joachim Ante (joe@otee.dk). Fix some shutdown 
16992         leaks.
16993
16994         * helpers.c (mono_disassemble_code): Avoid using fixed temporary files. Fixes
16995         #78775.
16996
16997 2006-07-03  Zoltan Varga  <vargaz@gmail.com>
16998
16999         * mini.c: Fix solaris/x86 exception handling.
17000
17001         * Makefile.am: Get rid of $(ICU_LIBS).
17002
17003 2006-07-02  Zoltan Varga  <vargaz@gmail.com>
17004
17005         * mini-exceptions.c: Fix handling of unhandled SIGSEGV exceptions on ia64.
17006         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Use MONO_INIT_CONTEXT_FROM_CURRENT.
17007         (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): Ditto.
17008
17009         * mini-ia64.h (MONO_CONTEXT_SET_FUNC): New macro.
17010
17011         * mini-exceptions.c (mono_handle_native_sigsegv): Prevent infinite loops if
17012         this function causes a SIGSEGV.
17013
17014 2006-06-22  Zoltan Varga  <vargaz@gmail.com>
17015
17016         * mini.c: Remove unused solaris/x86 includes.
17017
17018 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
17019
17020         * jit.h: Add G_BEGIN_DECLS/G_END_DECLS.
17021
17022 2006-06-20  Jb Evain  <jbevain@gmail.com>
17023
17024         * cpu-g4.md: fix max length of start_handler instruction.
17025
17026 2006-06-20  Massimiliano Mantione  <massi@ximian.com>
17027         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78656.
17028
17029 2006-06-16  Massimiliano Mantione  <massi@ximian.com>
17030         * ssa.c: Fixed bug 78653 for SSA based deadce.
17031         * mini.h: added MONO_INST_DEFINITION_HAS_SIDE_EFFECTS flag go
17032         MonoInst.flags, used in SSA based deadce.
17033         * aliasing.c: Fixed bug 78653 for "fastpath" deadce.
17034         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78653.
17035
17036 Thu Jun 15 16:52:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
17037
17038         * tramp-ppc.c: don't use malloc () for trampoline code, sometimes
17039         it can end up using non executable memory on ppc64 systems
17040         running ppc32 userspace (fix from Johannes Berg).
17041
17042 2006-06-14  Dick Porter  <dick@ximian.com>
17043
17044         * wapihandles.c: Fix a bunch of signed/unsigned warnings from gcc
17045         4.1.1
17046
17047 2006-06-13  Massimiliano Mantione  <massi@ximian.com>
17048         * mini.c: Made so that inline is locally disabled if it would
17049         trigger a .cctor, because too many apps depend on this behavior
17050         (which seems to be also the one of the MS CLR).
17051
17052 2006-06-13  Zoltan Varga  <vargaz@gmail.com>
17053
17054         * mini-amd64.c (mono_emit_stack_alloc): Fix initialization of localloc'ed memory.
17055         No idea why this worked before.
17056
17057         * branch-opts.c (mono_branch_optimize_exception_target): Avoid branches
17058         which branch to outer exception clauses since they could skip the
17059         inner finally clauses. Fixes #78633.
17060
17061         * exceptions.cs: Add a test for the above.
17062
17063         * mini.c (merge_basic_blocks): Nullify the branch at the end of the first bb.
17064         Fixes #78629.
17065
17066         * iltests.il: Add a test for the above.
17067
17068 2006-06-12  Zoltan Varga  <vargaz@gmail.com>
17069
17070         * mini.c (remove_block_if_useless): Do not remove the bblock immediately
17071         after the end of a try bblock, to prevent asserts in mini_method_compile ().
17072
17073         * iltests.il: Add a test for the above.
17074
17075 2006-06-10  Zoltan Varga  <vargaz@gmail.com>
17076
17077         * mini-ia64.c (mono_arch_lowering_pass): Remove some code duplication.
17078         
17079         * mini-ia64.c inssel-ia64.brg: Implement the new net 2.0 Interlocked.Add
17080         methods as instrinsics.
17081
17082 2006-06-09  Wade Berrier <wberrier@novell.com>
17083
17084         * Makefile.am: Fix sources list for svn rename so that make dist succeeds
17085         (simple-cee-ops.h ssapre-mini-ops.h)
17086
17087 2006-06-09  Neale Ferguson <neale@sinenomine.net>
17088
17089         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on s390/s390x.
17090         * mini-s390x.c, mini-s390.c: Correct ATOMIC operations (incorrect register for CS
17091         instruction).
17092         * mini-s390x.h, mini-s390.h: Simplify MCONTEXT_GET_BP.
17093         * cpu-s390x.md: Fix max. length values for a couple of instructions.
17094
17095 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
17096
17097         * mini-exceptions.c: Minor fix for building mono in Visual Studio.
17098
17099 2006-06-08  Massimiliano Mantione  <massi@ximian.com>
17100
17101         * ssapre-cee-ops.h: Renamed as "simple-cee-ops.h"
17102         * simple-cee-ops.h: Was "ssapre-cee-ops.h" (renamed).
17103         * ssapre-mini-ops.h: Renamed as "simple-mini-ops.h"
17104         * simple-mini-ops.h: Was "ssapre-mini-ops.h" (renamed).
17105         * local-propagation.c: In mono_cprop_invalidate_values use a whitelist
17106         of opcodes, so that bug 78549 should not happen again.
17107         * ssapre.c: Updated to use the renamed files.
17108
17109 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
17110
17111         * mini-amd64.c (mono_arch_output_basic_block): Fix a wrong reg-reg move 
17112         in OP_ATOMIC_EXCHANGE_I4.
17113
17114 2006-06-07  Wade Berrier <wberrier@novell.com>
17115
17116         * tramp-s390.c: Fix s390 build (add missing pointer declarations 
17117         in mono_debugger_create_notification_function)
17118
17119 2006-06-06  Zoltan Varga  <vargaz@gmail.com>
17120
17121         * mini.c (NEW_AOTCONST_TOKEN): Fix amd64 build.
17122         
17123         * mini.c (type_from_stack_type): Disable some changes which do not
17124         seem to work.
17125
17126         * driver.c: Reenable opts.
17127
17128         * mini.h (MonoStackSlot): New structure to keep track of the verification state
17129         of the evaluation stack.
17130         
17131         * mini.h (MonoBasicBlock): Add a 'stack_state' field to keep track of the
17132         evaluation stack trace at entry to the bblock.
17133
17134         * mini.c (merge_stacks): New function to perform verification of stack merges.
17135         Turned off by default.
17136
17137         * mini.c: Fill up ins->klass for instructions whose type is STACK_OBJ or
17138         STACK_MP.
17139         
17140 2006-06-06  Massimiliano Mantione  <massi@ximian.com>
17141
17142         * local-propagation.c: Fixed bug 78549.
17143
17144 2006-06-04  Zoltan Varga  <vargaz@gmail.com>
17145
17146         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on ia64.
17147
17148 2006-06-02  Miguel de Icaza  <miguel@novell.com>
17149
17150         * tramp-sparc.c, tramp-ppc.c, tramp-s390.c, tramp-s390x.c,
17151         tramp-arm.c, tramp-ia64.c
17152         (mono_debugger_create_notification_function): Update signature to
17153         new signature and use new protocol for creating the notification
17154         function.  
17155
17156         Should fix the build.
17157
17158 2006-06-02  Geoff Norton  <gnorton@customerdna.com>
17159
17160         * exceptions-ppc.c (mono_jit_walk_stack)
17161         (ves_icall_get_frame_info): Fix the build
17162
17163 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
17164
17165         * mini.c (mono_set_defaults): Fix the handling of -O=-all.
17166
17167 2006-05-31  Raja R Harinath  <rharinath@novell.com>
17168
17169         * il2tests.2.il: New file for generics CIL tests.  Add test for
17170         #78019.
17171         * Makefile.am: Update.
17172
17173         Fix #78019
17174         * mini.c (mono_method_to_ir): Don't apply box+brtrue optimization
17175         to nullable types.
17176
17177 2006-05-30  Massimiliano Mantione  <massi@ximian.com>
17178
17179         * aliasing.c: Fixed bug 78311.
17180
17181 2006-05-29  Martin Baulig  <martin@ximian.com>
17182
17183         * mini-exceptions.c (mono_find_jit_info): When computing the
17184         native offset, check whether we're actually inside the method's
17185         code; call mono_debug_print_stack_frame() to format the frame.
17186         (ves_icall_System_Exception_get_trace): Call
17187         mono_debug_print_stack_frame() to format the stack frame.
17188         (ves_icall_get_trace): Update to the new debugging API.
17189         (mono_jit_walk_stack_from_ctx): Likewise.
17190         (ves_icall_get_frame_info): Likewise.
17191
17192         * mini.c (get_method_from_ip): Use the new debugging API.
17193         (mono_print_method_from_ip): Likewise.
17194
17195         * exceptions-ppc.c
17196         (mono_jit_walk_stack): Use the new debugging API.
17197         (ves_icall_get_frame_info): Likewise.   
17198
17199 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
17200
17201         * mini-amd64.c (mono_arch_output_basic_block): Fix MONO_PROFILE_COVERAGE.
17202
17203 2006-05-25  Massimiliano Mantione  <massi@ximian.com>
17204
17205         * mini.c: Added "limitator" to inline for debugging.
17206
17207 2006-05-24  Martin Baulig  <martin@ximian.com>
17208
17209         * debug-debugger.c (mono_debugger_init): Create a private,
17210         malloc()-based code manager for the notification function and
17211         intentionally leak it on exit.  This fixes the crash-on-exit race
17212         condition.
17213
17214         * tramp-amd64.c
17215         (mono_debugger_create_notification_function): Added
17216         `MonoCodeManager *' argument.
17217
17218         * tramp-x86.c
17219         (mono_debugger_create_notification_function): Added
17220         `MonoCodeManager *' argument.
17221
17222 2006-05-23  Massimiliano Mantione  <massi@ximian.com>
17223
17224         * aliasing.c: Fixed 64 bit issue.
17225         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
17226         default since all known bugs are fixed (one more time!).
17227
17228 Tue May 23 13:47:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
17229
17230         * mini.c: write barrier support.
17231
17232 2006-05-23  Martin Baulig  <martin@ximian.com>
17233
17234         * debug-debugger.c: Revert Paolo's change.  Add comment and #error
17235         check at the top of the file.
17236
17237 Sun May 21 12:22:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
17238
17239         * debug-debugger.c: fix the build. Again. Hopefully Martin will stop
17240         reverting changes without reason and without changelog entries.
17241
17242 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
17243
17244         * mini-sparc.c (mono_arch_output_basic_block): Add support for large stack offets
17245         to a few opcodes. Fixes #78439.
17246
17247         * mini-sparc.c: Rename mono_sparch_break () to mono_arch_break () to improve
17248         consistency with other archs.
17249
17250         * mini-ia64.c (mono_arch_emit_prolog): Remove debug stuff left in by mistake.
17251
17252 Wed May 17 18:07:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
17253
17254         * debug-debugger.c: fix the build.
17255
17256 2006-05-17  Martin Baulig  <martin@ximian.com>
17257
17258         * debug-debugger.c
17259         (debugger_thread_vtable): Moved here from ../metadata/threads.c.
17260         (debugger_init_threads): Formerly known as mono_debugger_init_threads().
17261         (debugger_finalize_threads): Formaly known as mono_debugger_finalize_threads().
17262         (debugger_attach): Call GC_mono_debugger_add_all_threads().
17263
17264 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
17265
17266         * mini.c (mini_init): Call pthread_attr_destroy () to fix a small memory leak.
17267
17268 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
17269
17270         * mini-x86.c (mono_arch_instrument_epilog): Fix handling of 
17271         MONO_TYPE_GENERICINST.
17272         
17273         * mini-amd64.c (mono_arch_instrument_epilog): Fix handling of 
17274         MONO_TYPE_GENERICINST.
17275
17276 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
17277
17278         * mini-x86.c (mono_arch_get_vcall_slot_addr): Add a missing call sequence. Fixes
17279         #78325.
17280
17281 2006-05-08  Zoltan Varga  <vargaz@gmail.com>
17282
17283         * mini.c (mono_create_jump_trampoline): Allocate MonoJitInfo from the domain
17284         mempool.
17285         (mono_jit_free_method): Remove the method from jump_trampoline_hash as well.
17286
17287 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
17288
17289         * mini.c (mini_cleanup): Applied patch from Joachim Ante (joe@otee.dk). Call
17290         mono_trace_cleanup ().
17291
17292         * iltests.il: Fix problem with the newly added test.
17293
17294         * mini-codegen.c (mono_local_regalloc): When changing the dreg of an instruction
17295         due to register constraints, free up the previous hreg. Fixes #78314.
17296
17297         * iltests.il: Add new test for #78314.  
17298
17299         * mini-x86.c (mono_arch_get_inst_for_method): Use OP_ATOMIC_ADD_NEW_I4 for
17300         Interlocked.Add. Fixes #78312.
17301
17302         * mini-amd64.c (mono_arch_get_inst_for_method): Ditto.
17303         
17304 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
17305
17306         * inssel.brg (mini_emit_virtual_call): Fix a warning.
17307
17308 2006-05-05  Martin Baulig  <martin@ximian.com>
17309
17310         * debug-mini.c (mono_debug_open_block): New method.
17311
17312         * mini-amd64.c
17313         (mono_arch_output_basic_block): Call mono_debug_open_block() at
17314         the beginning of each basic block.
17315
17316         * mini-x86.c
17317         (mono_arch_output_basic_block): Call mono_debug_open_block() at
17318         the beginning of each basic block.
17319
17320 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
17321
17322         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
17323         default until I understand why they break the build on amd64.
17324
17325 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
17326
17327         * mini.c (mini_cleanup): Call mono_cleanup ().
17328
17329         * mini.c (UNVERIFIED): New macro to make it easier to track down verification
17330         errors.
17331
17332 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
17333
17334         * aliasing.c: Fixed shameful cut&paste error that caused JIT crashes.
17335         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
17336         default since all known bugs are fixed, and I cannot reproduce bug
17337         77944... I'm asking Matt Hargett to test again after this commit.
17338
17339 2006-04-28  Massimiliano Mantione  <massi@ximian.com>
17340
17341         * mini-codegen.c: Fixed typo that thrashed inline.
17342
17343 2006-04-28  Zoltan Varga  <vargaz@gmail.com>
17344
17345         * dominators.c (compute_dominators): Avoid using a worklist since
17346         it is not correct in some cases. Instead, iterate over all bblocks as
17347         in the original paper. Fixes --compile-all -O=all System.Xml.dll.
17348
17349 2006-04-28  Miguel de Icaza  <miguel@novell.com>
17350
17351         * mini.c (mono_jit_compile_method_inner): Use
17352         mono_prepare_exception_from_error that resets the value
17353         internally.
17354
17355 2006-04-27  Miguel de Icaza  <miguel@novell.com>
17356
17357         * mini.c: Move the mini_loader_error_to_exception to metadata. 
17358         
17359 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
17360
17361         * aliasing.c: Fixed bug 78210.
17362
17363 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
17364
17365         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
17366         default until all their problems (or the ones they trigger) are fixed.
17367
17368 2006-04-26  Zoltan Varga  <vargaz@gmail.com>
17369
17370         * aot-runtime.c (mono_aot_get_method_from_token_inner): Fix the previous patch.
17371         
17372         * aot-runtime.c (mono_aot_get_method_from_token_inner): Mark the method
17373         as loaded only after resolving patches since that could invoke the same method.
17374
17375         * aot-runtime.c (mono_aot_plt_resolve): Fix ppc etc. builds.
17376
17377         * aot-compiler.c: Refactor mono_aot_compile_aot () into a bunch of smaller
17378         functions.
17379
17380         * aot-runtime.c (init_plt): Use a normal trampoline to transfer code to the
17381         AOT loader.
17382
17383         * aot-compiler.c (emit_plt): Pass the plt offset in %eax instead of on the
17384         stack.
17385
17386         * mini-trampolines.c (mono_aot_plt_trampoline): New trampoline to handle calls
17387         made from AOT code through the PLT table.
17388
17389         * mini-x86.h mini-amd64.h: Define MONO_ARCH_AOT_PLT_OFFSET_REG to the register
17390         holding the plt offset when a call is made to the aot plt trampoline.
17391         
17392 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
17393
17394         * aot-runtime.c aot-compiler.c cpu-amd64.md mini-amd64.c: Update parts of the 
17395         amd64 AOT support.
17396
17397         * Makefile.am (common_sources): Fix build breakage.
17398
17399         * aot-runtime.c aot-compiler.c: Reorganize the AOT code yet again: Make all
17400         calls through a jump table similar to the ELF PLT table. Avoid indirect calls for
17401         intra-assembly calls if possible.
17402         
17403         * tramp-*.c: Add new functions for patching/nullifying PLT entries.
17404
17405         * mini-trampolines.c: Handle PLT entries.
17406
17407         * mini.c: Avoid creating a GOT var for calls.
17408
17409         * jit-icalls.c (helper_ldstr_mscorlib): New helper function for loading strings
17410         from mscorlib code.
17411
17412         * jit-icalls.c (helper_newobj_mscorlib): New helper function to create objects
17413         from mscorlib code.
17414
17415         * mini.c (mono_method_to_ir): Use the new helper functions in throw bblocks in
17416         AOT code.       
17417
17418         * mini.h: Bump AOT file format version.
17419         
17420         * mini.c (get_basic_blocks): Fix the calculation of bb->out_of_line so it
17421         covers more cases.
17422
17423 2006-04-25  Martin Baulig  <martin@ximian.com>
17424
17425         * driver.c: Disable copyprop, consprop and inline when running
17426         inside the debugger.
17427
17428 2006-04-25  Martin Baulig  <martin@ximian.com>
17429
17430         * debug-debugger.h (MonoDebuggerInfo): Replaced `get_thread_id'
17431         with `get_current_thread' and added `detach'.
17432         (MonoDebuggerMetadataInfo): Added `thread_size',
17433         `thread_tid_offset', `thread_stack_ptr_offset' and
17434         `thread_end_stack_offset'.
17435
17436 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
17437
17438         * aot.c Makefile.am: Split aot.c into two new files aot-compiler.c and 
17439         aot-runtime.c.
17440
17441         * inssel.brg (mini_emit_load_intf_reg_vtable): Use a new kind of AOT constant
17442         ADJUSTED_IID to avoid the need for adjusting the IID at runtime.
17443
17444         * mini.h (MonoJumpInfoType): Add MONO_PATCH_INFO_ADJUSTED_IID.
17445
17446         * mini.c (mono_resolve_patch_target): Handle ADJUSTED_IID.
17447
17448         * aot.c: Add support for ADJUSTED_IID.  
17449
17450 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
17451
17452         * aot.c (emit_method_order): Don't align method_order_end.
17453
17454         * inssel.brg (stmt): Fix interface calls in AOT code which got broken by
17455         the interface ID changes.
17456
17457 2006-04-21  Dick Porter  <dick@ximian.com>
17458
17459         * mini.c (mini_thread_cleanup): Clear the JIT TLS data when
17460         cleaning up a thread.  Fixes the new part of bug 77470.
17461
17462 2006-04-20  Geoff Norton  <gnorton@customerdna.com>
17463
17464         * mini-ppc.c: Call mono_jit_thread_attach when transitioning a native
17465         to managed wrapper.
17466                      
17467 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
17468
17469         * mini.h mini.c: Remove mono_type_to_ldind/stind () which are now in marshal.c.
17470         
17471         * mini.c (mono_runtime_install_handlers): Handle SIGABRT similarly to
17472         SIGSEGV. Fixes #78072.
17473
17474         * mini-exceptions.c (mono_handle_native_sigsegv): Add a 'signal' argument,
17475         unregister our SIGABRT handler.
17476
17477 2006-04-19  Massimiliano Mantione  <massi@ximian.com>
17478
17479         * mini.c: Disabled inline where it can alter the call stack in a
17480         way visible from managed code.
17481         * driver.c: enabled inline,consprop,copyprop,treeprop,deadce by
17482         default.
17483
17484 2006-04-16  Zoltan Varga  <vargaz@gmail.com>
17485
17486         * mini-amd64.c (mono_arch_emit_prolog): Attach the thread to the runtime as it is done
17487         on other platforms. Fixes #78089.
17488
17489 2006-04-13  Martin Baulig  <martin@ximian.com>
17490
17491         * driver.c: Also check a `MONO_INSIDE_MDB' environment variable to
17492         determine whether we're inside the debugger.
17493
17494         * debug-debugger.h
17495         (MonoDebuggerMetadataInfo): Added all offsets from `MonoDefaults'.
17496
17497 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
17498
17499         * mini.c (mono_method_to_ir): Handle multiple LEAVE statements inside a single
17500         handler clauses. Fixes #78024.
17501
17502         * mini-sparc.c (mono_arch_output_basic_block): Handle large offsets
17503         in the CALL_MEMBASE opcodes. Fixes #78088.
17504         (mono_arch_get_vcall_slot_addr): Ditto.
17505
17506 2006-04-10  Martin Baulig  <martin@ximian.com>
17507
17508         * debug-debugger.c: The thread handling code has now been moved
17509         into ../metadata/threads.c.
17510
17511 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
17512
17513         * driver.c (mono_main): Fix --with-gc=none build.
17514
17515         * mini-codegen.c (mono_spillvar_offset): Improve alignment.
17516         (mono_spillvar_offset_float): Ditto.
17517         (mono_local_regalloc): Only do the OP_MOVE optimization if ins->dreg is a local
17518         hreg, not when its !global, since on ia64, there is a third category: stacked
17519         registers.      
17520
17521 Mon Apr 10 14:39:49 CEST 2006 Paolo Molaro <lupus@ximian.com>
17522
17523         * mini.c: set MonoInst->klass for load field address and a few other
17524         places.
17525
17526 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
17527
17528         * helpers.c (mono_disassemble_code): Emit debug info on amd64 as well.
17529
17530 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
17531
17532         * dominators.c (compute_dominators): Fix yet another bug which surfaced after
17533         the branch opt changes.
17534
17535 2006-04-06  Dick Porter  <dick@ximian.com>
17536
17537         * wapihandles.c (mini_wapi_semdel): Fix parameters in semctl () call.
17538         
17539         * wapihandles.c (mini_wapi_seminfo): 
17540         * driver.c (mono_main): Add semaphore info option
17541
17542 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
17543
17544         * dominators.c (compute_dominators): Fix a bug which surfaced after the recent
17545         branch optimization changes. Fixes #78009.
17546
17547 Wed Apr 5 16:40:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
17548
17549         * mini.c: ignore accessibility of methods in managed->native wrappers.
17550
17551 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
17552
17553         * mini.c (mini_cleanup): Call print_jit_stats () earlier since it accesses metadata.
17554         
17555         * mini.c (mini_cleanup): Free 'emul_opcode_map' as well.
17556
17557 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
17558
17559         * mini.c: Modify the branch optimizations to preserve the invariant that
17560         the entries inside the in_bb and out_bb arrays are unique.
17561         (mono_unlink_bblock): Avoid creation of new arrays.
17562
17563 2006-04-02  Zoltan Varga  <vargaz@gmail.com>
17564
17565         * mini.c (mono_unlink_bblock): Fix regression caused by previous
17566         change (#77992).
17567
17568 2006-04-01  Zoltan Varga  <vargaz@gmail.com>
17569
17570         * mini.c (optimize_branches): Remove the "optimizations" in
17571         the cbranch1/cbranch2 -> branch cases which were causing several
17572         problems in the past. Fixes #77986.
17573
17574 2006-03-31  Chris Toshok  <toshok@ximian.com>
17575
17576         * driver.c (DEFAULT_OPTIMIZATIONS): back out the new set of
17577         default optimizations :(
17578
17579 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
17580
17581         * inssel-x86.brg mini-codegen.c mini.c: Merge some changes/fixes from linear-il
17582         branch.
17583
17584 2006-03-31  Massimiliano Mantione  <massi@ximian.com>
17585
17586         * local-propagation.c: Added comments to structs and removed
17587         "Mono" prefixes from local tree mover types.
17588
17589 2006-03-30  Zoltan Varga  <vargaz@gmail.com>
17590
17591         * Makefile.am (arch_sources): Define this for each architecture so 
17592         libmono_la_SOURCES is defined in one place.
17593
17594 Wed Mar 29 20:51:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
17595
17596         * driver.c, wapihandles.c, Makefile.am: integrate the io-layer utils
17597         from handles/.
17598
17599 Wed Mar 29 17:16:57 CEST 2006 Paolo Molaro <lupus@ximian.com>
17600
17601         * driver.c: print the GC name supplied by configure.
17602
17603 2006-03-29  Massimiliano Mantione  <massi@ximian.com>
17604
17605         * local-propagation.c: Added tree mover, and moved here all the
17606         local propagation code from mini.c
17607         * mini.c: Added support for treeprop, and moved all the local
17608         propagation code to local-propagation.c
17609         * mini.h: Added support for treeprop
17610         * driver.c: Added support for treeprop, enabled consprop, copyprop,
17611         treeprop, inline and deadce by default
17612         * Makefile.am: Added local-propagation.c
17613
17614 2006-03-25  Zoltan Varga  <vargaz@gmail.com>
17615
17616         * exceptions-sparc.c: Applied patch from David S. Miller  <davem@sunset.davemloft.net>: Implement correct support for sparc/linux.
17617
17618 Fri Mar 24 20:07:19 CET 2006 Paolo Molaro <lupus@ximian.com>
17619
17620         * debug-debugger.c: make it compile without the Boehm GC.
17621
17622 Wed Mar 22 18:25:18 CET 2006 Paolo Molaro <lupus@ximian.com>
17623
17624         * mini.c: fixed issue with mismatch when an icall is registered
17625         with multiple names but same address.
17626
17627 Tue Mar 21 15:59:57 CET 2006 Paolo Molaro <lupus@ximian.com>
17628
17629         * declsec.c, mini-exceptions.c: use write barrier to set reference
17630         fields of managed objects.
17631
17632 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
17633
17634         * mini.c (mono_print_method_from_ip): Recognize JIT trampolines as well.
17635         (can_access_internals): Fix a warning.
17636
17637         * mini.c (print_method_from_ip): Rename this to 
17638         mono_print_method_from_ip so it gets exported.
17639
17640         * trace.c: Deal with strings inside StringBuilder's containing garbage
17641         and fix memory leaks. Fixes #77848.
17642
17643 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
17644
17645         * mini.c (mini_init): Disable the setting of GC_stackbottom on ia64. Hopefully
17646         fixes #77787.
17647
17648 2006-03-16 Neale Ferguson <neale@sinenomine.net>
17649         
17650         * mini-s390.c: Remove OP_X86_TEST_NULL.
17651
17652 Thu Mar 16 17:19:04 CET 2006 Paolo Molaro <lupus@ximian.com>
17653
17654         * mini.c: use the correct GetHashCode() for the moving collector.
17655
17656 2006-03-16  Massimiliano Mantione  <massi@ximian.com>
17657
17658         * liveness.c: Regalloc spill cost tuning.
17659
17660 2006-03-15 Neale Ferguson <neale@sinenomine.net>
17661         
17662         * mini-s390x.h: Correct S390_LONG macro.
17663
17664         * mini-s390x.c: Cleanup unused code.
17665
17666 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
17667
17668         * jit-icalls.h: New file.
17669
17670         * Makefile.am mini.c jit-icalls.c: Use a proper include file for the jit
17671         icalls and include that instead of including jit-icalls.c.
17672
17673         * mini-ppc.c (mono_arch_output_basic_block): Remove references to
17674         OP_X86 opcodes.
17675
17676 Tue Mar 14 20:23:53 CET 2006 Paolo Molaro <lupus@ximian.com>
17677
17678         * mini.c: when checking for member accessibility, also check for
17679         friend assemblies and for explicit interface implementations.
17680
17681 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
17682
17683         * mini-codegen.c (mono_local_regalloc): Remove incorrect g_free () calls.
17684
17685         * cpu-arm.md cpu-g4.md: Remove x86_ opcodes.
17686
17687         * mini-x86.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
17688         common cases are done first.    
17689
17690         * mini-ops.h: Only define platform specific opcodes on the given platform.
17691
17692         * mini.h regalloc.h mini-codegen.c: Merge optimizations from the linear-il
17693         branch.
17694         
17695 2006-03-14  Martin Baulig  <martin@ximian.com>
17696
17697         Revert Paolo's change from r57348:
17698
17699         * mini.h: don't use gboolean for bitfields.
17700         * mini.c: verifier changes for fields and methods accessibility.
17701
17702 2006-03-13  Neale Ferguson <neale@sinenomine.net>
17703
17704         * mini-s390.h, mini-s390x.h: Fix calls to mono_call_inst_add_outarg_reg.
17705
17706         * mini-s390x.c: Fix conv_r_un.
17707
17708         * cpu-s390, cpu-s390x.md: Fix lengths.
17709
17710 Sun Mar 12 17:31:22 CET 2006 Paolo Molaro <lupus@ximian.com>
17711
17712         * mini.c: nested types have access to all the nesting
17713         levels, not just the enclosing types.
17714
17715 Sun Mar 12 16:23:11 CET 2006 Paolo Molaro <lupus@ximian.com>
17716
17717         * mini.c: added a few more verification checks.
17718
17719 2006-03-12  Zoltan Varga  <vargaz@gmail.com>
17720
17721         * liveness.c: Merge optimizations from the linear-il branch.
17722
17723 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
17724
17725         * mini-ia64.c (emit_call): Add a comment.
17726
17727         * tramp-ia64.c (mono_arch_patch_callsite): Handle indirect calls as well.
17728
17729         * tramp-ia64.c: Fix some warnings.
17730
17731 Sat Mar 11 20:15:59 CET 2006 Paolo Molaro <lupus@ximian.com>
17732
17733         * mini.h: don't use gboolean for bitfields.
17734         * mini.c: verifier changes for fields and methods accessibility.
17735
17736 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
17737
17738         * mini.c (mono_icall_get_wrapper): Fix an ia64 bug introduced by the
17739         lazy icall wrapper changes.
17740
17741         * dominators.c: Replace all the dominator algorithms with faster
17742         ones from the linear-il branch.
17743
17744         * inssel-*.brg: Allocate call->out_ireg_args and call->out_freg_args from
17745         the mempool.
17746
17747         * mini-amd64.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
17748         common cases are done first.
17749
17750         * mini-amd64.c: Fix some warnings.
17751
17752         * mini-codegen.c mini-*.c: Allocate call->out_ireg_args and call->out_freg_args
17753         from the mempool.
17754
17755         * mini.c (mono_jit_compile_method_with_opt): Fix a race in the newly
17756         added code.
17757
17758         * mini.h: Add a missing prototype.
17759
17760 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
17761
17762         * mini.c: Compile icall wrappers lazily.
17763
17764         * mini-codegen.c: Use printf instead of g_print since its much faster.
17765
17766         * mini.h (mono_bitset_foreach_bit): Use the faster mono_bitset_find_start ()
17767         function.
17768
17769         * mini.c (optimize_branches): Cache the negative result from 
17770         remove_block_if_useless ().
17771
17772         * mini.c (optimize_branches): Avoid restarting the iteration after each change. 
17773         Also fix some bblock linking issues.
17774
17775         * helpers.c (mono_disassemble_code): Reduce the size of the temporary
17776         assembly files.
17777
17778         * mini.h: Define G_LIKELY/G_UNLIKELY macros for older glib versions.
17779
17780         * mini.h (MonoBasicBlock): Reorganize the fields, putting more frequently
17781         accessed fields first, for better cache behavior.
17782         
17783 Fri Mar 10 18:21:41 CET 2006 Paolo Molaro <lupus@ximian.com>
17784
17785         * mini.c: speedup IList<T> array accesses.
17786
17787 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
17788
17789         * mini.c (mono_method_to_ir): Handle large methods overflowing the 
17790         inline_costs counter. Fixes #77190.
17791
17792 2006-03-06  Zoltan Varga  <vargaz@gmail.com>
17793
17794         * mini-exceptions.c: Call mono_trace_is_enabled () before printing
17795         trace messages. Fixes #77706.
17796
17797 2006-03-04  Martin Baulig  <martin@ximian.com>
17798
17799         * tramp-amd64.c, tramp-x86.c
17800         (mono_debugger_create_notification_function): Use
17801         mono_global_codeman_reserve() to allocate a buffer at runtime and
17802         return it.
17803
17804         * debug-debugger.h (MonoDebuggerInfo): Added `initialize'.
17805
17806         * debug-debugger.c (mono_debugger_init): Dynamically allocate the
17807         notification function at runtime and then call `initialize' in the
17808         `MONO_DEBUGGER__debugger_info' vtable.
17809
17810 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
17811
17812         * iltests.il: Fix a visibility problem.
17813
17814 Wed Mar 1 15:55:25 CET 2006 Paolo Molaro <lupus@ximian.com>
17815
17816         * driver.c, mini.c: add hooks for the counters API.
17817
17818 Wed Mar 1 12:28:04 CET 2006 Paolo Molaro <lupus@ximian.com>
17819
17820         * driver.c: show disabled options.
17821
17822 Wed Mar 1 12:18:51 CET 2006 Paolo Molaro <lupus@ximian.com>
17823
17824         * linear-scan.c: always use cost-driven selection.
17825
17826 2006-02-28  Raja R Harinath  <rharinath@novell.com>
17827
17828         * jit-icalls.c (helper_compile_generic_method): Revert change from
17829         2006-02-24.
17830
17831 Mon Feb 27 18:58:19 GMT 2006 Paolo Molaro <lupus@ximian.com>
17832
17833         * cpu-arm.md, mini-arm.c: implemented MemoryBarrier.
17834
17835 Sat Feb 25 17:39:21 CET 2006 Paolo Molaro <lupus@ximian.com>
17836
17837         * inssel.brg: style fixes, mostly to force the updated monoburg
17838         to run for people using svn.
17839
17840 Sat Feb 25 17:07:42 CET 2006 Paolo Molaro <lupus@ximian.com>
17841
17842         * mini.c: match monoburg changes.
17843
17844 Sat Feb 25 16:04:33 CET 2006 Paolo Molaro <lupus@ximian.com>
17845
17846         * mini.h, mini.c, abcremoval.c, aliasing.c, liveness.c,
17847         ssapre.c, graph.c, ssa.c: put the mono_burg_arity[]
17848         declaration in the header file.
17849
17850 Sat Feb 25 14:19:31 CET 2006 Paolo Molaro <lupus@ximian.com>
17851
17852         * helpers.c: reduce relocations and mem usage.
17853
17854 Sat Feb 25 11:58:16 CET 2006 Paolo Molaro <lupus@ximian.com>
17855
17856         * mini.h, mini-codegen.c: disable logging features if
17857         requested by configure.
17858
17859 Sat Feb 25 11:54:49 CET 2006 Paolo Molaro <lupus@ximian.com>
17860
17861         * mini.c: tiny verifier changes.
17862
17863 Fri Feb 24 18:17:52 CET 2006 Paolo Molaro <lupus@ximian.com>
17864
17865         * mini-ops.h, inssel-x86.brg, tramp-x86.c, mini-x86.c,
17866         cpu-pentium.md: stack alignment changes for osx/x86,
17867         partially from Geoff Norton <gnorton@customerdna.com>.
17868
17869 2006-02-24  Raja R Harinath  <harinath@gmail.com>
17870
17871         * jit-icalls.c (helper_compile_generic_method): Update to changes
17872         in metadata/class.c.
17873
17874 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
17875         
17876         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a missing check.
17877         
17878         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for
17879         interface calls with large offsets.
17880
17881 2006-02-23  Raja R Harinath  <rharinath@novell.com>
17882
17883         * jit-icalls.c (helper_compile_generic_method): Document the
17884         special-case we depend on so that we can inflate the method twice
17885         with the same context with no bad side-effects.
17886
17887 Thu Feb 23 13:45:46 CET 2006 Paolo Molaro <lupus@ximian.com>
17888
17889         * mini-x86.c, mini-amd64.c: fix for case when xen support
17890         is disabled.
17891
17892 Wed Feb 22 19:38:40 CET 2006 Paolo Molaro <lupus@ximian.com>
17893
17894         * mini-x86.c, mini-amd64.c: generate code to access tls items
17895         in a faster way for Xen systems.
17896
17897 Wed Feb 22 10:31:25 CET 2006 Paolo Molaro <lupus@ximian.com>
17898
17899         * exceptions-x86.c, mini-x86.h, driver.c, mini-codegen.c:
17900         updates and compilation fixes for the OSX/x86 port, mostly from
17901         Geoff Norton <gnorton@customerdna.com>.
17902
17903 Tue Feb 21 19:56:55 CET 2006 Paolo Molaro <lupus@ximian.com>
17904
17905         * inssel.brg: faster interface call implementation
17906         to sync with the interface_offsets MonoVTable changes.
17907
17908 Mon Feb 20 10:37:57 CET 2006 Paolo Molaro <lupus@ximian.com>
17909
17910         * mini.c: more verification checks.
17911
17912 Fri Feb 17 19:47:29 CET 2006 Paolo Molaro <lupus@ximian.com>
17913
17914         * mini.c: added a few more verification checks.
17915
17916 2006-02-17      Neale Ferguson <neale@sinenomine.net>
17917
17918         * mini-s390x.c, mini-s390x.h: Check for presence of long displacement
17919         facility on the processor and use it if available.
17920
17921 Fri Feb 17 16:12:52 CET 2006 Paolo Molaro <lupus@ximian.com>
17922
17923         * driver.c, aot.c, mini.c: throw exception if the IL code is
17924         invalid or unverifiable.
17925
17926 2006-02-17  Raja R Harinath  <rharinath@novell.com>
17927
17928         * generics.2.cs (test_0_ldfld_stfld_mro): Use m.struct_field, not
17929         m.StructField.
17930
17931 2006-02-16  Zoltan Varga  <vargaz@gmail.com>
17932
17933         * generics.2.cs: Add some tests for generics ldfld/stfld wrappers.
17934
17935 Wed Feb 15 16:23:17 CET 2006 Paolo Molaro <lupus@ximian.com>
17936
17937         * mini-s390x.c, mini-s390.c, mini.c, mini-amd64.c, mini-arm.c,
17938         mini-ia64.c, mini-sparc.c, mini-x86.c, mini-ppc.c: fixed
17939         handling of instantiated generic valuetypes.
17940
17941 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
17942
17943         * mini-exceptions.c mini-x86.h mini-x86.c: Get rid of 
17944         MONO_INIT_CONTEXT_FROM_CALLER, and use MONO_INIT_CONTEXT_FROM_FUNC
17945         instead.
17946
17947         * generics.2.cs: Revert the nullable reftypes tests.
17948
17949 2006-02-10  Zoltan Varga  <vargaz@gmail.com>
17950
17951         * mini-exceptions.c (MONO_INIT_CONTEXT_FROM_CALLER): Avoid
17952         using __builtin_frame_address (1) as it doesn't work in the presence
17953         of optimizations. Hopefully fixes #77273.
17954
17955         * Makefile.am generics.cs generics.2.cs: Revert the generics.2.cs
17956         -> generics.cs change as it doesn't work with some automake versions.
17957
17958 Thu Feb 9 16:24:44 CET 2006 Paolo Molaro <lupus@ximian.com>
17959
17960         * mini.c: handle systems that sue a different way to
17961         retrieve the stack address of the current thread.
17962
17963 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
17964
17965         * Makefile.am generics.2.cs: Rename this to generics.cs and handle
17966         it specially in the makefile.
17967
17968         * generics.2.cs: Add tests for nullable reference types.
17969
17970 Wed Feb 8 19:33:17 CET 2006 Paolo Molaro <lupus@ximian.com>
17971
17972         * mini.c: always handle the case when mono_jit_init()
17973         is called in a thread different from the main thread,
17974         confusing libgc (bug #77309).
17975
17976 Mon Feb 6 09:01:24 EST 2006 Paolo Molaro <lupus@ximian.com>
17977
17978         * mini-ppc.c: fix handling of exceptions in large methods (bug #74932).
17979
17980 Fri Feb 3 18:51:35 CET 2006 Paolo Molaro <lupus@ximian.com>
17981
17982         * mini.c: change optimize_branches () to use a single loop
17983         and introduce a new optimization to simplify some range checks.
17984
17985 2006-02-03  Martin Baulig  <martin@ximian.com>
17986
17987         * debug-debugger.c (debugger_thread_manager_thread_created): Removed
17988         and merged with debugger_thread_manager_add_thread().
17989         (mono_debugger_main): Call debugger_thread_manager_add_thread() to
17990         inform the debugger about the main thread.
17991
17992 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
17993
17994         * basic.cs: Add test for div.un/rem.un constant folding.
17995
17996 2006-02-03  Neale Ferguson <neale@sinenomine.net>
17997
17998         * cpu-s390x.md: correct int_xor_imm length
17999
18000 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
18001
18002         * generics.2.cs: New test for #77442.
18003
18004         * jit-icalls.c (helper_compile_generic_method): Check for null. Fixes
18005         #77442.
18006
18007 2006-02-02  Martin Baulig  <martin@ximian.com>
18008
18009         * tramp-x86.c, tramp-amd64.c: It's now safe to #include
18010         <mono/metadata/mono-debug-debugger.h>   
18011
18012         * debug-mini.c: Don't #define _IN_THE_MONO_DEBUGGER.
18013
18014 2006-02-02  Martin Baulig  <martin@ximian.com>
18015
18016         * debug-debugger.h: New header file for debug-debugger.c.
18017
18018         * debug-debugger.c: Big API cleanup; don't run the managed Main()
18019         function is a separate thread anymore; add support for attaching.
18020
18021 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
18022
18023         * tramp-x86.c: Fix a warning.
18024
18025 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
18026
18027         * mini-amd64.c (mono_arch_compute_omit_fp): Avoid hitting an assertion
18028         on very large methods.
18029
18030         * aot.c (load_patch_info): Fix a warning.
18031
18032 Mon Jan 30 12:51:10 CET 2006 Paolo Molaro <lupus@ximian.com>
18033
18034         * cpu-pentium.md, mini-x86.c, inssel.brg, inssel-x86.brg,
18035         mini-ops.h: alu membase optimizations.
18036
18037 Fri Jan 27 21:11:08 CET 2006 Paolo Molaro <lupus@ximian.com>
18038
18039         * mini-ops.h, mini.c, inssel.brg, inssel-x86.brg: opcode
18040         to speedup StringBuilder.
18041
18042 2006-01-27  Zoltan Varga  <vargaz@gmail.com>
18043
18044         * dominators.c (mono_compute_natural_loops): Fix detection of
18045         loop body start blocks.
18046
18047         * mini-exceptions.c (mono_print_thread_dump): Fix non x86 builds.
18048
18049 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
18050
18051         * mini.h mini.c mini-exceptions.c: Add thread dump support. Fixes
18052         #75145.
18053
18054 2006-01-25  Massimiliano Mantione  <massi@ximian.com>
18055
18056         * aliasing.c: Fixed aliasing issue on 64 bit archs.
18057
18058 2006-01-25  Martin Baulig  <martin@ximian.com>
18059
18060         * debug-debugger.c: Moved the `MonoDebuggerManager' and
18061         `MonoDebuggerThread' typedefs here from mono-debug-debugger.h and
18062         started to cleanup this file a little bit.
18063
18064 Tue Jan 24 18:20:48 CET 2006 Paolo Molaro <lupus@ximian.com>
18065
18066         * mini.c: optimize a codepath frequently happening in generics code.
18067
18068 2006-01-23  Martin Baulig  <martin@ximian.com>
18069
18070         * Makefile.am: Only compile debug-debugger.c on supported platforms.
18071
18072         * debug-debugger.c: Kill the IO_LAYER() hack and use the io-layer
18073         functions directly.
18074
18075         * driver.c: debug-debugger.c is only available if
18076         `MONO_DEBUGGER_SUPPORTED' is defined.   
18077
18078 2006-01-23  Martin Baulig  <martin@ximian.com>
18079
18080         * debug-debugger.c: Only enable this on platforms where the Mono
18081         Debugger is working (x86 and x86_64).
18082
18083 2006-01-21  Martin Baulig  <martin@ximian.com>
18084
18085         The Mono Debugger is now using the normal `mono' instead of the
18086         `mono-debugger-mini-wrapper' when executing managed code.
18087
18088         * debug-debugger.c: New file; previously known as
18089         debugger/wrapper/wrapper.c.
18090
18091         * debug-mini.c (mono_init_debugger): Removed.
18092
18093         * driver.c (mono_main): Added new `--inside-mdb' command line
18094         argument which is used when running inside the debugger.
18095
18096 2006-01-20  Zoltan Varga  <vargaz@gmail.com>
18097
18098         * liveness.c (mono_analyze_liveness): Remove some unused data
18099         structures.
18100
18101 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
18102
18103         * mini.h: Move mono_bitset_test_fast macro to monobitset.h where it belongs.
18104
18105 2006-01-16  Zoltan Varga  <vargaz@gmail.com>
18106
18107         * mini.h (mono_bitset_test_fast): Disable the 'fast' implementation which
18108         depends on implementation details of monobitset.
18109
18110         * mini.c (mini_get_ldelema_ins): Fix handling of 1 dimensional arrays.
18111         Fixes #77271.
18112
18113 2006-01-15  Zoltan Varga  <vargaz@gmail.com>
18114
18115         * liveness.c: Update after monobitset changes.
18116
18117 2006-01-14  Zoltan Varga  <vargaz@gmail.com>
18118
18119         * mini-amd64.c (mono_arch_compute_omit_fp): Fix a leak.
18120
18121 2006-01-11 Neale Ferguson <neale@sinenomine.net>
18122
18123         * inssel-s390x.brg: Fix reg: OP_LDADDR(OP_S390_LOADARG) register setting.
18124
18125         * mini-s390x.c: Remove warning messages.
18126
18127 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
18128
18129         * mini.c: pass the jitinfo to mono_profiler_method_end_jit.
18130
18131 2006-01-10  Zoltan Varga  <vargaz@gmail.com>
18132
18133         * generics.2.cs: Add ldelem/stelem_any test.
18134
18135 2006-01-10 Neale Ferguson <neale@sinenomine.net>
18136
18137         * mini-s390.c: Fix ATOMIC_ADD_I4 operation.
18138
18139 2006-01-07  Zoltan Varga  <vargaz@gmail.com>
18140
18141         * inssel-long.brg: Fix int->long ovf conversion rules. Fixes #77172.
18142         
18143 2006-01-06  Zoltan Varga  <vargaz@gmail.com>
18144
18145         * generics.2.cs: Reenable vtype tests.
18146
18147         * inssel-x86.brg: Remove an icorrect valuetype rule.
18148
18149 2006-01-06 Neale Ferguson <neale@sinenomine.net>
18150
18151         * mini-s390x.c, inssel-s390x.brg, cpu-s390x.md: Fix ATOMIC_I8 operations. Provide
18152         initial support for OP_ABS.
18153
18154 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18155
18156         * mini-s390x.c (emit_float_to_int): Correct r8 to unsigned int algorithm.
18157
18158 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18159
18160         * mini-s390.c, mini-s390.h, inssel-s390.brg, cpu-s390.md: Fix r8 to unsigned int 
18161         conversion and implement LADD/LSUB.
18162
18163         * exceptions-s390.c: Standardize mono_arch_find_jit_info to match other
18164         architectures.
18165
18166 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18167
18168         * mini-s390x.c, mini-s390x.h: Fix r8 to unsigned int conversion.
18169
18170         * exceptions-s390x.c: Standardize mono_arch_find_jit_info to match other
18171         architectures.
18172
18173 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18174
18175         * mini-s390x.c, mini-s390x.h, mini-s390.c, mini-s390.h: Fix lmf handling when 
18176         localloc is encountered.  Fixes crash in test-183.cs when using gmcs 
18177         (stack walk problem).
18178
18179 2006-01-04  Zoltan Varga  <vargaz@gmail.com>
18180
18181         * aot.c (mono_aot_load_method): Fix a warning.
18182
18183 2006-01-03  Neale Ferguson <neale@sinenomine.net>
18184
18185         * mini-s390x.h, exceptions-s390x.c, inssel-s390x.brg: Fix compiler warnings
18186
18187 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
18188
18189         * iltests.il: Add test for #77148.
18190
18191         * mini.c (mini_get_ldelema_ins): Handle arrays with rank 1 too. Fixes
18192         #77148.
18193
18194 2006-01-03  Neale Ferguson <neale@sinenomine.net>
18195
18196         * mini-s390x.c, inssel-s390x.brg: Remove debug statements
18197
18198 2006-01-03  Neale Ferguson <neale@sinenomine.net>
18199
18200         * mini-s390x.c, mini-s390x.h, exceptions-s390x.c, tramp-s390x.c, inssel-s390x.brg,
18201         cpu-s390x.md, mini-codegen.c, Makefile.am: add 64-bit s390 support to JIT.
18202
18203         * basic-long.cs: Add lconv-to-r4/r8 tests.
18204
18205 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
18206
18207         * mini.c (mono_method_to_ir): Fix DynamicMethod support in some opcodes.
18208
18209         * mini-sparc.c (mono_arch_call_opcode): Use mono_class_value_size ()
18210         here as on other archs.
18211
18212 2005-12-29 Neale Ferguson <neale@sinenomine.net>
18213
18214         * mini-s390.c (mono_arch_get_inst_for_method): Add memory_barrier support.
18215
18216 2005-12-29 Neale Ferguson <neale@sinenomine.net>
18217
18218         * inssel-s390.brg: Correct register assignment; Rework L[ADD|SUB]_OVF[_UN] for s390.
18219         
18220         * cpu-s390.md: Fix lengths of a couple of long instructions; Add memory_barrier.
18221
18222         * mini-s390.c: Fix long add/sub overflow instructions; Fix displacement handling in
18223         instrument_prolog; Add memory_barrier instruction.
18224
18225 2005-12-26  Zoltan Varga  <vargaz@gmail.com>
18226
18227         * exceptions-x86.c mini-x86.h: Fix solaris/x86 exception handling.
18228
18229 2005-12-23  Zoltan Varga  <vargaz@gmail.com>
18230
18231         * tramp-ia64.c (mono_arch_get_unbox_trampoline): Flush icache.
18232
18233         * aliasing.c inssel.brg: Fix warnings.
18234
18235         * inssel-ia64.brg (OP_MEMSET): Fix an optimization which previously
18236         could skip initialization of some parts of memory.
18237
18238         * mini.c mini-ia64.c: Fix warnings.
18239
18240         * inssel-sparc.brg: Add an implementation of lneg which actually works.
18241
18242 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
18243
18244         * aliasing.c (mono_build_aliasing_information): Add a workaround for
18245         a crash seen on sparc.
18246
18247         * mini-sparc.c: Add implementation of Thread.MemoryBarrier.
18248         
18249         * cpu-sparc.md: Add memory_barrier opcode. Remove unused opcodes.
18250
18251 2005-12-21 Neale Ferguson <neale@sinenomine.net>
18252
18253         * mini-ops.h: Add s390_backchain instruction
18254
18255         * inssel-s390.brg: Use backchaining instruction for LOADARG/STKARG operations.
18256
18257         * cpu-s390.md: Add s390_backchain instruction
18258
18259         * mini-s390.c: Significant ABI changes
18260
18261         * mini-s390.h: Cater for zero length structures
18262
18263 2005-12-20 Neale Ferguson <neale@sinenomine.net>
18264
18265         * mini-s390.c: ABI fixes
18266
18267         * inssel-s390.brg: Remove debug statements
18268
18269         * cpu-s390.md: Fix length of ATOMIC_xx operations
18270
18271 2005-12-19  Zoltan Varga  <vargaz@gmail.com>
18272
18273         * basic-float.cs: Add float<->long conversion tests.
18274
18275 2005-12-16 Neale Ferguson <neale@sinenomine.net>
18276
18277         * mini-s390.c: Fix LOCALLOC processing.
18278
18279         * tramp-s390.c (s390_magic_trampoline): Fix base calculation.
18280
18281 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
18282
18283         * iltests.il: Add tests for some opcodes not covered by the other
18284         tests.
18285
18286 2005-12-15 Neale Ferguson <neale@sinenomine.net>
18287
18288         * mini-s390.c: Fix ADDCC/SBB bug revealed by test_0_ulong_regress; Correct 
18289         register loading for Tail processing; Correct trace output.
18290
18291         * inssel-s390.brg: Reimplement LSUB_OVF due to s390 implementation of signed math.
18292
18293         * cpu-s390.md: Correct size of jmp instruction. 
18294
18295 2005-12-13 Neale Ferguson <neale@sinenomine.net>
18296
18297         * mini-s390.c (mono_arch_emit_prolog): Remove some debugging bits.
18298
18299 2005-12-13 Neale Ferguson <neale@sinenomine.net>
18300
18301         * inssel-s390.brg tramp-s390.c cpu-s390.md mini-s390.c mini-s390.h:
18302           Bring s390 up to current level.
18303
18304 2005-12-12  Zltan Varga  <vargaz@gmail.com>
18305
18306         * generics.2.cs: Disable the newly added tests as they do not work yet.
18307         
18308         * generics.2.cs: Add valuetype tests.
18309
18310 2005-12-09  Zoltan Varga  <vargaz@gmail.com>
18311
18312         * basic-long.cs: Add i4->u8 test.
18313
18314         * objects.cs: Add tests for JIT intrinsic.
18315
18316         * mini.c (mini_get_inst_for_method): Resurrect the array Rank/Length
18317         optimizations lost by a mistake.
18318
18319 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
18320
18321         * basic-long.cs: Remove a test moved to objects.cs.
18322
18323         * arrays.cs: Add more array tests.
18324
18325 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
18326
18327         * arrays.cs: Add new tests for multi-dimensional arrays.
18328
18329 2005-12-06  Raja R Harinath  <rharinath@novell.com>
18330
18331         * Makefile.am (test_sources2): Add generics.2.cs.
18332         (EXTRA_DIST): Add test_sources2.
18333
18334 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
18335
18336         Support for boxing and unboxing nullable types as well as the
18337         isinst operation on nullables, per the CLI ammendment.
18338
18339         * inssel.brg (CEE_ISINST): Special case for nullable
18340
18341         * mini.c (handle_unbox_nullable): new method
18342         (handle_box): Special case for nullable types
18343         (mono_method_to_ir): Call handle_unbox_nullable in correct
18344         places.
18345
18346         * generics.2.cs: New test suite
18347
18348         * Makefile.am: Support for regression tests with generics.
18349
18350 2005-12-03  Zoltan Varga  <vargaz@gmail.com>
18351
18352         * mini-amd64.c (emit_load_volatile_arguments): Add loading of arguments
18353         allocated to registers. Fixes #76800.
18354
18355 Thu Dec 1 12:59:40 EST 2005 Paolo Molaro <lupus@ximian.com>
18356
18357         * mini-ppc.c, inssel-ppc.brg: fix ABI issue (pinvoke3.cs).
18358
18359 2005-11-30  Zoltan Varga  <vargaz@gmail.com>
18360
18361         * exceptions.cs: Disable test_0_long_cast () test, since it fails on a lot 
18362         of platforms.
18363
18364 2005-11-29  Zoltan Varga  <vargaz@gmail.com>
18365
18366         * objects.cs basic-calls.cs: Move a test depending on valuetypes to
18367         objects.cs.
18368
18369         * inssel-long32.brg (CEE_CONV_I8): Remove unused labels.
18370         
18371         * inssel-long32.brg (CEE_CONV_I8): Convert this to a branchless version.
18372 Tue Nov 29 05:41:34 EST 2005 Paolo Molaro <lupus@ximian.com>
18373
18374         * mini-ppc.c, cpu-g4.md: ensure a fp register is converted to
18375         single precision before storing to a single precision location.
18376
18377 2005-11-28  Raja R Harinath  <rharinath@novell.com>
18378
18379         * Makefile.am (ILASM): Use profile-dependent location of ilasm.
18380
18381 2005-11-27  Zoltan Varga  <vargaz@gmail.com>
18382
18383         * basic-long.cs basic-calls.cs objects.cs: Move some tests to the
18384         correct files.
18385
18386         * basic.cs: Remove test_0_byte_compares test which was moved to
18387         objects.cs a long time ago.
18388
18389 2005-11-22  Massimiliano Mantione  <massi@ximian.com>
18390
18391         * aliasing.c: Fixed aliasing issue on 64 bit archs.
18392
18393 2005-11-20  Zoltan Varga  <vargaz@gmail.com>
18394
18395         * mini-ia64.c exceptions-ia64.c: Simplify the way filters/finally
18396         handlers are called.
18397
18398         * mini-ia64.c (mono_arch_emit_exceptions): Optimize size of exception
18399         throwing code.
18400
18401          * mini-ia64.c: Add support for the throw->branch exception 
18402         optimization.   
18403
18404         * driver.c (DEFAULT_OPTIMIZATIONS): Add MONO_OPT_EXCEPTION.
18405
18406 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
18407
18408         * mini.c: Enabled "fastpath" deadce :-)
18409         
18410 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
18411
18412         * mini.c: Added "fastpath" deadce (deadce without SSA), and a simple
18413         alias analysis pass to support it.
18414         * mini.h: Likewise.
18415         * ssa.c: Likewise.
18416         * liveness.c: Likewise (liveness computation can use aliasing
18417         information to be more accurate).
18418         * driver.c: Added an "ssa" option go tell the JIT to use SSA, and
18419         moreover made so that "--compile-all" uses the given optimization
18420         flags and not the default ones.
18421         * aliasing.c: Alias analysis (new file).
18422         * aliasing.h: Likewise.
18423         * Makefile.am: added "aliasing.c" and "aliasing.h".
18424         
18425 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
18426
18427         * mini-ops.h: Add missing OP_I opcodes so it is in synch with the
18428         OP_L opcodes.
18429
18430 2005-11-13  Zoltan Varga  <vargaz@gmail.com>
18431
18432         * mini-exceptions.c (mono_handle_exception_internal): Remove the 
18433         fp >= end_of_stack exit condition, as it is not needed, and it might
18434         become true for fp eliminated frames.
18435
18436 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
18437
18438         * mini-x86.c (mono_arch_emit_epilog): Use G_STRUCT_OFFSET instead of hard
18439         coded offsets.
18440
18441 Tue Nov 8 11:28:20 GMT 2005 Paolo Molaro <lupus@ximian.com>
18442
18443         * mini-arm.c: fixed alignment of doubles/longs to match
18444         the C ABI (bug #76635).
18445
18446 Mon Nov 7 16:13:21 CET 2005 Paolo Molaro <lupus@ximian.com>
18447
18448         * aot.c: fix compilation with --enable-minimal=aot.
18449
18450 Fri Nov 4 12:34:15 GMT 2005 Paolo Molaro <lupus@ximian.com>
18451
18452         * mini-arm.c: fixed compatibility with the new
18453         floating point emulator package for compares.
18454
18455 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com?
18456
18457         * mini.c : reverted sig->pinvoke changes (r51396-51397).
18458
18459 2005-11-01  Zoltan Varga  <vargaz@freemail.hu>
18460
18461         * mini-exceptions.c (print_stack_frame): Output to stderr.
18462         (mono_handle_native_sigsegv): Ditto.
18463
18464 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
18465
18466         * mini-amd64.c (mono_arch_output_basic_block): Remove unused
18467         OP_LCONV_TO_OVF_I implementation.
18468
18469         * mini-amd64.c: Add support for the throw->branch exception 
18470         optimization.
18471
18472         * branch-opts.c (mono_branch_optimize_exception_target): Allow the case
18473         when the catch clause catches a more general exception, i.e. Object.
18474
18475 2005-10-30  Zoltan Varga  <vargaz@gmail.com>
18476
18477         * cpu-ia64.md: Remove unused opcodes.
18478
18479         * mini.c (GET_CONTEXT): Simplify this somewhat by removing arch
18480         specific defines for architectures defining USE_SIGACTION.
18481
18482         * mini-ia64.c: Fix some warnings.
18483
18484         * exceptions-ia64.c (mono_arch_ip_from_context): Fix this, the previous
18485         version seemed to skip a frame.
18486
18487 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
18488
18489         * mini.c: Clean up the usage of sig->pinvoke flag. Now
18490         only calls which are made to native code use this flag.
18491
18492 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
18493
18494         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for
18495         varargs methods as well.
18496         
18497         * mini-amd64.c exceptions-amd64.c: Allow fp elimination in methods
18498         which have save_lmf set. Reorganize methods prologs a bit.
18499
18500         * mini-amd64.c (mono_arch_compute_omit_fp): Move the check for the
18501         debugger to the proper place.
18502
18503 2005-10-29  Martin Baulig  <martin@ximian.com>
18504
18505         * mini-amd64.c (debug_omit_fp): Temporarily disable fp elimination
18506         when running inside the debugger until the debugger has support
18507         for it.
18508
18509 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
18510
18511         * mini.h: Fix a warning.
18512
18513 2005-10-24  Miguel de Icaza  <miguel@novell.com>
18514
18515         * mini.c (mono_pmip): Just a wrapper for get_method_from_ip which
18516         we expose publicly, this returns the string.
18517
18518 2005-10-22  Zoltan Varga  <vargaz@freemail.hu>
18519
18520         * exceptions-amd64.c (mono_arch_find_jit_info): Fix some corner cases
18521         with fp elimination.
18522
18523 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
18524
18525         * mini-exceptions.c (mono_handle_native_sigsegv): Try to print a
18526         native stacktrace using the glibc 'backtrace' function if available.
18527
18528 2005-10-20  Zoltan Varga  <vargaz@gmail.com>
18529
18530         * mini.h (MonoDebugOptions): Remove 'abort_on_sigsegv' option.
18531
18532         * mini-exceptions.c (mono_handle_native_sigsegv): New function to 
18533         handle SIGSEGVs received while in native code.
18534
18535         * mini.c (sigsegv_signal_handler): If the SIGSEGV happened in native
18536         code, call mono_handle_native_sigsegv which will abort the runtime
18537         after printing some diagnostics, instead of converting it into a
18538         confusing NullReferenceException.
18539
18540 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
18541
18542         * cpu-pentium.md: Remove unused opcodes.
18543
18544 2005-10-18  Zoltan Varga  <vargaz@freemail.hu>
18545
18546         * mini-amd64.h (MonoLMF): Add rsp field.
18547
18548         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Save the sp reg into
18549         the lmf too.
18550
18551 2005-10-17  Zoltan Varga  <vargaz@gmail.com>
18552
18553         * mini-codegen.c (get_register_spilling): Fix some warnings.
18554
18555 2005-10-16  Zoltan Varga  <vargaz@freemail.hu>
18556
18557         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Add support for fp
18558         elimination during exception handling. Enable fp elimination by
18559         default.
18560
18561         * mini-amd64.h mini-amd64.c: Add preliminary support for frame pointer
18562         elimination.
18563
18564 2005-10-16  Martin Baulig  <martin@ximian.com>
18565
18566         * mini-exceptions.c
18567         (mono_debugger_run_finally): New public method for the debugger.
18568
18569 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
18570
18571         * debug-mini.c (mono_debug_init_method): Fix warning.
18572
18573         * mini.h branch-opts.c (mono_branch_optimize_exception_target): Make
18574         the 'exname' parameter const to fix some warnings.
18575
18576 2005-10-09  Zoltan Varga  <vargaz@freemail.hu>
18577
18578         * mini-exceptions.c (mono_handle_exception_internal): Fix another bug
18579         introduced by the previous patch.
18580
18581 2005-10-08  Zoltan Varga  <vargaz@gmail.com>
18582
18583         * basic-float.cs: Add test for precision of float arithmetic.
18584
18585         * mini-ia64.c (mono_arch_output_basic_block): Convert to/from doubles
18586         when loading/storing single values from/to memory.
18587
18588         * mini.c (mono_jit_compile_method_with_opt): Create the function
18589         pointers in the correct domain.
18590
18591 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
18592
18593         * mini-exceptions.c (mono_handle_exception_internal): Fix bug 
18594         introduced by previous patch.
18595         
18596         * mini-exceptions.c (mono_handle_exception_internal): Handle the case
18597         when out_filter_idx is NULL.
18598
18599         * mini-exceptions.c: Don't run filter clauses twice during exception
18600         handling. Fixes #75755.
18601
18602 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
18603
18604         * aot.c: Add support for ldflda wrappers.
18605
18606         * mini.c (mono_method_to_ir): Use ldflda wrappers for CEE_LDFLDA. Fixes
18607         #75902.
18608
18609 Tue Oct 4 20:23:25 CEST 2005 Paolo Molaro <lupus@ximian.com>
18610
18611         * mini.c, mini.h: do not consider exception handlers blocks when
18612         setting up interface variables.
18613
18614 2005-10-04  Zoltan Varga  <vargaz@freemail.hu>
18615
18616         * aot.c (emit_section_change): Fix emitting of sections on win32. Fixes #76322.
18617
18618 2005-10-03  Zoltan Varga  <vargaz@gmail.com>
18619
18620         * liveness.c (mono_analyze_liveness): Revert parts of r51051 since it
18621         causes a regression.
18622
18623         * mini.c (mini_thread_cleanup): Fix reading of freed memory.
18624
18625 2005-10-02  Zoltan Varga  <vargaz@freemail.hu>
18626
18627         * mini.h (OP_PCONST): Move the definition of OP_PCONST into the rest
18628         of the OP_P definitions.
18629
18630         * TODO: Add a proposal for dealing with the CEE/OP mess.
18631
18632         * mini-amd64.c (mono_arch_output_basic_block): Merge mul_imm 
18633         optimizations from the x86 port.
18634
18635         * cpu-amd64.md: Ditto.
18636
18637         * basic.cs basic-long.cs: Add tests.
18638
18639 Fri Sep 30 20:07:20 CEST 2005 Paolo Molaro <lupus@ximian.com>
18640
18641         * Makefile.am, driver.c, mini-x86.c, mini.c, mini.h, branch-opts.c:
18642         Patrik Torstensson's implementation of my exception-handling
18643         optimization idea, when the exception object is not used
18644         (bug #62150).
18645
18646 Fri Sep 30 19:10:29 CEST 2005 Paolo Molaro <lupus@ximian.com>
18647
18648         * mini-x86.c, cpu-pentium.md: Patrik Torstensson's port
18649         of the mul_imm optimizations from the old jit.
18650
18651 Fri Sep 30 11:37:51 EDT 2005 Paolo Molaro <lupus@ximian.com>
18652
18653         * mini.c, liveness.c: patch by Patrik Torstensson and
18654         Zoltan Varga to improve performance in methods with
18655         exception clauses.
18656
18657 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
18658
18659         * driver.c: Remove 'Globalization' entry from --version.
18660
18661 2005-09-28  Zoltan Varga  <vargaz@gmail.com>
18662
18663         * mini.c (mono_jit_compile_method_inner): Do not load AOT code when
18664         there is a profiler interested in JIT events.
18665
18666         * aot.c: Load profile files produced by the AOT profiling module, and
18667         reorder methods based on the profiling info. Add a 'method_order' table
18668         to the AOT file to make mono_aot_find_jit_info work with the reordered
18669         methods.
18670
18671         * mini.h: Bump AOT file version info.
18672
18673 Wed Sep 28 17:12:48 CEST 2005 Paolo Molaro <lupus@ximian.com>
18674
18675         * mini-arm.h: work around what looks like a gcc bug when optimizations
18676         are enabled.
18677
18678 2005-09-28  Raja R Harinath  <rharinath@novell.com>
18679
18680         * Makefile.am (AM_CFLAGS): Don't use += to append inside
18681         conditionals.  Use ...
18682         (PLATFORM_CFLAGS, ARCH_CFLAGS): ... these.
18683
18684 2005-09-27  Zoltan Varga  <vargaz@freemail.hu>
18685
18686         * mini-amd64.c (mono_arch_call_opcode): Use mono_class_value_size ()
18687         to determine the amount of memory to copy when passing valuetypes.
18688
18689         * inssel-amd64.brg: Remove PUSH(LDIND4) rules since they convert an
18690         4 byte load into a 8 byte load. Fix aligning of size in OP_OUTARG_VT.
18691
18692 2005-09-27  Zoltan Varga  <vargaz@gmail.com>
18693
18694         * mini.h mini.c aot.c: Add infrastructure to collect pagefault 
18695         information about aot.
18696
18697 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
18698
18699         * *.c: Replace the use of {Enter,Leave}CriticalSection with
18700         macros. This will allow a deadlock debugger to easily be plugged
18701         in.
18702
18703 Tue Sep 27 09:32:11 EDT 2005 Paolo Molaro <lupus@ximian.com>
18704
18705         * mini-ppc.c, cpu-g4.md: added memory barrier instruction.
18706
18707 2005-09-27  Raja R Harinath  <rharinath@novell.com>
18708
18709         * Makefile.am (AM_CFLAGS): Rename from INCLUDES.
18710         (AM_CFLAGS) [PLATFORM_WIN32): Append to it, don't set it.
18711         (AM_CFLAGS) [ARM]: Add arch/arm directory from the build tree.
18712         ($(arch_built)) [CROSS_COMPILING]: Error out.
18713
18714 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
18715
18716         * aot.c: Add support for the no_special_static flag for classes.
18717
18718 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
18719
18720         * Reapply reverted patches.
18721
18722         * *: Revert r50174 as well.
18723
18724         * mini-amd64.c cpu-amd64.md inssel-amd64.brg: Revert r50170 as well.
18725
18726 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
18727
18728         * mini-amd64.c: Revert r50342 to see if this fixed buildbot.
18729
18730 2005-09-23  Miguel de Icaza  <miguel@novell.com>
18731
18732         * mini.c (SIG_HANDLER_SIGNATURE): Only dereference info if it is
18733         part of the SIG_HANDLER_SIGNATURE.  
18734
18735 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
18736
18737         * mini.h mini.c: Add a new MONO_DEBUG option to collect metadata pagefault
18738         statistics.
18739
18740         * mini-x86.c (mono_arch_call_opcode): Fix vararg calling convention 
18741         introduced by previous patch.
18742
18743 2005-09-21  Zoltan Varga  <vargaz@gmail.com>
18744
18745         * tramp-x86.c (mono_arch_create_trampoline_code): Restore caller
18746         saved registers too.
18747
18748         * mini-x86.c (mono_arch_allocate_vars): Rewrite this so it works based 
18749         upon the information returned by get_call_info ().
18750         
18751         * mini-x86.c (add_float): Fix stack size calculation.
18752         (mono_arch_call_opcode): Rewrite this so it works based up the
18753         information returned by get_call_info ().
18754         (mono_arch_get_this_vret_args): Ditto.
18755
18756 2005-09-21  Zoltan Varga  <vargaz@freemail.hu>
18757
18758         * mini-amd64.c (mono_arch_emit_this_vret_args): Use the information
18759         in cinfo to determine the registers which need to be used.
18760
18761 2005-09-20  Miguel de Icaza  <miguel@novell.com>
18762
18763         * driver.c (mono_main): Add --server and --desktop flags. 
18764
18765 2005-09-16  Zoltan Varga  <vargaz@gmail.com>
18766
18767         * mini-ia64.h: Make register masks 64 bit. Don't treat argument
18768         registers as global registers.
18769
18770         * inssel-ia64.brg (stmt): Remove OP_OUTARG_REG () rules which are no 
18771         longer needed with the new register allocator.
18772
18773         * mini-ia64.c: Use OP_MOVE instead of OP_SETREG for reg-reg moves.
18774
18775         * cpu-ia64.md: Remove unused opcodes.
18776         
18777         * regalloc.c mini-codegen.c: Make register masks 64 bit on ia64.
18778         
18779 2005-09-16  Zoltan Varga  <vargaz@freemail.hu>
18780
18781         * cpu-amd64.md: Remove unused opcodes.
18782
18783         * inssel-amd64.brg: Remove OP_OUTARG_REG () rules which are no longer
18784         needed with the new register allocator.
18785
18786         * inssel-amd64.brg mini-amd64.c: Use OP_MOVE instead of OP_SETREG for
18787         reg-reg moves.
18788
18789 2005-09-16  Raja R Harinath  <rharinath@novell.com>
18790
18791         * Makefile.am (check-local): Don't invoke semdel-wrapper.
18792
18793 2005-09-16  Martin Baulig  <martin@ximian.com>
18794
18795         * exceptions-amd64.c
18796         (throw_exception): Don't call mono_debugger_throw_exception() if
18797         we're a rethrow - see the FIXME in the code.
18798
18799 2005-09-15  Geoff Norton  <gnorton@customerdna.com>
18800
18801         * mini.c (mono_init_exceptions): This only works on some architectures.
18802         
18803 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
18804
18805         * mini.c (mono_method_to_ir): Add OP_LMUL imm -> OP_LMUL_IMM conversion
18806         on ia64.
18807
18808         * inssel-long.brg mini-ia64.c: Add OP_LMUL_IMM rules.
18809
18810         * mini-ia64.h mini-ia64.c: Remove the altstack support code which is
18811         now in mini-exceptions.c.
18812
18813 2005-09-15  Zoltan Varga  <vargaz@freemail.hu>
18814
18815         * mini-amd64.h mini-am64.c: Remove the altstack support code which is
18816         now in mini-exceptions.c.
18817
18818 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
18819
18820         * exceptions-x86.c: Applied patch from Patrik Torstensson 
18821         <patrik.torstensson@gmail.com>. Add stack overflow handling support for win32.
18822
18823         * mini-exceptions.c mini-x86.c mini.c: Move the altstack setup/teardown
18824         code into mini-exceptions.c. Add some assertions to it.
18825
18826 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
18827
18828         * aot.c (emit_section_change): Applied patch from "The Software Team" 
18829         (<software@solmersa.com>). Fix as errors on windows.
18830
18831 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
18832
18833         * tramp-amd64.c (mono_arch_create_trampoline_code): Fix saving of
18834         method info into the LMF.
18835
18836 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
18837         
18838         * mini-ia64.c: Add proper unwind info for method epilogs.
18839
18840         * exceptions-ia64.c: Add some code to help debugging.
18841         
18842         * mini-ia64.c mini-ia64.h: Add sigaltstack support.
18843
18844         * mini-exceptions.c: Fix warning.
18845
18846 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
18847
18848         * mini.c: Really fix build.
18849
18850         * mini-x86.c mini-amd64.c: Fix build.
18851
18852 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
18853
18854         * mini-ia64.c inssel-ia64.brg: Add InterlockedExchange instrinsics.
18855
18856         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Implement
18857         some Interlocked methods as intrinsics.
18858
18859         * mini.c (mini_get_inst_for_method): Call arch_get_inst_for_method
18860         for Thread methods as well.
18861
18862         * mini-ops.h: Add OP_MEMORY_BARRIER opcode.
18863
18864         * inssel.brg: Add rule for OP_MEMORY_BARRIER.
18865
18866         * mini-ia64.c mini-x86.c mini-amd64.c 
18867         cpu-ia64.md cpu-pentium.md cpu-amd64.md: Add implementation of 
18868         OP_MEMORY_BARRIER.
18869         
18870         * mini.c (mono_init_exceptions): Fix build breakage.
18871
18872 2005-09-10  Zoltan Varga  <vargaz@gmail.com>
18873
18874         * mini-ia64.c exceptions-ia64.c tramp-ia64.c: Remove 'manual' emitting
18875         of instructions. Use the new ia64_unw_op macros for emitting unwind
18876         info.
18877
18878         * mini.c (mono_init_exceptions): Initialize exception handling
18879         related trampolines at startup.
18880
18881 Fri Sep 9 19:30:37 BST 2005 Paolo Molaro <lupus@ximian.com>
18882
18883         * cpu-arm.md, mini-arm.c: fix for dynamic code (Gtk# apps).
18884
18885 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
18886
18887         * mini.c: Handle type loading errors gracefully during compilation and
18888         throw the appropriate exception.
18889
18890 Fri Sep 9 09:49:14 CEST 2005 Paolo Molaro <lupus@ximian.com>
18891
18892         * ldscript.mono, Makefile.am: use anonymous versions in the ldscript
18893         for the mono binary.
18894
18895 2005-09-09  Martin Baulig  <martin@ximian.com>
18896
18897         * mini.c (mono_method_to_ir): Comment out the G_BREAKPOINT()'s for
18898         the release.
18899
18900 Thu Sep 8 14:53:45 BST 2005 Paolo Molaro <lupus@ximian.com>
18901
18902         * mini-arm.h: use emulation for conv.r.un for the release.
18903
18904 Thu Sep 8 11:28:45 BST 2005 Paolo Molaro <lupus@ximian.com>
18905
18906         * mini-arm.c, objects.cs: more fixes and tests for them.
18907
18908 Wed Sep 7 17:14:26 BST 2005 Paolo Molaro <lupus@ximian.com>
18909
18910         * mini-arm.c: align structures to at least 4 bytes to be able
18911         to keep our current optimized memcpy.
18912
18913 Tue Sep 6 22:51:08 BST 2005 Paolo Molaro <lupus@ximian.com>
18914
18915         * mini-arm.c, cpu-arm.md, inssel-arm.brg: bugfixes.
18916
18917 2005-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18918
18919         * mini.c: ignore SIGPIPE.
18920
18921 2005-09-04  Zoltan Varga  <vargaz@gmail.com>
18922
18923         * mini-ia64.c (mono_arch_lowering_pass): Convert 'and_imm 255' to zext1.
18924
18925         * mini-ia64.h mini-ia64.c: Add some minor optimizations.
18926
18927 2005-09-02  Zoltan Varga  <vargaz@gmail.com>
18928
18929         * mini.h: Add prototype for mono_allocate_stack_slots_full.
18930
18931 Thu Sep 1 21:05:26 BST 2005 Paolo Molaro <lupus@ximian.com>
18932
18933         * exceptions-arm.c, mini.c, mini-arm.c, mini-arm.h:
18934         exception handling support.
18935         * mini-arm.c, mini-arm.h: bigendian fixes (partially from a
18936         patch by Brian Koropoff <briank@marakicorp.com>).
18937
18938 Thu Sep 1 10:22:44 EDT 2005 Paolo Molaro <lupus@ximian.com>
18939
18940         * mini.c: revert another 'optimization' which breaks when
18941         items on the eval stack need to be saved at a basic block end
18942         (bug #75940).
18943
18944 Wed Aug 31 17:29:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
18945
18946         * jit-icalls.c: for arrays, ensure we always provide
18947         lower bounds.
18948
18949 2005-08-30  Zoltan Varga  <vargaz@gmail.com>
18950
18951         * mini.c (mono_allocate_stack_slots_full): Fix ia64 build.
18952         
18953         * mini.c (mini_get_inst_for_method): Special case Object:.ctor as well.
18954
18955 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
18956
18957         * mini-ia64.h mini-ia64.c: Implement frame pointer elimination. Keep
18958         arguments in their original register.
18959
18960 2005-08-28  Zoltan Varga  <vargaz@gmail.com>
18961
18962         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Optimize
18963         memset/memcpy.
18964
18965         * mini.c (mono_method_to_ir): Disable the MUL->MUL_IMM optimization
18966         when ssapre is enabled.
18967
18968         * inssel-long.brg: Fix bug in previous patch.
18969
18970         * mini-ia64.c mini-ia64.h mini.c inssel-long.brg: Optimize 
18971         multiplication by a constant.
18972
18973 2005-08-27  Zoltan Varga  <vargaz@gmail.com>
18974
18975         * mini-ia64.c (mono_arch_setup_jit_tls_data): Add support for intel
18976         icc.
18977
18978         * tramp-ia64.c (mono_arch_create_trampoline_code): Use st8.spill for
18979         saving registers.
18980
18981 Fri Aug 26 11:09:28 BST 2005 Paolo Molaro <lupus@ximian.com>
18982
18983         * inssel-arm.brg: apply changes tested by Brian Koropoff
18984         <briank@marakicorp.com>.
18985
18986 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
18987
18988         * mini-x86.c (mono_arch_emit_prolog): Fix calling of mono_jit_thread_attach () under windows.
18989         
18990 2005-08-24  Zoltan Varga  <vargaz@gmail.com>
18991
18992         * mini-codegen.c (mono_local_regalloc): Avoid allocating dreg and sreg1/2
18993         to the same register if dreg is just a base register.
18994         (print_ins): Improve printing of membase opcodes.
18995
18996         * inssel-x86.brg: Add optimized ldind(reg) rules.
18997
18998         * mini-x86.c cpu-pentium.md: Changes required to support the new rules.
18999
19000 Wed Aug 24 19:39:36 CEST 2005 Paolo Molaro <lupus@ximian.com>
19001
19002         * mini.c: when running under valgrind, set the stack bottom for
19003         the GC at the actual approximate stack for the app (fixes running
19004         mono with valgrind).
19005
19006 Tue Aug 23 21:38:50 CEST 2005 Paolo Molaro <lupus@ximian.com>
19007
19008         * mini.c: do no break at the first valuetype to init found
19009         (fixes bug #75791).
19010
19011 Tue Aug 23 16:53:21 BST 2005 Paolo Molaro <lupus@ximian.com>
19012
19013         * cpu-arm.md, mini-arm.c: more fixes and LMF support.
19014
19015 Tue Aug 23 15:11:44 CEST 2005 Paolo Molaro <lupus@ximian.com>
19016
19017         * cpu-g4.md: fixed instruction length exposed by the nemerle compiler.
19018
19019 2005-08-23  Zoltan Varga  <vargaz@freemail.hu>
19020
19021         * inssel-amd64.brg inssel-x86.brg: Fix the fcall rules.
19022
19023 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
19024
19025         * inssel-x86.brg: Fix assert in patch_delegate_trampoline.
19026
19027         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Add some debug
19028         code.
19029
19030         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Add some debug
19031         code.
19032
19033         * mini.c (optimize_branches): Don't quit after 1000 iterations on large
19034         methods.
19035
19036 Mon Aug 22 19:16:29 BST 2005 Paolo Molaro <lupus@ximian.com>
19037
19038         * tramp-arm.c: allocate less memory for the trampoline and fix typo.
19039
19040 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
19041
19042         * mini.c (mono_method_to_ir): Remove instructions inserted after a branch
19043         in the tail recursion optimization.
19044
19045         * mini.h helpers.c (mono_disassemble_code): Emit starts of basic blocks as 
19046         debug info into the assembly file.
19047
19048         * iltests.il: Add test for filter regions.
19049
19050         * mini.c (mono_method_to_ir): Fix handling of nested FILTER clauses. Fix
19051         initial stack of filter regions. Fixes #75755.
19052
19053 Mon Aug 22 17:49:16 BST 2005 Paolo Molaro <lupus@ximian.com>
19054
19055         * mini-arm.c, cpu-arm.c: fixes and support for methods with bigger
19056         stack requirements.
19057
19058 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
19059
19060         * mini.c (mono_create_delegate_trampoline): Fix memory leak. Put back
19061         the check for an already compiled method on non-ia64 platforms.
19062         (mono_create_jump_trampoline): Store the MonoJitInfo structure into the
19063         proper domain.
19064
19065         * mini-x86.h tramp-x86.c: Add support for delegate trampolines.
19066
19067         * inssel-x86.brg: Add some optimized call rules.
19068
19069 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
19070
19071         * mini.c (mono_create_delegate_trampoline): Do not return an already compiled
19072         method here.
19073
19074         * mini.h mini-trampolines.c: Pass the trampoline argument to 
19075         mono_arch_patch_delegate_trampoline.
19076
19077         * mini-ia64.h mini-ia64.c tramp-ia64.c: Add support for delegate trampolines.
19078
19079         * mini-trampolines.c: Fix build.
19080
19081         * mini-amd64.h: Add delegate trampolines.
19082
19083         * mini.h mini.c mini-trampolines.c tramp-amd64.c: Add delegate trampolines.
19084
19085         * inssel-amd64.brg: Add optimized call rules.
19086         
19087         * mini-ia64.c tramp-ia64.c: Improve instruction scheduling.
19088
19089         * inssel-ia64.brg: Add optimized ldind(reg) rules.
19090
19091 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
19092
19093         * mini.c (mono_create_class_init_trampoline): Fix bug caused by last
19094         change.
19095
19096         * mini-ia64.c: Remove LMF fixmes.
19097
19098         * mini-ia64.h: Remove most fields from LMF.
19099
19100         * inssel-ia64.brg (stmt): Fix unaligned access errors.
19101
19102         * mini-trampolines.c: Add support for IA64 function descriptors.
19103
19104         * mini.h mini.c jit-icalls.c exceptions-ia64.cdriver.c: Add support
19105         for IA64 function descriptors.
19106
19107 Sat Aug 20 16:51:44 BST 2005 Paolo Molaro <lupus@ximian.com>
19108
19109         * tramp-arm.c: patch the vtable for virtual calls. Added
19110         support code to register/unregister the LMF.
19111         * mini-arm.c, mini-arm.h: warning fixes, fixes, speedups,
19112         more LMF work.
19113
19114 2005-08-19  Dick Porter  <dick@ximian.com>
19115
19116         * mini.c: Use a gsize to store the thread ID, so it can hold a 64
19117         bit value if needed.
19118
19119 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
19120
19121         * mini.c (mini_get_method): Move handling of wrapper data here.
19122
19123         * mini.c (mono_method_to_ir): Add support for dynamic methods.
19124
19125         * mini.c (mono_method_to_ir): Convert nonvirtual calls to abstract methods into
19126         virtual.
19127
19128         * mini.c (mono_method_to_ir): Emit IR for CEE_NOP as well, so 
19129         bblock->code does not remain empty.
19130
19131 2005-08-17  Zoltan Varga  <vargaz@freemail.hu>
19132
19133         * arrays.cs: Add regression test for #75832.
19134
19135         * inssel-amd64.brg cpu-amd64.md mini-amd64.c: Fix LDELEMA optimization
19136         rules. Fixes #75832.
19137
19138         * mini-ia64.c tramp-ia64.c exceptions-ia64.c: Implement improved
19139         instruction scheduling.
19140
19141 2005-08-12  Zoltan Varga  <vargaz@freemail.hu>
19142
19143         * mini-exceptions.c (ves_icall_get_frame_info): Fix IA64 build.
19144
19145 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
19146
19147         * mini-exceptions.c mini-x86.h: Move VC stuff into macros in mini-x86.h.
19148
19149         * mini-codegen.c: Fix VC build.
19150
19151         * cpu-pentium.md: Increase length of atomic_exhange_i4.
19152
19153 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19154
19155         * mini.h: fix signature for mono_register_opcode_emulation.
19156
19157 2005-08-09  Zoltan Varga  <vargaz@freemail.hu>
19158
19159         * mini.c: Get rid of most of the helper_sig_... constants using
19160         mono_create_icall_signature ().
19161
19162 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
19163
19164         * jit-icalls.c (helper_ldstr): New helper function.
19165
19166         * mini.c (get_basic_blocks): Set out_of_line for bblocks containing a throw.
19167
19168         * mini.c (mono_method_to_ir): If an LDSTR instruction is in a bblock with a
19169         throw, load the string using a helper call instead of creating a string object.
19170
19171         * aot.c: Update after LDSTR changes.
19172
19173         * mini.h: Bump AOT file version.
19174         
19175         * aot.c: Save class size info into the AOT file. Print more statistics during
19176         compilation.
19177
19178         * mini.h: Bump AOT file version.
19179
19180         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
19181         ordering of disasm cases. Fixes #74957.
19182
19183 Thu Aug 4 19:47:24 BST 2005 Paolo Molaro <lupus@ximian.com>
19184
19185         * mini-ops.h, mini-arch.h, inssel.brg, mini.c, mini.h,
19186         jit-icalls.c, mini-codegen.c, Makefile.am: changes in
19187         the generic code needed for the ARM port.
19188
19189 Thu Aug 4 19:42:54 BST 2005 Paolo Molaro <lupus@ximian.com>
19190
19191         * exceptions-arm.c, tramp-arm.c, mini-arm.c, mini-arm.h, cpu-arm.md,
19192         inssel-arm.brg: more ARM features and fixes.
19193
19194 Mon Aug 1 18:37:38 BST 2005 Paolo Molaro <lupus@ximian.com>
19195
19196         * tramp-arm.c, mini-arm.c, cpu-arm.md, inssel-arm.brg: more
19197         ARM port work in progress.
19198
19199 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
19200
19201         * mini-ia64.c (mono_arch_call_opcode): Ongoing IA64 work.
19202
19203         * mini-exceptions.c mini-ia64.h: Ongoing IA64 work.
19204
19205         * mini-ia64.c (ia64_emit_bundle): Ongoing IA64 work.
19206
19207         * inssel.brg (mini_emit_memset): Add support for unaligned access.
19208
19209         * *-ia64.*: Ongoing IA64 work.
19210         
19211         * mini-ia64.c exceptions-ia64.c: Ongoing IA64 work.
19212
19213 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
19214
19215         * TODO: Remove out-of-data todo stuff.
19216
19217         * mini.h mini.c (mono_create_jit_trampoline_from_token): Remove some
19218         dead code.
19219
19220         * aot.c: Save/load MonoCachedClassInfo->has_nested_classes.
19221
19222         * mini.h: Bump corlib version.
19223
19224 2005-07-27  Martin Baulig  <martin@ximian.com>
19225
19226         * mini-codegen.c
19227         (create_copy_ins): Added `const unsigned char *ip' argument; set
19228         `copy->cil_code' from it.
19229
19230 2005-07-27  Martin Baulig  <martin@ximian.com>
19231
19232         * mini-exceptions.c (mono_handle_exception): Don't call
19233         mono_debugger_handle_exception() for filters.
19234
19235 2005-07-27  Zoltan Varga  <vargaz@freemail.hu>
19236
19237         * mini-trampolines.c (mono_aot_trampoline): Handle AppDomain:InvokeInDomain
19238         as well.
19239
19240 2005-07-26  Martin Baulig  <martin@ximian.com>
19241
19242         Committing a patch from Michal Moskal <michal.moskal@gmail.com>.
19243
19244         * mini.c (mono_method_to_ir): In `CEE_CALLI', only use
19245         helper_compile_generic_method() if the method is actually virtual
19246         and non-final.
19247
19248 2005-07-26  Martin Baulig  <martin@ximian.com>
19249
19250         * mini.c
19251         (trampoline_code): Renamed to `mono_trampoline_code' and made it
19252         public; this is now accessed directly by the debugger.
19253         (mono_generic_trampoline_code): Removed.
19254
19255         * debug-mini.c
19256         (mono_debug_init_method): Also add interncalls and wrappers.
19257
19258 2005-07-23  Zoltan Varga  <vargaz@freemail.hu>
19259
19260         * mini-ia64.c mini-ia64.h: Add support for tracing/profiling.
19261
19262 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
19263
19264         * aot.c (mono_aot_get_method_from_token): Fix a potential crash here.
19265
19266 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
19267
19268         * aot.c (load_patch_info): Fix handling of stfld_remote wrapper.
19269
19270 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
19271
19272         * mini-amd64.c (mono_arch_setup_jit_tls_data): Use the nice way of
19273         getting TLS offsets on AMD64 too.
19274
19275 2005-07-20  Kornel Pal <kornelpal@hotmail.com>
19276
19277         * driver.c: Detach console when executing IMAGE_SUBSYSTEM_WINDOWS_GUI on win32
19278
19279 Wed Jul 20 18:05:19 BST 2005 Paolo Molaro <lupus@ximian.com>
19280
19281         * exceptions-arm.c, mini-arm.c, tramp-arm.c, cpu-arm.md,
19282         inssel-arm.brg, mini-arm.h: ARM port work in progress.
19283
19284 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
19285
19286         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix build.
19287
19288         * mini.h mini.c mini-*.h tramp-*.c: Move more cross platform trampoline code
19289         to mini.c.
19290
19291         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Call 
19292         mono_sparc_is_virtual_call ().
19293         
19294         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix warning.
19295
19296         * tramp-sparc.c (mono_arch_create_trampoline_code): Fix order of
19297         trampoline parameters.
19298
19299         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix signature.
19300         
19301         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Rename this
19302         to mono_arch_get_vcall_slot_addr.
19303
19304         * Makefile.am tramp-sparc.c: Update the sparc port to use the generic
19305         trampoline code.
19306
19307         * *-sparc.*: Merge the mini-xp-regalloc branch for sparc.
19308
19309 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
19310
19311         * mini-ia64.h mini-ia64.c: Finish pinvoke support.
19312
19313 2005-07-19  Martin Baulig  <martin@ximian.com>
19314
19315         * exceptions-amd64.c (throw_exception): Call
19316         mono_debugger_throw_exception() here like we're doing it on i386.
19317
19318 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
19319
19320         * mini-ia64.c: Add optimized TLS access support.
19321
19322 2005-07-18  Zoltan Varga  <vargaz@freemail.hu>
19323
19324         * mini-exceptions.c: Ongoing IA64 work.
19325
19326         * mini-ia64.c inssel-long.brg: Ongoing IA64 work.
19327
19328         * mini.c: Use the default optimization set when embedding. Fixes
19329         #75194.
19330
19331 2005-07-11  Zoltan Varga  <vargaz@freemail.hu>
19332
19333         * tramp-amd64.c tramp-ia64.c Makefile.am: Move arch independent parts 
19334         of trampolines to a separate file.
19335
19336         * mini-trampolines.c: New file.
19337
19338         * mini.h tramp-x86.c: Move arch independent parts of trampolines to a 
19339         separate file.
19340         
19341         * tramp-x86.c: Reorganize the trampoline code to be similar to the 
19342         amd64/ia64 code.
19343
19344         * mini-codegen.c: Fix cygwin build.
19345
19346 2005-07-10  Zoltan Varga  <vargaz@freemail.hu>
19347
19348         * mini.c: Add some minor changes needed by the IA64 port.
19349
19350         * *-ia64.*: Ongoing IA64 work.
19351
19352 2005-07-09  Zoltan Varga  <vargaz@freemail.hu>
19353
19354         * tramp-amd64.c mini-amd64.c: Update after latest AOT changes. Split 
19355         trampolines into arch-independent and arch-dependent parts.
19356
19357         * mini-amd64.c (mono_arch_lowering_pass): Fix store_membase_imm -> store_membase_reg rule.
19358
19359 2005-07-08  Zoltan Varga  <vargaz@freemail.hu>
19360
19361         * cpu-amd64.md: Merge the xp-regalloc-branch for amd64.
19362
19363         * mini-ops.h mini-amd64.h mini-amd64.c inssel-amd64.brg Makefile.am: Merge
19364         the xp-regalloc-branch for amd64.
19365
19366         * mini-x86.h mini-x86.c cpu-pentium.md Makefile.am: Merge the
19367         xp-regalloc-branch for x86.
19368
19369 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
19370
19371         * inssel.brg (OP_THROW_OR_NULL): Allways rethrow the abort exception.
19372
19373 2005-07-06  Martin Baulig  <martin@ximian.com>
19374
19375         * mini.c
19376         (mono_jit_compile_method_inner): Call mono_get_inflated_method().
19377         (mono_jit_runtime_invoke): Likewise.
19378
19379 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
19380
19381         * aot.c (mono_compile_assembly): Allocate the GOT in the .bss segment
19382         on x86 too.
19383         
19384         * aot.c: Add new mono_aot_get_method_from_token () function to load AOT methods
19385         without loading their metadata. Reorganize the file format so exception handling+
19386         debug info is kept separate from normal method info. Create MonoJitInfo 
19387         structures for methods lazily.
19388
19389         * tramp-x86.c (x86_aot_trampoline): Use the new from_token method to avoid
19390         loading metadata.
19391         (x86_class_init_trampoline): Patch AOT class init trampolines too.
19392
19393         * mini.c (mini_init): Install the new mono_aot_find_jit_info hook.
19394
19395         * mini.c (mono_method_to_ir): Reduce the number of class init trampoline calls
19396         in AOT code.
19397
19398         * mini.h: Bump AOT file version.
19399
19400 2005-07-04  Zoltan Varga  <vargaz@freemail.hu>
19401
19402         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
19403
19404 2005-07-01  Raja R Harinath  <rharinath@novell.com>
19405
19406         * Makefile.am (check-local): Call semdel-wrapper.
19407
19408 2005-06-29  Zoltan Varga  <vargaz@freemail.hu>
19409
19410         * mini-x86.c: Revert the last change as it seems to break the build..
19411
19412 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
19413
19414         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
19415         
19416         * mini-x86.c (mono_arch_cpu_init): Fix setting of fp precision in the VC build.
19417
19418 2005-06-27  Ben Maurer  <bmaurer@ximian.com>
19419
19420         * mini.c (NEW_AOTCONST): make sure to call mono_get_got_var
19421         outside of the macro, so strange stuff doesn't happen with gcc4
19422         (NEW_AOTCONST_TOKEN): Likewise.
19423
19424 2005-06-28  Martin Baulig  <martin@ximian.com>
19425
19426         * mini.c (mini_class_is_system_array): New static method; use this
19427         instead of `klass->parent == mono_defaults.array_class' everywhere
19428         since this also works for the new generic array class.
19429
19430 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
19431
19432         * inssel.brg: Remove warnings.
19433
19434 2005-06-24  Zoltan Varga  <vargaz@freemail.hu>
19435
19436         * mini-ia64.c: Ongoing IA64 work.
19437
19438         * basic-float.cs: Add float->i1 conversion test.
19439
19440         * iltests.il: Add conv.u4 test.
19441
19442 2005-06-23  Zoltan Varga  <vargaz@freemail.hu>
19443
19444         * inssel-long.brg: Fix bug caused by last change.
19445
19446 2005-06-23  Geoff Norton  <gnorton@customerdna.com>
19447
19448         * mini-x86.h: Add __APPLE__ to the SC_* redefines with the other 
19449         BSDs.  Allows the x86 JIT to work on OSX86
19450
19451 2005-06-22  Zoltan Varga  <vargaz@freemail.hu>
19452
19453         * inssel-long.brg: Use OP_LSHR_UN_IMM instead of OP_SHR_UN_IMM in
19454         u4->i8 conversion.
19455
19456         * mini-ia64.c: Ongoing IA64 work.
19457
19458 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
19459
19460         * mini-ia64.c: Ongoing IA64 work.
19461
19462         * driver.c: Clean up jit_code_hash as well when using --regression.
19463
19464         * inssel-long.brg: Fix long->i4/u4 conversion rules.
19465
19466         * basic-long.cs: Add tests for long->u4 conversion.
19467
19468 2005-06-18  Ben Maurer  <bmaurer@ximian.com>
19469
19470         * mini.c: Take mono_get_domainvar out of macros. This makes sure
19471         that we do not depend on undefined C behavior: the order stuff
19472         gets evaluated within an expression. Fixes mono when compiled on
19473         GCC 4.
19474
19475 2005-06-18  Zoltan Varga  <vargaz@freemail.hu>
19476
19477         * *-ia64.*: Ongoing IA64 work.
19478
19479         * aot.c: Lower memory usage while loading AOT methods.
19480
19481         * tramp-x86.c: Avoid allocating+freeing MonoJitInfo structures.
19482
19483         * mini.h: Bump AOT file format version.
19484
19485 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
19486
19487         * mini.c (mono_method_to_ir): Allow STACK_PTR as input to SWITCH.
19488
19489 2005-06-16  Sebastien Pouliot  <sebastien@ximian.com>
19490
19491         * declsec.c: Fixed APTC to check for FullTrust on caller assembly (and
19492         not on callee assembly). Fixed some comments.
19493
19494 2005-06-16  Zoltan Varga  <vargaz@freemail.hu>
19495
19496         * aot.c (mono_compile_assembly): Mark the "methods" symbol as a function so
19497         it gets proper disassembly.
19498         (emit_method_info): Remove some dead code.
19499
19500         * mini.c (mini_method_compile): Allways allocate the GOT var in
19501         mono_method_to_ir for emulating opcodes.
19502
19503 2005-06-13  Zoltan Varga  <vargaz@freemail.hu>
19504
19505         * mini.c (mono_jit_free_method): Remove the method from the JitInfo table
19506         before freeing the code memory. Fixes #74990.
19507
19508         * objects.cs: Add regression test for #74992.
19509
19510         * liveness.c: Extend live ranges of arguments to the beginning of the
19511         method. Fixes #74992.
19512
19513         * exceptions-ia64.c mini-ia64.h: Modify ip during exception handling
19514         so it points into the faulting instruction.
19515
19516 2005-06-12  Zoltan Varga  <vargaz@freemail.hu>
19517
19518         * jit-icalls.c (mono_imul_ovf): Add exception handling.
19519
19520         * *-ia64.*: Ongoing IA64 work.
19521
19522         * mini.c (mini_init): Fix signature of mono_delegate_ctor.
19523
19524 2005-06-11  Zoltan Varga  <vargaz@freemail.hu>
19525
19526         * mini-ia64.h exceptions-ia64.c: Ongoing IA64 work.
19527
19528         * *-ia64.*: Ongoing IA64 work.
19529
19530 2005-06-10  Zoltan Varga  <vargaz@freemail.hu>
19531
19532         * basic-long.cs: Add tests for add/sub.ovf.
19533
19534         * basic.cs: Add tests for sub.ovf.
19535
19536         * *-ia64.*: Ongoing IA64 work.
19537
19538 2005-06-09  Zoltan Varga  <vargaz@freemail.hu>
19539
19540         * *-ia64.*: Ongoing IA64 work.
19541
19542         * basic.cs: Add conv.ovf.i4.un test.
19543
19544 2005-06-09  Massimiliano Mantione  <massi@ximian.com>
19545
19546         * mini.c: (remove_block_if_useless) Fixed bug 75061.
19547         
19548 2005-06-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19549
19550         * mini.c: no SIGUSR2 on windows. Remove it for PLATFORM_WIN32.
19551
19552 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
19553
19554         * *-ia64.*: Ongoing IA64 work.
19555
19556 2005-06-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19557
19558         * trace.[ch]:
19559         * mini.c: added the ability to toggle trace on/off using SIGUSR2.
19560
19561 2005-06-04  Zoltan Varga  <vargaz@freemail.hu>
19562
19563         * mini-ia64.c mini-ia64.h: Fix cleanup of memory stack.
19564
19565 2005-06-03  Zoltan Varga  <vargaz@freemail.hu>
19566
19567         * mini-amd64.c (emit_call): Fix yet another bug in the near call optimization.
19568
19569         * mini-amd64.c (amd64_patch): Add an assert to check that the destination
19570         of a call is callable by a near call.
19571
19572 2005-05-31  Zoltan Varga  <vargaz@freemail.hu>
19573
19574         * mini-ia64.c: Ongoing IA64 work.
19575
19576 2005-05-29  Zoltan Varga  <vargaz@freemail.hu>
19577
19578         * genmdesc.c: Make the generated array non-static.
19579
19580         * inssel-long.brg: Fix LSHR_IMM rule.
19581
19582         * *-ia64.*: Ongoing IA64 work.
19583
19584         * *-ia64.*: Ongoing IA64 work.
19585
19586 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
19587
19588         * *-ia64.*: Ongoing IA64 work.
19589
19590         * *-ia64.*: Ongoing IA64 work.
19591         
19592         * mini-ia64.c: Ongoing IA64 work.
19593
19594         * *-ia64.* jit-icalls.c mini-codegen.c: Ongoing IA64 work.
19595
19596 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
19597
19598         * objects.cs basic-calls.cs: Move some tests to objects.cs.
19599         
19600         * objects.cs basic-long.cs: Move some tests to objects.cs.
19601
19602 2005-05-26  Zoltan Varga  <vargaz@freemail.hu>
19603
19604         * *-ia64.*: Ongoing IA64 work.
19605
19606         * iltests.il: Add a new test.
19607
19608         * mini.c (mono_method_to_ir): Initialize valuetypes when created using
19609         newobj. Fixes #75042.
19610
19611 2005-05-22  Zoltan Varga  <vargaz@freemail.hu>
19612
19613         * *-ia64.*: Ongoing IA64 work.
19614         
19615         * *-ia64.*: Ongoing IA64 work.
19616         
19617         * *-ia64.*: Ongoing IA64 work.
19618
19619         * basic.cs objects.cs: Move tests accessing static variables as well.
19620
19621         * basic.cs objects.cs: Move test_0_pin_string to objects.cs.
19622
19623 2005-05-21  Zoltan Varga  <vargaz@freemail.hu>
19624
19625         * mini.c (SIG_HANDLER_SIGNATURE): Fix warning.
19626
19627         * driver.c: Always print failed tests.
19628
19629         * mini-codegen.c: Use cfg->frame_reg instead of a macro for the
19630         frame pointer.
19631
19632         * *ia64*: Ongoing IA64 work.
19633
19634 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
19635
19636         * basic.cs: Add tests for add.ovf. Fix warnings.
19637
19638 2005-05-18  Miguel de Icaza  <miguel@novell.com>
19639
19640         * driver.c (mono_main): Avoid crash if no argument is passed to
19641         --break;  Do not use g_error, but f_printf.   And fix all other
19642         ocurrences of the same crash.
19643
19644 2005-05-17  Zoltan Varga  <vargaz@freemail.hu>
19645
19646         * mini.h mini.c: Generalize the existing uses of the MONO_DEBUG env variable
19647         and add a new one: aborting when a SIGSEGV is raised while in unmanaged code.
19648         Fixes #74742.
19649
19650 2005-05-14  Zoltan Varga  <vargaz@freemail.hu>
19651
19652         * *-ia64.*: Add beginnings of IA64 backend.
19653
19654         * Makefile.am mini-arch.h mini-codegen.c: Add IA64 support.     
19655
19656 2005-05-13  Zoltan Varga  <vargaz@freemail.hu>
19657
19658         * inssel-long.brg: Add missing ulong->{i1, i2} checked conversions.
19659         Fixes #74925.
19660
19661         * basic-long.cs exceptions.cs: Add new tests. Fix some warnings.
19662
19663         * mini-amd64.c: Fix a warning.
19664
19665 2005-05-10  Zoltan Varga  <vargaz@freemail.hu>
19666
19667         * mini-amd64.c (mono_arch_output_basic_block): Fix stack space leakage
19668         in float_neg. Fixes #74897.
19669
19670         * mini-amd64.c (emit_call): Fix another near call bug.
19671
19672 2005-05-06  Sebastien Pouliot  <sebastien@ximian.com>
19673
19674         * declsec.c: Keep the appdomain information in the structure. Added a 
19675         missing "return FALSE" for Unmanaged if FullTrust is set (or else the
19676         value gets overwritten).
19677         * declsec.h: Set the default MonoArray for the the stack to 6. Added
19678         an MonoAppDomain member to MonoSecurityFrame.
19679         * mini-exceptions.c: Do not use a glist to keep GC allocated objects
19680         used in the stack walk. Now use a MonoArray which grow (double) when
19681         it gets full.
19682
19683 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
19684
19685         * mini.c: Re-enabled runtime cleanup, since running threads should
19686         now properly stop when exiting.
19687
19688 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
19689
19690         * mini-codegen.c: New file contaning the arch-independent local
19691         register allocator. Not used by any architectures yet.
19692
19693         * mini.h linear-scan.c: Merge some changes from the 
19694         mini-xp-local-regalloc branch.
19695
19696 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
19697
19698         * mini-amd64.c (emit_call): Fix calls to native functions when the
19699         runtime is compiled as a shared library. Fixes #74756.
19700
19701         * mini.c (mono_method_to_ir): Assert if ldsfld and friends are used
19702         on a literal field. Fixes #74751.
19703
19704 2005-04-25  Raja R Harinath  <rharinath@novell.com>
19705
19706         * Makefile.am (RUNTIME): Add MONO_CFG_DIR.
19707
19708 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
19709
19710         * objects.cs: Add missing null casting test.
19711
19712 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
19713
19714         * mini-exceptions.c (mono_find_jit_info): Fix native offset calculation
19715         in wrapper methods. Also rename 'address' variable to 'offset'.
19716
19717 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
19718
19719         * mini.c debug-mini.c aot.c tramp-x86.c driver.c: Fix some gcc 4.0
19720         warnings.
19721         
19722         * Makefile.am (MCS): Use -unsafe instead of --unsafe.
19723
19724         * aot.c: Applied patch from "The Software Team" <software@solmersa.com>. Make AOT compilation
19725         work on windows.
19726
19727 Mon Apr 18 16:20:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
19728
19729         * exceptions-ppc.c: update code to handle stack traces (fixes bug #74452).
19730
19731 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
19732
19733         * mini-x86.c (mono_emit_stack_alloc): Initialize the whole allocated area not
19734         just the last bytes.
19735
19736 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
19737
19738         * aot.c (mono_compile_assembly): Fix warning.
19739
19740         * mini-exceptions.c (ves_icall_get_frame_info): Fix bug introduced
19741         by the _MSC_VER stuff.
19742
19743 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
19744
19745         * inssel-long.brg: Fix #74588.
19746
19747         * cpu-amd64.md: Fix #74591.
19748
19749         * iltests.il: Add new regression tests.
19750
19751 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
19752
19753         * trace.c (mono_trace_enter_method): Print enums as an int, not as a
19754         valuetype.
19755
19756 2005-04-11  Zoltan Varga  <vargaz@freemail.hu>
19757
19758         * mini-x86.c (setup_stack): Unconditionally call pthread_attr_init ().
19759
19760         * exceptions-x86.c mini-x86.h mini-x86.c: Applied some freebsd patches 
19761         from Bill Middleton <flashdict@gmail.com>.
19762
19763 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
19764
19765         * arrays.cs: Add new regression test. Fix warnings.
19766
19767 2005-04-09  Zoltan Varga  <vargaz@freemail.hu>
19768
19769         * mini-amd64.c (mono_arch_output_basic_block): Fix stack alignment
19770         and leakage in CKFINITE.
19771
19772         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Change
19773         this to a null op since it is called on amd64 too.
19774
19775         * exceptions-amd64.c (get_throw_trampoline): Align stack.
19776
19777         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Remove
19778         body since this is not used on amd64.
19779         
19780         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Remove duplicate define.
19781
19782         * mini-amd64.c: Remove obsolete fixmes.
19783
19784         * mini.c (print_method_from_ip): Fix debugging support.
19785
19786 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
19787
19788         * ssapre.c: Fix a subtle bug about availability, and limit SSAPRE
19789         so that expressions that don't give much gain are not reduced.
19790         * ssapre.h: Likewise.
19791
19792 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
19793
19794         * exceptions-x86.c (mono_arch_find_jit_info): Remove last SC_EBP reference.
19795
19796         * mini-x86.c (mono_emit_stack_alloc): Fix localloc under windows.
19797
19798         * mini-x86.h exceptions-x86.c: Hopefully fix compilation on *BSD.
19799
19800 2005-04-01  Zoltan Varga  <vargaz@freemail.hu>
19801
19802         * mini-sparc.c mini-sparc.h: Add asserts when running with sigaltstack.
19803
19804         * exceptions-x86.c (mono_arch_monoctx_to_sigctx): Fix cygwin build.
19805
19806 2005-03-31  Zoltan Varga  <vargaz@freemail.hu>
19807
19808         * mini-x86.c: If sigaltstack support is enabled, perform win32 style
19809         stack touching.
19810
19811         * mini.h (mono_arch_sigctx_to_monoctx): New arch-specific function.
19812
19813         * mini.h (mono_arch_monoctx_to_sigctx): New arch-specific function.
19814
19815         * mini.c: sigaltstack support requires MONO_ARCH_USE_SIGACTION.
19816
19817         * mini-x86.h mini-x86.c exceptions-x86.c: Add support for 
19818         MONO_ARCH_USE_SIGACTION. Fixes #74252.
19819
19820         * mini-x86.h: Enable MONO_ARCH_USE_SIGACTION on linux.
19821
19822         * mini-x86.c: Fix up stack overflow handling.   
19823
19824         * exceptions.cs: Add new regression test.
19825
19826 2005-03-30  Zoltan Varga  <vargaz@freemail.hu>
19827
19828         * mini-x86.c (mono_arch_emit_prolog): Adjust stack after calls to
19829         mono_jit_thread_attach.
19830
19831         * mini.c (mono_method_to_ir): Verify called method is not abstract.
19832
19833 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
19834
19835         * mini.c (mono_method_to_ir): Applied Ben's patch from bug #61441 to
19836         avoid calling constructors using callvirt.
19837
19838         * inssel.brg: Fix #74073.
19839
19840 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
19841
19842         * aot.c, mini.h: Added mono-compiler.h header to allow/ease 
19843         compilation with non-GCC compilers.
19844         * mini-exceptions.c, mini-x86.c|h: Patches to make compilation of mono
19845         possible using VS.NET. Adapted from the work of J Lothian (for VC6).
19846
19847 Tue Mar 29 11:43:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
19848
19849         * inssel.brg, arrays.cs: fix long standing 64 bit issue in access to
19850         klass->interface_offsets (will likely fix bug#74073).
19851
19852 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
19853
19854         * mini-amd64.c (mono_arch_is_int_overflow): Fix rex handling.
19855
19856 2005-03-28  Zoltan Varga  <vargaz@freemail.hu>
19857
19858         * mini-amd64.c (mono_arch_output_basic_block): Fix order of parameters
19859         to amd64_div_reg_size ().
19860         
19861         * mini-amd64.c (mono_arch_emit_exceptions): Emit a near call here too.
19862
19863 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
19864
19865         * cpu-amd64.md (store_membase_reg): Fix length of storer8 opcodes.
19866
19867 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
19868
19869         * driver.c: Turn off automatic command line globbing under windows. Fixes #73763.
19870
19871 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
19872
19873         * mini.c (mono_method_to_ir): Remove debugging stuff left in by mistake.
19874         
19875         * mini.c (mono_precompile_assembly): Load and precompile referenced
19876         assemblies as well. Fixes #74015.
19877
19878 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
19879
19880         * cpu-amd64.md (sin): Fix up maximum lengths of some opcodes.
19881
19882 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
19883
19884         * declsec.c: Skip linkdemand checks for intra-corlib calls. This skips
19885         a lot of checks and (anyway) permissions cannot work until corlib is 
19886         loaded.
19887
19888 Wed Mar 23 14:29:49 CET 2005 Paolo Molaro <lupus@ximian.com>
19889
19890         * mini-ppc.c: fixed ABI issue on sysv/ppc.
19891
19892 Tue Mar 22 19:03:17 CET 2005 Paolo Molaro <lupus@ximian.com>
19893
19894         * tramp-ppc.c, exceptions-ppc.c: added missing icache flush
19895         calls (fixes bug#72824).
19896
19897 Tue Mar 22 16:28:48 CET 2005 Paolo Molaro <lupus@ximian.com>
19898
19899         * mini.c: fix tail recursion elimination (see test in bug#73936).
19900
19901 2005-03-21  Zoltan Varga  <vargaz@freemail.hu>
19902
19903         * mini-amd64.c (mono_arch_output_basic_block): Add inline versions of
19904         some fp functions in sse2 mode.
19905
19906 2005-03-20  Zoltan Varga  <vargaz@freemail.hu>
19907
19908         * mini-x86.c (emit_tls_get): Move tls handling into a separate helper function.
19909
19910 2005-03-19  Zoltan Varga  <vargaz@freemail.hu>
19911
19912         * mini.h mini.c: Add mono_get_jit_tls_key ().
19913
19914         * mini-x86.c: Enable fast TLS support on windows.
19915
19916 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
19917
19918         * declsec.c: Renamed aptc to allowpartiallytrustedcallers.
19919         * mini.c: Check for p/invoke method when generating code. If a
19920         p/invoke method, or it's class, isn't decorated with [Suppress
19921         UnmanagedCodeSecurity] then generate code to call System.Security.
19922         UnmanagedDemand (only if the security manager is active).
19923
19924 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
19925
19926         * tramp-amd64.c (create_specific_trampoline): Revert parts of the 
19927         last change as it seems to cause strange crashes.
19928         
19929 Wed Mar 16 16:24:11 CET 2005 Paolo Molaro <lupus@ximian.com>
19930
19931         * *.c: handle unsafe function pointers where needed.
19932
19933 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
19934
19935         * mini.c (mono_jit_free_method): Remove the fixme too.
19936
19937 2005-03-15  Miguel de Icaza  <miguel@novell.com>
19938
19939         * mini.c: As discussed, make the code actually free the delegate
19940         thunk now, to enable the debugging of delegate problems, use
19941         MONO_DEBUG=1 when running Mono. 
19942
19943         This takes also care of parts of the leaks as seen by Joe.
19944
19945 2005-03-15  Zoltan Varga  <vargaz@freemail.hu>
19946
19947         * mini-amd64.c (mono_arch_setup_jit_tls_data): Enable 
19948         thread_tls_offset calculation.
19949
19950 2005-03-14  Sebastien Pouliot  <sebastien@ximian.com>
19951
19952         * declsec.c: Reworked linkdemand checks for icall. The previous code
19953         was using the declaration code (untrusted) and didn't work as expected
19954         with the CLR 2.0. We're now more compatible with 2.0 than 1.x for this
19955         specific case.
19956
19957 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
19958
19959         * iltests.il: Add new localloc test.
19960
19961         * mini-amd64.c: Handle large stack allocations the same way as on
19962         windows if stack overflow handling is working.
19963         
19964         * mini-amd64.c: Allocate the signal stack using mmap.
19965
19966         * mini.c (sigsegv_signal_handler): Fix reading of context.
19967
19968         * mini-exceptions.c: Fix up stack overflow handling.
19969
19970         * mini-amd64.h mini-amd64.c: Fix up stack overflow handling.
19971
19972         * tramp-amd64.c (create_specific_trampoline): Optimize trampoline size.
19973
19974         * exceptions-amd64.c (mono_amd64_exceptions_init): Remove this.
19975
19976         * mini.h mini.c tramp-*.c: Move common trampoline code to mini.c.
19977
19978         * mini-x86.h mini-x86.c mini-amd64.h mini-amd64.c: Get rid of the
19979         tramp_init functions as they are no longer needed.
19980
19981 2005-03-12  Zoltan Varga  <vargaz@freemail.hu>
19982
19983         * tramp-amd64.c (mono_amd64_tramp_init): Fix typo.
19984         
19985         * tramp-amd64.c (mono_amd64_tramp_init): Init AOT trampoline as well.
19986
19987         * mini-amd64.h mini-amd64.c (mono_amd64_exceptions_init): Remove this.
19988         
19989         * mini.c mini-*.h: Remove OUT_OF_LINE_BBLOCK defines since all arches
19990         support that now.
19991
19992         * mini-ops.h: Add OP_LMUL_IMM.
19993
19994         * mini.c jit-icalls.cmini-amd64.h mini-amd64.c cpu-amd64.md: Implement
19995         long mul/div opcodes as intrinsic.
19996
19997         * mini-amd64.c (emit_call): Handle the case when the callee might be
19998         an AOT method.
19999
20000 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
20001
20002         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Reorder cases to be
20003         extra safe.
20004         
20005         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Fix ordering of cases.
20006
20007         * aot.c (mono_aot_load_method): Get rid of bogus make_writable call.
20008
20009 2005-03-09  Ben Maurer  <bmaurer@ximian.com>
20010
20011         * mini.c (mono_codegen): Don't leak here, to help people running
20012         monogrind.
20013
20014 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
20015
20016         * mini-amd64.c (mono_arch_output_basic_block): Fix int->float 
20017         conversions in sse2 mode.
20018
20019         * basic-float.cs: Add regression test.
20020         
20021         * mini-amd64.c: Reenable sse2.
20022
20023 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
20024
20025         * mini-amd64.c: Disable sse2 until some regressions are fixed.
20026
20027 2005-03-07      Joerg Rosenkranz <joergr@voelcker.com>
20028
20029         * driver.c: Copyright text should include 2005.
20030         
20031 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
20032
20033         * cpu-amd64.md (load_membase): Fix more max lengths.
20034
20035 2005-03-06  Zoltan Varga  <vargaz@freemail.hu>
20036
20037         * cpu-amd64.md (load_membase): Fix max length.
20038
20039         * mini-ops.h: Add OP_F<xx>_MEMBASE opcodes.
20040
20041         * inssel.brg: Add MONO_EMIT_BIALU_MEMBASE macro.
20042
20043         * cpu-amd64.md inssel-amd64.brg mini-amd64.h mini-amd64.brg: Finish SSE2
20044         support and enable it by default. Also add OP_F<xxx>_MEMBASE opcodes.
20045
20046         * basic-float.cs: Add rounding regression test.
20047
20048         * mini-amd64.c (INST_IGNORES_CFLAGS): Add more instructions.
20049
20050 2005-03-04  Neale Ferguson <NealeFerguson@earthlink.net>
20051
20052         * inssel-s390.brg, mini-s390.c: Add support for passing/returning small
20053         structures in registers for pinvoke wrappers.
20054
20055 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
20056
20057         * mini-exceptions.c (ves_icall_get_trace): Return wrapper info as well.
20058
20059 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
20060
20061         * mini.h mini.c mini-x86.c: Pass the domain of the native->managed
20062         wrapper to mono_jit_thread_attach.
20063
20064         * mini.c (mini_jit_thread_attach): New jit icall.
20065
20066         * mini-x86.c (mono_arch_emit_prolog): Attach to the VM in 
20067         native->managed wrappers.
20068
20069         * exceptions.cs: Add new regression test.
20070
20071         * mini.c (optimize_branches): Check regions in the cbranch to throw
20072         block case as well. Fixes #73242.
20073
20074 Tue Mar 1 18:35:27 CET 2005 Paolo Molaro <lupus@ximian.com>
20075
20076         * mini.c: thread safety fixes.
20077
20078 2005-02-27  Zoltan Varga  <vargaz@freemail.hu>
20079
20080         * tramp-amd64.c (amd64_magic_trampoline): Disable the method_ptr
20081         patching stuff, since delegates use jump trampolines so there is
20082         no caller.
20083
20084         * tramp-amd64.c (create_trampoline_code): Pass NULL as 'code' in 
20085         jump trampolines.
20086         
20087         * tramp-amd64.c: Fix build.
20088
20089         * mini-x86.c tramp-x86.c: Moved get_vtable_slot_addr into mini-x86.c and rename
20090         it to mono_arch_.... Add get_delegate_method_ptr implementation for x86.
20091
20092         * mini-amd64.h mini.h mini-amd64.c tramp-amd64.c (mono_amd64_get_vcall_slot_addr):
20093         Rename this to mono_arch....
20094         (mono_amd64_get_delegate_method_ptr_addr): Ditto.
20095
20096         * mini-amd64.c (mono_amd64_get_delegate_method_ptr_addr): New helper function.
20097
20098         * mini-amd64.c (emit_call): If both the caller and the callee is
20099         guaranteed to have 32 bit addresses, emit a normal call.
20100
20101         * tramp-amd64.c: Adapt to changes in mini-amd64.c.
20102
20103         * tramp-amd64.c (amd64_magic_trampoline): Remove patching of trampolines. 
20104         * tramp-amd64.c (amd64_magic_trampoline): Add support for patching the
20105         method_ptr inside delegates.
20106
20107 2005-02-26  Zoltan Varga  <vargaz@freemail.hu>
20108
20109         * mini.c (mono_jit_free_method): Free the method info even if the native code is
20110         invalidated. Fixes #73001.
20111
20112         * mini.c: Add a proper icall wrapper for mono_delegate_ctor.
20113
20114         * mini-x86.c: Only use stdcall for pinvokes on windows.
20115
20116 Thu Feb 24 15:22:30 CET 2005 Paolo Molaro <lupus@ximian.com>
20117
20118         * mini.c, mini.h: make mono_lmf_addr a fast-access thread var.
20119         * mini-x86.c: remove unreliable __thread var offset detection,
20120         use the correct accessors and enable by default.
20121
20122 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
20123
20124         * mini.c (mono_jit_free_method): Fix memory leak.
20125
20126 2005-02-22  Zoltan Varga  <vargaz@freemail.hu>
20127
20128         * mini.c (mono_method_to_ir): Allocate a GOT var for THROW and RETHROW. 
20129
20130 2005-02-21  Zoltan Varga  <vargaz@freemail.hu>
20131
20132         * cpu-amd64.md: Fix lengths of atomic opcodes.
20133
20134 Mon Feb 21 16:52:20 CET 2005 Paolo Molaro <lupus@ximian.com>
20135
20136         * driver.c: try to not imply using ICU is any good.
20137
20138 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
20139
20140         * mini-amd64.c (mono_arch_get_inst_for_method): Implement more 
20141         functions as inline ops.
20142
20143         * mini-ops.h inssel-amd64.brg cpu-amd64.md mini-amd64.c: Implement
20144         some Interlocked functions as inline ops.
20145
20146         * mini.c (move_basic_block_to_end): Fix bug in last patch.
20147
20148         * mini.h (MonoBasicBlock): Reorganize fields a bit.
20149
20150         * mini-ops.h inssel.brg: Add OP_NOT_REACHED.
20151
20152         * mini.c: Add support for OP_NOT_TAKEN.
20153
20154         * mini-amd64.h mini-amd64.c: Add support for passing/returning small 
20155         structures in registers for pinvoke wrappers.
20156
20157         * mini-amd64.c: Fix warnings.
20158
20159 2005-02-19  Zoltan Varga  <vargaz@freemail.hu>
20160
20161         * mini.h (MonoCompile): Add 'ret_var_is_local' field.
20162
20163         * mini.h mini.c (mono_arch_create_vars): Add new arch specific hook.
20164
20165         * mini.c (NEW_RETLOADA): If the ret variable is a local, use its 
20166         address instead of loading the address from it.
20167
20168         * mini-x86.c: Add support for returning small structs in registers
20169         on Win32. Fixes part of #70864.
20170         
20171 2005-02-18  Zoltan Varga  <vargaz@freemail.hu>
20172
20173         * trace.c (get_token): Improve error checking.
20174
20175 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
20176
20177         * jit-icalls.c (mono_ldvirtfn): Explicitly check for a NULL obj here.
20178
20179 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com> 
20180  
20181         * mini.h: Moved MONO_EXCEPTION_* enum to metadata/class-internals.h so
20182         it can be reused for MonoClass.
20183         * mini.c: Renamed MONO_EXCEPTION_SECURITY to MONO_EXCEPTION_SECURITY
20184         _LINKDEMAND.
20185
20186 2005-02-15  Sebastien Pouliot  <sebastien@ximian.com>
20187
20188         * mini.c: Fixed 2 cases where I sent a MonoMethod to managed code 
20189         instead of a MonoReflectionMethod. The method information wasn't used
20190         when displaying SecurityException details (but will be now).
20191
20192 2005-02-15  Atsushi Enomoto  <atsushi@ximian.com>
20193
20194         * Makefile.am : windows build fix.
20195
20196 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
20197
20198         * iltests.il: Add new regression test.
20199
20200         * mini.c (mono_method_to_ir): Allocate a GOT var in CEE_NEWOBJ. Fixes
20201         #72522.
20202
20203 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com> 
20204  
20205         * mini.c: Moved linkdemand check into helper function check_linkdemand
20206         to allow reuse for all intructions (CALL, CALLVIRT, NEWOBJ, JMP, 
20207         LDFTN, LDVIRTFTN).
20208
20209 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com>
20210
20211         * declsec.c: Added statistics counter for different kinds of 
20212         LinkDemands.
20213         * mini.h: Added CAS statistic counters to MonoJitStats. Removed unused
20214         (and commented) declaration.
20215         * mini.c: Added statistics counter for security Demand code 
20216         generation. Added display of security statistics.
20217
20218 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
20219
20220         * declsec.c (mono_declsec_linkdemand_aptc): Applied patch from Robert Jordan (robertj@gmx.net).
20221         Fix compilation errors under gcc-2.95.
20222
20223 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
20224
20225         * mini.c, driver.c: Use the new jit trampoline hashtable
20226
20227 Fri Feb 11 18:47:11 CET 2005 Paolo Molaro <lupus@ximian.com>
20228
20229         * mini.c, jit-icalls.c: use the managed implementation of memcpy, too.
20230
20231 2005-02-11  Martin Baulig  <martin@ximian.com>
20232
20233         * debug-mini.c (mono_debug_close_method): Free the line number array.
20234
20235 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
20236
20237         * aot.c: Break up large methods into smaller ones. Share GOT slots for
20238         icalls.
20239
20240         * mini.h: Bump AOT file format version. 
20241
20242 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
20243
20244         * declsec.c: Added LinkDemand support and it's special cases for ECMA,
20245         APTC and P/Invoke.
20246         * declsec.h: Added macros to get/set lazyly initialized security 
20247         informations about assemblies. Added new enum for different type of
20248         possible LinkDemand violation. Added function to check LinkDemands.
20249         * mini.h: Added a field to MonoCompile to hold any security violation
20250         detected when JITting a method (so it can be thrown later).
20251         * mini.c: Added LinkDemand checks in mono_method_to_ir for CEE_CALL 
20252         and CEE_CALLVIRT. Added code to throw exception at the end of
20253         mini_method_compile (note: the exception is unhandled right now).
20254
20255 Thu Feb 10 15:49:44 CET 2005 Paolo Molaro <lupus@ximian.com>
20256
20257         * mini.c, jit-icalls.c: use the managed implementation of
20258         memset for initobj and memset, to avoid managed <-> unmanaged
20259         transitions.
20260
20261 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
20262
20263         * inssel.brg (mini_emit_virtual_call): Disable the virtual->nonvirtual
20264         optimization if it would need a GOT var.
20265
20266         * basic.cs: Add tests for constant propagation and switch statements.
20267
20268         * ssa.c: Fix out-of-range constant propagation and switch statements.
20269
20270 2005-02-09    <vargaz@freemail.hu>
20271
20272         * inssel-x86.brg (reg): Align the allocation size in the localloc(imm) case too.
20273
20274 2005-02-08  Zoltan Varga  <vargaz@freemail.hu>
20275
20276         * cpu-amd64.md (load_membase): Fix max length of load_membase.
20277
20278 Tue Feb 8 18:21:11 CET 2005 Paolo Molaro <lupus@ximian.com>
20279
20280         * mini.c: update to new signature of mono_class_get_allocation_ftn().
20281
20282 2005-02-06  Neale Ferguson <NealeFerguson@earthlink.net>
20283
20284         * cpu-s390.md,  mini-s390.c: Correct bug with register usage on certain 
20285         arithmetic operations.
20286
20287 Sun Feb 6 07:10:12 EST 2005 Paolo Molaro <lupus@ximian.com>
20288
20289         * mini-ppc.c: add a workaround for broken user code that
20290         DllImports vararg functions with non-vararg signatures.
20291
20292 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
20293
20294         * mini.c (mono_jit_compile_method_inner): Add detection and a 
20295         meaningfull error message for assemblies written in Managed C++.
20296
20297         * tramp-amd64.c mini-amd64.h: Add support for 
20298         create_trampoline_from_token ().
20299
20300         * aot.c mini-x86.c abcremoval.c: Applied patch from
20301         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
20302
20303 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
20304
20305         * mini.h mini.c mini-x86.h tramp-x86.c: Add a new kind of trampoline 
20306         which takes a MonoImage/token as parameter instead of a MonoMethod.
20307
20308         * aot.c: Use the new trampoline for initializing vtables.
20309
20310         * aot.c: Add support for ldfld/stfld_remote wrappers.
20311
20312         * mini-ops.h cpu-pentium.md inssel-x86.brg mini-x86.c: Add optimized
20313         rules for compare <MEM>, IMM.
20314
20315         * mini.h (MONO_AOT_FILE_VERSION): Bump it.
20316
20317         * aot.c: Handle inherited finalizers correctly.
20318
20319 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
20320
20321         * inssel.brg (stmt): Add a missing _setup_... ().
20322
20323         * aot.c: Save some parts of the class state to the AOT file and use it
20324         to recompute that state when a class is initialized.
20325
20326         * mini.c: Install AOT hooks into the runtime.
20327
20328         * mini.h: Bump AOT file format version.
20329         
20330         * mini.c (mono_method_to_ir): Initialize pointer type locals correctly.
20331         Fixes #72148.
20332
20333         * iltests.il: Add new test.
20334
20335 Wed Feb 2 16:53:59 CET 2005 Paolo Molaro <lupus@ximian.com>
20336
20337         * mini.c: fix typo.
20338
20339 Wed Feb 2 16:37:13 CET 2005 Paolo Molaro <lupus@ximian.com>
20340
20341         * mini.c: setup the statistical profiler in the thread attach
20342         callback to cope with the new single thread code.
20343
20344 Wed Feb 2 15:43:58 CET 2005 Paolo Molaro <lupus@ximian.com>
20345
20346         * mini-ppc.c: ensure we have enough room for the profiler
20347         calls (fixed bug#72084).
20348
20349 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
20350
20351         * aot.c: Get rid of the MonoAotMethod structure and the hashtable holding 
20352         it.
20353
20354 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
20355
20356         * driver.c: Re-enabled SSAPRE (two commits, I was just dumb).
20357
20358 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
20359
20360         * ssapre.c: Fixed an issue with down safety (this allows IronPython
20361         to succesfully execute parrotbench).
20362         * ssapre.h: Likewise.
20363
20364 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
20365
20366         * ssa.c: In mono_ssa_rename_vars, forced the creation of a new SSA
20367         variable for stores to method arguments (fixes a SSAPRE issue).
20368
20369 Tue Feb 1 15:52:26 CET 2005 Paolo Molaro <lupus@ximian.com>
20370
20371         * mini.c: handle value types in dup, fixes gen-112.cs.
20372
20373 Tue Feb 1 11:45:19 CET 2005 Paolo Molaro <lupus@ximian.com>
20374
20375         * mini-ppc.c, cpu-g4.md, tramp-ppc.c: use a slower code
20376         sequence for calls in dynamic methods to avoid thunks.
20377
20378 Tue Feb 1 11:44:01 CET 2005 Paolo Molaro <lupus@ximian.com>
20379
20380         * mini.c: correctly remove dynamic methods from the hashtable.
20381
20382 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20383
20384         * driver.c: Disabled SSAPRE until fix the bug that appears
20385         in IronPython's parrotbench.
20386
20387 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
20388
20389         * aot.c (mono_compile_assembly): Get rid of Skip (other) messages.
20390
20391         * mini.c (mono_method_to_ir): Revert the previous change.
20392         
20393         * mini.c (mono_method_to_ir): Do not inline ldfld and stfld wrappers
20394         when AOT compiling.
20395
20396         * tramp-x86.c (x86_magic_trampoline): Avoid calls to 
20397         mono_jit_info_table_find () etc. when running under valgrind.
20398
20399         * inssel.brg: Fix warnings.
20400
20401         * mini-exceptions.c: Fix warnings.
20402
20403 2005-01-31  Martin Baulig  <martin@ximian.com>
20404
20405         * driver.c (compile_all_methods_thread_main): Don't try to compile
20406         generic methods or anything which has type parameters.
20407
20408 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
20409
20410         * aot.c: Avoid costly calls to mono_method_full_name in tracing code and fix memory leaks.
20411
20412         * TestDriver.cs: Add --verbose flags.
20413
20414         * graph.c ssa.c: Fix 64 bit warnings.
20415         
20416         * abcremoval.h ssapre.h abcremoval.c ssapre.c mini.c tramp-amd64.c 
20417         trace.c mini-exceptions.c linear-scan.c inssel-amd64.brg inssel.brg:
20418         Fix 64 bit warnings.
20419
20420         * mini-amd64.c (mono_arch_output_basic_block): Fix uninitialized
20421         variable not spotted by gcc.
20422         
20423         * mini-amd64.c inssel-amd64.brg: Applied patch from  
20424         Willibald Krenn <Willibald.Krenn@gmx.at>. Clean up usage of 
20425         X86_COMPARE_MEMBASE opcodes.
20426
20427         * exceptions-amd64.c (mono_arch_find_jit_info): Fix AMD64 build.
20428
20429 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
20430
20431         * *: MonoMethod->signature might be NULL now. You *MUST* use
20432         mono_method_signature.
20433
20434 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
20435
20436         * driver.c (compile_all_methods_thread_main): Compile the methods
20437         without invoking cctors.
20438
20439 Fri Jan 28 18:28:26 CET 2005 Paolo Molaro <lupus@ximian.com>
20440
20441         * mini.c: remove ben's "optimizations" to dup+stloc (bug #71905).
20442         * basic-calls.cs: test for the above.
20443
20444 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
20445
20446         * mini.c mini-exceptions.c aot.c exceptions-*.c: Update after 
20447         MonoJitInfo changes.
20448
20449 2005-01-27  Zoltan Varga  <vargaz@freemail.hu>
20450
20451         * mini-exceptions.c (mono_handle_exception): Compute the stack trace
20452         eagerly if it contains dynamic methods.
20453         
20454         * mini-exceptions.c (ves_icall_System_Exception_get_trace): New icall.
20455
20456         * mini-exceptions.c (mono_handle_exception): Avoid computing the stack
20457         trace, it is now computed by an icall from trace_ips.
20458         
20459         * mini-exceptions.c: Fix a warning.
20460
20461 Thu Jan 27 13:38:34 CET 2005 Paolo Molaro <lupus@ximian.com>
20462
20463         * mini-exceptions.c: don't bother getting stack trace info if
20464         it's not going to be used.
20465
20466 2005-01-27  Raja R Harinath  <rharinath@novell.com>
20467
20468         * Makefile.am (common_sources): Add ssapre-cee-ops.h and
20469         ssapre-mini-ops.h.
20470
20471 2005-01-26  Zoltan Varga  <vargaz@freemail.hu>
20472
20473         * mini.c (remove_block_if_useless): Only print debug stuff with -v -v.
20474
20475         * aot.c: Avoid calling mono_method_get_header () if not needed.
20476
20477         * mini.h: Bump AOT file format version.
20478         
20479         * mini.c (mono_emit_native_call): Allocate a GOT var here.
20480
20481         * mini.c (mono_print_tree): Print more info for calls.
20482
20483 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
20484
20485         * declsec.h: Remove warning by adding missing include for marshal.h
20486
20487 2005-01-26  Martin Baulig  <martin@ximian.com>
20488
20489         * mini.c (mono_method_to_ir): In CEE_UNBOX_ANY, don't increase
20490         `ip' twice.
20491
20492 2005-01-25  Zoltan Varga  <vargaz@freemail.hu>
20493
20494         * mini-amd64.c (mono_arch_call_opcode): Add missing MONO_SSA_LOAD/STORE
20495         flags.
20496
20497         * ssa.c (mono_ssa_compute): Fix crashes when using AOT.
20498
20499         * aot.c (mono_compile_assembly): Fix a warning.
20500
20501 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com>
20502
20503         * declsec.c: Look for security attributes on the original MonoMethod 
20504         (and not the wrapped one). This fix permissions on icalls.
20505
20506 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
20507
20508         * mini-amd64.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
20509
20510         * mini.c (mono_allocate_stack_slots): Add a fixme.
20511
20512         * mini-x86.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
20513
20514 Sun Jan 23 16:16:48 CET 2005 Paolo Molaro <lupus@ximian.com>
20515
20516         * inssel.brg: optimize casts of sealed types (more
20517         optimizations waiting for fixes in remoting).
20518
20519 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
20520
20521         * inssel.brg (stmt): Add another dummy rule.
20522
20523         * driver.c: Fix warnings.
20524
20525         * driver.c (mono_main): If running under valgrind, instruct glib to use
20526         the system allocation functions so valgrind can track the memory
20527         allocated by the g_... functions.
20528
20529         * inssel.brg (stmt): Add DUMMY rule for OP_DUMMY_STORE.
20530
20531         * mini-ops.h: Add OP_DUMMY_STORE opcode.
20532
20533         * mini.h (MONO_BBLOCK_IS_IN_REGION): New helper macro.
20534
20535         * liveness.c: Handle OP_DUMMY_STORE. Enable register allocation for
20536         variables in try regions.
20537
20538         * mini.c (mini_method_compile): Don't disable optimizations on large
20539         methods when AOT compiling.
20540
20541         * mini.c (mono_allocate_stack_slots): New arch independent method to 
20542         allocate stack slots. Not yet used.
20543
20544 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
20545
20546         * debug-mini.c (mono_debug_close_method): Plug some leaks.
20547
20548 Sat Jan 22 13:41:51 EST 2005 Paolo Molaro <lupus@ximian.com>
20549
20550         * mini-ppc.c: make the branch info relative as the code
20551         buffer can be reallocated.
20552
20553 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
20554
20555         * aot.c: Allow decoding of the new  MONO_PATCH_INFO_DECLSEC.
20556         * driver.c: Removed the AOT/security restriction. Now initialize the
20557         security manager (in metadata) if --security is used.
20558         * mini.c|h: Add the MONO_PATCH_INFO_DECLSEC code to use the index,
20559         rather than the pointer to declarative security, when AOT is used.
20560
20561 Sat Jan 22 09:35:19 EST 2005 Paolo Molaro <lupus@ximian.com>
20562
20563         * mini.h, mini-ppc.h, mini-ppc.c: updated to use out of line
20564         basic blocks, reduced intrinsic exception throwing code size.
20565
20566 2005-01-22  Miguel de Icaza  <miguel@ximian.com>
20567
20568         * driver.c (mini_usage): Reorder the usage screen.
20569
20570 2005-01-21  Zoltan Varga  <vargaz@freemail.hu>
20571
20572         * mini.c (mono_resolve_patch_target): Fix warning.
20573
20574 2005-01-20  Zoltan Varga  <vargaz@freemail.hu>
20575
20576         * mini-x86.c (mono_arch_local_regalloc): Fix bug introduced by
20577         previous patch.
20578
20579         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
20580
20581         * mini-amd64.c (mono_arch_local_regalloc): Revert last patch as it
20582         breaks the amd64 build.
20583
20584         * mini-x86.c (mono_arch_local_regalloc): Fix bug in div/rem 
20585         register allocation. Fixes #71454.
20586
20587         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
20588
20589         * arrays.cs: Add new regression test.   
20590
20591 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20592
20593         * ssapre.c: Turned usage of snprintf to GString.
20594         * ssapre.h: disabled MONO_APPLY_SSAPRE_TO_SINGLE_METHOD
20595         (I left it on by mistake in my previous commit).
20596
20597 Thu Jan 20 12:00:45 CET 2005 Paolo Molaro <lupus@ximian.com>
20598
20599         * mini.c, cfold.c, basic-calls.cs: preserve side effects
20600         on cond branch optimization (fixes bug# 71515).
20601
20602 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20603
20604         * abcremoval.c: Fixed bug 71062.
20605         * abcremoval.h: Likewise.
20606
20607 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20608
20609         * mini.c: Added a new functionality to optimize_branches, the removal
20610         of useless basic blocks, and fixed some problem in the removal of
20611         critical edges; some utility functions added for both purposes.
20612         * ssapre.c: Added complex expression support, and fixed bug 70637.
20613         * ssapre.h: Likewise.
20614         * ssapre-cee-ops.h: Added file with list of "CEE_*" opcodes
20615         enabled in SSAPRE.
20616         * ssapre-mini-ops.h: Likewise, but for "OP_*" opcodes.
20617         * driver.c: Re-enabled SSAPRE.
20618
20619 2005-01-19  Martin Baulig  <martin@ximian.com>
20620
20621         * mini.c (mono_method_to_ir): Call mono_get_inflated_method() on
20622         the result of mono_get_method_constrained().
20623
20624 2005-01-18  Neale Ferguson <NealeFerguson@earthlink.net>
20625
20626         * exceptions-s390.c tramp-s390.c: Allocate code using the global code
20627         manager.
20628
20629 2005-01-18  Geoff Norton  <gnorton@customerdna.com>
20630
20631         * jit-icalls.c (mono_llmult_ovf): Fix other overflow conditions to
20632         be detected.  Fixes #59296.
20633
20634 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
20635
20636         * mini-amd64.c (mono_arch_output_basic_block): Remove some assertions
20637         which can happen. Fixes #71361.
20638
20639 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
20640
20641         * exceptions-sparc.c tramp-sparc.c: Allocate code using the global code
20642         manager.
20643
20644 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
20645
20646         * mini.c (mono_create_jump_trampoline): Revert last change as it causes
20647         appdomain-unload.exe to fail.
20648         
20649         * mini.c: Fix some memory leaks.
20650
20651 Mon Jan 17 16:16:23 CET 2005 Paolo Molaro <lupus@ximian.com>
20652
20653         * inssel.brg: handle the new size of rank, idepth, max_interface_id.
20654         Fixed bug and sped up some codepaths.
20655
20656 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
20657
20658         * mini.c: Fix some memory leaks.
20659
20660         * exceptions.cs basic-long.cs: Add test for checked ulong->int 
20661         conversion.
20662
20663         * inssel-long.brg: Implement long_conv_to_ovf_i4_un. Fixes #71319.
20664
20665         * inssel-long.brg: Fix conv.ovf.i8 when run on an int32. Fixes
20666         #71320.
20667
20668         * iltests.il: Add regression test for #71320.
20669
20670 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
20671
20672         * mini.c (mono_codegen): Fix installation of profiler hooks.
20673
20674         * mini-sparc.c mini-amd64.c: Don't allocate stack space for dead vars.
20675
20676 Sun Jan 16 12:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
20677
20678         * mini.h, mini.c, cfold.c: optimize access to enum
20679         readonly fields, too. Eval conditional branches if possible
20680         to perform unreachable code removal in more cases.
20681
20682 2005-01-15  Zoltan Varga  <vargaz@freemail.hu>
20683
20684         * tramp-amd64.c exceptions-amd64.c: Use the new global code manager.
20685
20686         * mini.c (mono_global_codeman_reserve): New function to allocate code memory from a global
20687         code manager.
20688
20689         * tramp-x86.c mini-x86.c exceptions-x86.c: Allocate all code memory so mono works with
20690         WinXP DEP. Fixes #71244.
20691
20692 2005-01-14  Zoltan Varga  <vargaz@freemail.hu>
20693
20694         * inssel.brg: Allways convert CEE_CONV_OVF_I4 to a move on 64 bit platforms. Fixes #71236.
20695
20696 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
20697
20698         * mini-x86.c (mono_arch_output_basic_block): Fix OP_ATOMIC_ADD_NEW_I4.
20699
20700 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
20701
20702         * mini-exceptions.c exceptions-ppc.c aot.c: Cope with MonoJitInfo 
20703         changes.
20704
20705         * mini.h: Bump AOT version.
20706
20707         * mini.h (MonoCompile): Change exvar to a hash table.
20708
20709         * mini.c: Allocate a separate exvar for each handler block.
20710
20711         * mini.c: Get rid of the computation of filter_lengths, its not needed.
20712
20713         * mini.c inssel.brg: Change OP_THROW_OR_NULL to compare the current
20714         ex var with the pending exception and only throw if the two are equal.
20715         Fixes #68552.
20716         
20717         * exceptions.cs: Add tests for rethrow and nested catch clauses.
20718
20719         * mini-x86.c: Fix warnings.
20720
20721         * Makefile.am (common_sources): Move mini-exceptions.c here as it is
20722         used by all the ports now.
20723
20724         * aot.c: Add write-symbols and save-temps options.
20725
20726 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
20727
20728         * mini-x86.c: Add support for returning structs in registers from pinvoke functions on WIN32.
20729
20730 Mon Jan 10 16:11:16 EST 2005 Neale Ferguson <nealeferguson@earthlink.net>
20731
20732         * mini-ops.h, inssel-s390.brg, cpu-s390.md: Support OP_ATOMIC__xxx 
20733         operations.
20734
20735         * tramp-s390.c: Check vtable slot belongs to the domain.
20736
20737         * mini-exceptions.c, exceptions-s390.c: Standardize exception handling
20738         as per other platforms.
20739
20740         * mini-s390.c, mini-s390.h: Enable out-of-line bblock support.
20741
20742 Mon Jan 10 18:53:05 CET 2005 Paolo Molaro <lupus@ximian.com>
20743
20744         * driver.c: we don't run the Main() code in a subthread anymore.
20745
20746 Mon Jan 10 17:54:16 CET 2005 Paolo Molaro <lupus@ximian.com>
20747
20748         * mini.c: added experimental rtc support in the statistical
20749         profiler: if the user has the permission, more accurate statistics
20750         are gathered. Run with: MONO_RTC=4096 mono --profiler=default:stat ....
20751         The MONO_RTC value must be restricted to what the linux rtc allows:
20752         power of two from 64 to 8192 Hz.
20753
20754 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
20755
20756         * mini-x86.c (mono_arch_emit_exceptions): Fix #71121.
20757
20758 Mon Jan 10 05:20:49 EST 2005 Paolo Molaro <lupus@ximian.com>
20759
20760         * mini-ppc.c: better icache flush for smp.
20761
20762 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
20763
20764         * mini-amd64.c (emit_move_return_value): Fix memory leak.
20765
20766         * mini-x86.c (get_call_info): Add the get_call_info () code from the
20767         amd64 port, not yet used.
20768
20769 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
20770
20771         * mini.c (mono_method_to_ir): Disable inlining of ldfld wrappers with
20772         a struct type.
20773
20774 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
20775
20776         * driver.c: Added --security option to activate the security manager.
20777         Right now this will allow code generation for declarative demands and
20778         is disabled when AOT is specified.
20779         * mini.c: Add code generation for declarative security demands.
20780         * mini.h: Add mono_use_security_manager as an extern gboolean.
20781
20782 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
20783
20784         * aot.c (mono_compile_assembly): Speed up compilation a bit by
20785         emitting more dense assembly code.
20786
20787         * mini-sparc.c mini-sparc.h exceptions-sparc.c: Enable optimized corlib
20788         exception throwing stuff.
20789
20790 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
20791
20792         * mini-sparc.c (mono_arch_emit_exceptions): Fix typo in previous patch. Remove
20793         dead code.
20794
20795         * mini-amd64.c (mono_arch_emit_exceptions): Remove duplicate epilog stuff
20796         left in by mistake.
20797
20798         * driver.c (EXCLUDED_FROM_ALL): Disable SSAPRE until bug #70637 is 
20799         fixed.
20800
20801         * mini-sparc.h mini-sparc.c: Enable out-of-line bblock support.
20802
20803         * tramp-*.c: Only patch vtable slots if the object is in the current
20804         domain. Fixes appdomain-unload.exe.
20805
20806         * mini-amd64.c mini-amd64.h: Enable out-of-line bblock support.
20807         
20808         * mini-amd64.c (mono_arch_local_regalloc): Port regalloc fix from
20809         x86 branch.
20810
20811 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
20812
20813         * mini.c (reverse_branch_op): New helper function.
20814
20815         * mini.c (optimize_branches): Run the new optimization only on 
20816         platforms which support it. Also reverse all kinds of branches.
20817
20818         * mini.h (MonoBasicBlock): Add 'out_of_line' field.
20819
20820         * mini.c (mono_method_to_ir): Set 'out_of_line' for bblocks which have
20821         a throw statement.
20822
20823         * mini.c (optimize_branches): Reverse not-equals branches if the false
20824         bblock is a throw. This happens a lot of time with argument checking in
20825         corlib.
20826
20827         * mini.c (mono_codegen): Add support for placing basic blocks after
20828         the function epilogue.
20829
20830         * mini-x86.c mini-x86.h: Add support for placing basic blocks after the
20831         function epilogue.
20832         
20833 2005-01-05  Miguel de Icaza  <miguel@ximian.com>
20834
20835         * mini.c (setup_stat_profiler): Only set this up if the platform
20836         supports ITIMER_PROF.
20837
20838 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
20839
20840         * mini-x86.c (mono_arch_local_regalloc): Fix a bug introduced by the
20841         previous patch.
20842
20843         * inssel.brg: Fix a warning.
20844
20845 Wed Jan 5 16:40:18 CET 2005 Paolo Molaro <lupus@ximian.com>
20846
20847         * mini.c: added support for statistical profiler 
20848         (run with: --profile=default:stat).
20849
20850 2005-01-04  Zoltan Varga  <vargaz@freemail.hu>
20851
20852         * mini-x86.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Enable this on x86.
20853
20854         * mini-x86.c cpu-pentium.md: More fixes for usage of global registers.
20855
20856         * mini-amd64.c (mono_arch_local_regalloc): Port some regalloc fixes 
20857         related to global registers from the amd64 port.
20858
20859 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
20860
20861         * mini.c (mono_method_to_ir): Handle MONO_CLASSCONST.
20862
20863         * mini-amd64.c (mono_arch_local_regalloc): Fix some regalloc problems
20864         with global registers.
20865         (mono_arch_output_basic_block): Fix SWITCH in the AOT case.
20866
20867         * aot.c (emit_method_code): Fix the 'method emitted as' messages.
20868
20869 2004-12-31  Zoltan Varga  <vargaz@freemail.hu>
20870
20871         * debug-mini.c (encode_value): Fix off-by-one.
20872
20873         * aot.c (encode_value): Likewise.
20874
20875         * mini.c (mono_method_to_ir): Disable AOT for methods containing LDPTR.
20876
20877 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
20878
20879         * mini.c linear-scan.c: Add a workaround for the mcs crash when using 
20880         AOT.
20881
20882         * aot.c (mono_aot_load_method): Free up patch info if no longer needed.
20883         
20884         * aot.c (emit_method_info): Increase size of temp buffer.
20885
20886         * mini-x86.c cpu-pentium.md mini.c: Load fp constants differently in 
20887         the AOT case.
20888
20889 2004-12-28  Zoltan Varga  <vargaz@freemail.hu>
20890
20891         * aot.c (emit_method_info): Fix build.
20892         
20893         * aot.c: Further rework of the AOT file format to reduce the size of
20894         the method info data.
20895
20896         * mini.h: Bump AOT file format version.
20897
20898 2004-12-27  Martin Baulig  <martin@ximian.com>
20899
20900         * mini.c (mini_get_method): New static method; call
20901         mono_get_method_full() and mono_get_inflated_method().
20902         (mono_method_to_ir): Use mini_get_method() instead of
20903         mono_get_method_full(). 
20904
20905 2004-12-26  Patrik Torstensson  <patrik.torstensson@gmail.com>
20906
20907         * mini-x86.c (atomic ops): fixed bug interlocked bug #70784. 
20908
20909 2004-12-25  Zoltan Varga  <vargaz@freemail.hu>
20910
20911         * inssel.brg (ldind_to_load_membase): Handle CEE_LDIND_I8.
20912
20913         * inssel-amd64.brg: Add some optimization rules.
20914
20915 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
20916
20917         * aot.c: Remove the use of MonoGHashTable and other GC stuff. The
20918         standard not GC'd stuff is fine.
20919
20920 2004-12-24  Zoltan Varga  <vargaz@freemail.hu>
20921
20922         * aot.c: Rework the AOT file format to get rid of most of the global
20923         symbols. This reduces the size of the mscorlib.dll.so by 1MB.
20924
20925         * mini.h: Bump AOT file format version.
20926         
20927 2004-12-23  Zoltan Varga  <vargaz@freemail.hu>
20928
20929         * mini.h: Bump AOT file format version.
20930
20931         * aot.c (mono_aot_is_got_entry): New function to determine if an 
20932         address is inside a GOT.
20933
20934         * aot.c mini-x86.c tramp-x86.c: Make all patches use the GOT.
20935
20936         * cpu-pentium.md: Increase the maximum size of some instructions which
20937         might involve a got access.
20938         
20939         * mini.c (get_method_from_ip): Another debug helper function.
20940
20941         * mini.c: Call mono_get_got_var () in a couple places. Handle the case
20942         when got var accesses are created during the decompose phase.
20943
20944         * mini-sparc.c: Change mono_compile_aot to cfg->compile_aot.
20945
20946         * mini.h mini.c mini-x86.c aot.c mini-sparc.c: Add a 'compile_corlib'
20947         argument mini_compile_method and to MonoCompile, and use this to
20948         determine whenever a given method is compiled for AOT. This allows the
20949         other methods compiled during AOT compilation to be free of AOT stuff,
20950         so the backends does not need to add special support for them by
20951         creating a fake GOT etc.
20952
20953         * mini-x86.c (mono_arch_patch_code): Remove fake got stuff as it is no
20954         longer needed.
20955
20956 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
20957
20958         * mini.c (mono_method_to_ir): It turns out that some of the
20959         x-appdomain wrappers are lax with types, so just ignore this for
20960         all wrappers.
20961
20962         * inssel.brg (OP_CHECK_ARRAY_TYPE): Optimize this by only looking
20963         at the vtable->klass. If it is non-shared code we can just use the
20964         vtable.
20965
20966 Tue Dec 21 17:43:06 CET 2004 Paolo Molaro <lupus@ximian.com>
20967
20968         * mini-ppc.c: access MonoDomain from tls, too.
20969
20970 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com>
20971
20972         * declsec.c: Removed unused variable (and related warning ;-)
20973
20974 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
20975
20976         * iltests.il: New test for LDELEMA on an array of ref types.
20977
20978         * mini.c (CEE_LDELEMA): We need to emit OP_CHECK_ARRAY_TYPE for
20979         all ldelema's on reftypes.
20980         (check_call_signature): Remove the OP_CHECK_ARRAY_TYPE from here,
20981         it was the wrong place to put it.
20982
20983         * mini-x86.c (mono_arch_output_basic_block): Just use ecx as the
20984         register to pop to make this cleaner, at the request of Paolo.
20985
20986 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
20987
20988         * mini-ops.h (OP_GETHASHCODE): New op.
20989
20990         * inssel.brg (OP_GETHASHCODE): Emit code for the new opcode
20991
20992         * mini.c (mini_get_inst_for_method): Create the intrinsic hash
20993         operation.
20994
20995         For a microbenchmark, this reduces the cost of Hashtable.get_Item
20996         by 25%.
20997         
20998         * mini-x86.c (mono_arch_output_basic_block): Rather than
20999
21000         add ebp, 4
21001
21002         Emit
21003
21004         pop edx
21005
21006         The first is 3 bytes while the second is 1. This saves 36 kb on
21007         mscorlib, quite a big saving. When bootstraping mcs, I was able to
21008         see a small boost because of icache locality.
21009
21010         * cfold.c (FOLD_BINOPCOMM): Kill add foo, 0
21011
21012 Mon Dec 20 12:19:40 EST 2004 Paolo Molaro <lupus@ximian.com>
21013
21014         * Makefile.am, mini-ppc.h, mini-exceptions.c, exceptions-ppc.c:
21015         started code sharing with the generic code.
21016
21017 Mon Dec 20 11:08:06 EST 2004 Paolo Molaro <lupus@ximian.com>
21018
21019         * mini-ppc.c, cpu-g4.md: added code for direct access to
21020         tls data slots.
21021
21022 Mon Dec 20 10:58:28 EST 2004 Paolo Molaro <lupus@ximian.com>
21023
21024         * mini-ops.h, inssel-x86.brg, cpu-amd64.md, inssel.brg, inssel-amd64.brg,
21025          mini-amd64.c, mini-x86.c, cpu-pentium.md: renamed OP_X86_TLS_GET
21026         to OP_TLS_GET.
21027
21028 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
21029
21030         * declsec.c|h: Added functions to cache the declarative stack modifiers
21031         in MonoJitInfo and to create a security frame from a MonoJitInfo 
21032         structure.
21033         * mini.c: Initialize jinfo->cas_inited to FALSE when MonoJitInfo is
21034         created. Register internal calls for System.Security.SecurityFrame::
21035         _GetSecurityFrame and _GetSecurityStack.
21036         * mini.h: Added definition for new icalls (in mini-exceptions.c) and
21037         the definitions for the new stack walk/callback mechanism.
21038         * mini-exceptions.c: Added internal call GetSecurityFrame (to get the 
21039         first security frame for LinkDemands and InheritanceDemands) and
21040         GetSecurityStack for Demands. Both use the new mono_walk_stack code
21041         from lupus.
21042         * mini-x86.h, mini-amd64.h, mini-sparc.h: Architecture specific stack
21043         walk initialization (lupus).
21044
21045 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
21046
21047         * mini.c (mono_method_to_ir): In CEE_DUP, handle the dup / stloc
21048         idiom.
21049         (handle_loaded_temps): Do not create a temporary variable for
21050         things that we know are temps. They will never be modified.
21051         (mono_spill_call): Set MONO_INST_IS_TEMP
21052         (mono_emulate_opcode): ditto
21053         (emit_tree): ditto
21054         (mono_method_to_ir.CEE_DUP): ditto
21055
21056 2004-12-19  Ben Maurer  <bmaurer@ximian.com>
21057
21058         * mini.c (type_to_eval_stack_type): Make this handle the void type
21059         (mono_emit_call_args): set the call->type with type_to_eval_stack_type
21060         (emit_tree): use ip_in_bb to special case some common idioms
21061         Update all callers to pass in the IP.
21062         (mono_method_to_ir): Make CEE_CALL* do the above as well.
21063
21064         This gives us a nice 2% speedup in mcs bootstrap.
21065
21066         * mini-x86.c (peephole_pass): Peephole pass to make
21067         mov  [foo], eax
21068         push [foo]
21069
21070         into
21071
21072         mov [foo], eax
21073         push eax
21074
21075         * mini.c (ip_in_bb): new method.
21076         (mono_method_to_ir): use this method rather than doing the hash
21077         lookup ourselves.
21078
21079         * linear-scan.c (mono_linear_scan): When expiring actives, you
21080         don't need to keep around variables that expire on this
21081         instruction. This makes it so that:
21082              a = b + 1
21083         will turn into:
21084              store (ebx add (ebx, 1))
21085         which will become
21086              add ebx, 1
21087
21088 2004-12-19  Zoltan Varga  <vargaz@freemail.hu>
21089
21090         * mini.c (mono_method_to_ir): Optimize the common ldobj+stloc 
21091         combination to avoid doing two copies. Fix up problems with previous
21092         patch.
21093
21094         * mini.c: Fix 64 bit warnings.
21095
21096         * mini-x86.c (INST_IGNORES_CFLAGS): Add OP_STOREI4_MEMBASE_REG.
21097
21098 2004-12-17  Zoltan Varga  <vargaz@freemail.hu>
21099
21100         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Port exception handling
21101         changes from the x86 code.
21102
21103         * mini.h: Add prototype for mono_arch_get_throw_corlib_exception ().
21104
21105 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
21106
21107         * mini-x86.c (mono_arch_emit_epilog): Optimize the corlib exception
21108         throwing code to reduce its size, unify the AOT and non-aot code and 
21109         get rid of relocations in the AOT case.
21110
21111         * mini-x86.h mini.c exceptions-x86.c 
21112         (mono_arch_get_throw_corlib_exception): New arch specific function to 
21113         raise corlib exceptions which doesn't require relocations in the 
21114         caller.
21115
21116         * aot.c (emit_method): Handle PATCH_INFO_NONE as well.
21117
21118 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
21119
21120         * mini.c (mono_emit_method_call): Only allocate the got var when it is
21121         needed.
21122
21123         * mini-x86.c (mono_arch_patch_code): Add missing PATCH_INFO_METHOD_REL
21124         in the AOT case.
21125
21126 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
21127
21128         * mini-x86.c, cpu-pentium.md, inssel-x86.brg: Fixed bug
21129         with add function when used from Inc/dec atomic 
21130         functions. Re-enabled optimization on x86.
21131         * mini-ops.h: renamed atomic_add functions to
21132         allow _add to match the Interlocked::Add and
21133         _add_next to match Interlocked::Inc/Dec.
21134
21135 2004-12-15  Massimiliano Mantione  <massi@ximian.com>
21136
21137         * mini.c: Fixed a subtle bug in mono_method_to_ir, about the
21138         linking of BBs to the end BB, and enabled SSAPRE also with
21139         consprop and copyprop (which was prevented by that bug).
21140
21141 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
21142
21143         * mini-x86.c: disabling the Interlocked optimizing code. 
21144
21145 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
21146
21147         * aot.c (load_aot_module): Move reading of got_addr after the AOT
21148         file version check.
21149         
21150 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
21151
21152         * mini-x86.c, inssel-x86.brg, cpu-pentium.md: removed _imm 
21153         interlocked optimization due lack of support on x86, rewrote 
21154         exchange to take into account that base may be in eax.
21155         
21156         xsp works again; activated Interlocked optimizing code.
21157         
21158 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
21159
21160         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
21161
21162 2004-12-13  Zoltan Varga  <vargaz@freemail.hu>
21163
21164         * mini-ops.h: Add new opcodes.
21165
21166         * mini.h: Add new patch types. Add got_var to MonoCompile.
21167
21168         * mini.h mini-x86.c mini-amd64.c aot.c: Rename 
21169         mono_arch_get_aot_patch_offset () to mono_arch_get_patch_offset () and
21170         make it work with all kinds of patchable code.
21171
21172         * inssel.brg inssel-x86.brg: Add new rules dealing with computing the
21173         address of the GOT, and referencing entries in the GOT.
21174
21175         * mini.c: Add code to load the GOT address if needed by an opcode.
21176
21177         * aot.c mini-x86.h mini-x86.c cpu-pentium.md: Add support for position 
21178         independent AOT code on the x86 using an elf-style Global Offset Table.
21179
21180 2004-12-14  Raja R Harinath  <rharinath@novell.com>
21181
21182         * Makefile.am (RUNTIME): Set MONO_SHARED_DIR.
21183
21184 2004-12-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21185
21186         * mini-x86.c: disabling the Interlocked optimizing code. It segfaults
21187         when running xsp.
21188
21189 2004-12-13  Patrik Torstensson  <patrik.torstensson@gmail.com>
21190
21191         * mini-x86.c,mini-ops.h,inssel-x86.brg,cpu-pentium.md: Implementation
21192         of Interlocked:Increment/Decrement/Add as inline ops.
21193         (mini-x86.c (mono_arch_get_inst_for_method and mono_arch_output_basic_block))
21194
21195 2004-12-12  Geoff Norton  <gnorton@customerdna.com>
21196
21197         * exceptions-ppc.c: Reorder code so gcc3.4 can compile it
21198         * mini-ppc.c: Unify mono_arch_patch_code with changes in r37636.
21199
21200 2004-12-12  Duncan Mak  <duncan@ximian.com>
21201
21202         * mini-ppc.c (mono_arch_patch_code): Hopefully made this build
21203         again. `patch_info->table_size' is no longer valid after Zoltan's
21204         commit #37636.
21205
21206 2004-12-12  Martin Baulig  <martin@ximian.com>
21207
21208         * mini.c (mono_method_to_ir): Only call mono_debug_init_method()
21209         if we are the "real" method, ie. not an inlined method inside it.
21210
21211 2004-12-11  Ben Maurer  <bmaurer@ximian.com>
21212
21213         * mini.c (CEE_LDSFLD): Make sure that the vtable has been init'd
21214         before we look in the special fields table. This fixes
21215         ../tests/thread-static-init.cs.
21216
21217 2004-12-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21218
21219         * mini.c: return immediately after setting OP_ARRAY_RANK or CEE_LDLEN
21220         for Array get_Rank and get_Length. Fixes bug #70465.
21221
21222 2004-12-11  Zoltan Varga  <vargaz@freemail.hu>
21223
21224         * mini.h mini.c aot.c: Put the bblock table for a SWITCH patch into a
21225         separate structure to reduce the size of MonoJumpInfo.
21226
21227 Fri Dec 10 18:09:22 CET 2004 Paolo Molaro <lupus@ximian.com>
21228
21229         * mini.c, mini.h, aot.c, driver.c: allow disabling the aot code.
21230
21231 2004-12-10  Patrik Torstensson  <patrik.torstensson@gmail.com>
21232
21233         * mini.c (mini_get_inst_for_method): Changed to allow ports
21234         to return a MonoInst instead of opcode 
21235         (renamed mini_get_opcode_for_method to better reflect the new functionality)
21236         
21237         * mini-[x86|s390|s390x|ppc|sparc].c (mono_arch_get_inst_for_method): 
21238         Allow ports to return a created MonoInst instead of op-code, will enable
21239         new optimizations.
21240         (renamed mini_get_opcode_for_method to better reflected the functionality)
21241
21242 2004-12-09  Zoltan Varga  <vargaz@freemail.hu>
21243
21244         * mini.c (NEW_AOTCONST): Share some code between the different NEW_AOTCONST macros.
21245
21246 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
21247
21248         * mini.c jit-icalls.c: Pass generic_context to mono_ldtoken_wrapper.
21249         Fixes #69985.
21250
21251 2004-12-08  Martin Baulig  <martin@ximian.com>
21252
21253         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use `fsig->signature'
21254         if we're a CEE_CONSTRAINED call.  Fixes gen-118.cs.
21255
21256 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
21257
21258         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_<X>
21259         correctly.
21260
21261         * exceptions.cs: Disable some tests which depend on properties of x86 fp
21262         arithmetic.
21263
21264 2004-12-08  Raja R Harinath  <rharinath@novell.com>
21265
21266         * Makefile.am (CLEANFILES): Add *.exe, *.dll.
21267
21268 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
21269
21270         * mini-sparc.c (mono_arch_output_basic_block): Fix LOCALLOC_IMM
21271         bug introduced by the previous patch.
21272
21273 Tue Dec 7 11:44:39 CET 2004 Paolo Molaro <lupus@ximian.com>
21274
21275         * mini-ppc.c, objectc.cs: handle large structs passed by value
21276         (fixes bug #69972).
21277
21278 Tue Dec 7 10:43:31 CET 2004 Paolo Molaro <lupus@ximian.com>
21279
21280         * mini-ppc.c: OP_ARGLIST implementation from
21281         Geoff Norton  <gnorton@customerdna.com>.
21282
21283 Tue Dec 7 10:14:25 CET 2004 Paolo Molaro <lupus@ximian.com>
21284
21285         * inssel-x86.brg, inssel-ppc.brg: fix reference to register
21286         in stmt: OP_OUTARG_VT (reg) (should fix bug #69785).
21287
21288 Tue Dec 7 10:06:39 CET 2004 Paolo Molaro <lupus@ximian.com>
21289
21290         * exceptions-ppc.c: avoid calling ppc_patch in exception trampolines.
21291
21292 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21293
21294         * inssel-s390.brgi, mini-ops.h, mini-s390.c : Add stubs for support of tls offset
21295         support.
21296
21297 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
21298
21299         * mini-sparc.c: Zero out localled-ed memory.
21300
21301         * iltests.il: Add tests for zeroing out localloc-ed memory.
21302
21303 2004-12-04  Martin Baulig  <martin@ximian.com>
21304
21305         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use the new
21306         mono_method_get_signature_full().       
21307
21308 2004-12-03  Massimiliano Mantione  <massi@ximian.com>
21309
21310         * mini.c: Added removal of critical edges (prerequisite for SSAPRE),
21311         and some utility functions (always for SSAPRE), integrated SSAPRE.
21312         * mini.h: Likewise.
21313         * driver.c: Added ssapre option.
21314         * ssa.c: Small fix on OP_ARG handling.
21315         * ssapre.c, ssapre.h: Added files containing SSAPRE implementation.
21316         * Makefile.am: Likewise.
21317
21318 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
21319
21320         * tramp-x86.c (mono_arch_create_jit_trampoline): Remove code which is
21321         now in the xp code.
21322
21323         * mini.c (mini_init): Register mono_thread_force_interruption_checkpoint
21324         icall.
21325
21326 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21327
21328         * inssel-s390.brg : Add OP_OUTARG_VT (OP_REFANYTYPE (reg)) rule.
21329         
21330         * cpu-s390.md : Increase instruction length of oparglist.
21331
21332         * mini-s390.c : Implement vararg and TYPEDEBYREF support.
21333
21334 2004-11-30  Martin Baulig  <martin@ximian.com>
21335
21336         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, added support for
21337         virtual generic methods.  We call a special helper_compile_generic_method()
21338         icall to retrieve the method from the vtable, inflate and compile
21339         it and then do a CEE_CALLI.  Thanks a lot to Paolo for this idea.
21340
21341         * jit-icalls.c (helper_compile_generic_method): New JIT icall.
21342
21343 2004-11-30  Zoltan Varga  <vargaz@freemail.hu>
21344
21345         * mini-sparc.c: Fix up vararg corner cases. Fixes #70019.
21346
21347 2004-11-29  Zoltan Varga  <vargaz@freemail.hu>
21348
21349         * cpu-sparc.md mini-sparc.c (long_conv_to_ovf_i): Fill missing delay slot.
21350         Fixes #69929.
21351
21352 2004-11-27  Ben Maurer  <bmaurer@ximian.com>
21353
21354         * inssel.brg (CEE_SWITCH): The AOT stuff Zoltan added is only for
21355         platforms with PIC aot.
21356
21357 2004-11-28  Martin Baulig  <martin@ximian.com>
21358
21359         * mini.c (mono_method_to_ir): In CEE_DUP, added handle_stobj().
21360         Fixes gen-112.cs.
21361
21362 2004-11-28  Martin Baulig  <martin@ximian.com>
21363
21364         * mini-x86.c (mono_arch_call_opcode): Use the original type, not
21365         the result of mono_type_get_underlying_type() to check whether
21366         we're byref.
21367
21368 2004-11-26  Martin Baulig  <martin@ximian.com>
21369
21370         * mini.c
21371         (mono_method_to_ir): Use `!method->signature->has_type_parameters'
21372         in the g_assert().
21373
21374 2004-11-26  Zoltan Varga  <vargaz@freemail.hu>
21375
21376         * mini-amd64.c (mono_arch_emit_this_vret_args): Handle this and vret
21377         the same way as the other arguments so they won't get clobbered.
21378
21379         * mini-amd64.c (mono_arch_output_basic_block): Avoid doing virtual 
21380         calls through R11 since it is clobbered by the trampoline code.
21381
21382 2004-11-26  Raja R Harinath  <rharinath@novell.com>
21383
21384         * Makefile.am: Consistently use $(RUNTIME) rather than ./mono to
21385         pick up in-tree mscorlib.dll.
21386
21387 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
21388
21389         * aot.c: Rename MonoAOTModule->cleanup to out_of_date.
21390
21391         * mini-amd64.c aot.c: Switch to PIC relative AOT code. References to 
21392         runtime data/code are now stored in a table similar to the GOT in ELF. 
21393         This allows the code itself to be position independent.
21394
21395         * aot.c: Fix loading of referenced assemblies after the lazy assembly
21396         loading changes.
21397
21398         * aot.c: Attach ELF type (object/function) directives to all global
21399         symbols.
21400
21401         * tramp-amd64.c (amd64_magic_trampoline): Patch RIP relative calls too.
21402
21403         * inssel.brg (SWITCH): Emit an AOT_CONST in the aot case.
21404
21405         * mini-amd64.h: Turn on PIC AOT code.
21406
21407         * mini.h (mono_arch_get_aot_patch_offset): New arch specific function
21408         returning the offset within an OP_AOTCONST instruction where the GOT
21409         offset needs to be added.
21410
21411         * mini.h: Bump AOT file format version.
21412
21413 2004-11-25  Martin Baulig  <martin@ximian.com>
21414
21415         * mini.c (mono_method_to_ir): In CEE_CALL, don't allow calling any
21416         uninflated generic methods.
21417
21418 2004-11-25  Martin Baulig  <martin@ximian.com>
21419
21420         * mini.c (mono_method_to_ir): Don't allow any uninflated generic methods.
21421
21422 2004-11-24  Martin Baulig  <martin@ximian.com>
21423
21424         * minit.c (type_to_eval_stack_type): Set `inst->klass' to the
21425         original klass (this only applies for generic instances).
21426
21427 2004-11-24  Martin Baulig  <martin@ximian.com>
21428
21429         * mini.c (mono_method_to_ir): Use `STACK_OBJ' instead of
21430         `ldind_type [CEE_LDIND_REF]' (which would be beyond the end of
21431         that array).
21432
21433 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
21434
21435         * mini.c (mono_method_to_ir): Disable inlining for methods containing
21436         localloc. Fixes #69678.
21437
21438         * iltests.il (test_0_localloc_inline): Add regression test for #69678.
21439         
21440 2004-11-23  Zoltan Varga  <vargaz@freemail.hu>
21441
21442         * mini-amd64.c (mono_arch_output_basic_block): Set %al to the number of
21443         used SSE registers on pinvoke calls. Fixes #69774.
21444
21445 2004-11-23  Geoff Norton  <gnorton@customerdna.com>
21446
21447         * inssel-ppc.brg, mini-ppc.c: Use mono_class_from_mono_type instead of
21448         vt->inst_vtype->data.klass.  This fixes generic structs and bug #69766
21449
21450 2004-11-23  Raja R Harinath  <rharinath@novell.com>
21451
21452         * Makefile.am (MCS,ILASM): Don't refer to runtime/ directory.
21453         Refer directly to the mcs/ tree.
21454
21455 2004-11-19  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21456
21457         * mini-s390.c, tramp-s390.c, mini-s390.h: Add LMF processing for trampolines.
21458         Check if a trampoline for a synchronized method is required. 
21459
21460 Fri Nov 19 17:34:21 CET 2004 Paolo Molaro <lupus@ximian.com>
21461
21462         * mini-ppc.c, cpu-g4.md: set to zero the memory allocated
21463         with localloc if needed. Throe arithmetric exception in
21464         div an rem if needed. Implement ovf checks in OP_LCONV_TO_OVF_I.
21465         Adapted from a patch by Geoff Norton  <gnorton@customerdna.com>.
21466
21467 2004-11-19  Geoff Norton  <gnorton@customerdna.com>
21468
21469         * mini-ppc.c: Call mono_type_get_underlying_type to unwrap generic
21470         types before switching on type.  Fixes #69622.
21471
21472 2004-11-19  Raja R Harinath  <rharinath@novell.com>
21473
21474         * Makefile.am (check-local): New.  Integrate into 'make check'.
21475         (MCS,RUNTIME): Define using in-tree mono and mcs.
21476         (ILASM): New.
21477         (%.exe): Use $(ILASM).
21478
21479 Fri Nov 19 14:54:07 CET 2004 Paolo Molaro <lupus@ximian.com>
21480
21481         * mini-ppc.c: adjust initial prolog size (bug #69691).
21482
21483 2004-11-18  Zoltan Varga  <vargaz@freemail.hu>
21484
21485         * cpu-pentium.md (localloc): Increase max instruction len. Fixes
21486         #69664.
21487
21488 2004-11-17  Raja R Harinath  <rharinath@novell.com>
21489
21490         * Makefile.am (clean-local): Rename from 'clean'.
21491
21492 2004-11-15  Nelae Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21493
21494         * mini.c, mini-x86.c, mini-amd64.c, exceptions-s390.c: Add siginfo_t parameter
21495         to mono_arch_is_int_overflow. 
21496         * exceptions-s390.c: Add mono_arch_is_int_overflow routine to discern between
21497         SIGFPE events.
21498
21499 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
21500
21501         * declsec.c|h: New files to support declarative security attributes.
21502         Added function to check if a method has (applicable) security.
21503         * mini.c|h: Add check for declarative security attributes in
21504         mono_method_check_inlining.
21505         * Makefile.am: Added declsec.c and declsec.h to the build.
21506
21507 Mon Nov 15 11:53:46 CET 2004 Paolo Molaro <lupus@ximian.com>
21508
21509         * mini.c, mini.h: update to keep dynamic code info per-domain.
21510
21511 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
21512
21513         * mini.c mini-*.h: Get rid of MONO_ARCH_HAVE_RETHROW since all architectures support it now.
21514         (mini_init): Get rid of it from here too.
21515
21516 Thu Nov 11 20:17:17 CET 2004 Paolo Molaro <lupus@ximian.com>
21517
21518         * mini-ppc.c, mini-ppc,h, cpu-g5.md, exceptions-ppc.c:
21519         implemented OP_RETHROW (patch by Geoff Norton
21520         <gnorton@customerdna.com>).
21521
21522 2004-11-10  Geoff Norton  <gnorton@customerdna.com>
21523
21524         * tramp-ppc.c (ppc_magic_trampoline): Don't trampoline methods
21525         between appdomains.  Fixes appdomain-unload on PPC.
21526
21527 2004-10-26  Lluis Sanchez Gual  <lluis@novell.com>
21528
21529         * exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
21530         mini-exceptions.c: handle the new wrapper types.
21531         * mini.c: The CEE_ISINST and CEE_CASTCLASS opcodes now take the
21532         token value as a MonoClass* when compiling a wrapper.
21533         mono_jit_create_remoting_trampoline now takes an additional
21534         MonoRemotingTarget parameter.
21535         
21536 2004-11-10  Martin Baulig  <martin@localhost>
21537
21538         * mini.c (mono_method_to_ir): Use `generic_container->context'
21539         rather than creating a new one.
21540
21541 2004-11-09  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21542
21543         * exceptions-s390.c, mini-s390, cpu-s390.md: Add support for OP_RETHROW.
21544
21545         * inssel-390.md, mini-s390.c: Correct register allocation for globals.
21546
21547 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
21548
21549         * aot.c (mono_aot_init): Add MONO_AOT_CACHE env variable to turn on
21550         the experimental aot cache stuff.
21551
21552 Tue Nov 9 17:30:20 CET 2004 Paolo Molaro <lupus@ximian.com>
21553
21554         * aot.c, mini.c, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
21555         mini-exceptions.c: update to exception clause structure changes.
21556
21557 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
21558
21559         * exceptions-x86.c (throw_exception): Fix warnings.
21560
21561         * mini-x86.h mini-x86.c cpu-pentium.md exceptions-x86.c: Add support 
21562         for OP_RETHROW.
21563
21564 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
21565
21566         * exceptions-sparc.c (get_throw_exception): Really fix this.
21567
21568 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
21569
21570         * tramp-*.c: we no longer support icalls without wrappers, so
21571         a bit of code can be removed here
21572
21573 2004-11-07  Zoltan Varga  <vargaz@freemail.hu>
21574
21575         * exceptions-sparc.c (get_throw_exception): Fix more bugs in previous
21576         patch.
21577
21578         * cpu-sparc.md: Add op_rethrow.
21579
21580         * exceptions-sparc.c (get_throw_exception): Fix bug in previous patch.
21581
21582         * mini-sparc.h mini-sparc.c exceptions-sparc.c: Add support for OP_RETHROW.
21583
21584         * mini.h: Add mono_arch_get_rethrow_exception () arch specific function.
21585         * mini-ops.h: Add OP_RETHROW.
21586
21587         * mini.c inssel.brg: Distinguish between THROW and RETHROW.
21588
21589         * cpu-amd64.c mini-amd64.c exceptions-amd64.c: Add support for OP_RETHROW.
21590
21591 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
21592         
21593         * helpers.c: Change otool arguments from -V -v -t to -v -t on Darwin
21594         Makes the output much easier to read
21595
21596 2004-11-05  Ben Maurer  <bmaurer@ximian.com>
21597
21598         * ssa.c: allocate MonoMethodVar.uses from the mempool. First, this
21599         prevents another huge leak when compiling with ssa. Secondly, the
21600         performance of doing this rather than freeing the lists is much
21601         better. GList does a lock every time you allocate a list link,
21602         so that it can use a memory pool. So, it is better to just use
21603         a memory pool of our own.
21604         
21605         * ssa.c, linear-scan.c: replace g_list_remove_link with
21606         g_list_delete.  The remove one does not free the GList, so we were
21607         leaking memory. On -O=all --compile-all with corlib, this cut down
21608         3 MB of allocations.
21609
21610 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
21611
21612         * tramp-sparc.c (mono_arch_create_jit_trampoline): Fix sparc build.
21613
21614         * tramp-amd64.c (mono_arch_create_jit_trampoline): Fix amd64 build.
21615
21616         * mini.h mini.c tramp-*.c: Moved xp parts of JIT trampoline creation
21617         into a new function mono_create_jit_trampoline ().
21618
21619 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
21620
21621         * trace.c (get_spec): Allow tracing of classes without a namespace.
21622
21623 2004-11-02  Sebastien Pouliot  <sebastien@ximian.com>
21624
21625         * mini.c: Fix pointer overwrite in mini_method_compile.
21626
21627 2004-11-2  Geoff Norton  <gnorton@customerdna.com>
21628
21629         * inssel-ppc.brg (OP_OUTARG_VT (CEE_LDOBJ (base))):
21630         The darwin ABI needs some special handling for 1 and 2 byte structs
21631         Lets use lbz/lhz instead of lwz everywhere.
21632         * mini-ppc.c (calculate_sizes):  The Darwin ABI needs from special handling
21633         for 1 and 2 byte structs and struct which are size >= 3 || size % 4 != 0.
21634         Use stb/sth for the former, and put the latter always on stack instead of in
21635         argument registers.
21636
21637 2004-10-30  Zoltan Varga  <vargaz@freemail.hu>
21638
21639         * trace.c (is_filenamechar): Add '_'.
21640
21641 2004-10-29  Neale Ferguson  <Neale.Ferguson@SoftwareAG-usa.com>
21642
21643         * mini-s390.c: Fix prolog length to allow for large trace requirements.
21644
21645         * exceptions-s390.c: Remove dwarf unwinding stuff that was unused.
21646
21647 2004-10-29  Zoltan Varga  <vargaz@freemail.hu>
21648
21649         * Makefile.am (libgc_libs): Do some automake magic so libmono/mono
21650         depends on libmonogc. Fixes #68805.
21651
21652 2004-10-26  Miguel de Icaza  <miguel@ximian.com>
21653
21654         * mini.c (mono_jit_free_method): Provide extra information for
21655         this error.  Currently this leaks, but will be turned into a
21656         developer option in the future.
21657
21658 2004-10-26  Zoltan Varga  <vargaz@freemail.hu>
21659
21660         * driver.c (mono_main): Applied patch from Willibald Krenn <willibald.krenn@gmx.at>. Make --graph work for icalls and pinvoke methods.
21661
21662 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
21663
21664         * aot.c (mono_aot_load_method): Align PATCH_INFO_R8 on an 8 byte 
21665         boundary. Fixes reading of PATCH_INFO_R4 and R8.
21666         (mono_aot_load_method): Do not allocate MonoAotMethod in the GC heap.
21667
21668 2004-10-24  Zoltan Varga  <vargaz@freemail.hu>
21669
21670         * mini-amd64.c (mono_arch_patch_code): Fix patching of class init
21671         trampolines for AOT code.
21672
21673 2004-10-22    <vargaz@freemail.hu>
21674
21675         * aot.c (mono_compile_assembly): Disable AOT for methods containing calls to methods of
21676         constructed types. Fixes #68136.
21677
21678 2004-10-21  Martin Baulig  <martin@ximian.com>
21679
21680         * exceptions-x86.c (throw_exception): Call mono_debugger_throw_exception();
21681         if it returns true, unwind the stack to the call instruction.
21682
21683 2004-10-21    <vargaz@freemail.hu>
21684
21685         * aot.c: Reorganize the AOT file format to avoid relocations. Fix warnings.
21686
21687         * mini.h: Bump AOT version number.
21688
21689         * objects.cs: Add another test for unbox trampolines.
21690
21691         * tramp-amd64.c (amd64_magic_trampoline): Disable patching of trampolines for 
21692         valuetype methods.
21693
21694 2004-10-20    <vargaz@freemail.hu>
21695
21696         * driver.c: Add SHARED to the set of optimizations tested.
21697
21698         * tramp-amd64.c (amd64_magic_trampoline): Patch trampoline code as well.
21699
21700         * mini.c (mono_method_to_ir): Mark the domainvar as volatile when it is implicitly
21701         used by CEE_NEWARR.
21702
21703         * ssa.c (mono_ssa_deadce): Do not optimize away accesses to volatile variables.
21704
21705 2004-10-20  Martin Baulig  <martin@ximian.com>
21706
21707         * mini-exceptions.c (mono_handle_exception): Call
21708         mono_debugger_handle_exception() to tell the debugger about
21709         catch/finally clauses.
21710
21711 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
21712
21713         * exceptions-amd64.c (mono_arch_find_jit_info): Pop arguments of the stack.
21714
21715         * mini-amd64.c (mono_amd64_get_vcall_slot_addr): Handle extended registers. Fixes
21716         #68447.
21717
21718 2004-10-15  Geoff Norton  <gnorton@customerdna.com>
21719
21720         * mini-ppc.c (calculate_sizes): Marshal valuetypes for pinvoke
21721         methods as their native size, fixed bug #57543, #57545.
21722         * mini-ppc.c (mono_arch_output_basic_block): Use mulli for imm16 types
21723         This saves a temporary register and mullw call down into 1 (minor perf
21724         increase for cases like sum = sum * 5;  This use to translate into:
21725             li r11,5
21726             mullw r28,r28,r11
21727         It now translates to
21728             mulli r28,r28,5
21729
21730 2004-10-15  Zoltan Varga  <vargaz@freemail.hu>
21731
21732         * trace.c (mono_trace_eval): Use mono_method_desc_full_match. Fixes
21733         #68388.
21734
21735 2004-10-11  Martin Baulig  <martin@ximian.com>
21736
21737         * mini.c (mono_method_to_ir): If we're a generic method, get the
21738         MonoGenericContainer from our MonoMethodNormal and create a
21739         MonoGenericContext from it.
21740
21741 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
21742
21743         * inssel-long32.brg (OP_LCONV_TO_OVF_I2): Fix CONV_I1 -> CONV_I2.
21744
21745         * basic-long.cs: Add test for checked i8->i2 cast.
21746
21747 Wed Oct 6 12:40:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
21748
21749         * inssel-ppc.brg: added a couple of speedup rules.
21750
21751 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
21752
21753         * Makefile.am (genmdesc_LDADD): Don't link this against libmetadata
21754         to speed up rebuilds.
21755
21756 2004-10-04  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21757
21758         * mini-s390.c: Minor fix to OP_OR_IMM.
21759
21760 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
21761
21762         * tramp-sparc.c (sparc_magic_trampoline): Handle appdomain stuff
21763         better. Fixes appdomain-unload.exe on sparc.
21764
21765 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
21766
21767         * ssa.c: Fixed casts to unsigned where the value was of 64 bits in
21768         simulate_long_compare, patch by will@exomi.com (Ville-Pertti Keinonen),
21769         see bug 67324.
21770
21771 2004-10-02  Zoltan Varga  <vargaz@freemail.hu>
21772
21773         * jit-icalls.c: Handle a nonexisting trunc function more correctly.
21774
21775 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
21776
21777         * mini.c: Always generate a field read/write wrapper for members
21778         of the class MarshalByRefObject since the actual instance could
21779         be a CBO.
21780
21781 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
21782
21783         * mini.c: Use mono_thread_exit() to stop threads, instead of ExitThread.
21784
21785 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
21786
21787         * driver.c mini.h trace.c: Move the setting of the main assembly into
21788         a separate function called mono_trace_set_assembly () and call it after
21789         actually loading the main assembly. Fixes #66872.
21790
21791 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
21792
21793         * mini-amd64.h mini-amd64.c tramp-amd64.c: Allocate trampoline memory
21794         using the code manager.
21795
21796 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
21797
21798         * tramp-amd64.c mini-amd64.h: Add support for MONO_ARCH_HAVE_INVALIDATE_METHOD.
21799
21800 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
21801
21802         * cpu-amd64.md: Fix bug in previous patch.
21803         
21804         * cpu-amd64.md: Fix instruction lengths of membase opcodes. Fixes
21805         #66650.
21806
21807 Wed Sep 22 19:03:20 CEST 2004 Paolo Molaro <lupus@ximian.com>
21808
21809         * mini.h, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
21810         mini-exceptions.c: updates for changed stack walk interface.
21811
21812 2004-09-21  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21813
21814         * mini-s390.c, cpu-s390.md: Minor changes to OP_ARGLIST handling
21815
21816 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
21817
21818         * mini.c (mono_method_to_ir): Fix LDSTR in dynamic methods. Fixes #66132.
21819
21820 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
21821
21822         * driver.c (mini_regression_list): Do not call mono_assembly_close 
21823         since assemblies can't be unloaded.
21824         
21825 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
21826
21827         * cpu-amd64.md: Fix more instruction lengths.
21828
21829         * cpu-amd64.md: Fix lengths of some instructions.
21830
21831 2004-09-11 Ben Maurer  <bmaurer@users.sourceforge.net>
21832
21833         * inssel.brg: Make the array ldelema check aot friendly.
21834
21835 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
21836
21837         * mini-amd64.c (mono_arch_get_argument_info): Fix stack_unwind test.
21838
21839         * cpu-amd64.md inssel-long.brg inssel-amd64.brg: Small optimizations.
21840
21841 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
21842
21843         * mini-x86.c: Fix build.
21844
21845         * mini-sparc.c mini-x86.c mini-amd64.c: Use the new 
21846         mono_type_get_underlying_type () helper function to simplify code.
21847         
21848 2004-09-09  Martin Baulig  <martin@ximian.com>
21849
21850         * mini-amd64.c: Don't access `type->data.klass' directly, call
21851         mono_class_from_mono_type() instead since the type may be a
21852         generic instance.
21853
21854 2004-09-09  Martin Baulig  <martin@ximian.com>
21855
21856         * mini-amd64.c (get_call_info): Fix support for generic instances.
21857         (add_valuetype): Use mono_class_from_mono_type() to get the class
21858         since we can be a generic instance.
21859
21860 Thu Sep 9 01:43:53 PDT 2004 Paolo Molaro <lupus@ximian.com>
21861
21862         * mini-ppc.c, mini.h, regalloc.c, regalloc.h: powerpc speedups.
21863
21864 2004-09-07 Ben Maurer  <bmaurer@users.sourceforge.net>
21865
21866         * liveness.c: reset spill costs on each scan: bug 62107
21867
21868 2004-09-07  Bernie Solomon  <bernard@ugsolutions.com>
21869
21870         * exceptions-sparc.c (mono_arch_find_jit_info): remove
21871         unnecessary line that doesn't compile
21872
21873 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
21874
21875         * mini.c mini.h mini-x86.h tramp-x86.c: Instead of freeing delegate
21876         trampolines, make them call an error function so people can fix their
21877         code.
21878
21879 2004-09-06  Martin Baulig  <martin@ximian.com>
21880
21881         * mini.c (mono_method_to_ir): When initializing locals, handle a
21882         generic instances like a valuetype if it's a valuetype and like a
21883         class if it's a class.
21884
21885 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
21886
21887         * exceptions-x86.c (mono_arch_find_jit_info): Pop arguments off the
21888         stack. Fixes #64674.
21889
21890         * exceptions.cs: Add test for unwinding of call arguments.
21891
21892 Mon Sep 6 05:50:02 PDT 2004 Paolo Molaro <lupus@ximian.com>
21893
21894         * mini-*.c, mini-ops.h, inssel-long32.brg: introduced
21895         OP_ADDCC_IMM and OP_SUBCC_IMM (add/sub immediate that will
21896         set the carry/borrow flag). The sparc and s390 implementations
21897         can now use optimized versions (and simplify the code). ppc bugfixes.
21898
21899 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
21900
21901         * exceptions-ppc.c (mono_arch_find_jit_info): Fix memory leak.
21902
21903 2004-09-05  Zoltan Varga  <vargaz@freemail.hu>
21904
21905         * inssel-amd64.brg: Remove leftover 32 bit rule.
21906
21907         * mini-amd64.c (mono_arch_instrument_prolog): Fix tracing support.
21908
21909 2004-09-04  Zoltan Varga  <vargaz@freemail.hu>
21910
21911         * mini-exceptions.c (mono_find_jit_info): Refactor common code from
21912         mono_arch_find_jit_info functions into a new function. Fix a memory
21913         leak.
21914
21915         * exceptions-x86.c exceptions-amd64.c exceptions-sparc.c: Remove
21916         refactored code.
21917         
21918 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
21919
21920         * exceptions.cs inssel-long32.brg: Handle the OP_LCONV_TO_OVF_I2 case
21921         as well.
21922         
21923         * exceptions.cs: Add array size tests.
21924
21925         * mini.c: Allocate a separate icall wrapper for each arity of 
21926         mono_array_new_va. Fixes #59509.
21927
21928         * exceptions.cs: Add testcase for 64578.
21929
21930         * inssel-long32.brg: Fix OP_LCONV_TO_OVF_I1 rule. Fixes #64578.
21931
21932         * trace.c (is_filenamechar): Allow 0..9 in strings. Fixes #65094.
21933         
21934 2004-09-02  Martin Baulig  <martin@ximian.com>
21935
21936         * mini.c (mono_method_to_ir): When initializing the locals, call
21937         handle_initobj() on the generic instance itself, not its
21938         underlying type.
21939
21940 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
21941
21942         * mini.h (MonoJitDynamicMethodInfo): New structure, extension of 
21943         MonoJitInfo for dynamic methods.
21944
21945         * mini.c: Rename trampoline_hash_mutex to jit_mutex.
21946
21947         * mini.c: Add support for freeing JIT data for dynamic methods.
21948         
21949 2004-09-01  Martin Baulig  <martin@ximian.com>
21950
21951         * mini-x86.c (is_regsize_var): Added support for generic
21952         instances.
21953         (mono_arch_emit_prolog): Make this compile again, use
21954         `x86_push_imm_template (code)'.
21955
21956 2004-08-30 Ben Maurer  <bmaurer@users.sourceforge.net>
21957
21958         * mini-x86.c: make all push_imm instructions that get
21959         patched always emit the long form
21960
21961 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
21962
21963         * mini.c (mono_create_jump_trampoline): Store the jump trampolines 
21964         in a per-domain hash.
21965
21966         * mini-amd64.c (merge_argument_class_from_type): Handle generic
21967         types.
21968
21969 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
21970
21971         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: Ongoing SSE
21972         work.
21973         
21974         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: More SSE
21975         work.
21976
21977         * mini-amd64.c cpu-amd64.md: Implement checked int<->uint casts.
21978         Beginnings of SSE2 support.
21979
21980         * exceptions.cs: Add more tests for checked int<->uint casts.
21981
21982 2004-08-28  Martin Baulig  <martin@ximian.com>
21983
21984         * mini-x86.c (mono_arch_instrument_epilog): Added support for
21985         generic instances.
21986
21987         * mini.c
21988         (mono_type_to_ldind, mono_type_to_stind, type_to_eval_stack_type):
21989         Handle generic instances recursively.
21990
21991 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
21992
21993         * iltests.il: test for conv.u8 on a constant
21994
21995 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
21996
21997         * inssel-long32.brg: c&p rules for LCONV_x4 (membase) and
21998         LCONV_x4 (shrun_32 (membase)).
21999
22000 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
22001
22002         * inssel-x86.brg: c&p rules for push/setret of long
22003
22004 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
22005
22006         * inssel-x86.brg: c&p rules for compare (base, regvar) and
22007         compare (regvar, base)
22008
22009         * inssel-x86.brg: more burg love
22010
22011         * inssel.brg: more cleanup
22012
22013         * inssel-x86.brg, inssel-long32.brg: burg cleanup.
22014
22015 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
22016
22017         * basic-long.cs, basic-calls.cs: new tests for optimization.
22018
22019 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
22020
22021         * mini-amd64.c (read_tls_offset_from_method): Fix typo in previous
22022         patch.
22023
22024 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
22025
22026         * mini-amd64.c (read_tls_offset_from_method): Add another case.
22027         
22028 2004-08-25  Bernie Solomon  <bernard@ugsolutions.com>
22029
22030         * inssel.brg (mini_emit_memcpy): use 
22031         NO_UNALIGNED_ACCESS to disable memcpy optimization
22032
22033 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
22034
22035         * mini-amd64.c: Handle generic types in various places.
22036
22037         * mini.c (mono_method_to_ir): Handle generic types in init locals.
22038
22039 2004-08-24  Zoltan Varga  <vargaz@freemail.hu>
22040
22041         * mini.c (handle_box): Fix warning.
22042
22043         * mini-amd64.c (mono_arch_local_regalloc): Fix regalloc problem.
22044
22045         * mini-amd64.h: Enable the emit_state optimization.
22046
22047         * mini-ops.h cpu-amd64.md: Add new amd64_test_null opcode.
22048
22049         * mini-amd64.c: Add some new 64 bit peephole opts.
22050
22051         * inssel.brg (mini_emit_memcpy): Optimize for 64 bit architectures.
22052
22053         * cpu-amd64.md: sreg1 of div instructions must be %rax.
22054
22055         * mini-amd64.c: Register allocator fixes.
22056
22057         * mini.c: Add an optimization to emit_state to avoid allocation of new
22058         registers on some platforms.
22059
22060 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
22061
22062         * inssel-x86.brg inssel-amd64: Add yet another missing tree->dreg assignment.
22063
22064         * mini-x86.c (mono_arch_local_regalloc): Fix bug in long register
22065         allocation. Fixes #63085.
22066
22067         * basic-long.cs: Add new regression test.
22068
22069         * mini-amd64.c: Register allocator improvements.
22070
22071 2004-08-21  Zoltan Varga  <vargaz@freemail.hu>
22072
22073         * mini-amd64.c (read_tls_offset_from_method): Add another code
22074         sequence.
22075
22076         * tramp-amd64.c (amd64_class_init_trampoline): Use a more efficient
22077         instruction sequence for nullifying class init trampolines.
22078
22079         * objects.cs: Add new regalloc test.
22080
22081         * mini-amd64.c inssel-amd64.brg: Optimize parameter passing.
22082
22083 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
22084
22085         * mini-amd64.c (mono_arch_call_opcode): Refactor this a little.
22086         
22087         * mini-amd64.c (mono_arch_regalloc_cost): Adjust regalloc costs for
22088         arguments.
22089
22090         * driver.c: Fix profiling after TLS changes.
22091         
22092         * driver.c (mono_main): Set mono_stats.enabled if needed.
22093
22094         * mini.c (handle_alloc): New helper function used by CEE_NEWOBJ and
22095         CEE_BOX.
22096
22097 2004-08-20 Ben Maurer  <bmaurer@users.sourceforge.net>
22098
22099         * mini-x86.c: use a 1 op rather than a 2 op tls access
22100         instruction -> faster.
22101
22102 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
22103
22104         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from
22105         x86 backend.
22106
22107 2004-08-19 Bernie Solomon <bernard@ugsolutions.com>
22108
22109         * exceptions-sparc.c (throw_exception): fix typo
22110
22111 2004-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
22112
22113         * mini-x86.c, cpu-pentium.md, inssel-x86.brg:
22114         set tree->dreg correctly with tls. Allow any
22115         register to be used.
22116
22117         * mini-x86.c (read_tls_offset_from_method): add new code
22118         generation pattern seen with GCC.
22119
22120
22121 Thu Aug 19 17:26:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
22122
22123         * mini-exceptions.c, exceptions-x86.c, exceptions-amd64.c,
22124         exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
22125         exceptions-sparc.c: fix some performance issues in exception
22126         handling and setting of the stack trace for exceptions that were
22127         already thrown.
22128
22129 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
22130
22131         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from 
22132         x86 backend.
22133         
22134         * mini-amd64.c (mono_arch_is_int_overflow): Handle all possible 
22135         registers.
22136
22137 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
22138
22139         This patch inlines tls access, when possible.
22140         
22141         * mini.h: new arch functions for TLS intrinsics.
22142         All platforms updated with a stub.
22143
22144         * mini.c: use the new intrinsics
22145
22146         * mini-x86.c, cpu-pentium.md, inssel-x86.brg, mini-ops.h:
22147         arch specific intrinsic for tls variables
22148
22149 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
22150
22151         * Makefile.am (libmono_la_LDFLAGS): Enable creating of libmono dll
22152         under windows.
22153
22154 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
22155
22156         * mini.c: thread local allocation
22157
22158 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
22159
22160         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Enable.
22161
22162         * Makefile.am: Link against the static version of libmonogc.
22163         
22164         * Makefile.am: Link the static versions of the convenience libraries
22165         into the mono executable.
22166
22167         * mini-x86.h mini-x86.c: Throw the correct exception on integer overflow.
22168
22169 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
22170
22171         * mini.h mini.c mini-amd64.h mini-amd64.c: Throw the correct exception
22172         on integer overflow.
22173
22174         * mini-amd64.c: Reorganize function call code.
22175
22176         * mini-amd64.c (peephole_pass): Merge changes from mini-x86.c.
22177
22178 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
22179
22180         * inssel-x86.brg: use xor eax,eax.
22181         
22182         * basic.cs: new tests
22183
22184 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
22185
22186         * mini-amd64.c (mono_arch_emit_epilog): Use RIP relative addressing
22187         in exception throwing code.
22188         
22189 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
22190
22191         * inssel-x86.brg: use xor esi,esi.
22192
22193 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
22194
22195         * driver.c (mono_main): Call mono_trace_parse_options earlier so it
22196         can trace methods compiled during mini_init () too.
22197
22198         * cpu-amd64.md mini-amd64.c (mono_arch_output_basic_block): Handle 
22199         CEE_CONV_U4.
22200
22201 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
22202
22203         * Makefile.am: static link on x86 (r=zoltan)
22204
22205 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
22206
22207         * tramp-amd64.c (amd64_magic_trampoline): Avoid patching the trampoline
22208         code since it causes some programs to fail.
22209
22210 2004-08-12  Zoltan Varga  <vargaz@freemail.hu>
22211
22212         * mini-amd64.c (bb_is_loop_start): Merge changes from mini-x86.c.
22213
22214 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
22215
22216         * mini.c: ovfops_op_map - add STACK_OBJ case for
22217         CONV_I 
22218         * basic.cs: add test_0_pin_string as test
22219         case for above.
22220
22221 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
22222
22223         * Makefile.am: build C# if srcdir != builddir
22224
22225 Tue Aug 10 19:23:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
22226
22227         * dominators.c, mini.h, mini-x86.c: fix loop alignment with
22228         fall-through blocks.
22229
22230 Tue Aug 10 16:18:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
22231
22232         * driver.c: enable loop by default again and include abcrem in -O=all.
22233
22234 2004-08-08  Zoltan Varga  <vargaz@freemail.hu>
22235
22236         * iltests.il: Add some localloc tests.
22237
22238         * mini.c (mono_method_to_ir): Set stack type of LOCALLOC correctly.
22239
22240         * inssel-amd64.brg inssel-x86.brg: Set dreg of LOCALLOC correctly. 
22241         Fixes #62574.
22242
22243         * inssel-amd64.brg: Add some optimizations.
22244
22245         * mini-amd64.c (mono_arch_setup_jit_tls_data): Add tls offset detection
22246         for gcc-3.4.
22247
22248         * Makefile.am: Statically link mono against libmono on AMD64.
22249         
22250         * mini-amd64.c inssel-amd64.brg: Optimizations.
22251
22252 2004-08-07  Zoltan Varga  <vargaz@freemail.hu>
22253
22254         * mini-amd64.c (mono_arch_emit_prolog): Optimize lmf saving a bit.
22255
22256         * tramp-amd64.c: Patch calling code in trampolines.
22257
22258 2004-08-06  Zoltan Varga  <vargaz@freemail.hu>
22259
22260         * mini-amd64.c: pinvoke struct passing fixes.
22261
22262 2004-08-05  Bernie Solomon  <bernard@ugsolutions.com>
22263
22264         * mini-sparc.c: redo change, make mono_arch_cpu_init call
22265         mono_arch_cpu_optimizazions so sparcv9 is initialized when embedded
22266
22267 2004-08-05  Duncan Mak  <duncan@ximian.com>
22268
22269         * mini.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
22270         CEE_LDELEM_ANY.
22271
22272 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
22273
22274         * mini-amd64.c (emit_move_return_value): Move return value for normal
22275         calls too.
22276
22277 2004-08-05  Martin Baulig  <martin@ximian.com>
22278
22279         * mini.c (ret_type_to_call_opcode): Don't use a `t' variable for
22280         `type->type'; just modify `type' itself when dealing with enums
22281         and generic instances.
22282         (check_call_signature): Make `simple_type' a `MonoType *'.
22283
22284 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
22285
22286         * mini.c: Use OP_PADD to add offsets to addresses.
22287
22288         * mini-amd64.h: Disable SIGSEGV_ON_ALTSTACK.
22289
22290 2004-08-04  Bernie Solomon  <bernard@ugsolutions.com>
22291
22292         * mini-sparc.c (mono_arch_emit_epilog): fix check
22293         for folding last op into restore instruction
22294
22295 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
22296
22297         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Allocate
22298         helper methods using the code manager.
22299         
22300         * exceptions-amd64.c (mono_arch_get_throw_exception): Fix maximum length.
22301
22302         * mini-amd64.c (mono_arch_allocate_vars): Fix tls offset detection.
22303
22304 Tue Aug 3 23:50:00 EST 2004 Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
22305         
22306         * mini-s390x.c mini-s390x.h tramp-s390x.c inssel-s390x.brg
22307           cpu-s390x.md exceptions-s390x.c Makefile.am: S/390 64-bit JIT
22308
22309         * mini-s390.c: fix tail processing
22310
22311 Tue Aug 3 01:35:44 PDT 2004 Paolo Molaro <lupus@ximian.com>
22312
22313         * mini-ppc.c: mul.ovf.un exception name fix.
22314
22315 2004-08-03  Martin Baulig  <martin@ximian.com>
22316
22317         * mini-x86.c (mono_arch_call_opcode): Correctly handle generic
22318         instances; before jumping to `handle_enum', also modify `ptype'.
22319
22320 2004-08-02  Bernie Solomon  <bernard@ugsolutions.com>
22321
22322         * cpu-sparc.md: fcall maximal length too small.
22323
22324 2004-08-02  Zoltan Varga  <vargaz@freemail.hu>
22325
22326         * mini-amd64.c mini.h: Add initial support for passing/returning 
22327         structures to/from pinvoked methods.
22328
22329 Mon Aug 2 11:59:35 PDT 2004 Paolo Molaro <lupus@ximian.com>
22330
22331         * mini-ppc.c: reg allocator fix.
22332
22333 2004-07-31  Zoltan Varga  <vargaz@freemail.hu>
22334
22335         * mini-amd64.c (mono_arch_output_basic_block): Fix OP_X86_PUSH_OBJ.
22336
22337         * inssel.brg: Optimize memset on 64 bit machines.
22338
22339         * mini-amd64.c: Fix some vararg cases.
22340
22341 2004-07-30  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
22342
22343         * mini-s390.c: Corrected macro in emit_float_to_int
22344
22345         * s390-abi.cs: Tests to exercise the s390 ABI
22346
22347 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
22348
22349         * exceptions-amd64.c (mono_arch_find_jit_info): Fix restoring of
22350         caller saved regs.
22351
22352         * basic.cs: Add a test for add.ovf.un.
22353
22354 2004-07-30  Bernie Solomon  <bernard@ugsolutions.com>
22355
22356         * mini-sparc.c: add case for OP_IDIV_UN
22357
22358 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
22359
22360         * mini-amd64.c mini-amd64.h mini.c: Add support for vararg pinvoke calls.
22361         
22362         * mini-amd64.c cpu-amd64.md: Ongoing JIT work.
22363
22364 2004-07-30  Ben Maurer  <bmaurer@ximian.com>
22365
22366         * basic.cs: regression tests.
22367
22368         * inssel-x86.brg: Disable cmp BYTE PTR [eax], imm, it causes various
22369         regressions.
22370
22371 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
22372
22373         * basic.cs: Add a new test.
22374
22375         * mini-amd64.c aot.c cpu-amd64.md: Add support for tracing, profiling 
22376         and AOT. Various fixes and optimizations.
22377
22378         * inssel.brg (CALL_REG): Add 64 bit versions of call_reg rules.
22379
22380 Fri Jul 30 15:49:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
22381
22382         * mini-ppc.c: make sure temp regs are not used for global reg
22383         allocation.
22384
22385 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
22386
22387         * cpu-sparc.md: conv_i8 fix for 64bits
22388
22389         * mini-sparc.c: add cases for OP_IXXX codes for 64bits
22390
22391 2004-07-29  Ben Maurer  <bmaurer@ximian.com>
22392         
22393         * cpu-pentium.md, mini-x86.c, inssel-x86.brg, mini-ops.h:
22394         add opcode for cmp BYTE PTR [eax], imm.
22395
22396         * inssel.brg: Make memcpy and memset takes bases.
22397
22398 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
22399
22400         * *-amd64.*: More AMD64 work.
22401         
22402 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
22403
22404         * cpu-pentium.md, inssel-x86.brg, mini-ops.h, mini-x86.c:
22405         add a compare-not-equal opcode.
22406         
22407 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
22408
22409         * mini.c: Use mono_init_from_assembly instead of mono_init.
22410         
22411 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
22412
22413         * mini.c: Fix opcode mapping for STACK_MP on 64 bit platforms.
22414
22415         * mini.c (CEE_NEWOBJ): Call mono_array_new_va using the correct signature.
22416
22417         * mini.c: Use MONO_ARCH_SIGACTION on AMD64 as well.
22418
22419         * inssel.brg: 64 bit fixes.
22420
22421         * mini.h (MonoCallInst): Add some AMD64 specific data.
22422
22423         * mini.h: Add some OP_P opcodes.
22424
22425 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
22426
22427         * basic.cs: tests for 61797 and 61740
22428
22429 Tue Jul 27 16:05:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
22430
22431         * mini-ppc.c, mini-sparc.c, mini-s390.c: keep track of line
22432         numbers in the debug info (spotted by Geoff Norton, <gnorton@customerdna.com>).
22433
22434 2004-07-24  Zoltan Varga  <vargaz@freemail.hu>
22435
22436         * mini-sparc.c (mono_arch_output_basic_block): Add CEE_CONV_U8/I8.
22437
22438         * *-amd64*.*: Ongoing AMD64 work.
22439
22440 2004-07-23 Zoltan Varga <vargaz@freemail.hu>
22441
22442         * inssel-long.brg: Implement CONV_I8/CONV_U8 in the backends.
22443
22444         * *-amd64*: Ongoing AMD64 work.
22445
22446         * mini-arch.h: Add AMD64 support.
22447
22448         * mini-sparc.c (mono_arch_is_inst_imm): New arch dependent function.
22449
22450         * mini.h: Add new arch dependent function mono_arch_is_inst_imm.
22451
22452         * mini-ops.h: Add new opcodes.
22453
22454         * Makefile.am: Add AMD64 support.
22455
22456         * inssel.brg inssel-long32.brg inssel-long.brg: Move mul/div and shift
22457         rules into the inssel-long*.brg files.
22458
22459         * *-amd64.*: Add beginnings of AMD64 backend.
22460
22461 2004-07-22  Ben Maurer  <bmaurer@ximian.com>
22462
22463         * mini.c (print_dfn): commenting out the code that prints
22464         the cil. With -O=deadce, this makes -v -v crash.
22465         
22466         * cpu-pentium.md: make checkthis have a length of 2
22467
22468 2004-04-21  Bernie Solomon  <bernard@ugsolutions.com>
22469
22470         * mini-sparc.h: fix implementations of __builtin
22471         functions for Sun compiler for V9.
22472
22473 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
22474
22475         * mini.c: use the new stelem.ref wrapper
22476         * exceptions.cs, arrays.cs: new stelem.ref tests
22477
22478 Wed Jul 14 19:08:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
22479
22480         * mini-ppc.c, exceptions-ppc.c: cleanups and fixes (the
22481         new XSP should work with these changes).
22482
22483 2004-07-14  Ben Maurer  <bmaurer@ximain.com>
22484         
22485         * inssel-{long32,x86,}.brg: trivial optimizations.
22486         
22487 Mon Jul 12 20:25:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
22488
22489         * mini.c: load value when emitting box operation in
22490         constrained calls.
22491
22492 2004-07-12  Ben Maurer  <bmaurer@ximian.com>
22493
22494         * mini-x86.c (OP_CHECK_THIS): cmp DWORD PTR [eax], eax
22495         is one byte shorter than cmp DWORD PTR [eax], 0.
22496
22497 Mon Jul 12 17:47:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
22498
22499         * inssel-ppc.brg: arguments on the stack are always
22500         relative to the stack pointer (spotted by Neale Ferguson).
22501
22502 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22503
22504         * exceptions-x86.c: delay appending the method name to the trace until
22505         after mono_jit_info_table_find is called, as this gets the real
22506         MonoMethod.
22507
22508 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
22509
22510         * aot.c: register roots
22511
22512 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
22513
22514         * aot.c : I could just use PLATFORM_WIN32 flag.
22515
22516 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
22517
22518         * aot.c : Reverting the previous fix. This time it broke linux build.
22519
22520 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
22521
22522         * aot.c : quick cygwin build fix. mkdir() with two args does not exist.
22523
22524 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
22525
22526         * mini.c (handle_stack_args): Remove some more debugging code.
22527         
22528         * mini.c (handle_stack_args): Remove debug output left in by mistake.
22529
22530         * driver.c mini.h aot.c: Allow additional options to be specified with
22531         --aot and pass them to mono_compile_assembly.
22532
22533         * aot.c: Add experimental code to AOT compile all loaded assemblies
22534         on demand and save the code into a cache in the filesystem.
22535
22536         * aot.c: Add support for more wrapper methods.
22537         
22538         * mini.c (handle_stack_args): Handle some corner cases. Fixes 
22539         58863.
22540
22541         * cpu-*.md: Remove removed opcodes.
22542
22543         * mini.h mini.c: Move JIT icall handling to icall.c. Replace usage of
22544         CEE_MONO_PROC<x> with CEE_MONO_ICALL. Move registration of marshalling
22545         related icalls to marshal.c.
22546
22547 2004-07-06  Zoltan Varga  <vargaz@freemail.hu>
22548
22549         * mini-ops.h: Add OP_SAVE_LMF and OP_RESTORE_LMF.
22550
22551         * Makefile.am (EXTRA_DIST): Add inssel-long[32].brg.
22552
22553         * inssel.brg: Fix warning. Add rules for SAVE_LMF and RESTORE_LMF.
22554
22555 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
22556         * liveness.c: If liveness is recomputated we need to reset the information
22557         for each variable. This way, if the liveness range has been narrowed
22558         by optimizations that happened after the last computation, we can return
22559         a smaller range.
22560         
22561         For example, if you have
22562         
22563         {
22564                 int i = 0;
22565                 
22566                 // Tons of code that does not affect i
22567                 
22568                 i = foo ();
22569                 ...
22570         }
22571         
22572         i = 0 is dead code and will be removed by SSA. However, when
22573         linear scan gets to the code, i will still appear to be live
22574         throughout the entire block. This prevents good register allocation.
22575
22576 2004-07-06  Martin Baulig  <martin@ximian.com>
22577
22578         * debug-mini.c (mono_debug_init_method): Allow
22579         MONO_WRAPPER_MANAGED_TO_NATIVE wrappers.
22580         (mono_debug_add_icall_wrapper): New method.
22581
22582         * mini.c (mono_icall_get_wrapper): Call mono_debug_add_icall_wrapper().
22583
22584 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
22585
22586         * mini.c (optimize_branches): Fix linking of bblocks in branch->branch
22587         optimization.
22588
22589 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
22590
22591         * aot.c (mono_aot_load_method): Fix loading of debug info.
22592
22593 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
22594
22595         * aot.c: Add logging support.
22596
22597 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
22598
22599         * mini.h: Add prototype for mono_print_method_from_ip.
22600
22601         * mini.c: 64 bit fixes. Use LCOMPARE for comparing longs.
22602
22603         * inssel.brg: 64 bit fixes.
22604
22605         * inssel.brg inssel-long32.brg: Move 32 bit arithmetic rules to 
22606         inssel-long32.brg.
22607
22608         * Makefile.am: Add SPARC64 support.
22609
22610 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
22611
22612         * aot.c: Fix alignment problems on 32 bit platforms.
22613
22614 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
22615
22616         * helpers.c (mono_disassemble_code): Pass -xarch=v9 to assembler on
22617         SPARC64.
22618
22619         * aot.c: Add SPARC64 support. Reorganize patch table to fix alignment
22620         problems.
22621
22622         * mini.h: Bump AOT file version. Some 64 bit fixes.
22623
22624 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
22625
22626         * inssel-sparc.brg: Add new rule to avoid register moves.
22627
22628         * inssel.brg: Add ldind_to_load_membase helper function.
22629
22630 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
22631
22632         * mini.c: OffsetToStringData intrinsic.
22633         
22634 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
22635
22636         * ssa.c: Handle OP_LCOMPARE the same as OP_COMPARE.
22637
22638         * objects.cs exceptions.cs basic.cs basic-long.cs basic-calls.cs: New
22639         regression tests.
22640
22641         * mini-ops.h cpu-sparc.md mini-sparc.h mini-sparc.c exceptions-sparc.c tramp-sparc.c inssel-long.brg: Add SPARC64 support.
22642 Mon Jun 28 18:05:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
22643
22644         * mini.c: reinstated mono_compile_get_interface_var()
22645         on x86, too, since the change breaks the Gtk# build there as well.
22646
22647 Fri Jun 25 17:36:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22648
22649         * driver.c: remove loop from the default optimizations: it seems to
22650         interact badly with some of the other options (see bug #60613).
22651
22652 2004-06-25  Zoltan Varga  <vargaz@freemail.hu>
22653
22654         * mini.c mini-x86.h mini-x86.c: Applied patch from Guenter Feldmann 
22655         (fld@informatik.uni-bremen.de): Add Solaris x86 support.
22656
22657 Tue Jun 22 21:29:11 CEST 2004 Paolo Molaro <lupus@ximian.com>
22658
22659         * mini-ppc.c, cpu-g4.md: small updates to be able to compile
22660         vararg-using methods.
22661
22662 2004-06-21  Martin Baulig  <martin@ximian.com>
22663
22664         * mini/mini-exceptions.c
22665         (mono_handle_exception): Added `gpointer original_ip' argument.
22666         After calling mono_unhandled_exception(), call
22667         mono_debugger_unhandled_exception() and if that returns true,
22668         restore the context and return.
22669
22670 Mon Jun 21 19:26:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
22671
22672         * mini-ppc.c: prefer the use of relative branches so
22673         they won't need to be patched in aot code (patch from Patrick Beard).
22674
22675 Mon Jun 21 19:03:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
22676
22677         * aot.c: patch from Patrick Beard to make the output assembly
22678         more correct for the MacOSX assembler. Small tweak to
22679         generate sane images on Linux/PPC, too.
22680
22681 Fri Jun 18 18:24:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22682
22683         * mini.c, mini.h, mini-ppc.c: handle varargs methods with a special
22684         case until bug #59509 is fixed (shows up in #60332).
22685
22686 Tue Jun 15 16:36:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
22687
22688         * mini.c: make sure the needed wrappers are compiled, too, with
22689         precomp.
22690
22691 Mon Jun 14 18:36:08 CEST 2004 Paolo Molaro <lupus@ximian.com>
22692
22693         * driver.c: remove NPTL reference in --version output.
22694
22695 Sun Jun 13 17:25:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22696
22697         * aot.c: patch from Patrick Beard (pcbeard@mac.com) to
22698         generate valid assembly for the Mach-O assembler.
22699
22700 Sun Jun 13 15:59:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
22701
22702         * driver.c: don't include abcrem in the all optimization specifier
22703         since it slows down jit compilation too much for now.
22704
22705 2004-06-12 Ben Maurer  <bmaurer@users.sourceforge.net>
22706
22707         * mini.c: use BIGMUL only if both operands have the same signage.
22708         * iltests.il: Test for bug 60056. (errors related to signage in
22709         BIGMUL).
22710
22711         r=lupus.
22712
22713 Thu Jun 10 16:06:42 CEST 2004 Paolo Molaro <lupus@ximian.com>
22714
22715         * mini.c, aot.c: memory leak fixes.
22716
22717 Tue Jun 8 16:37:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
22718
22719         * inssel-long32.brg: implemented a few missing ulong cast opcodes.
22720
22721 Tue Jun 8 15:36:30 CEST 2004 Paolo Molaro <lupus@ximian.com>
22722
22723         * Makefile.am: remove the -static hack completely, it links in
22724         statically glib as well.
22725
22726 Sat Jun 5 16:32:33 CEST 2004 Paolo Molaro <lupus@ximian.com>
22727
22728         * iltests.il, mini.c: fixed bug#59580 in branch optimization.
22729         * exceptions.cs: make it compile with new mcs/csc.
22730
22731 2004-06-03 Massimiliano Mantione <massi@ximian.com>
22732         * cpu-pentium.md basic-float.cs Fixed bug on fpu spills (see bug 54467),
22733         and added relevant test case.
22734
22735 Mon May 31 19:41:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
22736
22737         * mini.c revert Zoltan's fix to bug#58863 on ppc, since it causes
22738         regressions in gtk-sharp.
22739
22740 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
22741
22742         * exceptions.cs: New regression tests.
22743
22744         * jit-icalls.c (mono_llmult_ovf): Fix some boundary conditions.
22745
22746 Sat May 29 10:45:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
22747
22748         * mini.c: emit castclass/isinst in their own trees (bug #54209/59057).
22749
22750 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
22751
22752         * mini-sparc.h (MONO_ARCH_NEED_DIV_CHECK): Define this.
22753
22754         * cpu-sparc.md mini-sparc.c: Add overflow detection to div opcodes.
22755
22756 2004-05-28      Patrik Torstensson <totte@hiddenpeaks.com>
22757
22758         * mini.c (mono_jit_runtime_invoke): Init class in this
22759         method instead of trusting mono_jit_compile_method to
22760         do the work (because wrappers can be in object class)
22761
22762 2004-05-27  Zoltan Varga  <vargaz@freemail.hu>
22763
22764         * mini-sparc.c (mono_arch_output_basic_block): Fix sub.imm.
22765
22766         * basic-long.cs: New regression test.
22767
22768 Thu May 27 15:50:52 CEST 2004 Paolo Molaro <lupus@ximian.com>
22769
22770         * cpu-g4.md, mini-ppc.c: fixes to long add/sub ovf opcodes
22771         and div/rem checks.
22772
22773 Thu May 27 12:36:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
22774
22775         * Makefile.am: fix miguel's change to build mono statically against
22776         libmono (track build dependencies).
22777
22778 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
22779
22780         * cfold.c: Some glib versions do not have G_MININT32.
22781
22782 2004-05-26  Massimiliano Mantione  <massi@ximian.com>
22783
22784         * mini-x86.c cpu-pentium.md Makefile.am basic-math.cs: Fixed problem
22785         with precision of tan, atan, sin and cos, and implemented related
22786         regressions tests (fixes bug 54467, but one new problem appeared and
22787         is not fixed yet).
22788
22789 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
22790
22791         * cfold.c (FOLD_BINOPZ): Avoid division by zero.
22792
22793         * exceptions.cs: Add test for constant folding && division by zero.
22794
22795         * driver.c mini.h mini.c mini-x86.c: Revert most of the previous patch
22796         since driver.c is in libmono too, so the optimization was useless.
22797
22798         * driver.c mini.h mini.c mini-x86.c: Moved the mono_lmf_addr TLS 
22799         variable to driver.c so the compiler can emit more efficient code to
22800         access them.
22801
22802 2004-05-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22803
22804         * Makefile.am: don't distribute generated inssel.[ch] files.
22805
22806 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
22807
22808         * mini.c (mono_jit_compile_method_with_opt): Really emit icall wrappers
22809         into the default appdomain. Fixes #58707.
22810
22811         * jit-icalls.c: Remove the broken approximation for truncl, doing
22812         no conversion is better.
22813
22814         * mini.c (handle_stack_args): Avoid reusing variables for stack slots.
22815         Fixes #58863.
22816
22817 Tue May 25 14:33:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
22818
22819         * mini-ops.h, mini-ppc.c, cpu-g4.md, inssel-ppc.brg: eliminate the use
22820         of the mcrxr instruction which is not available on some processors
22821         even if it's documented to be. Implement add and sub overflow correctly
22822         (still not complete for long unsigned). Speed up icalls a bit.
22823
22824 2004-05-25 13:01 CET Patrik Torstenson <totte@hiddenpeaks.com>
22825
22826         * mini.c (mono_jit_compile_method_with_opt): Make sure that
22827         we run .cctor in the current domain instead of target_domain.
22828         
22829         Fixes bug #58558, .cctor not being called in -O=shared.
22830
22831 Tue May 25 12:46:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
22832
22833         * mini-ppc.h, jit-icalls.c: added explicit checks for divide by zero.
22834
22835 2004-05-24 Ben Maurer  <bmaurer@users.sourceforge.net>
22836
22837         * mini-x86.c (EMIT_COND_BRANCH): If an OP_LABEL has an offset
22838         which can be done with an imm8, do it that way.
22839         (mono_arch_output_basic_block): ditto for a jmp
22840         (mono_arch_emit_prolog): Computate maximum offset of a label.
22841
22842 2004-05-24 18:18 CET Patrik Torstenson <totte@hiddenpeaks.com>
22843
22844         * mini-x86.c (mono_arch_local_regalloc): the reg allocator
22845         now tries to allocate prefered physical reg's for virtual
22846         regs. This reduces the number of emited spills/loads with
22847         20-30% on our core assemblies.
22848
22849 Mon May 24 18:21:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
22850
22851         * jit-icalls.c: truncl() is not needed and trunc() is
22852         the correct thing to do anyway (bug #58287).
22853
22854 2004-05-24  Zoltan Varga  <vargaz@freemail.hu>
22855
22856         * mini-sparc.c (mono_arch_flush_icache): Call sync_instruction_memory
22857         if available.
22858
22859 Mon May 24 12:49:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
22860
22861         * driver.c: enable loop optimizations by default.
22862
22863 Mon May 24 11:13:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
22864
22865         * mini-x86.c: fix calc of max loop size when aligning loops start.
22866
22867 2004-05-23  Zoltan Varga  <vargaz@freemail.hu>
22868
22869         * ssa.c (mono_ssa_cprop): Allocate carray dynamically instead of on
22870         the stack.
22871
22872 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
22873
22874         * mini-sparc.c (mono_arch_output_basic_block): ADD_IMM and SUB_IMM
22875         should set carry.
22876
22877         * basic-long.cs: Add tests for add/subtract of immediates with carry.
22878
22879         * mini.c exceptions-x86.c: Remove MONO_USE_EXC_TABLES stuff.
22880         
22881         * mini.c (inline_method): Allways inline some wrappers even if the cost
22882         is too large. Fixes #58785.
22883
22884         * mini.c: Add support for MARSHAL_CONV_FTN_DEL.
22885         
22886 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
22887
22888         * mini-sparc.c exceptions-sparc.c: Applied patch from Mark Crichton
22889         (crichton@gimp.org). Beginning of support for sparc/linux.
22890
22891         * mini-sparc.c: Optimize retrieval of LMF address.
22892
22893 Fri May 21 08:00:12 EDT 2004 Paolo Molaro <lupus@ximian.com>
22894
22895         * exceptions-ppc.c:  handle alloca in methods with clauses.
22896
22897 Fri May 21 07:35:30 EDT 2004 Paolo Molaro <lupus@ximian.com>
22898
22899         * mini-ppc.c: cleanups, off-by-one fixes, avoid recursive thunks.
22900
22901 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
22902
22903         * mini.c: Delegate most of the abort signal work to 
22904           mono_thread_request_interruption, which also handles Stop and Suspend
22905           states.
22906
22907 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
22908
22909         * mini.c mini.h: Allow inlining of icall wrappers if the backend 
22910         supports the save/restore lmf opcodes.
22911
22912 2004-05-19  Zoltan Varga  <vargaz@freemail.hu>
22913
22914         * mini-x86.c (mono_arch_setup_jit_tls_data): Handle code generated
22915         by gcc-3.4 as well.
22916
22917         * mini-x86.h mini-x86.c tramp-x86.c: Optimize lmf restoring code.
22918
22919 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
22920
22921         * mini.h mini.c (mini_method_compile): Only run abc removal pass on 
22922         methods which contain array accesses.
22923
22924         * mini.c (CEE_LDTOKEN): Handle this instruction correctly on bb
22925         boundaries. Fixes #58537.
22926
22927         * iltests.il: Add regression test for #58537.
22928
22929 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
22930
22931         * mini-x86.c (mono_arch_local_regalloc): Last part of
22932         fix for bug #58633 (releasing register to early).
22933
22934 2004-05-18  Miguel de Icaza  <miguel@ximian.com>
22935
22936         * basic-long.cs: Add new regression test.
22937
22938 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
22939
22940         * mini-x86.c (mono_arch_local_regalloc): Avoid releasing a
22941         register too early on the chain.
22942
22943 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
22944
22945         * mini.c (create_helper_signature): Use a helper function to reduce
22946         the code which needs to be written. Also set the calling convention of
22947         icalls on windows. Fixes #57840.
22948
22949 Tue May 18 11:05:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
22950
22951         * mini.h, exceptions-x86.c, exceptions-sparc.c, exceptions-s390.c,
22952         exceptions-ppc.c: added helper function to get the instruction address
22953         from a signal handler context.
22954
22955 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
22956
22957         * helpers.c: use g_get_tmp_dir. Invokes happyness 
22958         from gonzalo.
22959
22960 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
22961
22962         * helpers.c: Add new env variable to pass args to objdump.
22963         Specifically for those of us who love -Mintel. r=miguel, gonzalo.
22964
22965 2004-05-17  Radek Doulik  <rodo@ximian.com>
22966
22967         * Makefile.am (common_sources): added abcremoval.h so it get
22968         disted and daily mono packages on go-mono.com will build again
22969
22970 2004-05-17  Massimiliano Mantione  <massi@ximian.com>
22971
22972         * abcremoval.c: Fixed coding style, added copyright header.
22973
22974         * abcremoval.h: Fixed style and moved prototype to mini.h, added copyright header.
22975
22976         * mini.h: Added prototype for abc removal main function.
22977
22978         * build_relations_propagation_table.pl: Added copyright header.
22979
22980 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
22981
22982         * basic-long.cs: reg test for complex ceq_long bug.
22983
22984 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
22985
22986         * mini-x86.c (mono_arch_local_regalloc): Correctly free 
22987         reg in long and clob case (bug #58343). Fixed/added comments.
22988
22989 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
22990
22991         * mini.c (mono_jit_runtime_invoke): Follow new convention
22992         of calling the invoke method with an function pointer.
22993
22994 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
22995
22996         * ChangeLog: Fix author of memory leak patch.
22997
22998 Fri May 14 15:13:06 CEST 2004 Paolo Molaro <lupus@ximian.com>
22999
23000         * Makefile.am: fix make dist as well...
23001
23002
23003 2004-05-14  Massimiliano Mantione  <massi@ximian.com>
23004
23005         * cfold.c: Made so that conversions from pointer to int4 are no-ops
23006         on archs where pointers are 4 bytes long.
23007
23008         * Makefile.am: Added abcremoval.c source file.
23009
23010         * abcremoval.c: Added abcremoval.c.
23011
23012         * abcremoval.h: Added abcremoval.h.
23013
23014         * build_relations_propagation_table.pl: Added build_relations_propagation_table.pl.
23015
23016         * inssel.brg: Enabled bounds check removal.
23017
23018         * mini.c: Added support for abcrem optimization.
23019
23020         * mini.h: Added abcrem optimization label.
23021
23022         * driver.c: Added support for abcrem optimization.
23023
23024         * propagated_relations_table.def: Added propagated_relations_table.def.
23025
23026 Fri May 14 14:30:13 CEST 2004 Paolo Molaro <lupus@ximian.com>
23027
23028         * mini.c, cfold.c: fix style.
23029
23030 Fri May 14 14:28:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
23031
23032         * mini.c: handle issue with the low-level implementation of
23033         some long opcodes (bug #54209).
23034
23035 2004-05-13 Ben Maurer  <bmaurer@users.sourceforge.net>
23036
23037         * basic.cs: test for my new cmov stuff.
23038
23039 2004-05-13      Patrik Torstensson
23040
23041         * mini-x86.c: added OP_X86_COMPARE_MEMBASE_IMM peephole
23042         opt and added peephole documentation.
23043
23044 Thu May 13 11:41:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
23045
23046         * tramp-ppc.c: rewrote the generic trampoline code.
23047
23048 2004-05-11      Patrik Torstensson
23049
23050         * mini-x86.c: optimize long shl/shr asm code (one less branch)
23051
23052 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
23053
23054         * basic.cs basic-long.cs objects.cs: Make these compile under MS csc.
23055
23056         * mini.h mini.c dominators.c: Applied patch from Derek Woo
23057         (derek@eecg.toronto.edu): Fix memory leaks in loop optimizations.
23058
23059         * mini.c: Add new icalls for AsAny marshalling.
23060
23061 Tue May 11 16:00:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
23062
23063         * tramp-ppc.c, mini-ppc.c: more cleanups.
23064
23065 2004-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23066
23067         * mini.c: no warnings.
23068
23069 Tue May 11 13:59:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
23070
23071         * mini-ppc.c, mini.c: use mono_resolve_patch_target ().
23072
23073 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
23074
23075         * mini.c: In the thread abort signal handler, if the thread is in the
23076         process of being stoped, don't throw the Abort exception, just stop the
23077         thread.
23078
23079 Tue May 11 12:15:24 CEST 2004 Paolo Molaro <lupus@ximian.com>
23080
23081         * tramp-ppc.c: removed old code.
23082
23083 Tue May 11 12:02:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
23084
23085         * mini.h, mini-ppc.c, cfold.c: export mono_is_power_of_two().
23086         do some simple speed optimizations on ppc.
23087
23088 Mon May 10 17:21:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
23089
23090         * mini-ppc.c, cpu-g4.md: fixes to handle large stack frames
23091         and large offsets in load/store.
23092
23093 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
23094
23095         * mini-x86.c (mono_arch_local_regalloc): Remove the previous fix, since
23096         it causes regressions.
23097
23098 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
23099
23100         * mini-sparc.c: Fix vararg support + add beginnings of sigaltstack
23101         support.
23102
23103 Fri May 7 13:25:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
23104
23105         * jit-icalls.c: remove warnings.
23106         * inssel-x86.brg, inssel.brg, mini-x86.c, cfold.c: some simple
23107         speedups for unsafe code.
23108
23109 2004-05-07 Ben Maurer  <bmaurer@users.sourceforge.net>
23110
23111         * inssel.brg: Optimize Stind.[ui][12]. r=zoltan.
23112
23113 2004-05-06  Zoltan Varga  <vargaz@freemail.hu>
23114
23115         * basic-calls.cs: Add new regression test.
23116
23117         * mini.c (mono_runtime_install_handlers): Use SA_ONSTACK since it is
23118         more portable.
23119
23120         * mini.c (mono_method_to_ir): Handle opcode emulation for *_OVF opcodes.
23121
23122         * mini-x86.c (mono_arch_local_regalloc): Free new_dest register when it
23123         is no longer used.
23124
23125 2004-05-06      Patrik Torstensson
23126
23127         * mini-x86.[c|h], inssel-x86.brg, cpu-pentium.md, mini.c: enabled
23128         long reg allocation in any reg (not only eax:edx) and implemented 
23129         long shl/shr ops in asm instead of helpers.
23130
23131 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
23132
23133         * mini-sparc.h: Fix warnings.
23134
23135         * exceptions-sparc.c (mono_arch_find_jit_info): Pop unused lfm off the
23136         stack.
23137
23138         * mini-exceptions.c (mono_handle_exception): Call the filter in a
23139         separate statement for clarity.
23140
23141         * mini-sparc.c: Update status.
23142
23143 2004-05-04  Zoltan Varga  <vargaz@freemail.hu>
23144
23145         * mini-exceptions.c (ves_icall_get_frame_info): Flush register windows
23146         here.
23147
23148 Mon May 3 22:58:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
23149
23150         * inssel-ppc.brg: another small pre-release workaround:
23151         we don't do overflow detection for long_sub_un.
23152
23153 Sun May 2 20:12:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
23154
23155         * mini.c, mini-ops, inssel-long32.brg: speedup ulong >> 32
23156         (also works around a weird ppc bug: 57957).
23157
23158 Sat May 1 16:56:10 EDT 2004 Paolo Molaro <lupus@ximian.com>
23159
23160         * tramp-ppc.c: trampoline fixes.
23161
23162 Fri Apr 30 15:54:26 EDT 2004    Paolo Molaro <lupus@ximian.com>
23163
23164         * mini-ppc.c: fixed typos.
23165
23166 Thu Apr 29 20:15:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
23167
23168         * mini-ppc.c, exceptions-ppc.c: more code saves registers
23169         at the top of the stack. Fixed typos. Use a frame registers
23170         for all the methods with exception clauses.
23171
23172 Thu Apr 29 18:52:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
23173
23174         * exceptions-ppc.c: restore fp registers.
23175
23176 Thu Apr 29 18:26:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
23177
23178         * mini-ppc.c, exceptions-ppc.c: save the registers in reverse
23179         order from the stack top (moved the stack room to save the
23180         return value for trace after the param area). Fixed corruption
23181         in restoring registers on unwind.
23182
23183 Thu Apr 29 16:47:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
23184
23185         * mini-ppc.c, cpu-g4.md: fixed unisgned -> double conversion.
23186
23187 Thu Apr 29 13:50:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
23188
23189         * exceptions-ppc.c, mini-ppc.h, mini-ppc.c: fixed localloc
23190         and prolog/epilog for methods that use it. Allow
23191         enough param area room for varargs methods. Fix miguel's
23192         breakage in exception handling.
23193
23194 Thu Apr 29 12:06:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
23195
23196         * Makefile.am: run genmdesc only on current arch.
23197
23198 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23199
23200         * exceptions-x86.c:
23201         * mini-x86.h: fix the build on windows.
23202
23203 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
23204
23205         * 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.
23206
23207         * exceptions-sparc.c exceptions-ppc.c exceptions-s390.c mini-ppc.h mini-s390.h mini-sparc.h: Fix up ports after changes.
23208
23209         * mini-exceptions.c: New file.
23210         
23211         * mini.c mini-exceptions.c mini-x86.h exceptions-x86.c Makefile.am:
23212         Move some parts of the x86 exception handling code to an 
23213         arch-independent file so it can be shared with other ports.
23214
23215 Tue Apr 27 12:15:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
23216
23217         * trace.c, cpu-g4.md, inssel-ppc.brg, mini-ppc.c: some fixes for FP code.
23218
23219 2004-04-26  David Waite  <mass@akuma.org>
23220
23221         * driver.c: remove comma from end of enumeration declaration
23222
23223 2004-04-26  Jackson Harper  <jackson@ximian.com>
23224
23225         * driver.c: parse config file before loading first assembly. This
23226         allows the user gac to be enabled/disabled. 
23227         
23228 2004-04-23  Miguel de Icaza  <miguel@ximian.com>
23229
23230         * mini-ppc.c (ppc_patch): Replaced the branch code patching with a
23231         simpler mechanism: we do not care what is encoded initially
23232         (branch absolute or relative), we care about the code and its
23233         target.  I kept the old code for reference for now.
23234
23235         The new code tries first to determine if the jump is anywhere in
23236         the -/+32 absolute meg range, if it succeeds, it encodes using the
23237         absolute branch;  If not, it tried to find something in the
23238         relative range, if not, it uses the handle_thunk code. 
23239
23240 Fri Apr 23 14:20:40 EDT 2004 Paolo Molaro <lupus@ximian.com>
23241
23242         * exceptions-ppc.c: use the correct ip register on macosx.
23243
23244 Thu Apr 22 13:23:16 EDT 2004 Paolo Molaro <lupus@ximian.com>
23245
23246         * exceptions.c, mini.c, mini-ppc.h: adapt code to macosx.
23247
23248 Thu Apr 22 18:08:37 CEST 2004 Paolo Molaro <lupus@ximian.com>
23249
23250         * mini-ppc.c, cpu-g4.md: made the branch macros more flexible.
23251         Raise exception on integer divide by zero by hand since the hw
23252         doesn't support it. Handle NaNs in FP compares.
23253
23254 Thu Apr 22 16:10:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
23255
23256         * exceptions-ppc.c, mini-ppc.h, mini.c: simplified some
23257         code reducing duplication between the platforms and enabled
23258         signal exception handling (on linux for now).
23259
23260 Wed Apr 21 12:27:48 EDT 2004 Paolo Molaro <lupus@ximian.com>
23261
23262         * exceptions-ppc.c: more macosx support.
23263
23264 Wed Apr 21 16:38:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
23265
23266         * mini-ppc.h, mini-ppc.c, cpu-g4.md: enable bigmul optimization.
23267
23268 Wed Apr 21 16:20:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
23269
23270         * mini.h, mini-ppc.c, cpu-g4.md: support for implicit exceptions.
23271
23272 2004-04-19 Ben Maurer  <bmaurer@users.sourceforge.net>
23273
23274         * iltests.il: more tests.
23275
23276 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
23277
23278         * mini-*.c (mono_arch_get_allocatable_int_vars): Skip written-only
23279         vars as well.
23280
23281 Mon Apr 19 19:39:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
23282
23283         * mini-ppc.c: some fixes to bootstrap mcs/corlib/etc.
23284
23285 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
23286
23287         * liveness.c: Mark variables as volatile in all basic blocks reachable
23288         from exception clauses.
23289
23290 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
23291
23292         * exceptions.cs (test_0_rethow_stacktrace): Make this work with
23293         inlining.
23294
23295 2004-04-18 Ben Maurer  <bmaurer@users.sourceforge.net>
23296
23297         * iltests.il, basic.cs: more tests for regalloc.
23298
23299 2004-04-17 Ben Maurer  <bmaurer@users.sourceforge.net>
23300
23301         * iltests.il: Some tests for register allocation modifications
23302         I have locally.
23303
23304 2004-04-16  Zoltan Varga  <vargaz@freemail.hu>
23305
23306         * exceptions.cs: Add regression test for bug #56782.
23307
23308         * exceptions-*.c (mono_arch_handle_exception): Do not overwrite the
23309         original stack trace if an exception is rethrown. Fixes #56782. Oh,
23310         the beauty of fixing the same thing in 5 different files...
23311
23312 2004-04-15  Zoltan Varga  <vargaz@freemail.hu>
23313
23314         * mini.c (mono_method_to_ir): Do not compute coverage for inlined
23315         methods.
23316
23317 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
23318
23319         * mini.c: Add support for STRWLPARRAY marshalling convention.
23320
23321 Wed Apr 14 18:15:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
23322
23323         * exceptions-ppc.c: missing fixes in mono_jit_walk_stack (need
23324         to init the context to setup the regs pointer).
23325
23326 Wed Apr 14 17:59:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
23327
23328         * exceptions-ppc.c: more exceptions work.
23329
23330 Wed Apr 14 17:46:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
23331
23332         * mini.c: avoid reusing the same MonoInst on multiple trees: this is
23333         not allowed.
23334
23335 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
23336
23337         * inssel-x86.brg (reg): Add new rules for add, sub and mul that
23338         can use the memory directly.
23339
23340         * cpu-pentium.md: Update documentation from a post from Zoltan. 
23341
23342         add x86_add_membase, x86_sub_membase, x86_mul_membase
23343
23344 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
23345
23346         * mini-ppc.c: Remove unused definitions FLOAT_REGS and
23347         GENERAL_REGS they were also hardcoded for all PPC ports.
23348
23349         (add_general): Use PPC_NUM_REG_ARGS instead of GENERAL_REGS.
23350
23351         Remove hard-coded limit for floating point registers, use
23352         PPC_LAST_FPARG_REG instead in MONO_TYPE_R4 and MONO_TYPE_R8.
23353
23354         Notice that in MacOS X calling conventions you can fit a lot more
23355         floating point values in registers, so I should update the PInvoke
23356         test to excercise the passing of floating point values on the
23357         stack (currently broken).
23358         
23359 2004-04-06  Miguel de Icaza  <miguel@ximian.com>
23360
23361         * tramp-ppc.c (create_trampoline_code): Added
23362         JUMP_TRAMPOLINE_SIZE. 
23363         (ppc_magic_trampoline): Follow the pattern from
23364         x86_magic_trampoline: if code is set to zero, return. 
23365         (create_trampoline_code): Always pass MonoMethod to the jump
23366         trampoline, before it was passing a null.
23367         (mono_arch_create_jump_trampoline): Implement the jump stub, could
23368         share the code with mono_arch_create_jit_trampoline. 
23369
23370         * mini-ppc.c (mono_arch_output_basic_block): CEE_JMP opcode
23371         implemented.
23372         (mono_arch_patch_code): MONO_PATCH_INFO_METHOD_JUMP patch type
23373         implemented.  
23374
23375         * cpu-g4.md: Added length for jmp instruction, the worst case
23376         scenario is 92 bytes (4 mandatory bytes, potential 19 registers
23377         for save_lmf).
23378
23379 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
23380
23381         * aot.c (mono_compile_assembly): Add back unlink removed by mistake.
23382
23383 2004-04-07  Zoltan Varga  <vargaz@freemail.hu>
23384
23385         * mini.c: Only set bblock->real_offset when adding a new bblock, and
23386         before each IL instruction.
23387
23388         * mini.c (CEE_BOX): Fix warnings.
23389
23390 2004-04-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23391
23392         * mini.c: removed a few unused vars and extra whitespace.
23393
23394 2004-04-05 Ben Maurer  <bmaurer@users.sourceforge.net>
23395
23396         * inssel.brg (MONO_EMIT_BOUNDS_CHECK): a new macro to emit bounds
23397         checks.
23398         (MONO_EMIT_BOUNDS_CHECK_IMM): the above, but when you know the
23399         index.
23400         (OP_GETCHR): use the above
23401         (CEE_LDELEMA): use the above.
23402
23403         * inseel-x86.brg (MONO_EMIT_BOUNDS_CHECK): a faster and smaller
23404         version of the generic impl.
23405         (MONO_EMIT_BOUNDS_CHECK_IMM): the same
23406         (CEE_LDELEMA): use the above.
23407
23408 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
23409
23410         * inssel-long32.brg (CEE_CONV_OVF_I8): Sign extend the i4 value to i8.
23411         Fixes #56317.
23412
23413         * iltests.il: Added new regression test for #56317.
23414
23415 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
23416
23417         * mini-x86.c (mono_arch_setup_jit_tls_data): Use pthread_attr_get_np
23418         under NetBSD. Fixes #56450.
23419
23420         * liveness.c (update_gen_kill_set): Fix previous patch.
23421
23422 2004-04-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23423
23424         * mini-x86.h: SA_STACK defined as SA_ONSTACK. Fixed build under NetBSD.
23425
23426 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
23427
23428         * mini.c (mono_method_to_ir): Avoid handle_loaded_temps in
23429         ldsfld and ldsflda.
23430
23431         * inssel-sparc.brg: Add more optimizations.
23432
23433         * mini-sparc.c: Replace multiply/divide with shifts if possible.
23434
23435 2004-04-01  Martin Baulig  <martin@ximian.com>
23436
23437         * mini.c (handle_box): New static function; moved the
23438         implementation of CEE_BOX here.
23439         (mono_method_to_ir): Added `constrained_call' variable.
23440         (mono_method_to_ir:CEE_CONSTRAINED_): Set it.
23441         (mono_method_to_ir:CEE_CALL): If `constrained_call' is set, use
23442         mono_method_get_constrained() to get the method.
23443
23444 2004-04-01  Martin Baulig  <martin@ximian.com>
23445
23446         * mini.c (TYPE_PARAM_TO_TYPE, TYPE_PARAM_TO_CLASS): Removed.
23447         (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): Removed.
23448         (mono_method_to_ir): We don't need these macros anymore since
23449         mono_class_get_full() already takes care of it. 
23450
23451 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23452
23453         * aot.c: set aot_verbose to 0, fixed format string that caused sigsegv,
23454         use @function (as doesn't accept #function here) and check the return
23455         value of system and stop if fails.
23456
23457 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23458
23459         * mini.c: set the timeout to 2s when calling mono_domain_finalize.
23460
23461 2004-03-31  Zoltan Varga  <vargaz@freemail.hu>
23462
23463         * mini-ppc.c (mono_arch_patch_code): Fix ppc build.
23464
23465         * inssel-sparc.brg mini-sparc.c aot.c: Implement AOT support.
23466
23467         * inssel-long32.brg (OP_LNEG): Use ADC instead of ADD here. Fixes
23468         #56223.
23469
23470         * basic-long.cs: Add test for negation of Int64.MinValue.
23471
23472 2004-03-30  Zoltan Varga  <vargaz@freemail.hu>
23473
23474         * mini-sparc.c: Update status.
23475
23476         * mini-sparc.c tramp-sparc.c: Save lmf in trampolines.
23477
23478         * exceptions-sparc.c: Fix return value in filters.
23479
23480         * inssel-sparc.brg: Fix register allocation in some rules.
23481
23482 2004-03-28  Martin Baulig  <martin@ximian.com>
23483
23484         * mini.c (mmono_method_to_ir): In CEE_STELEM, do a handle_stobj()
23485         if neccessary.  
23486
23487 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
23488
23489         * mini-x86.c (mono_arch_patch_code): Fix warnings.
23490         
23491         * mini-x86.c (mono_arch_output_basic_block): Fix CEE_MUL_OVF_UN if 
23492         dreg is not EAX. Thanks to Willibard Krenn for spotting this. Also
23493         remove unused conv_u4 opcode.
23494
23495         * mini-x86.c: Remove valgrind workaround since it slows down things
23496         even when mono is not run under valgrind.
23497
23498 2004-03-26  Zoltan Varga  <vargaz@freemail.hu>
23499
23500         * mini-sparc.c: Update status.
23501
23502         * inssel-sparc.brg: Add some optimizations.
23503
23504         * inssel-sparc.brg mini-sparc.c: Rework branch instructions to allow
23505         future delay slot filling. Add support for varargs, tail calls and JMP.
23506
23507         * inssel.brg mini-ops.h mini.c: Use OP_REFANYTYPE instead of 
23508         CEE_REFANYTYPE, since CEE_REFANYTYPE needs a prefix to be unique.
23509
23510         * inssel.brg: Fix register allocation in OP_ARGLIST.
23511
23512         * inssel.brg: Fix warnings.
23513
23514 2004-03-25  Martin Baulig  <martin@ximian.com>
23515
23516         * mini.c (inflate_generic_field): Removed.
23517         (mini_get_method): Removed, use mono_get_method_full(),
23518         (mini_get_class): Removed, use mono_class_get_full().
23519         (mono_method_to_ir): Pass our generic context to
23520         mono_field_from_token().        
23521
23522 2004-03-25  Martin Baulig  <martin@ximian.com>
23523
23524         * mini.c (mini_get_class): Take a `MonoGenericContext *' instead
23525         of a `MonoMethod *'.
23526         (mini_get_method): Take a `MonoGenericContext *' instead
23527         of a `MonoMethod *'.
23528         (TYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_TYPE): mono_method_to_ir() has
23529         a new local variable called `generic_context' which holds the
23530         current `MonoGenericContext *'; use it to lookup things.
23531
23532 2004-03-24  Martin Baulig  <martin@ximian.com>
23533
23534         * mini.c (mini_get_class): New static method; if we're inside a
23535         generic instance, inflate the class if neccessary.
23536         (mono_method_to_ir): Use mini_get_class() instead of mono_class_get().
23537
23538 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
23539
23540         * iltests.il: New regression test for #55976.
23541
23542         * mini.c (mono_method_to_ir): Empty the stack in endfinally. Fixes
23543         #55976.
23544
23545 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
23546
23547         * exceptions-sparc.c (mono_sparc_handle_exception): Remove debugging
23548         output.
23549
23550 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
23551
23552         * liveness.c: Consider SSA stores as well as loads when making vars
23553         volatile.
23554
23555         * exceptions.cs: New regression tests for register allocation.
23556         
23557 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
23558
23559         * mini-ppc.c, tramp-ppc.c: Added lock for accessing the domain code manager.
23560         * mini.c: Removed domain lock from mono_jit_compile_method_with_opt. Use
23561           domain lock only to protect puntual access to data structures.
23562           Added access lock for sighash, jit_icall_hash_name, 
23563           jit_icall_hash_addr and domain->code_mp.
23564
23565 2004-03-20  Zoltan Varga  <vargaz@freemail.hu>
23566
23567         * driver.c: Print SIGSEGV handling method.
23568
23569         * mini-x86.c (mono_arch_free_jit_tls_data): Add missing ifdef.
23570
23571         * mini.c (setup_jit_tls_data): Handle case when this is called
23572         multiple times for a thread.
23573
23574         * mini-x86.c cpu-pentium.md: Fix floating point branch opcodes so fbxx 
23575         is different from fbxx_un. Fixes #54303. Also use constants instead of
23576         magic numbers in a lot of places.
23577
23578 2004-03-19  Zoltan Varga  <vargaz@freemail.hu>
23579
23580         * exceptions.cs: Fix cctor test when --regression is used.
23581
23582 Thu Mar 18 19:57:56 CET 2004 Paolo Molaro <lupus@ximian.com>
23583
23584         * mini-ppc.c, exceptions-ppc.c: basic exceptions support 
23585         for Linux/ppc.
23586
23587 Thu Mar 18 19:56:19 CET 2004 Paolo Molaro <lupus@ximian.com>
23588
23589         * inssel-ppc.brg: fixed register assignments for some rules.
23590
23591 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
23592
23593         * exceptions.cs: Add test for exceptions in static constructors.
23594
23595         * mini.c (mono_jit_compile_method_with_out): Move the calling of
23596         static constructors outside the domain lock. Fixes #55720.
23597
23598 2004-03-17  Martin Baulig  <martin@ximian.com>
23599
23600         * mini.c (get_generic_field_inst): Removed, this'll never happen.
23601         (inflate_generic_field): Take the `MonoMethod *' instead of the
23602         `MonoClass *' and added support for generic method.
23603         (mono_method_to_ir): In CEE_LDSFLD and CEE_STSFLD, assert we never
23604         have a `field->parent->gen_params', only inflate the field if it's
23605         an open constructed type.
23606
23607 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
23608
23609         * exceptions-x86.c (mono_arch_handle_exception): Allocate a new
23610         exception object instead of the preconstructed ones.
23611
23612 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23613
23614         * mini.c: reverted changed to sigsegv_signal_handler commited
23615         accidentally in the previous patch.
23616
23617 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23618
23619         * mini.c:
23620         (mono_method_to_ir): CEE_CALLVIRT, abort if no method. It hanged when
23621         running --aot with an old assembly.
23622
23623 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
23624
23625         * mini-sparc.c (mono_arch_instrument_epilog): Fix handling of floating
23626         point values.
23627
23628         * mini-sparc.c: Add support for v9 branches with prediction.
23629
23630 2004-03-15  Bernie Solomon  <bernard@ugsolutions.com>
23631
23632         * mini.c (mini_init): #warning is GNUC only
23633
23634         * mini-sparc.h: implement __builtin_frame_address
23635         and __builtin_return_address for Sun C compiler
23636
23637 2004-03-15  Zoltan Varga  <vargaz@freemail.hu>
23638
23639         * exceptions-sparc.c (mono_arch_has_unwind_info): Add missing function.
23640
23641 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
23642
23643         * basic-calls.cs: Add test for unaligned byref long argument passing.
23644
23645         * mini-ops.h: Add sparcv9 compare and branch instructions.
23646
23647         * inssel-sparc.brg mini-sparc.h mini-sparc.c cpu-sparc.md: Use some
23648         v9 instructions if we have a v9 cpu.
23649
23650         * mini-sparc.c (mono_arch_get_global_int_regs): Use unused input
23651         registers for global allocation.
23652
23653         * exceptions-sparc.c: Fixes.
23654         
23655 2004-03-11  Zoltan Varga  <vargaz@freemail.hu>
23656
23657         * liveness.c (mono_analyze_liveness): Optimized version.
23658
23659         * inssel-sparc.brg cpu-sparc.md: Ongoing sparc work.
23660
23661         * mini-sparc.h mini-sparc.c tramp-sparc.c exceptions-sparc.c: Ongoing
23662         sparc work.
23663
23664         * basic-float.cs basic-calls.cs: New regression tests.
23665
23666 2004-03-10  Zoltan Varga  <vargaz@freemail.hu>
23667
23668         * mini-x86.h: Define SIGSEGV_ON_ALTSTACK only if we have a working
23669         sigaltstack implementation.
23670
23671         * mini-x86.c (mono_arch_setup_jit_tls_data): Fix previous patch.
23672         
23673         * mini-x86.c (mono_arch_setup_jit_tls_data): Turn off the sigaltstack
23674         stuff if SIGSEGV_ON_ALTSTACK is not defined.
23675
23676 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
23677
23678         * mini.c: Fix warnings.
23679         
23680         * mini.c (mono_resolve_patch_target): New function which contains the
23681         arch independent part of the patching process.
23682
23683         * mini-x86.c (mono_arch_patch_code): Move arch independent parts of the
23684         patching code to a separate function.
23685
23686 2004-03-09  Bernie Solomon  <bernard@ugsolutions.com>
23687
23688         * mini.c (add_signal_handler): ifdef out on Windows
23689
23690 2004-03-08  Zoltan Varga  <vargaz@freemail.hu>
23691
23692         * mini-sparc.h mini-sparc.c inssel-sparc.brg exceptions-sparc.c 
23693         cpu-sparc.md: Add exception handling support + other fixes.
23694
23695         * driver.c: Print --help output to stdout. Fixes #55261. Also fix
23696         typed GC detection in --version.
23697
23698         * basic.cs exceptions.cs: New regression tests.
23699
23700         * mini.h mini-x86.h mini-ppc.h: Add MonoCompileArch structure where
23701         the arch specific code can store data during a compilation.
23702
23703         * mini-ops.h: Add OP_SETFRET.
23704
23705         * mini.c (mini_get_ldelema_ins): Instead of allways calling the same
23706         function, register a separate icall for each arity, so the icalls can
23707         get a wrapper.
23708         
23709         * mini.c (mono_print_tree): Print negative offsets in a more readable
23710         form.
23711         
23712         * mini.c: Make signal handling work on sparc.
23713         
23714         * mini.c (mini_init): Add emulation for lconv_to_r8_un.
23715
23716         * inssel-long32.brg: Fix OP_LSUB_OVF_UN rule.
23717
23718         * jit-icalls.c: Emulate truncl by aintl on solaris.
23719
23720         * jit-icalls.c (mono_lconv_to_r8_un): New icall emulation function.
23721
23722 2004-03-05  Zoltan Varga  <vargaz@freemail.hu>
23723
23724         * mini.c (mini_init): fconv_to_ovf can raise exceptions.
23725
23726 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
23727
23728         * mini.c: In CEE_ISINST and CEE_CASTCLASS, if the type is an interface or
23729         a MarshalByRef type, inline a method that performs the check, taking into
23730         account that the object can be a proxy. Also implemented tow new opcodes:
23731         CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
23732         * inssel.brg: Implemented two new opcodes, mini-ops.h: OP_CISINST and 
23733         OP_CCASTCLASS, which implement CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
23734
23735 Tue Mar 2 17:23:48 CET 2004 Paolo Molaro <lupus@ximian.com>
23736
23737         * mini-ppc.c: if a relative branch displacement is too big
23738         but it points to and area reachable with an absolute branch, 
23739         avoid the thunks.
23740
23741 Tue Mar 2 16:59:40 CET 2004 Paolo Molaro <lupus@ximian.com>
23742
23743         * mini.c: optimize small copies in cpblk.
23744
23745 2004-03-01  Zoltan Varga  <vargaz@freemail.hu>
23746
23747         * basic-calls.cs basic-float.cs: New regression tests.
23748
23749         * mini-sparc.c inssel-sparc.brg mini-ops.h: Access local variables at 
23750         negative offsets from %fp. Implement localloc. Fix local register 
23751         allocation. Fix the case when the this argument needs to be saved to
23752         the stack. Implement some missing opcodes.
23753
23754 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
23755
23756         * mini.c (mini_method_compile): Reenable global regalloc in methods
23757         with exception handlers.
23758
23759         * linear-scan.c (mono_varlist_sort): Fix warning.
23760
23761         * linear-scan.c (mono_linear_scan): Fix computation of used_regs.
23762
23763         * mini-x86.c (mono_arch_regalloc_cost): Reenable precise computation of
23764         regalloc costs.
23765
23766         * liveness.c: Make all variables uses in exception clauses volatile, to
23767         prevent them from being allocated to registers. Fixes #42136.
23768
23769 2004-02-25  Zoltan Varga  <vargaz@freemail.hu>
23770
23771         * mini-x86.c (mono_arch_regalloc_cost): Revert this change since it
23772         causes regressions.
23773
23774         * mini.h linear-scan.c mini-x86.c mini-sparc.c mini-ppc.c: Add 'cfg'
23775         argument to mono_arch_regalloc_cost.
23776
23777         * mini-x86.c (mono_arch_regalloc_cost): Compute regalloc costs 
23778         precisely.
23779
23780 2004-02-24  Zoltan Varga  <vargaz@freemail.hu>
23781
23782         * mini.h mini-x86.c mini-ppc.c mini-sparc.c linear-scan.c: 
23783         Make the cost of allocating a variable to a register arch dependent.
23784
23785         * basic-calls.cs: Fix compilation of tests.
23786         
23787         * mini.h mini.c tramp-x86.c mini-x86.c: Add mono_running_on_valgrind ()
23788         helper function to cut back on the number of #ifdefs needed.
23789
23790         * mini-ppc.c: Fix compilation.
23791
23792         * basic-calls.cs: New regression tests.
23793
23794         * mini-sparc.c (mono_sparc_is_virtual_call): New helper function.
23795
23796         * tramp-sparc.c (create_specific_trampoline): Use g5 register instead
23797         of l0 since that is callee saved.
23798
23799         * tramp-sparc.c (sparc_magic_trampoline): Apply unbox trampoline only
23800         to virtual calls.
23801
23802         * mini-sparc.c: Ongoing work + flag virtual calls with a special kind 
23803         of delay instruction.
23804
23805         * inssel.brg (OP_CHECK_THIS): Set tree->sreg1 and dreg correctly.
23806
23807         * mini.h (MonoCallInst): Add 'virtual' flag.
23808
23809         * inssel.brg (mini_emit_virtual_call): Set 'virtual' flag.
23810
23811 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
23812
23813         * *.cs: New regression tests.
23814
23815         * mini-sparc.c inssel-sparc.brg: Update after latest changes. Ongoing sparc 
23816         work.
23817
23818         * mini.c (mono_runtime_install_handlers): Fix build.
23819
23820         * mini.h (MonoJitTlsData): Add 'stack_size', 'signal_stack' and
23821         'signal_stack_size' members.
23822
23823         * mini.h mini.c mini-x86.h mini-x86.c: Run sigsegv handlers on an 
23824         alternate signal stack.
23825
23826         * exceptions-x86.c: Add stack overflow handling.
23827
23828         * mini.h mini.c mini-x86.c mini-ppc.c trace.h trace.c: Move tracing 
23829         functions to arch independent code.
23830
23831         * mini.c (mono_print_tree): Print more detailed info for load_membase
23832         opcodes.
23833         
23834 2004-02-23  Martin Baulig  <martin@ximian.com>
23835
23836         * mini.c (mini_get_method): Set `gmethod->generic_inst'.
23837
23838 Sun Feb 22 22:25:19 CET 2004 Paolo Molaro <lupus@ximian.com>
23839
23840         * mini-x86.c: fixed reg allocation for div/rem.
23841
23842 2004-02-22  Miguel de Icaza  <miguel@ximian.com>
23843
23844         * driver.c (mono_main): Report some configuratio options on --version.
23845
23846 Fri Feb 20 11:01:44 PST 2004 Paolo Molaro <lupus@ximian.com>
23847
23848         * mini-ppc.c: fixed clt.un, cgt.un. Optimized calls to functions
23849         low in the address space. Correctly flush memory in thunks where we
23850         output native code.
23851
23852 2004-02-20  Martin Baulig  <martin@ximian.com>
23853
23854         * mini.c (mini_get_method): New static method; inflate all generic
23855         methods and methods in open generic instances.
23856         (mono_method_to_ir): Use mini_get_method() instead of mono_get_method().
23857         (ret_type_to_call_opcode): Added support for MONO_TYPE_GENERICINST.
23858
23859 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
23860
23861         * mini-sparc.c (mono_arch_patch_code): Update after domain->code_mp changes.
23862
23863         * tramp-sparc.c (mono_arch_create_jump_trampoline): Set ji->method.
23864
23865 2004-02-19  Bernie Solomon  <bernard@ugsolutions.com>
23866
23867         * helpers.c (mono_disassemble_code): use Sun's dis if not using gcc
23868
23869         * mini-sparc.c (flushi mono_arch_output_basic_block): make
23870         it compile using Sun's compiler.
23871
23872 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
23873
23874         * 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.
23875
23876         * basic-calls.cs basic-float.cs basic-long.cs objects.cs: New regression tests.
23877
23878 Tue Feb 17 21:41:20 CET 2004 Paolo Molaro <lupus@ximian.com>
23879
23880         * aot.c, mini-x86.c, mini.c: use the code manager instead of a mempool to hold native
23881         code.
23882         * mini-ppc.c: handle calls outside of the allowed range with thunks
23883         allocated using the code manager.
23884         * tramp-ppc.c: use the code manager to hold generated native code.
23885         Fixed the magic trampoline to just patch vtable entries.
23886
23887 2004-02-17  Zoltan Varga  <vargaz@freemail.hu>
23888
23889         * inssel.brg inssel-x86.brg: Move call(immediate) rules to the platform
23890         independent file.
23891
23892 2004-02-16  Zoltan Varga  <vargaz@freemail.hu>
23893
23894         * tramp-ppc.c (mono_arch_create_jump_trampoline): Fix compilation on
23895         PPC.
23896
23897         * mini-x86.c: Call mono_arch_get_lmf_addr instead of mono_get_lmf_addr
23898         if we have a working __thread implementation.
23899
23900         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Remove 
23901         OP_CALL_IMM opcodes, since the CALL opcodes handles immediates as well.
23902
23903 2004-02-15  Zoltan Varga  <vargaz@freemail.hu>
23904
23905         * mini-x86.c: Fix compilation under gcc 2.
23906         
23907 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
23908
23909         * mini.c (mono_codegen): Avoid infinite loop when an icall wrapper
23910         contains a call to the wrapped function.
23911
23912         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Add 
23913         OP_<CALL>_IMM opcodes, and use them under X86.
23914         
23915         * mini.c (mono_jit_find_compiled_method): Fix warning.
23916
23917         * cpu-pentium.md: Fix length of opcodes which use x86_alu_membase_imm.
23918
23919         * jit-icalls.c (mono_ldftn_nosync): New JIT icall.
23920
23921         * tramp-x86.c (mono_arch_create_jump_trampoline): Move arch independent
23922         functionality to mini.c.
23923
23924         * mini.c (mono_create_jump_trampoline): New function to create a jump
23925         trampoline. Return a compiled method instead of a trampoline if it
23926         exists. Add a cache for jump trampolines.
23927
23928         * mini.c (mono_jit_find_compiled_method): New function to return a
23929         compiled method if it exists.
23930
23931         * mini-x86.c: Call mono_create_jump_trampoline instead of 
23932         mono_arch_create_jit_trampoline.
23933
23934         * jit-icalls.c (mono_ldftn): Do not compile the method. Instead, return
23935         a jump trampoline. Fixes #52092.
23936         
23937 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
23938
23939         * debug-mini.c (mono_init_debugger): Remove call to mono_verify_corlib,
23940         which is not up-to-date. Add check_corlib_version () instead.
23941
23942         * mini.c (mini_init): Call mono_thread_attach () so embedders do not 
23943         have to call it.
23944         
23945         * mini.c (mono_runtime_install_handlers): Remove check for valgrind
23946         since newer valgrind versions do not need it.
23947
23948         * mini.c (mono_jit_compile_method_with_opt): New helper function to
23949         compile a method with a given set of optimizations.
23950
23951         * mini.c: Compile icall wrappers on-demand instead of at startup.
23952
23953         * mini-sparc.c mini-ppc.c: Call mono_icall_get_wrapper to obtain the
23954         wrapper for an icall.
23955
23956 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
23957
23958         * mini.c (mono_method_to_ir): Handle switch with non-empty stack. Fixes
23959         #54063.
23960
23961         * iltests.il: Add test for non-empty stack before switch instruction.
23962
23963 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
23964
23965         * mini.c: Add support for new stringbuilder marshalling conventions.
23966
23967         * mini.c (mono_method_to_ir): Fix stack management of generic CEE_BOX.
23968
23969 2004-02-01  Martin Baulig  <martin@ximian.com>
23970
23971         * mini.c (MTYPE_PARAM_TO_TYPE): Method type arguments are stored
23972         in `ginst->mtype_argv'.
23973
23974 2004-01-31  Miguel de Icaza  <miguel@ximian.com>
23975
23976         * mini.c: Add comments, replace CEE_XXX+128 with OP_XXX to
23977         facilitate grepping.
23978
23979 Wed Jan 28 14:04:58 CET 2004 Paolo Molaro <lupus@ximian.com>
23980
23981         * mini.c: fixed buglet in initobj generic implementation for references.
23982
23983 Fri Jan 23 16:10:44 EST 2004 Paolo Molaro <lupus@ximian.com>
23984
23985         * Makefile.am: make the version script conditional.
23986         * jit-icalls.c: handle missing truncl().
23987
23988 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
23989
23990         * exceptions.cs: Add more tests for double->int conversion.
23991
23992         * jit-icalls.c (mono_fconv_ovf_i8): Call truncl before comparison, so
23993         we don't throw exceptions when converting 1.1 to a long. Fixes #53250.
23994
23995 Fri Jan 23 17:12:08 CET 2004 Paolo Molaro <lupus@ximian.com>
23996
23997         * driver.c: make --verbose --version emit an error
23998         if the loaded corlib doesn't match the runtime version.
23999
24000 Mon Jan 19 17:44:50 CET 2004 Paolo Molaro <lupus@ximian.com>
24001
24002         * mini-ppc.h: export ppc_patch().
24003         * mini-ppc.c: call convention fixes. Added assert in ppc_patch().
24004         * tramp-ppc.c: call convention fixes: Linux/PPC support should be
24005         on par or better than on MacOSX.
24006
24007 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
24008
24009         * mini.c tramp-x86.c tramp-sparc.c: Updated after changes to
24010         mono_lookup_pinvoke_call.
24011
24012         * mini-x86.c: Under windows, the default pinvoke calling convention is
24013         stdcall. Fixes #52834.
24014
24015         * mini.c (optimize_branches): Add an upper bound to the number of
24016         iterations to prevent infinite loops on strange loops. Fixes #53003.
24017
24018 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
24019
24020         * inssel.brg: Add vectors<->one dimensional array checking to CASTCLASS
24021         and ISINST. Fixes #52093.
24022
24023         * objects.cs (test_0_vector_array_cast): New tests.
24024         
24025 2004-01-15  Zoltan Varga  <vargaz@freemail.hu>
24026
24027         * jit-icalls.c (helper_stelem_ref_check): New jit icall for array type
24028         checking in Array.Set ().
24029
24030         * mini.c (method_to_ir): Add array type checking in Array.Set (). Fixes
24031         #52590.
24032
24033         * object.cs (test_0_multi_array_cast): New regression test.
24034
24035 Thu Jan 15 16:30:24 CET 2004 Paolo Molaro <lupus@ximian.com>
24036
24037         * exceptions-ppc.c: fix build on Linux/PPC.
24038
24039 2004-01-14  Zoltan Varga  <vargaz@freemail.hu>
24040
24041         * tramp-x86.c (x86_magic_trampoline): Disable code patching when
24042         running under valgrind.
24043         (x86_magic_trampoline): Fix build bustage.
24044
24045         * debug-mini.c: Modify the debug info serialize/deserialize code so it handles
24046         negative values as well. This is needed for the encoding of the line number
24047         info, since sometimes the line numbers are not in increasing order.
24048
24049 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
24050
24051         * cpu-pentium.md (localloc): Increase the size of the localloc 
24052         instruction since it is a loop under Win32.
24053
24054         * debug-mini.c (record_line_number): Get rid of unneccesary memory
24055         allocation.
24056
24057 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
24058
24059         * exceptions-ppc.c exceptions-x86.c exceptions-sparc.c 
24060         tramp-x86.c tramp-ppc.c tramp-sparc.c: Applied patch from 
24061         Max Horn (max@quendi.de). Fix file names in comments.
24062
24063 2004-01-03  Zoltan Varga  <vargaz@freemail.hu>
24064
24065         * ssa.c (mono_ssa_rename_vars): Allocate new_stack on the heap to
24066         avoid stack overflow.
24067         (replace_usage): Avoid uninitialized variable warnings.
24068
24069         * mini.c (mono_method_to_ir): Avoid disabling SSA for array operations
24070         and taking the address of valuetype variables.
24071
24072 2004-01-03  Patrik Torstensson
24073
24074         * mini-x86.c: renamed fpflags to flags in RegTrack, going to be used
24075         for other purposes than FP later on.
24076
24077 2004-01-02  Zoltan Varga  <vargaz@freemail.hu>
24078
24079         * mini.c (mono_method_to_ir): Prevent register allocation for arguments
24080         of tail calls.
24081
24082 Fri Jan 2 13:37:25 CET 2004 Paolo Molaro <lupus@ximian.com>
24083
24084         * mini-ops.h, mini.c, inssel.brg: Object.GetType () speedup.
24085
24086 2003-12-30  Patrik Torstensson <p@rxc.se>
24087
24088         * mini-x86.h: Decreased number of availiable fp regs.
24089         Solves corner cases with FP spilling.
24090
24091 2003-12-23  Patrik Torstensson <p@rxc.se>
24092
24093         * mini-x86.c, mini-ops.h, cpu-pentium.md: Added support
24094         for floating point stack tracking / spilling on x86. 
24095         Fixes bug #49012.
24096         
24097         * basic-float.cs: added float mul overflow test.
24098
24099 2003-12-23  Zoltan Varga  <vargaz@freemail.hu>
24100
24101         * mini.c (mono_method_to_ir): Add workaround for bug #51126.
24102
24103 Sun Dec 21 19:53:16 CET 2003 Paolo Molaro <lupus@ximian.com>
24104
24105         * mini.h, mini-ppc.c, mini-ppc.h: small cleanups and
24106         supports for cond branches that overflow the immediate
24107         overflow offset. mcs can compile simple programs.
24108
24109 Fri Dec 19 21:17:16 CET 2003 Paolo Molaro <lupus@ximian.com>
24110
24111         * exceptions-ppc.c: exception handling support wip:
24112         finally handlers get run on exception.
24113
24114 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
24115
24116         * aot.c (mono_aot_get_method_inner): Avoid loading AOT code while 
24117         profiling.
24118
24119 Fri Dec 19 17:58:28 CET 2003 Paolo Molaro <lupus@ximian.com>
24120
24121         * cpu-g4.md, mini-ppc.c, exceptions-ppc.c, mini-ppc.h:
24122         initial support for stack walking and unwinding.
24123
24124 2003-12-18  Zoltan Varga  <vargaz@freemail.hu>
24125
24126         * driver.c (mono_main): Make corlib-out-of-sync message more 
24127         descriptive. Also remove verify_corlib call.
24128
24129 Wed Dec 17 15:31:41 CET 2003 Paolo Molaro <lupus@ximian.com>
24130
24131         * mini.c: make CEE_NEWARR calls and other emulated opcodes 
24132         not overlap with other call's arguments, too.
24133
24134 Wed Dec 17 12:49:23 CET 2003 Paolo Molaro <lupus@ximian.com>
24135
24136         * mini.h, mini.c, mini-ppc.c, mini-sparc.c, mini-x86.c: 
24137         move to arch-specific code the choice of arch-specific
24138         intrinsics (from Laurent Morichetti (l_m@pacbell.net)).
24139         * mini.c: ensure emulation calls will not interleave
24140         with other calls.
24141
24142 Wed Dec 17 12:27:26 CET 2003 Paolo Molaro <lupus@ximian.com>
24143
24144         * tramp-ppc.c, basic-calls.cs: rework trampolines so that
24145         the magic trampoline stack frame is dropped before executing
24146         the new method.
24147
24148 Mon Dec 15 18:13:57 CET 2003 Paolo Molaro <lupus@ximian.com>
24149
24150         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed some opcode lengths
24151         and integer to fp conversions. Added support for overflowing
24152         arguments on the stack. Reserve a couple more registers as temps.
24153         Added support for aot compilation (as output still needs to be
24154         tweaked, though).
24155
24156 Sat Dec 13 17:49:10 CET 2003 Paolo Molaro <lupus@ximian.com>
24157
24158         * mini-ppc.c, basic-long.cs: fix jumps to known labels.
24159         Don't overwrite return register in some corner cases.
24160
24161 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
24162
24163         * mini.h mini.c driver.c mini-x86.c mini-ppc.c aot.c: Do not run
24164         static constructors when AOT compiling.
24165
24166         * driver.c (mono_main): Call mono_check_corlib_version.
24167
24168 Sat Dec 13 10:31:12 CET 2003 Paolo Molaro <lupus@ximian.com>
24169
24170         * cpu-g4.md, basic.cs: fixed div target register.
24171
24172 Sat Dec 13 09:45:56 CET 2003 Paolo Molaro <lupus@ximian.com>
24173
24174         * mini-ppc.c, basic.cs: shl_imm fix with test.
24175
24176 Fri Dec 12 21:25:14 CET 2003 Paolo Molaro <lupus@ximian.com>
24177
24178         * inssel-ppc.brg, mini-ppc.h, mini-ppc.c: support for passing 
24179         structures by value. Misc fixes.
24180         * objects.cs: more tests.
24181
24182 Fri Dec 12 10:11:49 CET 2003 Paolo Molaro <lupus@ximian.com>
24183
24184         * mini-ppc.c: lconv.ovf.i implemented.
24185
24186 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24187
24188         * mini.c:
24189         (mini_init): don't error out if someone already called g_thread_init.
24190
24191 Tue Dec 9 17:27:14 CET 2003 Paolo Molaro <lupus@ximian.com>
24192
24193         * exceptions-x86.c, exceptions-ppc.c: allow the exception object
24194         to be any type per the spec. Fix abnormal memory usage when
24195         the same object is repeatedly thrown.
24196
24197 Tue Dec 9 15:39:54 CET 2003 Paolo Molaro <lupus@ximian.com>
24198
24199         * mini.c: check for overruns in IL code.
24200
24201 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
24202
24203         * TODO: Add/remove some todo entries.
24204
24205 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
24206
24207         * driver.c (mono_main): Call mono_verify_corlib.
24208
24209 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
24210
24211         * inssel.brg: In CEE_ISINST and CEE_CASTCLASS, removed check for proxy. 
24212         This has been moved to mini.c
24213         * mini.c: in mono_method_to_ir, CEE_ISINST and CEE_CASTCLASS cases, if the
24214         type being casted is marshalbyref it could be a proxy, so instead of
24215         emitting the type check code, emit a call to a runtime method that will
24216         perform the check by calling CanCastTo if needed.
24217
24218 2003-12-06  Zoltan Varga  <vargaz@freemail.hu>
24219
24220         * mini-x86.c (mono_arch_emit_prolog): Fix stack space allocation for
24221         methods with large stack frames under Win32.
24222
24223 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
24224
24225         * Makefile.am: Distribute regression tests.
24226
24227         * mini-x86.c (mono_arch_get_allocatable_int_vars): Sort the var list
24228         at the end instead of inserting each variable into the sorted list.
24229
24230         * linear-scan.c (mono_varlist_sort): New helper function.
24231         
24232 Wed Dec 3 20:46:28 CET 2003 Paolo Molaro <lupus@ximian.com>
24233
24234         * mini.c: ensure arguments and locals are within bounds.
24235
24236 Wed Dec 3 17:59:10 CET 2003 Paolo Molaro <lupus@ximian.com>
24237
24238         * mini-ppc.c, cpu-g4.md, basic.cs, basic-long.cs: more tests and 
24239         related fixes.
24240
24241 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
24242
24243         * mini.c (mono_cprop_copy_values): Fix crash.
24244
24245         * aot.c: Set verbosity back to 0.
24246         
24247 Wed Dec 3 15:42:27 CET 2003 Paolo Molaro <lupus@ximian.com>
24248
24249         * regalloc.c: complete memory leak fix by Laurent Morichetti
24250         (l_m@pacbell.net).
24251
24252 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
24253
24254         * driver.c (main_thread_handler): Revert the previous patch.
24255
24256         * tramp-x86.c (x86_class_init_trampoline): Avoid patching when running
24257         under valgrind.
24258
24259         * mini-x86.c (mono_arch_local_regalloc): Do not allocate transient
24260         memory from the memory pool.
24261
24262         * driver.c (main_thread_handler): Turn on all optimizations when
24263         --aot is used.
24264
24265         * mini.c (mono_find_jit_opcode_emulation): Turn emul_opcode_hash into
24266         an array for better performance.
24267
24268         * regalloc.c (mono_regstate_assign): Fix memory leak.
24269
24270         * debug-mini.c (mono_debug_serialize_debug_info): New function to
24271         serialize the debug info.
24272
24273         * debug-mini.c (mono_debug_add_aot_method): New function to load the
24274         debug info from the serialized representation.
24275
24276         * aot.c: Save debug info into the generated file and load it when 
24277         loading a method.
24278
24279         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
24280
24281 Mon Dec 1 16:54:05 CET 2003 Paolo Molaro <lupus@ximian.com>
24282
24283         * mini-ppc.c, tramp-ppc.c: save FP arguments in the trampoline.
24284         More FP-related fixes.
24285
24286 Sun Nov 30 19:13:52 CET 2003 Paolo Molaro <lupus@ximian.com>
24287
24288         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed finally handlers
24289         and register allocation buglet. Hello world now runs.
24290
24291 Fri Nov 28 23:03:05 CET 2003 Paolo Molaro <lupus@ximian.com>
24292
24293         * cpu-g4.md, inssel-ppc.brg, mini-ppc.c: better long return support.
24294         * tramp-ppc.c: fixed class init trampoline.
24295         * inssel-ppc.brg, mini.c, jit-icalls.c, mini-ppc.h: more emulation.
24296
24297 Fri Nov 28 16:36:29 CET 2003 Paolo Molaro <lupus@ximian.com>
24298
24299         * cpu-g4.md, inssel-ppc.brg, jit-icalls.c, mini-ppc.c, mini-ppc.h,
24300         mini.c: more ppc changes/fixes.
24301
24302 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
24303
24304         * mini.c (mono_method_to_ir): Fix tail calls with valuetype arguments.
24305         Also optimize the case when the arguments are the same in the caller 
24306         and in the callee.
24307
24308         * iltests.il: Add tests for tail calls with valuetype arguments.
24309
24310 Thu Nov 27 21:06:37 CET 2003 Paolo Molaro <lupus@ximian.com>
24311
24312         * mini-ppc.c: fixes for struct return type.
24313
24314 Thu Nov 27 19:02:07 CET 2003 Paolo Molaro <lupus@ximian.com>
24315
24316         * mini.h, mini.c, mini-x86.c, mini-ppc.c, mini-sparc.c: move 
24317         mono_spillvar_offset() to arch-specific code.
24318
24319 Thu Nov 27 18:30:42 CET 2003 Paolo Molaro <lupus@ximian.com>
24320
24321         * mini-ppc.h, mini-ppc.c: handle some different ABI call convention issues.
24322
24323 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
24324
24325         * exceptions-x86.c: Fix stack space leaks.
24326         
24327         * exceptions-x86.c (mono_arch_find_jit_info): Restore callee saved
24328         registers from the lmf if the method has save_lmf set.
24329
24330 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
24331
24332         * tramp-x86.c (x86_magic_trampoline): Avoid patching in the addresses
24333         of icall wrappers into InvokeInDomain, since these are now per-domain.
24334
24335 Wed Nov 26 20:15:04 CET 2003 Paolo Molaro <lupus@ximian.com>
24336
24337         * mini-ppc.h, mini-x86.h, mini.c, inssel-ppc.brg, jit-icalls.c:
24338         make some opcode emulation and intrinsic ops enabled/disabled 
24339         according to the architecture. More fixes.
24340
24341 Wed Nov 26 19:59:09 CET 2003 Paolo Molaro <lupus@ximian.com>
24342
24343         * mini-ppc.c, mini-sparc.c, cpu-g4.md: more bug fixes.
24344
24345 Wed Nov 26 19:18:29 CET 2003 Paolo Molaro <lupus@ximian.com>
24346
24347         * mini.h, inssel.brg, mini-x86.c, mini-ppc.c, mini-sparc.c: move
24348         arch-specific handling for 'this' and struct return type to
24349         arch-specific code.
24350
24351 2003-11-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24352
24353         * aot.c: prevent divide by zero error when reporting (it happened with
24354         Accessibility.dll).
24355
24356 2003-11-25  Zoltan Varga  <vargaz@freemail.hu>
24357
24358         * mini.h (inst_switch): Remove unused macro.
24359
24360 2003-11-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24361
24362         * aot.c:
24363         (load_aot_module): free 'info->methods' and 'info' properly. No more
24364         "free(): invalid pointer blah" messages when you have an old aot
24365         compiled assembly.
24366
24367 2003-11-21  Lluis Sanchez Gual <lluis@ximian.com>
24368
24369         * jit-icalls.c, mini.c: Added support for context static fields.
24370
24371 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
24372
24373         * mini.c (mono_method_blittable): Methods which set LastError are not 
24374         blittable either. Fixes #51108.
24375         
24376 Tue Nov 18 16:41:37 CET 2003 Paolo Molaro <lupus@ximian.com>
24377
24378         * mini.c: flush icache.
24379         * cpu-g4.md, mini-ppc.c, inssel.brg: more fixes. Trace support.
24380
24381 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
24382
24383         * mini.c (mono_type_blittable): OBJECT is not blittable. Fixes #47842.
24384
24385 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
24386
24387         * tramp-x86.c (x86_class_init_trampoline): Make code patching thread
24388         safe on IA32.
24389
24390         * mini-x86.c (mono_arch_call_opcode): Disable AOT for methods with 
24391         vararg calls.
24392
24393         * inssel.brg (CEE_MKREFANY): Fix AOT case.
24394
24395 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
24396
24397         * mini-x86.c (mono_arch_local_regalloc): Fix regalloc for div 
24398         instruction when the result is discarded.
24399
24400         * iltests.il (test_0_div_regalloc): New regression test.
24401
24402         * arrays.cs: Fix compilation error.
24403
24404 Fri Nov 14 21:34:06 CET 2003 Paolo Molaro <lupus@ximian.com>
24405
24406         * inssel-x86.brg, inssel-float.brg, mini-ops.h: move x86-specific
24407         float rules to inssel-x86.brg: sane architectures with FP registers
24408         don't need to implement these rules.
24409
24410 Fri Nov 14 20:52:12 CET 2003 Paolo Molaro <lupus@ximian.com>
24411
24412         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: updates and fixes to the ppc port.
24413
24414 Fri Nov 14 17:58:27 CET 2003 Paolo Molaro <lupus@ximian.com>
24415
24416         * mini.h, inssel-long32.brg: fixed endianess issues in int64
24417         implementation of 32 bit systems.
24418
24419 Thu Nov 13 16:14:41 CET 2003 Paolo Molaro <lupus@ximian.com>
24420
24421         * exceptions-ppc.c: fix build on Linux/ppc from Jeroen@xs4all.nl
24422         (Jeroen Zwartepoorte).
24423
24424 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
24425
24426         * mini.c (mono_method_to_ir): Use CEE_JMP only if the signature of
24427         the caller and the callee matches.
24428         
24429         * mini.c (mono_method_to_ir): Add comment.
24430
24431         * mini-x86.c (mono_arch_output_basic_block): Use mono_signbit, since
24432         signbit is missing on some platforms.
24433
24434 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
24435
24436         * mini.h (mono_arch_setup_jit_tls_data): New arch specific function.
24437
24438         * mini.c (setup_jit_tls_data): Call the new function.
24439         
24440         * mini-x86.c mini-ppc.c mini-sparc.c: Define the new function.
24441
24442         * mini-x86.c: Add experimental support for fast access to the lmf
24443         structure under NPTL/Linux 2.6.x.
24444
24445 2003-11-06  Martin Baulig  <martin@ximian.com>
24446
24447         * ldscript: Make `GC_push_all_stack', `GC_start_blocking',
24448         `GC_end_blocking' and 'gc_thread_vtable' public; they're used by
24449         the debugger.
24450
24451 2003-11-02  Martin Baulig  <martin@ximian.com>
24452
24453         * mini.c (inflate_generic_field): New static method.
24454         (mono_method_to_ir): In CEE_LDFLD and CEE_LDSFLD: if we're a
24455         generic instance and the field is declared in a generic type, call
24456         inflate_generic_field() to inflate it.  Fixes gen-28.cs.
24457
24458 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
24459
24460         * mini.h mini.c (mono_method_same_domain): New function to return
24461         whenever the caller and the callee are in the same domain.
24462
24463         * tramp-x86.c (x86_magic_trampoline): Use the new function.     
24464
24465 2003-10-30  Martin Baulig  <martin@ximian.com>
24466
24467         * mini.c (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): New macros;
24468         similar to TYPE_PARAM_TO_TYPE and TYPE_PARAM_TO_CLASS, but for
24469         method parameters.
24470         (mono_method_to_ir): Added support for MONO_TYPE_MVAR; similar to
24471         MONO_TYPE_VAR, we the actual types from MTYPE_PARAM_TO_CLASS(). 
24472
24473 2003-10-29  Zoltan Varga  <vargaz@freemail.hu>
24474
24475         * mini.c mini-ops.h inssel.brg: Implement undeniable exception 
24476         propagation.
24477
24478         * mini.c (sigusr1_signal_handler): Move creation of the thread abort
24479         object here, so it is in the correct appdomain etc.
24480
24481 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
24482
24483         * mini.c (mono_jit_compile_method_inner): Lookup icalls here if not
24484         already done.
24485         (mono_method_to_ir): Avoid freeing the type created returned from
24486         mono_type_create_from_typespec, since it is put into an internal cache
24487         by the function. Fixes pointer.exe.
24488
24489         * mini.c tramp-x86.c tramp-sparc.c tramp-ppc.c: Use the normal 
24490         trampolines for icalls and pinvokes as well. Fixes #33569.
24491
24492 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
24493
24494         * mini.c: Update after appdomain changes.
24495
24496         * mini.c (mono_jit_compile_method_inner): Allways compile native
24497         method wrappers in the root domain, since there can only be one
24498         instance of them, whose address is stored in method->info.
24499
24500 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
24501
24502         * mini.c (mono_runtime_install_handlers): Get rid of the MONO_VALGRIND
24503         environment variable. Instead detect automatically whenever running
24504         under valgrind using the magic macro RUNNING_ON_VALGRIND from
24505         valgrind.h.
24506
24507 2003-10-16  Miguel de Icaza  <miguel@ximian.com>
24508
24509         * trace.c, trace.h: New files that implement the new trace option
24510         parsing. 
24511
24512         * driver.c: Document new --trace options.
24513
24514         * exceptions-ppc.c, exceptions-x86.c, mini-ppc.c, mini-sparc.c,
24515         mini-x86.c: Apply:
24516
24517         -       if (mono_jit_trace_calls)
24518         +       if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
24519
24520         * mini.h: prototypes.
24521         
24522 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
24523
24524         * mini.c (mono_method_to_ir): Fix initialization of typedbyref locals.
24525
24526         * mini.c inssel.brg: Implement typedefbyref opcodes.
24527
24528         * mini.c (mono_jit_compile_method): Remove unused local variable.
24529
24530         * mini.c (mono_jit_compile_method_inner): Ditto.
24531         
24532 2003-10-12  Zoltan Varga  <vargaz@freemail.hu>
24533
24534         * tramp-x86.c (x86_class_init_trampoline): Fix build.
24535         
24536         * tramp-x86.c (x86_class_init_trampoline): Thread safety fixes.
24537
24538 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
24539
24540         * mini.c (mono_no_aot): Remove unused global variable.
24541
24542         * mini.c: Thread safety fixes.
24543
24544 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
24545
24546         * mini.c (mono_create_class_init_trampoline): Add a lock around
24547         class_init_hash_addr.
24548
24549         * arrays.cs (test_0_newarr_emulation): Add new regression test for
24550         #30073.
24551
24552         * mini.c: Decompose the NEWARR instruction before decomposing its
24553         arguments. Fixes #30073.
24554
24555 2003-10-08  Zoltan Varga  <vargaz@freemail.hu>
24556
24557         * mini-x86.c (mono_arch_emit_epilog): Add support for stdcall calling
24558         convention.
24559
24560 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
24561
24562         * mini.c (mono_method_to_ir): Allow wrapper data for CEE_LDELEMA.
24563
24564         * inssel-x86.brg (OP_LOCALLOC): Fix register assignment for localloc.
24565
24566         * driver.c: Add support for compiling icall wrappers to --compile.
24567
24568 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
24569
24570         * inssel.brg: The empty value in class->interface_offsets is -1, not
24571         0. Fixes #49287.
24572
24573 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
24574
24575         * objects.cs: New test for 'is' operator on an array of interfaces.
24576
24577 Wed Oct 1 19:40:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
24578
24579         * tramp-ppc.c: update trampoline code to support jumps
24580         and class initialization.
24581
24582 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
24583
24584         * mini.c (mono_jit_compile_method): Fix reading of freed memory.
24585
24586         * inssel.brg (OP_UNBOXCAST): Fix #46027.
24587
24588         * inssel.brg (OP_UNBOX): Remove unused rule.
24589
24590         * mini.h mini.c inssel-x86.brg: Allocate one SP variable for each
24591         region instead of one for each method. Fixes #47813.
24592
24593 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
24594
24595         * exceptions.cs (test_0_nested_finally): New regression test for
24596         nested exception handlers.
24597
24598         * mini.c (mono_jit_runtime_invoke): Fix for the previous fix.
24599
24600         * mini.c (mono_method_to_ir): Avoid inlining tail calls.
24601
24602         * mini.c (mono_method_to_ir): Fix tail recursion in the presence of 
24603         inlining.
24604
24605         * mini.c (mono_method_check_inlining): Make the inlining limit 
24606         configurable by an environment variable.
24607         
24608         * mini.c (mono_jit_runtime_invoke): Add Gonzalo's fix for #36545.
24609
24610         * mini.h: Bump AOT file version.
24611
24612         * mini.h mini.c aot.c mini-x86.c: For relocations which refer to a 
24613         token, store the image along with the token, since the token might not 
24614         refer to the same image as the method containing the relocation, 
24615         because of inlining.
24616
24617 2003-09-27  Zoltan Varga  <vargaz@freemail.hu>
24618
24619         * mini.c (mono_precompile_assemblies): New function to compile
24620         all methods in all loaded assemblies.
24621
24622         * mini.h driver.c: Added new optimization flag MONO_OPT_PRECOMP.
24623
24624         * regalloc.h regalloc.c (MonoRegState): Change the type of 
24625         iassign and fassign to int*, since they can contain large negative
24626         values if the register is spilled. Also added some comments. Fixes
24627         #45817.
24628
24629         * exceptions-x86.c (seh_handler): Fix handling of system exceptions
24630         under Win32. Fixes #42964.
24631
24632 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
24633
24634         * mini.h (MONO_PATCH_INFO_WRAPPER): New patch type.
24635
24636         * aot.c: Added support for AOT compiling methods which contain calls
24637         to wrappers. Currently, only remoting-invoke-with-check wrappers are
24638         handled.
24639         
24640         * driver.c (compile_all_methods): Run the compilation in a thread
24641         managed by mono. Fixes #44023.
24642
24643         * mini.c (mono_codegen): Print full method name in verbose output.
24644
24645         * mini-x86.c (mono_arch_patch_code): Fix warning.
24646         
24647         * mini-x86.c (mono_arch_patch_code): Allways create a trampoline for
24648         jumps, since the method we are jumping to might be domain-specific.
24649
24650         * aot.c: Added support for MONO_PATCH_INFO_METHOD_JUMP.
24651
24652 Tue Sep 23 10:50:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
24653
24654         * inssel.brg: string chars are unsigned.
24655
24656 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
24657
24658         * TODO: New todo item.
24659
24660         * tramp-x86.c (x86_class_init_trampoline): New trampoline function
24661         which calls mono_runtime_class_init and patches the call site to
24662         avoid further calls.
24663         (mono_arch_create_class_init_trampoline): New arch specific function 
24664         to create a class init trampoline.
24665         (create_trampoline_code): Generalized so it can create
24666         class init trampolines as well.
24667
24668         * mini.c (helper_sig_class_init_trampoline): New helper variable.
24669         (mono_create_class_init_trampoline): New function to create and cache
24670         class init trampolines.
24671         (mono_find_class_init_trampoline_by_addr): New function to lookup the
24672         vtable given the address of a class init trampoline. Used by the
24673         patching process.
24674         (mono_codegen): Generate a call to a trampoline instead of
24675         mono_runtime_class_init in LDSFLD[A].
24676         (mono_codegen): Add relocations for the new trampoline.
24677         
24678         * mini.h mini-x86.c aot.c: Added a new relocation type: 
24679         MONO_PATCH_INFO_CLASS_INIT.
24680
24681         * mini.h: Bump AOT version number.
24682
24683         * aot.c: Create a copy of the loaded code instead of using the original
24684         so methods which call each other will be close in memory, improving
24685         cache behaviour.
24686         
24687         * exceptions-x86.c (mono_arch_has_unwind_info): Back out the previous
24688         patch since it breaks the regression tests.
24689         
24690         * exceptions-x86.c (mono_arch_has_unwind_info): Added explicit check
24691         for the register saving instruction sequence since the 
24692         frame_state_for function in glibc 2.3.2 don't seem to detect it.
24693
24694 2003-09-14  Zoltan Varga  <vargaz@freemail.hu>
24695
24696         * TODO: Fix todo item && remove another.
24697
24698 2003-09-12  Zoltan Varga  <vargaz@freemail.hu>
24699
24700         * mini-x86.c (mono_arch_patch_code): Fix tail calls broken by a
24701         previous checkin.
24702
24703         * aot.c: Moved the check for MONO_LASTAOT into the initialization
24704         function of the module.
24705
24706         * mini.h mini.c aot.c: Added a new optimization flag OPT_AOT for
24707         turning on/off the usage of AOT code. Got rid of mono_no_aot and the
24708         --no-aot command line option.
24709
24710 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
24711
24712         * helpers.c (mono_disassemble_code): Make this work under cygwin. Patch
24713         by Bernie Solomon (bernard@ugsolutions.com).
24714
24715         * inssel.brg: Refactor the interface offset table related code into
24716         its separate functions and add support for the AOT case.
24717
24718 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
24719
24720         * aot.c (mono_aot_get_method_inner): Fix memory leak.
24721         
24722         * aot.c: Added mono_aot_verbose variable and made all debugging
24723         output depend on the value of this variable.
24724
24725         * aot.c (mono_aot_get_method_inner): Avoid dynamic allocation of
24726         method_label and info_label.
24727
24728         * mini.h mini-x86.c aot.c: Added a new relocation type 
24729         MONO_PATCH_INFO_IID for klass->interface_id.
24730
24731         * mini.h mini.c driver.c aot.c: Changed mono_aot_get_method to return
24732         the MonoJitInfo structure.
24733
24734         * mini.c (mono_jit_compile_method): Avoid using non-shared AOT in
24735         a non-root appdomain in shared mode.
24736
24737 Tue Sep 9 16:33:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
24738
24739         * aot.c: make aot loader less verbose. Remove free of unused variable.
24740
24741 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
24742
24743         * aot.c (mono_aot_get_method_inner): Fix MONO_PATCH_INFO_IMAGE.
24744
24745         * .cvsignore: Added *.dll.
24746
24747         * mini.c (mono_print_tree_nl): New function callable while debugging.
24748
24749         * mini.c (mono_print_code): Export this.
24750
24751         * tramp-x86.c (x86_magic_trampoline): Tell valgrind to recompile the
24752         patched code.
24753
24754 2003-09-05  Zoltan Varga  <vargaz@freemail.hu>
24755
24756         * mini.h (MonoCompile): Added 'jit_info' field.
24757
24758         * mini.c (mini_method_compile): Save the generated MonoJitInfo into
24759         the cfg structure, since it is needed by the AOT compiler.
24760
24761         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
24762
24763         * aot.c: A major rewrite. Changes include:
24764         - save exception tables for methods which have them.
24765         - cache failed lookups in aot_get_method () to avoid the (slow) calls 
24766         to g_module_symbol.
24767         - reworked the file format so it is now much smaller and needs
24768         fewer relocation entries.
24769         
24770 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
24771
24772         * aot.c (load_aot_module): Fix build bustage on platforms without
24773         Boehm GC.
24774
24775 2003-09-04  Martin Baulig  <martin@ximian.com>
24776
24777         * Makefile.am (INCLUDES): Added $(LIBGC_CFLAGS).
24778
24779 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
24780
24781         * TODO: Some new optimization ideas.
24782
24783         * aot.c: Move AOT module loading logic here from mono_assembly_open.
24784
24785         * aot.c: Save the optimization flags used to compile the code into
24786         the AOT module.
24787
24788         * mini.h mini-x86.c mini.c aot.c: Added new types of relocations to
24789         support emitting domain specific code.
24790         
24791         * mini.h mini.c aot.c: Modified the JIT so the generated AOT code is 
24792         no longer domain neutral. It can be made domain neutral by compiling 
24793         with --optimize=shared.
24794
24795         * aot.c (mono_aot_get_method_inner): Allow sharing of AOT methods
24796         between appdomains.
24797
24798         * driver.c mini.h mini.c: New --no-aot debugging option which disables
24799         loading of AOT code.
24800
24801         * inssel-x86.brg: Added missing AOTCONST -> OUTARG_VT rule.
24802         
24803         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling method
24804         if there is no domain neutrality information.
24805
24806 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
24807
24808         * aot.c (mono_compile_assembly): Emit a symbol containing the file 
24809         format version into the generated library.
24810
24811         * mini-x86.c (mono_arch_patch_code): Do not emit the address of the
24812         callee method into the caller since one of them could be shared.
24813
24814         * mini.h mini-x86.c aot.c: Added two new relocations so throwing
24815         system exceptions from AOT code now works.
24816
24817         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling 
24818         method if it is domain neutral and the callee is not.
24819
24820         * graph.c (cfg_emit_one_loop_level): Fix warning.
24821
24822 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
24823
24824         * aot.c (mono_compile_assembly): Oops. Remove debugging cruft from
24825         last checkin.
24826
24827 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
24828
24829         * mini.c (mini_init): Call mono_marshal_init () explicitly since it
24830         is needed  by code which is executed before mono_runtime_init ().
24831         Thanks to Bernie Solomon (bernard@ugsolutions.com) for noticing this.
24832         
24833         * mini.c (mono_thread_abort): Fix warning.
24834         (mono_jit_compile_method): Call static constructor in the AOT case too.
24835
24836         * aot.c (mono_compile_assembly): Fix warning.
24837
24838 2003-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24839
24840         * mini.c: register a SIGINT handler if MONO_DEBUG is defined.
24841
24842 2003-08-28  Zoltan Varga  <vargaz@freemail.hu>
24843
24844         * inssel.brg (OP_UNBOXCAST): Add support for the AOT case.
24845
24846         * cpu-pentium.md: Fix the length of call opcodes so they include the
24847         ESP restoring instruction. Fixes #47968.
24848
24849 2003-08-28  Martin Baulig  <martin@ximian.com>
24850
24851         * mini-x86.c (mono_arch_call_opcode): Added support for
24852         MONO_TYPE_GENERICINST.
24853
24854         * mini.c (check_call_signature): Added support for MONO_TYPE_GENERICINST.       
24855
24856 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
24857
24858         * Makefile.am (BUILT_SOURCES): Fix compilation on platforms without
24859         a JIT. Patch by Bernie Solomon (bernard@ugsolutions.com).
24860
24861         * mini.c jit-icalls.c tramp-x86.c tramp-ppc.c tramp-sparc.c: Get rid of
24862         metadata_section.
24863
24864 2003-08-26  Martin Baulig  <martin@ximian.com>
24865
24866         * mini.c (get_basic_blocks): Added `unsigned char **pos' argument;
24867         when reporting an error, set this to the actual error location.
24868         (mono_method_to_ir): Report the correct error location if
24869         get_basic_blocks() returned an error.
24870
24871 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
24872
24873         * mini.c (mono_type_blittable): OBJECT is not blittable.
24874         (mono_method_blittable): Methods which have marshalling descriptors
24875         are not blittable either. Fixes #47842.
24876
24877 2003-08-22  Zoltan Varga  <vargaz@freemail.hu>
24878
24879         * driver.c mini.c: Use an environment variable instead of a global 
24880         variable. Also fix the build.
24881
24882         * mini.c (mini_init): Call g_thread_init () to make glib thread-safe. 
24883         Fixes #47682. Thanks to Laurent Morichetti (l_m@pacbell.net) for 
24884         reporting this. 
24885
24886         * driver.c mini.c: Added --with-valgrind option to turn off some
24887         code which prevents mono from running under valgrind.
24888
24889         * mini.c (mono_emit_call_args): Fixed warning.
24890
24891         * mini.c (mono_emulate_opcode): Fixed warning.
24892
24893 Thu Aug 21 19:10:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
24894
24895         * inssel.brg: 64bit fixes from Laurent Morichetti <l_m@pacbell.net>.
24896         * linear-scan.c, mini-ppc.h, mini-sparc.h, mini-x86.h, mini.h,
24897         regalloc.c, regalloc.h: specify available registers in arch-specific
24898         code and support floats in the regallocator (patch by Laurent Morichetti 
24899         <l_m@pacbell.net>)
24900
24901 Wed Aug 20 19:02:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
24902
24903         * mini.c: mono_thread_current() can be called only after
24904         mono_runtime_init(): rearrange code to not call it early on.
24905
24906 Wed Aug 20 13:14:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
24907
24908         * mini.c: allocate jump tables in the code mempools.
24909
24910 Wed Aug 20 13:04:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
24911
24912         * mini.c, mini.h: make sure per-thread data allocated by the jit is
24913         freed.
24914
24915 2003-08-10  Miguel de Icaza  <miguel@ximian.com>
24916
24917         * cpu-pentium.md (ldtoken): Change the length for mul.ovf.un from
24918         12 to 16.  This fixes bug #47453.
24919
24920
24921 Thu Aug 7 15:59:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
24922
24923         * mini-ppc.c: fixed indexed load and unsigned compares.
24924
24925 2003-08-06  Lluis Sanchez Gual  <lluis@ximian.com>
24926
24927         * mini.c: reenabled installation of handler for
24928           thread abort signal.
24929
24930 Tue Aug 5 12:21:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
24931
24932         * cprop.c, mini-x86.c, cpu-pentium.md: fix buglets spotted
24933         by Laurent Morichetti <l_m@pacbell.net>. Disabled local cprop
24934         until it's fixed and actually useful.
24935
24936 Mon Aug 4 12:12:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
24937
24938         * inssel-long32.brg: couple more opcodes implemented.
24939
24940 Thu Jul 31 22:43:02 EDT 2003 Mark Crichton <crichton@gimp.org>
24941         
24942         * mini-sparc.c: Even more opcodes implemeted.
24943
24944 Thu Jul 31 19:36:03 EDT 2003 Mark Crichton <crichton@gimp.org>
24945
24946         * mini-sparc.c: More opcodes implemented.
24947
24948 Thu Jul 31 15:16:26 EDT 2003 Mark Crichton <crichton@gimp.org>
24949
24950         * mini-sparc.c: More opcodes implemented.
24951
24952 Wed Jul 30 22:31:02 EDT 2003 Mark Crichton <crichton@gimp.org>
24953
24954         * inssel-sparc.brg: Add some needed rules.  Direct
24955         copy from PPC.
24956         * Makefile.am: Use inssel-sparc.brg
24957         * exceptions-sparc.c: 0xdeadbeef/0xdecafbad to keep
24958         an assert happy for now.
24959
24960 Wed Jul 30 20:44:07 EDT 2003 Mark Crichton <crichton@gimp.org>
24961
24962         * mini-sparc.c: Fixed compile errors.
24963         * exceptions-sparc.c: Same.  We now produce a mono binary 
24964         on sparc-linux.  Yea.
24965
24966 Wed Jul 30 14:10:12 EDT 2003 Mark Crichton <crichton@gimp.org>
24967
24968         * mini-sparc.c: Renamed registers.  Also some macro cleanups.
24969         * exceptions-sparc.c, tramp-sparc.c: Various compile fixes.
24970         They compile, but do not work.
24971
24972 Wed Jul 30 17:52:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
24973
24974         * Makefile.am, cpu-sparc.md, exceptions-sparc.c, mini-sparc.c,
24975         mini-sparc.h, tramp-sparc.c: Beginning of sparc support
24976         from Mark Crichton <crichton@gimp.org> and Christopher Taylor
24977         (ct@gentoo.org).
24978
24979 Tue Jul 29 12:43:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
24980
24981         * mini.c: more opcodes implemented and better support for generics.
24982
24983 Fri Jul 25 18:51:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
24984
24985         * cpu-g4.md, cpu-pentium.md: updates for new instructions.
24986         * mini.c, mini.h: first cut at generics support: some new instructions 
24987         added and changed the behaviour of some of the existing ones.
24988
24989 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
24990
24991         * mini.c: Removed definition of metadata_shared mutex here.
24992
24993 Tue Jul 22 15:21:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
24994
24995         * mini-x86.c: make vararg calls work for instance methods.
24996
24997 Fri Jul 18 19:26:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
24998
24999         * mini.c, mini.h, mini-x86.c, mini-ppc.c: mono_arch_call_opcode()
25000         returns the arguments in a separte list, now.
25001
25002 Fri Jul 18 13:16:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
25003
25004         * aot.c, mini.c: updates for array type representation changes.
25005
25006 Fri Jul 18 11:28:28 CEST 2003 Paolo Molaro <lupus@ximian.com>
25007
25008         * mini.c: register function to perform jit shutdown.
25009
25010 Thu Jul 17 16:02:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25011
25012         * mini.c: use a faster allocator if possible.
25013
25014 Thu Jul 17 16:00:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
25015
25016         * aot.c: some cleanups and portability changes.
25017
25018 Wed Jul 2 11:08:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
25019
25020         * mini.c: use faster allocation for CEE_BOX if possible.
25021
25022 Mon Jun 30 19:16:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
25023
25024         * mini.c, mini-ops.h, inssel.brg, mini-x86.c: optimized access to fields.
25025         Moved inlined mempcy code to its own function so that is can be
25026         reused. Added an inline memset function as well (optimized initobj).
25027         * cpu-pentium.md, inssel-x86.brg: add and use lea_membase.
25028
25029 Fri Jun 27 11:19:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
25030
25031         * mini.c, mini-ops.h, inssel.brg: optimized a couple of Array methods.
25032
25033 Wed Jun 25 13:19:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
25034
25035         * mini.c, mini.h, mini.x86.c, mini-ppc.c: added facility so that
25036         arch code can setup the cpu for CLR execution, if needed.
25037         We use it on x86 to set the precision of FP operations.
25038
25039 Tue Jun 17 19:02:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
25040
25041         * mini.c: disable some optimizations if we can guess they'll cost too
25042         much for a given method.
25043
25044 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
25045
25046         * mini.h mini.c: Rework last patch based on suggestions by Paolo.
25047         
25048 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
25049         * mini.h mini.c mini-x86.c: Added instruction level coverage 
25050         info collection support.
25051
25052 Mon Jun 16 18:13:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
25053
25054         * driver.c, mini-ppc.c, mini-x86.c, mini.c, mini.h: the coverage stuff
25055         is now implemented in the profiling API. Get rid of a couple of
25056         unnecessary global variables.
25057
25058 2003-06-15  Nick Drochak <ndrochak@gol.com>
25059
25060         * basic-long.cs: tests for negative values for bigmul, and unsigned.
25061         * cpu-g4.md: add op_bigmul and op_bigmul_un
25062         * cpu_pentium.md: add op_bigmul_un
25063         * inssel-long32.brg: add rule for unsigned bigmul
25064         * mini-ops.h: define OP_BIGMUL_UN
25065         * mini-x86.c: THE BUG: handle (un)signed properly
25066         * mini.c: choose unsigned opcode if needed.
25067         This set of patches fixes bug #44291
25068
25069 2003-06-13  Dietmar Maurer  <dietmar@ximian.com>
25070
25071         * mini.c (optimize_branches): improved to handle all kinds of
25072         conditional branches.
25073
25074 Wed Jun 11 18:01:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
25075
25076         * mini.c, mini.h, jit-icalls.c: speedup emulation of opcodes that
25077         don't raise exceptions.
25078
25079 Tue Jun 10 19:00:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
25080
25081         * tramp-x86.c, tramp-ppc.c, debug-mini.c: move arch-specific code
25082         to arch-specific files.
25083
25084 2003-06-09  Martin Baulig  <martin@ximian.com>
25085
25086         * Makefile.am (libs): Added $(LIBGC_LIBS).
25087
25088 Mon Jun 9 20:21:47 CEST 2003 Paolo Molaro <lupus@ximian.com>
25089
25090         * cpu-pentium.md, mini-x86.c: fix (well, actually implement) OP_TAN
25091         and OP_ATAN (fixes bug#44293).
25092
25093 Mon Jun 9 19:00:56 CEST 2003 Paolo Molaro <lupus@ximian.com>
25094
25095         * Makefile.am, mini-x86.c: rename cpu description array to
25096         pentium_desc, since some compilers define the 'pentium' preprocessor
25097         symbol.
25098
25099 2003-05-28  Dietmar Maurer  <dietmar@ximian.com>
25100
25101         * mini.c (mini_select_instructions): add explicit branch if the
25102         following block is not the false target of a conditional branch -
25103         we need this with any optimization that reorder or remove bblocks
25104
25105         * mini.c (optimize_branches): bug fixes
25106
25107 2003-06-06  Dietmar Maurer  <dietmar@ximian.com>
25108
25109         * mini.c (mono_method_to_ir): inline static readonly fields
25110
25111         * ssa.c (fold_tree): start cfold support for long (very simple
25112         cases only)
25113
25114         * cfold.c (mono_constant_fold_inst): opt. CEE_CONV_I8 (OP_ICONST)
25115
25116 Fri Jun 6 11:41:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
25117
25118         * inssel.brg: fixed memcpy (bug #44219).
25119
25120 2003-06-05  Dick Porter  <dick@ximian.com>
25121
25122         * driver.c: Set the glib log levels to not abort if g_message
25123         recurses.
25124
25125         g_set_prgname() has to happen before mini_init() so that the
25126         process handle gets the info.
25127         
25128 Thu Jun 5 20:11:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
25129
25130         * driver.c: add intrins to the default optimizations to get wider
25131         exposure.
25132
25133 Wed Jun 4 19:47:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
25134
25135         * mini.h: some large basic blocks will overflow a 16-bit
25136         integers for symbolic registers.
25137
25138 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
25139
25140         * mini-x86.c (mono_arch_output_basic_block): revert previous fprem changes.
25141         (mono_arch_output_basic_block): fix bug 43499 
25142
25143 Wed Jun 4 13:13:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
25144
25145         * mini.c: kill duplicated definition of mono_debug_format.
25146
25147 Wed Jun 4 13:09:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
25148
25149         * mini-x86.c, arrays.cs: fixed register allocation bug.
25150
25151 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
25152
25153         * mini-x86.c (mono_arch_output_basic_block): use IEEE compatible fprem1
25154
25155         * mini.c (mini_get_opcode_for_method): inline IEEERemainder
25156
25157 2003-06-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25158
25159         * mini.c:
25160         (print_method_from_ip): also print source location information if
25161         available.
25162
25163 2003-06-02  Dietmar Maurer  <dietmar@ximian.com>
25164
25165         * mini.c (mono_find_block_region): bug fix in region code
25166         (mini_method_compile): enable removing unreachable code again, but
25167         only in methods without exception clauses.
25168
25169 Fri May 30 18:40:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
25170
25171         * mini.c, mini-ops.h, cpu-pentium.md, inssel.brg, mini-x86.c, mini.h:
25172         Implemented arglist opcode and handling of TypedReference type.
25173         Fixed x86 call convention when a structure is returned.
25174         Minimal support for calling static vararg methods.
25175
25176 2003-05-30  Dietmar Maurer  <dietmar@ximian.com>
25177
25178         * mini.c (mini_method_compile):  always remove unreachable code,
25179         because the code in them may be inconsistent  (access to dead
25180         variables for example).
25181
25182 Thu May 29 11:44:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
25183
25184         * driver.c, debug-mini.c: warning fixes.
25185
25186 Wed May 28 11:19:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
25187
25188         * Makefile.am, jit.h, mini.h: install header for embedding mono.
25189
25190 Tue May 27 17:56:12 CEST 2003 Paolo Molaro <lupus@ximian.com>
25191
25192         * mini.c: thread-static fields are registered in mono_class_vtable(),
25193         so ensure the function is called before checking for them.
25194
25195 2003-05-27  Dietmar Maurer  <dietmar@ximian.com>
25196
25197         * mini.c (optimize_branches): fix for bug 43586
25198
25199         * jit-icalls.c (mono_llmult_ovf): added an additional check for
25200         overflow (fixes Bug #43639)
25201
25202 Tue May 27 11:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25203
25204         * mini.c, objects.cs: allow the use of stobj for primitive types.
25205
25206 Tue May 27 10:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25207
25208         * mini.c: be less strict about argument checking until we support
25209         running the verifier.
25210
25211 2003-05-27  Nick Drochak <ndrochak@gol.com>
25212
25213         * basic-long.cs: tests for (ulong)int * (ulong)int also
25214         * mini.c: use the same trick for (ulong)int * (ulong)int
25215
25216 2003-05-27  Nick Drochak <ndrochak@gol.com>
25217
25218         * basic-long.cs: add regression test for (long)int * (long)int
25219         * cpu-pentium.md: add op_bigmul specification
25220         * inssel-long32.brg: add OP_BIGMUL rule
25221         * mini-ops.h: add OP_BIGMUL
25222         * mini-x86.c: register allocator: handle case where src1 needs to be
25223         in EAX.
25224         * mini.c: substitute special BIGMUL opcode in the tree for 
25225         (long)int * (long)int
25226
25227 Mon May 26 20:20:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
25228
25229         * jit-icalls.c: call the type ctor on field access if needed.
25230
25231 Mon May 26 15:21:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
25232
25233         * mini-ops.h, mini.c, inssel.brg, exceptions.cs: validate arguments passed
25234         to a method (including results of ldelema, bug#43207).
25235
25236 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
25237
25238         * graph.c (cfg_emit_one_loop_level): loop over all blocks. use
25239         colors to show exception handler blocks.
25240
25241         * inssel-x86.brg (OP_OUTARG_VT): dont push zero sized structures
25242         (fix for pinvoke7.cs).
25243
25244 Mon May 26 12:11:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25245
25246         * mini.h, mini.c: ensure correct initialization order for types that
25247         require it. Prepare for lazy compilation of jit icall wrappers.
25248         Provide a name for opcode emulation to reduce unneeded mallocing.
25249
25250 Fri May 23 16:08:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
25251
25252         * mini-x86.c: better register restoring code and profiling
25253         support for tail calls.
25254
25255 Fri May 23 15:30:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25256
25257         * mini.h, driver.c: prepare for leaf methods optimization.
25258
25259 Fri May 23 15:28:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
25260
25261         * mini.c: get targets of branches before converting a method.
25262
25263 2003-05-23  Dietmar Maurer  <dietmar@ximian.com>
25264
25265         * mini.c (optimize_branches): added some experimental code (disbaled) 
25266
25267 2003-05-22  Dietmar Maurer  <dietmar@ximian.com>
25268
25269         * mini.c (optimize_branches): fix branch to branch optimization 
25270
25271         * exceptions-x86.c (mono_arch_handle_exception): bug fix.
25272
25273         * mini-x86.c (mono_arch_output_basic_block): cleanup up exception code
25274
25275         * inssel-x86.brg: added OP_START_HANDLER, CEE_ENDFINALLY, OP_ENDFILTER
25276
25277         * mini-x86.c (mono_arch_allocate_vars): only reserve space for lmf
25278         if needed.
25279
25280 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
25281
25282         * mini.c (mono_method_to_ir): call handle_loaded_temps before inlining.
25283         enable use of interface variables again.
25284
25285         * mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate
25286         I1 to registers because there is no simply way to sign extend 8bit
25287         quantities in caller saved registers on x86.
25288
25289         * inssel-float.brg: set costs of some rules to 2 so
25290         that monobure always select the arch. specific ones if supplied,
25291         regardless of the order we pass the files to monoburg.
25292
25293 Tue May 20 17:19:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
25294
25295         * mini.c, mini-x86.c: since the magic trampoline for jumps
25296         can't patch the code directly, we do it as soon as the
25297         method gets compiled.
25298
25299 Tue May 20 16:02:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
25300
25301         * mini-x86.c, mini.h: introduce a new patching method
25302         to support CEE_JMP and tail calls.
25303         * mini.c: obey tail.call. Don't precompile methods target
25304         of CEE_JMP.
25305         * tramp-x86.c: new trampoline code to handle methods
25306         reached through a jump.
25307
25308 2003-05-20  Dietmar Maurer  <dietmar@ximian.com>
25309
25310         * mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16
25311         bit values to registers
25312
25313 2003-05-19  Dietmar Maurer  <dietmar@ximian.com>
25314
25315         * mini.c (mono_compile_get_interface_var): share interface
25316         variables if possible.
25317
25318 2003-05-16  Martin Baulig  <martin@ximian.com>
25319
25320         * debug-mini.c (mono_init_debugger): New function to initialize
25321         the debugger.  This is not in the debugger since it needs to
25322         access some of mini's internals.
25323
25324 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
25325
25326         * mini.c (mono_method_to_ir): inlining fixes/cleanups
25327
25328 Fri May 16 13:27:23 CEST 2003 Paolo Molaro <lupus@ximian.com>
25329
25330         * mini.c, mini-opts.h, inssel.brg: inline small memcpy
25331         for value type handling.
25332
25333 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
25334
25335         * mini.c (mono_method_to_ir): inline LDFLD/STFLD wrappers
25336         (mono_method_check_inlining): enable inlining of all kinds of wrappers
25337
25338 2003-05-15  Lluis Sanchez Gual  <lluis@ideary.com>
25339
25340         * mini.c: fixed little bug in CEE_NEWOBJ case when calling
25341           the constructor through a proxy.
25342
25343 Thu May 15 17:17:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
25344
25345         * jit-icalls.c, inssel.brg: fixes to array element address
25346         calculations.
25347
25348 2003-05-15  Dietmar Maurer  <dietmar@ximian.com>
25349
25350         * mini-x86.c (is_regsize_var): allocate pointer to registers
25351
25352 Thu May 15 13:04:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
25353
25354         * driver.c: fixed typo, added intrins to the set of optimizations
25355         tested with regressions.
25356
25357 Thu May 15 11:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
25358
25359         * mini-ops.h, mini.c, inssel.brg: optimize access to 2D arrays.
25360         * jit-icalls.c, exceptions.cs: fixed index out of range checks, added
25361         test case.
25362
25363 2003-05-14  Dietmar Maurer  <dietmar@ximian.com>
25364
25365         * inssel.brg: remove some common pop instructions without side effects
25366
25367 Wed May 14 12:40:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
25368
25369         * inssel-x86.brg: fixed thinko in int to double conversions.
25370
25371 Wed May 14 12:01:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
25372
25373         * mini.c, jit-icalls.c: added runtime thread-static variable support.
25374
25375 Tue May 13 22:02:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
25376
25377         * inssel-long32.brg: two more missing instructions.
25378
25379 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
25380
25381         * mini.c (mono_emit_call_args): set the cil_code for all arguments
25382         if not already set.
25383
25384 2003-05-12  Zoltan Varga  <vargaz@freemail.hu>
25385
25386         * mini-x86.c (mono_arch_output_basic_block): Handle negative zero
25387         correctly.
25388
25389         * basic-float.cs: Added tests for negative zero.
25390
25391 Sun May 11 14:56:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
25392
25393         * inssel-long32.brg, basic-long.cs, exceptions.cs: handle
25394         a couple of missing operations for long casts, with test cases.
25395
25396 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25397
25398         * exceptions-x86.c: fixed small leaks in mono_arch_handle_exception.
25399
25400 2003-05-09  Dietmar Maurer  <dietmar@ximian.com>
25401
25402         * mini-x86.c (mono_arch_emit_prolog): avoid reallocs with better
25403         code size estimation.
25404
25405 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
25406
25407         * mini.c (mono_jit_create_remoting_trampoline): make it work with
25408         abstract methods (fix bug 42542)
25409
25410         * aot.c: add ability to handle array types
25411         
25412 2003-05-08  Zoltan Varga  <vargaz@freemail.hu>
25413
25414         * mini.c: Call the _specific versions of the object allocation
25415         functions if possible.
25416
25417 Tue May 6 17:18:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
25418
25419         * driver.c: call setlocale ().
25420
25421 Tue May 6 14:38:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
25422
25423         * mini.h, mini.c, aot.c, debug-mini.c, exceptions.c: build fixes for
25424         windows build.
25425
25426 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
25427
25428         * mini.c (optimize_branches): dont touch code inside exception clauses (fix bug 38136)
25429
25430         * exceptions-x86.c (ves_icall_get_frame_info): also skip remoting
25431         wrappers (fix bug 42122)
25432
25433 2003-05-04  Martin Baulig  <martin@ximian.com>
25434
25435         * mini.h (mono_jit_init, mono_jit_cleanup): Added prototypes.
25436
25437         * driver.c: s/MONO_OPT_SAHRED/MONO_OPT_SHARED/g.
25438         s/mini_set_defaults/mono_set_defaults/g.
25439
25440 2003-05-04  Martin Baulig  <martin@ximian.com>
25441
25442         * driver.c: s/mini_parse_default_optimizations/mono_parse_default_optimizations/g.
25443
25444 Sun May 4 11:48:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25445
25446         * inssel-long32.brg: add missing lreg: OP_LCONV_TO_U8 (lreg) rule
25447         (reported by Don Roberts).
25448
25449 Fri May 2 18:36:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
25450
25451         * mini.c: temporarily work around two bugs for this release.
25452
25453 Fri May 2 17:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
25454
25455         * Makefile.am: avoid linking libmono with GMODULE_LIBS, because
25456         that contains -export-dynamic and it makes using the ld script
25457         useless.
25458         * mini.h, main.c, driver.c: s/mini_main/mono_main/g.
25459
25460 Fri May 2 12:52:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
25461
25462         * mini.h, mini-x86.c, driver.c: disable optimizations not available on a
25463         specific cpu.
25464
25465 Thu May 1 15:28:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
25466
25467         * mini.c: make sure leave calls all the needed finally blocks,
25468         even when the target jumps out of multiple exception clauses.
25469
25470 Thu May 1 15:18:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
25471
25472         * ldscript, Makefile.am: add linker script to reduce the number of
25473         exported symbols (should also fix the issues with libwine defining
25474         some of the same symbols in io-layer).
25475
25476 2003-05-01  Zoltan Varga  <vargaz@freemail.hu>
25477
25478         * driver.c (mini_main): Avoid assertion when no file name is given on 
25479         the command line.
25480
25481 Wed Apr 30 15:33:11 CEST 2003 Paolo Molaro <lupus@ximian.com>
25482
25483         * driver.c: added --version/-V command line option.
25484         Added the inline optimization in the regression tests.
25485
25486 Wed Apr 30 15:16:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
25487
25488         * mini.c, basic-calls.cs: when inlining, save arguments to locals according 
25489         to the type in the method signature (fixes bug#42134).
25490
25491 Wed Apr 30 12:38:44 CEST 2003 Paolo Molaro <lupus@ximian.com>
25492
25493         * mini.c: when inlining, check this is not null only when needed (bug #42135).
25494
25495 Wed Apr 30 11:44:36 CEST 2003 Paolo Molaro <lupus@ximian.com>
25496
25497         * mini-ppc.h, tramp-pcc.c: type fixes from Max Horn <max@quendi.de>.
25498
25499 2003-04-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25500
25501         * driver.c: fixed bug #42100.
25502
25503 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
25504
25505         * mini.c (mono_method_to_ir): UNBOX need to CAST objects first
25506
25507 Mon Apr 28 17:03:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
25508
25509         * mini.c: moved most of the code required to do inlining to its own
25510         function so it can be reused. Inline also ctors if appropriate.
25511
25512 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
25513
25514         * Makefile.am: Link with -export-dynamic so shared libs loaded by
25515         the runtime can call mono API functions.
25516
25517 2003-04-27  Martin Baulig  <martin@ximian.com>
25518
25519         * debug-mini.c (mono_debug_init_method): Added
25520         `guint32 breakpoint_id' argument; if the method has a breakpoint,
25521         send a notification to the debugger.
25522
25523         * mini.c (mono_method_to_ir): Don't insert a breakpoint if we're
25524         running in the Mono Debugger, just pass the breakpoint number to
25525         mono_debug_init_method().
25526
25527         * tramp-x86.c, tramp-ppc.c: Removed the breakpoint trampolines.
25528
25529 Sun Apr 27 13:18:04 CEST 2003 Paolo Molaro <lupus@ximian.com>
25530
25531         * mini.c: allow some more unsafe compares.
25532
25533 Sat Apr 26 11:55:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25534
25535         * mini-x86.c, Makefile.am: make distcheck works (partially from
25536         a patch by Richard Lee <r.h.lee@attbi.com>).
25537         * regset.c, regset.h: removed, they are unused.
25538
25539 2003-04-25  Dick Porter  <dick@ximian.com>
25540
25541         * driver.c: Usage reports the name as 'mono' not 'mini'
25542         * exceptions-x86.c: Build and run on freebsd
25543
25544 Thu Apr 24 17:09:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
25545
25546         * Makefile.am: install the program with the 'mono' name and
25547         the library as libmono instead of mini and libmini.
25548
25549 Thu Apr 24 17:08:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
25550
25551         * driver.c: provide the APIs for the embedding interface of the old jit.
25552
25553 2003-04-23  Dietmar Maurer  <dietmar@ximian.com>
25554
25555         * jit-icalls.c (helper_stelem_ref): impl. (fix bug 41775)
25556
25557 2003-04-23  Martin Baulig  <martin@ximian.com>
25558
25559         * tramp-x86.c, tramp-ppc.c: Reenable the debugger breakpoint interface.
25560
25561         * driver.c: Added `--debug' command line argument to enable
25562         debugging support.
25563
25564 2003-04-23  Martin Baulig  <martin@ximian.com>
25565
25566         * debug.[ch]: Removed.  The code is now in
25567         ../metadata/mono-debug.[ch] and mono-debug-debugger.[ch].
25568
25569         * debug-stabs.c, debug-dwarf2.c: Removed; nobody used this for the
25570         last six months.
25571
25572 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
25573
25574         * mini.c (mono_method_to_ir): set the cil_code address (fix bug 41525)
25575
25576 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25577
25578         * mini.c:
25579         (mini_cleanup): moved mono_runtime_cleanup call after the call to
25580         mono_domain_finalize.
25581         (mini_method_compile): use mono_method_profile* if the the option is
25582         enabled.
25583
25584 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
25585
25586         * tramp-x86.c (mono_arch_create_jit_trampoline): Subsitute synchronized
25587         methods with their wrapper.
25588
25589         * tramp-ppc.c (mono_arch_create_jit_trampoline): Subsitute synchronized
25590         methods with their wrapper.
25591
25592         * jit-icalls.c (mono_ldvirtfn): Subsitute synchronized methods with
25593         their wrapper.
25594
25595         * mini.c (mono_method_to_ir): Subsitute synchronized methods with their
25596         wrapper.
25597
25598         * mini.c (mono_method_check_inlining): Avoid inlining synchronized
25599         methods.
25600
25601 2003-04-17  Dietmar Maurer  <dietmar@ximian.com>
25602
25603         * exceptions-x86.c (mono_arch_handle_exception): fix for bug 36252
25604
25605 2003-04-16  Dietmar Maurer  <dietmar@ximian.com>
25606
25607         * mini.c (mono_compile_create_var): use g_malloc/g_realloc instead
25608         of the mempool. This is slightly faster and uses less memory
25609
25610 Wed Apr 16 12:53:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
25611
25612         * mini.c: avoid O(n) allocation for variables.
25613
25614 Tue Apr 15 19:13:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25615
25616         * mini.c: handle items on the stack after inlining methods.
25617
25618 Tue Apr 15 14:17:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
25619
25620         * mini.c: make the method->opcode optimization dependent
25621         on MONO_OPT_INSTRINS and do it lazily.
25622
25623 Tue Apr 15 14:15:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
25624
25625         * driver.c: print overall results at the end of regression run.
25626
25627 Tue Apr 15 11:18:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
25628
25629         * inssel.brg: don't overwrite symbolic registers.
25630
25631 Mon Apr 14 17:41:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
25632
25633         * inssel-x86.brg: fix conversion from long to float.
25634
25635 2003-04-11  Dietmar Maurer  <dietmar@ximian.com>
25636
25637         * mini.c (mini_init): use an opcode for get_Chars (OP_GETCHR)
25638
25639 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
25640
25641         * mini.c (mono_type_blittable): MONO_TYPE_OBJECT is blittable.
25642
25643         * driver.c: Added --print-vtable option as in the old JIT.
25644
25645 Thu Apr 10 17:43:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
25646
25647         * inssel-long32.brg, exceptions.cs: fix conversions from long, too.
25648
25649 Thu Apr 10 16:27:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
25650
25651         * inssel.brg, basic.cs: fixed checked conversions to byte and short.
25652
25653 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
25654
25655         * mini.c regalloc.c regalloc.h: Fix memory leak.
25656
25657 2003-04-09  Dietmar Maurer  <dietmar@ximian.com>
25658
25659         * aot.c (mono_aot_get_method): register all used strings
25660
25661 Wed Apr 9 15:22:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
25662
25663         * mini.c: always intern strings references with ldstr at compile time.
25664
25665 Tue Apr 8 11:41:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
25666
25667         * Makefile.am: add BUILT_SOURCES.
25668
25669 Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
25670
25671         * driver.c: give a better error message when the assembly to execute
25672         doesn't have an entry point.
25673
25674 2003-04-07  Dietmar Maurer  <dietmar@ximian.com>
25675
25676         * Makefile.am: added hack for automake
25677
25678         * mono/mini/mini.c (mono_save_args): always copy arguments to keep
25679         correct sematics.
25680
25681         * mono/mini/ssa.c (mono_ssa_avoid_copies): don't optimize calls
25682
25683 22003-04-07  Martin Baulig  <martin@ximian.com>
25684
25685         * Makefile.am: Added Makefile.am.
25686
25687         * debugger-main.c: Removed, this is now in the debugger where it
25688         belongs.
25689
25690         * mini.pc.in: Call this package `mini' for the moment.
25691
25692
25693
25694
25695
25696
25697
25698
25699
25700
25701
25702
25703
25704
25705