9534417911935b3b89be6c4b3493cdaa6163548e
[mono.git] / mono / mini / ChangeLog
1 2010-06-25  Mark Probst  <mark.probst@gmail.com>
2
3         * mini-trampolines.c (common_call_trampoline): An ugly hack to
4         work around a potentially very hard to fix problem with inflating
5         generic methods.
6
7 2010-06-26  Zoltan Varga  <vargaz@gmail.com>
8
9         * method-to-ir.c (mono_emit_wb_aware_memcpy): Remove the workaround as the core
10         problem has been fixes.
11
12 2010-06-25  Zoltan Varga  <vargaz@gmail.com>
13
14         * Makefile.am: Add an 'SGEN' make variable to allow tests to be run with SGEN.
15
16         * mini-gc.c (mini_gc_init_cfg): Use mono_gc_is_moving () instead of HAVE_SGEN_GC.
17         It might be be better to define a MonoGCJitOptions structure later and have the
18         GC return that.
19
20         * mini-darwin.c: Don't undefine pthread_ calls for SGEN, they are no longer defined.
21
22         * Makefile.am: Use libwapi.la for both sgen and non-sgen builds.
23
24         * debugger-agent.c (get_objref): Implement support for sgen.
25
26         * driver.c: Remove the unused gc_wrapper.h include.
27
28         * driver.c (mono_main): Delegate the --desktop mode optimizations to the GC
29         implementation.
30
31 2010-06-25  Zoltan Varga  <vargaz@gmail.com>
32
33         * driver.c (mono_main): Use mono_gc_get_description () to print the GC name.
34
35         * mini-gc.c (mini_gc_init_cfg): New function to initialize GC specific flags
36         in MonoCompile.
37
38         * method-to-ir.c mini.c: Remove usage of HAVE_SGEN_GC and use runtime checks
39         instead.
40
41 2010-06-23  Miguel de Icaza  <miguel@novell.com>
42
43         * Makefile.am: Build the mono-sgen binary a Mono VM with the Sgen
44         GC enabled as well as libmono-sgen-2.0 and libomonosgen-static
45
46         * driver.c: Do not depend on the USED_GC_NAME when using SGen, use
47         it only for Boehm diagnostics.
48
49         * Makefile.am: Make the file a bit more consistent.
50
51         * debug-debugger.c: Wrap the entire file with an #ifdef
52         MONO_DEBUGGER_SUPPORTED to simplify the build.
53
54         * Makefile.am: Fix the opcodes build issue by including the
55         source, not by including the .lo file directly
56
57         Always bring the MDB sources into the build, to drop the
58         dependency on the AM_CONDITIONAL from configure.in as the hard
59         debugger supports Boehm, but not Sgen, this simplifies the build. 
60
61         * Renamed the *.s files into *.S
62
63 2010-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
64
65         * method-to-ir.c (mono_emit_wb_aware_memcpy): Don't emit bitmap
66         wb for now on 64bits systems while issues with valuetype returns
67         are not fixed.
68
69 2010-06-24  Zoltan Varga  <vargaz@gmail.com>
70
71         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add support for using a standard set of
72         passes by calling createStandardFunctionPasses ().
73
74 2010-06-23  Zoltan Varga  <vargaz@gmail.com>
75
76         * mini.h (MONO_INS_HAS_NO_SIDE_EFFECT): Add OP_LDADDR.
77
78 2010-06-22  Zoltan Varga  <vargaz@gmail.com>
79
80         * method-to-ir.c (mono_method_to_ir): Don't mark loads from OP_LDADDR with
81         MONO_INST_FAULT.
82
83         * mini-llvm.c (mono_llvm_emit_method): Recalculate MONO_INST_INDIRECT flags to
84         allow better optimization if the OP_LDADDR which caused the flag to be set was
85         optimized away.
86
87         * exceptions-amd64.c (get_throw_trampoline): Align the stack properly.
88
89         * mini-amd64.c (mono_arch_emit_exceptions): Pass only the type token index, not
90         the type token.
91
92         * mini-llvm.c (emit_entry_bb): Save the this argument only in gshared methods.
93
94         * mini-llvm.c: Fix a couple memory leaks. Get rid of a few #ifdefs.
95
96 2010-06-22  Zoltan Varga  <vargaz@gmail.com>
97
98         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Call patch_callsite ()
99         to handle the code sequence generated for non-near calls. Fixes #616056.
100
101 2010-06-21  Zoltan Varga  <vargaz@gmail.com>
102
103         * exceptions-x86.c (mono_arch_find_jit_info_ext): Adjust eip in the lmf case too.
104
105         * exceptions-x86.c: Add a resume_unwind trampoline for LLVM.
106
107         * mini-llvm.c (exception_cb): For nested clauses, add the same try range to the
108         nesting clause too.
109         (mono_llvm_check_method_supported): Enable llvm for methods with nested clauses.
110         (mono_llvm_emit_method): Instead of calling 'mono_resume_unwind' directly, call a
111         trampoline which saves the context, so changes made to callee saved registers in
112         finally clauses are visible to a nesting catch clause.
113
114         * exceptions-amd64.c: Add a resume_unwind trampoline for LLVM.
115
116         * mini-exceptions.c (mono_handle_exception_internal): Fix support for nested clauses
117         in LLVM compiled code.
118         (mono_handle_exception_internal): Add a 'ctx' argument containing the state after
119         the finally handler has ran.
120
121         * mini.h (ResumeState): New structure containing information required to resume
122         exception handling after executing LLVM compiled finally clauses.
123
124         * exceptions-amd64.c (get_throw_trampoline): Clean up the amd64 throw trampolines a
125         bit, by passing all the registers as one argument.
126
127 2010-06-19  Zoltan Varga  <vargaz@gmail.com>
128
129         * tramp-amd64.c (mono_arch_create_generic_trampoline): Increase the buf len a little,
130         to avoid an assert.
131
132 2010-06-18  Zoltan Varga  <vargaz@gmail.com>
133
134         * aot-compiler.c (emit_klass_info): Mark unloadable classes properly.
135
136         * aot-compiler.c aot-runtime.c: Fix LLVM support.
137
138         * mini-llvm.c: When emitting OP_CALL_HANDLER, avoid branching directly to the landing
139         pad, branch to a new bblock instead.
140
141         * aot-compiler.c (emit_method_code): Use cfg->header instead of the header of
142         orig_method.
143
144         * exceptions-amd64.c (mono_arch_exceptions_init): Fix fullaot support.
145
146         * mini-llvm.c (process_bb): Add support for OP_SQRT when using the LLVM mono branch.
147
148 2010-06-17  Geoff Norton  <gnorton@novell.com>
149
150         * mini-arm.h:
151         * exceptions-arm.c: Move the UCONTEXT macros to mono-sigcontext.h so they
152         can be used by sgen.
153
154 2010-06-17  Zoltan Varga  <vargaz@gmail.com>
155
156         * aot-compiler.c (emit_klass_info): Handle type load exceptions.
157
158         * method-to-ir.c (mono_method_to_ir): Avoid a crash if mono_method_get_header ()
159         fails.
160
161         * exceptions-x86.c (mono_x86_throw_corlib_exception): Negate the decrement of
162         the ip done by throw_exception (), it is not needed for corlib exceptions.
163
164 2010-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
165
166         * method-to-ir.c (mono_emit_wb_aware_memcpy): Simplify this function.
167         Call new jit icall mono_gc_wbarrier_value_copy_bitmap for vt wbarrier
168         of size > 5 words. This support fast barriers for value types up to
169         256/512 bytes which     beyond that the copying itself is the major issue.
170
171         * method-to-ir.c (mini_emit_stobj): The intrinsic version is safe
172         for gsharing, so use it.
173
174         This eliminate all calls to mono_value_copy from managed code in
175         gmcs, fsharp and ipy.
176
177         This gives a 2% perf boost on ipy and 1% on gmcs over previous patches.
178
179         Even thou a lot of mono_value_copy calls were eliminated from fsharp,
180         performance kept
181
182         * mini.c (mini_init): Register new icall.
183
184 2010-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
185
186         * method-to-ir.c (mono_emit_wb_aware_memcpy): Handle nested valuetypes.
187         This eliminates 2% of mono_value_copy calls on ipy and 12% on fsharp.
188
189 2010-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
190
191         * method-to-ir.c (mini_emit_stobj): Don't call mono_value_copy for small
192         value types as the overhead is huge. Manually expand it up to 5 words to
193         avoid code bloat.
194
195         This improves gmcs times by 5% and unmodified binary-tree by 78%. The later
196         is an exception that performance is dominated by mono_value_copy.
197
198         This puts sgen about 5% ahead of boehm in terms of wall-clock on a Core2Quad.
199
200 2010-06-17  Zoltan Varga  <vargaz@gmail.com>
201
202         * mini-llvm.c (process_call): Disable LLVM for calls to generic class init
203         trampolines on x86, since those have their own cconv.
204
205         * exceptions-x86.c (mono_arch_exceptions_init): Implement the llvm throw corlib
206         exception trampolines.
207
208         * tramp-x86.c: Add xdebug info for a few trampolines.
209
210         * mini-llvm.c: Set the name of the arguments.
211
212         * mini-llvm.c (emit_cond_system_exception): Pass the ip of to throw_corlib_trampoline
213         using a block address if using the LLVM mono branch.
214
215         * exceptions-amd64.c (mono_arch_exceptions_init): Add new LLVM throw corlib exception
216         trampolines.
217
218 2010-06-15  Zoltan Varga  <vargaz@gmail.com>
219
220         * mini-ppc.c (mono_arch_get_cie_program): Define this for powerpc too.
221
222         * mini-llvm.c (process_bb): Add a missing CHECK_FAILURE.
223
224         * mini.c (mini_init): Remove some of the llvm restrictions, they are no longer needed.
225
226         * method-to-ir.c (mono_method_to_ir): Enable fast virtual calls when using llvm.
227
228         * mini-trampolines.c (mono_llvm_vcall_trampoline): Rewrite this to use one vtable
229         trampoline per vtable slot index. The slot, along with the 'this' argument is enough
230         to identify the vtable slot address plus the method which needs to be compiled.
231
232         * mini.c (mini_get_vtable_trampoline): Use one vtable trampoline per vtable slot when
233         using llvm.
234
235         * mini-x86.c (get_call_info_internal): Change the managed calling convention so
236         'this' is always passed as the first argument, before the vtype ret arg. This
237         simplifies get_this_arg_reg () and LLVM integration.
238
239         * mini-amd64.c (get_call_info): Fix the handling of MONO_TYPE_TYPEDBYREF after
240         the latest changes.
241
242         * tramp-x86.c (mono_arch_create_generic_trampoline): Emit unwind info for
243         these trampolines.
244
245         * mini-x86.c (mono_arch_get_cie_program): Implement this for x86.
246
247         * mini-llvm.c: Fix compilation with llvm 2.6.
248
249         * mini-amd64.c (CallInfo): Fix the position of the vret_arg_index field.
250
251         * mini-llvm.c (mono_llvm_emit_method): Fix the build if LLVM_MONO_BRANCH is not
252         defined.
253
254         * mini-amd64.c (get_call_info): Change the managed calling convention so 'this'
255         is always passed as the first argument, before the vtype ret arg. This simplifies
256         get_this_arg_reg () and LLVM integration.
257
258 2010-06-14 Rodrigo Kumpera  <rkumpera@novell.com>
259
260         * method-to-ir.c (mono_method_to_ir): Add support for .ctor intrinsics.
261
262         * method-to-ir.c (mini_emit_inst_for_ctor): New function for .ctor intrinsics.
263         For now just call simd intrinsics. This makes "x[0] = new Vector4f (10)" 
264         translate into much nicer code.
265
266 2010-06-14  Zoltan Varga  <vargaz@gmail.com>
267
268         * mini-llvm.c (sig_to_llvm_sig_full): Add a 'sinfo' out argument which returns
269         parameter index information. Use this to simplify a lot of code.
270
271         * unwind.c (mono_unwind_decode_fde): Handle augmentions using a loop.
272
273 2010-06-12  Zoltan Varga  <vargaz@gmail.com>
274
275         * aot-compiler.c (compile_method): Add a 'depth' parameter to add_generic_class too
276         to fix infinite generic recursion. Fixes #612702.
277
278 2010-06-11  Zoltan Varga  <vargaz@gmail.com>
279
280         * object.c: Use a callback to create IMT trampolines, allowing the usage of one
281         imt trampoline per imt slot when using LLVM.
282
283 2010-06-10  Jonathan Pryor  <jpryor@novell.com>
284
285         * mini.c (mini_cleanup): Call mono_runtime_shutdown(). Fixes #438454.
286
287 2010-06-09  Levi Bard  <levi@unity3d.com>
288
289         * debugger-agent.c: Clear unloaded types on appdomain unload.
290
291 2010-06-08  Zoltan Varga  <vargaz@gmail.com>
292
293         * liveness.c (visit_bb): Make the component vregs of long vars volatile as well.
294         Fixes #612206.
295
296         * exceptions.cs: Add a test.
297
298 2010-06-06  Zoltan Varga  <vargaz@gmail.com>
299
300         * mini-llvm.c (mono_llvm_check_method_supported): Only disable llvm for nested clauses.
301
302         * mini.c (mini_method_compile): Move the LLVM checks to a function in mini-llvm.c.
303
304         * mini.c (mono_jit_runtime_invoke): Initialize *exc to NULL before calling the wrapper,
305         so it doesn't have to do it.
306
307         * helpers.c (mono_disassemble_code): Flush stdout, so the output from the spawned
308         process does not mix with ours.
309
310         * mini-llvm.c (mono_llvm_emit_method): Refactor this giant function into smaller
311         ones.
312
313         * mini-llvm.c method-to-ir.c ir-emit.h: When using the llvm mono branch, allow
314         loads/stores which can throw exceptions inside clauses.
315
316 2010-06-05  Zoltan Varga  <vargaz@gmail.com>
317
318         * mini-llvm.c (mono_llvm_emit_method): Fix support for finally clauses with more than
319         one ENDFINALLY.
320
321         * mini.c (mini_init): Register mono_resume_unwind as an icall.
322
323 2010-06-03  Zoltan Varga  <vargaz@gmail.com>
324
325         * dwarfwriter.c: Update after the mono_debug_lookup_locals () changes.
326
327         * debugger-agent.c (method_commands_internal): Ditto. Return scope information for
328         locals.
329
330 2010-06-03  Zoltan Varga  <vargaz@gmail.com>
331
332         * debugger-agent.c (appdomain_unload): Clear all breakpoint instances in the dying
333         appdomain.
334
335 2010-06-02  Zoltan Varga  <vargaz@gmail.com>
336
337         * method-to-ir.c (set_rgctx_arg): New helper function to remove some duplicate code.
338         Use a separate generic class init trampoline for llvm, since it needs a different
339         signature.
340
341         * unwind.c (mono_unwind_decode_fde): Make this decode the mono specific LSDA which
342         includes the location of this/rgctx.
343
344         * mini-llvm.c aot-runtime.c: Enable generic sharing for llvm if using the LLVM mono
345         branch.
346
347 2010-06-01  Zoltan Varga  <vargaz@gmail.com>
348
349         * mini.c (mini_method_compile): Enable llvm+exceptions on LLVM SVN.
350
351         * mini-llvm.c (emit_cond_system_exception): Disable llvm when this occurs in a
352         clause.
353
354 2010-05-31  Zoltan Varga  <vargaz@gmail.com>
355
356         * unwind.c (mono_unwind_decode_fde): The FDE only has an augmention if the CIE
357         says so.
358
359         * aot-runtime.c (decode_eh_frame): Fix an assert condition.
360
361         * aot-compiler.c (patch_to_string): New debugging helper function.
362
363 2010-05-30  Zoltan Varga  <vargaz@gmail.com>
364
365         * exceptions-amd64.c (get_throw_trampoline): Fix the xdebug name of the corlib
366         trampoline.
367
368         * exceptions-x86.c (mono_arch_exceptions_init): Create an llvm rethrow trampoline too.
369
370         * mini-llvm.c (mono_llvm_emit_method): Implement OP_RETHROW.
371
372         * method-to-ir.c (mono_method_to_ir): Emit a OP_NOT_REACHED after a rethrow.
373
374         * mini-llvm.c (emit_call): Compute the containing try clause correctly for nested
375         clauses.
376
377         * mini.c (create_jit_info): Print EH clause info for LLVM too.
378
379 2010-05-28  Mark Probst  <mark.probst@gmail.com>
380
381         * method-to-ir.c (mono_method_to_ir): Emit a write barrier for
382         cpobj with reference types.
383
384 2010-05-28  Mark Probst  <mark.probst@gmail.com>
385
386         * method-to-ir.c (mono_method_to_ir): Only explicitly add the
387         write barrier for reference types.
388
389 2010-05-27  Zoltan Varga  <vargaz@gmail.com>
390
391         * mini-s390x.c (mono_arch_output_basic_block): Applied patch from Aurelien Minvielle
392         . Fix OP_ATOMIC_EXCHANGE_I4 on s390x. Fixes #609023.
393
394 2010-05-31  Martin Baulig  <martin@ximian.com>
395
396         Fix #608271.
397
398         * debugger-agent.c (breakpoints_cleanup): Iterate over `event_requests', call
399         clear_breakpoint() on all breakpoint events and remove them from the list.
400
401 2010-05-27  Martin Baulig  <martin@ximian.com>
402
403         Fix #605698.
404
405         * debugger-agent.c (method_commands, type_commands): Temporarily
406         set the appdomain while executing this method; do all metadata
407         calls in the debuggee's appdomain where user assemblies are loaded.
408
409 2010-05-27  Zoltan Varga  <vargaz@gmail.com>
410
411         * mini-s390x.c (mono_arch_get_delegate_invoke_impls): Fix the s390x build.
412
413 2010-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
414
415         * method-to-ir.c (mono_method_to_ir): Add missing write barrier to stobj.
416
417 2010-05-26  Zoltan Varga  <vargaz@gmail.com>
418
419         * method-to-ir.c: Instead of freeing method headers immediately, save them in a list in
420         MonoCompile, and free them in mono_destroy_compile (), since the MonoType's in them could
421         be referenced even after the header is freed.
422
423         * aot-runtime.c: Remove the half finished support for decoding the .arm_exidx
424         section.
425
426 2010-05-25  Zoltan Varga  <vargaz@gmail.com>
427
428 2010-05-25  Bill Holmes  <billholmes54@gmail.com>
429
430         * genmdesc.c (main): Fixing the detection of the nacl switch.
431
432         Code is contributed under MIT/X11 license.
433
434 2010-05-25  Zoltan Varga  <vargaz@gmail.com>
435
436         * exceptions-amd64.c (mono_arch_find_jit_info_ext): Adjust the ip for LMF frames too.
437
438         * mini-llvm.c aot-compiler.c: More LLVM 2.8 updates.
439
440         * mini.h (LLVM_CHECK_VERSION): New helper macro.
441
442 2010-05-25  Miguel de Icaza  <miguel@novell.com>
443
444         * genmdesc.pl (build_spec): Add support for nacl: keyword also to
445         the Perl program
446
447         * genmdesc.c: Added support for nacl: key on the machine
448         description files to support the extra space required by Google
449         Native Client.
450
451 2010-05-23  Zoltan Varga  <vargaz@gmail.com>
452
453         * mini.c (mono_jit_compile_method_inner): Propagate exceptions in one more place.
454
455 2010-05-23  Zoltan Varga  <vargaz@gmail.com>
456
457         * mini.c (mono_jit_compile_method_inner): Propagate exceptions from
458         mono_runtime_class_init_full ().
459         (mono_jit_runtime_invoke): Ditto. Fixes #608073.
460
461 2010-05-22  Zoltan Varga  <vargaz@gmail.com>
462
463         * mini-llvm.c mini-llvm-cpp.cpp: Update after LLVM 2.8 changes.
464
465 2010-05-21  Zoltan Varga  <vargaz@gmail.com>
466
467         * mini-ppc.c (mono_arch_output_basic_block): Use ins->inst_c1 instead of p1, the
468         two are not the same on ilp32.
469
470 2010-05-21  Zoltan Varga  <vargaz@gmail.com>
471
472         * mini.c (mono_jit_compile_method_inner): Remove a DISABLE_JIT block which was
473         added by mistake.
474
475         * mini-ppc.c: Fix the DISABLE_JIT build.
476
477 2010-05-20  Zoltan Varga  <vargaz@gmail.com>
478
479         * aot-runtime.c (decode_resolve_method_ref): Rename this from decode_method_ref_2.
480         (make_writable): Remove this unused function.
481
482 2010-05-20  Zoltan Varga  <vargaz@gmail.com>
483
484         * aot-compiler.c: Collect all information about a PLT entry into a separate MonoPltEntry
485         structure. Make the labels to plt entries local symbols instead of assembler local
486         labels, since tha latter causes problems for the iphone linker.
487
488 2010-05-19  Zoltan Varga  <vargaz@gmail.com>
489
490         * mini-ppc.c (mono_ppc_is_direct_call_sequence): Handle one more case with ilp32.
491
492 2010-05-17  Zoltan Varga  <vargaz@gmail.com>
493
494         * mini-ppc.c (mono_ppc_is_direct_call_sequence): Handle ilp32.
495         (ppc_patch_full): Ditto.
496
497         * mini-arm.c (mono_arch_build_imt_thunk): Fix the fail_tramp case.
498
499         * method-to-ir.c (mono_method_to_ir): Use fast generic virtual method invocation
500         if gshared is enabled, to avoid asserts in the trampoline code.
501
502         * mini-ia64.c (mono_arch_build_imt_thunk): Implement generalized imt thunks
503         on ia64.
504
505 2010-05-15  Geoff Norton  <gnorton@novell.com>
506
507         * dwarfwriter.c, xdebug.c: Fix a pretty large leak when running in 
508         xdebug mode.
509
510 2010-05-14  Geoff Norton  <gnorton@novell.com>
511
512         * exceptions-x86.c: Fix the alignment of this trampoline so we dont get a 
513         misaligned stack on darwin.
514
515 2010-05-14  Zoltan Varga  <vargaz@gmail.com>
516
517         * mini-arm.c aot-compiler.c: Implement support for generalized imt thunks on
518         arm.
519
520 2010-05-14  Zoltan Varga  <vargaz@gmail.com>
521
522         * xdebug.c: Fix ARM support.
523
524 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
525
526         * exceptions-x86.c (mono_arch_handle_exception): Resume from the signal handler
527         and do most of the work on the normal stack.
528         (mono_x86_get_signal_exception_trampoline): New x86 specific trampoline function.
529
530 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
531
532         * aot-compiler.c: Put non-code data into the .rodata section on linux.
533
534 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
535
536         * exceptions-arm.c (mono_arch_handle_exception): Fix the cross-compile case.
537
538 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
539
540         * exceptions-arm.c (mono_arch_handle_exception): Resume from the signal handler
541         and do most of the work on the normal stack.
542
543 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
544
545         * exceptions-amd64.c (mono_arch_handle_exception): Resume from the signal handler
546         and do most of the work on the normal stack even if sigaltstack is disabled.
547
548 2010-05-12  Zoltan Varga  <vargaz@gmail.com>
549
550         * exceptions-amd64.c (mono_arch_sigctx_to_monoctx): Simplify this now that
551         UCONTEXT_REG_ constants are available on linux as well.
552         (mono_arch_monoctx_to_sigctx): Ditto.
553         (mono_arch_ip_from_context): Ditto.
554
555 2010-05-12  Zoltan Varga  <vargaz@gmail.com>
556
557         * debugger-agent.c (set_breakpoint): Fix setting of pending breakpoints in
558         other domains.
559
560 2010-05-11  Zoltan Varga  <vargaz@gmail.com>
561
562         * aot-compiler.c (emit_plt): Don't align the plt to a pagesize on x86, it is
563         no longer needed.
564
565 2010-05-10  Zoltan Varga  <vargaz@gmail.com>
566
567         * debugger-agent.c (insert_breakpoint): Print a more descriptive error message
568         if a breakpoint cannot be inserted.
569
570 2010-05-08  Zoltan Varga  <vargaz@gmail.com>
571
572         * aot-compiler.c (emit_and_reloc_code): Fix a warning.
573
574 2010-05-07  Zoltan Varga  <vargaz@gmail.com>
575
576         * debugger-agent.c (frame_commands): Return an error instead of asserting if
577         no JIT info is found for the method.
578
579 2010-05-05 Jonathan Chambers  <joncham@gmail.com>
580
581         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Protect against a NULL sigctx
582         in debug printf.
583
584 2010-05-05  Zoltan Varga  <vargaz@gmail.com>
585
586         * mini-amd64.c (mono_arch_get_trampolines): New arch specific function returning
587         a list of arch specific trampolines.
588
589         * aot-compiler.c (emit_trampolines): Use it.
590
591 2010-05-05  Zoltan Varga  <vargaz@gmail.com>
592
593         * tramp-<ARCH>.c exceptions-<ARCH>.c mini-trampolines.c mini-exceptions.c
594         aot-compiler.c: Use the _full trampoline creation functions on all platforms,
595         get rid of the _full from their name.
596
597 2010-05-05  Zoltan Varga  <vargaz@gmail.com>
598
599         * tramp-x86.c (mono_arch_create_generic_trampoline): Call
600         get_nullified_class_init_trampoline to remove some code duplication.
601
602 2010-05-03  Zoltan Varga  <vargaz@gmail.com>
603
604         * mini-x86.c (mono_arch_emit_prolog): Fix full-aot support for thread
605         attach.
606
607 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
608
609         * mini-amd64.c (mono_arch_emit_load_aotconst): New arch-specific function.
610
611         * tramp-amd64.c: Use emit_load_aotconst to remove some code duplication.
612
613         * aot-runtime.c (init_plt): Make the default entries point to the AOT trampoline,
614         there is no need to jump through the first plt entry.
615
616         * aot-runtime.c (mono_aot_get_named_code): Rename to mono_aot_get_trampoline.
617
618         * aot-runtime.c (mono_aot_get_plt_entry): Move the arch specific parts to an
619         arch-specific function.
620         (mono_aot_get_plt_info_offset): Ditto.
621
622         * aot-runtime.c (mono_aot_register_jit_icall): New helper function called from
623         mono_arch_init () to register jit icalls called from full-aot trampolines.
624         (load_function): Get rid of the arch specific #ifdefs, move the relevant code
625         to mini-<ARCH>.c.
626
627         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception_full): Get rid of
628         the specialized throw corlib exception trampoline, use a variant of the normal
629         trampoline along with a new C function which does the call to
630         mono_exception_from_token (), just like on x86.
631
632 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
633
634         * mini-trampolines.c aot-compiler.c tramp-<ARCH>.c exceptions-<ARCH>.c:
635         Reorganize the full aot trampoline creation functions, instead of taking a bunch
636         of out arguments, they will now take a MonoTrampInfo** out argument. Simplify
637         some code in aot-compiler.c because of this. Remove the non-full aot trampoline
638         creation functions on architectures which have the full-aot ones.
639
640 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
641
642         * mini-ppc.c (mono_arch_decompose_long_opts): Fix LNEG.
643
644 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
645
646         * mini-ppc.c (mono_arch_emit_exceptions): Initialize exc_throw_pos/found
647         explicitly, this seems to be required by some gcc versions at -O2.
648
649         * mini-arm.c: Ditto.
650
651 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
652
653         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Fix full-aot support for
654         has_target delegate invokes.
655
656 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
657
658         * mini.h (MonoAotTrampInfo): Rename this to MonoTrampInfo, add patches/unwind
659         info fields.
660
661         * aot-compiler.c (mono_aot_tramp_info_create): Rename to mono_tramp_info_create,
662         add patches/unwind info arguments, move to mini.c.
663
664         * mini-<ARCH>.c aot-compiler.c: Update after the above changes.
665
666 2010-04-30  Zoltan Varga  <vargaz@gmail.com>
667
668         * debugger-agent.c (type_commands): Add a new CMD_TYPE_GET_SOURCE_FILES_2
669         command which returns full path names.
670
671 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
672
673         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline_full): Set the
674         code_size output variable.
675
676         * mini-x86.c (mono_arch_emit_prolog): Compute the GOT addr before calling
677         mono_get_lmf_addr.
678         
679 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
680
681         * mini-x86.c (mono_arch_emit_prolog): Remove a disable_aot which is not needed.
682         (mono_arch_cpu_optimizazions): Make this a no-op when running with full aot.
683         (mono_arch_cpu_enumerate_simd_versions): Ditto.
684
685 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
686
687         * image-writer.c (asm_writer_emit_alignment): Use ilog2 for alignments for the
688         apple assembler.
689
690 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
691
692         * mini-x86.c (mono_arch_emit_prolog): Avoid an assert in full-aot mode.
693
694 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
695
696         * aot-runtime.c (load_function): Use TARGET_X86 instead of __i386__.
697
698 2010-04-28  Zoltan Varga  <vargaz@gmail.com>
699
700         * aot-compiler.c (emit_got_info): Double the buffer size to avoid an assert.
701
702 2010-04-27  Zoltan Varga  <vargaz@gmail.com>
703
704         * dwarfwriter.c (emit_line_number_info): Get rid of the usage of GArray, so
705         line number support works with eglib.
706
707 2010-04-27  Miguel de Icaza  <miguel@novell.com>
708
709         * driver.c, mini.c: Since linking with LLVM makes the default Mono
710         dirty an extra 70kb pages on startup we are now going to choose a
711         different strategy: ship mono and mono-llvm binaries, with the
712         second being the one that links with LLVM and defaults to LLVM
713         being enabled.
714
715 2010-04-27  Zoltan Varga  <vargaz@gmail.com>
716
717         * tramp-x86.c exceptions-x86.c mini-x86.c aot-compiler.c aot-runtime.c: 
718         Implement full-aot support on x86.
719
720         * method-to-ir.c: Always use a got var on x86 too, just like on ppc, because the
721         trampolines depend on it. Use MONO_ARCH_GOT_REG as the got register, instead of
722         the first register returned by get_global_int_regs ().
723
724         * cpu-x86.md: Fix the length of insertx_u1_slow.
725
726         * iltests.il.in: Disable tail call tests when running with full-aot.
727
728 2010-04-26  Zoltan Varga  <vargaz@gmail.com>
729
730         * method-to-ir.c (mono_op_to_op_imm_noemul): Fix a warning.
731
732 2010-04-24  Mark Probst  <mark.probst@gmail.com>
733
734         * mini.c, driver.c: Initialize mono_use_llvm in mono_main(), not
735         in the initializer, because it's non-constant.
736
737 2010-04-23  Miguel de Icaza  <miguel@novell.com>
738
739         * mini.c: Use MONO_USE_LLVM as an environment flag to turn the use
740         of LLVM on by default.   Used for buildbots and other setups.
741
742 2010-04-24  Zoltan Varga  <vargaz@gmail.com>
743
744         * mini.c: Set mono_use_llvm to FALSE even if mono is compiled with LLVM.
745
746 2010-04-23  Kornel Pal  <kornelpal@gmail.com>
747
748         * method-to-ir.c (mono_method_to_ir): Enable inlining of pointer-sized unmanaged
749         initonly static fields when using moving GC.
750
751         Contributed under MIT/X11 license.
752
753 2010-04-23  Geoff Norton  <gnorton@novell.com>
754
755         * mini-amd64.h: Darwin x86_64 support.
756
757 2010-04-20  Jonathan Pryor  <jpryor@novell.com>
758
759         * exceptions-arm.c: Remove platform checks in favor of configure checks.
760
761 2010-04-19  Jonathan Pryor  <jpryor@novell.com>
762
763         * exceptions-arm.c: Add Android support for sigcontext structure.
764
765 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
766
767         * mini.c (mono_jit_compile_method_inner): Implement the check for native func
768         wrappers correctly now that their wrapper info is NULL.
769
770 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
771
772         * mini.c (mono_jit_compile_method_inner): Avoid calling
773         mono_marshal_method_from_wrapper () for native func wrappers. Fixes #597189.
774
775 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
776
777         * genmdesc.c (inst_name): Define this as a copy of mono_inst_name in helpers.c,
778         so the latter can be #ifndef DISABLE_JIT-ed.
779
780         * helpers.c: Comment out the opstr array if DISABLE_JIT is set.
781
782 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
783
784         * method-to-ir.c driver.c: Disable a few more things when DISABLE_JIT is set.
785
786 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
787
788         * mini-llvm.c (emit_entry_bb): Fix support for simd arguments passed on the
789         stack.
790
791 2010-04-15  Zoltan Varga  <vargaz@gmail.com>
792
793         * debugger-agent.c (type_commands): Call mono_class_setup_methods () before
794         calling mono_class_num_methods (). Fixes #592244.
795
796 2010-04-14  Zoltan Varga  <vargaz@gmail.com>
797
798         * mini-x86.c (mono_arch_get_llvm_call_info): Handle empty structures correctly.
799
800         * mini-llvm.c: Disable LLVM for calls with non-default calling conventions.
801
802 2010-04-14  Zoltan Varga  <vargaz@gmail.com>
803
804         * method-to-ir.c (handle_box_inst): Merge into handle_box, simplify the merged
805         version.
806         * (handle_alloc): Ditto.
807         (mono_method_to_ir): Remove the constrained call restriction added by a previous
808         change, its not needed anymore.
809
810 2010-04-12  Zoltan Varga   Kumpera  <rkumpera@novell.com>
811
812         * mini-posix.c (sigusr1_signal_handler): Fix build on
813         non x86/amd64 systems.
814
815 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
816
817         * method-to-ir.c (mono_method_to_ir): Disable generic sharing for constrained
818         calls where the constrained class needs a context. Fixes #595863.
819
820         * iltests.il.in: Add a test.
821
822 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
823
824         * mini.c (mini_method_compile): Disable llvm+methods with clauses again, llvm
825         2.6/SVN seems to have broken support for them.
826
827 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
828
829         * mini-llvm.c: Fix support for LLVM 2.6.
830
831 2010-04-10  Zoltan Varga  <vargaz@gmail.com>
832
833         * debugger-agent.c (thread_commands): Add a GET_ID command to get the
834         MonoInternalThread belonging to the thread.
835
836 Fri Apr 9 15:28:01 CEST 2010 Paolo Molaro <lupus@ximian.com>
837
838         * driver.c, optflags-def.h, ir-emit.h: introduce an unsupported
839         unsafe optimization that will remove bound checks.
840
841 2010-04-08  Kornel Pal  <kornelpal@gmail.com>
842
843         * method-to-ir.c (mini_emit_inst_for_method): Fix a typo that caused
844         CompareExchange not to be inlined for I8.
845
846         Contributed under MIT/X11 license.
847
848 2010-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
849
850         * array.cs: Add tests for cast between primitive array types.
851
852 2010-04-07 Andreia Gaita  <avidigal@novell.com>
853
854         * Makefile.am: create a convenience library for moon to link with
855
856 2010-04-07 Paolo Molaro <lupus@ximian.com>
857
858         * method-to-ir.c: optimize array accesses from generic interfaces.
859
860 2010-04-06  Zoltan Varga  <vargaz@gmail.com>
861
862         * mini-llvm.c: Update after the memset/memcpy intrinsics changes in LLVM SVN.
863
864 2010-04-05 Rodrigo Kumpera  <rkumpera@novell.com>
865
866         * method-to-ir.c (mono_method_to_ir): Handle call to virtual final methods
867         of marshalbyref classes.
868
869         Fixes #515884.
870
871 2010-04-05 Rodrigo Kumpera  <rkumpera@novell.com>
872
873         * aot-compiler.c (emit_exception_debug_info): Encode try holes
874         information.
875
876         * aot-runtime.c (decode_exception_debug_info): Decode try holes
877         information.
878
879         * mini.h: Increase AOT version.
880
881 2010-04-04  Andreas Faerber  <andreas.faerber@web.de>
882
883         * mini-x86.h: Only enable soft debugger when using sigaction or on
884         Windows. Fixes build on Haiku (lacks siginfo_t).
885
886         Code is contributed under MIT/X11 license.
887
888 2010-04-02  Andreas Faerber  <andreas.faerber@web.de>
889
890         * mini.h, mini-x86.h: Suppress sigaction for Haiku, add support for
891         BeOS-style signal handlers.
892
893         Code is contributed under MIT/X11 license.
894         
895 2010-04-02  Zoltan Varga  <vargaz@gmail.com>
896
897         * mini-posix.c (sigusr1_signal_handler): Fix openbsd support.
898
899 2010-04-01 Rodrigo Kumpera  <rkumpera@novell.com>
900
901         * mini-exceptions.c: Fix win32 build.
902
903 2010-04-01  Mark Probst  <mark.probst@gmail.com>
904
905         * mini.c, driver.c: Call mono_gc_base_init() before
906         mono_debug_init().
907
908 2010-04-01  Sebastien Pouliot  <sebastien@ximian.com>
909
910         * method-to-ir.c (ensure_method_is_allowed_to_[access_field|
911         call_method]): Delegate the actual work in security-core-clr.c
912         to ease code sharing.
913
914 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
915
916         * decompose.c (mono_decompose_opcode): Set the cfg exception if the unsupported
917         float conv.ovf.un opcodes are encountered, instead of asserting later.
918         Fixes #566296.
919
920 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
921
922         * decompose.c (mono_decompose_opcode): Add OP_ICONV_TO_U4_UN as a no-op.
923
924         * iltests.il.in: Add a test.
925
926 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
927
928         * mini-amd64.c (mono_arch_emit_call): Fail compilation if an argument is too
929         large. Fixes #567040.
930
931         * method-to-ir.c: Call CHECK_CFG_EXCEPTION after emitting a call.
932
933 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
934
935         * method-to-ir.c (handle_ccastclass): Call save_cast_details (). Fixes
936         #592711.
937
938 2010-03-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
939
940         * mini-trampolines.c: Surround mono_handler_block_guard_trampoline and
941         mono_create_handler_block_trampoline with the proper #ifdef so that it
942         compiles on amd64.
943
944 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
945
946         * mini-exceptions.c: Introduce mono_walk_stack_full, which
947         allows to select if it's new or old context that is passed to 
948         the callback.
949
950         * mini-exceptions.c (mono_handle_exception_internal): Handle the
951         case when executing a guarded handler from the EH machinery.
952
953         * mini-exceptions.c (mono_install_handler_block_guard): New function
954         responsible for checking for handler blocks, installing the guard and
955         clearing abort state.
956
957         * mini-posix.c (sigusr1_signal_handler): Call mono_install_handler_block_guard
958         to check for handler blocks and skip interruption logic if one was found.
959
960         * mini-trampolines.c (mono_handler_block_guard_trampoline): Function called
961         by the handler block guard trampoline. Resumes interruption by raising the
962         pending ThreadAbortException.
963
964         * mini.c (create_jit_info): Calculate the end address of a finally block.
965
966         * mini-x86.c (mono_arch_install_handler_block_guard): Patch the return address
967         of a finally block to a specified address and return the old one.
968
969         * tramp-x86.c (mono_arch_create_handler_block_trampoline): The handler block
970         trampoline patches the original return address and calls the trampoline function.
971
972 2010-03-30  Zoltan Varga  <vargaz@gmail.com>
973
974         * mini-trampolines.c (mono_aot_trampoline): Remove some dead code.
975
976         * aot-runtime.c (mono_aot_patch_plt_entry): New helper function, which only
977         does the patching if the callee is in the same domain.
978
979         * aot-runtime.c mini-trampolines.c: Call mono_aot_patch_plt_entry instead
980         of mono_arch_patch_plt_entry ().
981
982 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
983
984         * mini.c (create_jit_info): Fix try block hole length encoding.
985
986 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
987
988         * mini.c (create_jit_info): Emit saner debug spew. Now it doesn't
989         duplicate information and print offsets instead of absolute addresses.
990
991 2010-03-29  Zoltan Varga  <vargaz@gmail.com>
992
993         * debugger-agent.c (jit_end): Send type loads for types loaded before the VMStart
994         event is sent. Fixes #591733.
995
996 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
997
998         * mini-posix.c (SIG_HANDLER_SIGNATURE): Handle the case when ctx is NULL on
999         OpenBSD.
1000
1001 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
1002
1003         * debugger-agent.c (mono_debugger_agent_init): Set the GC type of the
1004         thread_to_tls hash table.
1005
1006         * image-writer.c (bin_writer_emit_writeout): Fix the size of the got.plt
1007         section. Fixes #591000.
1008
1009 2010-03-26  Andreas Faerber  <andreas.faerber@web.de>
1010
1011         * Makefile.am (version.h): Check for pure .git directory only,
1012         fixes SVN revision when using git without git-svn.
1013
1014         Contributed under MIT/X11 license.
1015
1016 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
1017
1018         * aot-runtime.c: Apply some openbsd changes from openbsd ports.
1019
1020 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1021
1022         * basic-simd.cs: Test for vector x scalar binary operators.
1023
1024 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1025
1026         * simd-intrincs.c (simd_intrinsic_emit_binary): Support binary
1027         intrinsics with expanded scalar arguments.
1028
1029 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1030
1031         * mini-exceptions.c (get_exception_catch_class): Non catch clauses
1032         don't have an exception class, so don't decode it. This would crash
1033         with filter clauses.
1034
1035 2010-03-24  U-anarquia\miguel  <miguel@anarquia>
1036
1037         Make sure that trunk builds with DISABLE_JIT, an update to the
1038         PlayStation 3 port.
1039         
1040         * mini.c (mini_get_shared_method): this code seems to be necessary
1041         regardless of whether DISABLE_JIT has been defined.
1042
1043         (mono_jit_compile_method_inner): it seems that this method is
1044         required even in full AOT mode, so ifdef out only the pieces that
1045         try to genrate code (the body of code that applies patches to the
1046         code).  
1047
1048         (mini_method_compile): do not compile when using DISABLE_JIT.
1049
1050         * mini-ppc.c (mono_arch_get_allocatable_int_vars)
1051         (mono_arch_output_basic_block, mono-arch_emit_exceptions): Do not
1052         compile when DISABLE_JIT is set.
1053
1054 2010-03-24  Mark Probst  <mark.probst@gmail.com>
1055
1056         * mini.c (mono_create_tls_get): Only create a TLS operation if the
1057         arch really supports it.
1058
1059 2010-03-24  Mark Probst  <mark.probst@gmail.com>
1060
1061         * mini-x86.c, mini-x86.h, mini.c: CEE_MONO_TLS support for Darwin/x86.
1062
1063 2010-03-23  Neale Ferguson <neale@sinenomine.net>
1064
1065         * exceptions-s390x.c: Add support for
1066         mono_arch_get_throw_corlib_exception and fix throw by name.
1067
1068         * mini-s390x.c: Add IMT support; Fix stack parameter passing
1069         logic (especially for varargs); Correct localloc sizing; Add
1070         mono_arch_get_this_arg_from_call and
1071         mono_arch_get_this_arg_from_call.
1072
1073         * mini-s390x.h: Add support for facility list extraction;
1074         Correct/update MONO_ARCH_xxx settings.
1075
1076         * mini-s390.c: Minor corrections to instruction output for
1077         varargs. No IMT implementation - I think it's time to deprecate
1078         s390 and just leave s390x.
1079
1080         * tramp-s390x.c: Correct creation of trampoline instruction
1081
1082
1083         * cpu-s390x.md: Update some instruction lengths
1084
1085 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
1086
1087         * mini-generic-sharing.c (fill_in_rgctx_template_slot): Remove an assert which
1088         can be hit with partial sharing.
1089
1090         * mini-generic-sharing.c (get_shared_class): Handle partially shared methods
1091         in non-shared classes correctly.
1092         (generic_inst_is_sharable): Allow all primitive types in partial sharing.
1093         Turn on partial sharing.
1094
1095 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
1096
1097         * mini-amd64.h: Put back MONO_ARCH_NOMAP32BIT for OpenBSD which was removed
1098         by mistake.
1099
1100 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
1101
1102         * method-to-ir.c (mono_method_to_ir): Handle the failure of
1103         mono_method_signature ().
1104
1105         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
1106
1107         * mini.c (mini_method_compile): Get the signature of cfg->method early with
1108         error checking, so later calls do not need error checking.
1109
1110 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
1111
1112         * exceptions-amd64.c: Add support for OpenBSD which has no UCONTEXT_GREGS.
1113
1114         * mini-amd64.h: Enable MONO_ARCH_USE_SIGACTION on OpenBSD as well.
1115
1116 2010-03-22 Rodrigo Kumpera  <rkumpera@novell.com>
1117
1118         * mini-exceptions.c (mono_handle_exception_internal): Don't
1119         check try_end for archs different than s390. 
1120
1121         * mini.c (create_jit_info): Don't crash if the finallt block is the
1122         last one.
1123
1124 2010-03-22 Rodrigo Kumpera  <rkumpera@novell.com>
1125
1126         * driver.c (mono_main): Don't free global codeman under linux since
1127         glic now peeks at code on stack for more archs than just amd64.
1128
1129 Mon Mar 22 18:09:09 CET 2010 Paolo Molaro <lupus@ximian.com>
1130
1131         * mini.c, method-to-ir.c: changes to support compressed interface
1132         bitmaps.
1133
1134 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
1135
1136         * mini-x86.h: Applied patch from Robert Nagy (Robert@openbsd.org).
1137         Use sigaction on OpenBSD too.
1138
1139 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
1140
1141         * debugger-agent.c (event_req_matches_assembly): Handle request modifiers too.
1142
1143 2010-03-21  Andreas Faerber  <andreas.faerber@web.de>
1144
1145         * debugger-agent.c: #include sys/select.h for fd_set.
1146
1147         Code is contributed under MIT/X11 license.
1148
1149 2010-03-21  Zoltan Varga  <vargaz@gmail.com>
1150
1151         * mini.c (SIG_HANDLER_SIGNATURE): Fix the build on platforms without sigaction
1152         (openbsd+amd64 ?).
1153
1154 2010-03-21  Zoltan Varga  <vargaz@gmail.com>
1155
1156         * mini-ppc.c (mono_arch_emit_exceptions): Avoid an assert in ppc_patch () for
1157         some large methods with lots of exception handlers. Fixes #440924.
1158
1159 Sat Mar 20 11:56:24 CET 2010 Paolo Molaro <lupus@ximian.com>
1160
1161         * method-to-ir.c: remove code duplication for interface checks.
1162
1163 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
1164
1165         * debugger-agent.c (clear_event_requests_for_assembly): New helper function.
1166         (assembly_unload): Clear all event requests referencing the to-be unloaded
1167         assembly.
1168
1169
1170 Fri Mar 19 16:45:20 CET 2010 Paolo Molaro <lupus@ximian.com>
1171
1172         * mini.h, mini-exceptions.c: restore the state of the stack
1173         guard page permissions.
1174
1175 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
1176
1177         * mini-trampolines.c (common_call_trampoline): Remove the condition guarding the
1178         call site patching code, it doesn't appear to be needed.
1179
1180 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
1181
1182         * mini-generic-sharing.c: Add infrastructure for partial sharing, ie.
1183         sharing generic methods whose type arguments are a mix of reference and
1184         non-reference types. Not yet turned on.
1185
1186         * mini.c (mini_get_shared_method): New helper function to return
1187         the method which will be compiled/registered in the JIT tables when doing
1188         generic sharing.
1189         (mono_domain_lookup_shared_generic): Moved to mini.c from mini-generic-sharing.c,
1190         use mini_get_shared_method ().
1191
1192         * mini.c (mini_method_compile): Register the same method which is compiled when
1193         doing generic sharing.
1194
1195         * mini.c aot-compiler.c aot-runtime.c: Add support for partial sharing.
1196
1197         * generics.cs: Add partial sharing tests.
1198
1199 2010-03-17 Jerry Maine  <crashfourit@gmail.com>
1200
1201         * mini.h : Changed the SIMD_VERSION* enum values to match those in Mono.Simd.AccelMode.
1202                    Add an enum value that or's all possable values together. Add an enum value
1203                    that marks the end of the used bit indexes.
1204
1205         * mini-amd64.c : Make changes to match the changes in mini.h 
1206
1207         * mini-x86.c : Make changes to match the changes in mini.h
1208
1209         * simd-intrinsics.c : Reorder the SimdIntrinsc struct to add more bits to
1210                    simd_version to support more simd versions. Changed the name of
1211                    simd_version to simd_version_flags to make it more intuitive that
1212                    it now contains bit flags. Reordered the *_intrinsics arrays to
1213                    match the changes above. Changed emit_intrinsics() to use the new
1214                    setup mentioned above.
1215
1216         Code is contributed under MIT/X11 license.
1217
1218 2010-03-17 Rodrigo Kumpera  <rkumpera@novell.com>
1219
1220         * mini-*.c (mono_arch_output_basic_block): Record try block holes on all
1221         remaining archs. Alpha and hppa maintainers, please stand up.
1222
1223 2010-03-17  Zoltan Varga  <vargaz@gmail.com>
1224
1225         * mini-ppc.c (mono_arch_build_imt_thunk): Always save and restore r11 since it
1226         is needed even when fail_tramp!=NULL.
1227
1228 2010-03-17  Zoltan Varga  <vargaz@gmail.com>
1229
1230         * debugger-agent.c (insert_breakpoint): Write a log message.
1231
1232 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1233
1234         * iltests.il.in: Add a few tests for LEAVE going over multiple
1235         finally clauses.
1236
1237 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1238
1239          * mini-x86.c (mono_arch_output_basic_block): Record try block holes.
1240
1241 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1242
1243         * mini.h (MonoBasicBlock): Add native_length field.
1244         * mini.h (MonoCompile): Add try_block_holes field.
1245         * mini.h (MonoInst): Add exception_clause pointer to
1246         the data union.
1247
1248         * mini.c (mono_codegen): Calculate MonoBasicBlock::native_length.
1249         * mini.c (mono_cfg_add_try_hole): New function to register possible
1250         holes in try blocks.
1251         * mini.c (create_jit_info): Fill in the holes information.
1252
1253         * mini-exceptions.c: Verify for holes when checking if an IP is covered
1254         by a try block.
1255
1256         * method-to-ir.c: Add the EH clause to the CALL_HANDLE instruction.
1257
1258 Tue Mar 16 13:16:16 CET 2010 Paolo Molaro <lupus@ximian.com>
1259
1260         * jit-icalls.c: adjusted for the array API changes.
1261
1262 2010-03-16  Zoltan Varga  <vargaz@gmail.com>
1263
1264         * iltests.il.in: Disable the fconv_to_i test on sparc too.
1265
1266 2010-03-16  Zoltan Varga  <vargaz@gmail.com>
1267
1268         * debugger-agent.c: Simplify the way breakpoints are processed by removing
1269         the 'pending' flag. This fixes support for appdomains too.
1270
1271
1272 Mon Mar 15 18:25:49 CET 2010 Paolo Molaro <lupus@ximian.com>
1273
1274         * mini-amd64.c, mini-ia64.c: remove direct access to method->header.
1275
1276 2010-03-12  Zoltan Varga  <vargaz@gmail.com>
1277
1278         * simd-intrinsics.c (simd_intrinsic_emit_getter): Don't emit shuffle opcodes
1279         when using LLVM, LLVM generates it itself when needed.
1280
1281         * mini-llvm-cpp.cpp (mono_llvm_build_aligned_load): New helper function.
1282
1283         * mini-llvm.c: Use an unaligned load for OP_LOADX_MEMBASE. Add zero extension
1284         to some OP_EXTRACT_ opcodes. Fix the naming of some sse intrinsics. Fix
1285         OP_ANDNPS/OP_ANDNPD.
1286
1287 2010-03-11  Zoltan Varga  <vargaz@gmail.com>
1288
1289         * tramp-x86.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code' for
1290         the pc instead of 'buf'. Fix the call to mono_arch_flush_icache ().
1291         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
1292
1293 2010-03-11  Martin Baulig  <martin@ximian.com>
1294
1295         * debugger-agent.c (type_commands): Add NULL check to
1296         `CMD_TYPE_GET_SOURCE_FILES'.
1297
1298 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
1299
1300         * mini-ppc.c (mono_arch_decompose_opts): Fix OP_ICONV_TO_R_UN when cross-compiling.
1301
1302 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
1303
1304         * mini-codegen.c (mono_peephole_ins): Fix the OP_FMOVE optimization. Fixes
1305         #586664.
1306
1307         * iltests.il.in: Add a test.
1308
1309 2010-03-05  Martin Baulig  <martin@ximian.com>
1310
1311         Add support for aborting invocations.
1312
1313         * debugger-agent.c
1314         (InvokeData): Added `InvokeData *last_invoke'.
1315         (DebuggerTlsData): Renamed `invoke' into `pending_invoke' and
1316         added a new `invoke' field to keep the `InvokeData *' throughout
1317         the invocation.
1318         (ErrorCode): Added `ERR_NO_INVOCATION'.
1319         (CmdVM): Added `CMD_VM_ABORT_INVOKE'.
1320         (mono_debugger_agent_handle_exception): Don't report any exception
1321         if an abort was requested.
1322         (invoke_method): Store the `InvokeData *' in `tls->invoke'; reset
1323         a thread abort if necessary.
1324         (vm_commands): Implement `CMD_VM_ABORT_INVOKE'.
1325
1326 2010-03-08  Rodrigo Kumpera  <rkumpera@novell.com>
1327
1328         * method-to-ir.c: Store the initial basic block returned by mono_basic_block_split
1329         so we can release the whole list and not just the first one. Free
1330         it in more places as well.
1331
1332 2010-03-08  Rodrigo Kumpera  <rkumpera@novell.com>
1333
1334         * method-to-ir.c: Revert r153222 as it doesn't belong here.
1335
1336 Mon Mar 8 17:58:26 CET 2010 Paolo Molaro <lupus@ximian.com>
1337
1338         * mini.h, *.c: prepare for MonoMethodHeader to become a transient entity.
1339
1340 Mon Mar 8 17:35:26 CET 2010 Paolo Molaro <lupus@ximian.com>
1341
1342         * driver.c: report also other misc build options.
1343
1344 2010-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
1345
1346         * method-to-ir.c: Generate better code for the NewObject
1347         intrinsic.
1348         
1349 2010-03-07  Zoltan Varga  <vargaz@gmail.com>
1350
1351         * branch-opts.c (mono_if_conversion): Disable one of the cases when deadce
1352         is disabled. Fixes #582322.
1353
1354         * iltests.il.in: Add a test.
1355
1356 2010-03-06  Zoltan Varga  <vargaz@gmail.com>
1357
1358         * tramp-amd64.c (mono_arch_create_monitor_exit_trampoline_full): Delegate
1359         the handling of obj->synchronization == null and owner != current thread to
1360         mono_monitor_exit ().
1361
1362         * tramp-x86.c (mono_arch_create_monitor_exit_trampoline_full): Ditto.
1363
1364
1365 Sat Mar 6 18:14:15 CET 2010 Paolo Molaro <lupus@ximian.com>
1366
1367         * mini.c: change the way emulated opcode info is stored and save about
1368         4 KB of runtime memory.
1369
1370 2010-03-04  David S. Miller  <davem@davemloft.net>
1371
1372        * mini-sparc.h: Always use MONO_ARCH_USE_SIGACTION.  Linux kernels
1373        that don't provide the siginfo in the second signal handler argument
1374        are buggy, and this has been fixed for years.
1375        * mini.h (GET_CONTEXT): Remove __sparc__ special case.
1376        (SIG_HANDLER_SIGNATURE, SIG_HANDLER_PARMS): Likewise.
1377
1378 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
1379
1380         * aot-runtime.c (find_symbol): Fix a leak.
1381         (decode_patch): Ditto.
1382
1383 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
1384
1385         * mini.h (MONO_INST_IS_TEMP): Kill this unused define.
1386
1387 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
1388
1389         * mini.c (mono_resolve_patch_target): Fix an uninitialized variable.
1390
1391 Wed Mar 3 19:19:21 CET 2010 Paolo Molaro <lupus@ximian.com>
1392
1393         * method-to-ir.c: MONO_PROFILE_STRING_ALLOC is dead.
1394
1395 2010-03-03  Rodrigo Kumpera  <rkumpera@novell.com>
1396
1397         * method-to-ir.c (mono_method_to_ir): Don't create a runtime vtable
1398         to check for errors, it's enough to create the metadata open.
1399
1400         Fixes #562150
1401
1402 2010-03-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1403
1404         * trace.c|h:
1405         * mini-exceptions.c: Add support for printing stack traces when handling
1406         exceptions, and when printing exceptions thrown while tracing also print
1407         the exception message.
1408
1409 2010-03-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1410
1411         * trace.c: We need to parse exclude tokens ('-') before string tokens,
1412         since the exclude token is a valid string character.
1413
1414 2010-03-02  Levi Bard  <levi@unity3d.com>
1415
1416         * debugger-agent.c: Invalidate thread stacks on domain unload.
1417
1418 2010-03-02  Mark Probst  <mark.probst@gmail.com>
1419
1420         * method-to-ir.c: Emit dummy_use for stored reference after write
1421         barriers to make sure the object is pinned if the GC interrupts
1422         before the write barrier is done.
1423
1424 2010-03-02  Zoltan Varga  <vargaz@gmail.com>
1425
1426         * cpu-<ARCH>.md: dummy_use was missing src1:i.
1427
1428 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1429
1430         * debugger-agent.c: Add a log message printing the protocol version.
1431
1432 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1433
1434         * debugger-agent.c: Add a new command to communicate the protocol version used
1435         by the client. This could be used to allow newer runtimes to communicate with
1436         older clients.
1437
1438 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1439
1440         * debugger-agent.c (domain_commands): Add a new command to create a boxed value.
1441
1442 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1443
1444         * debugger-agent.c (type_commands): Fix the setting of fields with a reference
1445         type.
1446
1447 Mon Mar 1 15:20:44 CET 2010 Paolo Molaro <lupus@ximian.com>
1448
1449         * mini-arm.c: make the arm cpu arch configurable with the
1450         MONO_CPU_ARCH env var (for example: "armv4 thumb").
1451         Bug #584198.
1452
1453 Mon Mar 1 14:48:35 CET 2010 Paolo Molaro <lupus@ximian.com>
1454
1455         * mini.c, mini.h, driver.c: added the --jitmap option to enable
1456         support for the perf tool on Linux.
1457
1458 Mon Mar 1 14:43:55 CET 2010 Paolo Molaro <lupus@ximian.com>
1459
1460         * method-to-ir.c: make string.InsertenalSetChar() specialization
1461         effective.
1462
1463 2010-03-01  Robert Jordan  <robertj@gmx.net>
1464
1465         * Makefile.am: fix the non-static build.
1466
1467 2010-02-26  Zoltan Varga  <vargaz@gmail.com>
1468
1469         * mini-generic-sharing.c: Move the contents of ../metadata/generic-sharing.c
1470         here.
1471
1472 2010-02-26  Robert Jordan  <robertj@gmx.net>
1473
1474         * tasklets.c (continuation_store): Return from an error condition
1475         immediately.
1476
1477 2010-02-26  Martin Baulig  <martin@ximian.com>
1478
1479         * debug-debugger.c (MonoDebuggerInfo): Added `abort_runtime_invoke'.
1480
1481         * debug-mini.c
1482         (MonoDebuggerThreadInfo): Added `internal_flags'.
1483         (MonoDebuggerInternalThreadFlags): New enum.
1484         (_mono_debugger_throw_exception): Don't signal the debugger if a
1485         type abort was requested.
1486         (_mono_debugger_unhandled_exception): Likewise.
1487         (mono_debugger_abort_runtime_invoke): New method to abort an invocation.
1488         (mono_debugger_runtime_invoke): If the debugger requested a thread
1489         abort during the invocation, reset it here.
1490
1491 2010-02-26  Martin Baulig  <martin@ximian.com>
1492
1493         * debug-mini.c (MonoDebuggerThreadInfo): Use `MonoInternalThread *'
1494         instead of `MonoThread *'.
1495
1496 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
1497
1498         * aot-runtime.c (mono_aot_find_jit_info): Use a merge sort for sorting the
1499         code offsets table, as it is mostly sorted.
1500
1501 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
1502
1503         * debugger-agent.c (do_invoke_method): Fix invoking of static methods on vtypes.
1504         Fixes #582991.
1505
1506 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
1507
1508         * driver.c (mono_main): Get rid of mono_setup_vtable_in_class_init.
1509
1510 Wed Feb 24 15:58:03 CET 2010 Paolo Molaro <lupus@ximian.com>
1511
1512         * Makefile.am: build the new ABI version of the libmono library.
1513         * debugger-agent.c, mini.c: fix warnings with the new API.
1514         * jit.h: don't depend on glib.h being included.
1515
1516 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
1517
1518         * method-to-ir.c (mono_method_to_ir): Implement AOT support for fast TLS access.
1519
1520 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
1521
1522         * method-to-ir.c (mono_method_to_ir): Implement support for fast access to
1523         ThreadStatic variables.
1524
1525 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
1526
1527         * debugger-agent.c (notify_thread): Skip terminated threads, since their tls
1528         data is not freed yet. Fixes #582460.
1529
1530 2010-02-23  Zoltan Varga  <vargaz@gmail.com>
1531
1532         * debugger-agent.c: Add support for the caught/uncaught flags on exception
1533         event requests. Bump protocol minor version.
1534
1535 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
1536
1537         * decompose.c (mono_decompose_long_opts): Handle OP_LCONV_TO_OVF_I8 here too.
1538
1539 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
1540
1541         * decompose.c (mono_decompose_opcode): Handle OP_LCONV_TO_OVF_I8. Fixes
1542         #581950.
1543
1544         * iltests.il.in: Add a test.
1545
1546 2010-02-22  Rodrigo Kumpera  <rkumpera@novell.com>
1547
1548         * mini.c (inline_method): Check for loader errors.
1549
1550 2010-02-22  Rodrigo Kumpera  <rkumpera@novell.com>
1551
1552         * mini.c (mono_method_check_inlining): Use !mono_method_get_header_summary
1553         instead of mono_method_get_header as it doesn't decode locals
1554         so the called method can have unresolved dependencies that will only
1555         be satisfied after the current method is JIT'd.
1556
1557         Fixes #550968.
1558
1559 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
1560
1561         * basic.cs (test_0_div_opt): Speed this up a bit.
1562
1563 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
1564
1565         * mini-amd64.c: Fix DISABLE_JIT support after the latest changes.
1566
1567         * mini.c (mono_jit_create_remoting_trampoline): Call
1568         mono_create_specific_trampoline () instead of
1569         mono_arch_create_specific_trampoline ().
1570
1571         * mini-trampolines.c tramp-arm.c: Disable more stuff when DISABLE_JIT is set.
1572
1573 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
1574
1575         * unwind.c (mono_unwind_get_cie_program): New function, moved here from
1576         aot-compiler.c, so it can be found even if DISABLE_JIT is set.
1577
1578         * aot-compiler.c xdebug.c: Update callers of mono_arch_unwind_get_cie_program ().
1579
1580         * mini-amd64.c: Fix DISABLE_JIT support.
1581
1582 2010-02-20  Geoff Norton  <gnorton@novell.com>
1583
1584         * aot-runtime.c: Ensure we dont leak a held lock when unwinding exceptions.
1585
1586 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
1587
1588         * debugger-agent.c (mono_debugger_agent_handle_exception): Receive two contexts,
1589         one for the throw and one for the catch. Mark uncaught exceptions by a NULL
1590         CATCH_TXT. Send normal exception events for unhandled exceptions too.
1591         (mono_debugger_agent_handle_unhandled_exception): Remove this, merged into
1592         handle_exception.
1593
1594 2010-02-18  Zoltan Varga  <vargaz@gmail.com>
1595
1596         * exceptions-x86.c (mono_arch_get_restore_context): Changes this so it restores
1597         edx/ecx too. This is needed to support OP_SEQ_POINT.
1598
1599 2010-02-18  Zoltan Varga  <vargaz@gmail.com>
1600
1601         * exceptions-amd64.c (get_throw_trampoline): Add xdebug info.
1602
1603         * method-to-ir.c (mono_method_to_ir): Fix SIZEOF in dynamic methods.
1604
1605 2010-02-16  Zoltan Varga  <vargaz@gmail.com>
1606
1607         * mini-llvm.c aot-compiler.c aot-runtime.c unwind.c: Finish support
1608         LLVM+AOT+exceptions, not enabled yet.
1609
1610 2010-02-15  Zoltan Varga  <vargaz@gmail.com>
1611
1612         * mini.c (SIG_HANDLER_SIGNATURE): Fix the windows build.
1613
1614 2010-02-15  Zoltan Varga  <vargaz@gmail.com>
1615
1616         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Emit
1617         xdebug info for these.
1618
1619         * mini-trampolines.c (common_call_trampoline): Use mini_jit_info_table_find ()
1620         in a few places.
1621
1622         * mini.c (mini_get_vtable_trampoline): Make this take a 'slot_index' argument,
1623         not used yet.
1624
1625 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
1626
1627         * aot-compiler.c (load_profile_files): Update after the profiler changes.
1628
1629 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
1630
1631         * mini.c (mono_jit_compile_method_inner): Avoid passing icall wrappers to
1632         mono_profiler_method_end_jit, since the profiler has no way to process wrappers.
1633
1634         * aot-runtime.c mini.c: Resurrect the aot pagefault profiling stuff, it is useful
1635         for mtouch.
1636
1637 2010-02-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
1638
1639         * debugger-agent.c: handle incomplete reads and EINTR in
1640         recv()/send(). This could have been causing random
1641         disconnections.
1642
1643 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
1644
1645         * aot-runtime.c (decode_exception_debug_info): Fix aot support for sequence
1646         points.
1647
1648         * mini-arm.c (mono_arch_allocate_vars): Allocate the seq point related vars first
1649         so they have small offsets. Fixes #566311.
1650
1651 2010-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
1652
1653         * method-to-ir.c (mono_method_check_inlining): Check for loader errors.
1654
1655 2010-02-11  Zoltan Varga  <vargaz@gmail.com>
1656
1657         * mini-amd64.c: Remove the special casing of byref in a few places now that
1658         mini_type_get_underlying_type () handles it.
1659
1660         * mini-generic-sharing.c (mini_type_get_underlying_type): Handle byref as well
1661         by returning native int. Fixes #577984.
1662
1663 2010-02-11  Zoltan Varga  <vargaz@gmail.com>
1664
1665         * method-to-ir.c (handle_isinst): Factor out the is_complex_isinst check into
1666         a macro.
1667
1668         * mini-llvm.c (exception_cb): Put the clause index into the type info instead
1669         of putting the clause itself.
1670
1671         * mini-arm.c mini.c linear-scan.c: Disable more stuff when DISABLE_JIT is used.
1672
1673 2010-02-09  Zoltan Varga  <vargaz@gmail.com>
1674
1675         * unwind.c (mono_unwind_frame): Use read32 for reading a 32 bit value, since it
1676         might be unaligned.
1677
1678 2010-02-10  Geoff Norton  <gnorton@novell.com>
1679
1680         * aot-compiler.c: Make the number of IMT trampolines configurable as well.
1681
1682 2010-02-08  Zoltan Varga  <vargaz@gmail.com>
1683
1684         * aot-compiler.c (emit_code): Create the ut trampolines here, so they work for
1685         llvm methods too.
1686
1687         * aot-compiler.c (emit_code): Don't add the llvm label prefix to 'methods', since
1688         it is not an LLVM generated symbol.
1689
1690         * mini-llvm.c (emit_entry_bb): Fix the handling of simd types.
1691
1692         * method-to-ir.c (handle_castclass): Turn off the more efficient isinst/castclass
1693         implementation in gshared mode because it causes regressions.
1694
1695         * mini-trampolines.c: Add a stat for the number of calls to trampolines.
1696
1697         * image-writer.c (asm_writer_emit_global): Don't prepend the global prefix, it
1698         should be done by the caller.
1699
1700         * mini-llvm.c (mono_llvm_emit_method): Don't make the debug symbols global.
1701
1702         * aot-compiler.c (emit_code): Add the llvm label prefix before 'methods'.
1703
1704         * mini-exceptions.c (mini_jit_info_table_find): Search the root domain as well,
1705         since mono_jit_info_table_find () doesn't do it anymore.
1706
1707         * mini-generic-sharing.c debugger-agent.c: Call mini_jit_info_table_find ()
1708         instead of mono_jit_info_table_find ().
1709
1710 2010-02-07  Zoltan Varga  <vargaz@gmail.com>
1711
1712         * aot-compiler.c aot-runtime.c: Add support for MONO_WRAPPER_WRITE_BARRIER.
1713
1714         * aot-compiler.c (encode_method_ref): Update after the removal of
1715         mono_gc_get_managed_allocator_type ().
1716
1717         * method-to-ir.c (mono_method_to_ir): Place a seq point just before a RET.
1718         Fixes #564538.
1719
1720 2010-02-06  Zoltan Varga  <vargaz@gmail.com>
1721
1722         * method-to-ir.c (handle_castclass): Use the icall for classes with variant
1723         generic params as well.
1724         (handle_isinst): Ditto.
1725
1726         * method-to-ir.c: Make isninst/castclass checks in gshared code more efficient
1727         instead of always calling an icall.
1728
1729         * aot-compiler.c (emit_llvm_file): Take into account trampolines etc when
1730         computing the size of the got.
1731
1732         * aot-compiler.c (emit_code): Change the way the 'methods' symbol is emitted
1733         when using LLVM. Instead of emitting it as an LLVM method, emit it using
1734         the assembly directive '.set' so it points to the first LLVM emitted method.
1735
1736 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
1737
1738         * mini.c (mini_method_verify): Report the method which failed to verify.
1739
1740 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
1741
1742         * method-to-ir.c (mono_method_to_ir): Use the new basic block formation pass
1743         to avoid JIT'ng dead basic blocks. This is the same behavior as the
1744         runtime MS verifier.
1745
1746 2010-02-04  Zoltan Varga  <vargaz@gmail.com>
1747
1748         * debugger-agent.c (decode_value): Fix decoding of vtype instances. Fixes
1749         #561962.
1750
1751 2010-02-04  Zoltan Varga  <vargaz@gmail.com>
1752
1753         * mini-llvm.c: Init the jit module only when first JITting.
1754
1755         * aot-compiler.c (emit_plt): Fix the naming of plt entries of llvm+darwin.
1756
1757         * mini-llvm.c (get_plt_entry): Make the plt entries have hidden visibility.
1758
1759         * mini-llvm.c (mono_llvm_emit_aot_module): Remove the dummy got after it is
1760         replaced with the real got.
1761
1762         * debugger-agent.c (type_commands): Return the enumness if the type as well.
1763
1764         * image-writer.c: Reduce the amount of #ifdefs a bit.
1765
1766         * aot-compiler.c: Reduce the amount of #ifdefs. Add beginnings of support for
1767         llvm on darwin/arm.
1768
1769         * aot-compiler.c (mono_compile_assembly): Handle asmonly+llvm mode.
1770
1771         * mini-llvm.c (mono_llvm_emit_method): Don't make the 'type_info' symbols
1772         global.
1773
1774 2010-02-02  Zoltan Varga  <vargaz@gmail.com>
1775
1776         * mini-llvm.c (mono_llvm_emit_method): Add support for unaligned loads.
1777         (mono_llvm_emit_method): Fix unaligned stores too.
1778
1779         * mini-amd64.c (mono_arch_emit_prolog): Initialize lmf->rsp in the prolog too
1780         so async stack walks don't crash.
1781
1782 2010-02-02  Zoltan Varga  <vargaz@gmail.com>
1783
1784         * mini-trampolines.c (common_call_trampoline): Fix a problem where the callsite
1785         was not patched if the callee needed an rgctx trampoline.
1786
1787 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
1788
1789         * mini-ppc.c (mono_arch_get_global_int_regs): Reserve r29 for holding the
1790         vtable address in AOT code.
1791
1792 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
1793
1794         * mini-codegen.c: Remove support for CEE_ opcodes which cannot occur in
1795         MonoInst's.
1796
1797 Mon Feb 1 16:29:10 CET 2010 Paolo Molaro <lupus@ximian.com>
1798
1799         * genmdesc.pl: remove dependency on external cpp.
1800
1801 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
1802
1803         * method-to-ir.c (mini_emit_ldelema_1_ins): Avoid emitting an OP_SEXT_I4 when
1804         using LLVM, its not needed, and abcrem can't handle it.
1805
1806 Mon Feb 1 14:29:43 CET 2010 Paolo Molaro <lupus@ximian.com>
1807
1808         * genmdesc.c, genmdesc.pl, cpu-x86.md: introduced templates to make
1809         it easier to group instructions and reduce duplication.
1810
1811 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
1812
1813         * decompose.c: Move the array/soft float decompose routines here from
1814         method-to-ir.c.
1815
1816         * method-to-ir.c: Export a few functions so they can be used from decompose.c.
1817
1818 2010-01-31  Zoltan Varga  <vargaz@gmail.com>
1819
1820         * mini-llvm.c (mono_llvm_emit_method): Add a call to llvm.invariant.start
1821         to tell LLVM that the got is constant, not used yet.
1822
1823         * aot-compiler.c: Pass more optimization flags to llvm's 'opt'.
1824
1825 2010-01-30  Zoltan Varga  <vargaz@gmail.com>
1826
1827         * mini-ppc.c (mono_arch_emit_prolog): Fix full aot support for native to
1828         managed wrappers.
1829
1830 2010-01-30  Zoltan Varga  <vargaz@gmail.com>
1831
1832         * aot-compiler.c (add_wrappers): Commit the hack which generates
1833         native-to-managed wrappers for methods decorated with the MonoPInvokeCallback
1834         custom attribute.
1835
1836 2010-01-29  Zoltan Varga  <vargaz@gmail.com>
1837
1838         * mini.h (MONO_INST_FAULT): New instruction flag for loads which can cause
1839         a fault, only used by the LLVM backend.
1840
1841         * ir-emit.h: Add _FAULT variants of the LOAD_MEMBASE macros. Mark
1842         OP_CHECK_THIS with OP_IMPLICIT_EXCEPTION.
1843
1844         * method-to-ir.c: Use the new LOAD_MEMBASE_FAULT opcodes, get rid of the
1845         calls to MONO_EMIT_NULL_CHECK which is automatically done by the new macros.
1846
1847         * mini-llvm.c: Only generate volatile loads from load instructions which have
1848         the MONO_INST_FAULT flag set.
1849
1850 2010-01-29  Zoltan Varga  <vargaz@gmail.com>
1851
1852         * unwind.c (mono_unwind_decode_fde): Fix the decoding of the LSDA offset on
1853         64 bit platforms.
1854
1855 2010-01-28  Zoltan Varga  <vargaz@gmail.com>
1856
1857         * mini.c (mono_save_seq_point_info): Fix the handling of bblocks without
1858         sequence points. Fixes #571236.
1859
1860 2010-01-28  Zoltan Varga  <vargaz@gmail.com>
1861
1862         * debugger-agent.c (mono_debugger_agent_init): Call appdomain_unload at the
1863         end of the appdomain unload process, after assemblies have been unloaded.
1864         Fixes #574842.
1865
1866 2010-01-27  Zoltan Varga  <vargaz@gmail.com>
1867
1868         * abcremoval.c (process_block): Fix the if (region) check so abcrem actually
1869         works.
1870
1871         * mini-amd64.c: Make the soft debugger work on platforms without MAP_32BIT.
1872         Fixes #573988.
1873
1874 2010-01-26  Zoltan Varga  <vargaz@gmail.com>
1875
1876         * dwarfwriter.c (emit_type): Treat MONO_TYPE_PTR as 'I' not 'I4'.
1877
1878 2010-01-26  Geoff Norton  <gnorton@novell.com>
1879
1880         * aot-compiler.c: Fix a logic error introduced when guarding against enums
1881         with struct marshalability.
1882
1883 2010-01-24  Zoltan Varga  <vargaz@gmail.com>
1884
1885         * mini.c (mini_method_compile): Improve the processing MONO_VERBOSE_METHOD so
1886         it supports class names as well.
1887
1888         * mini.h (MonoCompile): Add a few flags to control JIT behavior which are
1889         needed by the GC map code.
1890
1891         * mini.c (mini_method_compile): Call a function in mini-gc.c to set the new
1892         flags if needed.
1893
1894         * method-to-ir.c (mono_method_to_ir): Emit initialization code for ref variables
1895         if cfg->init_ref_vars is set.
1896
1897         * liveness.c (optimize_initlocals): Disable the initlocals opt for ref vars if
1898         cfg->disable_initlocals_op_refs is set.
1899
1900         * method-to-ir.c (mono_spill_global_vars): Compute more precise live ranges
1901         using liveness info if cfg->compute_precise_live_ranges is set.
1902
1903         * mini-gc.c: Ongoing work. Improve logging and debugging support. Handle
1904         volatile variables correctly. Add comments about the live ranges. Not enabled
1905         yet.
1906
1907 2010-01-24  Zoltan Varga  <vargaz@gmail.com>
1908
1909         * mini.h (MonoDebugOptions): Add an option to init stack frames by writing
1910         0x2a into them in method prologs.
1911
1912         * mini-amd64.c (mono_arch_emit_prolog): Implement it.
1913
1914 2010-01-22  Zoltan Varga  <vargaz@gmail.com>
1915
1916         * mini-llvm-cpp.cpp: Remove uses of dynamic_cast, it no longer works with llvm
1917         classes, since llvm is compiled with -fno-rtti.
1918
1919         * mini.h (COMPILE_SOFT_FLOAT): New macro, similar to COMPILE_LLVM.
1920
1921         * method-to-ir.c ir-emit.h: Use if (COMPILE_SOFT_FLOAT) in a few places since
1922         llvm does not require it.
1923
1924         * aot-runtime.c (load_method): Print the full name of the last aot method.
1925
1926 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
1927
1928         * exceptions-amd64.c (mono_arch_notify_pending_exc): Avoid a crash if the
1929         thread has not fully started yet.
1930
1931 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
1932
1933         * aot-compiler.c (can_marshal_struct): Allow marshalling enums.
1934
1935 2010-01-21  Miguel de Icaza  <miguel@novell.com>
1936
1937         * driver.c: Do not abort if LLVM is not supported, print a
1938         warning and add the information to the Mono JIT information.
1939
1940 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
1941
1942         * ir-emit.h (MONO_EMIT_NULL_CHECK): Don't emit an OP_IMPLICIT_EXCEPTION when
1943         using explicit null checks.
1944
1945 2010-01-20  Zoltan Varga  <vargaz@gmail.com>
1946
1947         * xdebug.c: New file extracted from aot-compiler.c, containing the XDEBUG
1948         related code.
1949
1950         * aot-compiler.c (encode_method_ref): Use mono_marshal_wrapper_info_from_wrapper
1951         () in one place.
1952         (mono_aot_wrapper_name): Remove the special handling of delegate invoke wrappers,
1953         its no longer needed.
1954
1955         * method-to-ir.c (mono_method_to_ir): Fix a warning.
1956
1957         * exceptions-<ARCH>.c: Introduce a MONO_ARCH_HAVE_THROW_EXCEPTION_BY_NAME
1958         define for platforms still using it (s390). Get rid of the
1959         mono_arch_get_throw_exception_by_name () routines on all other platforms.
1960
1961         * exceptions-x86.c: Rework the throw trampolines so there is only one function
1962         which can generate throw/rethrow/corlib trampolines for llvm/not llvm code.
1963
1964         * exceptions-x86.c: Add LLVM specific throw trampolines which doesn't assume
1965         the caller pushed the arguments.
1966
1967         * mini-llvm.c: Enable throwing exceptions on x86.
1968
1969         * mini-posix.c (SIG_HANDLER_SIGNATURE): Avoid
1970         "Thread (nil) may have been prematurely finalized" messages if this is called
1971         on a thread not registered with the runtime.
1972
1973         * mini-exceptions.c (mono_handle_native_sigsegv): Ditto.
1974
1975 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
1976
1977         * jit-icalls.c (mono_array_new_3): New jit icall.
1978
1979         * aot-compiler.c aot-runtime.c: Add support for ElementAddr wrappers.
1980
1981         * arrays.cs: Add a test for 3 dimensional arrays.
1982
1983 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
1984
1985         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Emit xdebug info.
1986         (mono_arch_find_jit_info_ext): Disable the popping of arguments when LLVM is
1987         used.
1988
1989         * mini-llvm.c (emit_cond_system_exception): Abort when an implicit exception is
1990         thrown on x86.
1991
1992         * unwind.c (mono_unwind_decode_fde): Fix an assert on x86.
1993
1994         * mini-x86.h (MONO_CONTEXT_SET_LLVM_EXC_REG): Define this for x86.
1995
1996         * mini-llvm.c: Disable OP_THROW on x86, it doesn't work yet.
1997
1998 2010-01-18  Bill Holmes  <billholmes54@gmail.com>
1999
2000         * debugger-agent.c : Changing the PLATFORM_WIN32 preprocessor check to
2001           HOST_WIN32.  Also including winsock2. to define struct in_addr.
2002
2003         * mini-amd64.h : Changing the PLATFORM_WIN32 preprocessor check to HOST_WIN32.
2004
2005         * mini-x86.h : Changing the PLATFORM_WIN32 preprocessor check to HOST_WIN32.
2006
2007         Code is contributed under MIT/X11 license.
2008
2009 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
2010
2011         * mini.h (MonoCompile): Add 'disable_out_of_line_bblocks' flag.
2012
2013         * branch-opts.c (mono_optimize_branches): Honor the new flag.
2014
2015         * mini.c (mini_method_compile): Set the new flag when running under the
2016         debugger.
2017
2018 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
2019
2020         * mini-gc.c: Change the GC map to use a ref/noref/pin value instead of just
2021         a ref/noref value + a global pin flag, so parts of stack frames can still be
2022         precisely marked even if they include stuff which needs pinning. Improve logging.
2023         Fix many bugs. Not enabled yet.
2024
2025         * gc-test.cs: Add a few tests.
2026
2027         * liveness.c (mono_analyze_liveness): Make the debug output controllable by
2028         the normal -v options. Avoid propagating liveness information through bblocks
2029         which end with a NOT_REACHED opcode.
2030
2031         * mini.c (mono_jit_compile_method_inner): Avoid reading cfg->prof_options
2032         after cfg has been freed.
2033
2034 2010-01-17  Zoltan Varga  <vargaz@gmail.com>
2035
2036         * branch-opts.c (mono_branch_optimize_exception_target): Stop the optimization
2037         if a clause is skipped because it uses the exception object, since it could
2038         have caught the exception.
2039
2040         * exceptions.cs: Add a test.
2041
2042 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2043
2044        * mini-trampolines.c (mono_create_static_rgctx_trampoline): Add an assert.
2045
2046         * aot-runtime.c (mono_aot_get_method): Handle ftnptr's correctly for the
2047         ICollection<T> wrappers.
2048
2049 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2050
2051         * debugger-agent.c (decode_value): Fix the decoding of I/U/PTR.
2052
2053 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2054
2055         * mini-amd64.c (emit_call_body): Always use near calls when AOTing even if
2056         NOMAP32BIT or optimize_for_xen is set.
2057
2058 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2059
2060         * aot-compiler.c aot-runtime.c: Get rid of mono_aot_str_hash (), use
2061         mono_metadata_str_hash () instead.
2062
2063 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
2064
2065         * ir-emit.h (MONO_EMIT_NEW_ICOMPARE_IMM): Use sizeof (mgreg_t) instead of
2066         sizeof (void*).
2067
2068         * unwind.c (mono_unwind_frame): Use mgreg_t instead of gssize.
2069
2070 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
2071
2072         * ir-emit.h (MONO_EMIT_NEW_CHECK_THIS): Emit an explicit null check if the
2073         flag is set.
2074
2075         * mini-ppc.c (mono_arch_emit_exceptions): Compute the size of the exception
2076         throwing code correctly.
2077
2078         * mini.h (MONO_AOT_FILE_VERSION): Bump this because of the IMT hashing changes.
2079
2080 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
2081
2082         * aot-runtime.c (mono_aot_plt_resolve): Reenable the previous assert for
2083         ftnptrs created by us, handle RGCTX_FETCH correctly.
2084         (mono_aot_get_lazy_fetch_trampoline): Add an ftnptr.
2085
2086         * mini-trampolines.c (mono_create_generic_class_init_trampoline): Remove the
2087         ftnptr added by mono_aot_get_named_code ().
2088
2089 2010-01-14  Zoltan Varga  <vargaz@gmail.com>
2090
2091         * mini-arm.c: Fix a few LLVM problems.
2092
2093         * mini-llvm.c (simd_class_to_llvm_type): Fix compilation on !x86/amd64.
2094
2095 2010-01-13  Mark Probst  <mark.probst@gmail.com>
2096
2097         * method-to-ir.c (mini_emit_stobj): Use EMIT_NEW_CLASSCONST when
2098         AOT compiling.
2099
2100 Wed Jan 13 15:54:53 CET 2010 Paolo Molaro <lupus@ximian.com>
2101
2102         * jit.h, method-to-ir.c: added ability to set the policy for
2103         inserting breakpoints from the break IL instruction or the
2104         Debugger.Break () API call.
2105
2106 2010-01-13  Zoltan Varga  <vargaz@gmail.com>
2107
2108         * aot-runtime.c (load_aot_module): Add more comments to explain why referenced
2109         assemblies need to be eagerly loaded.
2110
2111 2010-01-12  Zoltan Varga  <vargaz@gmail.com>
2112
2113         * dwarfwriter.c (emit_line_number_info): Fix the eglib case so it doesn't crash.
2114
2115 2010-01-11  Zoltan Varga  <vargaz@gmail.com>
2116
2117         * debugger-agent.c (mono_debugger_agent_parse_options): Allow onthrow without
2118         an argument which matches any exception.
2119
2120 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
2121
2122         * method-to-ir.c (mono_emit_method_call_full): Avoid the virt->nonvirt
2123         optimization if the called method is gshared and marshalbyref, since gshared
2124         methods can' have wrappers. Fixes #569390.
2125
2126         * generics.cs: Add a test.
2127
2128 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
2129
2130         * mini-exceptions.c (mono_print_thread_dump_from_ctx): New helper function
2131         callable from gdb.
2132
2133 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
2134
2135         * mini.c (mono_print_method_from_ip): Fix the lookup of trampolines.
2136
2137 2010-01-09  Zoltan Varga  <vargaz@gmail.com>
2138
2139         * debugger-agent.c (transport_connect): comment out freeaddrinfo calls under win32,
2140         since it is not supported in win2000.
2141
2142 2010-01-08  Zoltan Varga  <vargaz@gmail.com>
2143
2144         * aot-runtime.c (load_image): Add a SET_ERROR argument to set the loader
2145         error if loading an assembly fails.
2146         (mono_aot_plt_resolve): Return NULL instead of asserting if loading fails.
2147
2148         * mini-trampolines.c (mono_aot_plt_trampoline): Throw a pending loader error
2149         if exists.
2150
2151         * aot-runtime.c (decode_exception_debug_info): Set jinfo->from_llvm for LLVM
2152         compiled methods.
2153
2154         * mini-llvm-cpp.cpp: Remove the unused ctx variable.
2155
2156         * mini-llvm.c (mono_llvm_emit_method): Add some comments about why aot+clauses
2157         is not supported yet.
2158
2159         * unwind.c (DW_EH_PE_absptr): Add more DW_EH_PE_ constants.
2160
2161 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2162
2163         * method-to-ir.c: All types with variant arguments must fallback to the
2164         slow path. This makes cast of variant delegates work.
2165
2166         * mini-trampolines.c (mono_get_vcall_slot_addr): Add new variance_used out
2167         argument that is set to TRUE is the returned vtable slot is for a variant
2168         interface. Changed a g_print + g_assert_not_reached to a g_error.
2169
2170         * mini-trampilines.c (common_call_trampoline): Handle variant interfaces in
2171         a similar fashion of generic virtual methods.
2172
2173 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2174
2175         * helpers.c (mono_disassemble_code): Fix a g_hash_table warning
2176         when cfg is null.
2177
2178         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Convert a given
2179         method using a variance aware function.
2180
2181         * mini-x86.c: Add support for dumping IMT thunks if DEBUG_IMT is defined.
2182
2183 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2184
2185         * method-to-ir.c (mono_method_to_ir): Casts to variant interfaces
2186         do an icall for now.
2187
2188 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
2189
2190         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add an ugly hack to fix #564695.
2191         If LLVM decides to set the code model to Large, reset it to Default.
2192
2193 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
2194
2195         * aot-compiler.c (mono_xdebug_flush): Export it so it is present in
2196         stripped binaries as well.
2197
2198 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
2199
2200         * mini-trampolines.c (common_call_trampoline): Add an rgctx trampoline if a shared
2201         method is called from LLVM compiled code, as that code can't pass an rgctx arg.
2202
2203         * mini-llvm.c (mono_llvm_emit_method): Enable calls to methods needing an rgctx
2204         reg.
2205
2206 2010-01-06  Zoltan Varga  <vargaz@gmail.com>
2207
2208         * mini.c (mini_method_compile): Extract the JIT info creation code into a
2209         separate function.
2210
2211         * mini-llvm.c (mono_llvm_emit_method): Pass the info in MonoExceptionClause
2212         as the type info to llvm.eh.selector.
2213         (exception_cb): Use the type info for filling out some fields of
2214         MonoJitExceptionInfo like the flags and the exception class. This is needed
2215         because the LLVM produced exception handling clauses might not match the original
2216         IL clauses, i.e. there might be more than one LLVM clause for one IL clause.
2217
2218         * unwind.c (mono_unwind_decode_fde): Extract the LSDA decoding code into a
2219         separate function. Add an extra argument which returns the type infos
2220         corresponding to the exception clauses.
2221
2222         * mini.c (mini_method_compile): Enable LLVM compilation of methods having
2223         exception handling clauses.
2224
2225 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2226
2227         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call
2228         mono_method_get_vtable_slot () instead of accessing imt_method->slot directly,
2229         to fix an AOT case.
2230
2231 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2232
2233         * mini.c (mono_compile_is_broken): Skip methods from serialization's
2234         internal assembly.
2235
2236 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2237
2238         * mini.c (mini_method_compile): Fix a few memory leaks introduced by the
2239         llvm code.
2240
2241 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2242
2243         * mini.c (mini_method_compile): Verify the method before calling
2244         mono_compile_create_vars as this might crash since it uses method
2245         information.
2246
2247         Fixes #560196.
2248
2249 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2250
2251         * method-to-ir.c (mono_method_to_ir): Avoid calling mono_class_vtable () in
2252         one case if AOTing, since the class might not be a concrete class.
2253
2254 2010-01-03  Zoltan Varga  <vargaz@gmail.com>
2255
2256         * mini-codegen.c abcremoval.c: Remove the duplicate g_slist_append_mempool
2257         functions which are now defined in mempool-internals.h.
2258
2259         * mini.c (mini_free_jit_domain_info): Free the seq point hash tables.
2260
2261         * mini-llvm.c (mono_llvm_emit_method): Handle OP_ABS.
2262
2263 2009-12-30  Rodrigo Kumpera  <rkumpera@novell.com>
2264
2265         * mini.c:
2266         * method-to.ir.c:
2267         * mini-*.c: Properly handle generic enums.
2268
2269         Fixes #566294
2270
2271 2009-12-28  Zoltan Varga  <vargaz@gmail.com>
2272
2273         * method-to-ir.c (mono_method_to_ir): Handle the failure of mono_class_vtable ()
2274         in a few more places.
2275
2276 2009-12-27  Zoltan Varga  <vargaz@gmail.com>
2277
2278         * aot-compiler.c (add_wrappers): Don't use dyn runtime invoke for methods with
2279         nullable parameters. Fixes #567351.
2280
2281 2009-12-26  Rodrigo Kumpera  <rkumpera@novell.com>
2282
2283         * mini-trampolines.c (common_call_trampoline): Add assert for NULL resolved generic method.
2284
2285 2009-12-26  Zoltan Varga  <vargaz@gmail.com>
2286
2287         * mini-trampolines.c: Use mono_arch_get_this_arg_from_call () to avoid the slow
2288         mono_get_generic_context_from_code () call.
2289
2290         * mini-<ARCH>.c: Get rid of mono_arch_find_this_arg (), it is no longer used.
2291
2292 2009-12-25  Zoltan Varga  <vargaz@gmail.com>
2293
2294         * aot-runtime.c (decode_klass_ref): Don't call mono_class_init (), its not
2295         needed.
2296
2297 2009-12-24  Sebastien Pouliot  <sebastien@ximian.com>
2298
2299         * method-to-ir.c (mono_method_to_ir): Avoid SIGSEGV when
2300         mono_method_get_signature returns NULL. Fix #567084
2301
2302 2009-12-25  Zoltan Varga  <vargaz@gmail.com>
2303
2304         * aot-runtime.c (find_extra_method): Call mono_aot_wrapper_name only once,
2305         instead of once for each module.
2306
2307 2009-12-22  Zoltan Varga  <vargaz@gmail.com>
2308
2309         * debugger-agent.c (ss_start): Implement step over for the last sequence
2310         point in methods.
2311
2312         * mini.c (mono_save_seq_point_info): Don't link sequence points which don't
2313         have the STEP_LOC flag set.
2314
2315         * aot-runtime.c (decode_klass_ref): Avoid a crash if a decode_klass_ref () call
2316         fails. Fixes #566689.
2317
2318 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
2319
2320         * mini.c (mono_add_seq_point): New helper function.
2321         (mono_save_seq_point_info): New function to save sequence point info, extracted
2322         from mini_method_compile ().
2323
2324         * mini-<ARCH>.c: Call mono_add_seq_point to remember sequence points.
2325
2326         * mini.h (MonoSeqPointInfo): New structure containing information about
2327         the sequence points of a JITted method.
2328         (MonoBasicBlock): Add 'seq_points' and 'last_seq_point' fields. Remove unused
2329         'bucket' field.
2330
2331         * mini.c debugger-agent.c aot-compiler.c aot-runtime.c: Change the way sequence
2332         point information is stored, use a MonoSeqPointInfo structure instead of a
2333         GPtrArray. For each seq point, compute a list of successor seq points.
2334
2335         * debugger-agent.c: Use the successor list to implement step-over more
2336         efficiently: instead of single stepping until a different line/IL offset is
2337         reached, place breakpoints into all successor seq points.
2338
2339         * mini.h: Bump AOT file format version.
2340
2341 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
2342
2343         * Makefile.am (AM_CFLAGS): Include LLVM_CFLAGS.
2344
2345         * mini-llvm.c: Avoid defining the __STDC_... macros if already defined.
2346
2347 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
2348
2349         * exceptions-ppc.c (mono_ppc_set_func_into_sigctx): Fix the cross-compiler
2350         build.
2351
2352 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
2353
2354         * mini-x86.c (mono_arch_get_argument_info): Allocate memory for CallInfo using
2355         alloca as g_malloc is not signal safe.
2356
2357 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
2358
2359         * tramp-x86.c (mono_arch_patch_callsite): Fix the call to
2360         VALGRIND_DISCARD_TRANSLATIONS.
2361
2362         * *.c: Include mono/utils/memcheck.h, and remove #ifdef HAVE_VALGRIND_MEMCHECK_H
2363         checks, they are no longer needed.
2364
2365         * exceptions-ppc.c (mono_ppc_set_func_into_sigctx): New helper function to set
2366         a function into a sigctx which can handle function pointers.
2367
2368         * mini-ppc.c: Implement soft debugger support on ppc64.
2369
2370         * mini-ppc.c: Implement soft debugger support.
2371
2372 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
2373
2374         * mini-llvm.c: Handle OP_LADD_OVF_UN. Place all alloca's into the entry bb.
2375
2376 2009-12-17  Marek Habersack  <mhabersack@novell.com>
2377
2378         * mini.c (mono_get_runtime_build_info): include Mono version in
2379         the returned value.
2380
2381         * driver.c (mono_main): VERSION is now included in the string
2382         returned from mono_get_runtime_build_info()
2383
2384 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
2385
2386         * method-to-ir.c (mono_method_to_ir): Add support for CALLI with unmanaged
2387         signatures. Fixes #565143.
2388
2389         * jit-icalls.c (mono_get_native_calli_wrapper): New JIT icall.
2390
2391 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
2392
2393         * aot-compiler.c (arch_emit_autoreg): Align code to 4 in the ppc case.
2394
2395 2009-12-16 Rodrigo Kumpera  <rkumpera@novell.com>
2396
2397         * mini-x86.h: Forgot to add a 0x to MONO_ARCH_MAX_FRAME_SIZE define
2398         making max stack 10x smaller.
2399
2400 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
2401
2402         * mini.c (mono_resolve_patch_target): Comment out an assert which could be hit.
2403
2404 2009-12-15 Rodrigo Kumpera  <rkumpera@novell.com>
2405
2406         * method-to-ir.c (mini_emit_memcpy): Assert if size is too big.
2407
2408 2009-12-15 Rodrigo Kumpera  <rkumpera@novell.com>
2409
2410         * mini-x86.c (mono_arch_allocate_vars): Fail compilation if the frame size is
2411         bigger than MONO_ARCH_MAX_FRAME_SIZE.
2412
2413         * mini-x86.c (mono_arch_emit_prolog): Handle huge frames.
2414
2415         * mini-x86.h: Define MONO_ARCH_MAX_FRAME_SIZE to be 1Mb.
2416
2417         * mini-amd64.c / mini-amd64.h: Same fixes as of above.
2418
2419         * mini.c (mini_method_compile): Check if mono_arch_allocate_vars failed
2420         the compilation.
2421
2422 2009-12-14  Miguel de Icaza  <miguel@novell.com>
2423
2424         * method-to-ir.c (mono_method_to_ir): CEE_UNUSUED opcodes now
2425         raise an invalid program exception.   
2426
2427         For other opcodes that we might not handle use a g_warning and
2428         raise the exception.   Beats termination.
2429
2430         Fixes #561724
2431
2432 2009-12-14  Zoltan Varga  <vargaz@gmail.com>
2433
2434         * method-to-ir.c (mono_emit_rgctx_method_call_full): Fix a warning.
2435
2436         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix the LLVM support
2437         by merging the LLVM and !MAP_32BIT cases.
2438
2439 2009-12-13 Jonathan Chambers <joncham@gmail.com>
2440
2441         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Handle a NULL
2442         sigctx being passed in, as we have no CONTEXT available in the APC.
2443
2444         (mono_debugger_agent_cleanup): Use explicit cond wait implementation
2445         for now.
2446
2447         Code contributed under MIT/X11 license.
2448
2449 2009-12-13  Zoltan Varga  <vargaz@gmail.com>
2450
2451         * method-to-ir.c mini-llvm.c: Fix support for monitor enter/exit trampolines
2452         in the LLVM backend on AMD64.
2453
2454         * aot-runtime.c (decode_eh_frame): Initialize the clauses from the info in the
2455         FDE.
2456
2457         * unwind.c (mono_unwind_decode_fde): Implement decoding of a couple more formats.
2458
2459         * mini-llvm.c: Export mono_personality for AOT.
2460
2461         * mini.c (mini_method_compile): Fix some problems with llvm+aot+clauses.
2462
2463         * mini-ops.h (OP_IMPLICIT_EXCEPTION): New opcode marking the place where an
2464         implicit exception can occur.
2465
2466         * ir-emit.h (MONO_EMIT_NEW_IMPLICIT_EXCEPTION): New macro to emit an
2467         OP_IMPLICIT_EXCEPTION instruction.
2468
2469         * ir-emit.h (MONO_EMIT_NEW_CHECK_THIS): New macro.
2470
2471         * method-to-ir.c: Use MONO_EMIT_NEW_CHECK_THIS in a few places.
2472
2473         * mini-llvm.c: Handle OP_IMPLICIT_EXCEPTION by disabling llvm if it occurs
2474         inside a protected block.
2475
2476         * mini-llvm.c: Revert the last change, the signature of monitor entry/exit
2477         trampolines doesn't include the argument.
2478
2479         * mini-llvm.c (mono_llvm_emit_method): Enable calls to monitor entry/exit
2480         trampolines on amd64.
2481
2482         * mini-amd64.h (MONO_ARCH_MONITOR_OBJECT_REG): Use MONO_AMD64_ARG_REG1 instead
2483         of RDI.
2484
2485         * mini.c (mini_method_compile): Add some comments as to why LLVM is currently
2486         disabled for methods with clauses.
2487
2488         * mini-llvm.c: Enable support for catch clauses.
2489
2490         * mini-exceptions.c (mono_resume_unwind): New function to resume unwinding at the
2491         end of an LLVM compiled finally clause.
2492         (mono_handle_exception_internal): Save the exception handling state in TLS
2493         before calling an LLVM compiled finally clause, so mono_resume_unwind () can
2494         resume unwinding from that point.
2495
2496         * unwind.c (mono_unwind_get_ops_from_fde): Rename this to
2497         mono_unwind_decode_fde, decode the Language Specific Data Area (LSDA) too,
2498         to obtain the addresses of the exception handling regions.
2499
2500         * mini-llvm.c: Add beginnings of support for exception handling, currently only
2501         finally clauses are supported.
2502
2503         * mini.c (mini_method_compile): Add support for LLVM code with exception
2504         handlers.
2505
2506 2009-12-12  Zoltan Varga  <vargaz@gmail.com>
2507
2508         * mini-llvm.c (mono_llvm_emit_method): Allocate the 'pindexes' array with the
2509         proper size.
2510
2511 2009-12-12  Zoltan Varga  <vargaz@gmail.com>
2512
2513         * debugger-agent.c: Encode the this argument of vtype methods as a struct, not
2514         as a primitive type.
2515
2516 2009-12-11  Zoltan Varga  <vargaz@gmail.com>
2517
2518         * driver.c: Applied patch from Matt McClellan (matt@mc-c.net). Add a check
2519         for 2 parameter sched_setaffinity in older glibc versions. Fixes
2520         #564000.
2521
2522 2009-12-11  Marek Habersack  <mhabersack@novell.com>
2523
2524         * method-to-ir.c (mini_redirect_call): do not redirect the
2525         InternalAllocateStr internal call if string profiling is enabled.
2526
2527 2009-12-10  Zoltan Varga  <vargaz@gmail.com>
2528
2529         * aot-compiler.c (add_wrappers): Avoid generating synchronized wrappers for
2530         generic methods.
2531
2532         * unwind.h: Rename this to mini-unwind.h to avoid conflicts with the gcc
2533         unwind.h header file.
2534
2535         * tramp-x86.c (mono_arch_patch_callsite): Patch the code when using valgrind,
2536         newer valgrind versions seems to handle this fine.
2537
2538 2009-12-09  Zoltan Varga  <vargaz@gmail.com>
2539
2540         * debugger-agent.c (start_runtime_invoke): Fix a crash if this is called
2541         on the debugger thread.
2542
2543 2009-12-08  Zoltan Varga  <vargaz@gmail.com>
2544
2545         * mini-llvm.c (mono_llvm_emit_method): Add more SIMD opcodes.
2546
2547         * mini.c (mono_print_method_from_ip): Fix the lookup of trampolines.
2548
2549         * mini-codegen.c (mono_local_regalloc): Allow non-call opcodes with cloc:c.
2550
2551         * cpu-<ARCH>.md: Make call_handler clob:c.
2552
2553         * mini.c: Reenable SSA for methods with clauses.
2554
2555         * mini.c (mini_method_compile): Disable SSA for now for methods with clauses,
2556         as it causes failures on x86.
2557
2558 2009-12-08  Sebastien Pouliot  <sebastien@ximian.com>
2559
2560         * driver.c: Fail gracefully with --compile-all if mono_method_signature
2561         returns NULL (e.g. a bad assembly).
2562
2563 2009-12-08  Geoff Norton  <gnorton@novell.com>
2564
2565         * debugger-agent.c:  Refactor the mono_runtime_invoke guarding against
2566         stepping out into native code.  There were issues with nested invokes
2567         like .cctors.
2568
2569 2009-12-07  Zoltan Varga  <vargaz@gmail.com>
2570
2571         * mini.c (mini_method_compile): Do the disable_llvm checks early
2572         and avoid the LLVM compile pass if the checks fail.
2573
2574         * mini.c ssa.c abcremoval.c: Enable SSA for methods with exception clauses.
2575
2576         * mini-llvm.c: Put our methods/globals into the 'llvm.used' array, so the
2577         LLVM optimizations don't try to remove them.
2578
2579         * aot-compiler.c (emit_llvm_file): Save the result of opt into a
2580         different file so the original remains.
2581
2582 2009-12-06  Zoltan Varga  <vargaz@gmail.com>
2583
2584         * mini-llvm.c mini.c: Fix alignment issues with SIMD vars.
2585
2586         * aot-runtime.c (decode_arm_exidx): Handle most descriptors created by gas.
2587
2588         * aot-runtime.c (decode_arm_exidx): Refactor this into two functions, add
2589         support for non-inline unwind descriptors.
2590
2591 2009-12-07  Geoff Norton  <gnorton@novell.com>
2592
2593         * debugger-agent.c:  Darwin can colesce signals, so we need to handle
2594         the interrupt_count slightly differently.  Native threads were never
2595         marked as resumed.
2596
2597 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
2598
2599         * aot-runtime.c (decode_arm_exidx): New function to initialize a MonoJitInfo
2600         based on the contents of the ARM .exidx section. Not yet used since llvm doesn't
2601         yet generate this info.
2602
2603         * mini-llvm.c: Fix the conversion of call results if they are unsigned.
2604
2605         * debugger-agent.c (buffer_add_value): Treat I/U as a valuetype, so the
2606         client can distinguish between intptrs and longs.
2607
2608 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
2609
2610         * aot-compiler.c (emit_trampoline): Emit the trampoline info into the global
2611         blob.
2612
2613         * aot-runtime.c (load_function): Update after the change above.
2614
2615         * mini.h: Bump AOT file format version.
2616
2617         * method-to-ir.c (mono_method_to_ir): Disallow the delegate optimization
2618         if the delegate class is dynamic.
2619
2620         * method-to-ir.c (handle_delegate_ctor): Allow the method_code optimization
2621         in gshared code too using the new rgctx info type
2622         MONO_RGCTX_INFO_METHOD_DELEGATE_CODE.
2623
2624 2009-12-04  Geoff Norton  <gnorton@novell.com>
2625
2626         * debugger-agent.c: When doing a func-eval invoke on a suspended runtime,
2627         we need to track the original suspend count so the thread properly
2628         wakes up in resume_thread.
2629
2630 2009-12-04  Zoltan Varga  <vargaz@gmail.com>
2631
2632         * method-to-ir.c (handle_delegate_ctor): Add support for using this from gshared
2633         code.
2634
2635         * generics.cs: Add a test.
2636
2637         * method-to-ir.c (emit_get_rgctx_method): Make this work even if context_used
2638         is 0. Simplify a lot of code using this.
2639
2640         * mini-trampolines.c (mono_delegate_trampoline): Call
2641         mono_create_static_rgctx_trampoline () before saving the final address in
2642         delegate->method_code, to avoid calling it each time a delegate is first called.
2643
2644         * method-to-ir.c (mono_method_to_ir): Allow fast delegate creation for methods
2645         which need static rgctx trampolines.
2646
2647         * mini-trampolines.c (mono_create_static_rgctx_trampoline): Use a cache
2648         keyed on the method+addr pair, since addr could be either the method addr or
2649         an unbox trampoline in the AOT case. Fixes #560246.
2650
2651 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2652
2653         * mini.c (mini_method_compile): Call handle_exception_clauses () in the same
2654         place it was called before too.
2655
2656 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2657
2658         * mini.c (mono_jit_runtime_invoke): Avoid the call to mono_class_setup_vtable ()
2659         if no security manager is present, to speed up the AOT case. Call
2660         mono_class_vtable () full with raise_on_error == TRUE instead.
2661
2662 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2663
2664         * mini.c (mini_method_compile): Call handle_exception_clauses earlier so
2665         the local optimization passes can take its result into account. Fixes
2666         #559876.
2667
2668         * exceptions.cs: Add a test.
2669
2670 2009-01-24  Steven Munroe  <munroesj@us.ibm.com>
2671
2672         This patch is contributed under the terms of the MIT/X11 license
2673
2674         * cpu-ppc64.md (load_memindex): Add loadi8_memindex.
2675
2676 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2677
2678         * mini.h (MonoInst): Remove unused 'ssa_op' field.
2679
2680         * debugger-agent.c: Rework the handling of stack traces of running threads to
2681         avoid crashes if compute_frames () tries to walk the stack of running thread.
2682
2683         * mini.c (mono_print_method_from_ip): Use mini_jit_info_table_find.
2684
2685         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): Set frame->lmf.
2686
2687         * mini.h (StackFrameInfo): Add an 'lmf' field.
2688
2689 2009-12-02  Zoltan Varga  <vargaz@gmail.com>
2690
2691         * debugger-agent.c (suspend_current): Always set really_suspended.
2692
2693         * debugger-agent.c (clear_event_request): Clear method entry/exit requests too.
2694
2695         * exceptions-x86.c (mono_arch_get_restore_context): Restore EAX too.
2696
2697 2009-12-01  Zoltan Varga  <vargaz@gmail.com>
2698
2699         * debugger-agent.c (vm_commands): Don't allow invokes on threads which are not
2700         really suspended.
2701
2702 2009-12-01  Zoltan Varga  <vargaz@gmail.com>
2703
2704         * cpu-ppc64.md (store_memindex): Add storei8_memindex.
2705
2706 2009-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
2707
2708         * mini-trampolines.c: Fix MSVC build.
2709
2710 2009-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
2711
2712         * mini-trampolines.c: Check for mono_method_get_vtable_slot failures.
2713
2714 2009-11-30  Zoltan Varga  <vargaz@gmail.com>
2715
2716         * mini-arm.c (mono_arch_lowering_pass): Fix an assert which is hit when
2717         the instruction following an OP_FCOMPARE is optimized away.
2718
2719 2009-11-30  Zoltan Varga  <vargaz@gmail.com>
2720
2721         * aot-compiler.c (arch_emit_autoreg): Extract the auto-registration code from
2722         emit_autoreg () into this arch-specific function.
2723
2724         * aot-compiler.c (emit_exception_debug_info): Don't emit the length of the
2725         code, it is no longer needed.
2726
2727         * aot-runtime.c (decode_exception_debug_info): Don't read the code length.
2728
2729         * mini.h: Bump AOT file format version.
2730
2731         * aot-runtime.c (mono_aot_find_jit_info): Compute the length of the method
2732         using the sorted_code_offsets array, instead of reading it from the
2733         exception debug info.
2734         (load_method): Call mono_aot_find_jit_info instead of
2735         decode_exception_debug_info ().
2736
2737         * aot-compiler.c (emit_exception_debug_info): Emit whenever the method was
2738         LLVM compiled as a flag.
2739
2740 2009-11-29  Zoltan Varga  <vargaz@gmail.com>
2741
2742         * debugger-agent.c (resume_thread): Fix a warning.
2743
2744         * aot-compiler.c: Add an option to set the number of static rgctx trampolines
2745         generated.
2746
2747 2009-11-28  Zoltan Varga  <vargaz@gmail.com>
2748
2749         * aot-compiler.c aot-runtime.c: Get rid of a few global symbols, move their
2750         contents to MonoAotFileInfo.
2751
2752 2009-11-27  Zoltan Varga  <vargaz@gmail.com>
2753
2754         * aot-compiler.c aot-runtime.c: Reorganize the AOT file format once again.
2755         Put all binary data into a giant blob, similarly to the way .net assemblies
2756         store binary data. Emit offset tables in a compact form to reduce their size.
2757
2758         * mini.h: Bump AOT file format version.
2759
2760         * aot-compiler.c (emit_globals_table): Use temp_prefix instead of .L in a few
2761         places.
2762
2763         * aot-compiler.c (emit_globals_table): Emit a hash table for the globals, to
2764         avoid linear searches at runtime.
2765
2766         * aot-runtime.c (find_symbol): Update this to use the hash.
2767
2768         * mini.h: Bump AOT file format version.
2769
2770 2009-11-26  Zoltan Varga  <vargaz@gmail.com>
2771
2772         * aot-compiler.c (emit_klass_info): Save whenever the class has a generic
2773         container.
2774
2775         * aot-runtime.c (decode_cached_class_info): Set the is_generic_container field
2776         too.
2777
2778         * aot-compiler.c (mono_compile_assembly): Add a 'stats' option to print out
2779         the distribution of got slot types.
2780
2781         * mini.h (MonoDebugOptions): Add 'explicit_null_checks' option.
2782
2783         * method-to-ir.c: Add support for generating explicit null checks.
2784
2785 2009-11-25  Zoltan Varga  <vargaz@gmail.com>
2786
2787         * debugger-agent.c (vm_commands): Implement EXIT by invoking Environment.Exit ()
2788         on a random thread if possible.
2789
2790         * aot-runtime.c (mono_aot_plt_resolve): Clean up the handling of function
2791         descriptors a bit, add comments, handle RGCTX_FETCH/GENERIC_CLASS_INIT_TRAMPOLINE
2792         correctly.
2793
2794         * exceptions-ppc.c (mono_arch_find_jit_info_ext): Use mgreg_t as the type of
2795         regs. Pass the real size of the regs array to mono_unwind_frame ().
2796
2797         * unwind.c (mono_unwind_frame): Remove an incorrect assert, add more correct
2798         ones instead.
2799
2800 2009-11-24  Geoff Norton  <gnorton@novell.com>
2801
2802         * mini-darwin.c: Work around apple bug rdar://7209349  See
2803         http://openradar.appspot.com/7209349 for details.  Synopsis,
2804         CoreFoundation SIGTRAP's if you dlopen it off the main thread if its
2805         never been initialized before.
2806
2807 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
2808
2809         * tramp-arm.c: Use blx instead of mov pc, reg to improve support for thumb.
2810
2811         * mini-arm.c (mono_arm_thumb_supported): New helper function.
2812
2813 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
2814
2815         * cfold.c (mono_constant_fold_ins): Fix a problem in the previous change,
2816         OP_SHL_IMM is not 32 bit.
2817
2818 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
2819
2820         * aot-compiler.c (encode_patch): Fix the encoding of R8 on big-endian systems.
2821
2822 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
2823
2824         * aot-compiler.c: Avoid infinite recursion when generic virtual recursion is
2825         encountered.
2826
2827         * debugger-agent.c (resume_vm): Signal the suspend_cond even if suspend_count
2828         > 0 since some threads can resume if their resume_count is > 0.
2829         (invoke_method): Avoid reading freed memory.
2830
2831         * debugger-agent.c (process_suspend): Extract the suspend code from
2832         process_single_step_inner () to a separate function. Rework the code to prevent
2833         races between this function and thread interrupts.
2834
2835         * debugger-agent.c (suspend_current): Check the resume_count field instead
2836         of resume_one so suspends+resumes during single threaded invokes work
2837         correctly.
2838
2839 2009-11-23  Zoltan Varga  <vargaz@gmail.com>
2840
2841         * aot-compiler.c (emit_llvm_file): Enable some llvm optimizations which seem
2842         to make the generated code smaller.
2843
2844         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Add a code
2845         sequence generated by recent LLVM versions.
2846
2847         * mini-llvm.c: Add support for a few simple cases which weren't supported
2848         before.
2849
2850         * mini-trampolines.c (mono_magic_trampoline): Don't call
2851         mono_arch_get_vcall_slot () when llvm is enabled.
2852
2853         * aot-compiler.c (emit_llvm_file): Add code to run the 'opt' llvm tool.
2854
2855         * mini-trampolines.c (mono_magic_trampoline): Extract the bulk of this function
2856         into a new function called common_call_trampoline () which is used by the
2857         llvm vcall trampoline as well.
2858
2859         * debugger-agent.c: Implement single threaded invokes.
2860
2861         * debugger-agent.c: Revert change which broke the agent on linux.
2862
2863         * method-to-ir.c (inline_method): Prevent infinite recursion. Fixes
2864         #557606.
2865
2866         * generics.cs: Add a test.
2867
2868 2009-11-22  Zoltan Varga  <vargaz@gmail.com>
2869
2870         * debugger-agent.c: Fix the cygwin build.
2871
2872 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
2873
2874         * cprop.c: Remove this unused file.
2875
2876 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
2877
2878         * cfold.c (mono_constant_fold_ins): Fix constant folding of shr_imm. Fixes
2879         #557262.
2880
2881         * basic.cs: Add a test.
2882
2883 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
2884
2885         * method-to-ir.c (mono_method_to_ir): Use mono_use_llvm instead of ENABLE_LLVM
2886         in one more place.
2887
2888 2009-11-20  Zoltan Varga  <vargaz@gmail.com>
2889
2890         * mini.c mini-trampolines.c driver.c: Add a 'mono_use_llvm' flag to control
2891         whenever the runtime uses LLVM code. Add a '--llvm' command line option to set
2892         it. Use this flag to control llvm related code paths instead of #ifdef
2893         ENABLE_LLVM, so a runtime configured without --enable-llvm can use LLVM compiled
2894         AOT code.
2895
2896         * aot-runtime.c aot-compiler.c: Add a 'flag' field to MonoAotFileInfo.
2897
2898         * mini.h: Bump AOT file format version.
2899
2900         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline_full): These
2901         receive their argument in MONO_ARCH_VTABLE_REG, not in the first argument reg.
2902
2903         * debugger-agent.c (create_event_list): Fix a crash if an empty assembly list
2904         was used as an assembly filter.
2905
2906 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
2907
2908         * unwind.c: Fix support for ppc.
2909
2910         * exceptions-ppc.c (mono_arch_find_jit_info): Change this to use dwarf frame
2911         unwind info. Change to the mono_arch_find_jit_info_ext () interface.
2912
2913 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
2914
2915         * mini-ppc.c (mono_arch_emit_prolog): Fix a copy-paste error to fix the ppc64
2916         port.
2917         (mono_arch_cpu_init): Don't set cpu_hw_flags to 0 at the end, this was somehow
2918         added by the ps3 changes.
2919
2920 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
2921
2922         * mini-gc.c: Resurrect this, so at least it compiles.
2923
2924         * debugger-agent.c (assembly_commands): Implement GET_NAME command.
2925
2926 2009-11-18  Zoltan Varga  <vargaz@gmail.com>
2927
2928         * debugger-agent.c (mono_debugger_agent_handle_exception): Pass a MonoJitInfo to
2929         create_event_list () so assembly filters can be used.
2930
2931         * exceptions-ppc.c (mono_arch_find_jit_info): Fix the restoration of registers
2932         from the LMF.
2933
2934 2009-11-17  Zoltan Varga  <vargaz@gmail.com>
2935
2936         * debugger-agent.c (mono_debugger_agent_breakpoint_hit): Fix a warning.
2937         (mono_debugger_agent_thread_interrupt): Make this return FALSE if the agent
2938         is disabled.
2939
2940         * aot-compiler.c (add_generic_instances): Emit instances of common generic
2941         classes for char/bool too.
2942
2943         * debugger-agent.c (DebuggerTlsData): Honor the DISABLE_SOFT_DEBUG option.
2944
2945         * debugger-agent.c (DebuggerTlsData): Add a 'really_suspended' flag, not yet
2946         used.
2947
2948         * debugger-agent.c: Add some definitions to make backporting to 2.6 easier.
2949         Fix warnings.
2950
2951 2009-11-15  Andreas Faerber  <andreas.faerber@web.de>
2952
2953         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Signature fix.
2954         
2955         Code contributed under MIT/X11 license.
2956
2957 2009-11-14  Zoltan Varga  <vargaz@gmail.com>
2958
2959         (mono_debugger_agent_thread_interrupt): Save the context so stacktraces for
2960         threads in native code work.
2961
2962         * debugger-agent.c: Pass the 'flags' argument to VM_INVOKE_METHOD earlier in
2963         the parameter list, so it can be acted upon by vm_commands (). Bump protocol
2964         version.
2965
2966 2009-11-13 Jonathan Chambers <joncham@gmail.com>
2967
2968         * debugger-agent.c: Implementation for Windows platform.
2969
2970         * mini-x86.c: Add support for Windows. Use mono-* synchronization
2971         primitives. Use SEH to implement breakpoints and single stepping.
2972
2973         * mini-x86.h: Enable soft debugger on Windows.
2974
2975         Code contributed under MIT/X11 license.
2976
2977 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
2978
2979         * mini-amd64.c (emit_call_body): Disable usage of near calls when running
2980         under XEN. Fixes #522894.
2981
2982         * patch-info.h: Add LLVM_IMT_TRAMPOLINE.
2983
2984         * mini-llvm.c aot-compiler.c aot-runtime.c mini.c: Add support for making
2985         interface calls in LLVM AOT code.
2986
2987         * aot-compiler.c mini-llvm.c: Abort llvm compilation if a non-encodable patch
2988         is found.
2989
2990         * mini-llvm.c: Add support for OP_VPHI.
2991
2992         * objects.cs: Add a test.
2993
2994 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
2995
2996         * debugger-agent.c (mono_debugger_agent_single_step_event): Avoid a crash if
2997         this is called on the debugger thread.
2998
2999 2009-11-12  Zoltan Varga  <vargaz@gmail.com>
3000
3001         * mini-llvm.c: Add soft-float support.
3002
3003         * method-to-ir.c (mono_decompose_soft_float): Restart after decomposing an
3004         FCALL which returns an R4.
3005
3006         * driver.c (mono_main): Add a missing '\n'.
3007
3008         * mini-trampolines.c (mono_create_llvm_imt_trampoline): Fix the build on
3009         platforms which doesn't support the LLVM IMT trampoline.
3010
3011 2009-11-11  Zoltan Varga  <vargaz@gmail.com>
3012
3013         * mini-llvm.c (mono_llvm_emit_method): Fix LOCALLOC.
3014
3015         * mini-llvm-cpp.cpp: Update to latest LLVM SVN.
3016
3017         * mini-llvm.c (mono_llvm_emit_method): Avoid creating plt entries for
3018         virtual calls.
3019
3020         * aot-runtime.c: Don't define HAVE_DL_ITERATE_PHDR, configure now does that.
3021
3022 2009-11-10  Zoltan Varga  <vargaz@gmail.com>
3023
3024         * aot-compiler.c aot-runtime.c: Change how mono_arch_find_jit_info () works.
3025         Instead of emitting a method_order table, sort the contents of the code_offsets
3026         table and do a binary search in the sorted table. The previous approach doesn't
3027         work with LLVM which emits methods in a arbitrary order.
3028
3029         * aot-runtime.c: Add support for creating MonoJitInfo structures by searching
3030         in the .eh_frame section in ELF files.
3031
3032         * mini.h: Bump corlib file format version.
3033
3034         * mini-llvm.c aot-compiler.c: Add support for AOT to the LLVM back end.
3035
3036         * exceptions-arm.c (mono_arch_get_call_filter_full): Update after the
3037         LDMIA->LDM macro name change.
3038
3039 2009-11-09  Zoltan Varga  <vargaz@gmail.com>
3040
3041         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Fix and enable this for
3042         x86.
3043
3044         * mini-llvm-cpp.cpp (JITMemoryManager): Fix compilation with LLVM 2.7
3045         SVN.
3046
3047         * aot-compiler.c: Ditto.
3048
3049         * mini-arm.c (mono_arch_allocate_vars): Fix the previous change by passing
3050         &align to mini_type_stack_size_full ().
3051
3052         * mini-arm.c (mono_arch_emit_prolog): Implement support for varargs.
3053
3054         * mini-ops.h: Add documentation for the OP_ARGLIST opcode.
3055
3056 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
3057
3058         * mini-arm.c: Compute the stack space used by arguments using
3059         mini_type_stack_size_full ().
3060
3061 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
3062
3063         * optflags-def.h: Remove dead TREEPROP optimization.
3064
3065 2009-11-08  Rodrigo Kumpera  <rkumpera@novell.com>
3066
3067         * mini-ppc.h: Make mono compiler under FreeBSD/ppc64. 
3068
3069         Patch by Justin Hibbits <chmeeedalf@gmail.com>.
3070
3071 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
3072
3073         * driver.c (mono_jit_parse_options): New public API function to parse options
3074         as done by the runtime executable.
3075
3076         * debugger-agent.c (buffer_add_cattrs): Fix reading an uninitialized variable
3077         when handling named arguments.
3078
3079 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
3080
3081         * mini-arm.c: Implement support for returning vtypes in registers, fix support
3082         for passing small vtypes in registers, make the CallInfo structures more
3083         similar to the code on the other platforms.
3084
3085         * mini-arm.c (mono_arch_allocate_vars): Align small vtypes to 4 bytes too since
3086         the code in the prolog requires it.
3087
3088 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
3089
3090         * mini-arm.c debugger-agent.c: Android changes from Koushik K. Dutta
3091         (koush@koushikdutta.com).
3092
3093         * mini-arm.c (handle_thunk): Add a domain argument to control the domain
3094         where the thunk memory should be allocated from. Fixes appdomain unloading
3095         on arm.
3096
3097 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
3098
3099         * mini-arm.c exceptions-arm.c: Make ctx->regs map directly to the 16 hardware
3100         registers, instead of r4..r11,ip,lr. Make restore_context () restore r0..r3 too.
3101
3102 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3103
3104         * mini-amd64.c (mono_arch_output_basic_block): Don't allow OP_SEQ_POINT in
3105         AOT, as it is not implemented yet.
3106
3107         * mini-x86.c (mono_arch_output_basic_block): Ditto.
3108
3109 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3110
3111         * debugger-agent.c: Fix windows build.
3112
3113 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3114
3115         * debugger-agent.c (debugger_thread): Call mono_set_is_debugger_attached ()
3116         after the client connects/disconnects.
3117
3118         * debugger-agent.c: Add an 'onthrow' option to start the debugger agent
3119         when an exception of a given type is thrown.
3120
3121         * debugger-agent.c: Add a 'onuncaught' option to start the debugger agent
3122         only on an uncaught exception.
3123
3124         * mini-exceptions.c: Notify the debugger agent on an uncaught exception.
3125
3126         * debugger-agent.c: Add a 'launch' option.
3127
3128 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3129
3130         * debugger-agent.c: Add a 'timeout' option.
3131
3132 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3133
3134         * debugger-agent.c: Implement the 'server' and 'suspend' options supported by
3135         the JDWP agent.
3136
3137 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3138
3139         * debugger-agent.c (set_breakpoint): Emit a log message.
3140
3141 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
3142
3143         * mini-arm.c: Fix the arm build.
3144
3145 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
3146
3147         * aot-compiler.c: don't leak the value returned from
3148         mono_type_full_name().
3149
3150 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
3151
3152         * debugger-agent.c: defer including mono-mutex.h until we know the
3153         agent is supported.
3154
3155 2009-11-04 Jonathan Chambers <joncham@gmail.com>
3156
3157         * debugger-agent.c: Changes to build on windows. Use mono-mutex instead
3158         of pthreads directly.
3159
3160         * mini.c (mono_sigfpe_signal_handler): Changed signature of Windows
3161         exception handlers. Pass info argument.
3162
3163         * mini.h: Adjust signatures of soft debugger functions to pass void*
3164         instead of siginfo_t. Adjust SIG_HANDLER_SIGNATURE on Windows.
3165
3166         * mini-amd64.c (mono_arch_is_single_step_event): Adjust signature to pass void*
3167         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3168         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
3169         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3170
3171         * mini-amd64.h: Adjust MonoW32ExceptionHandler signature.
3172
3173         * mini-x86.c (mono_arch_is_single_step_event): Adjust signature to pass void*
3174         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3175         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
3176         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3177
3178         * mini-x86.h: Adjust MonoW32ExceptionHandler signature.
3179
3180         * exceptions-x86.c: Adjust W32_SEH_HANDLE_EX for new signature.
3181
3182         * exceptions-amd64.c: Adjust W32_SEH_HANDLE_EX for new signature.
3183
3184         * mono-semaphore.h: Skeleton implementation for Windows.
3185
3186         Code contributed under MIT/X11 license.
3187
3188 2009-11-04 Jonathan Chambers <joncham@gmail.com>
3189
3190         * simd-intrinsics.c (simd_intrinsic_emit_setter): Unfix my fix.
3191
3192         Code contributed under MIT/X11 license.
3193
3194 2009-11-04 Jonathan Chambers <joncham@gmail.com>
3195
3196         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix windows build.
3197
3198         Code contributed under MIT/X11 license.
3199
3200 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
3201
3202         * aot-compiler.c (mono_save_xdebug_info): Bump the threshold for flushing
3203         debug info to 100 because 10 still slows down gdb too much.
3204
3205         * method-to-ir.c (mono_method_to_ir): Avoid rethrowing thread abort exceptions
3206         inside runtime invoke wrappers. This avoids the need to call ResetAbort () on
3207         them in the wrappers.
3208
3209 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
3210
3211         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
3212
3213         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix a warning.
3214
3215         * aot-runtime.c (mono_aot_get_method): Refactor some code into a new helper
3216         function mono_aot_get_array_helper_from_wrapper ().
3217
3218         * aot-compiler.c (add_generic_class): Refactor the code a bit, really emit
3219         array helper methods.
3220
3221 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
3222
3223         * simd-intrinsics.c (load_simd_vreg): Add extra argument to signal if
3224         the value was loaded from memory.
3225
3226         * simd-intrinsics.c (simd_intrinsic_emit_setter): Store back to memory if
3227         the value was loader from there.
3228
3229         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Fail correctly for Shuffle
3230         without constant swizzle.
3231
3232 2009-11-02 Jonathan Chambers <joncham@gmail.com>
3233
3234         * mini-amd64.c: Put soft debugger functions behind a
3235         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
3236
3237         * mini-amd64.h: disable the soft debugger in windows.
3238
3239         Code contributed under MIT/X11 license.
3240
3241 2009-11-02 Jonathan Chambers <joncham@gmail.com>
3242
3243         * mini-x86.c: Put soft debugger functions behind a
3244         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
3245
3246         Code contributed under MIT/X11 license.
3247
3248 2009-11-02 Jonathan Chambers <joncham@gmail.com>
3249
3250         * exceptions-x86.c (win32_handle_stack_overflow): Fix parameters
3251         to mono_arch_find_jit_info_ext.
3252
3253         Code contributed under MIT/X11 license.
3254
3255 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
3256
3257         * debugger-agent.c: Include netinet/in.h to fix the bsd build.
3258
3259         * debugger-agent.c: Add support for filtering events by assemblies.
3260
3261         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Return false if
3262         the agent is not enabled.
3263
3264 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
3265
3266         * exceptions-x86.c: hopefully last change to fix the windows build.
3267         This one courtesy of Jonathan Chambers.
3268
3269 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
3270
3271         * debugger-agent.c: remove unused function.
3272
3273 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
3274
3275         * debugger-agent.c: add #ifdefs for a few header files.
3276         * mini-x86.h: disable the soft debugger in windows.
3277         Step 1 of 2 to make this compile on windows with gcc.
3278
3279 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
3280
3281         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Comment this out for now
3282         as it breaks the build.
3283
3284 2009-07-01  Zoltan Varga  <vargaz@gmail.com>
3285
3286         Merge the soft debugger branch.
3287
3288         * debugger-agent.h debugger-agent.c: New files containing the soft
3289         mode debugger module.
3290
3291         * method-to-ir.c (mono_method_to_ir): Generate OP_SEQ_POINT opcodes
3292         at the appropriate locations.
3293
3294         * mini-<ARCH>.c (mono_arch_output_basic_block): Handle OP_SEQ_POINT
3295         opcode.
3296
3297         * mini-<ARCH>.c: Add new arch-specific functions to set/clear breakpoints,
3298         enable/disable single stepping.
3299
3300         * exceptions-<ARCH>.c (mono_arch_find_jit_info_ext): New stack unwinding api
3301         which returns all information in a StackFrameInfo structure, and can handle the
3302         LMF frames added by the debugger.
3303
3304         * mini-<ARCH>.h (MonoLMFExt): New structure containing additional information
3305         about an LMF frame.
3306
3307         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): New stack
3308         walker function which works on a specific thread and passes a StackFrameInfo
3309         structure to its callback.
3310
3311         * mini.c (mini_init): Initialize the debugger agent.
3312
3313         * aot-compiler.c aot-runtime.c: Add soft-debug support.
3314
3315         * mini-ops.h: Add OP_SEQ_POINT opcode.
3316
3317         * driver.c (mono_main): Add new '--debugger-agent' option for passing
3318         arguments to the debugger agent.
3319
3320 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
3321
3322         * mini.c (mini_method_compile): Disable llvm for methods with an lmf here to
3323         speed things up.
3324
3325         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOCALLOC.
3326
3327         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Implement this for x86.
3328
3329         * mini.c (mini_init): Avoid using the IMT trampoline in the LLVM case.
3330
3331         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add a static rgctx trampoline
3332         if needed.
3333         (mono_create_llvm_imt_trampoline): New function to create a trampoline which
3334         sets the IMT argument and makes a virtual call.
3335
3336         * mini-llvm.c: Enable interface calls using the llvm imt trampoline.
3337
3338 2009-11-01  Zoltan Varga  <vargaz@gmail.com>
3339
3340         * Makefile.am (llvm_sources): Enable the llvm option since it no longer breaks
3341         the windows build.
3342
3343 2009-10-30  Zoltan Varga  <vargaz@gmail.com>
3344
3345         * mini.c (mini_cleanup): Call profiler shutdown before shutting down the
3346         runtime. Fixes #551228.
3347
3348 2009-10-29  Zoltan Varga  <vargaz@gmail.com>
3349
3350         * mini-x86.c (mono_arch_output_basic_block): Fix % 1. Fixes #550970.
3351
3352         * basic.cs: Add a test.
3353
3354         * method-to-ir.c (mono_method_to_ir): Use EMIT_NEW_LOAD_MEMBASE_TYPE to
3355         load vtypes instead if OP_LOADV_MEMBASE in the implementation of
3356         CONSTRAINED. Fixes #550964.
3357
3358         * generics.cs: Add a test.
3359
3360 2009-10-28  Mark Probst  <mark.probst@gmail.com>
3361
3362         * mini-posix.c (add_signal_handler): Use
3363         mono_gc_get_suspend_signal() instead of GC_get_suspend_signal().
3364
3365 2009-10-28 Jerry Maine <crashfourit@gmail.com>
3366
3367         Contributed under the terms of the MIT/X11 license by
3368         Jerry Maine <crashfourit@gail.com>.
3369
3370         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
3371         sse4a for simd intrinsics.
3372
3373         * mini-amd64.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
3374         sse4a for simd intrinsics.
3375
3376 2009-10-27  Zoltan Varga  <vargaz@gmail.com>
3377
3378         * ir-emit.h method-to-ir.c: Change a few _IMM macros to assign to inst_imm
3379         instead of inst_p1 which is not the same on ILP32 platforms.
3380
3381 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
3382
3383         * mini-ppc.c (mono_arch_emit_prolog): Load the current got address,
3384         not the mscorlib one before calling mono_get_lmf_addr.
3385
3386         * tramp-ppc.c (mono_arch_create_trampoline_code_full): Fix the storing
3387         of the ip to the LMF.
3388
3389         * method-to-ir.c (mono_method_to_ir): Fix the handling of the
3390         immediate in the op->op_imm optimization.
3391
3392         * mini-ppc.c: Add a 'vtregs' field to ArgInfo to make the code easier to
3393         understand. VTypes now work, but are not abi compliant, as they are
3394         split into 4 byte parts instead of 8.
3395         (emit_memcpy): Fix the unrolled case to work on the PS3.
3396
3397         * mini-ppc.c (get_delegate_invoke_impl): Fix this for the PS3.
3398
3399         * aot-compiler.c (mono_compile_assembly): Make the autoreg option
3400         the default when static linking.
3401
3402         * mini-ppc.c (mono_arch_emit_prolog): Fix handling of I8 arguments.
3403
3404         * aot-compiler.c: Add an autoreg option to automatically register
3405         statically linked aot modules using ELF .ctors.
3406
3407         * genmdesc.pl: Add __ppc64__ to allowed defines.
3408
3409 2009-10-25  Zoltan Varga  <vargaz@gmail.com>
3410
3411         * mini-posix.c (add_signal_handler): Delay the GC suspend signal while
3412         executing a SIGSEGV handler on an altstack, since libgc can't handle that.
3413
3414 2009-10-24  Mark Probst  <mark.probst@gmail.com>
3415
3416         * exceptions-x86.c (mono_arch_find_jit_info): Fix build.
3417
3418 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
3419
3420         * mini-exceptions.c (mini_jit_info_table_find): Add an 'out_domain' argument
3421         which will contain the domain where the method was found.
3422
3423         * exceptions-<ARCH>.c mini-exceptions.c: Update callers of
3424         mini_jit_info_table_find ().
3425
3426         * aot-compiler.c (xdebug_end_emit): Remove so stray debug code.
3427
3428         * branch-opts.c (mono_if_conversion): Avoid running deadce if it is disabled.
3429
3430 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
3431
3432         * mini-x86.c (mono_arch_emit_prolog): Disable aot for methods with save_lmf
3433         set, its not supported yet.
3434
3435 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
3436
3437         * aot-runtime.c (mono_aot_get_method): Avoid asserting if a array generic
3438         iface wrapper is not found.
3439         (mono_aot_get_method): Ditto for GetGenericValueImpl.
3440
3441 2009-10-21  Zoltan Varga  <vargaz@gmail.com>
3442
3443         * aot-runtime.c (mono_aot_get_method): Fix support for the IList<T> wrappers,
3444         which have a different name.
3445
3446         * aot-runtime.c (mono_aot_get_method): Special case the array generic iface
3447         wrappers and Array.GetGenericValueImpl ().
3448
3449         * aot-compiler.c: Avoid emitting some wrappers which are not needed anymore
3450         because of the change above.
3451
3452         * generics.cs: Add a test for full aot + generic array ifaces.
3453
3454 2009-10-19  Sebastien Pouliot  <sebastien@ximian.com>
3455
3456         * aot-compiler.c (emit_plt): Remove duplicate 'debug_sym' variable 
3457         that hides the previous one.
3458
3459 2009-10-18  Zoltan Varga  <vargaz@gmail.com>
3460
3461         * aot-compiler.c (can_marshal_struct): Allow some System.dll structs to be
3462         marshalled. Fixes #541623.
3463
3464 2009-10-16  Zoltan Varga  <vargaz@gmail.com>
3465
3466         * aot-compiler.c (emit_extra_methods): Remove some asserts which are not needed.
3467
3468 2009-10-15  Zoltan Varga  <vargaz@gmail.com>
3469
3470         * mini.c (mono_op_imm_to_op): Handle OP_AND/OR/XOR_IMM.
3471
3472 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3473
3474         * mini-posix.c (sigprof_signal_handler):
3475         Implemented support for building stat call chans in different ways.
3476
3477 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3478
3479         * mini-exceptions.c (mono_find_jit_info):
3480         Also check that a jit info has been found (fixes a profiler crash).
3481
3482 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3483
3484         * mini.c (mono_codegen):
3485         Call mono_profiler_code_buffer_new with correct code address.
3486
3487 2009-10-14  Zoltan Varga  <vargaz@gmail.com>
3488
3489         * driver.c (mono_main): Change the date in the copyright.
3490
3491 2009-10-14  Mark Probst  <mark.probst@gmail.com>
3492
3493         * method-to-ir.c (mono_method_to_ir): Don't use a managed array
3494         allocator in shared generic code for open classes, because we
3495         can't get those classes' vtables.  We need to make managed
3496         allocators not depend on the vtable at compile-time to solve this.
3497
3498 2009-10-13  Martin Baulig  <martin@ximian.com>
3499
3500         * debug-mini.c (mono_debugger_trampoline_compiled): Add
3501         `const guint8 *trampoline' argument; send both the old and the new
3502         notification.
3503
3504 2009-09-30  Zoltan Varga  <vargaz@gmail.com>
3505
3506         * aot-compiler.c (add_wrappers): Add a runtime invoke wrapper which is used by
3507         mono_runtime_capture_context () without calling mono_runtime_invoke ().
3508         (can_marshal_struct): Skip structures with auto layout.
3509
3510         * tramp-arm.c (GEN_TRAMP_SIZE): Increase this by 4.
3511
3512 2009-10-02  Zoltan Varga  <vargaz@gmail.com>
3513
3514         * mini-sparc.c (mono_arch_emit_setret): Emit long return values using OP_LMOVE.
3515         (mono_arch_create_vars): Instead of allocating a stack slot by hand, allocate
3516         a variable to hold the stack slot used by the int<->float conversion opcodes.
3517
3518         * mini-sparc.c (mono_arch_build_imt_thunk): Implement support for fail_tramp.
3519
3520 2009-10-04  Zoltan Varga  <vargaz@gmail.com>
3521
3522         * aot-compiler.c (add_generic_class): Only add GetGenericValueImpl wrappers
3523         when using full-aot.
3524
3525 2009-10-06  Zoltan Varga  <vargaz@gmail.com>
3526
3527         * aot-compiler.c (add_generic_class): Add an instance of GenericComparer<T> for
3528         each instance of Comparer<T>.
3529
3530         * generics.cs: Add a new test.
3531
3532 2009-10-09  Zoltan Varga  <vargaz@gmail.com>
3533
3534         * driver.c (parse_debug_options): Add a 'gdb' option.
3535
3536         * mini.c (mini_parse_debug_options): Add a 'gdb' option.
3537
3538         * image-writer.c: Add support for emitting the image into a memory buffer.
3539
3540         * dwarfwriter.c: Add support for sharing one IL file between multiple images.
3541
3542         * aot-compiler.c: Add support for registering debug info with GDB using the
3543         new JIT debugging interface in GDB 7.0. It can be turned on by setting
3544         MONO_XDEBUG to 'gdb'.
3545
3546 2009-10-10  Zoltan Varga  <vargaz@gmail.com>
3547
3548         * aot-compiler.c (mono_save_trampoline_xdebug_info): Implement this for the
3549         gdb mode.
3550
3551 2009-10-11  Zoltan Varga  <vargaz@gmail.com>
3552
3553         * aot-compiler.c (mono_save_xdebug_info): Emit a symbol for the method which
3554         can be used to set breakpoints in gdb.
3555
3556         * image-writer.c (bin_writer_emit_writeout): Add support for setting the text
3557         segment to an absolute address.
3558
3559 2009-10-13  Mark Probst  <mark.probst@gmail.com>
3560
3561         * method-to-ir.c: Use the managed array allocator method if
3562         available.
3563
3564 2009-10-13  Bill Holmes  <billholmes54@gmail.com>
3565
3566         * aot-compiler.c : Fix the MSVC builds
3567
3568         Code is contributed under MIT/X11 license.
3569
3570 2009-10-13  Zoltan Varga  <vargaz@gmail.com>
3571
3572         * aot-compiler.c (mono_save_xdebug_info): Group methods into groups of 10 to
3573         avoid registering 1 symbol file per method with gdb.
3574
3575 2009-09-29  Zoltan Varga  <vargaz@gmail.com>
3576
3577         * mini-sparc.c: Fix the handling of enums with base type long.
3578
3579         * mini-sparc.c (mono_arch_output_basic_block): Fix IREM_UN_IMM.
3580
3581         * mini-sparc.c (mono_arch_allocate_vars): Use mono_class_from_mono_type ()
3582         instead of using type->data.klass as the later doesn't work with generics.
3583
3584 2009-09-25  Mark Probst  <mark.probst@gmail.com>
3585
3586         * method-to-ir.c, mini.h, mini-alpha.c, mini-amd64.c, mini-arm.c,
3587         mini-hppa.c, mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c,
3588         mini-s390x.c, mini-sparc.c, mini-x86.c: Thread.get_CurrentThread
3589         works differently now and we don't handle it in the JIT anymore.
3590
3591         * mini.c, mini-exceptions.c, mini-posix.c, debug-debugger.c,
3592         debug-mini.c, tramp-amd64.c, tramp-x86.c: Changes resulting from
3593         the Thread class split.
3594
3595 2009-09-25  Zoltan Varga  <vargaz@gmail.com>
3596
3597         * driver.c: Don't run tests with the obsolete treeprop optimization.
3598
3599         * mini-sparc.c (mono_arch_create_vars): Make the component vars of a long ret
3600         variable volatile. Fixes #541577.
3601
3602         * basic-calls.cs: Add a new test.
3603
3604         * basic-long.cs: Remove tests which are now in basic-calls.cs.
3605
3606 2009-09-24  Zoltan Varga  <vargaz@gmail.com>
3607
3608         * dwarfwriter.c (emit_debug_info_end): Disable this as it doesn't seem to
3609         work/required with recent iphone sdk versions.
3610
3611         * aot-compiler.c (add_wrappers): Generate PtrToStructure wrappers for more
3612         structures.
3613
3614         * decompose.c (mono_decompose_vtype_opts): Avoid reading uninitialized memory
3615         in the VCALL decomposition code.
3616
3617 2009-09-22  Zoltan Varga  <vargaz@gmail.com>
3618
3619         * mini-ia64.c (mono_arch_output_basic_block): Fix ISHR/ISHR_IMM.
3620
3621         * basic.cs: Add a test.
3622
3623         * mini-ia64.c (mono_arch_build_imt_thunk): Implement support the virtual
3624         generic invokes.
3625
3626         * mini-exceptions.c (mini_jit_info_table_find): New helper function which
3627         searches all the domains of the current thread.
3628
3629         * exceptions-<ARCH>.c: Use it. Fixes #539394.
3630
3631 2009-09-21  Zoltan Varga  <vargaz@gmail.com>
3632
3633         * exceptions-arm.c (mono_arm_throw_exception): Set ctx->ebp to fp instead of sp
3634         so catching exceptions thrown in the same method works. Fixes exception17.exe.
3635
3636         * tramp-arm.c (mono_arch_create_trampoline_code_full): Store NULL into lmf->method
3637         for non-jit trampolines.
3638
3639         * mini.c (mono_jit_runtime_invoke): Allow string ctors with dyn runtime invoke.
3640
3641         * aot-compiler.c (add_wrappers): Ditto.
3642
3643         * mini-arm.c: Implement support for passing vtypes and floats, and increase
3644         the size of the param area used by dyn_call to 6 which covers the majority of
3645         methods.
3646
3647         * mini.c aot-compiler.c: Allow dyn_call for string methods except ctors.
3648
3649         * mini-arm.c: Implement support for passing/receiving
3650         longs and receiving floats in the dyn_call code.
3651
3652         * mini-amd64.c: Implement support for receiving vtypes in registers in
3653         the dyn_call code.
3654
3655         * mini.c mini-amd64.c: Implement partial support for passing vtypes in
3656         the dyn_call code.
3657
3658 2009-09-20  Zoltan Varga  <vargaz@gmail.com>
3659
3660         * mini-arm.c (get_call_info): Return more precise information in
3661         ArgInfo->regtype.
3662         (dyn_call_supported): Use the information in CallInfo.
3663
3664         * mini-arm.c: Enable support for returning vtypes in the dyn_call code.
3665
3666         * mini.c mini-amd64.c: Enable support for returning vtypes in the dyn_call
3667         code.
3668
3669         * mini-arm.c: Update after the dyn_call api changes.
3670
3671         * mini.c (mini_create_jit_domain_info): Register a destructor function
3672         for the runtime_invoke_hash.
3673
3674         * mini-amd64.c (mono_arch_get_dyn_call_args): Rename this to
3675         'mono_arch_dyn_call_start'. Pass the pointer to the return value buffer to
3676         this function.
3677         (mono_arch_get_dyn_call_ret): Rename this to 'mono_arch_dyn_call_finish'.
3678         (dyn_call_supported): Simplify this by using get_call_info ().
3679         (mono_arch_dyn_call_free): New destructor function.
3680
3681         * generics.cs: Remove a printf.
3682
3683         * method-to-ir.c (mono_method_to_ir): Allocate some param area for DYN_CALL.
3684
3685         * mini-arm.c: Add support for enum return values and passing a few arguments
3686         on the stack.
3687         
3688         * mini.c (mono_jit_runtime_invoke): Add support for enum return values to
3689         dyn invoke.
3690
3691         * mini-amd64.c (mono_arch_get_dyn_call_ret): Ditto.
3692
3693         * aot-compiler.c (add_wrappers): Add a few restrictions for the use of
3694         the dynamic invoke wrappers.
3695
3696         * mini-arm.c: Implement OP_DYN_CALL for arm.
3697
3698         * aot-compiler.c (add_wrappers): Avoid aot-ing runtime invoke wrappers
3699         supported by the dynamic runtime invoke wrapper.
3700
3701         * aot-compiler.c aot-runtime.c: Add support for encoding the dynamic
3702         runtime invoke wrapper.
3703
3704         * mini.c (mono_jit_runtime_invoke): Use the dynamic runtime invoke wrappers
3705         if possible when running with full-aot.
3706
3707         * mini-ops.h: Add OP_DYN_CALL opcode.
3708
3709         * mini-amd64.c method-to-ir.c: Add infrastructure for making method calls
3710         with dynamic arguments lists similar to libffi.
3711
3712 2009-09-19  Zoltan Varga  <vargaz@gmail.com>
3713
3714         * method-to-ir.c: Fix the previous change on 64 bit platforms.
3715         
3716         * method-to-ir.c: Applied patch from Rodrigo Kumpera. Allow an i8 argument
3717         to NEWARR.
3718
3719         * iltests.il.in: Add a new test.
3720         
3721 2009-09-18  Zoltan Varga  <vargaz@gmail.com>
3722
3723         * aot-compiler.c (add_generic_instances): Add more instances of
3724         GenericEqualityComparer.
3725
3726 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
3727
3728         * mini.c: Add asserts for mono_class_vtable calls that are not meant to fail.
3729
3730 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
3731
3732         * method-to-ir.c: Handle failures from mono_class_vtable. Added some
3733         comments on some functions that now can fail.
3734
3735 2009-09-17  Andrew Jorgensen  <ajorgensen@novell.com>
3736
3737         * Makefile.am: Add Info.plist to EXTRA_DIST
3738
3739 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
3740
3741         * method-to-ir.c (mono_method_to_ir): Allow AOT for CEE_LDTOKEN in
3742         static synchronized wrappers. Fixes #539500.
3743
3744 2009-09-14  Rodrigo Kumpera  <rkumpera@novell.com>
3745
3746         * jit-icalls.c (mono_class_static_field_address): handle vtable failure
3747         properly.
3748
3749 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
3750
3751         * mini-exceptions.c (mono_handle_exception_internal): Store the computed
3752         lmf before calling filter clauses as well. Fixes #539550.
3753
3754         * exceptions.cs: Add a test.
3755         
3756 2009-09-14  Zoltan Varga  <vargaz@gmail.com>
3757
3758         * aot-compiler.c (add_generic_class): Add instances of
3759         Array.GetGenericValueImpl as well.
3760
3761         * Makefile.am (fullaotcheck): Copy and aot more assemblies so linq
3762         can be tested too.
3763
3764         * generics.cs: Add a fullaot linq test.
3765
3766 2009-09-10  Zoltan Varga  <vargaz@gmail.com>
3767
3768         * aot-compiler.c (arch_emit_static_rgctx_trampoline): Don't clobber argument
3769         reg r1 on arm.
3770
3771 2009-09-10  Bill Holmes  <billholmes54@gmail.com>
3772
3773         * mini-trampolines.c (mono_delegate_trampoline) : Call
3774           mono_cominterop_get_invoke if the delegate target object
3775           is a COM object.
3776
3777         Code is contributed under MIT/X11 license.
3778
3779 2009-09-09  Sebastien Pouliot  <sebastien@ximian.com>
3780
3781         * method-to-ir.c: For CoreCLR throw a SecurityException if an 
3782         internal call is defined outside platform code. Reduce code 
3783         duplication with existing [Method|Field]AccessException
3784
3785 2009-09-08  Rodrigo Kumpera  <rkumpera@novell.com>
3786
3787         * mini-x86.c (mono_arch_emit_call): Don't reduce stack usage by 4
3788         if the return value is a small struct passed on regs.
3789
3790 2009-09-09  Zoltan Varga  <vargaz@gmail.com>
3791
3792         * cpu-arm.md mini-arm.c: Remove unused opcodes.
3793
3794         * mini-codegen.c: Enable the cpu description validation for arm.
3795
3796 2009-09-08  Zoltan Varga  <vargaz@gmail.com>
3797
3798         * basic-calls.cs: Move the test_0_float_load_and_store_with_big_offset ()
3799         test which depends on structs to objects.cs.
3800         
3801         * basic-calls.cs: Remove calls to Console.WriteLine and throws, since those
3802         require object model related stuff working.
3803
3804         * cpu-x86.md mini-x86.c: Remove more unused opcodes.
3805
3806         * mini-ops.h: Fix OP_BIGMUL instruction descriptions.
3807
3808         * mini-codegen.c (mono_local_regalloc): Validate the cpu description 
3809         against the instruction metadata in mini-ops.h. amd64 only for now.
3810
3811         * mini-ops.h: Fix some instruction descriptions.
3812
3813         * mini-ops.h mini-x86.c mini-amd64.c cpu-<ARCH>.md: Remove some
3814         unused instructions.
3815
3816 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
3817
3818         * exceptions.cs: Add a new test.
3819
3820 2009-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
3821
3822         * mini-x86.c (needs_stack_frame): OSX requires full frames to keep proper alignment.
3823
3824 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
3825
3826         * mini-llvm.c (mono_llvm_emit_method): Add a few more missing casts,
3827         skip empty phi opcodes.
3828         
3829         * mini-llvm.c (mono_llvm_emit_method): Handle unsigned volatile variables
3830         correctly by zero extending after loads. Skip methods containing calls
3831         to the monitor enter/exit trampolines.
3832
3833         * tramp-x86.c (mono_arch_create_trampoline_code): Align the stack
3834         when calling mono_thread_force_interruption_checkpoint ().
3835
3836         * mini.c (mini_method_compile): Disable llvm when AOT compiling.
3837
3838         * tramp-amd64.c (mono_arch_patch_callsite): Add support for 32 bit ->
3839         64 bit thunks.
3840         (mono_arch_nullify_class_init_trampoline): Read 'buf' instead of 'code'.
3841
3842         * mini-llvm.c (mono_llvm_emit_method): Add a few missing conversions so a 
3843         bootstrap could run.
3844
3845 2009-09-04  Zoltan Varga  <vargaz@gmail.com>
3846
3847         * mini.c (mini_init): Set callbacks.get_runtime_build_info ().
3848
3849 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
3850
3851         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass the start
3852         of the method to
3853         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
3854         LLVM might be very short.
3855
3856         * mini-x86.c (mono_arch_output_basic_block): Maintain stack alignment
3857         in OP_THROW/RETHROW.
3858
3859         * exceptions-x86.c: Rewrite the throw trampolines so they maintain stack
3860         alignment on osx.
3861
3862 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
3863
3864         * mini-amd64.c (mono_arch_get_vcall_slot): Pass the start of the method to
3865         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
3866         LLVM might be very short.
3867
3868 2009-09-01  Zoltan Varga  <vargaz@gmail.com>
3869
3870         * exceptions-x86.c (throw_exception): Fix the previous change by substracting
3871         the alignment for the value of sp.
3872
3873 2009-09-01  Geoff Norton  <gnorton@novell.com>
3874
3875         * mini.c (mono_get_lmf_addr): Fix jit_thread_attach for native to 
3876         managed wrappers in full aot.
3877
3878 2009-08-31  Zoltan Varga  <vargaz@gmail.com>
3879
3880         * exceptions-x86.c (get_throw_exception): Align the stack on osx.
3881
3882 2009-08-28  Zoltan Varga  <vargaz@gmail.com>
3883
3884         * mini-llvm-cpp.cpp mini-llvm.c: Update to latest llvm api.
3885
3886 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
3887
3888         * aot-compiler.c (emit_exception_debug_info): Emit ei->flags too.
3889
3890         * aot-runtime.c (decode_exception_debug_info): Decode ei->flags from the
3891         saved info.
3892
3893         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
3894
3895         * aot-runtime.c aot-compiler.c: Emit exception causes fully so we don't
3896         depend on the info MonoMethodHeader which could be missing in IL stripped
3897         assemblies.
3898
3899 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
3900
3901         * mini-arm.c (add_general): Fix the passing of 64 bit values on darwin, where
3902         they are only 4 byte aligned.
3903
3904 2009-08-21  Zoltan Varga  <vargaz@gmail.com>
3905
3906         * mini-arm.c (mono_arch_allocate_vars): Use FP as the frame pointer as
3907         was done previously, since using SP causes too many problems.
3908
3909         * exceptions-arm.c: Fix the handling of sp/fp so unwinding through
3910         frames without a frame pointer works.
3911
3912         * mini-arm.c (mono_arch_get_global_int_regs): Avoid using V5 as a
3913         global register in methods with calls, since the calls can go through
3914         a static rgctx trampoline which doesn't save it.
3915
3916 2009-08-19  Zoltan Varga  <vargaz@gmail.com>
3917
3918         * mini-arm.c (mono_arch_context_get_int_reg): Handle SP as well.
3919
3920 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
3921
3922         * aot-compiler.c (add_generic_instances): Fix the net 1.1 build.
3923
3924 2009-08-18  Christian Hergert  <chris@dronelabs.com>
3925
3926         * method-to-ir.c: Fix warnings for uninitialized variables.
3927
3928 2009-08-18  Christian Hergert  <chris@dronelabs.com>
3929
3930         * mini-exceptions.c:
3931         * aot-compiler.c: Fix printf warnings.
3932
3933 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
3934
3935         * aot-compiler.c (add_generic_instances): Add string[] wrapper methods.
3936         Add GetGenericValueImpl<string>.
3937         
3938         * aot-compiler.c (add_generic_instances): Add instances of
3939         GenericEqualityComparer<T> for primitive types. Only emit the array
3940         wrappers into the mscorlib image.
3941
3942 2009-08-15  Zoltan Varga  <vargaz@gmail.com>
3943
3944         * aot-runtime.c (load_method): Rename 'aot_module' -> 'amodule'. Allocate
3945         the methods_loaded array using amodule->info->nmethods.
3946
3947         * mini.h (MonoAotFileInfo): Add an 'nmethods' field.
3948         (MONO_AOT_FILE_VERSION): Bump this.
3949
3950         * aot-compiler.c: Emit more generic instances allowing some parts of linq
3951         to work.
3952
3953         * aot-runtime.c (mono_aot_get_unwind_info): Handle the case when the
3954         MonoJitInfo doesn't belong to its methods aot image.
3955
3956 2009-08-14  Zoltan Varga  <vargaz@gmail.com>
3957
3958         * mini-arm.c (mono_arch_allocate_vars): Use SP as the default frame reg.
3959
3960         * mini-arm.c: Fix warnings.
3961         
3962         * mini-arm.c (mono_arm_emit_load_imm): Only emit a movt if needed.
3963
3964         * mini-arm.c (mono_arm_emit_load_imm): Use movt/movw if the cpu
3965         supports it.
3966
3967 2009-08-12  Zoltan Varga  <vargaz@gmail.com>
3968
3969         * aot-compiler.c (arch_emit_imt_thunk): Rework the arm code to
3970         avoid clobbering IP.
3971
3972         * mini-trampolines.c (mono_magic_trampoline): Allocate a local to
3973         hold the trampoline argument, so its initial value is available during
3974         debugging.
3975
3976 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
3977
3978         * exceptions-arm.c:
3979         * exceptions-hppa.c:
3980         * mini.c:
3981         * exceptions-s390x.c:
3982         * exceptions-mips.c:
3983         * exceptions-ppc.c:
3984         * exceptions-sparc.c:
3985         * exceptions-alpha.c:
3986         * aot-runtime.c:
3987         * mini-trampolines.c:
3988         * exceptions-x86.c:
3989         * exceptions-s390.c: add and use #define's instead of sizeof()
3990         for MonoJitInfo and MonoJitInfoTable.
3991
3992 2009-08-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
3993
3994         * tramp-arm.c:
3995         * tramp-amd64.c:
3996         * tramp-ppc.c:
3997         * tramp-x86.c: use a #define instead of sizeof() for a few
3998         structures that use a zero-length array.
3999
4000 2009-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
4001
4002         * method-to-ir.c (mono_method_to_ir/CEE_CONSTRAINED_): Handle the
4003         case when the method is dynamic. Fixes #529238.
4004
4005 2009-08-06  Zoltan Varga  <vargaz@gmail.com>
4006
4007         * mini.c (mono_jit_compile_method_inner): Throw an exception instead
4008         of asserting when a method is JIT compiled in full-aot mode.
4009
4010 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
4011         
4012         Contributed under the terms of the MIT/X11 license by
4013         Jerry Maine <crashfourit@gail.com>.
4014         
4015         * fixed wrong dates in changelog.
4016
4017 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
4018         
4019         Contributed under the terms of the MIT/X11 license by
4020         Jerry Maine <crashfourit@gail.com>.
4021
4022         * basic-simd.cs: added test for packed double square root.
4023         * cpu-amd64.md: added opcode info for packed double square root.
4024         * cpu-x86.md: added opcode info for packed double square root.
4025         * mini-ops.h: added IR opcode for packed double square root.
4026         * mini-x86.c: added IR to native translation code for packed double square root.
4027         * mini-amd64.c: removed todo for packed double square root.
4028         * simd-intrinsics.c: added method to IR opcode converstion for
4029         packed double square root.
4030
4031 2009-08-03 Jerry Maine <crashfourit@gmail.com>
4032
4033         Contributed under the terms of the MIT/X11 license by
4034         Jerry Maine <crashfourit@gail.com>.
4035
4036         * mini-amd64.c: Added a change to help tell the difference as 
4037         to what perpose the xmm register is being used--mainly to help
4038         with debuging.
4039         * mini-amd64.h: Changed callee regs to use 15 out of 16 
4040         (one used for special cases) xmm registers for both fp
4041         and simd ops. Added define to turn on new feature in the regalloc
4042         that allows fp and simd ops to share the xmm regs happily.
4043         * codegen.c: Added code to detect for which perpose an xmm reg is
4044         being used (fp or simd) and to translate back and forth to the
4045         correct logical reg bank (fp or simd) for 'spill load's.
4046
4047 2009-08-03 Jerry Maine <crashfourit@gmail.com>
4048
4049         Contributed under the terms of the MIT/X11 license by
4050         Jerry Maine <crashfourit@gail.com>.
4051
4052         * basic-simd.cs: Added tests for stressing the regalloc when running with
4053         16 simd regs and when simd and fp ops share the same reg bank.
4054
4055 2009-08-01  Mark Probst  <mark.probst@gmail.com>
4056
4057         * method-to-ir.c (mini_emit_stobj): If we call mono_value_copy()
4058         in shared generic code, we might have to look up the class in the
4059         RGCTX.  If we use the class directly, compute its GC descriptor.
4060
4061 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
4062
4063         * mini.c (mono_jit_runtime_invoke): Fix a warning.
4064
4065 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
4066
4067         * mini.c (mono_jit_runtime_invoke): Initialize the class and
4068         check for errors. Fixed the case when the class with the Main
4069         method is broken.
4070
4071 2009-07-31 Jerry Maine <crashfourit@gmail.com>
4072
4073         Contributed under the terms of the MIT/X11 license by
4074         Jerry Maine <crashfourit@gail.com>.
4075
4076         * cpu-amd64.md: Fixed simple bug in machine discrition file.
4077
4078 2009-07-31  Zoltan Varga  <vargaz@gmail.com>
4079
4080         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_IREM_UN_IMM.
4081
4082 2009-08-30  Rodrigo Kumpera  <rkumpera@novell.com>
4083
4084         * method-to-ir.c: Fix naming of stelem and ldelem.
4085
4086 2009-07-30  Zoltan Varga  <vargaz@gmail.com>
4087
4088         * driver.c (main_thread_handler): Check that the assembly loaded
4089         matches the filename when doing AOT.
4090
4091 2009-07-30  Mark Probst  <mark.probst@gmail.com>
4092
4093         * mini.c: get_ip_from_sigctx installer has been removed, so don't
4094         call it anymore.
4095
4096         * mini-x86.h, mini-amd64.h, mini-ppc.h: UCONTEXT macros moved (to
4097         utils/mono-sigcontext.h).
4098
4099         * exceptions-amd64.c: Use the UCONTEXT_GREGS macro instead of an
4100         #ifdef.
4101
4102 2009-07-29  Massimiliano Mantione  <massi@ximian.com>
4103
4104         * mini.c (mono_codegen):
4105         Call profiler hook to keep track of method code buffers.
4106
4107 2009-07-27  Mark Probst  <mark.probst@gmail.com>
4108
4109         * method-to-ir.c: Invoke write barriers for the
4110         Interlocked.(Compare)Exchange JIT intrinsics.
4111
4112 2009-07-26  Raja R Harinath  <harinath@hurrynot.org>
4113
4114         * Makefile.am (version.h): Fix issues when built out of tree.
4115         Remove some redundant 'grep's piped through 'sed's.
4116
4117 Fri Jul 24 17:28:37 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
4118
4119         This patch is contributed under the terms of the MIT/X11 license
4120
4121         * mini-ppc.c (mono_arch_output_basic_block):
4122         (OP_STOREI1_MEMBASE_REG): Handle 32-bit offsets combining addis
4123         for bits 32-47 with signed load/store diplacements for bits
4124         48-63.  Use prefered base/offset order for indexed form.
4125         (OP_STOREI2_MEMBASE_REG, OP_STORE_MEMBASE_REG): Same.
4126         (OP_LOAD_MEMBASE, OP_LOADI4_MEMBASE, OP_LOADU4_MEMBASE,
4127         OP_LOADI1_MEMBASE, OP_LOADU1_MEMBASE, OP_LOADU2_MEMBASE,
4128         OP_LOADI2_MEMBASE): Same.
4129         (OP_STORER8_MEMBASE_REG, OP_LOADR8_MEMBASE,
4130         OP_STORER4_MEMBASE_REG, OP_LOADR4_MEMBASE): Same.
4131         (OP_STOREI1_MEMINDEX): Use prefered base/offset order for
4132         indexed form.
4133         (OP_STOREI2_MEMINDEX, OP_STORE_MEMINDEX): Same.
4134         (OP_LOAD_MEMINDEX, OP_LOADI4_MEMINDEX, OP_LOADU4_MEMINDEX,
4135         OP_LOADU2_MEMINDEX, OP_LOADI2_MEMINDEX, OP_LOADU1_MEMINDEX,
4136         OP_LOADI1_MEMINDEX): Same
4137         (OP_LOADR4_MEMINDEX, OP_LOADR8_MEMINDEX, OP_STORER4_MEMINDEX,
4138         OP_STORER8_MEMINDEX): Same
4139         (OP_JMP): Use addis/addi sequence for int cfg->stack_usage
4140         computations.
4141         (mono_arch_emit_prolog): Handle 32-bit offsets combining addis
4142         for bits 32-47 with signed load/store diplacements for bits
4143         48-63.  Use prefered base/offset order for indexed form.
4144
4145 Fri Jul 24 16:57:12 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
4146
4147 This patch is contributed under the terms of the MIT/X11 license
4148
4149         * mini-ppc.c: Define PPC_MOVE_FPR_GPR and PPC_ISA_64.
4150         (mono_arch_get_vcall_slot): Fx pointer to int cast warning.
4151         (mono_arch_decompose_opts): Make OP_ICONV_TO_R4 and
4152         OP_ICONV_TO_R8 decompose conditional on !PPC_ISA_64.
4153         (mono_arch_output_basic_block) [OP_JMP]: Use ppc_load32 for
4154         cfg->stack_usage to avoid size warnings.
4155         (mono_arch_output_basic_block) [__mono_ppc64__]: Replace
4156         store/load sequence with mffgpr if PPC_MOVE_FPR_GPR is true.
4157         (mono_arch_output_basic_block) [!__mono_ppc64__]: For
4158         OP_ICONV_TO_R4 or OP_ICONV_TO_R8 and PPC_ISA_64 use fcfid
4159         to convert.
4160         (mono_arch_emit_prolog): Move mono_emit_unwind_op_def_cfa 
4161         after code varible is initialized.
4162         Add g_assert ppc_is_imm16 for ainfo->offset. Handle
4163         ainfo->size == 8 when ainfo->offset !ppc_is_imm16.
4164         (mono_arch_emit_epilog): 
4165         Move Use ppc_load32 for cfg->stack_usage to avoid size
4166         warnings.
4167
4168 2009-07-24  Mark Probst  <mark.probst@gmail.com>
4169
4170         * method-to-ir.c: The write barrier doesn't do the store anymore,
4171         so we have always to emit it.  Also, emit the wbarrier after the
4172         store.
4173
4174 2009-07-24  Zoltan Varga  <vargaz@gmail.com>
4175
4176         * mini-arm.c (mono_arch_get_delegate_invoke_impls): Add a trampoline
4177         for argument count 3 too.
4178
4179 2009-07-23  Zoltan Varga  <vargaz@gmail.com>
4180
4181         * mini.c (mono_jit_compile_method_with_opt): Add an 'ex' argument to let
4182         the caller handle the exceptions.
4183         (mono_jit_runtime_invoke): Handle exceptions thrown while compiling the
4184         method. Fixes #524498.
4185
4186 2009-07-22  Geoff Norton  <gnorton@novell.com>
4187
4188         * mini-exceptions.c: Fix build on ia64.
4189
4190 2009-07-22  Mark Probst  <mark.probst@gmail.com>
4191
4192         * mini-exceptions.c (ves_icall_get_frame_info): Use write
4193         barriers.
4194
4195 2009-07-21  Zoltan Varga  <vargaz@gmail.com>
4196
4197         * mini-arm.c (mono_arch_emit_prolog): Fix thread attaching in aot
4198         code.
4199
4200 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
4201
4202         * basic-simd.cs (Main): Pass args to the test driver.
4203
4204 2009-07-20  Geoff Norton  <gnorton@novell.com>
4205
4206         * mini-x86.h: Fix the x86 version guards to use Apple's
4207         properly defined macros.
4208
4209 2009-07-20  Geoff Norton  <gnorton@novell.com>
4210
4211         * mini-x86.c: Fix --trace on darwin-x86 and other systems which require
4212         aligned access.
4213
4214 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
4215
4216         * mini.c (mono_jit_runtime_invoke): Speed this up by adding a hash to
4217         MonoJitDomainInfo which maps MonoMethod's to a structure containing all
4218         the information which is needed for invokes, so only one locking+hash table
4219         lookup is needed.
4220
4221         * aot-compiler.c: Add a 'tool-prefix' option to be used when cross-compiling.
4222         
4223         * aot-compiler.c (add_generic_instances): Emit instances of 
4224         GenericComparer<T> for primitive types.
4225
4226 2009-07-19 Rodrigo Kumpera  <rkumpera@novell.com>
4227
4228         * mini-posix.c: Fix linux build.
4229
4230 2009-07-19  Geoff Norton  <gnorton@novell.com>
4231
4232         * mini.h: Add prototypes for mono_runtime_syscall_fork and
4233         mono_gdb_render_native_backtraces
4234         * mini-darwin.c: Apple's syscall(SYS_fork) is very weird on x86,
4235         so we implement the sane semantics to the runtime here
4236         (mono_gdb_render_native_backtraces).  Apple also uses an ancient gdb
4237         so we need to call it differently (mono_gdb_render_native_backtraces)
4238         * mini-posix.c: Move the old semantics from mini.c to the prototypes
4239         here for default implementations.
4240         * mini.c: Refactor mono_handle_native_sigsegv so that we can properly
4241         support Apple's weird syscall (SYS_fork) implementation and not busy
4242         loop in abort() on native crashes on OSX anymore.
4243
4244 2009-07-18  Zoltan Varga  <vargaz@gmail.com>
4245
4246         * aot-runtime.c (load_method): Change the handling of the
4247         MONO_LASTAOT env variable so MONO_LASTAOT=0 means that no aot methods
4248         are used.
4249
4250         * mini.c (mono_patch_info_equal): Really fix the handling of RGCTX_FETCH.
4251
4252 2009-07-17  Zoltan Varga  <vargaz@gmail.com>
4253
4254         * mini.c (mono_patch_info_equal): Revert the last change for now as it
4255         seems to break the aot tests.
4256         
4257         * mini.c (mono_patch_info_equal): Fix the handling of 
4258         MONO_PATCH_INFO_RGCTX_FETCH.
4259
4260 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
4261
4262         * unwind.c: Use TARGET_AMD64 instead of __x86_64__.
4263
4264         * mini.c (mono_patch_info_hash): Fix the handling of 
4265         MONO_PATCH_INFO_INTERNAL_METHOD.
4266         (mono_patch_info_equal): Ditto.
4267
4268 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
4269
4270         * mini-llvm.c (mono_llvm_emit_method): Use module instead of ctx->module
4271         in a few places.
4272         
4273         * mini-llvm.c: Add some infrastructure for AOT support.
4274
4275 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
4276
4277         * mini-llvm-cpp.c: Update to the latest llvm api.
4278         
4279         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Set the EnablePrettyStackTrace
4280         option to false to prevent llvm from installing signal handlers which
4281         trip up the gc.
4282         
4283 2009-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
4284
4285         * cpu-x86.md:
4286         * cpu-amd64.md: Revert previous change as those instructions
4287         take 2 separate arguments. Remember to read the arch docs more
4288         carefully next time.
4289
4290 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
4291
4292         * mini-llvm-cpp.cpp (mono_llvm_build_alloca): Update to latest llvm api.
4293
4294 Wed Jul 15 17:20:27 CEST 2009 Paolo Molaro <lupus@ximian.com>
4295
4296         * mini-ppc.c: exploit multiple load/store units if available (rest of
4297         the change from Steven Munroe (<munroesj@us.ibm.com>) first patch at 
4298         http://bugzilla.novell.com/show_bug.cgi?id=487846).
4299
4300 Wed Jul 15 16:24:57 CEST 2009 Paolo Molaro <lupus@ximian.com>
4301
4302         * mini-ppc.c: integrate most of Steven Munroe (<munroesj@us.ibm.com>)
4303         first patch at http://bugzilla.novell.com/show_bug.cgi?id=487846.
4304
4305 2009-07-14 Rodrigo Kumpera  <rkumpera@novell.com>
4306
4307         * cpu-x86.md: Fix missing clobbering from trancendental simd
4308         ops.
4309
4310         * cpu-amd64.md: Same.
4311
4312 2009-07-14 Jerry Maine <crashfourit@gmail.com>
4313
4314         Contributed under the terms of the MIT/X11 license by
4315         Jerry Maine <crashfourit@gail.com>.
4316
4317         * basic-simd.cs: Added tests for single and doulble indexers.
4318
4319         * cpu-amd64.md: Added simd opcode information.
4320
4321         * mini-amd64.c: Added IR to native simd generation code.
4322         Added simd register names and function that returns them.
4323
4324         * mini-amd64.h: Added marcos to turn on simd code compilation in
4325         amd64. Added max simd register count marco. Added caller/callee
4326         register mask marcos. Added marcos to use simd register bank.
4327
4328         * mini.h: Added helper marco for shufling dwords and simple
4329         floats.
4330
4331 2009-07-14  Zoltan Varga  <vargaz@gmail.com>
4332
4333         * mini-llvm-cpp.cpp: Update to latest llvm SVN api.
4334
4335         * Makefile.am (mono_LDADD): Pass LLVM_LDFLAGS to the linked.
4336
4337         * unwind.c (mono_unwind_get_ops_from_fde): Make this return
4338         the length of the native code as well.
4339
4340         * basic-simd.cs: Add a test for #521662.
4341
4342 Mon Jul 13 17:58:50 CEST 2009 Paolo Molaro <lupus@ximian.com>
4343
4344         * mini-ppc.c: fixed bug introduced by Steven's TLS changes.
4345
4346 2009-07-13  Mark Probst  <mark.probst@gmail.com>
4347
4348         * mini.c: Register function for getting the IP from a signal
4349         context with metadata.
4350
4351 2009-07-13  Zoltan Varga  <vargaz@gmail.com>
4352
4353         * method-to-ir.c (mono_method_to_ir): When calling a gshared method,
4354         call a generic class init trampoline if needed. Fixes #519336.
4355
4356         * generics.cs: Add a test.
4357         
4358 2009-07-09  Mark Probst  <mark.probst@gmail.com>
4359
4360         * method-to-ir.c: When doing a call which might be remote from
4361         shared generic code to other shared code with open type arguments,
4362         get the remoting invoke wrapper from the RGCTX and do an indirect
4363         call to it.
4364
4365 2009-07-03  Zoltan Varga  <vargaz@gmail.com>
4366
4367         * mini-trampolines.c (get_unbox_trampoline): Add an rgctx trampoline
4368         after the unbox trampoline in the full-aot case.
4369
4370 2009-07-02  jonas echterhoff <jonas@unity3d.com>
4371         
4372         * mini.c: Move initialization of jit_mutex before debugger initialization
4373         
4374         to avoid crashes.
4375         
4376         
4377         * Info.plist: added Info.plist and link flag to enable the mono executable
4378         to access other processes. Requires codesigning of the executable to work.
4379         
4380         * mdb-debug-info32-darwin.s: The same as mdb-debug-info32.s, changed to 
4381         
4382         compile on OS X.
4383         
4384
4385 2009-06-30  Zoltan Varga  <vargaz@gmail.com>
4386
4387         * driver.c (mini_regression): Handle loading errors. Fixes #508869.
4388
4389 2009-06-29  Zoltan Varga  <vargaz@gmail.com>
4390
4391         * mini-exceptions.c (get_generic_context_from_stack_frame): Fix the case
4392         when the generic instance is an instantiation of a subclass of the
4393         methods class. Fixes #517166.
4394
4395 2009-06-26  Zoltan Varga  <vargaz@gmail.com>
4396
4397         * mini-amd64.c (mono_arch_emit_prolog): Fix thread attaching in AOTed
4398         code.
4399
4400         * mini.c (mono_jit_thread_attach): Allow domain to be NULL for calls from
4401         AOTed code.
4402
4403         * CMakeLists.txt: Add minimal support for installation.
4404
4405 2009-06-25  Zoltan Varga  <vargaz@gmail.com>
4406
4407         * aot-compiler.c (emit_and_reloc_code): Factor out the code to
4408         determine whenever a method is directly callable to a separate function.
4409
4410         * mini-<ARCH>.c tramp-<ARCH>.c: Remove needless casts and add new
4411         needed ones as a result of the previous change.
4412
4413         * mini-<ARCH>.c tramp-<ARCH>.c: Use mgreg_t* as the
4414         type of register arrays.
4415
4416         * mini-trampolines.c tramp-<ARCH>.c aot-runtime.c: Use mgreg_t* as the
4417         type of register arrays.
4418
4419 2009-06-24  Jerry Maine  <crashfourit@gmail.com>
4420         
4421         Contributed under the terms of the MIT/X11 license by
4422         Jerry Maine <crashfourit@gail.com>.
4423
4424         * mini-amd64.c: Added code to convert simd IR to native amd64 sse.
4425
4426 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
4427
4428         * aot-compiler.c (emit_plt): Define debug labels for most plt entries.
4429
4430 2009-06-24  Neale Ferguson <neale@sinenomine.net>
4431
4432         * mini-s390x.c: Correct LCONV_TO_Ix and ICONV_TO_Ix routines. Fix leave_method
4433         dump of structure return value. Fix some formatting.
4434         * cpu-s390x.md: Fix lengths of instruction sequences.
4435         * mini-s390.c: Minor formatting changes.
4436
4437 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
4438
4439         * mini-x86.h: Applied patch from Romain Tartiere (romain@blogreen.org).
4440         Use sigaction on freebsd as well.
4441
4442 2009-06-23  Zoltan Varga  <vargaz@gmail.com>
4443
4444         * mini.h: Don't define MONO_ARCH_HAVE_TLS_GET to 0, as some code
4445         uses #ifdef on it.
4446         
4447         * mini.c (mini_init): Revert a change which breaks cross-compilation.
4448
4449 2009-06-22  Mark Probst  <mark.probst@gmail.com>
4450
4451         * mini-ppc.c, cpu-ppc.md: Enable TLS on Darwin/G4.
4452
4453 2009-06-22  Mark Probst  <mark.probst@gmail.com>
4454
4455         * mini.c, mini.h: Tell the runtime whether we support MONO_TLS.
4456
4457 2009-06-20  Martin Baulig  <martin@ximian.com>
4458
4459         * debug-mini.c
4460         (MonoDebuggerThreadFlags): New enum typedef.
4461         (MonoDebuggerThreadInfo): Added `guint32 thread_flags'.
4462         (mono_debugger_thread_created): Added `gpointer func' argument;
4463         initialize the new `thread_flags' field.
4464
4465 2009-06-18  Martin Baulig  <martin@ximian.com>
4466
4467         * debug-debugger.h (MonoDebuggerRuntimeFlags): New enum typedef.
4468         (MonoDebuggerInfo): Renamed the `dummy' field info `runtime_info'.
4469
4470         * debug-debugger.c
4471         (mini_debugger_set_attach_ok): New function; sets the attach-ok
4472         flag in `MONO_DEBUGGER__info.runtime_info'.
4473
4474         * driver.c
4475         (mono_main): Call mini_debugger_set_attach_ok() if generics
4476         sharing is disabled.
4477
4478 2009-06-22  Zoltan Varga  <vargaz@gmail.com>
4479
4480         * aot-compiler.c (add_wrappers): Fix a warning.
4481
4482         * mini-ppc.c tramp-ppc.c exceptions-ppc.c aot-compiler.c: Update after
4483         the ppc load/store macro changes.
4484
4485 2009-06-21  Zoltan Varga  <vargaz@gmail.com>
4486
4487         * tramp-ppc.c (mono_arch_patch_plt_entry): Implement this.
4488
4489         * aot-compiler.c (mono_compile_assembly): Sanitize the plt symbol too,
4490         not just the got symbol.
4491
4492         * mini-ppc.c aot-compiler.c unwind.c: Implement generation of unwind info
4493         on ppc.
4494
4495         * aot-compiler.c unwind.c: Add infrastructure for unwind support on
4496         ppc.
4497         
4498         * aot-compiler.c: Remove some fixmes.
4499
4500         * driver.c (mono_main): Print a helpful message when cross-compiling.
4501
4502         * mini.c (mini_init): Disable signal handlers when cross-compiling.
4503
4504         * method-to-ir.c (initialize_array_data): Do the optimization if the
4505         target byte order is little endian, instead of the host byte order.
4506
4507         * aot-compiler.c: Emit sizes for most symbols, only emit runtime-invoke
4508         wrappers into the mscorlib image, Emit a unique plt symbol for each
4509         image, emit symbols for plt entries.
4510
4511         * image-writer.c (img_writer_emit_symbol_size): New function to emit
4512         a .size directive.
4513         
4514 2009-06-20  Zoltan Varga  <vargaz@gmail.com>
4515
4516         * aot-compiler.c (add_wrappers): Avoid calling 
4517         mono_marshal_get_type_info () since it can assert for some types.
4518
4519         * method-to-ir.c (mono_method_to_ir): Disable aot when some forms of 
4520         ldtoken are used inside wrappers.
4521
4522         * helpers.c: Add support for prefixing tools with the arch name.
4523
4524         * mini.h (OP_LOADR_MEMBASE): New opcodes to load/store pointer sized
4525         quantities when using ilp32.
4526
4527         * mini-codegen.c: Use OP_LOADR_MEMBASE/OP_STORER_MEMBASE for loading/storing
4528         spill slots. Use sizeof(mgreg_t) for the spill slot size.
4529
4530         * image-writer.c: Use .long on ilp32.
4531
4532         * aot-compiler.c: Use 32 bit loads on ilp32.
4533         
4534 2009-06-19  Zoltan Varga  <vargaz@gmail.com>
4535
4536         * tramp-ppc.c (mono_arch_create_trampoline_code): Fix the ppc build.
4537
4538         * mini-ops.h: Use TARGET_POWERPC define for consistency.
4539
4540         * patch-info.h: Add 'MSCORLIB_GOT_ADDR' patch type.
4541
4542         * aot-compiler.c aot-runtime.c: Put the mscorlib got address into the 
4543         second got slot of every aot image.
4544         
4545         * aot-compiler.c aot-runtime.c mini-trampolines.c: Add support for
4546         aot on platforms with function pointers.
4547
4548         * mini-ppc.h mini-ppp.c cpu-ppc.md exceptions-ppc.c tramp-ppc.c: Add
4549         support for aot/full aot on ppc/ppc64.
4550         
4551         * tramp-<ARCH>.c (mono_arch_patch_plt_entry): Add 'got' and 'regs'
4552         arguments which are needed on ppc.
4553
4554         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Add 'regs'
4555         argument.
4556
4557         * mini-trampolines.c aot-runtime.c: Update after the above changes.
4558         
4559         * liveness.c (BITS_PER_CHUNK): Use MONO_BITSET_BITS_PER_CHUNK.
4560
4561         * regalloc2.c (BITS_PER_CHUNK): Ditto.  
4562
4563         * aot-compiler.c (emit_got_info): Fix reading unused memory.
4564
4565         * ir-emit.h (alloc_dreg): Add a 'return -1' to quiet some compilers.
4566
4567 2009-06-17  Geoff Norton  <gnorton@novell.com>
4568
4569         * aot-compiler.c: Ensure we dont try to close a null dwarf writer.
4570
4571 2009-06-17  Zoltan Varga  <vargaz@gmail.com>
4572
4573         * dwarfwriter.c (mono_dwarf_writer_create): Add an 'appending' parameter
4574         to control whenever the dwarf writer is in xdebug or aot mode.
4575         (emit_class_dwarf_info): Use a separate abbrev for structures without
4576         children.
4577
4578         * aot-compiler.c: Pass the appending parameter to 
4579         mono_dwarf_writer_create ().
4580
4581         * branch-opts.c (mono_merge_basic_blocks): Fix the case when bbn
4582         falls through to its next bblock. Fixes #513931.
4583
4584         * iltests.il: Add a test.
4585
4586         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Emit some line number
4587         infor even if emit_line is FALSE, as the apple linker seems to require it.
4588
4589         * image-writer.c (asm_writer_emit_symbol_diff): Call get_label ().
4590
4591         * dwarfwriter.c (emit_cie): Emit a separate symbol for the cie start, as
4592         gcc does.
4593         (emit_fde): Ditto.
4594
4595 2009-06-15  Zoltan Varga  <vargaz@gmail.com>
4596
4597         * exceptions-mips.c (mono_arch_get_throw_exception_by_name): Fix the
4598         mips build.
4599
4600 2009-06-13  Zoltan Varga  <vargaz@gmail.com>
4601
4602         * mini.h (struct MonoBasicBlock): Add 'has_jump_table' and 
4603         'has_call_handler' fields.
4604
4605         * method-to-ir.c (mono_method_to_ir): Set them if needed.
4606
4607         * branch-opts.c (mono_merge_basic_blocks): Avoid iterating through the
4608         first bblock if not needed. Fixes #512790.
4609         
4610 2009-06-11  Zoltan Varga  <vargaz@gmail.com>
4611
4612         * aot-compiler.c (mono_compile_assembly): Fix a warning.
4613         
4614         * aot-compiler.c (add_wrappers): Don't emit remoting-invoke-with-check
4615         wrappers.
4616
4617         * aot-runtime.c (mono_aot_get_method): Use the original method's code for
4618         remoting-invoke-with-check wrappers, which are not needed when running with
4619         full-aot, since it doesn't support remoting.
4620         
4621 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
4622
4623         * aot-compiler.c (emit_got_info): Don't emit offsets for the plt got entries.
4624
4625         * aot-compiler.c aot-runtime.c: Don't emit the first got offset in the
4626         method info, it is not used anymore.
4627
4628         * mini.h: Bump AOT file format version.
4629         
4630         * aot-compiler.c (arch_emit_plt_entry): Make the arm plt entries one
4631         word smaller.
4632
4633         * aot-runtime.c (mono_aot_get_plt_info_offset): Update after the
4634         change above.
4635         
4636         * tramp-arm.c (mono_arch_patch_plt_entry): Ditto.
4637
4638         * mini.h: Bump AOT file format version.
4639         
4640 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
4641
4642         * image-writer.c (asm_writer_emit_symbol_diff): Disable the 
4643         TARGET_ASM_APPLE stuff for now, as it doesn't seem to work on the
4644         iphone.
4645
4646         * mini-arm.c (mono_arch_output_basic_block): Fix the implementation
4647         of CKFINITE and FBGE for VFP.
4648
4649 2009-06-09  Zoltan Varga  <vargaz@gmail.com>
4650
4651         * aot-compiler.c: Don't align code to 16 bytes on arm.
4652         
4653         * aot-compiler.c (emit_method_code): Emit the unbox trampolines right
4654         before the methods they belong to.
4655
4656         * aot-runtime.c (mono_aot_plt_resolve): Avoid creating trampolines in
4657         the full-aot case if possible, since the trampoline will be called right 
4658         away.
4659
4660         * aot-compiler.c (mono_compile_assembly): Decrease the number of full aot
4661         trampolines to 1024 after the change above.
4662
4663         * aot-compiler.c (arch_emit_specific_trampoline): Rework the arm
4664         trampoline to save 8 bytes per trampoline.
4665
4666         * tramp-arm.c (mono_arch_create_trampoline_code_full): Update after the
4667         change above.
4668
4669 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
4670
4671         * aot-compiler.c: Use acfg->temp_prefix instead of .L to prefix labels.
4672
4673 2009-06-08  Martin Baulig  <martin@ximian.com>
4674
4675         * debug-mini.c
4676         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
4677         (_mono_debugger_throw_exception): Don't make this static.
4678         (_mono_debugger_unhandled_exception): Likewise.
4679         (mono_debugger_handle_exception): Moved to mini-exceptions.c
4680
4681         * debug-mini.c
4682         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
4683         (_mono_debugger_throw_exception): Add function prototype.
4684         (_mono_debugger_unhandled_exception): Likewise.
4685
4686         * mini-exceptions.c
4687         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
4688         arg; return the first exception handler if the exception is caught
4689         and we're running inside the debugger.
4690         (mono_debugger_handle_exception): Moved here from debug-mini.c;
4691         improve exception handle inside runtime-invoke, check whether the
4692         exception is actually caught in the method being invoked and not
4693         by the runtime-invoke-wrapper.
4694
4695 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
4696
4697         * image-writer.c: Improve support for the osx assembler.
4698
4699         * dwarfwriter.c: Avoid the usage of subsections if the assembler doesn't
4700         support them.
4701
4702 2009-06-08  Martin Baulig  <martin@ximian.com>
4703
4704         * debug-mini.c
4705         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
4706         (_mono_debugger_throw_exception): Don't make this static.
4707         (_mono_debugger_unhandled_exception): Likewise.
4708         (mono_debugger_handle_exception): Moved to mini-exceptions.c
4709
4710         * debug-mini.c
4711         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
4712         (_mono_debugger_throw_exception): Add function prototype.
4713         (_mono_debugger_unhandled_exception): Likewise.
4714
4715         * mini-exceptions.c
4716         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
4717         arg; return the first exception handler if the exception is caught
4718         and we're running inside the debugger.
4719         (mono_debugger_handle_exception): Moved here from debug-mini.c;
4720         improve exception handle inside runtime-invoke, check whether the
4721         exception is actually caught in the method being invoked and not
4722         by the runtime-invoke-wrapper.
4723
4724 2009-06-07  Zoltan Varga  <vargaz@gmail.com>
4725
4726         * image-writer.c (append_subsection): Don't align subsections of the
4727         debug_line section as a workaround.
4728
4729         * dwarfwriter.c: Emit line number info in the AOT case as well.
4730
4731 2009-06-06  Steven Munroe  <munroesj@us.ibm.com>
4732
4733         This patch is contributed under the terms of the MIT/X11 license
4734
4735        * mini-ppc.c (mono_arch_emit_exceptions): Change assert to
4736        code_len <= code_size
4737
4738 2009-06-06  Zoltan Varga  <vargaz@gmail.com>
4739
4740         * mini-mips.c (mips_emit_exc_by_name): Fix the mips build.
4741
4742 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
4743
4744         * aot-compiler.c aot-runtime.c: Delete references to static rgctx
4745         invoke wrappers, we now use trampolines instead.
4746
4747 2009-06-04  Mark Probst  <mark.probst@gmail.com>
4748
4749         * mini-darwin.c: The exception thread must not be registered with
4750         the GC.
4751
4752 2009-06-04  Mark Probst  <mark.probst@gmail.com>
4753
4754         * mini-gc.c: Disable the code because it makes SGen crash.
4755
4756 2009-06-03  Zoltan Varga  <vargaz@gmail.com>
4757
4758         * aot-compiler.c (mono_compile_assembly): Handle file open errors gracefully
4759         instead of asserting.
4760
4761 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
4762
4763         * aot-compiler.c (mono_compile_assembly): Move the creation of the
4764         output file after the code has been compiled.
4765
4766 2009-05-30  Zoltan Varga  <vargaz@gmail.com>
4767
4768         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Fix 64 bit support.
4769
4770 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
4771
4772         * aot-compiler.c aot-runtime.c: Get rid of the shared/non-shared got
4773         entries distinction to simplify the code.
4774
4775         * mini.h: Bump AOT file format version.
4776         
4777 2009-05-28  Zoltan Varga  <vargaz@gmail.com>
4778
4779         * objects.cs: Fix the signature of one of the tests.
4780
4781         * mini.c (mini_create_ftnptr): New helper function, moved here from
4782         object.c.
4783         (mini_get_addr_from_ftnptr): Ditto.
4784         (mini_init): Install the new helpers.
4785
4786 2009-05-28  Martin Baulig  <martin@ximian.com>
4787
4788         Correctly initialize the debugger when embedding Mono.
4789
4790         * mdb-debug-info32.s, mdb-debug-info64.s: Add a global variable
4791         `MONO_DEBUGGER__using_debugger' to the `.mdb_debug_info' section;
4792         see documentation in mini_debug_running_inside_mdb().
4793
4794         * debug-debugger.c
4795         (mini_debug_running_inside_mdb): New function to check whether
4796         we're running inside mdb.
4797
4798         * mini.c (mini_init): Call mini_debugger_init() if we're running
4799         inside the debugger.
4800
4801         * driver.c (mono_main): Moved the call to mini_debugger_init()
4802         into mini_init() to make this work when embedding Mono.
4803
4804         * debug-debugger.c (mini_debugger_init): Warn about duplicate
4805         calls to mini_debugger_init().
4806
4807         * mini.h: Rename mono_debugger_init() -> mini_debugger_init(),
4808         mono_debugger_main() -> mini_debugger_main() and put them inside a
4809         `MONO_DEBUGGER_SUPPORTED' conditional.
4810
4811 2009-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
4812
4813         * mini-trampolines.c: Kill mono_find_delegate_trampoline_by_addr as
4814         this is no longer in use.
4815         * mini.h: Same.
4816
4817 2009-05-26  Zoltan Varga  <vargaz@gmail.com>
4818
4819         * mini-sparc.c (add_outarg_load): Fix the sparc build.
4820
4821         * aot-compiler.c (emit_method_code): Always write out C style symbols for
4822         methods.
4823
4824 2009-05-27  Martin Baulig  <martin@ximian.com>
4825
4826 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
4827
4828         * mini-x86.c (mono_arch_output_basic_block): Fix the precision of
4829         long_conv_to_r_un to 64 bits.
4830
4831         * cpu-x86.md: Increase the instruction size due to the changes.
4832
4833         * iltests.il.in: Add regression test.
4834
4835         Fixes #467201.
4836
4837 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
4838
4839         * objects.cs: Move the previous test from basic.cs to here.
4840
4841 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
4842
4843         * basic.cs: Add regression test for #506915.
4844
4845 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
4846
4847         * method-to-ir.c (mono_method_to_ir): When doing the ldobj+stobj
4848         optimization we must check the bb of the first byte of stobj as
4849         it's the only one set in cil_offset_to_bb.
4850
4851         Fixes #506915.  
4852
4853 2009-05-25  Zoltan Varga  <vargaz@gmail.com>
4854
4855         * image-writer.c: Fix pointer directive on ppc64.
4856
4857 2009-05-24  Zoltan Varga  <vargaz@gmail.com>
4858
4859         * image-writer.c (asm_writer_emit_section_change): Avoid using
4860         .bss subsections on ppc too.
4861
4862 2009-05-23  Zoltan Varga  <vargaz@gmail.com>
4863
4864         * image-writer.c: Fix the definition of TARGET_ASM_....
4865         
4866         * image-writer.c: Fix the emission of assembler directives in the last
4867         change.
4868
4869         * mini-ppc.c (mono_arch_emit_exceptions): Increase the size of the
4870         exception throwing code to accomodate ppc64.
4871
4872         * tramp-ppc.c (mono_arch_get_nullified_class_init_trampoline): Increase the
4873         size to work on ppc64 too.
4874
4875         * mini-ppc.h (MonoCompileArch): Enable static rgctx trampolines on ppc64
4876         too.
4877
4878         * image-writer.c: Clean up the #ifdef hell a bit by adding defines for
4879         the assembler dialect instead of using platform specific defines.
4880
4881 2009-05-22  Geoff Norton  <gnorton@novell.com>
4882
4883         * mini-arm.c (get_call_info): If a structure is split between the stack
4884         and argument registers, we should not advance the stack pointer by the entire
4885         native size, but just by the amount that spilled.
4886
4887 2009-05-22  Zoltan Varga  <vargaz@gmail.com>
4888
4889         * mini-arm.c (get_call_info): Handle structures with alignment requirements
4890         correctly.
4891
4892 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
4893
4894         * aot-compiler.c (emit_extra_methods): Encode direct runtime invoke
4895         wrappers normally.
4896         
4897         * aot-compiler.c (add_extra_method): Fix up the collection of extra
4898         methods so wrapper don't get added twice.
4899         (add_generic_instances): Don't add methods of arrays.
4900
4901         * generics.cs: Mark one test as !FULLAOT.
4902
4903 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
4904
4905         * mini-x86.c (emit_move_return_value): Remove unused vars.
4906
4907 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
4908
4909         * mini-x86.c (mono_arch_emit_call): The decompose code now supports
4910         decomposing 8 bytes structs into a LCALL.
4911
4912         * mini-x86.c (emit_move_return_value): We no longer push the vtype
4913         pointer for where to store the returned regs.
4914
4915         * decompose.c (mono_decompose_vtype_opts): Fix the comment to properly
4916         state the concern.
4917
4918         Fixes #471747, #471751 and #4734530 (in fact, it's a bunch of dups).
4919
4920 2009-05-20  Miguel de Icaza  <miguel@novell.com>
4921
4922         * aot-runtime.c (mono_aot_init): Use g_getenv to work on systems
4923         without getenv.
4924
4925 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
4926
4927         * aot-compiler.c (add_wrappers): Add StructureToPtr/PtrToStructure wrappers.
4928
4929         * basic.cs: Move the test_2_cprop_bug () test to generics.cs as it involves
4930         generics.
4931
4932 2009-05-20 Rodrigo Kumpera  <rkumpera@novell.com>
4933
4934         * local-propagation.c (mono_local_cprop): Avoid local propagation
4935         across paired add/sub if the first instruction dest reg is it's
4936         source reg. For example:
4937
4938         int_add_imm R12 <- R12 [1] clobbers: 1
4939         int_sub_imm R42 <- R12 [1] clobbers: 1
4940
4941         The cprop pass would wrongly const prop + 1 to int_sub_imm which doesn't
4942         maintain the math identify.
4943
4944         Fixes #505375.
4945
4946 2009-05-20  Andreia Gaita  <avidigal@novell.com>
4947
4948         * Makefile.am: avoid going on the network just to get the revision,
4949         use git log instead
4950
4951 2009-05-19  Massimiliano Mantione  <massi@ximian.com>
4952
4953         Fixed estimate for short branches on amd64 (they were off mark, and
4954         enabling call prolog-epilog instrumentations caused assertions).
4955         * mini.h (struct MonoBasicBlock): added max_length field to hold the
4956         estimate for the maximum length of this basic block.
4957         * mini-amd64.c:
4958         - mono_arch_emit_prolog: compute max_length for each basic block
4959           (instead of max_offset), and inflate size estimate also for entry bb
4960           in case of code instrumentation.
4961         - mono_arch_output_basic_block: get rid of "cpos" (the current
4962           estimated "position" in the code), and always use "offset" instead,
4963           which is accurate; at the beginning of the function quickly recompute
4964           max_offset for all the remaining blocks, starting from the current
4965           cfg->code_len (which is correct, and not estimated) and using the
4966           estimated block lengths computed previously.
4967
4968 2009-05-17  Zoltan Varga  <vargaz@gmail.com>
4969
4970         * exceptions-ppc.c: Remove the caching from the trampoline creation 
4971         functions, it is already done in the caller.
4972
4973         * mini-trampolines.c (mono_llvm_vcall_trampoline): Fix the llvm build.
4974
4975         * mini-ppc.h mini-arm.h mini-x86.h mini-amd64.h: Add 
4976         MONO_ARCH_GSHARED_SUPPORTED define.
4977
4978         * mini.c (mini_init): Use the MONO_ARCH_GSHARED_SUPPORTED define.
4979
4980         * mini-arm.c mini.c: Get rid of the unused mono_arch_fixup_jinfo ()
4981         function.
4982
4983 2009-05-16  Zoltan Varga  <vargaz@gmail.com>
4984
4985         * jit-icalls.c (mono_helper_compile_generic_method): Get rid of the 
4986         call to mono_marshal_get_rgctx_invoke ().
4987
4988         * mini.c method-to-ir.c mini-trampolines.c: Get rid of the usage of
4989         mono_marshal_get_static_rgctx_invoke (), all platforms which support
4990         gshared use the static rgctx trampolines now.
4991         
4992         * mini.c (mini_init): Call mono_set_generic_sharing_supported () if the
4993         platform supports it.
4994
4995 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
4996
4997         * mini-arm.c (mono_arch_allocate_vars): Correctly save R5 when using AOT.
4998
4999         * aot-compiler.c (emit_method_code): Avoid duplicate labels for methods.
5000
5001 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
5002
5003         * mini-ppc.c (mono_arch_emit_exceptions): Nullify the processed patches.
5004
5005         * tramp-ppc.c (mono_arch_nullify_class_init_trampoline): Implement this
5006         for ppc.
5007
5008 2009-05-15  Massimiliano Mantione  <massi@ximian.com>
5009
5010         Made it possible for mono_arch_instrument_epilog to preserve
5011         argument registers, otherwise instrumenting the "epilogue" before
5012         a tail call would clobber them.
5013         * mini.h: Added "mono_arch_instrument_epilog_full" prototype, which
5014         if like mono_arch_instrument_epilog but with an additional parameter
5015         that states if argument registers must be preserved.
5016         * mini.c: implemented mono_arch_instrument_epilog as a call to
5017         mono_arch_instrument_epilog_full without asking to preserve argument
5018         registers (this makes the existing code work as usual).
5019         * mini-amd64.c:
5020         - mono_arch_instrument_epilog: add parameter to transform it into
5021         mono_arch_instrument_epilog_full, and preserve argument registers
5022         when required.
5023         - mono_arch_output_basic_block, OP_TAILCALL case: call
5024         mono_arch_instrument_epilog_full.
5025         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
5026         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-x86.c:
5027         only transformed mono_arch_instrument_epilog into
5028         mono_arch_instrument_epilog_full.
5029
5030 2009-05-15  Geoff Norton  <gnorton@novell.com>
5031
5032         * mini-darwin.c: This works on arm now.
5033
5034 2009-05-14  Geoff Norton  <gnorton@novell.com>
5035
5036         * jit.h, driver.c: Allow full-aot to be decided programatically by the
5037         embedding api.
5038
5039 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
5040
5041         * aot-compiler.c (emit_method_code): Skip a few more characters in the debug
5042         label names.
5043
5044         * mini-trampolines.c (mono_magic_trampoline): Handle static rgctx invoke
5045         wrappers during full aot mode correctly.
5046
5047         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle shared generic
5048         methods correctly.
5049
5050         * aot-compiler.c (mono_aot_method_hash): Use our internal version of
5051         mono_metadata_type_hash ().
5052
5053 2009-05-14  Massimiliano Mantione  <massi@ximian.com>
5054
5055         * mini.h, mini-codegen.c, mini-alpha.c, mini-amd64.c, mini-arm.c,
5056         mini-hppa.h, mini-hppa.c, mini-ia64.c, mini-mips.h, mini-mips.c,
5057         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-886.c:
5058         Removed MONO_INST_BRLABEL from the instruction flags, and the
5059         remaining code that used it, because we do not support branches inside
5060         basic blocks (and branch target labels) anymore.
5061         * Makefile.am: As part of the above cleanup, remove reference to
5062         BURG files which don't exist anymore.
5063
5064 2009-05-14  Zoltan Varga  <vargaz@gmail.com>
5065
5066         * image-writer.c (asm_writer_emit_local_symbol): Make this a nop on
5067         osx.
5068
5069         * mini-mips.c mini-mips.h exceptions-mips.c: Transition the mips backend
5070         to use mono_arch_throw_corlib_exception.
5071
5072         * mini-ppc.c mini-ppc.h exceptions-ppc.c: Use 
5073         mono_arch_throw_corlib_exception for throwing corlib exceptions.
5074
5075         * aot-runtime.c (decode_patch): Allocate the data for R4/R8 from the
5076         domain mempool.
5077
5078         * mini.c (mono_patch_info_dup_mp): Copy the table of switch targets too.
5079
5080         * aot-compiler.c: Emit a local symbol prefixed with the assembly name 
5081         for the got to make debugging easier and to avoid confusing it with the
5082         system got.
5083         
5084         * aot-compiler.c (emit_method_code): Emit a C style symbol for each
5085         method so a breakpoint can be set when using gdb.
5086
5087 2009-05-13  Zoltan Varga  <vargaz@gmail.com>
5088
5089         * aot-compiler.c (mono_aot_method_hash): Implement this properly based
5090         on mono_method_get_imt_slot ().
5091
5092         * aot-runtime.c (find_extra_method_in_amodule): Get rid of the
5093         num_decodes variables.
5094
5095         * aot-compiler.c (mono_aot_method_hash): Revert part of the last
5096         change as it doesn't seem to work.
5097         
5098         * aot-compiler.c (mono_aot_method_hash): Improve the hashing of
5099         wrappers.
5100
5101 2009-05-12  Zoltan Varga  <vargaz@gmail.com>
5102
5103         * aot-compiler.c mini.c mini-amd64.h mini-arm.h: Kill 
5104         MONO_ARCH_FULL_AOT_IMT_SUPPORTED define, both platforms now support imt.
5105
5106         * mini.c (mini_init): Install mono_aot_get_imt_thunk as the IMT thunk
5107         builder when using full aot.
5108
5109         * mini-amd64.c (mono_arch_build_imt_thunk): Don't handle the full-aot case
5110         here, it is already handled.
5111         
5112         * mini-arm.c (mono_arch_emit_imt_argument): Pass the dynamic imt arg
5113         correctly for IMT.
5114
5115         * aot-compiler.c (arch_emit_imt_thunk): Implement this for ARM.
5116
5117         * mini-arm.h: Enable IMT for full aot.
5118         
5119         * aot-compiler.c (mono_compile_assembly): Don't emit imt thunk if the
5120         arch doesn't support it.
5121
5122         * mini.c (mini_init): Don't disable IMT for full aot if the
5123         architecture supports it.
5124
5125         * mini.h (MonoAotTrampoline): New enum containing the different types
5126         of 'numerous' trampolines.
5127         (MONO_AOT_FILE_VERSION): Bump this.
5128
5129         * aot-compiler.c aot-runtime.c: Unify the handling of specific and
5130         static rgctx trampolines. Add support for full-aot IMT thunks.
5131
5132         * mini-amd64.h: Enable IMT for full aot.
5133
5134         * TestDriver.cs: Add a CategoryAttribute class and an --exclude option
5135         to exclude tests belonging to a category.
5136
5137         * generics.cs: Mark some tests with a !FULLAOT category.
5138
5139         * Makefile.am (fullaotcheck): Run tests with --exclude !FULLAOT. Include
5140         generics tests.
5141
5142 2009-05-11  Zoltan Varga  <vargaz@gmail.com>
5143
5144         * aot-compiler.c (emit_and_reloc_code): Move the implementation of
5145         MONO_PATCH_INFO_GOT_OFFSET to a separate arch-specific function.
5146         (emit_plt): Fix a warning.
5147
5148 2009-05-10  Zoltan Varga  <vargaz@gmail.com>
5149
5150         * aot-compiler.c aot-runtime.c: Fix the build by moving is_shared_got_patch
5151         back into aot-compiler.c to a place where the other functions shared by
5152         the runtime and aot compiler are.
5153         
5154         * aot-compiler.c aot-runtime.c: Emit the got addr using a separate symbol,
5155         as done previously, instead of in MonoAotFileInfo, since pointers might have
5156         alignment requirements.
5157
5158         * mini.h: Bump AOT file format version.
5159
5160 2009-05-10  Miguel de Icaza  <miguel@novell.com>
5161
5162         * aot-runtime.c (mono_aot_is_shared_got_patch): Move this routine
5163         that is used at runtime from the aot-compiler.c, this makes it
5164         work on setups that remove the AOT compiler from the output
5165         image. 
5166
5167 2009-05-09  Zoltan Varga  <vargaz@gmail.com>
5168
5169         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Implement this for
5170         PPC.
5171
5172         * mini-ppc.h: Enable static rgctx trampolines for ppc.
5173
5174         * mini-<ARCH>.h: Kill the MONO_ARCH_ENABLE_EMIT_STATE_OPT define.
5175
5176         * decompose.c (mono_decompose_long_opts): Move the ppc/sparc specific 
5177         stuff to mono_arch_decompose_long_opts ().
5178         (mono_decompose_opcode): Remove some dead code.
5179
5180 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
5181
5182         * method-to-ir.c (mono_method_to_ir): Fix boostrap of non amd64 builds
5183         cmethod can be null for quite a some reasons.
5184
5185 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
5186
5187         * method-to-ir.c (mono_method_to_ir): Fix non amd64 builds.
5188
5189 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
5190
5191         * aot-compiler.c (arch_emit_got_access): Fix the aot-not-supported build.
5192
5193 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
5194
5195         * method-to-ir.c (mono_emit_call_args): Add a 'tail' flag argument.
5196         (mono_method_to_ir): Use MONO_ARCH_USE_OP_TAIL_CALL macro to determine
5197         whenever to make tail calls using OP_TAIL_CALL. Enable support for tail
5198         calls returning structures by addr on amd64.
5199
5200         * mini-amd64.h (MONO_ARCH_USE_OP_TAIL_CALL): New arch-specific macro.
5201
5202         * iltests.il.in: Restructure the tail call tests a bit.
5203         
5204 2009-05-07  Zoltan Varga  <vargaz@gmail.com>
5205
5206         * aot-compiler.c (add_wrappers): Add remoting-invoke-with-check wrappers
5207         for virtual methods too.
5208
5209 2009-05-06  Raja R Harinath  <harinath@hurrynot.org>
5210
5211         * method-to-ir.c (mono_method_to_ir): Revert change of 2009-05-02
5212         due to regression in verifying System.dll.
5213
5214 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
5215
5216         * debug-mini.c (mono_debugger_method_has_breakpoint): Allow breakpoints
5217         in dynamic methods.
5218
5219         * dwarfwriter.c (emit_class_dwarf_info): Add support for generic
5220         instances.
5221
5222         * aot-compiler.c aot-runtime.c: Use our own hash function instead of
5223         g_str_hash () which can change.
5224
5225         * driver.c (mini_regression): Disable optimizations not supported by
5226         the cpu. Fixes #500019.
5227
5228         * aot-runtime.c (mono_aot_get_unwind_info): Fix the --enable-minimal=aot
5229         build.
5230
5231 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
5232
5233         * mini-llvm.c (mono_llvm_emit_method): Update the OP_TLS_GET implementation
5234         to the latest LLVM code.
5235
5236 2009-05-05  Zoltan Varga  <vargaz@gmail.com>
5237
5238         * genmdesc.pl (load_opcodes): Fix this after the TARGET_... changes.
5239
5240 2009-05-04  Zoltan Varga  <vargaz@gmail.com>
5241
5242         * mini-llvm.c (mono_llvm_emit_method): Implement TLS support on 
5243         x86/amd64.
5244
5245         * aot-compiler.c (encode_patch_list): Simplify this considerably as we are
5246         no longer saving offsets, so just save the patch types along with the other
5247         info.
5248         * aot-runtime.c (load_patch_info): Update after the changes to 
5249         encode_patch_list ().
5250         (decode_got_entry): Removed, merged into load_patch_info ().
5251         (is_shared_got_patch): Removed, call the same function from
5252         aot-compiler.c.
5253
5254         * mini.h: Bump aot file format version.
5255         
5256         * aot-compiler.c aot-runtime.c: Resurrect static linking support. Kill the
5257         half-finished no-dlsym code.
5258
5259         * aot-runtime.c (load_method): Kill the old and bit-rotten use_loaded_code
5260         option.
5261
5262         * mini-<ARCH>.h mini-trampolines.c aot-runtime.c: Kill the 
5263         MONO_ARCH_HAVE_CREATE_TRAMPOLINE_FROM_TOKEN define.
5264
5265 2009-05-02  Zoltan Varga  <vargaz@gmail.com>
5266
5267         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Increase the
5268         buffer length to work with AOT code.
5269
5270         * method-to-ir.c (mono_method_to_ir): Handle loading errors in the
5271         ldfld/stfld opcodes.
5272
5273         * exceptions-x86.c (mono_arch_get_throw_exception_by_name): Simplify this
5274         as it is not used.
5275
5276         * mini-llvm.c mini-x86.c: Implement 32 bit and x86 support.
5277
5278         * ssa.c (mono_ssa_compute): Don't skip I8 values when using LLVM.
5279
5280         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Update to the latest
5281         LLVM API.
5282
5283         * mini.c (mini_method_compile): Set the from_llvm flag in MonoJitInfo
5284         if needed. Don't decompose long operations when using llvm.
5285
5286 2009-05-01  Zoltan Varga  <vargaz@gmail.com>
5287
5288         * aot-compiler.c aot-runtime.c: Use mono_pagesize () instead of the
5289         PAGESIZE constant.
5290
5291         * aot-runtime.c (load_aot_module): Get rid of another mprotect call.
5292
5293 2009-05-03  Martin Baulig  <martin@ximian.com>
5294
5295         * debug-debugger.c (debugger_insert_source_breakpoint): Don't call
5296         mono_debugger_insert_method_breakpoint() since the class init
5297         handler we're inserting at the top of the method already gives us
5298         a notification.
5299
5300 2009-04-30  Zoltan Varga  <vargaz@gmail.com>
5301
5302         * decompose.c (mono_decompose_long_opts): Move the implementation of LNEG
5303         to mono_arch_decompose_long_opts () for x86 and arm.
5304
5305 2009-04-29  Zoltan Varga  <vargaz@gmail.com>
5306
5307         * mini-codegen.c (mono_regstate_alloc_int): Use __x86_64__ instead of
5308         TARGET_AMD64 here.
5309
5310 2009-04-28  Zoltan Varga  <vargaz@gmail.com>
5311
5312         * *.h *.c: Use TARGET_<ARCH> defines instead of __<arch>__ defines in the
5313         JIT code.
5314
5315 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
5316
5317         * aot-runtime.c (mono_aot_create_specific_trampoline): Add a stat for the
5318         number of trampolines used in full-aot mode.
5319
5320         * aot-compiler.c: Add an ntrampolines option to set the number of 
5321         trampolines emitted in full-aot mode.
5322
5323 2009-04-27  Zoltan Varga  <vargaz@gmail.com>
5324
5325         * mini-llvm.c (mono_llvm_emit_method): Implement OP_CHECK_THIS using
5326         a volatile load. Get rid of get_tempname (), llvm assigns names
5327         automatically.
5328
5329         * mini-llvm-cpp.cpp (mono_llvm_build_volatile_load): New instruction
5330         builder function.
5331
5332         * mini-llvm.c (mono_llvm_emit_method): Don't call LLVMGetParam on
5333         a value.
5334
5335         * abcremoval.c (REPORT_ABC_REMOVAL): Don't output messages at verbose
5336         level 1.
5337
5338         * mini-codegen.c (mono_local_regalloc): Prevent sreg1/dreg to be allocated
5339         to the same register as a fixed sreg2. Fixes #497271.
5340
5341         * iltests.il.in: Add a new test.
5342
5343 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
5344
5345         * mini-amd64.c: Use moves instead of pushes for passing arguments on the
5346         stack, since pushes complicate exception handling.
5347
5348         * exceptions-amd64.c (mono_arch_find_jit_info): Don't pop the arguments of
5349         the stack if they are passed using moves.
5350
5351         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
5352
5353         * method-to-ir.c (mono_method_to_ir): Disable fast virtual generic methods
5354         when using llvm.
5355
5356         * mini-llvm.c (mono_llvm_emit_method): Call jit icall wrappers, not the 
5357         icalls themselves. Convert arguments of FCOMPARE. Convert the destination
5358         of FMOVE if it is an R4.
5359
5360 2009-04-25  Zoltan Varga  <vargaz@gmail.com>
5361
5362         * mini-ops.h: Add OP_LLVM_OUTARG_VT opcode.
5363
5364         * mini.h (LLVMCallInfo): New structure to store calling convention 
5365         information for the LLVM back end similar to the CallInfo structures in 
5366         the back-ends.
5367
5368         * mini-amd64.c (mono_arch_get_llvm_call_info): New arch function to return
5369         call information in a format usable by LLVM.
5370         (mono_arch_emit_call): Move the LLVM handling code to mono_llvm_emit_call ().
5371
5372         * method-to-ir.c (mono_emit_call_args): Emit calls using 
5373         mono_llvm_emit_call () when compiling using LLVM.
5374
5375         * mini-llvm.c: Implement support for passing/receiving valuetypes. Add
5376         comments to all functions. Fix memory leaks. Add a public init/cleanup
5377         function.
5378
5379         * mini.c: Call the llvm init/cleanup functions in mini_init()/cleanup().
5380
5381         * method-to-ir.c (handle_array_new): Disable llvm when calling the vararg
5382         mono_array_new_va () jit icall.
5383         
5384 Fri Apr 24 16:44:08 CEST 2009 Paolo Molaro <lupus@ximian.com>
5385
5386         * Makefile.am, genmdesc.c, genmdesc.pl: tiny refactor to allow
5387         multiple machine description files to be specified.
5388         * mini-ops.h: fixes for cross-compilation.
5389
5390 2009-04-22  Miguel de Icaza  <miguel@novell.com>
5391
5392         * aot-runtime.c (make_writable): Use mono_mprotect to simplify
5393         some porting work.
5394
5395 2009-04-22  Zoltan Varga  <vargaz@gmail.com>
5396
5397         * method-to-ir.c (mono_method_to_ir): Force init_locals to be TRUE
5398         to prevent asserts in various passes. Fixes #497220.
5399
5400 2009-04-21  Zoltan Varga  <vargaz@gmail.com>
5401
5402         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove
5403         a racy assert.
5404
5405         * aot-compiler.c aot-runtime.c: Emit the unwind info into a separate
5406         table to avoid duplicates.
5407
5408         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5409         
5410         * aot-compiler.c (emit_method_code): Avoid writing symbols if the nodebug
5411         option is used.
5412
5413 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
5414
5415         * mini.c (mini_method_verify): Fail fulltrust code if the exception
5416         is for method or field access.
5417
5418 2009-04-20  Zoltan Varga  <vargaz@gmail.com>
5419
5420         * mini-llvm-cpp.cpp (mono_llvm_dump_value): New helper function to print
5421         a Value to stdout.
5422
5423         * mini-llvm.c (mono_llvm_emit_method): Use it.
5424         
5425         * mini-llvm.c (type_to_llvm_type): Fix the mapping of enums.
5426         (mono_llvm_emit_method): Add support for CAS. Fix handling of CSET opcodes
5427         on volatile values.
5428
5429         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add support for 
5430         synchronized methods.
5431
5432         * mini.c (mini_method_compile): Disable LLVM for dynamic methods.
5433
5434         * mini.c (mini_method_compile): Enable ABCREM when running with LLVM.
5435
5436         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOADI4_MEM/
5437         OP_LOADI8_MEM.
5438
5439         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add a MONO_LLVM env variable
5440         allowing some options to be set dynamically.
5441
5442 2009-04-19  Zoltan Varga  <vargaz@gmail.com>
5443
5444         * mini-llvm.c (mono_llvm_emit_method): Handle compares followed by an
5445         unconditional branch.
5446
5447         * mini.h (MonoTrampolineType): Add new trampoline type 
5448         'MONO_TRAMPOLINE_LLVM_VCALL' which handles virtual calls made from LLVM
5449         compiled code.
5450
5451         * mini-trampolines.c (mono_llvm_vcall_trampoline): New C trampoline 
5452         function.
5453
5454         * mini-trampolines.c (mono_create_llvm_vcall_trampoline): New trampoline
5455         creation function.
5456
5457         * mini.c (mini_init): Avoid using the common vtable trampoline when LLVM
5458         is enabled. Instead, use the llvm vcall trampoline.
5459         
5460         * mini-trampolines.c (mono_get_vcall_slot_addr): New helper function.
5461
5462         * mini-trampolines.c tramp-amd64.c tramp-x86.c: Use it.
5463         
5464         * mini-<ARCH>.c: Get rid of the identical mono_arch_get_vcall_slot_addr ()
5465         functions.
5466
5467         * mini-<ARCH>.h mini-trampolines.c mini.c: Get rid of 
5468         MONO_ARCH_COMMON_VTABLE_TRAMPOLINE, it is supported by all archs.
5469
5470         * mini-ia64.c (mono_arch_lowering_pass): Null out the sregs of the
5471         OP_IA64_CSET opcode.
5472
5473         * mini.c: Fix a warning.
5474
5475         * mini-llvm.c (mono_llvm_emit_method): Convert arguments of SWITCH and
5476         THROW to the appropriate llvm type.
5477
5478 2009-04-18  Zoltan Varga  <vargaz@gmail.com>
5479
5480         * mini.c (mini_method_compile): Add statistics for methods JITted
5481         with/without LLVM.
5482
5483 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
5484
5485         * method-to-ir.c: Fix the computation of ins_sreg_counts for ia64
5486         OP_IA64_CMP_<cond>_IMM opcodes.
5487
5488 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
5489
5490         * mini-llvm.c (emit_cond_system_exception): Implement throwing of
5491         corlib exceptions.
5492
5493         * dwarfwriter.c (mono_dwarf_writer_emit_method): Handle --regression
5494         correctly.
5495
5496         * mini-llvm.c (type_to_llvm_type): Avoid accessing t->data.klass for
5497         GENERICINST.
5498
5499 2009-04-17  Atsushi Enomoto  <atsushi@ximian.com>
5500
5501         * mini-exceptions.c : add thread id to EXCEPTION trace message.
5502
5503 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
5504
5505         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Fix AOT
5506         support.
5507
5508         * tramp-x86.c (mono_arch_get_unbox_trampoline): Implement static
5509         rgctx invoke trampolines for x86.
5510
5511         * mini-x86.c (mono_arch_output_basic_block): Add a few nops before
5512         indirect calls to simplify get_vcall_slot_addr (). Fixes #494567.
5513         (mono_arch_get_vcall_slot): Simplify this.
5514
5515 2009-04-16  Zoltan Varga  <vargaz@gmail.com>
5516
5517         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Move the calls to
5518         mono_debug_add_delegate_trampoline () to get_delegate_invoke_impl ().
5519
5520 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
5521
5522         * aot-compiler.c tramp-arm.c mini-arm.c: Implement static rgctx 
5523         trampolines for ARM. Add full-aot support for delegate invokes for ARM.
5524
5525         * mini-trampolines.c (mono_magic_trampoline): Fix the build.
5526
5527         * liveness.c (visit_bb): Remove a needless assert.
5528
5529 2009-04-13  Zoltan Varga  <vargaz@gmail.com>
5530
5531         * mini-trampolines.c (mono_create_delegate_trampoline): Delegate the
5532         full aot support to the arch specific code.
5533
5534         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Add full-aot support.
5535
5536         * aot-compiler.c (emit_trampolines): Emit delegate invoke impl trampolines.
5537
5538         * aot-compiler.c (emit_named_code): Rename this to 'emit_trampoline'.
5539         
5540         * mini-amd64.c (mono_arch_get_delegate_invoke_impls): New function to
5541         collect information about the delegate invoke impl trampolines.
5542
5543         * mini.h (MonoAotTrampInfo): New structure collecting the information needed
5544         to save trampolines during full-aot mode.
5545
5546         * mini-trampolines.c (mono_create_static_rgctx_trampoline): New trampoline
5547         creation function which returns a trampoline which sets the rgctx
5548         argument.
5549         (mono_magic_trampoline): Use the rgctx trampoline instead of an rgctx
5550         wrapper if possible.
5551         (mono_delegate_trampoline): Ditto.
5552
5553         * mini.c (mono_jit_runtime_invoke): Ditto.
5554
5555         * tramp-amd64.c: Add an implemention of static rgctx trampolines for AMD64.
5556         
5557         * aot-compiler.c aot-runtime.c: Add support for static rgctx trampolines.
5558
5559         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5560         
5561 2009-04-12  Zoltan Varga  <vargaz@gmail.com>
5562
5563         * mini-ia64.c (mono_arch_lowering_pass): Use NULLIFY_INS instead of
5564         just setting the opcode to OP_NOP.
5565
5566 2009-04-11  Zoltan Varga  <vargaz@gmail.com>
5567
5568         * mini.c (mini_method_compile): Put the last change inside an 
5569         #ifdef MONO_ARCH_HAVE_LIVERANGE_OPS.
5570         
5571         * mini.c (mini_method_compile): Disable sharing of stack slots/registers
5572         and extend live ranges to cover the whole method when using xdb.
5573
5574         * jit-icalls.c (ldvirtfn_internal): Avoid creating rgctx wrappers here,
5575         do it in the trampolines.
5576
5577         * mini-trampolines.c (mono_magic_trampoline): Add an rgctx wrapper if
5578         needed.
5579
5580         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
5581         
5582         * method-to-ir.c (mono_method_to_ir): Avoid using the fast virtual method
5583         call code in full-aot mode since IMT is disabled there.
5584         (mono_method_to_ir): Inline ldfld wrappers which return structures too, the
5585         new JIT no longer has that restriction.
5586
5587         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5588
5589         * aot-compiler.c (emit_extra_methods): Emit the wrapper method names in
5590         a more compact format.
5591         (mono_aot_wrapper_name): New function to return a unique name for a
5592         wrapper method, also used by the AOT runtime.
5593
5594         * aot-runtime.c (find_extra_method_in_amodule): Update after the changes to
5595         aot-compiler.c.
5596
5597         * aot-compiler.c (add_generic_class): Add the helper methods from T[]
5598         when a ICollection<T> etc is encountered.
5599         (add_generic_instances): Process method arguments/locals too.
5600         (emit_trampolines): Emit unbox trampolines for extra methods too. Shorten
5601         trampoline names.
5602
5603         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle extra methods too.
5604         
5605 2009-04-10  Zoltan Varga  <vargaz@gmail.com>
5606
5607         * aot-compiler.c: Disable the AOT compiler if the JIT is disabled.
5608
5609         * dwarfwriter.c (emit_type): Emit byref to reference types as 'int' for now.
5610
5611         * decompose.c (mono_decompose_opcode): Make this return a MonoInst*
5612         representing the result of the decomposition. Nullify instructions
5613         instead of setting them to OP_NOP since nops can't have registers
5614         set.
5615
5616 2009-04-09  Zoltan Varga  <vargaz@gmail.com>
5617
5618         * aot-compiler.c (mono_compile_assembly): Split this huge function into
5619         smaller parts. Add 'nodebug' option to prevent generation of DWARF debug
5620         info. Strip 'mapping symbols' on ARM.
5621
5622         * iltests.il.in (test_0_fconv_to_i): Disable this on ARM too.
5623         
5624         * genmdesc.pl: Applied patch by Martin Fuzzey (mfuzzey@parkeon.com). Sync
5625         this with the native genmdesc.
5626
5627 2009-04-08  Bill Holmes  <billholmes54@gmail.com>
5628
5629         * aot-runtime.c:  Fixing the MSVC build.
5630
5631         Code is contributed under MIT/X11 license.
5632
5633 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
5634
5635         * mini-llvm.c (mono_llvm_emit_method): Pass i1/i2 arguments as i4 since 
5636         JITted code depends on it.
5637
5638 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
5639
5640         * aot-compiler.c: Use new MonoGenericParam accessors.
5641
5642 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
5643
5644         Reduce memory usage and improve correctness wrt MonoGenericParam
5645         * aot-runtime.c (decode_klass_ref): Simplify generic parameter
5646         handing.  Avoid allocating MonoGenericParams, but use the ones in
5647         the container itself.
5648
5649 2009-04-07  Miguel de Icaza  <miguel@novell.com>
5650
5651         * tasklets.c: Return exceptions in the out argument.
5652
5653 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
5654
5655         * mini-llvm.c (mono_llvm_emit_method): Fix alignment in the LOCALLOC_IMM
5656         opcode. Use pointer types in more places instead of casting them to 
5657         integers.
5658
5659         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Create a pass manager to run
5660         optimizations.
5661         (mono_llvm_optimize_method): New helper function to optimize a method.
5662
5663         * method-to-ir.c (mono_emit_widen_call_res): Extract the call result 
5664         widening code so it could be called from more places.
5665         (mono_method_to_ir): Call mono_emit_widne_call_res () in several more
5666         code paths in the call opcodes.
5667
5668 Mon Apr 6 14:19:54 CEST 2009 Paolo Molaro <lupus@ximian.com>
5669
5670         * exceptions-amd64.c, mini-amd64.h: amd64 support code for continuations.
5671
5672 2009-04-06  Zoltan Varga  <vargaz@gmail.com>
5673
5674         * dwarfwriter.c: Use _ to separate class name 
5675         components as gdb can't handle '.'. Represent reference variables
5676         as 'class <NAME>&'.
5677         
5678         * mini.h (MonoCompile): Add locals_min_stack_offset/locals_max_stack_offset.
5679
5680         * mini-amd64.c (mono_arch_allocate_vars): Save min/max stack offset.
5681         
5682         * mini-gc.c: New file, contains the SGEN GC related parts of the JIT.
5683
5684         * gc-test.cs: New file with GC stack marking tests.
5685         
5686         * mini-arm.c (mono_arch_output_basic_block): Fix int->float conversion of
5687         negative numbers for vfp.
5688
5689         * basic-float.cs: Add a test.
5690         
5691 Mon Apr 6 14:12:10 CEST 2009 Paolo Molaro <lupus@ximian.com>
5692
5693         * exceptions-x86.c, mini-x86.h: x86 support code for continuations.
5694
5695 Mon Apr 6 14:09:53 CEST 2009 Paolo Molaro <lupus@ximian.com>
5696
5697         * tasklets.h, tasklets.c, mini.h, mini.c, Makefile.am: arch-indep
5698         part of tasklet/continuation support.
5699
5700 2009-04-05  Zoltan Varga  <vargaz@gmail.com>
5701
5702         * mini-llvm.c (mono_llvm_emit_method): Move the handling of
5703         amd64 opcodes inside an ifdef.
5704
5705         * dwarfwriter.c: Emit inheritance information for classes, emit fields
5706         of complex types.
5707         
5708         * dwarfwriter.c (emit_type): Emit the class info for classes.
5709
5710 2009-04-04  Zoltan Varga  <vargaz@gmail.com>
5711
5712         * Makefile.am (AM_CXXFLAGS): Add GLIB_CFLAGS to this.
5713
5714         * mini-llvm-cpp.h: New header file for mini-llvm-cpp.cpp.
5715
5716         * mini-llvm.c: Remove unused fields from EmitContext, fix memory leaks.
5717
5718         * ssa.c (mono_ssa_compute): Fix some memory leaks.
5719
5720 2009-04-03  Zoltan Varga  <vargaz@gmail.com>
5721
5722         * mini.c mini-amd64.c method-to-ir.c: Use COMPILE_LLVM in a few more places.
5723
5724         * mini-llvm.c: Update comments.
5725
5726         * mini.h (COMPILE_LLVM): New macro.
5727
5728         * decompose.c (mono_decompose_opcode): Use the COMPILE_LLVM macro.
5729
5730         * ssa.c (mono_ssa_compute): Ditto.
5731         
5732         * unwind.c (mono_unwind_get_ops_from_fde): New helper function to extract
5733         the unwind ops from a DWARF FDE.
5734
5735         * mini-llvm.c: Implement generation of unwind info for LLVM compiled
5736         methods by extracting the dwarf unwind ops from the unwind info generated
5737         by LLVM.
5738         
5739         * mini-llvm.c (mono_llvm_emit_method): Enable support for non-IMT virtual
5740         calls.
5741
5742         * mini-amd64.c (mono_arch_get_vcall_slot): Handle more kinds of the SIB
5743         addressing modes.
5744
5745 2009-04-02  Zoltan Varga  <vargaz@gmail.com>
5746
5747         * Makefile.am (llvm_sources): Enable this.
5748
5749         * mini.c (mini_method_compile): Add support for compiling with LLVM, 
5750         failing back to the JIT if something cannot be handled.
5751
5752         * mini-amd64.c (mono_arch_emit_call): Emit the arguments more simple when
5753         compiling with LLVM.
5754
5755         * decompose.c (mono_decompose_opcode): Avoid decomposing some opcodes when
5756         compiling with LLVM.
5757
5758         * method-to-ir.c (mono_method_to_ir): Avoid decomposing SWITCH when 
5759         compiling with LLVM.
5760
5761         * mini-ops.h: Add a few opcodes needed by LLVM.
5762
5763         * dwarfwriter.c (mono_dwarf_writer_emit_method): Avoid crashes if the method
5764         has no unwind info.
5765
5766         * mini-llvm.c mini-llvm-cpp.cpp: New files containing the experimental llvm
5767         backend.
5768
5769         * mini-arm.c (mono_arch_output_basic_block): Fix the ARM_FPU_NONE build.
5770
5771         * mini-arm.h mini-arm.c cpu-arm.md: Finish VFP support.
5772
5773 2009-04-01  Mark Probst  <mark.probst@gmail.com>
5774
5775         * regalloc.h, mini-codegen.c: Make vassign members gint32 to fix
5776         ridiculously large methods.
5777
5778 2009-03-31  Martin Baulig  <martin@ximian.com>
5779
5780         * debug-debugger.c (debugger_remove_breakpoint): Call
5781         mono_debugger_remove_class_init_callback ().
5782
5783 2009-03-31  Zoltan Varga  <vargaz@gmail.com>
5784
5785         * aot-compiler.c (mono_compile_assembly): Call img_writer_emit_start ()
5786         right before emitting code, not at the start.
5787
5788         * mini.c (mono_postprocess_patches): Extract this into a separate function
5789         from mono_codegen ().
5790
5791         * ssa.c (mono_ssa_compute): Set ins->klass for every PHI node, handle
5792         byref types correctly.
5793
5794 2009-03-30  Zoltan Varga  <vargaz@gmail.com>
5795
5796         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix a crash introduced
5797         by the last change.
5798
5799 2009-03-29  Zoltan Varga  <vargaz@gmail.com>
5800
5801         * mini-amd64.c (mono_arch_output_basic_block): Emit a few nops before 
5802         indirect calls, this avoids problems where get_vcall_slot () would get
5803         confused by the native code for the instruction preceeding the call.
5804         (mono_arch_get_vcall_slot): Simplify this.
5805         (mono_arch_emit_imt_argument): Remove this, it is no longer needed.
5806
5807         * mini-ops.h: Fix the definitions of the OP_IA64 opcodes, since the local
5808         register allocator now seems to depend on them instead of the data in
5809         cpu-<ARCH>.md.
5810
5811         * mini.c (mini_method_compile): Throw the correct type of exception if
5812         mono_method_get_header () fails because of a loading error.
5813
5814 2009-03-28  Zoltan Varga  <vargaz@gmail.com>
5815
5816         * mini.c (mini_method_compile): Clear the loader error if the method
5817         header cannot be decoded.
5818
5819         * mini-trampolines.c (mono_magic_trampoline): Handle generic virtual 
5820         interface methods on proxies correctly.
5821
5822         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix handling of the
5823         this argument for vtype methods. Add precise liveness info for arguments.
5824
5825         * mini-codegen.c (mono_print_ins_index): Print the vreg of the
5826         LIVERANGE_START/END opcodes.
5827
5828         * method-to-ir.c (mono_spill_global_vars): Fix liverange calculation
5829         for arguments and values in registers.
5830
5831 2009-03-27  Zoltan Varga  <vargaz@gmail.com>
5832
5833         * method-to-ir.c (mono_method_to_ir): Disable tail calls for calls which
5834         return a valuetype. Fixes #487518.
5835
5836         * iltests.il: Add a test.
5837         
5838         * aot-compiler.c: Use mono_thread_create () to create helper threads.
5839
5840         * mini-trampolines.c (mono_delegate_trampoline): Handle static delegates
5841         closed over a null reference correctly.
5842
5843 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
5844
5845         * method-to-ir.c (mono_handle_global_vregs): Fix support for ternary ops.
5846
5847 2009-03-25  Mark Probst  <mark.probst@gmail.com>
5848
5849         * mini-codegen.c (mono_local_regalloc): Don't let sregs get
5850         allocated to the same registers as fixed sregs.
5851
5852 2009-03-24  Mark Probst  <mark.probst@gmail.com>
5853
5854         * mini-ops.h: New ternary ATOMIC_CAS ops replace the old
5855         ATOMIC_CAS_IMM ops.
5856
5857         * method-to-ir.c: Handle more cases for
5858         Interlocked.CompareExchange.
5859
5860         * cpu-x86.md, mini-x86.c, mini-x86.h, cpu-amd64.md, mini-amd64.c,
5861         mini-amd64.h, cpu-ppc.md, cpu-ppc64.md, mini-ppc.c, mini-ppc.h:
5862         ATOMIC_CAS implementations for x86, AMD64, PPC and PPC64.
5863
5864 2009-03-23  Zoltan Varga  <vargaz@gmail.com>
5865
5866         * aot-runtime.c (decode_method_ref): Fix a warning.
5867
5868         * unwind.c (mono_unwind_frame): Ditto.  
5869
5870 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
5871
5872         * aot-compiler.c (arch_emit_unbox_trampoline): Fix the binary writer support.
5873         (mono_compile_assembly): Enable the binary writer for full-aot as well.
5874
5875         * image-writer.c (do_reloc): Add support for the JUMP24 relocation,
5876         fix the handling of large values in the ALU_PC_G0_NC relocation.
5877
5878 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
5879
5880         * local-propagation.c method-to-ir.c local-propagation.c: Fix warnings.
5881
5882 2009-03-22  Mark Probst  <mark.probst@gmail.com>
5883
5884         * method-to-ir.c (mono_spill_global_vars): Support for ternary
5885         ops.
5886
5887 2009-03-22  Mark Probst  <mark.probst@gmail.com>
5888
5889         * method-to-ir.c: MINI_OP3 needs a comma.
5890
5891         * method-to-ir.c, mini.h, mini.c: Remove
5892         mono_init_op_sreg_counts ().
5893
5894 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
5895
5896         * mini-arm.c (mono_arch_output_basic_block): Fix aot support in
5897         OP_JMP.
5898         
5899         * mini-arm.c (mono_arch_build_imt_thunk): Disable the !fail_tramp
5900         assertion.
5901
5902         * mini-ops.h: Fix arguments of the MEMINDEX opcodes.
5903
5904         * mini-amd64.c (mono_arch_build_imt_thunk): Simplify the fail handling
5905         code somewhat.
5906
5907 2009-03-21  Mark Probst  <mark.probst@gmail.com>
5908
5909         * cfold.c, cprop.c, decompose.c, genmdesc.c, helpers.c, ir-emit.h,
5910         liveness.c, local-propagation.c, method-to-ir.c, mini-codegen.c,
5911         mini.c, mini.h, simd-intrinsics.c, ssa.c: Support for ternary IR
5912         operations.
5913
5914 2009-03-20  Zoltan Varga  <vargaz@gmail.com>
5915
5916         * driver.c: Change location of gc_wrapper.h.
5917
5918         * method-to-ir.c (mono_find_block_region): Handle try clauses nested
5919         inside finally clauses correctly. Fixes #485721.
5920
5921         * mini.c (mono_find_spvar_for_region): This needs to handle try regions
5922         after the change above.
5923
5924         * exceptions.cs: Add a test.
5925         
5926 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
5927
5928         * unwind.c (mono_unwind_ops_encode): Increase the size of the encode buffer.
5929
5930         * mini-amd64.c (mono_arch_emit_epilog): Remove the encoding of stack size
5931         into cfg->used_int_regs, it is not needed with the dwarf unwinder.
5932         (mono_arch_compute_omit_fp): Remove the emit_epilog () workaround.
5933
5934         * mini-amd64.c (mono_arch_compute_omit_fp): Add another check to avoid hitting
5935         the stack_alloc_size < (1 << 16) assertion in emit_prolog ().
5936
5937 2009-03-19  Sebastien Pouliot  <sebastien@ximian.com>
5938
5939         * method-to-ir.c: Allow CoreCLR to throw FieldAccessException. 
5940         Simplify logic for ensure_method_is_allowed_to_call_method. 
5941         Handle wrappers on callers.
5942
5943 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
5944
5945         * Makefile.am (fullaotcheck): Don't run the generics tests, some of
5946         them don't run yet.
5947
5948         * basic-simd.cs: Fix the names of some test methods.
5949
5950 2009-03-18  Geoff Norton  <gnorton@novell.com>
5951
5952         * mini.c: Only chain sigfpe if it wasn't generated in mangaed code.
5953
5954 2009-03-18  Zoltan Varga  <vargaz@gmail.com>
5955
5956         * dwarfwriter.c (token_handler): Fix a crash caused by the last change.
5957
5958 2009-03-17  Jb Evain  <jbevain@novell.com>
5959
5960         * driver.c: remove now uneeded call to mono_gc_base_init before
5961         mono_profiler_load.
5962
5963 2009-03-17  Jb Evain  <jbevain@novell.com>
5964
5965         * dwarfwriter.c (token_handler): handle more cases.
5966
5967 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com> 
5968
5969         * method-to-ir.c: Remove more dead code (that was required only
5970         because of method_is_safe). Fix compiler warnings.
5971
5972 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com>
5973
5974         * method-to-ir.c: Remove unneeded/useless method_is_safe
5975         http://lists.ximian.com/archives/public/mono-devel-list/2009-March/031404.html
5976
5977 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
5978
5979         * mini.c (mini_method_compile): Print the method been compiled with
5980         verbose level 1 instead of 3 as this helps a lot debugging JIT crashes
5981         for people not familiar with the runtime.
5982
5983 2009-03-17  Zoltan Varga  <vargaz@gmail.com>
5984
5985         * mini-exceptions.c (get_generic_info_from_stack_frame): Avoid returning
5986         a managed object which is later put into a GList. Return its class instead.
5987
5988         * mini.c (mono_allocate_stack_slots_full): Avoid sharing ref and non-ref
5989         stack slots when using sgen.
5990
5991 2009-03-16  Zoltan Varga  <vargaz@gmail.com>
5992
5993         * dwarfwriter.c (emit_line_number_info): Really fix the eglib build.
5994
5995 2009-03-14  Zoltan Varga  <vargaz@gmail.com>
5996
5997         * local-propagation.c (reg_is_softreg_no_fpstack): Use >= instead of
5998         > so it works on the first vreg as well.
5999
6000 2009-03-13  Zoltan Varga  <vargaz@gmail.com>
6001
6002         * dwarfwriter.c (emit_line_number_info): Disable an assert which seems to
6003         trigger randomly.
6004
6005         * aot-compiler.c: Get rid of xdebug_lock (), use the loader lock instead.
6006         
6007         * dwarfwriter.c (emit_line_number_info): Fix eglib build as eglib doesn't
6008         implement GArray.
6009
6010 2009-03-12  Zoltan Varga  <vargaz@gmail.com>
6011
6012         * dwarfwriter.c (emit_line_number_info): Optimize the computation of the
6013         native->IL offset mapping.
6014
6015 2009-03-11  Zoltan Varga  <vargaz@gmail.com>
6016
6017         * mini-amd64.c (mono_arch_output_basic_block): Fix % 1. Fixes #484323.
6018
6019         * basic.cs: Add a test.
6020
6021 2009-03-11  Mark Probst  <mark.probst@gmail.com>
6022
6023         * mini-x86.c (mono_arch_output_basic_block): Use different
6024         registers in case the ones we want to overwrite are used by the
6025         other operand.  Fixes regression in #480807.
6026
6027 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
6028
6029         * aot-compiler.c (mono_compile_assembly): Make the output less verbose.
6030
6031         * dwarfwriter.c (emit_line_number_info): The line number info for
6032         IL code was off by one. Fix that.
6033
6034         * mini-s390x.c: Fix support for vtypes whose addresses are passed on the
6035         stack.
6036
6037 2009-03-09  Mark Probst  <mark.probst@gmail.com>
6038
6039         Contributed under the terms of the MIT/X11 license by Steven
6040         Munroe <munroesj@us.ibm.com>.
6041
6042         * mini-ppc.c: Correct handling of OP_LOADI4_MEMINDEX for ppc64.
6043         Fixes #483462.
6044
6045 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
6046
6047         * dwarfwriter.c (token_handler): Decode method references in non-wrappers
6048         as well.
6049
6050 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
6051
6052         * method-to-ir.c (mono_method_to_ir): Check for type load exceptions in
6053         the delegate ctor handling code. Fixes #482638.
6054         
6055         * method-to-ir.c (mini_emit_memset): Fix the handling of size '3'. Fixes
6056         #481458.
6057
6058         * iltests.il.in: Add a test.
6059         
6060         * mini-darwin.c (mono_chain_signal): Remove this, it is already in
6061         mini-posix.c.
6062
6063 2009-03-05  Mark Probst  <mark.probst@gmail.com>
6064
6065         * mini-trampolines.c (mono_create_jump_trampoline): If the method
6066         is shared generic code, return the trampoline, even if the method
6067         has already been compiled.  Fixes #479763.
6068
6069         * mini.c, mini.h: New function
6070         mono_jit_find_compiled_method_with_jit_info() which is the same as
6071         mono_jit_find_compiled_method() but also returns the jit info.
6072
6073 2009-03-05  Mark Probst  <mark.probst@gmail.com>
6074
6075         * method-to-ir.c (mono_method_to_ir): Only force the vtable var
6076         for methods which actually have one.  For all other methods, make
6077         sure the this argument var is live the whole method.
6078
6079         * mini.c (mini_method_compile): Every shared method has a
6080         this/vtable/mrgctx info.  Fixes #480807.
6081
6082 2009-03-05  Mark Probst  <mark.probst@gmail.com>
6083
6084         * mini-ppc.c (mono_arch_build_imt_thunk): Add support for mixed
6085         generic/imt thunks where some entries branch through the vtable,
6086         while other entries branch directly.
6087
6088 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
6089
6090         * mini-darwin.c (mono_chain_signal): Define this to fix the build.
6091
6092         * mini-windows.c: Ditto.
6093         
6094         * mini.c (mono_jit_runtime_invoke): Speed up the invoking of parameterless
6095         ctors.
6096
6097 2009-03-04  Zoltan Varga  <vargaz@gmail.com>
6098
6099         * dwarfwriter.c (emit_line_number_info): Add some debug code to help track
6100         down an assert.
6101
6102 2009-03-04  Mark Probst  <mark.probst@gmail.com>
6103
6104         * method-to-ir.c: Don't inline methods that use JMP.  Fixes
6105         #481403.
6106
6107 2009-03-04  Mark Probst  <mark.probst@gmail.com>
6108
6109         * exceptions-x86.c: Include debug-mini.h - fixes build.
6110
6111 2009-03-04  Martin Baulig  <martin@ximian.com>
6112
6113         * debug-mini.c: Clean up the exception API and add documentation.
6114         (mono_debugger_handle_exception): New public method; this is
6115         called when throwing an exception or encountering an unhandled one.
6116         (mono_debugger_call_exception_handler): Formerly known as
6117         mono_debugger_handle_exception(); this is used to tell the
6118         debugger that we're about to invoke an exception handler.
6119
6120 2009-03-04  Martin Baulig  <martin@ximian.com>
6121
6122         * debug-mini.c (mono_debugger_runtime_invoke): Moved here from
6123         ../metadata/mono-debug-debugger.c; save and reset exception state.
6124
6125 2009-03-02  Martin Baulig  <martin@ximian.com>
6126
6127         * debug-mini.c: Moved the debugger exception handling here from
6128         ../metadata/mono-debug-debugger.c.
6129
6130         * debug-mini.h
6131         (MonoDebuggerExceptionAction): New exception typedef.
6132
6133         * debug-mini.c
6134         (MonoDebuggerThreadInfo): Added `MonoObject *last_exception'.
6135
6136         * exceptions-amd64.c
6137         (mono_amd64_throw_exception): Use the new debugger exception
6138         handling code.
6139
6140         * mini-exceptions.c
6141         (mono_handle_exception_internal): Don't call
6142         mono_debugger_unhandled_exception() here.
6143
6144 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
6145
6146         * mini.c aot-compiler.c: Update after the changes to 
6147         mono_marshal_get_runtime_invoke ().
6148
6149         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): 
6150         Virtual generic methods might not have method->slot set, work around
6151         that.
6152
6153         * generics.cs: Add a test.
6154
6155 2009-03-02  Geoff Norton  <gnorton@novell.com>
6156
6157         * mini.c:
6158         * driver.c: Allow signal chaining of SIGFPE as well.
6159
6160 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
6161
6162         * mini-trampolines.c (mono_generic_virtual_remoting_trampoline): Update
6163         this since it now receives the method not its generic context in the
6164         IMT reg.
6165
6166         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for mixed
6167         generic/imt thunks where some entries branch through the vtable, while
6168         other entries branch directly.
6169
6170         * mini-x86.c (mono_arch_build_imt_thunk): Ditto.
6171
6172         * method-to-ir.c (mono_method_to_ir): Enable fast virtual generic call 
6173         support for interface methods as well.
6174
6175         * mini-trampolines.c: Add support for virtual generic methods in interfaces
6176         using the normal IMT thunks.
6177
6178         generics.cs: Add new tests.
6179         
6180         * method-to-ir.c (mono_method_to_ir): Pass the method instead of
6181         the generic inst to the generic imt thunks. This fixes AOT support, 
6182         improves consistency with the normal IMT thunks, and makes it easier to
6183         add support for interface generic virtual methods later.
6184
6185         * mini-trampolines.c (mono_magic_trampoline): Ditto.    
6186         
6187 2009-02-28  Zoltan Varga  <vargaz@gmail.com>
6188
6189         * driver.c (mono_set_signal_chaining): New public API function to enable
6190         signal chaining on POSIX platforms.
6191
6192         * mini-posix.c mini.c: Applied a variant of a patch by Simon Rowland 
6193         (si@lindenlab.com) to implement signal chaining. The original patch was
6194         contributed under the MIT X/11 license:
6195         https://bugzilla.novell.com/show_bug.cgi?id=318894
6196
6197 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
6198
6199         * iltests.il.in (test_0_implicit_float_to_double_conversion): Disable this
6200         too until it can be made to run on amd64.
6201
6202 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
6203
6204         * mini-x86.c (mono_arch_get_this_arg_from_call): Avoid expensive calls
6205         to  get_generic_context_from_code () + get_call_info () if possible.
6206
6207 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
6208
6209         * mini-exceptions.c (mono_handle_native_sigsegv): Implement the
6210         suspend-on-sigsegv functionality.
6211
6212         * mini.c (mini_parse_debug_options): Add a new 'suspend-on-sigsegv' option
6213         to suspend when a native SIGSEGV is received. This is useful for debugging
6214         crashes which don't happen under gdb, since a live process contains more
6215         information than a core file.
6216
6217         * mini-exceptions.c (mono_print_thread_dump): Use 
6218         MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX instead of platform defines.
6219
6220         * mini-x86.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): New define.
6221
6222         * mini-amd64.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): Ditto.
6223         
6224         * basic-float.cs: Disable the tests which currently fail on amd64.
6225
6226         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass a non-null 
6227         value to mono_arch_patch_callsite () to fix crashes.
6228         
6229         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix a warning.
6230
6231 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
6232
6233         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Replace the
6234         nop code by patching the call address to point to the nullified class init
6235         trampoline, as the former does not seem to be safe on SMP machines.
6236
6237 2009-02-23  Mark Probst  <mark.probst@gmail.com>
6238
6239         * mini-ops.h: Fix the argument types for a few x86 opcodes where
6240         they were wrong.
6241
6242 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
6243
6244         * basic-float.cs basic-calls.cs: Fix warnings.
6245
6246 2009-02-22  Mark Probst  <mark.probst@gmail.com>
6247
6248         * tramp-ppc.c (mono_arch_create_trampoline_code): Store the
6249         correct frame pointer in the LMF.  Should fix #478394.
6250
6251 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
6252
6253         * Makefile.am (fullaotcheck): Copy Mono.Simd.dll as well.
6254
6255         * image-writer.c: Make the binary writer less verbose.
6256
6257 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
6258
6259         * method-to-ir.c (mono_method_to_ir): Don't assert if string ctors
6260         are called from runtime invoke wrappers.
6261
6262 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
6263
6264         * cpu-ppc.md (store_memindex): Increase the size of this.
6265
6266 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6267
6268         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6269
6270         * cpu-x86.md: Fix the sizes for long_conv_to_r_un and long_conv_to_r_un_2.
6271
6272         * mini-x86.c (mono_arch_output_basic_block): Use only 64bits of precision for
6273         OP_LCONV_TO_R_UN.
6274
6275         Last fix for of #467201.
6276
6277
6278 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6279
6280         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6281
6282         * cpu-x86.md: Fix the sizes for fcall(_reg,_membase), long_conv_to_r4_2
6283         and long_conv_to_r8_2:
6284
6285         Fixed part of #467201.
6286
6287 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6288
6289         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6290
6291         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of int to float
6292         conversion to 32 bits.
6293
6294         * cpu-x86.md: Increase the size of int_conv_to_r4.
6295
6296         * basic-float.cs: Add a test for this.
6297
6298         Fixed part of #467201.
6299
6300 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6301
6302         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6303
6304         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of long to double
6305         conversion to 64 bits.
6306
6307         * basic-float.cs: Add a test for this.
6308
6309         Fixed part of #467201.
6310
6311 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6312
6313         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6314
6315         * mini-x86.c (emit_move_return_value): Don't reduce precision of functions returning float.
6316         This behavior is compatible with MS.
6317
6318         * iltest.il.in: Add a test for this.
6319
6320         Fixed part of #467201.
6321
6322 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6323
6324         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6325
6326         * mini-x86.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_R4, it must
6327         change the precision of the value.
6328
6329         * cpu-x86.md: Define len for float_conv_to_r4.
6330
6331         * basic-float.cs: Add a test for this.
6332
6333         Fixed part of #467201.
6334
6335 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
6336
6337         * mini.c: Adjust locking order to the new semantics where the loader lock
6338         comes first.
6339
6340 2009-02-18  Rodrigo Kumpera  <rkumpera@novell.com>
6341
6342         * aot-runtime.c:
6343         * mini-amd64.c:
6344         * mini-arm.c:
6345         * mini-ia64.c:
6346         * mini-mips.c:
6347         * mini-ppc.c:
6348         * mini-sparc.c:
6349         * mini-trampolines.c:
6350         * mini-x86.c:
6351         * mini.c:
6352         * tramp-alpha.c:
6353         * tramp-amd64.c:
6354         * tramp-arm.c:
6355         * tramp-hppa.c:
6356         * tramp-ia64.c:
6357         * tramp-mips.c:
6358         * tramp-ppc.c:
6359         * tramp-s390.c:
6360         * tramp-s390x.c:
6361         * tramp-sparc.c:
6362         * tramp-x86.c: Use mono_domain_code_* functions instead of using MonoDomain::code_mp directly.
6363
6364 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
6365
6366         * mini-codegen.c (mono_local_regalloc): Remove a ! from if (!dest_sreg1)
6367         as it is incorrect.
6368
6369 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
6370
6371         * aot-compiler.c (add_generic_class): Only add rgctx invoke wrappers
6372         for cctors if needed.
6373
6374 2009-02-17  Mark Probst  <mark.probst@gmail.com>
6375
6376         * mini-ppc.c: Fix build on Darwin.
6377
6378 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
6379
6380         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Use 2 as the DWARF
6381         version instead of 3 as valgrind doesn't like version 3.
6382
6383         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
6384
6385         * aot-compiler.c (mono_aot_method_hash): New function to return a hash
6386         usable for hashing methods.
6387         (emit_extra_methods): Use the new hash to avoid putting every method in the
6388         same hash bucket.
6389
6390         * aot-runtime.c (find_extra_method_in_amodule): Use the new hash.
6391
6392         * aot-runtime.c (can_method_ref_match_method): New function to quickly check
6393         whenever a method ref could match a method.
6394         
6395         * aot-runtime.c (load_image): Revert the previous change, it causes an AOT
6396         test to fail.
6397         
6398         * aot-runtime.c (find_extra_method_in_amodule): Add a cache for decoded 
6399         methods refs.
6400
6401         * aot-runtime.c (load_image): Pass our basedir to mono_assembly_load.
6402
6403         * aot-compiler.c (emit_exception_debug_info): Bump the maximum size of
6404         the encoding buffer.
6405
6406         * method-to-ir.c (mono_method_check_inlining): Avoid calling 
6407         mono_method_get_header () on inflated methods as an optimization.
6408
6409 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
6410
6411         * ssa.c (fold_ins): Fix another crash if the instruction following the
6412         switch was optimized away.
6413
6414 2009-02-16  Mark Probst  <mark.probst@gmail.com>
6415
6416         Contributed under the terms of the MIT/X11 license by Steven
6417         Munroe <munroesj@us.ibm.com>.
6418
6419         * mini-ppc.c, mini-ppc.h: Implement TLS for PPC64.
6420
6421 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
6422
6423         * mini.c method-to-ir.c mini-trampolines.c aot-runtime.c: Remove locking
6424         around the mono_domain_alloc calls, it is now done by the functions
6425         themselves.
6426
6427         * aot-compiler.c (compile_method): Only add wrappers referenced by
6428         the method if compiling with full AOT.
6429         (mono_compile_assembly): Error out if --aot=full is specified on
6430         a platform where it is not supported.
6431
6432         * aot-compiler.c (emit_trampolines): Emit generic class init trampolines
6433         on ARM too.
6434
6435         * tramp-arm.c (mono_arch_create_generic_class_init_trampoline_full): Add
6436         AOT support.
6437
6438         * aot-runtime.c (load_named_code): Handle 
6439         mono_arm_throw_exception_by_token.
6440
6441         * mini-arm.h: Add declaration of mono_arm_throw_exception_by_token.
6442
6443         * image-writer.c (asm_writer_emit_pointer_unaligned): Make this really
6444         unaligned.
6445
6446         * Makefile.am (fullaotcheck): Exit if a test fails.
6447
6448         * aot-compiler.c (mono_compile_assembly): Use the ASM writer for full aot
6449         on ARM.
6450         (mono_compile_assembly): Handle the assembler failing.
6451
6452         * image-writer.c (asm_writer_emit_section_change): Handle ARM gas not
6453         accepting subsections of .bss.
6454
6455         * ssa.c (visit_inst): Fix a crash if the instruction following a switch
6456         was optimized away.
6457
6458         * aot-compiler.c: Remove some unused includes.
6459         
6460         * aot-compiler.c (MonoAotCompile): Remove some unused fields which are
6461         now in MonoImageWriter.
6462
6463         * mini-x86.c (mono_arch_get_vcall_slot): Handle yet another
6464         code sequence which matches a non-virtual call. Fixes #472654.
6465
6466 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
6467
6468         * aot-compiler.c: Use xdebug_lock ()/unlock () macros for locking in the
6469         xdebug code.
6470         
6471         * aot-compiler.c: Make the xdebug code not depend on the AOT compiler,
6472         use the image/dwarf writers directly.
6473
6474         * image-writer.c (struct _MonoImageWriter): Remove the unused 'image'
6475         field.
6476
6477         * aot-compiler.c (MonoAotCompile): Remove fields which are now in
6478         MonoDwarfWriter.
6479
6480         * image-writer.h: Fix some typos.
6481
6482         * dwarfwriter.h dwarfwriter.c: New files.
6483         
6484         * aot-compiler.c: Extract the DWARF info writing functionality into a 
6485         separate module.
6486
6487         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add a 'out_unwind_ops'
6488         argument to return unwind info.
6489
6490         * tramp-arm.c (mono_arch_create_trampoline_code_full): Ditto.
6491
6492         * aot-compiler.c: Emit unwind info for trampolines in full-aot mode.
6493         
6494         * aot-runtime.c (decode_method_ref): Add a case for 
6495         MONO_AOT_METHODREF_WRAPPER_NAME.
6496
6497         * mini.h: Add constants for the magic numbers used in encode_method_ref ()
6498         for AOT.
6499
6500         * aot-compiler.c (encode_method_ref): Use the new constants.
6501
6502         * aot-runtime.c (decode_method_ref): Ditto.
6503
6504         * aot-compiler.c (compile_method): For generic icalls, queue the wrapper to
6505         be compiled, not the icall itself.
6506
6507 2009-02-14  Zoltan Varga  <vargaz@gmail.com>
6508
6509         * aot-runtime.c (find_extra_method_in_amodule): Avoid decoding wrapper names
6510         using decode_method_ref ().
6511
6512         * method-to-ir.c (mini_emit_ldelema_1_ins): If the array index is a long,
6513         convert it to an in32. Fixes #475859.
6514
6515         * arrays.cs: Add a test.
6516
6517 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
6518
6519         * mini-s390x.c (mono_arch_output_basic_block): Fix the shift amounts in 
6520         OP_LCONV_TO_U2.
6521
6522         * basic-long.cs: Add a test.
6523
6524 2009-02-12  Mark Probst  <mark.probst@gmail.com>
6525
6526         * mini-x86.c, mini-x86.h: Very simple frame pointer removal.  We
6527         remove the frame pointer in leaf methods which don't receive any
6528         arguments, don't throw exceptions and don't do dynamic stack
6529         allocations.
6530
6531 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
6532
6533         * mini-amd64.c (mono_arch_build_imt_thunk): Fix size calculation after
6534         the fail_tramp changes. Hopefully fixes #475132.
6535
6536 2009-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
6537
6538         * method-to-ir.c (mono_emit_method_call_full): Use mono_metadata_signature_dup_mempool
6539         instead of mono_metadata_signature_dup_full.
6540
6541 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
6542
6543         * ssa.c (fold_ins): Use MONO_IS_JUMP_TABLE () and MONO_JUMP_TABLE_FROM_INS ()
6544         for processing jump tables. Fixes #473787.
6545
6546 2009-02-11  Mark Probst  <mark.probst@gmail.com>
6547
6548         * mini-generic-sharing.c: mini_method_get_context() just calls
6549         mono_method_get_context_general() now.
6550
6551         * mini.c, mini.h: Moved get_object_generic_inst(),
6552         construct_object_context_for_method() and
6553         mono_domain_lookup_shared_generic() to metadata/generic-sharing.c.
6554
6555 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
6556
6557         * branch-opts.c (mono_if_conversion): Handle the case where the merged 
6558         basic block fell through to its successor bblock without a branch. Fixes
6559         #474718.
6560
6561         * iltests.il.in: Add a test.
6562         
6563         * aot-compiler.c (encode_method_ref): Encode methods of array types.
6564         (can_encode_patch): We can now handle arrays of generic parameters and
6565         array methods.
6566
6567         * aot-runtime.c (decode_method_ref_2): Handle methods of array types.
6568
6569         * aot-compiler.c aot-runtime.c: Emit the size of specific trampolines into
6570         the AOT file to avoid some #ifdefs in aot-runtime.c
6571
6572         * mini.h: Bump AOT file format version.
6573
6574 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
6575
6576         * Makefile.am (fullaotcheck): Make this run the tests.
6577
6578         * aot-compiler.c: Make the printing of skipped methods runtime configurable.
6579
6580 2009-02-10  Mark Probst  <mark.probst@gmail.com>
6581
6582         * mini-x86.c (mono_arch_context_get_int_reg): Handle all registers
6583         individually.  Fixes #473482.
6584
6585 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
6586
6587         * mini-arm.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
6588
6589 2009-02-09  Jeffrey Stedfast  <fejj@novell.com>
6590
6591         * aot-compiler.c (arch_emit_plt_entry): Fixed to compile.
6592         (mono_compile_assembly): Hush compile warnings about
6593         uninitialized [tmp_]outfile_name variables in the !use_bin_writer
6594         code path.
6595
6596 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
6597
6598         * exceptions-arm.c (mono_arch_find_jit_info): Fix aot support.
6599
6600         * mini-arm.c: Checkin unwind related changes missing from an earlier commit.
6601
6602         * aot-compiler.c: Fix arm support.
6603
6604         * image-writer.c: Move the R_ARM constants to image-writer.h. Export a
6605         img_writer_emit_unset_mode () function.
6606
6607         * unwind.c (mono_unwind_get_dwarf_data_align): New helper function.
6608         (mono_unwind_get_dwarf_pc_reg): Ditto.
6609
6610         * aot-compiler.c (emit_dwarf_abbrev): Another large reorganization.
6611         Move almost all platform specific code to a set of arch_ functions, 
6612         and document them to ease porting.
6613         
6614         * aot-compiler.c (mono_xdebug_init): Fix xdebug support.
6615
6616         * image-writer.h image-writer.c: New files, extracted from aot-compiler.c.
6617
6618         * aot-compiler.c: Extract the image writing functionality into a separate
6619         module to reduce the size of this file.
6620
6621 2009-02-09  Geoff Norton  <gnorton@novell.com>
6622
6623         * mini-s390.c: Fix the signature of emit_sig_cookie.
6624
6625 2009-02-09  Zoltan Varga  <vargaz@gmail.com>
6626
6627         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_IMAGE.
6628
6629         * aot-runtime.c (is_shared_got_patch): Ditto.
6630
6631         * aot-runtime.c (load_named_code): Cope with the fact that 
6632         decode_got_entry () won't decode the patch fully if its corresponding got
6633         entry is already filled.
6634         
6635         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): 
6636         Initialize *ji.
6637         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
6638
6639         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code'
6640         as the moving pointer instead of 'buf' for consistency with the rest of the
6641         codebase.
6642         (mono_arch_create_monitor_exit_trampoline): Ditto.
6643
6644         * aot-compiler.c (emit_trampolines): Add throw_pending_exception/
6645         generic_class_init trampolines.
6646         (add_generic_class): Extract some code from add_generic_instances () into a
6647         separate function so it can be called from other places too.
6648         (compile_method): Call add_generic_class () for the classes of inflated methods
6649         referenced by the method.
6650         (can_encode_patch): Allow references to generic parameters.
6651
6652         * aot-runtime.c: Add support the patches required by the new trampolines.
6653         
6654         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Add full-aot
6655         support.
6656
6657         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline_full): Add
6658         full-aot support.
6659
6660         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Rename
6661         this from get_throw_pending_exception, make the signature full aot compatible.
6662
6663         * Makefile.am (fullaotcheck): New target to run full-aot tests.
6664
6665         * method-to-ir.c (inline_method): Save/Restore cfg->ret_var_set too.
6666
6667         * exceptions.cs: Add a test.
6668
6669 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
6670
6671         * unwind.c (mono_unwind_frame): Eliminate the data_align_factor argument,
6672         use the DWARF_DATA_ALIGN constant instead.
6673
6674         * exception-<ARCH>.c: Update after the above change.
6675
6676         * exceptions-arm.c (mono_arch_find_jit_info): Transition this to use the
6677         dwarf unwinder.
6678
6679         * mini-arm.c: Enable the dwarf unwinder.
6680
6681         * mini-trampolines.c (mono_magic_trampoline): Use mono_class_get_vtable_entry ()
6682         instead of mono_class_setup_vtable ().
6683
6684 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
6685
6686         * exceptions-x86.c (mono_arch_find_jit_info): Transition this to use the
6687         dwarf unwinder.
6688
6689         * mini-x86.h: Enable the dwarf unwinder.
6690
6691 2009-02-06  Raja R Harinath  <harinath@hurrynot.org>
6692
6693         Fix mcs/tests/test-7.cs
6694         * mini-amd64.c (mono_arch_allocate_vars): Revert change from
6695         2009-02-03.
6696
6697 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
6698
6699         * mini.c (print_jit_stats): Remove some unused statistics.
6700
6701 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
6702
6703         * aot-compiler.c (emit_klass_info): Update after MonoClass changes.
6704
6705 2009-02-05  Mark Probst  <mark.probst@gmail.com>
6706
6707         * jit-icalls.c (mono_helper_compile_generic_method): Don't inflate
6708         the method we get from mono_object_get_virtual_method() because
6709         that function does it properly, now.
6710
6711 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
6712
6713         * unwind.c (mono_unwind_ops_encode): Handle offsets greater than 32 between
6714         opcodes. Fixes #472775.
6715
6716 2009-02-05  Mark Probst  <mark.probst@gmail.com>
6717
6718         * mini-exceptions.c (ves_icall_get_frame_info): Account for the
6719         fact that mono_find_jit_info() sometimes returns the context
6720         corresponding to the jit info in new_ctx.  Fixes #472600.
6721
6722 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
6723
6724         * method-to-ir.c mini-hppa.c mini.c trace.c mini-s390x.c aot-compiler.c
6725         mini-s390.c: Use mono_class_enum_basetype () instead of accessing
6726         klass->enum_basetype directly.
6727
6728         * aot-compiler.c (emit_class_dwarf_info): Add support for all possible
6729         enum subtypes.
6730
6731         * unwind.c: Avoid 0 sized arrays.
6732
6733 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
6734
6735         * mini-exceptions.c (mono_setup_altstack): Use a more reasonable altstack
6736         size on systems with 64k pages. Fixes #471389.
6737
6738 2009-02-04  Mark Probst  <mark.probst@gmail.com>
6739
6740         Contributed under the terms of the MIT/X11 license by Steven
6741         Munroe <munroesj@us.ibm.com>.
6742
6743         * mini-ppc.c (mono_arch_output_basic_block): Generate better code
6744         for LOADI4_MEMBASE.  Use addi instead of addic if it's not
6745         necessary.
6746
6747 2009-02-04  Mark Probst  <mark.probst@gmail.com>
6748
6749         Contributed under the terms of the MIT/X11 license by Steven
6750         Munroe <munroesj@us.ibm.com>.
6751
6752         * exceptions-ppc.c (mono_arch_get_restore_context): Code size
6753         comparison fix.
6754
6755         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline):
6756         The trampoline can be longer on PPC64.
6757
6758 2009-02-04  Mark Probst  <mark.probst@gmail.com>
6759
6760         Contributed under the terms of the MIT/X11 license by Steven
6761         Munroe <munroesj@us.ibm.com>.
6762
6763         * mini-ppc.c: Compiler warning fixes and trivial code
6764         simplifications.
6765
6766 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
6767
6768         * method-to-ir.c (mono_spill_global_vars): Fix problems caused by reading
6769         ins->dreg which could be a hardware register, not a vreg.
6770
6771         * aot-compiler.c (emit_method_dwarf_info): Ditto.
6772         
6773         * mini.h (MonoCompile): Remove vreg_to_var_num array, it is no longer used.
6774         (struct MonoMethodVar): Add a vreg field, holding the vreg of variable.
6775
6776         * mini.c (mono_compile_create_var_for_vreg): Set var->vreg.
6777         
6778         * mini-amd64.c (mono_arch_output_basic_block): Avoid reading cfg->varinfo[..]
6779         ->dreg, that is not the vreg we are looking for.
6780
6781         * mini-amd64.h mini-x86.h: Enable MONO_ARCH_LIVENESS_OPS again.
6782
6783         * mini-x86.c (mono_arch_output_basic_block): Add support for LIVERANGE_START/
6784         LIVERANGE_END.
6785
6786         * method-to-ir.c (mono_spill_global_vars): Add an assert to help track down
6787         strange crashes.
6788
6789 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
6790
6791         * mini-x86.c (mono_arch_emit_prolog): Emit unwind info.
6792
6793         * aot-compiler.c (emit_line_number_info): Fix line number emission when
6794         the line diff is 0.
6795
6796         * aot-compiler.c: Add xdebug support on x86.
6797
6798         * unwind.c: Add x86 support.
6799         
6800         * aot-compiler.c (emit_exception_debug_info): Control the emission of
6801         unwind info using a new MONO_ARCH_HAVE_XP_UNWIND define.
6802
6803         * mini.c (mini_method_compile): Ditto.
6804         
6805         * mini-amd64.c (mono_arch_allocate_vars): Avoid setting cfg->ret->dreg to
6806         the variable index.
6807
6808         * aot-compiler.c: Add emit_push_section ()/emit_pop_section () helper functions
6809         which mimic .push_section/.pop_section in GAS.
6810         
6811         * aot-compiler.c: Emit precise live range information for variables.
6812
6813         * mini-amd64.c (mono_arch_output_basic_block): Add OP_LIVERANGE_START/END.
6814
6815         * method-to-ir.c (mono_spill_global_vars): Compute the instructions marking
6816         the live ranges of variables, and emit OP_LIVERANGE_START/END opcodes for
6817         them.
6818
6819         * mini-ops.h: Add OP_LIVERANGE_START/END opcodes to mark
6820         the live ranges of variables.
6821
6822         * mini.h (struct MonoMethodVar): Add two fields containing the live range
6823         of the variable in terms of native offsets.
6824
6825 2009-02-03  Rodrigo Kumpera  <rkumpera@novell.com>
6826
6827         * arrays.cs: Test for Get/SetValue of array with negate lower bounds.
6828         
6829 2009-02-02  Mark Probst  <mark.probst@gmail.com>
6830
6831         Contributed under the terms of the MIT/X11 license by Steven
6832         Munroe <munroesj@us.ibm.com>.
6833
6834         * exceptions-ppc.c (restore_regs_from_context): Correct operand
6835         order (offset then base reg) for ppc_load_multiple_regs.
6836         (emit_save_saved_regs) Correct operand order for
6837         ppc_store_multiple_regs.
6838         (mono_arch_get_call_filter): Correct operand order for
6839         ppc_load_multiple_regs.
6840
6841         * mini-ppc.c (emit_memcpy): Fix operand order for
6842         ppc_load_reg_update and ppc_store_reg_update.
6843         (mono_arch_output_basic_block): Correct operand order for ppc_lha.
6844         (mono_arch_emit_epilog): Correct operand order for
6845         ppc_load_multiple_regs.
6846
6847         * tramp-ppc.c (mono_arch_create_trampoline_code): Correct operand
6848         order for ppc_store_multiple_regs and ppc_load_multiple_regs.
6849
6850 2009-02-02  Mark Probst  <mark.probst@gmail.com>
6851
6852         * cpu-ppc64.md: Fixed storer4_memindex length.
6853
6854 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
6855
6856         * aot-compiler.c (emit_line_number_info): Optimize the size of the emitted
6857         line number info.
6858         
6859         * aot-compiler.c (emit_line_number_info): Optimize this.
6860
6861 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
6862
6863         * aot-compiler.c: Disassemble tokens in the IL disassembly.
6864         
6865         * aot-compiler.c: Add debug info for methods without debug info by
6866         emitting an IL file and having the line number info referencing that file.
6867
6868         * aot-compiler.c: Optimize the size of the generated line number info.
6869
6870         * aot-compiler.c: Emit line number info in xdebug mode.
6871
6872         * aot-compiler.c (mono_save_xdebug_info): Receive a MonoCompile instead of a
6873         million arguments.
6874
6875 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
6876
6877         * aot-compiler.c (emit_method_dwarf_info): Emit names for local variables.
6878
6879         * driver.c (mono_main): Enable debugging support automatically if XDEBUG
6880         is used.
6881
6882 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
6883
6884         * basic-calls.cs: Test for the weird crash found on arm.
6885         
6886 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
6887
6888         * cpu-arm.md: Increase the size of storer8_membase_reg and
6889         loadr8_membase_reg to 24 bytes to accomodate the extra add.
6890
6891         * mini-arm.c (mono_arch_output_basic_block): Under FPA, when emitting
6892         OP_STORER8_MEMBASE_REG and OP_LOADR8_MEMBASE_REG, add the original
6893         reg to LR otherwise we'll be loading/storing from just the offset.
6894
6895 2009-01-30  Miguel de Icaza  <miguel@novell.com>
6896
6897         Question: if we are storing gint32's inside the "*native_offset",
6898         should we change the signature to "gint32 *native_offset" to
6899         ensure that we do not have type definition problems?
6900         
6901         * mini-exceptions.c (ves_icall_get_frame_info): Cast the gint32 to
6902         an int * as this is what the other function expects, causes
6903         problems with Freescale's compiler that defined int32_t to be a
6904         long and makes int incompatible 
6905
6906 2009-01-30  Miguel de Icaza  <miguel@novell.com>
6907
6908         * Rename generic-sharing.c to mini-generic-sharing.c to avoid the
6909         filename conflict with bjam.
6910
6911 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
6912
6913         * cpu-arm.md: Increase the size of storer8_membase_reg to 20 bytes
6914         as it might use decomposed ops.
6915
6916 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
6917
6918         * jit-icalls.c (mono_imul_ovf): Fix one of the literals.
6919
6920         * mini.c (mini_init): Emulate mul.ovf opcodes if MONO_ARCH_EMULATE_MUL_OVF
6921         is defined.
6922
6923         * mini-arm.h (MONO_ARCH_EMULATE_MUL_OVF): New define.
6924
6925         * mini-arm.c (mono_arch_build_imt_thunk): Rewrite this to allow large vtable
6926         offsets.
6927
6928         * mini-arm.c (mono_arch_context_get_int_reg): Adapt this to the "clever"
6929         way registers are stored in MonoContext on arm.
6930
6931         * unwind.c: Rewrite the handling of the cached_info array to use hazard pointers
6932         instead of locking so mono_get_cached_unwind_info () becomes signal safe.
6933
6934         * mini.c (mini_init): Emuate OP_FCONV_TO_I when using soft float.
6935
6936         * mini-arm.c (emit_load_volatile_arguments): Avoid an unneccesary assert.
6937
6938         * mini.c (mini_init): Register mono_isfinite.
6939
6940         * jit-icalls.c (mono_isfinite): New jit icall.
6941
6942         * method-to-ir.c (mono_decompose_soft_float): Add support for OP_CKFINITE.
6943         
6944         * exceptions-arm.c (mono_arch_find_jit_info): When unwinding using the LMF,
6945         set esp to ARMREG_FP instead of R12, since R12 stores the value of sp for
6946         the parent frame.
6947
6948 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
6949
6950         * exceptions-arm.c (mono_arch_find_jit_info): The frame layout on arm have
6951         separate frame and stack pointers, so we must use FP to find the register
6952         spill area.
6953         The FP reg is retrieved from the MonoContext::regs array.
6954
6955 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
6956
6957         * mini-arm.c (mono_arch_output_basic_block): Emit two cond ops for OP_FBGE
6958         as FPA requires it.
6959
6960 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
6961
6962         * mini-arm.c (mono_arch_emit_setret): Emit OP_FMOVE for methods that
6963         return R4 and R8 when not running under softfloat.
6964
6965         Fixes basic-calls.exe
6966
6967 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
6968
6969         * mini-arm.c: Implement some overflow opcodes.
6970
6971 2009-01-29  Miguel de Icaza  <miguel@novell.com>
6972
6973         * ssa.c: handle another alloca.h
6974
6975         * mini-exceptions.c (mono_handle_native_sigsegv): Do not use
6976         PLATFORM_WIN32 for detecting if we have sigaction.   Instead use
6977         MONO_ARCH_USE_SIGACTION. 
6978
6979         * aot-runtime.c, mini-exceptions.c: Replace platform define with
6980         capability defines.
6981
6982         * method-to-ir.c (mono_method_to_ir): Type cast fix on some platforms.
6983
6984         * mini-ppc.h (MONO_ARCH_USE_SIGACTION): Do not define this for all
6985         PPC targets as sigaction does not exist on all platforms, define
6986         this on a per-platform basis.
6987
6988         Instead of erroring out if the platform is not defined, include
6989         mini-ppc-os.h, and expect that the OS specific setting provides
6990         the required information.   
6991
6992 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
6993
6994         * aot-compiler.c: Fix --enable-minimal=aot.
6995
6996 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
6997
6998         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Fix the
6999         previous change.
7000
7001 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
7002
7003         * exceptions-arm.c: Fix warnings.
7004
7005         * tramp-arm.c aot-compiler.c unwind.h unwind.c: Implement xdebug support for
7006         ARM.
7007
7008         * mini-x86.c: Fix --enable-minimal=jit build.
7009
7010         * mini.c: Really fix --enable-minimal=jit build.
7011         
7012         * mini.c (construct_object_context_for_method): Move this outside
7013         the DISABLE_JIT block to fix the --enable-minimal=jit build.
7014
7015         "Backported" of r124984 from 2.0 branch.
7016         
7017         * aot-compiler.c aot-runtime.c: Add full-aot support delegate BeginInvoke/EndInvoke.
7018
7019         "Backport" of r124977 + r124978 from 2.0 branch.
7020         
7021         * exceptions-arm.c (mono_arm_throw_exception_by_token): New helper function
7022         to avoid calling mono_exception_from_token () from the throw trampoline.
7023         (mono_arch_get_throw_exception_generic): call throw_exception_by_token
7024         for throwing corlib exceptions, this fixes full-aot support for corlib
7025         exceptions.
7026
7027         * aot-compiler.c (compile_method): Make a copy of cfg->locals to fix the build.
7028
7029 2009-01-29  Miguel de Icaza  <miguel@novell.com>
7030
7031         * mini-darwin.c, mini-windows.c, mini-posix.c: Commit the first
7032         part of the changes to split the code in mini into operating
7033         system specific files.
7034
7035         This patch was done by copying mini.c to the respective files to
7036         preserve SVN history.
7037
7038 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
7039
7040         * aot-compiler.c (emit_method_dwarf_info): Add minimal support for locals.
7041
7042 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
7043
7044         * method-to-ir.c (mono_method_to_ir): Avoid generic sharing for calls made to
7045         remoting-invoke-with-check wrappers of shared methods.
7046
7047         * mini.c (print_jit_stats): Print out major gc count/time for libgc too.
7048
7049 2009-01-27  Mark Probst  <mark.probst@gmail.com>
7050
7051         * method-to-ir.c (emit_stloc_ir): Only apply the reg-reg move
7052         optimization if the top of stack is the last instruction in the
7053         bblock.  Otherwise it might have been used after its definition.
7054         Fixes #469742.
7055
7056 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
7057
7058         * mini-trampolines.c (mono_magic_trampoline): Print out the caller
7059         method as well when get_vcall_slot () fails to match a code sequence.
7060
7061         * mini-arm.c: Fix the android build, which doesn't have
7062         __aeabi_read_tp.
7063
7064 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
7065
7066         * mini-s390x.c: Remove a stray declaration of emit_sig_cookie () to fix
7067         the s390x build.
7068
7069 2009-01-26  Rodrigo Kumpera  <rkumpera@novell.com>
7070
7071         * unwind.c (mono_unwind_cleanup): Don't crash if cached_info is NULL.
7072
7073 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
7074
7075         * mini.c (mini_method_compile): Save the unwind info generated by the JIT
7076         and put its id into jinfo->used_regs. This is only used on amd64,
7077         which is currently the only platform generating unwind info.
7078
7079         * exceptions-amd64.c: Instead of unwinding based on a register mask, use
7080         the dwarf unwinder. This is required to correctly handle async exceptions
7081         like thread abort and stack overflows, which can happen while a method
7082         is in the middle of its prolog or epilog.
7083         
7084         * aot-runtime.c (mono_aot_get_unwind_info): New helper function to obtain
7085         the unwind info belonging to an AOTed method.
7086
7087         * aot-compiler.c aot-runtime.c: Save/Load the unwind info emitted by the JIT
7088         into cfg->unwind_ops.
7089         
7090         * unwind.c (mono_unwind_frame): Use <= instead of < for the loop exit check.
7091
7092         * mini.c (mini_init): Call mono_unwind_init ().
7093         (mini_cleanup): Call mono_unwind_cleanup ().
7094
7095         * unwind.c: Add functions for managing a set of unwind info entries, allowing
7096         unwind info to be shared between methods.
7097
7098         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info for the registers
7099         saved in the LMF.
7100
7101         * exceptions-amd64.c (mono_arch_exceptions_init): Call 
7102         get_throw_pending_exception () to avoid initialization races.
7103
7104         * mini-exceptions.c (mono_exceptions_init): Call an arch specific
7105         mono_arch_exceptions_init () function.
7106
7107         * mini.h (MONO_INST_NEW): Remove duplicate setting of cil_code.
7108
7109 2009-01-25  Zoltan Varga  <vargaz@gmail.com>
7110
7111         * mini.c (mono_get_domain_intrinsic): New helper function.
7112         (mono_get_thread_intrinsic): Ditto.
7113
7114         * mini-arm.c mini-ia64.c: Use the new helper functions.
7115         
7116         * method-to-ir.c (mono_method_to_ir): Fix the comment for
7117         the last constrained_call change, since it is needed in the non-AOT
7118         case as well.
7119
7120         * mini-arm.c: Implement OP_TLS_GET on arm eabi linux.
7121         
7122         * mini-arm.c (mono_arch_emit_prolog): Add an inlined version of 
7123         mono_get_lmf_addr () on arm eabi linux.
7124
7125 2009-01-24  Zoltan Varga  <vargaz@gmail.com>
7126
7127         * mini-amd64.c (mono_arch_get_vcall_slot): Handle yet another
7128         code sequence which matches a non-virtual call.
7129
7130 2009-01-23  Mark Probst  <mark.probst@gmail.com>
7131
7132         * mini-ppc.c (mono_arch_context_get_int_reg): Allow access to the
7133         stack pointer (r1).
7134
7135 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
7136
7137         * aot-compiler.c aot-runtime.c: Treat delegate-invoke wrappers similarly to
7138         runtime-invoke wrappers, since they are also shared based on signature.
7139
7140 2009-01-22  Mark Probst  <mark.probst@gmail.com>
7141
7142         * mini-exceptions.c (ves_icall_get_frame_info): Fetch the generic
7143         info from the (correct) context.
7144
7145 2009-01-22  Zoltan Varga  <vargaz@gmail.com>
7146
7147         * unwind.c (mono_unwind_frame): Remove a stray g_free ().
7148         
7149         * unwind.c (mono_unwind_frame): New function to unwind through a frame
7150         using dwarf unwinding info. Not yet used.
7151
7152         * mini.c (mini_init): When using xdebug, disable freeing of domains.
7153
7154 2009-01-21  Mark Probst  <mark.probst@gmail.com>
7155
7156         * mini-ppc.c (mono_arch_delegate_invoke_impl): Return function
7157         descriptors.
7158
7159         * mini-trampolines.c (mono_delegate_trampoline): Remove the PPC64
7160         special case and handle mono_arch_delegate_invoke_impl() returning
7161         function descriptors.
7162
7163         * tramp-ppc.c (mono_arch_create_trampoline_code): Delegate
7164         trampolines return function descriptors, too.
7165
7166 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
7167
7168         * method-to-ir.c (handle_alloc): Avoid generic instances in the
7169         out_of_line optimization.
7170
7171 2009-01-21  Martin Baulig  <martin@ximian.com>
7172
7173         * mini.h
7174         (MonoCompile): Added `disable_deadce_vars' to disable removing
7175         unused variables.
7176
7177         * mini.c
7178         (mini_method_compile): Set `cfg->disable_deadce_vars' when running
7179         inside the debugger.
7180
7181         * liveness.c (mono_analyze_liveness): Don't remove any unused
7182         variables if `cfg->disable_deadce_vars' is set.
7183
7184 2009-01-21  Mark Probst  <mark.probst@gmail.com>
7185
7186         * method-to-ir.c: Only apply exception constructor optimization if
7187         the the method actually belongs to an exception class.  Fixes
7188         #467456.
7189
7190 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
7191
7192         * mini-trampolines.c (mono_delegate_trampoline): Put back the previous
7193         change inside a #ifdef __mono_ppc64__.
7194
7195         * aot-compiler.c (compile_method): Remove the previous limitation.
7196
7197         * method-to-ir.c (method-to-ir.c): Add support for the constrained prefix
7198         on type variables in AOTed code.
7199         
7200         * aot-compiler.c (compile_method): Skip generic methods having type 
7201         constraints on their generic parameters.
7202
7203         * aot-compiler.c (compile_method): Check for methods which cannot be
7204         encoded inside RGCTX_FETCH patches as well.
7205
7206         * mini-exceptions.c (mono_print_thread_dump): Fix the windows
7207         build.
7208
7209 2009-01-20  Mark Probst  <mark.probst@gmail.com>
7210
7211         * method-to-ir.c: Force the vtable variable in shared generic code
7212         for the case that they might show up on a stack trace where they
7213         are needed.
7214
7215         * mini-exceptions.c: Save and use generic sharing info as well as
7216         IP in stack traces to resolve shared generic instantiations.
7217
7218 2009-01-20  Zoltan Varga  <vargaz@gmail.com>
7219
7220         * mini-trampolines.c (mono_delegate_trampoline): Revert the change which
7221         added a mono_get_addr_from_ftnptr () as it breaks the ia64 build.
7222
7223 2009-01-20  Mark Probst  <mark.probst@gmail.com>
7224
7225         * method-to-ir.c: Do generic sharing for array constructors.
7226
7227 2009-01-20  Rodrigo Kumpera  <rkumpera@novell.com>
7228
7229         * mini-exceptions.c (mono_print_thread_dump): Add information
7230         about the thread state using wapi_current_thread_desc.
7231
7232 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
7233
7234         * basic-simd.cs: Tests for the new constructors. 
7235
7236 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
7237
7238         * mini-ops.h: Added OP_EXPAND_*
7239
7240         * cpu-x86.md: Same.
7241
7242         * mini-x86.c (mono_arch_output_basic_block): Same.
7243         
7244         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for single element constructors.
7245
7246 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
7247
7248         * iltests.il.in: Add a test for #467385.
7249
7250 2009-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
7251
7252         * mini.c (mini_thread_cleanup): Don't cleanup TLS storage if the
7253         thread been cleaned up is not the same currently in execution.
7254
7255         Fixes appdomain-unload crashes on windows, osx and linux variants
7256         without the __thread keyword.
7257
7258 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
7259
7260         * mini-arm.c (mono_arch_flush_icache): Applied patch from Koushik Dutta
7261         (koush@koushikdutta.com). Implement this for android.
7262
7263         * helpers.c (mono_disassemble_code): Avoid assembler errors if the id
7264         begins with a digit.
7265
7266         * method-to-ir.c: Call mono_gc_get_write_barrier () instead of
7267         mono_marshal_get_write_barrier ().
7268
7269 2009-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
7270
7271         * decompose.c (mono_decompose_vtype_opts): Fix the decomposition
7272         of OP_VCALL_* ops for 8 bytes vtypes on 32 bits archs and platorms
7273         that pass them on a register pair.
7274
7275         This affects windows, OSX and FreeBSD. The mono/tests/handleref.exe
7276         test was crashing due to that.
7277
7278 Fri Jan 16 15:21:21 CET 2009 Paolo Molaro <lupus@ximian.com>
7279
7280         * exceptions-ppc.c: tweaks from malc (OV-Soft) to fix the size of the
7281         trampoline code. Include ucontext.h only if available.
7282
7283 2009-01-15  Mark Probst  <mark.probst@gmail.com>
7284
7285         * mini.c: mono_domain_lookup_shared_generic() takes an open method
7286         and doesn't check whether it's sharable, like it was before
7287         removing the shared generics hash.  This brings IronPython
7288         performance back to what it was before that change.
7289
7290 2009-01-14  Mark Probst  <mark.probst@gmail.com>
7291
7292         * method-to-ir.c: Handle delegate invocation optimization earlier,
7293         otherwise it would be handled (much more slowly) by the
7294         final/sealed optimization.
7295
7296 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
7297
7298         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes when the current thread or
7299         domain is not set. Fixes #465864.
7300
7301 2009-01-12  Mark Probst  <mark.probst@gmail.com>
7302
7303         * method-to-ir.c: Don't stop sharing of generic methods with catch
7304         clauses - we already handle those.
7305
7306 2009-01-12  Mark Probst  <mark.probst@gmail.com>
7307
7308         * mini.c, mini.h: lookup_generic_method() is now
7309         mono_domain_lookup_shared_generic() and uses the jit_code_hash,
7310         making the shared_generics_hash obsolete.
7311
7312 2009-01-12  Mark Probst  <mark.probst@gmail.com>
7313
7314         * mini-ppc.c, exceptions-ppc.c, cpu-ppc.md, cpu-ppc64.md: Don't
7315         use the red zone.  Make room on the stack first and then use it,
7316         not the other way around.
7317
7318 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
7319
7320         * mini.c (mini_init): Call mono_xdebug_init ().
7321
7322         * aot-compiler.c (mono_xdebug_init): Make this non-static.
7323
7324 2009-01-11  Zoltan Varga  <vargaz@gmail.com>
7325
7326         * TestDriver.cs: Add an --iter argument to run tests multiple times.
7327
7328         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Emit debug info for
7329         trampolines.
7330
7331         * aot-compiler.c (mono_save_trampoline_xdebug_info): New function to emit
7332         debug+unwind info for trampolines.
7333
7334         * mini.c (mono_create_unwind_op): New helper function.
7335
7336         * unwind.h: Add macros for emitting unwind ops without a MonoCompile.
7337
7338 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
7339
7340         * aot-compiler.c: Fix the build.
7341
7342 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
7343
7344         * Makefile.am: Update dtrace-prelink.sh location.
7345
7346 2009-01-08  Zoltan Varga  <vargaz@gmail.com>
7347
7348         * method-to-ir.c (mono_method_to_ir): Fix the check for the mscorlib ldstr 
7349         optimization. Fixes #464520.
7350
7351 2009-01-07  Bill Holmes  <billholmes54@gmail.com>
7352
7353         * mini-amd64.c : Adding code to save/restore non-volatile registers
7354            on Winx64.
7355
7356         * exceptions-amd64.c : Adding code to save/restore non-volatile 
7357           registers on Winx64.
7358
7359         Contributed under MIT/X11 license.
7360
7361 2009-01-07  Zoltan Varga  <vargaz@gmail.com>
7362
7363         * mini-arm.c (mono_arch_flush_icache): Use __GNUC_PREREQ instead of checking
7364         __GNUC_MINOR__ which can break when the major version changes.
7365
7366 2009-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
7367
7368         * basic-simd.cs: Add tests for usage of the sizeof opcode.
7369
7370 2009-01-07  Geoff Norton  <gnorton@novell.com>
7371
7372         * helpers.c:  Allow mono -v -v -v to work on darwin.
7373
7374 2009-01-05  Bill Holmes  <billholmes54@gmail.com>
7375
7376         * mini-amd64.c (mono_arch_get_vcall_slot) : Handle an additional instruction
7377           pattern. 
7378
7379         Contributed under MIT/X11 license.
7380
7381 2009-01-05  Zoltan Varga  <vargaz@gmail.com>
7382
7383         * mini.c (mono_allocate_stack_slots_full2): Use mono_class_from_mono_type
7384         instead of directly accessing type->data.klass. Fixes #462016.
7385         (mono_allocate_stack_slots_full): Ditto.
7386
7387         * mini-arm.c (mono_arch_flush_icache): Applied patch from Riku Voipio 
7388         <novell@kos.to>. Fix cache flush on kernels without OLDABI compat option.
7389
7390         * aot-compiler.c (emit_plt): Fix ARM build.
7391
7392 2009-01-04  Zoltan Varga  <vargaz@gmail.com>
7393
7394         * branch-opts.c (mono_if_conversion): Optimize this using ins->prev.
7395         
7396         * branch-opts.c (mono_if_conversion): Fix an assert introduced by the last
7397         change.
7398
7399         * branch-opts.c (mono_if_conversion): Use branch->inst_true_bb/inst_false_bb
7400         instead of bblock->out_bb [0]/[1], the two might not be the same. Fixes
7401         #463357.
7402
7403         * iltests.il.in: Add a regression test.
7404
7405 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7406
7407         * mini-codegen.c (mono_print_ins_index): Pretty print XPHI and VPHI.
7408
7409 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7410
7411         * basic-simd.cs: Add a regression test for #462457.
7412
7413 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7414
7415         * mini-ops.h: Add a definition of XPHI.
7416
7417         * mini.h (MONO_IS_PHI): Make is aware of simd instrincs. 
7418
7419         * ssa.c (op_phi_to_move): Handle XPHI.
7420
7421         * ssa.c (mono_ssa_compute): Generate a XPHI for simd intrinsics instead of VPHI.
7422
7423         Fixes #462457
7424
7425 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7426
7427         * method-to-ir.c (mono_emit_rgctx_calli): Fix a warning.
7428
7429 2008-12-31  Geoff Norton  <gnorton@novell.com>
7430
7431         * mini-ppc.c: The prolog size allocated can be too small for darwin
7432         ppc32 under certain circumstances.  Also fix a small logic bug.
7433
7434 2008-12-29  Zoltan Varga  <vargaz@gmail.com>
7435
7436         * mini.c (mono_jit_compile_method_inner): Avoid holding the domain lock
7437         while loading AOT methods.
7438
7439         * mini-exceptions.c: Check jit_tls->class_cast_from instead of class_cast_to
7440         since only the former is nulled out after a successful cast. This prevents
7441         crashes with rethrown exceptions when using --debug=casts.
7442
7443 2008-12-24  Mark Probst  <mark.probst@gmail.com>
7444
7445         * mini.h: New macro for checking whether a method is final,
7446         i.e. whether the method or its class is marked final.
7447
7448         * method-to-ir.c: Use the new macro for all final-checks
7449         consistently.  Fixes the crash in the System.ServiceModel tests.
7450
7451 2008-12-23  Mark Probst  <mark.probst@gmail.com>
7452
7453         * mini-exceptions.c (get_exception_catch_class): Corrected another
7454         overly strict assertion.
7455
7456 2008-12-23  Mark Probst  <mark.probst@gmail.com>
7457
7458         * mini-ppc.c (mono_arch_build_imt_thunk): Save and restore r11.
7459         Clobbering it is not allowed because the caller might use it as
7460         the vtable register in the interface call.
7461
7462 2008-12-19  Mark Probst  <mark.probst@gmail.com>
7463
7464         * mini-exceptions.c (get_exception_catch_class): Corrected an
7465         overly strict assertion.
7466
7467 2008-12-18  Mark Mason  <mmason@upwardaccess.com>
7468         
7469         * method-to-ir.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P or sizeof(gpointer) when appropriate.
7470
7471         * mini.h: Move typedef to mgreg_t up above include of mini-arch.h
7472
7473         * local-propogation.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P when appropriate
7474
7475         * cpu-mips.md: correct lengths for certain long_ opcodes.
7476
7477         * mini-mips.h: Only emulate long operations when SIZEOF_REGISTER==4. Add missing func decl.
7478
7479         * 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().
7480         
7481 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
7482
7483         * exceptions-mips.c (mono_arch_find_jit_info): decode sd instructions as well when looking for registers.
7484         
7485 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
7486         
7487         * mini-mips.c (mono_arch_output_basic_block): OP_JUMP_TABLE stores patch type in inst_c1, not inst_i1.
7488         
7489 2008-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
7490
7491         * branch-opts.c (remove_block_if_useless): Even if BB0 falls through, don't add a br to the
7492         next basic block.
7493         
7494 2008-12-16  Mark Mason  <mmason@upwardaccess.com>
7495
7496         * 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
7497
7498         * 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)
7499         
7500 2008-12-15  Mark Mason  <mmason@upwardaccess.com>
7501         
7502         * trace.c (mono_trace_enter_method): correctly handle arguments smaller than the stack slot size on big endian systems.
7503         
7504 2008-12-14  Zoltan Varga  <vargaz@gmail.com>
7505
7506         * liveness.c (mono_analyze_liveness): Avoid eliminating the 'this' var in
7507         gshared code. Fixes #458947.
7508
7509         * generics.cs: Add a test.
7510
7511 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
7512         
7513         * method-to-ir.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7514         
7515         * mini-mips.c: first pass n32 code generation.
7516
7517         * mini-mips.h: datatypes and defines for n32 support.
7518
7519         * exceptions-mips.c: first pass n32 code generation.
7520         
7521         * tramp-mips.c: first pass n32 code generation.
7522         
7523         * cpu-mips.md: add long_ opcodes.
7524         
7525 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
7526
7527         * liveness.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7528
7529         * cfold.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7530         
7531         * local-propogation.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7532         
7533         * regalloc2.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7534
7535         * mini.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7536
7537         * mini-codegen.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7538
7539         * ssa.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7540
7541         * decompose.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7542
7543         * helpers.c: for mips/n32, don't pass -mips32 to objdump
7544
7545 2008-12-12  Zoltan Varga  <vargaz@gmail.com>
7546
7547         * mini-arm.c tramp-arm.c: Fix calls to mono_arch_flush_icache.
7548
7549 2008-12-12  Andres G. Aragoneses  <aaragoneses@novell.com>
7550
7551         * driver.c: Sync --help-trace with man page (EXPR,EXPR).
7552
7553 2008-12-12  Mark Probst  <mark.probst@gmail.com>
7554
7555         * mini-ppc.h, exceptions-ppc.c, tramp-ppc.c: Create function
7556         descriptors for helper functions directly in front of the code.
7557
7558 2008-12-11  Mark Probst  <mark.probst@gmail.com>
7559
7560         * method-to-ir.c: Removed an unnecessary assertion.
7561
7562 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
7563
7564         * method-to-ir.c: Merge SGEN changes from the old JIT.
7565
7566 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
7567
7568         * driver.c (compile_all_methods_thread_main): Handle failure of
7569         mono_get_method ().
7570
7571 2008-12-10  Mark Probst  <mark.probst@gmail.com>
7572
7573         * mini-ppc.c: Merged with mini-ppc64.c.
7574
7575         * mini-ppc.h: Define PPC_MINIMAL_PARAM_AREA_SIZE on all targets.
7576
7577         * Makefile.am: Use the same sources for PPC and PPC64.
7578
7579         * mini-ppc64.c: Removed.
7580
7581 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
7582
7583         * branch-opts.c (remove_block_if_useless): Extract fall through detection
7584         code to mono_bb_is_fall_through.
7585         
7586         * branch-opts.c (mono_remove_critical_edges): Same.
7587
7588 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
7589
7590         * ssa.c (fold_ins): branch opt can kill dummy switch ops so we can't
7591         expect that an OP_BR_REG will be there.
7592
7593 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
7594
7595         * branch-opts.c (remove_block_if_useless): Use MONO_IS_BRANCH_OP instead of checking
7596         for the many branch ops. The original check miss OP_BR_REG.
7597
7598         Fixes #457574.
7599         
7600 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
7601
7602         * mini-mips.h mini-mips.c exceptions-mips.c tramp-mips.c: first round of changes necessary to eventually support n32.
7603
7604 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
7605
7606         * aot-runtime.c (load_method): Avoid calling decode_exception_debug_info
7607         while holding the aot lock.
7608
7609 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
7610
7611         * mini-mips.c (mono_arch_output_basic_block): use mfc1/lwc1 instead of mfc1d/ldc1
7612         
7613 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
7614
7615         * mini.c (mini_cleanup) : Adding a call to cominterop_release_all_rcws 
7616           to release all runtime callable wrappers held by the runtime.
7617
7618         Contributed under MIT/X11 license.
7619
7620 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
7621
7622         * tramp-amd64.c (mono_arch_create_trampoline_code_full) : Increase the code size for
7623           for Winx64.
7624
7625         Contributed under MIT/X11 license.
7626
7627 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
7628
7629         * aot-runtime.c (decode_exception_debug_info): Acquire the domain
7630         lock when calling mono_domain_alloc (). Hopefully fixes #415608.
7631
7632 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
7633
7634         * cpu-mips.md: fix ckfinite length
7635
7636         * mini-mips.c: at least recognize n32 ABI when used (not yet supported)
7637         (mono_arch_lowering_pass): cleanup, rearrange for clarity
7638         (mono_arch_output_basic_block): implement OP_CKFINITE, add more asserts
7639         
7640 2008-12-08  Mark Mason   <mmason@upwardaccess.com>
7641
7642         * exceptions-mips.c (mono_arch_find_jit_info): init new_ctx with ctx, dont' call setup_context.
7643         
7644 2008-12-08  Geoff Norton  <gnorton@novell.com>
7645
7646         * tramp-amd64.c: r120895 stores RAX, so we need to increase the window
7647         size by 8 bytes as well.
7648
7649 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7650
7651         * basic-simd.cs: Fix method names for Vector16b.
7652         
7653 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7654
7655         * basic-simd.cs: Fix method names for Vector16sb.
7656
7657 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7658
7659         * basic-simd.cs: Fix method names for Vector8us.
7660         
7661 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7662
7663         * basic-simd.cs: Fix method names for Vector8s.
7664         
7665 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7666
7667         * basic-simd.cs: Fix method names for Vector4ui.
7668
7669 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7670
7671         * basic-simd.cs: Fix method names for Vector2l.
7672
7673 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7674
7675         * basic-simd.cs: Fix method names for Vector2d.
7676
7677 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7678
7679         * simd-intrinsics.c (mono_emit_simd_intrinsics): Add support for intrinsics
7680         that are extension methods.
7681
7682 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7683
7684         * basic-simd.cs: Fix method names for Vector4f.
7685
7686 2008-12-08  Zoltan Varga  <vargaz@gmail.com>
7687
7688         * mini-exceptions.c (mono_print_thread_dump): Mark threadpool threads
7689         as such. Fixes #456669.
7690
7691 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
7692
7693         * mini-mips.c (mono_arch_emit_call): narrow float arguments when passing as args.
7694         
7695 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
7696
7697         * mini-mips.c (mono_arch_lowering_pass): don't handle OP_ICONV_TO_R* or OP_R*CONST
7698         (mono_arch_emit_setret): use OP_MIPS_CVTSD to return SP floats
7699         (mono_arch_output_basic_block): simplify FP load/store, handle OP_MIPS_FBLT_UN
7700         (mips_adjust_stackframe): handle FP spills
7701                 
7702         * mini-ops.h: add mips_mtc1_s2
7703         
7704         * cpu-mips.md: add mips_mtc1_s2
7705         
7706 2008-12-07  Zoltan Varga  <vargaz@gmail.com>
7707
7708         * unwind.c: New file, move the unwind info encoding functions here from
7709         aot-compiler.c, so they could be used at runtime too.
7710
7711 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
7712
7713         * mini-mips.c (mono_arch_lowering_pass): handle OP_IMUL_IMM as well
7714         (mono_arch_output_basic_block): fix OP_LOCALLOC code generation
7715         
7716 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
7717
7718         * mini-mips.c: cleanup warnings
7719         (mono_arch_lowering_pass): handle OP_LOCALLOC_IMM
7720         (mips_adjust_stackframe): handle case of taking the address of stack locals
7721         
7722 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
7723
7724         * aot-compiler.c: Implement a few functions missing from the asm writer.
7725         (emit_method_code): Only write symbols for methods when using the bin
7726         writer, since the assembler can't deal with the characters in our method
7727         names.
7728
7729         * aot-compiler.c (is_plt_patch): ICALL_ADDR is also a plt patch.
7730
7731         * method-to-ir.c (mono_method_to_ir): Transform aotconst+calli into a direct
7732         call.
7733
7734         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Rework the code
7735         a bit to also restore %rax.
7736
7737 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7738
7739         * mini-ppc.c: Some simple merges from mini-ppc64.c.
7740
7741 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
7742
7743         * ssa.c (mono_ssa_compute): Only add an implicit reference at start for
7744         arguments.
7745
7746 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7747
7748         * exceptions-ppc.c: Merged with exceptions-ppc64.c.
7749
7750         * mini-ppc.c, mini-ppc.h: Remove PPC_STACK_ALIGNMENT and use
7751         MONO_ARCH_FRAME_ALIGNMENT.  Struct for PPC64 function descriptors.
7752
7753         * exceptions-ppc64.c: Removed.
7754
7755         * Makefile.am: Use exceptions-ppc.c instead of exceptions-ppc64.c.
7756
7757 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7758
7759         * tramp-ppc.c, mini-ppc.c, mini-ppc.h: Merged tramp-ppc.c with
7760         tramp-ppc64.c.
7761
7762         * Makefile.am: Use tramp-ppc.c instead of tramp-ppc64.c.
7763
7764         * tramp-ppc64.c: Removed.
7765
7766 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
7767
7768         * aot-compiler.c (add_generic_instances): Skip non-generic classes in
7769         the TYPESPEC table.
7770
7771 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7772
7773         * mini-ppc.h: Merged mini-ppc64.h with mini-ppc.h.
7774
7775         * exceptions-ppc64.c, tramp-ppc64.c, mini-arch.h, Makefile.am: Use
7776         mini-ppc.h instead of mini-ppc64.h.
7777
7778         * mini-ppc64.h: Removed.
7779
7780 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7781
7782         * mini-mips.c: introduce USE_LDC_SDC: use ldc1/sdc1 to load/store doubles, disabled by default
7783         
7784         * mini-mips.c (mono_arch_emit_outarg_vt): fix offset calculation for memcpy in structure passing.
7785         
7786 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7787
7788         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c:
7789         Removed FIRST/LAST_[GF]REG macros, to make merging PPC64 with PPC
7790         code easier.
7791
7792 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
7793
7794         * basic-simd.cs: Tests for operator == and != on  Vector8us and Vector16b.
7795
7796 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
7797
7798         * simd-intrinsics.c: Add support for operator == and != to Vector8(u)s and Vector16(s)b.
7799
7800 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
7801
7802         * basic-simd.cs: Tests for operator == and != on Vector4f.
7803
7804 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
7805
7806         * simd-intrinsics.c (simd_intrinsic_emit_equality): Adapt to support Vector4f.
7807
7808         * simd-intrinsics.c: Kill useless enum.
7809
7810 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7811
7812         * cpu-mips.md: add long_conv_to_ovf_i4_2
7813         * mini-mips.c: update/add various _OVF_ opcodes to fix test failures
7814
7815 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7816
7817         * mini-mips.c: ifdef protect automatic promotions of R4 to R8.
7818         
7819         * mini-mips.c (mono_arch_emit_setret): handle R4 case with FCONV_TO_R4 instead of FMOVE
7820
7821 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7822
7823         * mini-mips.c (mono_arch_output_basic_block): fix codegen for OP_OR_IMM/OP_IOR_IMM
7824         
7825 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
7826
7827         * basic-simd.cs: Add tests for new methods.
7828
7829 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
7830
7831         * simd-intrinsics.c: Add support for operator == and !=
7832         on Vector4(u)i.
7833
7834         * simd-methods.h: Add SN_op_Inequality and SN_op_Equality.
7835
7836 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
7837
7838         * simd-intrinsics.c: Remove ExtractByteMask intrinsics.
7839
7840 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
7841
7842         * aot-compiler.c (add_wrappers): Add pinvoke wrappers.
7843
7844         * mini.c (mono_resolve_patch_target): Allow pinvoke methods in 
7845         MONO_PATCH_INFO_ICALL_ADDR.
7846
7847         * aot-runtime.c (MonoAotFileInfo): Correct order of fields.
7848
7849         * aot-compiler.c: Resurrect full-aot support.
7850
7851 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7852
7853         * mini-mips.c (mono_arch_lowering_pass): handle OP_COMPARE and OP_ICOMPARE
7854         
7855 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7856
7857         * mini-mips.c (mono_arch_output_basic_block): fix OP_IREM_UN code generation
7858         
7859 2008-12-03  Rodrigo Kumpera  <rkumpera@novell.com>
7860
7861         * basic-simd.cs: Fix tests to work under ppc.
7862         Remove tests for methods that will be removed.
7863
7864 2008-12-03  Mark Probst  <mark.probst@gmail.com>
7865
7866         * method-to-ir.c (mono_method_to_ir): Handle ldtoken of an open
7867         generic type (via a typedef or typeref) correctly.
7868
7869 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
7870
7871         * mini-trampolines.c (mono_magic_trampoline): Add some debugging code to help
7872         diagnose an assertion failure.
7873
7874 2008-12-02  Mark Probst  <mark.probst@gmail.com>
7875
7876         * tramp-ppc64.c (mono_arch_create_rgctx_lazy_fetch_trampoline):
7877         Fix trampoline size.
7878
7879         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: A few floating point
7880         conversion opcodes are implemented natively instead via emulation.
7881
7882 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
7883
7884         * cpu-mips.md: remove mips_xori
7885
7886         * mini-ops.h:  remove mips_xori
7887
7888         * mini-mips.h: replace OP_MIPS_XORI with OP_IXOR
7889
7890         * mini-mips.c (mono_arch_decompose_long_opts): Add ladd_imm, lsub, lsub_imm, lneg, lsub_ovf, lsub_ovf_un.
7891         
7892         * mini-mips.c (mono_arch_lowering_pass, mono_arch_output_basic_block): fix IXOR handling
7893         
7894 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
7895
7896         * cpu-mips.md: fix instruction lengths.
7897
7898         * mini-mips.h: define MONO_ARCH_NO_IOV_CHECK
7899
7900         * mini-mips.c: move most instruction rewriting into decompose_ops. Implement conditional branches and exceptions. Fix jump table patch handling. Implement add/sub OVF.
7901
7902         * mini-ops.h: fix slti / sltiu op profiles.
7903         
7904 2008-12-02  Martin Baulig  <martin@ximian.com>
7905
7906         * method-to-ir.c (mono_method_to_ir): Disable debugging
7907         information for the init locals block to make the debugger stop
7908         after all locals have been initalized.
7909
7910 2008-12-02  Martin Baulig  <martin@ximian.com>
7911
7912         * mini.c (mini_method_compile): Disable MONO_OPT_DEADCE when
7913         running inside the debugger.
7914
7915 2008-12-01  Zoltan Varga  <vargaz@gmail.com>
7916
7917         * mini.c (mini_method_compile): Only run local deadce if MONO_OPT_DEADCE
7918         is enabled.
7919
7920         * method-to-ir.c (mono_method_to_ir): Fix invalid code generated by the 
7921         alu->alu imm optimization which only shows if deadce is disabled.
7922
7923         * aot-compiler.c: Rename the function names for the binary and asm writers
7924         so they can coexist in the same process. Rework the xdebug code to use the
7925         asm writer. This avoids the need to call into the runtime to dump the
7926         debugging info. Add more debugging info for types.
7927
7928         * mini-<ARCH>.h: Kill MONO_ARCH_HAVE_NORMALIZE_OPCODES define.
7929
7930         * genmdesc.c genmdesc.pl mini.h: Don't put the CEE_ opcodes into the
7931         cpu description tables, they can't occur in cpu-<ARCH>.md.
7932
7933         * method-to-ir.c (mono_method_to_ir): Set the type of the value pushed on
7934         the stack in CEE_LDFLDA. Fixes #450542.
7935
7936         * generics.cs: Add a new test.
7937
7938 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
7939
7940         * mini-ops.h: updated MIPS opcodes
7941         * mini-mips.c: decompose long opts
7942         * mini-mips.h: decompose long opts
7943         
7944 2008-11-29  Mark Mason   <mmason@upwardaccess.com>
7945
7946         * cpu-mips.md: fix length on int_rem_un
7947         * mini-mips.c (mips_stackframe_adjust): fix insertion of spillvars region in MIPS stackframes.
7948         
7949 2008-11-29  Zoltan Varga  <vargaz@gmail.com>
7950
7951         * mini.h aot-runtime.c: Fix building with DISABLE_AOT.
7952
7953         * mini-codegen.c (mono_print_ins_index): Handle OP_VOIDCALL_MEMBASE.
7954
7955 2008-11-29  Martin Baulig  <martin@ximian.com>
7956
7957         * mini-exceptions.c (mono_handle_native_sigsegv): Check
7958         mono_debug_using_mono_debugger() in addition to the
7959         `no_gdb_backtrace' flag in the `MonoDebugOptions'.
7960
7961 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
7962
7963         * mini-ops.h: updated more MIPS opcodes
7964         * mini-mips.c: FP compare/branch working again, clean up last of CEE_ -> OP_ mappings
7965         * cpu-mips.md: Added MIPS versions of new FP compare/branch opcodes.
7966         
7967 2008-11-28  Mark Probst  <mark.probst@gmail.com>
7968
7969         * mini-ppc64.c: Patch the RGCTX fetch trampoline correctly.
7970
7971 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
7972
7973         * mini-mips.c (mono_arch_emit_call): adding missing conversion to fp single when passing in integer arg register.
7974         * mini-mips.c (mips_adjust_stackframe): compensate for spill-down logic.
7975         * mini-ops.h: correct selected mips opcode entries
7976         
7977 2008-11-28  Mark Probst  <mark.probst@gmail.com>
7978
7979         * mini-ppc64.c, mini-ppc64.h: Enable generalized IMT thunks and
7980         make them work.
7981
7982 2008-11-28  Mark Probst  <mark.probst@gmail.com>
7983
7984         * mini-ppc64.h, tramp-ppc64.c: Make generic code sharing work.
7985
7986 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
7987
7988         * method-to-ir.c, mini-trampolines.c: protect IMG code with #ifdef MONO_ARCH_HAVE_IMT to fix compile errors.
7989         * mini-mips.c: Fixup stackframe assignments after allocation of spillvars.
7990         * mini-mips.h: disable IMT
7991         * tramp-mips.c (mono_arch_get_vcall_slot): fix offset extraction
7992         
7993 2008-11-28  Mark Probst  <mark.probst@gmail.com>
7994
7995         * mini-ppc64.c, mini-ppc64.h: Don't emulate long ops.
7996
7997 2008-11-28  Mark Probst  <mark.probst@gmail.com>
7998
7999         * mini-ppc64.c, exceptions-ppc64.c: Several fixes.
8000
8001 2008-11-28  Zoltan Varga  <vargaz@gmail.com>
8002
8003         * method-to-ir.c (handle_isinst): Use PCONST instead of ICONST for
8004         consistency.
8005
8006 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
8007
8008         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
8009         for Set/GetVector aligned versions.
8010
8011 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
8012
8013         * basic-simd.cs: Add tests for Get/SetVector.
8014
8015 2008-11-27  Mark Probst  <mark.probst@gmail.com>
8016
8017         * mini.c: Removed g_slist_append_mempool().  Now in
8018         metadata/mempool.c.
8019
8020 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
8021
8022         * simd-intrinsics.c (mono_emit_vector_ldelema): Extract the element
8023         size properly and make the bounds check optional.
8024
8025         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
8026         for SetVector and IsAligned.
8027
8028 2008-11-27  Zoltan Varga  <vargaz@gmail.com>
8029
8030         * mini.c: Remove unused mono_normalize_opcodes () function.
8031
8032 2008-11-26  Mark Probst  <mark.probst@gmail.com>
8033
8034         * method-to-ir.c (mini_emit_inst_for_method): Small fix: we're
8035         using the new atomic add ops now.
8036
8037         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Implemented atomic
8038         add.
8039
8040 2008-11-26  Mark Probst  <mark.probst@gmail.com>
8041
8042         * mini-ppc64.c: Several fixes.
8043
8044 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8045
8046         * cpu-mips.md: added jump_table
8047         * mini-mips.c: added jump_table. Eliminate compare-imm when lowering. Remove dead function.             
8048
8049 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8050
8051         * mini-mips.c, mini-mips.h, tramp-mips.c, cpu-mips.md: Initial upgrade of MIPS port to new IR.
8052
8053 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8054
8055         * mini-ops.h: corrected a handful of MIPS opcodes.
8056
8057 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8058
8059         * aot-compiler.c: MIPS to use ELF writer
8060
8061 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8062
8063         * mini-codegen.c: remove MIPS specific assert.
8064
8065 2008-11-25  Mark Probst  <mark.probst@gmail.com>
8066
8067         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Several
8068         fixes.  PPC64 now passes most of the runtime regressions.
8069
8070 2008-11-24  Zoltan Varga  <vargaz@gmail.com>
8071
8072         * regalloc2.c: Distinguish between use/def positions. Optimize the creation of
8073         volatile intervals a bit.
8074
8075 2008-11-24  Mark Probst  <mark.probst@gmail.com>
8076
8077         * basic-long.cs: New test case.
8078
8079 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
8080
8081         * mini.c (mini_method_compile): Disable globalra for large methods for 
8082         now.
8083
8084         * regalloc2.c (order_moves): Add fp support.
8085
8086         * branch-opts.c (mono_remove_critical_edges): Split non-critical edges whose
8087         source bblock ends with an OP_BR_REG.
8088
8089         * ratests.cs: Add a new test.
8090
8091 2008-11-23  Mark Probst  <mark.probst@gmail.com>
8092
8093         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c: Disable generic code
8094         sharing.  PPC64 now passes generics.exe.
8095
8096 2008-11-23  Mark Probst  <mark.probst@gmail.com>
8097
8098         * mini-ppc64.c: Several fixes.  PPC64 now runs iltests.exe.
8099
8100 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
8101
8102         * exceptions-x86.c (mono_arch_find_jit_info): Avoid reading uninitialized
8103         memory when mono_jit_info_table_find () can't find the method in the
8104         LMF case.
8105
8106         * aot-compiler.c (mono_save_xdebug_info): Emit complete debug info for
8107         AOTed code too.
8108         
8109         * aot-compiler.c (mono_save_xdebug_info): Make this work with the assembly
8110         writer too.
8111
8112 2008-11-23  Mark Probst  <mark.probst@gmail.com>
8113
8114         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, cpu-ppc64.md:
8115         Several fixes.  PPC64 now runs exceptions.exe and
8116         devirtualization.exe.
8117
8118 2008-11-22  Mark Probst  <mark.probst@gmail.com>
8119
8120         * mini-ppc64.c, tramp-ppc64.c: Small fixes.  PPC64 now runs
8121         arrays.exe and basic-math.exe.
8122
8123 2008-11-22  Mark Probst  <mark.probst@gmail.com>
8124
8125         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c,
8126         cpu-ppc64.md: Several fixes.  PPC64 now runs objects.exe.
8127
8128 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
8129
8130         * simd-intrinsics.c: Add support ArrayExtension intrinsics.
8131
8132 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
8133
8134         * method-to-ir.c: Move bounds checking macros to ir-emit.h
8135
8136         * ir-emit.h: Move macros from method-to-ir.c to here.
8137
8138 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
8139
8140         * mini-ops.h: Correct the long simd ops to use LREG.
8141
8142 2008-11-21  Zoltan Varga  <vargaz@gmail.com>
8143
8144         * mini-ops.h: Correct the dreg type of OP_LOADI8_MEMBASE.
8145         
8146         * mini-ops.h: Correct the dreg type of a few long opcodes.
8147
8148         * mini-amd64.h: Applied patch from Mihai Chelaru <kefren@ngnetworks.ro>.
8149         Add netbsd support.
8150
8151 Fri Nov 21 12:52:23 CET 2008 Paolo Molaro <lupus@ximian.com>
8152
8153         * mini-ppc.c: remove negative stack references in epilog
8154         for platforms that don't support the red zone.
8155
8156 2008-11-21  Mark Probst  <mark.probst@gmail.com>
8157
8158         * mini-ppc64.h, cpu-ppc64.md: Fixed caller/callee saved floating
8159         point regs.  Now PPC64 passes basic-calls.exe.
8160
8161 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8162
8163         * basic-simd.cs: Add tests for accessors of Vector2l.
8164
8165 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8166
8167         * mini-ops.h: Added OP_INSERTX_I8_SLOW,.
8168
8169         * mini-x86.c (mono_arch_decompose_long_opts): Decompose OP_INSERTX_I8_SLOW.
8170         
8171         * simd-intrinsics.c: Add support for Vector2l and Vector2ul.
8172
8173 2008-11-21  Mark Probst  <mark.probst@gmail.com>
8174
8175         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Several fixes.  Now
8176         PPC64 passes basic-long.exe.
8177
8178 2008-11-20  Mark Probst  <mark.probst@gmail.com>
8179
8180         * decompose.c: Decompose carry and overflow add on PPC64 like on
8181         other 64 bit archs.  Don't decompose sub at all on PPC64.
8182
8183         * mini-ppc64.c, exceptions-ppc64.c, tramp-ppc64.c, cpu-ppc64.md:
8184         Several fixes and new opcodes.  Now PPC64 runs (but doesn't pass)
8185         basic-long.exe.
8186
8187 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8188
8189         * basic-simd.cs: Add tests for accessors of Vector2d.
8190
8191 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8192
8193         * mini-ops.h: Added OP_INSERTX_R8_SLOW,.
8194
8195         * cpu-x86.md: Same.
8196
8197         * mini-x86.c (mono_arch_output_basic_block): Same.
8198         
8199         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector2d.
8200
8201 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8202
8203         * basic-simd.cs: Add tests for accessors of Vector4f.
8204
8205 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8206
8207         * mini-ops.h: Added OP_INSERTX_R4_SLOW,.
8208
8209         * cpu-x86.md: Same.
8210
8211         * mini-x86.c (mono_arch_output_basic_block): Same.
8212         
8213         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4f.
8214
8215 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8216
8217         * basic-simd.cs: Add tests for accessors of Vector4i and Vector4ui.
8218
8219 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8220
8221         * mini-ops.h: Added OP_INSERTX_I4_SLOW,.
8222
8223         * cpu-x86.md: Same.
8224
8225         * mini-x86.c (mono_arch_output_basic_block): Same.
8226         
8227         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4i and Vector4ui.
8228
8229 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8230
8231         * cpu-x86.md: Use reasonable sizes for extractx_u2 and insertx_u1_slow.
8232
8233 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8234
8235         * simd-intrinsics.c: Enable setters for Vector16sb.
8236
8237 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8238
8239         * mini-ops.h: Added OP_EXTRACTX_U2, OP_INSERTX_U1_SLOW.
8240
8241         * cpu-x86.md: Same.
8242
8243         * mini-x86.c (mono_arch_output_basic_block): Same.
8244         
8245         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector16b.
8246
8247 2008-11-19  Rodrigo Kumpera  <rkumpera@novell.com>
8248
8249         * simd-intrinsics.c: Implement setter for Vector8us.
8250
8251 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
8252
8253         * aot-compiler.c (mono_save_xdebug_info): Emit correct location info
8254         for dead variables.
8255
8256 Wed Nov 19 18:27:41 CET 2008 Paolo Molaro <lupus@ximian.com>
8257
8258         * mini-ppc.c: remove references to the red zone in the prolog
8259         (for systems that don't support it).
8260
8261 2008-11-19  Mark Probst  <mark.probst@gmail.com>
8262
8263         * cpu-ppc64.md: Fixed a few instruction lengths.
8264
8265         * mini-ppc64.c: Don't emit SETLRET.  PPC64 passes basic-float.exe,
8266         now.
8267
8268 2008-11-19  Mark Probst  <mark.probst@gmail.com>
8269
8270         * mini-ppc64.c, cpu-ppc64.md: Fixed some opcodes.  PPC64 passes
8271         basic.exe now.
8272
8273 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
8274
8275         * aot-compiler.c (mono_save_xdebug_info): Add more parameter types.
8276
8277 2008-11-18  Rodrigo Kumpera  <rkumpera@novell.com>
8278
8279         * mini-ops.h: Added OP_INSERT_I2.
8280
8281         * cpu-x86.md: Same.
8282
8283         * mini-x86.c (mono_arch_output_basic_block): Same.
8284         
8285         * simd-intrinsics.c: Implement setter for Vector8s.
8286
8287         * simd-methods.h: Add the names of get setters of Vector8s.
8288
8289 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
8290
8291         * aot-compiler.c (mono_save_xdebug_info): Add support for parameters.
8292         
8293         * aot-compiler.c (mono_save_xdebug_info): Add preliminary support for
8294         parameters.
8295
8296         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
8297
8298 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8299
8300         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Changes
8301         for PPC64.  An empty program runs now.
8302
8303 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
8304
8305         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
8306
8307         * aot-compiler.c mini.c mini.h: Add a JIT debugging mode modelled after
8308         a similar mode in Kaffe: When the the MONO_XDEBUG env var is set, debugging
8309         info for JITted code is emitted into a shared library, loadable into gdb.
8310
8311 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8312
8313         * Makefile.am: Changes to build PPC64.
8314
8315         * mini-arch.h: Include mini-ppc64.h on PPC64.
8316
8317 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8318
8319         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Updated with changes
8320         in PPC code up to r119147.
8321
8322 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8323
8324         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
8325         cpu-ppc64.md: Changes for PPC64.
8326
8327         Based on code submitted by andreas.faerber@web.de at
8328         https://bugzilla.novell.com/show_bug.cgi?id=324134 under the
8329         X11/MIT license.
8330
8331 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8332
8333         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
8334         cpu-ppc64.md: Copied from the corresponding PPC files from
8335         r118846.
8336
8337 2008-11-18  Scott Peterson  <lunchtimemama@novell.com>
8338
8339         * mini-ops.h: Added OP_ROUND.
8340
8341         * cpu-x86.md: Added round.
8342
8343         * mini-x86.c: Added support for intrinsicing Math.Round (double).
8344
8345         * basic-math.cs: Added test_0_round to test rounding.
8346
8347         Contributed under MIT/X11 license.
8348
8349 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
8350
8351         * aot-compiler.c : Fix the Winx64 build.
8352
8353         Contributed under MIT/X11 license.
8354
8355 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
8356
8357         * mini-x86.c (mono_arch_output_basic_block): Use movsd instead of monvups
8358         in OP_EXTRACT_R8 to avoid possible stack corruption.
8359
8360 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
8361
8362         * mini-ops.h: Added OP_EXTRACT_R8/I8.
8363
8364         * cpu-x86.md: Added extract_r8.
8365
8366         * mini-x86.c (mono_arch_output_basic_block): Emmit OP_EXTRACT_R8.
8367         
8368         * mini-x86.c: Added mono_arch_decompose_long_opts to break OP_EXTRACT_I8 into
8369         a couple of OP_EXTRACT_I4.
8370
8371         * mini-x86.h: Define MONO_ARCH_HAVE_DECOMPOSE_LONG_OPTS if simd is enabled.
8372
8373         * simd-intrinsics.c: Implement getters for Vector2l/2ul/2d.
8374
8375 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
8376
8377         * simd-intrinsics.c (vector2l_intrinsics): CompareGreaterThan requires sse 4.2
8378         and not 4.1. 
8379
8380 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
8381
8382         * method-to-ir.c (handle_delegate_ctor): Emit the address of the delegate
8383         trampoline as an AOT const of the proper type instead of MONO_PATCH_INFO_ABS.
8384
8385         * mini.c (mono_codegen): Remove the handling of delegate trampolines, they
8386         are not needed any more.
8387
8388         * mini.h: Remove the unused INS_LIST macros.
8389
8390         * mini.c (mini_method_compile): Remove a disable globalra case which is no
8391         longer needed.
8392
8393         * *.h *.c: Remove duplicate MonoInst emission macros, use the ones in
8394         ir-emit.h.
8395
8396         * regalloc.h *.c: Remove references to mono_regstate_next_int (), use
8397         mono_alloc_ireg () instead.
8398
8399         * mini-<ARCH>.c: Include ir-emit.h. Remove duplicate MonoInst emission
8400         macros.
8401
8402         * mini-amd64.c (emit_load_volatile_arguments): Removed, not needed
8403         on amd64.
8404
8405         * aot-runtime.c (load_aot_module): Disable AOT when running under
8406         CAS.
8407
8408         * mini-amd64.h: Change the monitor fastpath defines to check for
8409         !PLATFORM_WIN32 so they work on *bsd too.
8410
8411         * mini.h mini.c mini-hhpa.c: Remove more unused code.
8412
8413         * mini-s390.c mini-s390x.c: Remove !cfg->new_ir code.
8414
8415         * mini.h (MonoCompile): Remove new_ir flag.
8416
8417         * regalloc.h regalloc.c: Remove unused code.
8418
8419         * cpu-*.md: Remove more unused opcodes.
8420
8421         * simple-cee-ops.h simple-mini-ops.h: Removed.
8422
8423         * mini-ops.h *.c cpu-<ARCH>.md: Remove more unused opcodes.
8424         
8425 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
8426
8427         * aliasing.h: Removed.
8428
8429         * *.c: Remove references to aliasing.h and inssel.h.
8430
8431         * mini.c: Remove additional unused functions.
8432
8433         * mini-ops.h cpu-*.md: Remove unused opcodes.
8434
8435 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
8436
8437         Remove the old JIT code.
8438
8439         * inssel*.brg: Removed.
8440
8441         * ssa.c abcremoval.c aliasing.c: Removed.
8442
8443         * ssa2.c: Renamed to ssa.c.
8444
8445         * abcremoval2.c: Renamed to abcremoval.c.
8446
8447         * *.c: Removed all !cfg->new_ir code.
8448
8449         * mini-<ARCH>.c: Removed mono_arch_call_opcode (), 
8450         mono_arch_emit_this_vret_args (), and mono_arch_get_inst_for_method ().
8451
8452         * mini.c: Removed the old mono_method_to_ir () and all the code used by it.
8453         
8454 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
8455
8456         * aot-compiler.c aot-runtime.c: Emit most of the non-table data in a structure
8457         to simplify the code and cut back on the number of global symbols in the AOT
8458         file.
8459         
8460         * aot-compiler.c aot-runtime.c: Get rid of the unused plt_jump_table.
8461
8462 2008-11-15  Zoltan Varga  <vargaz@gmail.com>
8463
8464         * aot-runtime.c aot-compiler.c: Unify the plt_jump_table/plt_info tables
8465         with the got/got_info tables.
8466
8467         * mini.h: Bump AOT file format version.
8468         
8469         * unwind.h: New file, contains definitions for stack unwinding.
8470
8471         * mini.c (mono_emit_unwind_op): New helper function to append an unwind op
8472         to cfg->unwind_ops.
8473         
8474         * aot-compiler.c: Generalize the emitting of unwind information to use the
8475         information in cfg->unwind_ops.
8476
8477         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info.
8478
8479         * aot-compiler.c: Emit dwarf unwind information so gdb can unwind through
8480         AOT method frames. Enable writing symbols for methods by default.
8481
8482 2008-11-14  Rodrigo Kumpera  <rkumpera@novell.com>
8483
8484         * simd-intrinsics.c (simd_intrinsic_emit_getter): Generalize this code
8485         and make it work with vectors of element sizes 1, 2 and 4.
8486
8487         * simd-intrinsics.c: Enable getter for all vectors with element size
8488         1, 2 or 4.
8489
8490         * simd-methods.h: Add the names of other getters.
8491
8492         * mini-ops.h: Added OP_EXTRACT_I2/U2/I1/U1.
8493
8494         * cpu-x86.md: Same.
8495
8496         * mini-x86.c: Same.
8497
8498 Fri Nov 14 15:54:18 CET 2008 Paolo Molaro <lupus@ximian.com>
8499
8500         * mini-ppc.h: portability fix.
8501
8502 Fri Nov 14 15:39:50 CET 2008 Paolo Molaro <lupus@ximian.com>
8503
8504         * mini-ppc.h, mini-ppc.c: avoid using the red zone as some kernels are
8505         buggy and will overwrite it.
8506
8507 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
8508
8509         * aot-compiler.c: Add functionality to emit local symbols to the elf writer.
8510         Use it to emit local symbols for all methods so AOTed methods show up with
8511         their full name in gdb/valgrind output.
8512
8513 Fri Nov 14 12:56:27 CET 2008 Paolo Molaro <lupus@ximian.com>
8514
8515         * mini-ppc.c: portability fixes.
8516
8517 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
8518
8519         * mini-trampolines.c (mono_magic_trampoline): Move the patching of plt
8520         entries out of the if (!generic_shared...) code so it is always done.
8521         (mono_class_init_trampoline): Do the patching when running under valgrind
8522         too, newer versions of valgrind have no problems with it.
8523
8524 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
8525
8526         * aot-compiler.c (emit_writeout): Rework this to make it easier to add
8527         further sections.
8528
8529 2008-11-13  Mark Probst  <mark.probst@gmail.com>
8530
8531         * mini-ppc.c, cpu-ppc.md: Reserve space for the parameter area in
8532         filters.
8533
8534 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8535
8536         * simd-intrinsics.c: Add getter support for Vector4i and Vector4ui. 
8537
8538 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8539
8540         * mini-ops.h: Kill diplicated ops OP_SHUFLEPS.
8541
8542         * cpu-x86.md: Same.
8543
8544         * mini-x86.c: Same.
8545
8546         * simd-intrinsics.c: Same.
8547
8548 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8549
8550         * simd-intrinsics.c: Enable constructor intrinsics for all types.
8551
8552 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8553
8554         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Generalize this method
8555         to work with more Vector types.
8556
8557 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8558
8559         * simd-intrinsics.c (simd_intrinsic_emit_ctor): If the target is already a pointer
8560         store the elemens directly instead of using and intermediate.
8561
8562 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
8563
8564         * mini-amd64.c (emit_call_body): Avoid aligning call sites in AOTed code.
8565
8566         * tramp-x86.c (mono_arch_create_trampoline_code): Rework the return sequence
8567         to preserve %eax for aot plt trampolines.
8568
8569         * aot-compiler.c (compile_method): Don't skip synchronized methods.
8570         (encode_method_ref): Flag synchronized methods so they won't go through
8571         the AOT trampoline.
8572
8573         * aot-compiler.c: Additional work to support AOTing synchronized methods/
8574         wrappers.
8575
8576         * cpu-ia64.md (jmp): Increase max length.
8577
8578 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
8579
8580         * aot-runtime.c (load_method): Avoid calling runtime_class_init () for
8581         open generic classes.
8582
8583         * aot-compiler.c: Enable the ELF writer on ELF platforms.
8584
8585         * method-to-ir.c (mono_method_to_ir2): Revert the last change to the
8586         box+brtrue optimization since it causes test failures on x86.
8587
8588 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
8589
8590         * mini-ops.h: Remove OP_PUSH_R4 and OP_LOADX_STACK.
8591
8592         * cpu-x86.md: Same.
8593
8594         * mini-x86.c: Same.
8595
8596         * mini.h (struct MonoCompile): Add simd_ctor_var to be used as storage
8597         for simd ctor values. 
8598
8599         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Use simd_ctor_var for the constructor
8600         instead of directly pushing the values on stack. This saves about 15 bytes of generated code.
8601
8602 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
8603
8604         * simd-methods.h: Rename SubWithSaturation, ArithmeticRightShift and
8605         LogicalRightShift.
8606
8607         * simd-instrincs.c: Same.
8608
8609         * basic-simd.cs: Same.
8610
8611 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
8612
8613         * ratests.cs: Add more tests.
8614
8615         * regalloc2.c (add_spill_code): Handle more corner cases.
8616
8617 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
8618
8619         * regalloc2.c (INS_POS_INTERVAL): Decrease this to 8 to avoid overflows.
8620         (update_liveness): Avoid holes in the liveness ranges of hregs if they are
8621         both the source an destination of an instruction.
8622
8623 Tue Nov 11 19:30:50 CET 2008 Paolo Molaro <lupus@ximian.com>
8624
8625         * jit-icalls.c, local-propagation.c, mini.c, ssa.c, ssapre.c, trace.c,
8626         wapihandles.c: more portability changes.
8627
8628 Tue Nov 11 18:56:33 CET 2008 Paolo Molaro <lupus@ximian.com>
8629
8630         * aot-compiler.c, aliasing.c, abcremoval.c: portability changes.
8631         * mini.c mini.h, aot-runtime.c: the aot segfault-handling code is not
8632         safe to execute in a signal handler and the kernel provides better
8633         the info in /proc/self/smaps. Avoid the assert on sigaction during
8634         cleanup.
8635
8636 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
8637
8638         * method-to-ir.c (mono_method_to_ir2): In the box+brtrue optimization, only
8639         do the bblock linking hack if it is actually needed.
8640
8641         * Makefile.am (patch-libtool): New helper target to patch libtool to speed
8642         up linking.
8643
8644         * liveness.c (ENABLE_LIVENESS2): Reenable this for 64 bit archs as the
8645         crash problem is fixed.
8646
8647         * branch-opts.c (mono_remove_critical_edges): Link up newly added
8648         bblocks.
8649
8650         * mini.c (mini_method_compile): Compute unreachable bblocks properly even
8651         for catch clauses.
8652         (mini_method_compile): Set the starting value of next_vreg to 
8653         MAX_IREGS + MAX_FREGS when using globalra.
8654
8655         * method-to-ir.c (mono_method_to_ir2): Mark bblocks starting
8656         filter clauses with BB_EXCEPTION_HANDLER.
8657
8658         * regalloc2.c (assign_spill_slots): Set cfg->rgctx_var.
8659
8660 2008-11-10  Mark Probst  <mark.probst@gmail.com>
8661
8662         * mini-x86.c (mono_arch_get_argument_info): Don't align argument
8663         space for stdcall.  Fixes regressions on Win32.
8664
8665 2008-11-10  Zoltan Varga  <vargaz@gmail.com>
8666
8667         * regalloc2.c (handle_reg_constraints): Avoid adding code to unreachable
8668         bblocks.
8669         (linear_scan): Remove an assert which doesn't seem to be needed.
8670
8671         * local-propagation.c (mono_local_deadce): Avoid a call to
8672         MONO_DELETE_INS which would screw up the instruction linking.
8673
8674         * mini.c (mono_decompose_op_imm): Make this work with globalra.
8675
8676         * regalloc2.c: Upgrade to work the current JIT code.
8677
8678 2008-11-09  Zoltan Varga  <vargaz@gmail.com>
8679
8680         * method-to-ir.c (inline_method): Merge more basic blocks to help the AOT
8681         case.
8682
8683         * aot-runtime.c: Remove some dead code.
8684
8685         * tramp-arm.c: Use 'code' as the runnning pointer in code generation for
8686         consistency.
8687         (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Implement aot support.
8688
8689         * aot-runtime.c (load_named_code): Decode the offset of lazy fetch
8690         trampolines using sscanf since atoi doesn't work on large unsigned values.
8691
8692         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): 
8693         Initialize code_size.
8694
8695 2008-11-08  Mark Probst  <mark.probst@gmail.com>
8696
8697         * method-to-ir.c (mini_emit_inst_for_method): Make
8698         Interlocked.CompareExchange work for Int arguments on 32 bit
8699         archs, as well.
8700
8701 2008-11-07  Mark Probst  <mark.probst@gmail.com>
8702
8703         * method-to-ir.c (mono_method_to_ir2): Fixed a funny commit error.
8704
8705 2008-11-06  Bill Holmes  <billholmes54@gmail.com>
8706
8707         * main.c Fix MSVC build.
8708
8709         Contributed under MIT/X11 license.
8710
8711 2008-11-06  Mark Probst  <mark.probst@gmail.com>
8712
8713         * mini-x86.c (mono_arch_allocate_vars): Make sure locals that need
8714         alignment larger than 8 bytes are aligned correctly, too.
8715
8716         * mini.c: Honor the min_align field of MonoClass when laying out
8717         the stack.
8718
8719 2008-11-06  Zoltan Varga  <vargaz@gmail.com>
8720
8721         * method-to-ir.c (mono_method_to_ir2): Fix AOT support for CEE_SWITCH on arm.
8722
8723         * aot-compiler.c (emit_plt): Fix a warning.
8724         
8725         * aot-compiler.c: Implement ARM support in the binary writer.
8726
8727 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
8728
8729         * basic-simd.cs: Add test for getter with byref arg.
8730         Fix the naming of a few tests.
8731         Add missing checks to a test.
8732
8733 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
8734
8735         * aot-compiler.c (emit_plt): Make the arm code work with the binary writer.
8736
8737         * aot-compiler.c aot-runtime.c mini-trampolines.c tramp-amd64.c: Implement
8738         most of the full-aot support for monitor enter/exit trampolines.
8739
8740         * tramp-x86.c tramp_amd64.c: Add AOT compatible variants of the monitor
8741         enter/exit trampoline creation functions.
8742
8743         * Makefile.am: Fix the generation of buildver.h so it is not invoked during
8744         make dist.
8745
8746 Wed Nov 5 16:28:53 CET 2008 Paolo Molaro <lupus@ximian.com>
8747
8748         * mini.h, aot-compiler.c, method-to-ir.c, aot-runtime.c: remove the
8749         incorrectly added MONO_WRAPPER_MONITOR_* (in r117651-r117652) and
8750         implement the needed functionality without adding crap to the runtime.
8751
8752 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
8753
8754         * mini-trampolines.c (mono_create_monitor_enter_trampoline): Fix the
8755         non-x86 builds.
8756
8757         * mini.c (mono_build_date): New global version holding the build date in
8758         string format.
8759         
8760         * Makefile.am (buildver.c): Generate a file containing the build date.
8761
8762         * main.c: Set the build date from the generated file.
8763
8764         * mini.c (mono_get_runtime_build_info): New helper function returning build
8765         information in a string format.
8766         
8767         * driver.c (mono_main): Print the build date in --version.
8768
8769         * aot-compiler.c aot-runtime.c: Embed the build information into the AOT
8770         file when the bind-to-runtime-version option is used.
8771
8772 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
8773
8774         * simd-intrinsics.c: Fix bug when using getters and byref args. 
8775
8776 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
8777
8778         * simd-methods.h: Rename prefetch methods.
8779
8780         * simd-intrinsics.c: Same.      
8781
8782 2008-11-05  Mark Probst  <mark.probst@gmail.com>
8783
8784         * tramp-amd64.c: Enlarge the Monitor.Enter/Exit trampoline code
8785         sizes.
8786
8787 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
8788
8789         * aot-compiler.c: Use the bundled elf header files instead of depending on
8790         the system one.
8791         
8792         * aot-compiler.c (emit_symbol_diff): Allocate memory from the acfg
8793         mempool.
8794
8795         * method-to-ir.c (mono_method_check_inlining): Avoid a getenv () call
8796         on every call.
8797
8798 2008-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
8799
8800         * cpu-x86.md: Add store nta ops.
8801
8802         * mini-ops.h: Same.
8803
8804         * mini-x86.c: Same.
8805
8806         * mini.h: Add an enum for simd prefetch modes.
8807
8808         * simd-methods.h: Refactor the store_aligned code to handle multiple kinds
8809         of store. Use the changed code to support store nta.
8810
8811         * simd-intrinsics.c: Add prefetch ops for all vector types.
8812
8813 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
8814
8815         * aot-compiler.c: Add an option for JIT compiling the methods by multiple 
8816         threads.
8817         
8818         * aot-compiler.c: Use statically allocated buffers for constructing symbol 
8819         names.
8820
8821         * aot-runtime.c aot-compiler.c: Add support for the MONITOR_ENTER/EXIT
8822         trampolines.
8823
8824 2008-11-04  Mark Probst  <mark.probst@gmail.com>
8825
8826         * mini-x86.c: Fixed commit.
8827
8828 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
8829
8830         * aot-compiler.c (emit_plt): Align the plt section only on x86.
8831
8832 2008-11-04  Mark Probst  <mark.probst@gmail.com>
8833
8834         * mini-trampolines.c, mini.h: Two new trampolines: MONITOR_ENTER
8835         and MONITOR_EXIT, for the ASM fastpaths.
8836
8837         * method-to-ir.c: Use the ASM fastpath for Monitor.Enter/Exit if
8838         available.
8839
8840         * mini.c, patch-info.h: Signature and patch infos for
8841         Monitor.Enter/Exit trampolines.
8842
8843         * mini-amd64.c, mini-x86.c: Make emit_tls_get() non-static.
8844
8845         * tramp-amd64.c, tramp-x86.c, mini-amd64.h, mini-amd64.h:
8846         Monitor.Enter/Exit ASM fastpath for Linux.
8847
8848 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
8849
8850         * mini.c (mono_method_to_ir): Fix soft-float support in Array.Get/Set.
8851
8852         * objects.cs: Add a new test.
8853         
8854         * aot-compiler.c: Use mono_100ns_ticks () for computing the profiling info.
8855
8856         * aot-runtime.c (load_method): Run class initialization in the PLT case even
8857         if MONO_LOG_LEVEL is set.
8858
8859         * debug-mini.c (serialize_variable): Fix the encoding of dead variables.
8860
8861         * aot-runtime.c (mono_aot_get_method): Skip out-of-date AOT modules.
8862
8863         * aot-compiler.c (emit_and_reloc_code): Speed this up a little.
8864         
8865         * aot-compiler.c: Change the relocation code to use virtual addresses instead
8866         of file offsets. Align the sections belonging to the data segment to 
8867         PAGESIZE.
8868
8869 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
8870
8871         * aot-compiler.c: Simplify the elf writer by depending on the definitions in
8872         elf.h. Port it to amd64.
8873
8874 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
8875
8876         * driver.c: Enable SIMD by default.
8877
8878 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
8879
8880         * cpu-x86.md: Add prefetch op.
8881
8882         * mini-ops.h: Same.
8883
8884         * mini-x86.c: Same.
8885
8886         * mini.h: Add an enum for simd prefetch modes.
8887
8888         * simd-methods.h: Add prefetch function names.
8889
8890         * simd-intrinsics.c: Add prefetch ops for all vector types.
8891
8892 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
8893
8894         * aot-compiler.c (emit_bytes): Speed this up a little.
8895
8896 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
8897
8898         * aot-compiler.c: Add JIT time etc. statistics.
8899         
8900         * aot-compiler.c (compile_method): Fix the copying of the cfgs array.
8901
8902         * mini.h (MonoCompile): Add 'got_offset' field.
8903
8904         * aot-compiler.c: Store the got offset in MonoCompile, get rid of the
8905         method_got_offsets array.
8906
8907         * aot-compiler.c aot-runtime.c: Add support for the monitor enter/exit
8908         wrappers.
8909
8910         * aot-compiler.c (compile_method): Add generic method instances referenced
8911         by the method to the list of methods to be compiled, this is required so if
8912         A<T> references B<T>, and another assembly references A<int>, then it will
8913         also get a copy of B<int>.
8914
8915         * method-to-ir.c (mini_emit_inst_for_method): Use the proper wrapper type
8916         when checking for monitor enter/exit.
8917
8918 2008-10-30  Mark Probst  <mark.probst@gmail.com>
8919
8920         * method-to-ir.c (mini_emit_inst_for_method): Use the IL fastpaths
8921         for Monitor.Enter and Monitor.Exit if enabled.
8922
8923         * mini-x86.h, mini-amd64.h: Enable the IL fastpaths for Linux and
8924         Solaris.
8925
8926 2008-10-30  Zoltan Varga  <vargaz@gmail.com>
8927
8928         * method-to-ir.c (type_from_op): Convert CEE_CONV_U on OP_ICONV_TO_U instead
8929         of an OP_MOVE. Fixes #440046.
8930
8931         * basic-long.cs: Add a new test.
8932
8933 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
8934
8935         * mini.h: Add synchronization note for the managed counter-part.
8936
8937         * simd-intrinsics.c: Add SimdRuntime.get_AccelMode intrinsic that
8938         returns the simd caps of the current cpu.
8939
8940 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
8941
8942         * basic-simd.cs: Remove Console.WriteLine.
8943
8944 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
8945
8946         * basic-simd.cs: New tests for Vector2ul.
8947
8948 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
8949
8950         * simd-intrinsics.c: Add new vector type Vector2ul.
8951
8952 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
8953
8954         * basic-simd.cs: New tests for Vector2l.
8955
8956 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
8957
8958         * cpu-x86.md: Add long version of most packed int ops.
8959
8960         * mini-ops.h: Same.
8961
8962         * mini-x86.h: Same.
8963
8964         * simd-intrinsics.c: Add new vector type Vector2l.
8965
8966 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
8967
8968         * simd-intrinsics.c: Replace SN_op_BitwiseXor with SN_op_ExclusiveOr.
8969
8970         * simd-methods.h: Remove SN_op_BitwiseXor.
8971
8972 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
8973
8974         * mini.c (mono_allocate_stack_slots_full): Align the size of vtypes to their
8975         alignment.
8976
8977 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
8978
8979         * basic-simd.cs: Test for Vector2d.
8980
8981         * basic-simd.cs (test_vector8s_pack_signed_sat): Fixed broken
8982         value.
8983
8984 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
8985
8986         * cpu-x86.md: Add double version of all packed float ops.
8987
8988         * mini-ops.h: Same.
8989
8990         * mini-x86.h: Same.
8991
8992         * simd-intrinsics.c: Add new vector type Vector2d.
8993
8994         * simd-intrinsics.c (vector4f_intrinsics): Fix ordering.
8995
8996         * simd-methods.h: Add Duplicate.
8997
8998 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
8999
9000         * basic-simd.cs: Test for packing with signed saturation.
9001
9002 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
9003
9004         * aot-compiler.c (add_generic_instances): Add all methods of generic instances
9005         found in the TYPESPEC table.
9006
9007 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
9008
9009         * aot-runtime.c (mono_aot_get_method): Log not found methods for extra methods
9010         too.
9011
9012         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
9013
9014         * mini.c (mono_method_to_ir): For MONO_PATCH_INFO_RVA, save field the token
9015         instead of the RVA, since the RVA can be changed by tools like the cil 
9016         stripper.
9017
9018         * method-to-ir.c (mono_method_to_ir2): Ditto.
9019
9020         * debug-mini.c (serialize_variable): Handle ADDRESS_MODE_DEAD.
9021         (deserialize_variable): Ditto.
9022
9023 2008-10-25  Martin Baulig  <martin@ximian.com>
9024
9025         * debug-mini.c (write_variable): Use
9026         `MONO_DEBUG_VAR_ADDRESS_MODE_DEAD' for dead variables.
9027
9028 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9029
9030         * cpu-x86.md: Add unsigned variants of packd and packw.
9031
9032         * mini-ops.h: Same.
9033
9034         * mini-x86.h: Emit the right instruction for packd and packw.
9035         Add unsigned variants of packd and packw.
9036
9037         * simd-intrinsics.c: Packd and packw were used in place of their
9038         unsigned variants. Change that.
9039         Add intrinsics for (Signed)PackWithSignedSaturation.
9040
9041         * simd-methods.h: Add (Signed)PackWithSignedSaturation.
9042
9043 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9044
9045         * simd-intrinsics.c (vector4i_intrinsics): New table of intrinsic type.
9046
9047 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9048
9049         * mini-ops.h: Remove dword packed add/sub with saturation ops.
9050
9051         * cpu-x86.md: Remove dword packed add/sub with saturation ops.
9052
9053         * simd-intrinsics.c (vector4ui_intrinsics): Remove methods without
9054         sse instructions.
9055
9056         * simd-intrinsics.c (vector8s_intrinsics): Fix ordering.
9057
9058 2008-10-24  Mark Probst  <mark.probst@gmail.com>
9059
9060         * method-to-ir.c, mini.c: Special casing for the synchronized
9061         wrapper for the ldtoken+GetTypeFromHandle case.
9062
9063 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
9064
9065         * mini.c (mono_replace_ins): Move this to branch-opts.c.
9066
9067         * mini.c (mono_replace_ins): Propagate has_array_access flag to the newly
9068         created/split bblocks.
9069
9070 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9071
9072         * mini-ops.h: Add packed signed mul high.
9073         
9074         * cpu-x86.md: Same.
9075
9076         * mini-x86.c (mono_arch_output_basic_block): Same.
9077
9078         * simd-methods.h: Add PackWithUnsignedSaturation and ShiftRightLogic.
9079
9080         * simd-intrinsics.c (vector8s_intrinsics): New table of intrinsic type.
9081
9082 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9083
9084         * basic-simd.cs: Tests for Vector16sb.
9085
9086 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
9087
9088         * inssel.brg (stmt): Fix OP_HARD_NOP rule.
9089
9090 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
9091
9092         * mini-ops.h: Add packed signed min, max and compare greater.
9093         
9094         * cpu-x86.md: Same.
9095
9096         * mini-x86.c (mono_arch_output_basic_block): Same. Add packed add/sub with
9097         saturation.
9098
9099         * simd-methods.h: Add CompareGreaterThan.
9100
9101         * simd-methods.h: Remove CompareEquals.
9102
9103         * simd-intrinsics.c: Add new TODO entry and some cosmetic changes.
9104
9105         * simd-intrinsics.c (vector16sb_intrinsics): New table of intrinsic type.
9106
9107         * simd-intrinsics.c (vector4f_intrinsics): Rename CompareEquals to
9108         CompareEqual.
9109
9110 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
9111
9112         * basic-simd.cs: Fix tests due to change in the API.
9113
9114 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9115
9116         * mini.c method-to-ir.c: Use mono_field_get_name () for accessing field->name.
9117
9118 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9119
9120         * basic-simd.cs: Fix name change in Vector4f::CompareEqual.
9121
9122         * simd-intrinsics.c (simd_intrinsic_emit_store_aligned): Don't use
9123         inst_offset as this has invalid values for LDADDR.
9124
9125 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9126
9127         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
9128
9129         * simd-intrinsics.c (vector4ui_intrinsics): Add SignedPackWithUnsignedSaturation.
9130
9131 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9132
9133         * method-to-ir.c (initialize_array_data): Use mono_field_get_data ()
9134         for accessing field->data.
9135
9136 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9137
9138         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
9139
9140 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9141
9142         * simd-methods.h: Add SignedPackWithUnsignedSaturation.
9143
9144         * simd-intrinsics.c (vector8us_intrinsics): Add SignedPackWithUnsignedSaturation.
9145
9146 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9147
9148         * dominators.c (mono_compute_natural_loops): Allocate GList enties
9149         from the cfg mempool.
9150
9151 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
9152
9153         * basic-simd.cs: Tests for new methods in Vector8us.
9154
9155 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
9156
9157         * mini-ops.h: Add multiply and store high.
9158         
9159         * cpu-x86.md: Same.
9160
9161         * mini-x86.c (mono_arch_output_basic_block): Same.
9162
9163         * simd-methods.h: Same.
9164
9165         * simd-intrinsics.c (vector8us_intrinsics): Add MultiplyStoreHigh
9166         and CompareEqual.
9167
9168 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
9169
9170         * method-to-ir.c (mono_emit_method_call_full): Remove a needless call to
9171         mono_class_setup_vtable ().
9172
9173         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Use
9174         mono_class_get_vtable_entry () for accessing klass->vtable.
9175
9176         * aot-runtime.c (load_method): Avoid a crash when using MONO_LOG_LEVEL.
9177
9178         * aot-compiler.c (add_generic_instances): Avoid a crash if a class is not
9179         found.
9180
9181         * method-to-ir.c (mono_save_token_info): Don't save references made from
9182         wrappers.
9183
9184         * aot-compiler.c (add_generic_instances): Add static rgctx wrappers for cctors
9185         of generic instances.
9186
9187         * aot-runtime.c (find_extra_method): Search in all loaded AOT images.
9188
9189 2008-10-19  Mark Probst  <mark.probst@gmail.com>
9190
9191         * cpu-ppc.md, mini-ppc.c: The length of the code generated for
9192         OP_JMP depends on the method signature.  Calculate it properly.
9193
9194 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
9195         
9196         * aot-runtime.c (mono_aot_find_jit_info): Handle extra methods which are
9197         called directly.
9198
9199         * aot-compiler.c (emit_and_reloc_code): Allow direct calling of generic
9200         instances.
9201         (emit_extra_methods): Add another table mapping method indexes to 
9202         offsets in the extra_method_info table.
9203
9204         * mini.h: Bump AOT file format version.
9205         
9206         * aot-runtime.c: Merge most of the code from mono_aot_get_method
9207         and mono_aot_get_method_from_token () into one function.
9208
9209 2008-10-19  Mark Probst  <mark.probst@gmail.com>
9210
9211         * mini-ppc.c (emit_load_volatile_arguments): Inner loop needs a
9212         separate counter.
9213
9214 2008-10-18  Zoltan Varga  <vargaz@gmail.com>
9215
9216         * aot-compiler.c aot-runtime.c: Fix the hash function used for the extra
9217         methods.
9218
9219         * method-to-ir.c (mono_method_to_ir2): Change a !compile_aot assert to
9220         disable_aot.
9221
9222         * mini.c (mono_patch_info_equal): Compare the generic context as well.
9223
9224         * mini.h: Bump aot file format version.
9225
9226         * aot-compiler.c aot-runtime.c: Generalize the wrapper handling code so the
9227         AOT file can contain native code for methods which are not in the METHOD
9228         table. Generate code for non-sharable generic instances of generic methods
9229         found in the METHODSPEC table.
9230         
9231         * method-to-ir.c (mono_method_to_ir2): Remove the aot restriction when
9232         encoding generic type handles.
9233
9234         * ir-emit.h (NEW_AOTCONST_TOKEN): Add a generic_context argument.
9235         (NEW_TYPE_FROM_HANDLE_CONST): Add a generic_context argument.
9236
9237         * ir-emit.h: Rewrite the EMIT_NEW_XXXCONST macros to use the NEW_XXXCONST
9238         macros + MONO_ADD_INS.
9239
9240         * mini.c (mono_jump_info_token_new2): New function which takes a generic
9241         context as well.
9242
9243         * mini.h (MonoJumpInfoToken): Include fields for a generic context.
9244
9245         * mini.h: Bump aot file format version.
9246
9247         * aot-compiler.c aot-runtime.c: Update after changes to MonoJumpInfoToken.
9248
9249 2008-10-17  Mark Probst  <mark.probst@gmail.com>
9250
9251         * mini-x86.h, mini-x86.c, exceptions-x86.c: Align stack on all
9252         platforms, with definable stack alignment value.  Set to 16 now
9253         for all platforms.
9254
9255         * mini.c, mini.h, driver.c: Command line option for disabling
9256         stack alignment.
9257
9258 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
9259
9260         * basic-simd.cs: Tests for new methods in Vector4ui.
9261
9262 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
9263
9264         * mini-ops.h: Add packed int shuffle.
9265         
9266         * cpu-x86.md: Same.
9267
9268         * mini-x86.c (mono_arch_output_basic_block): Same.
9269
9270         * simd-intrinsics.c (vector4ui_intrinsics): Add compare equal,
9271         extract mask, max, min, shuffle.
9272
9273         * simd-intrinsics.c (vector8us_intrinsics): Add max and min.
9274
9275 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
9276
9277         * basic-simd.cs: Tests for new methods in Vector8us.
9278
9279 2008-10-17  Mark Probst  <mark.probst@gmail.com>
9280
9281         * method-to-ir.c (mono_method_to_ir2): "refanytype" produces a
9282         RuntimeTypeHandle, not a TypedReference.
9283
9284 Fri Oct 17 14:40:50 CEST 2008 Paolo Molaro <lupus@ximian.com>
9285
9286         * simd-intrinsics.c: remove relocations.
9287
9288 2008-10-17  Zoltan Varga  <vargaz@gmail.com>
9289
9290         * mini-amd64.c (mono_arch_output_basic_block): Port the IREM_IMM 
9291         optimizations from the x86 backend.
9292
9293 Fri Oct 17 12:00:51 CEST 2008 Paolo Molaro <lupus@ximian.com>
9294
9295         * simd-methods.h, simd-intrinsics.c: debloat method names and
9296         prepare for no relocations.
9297
9298 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9299
9300         * mini-ops.h: Add packed min/equal and sum of absolute differences.
9301         
9302         * cpu-x86.md: Same.
9303
9304         * mini-x86.c (mono_arch_output_basic_block): Same.
9305
9306         * simd-intrinsics.c (vector16b_intrinsics): Add average, compare equal,
9307         extract mask, max, min and sum of absolute differences.
9308
9309         * simd-intrinsics.c: Increase SIMD_INTRINSIC_NAME_MAX due to new huge
9310         method name.
9311
9312 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9313
9314         * basic-simd.cs: Test for the other mono_simd_simplify_indirection bug.
9315         Renamed one test for consistency.
9316
9317 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9318
9319         * simd-intrinsics.c (mono_simd_simplify_indirection): Apply the previous
9320         fix to the code that deal with other blocks.
9321
9322 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9323
9324         * basic-simd.cs: Test for the mono_simd_simplify_indirection bug.
9325
9326 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9327
9328         * simd-intrinsics.c (mono_simd_simplify_indirection): Simplify the code
9329         that deals with vreg interference. Explicitly check for OP_LDADDR to be
9330         able to process the source reg.
9331
9332 2008-10-16  Martin Baulig  <martin@ximian.com>
9333
9334         * mini-ops.h, cpu-amd64.md, cpu-x86.md: Added new `hard_nop' opcode.
9335
9336         * inssel.brg: Add `OP_HARD_NOP'.
9337
9338         * mini.h (MonoCompile): Added `keep_cil_nops' flag.
9339
9340         * mini.c (mono_method_to_ir): In `CEE_NOP': generate a
9341         `OP_HARD_NOP' instruction when running inside the debugger.
9342
9343         * method-to-ir.c (mono_method_to_ir2): In `CEE_NOP': generate a
9344         `OP_HARD_NOP' instruction when running inside the debugger.
9345
9346 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9347
9348         * simd-intrinsics.c (get_simd_vreg): Using sreg1 of OP_XMOVE
9349         now works. The issue with the regalloc tripping up no longer
9350         happens.
9351
9352         * simd-intrinsics.c (load_simd_vreg): Same.
9353
9354 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9355         
9356         * basic-simd.cs: Tests for new Vector8ui methods.
9357
9358 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9359
9360         * simd-intrinsics.c (get_simd_vreg): Simplify code and test
9361         only for type. This fixes crashes where MonoInst::klass is checked
9362         for ops of type != VTYPE or OBJ.
9363
9364         * simd-intrinsics.c (load_simd_vreg): Same.
9365
9366 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9367
9368         * mini-ops.h: Add ops for packed shuffle/max/avg and
9369         extract mask.
9370         
9371         * cpu-x86.md: Same.
9372
9373         * mini-x86.c (mono_arch_output_basic_block): Same.
9374
9375         * simd-intrinsics.c (vector8us_intrinsics): Add avg, shuffle and
9376         extract mask.
9377
9378         * simd-intrinsics.c (simd_intrinsic_emit_extract_mask): New function
9379         to emit extract mask op.
9380
9381         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Retrofic this function
9382         to emit word shuffles.
9383
9384 2008-10-15  Mark Probst  <mark.probst@gmail.com>
9385
9386         * mini.c (mono_allocate_stack_slots_full): Align stack frame to
9387         the largest alignment needed by a variable, but at least
9388         sizeof(gpointer).
9389
9390 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9391
9392         * basic-simd.cs: Tests for the fixes in the last commit.
9393
9394 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9395
9396         * simd-intrinsics.c (get_simd_vreg): Drop the is_this_ptr, this function
9397         no longer handles STACK_PTR input.
9398
9399         * simd-intrinsics.c (get_simd_vreg): Don't crash when MonoInst::klass == -1.
9400
9401         * simd-intrinsics.c (load_simd_vreg): New function that works like 
9402         get_simd_vreg   but handles STACK_PTR input.
9403
9404         * simd-intrinsics.c (simd_intrinsic_emit_getter): Use load_simd_vreg
9405         as the input can be an arbitrary pointer.
9406
9407         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Try the
9408         LDADDR local optimization directly otherwise use a store op.
9409
9410 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9411
9412         * basic-simd.cs: Tests for dup low and dup high.
9413
9414 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9415
9416         * mini-ops.h: Add dup low and dup high ops.
9417         
9418         * cpu-x86.md: Same.
9419
9420         * mini-x86.c (mono_arch_output_basic_block): Same.
9421
9422         * simd-intrinsics.c (vector4f_intrinsics): Same.
9423
9424 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
9425
9426         * basic-simd.cs: Tests for recently added functionality.
9427
9428 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
9429
9430         * mini-ops.h: Add remaining sse1 fp ops.
9431         
9432         * cpu-x86.md: Add remaining sse1 fp ops.
9433
9434         * mini-x86.c (mono_arch_output_basic_block): Same.
9435
9436         * mini.h: Add enum for simd FP compare conditions.
9437
9438         * simd-intrinsics.c (vector4f_intrinsics): Add all new ops.
9439
9440         * simd-intrinsics.c (simd_intrinsic_emit_binary): Set inst_c0 to flags
9441         so the backed can generate the appropriate op.
9442
9443 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
9444         This patch squeese one more byte from the SimdIntrinsc struct.
9445
9446         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions: Use the version number
9447         a a shift amount intead of simply or'ing it.
9448
9449         * mini.h: Change SIMD_VERSION_* values to be sequential intead of masks.
9450
9451         * simd-intrinsics.c (struct SimdIntrinsc): Squeese simd_version and simd_emit_mode into a single
9452         byte so we can have an aditional flags field without increasing struct size.
9453
9454         * simd-intrinsics.c (emit_intrinsics): Use the value of simd_version as a shift amount before checking
9455         against the simd_supported_versions bitmask.
9456
9457         * simd-intrinsics.c: Set SIMD_INTRINSIC_NAME_MAX to an appropriate value.
9458
9459 Mon Oct 13 10:58:10 CEST 2008 Paolo Molaro <lupus@ximian.com>
9460
9461         * mini.c: remove rawbuffer code (the only use here is unsafe because
9462         it takes locks during signal handling and the kernel now provides much
9463         better info in proc/pid/smaps these days).
9464
9465 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
9466
9467         * mini-amd64.c (mono_arch_output_basic_block): Fix the changes to
9468         OP_X86_PUSH_OBJ. Fixes #434620.
9469
9470         * objects.cs: Add a test.
9471         
9472 2008-10-12  Rodrigo Kumpera  <rkumpera@novell.com>
9473
9474         * basic-simd.cs: Remove PackWithUnsignedSaturation tests as it turns out
9475         that the packuswb/packusdw don't work with unsigned numbers for what
9476         would be negative numbers in signed format.
9477
9478         * cpu-x86.md: Add doubleword forms of many ops and packing ones.
9479         Fix the len of fconv_to_r8_x and xconv_r8_to_i4.
9480
9481         * mini-ops.h: Add doubleword forms of many ops and packing ones.
9482
9483         * mini-x86.c: Emit doubleword forms of many ops and packing ones.
9484
9485         * simd-intrinsics.c (SimdIntrinsc): Rename the flags field to simd_version.
9486
9487         * simd-intrinsics.c (vector4f_intrinsics): Use simd_version field for sse3 ops.
9488
9489         * simd-intrinsics.c (vector4u_intrinsics): Rename to vector4ui_intrinsics and
9490         add more ops.
9491
9492         * simd-intrinsics.c (simd_version_name): New function, returns the name of the
9493         version as the enum in mini.h.
9494
9495         * simd-intrinsics.c (emit_intrinsics): Instead of having a special emit mode
9496         for sse3 ops, check the simd_version field if present. This way the code
9497         works with all versions of sse.
9498
9499 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9500
9501         * simd-intrinsics.c: Fixed intrinsic name typo.
9502
9503         * mini.h: Added missing simd exported function.
9504
9505         * basic-simd.cs: Added tests for Vector4ui.
9506         Fixed broken test for Vector16b.
9507
9508 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
9509
9510         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Increase
9511         the max length to 64.
9512
9513 2008-10-10  Mark Probst  <mark.probst@gmail.com>
9514
9515         * method-to-ir.c: Only do the fast virtual generic method call for
9516         non-wrapper methods.
9517
9518         * mini.h, mini-trampolines.c: The new generic virtual remoting
9519         trampoline handles virtual method calls via the vtable (as done by
9520         the fast virtual generic method calls) to remoting proxies.
9521
9522         * mini.c (mono_jit_create_remoting_trampoline): For generic
9523         methods reate a generic virtual remoting trampoline.
9524
9525         * mini-amd64.h: Enable fast virtual generic method calls again.
9526
9527 2008-10-10  Mark Probst  <mark.probst@gmail.com>
9528
9529         * mini-ppc.c: Use SP (r1), not frame_reg (which might be r31) to
9530         restore registers when doing tail calls.
9531
9532 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9533
9534         * simd-intrinsics.c (emit_intrinsics): Vector4u was renamed to
9535         Vector4ui.
9536
9537 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9538
9539         * basic-simd.cs: Add test for Vecto16b.PackWithUnsignedSaturation.
9540
9541 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9542
9543         * simd-intrinsics.c (emit_intrinsics): Retrofit to new type names.
9544
9545 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9546
9547         * basic-simd.cs: Retrofit for API changes.
9548
9549 2008-10-10  Mark Probst  <mark.probst@gmail.com>
9550
9551         * mini-ppc.c: Handle integer stack arguments for tail calls.
9552
9553 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9554
9555         * optflags-def.h: Removed sse3 optimization.
9556
9557         * driver.c: Same.
9558
9559         * mini-x86.c (mono_arch_cpu_optimizazions): Remove detection of
9560         sse3.
9561
9562         * mini-x86.c: Added mono_arch_cpu_enumerate_simd_versions.
9563
9564         * mini.h: Added enumeration with simd versions.
9565
9566         * simd-intrinsics.c (emit_intrinsics): Use the new static var
9567         for detecting SSE3.
9568
9569         * simd-intrinsics.c: Added mono_simd_intrinsics_init.
9570
9571         * mini.c (mini_init): Call mono_simd_intrinsics_init.
9572
9573 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
9574
9575         * basic-simd.cs: Added tests for Vector8u and Vector16u.
9576
9577         * basic-simd.cs: Fixed test naming.
9578
9579 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
9580
9581         * mini-ops.h: Added ops for packed and saturated math, shifts
9582         and packing/unpacking.
9583
9584         * cpu-x86.md: Added descriptors for the above ops.
9585
9586         * mini-x86.c: Added code to emmit the above ops.
9587
9588         * simd-intrinsics.c: Added support for Vector16u and Vector8u.
9589
9590 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
9591
9592         * aot-compiler.c (compile_method): Enable AOT for generic code.
9593
9594         * ir-emit.h (NEW_DOMAINCONST): Use domainvars in AOT code as well.
9595
9596 Wed Oct 8 16:35:43 CEST 2008 Paolo Molaro <lupus@ximian.com>
9597
9598         * mini.c: add a workaround for a common screwup that ends up blamed
9599         to mono (other processes blocking signal delivery).
9600
9601 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9602
9603         * method-to-ir.c (mono_method_to_ir2): Clear ins_flag on all code paths
9604         in the LDFLD/STFLD opcodes. Fixes #432673.
9605
9606         * iltests.il.in: Add a new test.
9607
9608 Tue Oct 7 19:59:07 CEST 2008 Paolo Molaro <lupus@ximian.com>
9609
9610         * mini-arm.c: attach the thread in unmanaged->managed transitions
9611         using delegates (bug #433148).
9612
9613 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
9614
9615        * basic-simd.cs: Use new ShuffleSel constants.
9616
9617 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
9618
9619         * driver.c (opt_sets): Added combinations of simd, sse2 and sse3.
9620
9621         * mini-x86.c (mono_arch_cpu_optimizazions): Detect sse3 and now
9622         only disable simd intrinsics if no sse2 is detected.
9623
9624         * optflags-def.h: Added sse3.
9625
9626         * simd-intrinsics.c: Avoid generated sse3 intrinsics if the optimization
9627         is disabled.
9628
9629 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9630
9631         * aot-compiler.c (add_wrappers): Fix Delegate/MulticastDelegate classes
9632         when adding delegate-invoke wrappers.
9633
9634 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9635
9636         * Makefile.am: Reenable the simd tests.
9637
9638 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
9639
9640         * mini-amd64.c (mono_arch_emit_outarg_vt) : In the ArgValuetypeAddrInIReg case,
9641           add a call to mono_call_inst_add_outarg_reg for the arg->dreg to make sure that no
9642           other vreg is allocated to that hreg.
9643
9644         Contributed under MIT/X11 license.
9645
9646 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9647
9648         * Makefile.am: Disable the simd tests for now as Mono.Simd is not
9649         yet checked in.
9650
9651 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
9652
9653         * basic-simd.cs: New test suite for SIMD intrinsics.
9654
9655         * Makefile.am: Added new tests.
9656
9657 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
9658
9659         * cpu-x86.md: Added new instructions to handle float to int using SSE regs.
9660
9661         * mini-ops.h: Same.
9662
9663         * mini-x86.h: Enable mono_arch_decompose_opts if simd intrinsics are enabled.
9664
9665         * mini-x86.c (mono_arch_decompose_opts): Decompose float to int conversion
9666         using SSE2 aware opcodes.
9667
9668         * mini-x86.c (emit_float_to_int): Disable the SSE2 optimization if OPT_SIMD
9669         is enabled, this code path is only reachable if conversion ops are emmited after
9670         mono_method_to_ir.
9671
9672         * mini.h: Added MonoCompile::fconv_to_r8_x_var to hold the float to int var.
9673
9674         This optimization saves 6 bytes per conversion against the old version.
9675
9676 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
9677
9678         * aot-compiler.c (compile_method): Don't skip methods referencing 
9679         generic methods without a corresponding entry in token_info_hash, since
9680         encode_method_ref () can handle all generic methods now.
9681
9682         * method-to-ir.c (mono_save_token_info): Don't save the token info if a 
9683         generic context is set.
9684         
9685         * method-to-ir.c (mono_method_to_ir2): Put back a disable_aot for
9686         generic sharing of LDTOKEN.
9687
9688 2008-10-06  Mark Probst  <mark.probst@gmail.com>
9689
9690         * mini-amd64.h: Temporarily disabled fast virtual generic method
9691         calls because it breaks the System.Runtime.Remoting tests.
9692
9693 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
9694
9695         * aot-compiler.c (add_wrappers): Add delegate-invoke wrappers.
9696
9697         * method-to-ir.c (check_inline_called_method_name_limit): Return TRUE
9698         so inlining actually works.
9699         (check_inline_caller_method_name_limit): Ditto.
9700
9701 Mon Oct 6 11:04:38 CEST 2008 Paolo Molaro <lupus@ximian.com>
9702
9703         * mini-ppc.c: mono_arch_flush_icache () cast pointer using gsize for
9704         64 bit safety (from Olaf Hering and Andreas Farber).
9705
9706 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
9707         
9708         * mini-trampolines.c (mono_aot_trampoline): Delegate processing to
9709         mono_magic_trampoline () if aot_get_method_from_token () fails. Remove
9710         unused virtual call support code.
9711
9712         * aot-runtime.c (decode_method_ref): Add a 'no_aot_trampoline' out argument.
9713         
9714         * aot-runtime.c (mono_aot_get_method_from_vt_slot): Return NULL for methods
9715         which can't use aot trampolines.
9716         (decode_patch): Don't create aot trampolines for methods which can't use
9717         them.
9718
9719         * aot-compiler.c (encode_method_ref): Add a marker for methods which can't
9720         use aot trampolines.
9721
9722         * mini.h: Bump AOT image format version.
9723         
9724 2008-10-05  Zoltan Varga  <vargaz@gmail.com>
9725
9726         * method-to-ir.c (mono_method_to_ir2): Pass cil_method instead of cmethod
9727         to save_token_info () since cmethod is inflated for constrained calls.
9728
9729         * mini-<ARCH>.h mini-x86.c: Remove some unused defines.
9730
9731 2008-10-04  Andreas Farber  <andreas.faerber@web.de>
9732
9733         * Makefile.am: Add build rules for ppc64.
9734         This avoids the build failing at pedump with unresolved symbols
9735         due to lack of arch_sources. Instead it will now fail earlier
9736         due to lack of cpu-ppc64.md.
9737
9738         Contributed under MIT/X11 license.
9739
9740 2008-10-04  Mark Probst  <mark.probst@gmail.com>
9741
9742         * mini-amd64.c (mono_arch_emit_call): Support stack arguments for
9743         tail calls.
9744
9745         * iltests.il.in: Add test case for tail call with many arguments.
9746
9747 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
9748
9749         * method-to-ir.c (mono_method_to_ir2): Add an !cfg->compile_aot assert
9750         to the fast virtual generic method code until the aot case is fixed.
9751
9752 2008-10-03  Mark Probst  <mark.probst@gmail.com>
9753
9754         * mini-ppc.c, mini-ppc.h: Implement generic virtual method thunks.
9755
9756 2008-10-03  Mark Probst  <mark.probst@gmail.com>
9757
9758         * mini-amd64.c, mini-amd64.h: Implement generic virtual method
9759         thunks.
9760
9761 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
9762         
9763         * simd-intrinsics.c: Forgot to add this one.
9764
9765         * mini-codegen.c: Fix macro in case SIMD is not supported.
9766
9767 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
9768         
9769         This patch land initial JIT support for simd intrinsics.
9770
9771         * mini-x86.h: Added new define to make --enable_minimal work on x86.
9772
9773         * Makefile.am: Added simd-intrinsics.c
9774
9775         * simd-intrinsics.c: New file with simd instrinsic related
9776         code.
9777
9778         * cfold.c (mono_constant_fold_ins2): Fold XZERO.
9779
9780         * cpu-x86.md: Add simd related instructions.
9781
9782         * driver.c: Added MONO_OPT_SIMD to the default set of optimizations.
9783
9784         * driver.c: Added two new --regression variants.
9785
9786         * ir-emit.h (MONO_EMIT_NEW_VZERO): Emit XZERO if the type is a simd intrinsic.
9787
9788         * local-propagation.c (mono_local_cprop2): Eliminate useless XMOVE.
9789
9790         * local-propagation.c (mono_local_deadce): Use new macro MONO_IS_NON_FP_MOVE and
9791         extract some complicated logic to helper functions.
9792
9793         * method-to-ir.c (mono_type_to_regmove): Handle simd intrinsics.
9794
9795         * method-to-ir.c (mini_emit_inst_for_method): Emit simd intrinsics.
9796
9797         * method-to-ir.c (mono_handle_global_vregs): If a simd intrinsic was found, apply
9798         the specialized simplification pass.
9799
9800         * method-to-ir.c (mono_spill_global_vars): Use new macro.
9801
9802         * mini-codegen.c: Added SIMD constants to all regbanks arrays.
9803
9804         * mini-codegen.c: Added reg_bank_table_init to initialize the reg desc -> bank
9805         table.
9806
9807         * mini-codegen.c: Define a version of the reg_bank macro that uses desc_to_reg_type
9808         if MONO_ARCH_NEED_SIMD_BANK is defined.
9809
9810         * mini-ops.h: Added the new simd ops.
9811
9812         * mini-x86.c: Added mono_arch_xregname.
9813
9814         * mini-x86.c (mono_arch_cpu_optimizazions): Disable MONO_OPT_SIMD if SSE3 is not detected.
9815
9816         * mini-x86.c (mono_arch_output_basic_block): Add simd related opcodes.
9817
9818         * mini-x86.h: Define simd related MONO_ARCH macros.
9819
9820         * mini.c (mono_type_to_load_membase): Handle simd intrinsics.
9821
9822         * mini.c (mono_type_to_store_membase): Handle simd intrinsics.
9823
9824         * mini.h: Added new macros MONO_IS_NON_FP_MOVE, MONO_IS_REAL_MOVE, MONO_IS_ZERO and
9825         MONO_CLASS_IS_SIMD to deal with simd related IR.
9826
9827         * mini.h (MonoInst): Added spill_var to the backend union.
9828
9829         * mini.h (MonoCompile): Added uses_simd_intrinsics and iconv_raw_var.
9830
9831         * mini.h: Added forward declarations of the new simd fuctions.
9832
9833         * optflags-def.h: Added new optimization names SIMD.
9834
9835         * regalloc.c (mono_regstate_reset): Set next vreg to be the max value of the 3 reg banks.
9836
9837         * regalloc.h: Added support for working with 3 register banks.
9838
9839         * regalloc.h (MonoRegState): Added xsymbolic field if a third regbank is required.
9840
9841         * ssa2.c (mono_ssa_deadce2): Use new MONO_IS_ZERO macro.
9842
9843 Fri Oct 3 16:03:22 CEST 2008 Paolo Molaro <lupus@ximian.com>
9844
9845         * mini-exceptions.c: remove 64 bit related ifdef clutter.
9846
9847 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
9848
9849         * mini-exceptions.c (mono_handle_soft_stack_ovf): Unprotect two pages
9850         instead of one on 64 bit systems.
9851
9852         * method-to-ir.c: Remove unused includes.
9853
9854 2008-10-02  Zoltan Varga  <vargaz@gmail.com>
9855
9856         * aot-compiler.c (emit_exception_debug_info): Use jinfo->used_regs instead of
9857         cfg->used_int_regs, since the two are different on arm.
9858
9859 2008-10-02  Mark Probst  <mark.probst@gmail.com>
9860
9861         * method-to-ir.c, inssel.brg, mini-trampolines.c: Use
9862         mono_method_get_vtable_index() to get the vtable index.
9863
9864 2008-10-02  Mark Probst  <mark.probst@gmail.com>
9865
9866         * method-to-ir.c (mono_method_to_ir2): Don't create native
9867         wrappers for array methods, because they're never called (and if
9868         they were called they wouldn't work).
9869
9870 2008-10-02  Mark Probst  <mark.probst@gmail.com>
9871
9872         * method-to-ir.c (mono_method_to_ir2): Array methods are
9873         special-cased and must not be invoked indirectly via the (M)RGCTX
9874         when generic sharing is turned on.  Fixes #431413.
9875
9876 2008-10-01  Mark Probst  <mark.probst@gmail.com>
9877
9878         * method-to-ir.c: When generic sharing is active, call
9879         non-interface virtual generic methods via the standard trampoline.
9880
9881         * mini-trampolines.c: Handle virtual generic shared methods.
9882
9883         * mini.h, mini-x86.c, mini-x86.h: New argument for
9884         mono_arch_build_imt_thunk() which is non-NULL for virtual generic
9885         method thunks and which is the trampoline to call if the lookup
9886         fails.  Enable the virtual generic method thunk for x86.
9887
9888         * mini-amd64.c, mini-arm.c, mini-ia64.c, mini-sparc.c,
9889         mini-ppc.c (mono_arch_build_imt_thunk): Add the additional
9890         argument but assert that it's NULL, because these archs don't yet
9891         implement the virtual generic method thunk.  Changes in the IMT
9892         thunk data structures.
9893
9894 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
9895
9896         * aot-compiler.c (emit_globals): Avoid invalid characters in
9897         the static linking symbol.
9898
9899         * objects.cs: Add a test for the range check optimization. Fix warnings.
9900
9901         * branch-opts.c (mono_if_conversion): Add back the 'optimize range checks'
9902         optimization from the current JIT.
9903
9904         * method-to-ir.c (mini_emit_inst_for_method): Decompose String.Length
9905         later in decompose_array_access_opts () to allow more optimizations.
9906
9907         * method-to-ir.c (mono_handle_soft_float): Rename this to 
9908         mono_decompose_soft_float () for consistency.
9909
9910         * mini-ops.h: Fix arguments of OP_STRLEN.
9911
9912         * method-to-ir.c (save_cast_details): Extract the cast details saving code
9913         into a separate function.
9914         (reset_cast_details): Ditto.
9915         (handle_unbox): Save cast details. Fixes #431254.
9916
9917         * method-to-ir.c: Remove some obsolete FIXMEs.
9918
9919 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9920
9921         * ir-emit.h (alloc_dreg): Write a warning before crashing.
9922
9923 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9924
9925         * mini-codegen.c: More work on macros to make them
9926         ready for multiple regbanks.
9927
9928 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9929
9930         * method-to.ir.c (mono_type_to_regmove): Remove static modifier.
9931
9932         * mini.h: Export mono_type_to_regmove. Fix signature of mono_regname_full.
9933
9934 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9935
9936         * mini-codegen.c (mono_spillvar_offset): Proper support for
9937         multiple regbanks.
9938
9939 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
9940
9941         * mini-amd64.c (mono_arch_emit_epilog): Remove some duplicated code from
9942         the stack overflow changes.
9943
9944 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9945
9946         * mini-codegen.c: Make all bank macros depend on reg_bank.
9947
9948         * mini-codegen.c (mono_local_regalloc): Make free mask
9949         initialization regbank aware.
9950
9951 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9952
9953         * mini-codegen.c (mono_local_regalloc): Extract callee
9954         mask selection to a function and make it regbank aware.
9955
9956 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9957
9958         * mini-codegen.c (mono_local_regalloc): Changed the cloberring
9959         code to deal with many regbanks.
9960
9961 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
9962
9963         * mini-codegen.c: More fp->regbank changes.
9964
9965 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
9966
9967         * mini-codegen.c: Change asserts to use MONO_NUM_REGBANKS instead
9968         of a hardcoded constant.
9969
9970 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
9971
9972         * method-to-ir.c (type_from_stack_type): Fix typo.
9973
9974 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
9975
9976         * mini-ia64.c (emit_move_return_value): Convert float return values to
9977         double.
9978
9979         * objects.cs: Add a new test.
9980         
9981         * mini-ia64.c (mono_arch_allocate_vars): Disable fp elimination for
9982         VARARG methods to fix an assert later.
9983
9984         * mini-mips.h mini-mips.c mini-ops.h cpu-mips.md: Update the mips back
9985         end so it at least compiles.
9986
9987 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
9988
9989         * method-to-ir.c (emit_optimized_ldloca_ir): Fix this.
9990
9991 2008-09-28  Rodrigo Kumpera  <rkumpera@novell.com>
9992
9993         * method-to-ir.c (mono_method_to_ir2): Extract the ldloca + initobj
9994         optimization to a new function (emit_optimized_ldloca_ir) and enable
9995         it for both ldloca and ldloca_s.
9996
9997 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
9998
9999         * method-to-ir.c (mono_method_to_ir2): Remove an unnecessary assert in the
10000         gshared CASTCLASS code.
10001
10002         * driver.c (mono_main): Add a workaround for shutdown crashes seen on
10003         amd64, where the libc stack unwinder encounters stack frames referring to
10004         native code in unmapped memory.
10005
10006         * method-to-ir.c (mini_emit_check_array_type): Add support for generic
10007         sharing.
10008
10009         * generics.cs: Add new test.
10010
10011 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
10012
10013         * mini-arm.h driver.c: Print the fp model when using --version on arm. Also,
10014         add a check that one of the ARM_FPU_ constants is defined.
10015
10016         * mini-exceptions.c (mono_handle_soft_stack_ovf): Really fix the build.
10017         
10018         * mini-exceptions.c: Fix build on non-altstack platforms.
10019
10020         * method-to-ir.c (mono_method_to_ir2): Fix aot support for the
10021         sharing of vtypes.
10022
10023         * ir-emit.h: Add a comment to NEW_PCONST.
10024
10025         * mini-exceptions.c (mono_altstack_restore_prot): Fix a warning.
10026
10027         * mini.h (MonoJitDomainInfo): Move some fields here from MonoDomain.
10028
10029         * mini.c aot-runtime.c method-to-ir.c driver.c mini-trampolines.c: Update
10030         after the changes to MonoJitDomainInfo.
10031
10032 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10033
10034         * mini-ppc.c, tramp-ppc.c, mini-ppc.h: Implement generic code sharing.
10035
10036 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10037
10038         * mini-ppc.c: Compiler warning fixes.
10039
10040 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10041
10042         * mini-ppc.c: Special handling for 1/2 byte structs on Darwin only
10043         for pinvokes.
10044
10045 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10046
10047         * exceptions-ppc.c, mini-ppc.h: Compile
10048         mono_arch_handle_altstack_exception() on Darwin, too.
10049
10050 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10051
10052         * method-to-ir.c (mono_emit_rgctx_method_call_full): Must also
10053         work on archs which don't have generic sharing implemented, only
10054         without the vtable_arg.
10055
10056 2008-09-26  Mark Probst  <mark.probst@gmail.com>
10057
10058         * mini.c: Added comment explaining why delegate ctor icall
10059         wrappers are compiled.
10060
10061 2008-09-26  Mark Probst  <mark.probst@gmail.com>
10062
10063         * mini.c: Don't produce trampolines to delegate ctor icall
10064         wrappers but compile them upfront.
10065
10066 Fri Sep 26 17:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
10067
10068         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: amd64 support code for calling a
10069         runtime-set function when going back to managed code. Currently this
10070         is used to set back the protection on the soft ovf pages and/or to
10071         throw the stack overflow exception that happened in unmanaged code.
10072
10073 Fri Sep 26 16:46:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
10074
10075         * tramp-x86.c, mini-x86.h, mini-x86.c: x86 support code for calling a
10076         runtime-set function when going back to managed code. Currently this
10077         is used to set back the protection on the soft ovf pages and/or to
10078         throw the stack overflow exception that happened in unmanaged code.
10079
10080 Fri Sep 26 16:34:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
10081
10082         * mini.h, mini.c, mini-trampolines.c, mini-exceptions.c: added
10083         the support code for restoring stack protection after stack overflows
10084         that happen in unmanaged code. Don't set the exec permission on the
10085         soft overflow area.
10086
10087 2008-09-26  Zoltan Varga  <vargaz@gmail.com>
10088
10089         * mini-trampolines.c (mono_delegate_trampoline): Add wrappers even if
10090         delegate->method_ptr is set. Fixes #428054.
10091
10092 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
10093
10094         * tests.cs: Rename to ratests.cs.
10095
10096         * method-to-ir.c: Merge the emit_get_rgctx () calls into the 
10097         emit_get_rgctx_... functions.
10098
10099 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10100
10101         * method-to-ir.c: Eliminated macro EMIT_GET_RGCTX.
10102
10103 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10104
10105         * mini-trampolines.c (mono_magic_trampoline): Unwrap wrappers
10106         before asserting that method is sharable.
10107
10108 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10109
10110         * method-to-ir.c, mini.c, jit-icalls.c: New function for checking
10111         whether method needs a static RGCTX wrapper used instead of
10112         complex conditions.
10113
10114         * generic-sharing.c, mini.h: A few functions moved to
10115         metadata/generic-sharing.c.
10116
10117 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10118
10119         * method-to-ir.c, mini.c, mini-exceptions.c, mini-trampolines.c:
10120         Generic code sharing for value types, which essentially means
10121         treating value type methods like static methods.  The RGCTX is
10122         passed in the same way.
10123
10124 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
10125
10126         * method-to-ir.c (mono_method_to_ir2): Avoid an assert in the NEWOBJ
10127         opcode when creating multi-dimensional arrays of open types.
10128
10129         * generic-sharing.c (mono_method_check_context_used): Handle arrays of
10130         open generic types.
10131
10132         * generics.cs: Add a test.
10133
10134         * mini-codegen.c: Use macros everywhere for checking floats instead of == 'f'.
10135
10136 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
10137
10138         * mini.h (MonoCompile): Add 'disable_vreg_to_lvreg' flag.
10139
10140         * mini.c (mini_method_compile): Set it when running under the debugger. 
10141
10142         * method-to-ir.c (mono_handle_global_vregs): Disable global->local
10143         vreg optimization if the flag is set.
10144
10145         * driver.c (mono_main): Add --attach= option to pass options to
10146         the attach agent.
10147
10148         * mini.c (sigquit_signal_handler): Start the attach agent.
10149
10150         * ssapre.c: Disable this to save space since it is not yet ported to
10151         linear IR.
10152
10153         * regalloc2.c: Disable this to save space.
10154
10155         * mini.h (MonoJitStats): Remove unused analyze_stack_repeat.
10156
10157 Wed Sep 24 16:01:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
10158
10159         * decompose.c, method-to-ir.c, mini-codegen.c, regalloc2.c: make
10160         the -v option useful again.
10161
10162 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
10163
10164         * mini-amd64.c (mono_arch_output_basic_block): Add support for
10165         --break-at-bb.
10166
10167         * inssel.brg (mini_emit_castclass): Avoid the szarray!=array checks for
10168         arrays of arrays. Fixes #428406.
10169
10170         * method-to-ir.c (mini_emit_castclass): Ditto.
10171
10172         * objects.cs: Add new test.
10173         
10174 2008-09-23  Rodrigo Kumpera  <rkumpera@novell.com>
10175
10176         * method-to-ir.c (type_to_eval_stack_type): The code path for the new JIT
10177         was wrong at it choked against target_type_is_incompatible for byref types.
10178
10179 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
10180
10181         * mini-codegen.c: Use 'bank' macros instead of 'is_fp' macros in most 
10182         places.
10183
10184 Tue Sep 23 15:31:45 CEST 2008 Paolo Molaro <lupus@ximian.com>
10185
10186         * mini-exceptions.c: update a few more exceptions-related counters.
10187
10188 Tue Sep 23 15:28:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
10189
10190         * aot-runtime.c, method-to-ir.c, mini.c, mini-trampolines.c: use the
10191         new functions to allocate from persistent mempools.
10192
10193 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
10194
10195         * mini.h regalloc.h mini-codegen.c: Generalize the regalloc code to allow 
10196         multiple register banks in the future.
10197
10198         * mini-codegen.c (mono_local_regalloc): Fix a warning.
10199
10200 2008-09-22  Rodrigo Kumpera  <rkumpera@novell.com>
10201
10202         * mini.c (type_to_eval_stack_type): Remove duplicated function.
10203
10204         * method-to-ir.c (type_to_eval_stack_type): Make this version compatible with both JIT.
10205
10206         * mini.h: Export type_to_eval_stack_type.
10207
10208         This function was nearly duplicated in method-to-ir.c and mini.c. The difference
10209         is only ins->klass of byref types.
10210
10211 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
10212
10213         * method-to-ir.c (mini_emit_memset): Use a default alignment of 4.
10214         (mini_emit_memcpy2): Ditto.
10215
10216         * mini-amd64.c: Fix a warning.
10217
10218 2008-09-21  Mark Probst  <mark.probst@gmail.com>
10219
10220         * exceptions-ppc.c (mono_arch_get_call_filter): Fixed stack frame
10221         linking.
10222
10223 2008-09-19  Rodrigo Kumpera  <rkumpera@novell.com>
10224
10225         * method-to-ir.c: Extract stloc micro-optimization to a
10226         function and apply it to all cases.
10227
10228 2008-09-19  Mark Probst  <mark.probst@gmail.com>
10229
10230         * method-to-ir.c: Don't fail generic code sharing in cases we
10231         already support.
10232
10233 2008-09-18  Mark Probst  <mark.probst@gmail.com>
10234
10235         * mini-ppc.c: Handle structs in tailcalls on Darwin.
10236
10237 Tue Sep 16 21:07:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
10238
10239         * *.c, *.md, mini-ops.h: introduced relaxed_nop opcode for spin wait
10240         implementation.
10241
10242 Tue Sep 16 16:39:16 CEST 2008 Paolo Molaro <lupus@ximian.com>
10243
10244         * trace.c: make tracing more useful and correct, with per-thread
10245         id and indent info.
10246
10247 2008-09-15  Mark Probst  <mark.probst@gmail.com>
10248
10249         * mini-ppc.c (mono_arch_emit_call): Convert floats to R4 when
10250         doing a method call and the argument is an R4.
10251
10252 2008-09-14  Zoltan Varga  <vargaz@gmail.com>
10253
10254         * aot-compiler.c (add_wrappers): Do not generate runtime invoke wrappers for
10255         generic methods.
10256
10257 2008-09-13  Mark Probst  <mark.probst@gmail.com>
10258
10259         * mini-ppc.c: Convert result to single for OP_ICONV_TO_R4.
10260
10261 2008-09-12  Zoltan Varga  <vargaz@gmail.com>
10262
10263         * mini.h (MONO_IS_JUMP_TABLE): Handle GOT_ENTRY.
10264         (MONO_JUMP_TABLE_FROM_INS): Ditto.
10265
10266 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
10267
10268         * driver.c: Add a --agent argument (not supported yet) to load managed
10269         agent assemblies before loading the main assembly, similarly to how the
10270         Java VM handles agents.
10271
10272 2008-09-11  Mark Probst  <mark.probst@gmail.com>
10273
10274         * mini-ppc.c (mono_arch_allocate_vars): Use arch-independent
10275         function to do stack layout of local variables.
10276
10277 2008-09-11  Mark Probst  <mark.probst@gmail.com>
10278
10279         * mini-ppc.c (calculate_sizes): Bugfix in sigcookie position
10280         calculation.
10281
10282 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
10283
10284         * method-to-ir.c ssa2.c mini.c mini-amd64.c decompose.c ssa.c abcremoval.c
10285         abcremoval2.c branch-opts.c driver.c dominators.c: Disable parts of the
10286         JIT if DISABLE_JIT is defined.
10287
10288         * Makefile.am: Avoid compiling/linking in inssel.c if DISABLE_JIT is
10289         defined.
10290
10291 2008-09-10  Mark Probst  <mark.probst@gmail.com>
10292
10293         * iltests.il.in: Disable the fconv test on PPC (the result is
10294         undefined according to ECMA).
10295
10296 2008-09-10  Mark Probst  <mark.probst@gmail.com>
10297
10298         * iltests.il.in: Enable tail call tests for PPC.
10299
10300         * mini.h: Add variable for storing incoming valuetype argument
10301         addresses for tail calls.
10302
10303         * mini-ppc.c: Implement valuetype arguments and return values for
10304         tailcalls on Linux.
10305
10306 2008-09-09  Mark Probst  <mark.probst@gmail.com>
10307
10308         * mini-ppc.c: Partially implement tail calls (struct arguments and
10309         return values not supported).
10310
10311         * method-to-ir.c: Enable tail calls on PPC.
10312
10313 2008-09-08  Zoltan Varga  <vargaz@gmail.com>
10314
10315         * aot-compiler.c (emit_wrapper_info): Omit the klass name from
10316         runtime-invoke wrappers to work around the problem of them getting
10317         assigned to a random class.
10318
10319         * aot-runtime.c (mono_aot_get_method): Ditto.
10320         
10321 2008-09-07  Zoltan Varga  <vargaz@gmail.com>
10322
10323         * mini-exceptions.c mini-mips.h mini-s390.h exceptions-mips.c: Kill
10324         the CUSTOM_EXCEPTION_HANDLING and CUSTOM_STACK_WALK defines.
10325
10326 2008-09-07  Mark Probst  <mark.probst@gmail.com>
10327
10328         * method-to-ir.c (mono_method_to_ir2): Disable tail calls for PPC
10329         until they're implemented properly.
10330
10331         * exceptions-ppc.c: Use arch-independent exception-handling code
10332         instead of custom one.
10333
10334         * exceptions-ppc.c, mini-ppc.c, mini-ppc.h: Bug fixes and changes
10335         for Linear IR.
10336
10337         * tramp-ppc.c, mini-ppc.c: Fixed warnings.
10338
10339         * decompose.c, aot-runtime.c, aot-compiler.c: PPC code also
10340         applies when __powerpc__ is defined.
10341
10342 2008-09-06  Zoltan Varga  <vargaz@gmail.com>
10343
10344         * aot-runtime.c (mono_aot_get_method): Add another cache mapping wrapper
10345         methods to their code to avoid computing the full name of wrappers and
10346         doing a lookup in a string hash table.
10347
10348 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
10349
10350         * method-to-ir.c: Remove the CHECK_BBLOCK () stuff it is not needed since
10351         we identify bblocks before method_to_ir () is ran.
10352
10353         * branch-opts.c (mono_optimize_branches): Avoid nullifying the exit bblock.
10354         Also avoid optimizing branches pointing to themselves.
10355
10356         * mini.c (mini_method_compile): Ditto. Fixes #422947.
10357
10358 2008-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
10359
10360         * driver.c (mono_main): Enable the new verifier under core-clr and cas.
10361
10362 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
10363
10364         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Implement this.
10365         (mono_arch_patch_plt_entry): Fix the calculation of the jump_entry.
10366         (mono_arch_get_nullified_class_init_trampoline): Return 'code' instead of
10367         'buf'.
10368
10369         * aot-compiler.c (emit_plt): Fix the arm plt entries, previously they all 
10370         jumped to the same entry in plt_jump_table.
10371
10372 2008-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
10373
10374         * method-to-ir.c (initialize_array_data): Handle field with RVA from
10375         dynamic images.
10376
10377 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
10378
10379         * method-to-ir.c (handle_isinst): Do the assignment at the beginning, so the
10380         other assignment can be if converted. Saves 1.5% on corlib size and fixes
10381         #421807.
10382
10383 2008-08-29  Geoff Norton  <gnorton@novell.com>
10384
10385         * aot-compiler.c: The Mach/ARM compiler doesn't understand the bss
10386         segment, and doesn't properly handle .space as .text.  Fixes
10387         AOT Mach/ARM
10388
10389 2008-08-29  Geoff Norton  <gnorton@novell.com>
10390
10391         * mini.c: Disable the mach exception handler when running on 
10392         ARM
10393
10394 2008-08-29  Geoff Norton  <gnorton@novell.com>
10395
10396         * aot-compiler.c: Patch from Renaldas Zioma to properly register 
10397         globals on Darwin/ARM
10398
10399 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
10400
10401         * mini.c: Avoid not initializing the runtime when doing AOT compilation, 
10402         since too many things depend on it. Instead, call 
10403         mono_runtime_set_no_exec ().
10404         
10405         * mini.c (mono_create_tls_get): Call mono_alloc_preg (cfg) when running with
10406         the new JIT.
10407
10408         * aot-compiler.c: Add an 'asm-only' AOT option.
10409
10410         * mini.c: Avoid initializing the runtime when doing AOT compilation.
10411                 
10412         * aot-compiler.c (compile_method): Disable gshared support for now as it
10413         doesn't yet work.
10414
10415 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
10416
10417         * mini-amd64.h : Fix a compiler warning.
10418
10419         * exceptions-amd64.c (mono_arch_unwindinfo_install_unwind_info) :
10420           Changed to use a callback function to retrieve the unwind info.
10421           This avoids problems observed when code blocks were removed by
10422           unloading an app domain.
10423
10424         * mini-amd64.c (mono_arch_cpu_optimizazions) : Removing the peephole 
10425           and branch excludes for Winx64.  The fix in exceptions-amd64.c allows them
10426           to work properly.
10427
10428         Contributed under MIT/X11 license.
10429
10430 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
10431
10432         * mini-amd64.c (mono_arch_output_basic_block) : Fix the OP_X86_PUSH_OBJ
10433           case to keep the stack aligned to 8.
10434
10435         Contributed under MIT/X11 license.
10436
10437 2008-08-26  Zoltan Varga  <vargaz@gmail.com>
10438
10439         * aot-runtime.c (mono_aot_get_method): Add a cache for wrapper names to
10440         avoid repeated linear searches.
10441
10442 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
10443
10444         * aot-compiler.c (add_wrappers): Avoid calling get_runtime_invoke with
10445         methods it can't handle.
10446         
10447         * aot-compiler.c (add_method): Avoid adding a method twice.
10448         (add_wrappers): Add runtime invoke wrappers for all methods.
10449
10450         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): New
10451         function to create an aot-compatible version of this trampoline.
10452
10453         * aot-compiler.c aot-runtime.c: Add support for AOT rgctx fetch trampolines.
10454
10455 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
10456
10457         * aot-compiler.c (compile_method): Skip wrappers of generic icalls.
10458
10459         * method-to-ir.c (mono_method_to_ir2): Replace an assert in UNBOX_ANY
10460         with a generic sharing failure.
10461
10462         * aot-compiler.c (emit_klass_info): Call mono_class_get_nested_types ().
10463
10464         * method-to-ir.c (mono_method_to_ir2): Rethrow the correct exception in
10465         CEE_RETHROW. Fixes #419634.
10466
10467         * mini.c (mono_method_to_ir): Ditto.
10468
10469         * exceptions.cs: Add a new test.
10470         
10471         * generic-sharing.c (mini_type_stack_size): Always pass TRUE as allow_open
10472         to mono_type_stack_size_internal () since some callers might not pass in
10473         an rgctx.
10474
10475         * mini-x86.c (mono_arch_emit_prolog): Store the rgctx before calling
10476         instrument_prolog. Fixes #419878.
10477
10478         * mini.c (mono_compile_create_var_for_vreg): Make the lvars representing
10479         doubles in soft float mode volatile.
10480
10481 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
10482
10483         * ir-emit.h (NEW_ARGSTORE): Use cfg->args and cfg->arg_types to fix the build.
10484
10485         * method-to-ir.c (mono_save_args): Use ARGSTORE instead of TEMPSTORE
10486         to handle soft float correctly.
10487
10488         * tramp-arm.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Implement
10489         the fast path.
10490
10491         * mini.h (struct MonoCallInst): Add dynamic_imt_arg boolean field.
10492
10493         * exceptions-arm.c (mono_arch_find_jit_info): Set ctx->regs [ARMREG_R11]
10494         to sp, since the generics catch code requires it.
10495
10496         * mini-arm.h (MONO_ARCH_VTABLE_REG): Use R0 for this to avoid needless
10497         copying.
10498
10499         * method-to-ir.c (emit_imt_argument): Pass imt_arg to 
10500         mono_arch_emit_imt_argument ().
10501
10502         * mini-<ARCH>.c (mono_arch_emit_imt_argument): Add an 'imt_arg' argument.
10503
10504         * mini-arm.c tramp-arm.c: Generic sharing updates.
10505
10506 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
10507
10508         * mini-arm.c: Fix the arm build.
10509
10510         * generic-sharing.c (mini_type_get_underlying_type): New helper function
10511         handling enums, generic instances and generic sharing.
10512         (mini_type_stack_size_full): Ditto.
10513
10514         * mini-amd64.c mini-x86.c mini-arm.c: Use the new functions.
10515         
10516         * mini.h (struct): Add 'uses_rgctx_reg' and 'uses_vtable_reg' fields.
10517
10518         * method-to-ir.c: Set the new fields when using RGCTX_REG/VTABLE_REG.
10519
10520         * tramp-arm.c: Implement the rgctx fetch and the generic class init 
10521         trampolines.
10522
10523         * mini-arm.c: Various small generic sharing changes.
10524
10525         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline): Implement
10526         this for x86.
10527         (mono_arch_create_trampoline_code): Remove most of the GENERIC_CLASS_INIT
10528         custom code.
10529
10530         * mini-trampolines.c (mono_create_generic_class_init_trampoline): New
10531         helper function to return a generic class init trampoline.
10532
10533         * method-to-ir.c mini.c: Use it.
10534         
10535         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline): New
10536         arch-specfic function to return a generic class init trampoline.
10537
10538         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Remove most of
10539         the GENERIC_CLASS_INIT custom code.
10540
10541         * method-to-ir.c (mono_method_to_ir2): If RGCTX_REG is not defined, that is
10542         a fatal error, not a sharing failure.
10543
10544         * tramp-<ARCH>.c (mono_arch_get_rgctx_lazy_fetch_offset): Removed, no longer
10545         needed.
10546
10547         * mini-trampolines.c (mono_rgctx_lazy_fetch_trampoline): Get the additional
10548         trampoline argument from MONO_ARCH_VTABLE_REG.
10549
10550         * tramp-x86.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
10551         order of the arguments to the C trampoline: pass 'slot' as the trampoline
10552         argument, and pass the vtable in VTABLE_REG.
10553
10554         * tramp-amd64.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         (mono_arch_create_trampoline_code_full): Remove some special casing for
10558         the rgctx fetch trampoline.
10559
10560         * mini.c (mono_method_to_ir): Fix the STELEM_ANY+null value optimization.
10561         Fixes #419273.
10562
10563         * iltests.il: Add a test for it.
10564
10565 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
10566
10567         * aot-compiler.c (compile_method): Enable AOT support for generics sharing.
10568
10569         * method-to-ir.c (mono_method_to_ir2): Remove an aot restriction which is
10570         no longer needed.
10571
10572         * mini-trampolines.c (mono_magic_trampoline): Add a sync wrapper here,
10573         use mono_jit_info_table_find () to avoid recursion.
10574         (mono_delegate_trampoline): Add a sync wrapper here.
10575
10576         * method-to-ir.c (mono_method_to_ir2): Don't call mono_ldftn_nosyc
10577         here.
10578
10579         * mini.c (mono_method_to_ir): Ditto.
10580         
10581         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Remove
10582         add_sync_wrapper argument. Don't add a sync wrapper here.
10583         (mono_create_jump_trampoline): Don't add a sync wrapper here.
10584
10585         * jit-icalls.c (mono_ldftn_nosync): Removed, no longer needed.
10586         
10587 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
10588
10589         * exceptions-amd64.c (seh_handler):  For Winx64 adding missing copy 
10590           of nonvolatile registers back from MonoContext to CONTEXT.
10591
10592         Contributed under MIT/X11 license.
10593
10594 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
10595
10596         * mini-amd64.c (mono_arch_get_delegate_invoke_impl):  When shifting the
10597           arguments on Winx64 there are only 4 argument registers.  For this
10598           logic to work the last argument must be pulled from the stack.  
10599
10600         Contributed under MIT/X11 license.
10601
10602 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
10603
10604         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
10605
10606         * aot-runtime.c aot-compiler.c patch-info.h mini.c: Get rid of
10607         MONO_PATCH_INFO_WRAPPER, encode/decode wrapper methods like the others in
10608         encode/decode_method_ref ().
10609
10610         * aot-compiler.c (encode_patch): Handle STATIC_RGCTX_INVOKE wrappers.
10611
10612         * aot-runtime.c (decode_patch): Ditto.  
10613
10614         * mini.c (mono_resolve_patch_target): Handle RGCTX_FETCH sub-patches of type
10615         MONO_PATCH_INFO_METHOD.
10616
10617         * aot-runtime.c (decode_exception_debug_info): Decode the contents of
10618         MonoGenericJitInfo.
10619
10620         * aot-compiler.c (emit_exception_debug_info): Emit the contents of
10621         MonoGenericJitInfo.
10622
10623         * method-to-ir.c (emit_imt_argument): Fix AOT+gshared support.
10624
10625         * mini-amd64.c (add_valuetype): Use a dummy gsctx if we didn't receive
10626         one from the caller.
10627
10628         * aot-runtime.c (decode_generic_inst): New function to decode and
10629         return a interned generic inst.
10630         (decode_klass_ref): Use it.
10631         (decode_method_ref): Ditto.
10632
10633         * aot-compiler.c (emit_exception_debug_info): Save 
10634         jinfo->has_generic_jit_info too.
10635
10636 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
10637
10638         * mini-ia64.c (mono_arch_output_basic_block): Add OP_FCONV_TO_I.
10639
10640         * iltests.il.in: Add a test for fconv_to_i.
10641
10642         * liveness.c: Disable the liveness2 pass for now to save space.
10643
10644         * regalloc2.c: Include mempool-internals.h to fix warnings.
10645
10646         * aot-compiler.c (encode_method_ref): Encode the context of generic
10647         instance methods.
10648
10649         * aot-runtime.c (decode_method_ref): Inflate generic methods using
10650         the context saved in the aot file.
10651
10652         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
10653
10654         * mini-x86.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
10655
10656         * method-to-ir.c (mono_method_to_ir2): When using CEE_JMP, make arguments
10657         volatile so they won't be optimized away.
10658
10659 2008-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
10660
10661         * ssa.c:
10662         * ssa2.c:
10663         * mini.c:
10664         * regalloc2.c:
10665         * dominators.c: Remove duplicated functions that now are in
10666         mempool-internals.h.
10667
10668 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
10669
10670         * aot-compiler.c: Fix warnings.
10671
10672         * aot-runtime.c (decode_klass_ref): Add support for VARs/MVARs.
10673
10674         * aot-compiler.c (encode_klass_ref): Encode is_method too for VARs/MVARs.
10675
10676         * method-to-ir.c (emit_get_rgctx_method): Use MONO_PATCH_INFO_METHODCONST
10677         as the patch type.
10678
10679         * mini.c (mono_resolve_patch_target): Ditto.
10680         
10681         * aot-compiler.c (encode_patch): Add support for RGCTX_FETCH.
10682         (encode_klass_ref): Add support for encoding VARs/MVARs.
10683
10684         * mini.c (mono_patch_info_dup_mp): Handle RGCTX_FETCH.
10685
10686         * aot-runtime.c (decode_patch_info): Rename to 'decode_patch'. Split out
10687         the handling of the got entries into a separate 'decode_got_entry' function.
10688         Add support for RGCTX_FETCH.
10689
10690         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RDI since RAX is
10691         clobbered by the trampoline code.
10692
10693         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RAX since that is
10694         not clobbered by the indirect calling code.
10695
10696 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
10697
10698         * mini-x86.c (mono_arch_patch_code): Handle RGCTX_FETCH/GENERIC_CLASS_INIT
10699         to fix the build.
10700
10701 2008-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
10702
10703         * method-to-ir.c (mono_emit_method_call_full): Alloc the constructor
10704         signature using the compilation mempool otherwise we would leak it.
10705
10706 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
10707
10708         * method-to-ir.c (mono_method_to_ir2): Emit the generic class inits using
10709         mono_emit_abs_call ().
10710
10711         * patch-info.h: Add GENERIC_CLASS_INIT.
10712
10713         * mini.c (mono_resolve_patch_target): Handle GENERIC_CLASS_INIT.
10714
10715         * mini-amd64.c (emit_call_body): Treat abs calls which have a patch info
10716         as their target as a near call.
10717
10718         * mini.c (mono_codegen): Handle patches stored in cfg->abs_patches in the
10719         ABS handling code.
10720         (mono_resolve_patch_target): Add support for MONO_PATCH_INFO_RGCTX_FETCH.
10721
10722         * method-to-ir.c (mono_emit_abs_call): New helper function which emits a
10723         call to a runtime function described by a patch.
10724
10725         * method-to-ir.c: Emit rgctx entry fetches and class init trampolines using
10726         mono_emit_abs_call, this has the advantage that the ABS handling code in
10727         mono_codegen () can handle them both, and can handle other stuff in the
10728         future without additional code.
10729
10730         * mini.h (struct MonoJumpInfoRgctxEntry): New structure describing an rgctx
10731         entry.
10732         (MonoCompile): Add 'abs_patches' hashtable, which contains patches describing
10733         abs addresses.
10734
10735         * mini.h: Add missing bblock related prototypes.
10736
10737         * mini.h (MonoCompile): Remove unused reverse_inst_list and
10738         reverse_inst_list_len fields.
10739
10740         * mini.c: Refactor this file a bit by moving branch optimizations to 
10741         branch-opts.c.
10742
10743         * method-to-ir.c: Merge generic sharing changes missed earlier.
10744
10745         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST.
10746
10747         * aot-runtime.c (decode_patch_info): Refactor the code dealing with the
10748         shared patches. Process METHODCONST as a shared patch.
10749
10750         * liveness.c (mono_analyze_liveness): Disable the liveness2 code for now
10751         as it crashes on the 2.0 mscorlib.
10752
10753         * aot-compiler.c (is_shared_got_patch): Revert the last change as it seems
10754         to cause crashes.
10755         
10756         * aot-compiler.c: Use is_plt_patch () in a few additional places.
10757         (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST, which is generated
10758         by IMT.
10759
10760         * aot-compiler.c: Reorganize the got handling code to be a bit more
10761         understandable.
10762
10763 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
10764
10765         * aot-compiler.c: Make the patch_to_plt_offset hash table use 
10766         mono_patch_info_equals/hash, and use it to massively simplify
10767         get_plt_index ().
10768
10769         * mini.c (mono_patch_info_hash): Simplify this and add support for
10770         more patch types.
10771
10772         * patch-info.h: Rename RGCTX_LAZY_FETCH_TRAMPOLINE to just RGCTX_FETCH.
10773
10774         * mini.c aot-compiler.c aot-runtime.c: Revert the LAZY_FETCH_TRAMPOLINE
10775         handling code, since an offset is not enough to identify a trampoline.
10776
10777         * method-to-ir.c: Remove some g_assert (!cfg->compile_aot) lines.
10778
10779 2008-08-17  Mark Probst  <mark.probst@gmail.com>
10780
10781         * mini.c (mono_op_imm_to_op): Add case for OP_IMUL_IMM.
10782
10783         * method-to-ir.c (mono_method_to_ir2): Decompose OP_CKFINITE.
10784
10785         * mini-ops.h: Argument and result types for OVF_CARRY ops.
10786
10787         * decompose.c: PPC decompositions for various ops.
10788
10789         * cpu-ppc.md, inssel-ppc.brg, mini-ppc.c: PPC changes for Linear IL.
10790
10791 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
10792
10793         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Make this
10794         call the generic trampoline code using a call, instead of a jump, to
10795         remove some special casing from the generic trampoline code.
10796
10797         * mini.c (mono_resolve_patch_target): Handle LAZY_FETCH_TRAMPOLINE.
10798         (mono_codegen): Ditto.
10799
10800         * aot-compiler.c aot-runtime.c: Ditto.
10801
10802         * patch-info.h: Add MONO_PATCH_INFO_RGCTX_LAZY_FETCH_TRAMPOLINE.
10803
10804         * mini-trampolines.c (mono_find_rgctx_lazy_fetch_trampoline_by_addr): New
10805         helper function to find the offset corresponding to a lazy fetch trampoline.
10806
10807         * mini.h (MonoCompile): Add 'orig_method' field to hold the original method
10808         when doing generic sharing.
10809
10810         * aot-compiler.c: Use cfg->orig_method instead of cfg->method in a lot of
10811         places.
10812         
10813         * mini.c (mono_create_rgctx_lazy_fetch_trampoline): Move this to
10814         mini-trampolines.c to be with the other trampoline creation functions.
10815
10816         * method-to-ir.c (mono_emit_method_call): Remove the 'signature' argument
10817         as it is equal to method->signature in most cases, add a 
10818         mono_emit_method_call_full variant which takes a signature and an imt
10819         argument as well.
10820
10821 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
10822
10823         * jit-icalls.c (mono_helper_compile_generic_method): Don't pass the context
10824         to this function, since it could be computed easily from the method 
10825         argument.
10826         (mono_helper_compile_generic_method_wo_context): Removed, not needed any
10827         more.
10828
10829         * method-to-ir.c mini.c: Remove references to 
10830         compile_generic_method_wo_context.
10831
10832         * method-to-ir.c (mono_method_to_ir2): Enable AOT for virtual
10833         generic method calls.
10834         
10835         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_1 for 1
10836         dimensional non-szarrays.
10837
10838         * mini.c (mini_init): Register mono_array_new_1.
10839
10840         * jit-icalls.c (mono_array_new_1): New jit icall.
10841
10842         * mini-trampolines.c (mono_magic_trampoline): For jumps, patch the GOT entries
10843         pointing to the method.
10844
10845         * aot-runtime.c (mono_aot_get_method_from_token): Register GOT slots holding
10846         method addresses belonging to METHOD_JUMP patches in the 
10847         jump_target_got_slot_hash.
10848         (mono_aot_load_method): Ditto.
10849
10850         * aot-compiler.c (compile_method): Allow AOT compilation of methods with
10851         METHOD_JUMP patches.
10852
10853         * mini.c (mini_create_jit_domain_info): New helper function which 
10854         initializes/frees domain->runtime_info.
10855         (mini_free_jit_domain_info): Ditto.
10856         (mini_init): Install the domain hook functions with the runtime.
10857
10858         * mini.h (MonoJitDomainInfo): New structure which stores the domain specific
10859         information maintained by the JIT.
10860
10861         * mini.c (mono_resolve_patch_target): For PATCH_INFO_METHOD_JUMP, move the
10862         insertion into jump_table_hash into mono_codegen (), also implement proper
10863         locking.
10864
10865         * method-to-ir.c (mono_method_to_ir2): Don't disable AOT for CEE_JMP and
10866         tail calls, it is already done by the aot code.
10867         
10868         * method-to-ir.c (mono_method_to_ir2): Handle CEE_JMP using the tail call
10869         mechanism on amd64.
10870
10871         * iltests.il.in: Make the jmp test a bit more complex.
10872
10873         * aot-compiler.c (encode_method_ref): Handle references to normal methods of
10874         generic instances which doesn't have a token.
10875
10876         * aot-runtime.c (decode_method_ref): Ditto.
10877         
10878         * method-to-ir.c (handle_unbox_nullable): Don't disable AOT, the aot code
10879         can handle this case now.
10880         (handle_box): Ditto.
10881
10882 2008-08-15  Geoff Norton  <gnorton@novell.com>
10883
10884         * mini-x86.c: Fix alignment on Apple x86, and re-disable the alignment
10885         debugging check.
10886
10887 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
10888
10889         * method-to-ir.c (mono_method_to_ir2): Allow AOT compilation of methods
10890         calling generic methods.
10891
10892         * aot-compiler.c (encode_patch): Handle MONO_PATCH_INFO_METHOD_RGCTX.
10893
10894         * aot-runtime.c (decode_patch_info): Ditto.
10895
10896         * mini.c (mono_resolve_patch_target): Ditto.
10897         
10898         * patch-info.h: Add METHOD_RGCTX.
10899
10900         * mini-amd64.c (mono_arch_output_basic_block): Optimize LOCALLOC_IMM.
10901
10902 2008-08-14  Zoltan Varga  <vargaz@gmail.com>
10903
10904         * mini-amd64.c (mono_arch_emit_call): Nullify call->vret_var if returning
10905         arguments in registers.
10906
10907         * decompose.c (mono_decompose_vtype_opts): Create a var for the vreg in
10908         OP_VCALL too, don't depend on OP_OUTARG_VTRETADDR doing it.
10909
10910         * mini.c (mini_method_compile): Abort aot compilation for generic
10911         methods if generic sharing is disabled.
10912         
10913         * mini.c (mono_method_to_ir): Disable AOT for virtual calls requiring
10914         an mrgctx.
10915
10916         * method-to-ir.c (mono_method_to_ir2): Disable AOT for virtual calls 
10917         requiring an mrgctx.
10918
10919         * decompose.c (mono_decompose_vtype_opts): Emit the correct sized
10920         store instructions when converting a vcall to a normal call.
10921
10922         * mini.c (sigprof_signal_handler): Call mono_find_jit_info instead of
10923         mono_arch_find_jit_info.
10924
10925 2008-08-13  Zoltan Varga  <vargaz@gmail.com>
10926
10927         * method-to-ir.c (check_inline_called_method_name_limit): Optimize this to
10928         avoid calling mono_method_full_name () for every method even if the
10929         env var is not set.
10930         (check_inline_caller_method_name_limit): Ditto.
10931
10932 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
10933
10934         * driver.c (main_thread_handler): Allow AOT compilation of multiple 
10935         assemblies in one run.
10936
10937         * aot-compiler.c (mono_compile_assembly): Only print out a count of
10938         skipped methods if it is not 0.
10939
10940         * Makefile.am (aotcheck): AOT compile all test assemblies in one run.
10941
10942 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
10943
10944         * mini.c (mono_codegen):  Changing a preprocessor check from WIN64 to
10945           MONO_ARCH_HAVE_UNWIND_TABLE.
10946
10947         Contributed under MIT/X11 license.
10948
10949 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
10950
10951         * mini-amd64.c (mono_arch_cpu_optimizazions):  Remove peephole and branch
10952           from default optimizaton list on Winx64.
10953
10954         * mini-amd64.c (emit_tls_get):  Added Winx64 specific implementation for GetTLS.
10955
10956         * mini-amd64.c (mono_arch_emit_prolog):  Adding an offset on Winx64 to get
10957           the LMF from the MonoJitTlsData structure.
10958
10959         * mini-amd64.c (mono_arch_setup_jit_tls_data):  Added Winx64 implementation.
10960
10961         Contributed under MIT/X11 license.
10962
10963 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
10964
10965         * mini.c (sigsegv_signal_handler): Fix the build.
10966
10967         * mini-amd64.c (emit_call_body): Use image->aot_module instead of 
10968         assembly->aot_module.
10969
10970         * aot-runtime.c: Use image->aot_module instead of searching in the aot_modules
10971         hash table. This simplifies and speeds up a lot of code, and fixes support
10972         for .netmodules.
10973
10974         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes if the thread is not registered
10975         with the runtime.
10976
10977         * mini-exceptions.c: Ditto.
10978         
10979         * exceptions-*c.c (mono_arch_find_jit_info): Remove unused 'trace' and
10980         'native_offset' argument, since these are computed in the 
10981         mono_find_jit_info () function.
10982
10983         * mini-exceptions.c (mono_find_jit_info): Make this non-static, as it
10984         is used by exceptions-ppc.c.
10985
10986         * exceptions-ppc.c: Call mono_find_jit_info () instead of 
10987         mono_arch_find_jit_info ().
10988         
10989         * mini-ppc.h exceptions-ppc.c mini-mips.h mini-mips.c exceptions-mips.c
10990         mini-exceptions.c: Get rid of the CUSTOM_STACK_WALK stuff, use the
10991         generic code in mini-exceptions.c.
10992
10993 2008-08-11  Zoltan Varga  <vargaz@gmail.com>
10994
10995         * mini-ppc.c (mono_arch_flush_register_windows): Add this for ppc.
10996
10997         * aot-runtime.c (mono_aot_get_plt_info_offset): Fix a warning.
10998         
10999         * aot-runtime.c (mono_aot_get_method): Avoid doing all the loading inside
11000         the aot lock, to avoid deadlocks when mono_aot_get_class_from_name () is
11001         called while holding the loader lock. Fixes #415608.
11002         (mono_aot_get_method_from_token_inner): Ditto.
11003
11004 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
11005
11006         * exceptions-ppc.c (mono_jit_walk_stack): Use MONO_INIT_CONTEXT_FROM_CURRENT
11007         to reduce differences between this and the generic implementation in
11008         mini-exceptions.c.
11009         (ves_icall_get_frame_info): Ditto.
11010
11011         * mini-ppc.h (MONO_INIT_CONTEXT_FROM_CURRENT): Define this for ppc too.
11012
11013         * mini-exceptions.c (mono_exceptions_init): Remove an #ifdef which is no
11014         longer neccesarry.
11015
11016         * exceptions-ppc.c (arch_get_call_filter): Rename this to 
11017         mono_arch_get_call_filter () and make it non-static, for consistency with the
11018         other architectures.
11019
11020 2008-08-09  Rodrigo Kumpera  <rkumpera@novell.com>
11021
11022         * mini.c:
11023         * local-propagation.c:
11024         * mini-x86.c: Correct the name of arch defines.
11025
11026 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
11027
11028         * method-to-ir.c (mono_op_to_op_imm_noemul): Correct name of
11029         NO_EMULATE_LONG_SHIFT_OPS define.
11030
11031 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
11032
11033         * method-to-ir.c (mono_method_to_ir2): Remove some code from CEE_MONO_LDPTR
11034         now that aot-ed icall wrappers use CEE_MONO_ICALL_ADDR.
11035
11036         * aot-compiler.c aot-runtime.c: Add support for static aot compilation.
11037         MACH fixes. Merged from the 2.0 branch.
11038
11039         * method-to-ir.c (mono_method_to_ir2): Handle CEE_MONO_ICALL_ADDR.
11040
11041         * mini.c (mono_resolve_patch_target): Error out if an icall is not found.
11042         (mono_method_to_ir): Handle CEE_MONO_ICALL_ADDR.
11043
11044         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Add AOT support.
11045
11046         * method-to-ir.c mini.c driver.c aot-compiler.c: Update after
11047         mono_marshal_get_native_wrapper () signature changes.
11048
11049 2008-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
11050
11051         * jit-icalls.c (mono_fconv_ovf_u8): Work around soft-float double to long
11052         conversion bug under arm.
11053
11054 2008-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
11055
11056         * cpu-arm.md: Increase long_conv_to_ovf_i4_2 max length to 36.
11057
11058         * mini-arm.c (mono_arch_output_basic_block): Implement long to int conversion
11059         with overflow checking.
11060
11061 2008-08-05  Marek Habersack  <mhabersack@novell.com>
11062
11063         * Makefile.am (GENMDESC_PRG): when cross-compiling use full path
11064         to the genmdesc.pl file
11065
11066 2008-08-05  Zoltan Varga  <vargaz@gmail.com>
11067
11068         * ir-emit.h (EMIT_NEW_ARGSTORE): Fix the usage of param_types and
11069         arg_array in the soft-float versions of the LOAD/STORE macros.
11070
11071         * method-to-ir.c (mono_method_to_ir2): Fix a warning in the arm switch
11072         implementation.
11073
11074         * ir-emit.h (NEW_VARLOADA): Handle SOFT_FLOAT correctly.
11075
11076 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
11077
11078         * mini-ia64.c (add_valuetype): Only reserve half parameter slot for each member of
11079         a float HFA. Fixes #413621.
11080
11081 2008-08-02  Gert Driesen  <drieseng@users.sourceforge.net>
11082
11083         * mini-x86.c (mono_arg_get_argument_info): Rename last occurrence of
11084         frame_size to args_size. Fixes build.
11085
11086 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
11087
11088         * mini-x86.c (mono_arch_get_argument_info): Rename frame_size to args_size,
11089         and don't align it to MONO_ARCH_FRAME_ALIGNMENT.
11090
11091         * mini-x86.h: Change MONO_ARCH_FRAME_ALIGNMENT to 8 so doubles stored on
11092         the stack are not unaligned. Fixes #413247.
11093         
11094 Fri Aug 1 18:46:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
11095
11096         * mini.c: update jitted methods performance counters.
11097
11098 Fri Aug 1 16:30:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
11099
11100         * mini-exceptions.c: increase the exceptions thrown performance
11101         counter in mono_handle_exception ().
11102
11103 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
11104
11105         * aot-runtime.c: Use MonoImage's as keys in the aot_modules hash so the aot
11106         can work with netmodules.
11107
11108 2008-07-28  Geoff Norton  <gnorton@novell.com>
11109
11110         * mini-x86.h: Correct the frame alignment on OSX.  Fixes the jit 
11111         regression tests.
11112
11113 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
11114
11115         * mini-x86.c (mono_arch_emit_call): Emi the osx stack alignment at the
11116         correct place.
11117
11118 2008-07-28  Bill Holmes  <billholmes54@gmail.com>
11119
11120         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
11121           The float param registers and other param registers must be the 
11122           same index on Windows x64.
11123
11124         * mini-amd64.c (mono_arch_allocate_vars) : Implementing the 
11125           ArgValuetypeAddrInIReg argument case.  Setting the argument
11126           op to OP_VTARG_ADDR (OP_REGOFFSET)).
11127
11128         * mini-amd64.c (mono_arch_call_opcode) : Winx64 fix.  Use the size
11129           variable computed above as the copy length for arguments of storage
11130           type ArgValuetypeAddrInIReg.
11131
11132         * mini-amd64.c (mono_arch_emit_call) :  Implementing the 
11133           ArgValuetypeAddrInIReg argument case.  This case will rely on
11134           mono_arch_emit_outarg_vt to emit the correct code later in the process.
11135
11136         * mini-amd64.c (mono_arch_emit_call) :  On Winx64 there always needs to be
11137           a 32 byte stack allocation for all calls.  We will omit the adjustment for
11138           jump and tail call instructoins as they do not follow the typical call behavior.
11139
11140         * mini-amd64.c (mono_arch_emit_outarg_vt) :  Implementing the case for
11141           ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
11142           local variable and pass the local variable by reference to the called method.
11143
11144         * mini-amd64.c (mono_arch_emit_prolog, emit_load_volatile_arguments) :
11145           Implementing the ArgValuetypeAddrInIReg argument case.  When the address
11146           of a struct is passed in a register it must be saved with the other
11147           volatile argument on the stack.
11148
11149         * mini-amd64.c (mono_arch_emit_prolog) : Winx64 fix.  When omitting the
11150           frame pointer the stack adjustment value must be saved to the unwind 
11151           info structure.
11152
11153         Contributed under MIT/X11 license.
11154
11155 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
11156
11157         * inssel-x86.brg (stmt): Add missing OP_X86_OUTARG_ALIGN_STACK rule
11158         which got lost in the merge.
11159
11160 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
11161
11162         * method-to-ir.c: Make the helper_sig variables extern to fix the ppc
11163         build.
11164
11165         * mini-amd64.c (emit_call_body): Add a no_patch case missed earlier.
11166         
11167         * mini-amd64.c (emit_call_body): Avoid aligning the call instruction on
11168         icalls, since they won't be patched.
11169
11170         * exceptions-amd64.c (mono_arch_get_restore_context_full): Use a slightly
11171         different code sequence when running under valgrind to prevent some valgrind
11172         errors.
11173
11174         * iltests.il.in: Add new regression test.
11175
11176         * method-to-ir.c (mono_method_to_ir2): Fix handling of inlined methods which
11177         end with a throw.
11178
11179         * method-to-ir.c (mono_method_to_ir2): Use get_vreg_to_inst () instead of
11180         accessing cfg->vreg_to_inst directly to prevent a crash in LDFLD.
11181
11182         * iltests.il.in: Add new test.
11183
11184         * aot-compiler.c: Fix some warnings.
11185
11186         * decompose.c (mono_decompose_long_opts): Implement OP_ICONV_TO_OVF_I8_UN.
11187         Fixes #412494.
11188
11189 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
11190
11191         * driver.c (mono_main): Fix the --gc=none build. Fixes #412482.
11192         (mini_usage_jitdeveloper): Add a missing --wapi option.
11193
11194 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
11195
11196         * mini-codegen.c: Simplify the is_fp macros.
11197         (free_up_ireg): Remove, use free_up_reg instead.
11198         (free_up_reg): Fix the fp case.
11199
11200 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
11201
11202         * cpu-arm.md (loadr8_membase): Increase the length of this as this is not
11203         lowered earlier.
11204
11205         * exceptions-x86.c: Merge some changes which seemed to have got lost
11206         in the linear-ir merge.
11207
11208         * liveness.c: Disable the liveness2 pass on 32 bit platforms.
11209
11210         * method-to-ir.c (mono_handle_global_vregs): Make the component vregs of a
11211         long vreg volatile even if the variable was already created.
11212
11213         * liveness.c (update_liveness2): Avoid eliminating dead definitions of
11214         volatile variables.
11215
11216 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
11217
11218         * cpu-x86.md (fcall_membase): Increase the size of the fcall opcodes.
11219
11220         * mini.c (mono_jit_compile_method_inner): Add support for 
11221         MONO_EXCEPTION_BAD_IMAGE.
11222
11223         * method-to-ir.c (mono_method_to_ir2): Avoid a crash if 
11224         mini_method_get_context () returns NULL. Fixes #356531.
11225
11226         * mini.c (mono_method_to_ir): Ditto.
11227         
11228         * method-to-ir.c (mono_method_to_ir2): Create a variable if needed when
11229         accessing a field of a valuetype in LDFLD/STFLD. Fixes #412399.
11230
11231 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
11232
11233         * method-to-ir.c (mono_method_to_ir2): Initialize an uninitialized variable
11234         in the LDFTN implementation.
11235
11236 2008-07-25  Mark Probst  <mark.probst@gmail.com>
11237
11238         * mini-trampolines.c (mono_magic_trampoline): When sharing generic
11239         code, patch calls to icalls, too, even if they're not in the
11240         shared generic code hash.  Fixes #411962.
11241
11242 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
11243
11244         * cpu-x86.md: Increase the length of the fcall opcodes.
11245
11246         * mini-x86.c (emit_move_return_value): Avoid some precision issues for
11247         calls returning floats.
11248
11249         * method-to-ir.c (mono_method_to_ir2): Remove the generic sharing restrictions
11250         on NEWARR.
11251         
11252         * method-to-ir.c (mono_method_to_ir2): Merge some LDFTN gsharing changes
11253         missed earlier.
11254
11255         * method-to-ir.c (handle_delegate_ctor): Avoid putting dynamic methods
11256         into the domain->method_code_hash.
11257
11258         * aot-compiler.c: Fix win32 build.
11259
11260         * method-to-ir.c (EMIT_GET_RGCTX): Call EMIT_NEW_LDARG in emit_get_rgctx ().
11261         
11262         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_specific in the
11263         gshared NEWARR implementation.
11264
11265         * cpu-sparc.md: Remove duplicate localloc_imm opcode.
11266
11267         * ir-emit.h (NEW_ARGLOAD): Use cfg->args and cfg->arg_types so this macro
11268         can be used outside of method_to_ir.
11269
11270         * mini.h (MonoCompile): Add arg_types field.
11271
11272         * method-to-ir.c (inline_method): Save/Restore cfg->args and cfg->arg_types.
11273         
11274         * method-to-ir.c (mono_method_to_ir2): Set cfg->args and cfg->arg_types to
11275         the values of the local arg_array and param_types array.
11276
11277 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
11278
11279         * method-to-ir.c (mono_method_to_ir2): Allocate a GOT var for NEWOBJ, since
11280         got accesses might only get generated later when NEWOBJ is decomposed.
11281         
11282         * method-to-ir.c (handle_delegate_ctor): Add an optimization to avoid
11283         looking up the native code of the target method when a delegate is called
11284         for the first time.
11285
11286         * mini-trampolines.c (mono_delegate_trampoline): Add the other half of the
11287         optimization.
11288
11289         * debug-debugger.c (MONO_DEBUGGER__debugger_info): Fix a warning.
11290
11291         * aot-runtime.c aot-compiler.c: Add a new option 'no-dlsym' which makes
11292         AOT work on platforms without a working dlsym implementation.
11293
11294         * mini.h: Bump AOT image format version.
11295         
11296 2008-07-24  Mark Probst  <mark.probst@gmail.com>
11297
11298         * mini-exceptions.c: Free a MonoType with
11299         mono_metadata_free_type() instead of g_free().
11300
11301         * aot-runtime.c: Free a MonoType.
11302
11303 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
11304
11305         * method-to-ir.c (mono_method_to_ir2): Add a comment for the box+brtrue
11306         optimization.
11307
11308         * mini-codegen.c (mono_local_regalloc): Remove the remaining items from the
11309         fp stack on x86.
11310
11311 2008-07-23  Massimiliano Mantione  <massi@ximian.com>
11312         * mini.c (sigprof_signal_handler): call the new "runtime initialized"
11313         profiler hook.
11314
11315 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
11316
11317         * method-to-ir.c (mono_method_to_ir2): Set the stack type properly for
11318         NEWOBJ calls on valuetypes.
11319
11320         * iltests.il.in: Add new test.
11321
11322         * mini-x86.c (mono_arch_emit_call): Use mini_type_stack_size ().
11323
11324 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
11325
11326         * mini-exceptions.c: Fix some warnings. Remove one ia64 special case as it
11327         is no longer needed.
11328
11329         * mini-ia64.c (mono_arch_emit_prolog): In native-to-managed wrappers, widen
11330         non register sized integer arguments.
11331         (mono_arch_call_opcode): Add support for ArgInFloatRegR4.
11332         (mono_arch_emit_outarg_vt): Pass a more reasonable alignment to 
11333         emit_memcpy2 ().
11334
11335         * method-to-ir.c (mono_method_to_ir2): Handle the ret_var_is_local case in
11336         CEE_MONO_RETOBJ.
11337         
11338         * method-to-ir.c (ADD_WIDEN_OP): New macro to insert a widening op when
11339         two a binop with different sized arguments is emitted.
11340
11341         * mini.c (mono_bblock_insert_after_ins): Properly link up with the next
11342         instruction in the ins==NULL case.
11343
11344 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
11345
11346         * mini-ops.h: Add OP_X86_OUTARG_ALIGN_STACK.
11347
11348         * mini-x86.c: Fix osx build.
11349
11350         * mini-amd64.c (mono_arch_output_basic_block): Handle varargs in the CALL_REG
11351         opcodes as well.
11352
11353         * method-to-ir.c (mono_spill_global_vars): Avoid fusing a load+store into the
11354         instruction for non int sized variables.
11355
11356         * method-to-ir.c (mono_method_to_ir2): Fix an assert in the LDFLD
11357         implementation.
11358
11359 2008-07-23  Robert Jordan  <robertj@gmx.net>
11360
11361         * method-to-ir.c: Fix MSVC build.
11362
11363 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
11364
11365         * method-to-ir.c (mono_method_to_ir2): When calling native code which returns
11366         a non int sized type, widen it to an int since newer versions of gcc seem to
11367         generate code which needs this.
11368
11369         * ssa2.c abcremoval2.c: Fix warnings.
11370
11371         * *: Merge the Linear IR branch.
11372
11373         The original branch is at trunk/branches/vargaz/mini-linear-il, and
11374         the ChangeLog file there describes all the changes done over the years. 
11375         Further documentation can be found at www.mono-project.com/Linear_IL.
11376
11377 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
11378
11379         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
11380           The float param registers and other param registers must be the 
11381           same index on Windows x64.
11382
11383         Contributed under MIT/X11 license.
11384
11385 2008-07-21  Rodrigo Kumpera  <rkumpera@novell.com>
11386
11387         * mini.c: Make the previous fix GC safe.
11388
11389 2008-07-21  Raja R Harinath  <harinath@hurrynot.org>
11390
11391         * Makefile.am (version.h): Allow a trailing '/' in the repository URL.
11392
11393 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
11394
11395         * mini-amd64.c (get_call_info): Correcting the case for MONO_TYPE_TYPEDBYREF
11396           on Winx64.  This type will not be passed on the stack (ArgOnStack), but 
11397           ArgValuetypeAddrInIReg instead.
11398
11399         Contributed under MIT/X11 license.
11400
11401 2008-07-21  Zoltan Varga  <vargaz@gmail.com>
11402
11403         * mini-codegen.c (get_register_spilling): Fix a warning.
11404
11405 2008-07-17  Rodrigo Kumpera  <rkumpera@novell.com>
11406
11407         * mini.c: Use mono_runtime_class_init_full to avoid leaking memory
11408         for types which the initialization fails. Raises the provided exception
11409         at the right stop after cleanup.
11410
11411 2008-07-16  Zoltan Varga  <vargaz@gmail.com>
11412
11413         * aot-compiler.c: Free most of the memory allocated during compilation.
11414
11415         * mini.c (mini_parse_debug_options): Fix a leak.
11416         
11417         * mini.c (mini_method_compile): Don't add the method to the jit info tables
11418         during aot compilation.
11419
11420 2008-07-14  Zoltan Varga  <vargaz@gmail.com>
11421
11422         * mini.c (mono_method_to_ir): Disable aot for code using CCASTCLASS on x86 as 
11423         it has too much register pressure.
11424
11425 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
11426
11427         * inssel.brg (CEE_CASTCLASS): Remove some dead code.
11428
11429 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
11430
11431         * mini-x86.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
11432         on x86.
11433
11434         * mini-amd64.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
11435         on amd64 similar to the way it is done on arm.
11436
11437         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
11438
11439         * aot-runtime.c (load_aot_module): Rename 'info' to 'amodule' for 
11440         consistency, normalize error messages, avoid loading aot-only modules in
11441         normal mode.
11442
11443         * driver.c (mono_main): Rename --aot-only command line option to --full-aot
11444         for consistency.
11445
11446         * aot-compiler.c aot-runtime.c tramp-arm.c: Implement aot-only support.
11447
11448 2008-07-11  Martin Baulig  <martin@ximian.com>
11449
11450         * debug-debugger.h
11451         (MonoDebuggerInfo): Add `interruption_request'.
11452
11453 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
11454
11455         * aot-compiler.c (emit_plt): Remove some dead code.
11456
11457         * exceptions-arm.c (mono_arch_get_call_filter_full): Initialize ji.
11458
11459         * aot-runtime.c (mono_aot_get_plt_info_offset): New helper function to
11460         return the plt info offset belonging to a given plt entry.
11461
11462         * mini-trampolines.c (mono_aot_plt_trampoline): Use 
11463         mono_aot_get_plt_info_offset.
11464         
11465         * aot-runtime.c aot-compiler.c tramp-arm.c: Change the arm plt code to be
11466         similar to the amd64 code by makeing jumps through a separate jump table 
11467         instead of embedding the jump addresses into the code.
11468
11469 2008-07-11  Zoltan Varga  <vargaz@gmail.com>
11470
11471         * mini.c (mono_method_to_ir): Disable aot for calling ldtoken in a generic
11472         method.
11473
11474 2008-07-10  Martin Baulig  <martin@ximian.com>
11475
11476         * mini.c (mini_method_compile): Disable generics sharing when
11477         running in the debugger.
11478
11479 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
11480
11481         * mini.c (mono_method_to_ir): Create the got var in CEE_REFANYVAL.
11482
11483         * inssel.brg (CEE_CASTCLASS): Avoid reusing temporary registers to prevent
11484         the local register allocator from running out of registers on x86 when 
11485         using aot.
11486
11487 2008-07-10  Bill Holmes  <billholmes54@gmail.com>
11488
11489         * inssel-long.brg For OP_LCONV_TO_OVF_I4 an int cast is needed when 
11490         expressing IntMin for the VS Compiler.  See Compiler Warning (level 2) 
11491         C4146.
11492
11493         Contributed under MIT/X11 license.
11494
11495 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
11496
11497         * aot-compiler.c: Get rid of whitespace in the generated assembly file to
11498         speed up the assembler.
11499
11500 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
11501
11502         * mini-arm.h tramp-arm.c exceptions-arm.c aot-compiler.c: Beginnings of aot-only
11503         support.
11504
11505         * mini.c: Move the soft float handling macros a bit earlier, add 
11506         NEW_TEMPSTORE_SOFT_FLOAT macro, fix warnings, add soft-float support in one
11507         place.
11508
11509         * mini.h: Add prototype for mono_arch_fixup_jinfo.
11510
11511         * mini.c (mini_init): In aot-only mode, set the root domain code manager to
11512         read-only to help catch code allocation requests.
11513         
11514         * mini.c inssel.brg aot-compiler.c: Make the use of IMT runtime configurable,
11515         and turn it off when using --aot-only or when compiling with --aot=full.
11516
11517         * mini.c (mono_resolve_patch_target): In aot-only mode, allocate the
11518         jump table for switches from the normal domain mempool, not the code
11519         manager.
11520
11521         * mini-trampolines.c (get_unbox_trampoline): New function to return an
11522         unbox trampoline which handles aot-only mode too.
11523
11524         * aot-runtime.c (mono_aot_get_unbox_trampoline): New function to lookup
11525         an AOTed unbox trampoline.
11526
11527         * aot-compiler.c (emit_trampolines): Emit unbox trampolines.
11528
11529 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
11530
11531         * wapihandles.c: Fixing MSVC builds.  Include statement changed from <> to
11532         ""
11533
11534         Contributed under MIT/X11 license.
11535
11536 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
11537
11538         * mini.c (mono_codegen):  Allocate space at the end of the code block and store
11539           the unwind information for the method at the end of the allocated block.
11540           
11541         * mini-amd64.h: Added declarations for the unwind routines and adding field to 
11542           MonoCompileArch to hold the unwind info for SEH on Winx64
11543         
11544         * mini-amd64.c (mono_arch_emit_prolog): Calls to the unwind routines added to store
11545           frame pointer info for the method being compiled.
11546           
11547         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception): Added a stack adjustment before
11548           the call to mono_exception_from_token.
11549           
11550         * exceptions-amd64.c: Added mono_arch_unwindinfo* implementations.  This code is responsible
11551           storing the method prolog information in a format that the Winx64 SEH can understand.  This
11552           information is stored a the end of the method block because it is all 32-bit offset based.
11553
11554         Contributed under MIT/X11 license.
11555
11556 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
11557
11558         * mini.h: Remove duplicate definitions of the mini_wapi_ functions.
11559
11560         * wapihandles.c: Fix warnings.
11561
11562         * aot-runtime.c (load_aot_module): Add a missing error message in aot-only
11563         mode.
11564
11565         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Avoid calling 
11566         mono_jit_compile_method in aot-only mode since that calls the type 
11567         initializer.
11568         
11569         * mini-trampolines.c (mono_create_delegate_trampoline): Avoid calling
11570         get_delegate_invoke_impl in aot-only mode.
11571
11572         * mini.c (mono_global_codeman_reserve): Reenable the aot-only check.
11573
11574 2008-07-08  Zoltan Varga  <vargaz@gmail.com>
11575
11576         * trace.c (mono_trace_enter_method): Fix printing of Type instances.
11577
11578         * aot-compiler.c (compile_method): Disable the check for GSHARED since it
11579         is on by default.
11580
11581         * inssel-long.brg (reg): Add a rule for LCALL_REG (OP_I8CONST).
11582
11583         * tramp-amd64.c (mono_arch_nullify_plt_entry): Read the nullified class
11584         init trampoline from the AOT file as well.
11585
11586         * mini-amd64.c (mono_arch_register_lowlevel_calls): Register
11587         mono_amd64_throw_exception as a jit icall since it is needed by the aot-only
11588         code.
11589
11590         * mini.c (mini_init): Move the call to mono_exceptions_init () after 
11591         mono_init.
11592
11593         * exceptions-amd64.c: Add _full variants for the remaining exception code
11594         creation functions as well, allow emission of relocatable code, remove
11595         caching since that is now done by the caller.
11596
11597         * mini-exceptions.c: Add _full variants for the remaining exception code
11598         creation functions as well, add aot-only support.
11599
11600         * aot-compiler.c (compile_method): Allow calls to methods of constructed types
11601         if we can determine a proper token for them.
11602         (add_wrappers): Add a few more wrappers.
11603         (emit_method_code): Remove some dead code.
11604         (emit_trampolines): Emit exception code too.
11605
11606         * mini.c (mono_method_to_ir): Call mono_array_new_2 if possible.
11607
11608         * jit-icalls.c (mono_array_new_2): New jit icall, specialized version of
11609         mono_array_new_va which avoids varargs.
11610
11611         * mini-exceptions.c (mono_exceptions_init): Fix the ppc build.
11612
11613         * mini-trampolines.c: Call mono_create_specific_trampoline () instead of
11614         mono_arch_create_specific_trampoline () in all places.
11615
11616         * aot-compiler.c aot-runtime.c: Refactor the trampoline emitting/loading code
11617         a bit so it can be used for other things as well.
11618         
11619         * mini-exceptions.c (mono_exceptions_init): Initialize throw_exception_by_name
11620         on demand as well.
11621
11622         * exceptions-amd64.c: Rename the caching from the exception code creation
11623         functions, it is done by the caller instead.
11624         
11625         * exceptions-amd64.c: Change the signature of the exception code creation 
11626         functions to allow the creation of relocatable code later.
11627
11628         * mini-exceptions.c: Add a set of functions to query the various 
11629         runtime-generated exception functions.
11630
11631         * mini.c mini-exceptions.c: Use the newly added functions instead of the
11632         mono_arch_.. () functions.
11633         
11634 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
11635
11636         * mini-trampolines.c (mono_aot_get_trampoline_code): Removed, no longer used.
11637
11638         * aot-runtime.c aot-compiler.c: AOT the generic trampolines in aot-only mode.
11639
11640         * mini.c (mini_get_imt_trampoline): Call mono_create_specific_trampoline ().
11641         (mini_get_vtable_trampoline): Ditto.
11642
11643         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Create relocatable
11644         code in the AOT case by returning the code size and a list of relocations to
11645         the caller.
11646
11647         * mini-trampolines.c (mono_create_specific_trampoline): New helper function.
11648
11649 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
11650
11651         * mini-amd64.c:  On Winx64 the calling convention always requires the caller to 
11652           clean the stack.
11653
11654         Contributed under MIT/X11 license.
11655
11656 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
11657
11658         * aot-compiler.c (emit_exception_debug_info): Serialize the debug info first
11659         so the buffer size can be computed correctly. Fixes #404735.
11660
11661         * debug-mini.c (mono_debug_serialize_debug_info): Lookup the debug info
11662         normally as cfg->debug_info is already freed.
11663
11664 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
11665
11666         * mini-amd64.c: For calls returning vtypes in registers, don't store
11667         the return address on the stack, instead allocate a separate local for
11668         it. Fixes #404729.
11669
11670 2008-07-05  Mark Probst  <mark.probst@gmail.com>
11671
11672         * mini-trampolines.c, mini.h: Add an argument to
11673         mono_create_jit_trampoline_in_domain() for turning off the adding
11674         of the sync wrapper.
11675
11676         * mini.c: Use the JIT trampoline without sync instead of
11677         ldftn_nosync in static RGCTX invoke wrappers so that the call can
11678         be patched.
11679
11680 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11681
11682         * driver.c: Turn on GSHARED optimization by default.
11683
11684 2008-07-04  Zoltan Varga  <vargaz@gmail.com>
11685
11686         * mini-trampolines.c mini.c mini.h tramp-<ARCH>.c: Rename MONO_TRAMPOLINE_GENERIC
11687         to MONO_TRAMPOLINE_JIT since it better reflects what it does.
11688
11689         * mini-trampolines.c (mono_get_aot_trampoline_code): New internal function to
11690         create a variant of the generic trampoline code callable from AOTed trampolines.
11691
11692         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add support for generic
11693         trampoline code callable from AOTed trampolines.
11694
11695         * aot-compiler.c aot-runtime.c: Add support for AOTing trampolines.
11696
11697 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11698
11699         * inssel.brg, mini-ops.h: New opcode for doing CHECK_THIS in a
11700         pass-through manner.
11701
11702         * mini.c: Generic method sharing.  Pass MRGCTX to generic methods
11703         and don't fail sharing for them anymore.
11704
11705         * mini-exceptions.c: Handle exceptions in shared generic methods.
11706
11707         * generic-sharing.c: When checking the context of a generic
11708         method, also check its class's context.  Don't treat wrappers as
11709         sharable.
11710
11711         * mini-trampolines.c: Some code factored out to
11712         metadata/generic-sharing.c.  Handle the MRGCTX case.
11713
11714         * jit-icalls.c, jit-icalls.h: ldvirtfn icall for generic sharing -
11715         we must deal with the method being of another instantiation of the
11716         class.  Add static rgctx invoke wrappers to generic methods.
11717
11718 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11719
11720         * mini.c: Provide all jit infos of generic shared methods with a
11721         generic jit info.
11722
11723         * mini-exceptions.c: Handle the new situation that a generic info
11724         might be available, but not info about the this/vtable/mrgctx
11725         variable.
11726
11727 2008-07-03  Mark Probst  <mark.probst@gmail.com>
11728
11729         * mini.c: Don't accept ldftn and ldvirtftn with uninstantiated
11730         generic methods.
11731
11732 2008-07-03  Zoltan Varga  <vargaz@gmail.com>
11733
11734         * dominators.c (check_dominance_frontier): Fix a warning.
11735
11736         * mini.h: Add some missing prototypes.
11737
11738         * ssa.c local-propagation.c debug-debuger.c: Fix warnings.
11739
11740         * driver.c (mono_jit_init_version): Correct the comments since the first
11741         argument should be the name of the root domain, not a filename.
11742
11743         * aot-runtime.c (make_writable): Error out if this is called while running
11744         with --aot-only.
11745         (load_aot_module): Ditto.
11746
11747         * aot-compiler.c: Really fix the computation of method indexes.
11748
11749         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Remove the previous 
11750         optimizations as this is no longer called frequently.
11751
11752         * mini-trampolines.c (mono_create_delegate_trampoline): Precompute the invoke
11753         method and the invoke impl code and pass it to the delegate trampoline instead of
11754         just the delegate class.
11755
11756 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
11757
11758         * aot-compiler.c: Fixup the computation of method indexes.
11759         (add_wrappers): Create the base methods of the runtime invoke wrappers using
11760         the method builder infrastructure.
11761
11762         * aot-runtime.c (decode_exception_debug_info): Don't crash if the method
11763         has no header.
11764
11765         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): In aot-only
11766         mode, load the method right away instead of creating a trampoline.
11767
11768         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Eliminate locking.
11769
11770         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Eliminate locking, speed up
11771         some checks a bit.
11772
11773 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
11774
11775         * aot-runtime.c (decode_patch_info): Don't create trampolines in aot_only mode.
11776         (mono_aot_load_method): Use method_index instead of method->token.
11777
11778         * mini.c (mono_jit_compile_method_inner): Move the aot_only check down, so it
11779         can handle icalls etc. properly.
11780
11781         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
11782
11783         * aot-compiler.c aot-runtime.c: Allow AOTing many wrapper types.
11784
11785         * mini.c (mono_resolve_patch_target): Handle JIT_ICALL_ADDR.
11786         (mono_codegen): Convert calls made by JIT icall wrappers to the icalls into
11787         JIT_ICALL_ADDR patch type.
11788
11789         * patch-info.h: Add JIT_ICALL_ADDR patch type.
11790
11791         * mini.c (mono_method_to_ir): Allow AOTing methods which access the interruption
11792         request flag.
11793         (mono_resolve_patch_target): Handle INTERRUPTION_REQUEST_FLAG.
11794
11795         * patch-info.h: Add INTERRUPTION_REQUEST_FLAG.
11796
11797 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
11798
11799         * mini.c: Use domain->jit_code_hash_lock for controlling access to
11800         domain->jit_code_hash.
11801
11802 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
11803
11804         * mini.c (mini_parse_debug_options): Add 'dont-free-domains' option.
11805
11806 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
11807
11808         * mini-trampolines.c (mono_delegate_trampoline): Don't pass a gsctx to
11809         get_this_arg_from_call, let it compute it when needed.
11810
11811         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'code' argument, compute
11812         gsctx from code only when needed.
11813
11814         * mini-trampolines.c (get_generic_context): Rename this to 
11815         mono_get_generic_context_from_code (), and move it to generic-sharing.c, where
11816         it can be called by the arch backends.
11817
11818         * mini-exceptions.c (mono_print_thread_dump): Allow the argument to be NULL.
11819
11820 2008-06-26  Zoltan Varga  <vargaz@gmail.com>
11821
11822         * driver.c (mono_main): Add experimental --aot-only command line option.
11823
11824         * mini.c: Error out when creating trampolines or JIT compiling if --aot-only is
11825         set.
11826
11827 2008-06-26  Kornel Pal  <kornelpal@gmail.com>
11828
11829         * driver.c (DllMain): Remove mono_module_handle.
11830
11831         Contributed under MIT/X11 license.
11832
11833 2008-06-25  Zoltan Varga  <vargaz@gmail.com>
11834
11835         * aot-compiler.c: Add not-yet-usable 'full' option. Add some infrastructure code
11836         for emitting methods which are not in the source assembly. Detect and report
11837         failure of assembling+linking.
11838         
11839         * aot-compiler.c (emit_klass_info): Call mono_class_setup_vtable ().
11840
11841         * aot-compiler.c: Move the contents of the has_glot_slots array to MonoCompile.
11842
11843 2008-06-24  Rodrigo Kumpera  <rkumpera@novell.com>
11844
11845         * mini.c: Check if stats is enabled so we don't allocate memory when not needed.
11846
11847 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
11848
11849         * mini.h: Remove some obsolete prototypes.
11850
11851         * mini.c: Avoid storing MonoMethod pointers in the JIT stats, store their string format instead.
11852
11853 2008-06-24  Mark Probst  <mark.probst@gmail.com>
11854
11855         * mini.c (get_object_generic_inst): Variable-sized arrays are not
11856         supported by Visual Studio, so use alloca().
11857
11858 2008-06-23  Zoltan Varga  <vargaz@gmail.com>
11859
11860         * mini-ia64.c (add_valuetype): Increase *gr too when passing a HFA to be in sync with the ABi.
11861         Fixes #402585.
11862
11863 2008-06-23  Mark Probst  <mark.probst@gmail.com>
11864
11865         * mini.c: Fail sharing of a generic method if it contains an open
11866         catch clause (because we don't pass MRGCTXs yet).
11867
11868 2008-06-23  Mark Probst  <mark.probst@gmail.com>
11869
11870         * mini.c: When compiling a method with generic sharing, insert the
11871         method instantiated with an all-Object generic context into the
11872         jit info table, instead of the context of the first instantiation
11873         of the method we happen to compile.
11874
11875 2008-06-18  Martin Baulig  <martin@ximian.com>
11876
11877         * debug-debugger.h (MonoDebuggerInfo): Replaced `version' with
11878         `major_version' and `minor_version'.
11879
11880 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11881
11882         * generic-sharing.c, mini.c, mini.h, aot-runtime.c:
11883         mono_method_is_generic_sharable_impl() takes an additional
11884         argument specifying whether to treat type variables as reference
11885         types.
11886
11887 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11888
11889         * mini.h: Removed obsolete prototypes.
11890
11891 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11892
11893         * mini.c: Don't fail generic sharing for initobj and sizeof - we
11894         already handle them.
11895
11896 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11897
11898         * mini.h, mini-trampolines.c, tramp-alpha.c, tramp-amd64.c,
11899         tramp-arm.c, tramp-hppa.c, tramp-ia64.c, tramp-mips.c,
11900         tramp-ppc.c, tramp-s390.c, tramp-s390x.c, tramp-sparc.c,
11901         tramp-x86.c: Added a MonoGenericContext* argument to
11902         mono_arch_get_unbox_trampoline() so that it can call other
11903         functions which require it.
11904
11905 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11906
11907         * mini.h, mini-trampolines.c, mini-amd64.c, mini-x86.c,
11908         mini-alpha.c, mini-arm.c, mini-ia64.c, mini-ppc.c:
11909         mono_arch_get_this_arg_from_call() takes a
11910         MonoGenericSharingContext* as well.
11911
11912 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11913
11914         * mini.c: Factor out code for emitting unbox into emit_unbox() and
11915         implement generic sharing of unbox.
11916
11917 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11918
11919         * mini.c: Don't compute the vtable to determine whether a field is
11920         special static, because it might not work for open types.
11921
11922 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11923
11924         * mini.c: Removed the unused token_type and token_source arguments
11925         from get_runtime_generic_context_ptr().
11926
11927 2008-06-17  Marek Habersack  <mhabersack@novell.com>
11928
11929         * mini.c (ADD_BINOP): fix the build
11930
11931 2008-06-16  Zoltan Varga  <vargaz@gmail.com>
11932
11933         * mini.c (ADD_BINOP): When operating on a native int and an int32, insert
11934         a widening op.
11935
11936 2008-06-16  Mark Probst  <mark.probst@gmail.com>
11937
11938         * mini.h: Removed class relations enum that's not used anymore.
11939
11940 2008-06-16  Mark Probst  <mark.probst@gmail.com>
11941
11942         * tramp-x86.c, tramp-amd64.c: Slot access code for MRGCTXs.
11943
11944         * mini-trampolines.c: Distinguish between RGCTXs and MRGCTXs in
11945         the lazy fetch trampoline access code.
11946
11947 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
11948
11949         * mini-codegen.c (mono_local_regalloc): Add some micro optimizations.
11950
11951 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
11952
11953         * mini.c: Fix some soft-float bugs. Fixes #378735 and #398348.
11954
11955         * mini.h (MONO_INST_LIST_ENTRY): Fix warnings on arm.
11956
11957         * mini.c (mono_method_to_ir): Check call signature for NEWOBJ as well.
11958
11959 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
11960
11961         * mini-x86.c inssel-x86.brg cpu-x86.md: Implement unsigned min/max
11962         intrinsics.
11963
11964         * mini-ops.h: Add MIN/MAX_UN opcodes.
11965
11966         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Implement unsigned min/max
11967         intrinsics.
11968
11969         * basic-math.cs: Add more min/max tests.
11970
11971         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
11972
11973 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11974
11975         * mini.c: Small fix in the prologue of emit_castclass.
11976
11977 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
11978
11979         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
11980
11981         * mini.c (mini_get_inst_for_method): Remove the Min/Max intrinsics, they
11982         do not work even for unsigned types. Fixes #400014.
11983
11984         * basic-math.cs: Add regression tests for unsigned Min/Max.
11985
11986 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11987
11988         * mini.c: Added additional context_used argument to several
11989         functions, which will be needed for sharing generic methods.  Use
11990         GET_RGCTX macro wherever appropriate.  Declare only one
11991         context_used in mono_method_to_ir().
11992
11993 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11994
11995         * mini.c, generic-sharing.c: Removed generic class relations.
11996
11997         * mini.c, tramp-amd64.c, tramp-x86.c: Additional arguments to
11998         functions due to MRGCTX changes.
11999
12000 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12001
12002         * inssel.brg, inssel-long.brg, inssel-long32.brg, mini-ops.h,
12003         graph.c, local-propagation.c, aliasing.c: New opcodes for calls
12004         with calculated IMT.
12005
12006         * mini.c: Generic sharing of calls via generic interfaces.
12007
12008         * jit-icalls.c, jit-icalls.h: Helper function for compiling a
12009         generic method with non-constant MonoGenericContext*.  Instead,
12010         the context is taken out of the method itself.
12011
12012 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12013
12014         * mini.c: Generic sharing of ldvirtftn.
12015
12016 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12017
12018         * mini.c: Generic sharing of ldftn.
12019
12020 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12021
12022         * mini.c: Do pass VTable/RGCTX argument to static generic methods.
12023
12024 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12025
12026         * mini.c: Generic sharing of the special case of ldtoken followed
12027         by a call to GetTypeFromHandle.
12028
12029 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12030
12031         * mini.c: Generic sharing of box for nullable types.
12032
12033 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
12034
12035         * mini-s390x.c (add_stackParm): Fix computation of offsets when arguments
12036         are passed on the stack. Fixes #324807.
12037
12038 2008-06-12  Bill Holmes  <billholmes54@gmail.com>
12039
12040         * mini-amd64.c:add_valuetype: Adding Winx64 code to fill the ArgInfo
12041         for the ArgValuetypeAddrInIReg case.
12042
12043         * mini-amd64.c:mono_arch_allocate_vars:  Adding a case for 
12044         ArgValuetypeAddrInIReg to avoid asserts.  Code needs to be added here.
12045
12046         * mini-amd64.c: mono_arch_call_opcode:  Adding Winx64 code for an ArgInfo of 
12047         type ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
12048         local variable and pass the local variable by reference to the called method.
12049           
12050         * mini-amd64.c: mono_arch_emit_prolog:  Adjust the stack for calls to
12051         mono_jit_thread_attach and mono_get_lmf_addr for Winx64.
12052
12053         Contributed under MIT/X11 license.
12054
12055 2008-06-10  Rodrigo Kumpera  <rkumpera@novell.com>
12056
12057         * debug-mini.c (mono_debug_free_method_jit_info): Moved to metadata/mono-debug.c.
12058
12059         * debug-mini.c (mono_debug_print_vars): Release memory after printing
12060         everything.
12061
12062 2008-06-10  Martin Baulig  <martin@ximian.com>
12063
12064         * debug-mini.c
12065         (mono_debug_close_method): Check whether `cfg->epilogue_begin != NULL'.
12066
12067 2008-06-09  Kornel Pal  <kornelpal@gmail.com>
12068
12069         * main.c: Add and set argv [argc] to NULL to match C specification that fixes
12070         possible error when no arguments are passed.
12071
12072         Contributed under MIT/X11 license.
12073
12074 2008-06-09  Rodrigo Kumpera  <rkumpera@novell.com>
12075
12076         * mini-exceptions.c (ves_icall_get_trace): Skip source locations
12077         where the file name is NULL.
12078
12079 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
12080
12081         * mini.c: Fix s390 build.
12082
12083 2008-06-08  Zoltan Varga  <vargaz@gmail.com>
12084
12085         * trace.c (mono_trace_parse_options): Fix warnings.
12086
12087         * mini-amd64.c: Revert most of the last patch for now as it breaks the build.
12088
12089 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
12090
12091         * mini.c (remove_block_if_useless): Avoid printing the method name.
12092         
12093         * mini.c: Remove needless setting of ins->cil_code which is now done by 
12094         MONO_INST_NEW.
12095
12096         * mini-amd64.c: Add some code to avoid saving callee saved registers in the
12097         LMF. Not yet used.
12098
12099         * tramp-amd64.c (mono_arch_patch_callsite): Tell valgrind to discard the
12100         translated code after it has been patched.
12101
12102 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
12103
12104         * mini-amd64.c (emit_call_body): Align the call displacement to 4 bytes to
12105         avoid problems during code patching on SMP systems.
12106         (emit_call): Avoid adding a patch info which is already added by 
12107         emit_call_body.
12108         (mono_arch_emit_exceptions): Ditto.
12109
12110 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
12111
12112         * tramp-*.c (mono_arch_get_unbox_trampoline): No need to check for ret->byref,
12113         MONO_TYPE_ISSTRUCT already checks for it.
12114
12115 2008-06-05  Bill Holmes  <billholmes54@gmail.com>
12116
12117         * mini-amd64.c:merge_argument_class_from_type: When marshaling 
12118           structs with floats on Winx64 the float registers are not used.  
12119           The integer registers are always used..
12120         * mini-amd64.c:add_valuetype:  When marshaling structs on Winx64 
12121           only one register will be used and only if the size of the struct 
12122           is 1,2,4, or 8 bytes.
12123
12124         * tramp-amd64.c :  Adjusting size used for mono_global_codeman_reserve
12125           to work for Winx64.
12126
12127         Contributed under MIT/X11 license.
12128
12129 2008-06-05  Martin Baulig  <martin@ximian.com>
12130
12131         * debug-debugger.c (debugger_lookup_class): Also call
12132         mono_class_setup_methods() here; we're only called from RTI.
12133
12134 2008-06-05  Andreas Farber  <andreas.faerber@web.de>
12135
12136         * mini.c (mini_init): Add DTrace probes ves-init-{begin,end}.
12137         (mini_method_compile) Add DTrace probes method-compile-{begin,end}.
12138         * Makefile.am (libmono_la_LIBADD,libmono_static_la_LIBADD,mono_LDADD):
12139         Post-process object files and add dtrace-generated object, if necessary.
12140
12141         Contributed under MIT/X11 license.
12142
12143 2008-06-04  Mark Probst  <mark.probst@gmail.com>
12144
12145         * inssel.brg, mini-ops.h: Added opcode for unboxcast with computed
12146         element class.
12147
12148         * mini.c: Generic sharing for unbox.any and castclass.
12149
12150 2008-06-04  Mark Probst  <mark.probst@gmail.com>
12151
12152         * mini.c: Ignore tailcall prefix in shared generic code and when
12153         doing calls which require a vtable/rgctx argument.
12154
12155 2008-06-04  Mark Probst  <mark.probst@gmail.com>
12156
12157         * mini.c: Don't free the JIT info.
12158
12159         * driver.c: Changes in the JIT info table testing code.
12160
12161 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
12162
12163         * tramp-arm.c (mono_arch_create_trampoline_code): Check for thread 
12164         interruption. Fix some warnings.
12165
12166         * tramp-*.c (mono_arch_create_trampoline_code): Call the _force_ variant of
12167         interruption_checkpoint.
12168
12169 Tue Jun 3 13:07:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
12170
12171         * jit.h, mini.h, trace.c, driver.c: introduce an API to enable tracing
12172         from embedding applications.
12173
12174 2008-06-02  William Holmes  <billholmes54@gmail.com>
12175
12176         * mini-amd64.c :  Correcting some of the issues for Winx64 dealing with
12177           reserving 32 bytes on the stack when making calls. 
12178
12179         Contributed under MIT/X11 license.
12180
12181 2008-06-01  Zoltan Varga  <vargaz@gmail.com>
12182
12183         * mini-arm.c (mono_arch_output_basic_block): Merge some small fixes from
12184         the linear IL branch.
12185
12186         * driver.c: Print out more information for --version on arm.
12187
12188 2008-05-30  Zoltan Varga  <vargaz@gmail.com>
12189
12190         * mini-amd64.c (mono_arch_emit_prolog): Increase max_offset when processing
12191         bb_exit instead, since out of line bblocks might not actually be emitted
12192         out-of-line.
12193         
12194         * mini-amd64.c (mono_arch_emit_prolog): Increase bb->max_offset by the
12195         maximum epilog size for out of line bblocks if tracing is enabled.
12196
12197         * iltests.il.in: Merge tests/long-shift.regalloc.il into this file.
12198
12199 2008-05-28  Rodrigo Kumpera  <rkumpera@novell.com>
12200
12201         * arrays.cs: Regression tests for allocating arrays with negative sizes.
12202
12203 2008-05-28  Zoltan Varga  <vargaz@gmail.com>
12204
12205         * mini-x86.h mini-x86.c inssel-x86.brg cpu-x86.md: Add support for
12206         CAS instrinsics. Optimize the implementation of the ATOMIC_EXCHANGE 
12207         opcodes.
12208
12209 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
12210
12211         * mini.c (mini_get_inst_for_method): Add support for CAS instrinsics when
12212         the 'value' to store is a constant.
12213
12214         * mini-ops.h: Add OP_ATOMIC_CAS_IMM opcodes.
12215
12216         * mini-amd64.c (mono_arch_output_basic_block): Optimize the the implementation
12217         of ATOMIC_EXCHANGE opcodes, add support for the CAS opcodes.
12218
12219 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
12220
12221         * mini.c generic-sharing.c jit-icalls.c aot-compiler.c: Use accessor functions
12222         for accessing method->generic_container.
12223
12224 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
12225
12226         * mini.c (mono_method_check_inlining): Avoid creating vtables if possible.
12227         
12228         * mini.c (SIG_HANDLER_SIGNATURE): Fix sparc build too.
12229
12230         * mini.c (SIG_HANDLER_SIGNATURE): Fix IA64 build.
12231
12232         * mini.c (mono_jit_compile_method_inner): Avoid a crash if mono_class_vtable ()
12233         fails.
12234
12235 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
12236
12237         * driver.c (mono_main): Set mono_setup_vtable_in_class_init to FALSE.
12238
12239         * mini.c: Handle the case when mono_class_vtable () fails.
12240
12241 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
12242         * mini.c (sigprof_signal_handler): Support call chains (backtrace) in
12243         the stat profiler.
12244
12245 2008-05-22  Mark Probst  <mark.probst@gmail.com>
12246
12247         * mini.c, jit-icalls.c, jit-icalls.h: Make generic sharing work
12248         together with domain sharing.
12249
12250 2008-05-22  Mark Probst  <mark.probst@gmail.com>
12251
12252         * mini.c: Treat callvirts to final methods like non-virtual calls
12253         when doing generic sharing, i.e. look them up in the runtime
12254         generic context.
12255
12256 2008-05-22  Mark Probst  <mark.probst@gmail.com>
12257
12258         * inssel.brg, mini-ops.h: Added opcodes for mkrefany and refanyval
12259         with computed types (for generic sharing).
12260
12261         * mini.c: Generic sharing for mkrefany and refanyval.
12262
12263 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
12264
12265         * inssel.brg (mini_emit_virtual_call): Avoid constructing a generic vtable if
12266         possible.
12267
12268         * mini-trampolines.c (mono_magic_trampoline): Avoid calling setup_methods () in
12269         the generic sharing code.
12270         
12271         * mini-trampolines.c (mono_magic_trampoline): Call mono_class_setup_methods ()
12272         when needed.
12273
12274 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
12275
12276         * mini.h: Remove the declaration of mono_aot_init_vtable ().
12277
12278 2008-05-21  C.J. Adams-collier <cjac@colliertech.org>
12279
12280         * driver.c: updated copyright date
12281
12282 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
12283
12284         * aot-runtime.c mini.c: Remove the AOT init_vtable stuff as it is no longer
12285         needed.
12286
12287 2008-05-19  Martin Baulig  <martin@ximian.com>
12288
12289         * debug-debugger.h (MonoDebuggerInfo): Add `using_mono_debugger'
12290         pointing to the new `_mono_debug_using_mono_debugger' variable.
12291
12292         * driver.c
12293         (mono_main): Check mono_debug_using_mono_debugger() rather than
12294         the `MONO_INSIDE_MDB' environment variable to check whether we're
12295         inside the debugger.
12296
12297 2008-05-19  Zoltan Varga  <vargaz@gmail.com>
12298
12299         * mini.c (mini_method_compile): Use cfg->args [0] for accessing the this
12300         argument.
12301
12302 2008-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
12303
12304         * declsec.h: Move MONO_SECMAN_FLAG to metadata/metadata-internals.h.
12305
12306         * mini.c: Added mini_assembly_can_skip_verification. This
12307         function checks if the assembly requested to skip verification. 
12308         Fixes part of #387274.
12309
12310 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
12311
12312         * mini.c (mini_get_method): Disable the check for open generic classes when
12313         using generic sharing.
12314
12315         * generics.cs: Add a test for #387034.
12316
12317         * mini.c (mini_get_method): Check whenever the method class is an open generic
12318         type, and return NULL in that case, causing a verification error. Fixes
12319         #384123.
12320
12321 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
12322
12323         * driver.c (mono_main): Revert r102623. The right
12324         thing to do is to enable the verifier under verifiable
12325         unless a --security flag was passed.
12326
12327         We need this non-trivial behavior for --verify-all otherwise
12328         mcs-compileall won't be able to use it. As it needs everything to
12329         be verified under validil.
12330
12331 2008-05-06  Martin Baulig  <martin@ximian.com>
12332
12333         Fix #383749.
12334
12335         * debug-mini.c (mono_debugger_thread_created): Add proper locking.
12336         (mono_debugger_thread_cleanup): Likewise.
12337         (mono_debugger_extended_notification): Likewise.
12338
12339 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
12340
12341         * mini.c (mono_method_to_ir): Verify visibility of call related opcodes
12342         against both inflated and non-inflated methods. We need to check against the
12343         generic definition for cases where the instantiated method is not visible.
12344         We need to check against the inflated types for cases where the instantiation
12345         changes any super type. This fixes #382986.
12346
12347         Note that this doesn't need to be applied to other parts of mono_method_to_ir
12348         that check for visibiliy as generic params only appears as the type subject
12349         of tokens on call opcodes. Field manipulation and ldftn must always
12350         target an exact type.
12351
12352 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
12353
12354         * driver.c (mono_main): Using --verify-all enables the verifier under validil mode
12355         if no related --security flag is passed.
12356
12357 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
12358
12359         * mini-arch.h: Prepare support for ppc64.
12360
12361         Contributed under MIT/X11 license.
12362
12363 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
12364
12365         * aot-runtime.c: Prepare support for ppc64.
12366
12367         Contributed under MIT/X11 license.
12368
12369 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
12370
12371         * mini-ops.h: Prepare support for ppc64.
12372
12373         Contributed under MIT/X11 license.
12374
12375 2008-05-04  Andreas Farber  <andreas.faerber@web.de>
12376
12377         * helpers.c: Add support for OSX/ppc64 and Linux/ppc64 (dis)assemblers.
12378
12379         Contributed under MIT/X11 license.
12380
12381 2008-05-03  Zoltan Varga  <vargaz@gmail.com>
12382
12383         * aot-runtime.c (load_aot_module): Avoid trying to load aot code for dynamic
12384         assemblies, since aot_name is not a full path, causing us to load MS.NET 
12385         assemblies on windows.
12386
12387 ?2008-04-28  Kornel Pal  <kornelpal@gmail.com>
12388
12389         * mini.c (mono_jit_compile_method_inner): Use g_warning instead of g_error
12390         for unsupported METHOD_IMPL_ATTRIBUTE_NATIVE.
12391         * main.c: Use UTF-8 encoded command line instead of Windows default code
12392         page on Windows to support Unicode.
12393         * driver.c (DllMain): New function for mixed-mode assembly support.
12394         * Makefile.am: Add -Wl,--kill-at to libmono_la_LDFLAGS on Windows to
12395         export __stdcall functions without decoration.
12396
12397         Contributed under MIT/X11 license.
12398
12399 2008-04-28  Mark Probst  <mark.probst@gmail.com>
12400
12401         * tramp-amd64.c, mini-amd64.c: Preserve R11 in the trampoline by
12402         saving it very early.
12403
12404 2008-04-28  Mark Probst  <mark.probst@gmail.com>
12405
12406         * mini.h, mini.c: Lots of code for accessing the old RGCTX
12407         deleted.  The only way to access the new RGCTX is via the
12408         trampline.
12409
12410         * mini.c, mini-amd64, mini-x86.c, mini-exceptions.c: Pass the
12411         vtable instead of the RGCTX to static methods.
12412
12413         * mini-tramplines.c, tramp-amd64.c, tramp-x86.c: Trampoline for
12414         accessing the new RGCTX.
12415
12416         * generic-sharing.c: There is no separation between self, type
12417         arguments and other types in the RGCTX anymore.
12418
12419 2008-04-25  Jonathan Chambers <joncham@gmail.com>
12420
12421         * mini-amd64.c (add_general): Remove previous stack adjustment.
12422         (mono_arch_call_opcode): Remove OP_OUTARG_MEMBASE and instead simply
12423         adjust stack pointer after pushing args. Adjust ARGS_OFFSET to account
12424         for 32 bytes of stack space reserved for all calls.
12425         
12426         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Remove.
12427         (OP_AMD64_OUTARG_ALIGN_STACK): Take argument to specify size of stack 
12428         adjustment.
12429         
12430         Code contributed under MIT/X11 license.
12431
12432 2008-04-23  Rodrigo Kumpera  <rkumpera@novell.com>
12433
12434         * mini.c (mini_method_verify): Only verify non-inflated methods, check
12435         against the root definition, peeling out method and type instantiations.
12436         Cache verify success results, code that fails verification is still
12437         checked multiple times.
12438
12439 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
12440
12441         * mini.c (mono_method_to_ir): Avoid inserting write barriers for stores of null.
12442
12443 2008-04-23  Jonathan Chambers <joncham@gmail.com>
12444
12445         * mini-amd64.c (add_general): Always increment stack on Win64.
12446         (mono_arch_call_opcode): Use OP_OUTARG_MEMBASE instead of OP_OUTARG
12447         on Win64.
12448         
12449         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Add OP_OUTARG_MEMBASE for 
12450         stack based argument handling on Win64.
12451         
12452         Code contributed under MIT/X11 license.
12453
12454 2008-04-23  Raja R Harinath  <harinath@hurrynot.org>
12455
12456         * Makefile.am (version.h): Add support for git-svn.
12457
12458 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
12459
12460         * mini-exceptions.c (mono_handle_native_sigsegv): Rework the gdb calling code
12461         so instead of calling g_spawn_command_line_sync, we do everything by hand, 
12462         avoiding allocations and libc functions which might deadlock.
12463         
12464         * mini-exceptions.c (mono_handle_native_sigsegv): Avoid calling gdb if the
12465         'no-gdb-backtrace' option is set.
12466
12467         * mini.c (mini_parse_debug_options): Parse 'no-gdb-backtrace' option.
12468
12469         * mini.h (MonoDebugOptions): Add 'no_gdb_backtrace' option.
12470
12471 2008-04-21  Martin Baulig  <martin@ximian.com>
12472
12473         * debug-debugger.h (MonoDebuggerInfo): Removed `attach', `detach'
12474         and `get_lmf_addr'; `notification_address' is no longer a pointer.
12475
12476 2008-04-21  Martin Baulig  <martin@ximian.com>
12477
12478         * debug-debugger.h (MonoDebuggerInfo): Added `thread_vtable_ptr',
12479         `thread_vtable', `event_handler_ptr' and `event_handler'.
12480
12481 2008-04-21  Martin Baulig  <martin@ximian.com>
12482
12483         * debug-debugger.h (MonoDebuggerInfo): Added `init_code_buffer';
12484         allows delayed initialization of the `executable_code_buffer' when
12485         attaching.
12486
12487 2008-04-21  Martin Baulig  <martin@ximian.com>
12488
12489         * mini.h (mono_debugger_create_notification_function): Removed.
12490         * tramp-*.c (mono_debugger_create_notification_function): Removed.
12491
12492         * mdb-debug-info64.s
12493         (MONO_DEBUGGER__notification_function): Added this in the .text section.
12494
12495         * mdb-debug-info32.s
12496         (MONO_DEBUGGER__notification_function): Added this in the .text section.
12497
12498         * Makefile.am: Fix the mdb-debug-info*.s logic; the debugger
12499         currently only works on x86 and x86_64, so don't create it on ppc.
12500
12501 2008-04-21  Martin Baulig  <martin@ximian.com>
12502
12503         * mini.h (MonoDebugOptions): Added `mdb_optimizations'.
12504
12505         * mini.c
12506         (mini_method_compile): In the fp elimination check, check
12507         `debug_options.mdb_optimizations' in addition to
12508         mono_debug_using_mono_debugger().       
12509
12510         * driver.c (mono_main): Added `--debug=mdb-optimizations' option to
12511         disable some JIT optimizations which are only disabled when
12512         running inside the debugger.
12513         Added `--help-debug' option to describe the debugging options.
12514         (parse_debug_options): New static function to parse the `--debug'
12515         options, so we can easily add more stuff in future.
12516
12517 2008-04-20  Zoltan Varga  <vargaz@gmail.com>
12518
12519         * mini.c (set_exception_type_from_invalid_il): Avoid reading invalid memory when
12520         the method has no body.
12521
12522 2008-04-19  Jonathan Chambers <joncham@gmail.com>
12523
12524         * mini-amd64.c (cpuid): Implement with MSVC intrinsic as inline
12525         assembly is not allowed in MSVC 64-bit compiler. 
12526         (mono_arch_cpu_init): Don't set floating point precision on MSVC build
12527         as we get floating point exceptions everywhere.
12528         
12529         * exceptions-amd64.c (get_throw_trampoline): Push empty args on stack to
12530         correctly align arguments for call to throw_exception.
12531         (prepare_for_guard_pages): Cast to guint64 instead of unsigned long.
12532         
12533         Code contributed under MIT/X11 license.
12534
12535 2008-04-19  Zoltan Varga  <vargaz@gmail.com>
12536
12537         * mini-amd64.c (amd64_patch): Make the check for (%rip) addressing more strict.
12538
12539 2008-04-17  Zoltan Varga  <vargaz@gmail.com>
12540
12541         * inssel.brg (OP_SWITCH): Use (gint64) instead of (long) to cast a large constant.
12542
12543         * mini-amd64.c (NEW_INS): Set cil_code.
12544
12545         * mini.c (mini_method_compile): Move the disabling of fp elimination to here
12546         from mini-amd64.c so all debugger related logic is in one place.
12547
12548         * mini.c: Set cfg->ip to NULL after passes which set it so instructions created
12549         later won't have a random ip assigned to them.
12550
12551 2008-04-16  Zoltan Varga  <vargaz@gmail.com>
12552
12553         * mini-trampolines.c (mono_create_jump_trampoline): Add an assert to check that
12554         the arch specific function initializes code_size.
12555         (mono_create_delegate_trampoline): Ditto.
12556
12557         * mini-mips.h mini-mips.c inssel-mips.brg inssel-long32-mips.brg cpu-mips.md
12558         tramp-mips.c: Resurrect MIPS port and also fix the issues on little-endian
12559         platforms.
12560
12561         * liveness.c (mono_analyze_liveness): Disable the initlocals optimization if 
12562         running under the debugger.
12563
12564         * linear-scan.c (mono_linear_scan): Avoid sharing registers if running under the
12565         debugger.
12566
12567         * mini.c (mini_method_compile): Set a few flags in cfg if running under the
12568         debugger. Also move the disabling of optimizations here from driver.c.
12569         (mono_allocate_stack_slots_full): Avoid sharing stack slots if running under the
12570         debugger.
12571
12572         * mini.h (MonoCompile): Add a few new flags.
12573
12574 2008-04-15  Zoltan Varga  <vargaz@gmail.com>
12575
12576         * mini.c (mono_method_to_ir): Set cfg->ip before processing an IL instruction
12577         so the cil_code field of created MonoInst's is properly set.
12578         (mini_select_instructions): Ditto.
12579
12580         * mini.h (MONO_INST_NEW): Initialize the cil_code field using cfg->ip.
12581         (MONO_INST_NEW_CALL): Ditto.
12582
12583         * mini.c inssel.brg inssel-x86.brg inssel-amd64.brg: Use MONO_INST_NEW ()
12584         in many places so the ins->cil_code field is properly initialized.
12585
12586         * mini.c (mono_bblock_add_inst): Call MONO_ADD_INS () so the logic is in one
12587         place.
12588
12589 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
12590
12591         * mini.c (mini_method_compile): Print a different message when compiling a 
12592         shared method.
12593         
12594         * mini.c (GENERIC_SHARING_FAILURE): Print a failure message when verbose_level
12595         > 1.
12596
12597 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
12598
12599         * mini-amd64.c (mono_arch_output_basic_block): Implement OP_ABS directly using
12600         SSE2 instructions.
12601
12602         * basic-math.cs: Fix warnings. Add a test for Math.Abs ().
12603         
12604 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
12605
12606         * mini.c (handle_stack_args): Make this return void since its return value was
12607         never used. Also set cfg->unverifiable for invalid IL instead of calling
12608         G_BREAKPOINT ().
12609
12610 2008-04-10  Mark Probst  <mark.probst@gmail.com>
12611
12612         * mini.c: Make sure "this" is live in catch clauses with type
12613         variables in shared generic code.
12614
12615 2008-04-08  Mark Probst  <mark.probst@gmail.com>
12616
12617         * mini.c: Replaced uses of MONO_TYPE_IS_REFERENCE with calls to
12618         generic_class_is_reference_type() to ensure the proper behaviour
12619         when sharing generic code and the type in question is a type
12620         argument.
12621
12622 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
12623
12624         * mini-exceptions.c: Applied patch from Mark Spruiell (mes@zeroc.com). Fix
12625         race conditions when printing thread dumps. Fixes #377738.
12626
12627 2008-04-08  Massimiliano Mantione  <massi@ximian.com>
12628         
12629         aliasing.c (update_aliasing_information_on_inst): Fixed a bug which
12630         shows up when both MonoInst arguments can cause aliasig.
12631         There is likely no way in the current JIT to trigger this problem, but
12632         it showed up in the development of generics sharing, when in a new
12633         opcode both args of an OP_GROUP can be aliases (addresses of a local).
12634         When the generics sharing code will be committed, its tests will be
12635         valid also for this bug.
12636
12637 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
12638
12639         * aot-runtime.c (decode_patch_info): Always transform PATCH_INFO_WRAPPER to
12640         PATCH_INFO_METHOD.
12641
12642         * mini.c (mono_resolve_patch_target): Fix a crash in the AOT case if method is
12643         NULL.
12644
12645 2008-04-07  Zoltan Varga  <vargaz@gmail.com>
12646
12647         * mini-exceptions.c (mono_handle_exception_internal): When --debug=casts is used,
12648         use a more detailed exception message for InvalidCastException.
12649
12650         * mini.h (MonoJitTlsData): Add 'class_cast_from' and 'class_cast_to' fields.
12651
12652         * driver.c (mono_main): Add --debug=casts option to turn on better 
12653         InvalidCastException message details.
12654
12655         * mini.c (mini_get_debug_options): New helper function to return the address of
12656         the debug_options variable.
12657
12658         * mini.c (mono_get_jit_tls_intrinsic): New helper function to create a load of
12659         the jit_tls TLS variable.
12660
12661         * mini.c (mono_jit_tls): New TLS variable.
12662
12663         * inssel.brg: Save the details of a cast to a TLS variable when the --debug=casts
12664         option is used.
12665
12666 2008-04-07  Rodrigo Kumpera  <rkumpera@novell.com>
12667
12668         * mini.h: Removed verifer related stuff. This code was moved to verify.c
12669
12670         * mini.c: Removed verifer related stuff, code moved to verify.c.
12671
12672         * driver.c: Using code from verify.c instead of mini.c.
12673
12674 2008-04-05  Zoltan Varga  <vargaz@gmail.com>
12675
12676         * mini.c (check_for_method_verify): Remove the mscorlib comment since it is no
12677         longer valid.
12678
12679 2008-04-04  Rodrigo Kumpera  <rkumpera@novell.com>
12680
12681         * mini.c (check_for_method_verify): Enabling verification of
12682         corlib if mono_verify_all is set. Bugs in the verifier preventing that
12683         have been fixed.
12684
12685 2008-04-04  Zoltan Varga  <vargaz@gmail.com>
12686
12687         * exceptions-amd64.c (throw_exception): Unify the win32/non-win32 cases, save
12688         caller saved registers as well.
12689         
12690         * exceptions-amd64.c (mono_arch_get_restore_context): Restore most caller
12691         saved registers as well.
12692
12693 2008-03-30  Zoltan Varga  <vargaz@gmail.com>
12694
12695         * mini-x86.c cpu-x86.md inssel-x86.brg: Add min/max intrinsics.
12696
12697         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of the non-SSE2 floating point
12698         code.
12699
12700 2008-03-27  Zoltan Varga  <vargaz@gmail.com>
12701
12702         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'gsctx' argument and pass it
12703         to get_call_info.
12704         (get_call_info): Take a gsctx argument instead of 'cfg'.
12705
12706 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
12707
12708         * mini.c (check_for_method_verify): Avoid verifying mscorlib methods even if
12709         mono_verify_all is set.
12710
12711         * driver.c (compile_all_methods_thread_main): Don't exit at the first error.
12712
12713         * mini.c mini.h: Remove the unused and incomplete stack merge verification code.
12714
12715 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
12716
12717         * driver.c (compile_all_methods_thread_main): Error out if compilation fails with
12718         an exception.
12719
12720         * driver.c mini.c mini.h: Add a --verify-all development option to test the
12721         verifier and the code generated by the compiler.
12722
12723 2008-03-25  Mark Probst  <mark.probst@gmail.com>
12724
12725         * mini.c: Generic sharing of the non-nullable case of the box
12726         instruction.
12727
12728 2008-03-24  Zoltan Varga  <vargaz@gmail.com>
12729
12730         * inssel.brg: Fix the build.
12731
12732         * iltests.il.in: Add a test for lconv.ovf.u8.un.
12733
12734 2008-03-24  Rodrigo Kumpera  <rkumpera@novell.com>
12735
12736         * mini.c (mono_method_to_ir): Implement readonly for ldelema and
12737         Array:Address. Fixes #372410.
12738
12739         * iltests.il.in: New tests for readonly prefix.
12740
12741 2008-03-23  Zoltan Varga  <vargaz@gmail.com>
12742
12743         * mini.h mini.c mini-trampolines.c: Move trampoline related code to 
12744         mini-trampolines.c.
12745
12746         * mini.h mini.c mini-exceptions.c: Move mini_init_exceptions () to 
12747         mini-exceptions.c.
12748
12749         * mini-amd64.c mini-s390.c (mono_arch_lowering_pass): Use mono_decompose_op_imm ().
12750         
12751         * mini.c (mono_decompose_op_imm): New helper function.
12752
12753         * mini-s390x.c (calculate_sizes): Rename this to get_call_info for consistency
12754         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
12755         return value.
12756
12757         * mini-s390x.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
12758         mono_arch_output_basic_block. Fix warnings.
12759
12760         * inssel-s390x.brg: Remove the unneccesary OP_LMUL_IMM rule to fix the s390x build
12761         for now.
12762
12763 2008-03-22  Zoltan Varga  <vargaz@gmail.com>
12764
12765         * mini-exceptions.c (ves_icall_get_frame_info): Remove the ia64/s390 workarounds
12766         since the extra frame is now detected automatically inside the loop.
12767
12768         * mini-s390.c (mono_arch_peephole_pass_2): Remove the arch independent peephole 
12769         opts which are now in mono_peephole_ins ().
12770         
12771         * mini-s390.c (mono_arch_output_basic_block): Fix OP_FCALL_MEMBASE.
12772
12773         * mini-exceptions.c (ves_icall_get_frame_info): Skip native-to-managed wrapper
12774         frames and skip duplicate managed-to-native frames. Fixes #367665.
12775
12776         * mini-x86.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
12777         opts which are now in mono_peephole_ins ().
12778         (mono_arch_peephole_pass_2): Ditto.
12779
12780         * mini-codegen.c (mono_peephole_ins): Fix a problem on 32 bit platforms.
12781
12782         * mini-codegen.c (mono_peephole_ins): New helper function containing the
12783         arch independent peephole optimizations.
12784
12785         * mini-amd64.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
12786         opts which are now in mono_peephole_ins ().
12787
12788         * mini-amd64.c (mono_arch_peephole_pass_2): Ditto.
12789         
12790         * mini-s390.c (mono_arch_output_basic_block): Fix build.
12791
12792         * tramp-s390.c (mono_arch_get_vcall_slot): Handle an additional instruction
12793         pattern.
12794
12795         * mini-s390.c (mono_arch_output_basic_block): Handle big offsets in the
12796         CALL_MEMBASE opcodes. Fix setting of the destination in the OP_LCONV_TO_OVF_I
12797         opcode. 
12798
12799 2008-03-21  Zoltan Varga  <vargaz@gmail.com>
12800
12801         * mini-s390.c (calculate_sizes): Rename this to get_call_info for consistency
12802         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
12803         return value.
12804
12805         * mini-s390.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
12806         mono_arch_output_basic_block. Fix warnings.
12807
12808 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
12809
12810         * inssel-long32.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
12811         conv.ovf.u.un.
12812
12813 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
12814
12815         * inssel-long.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
12816         conv.ovf.u.un.
12817
12818         * iltests.il: Add new tests.
12819
12820 2008-03-20  Kornel Pal  <kornelpal@gmail.com>
12821
12822         * mini.c: Removed Windows version macros.
12823
12824 2008-03-20  Mark Probst  <mark.probst@gmail.com>
12825
12826         * generic-sharing.c: Put reflection types in the extensible part
12827         of the runtime generic context.
12828
12829         * mini.c: Generic sharing of the GetTypeHandle special case of the
12830         ldtoken instruction.
12831
12832 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
12833
12834         * mini.h (MONO_BB_FOR_EACH_INS_SAFE): New helper macro.
12835
12836         * mini-<ARCH>.c: Use the new macro instead in the peephole/lowering passes.
12837         
12838         * mini.h (MONO_DEL_INS): Rename to MONO_DELETE_INS and Add a 'bb' argument for 
12839         consistency with the other version on the linear IR branch.
12840
12841         * mini-<ARCH>.c: Update callers of MONO_DEL_INS.
12842
12843         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i/conv.ovf.u.
12844
12845         * iltests.il.in: Add new tests.
12846
12847 2008-03-19  Zoltan Varga  <vargaz@gmail.com>
12848
12849         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i.un/conv.ovf.u.un.
12850
12851         * iltests.il.in: Add new tests.
12852
12853 2008-03-19  Mark Probst  <mark.probst@gmail.com>
12854
12855         * mini.c: Two variables with the same name were declared in
12856         nesting contexts and one wasn't initialized.  Fixed.
12857
12858 2008-03-19  Mark Probst  <mark.probst@gmail.com>
12859
12860         * mini.c: Generic sharing of the initobj instruction.
12861
12862 Tue Mar 18 20:18:02 CET 2008 Paolo Molaro <lupus@ximian.com>
12863
12864         * mini.c: make the test to optimize ldtoken from typeof() more
12865         precise.
12866
12867 2008-03-18  Mark Probst  <mark.probst@gmail.com>
12868
12869         * mini.c: Generic sharing of the initobj instruction for reference
12870         types.
12871
12872 Tue Mar 18 12:39:27 CET 2008 Paolo Molaro <lupus@ximian.com>
12873
12874         * mini.h, mini-amd64.c, mini-x86.c, tramp-amd64.c, tramp-x86.c: change
12875         the mono_breakpoint_clean_code() code to perform bound checks.
12876
12877 Tue Mar 18 11:50:14 CET 2008 Paolo Molaro <lupus@ximian.com>
12878
12879         * mini.h, mini-trampolines.c, tramp-*.c: change the signature of
12880         mono_arch_patch_callsite() to include the start of the managed method
12881         to be able to perform bound checks.
12882
12883 2008-03-17  Mark Probst  <mark.probst@gmail.com>
12884
12885         * mini.c: Generic sharing for the isinst instruction.
12886
12887 2008-03-17  Mark Probst  <mark.probst@gmail.com>
12888
12889         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
12890         inssel-long32-mips.brg: Added opcodes for doing indirect calls
12891         with the runtime generic context argument.
12892
12893         * mini.c: Share calls to several types of unsharable methods by
12894         putting the address of the method code in the runtime generic
12895         context and doing an indirect call.
12896
12897         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
12898         to switches.
12899
12900 2008-03-16  Mark Probst  <mark.probst@gmail.com>
12901
12902         * generic-sharing.c: Change due to a change in the runtime genric
12903         context API.
12904
12905 2008-03-15  Martin Baulig  <martin@ximian.com>
12906
12907         * tramp-x86.c
12908         (mono_arch_nullify_class_init_trampoline): Add call to
12909         mono_breakpoint_clean_code() to make things work when running
12910         inside the debugger.
12911
12912         * tramp-amd64.c
12913         (mono_arch_nullify_class_init_trampoline): Add call to
12914         mono_breakpoint_clean_code() to make things work when running
12915         inside the debugger.
12916
12917 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
12918
12919         * inssel-long.brg (reg): Fix 64 bit build.
12920
12921 2008-03-14  Mark Probst  <mark.probst@gmail.com>
12922
12923         * mini.c, mini.h: Share static generic code by passing it an
12924         implicit argument pointing to the runtime generic context.
12925
12926         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
12927         inssel-long32-mips.brg: New opcodes for calling shared static,
12928         which need to be passed the runtime generic context.
12929
12930         * mini-amd64.c, mini-x86.c: Save the runtime generic context
12931         argument on the stack in the prologue if needed.  New function for
12932         finding the runtime generic context argument from the registers
12933         saved by the trampoline.
12934
12935         * mini-amd64.h, mini-x86.h: Specify which register to use for the
12936         runtime generic context argument.
12937
12938         * tramp-amd64.c: Also restore the register used for the runtime
12939         generic context argument.
12940
12941         * mini-trampoline.c: Resolve shared static calls by consulting the
12942         runtime generic context via the new argument.
12943
12944         * generic-sharing.c: Add an argument to sharability-checking
12945         functions that specifies whether type variables should be treated
12946         as sharable type arguments.
12947
12948         * inssel-x86.brg: Removed a superfluous, buggy rule.
12949
12950         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
12951         to switches.
12952
12953 2008-03-14  Martin Baulig  <martin@ximian.com>
12954
12955         * debug-debugger.c (main_thread_handler): Call
12956         mono_runtime_run_main() without sending any notifications.
12957
12958         * debug-debugger.h (MonoDebuggerInfo): Added `get_method_signature.
12959
12960 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
12961
12962         * mini-trampolines.c (mono_magic_trampoline): Fix build on platforms without IMT.
12963
12964 2008-03-14  Mark Probst  <mark.probst@gmail.com>
12965
12966         * tramp-x86.c: Fixed register restore offsets in the trampoline
12967         code for ECX and EDX.
12968
12969 2008-03-12  Geoff Norton  <gnorton@novell.com>
12970
12971         * mini-arm.h: Add some #defines for locating sp, pc, r4 with
12972         different ucontext_t implementations.
12973         * exceptions-arm.c: Use the above defines to get exceptions working on 
12974         iPhone (based on a patch by Luke Howard lukeh@padl.com)
12975         * mini-arm.c: Implement iPhone icache support (based on a patch by
12976         Luke Howard lukeh@padl.com)
12977
12978 2008-03-12  Mark Probst  <mark.probst@gmail.com>
12979
12980         * mini.c: Enable generic sharing of calls to non-static
12981         non-interface non-generic non-value-type methods.
12982
12983         * mini-trampolines.c: Resolve calls from shared generic code.
12984
12985 2008-03-11  Zoltan Varga  <vargaz@gmail.com>
12986
12987         * Makefile.am il2tests.il iltests.il.in: Delete il2tests, merge it into iltests.
12988
12989         * tramp-amd64.c (mono_arch_create_trampoline_code): Correctly save RBP as well.
12990
12991 Mon Mar 10 11:59:34 CET 2008 Paolo Molaro <lupus@ximian.com>
12992
12993         * mini.c: some fixes for the AOT compiler.
12994
12995 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
12996
12997         * cpu-amd64.md: Add clob:1 to some float opcodes.
12998
12999 2008-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
13000
13001         * mini.h: Added MiniVerifierMode enumeration.
13002
13003         * mini.c: Added mini_verifier_set_mode to control
13004         the usage of the new verifier.
13005
13006         * mini.c (mono_method): Integrated the new verifier.
13007
13008         * driver.c: Extended --security option with validil and
13009         verifiable options to activate the new verifier.
13010
13011 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
13012
13013         * mini.c jit-icalls.h jit-icalls.c: Generalize the exception creation 
13014         optimization to ctors taking 0 or 2 arguments too.
13015
13016         * mini.c (mono_method_to_ir): Optimalize the size of the exception throwing code
13017         a bit.
13018
13019         * jit-icalls.h (mono_create_corlib_exception): New JIT icall.
13020
13021         * mini-amd64.c (mono_arch_emit_prolog): Improve the first_bb optimization a bit.
13022
13023 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
13024
13025         * mini.c (mono_method_to_ir): Apply one of the ldstr optimizations in the
13026         non-aot case as well.
13027
13028         * cpu-amd64.md: Reduce the max size of some frequently used opcodes.
13029
13030         * aot-runtime.c (decode_patch_info): Update this after the ldfld/stfld wrapper
13031         changes.
13032
13033         * aot-compiler.c (encode_patch): Ditto.
13034
13035         * mini.h (G_MININT32): Fix the definition of this.
13036
13037 2008-03-05  Zoltan Varga  <vargaz@gmail.com>
13038
13039         * mini.h: Define G_MININT32/G_MAXINT32 if using an older glib version.
13040
13041         * cfold.c: Remove definition of G_MININT32 which is now in mini.h.
13042
13043 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
13044
13045         * mini-amd64.c (mono_arch_compute_omit_fp): Don't disable fp elimination for 
13046         methods returning vtypes in registers.
13047         (mono_arch_allocate_vars): Ditto.
13048
13049         * mini-amd64.c (mono_arch_get_this_arg_reg): New arch specific helper function.
13050
13051         * tramp-amd64.c (mono_arch_get_unbox_trampoline): Use mono_arch_get_this_arg_reg ().    
13052
13053         * generics.cs: Add a test from the linear IR branch.
13054
13055         * mini-amd64.c (emit_load_volatile_arguments): Handle vtypes passed in regs too.
13056
13057         * mini.c (inline_method): Cache failed inline attempts.
13058
13059 2008-03-04  Mark Probst  <mark.probst@gmail.com>
13060
13061         * mini.c: For shared methods of generic classes put the location
13062         of "this" into the MonoGenericJitInfo.
13063
13064         * mini-x86.c, mini-amd64.c, mini.h: Added function for fetching a
13065         register out of a MonoContext by register number.  Add the generic
13066         sharing context as an argument to mono_arch_find_this_argument().
13067
13068         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
13069         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c: Added stub
13070         for new arch function.
13071
13072         * mini-exception.c: Handle open exception clauses in shared
13073         generic code.
13074
13075         * mini-trampolines.c: Supply additional argument to
13076         mono_arch_find_this_argument().
13077
13078 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
13079
13080         * Makefile.am (regtests): Run the bench.exe tests last.
13081
13082 2008-03-03  Zoltan Varga  <vargaz@gmail.com>
13083
13084         * mini-amd64.c (mono_arch_emit_prolog): Improve the first bblock optimization
13085         a bit.
13086
13087 2008-03-02  Zoltan Varga  <vargaz@gmail.com>
13088
13089         * mini.c (mono_method_to_ir): Allow callvirt on static methods for compatibility
13090         with MS.
13091
13092         * mini-amd64.c (mono_arch_emit_prolog): Fix tracing after the last change.
13093         
13094         * mini-amd64.c (mono_arch_emit_prolog): Avoid saving dead arguments.
13095
13096         * mini.c (mono_method_check_inlining): Avoid disabling inlining for methods
13097         whose class has no cctor.
13098
13099         * liveness.c (mono_analyze_liveness): Mark dead arguments with MONO_INST_IS_DEAD.
13100
13101 2008-03-01  Zoltan Varga  <vargaz@gmail.com>
13102
13103         * mini.c (mono_method_to_ir): Report calling a static method using callvirt as
13104         unverified.
13105
13106 2008-02-29  Zoltan Varga  <vargaz@gmail.com>
13107
13108         * mini-ops.h: Remove OP_SPARC_INARG_VT, add a new OP_VTARG_ADDR opcode instead
13109         to be in sync with the code on the linear IR branch.
13110
13111         * mini-sparc.c inssel-sparc.brg: Use OP_VTARG_ADDR.
13112
13113         * inssel-s390.brg (OP_SETRET (freg)): Set dreg correctly.
13114
13115 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
13116
13117         * mini-mips.c: Use cfg->vret_addr instead of cfg->ret.
13118
13119         * mini-s390x.c: Use cfg->vret_addr instead of cfg->ret.
13120
13121         * mini-s390.c: Use cfg->vret_addr instead of cfg->ret.
13122
13123         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_VARS define.
13124
13125         * mini-<ARCH>.c (mono_arch_create_vars): Define this for all architectures.
13126         
13127         * mini.c (mono_method_to_ir): Avoid invalid memory reads for methods without a
13128         body.
13129
13130 2007-11-14  Yoichi NAKAYAMA  <nakayama@pixela.co.jp>
13131
13132         * inssel-mips.brg (OP_OUTARG_MEMBASE (CEE_LDIND_R4 (base))): Add missing
13133         OP_LOADR4_MEMBASE emission.
13134
13135         * mini-codegen.c (mono_spillvar_offset_int): Remove assertion.
13136         (mono_spillvar_offset_float): Ditto.
13137
13138         * mini-mips.c (mono_arch_emit_prolog): Ditto.
13139
13140         * inssel-long32-mips.brg: Fix wrong branching, reduce redundant code
13141         emission.
13142
13143         * basic-long.cs: Add regression tests for them.
13144
13145         * mini-mips.c (add_float32_arg): Respect o32 calling convention in gr
13146         use.
13147         (mono_arch_allocate_vars): Fix representation of single-precision float
13148         argument.
13149         (mono_arch_output_basic_block): Ditto.
13150
13151         * inssel-mips.brg: Ditto, remove duplicate items.
13152
13153         * mini-mips.c (emit_load_volatile_arguments): New function to handle
13154         arguments of tail calls as on other platforms.
13155         (mono_arch_output_basic_block): Handle tail calls.
13156
13157         * inssel-mips.brg (OP_OUTARG_VT (CEE_LDOBJ (base))): Correct destination
13158         register.
13159
13160         * objects.cs (test_5_pass_static_struct): Add test for it.
13161
13162         Contributed under MIT/X11 license.
13163
13164 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
13165
13166         * Makefile.am: Use gmcs for compiling the regression tests.
13167
13168         * *.2.cs *.2.il: Rename to *.cs and *.il.
13169
13170 2008-02-24  Zoltan Varga  <vargaz@gmail.com>
13171
13172         * regalloc.h: Make the vassign array smaller.
13173
13174         * mini.c (mini_method_compile): Remove an unused field in cfg.
13175
13176         * mini-codegen.c: Add a bunch of micro optimizations.
13177
13178 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
13179
13180         * regalloc.h: Remove some unused fields.
13181
13182 2008-02-22  Zoltan Varga  <vargaz@gmail.com>
13183
13184         * mini-amd64.c (mono_arch_patch_code): Fix a warning.
13185
13186         * ssa.c (mono_ssa_remove): Avoid declaring volatile variables dead.
13187
13188 2008-02-22  Mark Probst  <mark.probst@gmail.com>
13189
13190         * mini.h: New trampoline type (RGCTX_LAZY_FETCH).
13191
13192         * mini-trampolines.c, tramp-amd64.c, tramp-x86.c: RGCTX lazy fetch
13193         trampoline: Fetch an entry from the runtime generic context.  If
13194         it's NULL, jump to the actual trampoline to fill the runtime
13195         generic context.  Otherwise, return it.
13196
13197         * mini.c: Call the lazy fetch trampoline to get entries out of the
13198         runtime generic context.
13199
13200         * tramp-ia64.c, tramp-arm.c, tramp-alpha.c, tramp-s390.c,
13201         tramp-s390x.c, tramp-ppc.c, tramp-hppa.c, tramp-mips.c,
13202         tramp-sparc.c: Stubs for the lazy fetch trampoline.
13203
13204 2008-02-21  Mark Probst  <mark.probst@gmail.com>
13205
13206         * mini.c: Fetch data out of the extensible part of the runtime
13207         generic context instead of calling a helper function.
13208
13209         * generic-sharing.c: Some functions moved into
13210         metadata/generic-sharing.c.  Helper function for fetching other
13211         types now checks and asserts against extensible rgctx (just for
13212         debugging purposes - the helper function isn't called anymore
13213         unless for debugging).
13214
13215 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
13216
13217         * mini-arm.c (mono_arch_output_basic_block): Implement proper argument passing
13218         for tail calls up to the point that the tests in iltests.exe run. Also add a
13219         dummy CKFINITE implementation.
13220         (mono_arch_emit_prolog): Avoid saving the method in the LMF since it is only
13221         needed for trampoline LMF frames.
13222
13223         * exceptions-arm.c (mono_arch_find_jit_info): Only read lmf->method for 
13224         trampoline LMF frames.
13225
13226 2008-02-21  Rodrigo Kumpera  <rkumpera@novell.com>
13227
13228         * mini.c (inline_method): clean any pending loader error when inlining fail.
13229         Otherwise loader errors in mono_method_to_ir leaks and cause spurious errors.
13230
13231 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
13232
13233         * aot-compiler.c (encode_patch): Handle ICALL_ADDR patch type.
13234
13235         * aot-runtime.c (decode_patch_info): Ditto.
13236
13237         * mini.c (mono_resolve_patch_target): Ditto.
13238         
13239         * aot-compiler.c (compile_method): Add some experimental code for AOT compiling
13240         icall wrappers.
13241
13242         * patch-info.h (PATCH_INFO): Add 'ICALL_ADDR' patch type.
13243         
13244         * mini.c (mono_method_to_ir): Convert a CEE_MONO_LDPTR opcode to an AOT constant
13245         if it references an icall address.
13246
13247 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
13248
13249         * cpu-s390x.md: Remove some more unused opcodes.
13250         
13251         * cpu-s390x.md: Remove some unused opcodes.
13252
13253         * mini-ia64.c (mono_arch_lowering_pass): Add some more opcodes. Use
13254         mono_op_imm_to_op ().
13255
13256         * mini-sparc.c (opcode_to_sparc_cond): Use the mono_opcode_to_cond () functions
13257         instead of a switch statement.
13258         
13259         * mini-sparc.c (mono_arch_allocate_vars): Allocate a stack slot for use by
13260         the int<->float conversion opcodes instead of using mono_spillvar_offset_float ().
13261
13262         * mini-codegen.c: Eliminate rassign macro which is no longer needed.
13263         
13264         * mini-codegen.c: Remove unused mono_regstate2_... functions.
13265
13266         * mini-codegen.c (mono_print_ins_index): Avoid printing an index when it is
13267         -1.
13268
13269 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
13270
13271         * driver.c (mono_main): Improve error reporting when an assembly cannot be
13272         opened. Fixes #362607.
13273
13274         * cpu-ia64.md cpu-s390x.md: Remove some unused opcodes.
13275
13276         * iltests.il.in: Add a test for static methods in interfaces.
13277
13278 2008-02-18  Zoltan Varga  <vargaz@gmail.com>
13279
13280         * genmdesc.c (build_table): Fix a crash on older glib versions.
13281
13282         * cpu-sparc.md: Remove some unused opcodes.
13283         
13284         * genmdesc.c: Error out if the .md contains CEE_ opcodes if 
13285         MONO_ARCH_ENABLE_NORMALIZE_OPCODES is defined.
13286
13287         * cpu-amd64.md: Remove some unused opcodes.
13288
13289         * mini.h mini-ops.h mini.c: Define the OP_Ccc opcodes in mini-ops.h normally
13290         like the other opcodes.
13291
13292 2008-02-17  Zoltan Varga  <vargaz@gmail.com>
13293
13294         * mini-ia64.c: Use cfg->vret_addr instead of cfg->ret.
13295
13296         * mini-arm.h mini-arm.c: Use cfg->vret_addr instead of cfg->ret.
13297
13298         * mini-sparc.c: Use cfg->vret_addr instead of cfg->ret. Name the MonoCompile
13299         variables 'cfg' instead of 'm' for consistency.
13300
13301         * mini-x86.c: Use cfg->vret_addr instead of cfg->ret.
13302
13303         * mini.h (MonoCompile): Add new 'vret_addr' field which represents the hidden
13304         argument holding the vtype return address, to avoid the ambigious use of
13305         cfg->ret for this purpose.
13306
13307         * mini.c (NEW_RETLOADA): Use vret_addr if set.
13308
13309         * mini-amd64.c: Use cfg->vret_addr instead of cfg->ret.
13310         
13311         * mini-codegen.c (mono_print_ins): Rename to mono_print_ins_index (), Add a
13312         new mono_print_ins () function which only takes one argument.
13313
13314 2008-02-15  Zoltan Varga  <vargaz@gmail.com>
13315
13316         * mini-s390.h (MONO_OUTPUT_VTR): Use cfg instead of s, avoid assignments to
13317         macro arguments.
13318
13319 2008-02-14  Zoltan Varga  <vargaz@gmail.com>
13320
13321         * mini-ops.h: Get rid of OP_SPARC_LOCALLOC_IMM.
13322
13323         * mini-sparc.c inssel-sparc.brg: Use OP_LOCALLOC_IMM instead of OP_SPARC_LOCALLOC_IMM.
13324
13325         * mini-x86.c: Sync with the version on the linear IR branch by adding new 
13326         opcodes and other small changes.
13327
13328         * mini-ops.h: Add some new opcodes from the linear IR branch.
13329
13330         * mini-ops.h: Get rid of the OP_X86_..._MEMBASE opcodes.
13331
13332         * mini-x86.c inssel-x86.brg cpu-x86.md: Get rid of the confusing _MEMBASE
13333         opcodes, use the REG_MEMBASE opcodes instead.
13334         
13335         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Get rid of the confusing _MEMBASE
13336         opcodes, use the REG_MEMBASE opcodes instead.
13337         
13338         * mini-amd64.c (mono_arch_output_basic_block): Sync with the version on the
13339         linear IR branch.
13340
13341         * mini.c (mono_op_imm_to_op): New helper function.
13342
13343         * mini-ops.h: Add some opcodes from linear IR branch.
13344
13345 2008-02-13  Zoltan Varga  <vargaz@gmail.com>
13346
13347         * mini-alpha.h mini-alpha.c tramp-alpha.c: Alpha port updates from Sergey Tikhonov 
13348         <tsv@solvo.ru>.
13349
13350 2008-02-12  Zoltan Varga  <vargaz@gmail.com>
13351
13352         * mini.c (mono_normalize_opcodes): Always convert CEE_CONV_R4/R8 to 
13353         OP_ICONV_TO_R4/R8.
13354
13355         * mini-ia64.c cpu-ia64.md: Add OP_ICONV_TO_R4/R8.
13356
13357 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
13358
13359         * aot-compiler.c (emit_method_code): Add an assert.
13360
13361         * mini-arm.h mini-arm.c exceptions-arm.c: Modify the exception throwing code and
13362         the IMT code so it is AOT friendly. Enable AOT for methods which call interface
13363         methods.
13364
13365 2008-02-08  Zoltan Varga  <vargaz@gmail.com>
13366
13367         * mini-arm.c (mono_arch_output_basic_block): Fix the ordering of arguments for 
13368         some load/store opcodes so they are consistent. 
13369         (mono_arch_emit_prolog): Simplify some code.
13370
13371         * aot-runtime.c (mono_aot_get_plt_entry): Fix a warning.
13372
13373         * objects.cs: Add tests for large argument offsets on ARM.
13374
13375         * mini-arm.c (mono_arch_emit_prolog): Fix handling of arguments with large 
13376         stack offsets. Fixes #359651.
13377
13378         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R4/R8 properly.
13379
13380         * cpu-s390x.md: Add OP_LCONV_TO_R4/R8.
13381
13382         * cpu-ia64.md mini-ia64.h mini-ia64.c: Get rid of CEE_ opcodes.
13383
13384         * mini-ops.h: Add OP_ICONV_TO_R_UN opcode.
13385
13386         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R_UN too.
13387
13388         * cpu-s390x.md cpu-s390.md mini-s390x.c mini-arm.c cpu-arm.md mini-s390.c: Get
13389         rid of CEE_CONV_R_UN.
13390
13391         * mini-s390x.c mini-s390x.h cpu-s390x.md inssel-s390x.brg: Get rid of CEE_ opcodes.
13392
13393 2008-02-07  Zoltan Varga  <vargaz@gmail.com>
13394
13395         * mini-s390.c mini-s390.h cpu-s390.md: Get rid of CEE_ opcodes.
13396
13397         * mini.c (mono_normalize_opcodes): Add some more opcodes.
13398
13399         * mini-arm.c mini-arm.h cpu-arm.md: Get rid of CEE_ opcodes.
13400
13401         * cpu-amd64.md: Remove some unused opcodes.
13402
13403         * mini-sparc.c mini-sparc.h cpu-sparc.md: Get rid of CEE_ opcodes.
13404
13405         * mini-x86.c mini-x86.h cpu-x86.md: Get rid of CEE_ opcodes.
13406
13407         * mini.c mini-<ARCH>.c: Remove mono_arch_local_regalloc (), instead make 
13408         arch specific functions for its parts. Call the peephole pass after local
13409         regalloc so the prolog can compute a more accurate max_offset.
13410         
13411         * mini.c (mono_normalize_opcodes): New mini pass to convert CEE_ opcodes to
13412         the corresponding OP_I/OP_L opcodes.
13413
13414         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of CEE_ opcodes.
13415
13416         * mini-sparc.c (mono_arch_output_basic_block): Fix the sparc build.
13417
13418 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
13419
13420         * mini-s390.c (mono_arch_get_inst_for_method): Remove the Interlocked cases
13421         as they are handled in mini.c.
13422
13423         * mini-s390x.c (mono_arch_get_inst_for_method): Ditto.
13424         
13425         * mini-<ARCH>.c (mono_arch_get_inst_for_method): Remove the MemoryBarrier
13426         case since it is handled in mini.c.
13427
13428         * cpu-sparc.md (sparc_setfreg_float): Fix the sparc build.
13429
13430         * mini-ops.h: Add new opcodes OP_CALL/OP_CALLVIRT.
13431
13432         * *.c: Use the new opcodes in the IR and back end code.
13433
13434         * mini-ops.h cpu-<ARCH>.md: Correct the name of the bgt_un opcodes.
13435
13436         * mini-amd64.c (emit_call_body): Use a far-call for calling dynamic methods.
13437
13438 2008-02-06  Mark Probst  <mark.probst@gmail.com>
13439
13440         * mini-trampolines.c (mono_generic_class_init_trampoline): Removed
13441         an assert because it has a race condition.
13442
13443 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
13444
13445         * tramp-amd64.c (mono_arch_patch_callsite): Add more diagnostics.
13446
13447         * inssel.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused CEE_RET opcode.
13448
13449         * mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused LDIND/STIND opcodes.
13450
13451         * *.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of OP_SETREG/OP_SETFREG/OP_SETREGIMM,
13452         use OP_MOVE/OP_FMOVE/OP_ICONST instead.
13453
13454 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
13455
13456         * cpu-amd64.md (move): Correct the maximum size of move.
13457
13458 2008-02-05  Mark Probst  <mark.probst@gmail.com>
13459
13460         * tramp-amd64.c, tramp-x86.c, mini-trampolines.c: Added a check in
13461         the generic class init trampoline to return quickly if the class
13462         is already inited.
13463
13464 2008-02-04  Zoltan Varga  <vargaz@gmail.com>
13465
13466         * tramp-amd64.c (mono_arch_patch_callsite): Add some diagnostics to help debug
13467         issues where an 32 bit callsite cannot be patched by a 64 bit address.
13468
13469 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
13470
13471         * generics.2.cs generics-variant-types.2.il: Merge some tests from the linear IR
13472         branch.
13473
13474 2008-01-31  Zoltan Varga  <vargaz@gmail.com>
13475
13476         * objects.cs: Add some soft-float tests.
13477
13478         * mini.c: Fix a couple more soft-float issues.
13479
13480         * helpers.c (mono_disassemble_code): Fix disassembly on ARM.
13481
13482         * mini-amd64.c (peephole_pass): Use IXOR instead of LXOR for zeroing a register to
13483         avoid a REX prefix.
13484
13485 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
13486
13487         * exceptions-x86.c (mono_arch_find_jit_info): Fix stack unwinding when an
13488         exception happens while compiling a virtual method.
13489
13490 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
13491
13492         * mini-sparc.c (mono_arch_emit_epilog): Fix folding of negative return values.
13493         
13494         * mini-sparc.c: Fix build.
13495
13496         * mini-sparc.c (get_call_info): Add support for generic sharing.
13497
13498         * mini-exceptions.c: Add a FIXME.
13499
13500 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
13501
13502         * mini-exceptions.c (mono_handle_exception_internal): Remove the old style
13503         altstack handling code.
13504
13505         * mini-s390.c (mono_arch_emit_exceptions): Really fix a warning.
13506         
13507         * mini-s390.c (mono_arch_emit_exceptions): Fix a warning.
13508
13509         * mini-s390.c: Add support for generic sharing.
13510
13511         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
13512         Fix CAS on s390.
13513         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
13514
13515         * mini-s390x.c (mono_arch_emit_exceptions): Fix a warning.
13516
13517         * mini-s390x.c: Add support for generic sharing.
13518         
13519         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
13520         Fix CAS on ia64.
13521         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
13522
13523         * mini-s390x.c: Use is_imm16 instead of is_uimm16 when checking whenever s390_aghi
13524         can be used since it takes a 16 bit signed immediate.
13525
13526         * inssel-s390x.brg: Fix OP_SETRET.
13527
13528         * mini-s390x.c (mono_arch_output_basic_block): Fix OP_BREAK.
13529
13530         * mini-codegen.c (mono_opcode_to_cond): Fix a warning.
13531
13532         * mini-s390x.c cpu-s390x.md: Implement sext.i4 properly by sign extension.
13533
13534         * mini.c (mono_create_delegate_trampoline): Don't use mono_create_ftpntr here.
13535
13536         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_addr_from_ftnptr
13537         in one place.
13538
13539         * mini-ia64.h mini-ia64.c: Add minimal support for the delegate trampoline 
13540         stuff.
13541
13542         * mini.h inssel-x86.brg inssel-amd64.brg tramp-alpha.c tramp-ia64.c: Get rid
13543         of the unused mono_arch_patch_delegate_trampoline stuff.
13544
13545 2008-01-26  Zoltan Varga  <vargaz@gmail.com>
13546
13547         * basic-long.cs: Move the fp related tests to basic-float.cs.
13548
13549         * mini-ops.h (OP_OUTARG_FREG_R4): New opcode.
13550
13551         * mini-ia64.c inssel-ia64.brg: Implement proper R4 argument passing.
13552
13553         * basic-calls.cs: Add a test for proper float argument passing.
13554
13555         * mini-ia64.h (mono_ia64_context_get_ip): Do not substract 1 from the ip
13556         if the context corresponds to an exception received through a signal.
13557
13558         * exceptions.cs: Add a test for nullref handling at the start of a try
13559         clause.
13560
13561         * mini-ia64.c (mono_arch_call_opcode): Fix ia64 argument passing.
13562
13563         * jit-icalls.c (mono_break): New JIT icall.
13564
13565         * mini-<ARCH>.c: Use mono_break instead of mono_arch_break.
13566
13567         * mini-arm.c (arm_patch): Add support for patching the blx calling sequence.
13568
13569 2008-01-25  Zoltan Varga  <vargaz@gmail.com>
13570
13571         * cpu-*.md: Get rid of unused opcodes.
13572
13573         * cpu-g4.md: Rename this to cpu-ppc.md for consistency with other archs.
13574
13575         * Makefile.am: Move mini-trampolines.c to $(common_sources) since it is now used
13576         by all platforms.
13577
13578         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_SPECIFIC_TRAMPOLINE
13579         define.
13580
13581         * mini-s390x.h tramp-s390x.c Makefile.am: Rework the s390x trampoline code to use
13582         the arch independent trampoline code in mini-trampolines.c.
13583
13584         * aot-runtime.c (mono_aot_init_vtable): Fix a warning.
13585
13586         * mini.c (get_runtime_generic_context_ptr): Fix a warning.
13587
13588         * mini-s390.h: Remove an unused define.
13589         
13590         * mini-s390.h tramp-s390.c Makefile.am: Rework the s390 trampoline code to use
13591         the arch independent trampoline code in mini-trampolines.c.
13592
13593         * mini-arm.c (mono_arch_emit_prolog): Fix build.
13594
13595 2008-01-24  Zoltan Varga  <vargaz@gmail.com>
13596
13597         * mini-sparc.c (mono_arch_output_basic_block): Remove some unecessary code.
13598
13599         * mini-s390.c (mono_arch_emit_prolog): Fix build.
13600
13601         * mini-s390x.c (mono_arch_emit_prolog): Fix build.
13602
13603         * mini-ppc.c (mono_arch_emit_prolog): Fix build.
13604
13605         * cpu-amd64.md: Use smaller sizes for int opcodes.
13606
13607         * *.c: Get rid of the NOT_IMPLEMENTED define which is now in mini.h.
13608
13609         * *.cs: Add some tests from the linear-ir branch. Move structs tests to 
13610         objects.cs.
13611
13612         * driver.c (mono_main): Add a --break-at-bb command line argument for JIT
13613         debugging.
13614
13615         * mini.h *.c: Change cfg->vars to contain the MonoMethodVar entries directly
13616         instead of though a pointer to save an indirection when accessing elements of
13617         the array.
13618
13619         * mini.h (MONO_IS_COND_BRANCH_OP): Move these macros here from mini.c. Fix
13620         some typos.
13621         (NOT_IMPLEMENTED): New helper macro.
13622         (MONO_BB_FOR_EACH_INS): New helper macro to iterate through the instructions
13623         of a bb.
13624
13625         * *.c: Use the new helper macro.
13626
13627 2008-01-21  Zoltan Varga  <vargaz@gmail.com>
13628
13629         * mini-x86.h (MONO_ARCH_AOT_SUPPORTED): Disable AOT for apple x86.
13630
13631 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
13632
13633         * mini-amd64.c (mono_arch_emit_prolog): Optimize the omit fp case to save two
13634         stack slots.
13635
13636 2008-01-18  Zoltan Varga  <vargaz@gmail.com>
13637
13638         * mini-amd64.c (mono_arch_emit_prolog): Disable the new optimization if
13639         profiling is enabled.
13640         
13641         * mini-amd64.c (mono_arch_call_opcode): Emit the save_sp_to_lmf instruction at
13642         the end.
13643         (mono_arch_emit_prolog): Add more first bblock optimizations.
13644
13645         * mini-amd64.c (mono_arch_call_opcode): Keep assignments to the arg registers
13646         in order if possible.
13647         (mono_arch_emit_prolog): Optimize assignments to arg registers in the first
13648         bblock, since the arguments are still in their original registers.
13649
13650         * mini.c (type_from_op): Calling add.ovf on floats is not valid IL code.
13651
13652 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
13653
13654         * mini.c (mono_method_to_ir): Use the no-spilling optimization for CEE_CALLI
13655         as well.
13656
13657         * mini-amd64.c (mono_arch_emit_prolog): Save an instruction if the LMF is at
13658         offset 0.
13659
13660         * mini-amd64.h (MONO_ARCH_HAVE_NOTIFY_PENDING_EXC): Turn on this for amd64.
13661
13662         * exceptions-amd64.c (mono_arch_notify_pending_exc): New function to 
13663         process async exceptions received while in unmanaged code.
13664
13665         * mini.c (mini_init): Install a callback with the runtime which will be called
13666         when a thread receives an async exception while in unmanaged code.
13667
13668         * mini.c driver.c: Update after mono_get_native_wrapper () signature change.
13669
13670         * mini-s390x.c (mono_arch_output_basic_block): Fix s390x build.
13671
13672 2008-01-16  Wade Berrier  <wberrier@novell.com>
13673
13674         * cpu-g4.md:
13675         * cpu-arm.md:
13676         * cpu-s390x.md:
13677         fix build
13678
13679 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
13680
13681         * mini-x86.c (mono_arch_output_basic_block): Remove some gccism which prevents
13682         compilation with sun cc.
13683
13684         * cpu-*.md: Fix the build.
13685
13686         * cpu-x86.md: Fix the length of some load membase opcodes. Fixes #354241.
13687
13688         * mini-amd64.h: Add some comments to the MonoLMF structure.
13689
13690         * mini-ops.h cpu-amd64.c: Add a OP_AMD64_SAVE_SP_TO_LMF opcode.
13691         
13692         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Avoid setting the rip field
13693         in the LMF structure if possible. This saves two instructions in the
13694         managed->native wrappers.
13695
13696         * mini-ops.h *.md: Make some opcodes names uniform by removing the op_ prefix.
13697
13698 2008-01-16  Mark Probst  <mark.probst@gmail.com>
13699
13700         * generic-sharing.c: New type argument lookup code which uses the
13701         runtime generic context template.
13702
13703 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
13704
13705         * mini.c (mono_method_to_ir): Avoid emitting a write barrier when storing NULL.
13706
13707         * mini-arm.c (add_general): Fix arm eabi parameter passing.
13708         (mono_arch_output_basic_block): Fix localloc implementation.
13709
13710         * mini-amd64.c (peephole_pass): Sync store+load optimizations with the x86 version.
13711
13712         * mini-ia64.c (peephole_pass): Fix ia64 build.
13713
13714         * mini-amd64.c (peephole_pass): Fix a warning.
13715         
13716         * mini-amd64.c (mono_arch_allocate_vars): Make sure the LMF is always stored
13717         at a constant offset from sp/fp.
13718
13719         * exceptions-amd64.c (mono_arch_find_jit_info): Compute the LMF address from fp/sp
13720         instead of obtaining it from *lmf in the managed method case.
13721
13722 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
13723
13724         * exceptions-amd64.c (mono_arch_find_jit_info): Remove some duplicate code.
13725
13726 Mon Jan 14 12:33:06 CET 2008  David S. Miller  <davem@davemloft.net>
13727
13728         * mini.h (MonoInstList): New type.
13729         (MONO_INST_LIST_INIT, MONO_INST_LIST_EMPTY,
13730         __MONO_INST_LIST_ADD, MONO_INST_LIST_ADD,
13731         MONO_INST_LIST_ADD_TAIL, __MONO_INST_LIST_DEL,
13732         __MONO_INST_LIST_SPLICE, MONO_INST_LIST_SPLICE,
13733         MONO_INST_LIST_SPLICE_TAIL, MONO_INST_LIST_SPLICE_INIST,
13734         MONO_INST_LIST_SPLICE_TAIL_INIT, mono_container_of,
13735         MONO_INST_LIST_ENTRY, MONO_INST_LIST_FIRST_ENTRY,
13736         MONO_INST_LIST_LAST_ENTRY, MONO_INST_LIST_FOR_EACH,
13737         MONO_INST_LIST_FOR_EACH_PREV, MONO_INST_LIST_FOR_EACH_SAFE,
13738         MONO_INST_LIST_FOR_EACH_PREV_SAFE,
13739         MONO_INST_LIST_FOR_EACH_ENTRY,
13740         MONO_INST_LIST_FOR_EACH_ENTRY_REVERSE,
13741         MONO_INST_LIST_FOR_EACH_ENTRY_SAFE,
13742         mono_inst_list_first, mono_inst_list_last,
13743         mono_inst_list_next, mono_inst_list_prev): New instruction
13744         list handling interfaces.
13745         (MonoBasicBlock): Remove 'last_ins' and 'code', replace with
13746         list head 'ins_list'.
13747         (MonoInst): Replace next pointer with list head 'node'.
13748         (MonoCallInst): Make 'out_args' a MonoInstList.
13749         (MONO_INST_NEW_CALL): Explicitly init ->out_args.
13750         (MonoCompile): Delete reverse_inst_list and
13751         reverse_inst_list_len.
13752         * mini-hppa.c (mono_arch_call_opcode, NEW_INS,
13753         mono_arch_lowering_pass, mono_arch_local_regalloc,
13754         mono_arch_output_basic_block, mono_arch_emit_prolog):
13755         Convert to new instruction lists.
13756         (insert_after_ins): Delete.
13757         * inssel.brg (MONO_EMIT_NEW_BRANCH_BLOCK): Convert to new
13758         instruction lists.
13759         * mini-hppa.h (MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Likewise.
13760         * mini.c (NEW_BBLOCK, ADD_BBLOCK, CHECK_BBLOCK,
13761         split_bblock, mono_add_ins_to_end, mono_emit_call_args,
13762         mono_emulate_opcode, mono_emit_load_got_addr,
13763         inline_method, mono_method_to_ir, mono_print_bb_code,
13764         print_dfn, decompose_pass, nullify_basic_block,
13765         replace_out_block_in_code, remove_block_if_useless,
13766         merge_basic_blocks, move_basic_block_to_end,
13767         try_unsigned_compare, optimize_branches, mono_print_code,
13768         mini_select_instructions, remove_critical_edges): Likewise.
13769         * mini-amd64.c (emit_sig_cookie, mono_arch_call_opcode,
13770         peephole_pass_1, peephole_pass, mono_arch_lowering_pass,
13771         mono_arch_output_basic_block, mono_arch_emit_prolog):
13772         Likewise.
13773         * mini-mips.c (mono_arch_call_opcode, peephole_pass,
13774         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
13775         mono_arch_output_basic_block): Likewise.
13776         (inst_list_prepend, insert_after_ins): Delete.
13777         * mini-mips.h (MONO_EMIT_NEW_BRANCH_NONZERO_LABEL,
13778         MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Convert to new
13779         instruction lists.
13780         * mini-x86.c (emit_sig_cookie, mono_arch_call_opcode,
13781         peephole_pass_1, peephole_pass, mono_arch_output_basic_block,
13782         mono_arch_emit_prolog): Likewise.
13783         * cfold.c (mono_constant_fold): Likewise.
13784         * liveness.c (visit_bb, mono_analyze_liveness,
13785         optimize_initlocals): Likewise.
13786         * ssapre.c (dump_code, process_bb, code_motion): Likewise.
13787         * graph.c (mono_draw_code_cfg): Likewise.
13788         * ssa.c (mono_ssa_rename_vars, mono_ssa_compute,
13789         mono_ssa_remove, mono_ssa_avoid_copies, mono_ssa_create_def_use,
13790         mono_ssa_cprop): Likewise.
13791         * abcremoval (get_relations_from_previous_bb, process_block):
13792         Likewise.
13793         * local-propagation (mono_cprop_invalidate_values,
13794         mono_local_cprop_bb): Likewise.
13795         * mini-s390x.c (mono_arch_call_opcode, emit_sig_cookie,
13796         peephole_pass, mono_arch_output_basic_block,
13797         mono_arch_emit_prolog): Likewise.
13798         * mini-arm.c (mono_arch_call_opcode, peephole_pass,
13799         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
13800         mono_arch_emit_prolog): Likewise.
13801         (insert_after_ins): Delete.
13802         * aliasing.c (print_code_with_aliasing_information,
13803         mono_build_aliasing_information, mono_aliasing_deadce):
13804         Convert to new instruction lists.
13805         * mini-ia64.c (emit_sig_cookie, mono_arch_call_opcode,
13806         peephole_pass, NEW_INS, mono_arch_lowering_pass,
13807         mono_arch_local_regalloc, mono_arch_output_basic_block):
13808         Likewise.
13809         (insert_after_ins): Delete.
13810         * mini-sparc.c (emit_sig_cookie, mono_arch_call_opcode,
13811         peephole_pass, mono_arch_output_basic_block): Convert to
13812         new instruction lists.
13813         * mini-codegen (InstList, inst_list_prepend,
13814         insert_after_ins): Delete.
13815         (insert_before_ins, get_register_force_spilling,
13816         get_register_spilling, free_up_ireg, free_up_reg,
13817         create_copy_ins, create_spilled_store, alloc_int_reg,
13818         alloc_float_reg, alloc_reg, mono_local_regalloc): Convert
13819         to new instruction lists.
13820         * mini-ppc.c (mono_arch_call_opcode, peephole_pass,
13821         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
13822         mono_arch_output_basic_block, mono_arch_emit_prolog): Likewise.
13823         (insert_after_ins): Delete.
13824         * mini-alpha.c (NEW_INS, peephole_pass, mono_arch_lowering_pass,
13825         mono_arch_local_regalloc, mono_arch_output_basic_block,
13826         mono_arch_call_opcode): Convert to new instruction lists.
13827         (insert_after_ins): Delete.
13828         * mini-s390.c (mono_arch_call_opcode, emit_sig_cookie,
13829         peephole_pass, mono_arch_output_basic_block,
13830         mono_arch_emit_prolog): Convert to new instruction lists.
13831
13832 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
13833
13834         * mini-amd64.c (mono_arch_output_basic_block): Use a 4 byte load in OP_CHECK_THIS.
13835
13836         * mini-sparc.c (mono_arch_output_basic_block): Use a byte load in CHECK_THIS.
13837         Fixes #353182.
13838
13839         * Makefile.am (version.h): Make this work with non-bash shells.
13840
13841 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
13842
13843         * mini.c (handle_delegate_ctor): Optimize away setting of NULL target.
13844
13845 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
13846
13847         * mini.c (mono_method_to_ir): Fix possible reading of invalid memory in 
13848         the InitializeArray optimization.
13849
13850 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
13851
13852         * mini.c driver.c: Don't include os/gc_wrapper.h.
13853
13854 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
13855
13856         * mini.c (print_jit_stats): Print GC statistics if available.
13857
13858 2008-01-04  Zoltan Varga  <vargaz@gmail.com>
13859
13860         * mini-amd64.c (mono_arch_allocate_vars): Align argument storage offsets to 8.
13861
13862 2007-12-29  Zoltan Varga  <vargaz@gmail.com>
13863
13864         * mini-ppc.c (mono_arch_get_delegate_invoke_impl): Fix flushing of icache.
13865
13866 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
13867
13868         * mini.c (mini_init): Move the setting of GC_stackbottom to mono_gc_base_init ().
13869         
13870         * mini.c (mini_init): Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
13871
13872         * driver.c (mono_main): Ditto.
13873
13874 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
13875
13876         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_delegate_invoke ().
13877
13878         * aot-compiler.c (emit_klass_info): Avoid emitting info if one of the methods
13879         in the vtable can't be encoded.
13880         (compile_method): Ditto.
13881
13882 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
13883
13884         * mini.c (setup_jit_tls_data): Use the MONO_ARCH_INIT_TOP_LMF_ENTRY macro if
13885         defined.
13886
13887         * mini-amd64.h mini-amd64.c exceptions-amd64.c tramp-amd64.c: Rename lmf->ebp to 
13888         lmf->rbp.
13889
13890         * exceptions-amd64.c (mono_arch_find_jit_info): Fix the detection of whenever
13891         the top LMF entry belongs to the current method.
13892
13893         * mini.c: Update after renaming of mono_thread_get_pending_exception ().
13894
13895 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
13896
13897         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix a warning.
13898         
13899         * tramp-ia64.c (mono_arch_create_trampoline_code): Ditto.
13900
13901         * tramp-sparc.c (mono_arch_create_trampoline_code): Check for thread interruption.
13902
13903         * tramp-amd64.c (mono_arch_create_trampoline_code): Ditto.
13904
13905         * tramp-x86.c (mono_arch_create_trampoline_code): Check for thread interruption.
13906
13907         * cpu-amd64.md mini-amd64.h mini-amd64.c inssel-amd64.brg: Add ulong->double 
13908         implementation.
13909
13910         * basic-float.cs: Add an ulong->double cast test.
13911
13912 2007-12-15  Zoltan Varga  <vargaz@gmail.com>
13913
13914         * mini.c (mono_method_to_ir): Fix a warning.
13915
13916 2007-12-14  Zoltan Varga  <vargaz@gmail.com>
13917
13918         * mini-ops.h: Add OP_SWITCH.
13919
13920         * mini.c graph.c ssa.c aliasing.c mini-<ARCH>.c inssel-<ARCH>.brg: Avoid using
13921         CEE_SWITCH in back-end code, use OP_SWITCH instead.
13922
13923 2007-12-11  Geoff Norton  <gnorton@novell.com>
13924
13925         * mini-s390x.c: Minor change to the MAX() define to allow
13926         it to compile with other gcc versions.
13927
13928 2007-12-11  Geoff Norton  <gnorton@novell.com>
13929
13930         * cpu-s390x.md:
13931         * mini-s390x.c: Implement sext_i4 to fix the build on s390x
13932
13933 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
13934
13935         exceptions-arm.c (mono_arch_get_restore_context): Restore
13936         the frame pointer.
13937
13938         exceptions-arm.c (throw_exception): Save the frame pointer.
13939         This is a partial fix for #323747. Only the client side is
13940         fixed.
13941
13942 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
13943
13944         * mini.c (mono_method_to_ir): Verbose message in CEE_NEWOBJ
13945         was using an unrelated variable to log the class which
13946         needed the cctor to be called. This was crashing on arm.
13947
13948 2007-12-09  Robert Jordan  <robertj@gmx.net>
13949
13950         * mini-x86.c (mono_arch_emit_epilog):
13951         Consider all kinds of 64-bit types. Fixes #323114.
13952
13953 2007-12-08  Zoltan Varga  <vargaz@gmail.com>
13954
13955         * tramp-amd64.c (mono_arch_create_trampoline_code): Clean up the code a bit.
13956
13957 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
13958
13959         * mini-amd64.c (peephole_pass): Add a missing instruction check.
13960
13961 Fri Dec 7 22:08:23 CET 2007 Paolo Molaro <lupus@ximian.com>
13962
13963         * mini.c: run type ctor before allocating an object, not only
13964         when running it's constructor method (fixes at least part of bug #342507).
13965
13966 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
13967         
13968         * mini-trampolines.c (mono_delegate_trampoline): Fix a warning.
13969         
13970         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove a debug printf.
13971         * mini.h mini-amd64.c mini-x86.c: Get rid of the mono_arch_find_vtable () 
13972         function.
13973
13974         * tramp-x86.c tramp-amd64.c mini-trampolines.c: Pass the vtable argument to
13975         mono_generic_class_init_trampoline () the same as it is done with the other
13976         trampolines.
13977
13978         * mini-arm.h mini-arm.c tramp-arm.c inssel-arm.brg cpu-arm.md 
13979         aot-runtime.c aot-compiler.c: Implement AOT support.    
13980
13981 2007-12-07  Mark Probst  <mark.probst@gmail.com>
13982
13983         * mini-trampolines.c (mono_generic_class_init_trampoline): Fixed
13984         build for archs which don't have the vtable trampoline defined
13985         yet.
13986
13987 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
13988
13989         * tramp-x86.c (mono_arch_create_trampoline_code): Fix the build.
13990
13991         * tramp-ppc.c (mono_arch_create_trampoline_code): Use the new helper function.
13992
13993         * mini-trampolines.c (mono_get_trampoline_func): New helper function.
13994
13995         * tramp-<ARCH>.c: Use the new helper function.
13996
13997 2007-12-07  Mark Probst  <mark.probst@gmail.com>
13998
13999         * inssel.brg: Added a pattern for the OP_TRAMPCALL_VTABLE
14000         trampoline call, which takes a vtable argument.
14001
14002         * graph.c, mini-ops.h, local-propagation.c, aliasing.c: Treat
14003         OP_TRAMPCALL_VTABLEs like other calls.
14004
14005         * mini-amd64.c, mini-amd64.h, mini-x86.c, mini-x86.h: Designated a
14006         register to hold the vtable argument to the OP_TRAMPCALL_VTABLE
14007         call.  Implemented a support function which fetches the vtable
14008         from a register set.
14009
14010         * mini.c, mini.h, tramp-amd64.c, tramp-x86.c, mini-trampolines.c:
14011         Implemented a generic class init trampoline, using the
14012         OP_TRAMPCALL_VTABLE opcode.
14013
14014         * mini.c: Implemented static field access when sharing generic
14015         code.  This implies initing the class using the new
14016         OP_TRAMPCALL_VTABLE call.
14017
14018 2007-12-07  Mark Probst  <mark.probst@gmail.com>
14019
14020         * mini.c: Don't compile methods with sharing enabled if their
14021         classes are disabled for sharing.
14022
14023 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
14024
14025         * inssel.brg: Add a missing sign extension to the GETCHR and array access
14026         opcodes. Fixes #346563.
14027
14028         * objects.cs: Add a new test.
14029
14030         * aot-compiler.c (emit_method_code): Put back an #ifdef which is needed.
14031
14032         * mini-<ARCH>.h mini.c aot-compiler.c aot-runtime.c: Get rid of the
14033         HAVE_PIC_AOT define and use AOT_SUPPORTED instead.
14034
14035 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
14036
14037         * mini-arm.h mini-arm.c: Add support for the common vtable trampoline.
14038
14039 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
14040
14041         * mini-arm.c (mono_arch_emit_exceptions): Avoid uninitialized memory in the
14042         code stream.
14043
14044 2007-12-02  Zoltan Varga  <vargaz@gmail.com>
14045
14046         * patch-info.h (PATCH_INFO): Add DELEGATE_TRAMPOLINE.
14047
14048         * mini.c aot-compiler.c aot-runtime.c: Implement the delegate creation 
14049         optimization in the AOT case.
14050         
14051 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
14052
14053         * aot-runtime (mono_aot_get_method_from_vt_slot): Add support for multi-byte method ref encodings.
14054         
14055         * aot-runtime.c (decode_klass_ref): Implement decoding of generic instances.
14056
14057         * aot-compiler.c (encode_klass_ref): Implement proper encoding of generic instances.
14058
14059         * mini.c (mono_method_to_ir): Optimize the common ldftn+create delegate combination.
14060
14061         * mini-trampolines.c (mono_delegate_trampoline): Add some code to handle the case when the delegate
14062         is created by the inlined delegate ctor.
14063
14064         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.  
14065
14066         * mini.c (mono_jit_compile_method_inner): Replace calls to delegate invoke with the trampoline here too.
14067
14068 2007-11-29  Zoltan Varga  <vargaz@gmail.com>
14069
14070         * cpu-x86.md: Fix the length of ckfinite.
14071
14072 2007-11-28  Zoltan Varga  <vargaz@gmail.com>
14073
14074         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.
14075         
14076         * mini-x86.c (mono_arch_output_basic_block): Clean up the fp stack properly in CKFINITE.
14077         (mono_arch_output_basic_block): Get rid of unused last_ins and last_offset.
14078
14079         * mini-x86.c (mono_arch_output_basic_block): Add some micro optimizations.
14080
14081         * mini-x86.c inssel-x86.brg cpu-x86.md: Move the implementation of the 
14082         OP_START_HANDLER/OP_ENDFINALLY/OP_ENDFILTER opcodes to mini-x86.c.
14083
14084 2007-11-28  Martin Baulig  <martin@ximian.com>
14085
14086         * mini-x86.c
14087         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline()
14088         after creating the trampoline.
14089
14090 2007-11-27  Zoltan Varga  <vargaz@gmail.com>
14091
14092         * aot-runtime.c (load_aot_module): Check runtime version if needed.
14093
14094         * aot-compiler.c: Add bind-to-runtime-version for producing AOT files which only load into a runtime with
14095         the same version.
14096
14097         * generic-sharing.c (mono_helper_get_rgctx_other_ptr): Change the signature to take the calling class
14098         instead of the calling method to help AOT.
14099
14100         * mini.c (get_runtime_generic_context_other_ptr): Update after the change.
14101
14102 2007-11-26  Zoltan Varga  <vargaz@gmail.com>
14103
14104         * aot-runtime.c (mono_aot_init_vtable): Simplify this if MONO_ARCH_COMMON_VTABLE_TRAMPOLINE
14105         is defined.
14106
14107 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
14108
14109         * aot-compiler.c (emit_class_name_table): Properly encode generic class names.
14110         
14111         * aot-compiler.c (compile_method): Correct check for generic method definitions.
14112         (encode_method_ref): No need to handle generic method definitions specially.
14113
14114         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
14115
14116         * aot-runtime.c (decode_klass_ref): Clean this up and rename from 
14117         decode_klass_info.
14118
14119         * aot-compiler.c (encode_klass_ref): Clean this up and rename from
14120         encode_klass_info.
14121         (compile_method): Enable generic sharing.
14122
14123 2007-11-22  Zoltan Varga  <vargaz@gmail.com>
14124
14125         * mini.c (get_runtime_generic_context_other_ptr): Disable AOT here.
14126         (mini_method_compile): Add preliminary support for AOTing shared generic code.
14127
14128         * aot-compiler.c (compile_method): Add preliminary support for AOTing shared
14129         generic code.
14130
14131         * mini-trampolines.c: Fix a warning.
14132
14133         * mini.c (get_runtime_generic_context_other_ptr): Use NEW_METHODCONST instead of
14134         NEW_PCONST.
14135         (mono_method_to_ir): Use NEW_DOMAINCONST in one place.
14136         (generic_class_is_reference_type): Remove unused function.
14137
14138         * mini-trampolines.c (mono_magic_trampoline): Avoid loading metadata if possible
14139         in the generic vtable trampoline case.
14140
14141         * aot-runtime.c (mono_aot_init_vtable): Use the generic vtable trampoline.
14142         
14143         * aot-runtime.c (mono_aot_get_method_from_vt_slot): New helper function to
14144         return an AOT method based on a vtable slot.
14145
14146         * aot-compiler.c (compile_method): Avoid AOTing synchronized methods for now.
14147
14148         * mini.c (mini_get_vtable_trampoline): Export this.
14149
14150 2007-11-22  Martin Baulig  <martin@ximian.com>
14151
14152         * debug-debugger.h
14153         (MonoDebuggerInfo): Move `debugger_version' up.
14154
14155 2007-11-22  Martin Baulig  <martin@ximian.com>
14156
14157         * mini-amd64.c
14158         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline().
14159
14160         * mini-trampolines.c
14161         (mono_delegate_trampoline): Call mono_debugger_trampoline_compiled()
14162         after compiling the method.
14163
14164 2007-11-20  Martin Baulig  <martin@ximian.com>
14165
14166         * debug-mini.c
14167         (mono_debugger_insert_method_breakpoint): Moved into mono-debug-debugger.c.
14168         (mono_debugger_remove_breakpoint): Likewise.
14169         (mono_debugger_check_breakpoints): Likewise.
14170
14171         * debug-debugger.c: Implement the new breakpoint interface here.
14172
14173 2007-11-18  Zoltan Varga  <vargaz@gmail.com>
14174
14175         * mini-amd64.c (mono_arch_output_basic_block): Unify the implementation of
14176         CEE_CONV_I1/SEXT_I1 and I2 since they are the same.
14177
14178         * mini-x86.c (mono_arch_output_basic_block): Ditto.     
14179
14180 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
14181
14182         * mini-amd64.c (mono_arch_output_basic_block): Fix a typo.
14183
14184         * mini-x86.c (mono_arch_get_inst_for_method): Remove code which is now in
14185         mini.c.
14186
14187         * mini-ia64.c (mono_arch_get_inst_for_method): Remove code which is now in
14188         mini.c.
14189
14190         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for methods
14191         returning a vtype in a register.
14192
14193         * mini.c (mini_get_inst_for_method): Move the handling of the atomic operations
14194         here from the arch specific code.
14195
14196         * mini-amd64.c (mono_arch_get_inst_for_method): Remove code which is now in
14197         mini.c.
14198
14199         * mini-amd64.c (mono_arch_output_basic_block): Add some micro optimizations.
14200         (mono_arch_emit_prolog): Increment maximum prolog size.
14201
14202         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Move the implementation of the
14203         START_HANDLER/ENDFINALLY/ENDFILTER opcodes to mini-amd64.c.
14204
14205         * mini-x86.c (get_call_info): Receive a MonoCompile instead of a 
14206         MonoGenericSharingContext.
14207
14208         * mini-ia64.c (get_call_info): Receive a MonoCompile instead of a 
14209         MonoGenericSharingContext. Allocate memory from the cfg mempool.
14210
14211 2007-11-15  Mark Probst  <mark.probst@gmail.com>
14212
14213         * mini.c, mini.h, generic-sharing.c: Functions for producing code
14214         which extract fields out of the runtime generic context.  Full
14215         sharing of the NEWARR opcode.
14216
14217 Thu Nov 15 14:20:21 CET 2007 Paolo Molaro <lupus@ximian.com>
14218
14219         * abcremoval.c, mini.c, ssa.c, ssapre.c: updated to implement
14220         --enable-minimal=ssa.
14221
14222 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
14223
14224         * mini-trampolines.c (mono_delegate_trampoline): Update after 
14225         mono_marshal_get_delegate_invoke () signature change.
14226
14227 2007-11-13  Mark Probst  <mark.probst@gmail.com>
14228
14229         * mini.c: Removed the shared context in favor of the generic
14230         sharing context.  Allocate the MonoJitInfo structure with room for
14231         the generic sharing context if it's needed.
14232
14233         * mini.h: Remove MonoGenericSharingContext declaration.  It's in
14234         domain-internals.h now.
14235
14236         * mini-x86.c: Pass the generic sharing context to get_call_info ().
14237
14238         * generic-sharing.c: Several changes for working without a shared
14239         context and instead operating on open types instead.
14240
14241 2007-11-12  David S. Miller  <davem@davemloft.net>
14242
14243        * inssel-sparc.brg: Fix double instruction emit.
14244
14245 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
14246
14247         * mini.c (mono_jit_runtime_invoke): Avoid trying to compile the Array 
14248         Get/Set/Address methods.
14249         
14250         * mini.c debug-debugger.c mini-trampolines.c: Update after 
14251         mono_marshal_get_delegate_invoke signature change.
14252
14253 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
14254
14255         * cpu-arm.md: Increase the max size of OP_THROW to 24 bytes.
14256         This can happens with dynamic methods. Fixes the other bug in #322722.
14257
14258 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
14259
14260         * tramp-arm.c (mono_arch_patch_callsite): Support patching
14261         BX call sequence.
14262
14263         * mini-arm.c (arm_patch): Implement patching of BX call
14264         sequence. Fixes one of the bugs in #322722.
14265
14266 2007-11-03  David S. Miller  <davem@huronp11.davemloft.net>
14267
14268        * mini-sparc.c (mono_arch_flush_icache): Make more efficient
14269        under Linux.  We only need to flush every 32-byte cache line.    
14270
14271 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
14272
14273         * mini.c:
14274         move_basic_block_to_end: Add branches when needed, eventually creating
14275         a new BB.
14276         optimize_branches: added a parameter that tells if it's ok to create
14277         new BBs (doing is "df_visit" has been called is (IMHO) a nightmare),
14278         and avoid calling move_basic_block_to_end when it's not ok.
14279         Fixes bug 318677.
14280
14281 2007-11-07  Mark Probst  <mark.probst@gmail.com>
14282
14283         * mini.c: Abort inlining call to InitializeArray if something
14284         looks wrong.  Let the icall handle it, which now has proper safety
14285         checks.
14286
14287 2007-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
14288
14289         * mini.c (mono_spill_call): add support for soft-float.
14290
14291         * mini.c (mono_method_to_ir): add support for soft-float
14292         to inlined functions that return float.
14293
14294         * mini.c (mono_method_to_ir): add support for soft-float
14295         to cee_stsfld opcode on float fields.
14296
14297 2007-11-05  Geoff Norton  <gnorton@novell.com>
14298
14299         * mini-x86.h: Fix the structure access for X86 Leopard.
14300
14301
14302 2007-11-05  Martin Baulig  <martin@ximian.com>
14303
14304         * mini-trampolines.c
14305         (mono_magic_trampoline): Call mono_debugger_trampoline_compiled()
14306         after compiling the method to notify the debugger.
14307
14308 2007-11-05  Martin Baulig  <martin@ximian.com>
14309
14310         * debug-debugger.h (MonoDebuggerInfo): Use the new breakpoint tables.
14311
14312 2007-11-02  Zoltan Varga  <vargaz@gmail.com>
14313
14314         * mini-sparc.c (EMIT_COND_SYSTEM_EXCEPTION_GENERAL): Applied patch from
14315         David Miller <davem@davemloft.net>. Allow larger offsets in branches.
14316
14317 2007-11-01  Zoltan Varga  <vargaz@gmail.com>
14318
14319         * mini-amd64.c (mono_arch_emit_prolog): Check the domain as well for
14320         native-to-managed wrappers.
14321         
14322 2007-11-01  Geoff Norton  <gnorton@novell.com>
14323
14324         * mini-ppc.h, mini-x86.h:  Handle Leopards renaming of some structure 
14325         members.
14326
14327 Wed Oct 31 20:23:14 CET 2007 Paolo Molaro <lupus@ximian.com>
14328
14329         * mini.c, mini-x86.c: when getting back from unmanaged code
14330         to managed via a marshaled delegate we also need to set the
14331         right domain.
14332
14333 Wed Oct 31 19:53:33 CET 2007 Paolo Molaro <lupus@ximian.com>
14334
14335         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: breakpoint table support
14336         for amd64.
14337
14338 Wed Oct 31 19:29:30 CET 2007 Paolo Molaro <lupus@ximian.com>
14339
14340         * mini.c, mini.h, mini-x86, tramp-x86.c, mini-x86.h: added API to
14341         let the debugger or other external agents to tell the JIT when
14342         a sw breakpoint has been inserted in the code that the JIT needs
14343         to be able to inspect.
14344
14345 2007-10-31  Martin Baulig  <martin@ximian.com>
14346
14347         * debug-debugger.h
14348         (MonoDebuggerInfo): Remove `runtime_class_init'.
14349
14350 2007-10-30  Martin Baulig  <martin@ximian.com>
14351
14352         * debug-mini.h
14353         (mono_debugger_thread_created): Added `MonoThread *' argument.
14354         (mono_debugger_extended_notification): New public method.
14355         (mono_debugger_trampoline_compiled): New public method.
14356
14357         * debug-mini.c
14358         (MonoDebuggerThreadInfo): Added `thread' and
14359         `extended_notifications' fields.
14360
14361         * debug-debugger.c
14362         (debugger_executable_code_buffer): New static variable.
14363
14364         * debug-debugger.h
14365         (MonoDebuggerInfo): Added `executable_code_buffer',
14366         `executable_code_buffer_size', `breakpoint_info_area',
14367         `breakpoint_table' and `breakpoint_table_size'.
14368
14369 2007-10-26  Rodrigo Kumpera  <rkumpera@novell.com>
14370
14371         * mini-arm.c (mono_arch_build_imt_thunk): Take the advantage
14372         that IP  either is an unused value or the vtable pointer. IMT 
14373         calls use vtable + offset now. Reduced by almost half the size
14374         of IMT entries.
14375
14376 2007-10-26  Jonathan Chambers <joncham@gmail.com>
14377
14378         * mini-amd64.c: Begin Win64 port. Use AMD64_ARG_REG#
14379         defines to access param registers. Replace long usage with
14380         gsize as sizeof(long) != sizeof(void*) on Win64.
14381
14382         * mini-amd64.h: Add %rdi and %rsi to MonoLMF structure
14383         on Win64. Fix intrinsic, use _AddressOfReturnAddress
14384         instead of non-existant _GetAddressOfReturnAddress.
14385
14386         * tramp-amd64.c: Use AMD64_ARG_REG#     defines to access 
14387         param registers. Save/restore %rdi and %rsi in MonoLMF.
14388
14389         * exceptions-amd64.c: Use AMD64_ARG_REG# defines to access 
14390         param registers. Modify (throw_exception) signature to take 
14391         %rdi and %rsi on Win64. 
14392
14393         Code is contributed under MIT/X11 license.
14394
14395 Thu Oct 25 23:06:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
14396
14397         * helpers.c: unlink debugging output files.
14398
14399 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
14400
14401         * mini.c: Move mono_create_ftnptr () to object.c.
14402
14403 2007-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
14404
14405         * helpers.c (mono_disassemble_code): MonoCompile parameter is now
14406         optional. This function can now be used to disassemble code generated
14407         outside the JIT such as trampolines and IMT thunks.
14408
14409         * mini-arm.h: defined MONO_ARCH_HAVE_IMT.
14410
14411         * mini-arm.c (decode_vcall_slot_from_ldr): added, extract the
14412         vtable pointer from a ldr instruction.
14413
14414         * mini-arm.c (mono_arch_get_vcall_slot_addr): support the
14415         new IMT call sequence.
14416
14417         * mini-arm.c (mono_arch_output_basic_block): emit the IMT
14418         call sequence for interface invocations.
14419
14420         * mini-arm.c (mono_arch_emit_imt_argument): added, required
14421         for imt support. This function is empty since IMT on ARM requires no
14422         special handling on the IR side.
14423
14424         * mini-arm.c (mono_arch_find_imt_method): added, required for
14425         imt support.
14426
14427         * mini-arm.c (mono_arch_find_this_argument): added, required
14428         for imt support.
14429
14430         * mini-arm.c (arm_emit_value_and_patch_ldr): added, patches
14431         a ldr instruction to load a value stored in the code stream.
14432
14433         * mini-arm.c (mono_arch_build_imt_thunk):added, required
14434         for imt support.
14435
14436
14437 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
14438
14439         * mini.c (mini_init): Install the jump trampoline callback.
14440
14441 Tue Oct 23 17:07:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14442
14443         * mini-trampolines.c: handle synchronized methods with the common
14444         vtable trampoline (bug #335601).
14445
14446 2007-10-17  Zoltan Varga  <vargaz@gmail.com>
14447
14448         * mini-ia64.h mini-amd64.c: Add support for the common vtable trampoline.
14449
14450         * inssel.brg (mini_emit_virtual_call): Fix the computation of ins->inst_offset on
14451         64 bit platforms.
14452
14453         * mini-ia64.h mini-ia64.c: Add support for IMT.
14454
14455         * mini-x86.c (mono_arch_emit_prolog): Increase the size allocated for the
14456         prolog. Fixes #331958.
14457
14458 2007-10-15  Zoltan Varga  <vargaz@gmail.com>
14459
14460         * mini-sparc.h mini-sparc.c: Add support for the common vtable trampoline.
14461
14462 Mon Oct 15 11:18:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14463
14464         * mini-ppc.c, mini-ppc.h: ppc support for the common vtable
14465         trampoline.
14466
14467 Mon Oct 15 10:41:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14468
14469         * mini-amd64.c, mini-amd64.h: amd64 support for the common vtable
14470         trampoline.
14471
14472 Mon Oct 15 10:39:26 CEST 2007 Paolo Molaro <lupus@ximian.com>
14473
14474         * mini-x86.c, mini-x86.h: x86 support for the common vtable
14475         trampoline.
14476
14477 Mon Oct 15 10:37:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
14478
14479         * mini-trampolines.c: changed the magic rampoline to understand
14480         the common vtable trampoline method: the method to invoke is
14481         determined by the vtable displacement of the call.
14482
14483 Mon Oct 15 10:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
14484
14485         * mini.c, mini.h: register the common vtable trampoline if the
14486         architecture supports it.
14487
14488 Mon Oct 15 09:50:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14489
14490         * cpu-amd64.md: use the correct max length for tls_get.
14491
14492 2007-10-14  Zoltan Varga  <vargaz@gmail.com>
14493
14494         * mini.c (mono_method_to_ir): Use mini_get_class in CEE_LDELEM_ANY and
14495         CEE_STELEM_ANY. Fixes #333696.
14496
14497 Thu Oct 11 18:04:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
14498
14499         * exceptions-x86.c: provide more graceful handling of the case where
14500         we followed a bogus function pointer from managed code (bug #332866).
14501
14502 2007-10-11  Mark Probst  <mark.probst@gmail.com>
14503
14504         * mini.h, mini.c: Introduced the MonoGenericSharingContext, which
14505         replaces the generic_shared flag and will carry more information
14506         in the future.
14507
14508         * generic-sharing.c: Added mini_type_stack_size() which allows
14509         allows open types if given a generic sharing context.
14510         mini_get_basic_type_from_generic() takes a
14511         MonoGenericSharingContext* instead of a MonoCompile* now.
14512
14513         * mini-alpha.c, mini-amd64.c, mini-arm.c, mini-hppa.c,
14514         mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c, mini-s390x.c,
14515         mini-sparc.c, mini-x86.c: Trivial changes required by the two
14516         changes above.  Just passing arguments through to the right
14517         places.
14518
14519 Wed Oct 10 19:44:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
14520
14521         * mini-arm.c: unify the call emission to emit_code_seq().
14522
14523 Wed Oct 10 13:05:46 CEST 2007 Paolo Molaro <lupus@ximian.com>
14524
14525         * tramp-arm.c: reduced the trampoline size.
14526
14527 2007-10-10  Mark Probst  <mark.probst@gmail.com>
14528
14529         * generic-sharing.c, mini.h, mini-amd64.c, mini-x86.c: Moved type
14530         variable handling out of arch-specific code.
14531
14532 Wed Oct 10 10:49:28 CEST 2007 Paolo Molaro <lupus@ximian.com>
14533
14534         * mini-arm.c: implemented fast delegate dispatch.
14535
14536 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
14537
14538         * mini-amd64.c (mono_arch_compute_omit_fp): Add more checks to ensure
14539         that fp elimination is turned off if the space required by locals is too
14540         big. Fixes #331958.
14541
14542 Tue Oct 9 21:01:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
14543
14544         * Makefile.am, mini-arm.c, mini-arm.h, tramp-arm.c: ported
14545         ARM to the new style trampoline.
14546
14547 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
14548
14549         * tramp-amd64.c: Rework the specific trampoline code to make it smaller.
14550
14551         * mini-amd64.h mini-amd64.c: Export amd64_patch as mono_amd64_patch.
14552
14553 2007-10-09  Martin Baulig  <martin@ximian.com>
14554
14555         * debug-debugger.h
14556         (MonoDebuggerMetadataInfo): Added `field_info_type_offset' and
14557         `field_info_offset_offset'.     
14558
14559 Tue Oct 9 09:47:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
14560
14561         * mini-ppc.c, mini-ppc.h, mini-ops.h, inssel-ppc.brg, cpu-g4.md:
14562         removed more internal usage of the r11 register and made it available
14563         to the register allocator.
14564
14565 2007-10-08  Mark Probst  <mark.probst@gmail.com>
14566
14567         * mini.c, mini-amd64.c, mini-x86.c: Allow open generic contexts
14568         when sharing generics and treat type variables as references.
14569
14570 Mon Oct 8 10:55:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
14571
14572         * mini-ppc.c: started removing the internal uses of register r11
14573         to eventually allow the register allocator to manage it as an
14574         additional available register.
14575
14576 Mon Oct 8 14:25:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
14577
14578         * tramp-amd64.c: fixed memory corruption in the trampoline generation.
14579
14580 Mon Oct 8 12:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
14581
14582         * tramp-ppc.c, tramp-x86.c: reduce the alignment requirements for
14583         specific trampolines as they are not performance critical as a jump
14584         target (maybe align as before only for AOT code?). This saves about
14585         200 KB of native code on x86 for monodevelop startup.
14586
14587 Mon Oct 8 10:04:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
14588
14589         * tramp-ppc.c: reduce the size of the trampolines, saves 160KB on
14590         monodevelop startup.
14591
14592 2007-10-06  Zoltan Varga  <vargaz@gmail.com>
14593
14594         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Allow signed displacements.
14595
14596         * mini-sparc.h mini-sparc.c: Implement IMT support.
14597
14598         * tramp-sparc.c (mono_arch_create_trampoline_code): Rework the trampoline code so
14599         its smaller and doesn't clobber sparc_g1.
14600
14601         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Update after trampoline changes.
14602
14603 Fri Oct 5 18:28:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
14604
14605         * mini-ppc.c: optimized the size of the IMT thunks a bit.
14606
14607 Fri Oct 5 18:08:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
14608
14609         * mini-ppc.c: implemented fast delegate invocation.
14610
14611 Fri Oct 5 00:01:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
14612
14613         * mini-ppc.h, mini-ppc.c: IMT support for the PPC architecture.
14614
14615 Thu Oct 4 22:04:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
14616
14617         * mini-ppc.c, mini-ppc.h, tramp-ppc.c, Makefile.am: port the PPC
14618         code to the new style trampoline in preparation for IMT support.
14619
14620 Thu Oct 4 19:01:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
14621
14622         * mini-ppc.c, tramp-ppc.c: don't use r13 as it's used by the PPC EABI
14623         systems already. This also reduces the specific trampiline sizes and
14624         prepares for the use of r12 as the IMT identifier register.
14625
14626 Thu Oct 4 16:38:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14627
14628         * mini-mips.h: endianess fix (simplified from a patch by
14629         Thomas Kunze <thommy@tabao.de>, bug #323737).
14630
14631 Thu Oct 4 14:43:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
14632
14633         * exceptions-ppc.c, mini-ppc.h: refactor to use macros
14634         to access ucontext fields and enable netbsd support
14635         (partially from Magnus Henoch <mange@freemail.hu>).
14636
14637 Thu Oct 4 12:35:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14638
14639         * genmdesc.pl: patch from Henryk Plotz <henryk@openmoko.org> to
14640         use the preprocessor from the CPP env var if it is set.
14641
14642 Wed Oct 3 17:11:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
14643
14644         * mini-trampolines.c: fixed an assertion and moved it earlier in the
14645         code, before interface_offset gets used.
14646
14647 2007-10-02  Zoltan Varga  <vargaz@gmail.com>
14648
14649         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call 
14650         mono_class_setup_vtable () before accessing klass->vtable.
14651
14652 2007-10-01  Zoltan Varga  <vargaz@gmail.com>
14653
14654         * aot-compiler.c (get_plt_index): Rework the handling of wrappers to be not so
14655         hackish.
14656
14657 Mon Oct 1 15:00:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14658
14659         * mini.c, mini-trampolines.c, mini.h: enable the lazy filling of the
14660         IMT slots (this saves hundreds of KB of memory in programs like
14661         IronPython and Monodevelop).
14662
14663 Mon Oct 1 14:44:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
14664
14665         * mini.c: print the delegate counter.
14666
14667 Mon Oct 1 14:36:50 CEST 2007 Paolo Molaro <lupus@ximian.com>
14668
14669         * mini-x86.c: make it easier to enable the debugging code for IMT
14670         slots.
14671
14672 2007-09-28  Martin Baulig  <martin@ximian.com>
14673
14674         * debug-debugger.h
14675         (MonoDebuggerMetadataInfo): Add `klass_image_offset',
14676         `mono_method_klass_offset' and `mono_method_token_offset'.
14677
14678 2007-09-20  Mark Probst  <mark.probst@gmail.com>
14679
14680         * mini.c: First generics sharing implementation.  Can only share
14681         in very simple cases.  If sharing doesn't work it falls back to
14682         dedicated compilation.
14683
14684         * mini.h: Flag in MonoCompile to specify whether generic
14685         compilation is shared.  Flags enum for marking which generic inst
14686         of a context is used.  Prototypes for helper functions.
14687
14688         * generic-sharing.c: Helper functions for generic method sharing.
14689
14690         * optflags-def.h: Optimization flag (gshared) for enabling generic
14691         method sharing added.
14692
14693         * Makefile.am: generic-sharing.c added.
14694
14695 2007-09-19 Daniel Nauck <dna@mono-project.de>
14696
14697         * mini.c (mono_thread_abort): fixed typo in r86014. It should be '==' instead of '!='.
14698
14699 2007-09-19  Massimiliano Mantione  <massi@ximian.com>
14700         * mini.c (mono_thread_abort): Correctly handle ThreadAbortException,
14701         fixes bug 325507.
14702
14703 2007-09-19  Martin Baulig  <martin@ximian.com>
14704
14705         * mini.c (mini_cleanup): Only call mono_debugger_cleanup() here;
14706         mono_debug_cleanup() is now part of mono_cleanup().
14707
14708 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
14709
14710         * driver.c (mono_main): Fix a warning.
14711
14712 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
14713
14714         * aot-compiler.c: Optimize various parts when processing large assemblies.
14715         Fixes ##325568.
14716
14717         * mini.c (mono_patch_info_hash): Improve hash function.
14718
14719 2007-09-14  Jonathan Chambers <joncham@gmail.com>
14720
14721         * mini-exceptions.c: Add HAVE_UNISTD_H check around include.
14722         
14723         Code is contributed under MIT/X11 license.
14724
14725 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
14726
14727         * mini.c (mini_init): Fix a leak.
14728
14729         * debug-mini.c (mono_debug_free_method_jit_info): Fix a leak.
14730
14731 Fri Sep 14 12:53:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
14732
14733         * mini.c: redirect string.InternalAllocStr() to the managed allocator.
14734
14735 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
14736
14737         * mini-amd64.c (mono_arch_find_imt_method): Add support for AOT code.
14738
14739 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
14740
14741         * Makefile.am generics-variant-types.2.il generics.cs: Add some generics
14742         variance tests.
14743
14744         * inssel.brg: Reorganize the isinst/castclass code to reduce code duplication.
14745
14746         * mini.c (handle_alloc): Enable managed allocators in AOT code.
14747
14748         * aot-compiler.c (encode_patch): Add support for MONO_WRAPPER_ALLOC.
14749
14750         * aot-runtime.c (decode_patch_info): Ditto.
14751
14752 2007-09-12  Jonathan Chambers <joncham@gmail.com>
14753
14754         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement
14755         static case. Cache delegates in architecture specific code, 
14756         based on number of parameters.
14757         
14758         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Cache delegates
14759         in architecture specific code, based on number of parameters.
14760         
14761         * mini-trampolines.c (mono_delegate_trampoline): Architecture specific 
14762         caching happen in architecture specific code now.
14763         
14764         Code is contributed under MIT/X11 license.
14765
14766 2007-09-12  Jonathan Chambers <joncham@gmail.com>
14767
14768         * mini.h, mini.c, mini-x86.c, mini-amd64.c, mini-hppa.c, mini-mips.c,
14769         mini-s390x.c, mini-arm.c, mini-ia64.c, mini-sparc.c, mini-ppc.c, mini-alpha.c,
14770         mini-s390.c: Add mono_arch_init and mono_arch_cleanup methods.
14771
14772         Code is contributed under MIT/X11 license.
14773
14774 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
14775         * mini.c: (mono_thread_abort) Fixed bug #82416.
14776
14777 Tue Sep 11 16:15:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
14778
14779         * mini.: hook the new managed GC allocation feature into the JIT.
14780
14781 Tue Sep 11 16:14:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
14782
14783         * mini.c: implementation for the new runtime tls opcode.
14784
14785 2007-09-11  Martin Baulig  <martin@ximian.com>
14786
14787         * debug-debugger.h
14788         (MonoDebuggerMetadataInfo): Add `mono_method_flags_offset' and
14789         `mono_method_inflated_offset'.
14790
14791 2007-09-07  Zoltan Varga  <vargaz@gmail.com>
14792
14793         * driver.c mini.h mini.c: Add a new devel command line option for injecting
14794         async exceptions into a method.
14795
14796         * mini-amd64.h mini-amd64.c: Implement injecting of async exceptions for the
14797         purpose of testing whenever the unwinder works at every instruction.
14798
14799 Thu Sep 6 12:42:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
14800
14801         * mini.c: check accessibility of method used in ldftn (fixes
14802         bug #82635).
14803
14804 2007-09-04  Zoltan Varga  <vargaz@gmail.com>
14805
14806         * mini-amd64.c (mono_arch_output_basic_block): Fix a warning.
14807
14808         * inssel.brg: Fix a warning.
14809
14810 2007-09-03  Martin Baulig  <martin@ximian.com>
14811
14812         * debug-debugger.c: `MONO_DEBUGGER_EVENT_INITIALIZE_MANAGED_CODE'
14813         now takes the `main_method' as argument.
14814
14815 2007-09-02  Zoltan Varga  <vargaz@gmail.com>
14816
14817         * cpu-sparc.md (endfilter): Add missing src1:i argument.
14818
14819 2007-08-30  Jonathan Chambers <joncham@gmail.com>
14820
14821         * driver.c: include the cil-coff.h header on Windows.
14822         
14823         Code is contributed under MIT/X11 license.
14824
14825 Thu Aug 30 16:17:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
14826
14827         * mini.c, driver.c: don't include the cil-coff.h header.
14828
14829 Thu Aug 30 14:50:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
14830
14831         * mini.c: flag places that needs fixes fo soft-float support.
14832
14833 Wed Aug 29 18:26:20 CEST 2007 Paolo Molaro <lupus@ximian.com>
14834
14835         * mini.h, inssel-float.brg: fix soft-float constant loads on big
14836         endian systems (partially from Dean Jenkins, bug #81924).
14837
14838 2007-08-28  Mark Probst  <mark.probst@gmail.com>
14839
14840         * mini.c (check_linkdemand): Remove embedded reference object in
14841         call to LinkDemandSecurityException.
14842         (mono_jit_compile_method_inner): Call LinkDemandSecurityException
14843         with an IntPtr instead of a reference object.
14844
14845 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
14846
14847         * mini.c (handle_initobj): Handle alignment properly.
14848
14849         * inssel.brg (mini_emit_memset): Ditto. 
14850
14851         * inssel.brg (mini_emit_memcpy): Ditto. 
14852
14853         * inssel-sparc.brg: Ditto.              
14854
14855         * mini.h mini.c inssel-*.brg: Pass alignment information to OP_MEMCPY/MEMSET.
14856
14857 2007-08-26  Zoltan Varga  <vargaz@gmail.com>
14858
14859         * mini-exceptions.c (mono_handle_exception_internal): Skip the first frame for
14860         exceptions raised in unmanaged code. Fixes part of #82594.
14861
14862 2007-08-24  Mark Probst  <mark.probst@gmail.com>
14863
14864         * mini.c (mono_method_to_ir), declsec.c
14865         (mono_declsec_linkdemand_aptc): Fixed custom attr leaks.
14866
14867 2007-08-22  Martin Baulig  <martin@ximian.com>
14868
14869         * debug-mini.h
14870         (MonoDebuggerThreadInfo): New typedef.
14871         (mono_debugger_thread_table): New global variable.
14872         (mono_debugger_thread_created): New public function.
14873         (mono_debugger_thread_cleanup): New public function.
14874
14875         * debug-debugger.h
14876         (MonoDebuggerInfo):
14877         - removed `get_current_thread' and `lookup_assembly'.
14878         - removed `data_table'.
14879         - added `thread_table'.
14880
14881         * mini.c
14882         (mono_thread_start_cb): Call mono_debugger_thread_created().
14883         (mono_thread_attach_cb): Likewise.
14884         (mini_thread_cleanup): Call mono_debugger_thread_cleanup().
14885         (mini_cleanup): Move mono_debug_cleanup() down, after free'ing the
14886         initial domain.
14887
14888         * driver.c (mono_main): Move mono_debug_init() up, before calling
14889         mini_init(); mono_debug_init_1() and mono_debug_init_2() are gone.
14890
14891 Tue Aug 21 16:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
14892
14893         * mini-x86.c, inssel-x86.brg: group multiple stack adjustments
14894         together when passing several arguments of type double (gives a small
14895         speedup and saves a few bytes of generated code).
14896
14897 2007-08-20  Jb Evain  <jbevain@novell.com>
14898
14899         * mini.c (mono_method_to_ir): fix leak on InvalidProgramException.
14900
14901 2007-08-20  Jb Evain  <jbevain@novell.com>
14902
14903         * mini.c (mono_method_to_ir): throw MethodAccessException
14904         and FieldAccessException instead of InvalidProgramException.
14905
14906 2007-08-20  Mark Probst  <mark.probst@gmail.com>
14907
14908         * mini.c: CoreCLR security checks.
14909
14910         * mini.h: Removed MonoSecurityMode (moved to
14911         metadata/security-manager.h) and mono_security_mode global var
14912         (replaced by set/get functions in security-manager.h).
14913
14914         * driver.c: Added "core-clr-test" security mode for testing.  Used
14915         set-function for setting security mode.
14916
14917 2007-08-17  Mark Probst  <mark.probst@gmail.com>
14918
14919         * mini.c: MonoJitInfo's are freed hazardously now.  Statistics for
14920         the new jit_info_table.
14921
14922         * driver.c: Test code for the new jit_info_table (enabled by the
14923         define MONO_JIT_INFO_TABLE_TEST).
14924
14925 2007-08-14  Zoltan Varga  <vargaz@gmail.com>
14926
14927         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
14928         detection of call <REG> instruction sequence. Fixes build on freebsd.
14929
14930 2007-08-13  Zoltan Varga  <vargaz@gmail.com>
14931
14932         * mini-exceptions.c: Fix a warning.
14933
14934 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
14935
14936         * exceptions-amd64.c (mono_arch_handle_altstack_exception): Enable the new
14937         stack overflow handling code on amd64 too.
14938
14939         * mini-exceptions.c (mono_setup_altstack): Make this use 
14940         mono_thread_get_stack_bounds ().
14941
14942         * mini-x86.h: Disable sigaltstack on solaris x86.
14943
14944 2007-08-10  Zoltan Varga  <vargaz@gmail.com>
14945
14946         * mini-exceptions.c (mono_setup_altstack): Enable this to work on solaris x86.
14947
14948 2007-08-10  Geoff Norton  <gnorton@customerdna.com>
14949
14950         * tramp-x86.c: Remove some unneeded alignment changes on Apple.  Fixes #82387.
14951
14952 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
14953
14954         * mini-exceptions.c (mono_print_thread_dump): Enable this on amd64 too.
14955
14956         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Fix a warning.
14957
14958 2007-08-03  Neale Ferguson <neale@sinenomine.net>
14959
14960         * mini-s390.c (add_general): Adjust offset calculation to take into account of rounding up
14961         due to alignment.
14962
14963 Thu Aug 2 17:36:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
14964
14965         * mini-ppc.c: avoid an invalid encoding of unsigned right shift by 0
14966         to be emitted (bug #82281).
14967
14968 2007-08-01  Martin Baulig  <martin@ximian.com>
14969
14970         Merged the `debugger-dublin' branch.
14971
14972         * debug-debugger.h (MonoDebuggerInfo):
14973         Removed the `old_*' compatibility entries.
14974         Added `debugger_version' and `data_table'.
14975         Renamed `get_method_addr_or_bpt' -> `insert_breakpoint'.
14976         Renamed `remove_method_breakpoint' -> `remove_breakpoint'.
14977
14978         * debug-mini.c
14979         (MiniDebugMethodBreakpointInfo): Add `address_list'.
14980         (mono_debugger_check_breakpoints): Take a `MonoDebugMethodAddress *'
14981         instead of a `gconstpointer'.
14982         (mono_debugger_insert_method_breakpoint): Return a
14983         `MonoDebugMethodAddressList *'.
14984
14985 2007-06-28  Martin Baulig  <martin@ximian.com>
14986
14987         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
14988
14989 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
14990
14991         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Avoid using 
14992         __builtin_frame_address () since it is broken on older gcc versions.
14993
14994 Tue Jul 31 17:34:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
14995
14996         * mini.c, mini.h, mini-exceptions.c: added a bit of documentation
14997         on the stack overflow handling and made the managed stack overflows
14998         catchable in most cases using soft guard pages.
14999         * exceptions-x86.c: added code to restore the protection in the soft
15000         guard pages at the end of exception handling.
15001
15002 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
15003
15004         * mini.c (SIG_HANDLER_SIGNATURE): Fix a warning.
15005
15006 Mon Jul 30 17:43:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
15007
15008         * exceptions-ppc.c, mini-ppc.h: arch-specific stack overflow
15009         exception handling.
15010
15011 Mon Jul 30 17:38:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
15012
15013         * mini-alpha.h, mini-ia64.h, mini-sparc.h: disable the altstack
15014         signal handling support until it has been ported to the new mechanism.
15015         * mini.c: fixed stack overflow detection and use the new
15016         architecture code  to handle signals on the altstack.
15017
15018 Mon Jul 30 17:33:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
15019
15020         * exceptions-amd64.c, mini-amd64.h: amd64 code to handle
15021         stack overflows on the alt stack.
15022
15023 Mon Jul 30 17:29:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
15024
15025         * exceptions-x86.c, mini-x86.h, mini.h: new code to handle
15026         stack overflows on the alt stack.
15027
15028 Mon Jul 30 11:50:06 CEST 2007 Paolo Molaro <lupus@ximian.com>
15029
15030         * exceptions-ppc.c: cleanup preparing for altstack support.
15031
15032 Mon Jul 30 11:31:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
15033
15034         * exceptions-arm.c: cleanup preparing for altstack support.
15035
15036 2007-07-27  Mark Probst  <mark.probst@gmail.com>
15037
15038         * mini.c (print_jit_stats): Output hazard pointer stats.
15039
15040 2007-07-26  Mark Probst  <mark.probst@gmail.com>
15041
15042         * driver.c, mini.c: Replaced security mode flags with a single
15043         enum variable.
15044
15045 Thu Jul 26 20:12:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
15046
15047         * mini.c, mini-exceptions.c: cleanup the sigaltstack code.
15048
15049 2007-07-25  Mark Probst  <mark.probst@gmail.com>
15050
15051         * mini.c, mini.h, driver.c (mono_main): Added command-line flag
15052         (which doesn't do anything yet) for activating Core CLR
15053         (Silverlight) security.
15054
15055 Tue Jul 24 21:16:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
15056
15057         * mini-codegen.c: work around a possible gcc bug on arm.
15058
15059 Tue Jul 24 17:20:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
15060
15061         * driver.c, mini-x86.h, mini-amd64.h: print a nice error
15062         message for platforms that don't support AOT compilation.
15063
15064 Mon Jul 23 10:29:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
15065
15066         * mini.h, mini.c, driver.c: temporary smcs hack.
15067
15068 Mon Jul 23 09:29:34 CEST 2007 Paolo Molaro <lupus@ximian.com>
15069
15070         * mini-arm.h, mini-arm.c: arm EABI fixes.
15071
15072 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
15073
15074         * exceptions-x86.c (mono_arch_find_jit_info): Handle the lmf->method == NULL
15075         case.
15076
15077         * tramp-x86.c (mono_arch_create_trampoline_code): Only set lmf->method for
15078         trampolines taking a method argument.
15079
15080         * mini-x86.h (MonoLMF): Add an 'esp' field plus comments.
15081
15082         * mini-x86.c (mono_arch_emit_prolog): Update after changes to the LMF structure.
15083         * tramp-x86.c (mono_arch_create_trampoline_code): Ditto.
15084
15085         * exceptions-x86.c (mono_arch_get_jit_info): Properly clean up the stack after
15086         JIT compilation throws an exception. Fixes #82050.
15087
15088 2007-07-19  Mark Probst  <mark.probst@gmail.com>
15089
15090         * mini.c: Removed the MonoLoaderErrorKind enum and replaced it
15091         with the MONO_EXCEPTION_ defines.
15092
15093 2007-07-17  Zoltan Varga  <vargaz@gmail.com>
15094
15095         * mini-amd64.c (mono_arch_find_imt_method): Handle mov reg,IMM64 case. Fixes
15096         #82117.
15097         
15098         * mini-amd64.c (mono_arch_find_imt_method): Add some debug code to help find out
15099         the cause of an assertion.
15100
15101 Mon Jul 16 19:31:21 CEST 2007 Paolo Molaro <lupus@ximian.com>
15102
15103         * mini.c, jit-icalls.c: mono_get_inflated_method() is obsolete,
15104         removed.
15105
15106 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
15107
15108         * mini-amd64.c (mono_arch_build_imt_thunk): Remove the non-32bit MonoMethod
15109         assert. Should fix #82103.
15110
15111 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
15112
15113         * mini-exceptions.c (mono_jit_walk_stack_from_ctx): Use MONO_CONTEXT_GET_SP ()
15114         here too. Fixes #82095.
15115
15116         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for non-32bit MonoMethod
15117         addresses.
15118
15119         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a couple asserts.
15120
15121         * mini-amd64.h: Enable IMT for amd64.
15122         
15123         * mini-amd64.c (mono_arch_build_imt_thunk): Optimize IMT thunk size.
15124
15125 2007-07-12  Zoltan Varga  <vargaz@gmail.com>
15126
15127         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for IMT call sequences.
15128
15129 2007-07-12  Mark Probst  <mark.probst@gmail.com>
15130
15131         * mini.c (check_linkdemand, mono_method_to_ir): Abort compilation
15132         as soon as check_linkdemand sets an exception_type.
15133
15134 Thu Jul 12 12:18:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
15135
15136         * mini-x86.c: fixed offsets for IMT call sequence.
15137         * mini-x86.h: enable IMT again.
15138
15139 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
15140
15141         * trace.c (mono_trace_enter_method): Decode MonoType too.
15142
15143         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Handle signed displacements too.
15144
15145         * mini.h mini-x86.h mini-trampolines.c: Change the signature of mono_arch_find_imt_method () to pass the calling code address too.
15146
15147         * mini-amd64.c: Add preliminary IMT implementation.
15148         
15149 Wed Jul 11 18:21:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
15150
15151         * mini-x86.c: adjusted mono_arch_get_vcall_slot_addr () to
15152         understand the new IMT-base interface invocation (thanks to
15153         Daniel Nauck for the report and the remote debugging session).
15154
15155 Wed Jul 11 14:54:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
15156
15157         * mini-x86.c: size and speed optimizations for the IMT bsearch.
15158
15159 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
15160
15161         * Makefile.am (aotcheck): Make this actually use the AOTed code.
15162
15163 Wed Jul 11 12:41:32 CEST 2007 Paolo Molaro <lupus@ximian.com>
15164
15165         * mini-trampolines.c: implement AOT IMT support.
15166         * mini-x86.h: enable IMT support for wider testing.
15167
15168 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
15169
15170         * inssel.brg (emit_imt_argument): Add aot support here.
15171
15172         * aot-runtime.c (decode_patch_info): Fix reading of MONO_PATCH_INFO_METHOD.
15173
15174 Tue Jul 10 17:50:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
15175
15176         * mini-x86.c, mini-x86.h, tramp-x86.c: x86 arch-specific changes
15177         of the IMT implementation, partially from massi, with my
15178         implementation of the bsearch sequence. Disabled by default until
15179         the AOT code is implemented.
15180
15181 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
15182
15183         * cpu-x86.md: The source argument of sext_i1/i2 must by a byte reg.
15184
15185         * inssel-x86.brg: Add reg:ldind.i1(regvar) rules. Fixes #82056.
15186
15187 Tue Jul 10 17:33:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
15188
15189         * inssel.brg, mini.c, mini.h, mini-trampolines.c:
15190         arch-independent IMT JIT code from Massimiliano
15191         Mantione (massi@ximian.com) with small cleanups from me.
15192
15193 Tue Jul 10 13:07:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
15194
15195         * Makefile.am: fix svn invocation to get the svn revision to be
15196         independent of the local language (build fix).
15197
15198 2007-07-09  Mark Probst  <mark.probst@gmail.com>
15199
15200         * mini.c (inline_method): Reset cfg->exception_type if the
15201         inlining is aborted.  Fixes: 82049.
15202
15203 Mon Jul 9 17:26:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
15204
15205         * mini.c: remove assert from exception handling code when exception_ptr
15206         is not set.
15207
15208 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
15209
15210         * mini.c (mono_codegen): Add an assert.
15211
15212         * mini-x86.c (mono_arch_emit_prolog): Allocate space for the profiler method 
15213         enter and leave code.
15214         * mini-amd64.c (mono_arch_emit_prolog): Likewise.
15215
15216 Thu Jul 5 20:12:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
15217
15218         * mini-ppc.c: fixed memory corruption for localloc(0)
15219         (bug #81852).
15220
15221 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
15222         
15223         * mini.c: Fix warnings.
15224
15225 Wed Jul 4 15:30:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
15226
15227         * optflags-def.h, mini-x86.c: added sse2 optimization flag and use it
15228         to emit better double->int conversions.
15229
15230 Tue Jul 3 19:42:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
15231
15232         * mini.c: the provided Min/Max optimizations are valid for unisgned
15233         ints.
15234
15235 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
15236
15237         * 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
15238
15239 2007-06-28  Miguel de Icaza  <miguel@novell.com>
15240
15241         * mini.c (mono_running_on_valgrind): Add support for reporting the
15242         method and  its boundaries to valgrind.
15243
15244 2007-06-28  Martin Baulig  <martin@ximian.com>
15245
15246         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
15247
15248 2007-06-25  Zoltan Varga  <vargaz@gmail.com>
15249
15250         * ssa.c (visit_inst): Add support for OP_BR. Fixes #81946.
15251
15252         * generic.2.cs: Add new test case.
15253
15254 2007-06-25  Martin Baulig  <martin@ximian.com>
15255
15256         Merged the `debugger-dublin' branch.
15257
15258         * debug-mini.c
15259         (mono_debugger_insert_method_breakpoint): New public method.
15260         (mono_debugger_remove_method_breakpoint): Likewise.
15261         (mono_debugger_check_breakpoints): New static method.
15262         (mono_debug_close_method): Call mono_debugger_check_breakpoints().
15263
15264         * debug-debugger.h (MonoDebuggerInfo):
15265         Renamed (to keep backward compatibility in the vtable):
15266         `insert_breakpoint' -> `old_insert_breakpoint'.
15267         `remove_breakpoint' -> `old_remove_breakpoint'.
15268         `create_string' -> `old_create_string'.
15269         `lookup_class' -> `old_lookup_class'.
15270         `lookup_type' -> removed; changed into a dummy field.
15271         `lookup_assembly' -> `old_lookup_assembly'.
15272         Added (same functionality, but different signature):
15273         `create_string', `lookup_class', `lookup_assembly'
15274         Added new:
15275         `get_method_addr_or_bpt', `remove_method_breakpoint',
15276         `runtime_class_init'.
15277
15278         * debug-debugger.c: Merged the `debugger-dublin' branch.
15279
15280 2007-06-23  Zoltan Varga  <vargaz@gmail.com>
15281
15282         * mini-amd64.c (peephole_pass_1): Optimize away moves at the beginning of the bb as
15283         well.
15284         (peephole_pass): Likewise.
15285
15286 Fri Jun 22 09:17:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
15287
15288         * driver.c: hopefully make setaffinity work also for ancient
15289         versions of linux.
15290
15291 2007-06-22  Atsushi Enomoto  <atsushi@ximian.com>
15292
15293         * driver.c : win32 build fix.
15294
15295 Thu Jun 21 19:24:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
15296
15297         * driver.c: check for the MONO_NO_SMP env var and bind to a single
15298         processor if it is set.
15299
15300 2007-06-21  Martin Baulig  <martin@ximian.com>
15301
15302         * debug-mini.h: New file.
15303
15304         * debug-mini.c
15305         (mono_debugger_insert_breakpoint_full): Moved here from
15306         ../metadata/mono-debug-debugger.c.
15307         (mono_debugger_remove_breakpoint): Likewise.
15308         (mono_debugger_breakpoint_callback): Likewise.
15309
15310 2007-06-15  Raja R Harinath  <rharinath@novell.com>
15311
15312         * jit-icalls.c (mono_helper_compile_generic_method): Update to
15313         changes in MonoGenericClass.
15314
15315 2007-06-14  Zoltan Varga  <vargaz@gmail.com>
15316
15317         * mini-codegen.c (mono_opcode_to_type): Fix ia64 build.
15318
15319 2007-06-14  Raja R Harinath  <rharinath@novell.com>
15320
15321         * jit-icalls.c (mono_helper_compile_generic_method): Update to
15322         removal of MonoGenericMethod.
15323
15324 Thu Jun 14 12:42:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
15325
15326         * mini-exceptions.c: hooks for the exception events profiling API.
15327
15328 2007-06-14  Randolph Chung  <tausq@debian.org>
15329
15330         * Makefile.ma: Add hppa target.
15331         * mini-arch.h: Include mini-hppa.h
15332         * cpu-hppa.md, exceptions-hppa.c, inssel-hppa.brg, mini-hppa.c,
15333         mini-hppa.h, tramp-hppa.c: New files for 32-bit HPPA port.
15334         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15335
15336 2007-06-14  Randolph Chung  <tausq@debian.org>
15337
15338         * inssel.brg: Add rules for "chained" compare-branch operations so that
15339         a single compare op can affect multiple branches.  Adjust cost for
15340         OP_CEQ/OP_CGT/OP_CGT_UN/OP_CLT/OP_CLT_UN.
15341         * inssel-long32.brg: Update rules to use compare-branch macros.  Adjust
15342         cost for some rules so that they can more easily be overridden by
15343         per-arch rules (with fixes from lupus).
15344         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15345
15346 2007-06-13  Randolph Chung  <tausq@debian.org>
15347
15348         * mini-ops.h: Reorder branch ops so that they match the order of the
15349         corresponding CEE_* ops.  The code expects them this way.
15350         Add new ops for HPPA target.
15351         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15352
15353 2007-06-13  Randolph Chung  <tausq@debian.org>
15354
15355         * mini-exceptions.c: Handle cases where the stack grows towards
15356         larger addresses.
15357         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15358
15359 Wed Jun 13 19:13:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
15360
15361         * jit-icalls.c, mini.h, mini.c: added virtual generic invoke
15362         counter.
15363         * driver.c: explain where a non-matching corlib is found.
15364
15365 2007-06-13  Mark Probst  <mark.probst@gmail.com>
15366
15367         * mini.c (print_jit_stats): Output dynamic code allocation stats.
15368
15369 2007-06-10  Sanghyeon Seo <sanxiyn@gmail.com>
15370
15371         * mini-exceptions.c: Generate a method profile leave event during
15372         an exception to ensure that the profiler gets notified.
15373
15374 2007-06-07  Zoltan Varga  <vargaz@gmail.com>
15375
15376         * mini-amd64.c (peephole_pass): Merge some small changes from the linear-ir 
15377         branch.
15378
15379         * cpu-amd64.md: Add long_and/or/xor opcodes.
15380
15381 2007-06-06  Wade Berrier  <wberrier@novell.com>
15382
15383         * cpu-s390x.md (shr_imm): Correct the length of shr_imm instruction.
15384         (./class/lib/monolite/mcs.exe:25498): WARNING **: wrong maximal instruction 
15385         length of instruction shr_imm (expected 8, got 10)
15386
15387 2007-06-06  Zoltan Varga  <vargaz@gmail.com>
15388
15389         * mini-ia64.c (mono_arch_output_basic_block): Really fix the build.
15390
15391 2007-06-06  Mark Probst  <mark.probst@gmail.com>
15392
15393         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
15394         MonoInternalHashTable again (fixed bug in the internal hash table
15395         code).
15396
15397 2007-06-06  Mark Probst  <mark.probst@gmail.com>
15398
15399         * mini.c, driver.c: Reverted the MonoInternalHashTable changes.
15400         Have to figure out what makes it crash the SWF regression.
15401
15402 2007-06-05  Zoltan Varga  <vargaz@gmail.com>
15403
15404         * mini-ia64.c (mono_arch_lowering_pass): Fix ia64 build.
15405
15406 Tue Jun 5 17:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
15407
15408         * mini.c: optimize out the type check when storing null in a
15409         reference array.
15410
15411 2007-06-04  Mark Probst  <mark.probst@gmail.com>
15412
15413         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
15414         MonoInternalHashTable.
15415
15416 Mon Jun 4 11:29:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
15417
15418         * inssel.brg, mini.c, mini-ops.h: optimized Math.Mini/Max
15419         signed integer methods.
15420
15421 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
15422
15423         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case 
15424         permanently since the current approach doesn't work.
15425
15426 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
15427
15428         * inssel.brg (stmt): Only call delegate->invoke_impl if 
15429         MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE is defined.
15430
15431 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
15432
15433         * mini-amd64.c (mono_arch_output_basic_block): Unify div/rem opcodes and handle
15434         the sreg2==rdx case.
15435         
15436         * mini-amd64.c cpu-amd64.md: Correct length of r4const instruction and take into
15437         account if it contains a rex prefix.
15438         (peephole_pass): Handle OP_FMOVE as well.
15439
15440 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
15441
15442         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case for now
15443         as it causes regressions.
15444
15445 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
15446
15447         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement support for the
15448         static case as well.
15449
15450         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix ia64 build.
15451
15452         * mini-x86.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
15453         (mono_arch_get_this_arg_from_call): Ditto.
15454
15455         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Removed.
15456
15457         * inssel.brg (mini_emit_virtual_call): Call delegate->Invoke through the delegate's
15458         invoke_impl field.
15459
15460         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
15461         (mono_arch_get_this_arg_from_call): Ditto.
15462
15463         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Removed.
15464         
15465         * mini-trampolines.c (mono_delegate_trampoline): Complete rewrite. On first call,
15466         try to create optimized invoke code and use that for further invocations. 
15467         Otherwise, use the original mono_marshal_get_delegate_invoke () implementation.
15468
15469         * mini-x86.h mini-ia64.h: Remove MONO_ARCH_HAS_CREATE_DELEGATE_TRAMPOLINE for now.
15470
15471 2007-05-29  Rodrigo Kumpera  <kumpera@gmail.com>
15472
15473         * inssel.brg (mini_emit_virtual_call): Statically dispatch virtual calls to
15474         sealed classes or methods.
15475         *devirtualization.cs: tests for the new optimization
15476
15477 2007-05-29  Zoltan Varga  <vargaz@gmail.com>
15478
15479         * liveness.c (update_gen_kill_set): No need to set VOLATILE flags here, it is done
15480         by the update_volatile () function.
15481
15482 2007-05-27  Zoltan Varga  <vargaz@gmail.com>
15483
15484         * driver.c (mono_main): Call g_thread_init () early since newer glib versions
15485         require it.
15486
15487         * abcremoval.c (mono_perform_abc_removal): Avoid using alloca.
15488
15489 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
15490
15491         * mini.c: Add configure checks for header files.
15492         * mini-x86.c: Add configure checks for header files.
15493         * trace.c: Add configure checks for header files.
15494         * aot-runtime.c: Add configure checks for header files.
15495         * aot-compiler.c: Add configure checks for header files.
15496         * driver.c: Add configure checks for header files.
15497         * mini-codegen.c: Add configure checks for header files.
15498         
15499         Code is contributed under MIT/X11 license.
15500
15501 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
15502
15503         * mini-ia64.c (mono_arch_lowering_pass): Fix the handling of
15504         icompare_imm -128 + op_iclt. Fixes #81703.
15505
15506 2007-05-19  Zoltan Varga  <vargaz@gmail.com>
15507
15508         * mini-codegen.c (mono_local_regalloc): Fix long-shift-regalloc on amd64.
15509
15510 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
15511
15512         * inssel.brg: added "mini_emit_load_intf_bit_reg_vtable", and used it
15513         inside "mini_emit_isninst_iface_cast" and "mini_emit_castclass_iface"
15514         so that all isinst checks now use "interface_bitmap".
15515
15516 2007-05-15  Zoltan Varga  <vargaz@gmail.com>
15517
15518         * cpu-amd64.md (jmp): Fix a warning.
15519
15520         * inssel.brg (CEE_SWITCH): Hopefully fix #80738.
15521
15522         * basic.cs: Add new regression test.
15523
15524         * basic.cs: Remove test which is now in basic-long.cs.
15525
15526         * mini-ia64.c (mono_arch_output_basic_block): Sign extend in CEE_CONV_I8/CEE_CONV_I.
15527
15528         * basic-long.cs: Add new test.
15529         
15530 2007-05-13  Zoltan Varga  <vargaz@gmail.com>
15531
15532         * mini-sparc.c (mono_spillvar_offset_float): Fix sparc build.
15533
15534 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
15535
15536         * cpu-x86.md minix-86.c: Add a peephole_pass_1 () as on amd64.
15537
15538         * mini-x86.c (mono_arch_output_basic_block): Use mono_opcode_to_cond () in a few
15539         places.
15540         
15541         * mini-x86.c (mono_arch_emit_exceptions): Decrease the size of the exception 
15542         throwing code a bit.
15543
15544         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Decrease the size of 
15545         the exception throwing code a bit.
15546
15547         * mini-x86.c (get_call_info): Allocate result from a mempool.
15548
15549 2007-05-11  Zoltan Varga  <vargaz@gmail.com>
15550
15551         * aot-compiler.c (find_typespec_for_class): Fix the assert.
15552
15553         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
15554
15555         * mini.h (MonoCompile): Add 'token_info_hash' field.
15556
15557         * mini.c: Save token->method associations during compilation so the AOT 
15558         compiler can use it.
15559         
15560         * aot-compiler.c aot-runtime.c: Add support for compiling non-generic methods
15561         which reference generic classes and methods.
15562
15563 2007-05-10  Zoltan Varga  <vargaz@gmail.com>
15564
15565         * mini.h mini-<ARCH>.h: Get rid of MONO_ARCH_HAS_XP_LOCAL_REGALLOC.
15566
15567         * aot-compiler.c (compile_method): Fix a typo in a comment.
15568
15569         * aot-runtime.c (decode_cached_class_info): Skip generic types.
15570
15571         * aot-compiler.c: Add minimal support for AOTing generic code by skipping 
15572         everything generic.
15573
15574         * mini.c (mono_method_to_ir): Disable AOT when calling helper_compile_generic_method.
15575
15576 2007-05-09  Zoltan Varga  <vargaz@gmail.com>
15577
15578         * mini.h (MonoCompile): Add 'args' field.
15579
15580         * mini.c (mono_compile_create_vars): Store variables representing the arguments
15581         into cfg->args.
15582
15583         * mini-<ARCH>.c: Use cfg->args for accessing the method arguments.
15584
15585 2007-05-08  Zoltan Varga  <vargaz@gmail.com>
15586
15587         * mini.c (mono_compile_get_interface_var): Remove this unused function.
15588
15589         * mini-ops.h inssel.brg mini-<ARCH>.c: Add a new opcode for ckfinite as well.
15590
15591         * mini-ops.h: Introduce new opcodes used in the IR instead of the original CEE_
15592         opcodes for some opcodes.
15593
15594         * mini.h *.brg *.c: Use the new opcodes.
15595
15596 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
15597
15598         * mini.h: Bumped aot revision.
15599
15600         * inssel.brg: modified code generation of type checks for interfaces
15601         to use the new "MonoClass.interface_bitmap" instead of the old
15602         "MonoClass.interface_offsets".
15603
15604 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
15605
15606         * cpu-amd64.md (jmp): Increase the maximum size of the jmp opcode to 128.
15607
15608 2007-04-29  Zoltan Varga  <vargaz@gmail.com>
15609
15610         * abcremoval.c (summarize_integer_value): Handle OP_LCONV_TO_I4 to fix abcrem on
15611         64 bit platforms.
15612
15613 2007-04-27  Neale Ferguson <neale@sinenomine.net>
15614
15615         * mini-s390x.c: Fix MONO_TYPE_VALUETYPE processing.
15616
15617 2007-04-27  Wade Berrier  <wberrier@novell.com>
15618
15619         * mini-s390x.c: Remove redeclaration of CompRelation and CompType (defined in 
15620         mini.h) to fix build.
15621
15622 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
15623
15624         * mini-amd64.c (peephole_pass_1): Fix and reenable this pass.
15625         
15626         * mini-amd64.c (mono_arch_local_regalloc): Disable the new peephole_pass_1 as it
15627         causes the corlib unit tests to fail.
15628
15629 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
15630
15631         * mini-codegen.c (mono_opcode_to_type): Fix a bug in the previous patch.
15632
15633         * mini-amd64.c (peephole_pass_1): New pass to perform before local regalloc.
15634
15635         * mini-codegen.c (mono_opcode_to_cond): New helper function to convert conditional 
15636         opcodes to the comparison relations.
15637
15638         * mini-codegen.c (mono_opcode_to_type): New helper function to convert conditional 
15639         opcodes to their types.
15640         
15641         * mini-ia64.c mini-amd64.c: Use mono_opcode_to_cond and mono_opcode_to_type.
15642
15643         * mini-amd64.c (get_call_info): Allocate the result from the cfg mempool and cache 
15644         it in cfg->arch.cinfo.
15645
15646         * local-propagation.c (mono_local_cprop_bb): Fix a warning.
15647
15648         * mini.h mini.c branch-opts.c: Change bbhash to be an array and store it in 
15649         cfg->cil_offset_to_bb.
15650
15651 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
15652
15653         * liveness.c (optimize_initlocals): New mini-pass to optimize away dead assignments
15654         created becase of initlocals.
15655
15656 2007-04-23  Zoltan Varga  <vargaz@gmail.com>
15657
15658         * mini-alpha.c cpu-alpha.md: More alpha port work from 
15659         Sergey Tikhonov <tsv@solvo.ru>.
15660
15661 2007-04-21  Andreas Faerber  <andreas.faerber@web.de>
15662
15663         * Makefile.am (BUILT_SOURCES): Fix for automake 1.6.x. Fixes #81417.
15664
15665 2007-04-19  Zoltan Varga  <vargaz@gmail.com>
15666
15667         * cpu-s390.md (break): Correct the length of break instruction.
15668
15669 Thu Apr 19 16:28:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
15670
15671         * mini.c: fix a couple of soft-float issues and comments.
15672
15673 2007-04-15  Miguel de Icaza  <miguel@novell.com>
15674
15675         * trace.c (is_filenamechar): - is also a filename char.
15676
15677 2007-04-15  Neale Ferguson <neale@sinenomine.net>
15678
15679         * mini-s390.c: Correct checking for enum type in return value processing.
15680
15681 2007-04-14  Raja R Harinath  <rharinath@novell.com>
15682
15683         * Makefile.am (BUILT_SOURCES): Add 'version.h'.
15684         (version.h): Makefile is in the build directory.
15685
15686 2007-04-06  Andreas Faerber  <andreas.faerber@web.de>
15687
15688         * mini-amd64.h: fix for assertion failure on Solaris/amd64
15689
15690 2007-04-11  Martin Baulig  <martin@ximian.com>
15691
15692         * mini.c (can_access_member): Fix handling of generic classes;
15693         fixes #81259.
15694
15695 2007-04-10  Zoltan Varga  <vargaz@gmail.com>
15696
15697         * aot-runtime.c (mono_aot_plt_resolve): Fix disabling of AOT. Fixes #81316.
15698
15699 2007-04-05  Zoltan Varga  <vargaz@gmail.com>
15700
15701         * aot-runtime.c: Fix disabling of AOT. Fixes #81316.
15702
15703 Fri Mar 23 20:25:31 CET 2007 Paolo Molaro <lupus@ximian.com>
15704
15705         * mini-codegen.c: make sure the right spill amount is
15706         used for fp or integer registers (fixes the float_sub_spill() on ppc).
15707
15708 Fri Mar 23 19:43:35 CET 2007 Paolo Molaro <lupus@ximian.com>
15709
15710         * mini-ppc.c: fixes for the fp_branch_nan test.
15711
15712 2007-03-23  Zoltan Varga  <vargaz@gmail.com>
15713
15714         * basic.cs: Comment out new test which still fails on ia64.
15715
15716 Fri Mar 23 15:54:23 CET 2007 Paolo Molaro <lupus@ximian.com>
15717
15718         * mini.c: immediate shifted or fix (mono_metadata_user_string assert).
15719
15720 Fri Mar 23 12:53:28 CET 2007 Paolo Molaro <lupus@ximian.com>
15721
15722         * mini-ppc.c, mini-ppc.h: struct passing ABI fix (bug #77968).
15723
15724 2007-03-22  Zoltan Varga  <vargaz@gmail.com>
15725
15726         * cfold.c (FOLD_BINOP): Cast the result to gint32 to prevent overflow problems
15727         on 64 bit machines. Fixes part of #80738.
15728
15729         * basic.cs: Add regression test.
15730
15731 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
15732
15733         * inssel.brg basic.cs: Revert previous change to fix build.
15734
15735         * inssel.brg (SWITCH): Clean out the upper word of the switch value on 64 bit
15736         platforms.
15737         
15738         * inssel.brg (SWITCH): Use an integer comparison. Fixes #80738.
15739
15740         * basic.cs: Add new regression test.
15741
15742 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
15743
15744         * mini-ia64.c (mono_arch_emit_prolog): Fix an assert when a function has too
15745         many arguments.
15746
15747 2007-03-16  Neale Ferguson <neale@sinenomine.net>
15748
15749         * cpu-s390x.md: Correct length of break instruction.
15750
15751 2007-03-16  Neale Ferguson <neale@sinenomine.net>
15752
15753         * mini-s390x.c, cpu-s390x.md: Fix #80507 for s390x.
15754         * mini-s390.c, cpu-s390.md: Fix #80507 for s390.
15755
15756 2007-03-15  Jonathan Chambers  <joncham@gmail.com>
15757
15758         * *.c: Begin WIN64 port.
15759         * mini.c:  Use correct register in profiler.
15760         * mini-amd64.c: No inline assembly on Win64.
15761         * mini-amd64.h: Implement MONO_INIT_CONTEXT_FROM_FUNC for Win64.
15762         Only define MONO_ARCH_USE_SIGACTION on non-windows platforms.
15763         * exceptions-amd64.c: Only need gregs_from_ucontext if MONO_ARCH_USE_SIGACTION
15764         is defined. Implement mono_arch_sigctx_to_monoctx, mono_arch_monoctx_to_sigctx, and
15765         mono_arch_ip_from_context for Win64.
15766         
15767         Contributed under MIT/X11 license.
15768
15769 2007-03-15  Zoltan Varga  <vargaz@gmail.com>
15770
15771         * exceptions-amd64.c (seh_handler): Ditto.
15772
15773         * exceptions-x86.c (seh_handler): Fix a memory leak.
15774
15775 Thu Mar 15 13:47:59 CET 2007 Paolo Molaro <lupus@ximian.com>
15776
15777         * mini-arm.c, mini-mips.c, mini-ppc.c, mini-s390.c,
15778         mini-s390x.c: fixed peephole optimizations to deal
15779         correctly with 1 and 2 byte reload avoidance.
15780
15781 Thu Mar 15 10:17:54 CET 2007 Paolo Molaro <lupus@ximian.com>
15782
15783         * cpu-s390.md, cpu-s390x.md: update localloc length.
15784
15785 Wed Mar 14 21:00:19 CET 2007 Paolo Molaro <lupus@ximian.com>
15786
15787         * cpu-g4.md: added missing descriptions.
15788
15789 2007-03-14  Miguel de Icaza  <miguel@novell.com>
15790
15791         *  Makefile.am: Add support so the tail tests are not executed on
15792         PowerPC as that is a known limitation of the PowerPC port.
15793
15794 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
15795
15796         * runmdesc.bat:  Move to msvc directory.
15797         
15798 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
15799
15800         * runmdesc.bat:  Run executable that was produced by the current
15801         target and sent via an argument.
15802         
15803 2007-03-11  Zoltan Varga  <vargaz@gmail.com>
15804
15805         * mini.c (mono_method_to_ir): Fix box+brtrue optimization. Fixes
15806         #81102.
15807
15808         * generics.2.cs: Add regression test.
15809
15810 2007-03-09  Wade berrier  <wberrier@novell.com>
15811
15812         * mini-ppc.h: Undo typo of MONO_CONTEXT_SET_SP (ppc doesn't define this symbol)
15813
15814 2007-03-09  Zoltan Varga  <vargaz@gmail.com>
15815
15816         * aot-runtime.c (load_aot_module): Load all dependent assemblies eagerly since all
15817         AOT code depends on this.
15818
15819 Thu Mar 8 19:36:13 CET 2007 Paolo Molaro <lupus@ximian.com>
15820
15821         * mini.c: more precise tracking of types in the eval stack
15822         (part of fix for bug #81044).
15823
15824 2007-03-07  Zoltan Varga  <vargaz@gmail.com>
15825
15826         * aot-runtime.c (mono_aot_get_class_from_name): Add a cache.
15827
15828         * aot-compiler.c (encode_patch): Remove an obsolete comment.
15829
15830 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
15831
15832         * mini-exceptions.c (mono_handle_native_sigsegv): Fix a warning.
15833
15834         * mini.c (mono_method_to_ir): Add a workaround for bug #80733.
15835
15836 2007-02-22  Zoltan Varga  <vargaz@gmail.com>
15837
15838         * mini.c (type_from_op): Convert CEE_CONV_U to OP_LCONV_TO_U when the argument is
15839         a pointer on 64 bit systems. Fixes #80190.
15840
15841         * iltests.il: Add new regression test.
15842
15843 Tue Feb 20 11:33:28 CET 2007 Paolo Molaro <lupus@ximian.com>
15844
15845         * mini.c: inline a constant for Environment.IsRunningOnWindows.
15846
15847 2007-02-19  Geoff Norton  <gnorton@customerdna.com>
15848
15849         * trace.c: Remove an erroneous alignemnt check when tracing.
15850           Fixes --trace on OSX86.
15851
15852 Wed Feb 14 19:45:56 CET 2007 Paolo Molaro <lupus@ximian.com>
15853
15854         * mini-$(arch).h: initialize SP in context for all the archs.
15855
15856 2007-02-14  Sebastien Pouliot  <sebastien@ximian.com>
15857
15858         * mini-x86.h: Initialize SP in MONO_INIT_CONTEXT_FROM_FUNC. Fix CAS
15859         regressions in the thread tests.
15860
15861 2007-02-14  Zoltan Varga  <vargaz@gmail.com>
15862
15863         * *-alpha.*: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>:
15864         - fixed implementation of LOCALLOC opcode
15865         - implemented non-un compare for floats
15866         - code cleanup
15867         - implementation of FDIV and CKFINITE opcodes
15868         - fixes for latest mono updates
15869         - additional arch opcodes
15870
15871 Mon Feb 12 11:54:16 CET 2007 Paolo Molaro <lupus@ximian.com>
15872
15873         * Makefile.am: simplify and merge rules for cross-compilation.
15874
15875 2007-02-07  Massimiliano Mantione  <massi@ximian.com>
15876
15877         * local-propagation.c: Actually *apply* the fix for bug 80591...
15878
15879 Tue Feb 6 19:03:19 CET 2007 Paolo Molaro <lupus@ximian.com>
15880
15881         * mini-exceptions.c: backuot part of the last change
15882         (fixes cas tests on amd64 related to GetExecutingAssembly ()).
15883
15884 2007-02-06  Massimiliano Mantione  <massi@ximian.com>
15885         * inssel.brg: Fix bug 59286.
15886
15887
15888 Tue Feb 6 12:23:50 CET 2007 Paolo Molaro <lupus@ximian.com>
15889
15890         * mini-exceptions.c: patch from Zoltan to correctly check for
15891         stack boundaries (using the stack register, not the frame register),
15892         fixes bugs #80724, #79717.
15893
15894 2007-02-03  Zoltan Varga  <vargaz@gmail.com>
15895
15896         * mini-ia64.c inssel-sparc.brg mini-sparc.c cpu-sparc.md: Get rid of OP_SETREG/
15897         OP_SETREGIMM, use OP_MOVE/OP_ICONST instead.
15898
15899         * mini-amd64.c (mono_arch_output_basic_block): Fix ATOMIC_EXCHANGE in the
15900         presence of frame pointer elimination.
15901
15902 2007-02-01  Geoff Norton  <gnorton@customerdna.com>
15903         
15904         * mini-x86.h: NetBSD UCONTEX_REG defines.
15905
15906 2007-02-01  Zoltan Varga  <vargaz@gmail.com>
15907
15908         * inssel-amd64.brg: Fix amd64 build.
15909
15910 Thu Feb 1 14:02:09 CET 2007 Paolo Molaro <lupus@ximian.com>
15911
15912         * mini.h: remove extern to workaround what looks likes gcc bug 26905
15913         on amd64.
15914
15915 2007-01-31  Zoltan Varga  <vargaz@gmail.com>
15916
15917         * mini-codegen.c (mono_is_regsize_var): New helper function usable by the back
15918         ends.
15919
15920         * mini-<ARCH>.c: Use mono_is_regsize_var ().
15921
15922 2007-01-30 Mark Mason <mason@broadcom.com>
15923
15924            * exceptions-mips.c: Lots of exception handling fixes, LMFs now work, some cleanups.
15925            * mini-mips.h: Add LMF magic numbers, and fix context set/get macros.
15926            * mini-mips.c: Cleanups, LMF handling now works, optimize store of zero, implement localloc
15927            beginning support for CEE_JMP [not quite working yet]
15928            * tramp-mips.c: LMF handling now works
15929         
15930 2007-01-30  Zoltan Varga  <vargaz@gmail.com>
15931
15932         * mini-amd64.c (peephole_pass): Optimize code common in initlocals blocks.
15933
15934         * mini.h (NULLIFY_INS): New macro.
15935
15936 Tue Jan 30 16:33:33 CET 2007 Paolo Molaro <lupus@ximian.com>
15937
15938         * mini.c: statistical profiler fix for windows, patch
15939         from Tor Lillqvist (tml@novell.com).
15940
15941 2007-01-30  Massimiliano Mantione  <massi@ximian.com>
15942         * local-propagation.c: Fix bug 80591.
15943
15944 Mon Jan 29 12:14:34 CET 2007 Paolo Molaro <lupus@ximian.com>
15945
15946         * Makefile.am: put back the --export-dynamic option as with
15947         the previous gmodule flags (thanks to Robert Jordan).
15948
15949 2007-01-28  Zoltan Varga  <vargaz@gmail.com>
15950
15951         * mini-sparc.c (peephole_pass): Fix #80622 for sparc as well.
15952
15953         mini.h *.c: Allocate fp vregs from the same pool as the int vregs. Use this to
15954         simplify and speed up the local register allocator. Also rename some fields
15955         like iassign->vassign.
15956         
15957         * regalloc.c: Remove some functions which are no longer used since their
15958         inlined version is in mini-codegen.c.
15959         
15960         * mini-codegen.c: Rename mono_regstate2_ functions to mono_regstate_.
15961
15962         * basic.cs objects.cs iltests.il: Merge tests from the linear IL branch.
15963
15964 2007-01-27  Zoltan Varga  <vargaz@gmail.com>
15965
15966         * mini-amd64.c (peephole_pass): Remove optimizations which omit a 
15967         narrowing. Fixes #80622.
15968
15969         * iltests.il: Add new regresssion test. 
15970
15971 Fri Jan 26 18:31:45 CET 2007 Paolo Molaro <lupus@ximian.com>
15972
15973         * mini.h, mini-trampolines.c, aliasing.c, mini-codegen.c,
15974         debug-debugger.c, debug-debugger.h: warning fixes.
15975         * driver.c: updated copyright year and made it fit in one line.
15976
15977 Fri Jan 26 12:48:39 CET 2007 Paolo Molaro <lupus@ximian.com>
15978
15979         * aot-runtime.c: updated to use mono-dl instead of gmodule.
15980
15981 2007-01-25  Zoltan Varga  <vargaz@gmail.com>
15982
15983         * mini-x86.c (mono_arch_output_basic_block): Fix #80507 for x86.
15984
15985         * mini-amd64.c (mono_arch_output_basic_block): Fix #80507 for amd64.
15986
15987         * iltests.il: Add new test for bug #80507.
15988
15989 Wed Jan 24 19:10:28 CET 2007 Paolo Molaro <lupus@ximian.com>
15990
15991         * mini-arm.h: use soft-float also on vfp for now.
15992
15993 Wed Jan 24 14:54:40 CET 2007 Paolo Molaro <lupus@ximian.com>
15994
15995         * mini.c: fix some more soft-float issues.
15996
15997 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
15998
15999         * mini-sparc.h (MONO_ARCH_FRAME_ALIGNMENT): Fix sparc build.
16000
16001 2007-01-24  Massimiliano Mantione  <massi@ximian.com>
16002         * mini-arch.h, , inssel-amd64.brg, mini-x86.c, inssel-x86.brg,
16003         mini-ia64.c, mini-sparc.c, mini-alpha.c: Introduced
16004         MONO_ARCH_LOCALLOC_ALIGNMEENT to fix bug 80498.
16005
16006 Wed Jan 24 12:04:39 GMT 2007 Paolo Molaro <lupus@ximian.com>
16007
16008         * mini-arm.c: typo fix.
16009
16010 2007-01-23  Neale Ferguson <neale@sinenomine.net>
16011
16012         * mini-s390x.c: Use lgb instructions for I1 type variables instead of lb.
16013
16014 2007-01-21  Zoltan Varga  <vargaz@gmail.com>
16015
16016         * mini.c (mono_allocate_stack_slots_full): Allocate memory from the cfg mempool.
16017         Share stack slots for scalar types. Avoid expensive g_list_free () calls.
16018
16019         * mini-x86.c (mono_arch_allocate_vars): Don't free the result of allocate_stack_slots_full.
16020
16021         * mini-amd64.c mini-ia64.c mini-alpha.c: Ditto. 
16022
16023         * mini.h (MonoJitStats): Add a new JIT statistics: locals_stack_size.
16024         
16025         * inssel.brg: Fix a warning.
16026
16027         * mini.h (MonoBasicBlock): Make bb->dominated a GSList.
16028
16029         * abcremoval.c ssa.c ssapre.c: Update after this change.
16030         
16031         * dominators.c (compute_dominators): Allocate bb->dominated from the cfg mempool.
16032
16033         * dominators.c (df_set): Use mono_bitset_union_fast.    
16034
16035 Sat Jan 20 16:59:01 CET 2007 Paolo Molaro <lupus@ximian.com>
16036
16037         * mini.h, genmdesc.c, genmdesc.pl, mini-${arch}.c, cprop.c,
16038         mini-codegen.c: reduce relocations and memory usage for the cpu
16039         description.
16040
16041 2007-01-20  Zoltan Varga  <vargaz@gmail.com>
16042
16043         * mini-codegen.c (mono_regstate2_alloc_int): Optimize this using bsfq on amd64.
16044
16045         * genmdesc.c genmdesc.pl mini.h: Remove some unused fields from the mdesc tables
16046         to reduce their size.
16047
16048 2007-01-19 Mark Mason <mason@broadcom.com>
16049
16050         * exceptions-mips.c: fix mono_arch_ip_from_context(), increase exception debug support.
16051         * mini-mips.c: more configuration macros, support long conditional branches, additional
16052         asserts, fix epilog instrumentation.
16053         * mini-mips.h: use standard stack walk
16054         * cpu-mips.md: increase size of div, rem and conditional branches
16055         
16056 Fri Jan 19 17:23:32 CET 2007 Paolo Molaro <lupus@ximian.com>
16057
16058         * mini.h, mini-codegen.c, mini-$(arch).h: claenup references
16059         to cpu spec data.
16060
16061 2007-01-19  Zoltan Varga  <vargaz@gmail.com>
16062
16063         * aot-compiler.c (encode_klass_info): Allow classes of the form <Type>[][].
16064         (compile_method): Ditto.
16065
16066         * aot-runtime.c (decode_klass_info): Ditto.
16067
16068         * mini.c (mono_method_to_ir): Call mono_get_got_var () in a place where it is
16069         needed by the code generated by inssel.brg. Also fix a warning.
16070
16071 Thu Jan 18 17:55:22 CET 2007 Paolo Molaro <lupus@ximian.com>
16072
16073         * mini.c: deal with enums that become genericinsts by
16074         being nested in a generic class (bug #79956).
16075
16076 Thu Jan 18 16:52:56 CET 2007 Paolo Molaro <lupus@ximian.com>
16077
16078         * mini.c: match the generic definition to check for
16079         private access with generic types (bug #78431).
16080
16081 Thu Jan 18 11:50:13 CET 2007 Paolo Molaro <lupus@ximian.com>
16082
16083         * genmdesc.pl, Makefile.am: perl implementation of genmdesc,
16084         to make life easier for people cross-compiling that insist on not
16085         using scratchbox.
16086
16087 2007-01-17 Mark Mason <mason@broadcom.com>
16088
16089         * inssel-long.brg: patch to deal with mips missing flags
16090         * inssel-long32-mips.brg: implement overflow checks
16091         * insset-mips.brg: implement overflow checks
16092         * mini-mips.h: implement conditional exception handling
16093         * mini-mips.c: add mips_emit_exc_by_name(), implement conditional exception handling.
16094           Remove unused code, minor cleanups.
16095         * exceptions-mips.c: minor cleanups
16096         * mini-ops.h: add mips conditional exception ops
16097         * cpu-mips.md: add mips conditional exception ops
16098
16099         
16100 Wed Jan 17 19:22:34 CET 2007 Paolo Molaro <lupus@ximian.com>
16101
16102         * inssel.brg: patch from Mark Mason <mason@broadcom.com>
16103         to deal with mips missing of flags.
16104
16105 Tue Jan 16 20:01:01 CET 2007 Paolo Molaro <lupus@ximian.com>
16106
16107         * exceptions-ppc.c: execute fault handlers.
16108
16109 Tue Jan 16 19:54:44 CET 2007 Paolo Molaro <lupus@ximian.com>
16110
16111         * mini-ppc.c: handle missing call locationss with FORCE_INDIR_CALL.
16112
16113 Tue Jan 16 13:14:31 CET 2007 Paolo Molaro <lupus@ximian.com>
16114
16115         * mini.c: handle also floating point values in initialize_array.
16116
16117 Tue Jan 16 12:42:40 CET 2007 Paolo Molaro <lupus@ximian.com>
16118
16119         * mini.c, aot-runtime.c, aot-compiler.c: enable aot compilation of
16120         array initialization and make it conditional on the intrins option.
16121
16122 Tue Jan 16 11:28:45 CET 2007 Paolo Molaro <lupus@ximian.com>
16123
16124         * mini.h, patch-info.h, Makefile.am, aot-compiler.c: reduce
16125         relocations and put the patch info names close to the enum definition.
16126
16127 2007-01-15 Mark Mason <mason@broadcom.com>
16128
16129         * basic.cs, exceptions.cs: break up large tests to increase debugability.
16130
16131 Mon Jan 15 18:57:14 CET 2007 Paolo Molaro <lupus@ximian.com>
16132
16133         * mini.c: optimized RuntimeHelpers::InitializeArray () calls.
16134
16135 2007-01-12  Raja R Harinath  <rharinath@novell.com>
16136
16137         * mini.c (mono_method_to_ir): Use new MonoGenericContext accessor.
16138
16139 Thu Jan 11 11:16:42 CET 2007 Paolo Molaro <lupus@ximian.com>
16140
16141         * Makefile.am: distribute the mips sources.
16142
16143 Wed Jan 10 19:49:33 CET 2007 Paolo Molaro <lupus@ximian.com>
16144
16145         * mini-codegen.h: handle bug #80489 here, by excluding ecx
16146         directly.
16147
16148 Wed Jan 10 19:08:05 CET 2007 Paolo Molaro <lupus@ximian.com>
16149
16150         * cpu-x86.md: back out for now as this triggers other regressions.
16151
16152 Wed Jan 10 18:33:16 CET 2007 Paolo Molaro <lupus@ximian.com>
16153
16154         * cpu-x86.md: force src1 and dest regpair for long shift instructions
16155         to eax:edx, so ecx can't get allocated to them (bug #80489).
16156
16157 Tue Jan 9 12:36:11 CET 2007 Paolo Molaro <lupus@ximian.com>
16158
16159         * mini.c, mini-exceptions.c: enabled running fault handlers
16160         (bug #80469).
16161
16162 2007-01-03  Miguel de Icaza  <miguel@novell.com>
16163
16164         * driver.c: If nothing fail, do not use the string "failed",
16165         because it makes it very annoying to view test result logs on the
16166         web. 
16167
16168 2006-12-30  Miguel de Icaza  <miguel@novell.com>
16169
16170         * debug-debugger.c (mono_debugger_main): Rename "main" to
16171         "main_method" to prevent a warning.
16172
16173         Remove a warning for unused field.
16174
16175 2006-12-28  Martin Baulig  <martin@ximian.com>
16176
16177         * debug-debugger.c
16178         (MONO_DEBUGGER__debugger_info): Add `get_lmf_addr'.
16179
16180 2006-12-22  Martin Baulig  <martin@ximian.com>
16181
16182         * mdb-debug-info32.s, mdb-debug-info64.s: New files.
16183         Put a pointer to the `MONO_DEBUGGER__debugger_info' into a
16184         seperate `.mdb_debug_info' section, so we can access it from the
16185         debugger even if the binary is stripped.
16186
16187         * debug-debug.c: Reference the `MONO_DEBUGGER__debugger_info_ptr'
16188         from the `.mdb_debug_info' here to prevent the linker from
16189         removing that section.
16190
16191         * Makefile.am (mono_debugger_sources): Add mdb-debug-info32.s /
16192         mdb-debug-info64.s.
16193
16194 2006-12-19  Robert Jordan  <robertj@gmx.net>
16195
16196         * mini-x86: enable the code to return small structures in
16197         registers for FreeBSD as well. Fixes bug #80278.
16198         * aot-runtime.c: Include sys/wait.h for WEXITSTATUS/WIFEXITED.
16199
16200 Mon Dec 18 19:47:17 CET 2006 Paolo Molaro <lupus@ximian.com>
16201
16202         * mini-x86.c: align the stack when calling the profiler
16203         function instrumenting the prolog (on OSX).
16204
16205 Thu Dec 14 15:22:43 CET 2006 Paolo Molaro <lupus@ximian.com>
16206
16207         * mini.c: emit a break opcode where Debugger.Break () is called.
16208
16209 2006-12-13  Miguel de Icaza  <miguel@novell.com>
16210
16211         * mini.c (mono_method_to_ir): Provide useful information on this
16212         assert, to prevent others from debugging like I did.
16213
16214 Tue Dec 12 17:01:38 CET 2006 Paolo Molaro <lupus@ximian.com>
16215
16216         * mini.c: enable code which was incorrectly commented
16217         (bug #80235).
16218
16219 Tue Dec 12 16:28:15 CET 2006 Paolo Molaro <lupus@ximian.com>
16220
16221         * mini-x86.c: enable on OSX, too, the code to return small
16222         structures in registers.
16223
16224 Mon Dec 11 19:22:35 CET 2006 Paolo Molaro <lupus@ximian.com>
16225
16226         * mini-x86.c: remove the use of the dynamic code manager here, too.
16227
16228 Mon Dec 11 19:08:33 CET 2006 Paolo Molaro <lupus@ximian.com>
16229
16230         * mini.h, debug-debugger.c, tramp-*.c: fixed 
16231         mono_debugger_create_notification_function() to use
16232         mono_global_codeman_reserve () instead of a dynamic code manager.
16233
16234 Tue Dec 5 17:54:50 CET 2006 Paolo Molaro <lupus@ximian.com>
16235
16236         * mini.c, jit-icalls.h, jit-icalls.c: remove the 
16237         ves_array_element_address() jit icall and use a generated
16238         managed method instead (which is about 4 times faster for a rank 3
16239         array access).
16240
16241 2006-11-29  Mark Mason  <mason@broadcom.com>
16242
16243         * basic-calls.cs: additional tests for passing
16244         structures as function arguments.
16245
16246 2006-11-29  Mark Mason  <mason@broadcom.com>
16247
16248         * mini-mips.h: disable custom exception handling
16249         * mini-mips.c: throw/rethrow should use jalr to call
16250         exception stubs.  Fixed bug with passing structures
16251         by value. More support for tracing floating point
16252         functions.
16253
16254 Wed Nov 29 20:28:17 CET 2006 Paolo Molaro <lupus@ximian.com>
16255
16256         * mini.c: fixed typo in the soft-float ldind.r4 handling
16257         (bug #80086).
16258
16259 Wed Nov 29 11:33:03 CET 2006 Paolo Molaro <lupus@ximian.com>
16260
16261         * mini.c, mini.h, driver.c: added --runtime command line
16262         option to select a different runtime than the autodetected one.
16263         * jit.h: added API for embedders to initialize with a specific
16264         runtime version.
16265
16266 Tue Nov 28 21:24:55 CET 2006 Paolo Molaro <lupus@ximian.com>
16267
16268         * mini.c: handle also boxing of r4 values (bug #80024).
16269
16270 Tue Nov 28 19:45:44 CET 2006 Paolo Molaro <lupus@ximian.com>
16271
16272         * mini-ppc.c: force indirect calls until we reserve
16273         enough address space for all the generated code.
16274
16275 Tue Nov 28 20:04:34 GMT 2006 Paolo Molaro <lupus@ximian.com>
16276
16277         * exceptions-arm.c: workaround bugs in the libc definition
16278         of struct ucontext.
16279
16280 Mon Nov 27 15:13:41 CET 2006 Paolo Molaro <lupus@ximian.com>
16281
16282         * inssel.brg: fixes from me and Mark Mason.
16283
16284 2006-11-23  Dick Porter  <dick@ximian.com>
16285
16286         * wapihandles.c (mini_wapi_seminfo): No need to adjust the counter
16287         semaphore display now we've fixed the initial value
16288
16289 Wed Nov 22 11:04:37 CET 2006 Paolo Molaro <lupus@ximian.com>
16290
16291         * inssel.brg: partially revert the last change to fix the build.
16292
16293 2006-11-21  Mark Mason  <mason@broadcom.com>
16294
16295         * inssel.brg: Add and use compare-and-branch macros to support
16296         architectures that do not have condition code registers (ie. MIPS).
16297         * *-mips.{c,brg,md}: Fix copyright statements
16298
16299 2006-11-20  Mark Mason  <mason@broadcom.com>
16300
16301         * Makefile.am: remove mini-codegen.c from list of MIPS sources
16302         * mini.c: Allow GET_CONTEXT to be specified by the arch port
16303         * mini.h: Added declaration for mono_print_ins()
16304         * mini-codegen.c: added ins_spec initializer for MIPS
16305         * mini-codegen.c (mono_call_inst_add_outarg_reg): added asserts for
16306         vreg to be virtual and hreg to be non-virtual.
16307         * mini-codegen.c (mono_spillvar_offset): assert if MIPS - spilling
16308         is not yet working/implemented correctly.
16309         * mini-codegen.c (print_ins): rename to mono_print_ins(), make
16310         non-static, fixup calls to print_ins() from other parts in the file.
16311
16312 2006-11-20  Mark Mason  <mason@broadcom.com>
16313
16314         * basic-calls.cs: added tests for passing structures as arguments
16315         to calls.
16316
16317 Mon Nov 20 19:40:11 CET 2006 Paolo Molaro <lupus@ximian.com>
16318
16319         * inssel-long32.brg: optimize signed division by power of two.
16320
16321 Mon Nov 20 17:37:58 CET 2006 Paolo Molaro <lupus@ximian.com>
16322
16323         * mini-arm.c: added support for interworking with thumb code
16324         (mono must be still be built using the ARM instruction encoding).
16325
16326 2006-11-19  Miguel de Icaza  <miguel@novell.com>
16327
16328         * mini.c (type_from_op): Separate the conditions for OP_EQ as the
16329         verifier has different rules for it.   Fixes a few verifier issues
16330         in the test suite.
16331
16332         * mini-exceptions.c (mono_handle_native_sigsegv): Put the message
16333         at the end, so people know what happened.
16334
16335 Thu Nov 16 14:07:18 CET 2006 Paolo Molaro <lupus@ximian.com>
16336
16337         * brach-opts.c: in optimize_exception_target() make sure we
16338         are in a catch clause (fixes bug #79871).
16339
16340 Thu Nov 16 12:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
16341
16342         * jit-icalls.c, jit-icalls.h, mini-arm.c, mini.c:
16343         more soft-float support fixes.
16344
16345 Wed Nov 15 18:45:47 GMT 2006 Paolo Molaro <lupus@ximian.com>
16346
16347         * mini-arm.c, inssel-arm.brg: ABI fix for longs and doubles
16348         that are passed half on the stack and half in registers.
16349
16350 Wed Nov 15 17:00:27 CET 2006 Paolo Molaro <lupus@ximian.com>
16351
16352         * mini-ops.h, mini-arch.h, helpers.c, Makefile.am:
16353         more mips integration work from Mark E Mason 
16354         <mark.e.mason@broadcom.com>.
16355
16356 Wed Nov 15 16:34:03 CET 2006 Paolo Molaro <lupus@ximian.com>
16357
16358         * exceptions-mips.c, inssel-mips.brg, mini-mips.h,
16359         cpu-mips.md, inssel-long32-mips.brg, mini-mips.c,
16360         tramp-mips.c: added sources for the mips port, not
16361         integrated in the build yet. Contributed by
16362         Mark E Mason <mark.e.mason@broadcom.com>.
16363
16364 2006-11-14  Neale Ferguson <neale@sinenomine.net>
16365
16366         * mini-s390[x].c (is_regsize_var): Support PTR/FNPTR too.
16367
16368 Tue Nov 14 16:06:37 CET 2006 Paolo Molaro <lupus@ximian.com>
16369
16370         * Makefile.am, inssel-float.brg, inssel-softfloat.brg:
16371         put the soft-float rules in its own file since it seems to
16372         break s390 compilation.
16373
16374 Mon Nov 13 15:54:38 CET 2006 Paolo Molaro <lupus@ximian.com>
16375
16376         * mini-arm.c: fixed wrnings.
16377
16378 Fri Nov 10 19:18:32 CET 2006 Paolo Molaro <lupus@ximian.com>
16379
16380         * mini-arm.c, mini-arm.h, cpu-arm.md, inssel-float.brg,
16381         inssel-arm.brg: ARM support for soft-float.
16382
16383 Fri Nov 10 18:38:15 CET 2006 Paolo Molaro <lupus@ximian.com>
16384
16385         * mini.c, jit-icalls.c, jit-icalls.h: added first cut at handling
16386         loads and stores of 32 bit fp values.
16387
16388 2006-11-10  Zoltan Varga  <vargaz@gmail.com>
16389
16390         * mini-sparc.c (is_regsize_var): Support PTR/FNPTR too.
16391
16392         * tramp-sparc.c (mono_arch_patch_callsite): Fix this function so it actually
16393         works. Fixes #79852 and #79463.
16394
16395 Thu Nov 9 16:56:13 CET 2006 Paolo Molaro <lupus@ximian.com>
16396
16397         * mini.c, mini-codegen.c, jit-icalls.c, jit-icalls.h:
16398         more soft-float support WIP and fixes.
16399
16400 Wed Nov 8 16:40:02 CET 2006 Paolo Molaro <lupus@ximian.com>
16401
16402         * mini-arm.c: some VFP updates.
16403
16404 Tue Nov 7 19:45:51 CET 2006 Paolo Molaro <lupus@ximian.com>
16405
16406         * mini-exceptions.c: 0 is a valid local var offset in some
16407         architectures, don't assert (bug #78508).
16408
16409 Tue Nov 7 18:17:52 GMT 2006 Paolo Molaro <lupus@ximian.com>
16410
16411         * exceptions-arm.c: fixed off by one error in stack walk code.
16412
16413 Tue Nov 7 11:27:26 CET 2006 Paolo Molaro <lupus@ximian.com>
16414
16415         * mini.h, mini.c: more precise tracking of type load exceptions.
16416
16417 2006-11-03  Robert Jordan  <robertj@gmx.net>
16418
16419         * Makefile.am: [WIN32] Add monow.exe target.
16420         * driver.c: [WIN32] Don't detach the console when debugging.
16421         Fixes bug #79797.
16422         
16423 2006-10-30  Miguel de Icaza  <miguel@novell.com>
16424
16425         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Eliminate warning.
16426
16427 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
16428
16429         * aot-compiler.c (emit_method_info): Add a case missed earlier.
16430
16431         * driver.c (mini_regression): Fix --regression with AOT.
16432
16433         * aot-compiler.c (emit_method_info): Fix AOT on amd64.
16434
16435 2006-10-17  Zoltan Varga  <vargaz@gmail.com>
16436
16437         * mini.c (GET_CONTEXT): Correct the definition of this for sparc/linux.
16438
16439         * mini-sparc.h: Don't use sigaction on sparc/linux.
16440
16441         * exceptions-sparc.c: Call mono_arch_flush_icache () in a couple of places.
16442
16443         * mini-sparc.c (mono_sparc_flushw): Call mono_arch_flush_icache ().
16444
16445         * mini-exceptions.c: Add proper include files for getpid ().
16446
16447 2006-10-16  Zoltan Varga  <vargaz@gmail.com>
16448
16449         * aot-runtime.c (mono_aot_get_method): Change this to return the native code
16450         address instead of a MonoJitInfo* to avoid decoding the exception info for the
16451         method.
16452
16453         * aot-runtime.c aot-compiler.c: Use uint16 instead of uint32 entries in the
16454         name cache to reduce its size.
16455
16456         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
16457
16458 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
16459
16460         * mini-x86.c: Save/restore the current LMF structure more efficiently using
16461         the mono_lmf TLS variable.
16462
16463         * exceptions-x86.c (mono_arch_find_jit_info): Only access lmf->method in 
16464         trampoline lmf frames.  
16465
16466         * mini-sparc.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Define this on sparc as well.
16467
16468 2006-10-14  Zoltan Varga  <vargaz@gmail.com>
16469
16470         * mini-amd64.c: Save/restore the current LMF structure more efficiently using
16471         the mono_lmf TLS variable.
16472
16473         * mini-exceptions.c: Access the LMF structure through accessors.
16474
16475         * mini.c: Allow the backends the option for storing the lmf in a dedicated TLS 
16476         variable instead of in jit_tls->lmf.
16477
16478         * mini-x86.c mini-amd64.c: Update after lmf->lmf_addr name change.
16479         
16480         * exceptions-amd64.c (mono_arch_find_jit_info): Only access lmf->method in 
16481         trampoline lmf frames.
16482
16483         * mini-amd64.c (mono_arch_emit_prolog): Do not set lmf->method as it is not needed.
16484
16485 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
16486
16487        * mini.c trace.c mini-x86.c: Revert these too.
16488         
16489        * mini.c trace.c mini-x86.c: Remove warning workarounds after the mono_type_size ()
16490        signature change.
16491
16492 Tue Oct 10 11:35:20 CEST 2006 Paolo Molaro <lupus@ximian.com>
16493
16494         * genmdesc.c: removed now dead code.
16495
16496 2006-10-09  Robert Jordan <robertj@gmx.net>
16497
16498         * mini.c: Disable the CrashReporter on MacOS X; Fixes #74869
16499
16500 Mon Oct 9 17:06:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
16501
16502         * mini.h: do not leave gaps in the opcode values.
16503
16504 Mon Oct 9 16:08:51 CEST 2006 Paolo Molaro <lupus@ximian.com>
16505
16506         * jit-icalls.h: flag functions as internal here, too.
16507
16508 Mon Oct 9 15:58:18 CEST 2006 Paolo Molaro <lupus@ximian.com>
16509
16510         * mini.h, aliasing.h, declsec.h, regalloc.h, trace.h: mark internal
16511         functions with the internal attribute.
16512
16513 Mon Oct 9 15:52:45 CEST 2006 Paolo Molaro <lupus@ximian.com>
16514
16515         * aot-compiler.c: fclose the file descriptor in the profile read loop.
16516
16517 Fri Oct 6 16:01:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
16518
16519         * mini.c, jit-icalls.c, inssel-float.brg: beginnings of support
16520         for soft-float.
16521
16522 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
16523
16524         * mini-x86.c (emit_load_volatile_arguments): New function to handle arguments of
16525         tail calls as on other platforms.
16526
16527         * mini.c (mono_method_to_ir): Fix a few tailcall problems. Fixes #79557.
16528
16529         * iltests.il: Add a few tailcall tests.
16530
16531 Tue Oct 3 16:33:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
16532
16533         * driver.c: fix loop for old compilers (bug #79521).
16534
16535 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
16536
16537         * mini-exceptions.c (ves_icall_get_trace): Remove debug printf.
16538
16539         * aot-runtime.c (mono_aot_get_class_from_name): Avoid a memory allocation.
16540
16541         * aot-compiler.c: Add a new option 'metadata-only' to only emit the cached
16542         metadata without any code.
16543
16544         * mini-exceptions.c (mono_handle_native_sigsegv): Add some code to print out
16545         more precise debugging information using gdb.
16546
16547 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
16548
16549         * inssel-ia64.brg: Make the helper methods static.
16550
16551 Thu Sep 28 16:40:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
16552
16553         * inssel-x86.brg: make the helper methods static.
16554
16555 Thu Sep 28 16:31:32 CEST 2006 Paolo Molaro <lupus@ximian.com>
16556
16557         * inssel-amd64.brg, mini-amd64.c: small cleanup, use inst_call.
16558
16559 Thu Sep 28 15:36:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
16560
16561         * mini.c: updates for monoburg changes.
16562         * inssel.brg: make a few helper functions static as they should.
16563
16564 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
16565
16566         * Makefile.am: Move mini-codegen.c to common_sources.
16567
16568 Wed Sep 27 15:07:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
16569
16570         * mini.h: instroduce inst_call in MonoInst for use in OUTARG
16571         instructions.
16572         * Makefile.am, cpu-g4.md, inssel-ppc.brg, mini-codegen.c, mini-ppc.c,
16573         mini-ppc.h: port to use the common local register allocator.
16574
16575 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
16576
16577         * mini.h: Remove the comment too then.
16578
16579 Tue Sep 26 14:02:58 CEST 2006 Paolo Molaro <lupus@ximian.com>
16580
16581         * mini.h: put back backend.data which is to be used shortly and
16582         doesn't increase the size of MonoInst. If any 64 bit arch aligned
16583         pointers on 4 byte boundaries it'd have much bigger issues running
16584         and you can ifdef it out anyway.
16585
16586 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
16587
16588         * mini.h (MonoInst): Remove backend.data field since it is unused and increases
16589         MonoInst size by 4 bytes on 64 bit machines.
16590
16591 Tue Sep 26 11:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
16592
16593         * *.{c,h,brg}: long due removal of the unused field in MonoInst and
16594         replacement with more meaningful field names. Arch maintainers, please
16595         check the assigned names are good enough for your arch.
16596
16597 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
16598
16599         * cpu-ia64.md mini-ia64.c inssel-ia64.brg mini-ops.h: Get rid of the 
16600         OP_IA64_FETCHADD opcodes, use OP_ATOMIC_ADD_IMM_NEW opcodes instead.
16601
16602 Mon Sep 25 11:05:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
16603
16604         * mini.h, driver.c, optflags-def.h, Makefile.am: reduce runtime
16605         relocations and memory requirements, put the optimization flags
16606         definitions in their own file.
16607
16608 2006-09-24  Zoltan Varga  <vargaz@gmail.com>
16609
16610         * jit-icalls.c (mono_helper_stelem_ref): Remove this unused helper function.
16611
16612         * mini.c (mini_init): Remove reference to mono_helper_stelem_ref.
16613
16614 2006-09-22  Zoltan Varga  <vargaz@gmail.com>
16615
16616         * mini-amd64.c (add_valuetype): Fix an uninitialized memory issue.
16617
16618 Thu Sep 21 19:06:09 CEST 2006 Paolo Molaro <lupus@ximian.com>
16619
16620         * inssel.brg: use the correct function to get the size of an item
16621         in an array, given an element class.
16622         * aot-compiler.c: do not access class->class_size directly.
16623
16624 Thu Sep 21 12:10:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
16625
16626         * mini.h, debug-mini.c: added a debugging function to print
16627         info about local variables and arguments in a jitted method.
16628
16629 2006-09-20  Zoltan Varga  <vargaz@gmail.com>
16630
16631         * mini-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
16632
16633         * exceptions-ia64.c: Fix some problems reported by Bill Seurer <seurer@us.ibm.com>.
16634
16635 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
16636
16637         * mini-ia64.c (mono_arch_call_opcode): Avoid using the same loop index in the
16638         inner and outer loops when passing vtypes.
16639
16640 Tue Sep 19 17:53:40 CEST 2006 Paolo Molaro <lupus@ximian.com>
16641
16642         * mini-ppc.c: take into account the cpu errata for cache flushing
16643         which caused some random errors (bug #79381).
16644
16645 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
16646
16647         * mini-amd64.c (mono_arch_emit_exceptions): Emit the call to 
16648         mono_arch_throw_corlib_exception using emit_call () too. Fixes #79271.
16649
16650 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
16651
16652         * aot-runtime.c (load_aot_module): Return immeditely if the AOT module was already
16653         loaded.
16654
16655         * exceptions-amd64.c (gregs_from_ucontext): Apply another patch from the
16656         freebsd ports tree.
16657
16658         * mini-amd64.c (emit_call): Avoid near calls on freebsd.
16659         (mono_arch_patch_code): Remove the unused handling of MONO_PATCH_INFO_CLASS_INIT.
16660
16661         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix check for 32 bitness of
16662         displacement.
16663
16664 2006-09-13  Zoltan Varga  <vargaz@gmail.com>
16665
16666         * aot-runtime.c (load_aot_module_from_cache): Fix PPC build.
16667
16668 2006-09-12  Zoltan Varga  <vargaz@gmail.com>
16669
16670         * mini.c (UNVERIFIED): Add a 'break-on-unverified' MONO_DEBUG option so this 
16671         macro does not have to be changed during debugging.
16672
16673         * 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>.
16674
16675         * cpu-pentium.md: Rename this to cpu-x86.md for consistency with other platforms.
16676
16677         * Makefile.am mini-x86.c mini-codegen.c: Rename pentium_desc to x86_desc.
16678         
16679         * mini.c (mini_get_ldelema_ins): Allow ldelema2d optimization if 
16680         MONO_ARCH_NO_EMULATE_MUL is defined.
16681
16682         * mini-ia64.h (MONO_ARCH_CALLEE_FREGS): Reserve f33 for use by instructions.
16683
16684         * mini-ia64.h: Define MONO_ARCH_NO_EMULATE_MUL.
16685
16686         * mini-ia64.c: Implement CEE_MUL based on gcc emitted code.
16687
16688         * mini-ia64.c (mono_arch_lowering_pass): Optimize store_membase_imm with offset==0.
16689         
16690 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
16691
16692         * mini-x86.h mini-amd64.h mini-exceptions.c: Move the bsd specific MAP_ANON
16693         stuff to mini-exceptions.c where it is used.
16694
16695         * mini-sparc.c (mono_arch_setup_jit_tls_data): Remove the duplicate altstack
16696         setup code, the real one is in mini-exceptions.c.
16697
16698         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Move all dependencies on the
16699         layout of ucontext_t to helper functions in exceptions-amd64.c, as on x86. Add
16700         some changes from the freebsd ports tree.
16701
16702         * mini-amd64.h exceptions-amd64.c: Fix the amd64 build. Get rid of the SC_
16703         constants.
16704         
16705         * mini-amd64.h: Freebsd has MAP_ANON instead of MAP_ANONYMOUS.
16706
16707 Mon Sep 11 13:18:55 CEST 2006 Paolo Molaro <lupus@ximian.com>
16708
16709         * mini.c: on Linux, check for /proc to be mounted
16710         (bug# 79351, novell bug#201204).
16711
16712 Mon Sep 11 13:10:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
16713
16714         * mini.c: handle cases where pthread_attr_getstack() behaves
16715         incorrectly (bug #78096).
16716
16717 Mon Sep 11 11:31:10 BST 2006 Paolo Molaro <lupus@ximian.com>
16718
16719         * mini-arm.c: support larger stack frames (bug #79272).
16720
16721 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
16722
16723         * aot-runtime.c (mono_aot_get_class_from_name): Remove a debug printf.
16724
16725         * aot-compiler.c: Add a hash table to the AOT file mapping class names to typedef 
16726         tokens.
16727
16728         * aot-runtime.c (mono_aot_get_class_from_name): New function used by 
16729         mono_class_from_name () to find a class from its name.
16730
16731         * mini.c (mini_init): Register mono_aot_get_class_from_name () with the runtime.
16732
16733 2006-09-07  Zoltan Varga  <vargaz@gmail.com>
16734
16735         * mini-amd64.c (emit_call): Avoid strstr () call if possible.
16736
16737 2006-09-05  Kornel Pal  <kornelpal@gmail.com>
16738
16739         * Makefile.am: Renamed mono-1.dll to mono.dll. (-avoid-version)
16740
16741 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
16742
16743         * mini.c (mono_icall_get_wrapper): Fix a race condition on initializing
16744         callinfo->trampoline.
16745
16746         * mini-amd64.c (emit_call): Special case calls to the vararg array icalls. Hopefully
16747         fixes #79271.
16748         (mono_arch_patch_code): Add some debug code to help track down similar failures in the
16749         future.
16750
16751 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
16752
16753         * aot-runtime.c (mono_aot_plt_resolve): Add an assert.
16754
16755 2006-09-02  Zoltan Varga  <vargaz@gmail.com>
16756
16757         * tramp-x86.c (mono_arch_create_specific_trampoline): Don't increase
16758         stats.method_trampolines, it is already done by the generic trampoline code.
16759
16760         * tramp-amd64.c (mono_arch_create_specific_trampoline): Ditto.
16761         
16762 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
16763
16764         * mini.c: Remove some references to mono_compile_aot, and use cfg->compile_aot instead.
16765
16766         * aot-runtime.c: Add some tweaks to the MONO_AOT_CACHE functionality.
16767
16768         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix a FIXME.
16769
16770         * mini.c (print_jit_stats): Print mscorlib mempool size too.
16771         
16772         * mini.c (print_jit_stats): Print new stats.
16773
16774         * *-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
16775
16776 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
16777
16778         * mini.c (mini_get_ldelema_ins): Fix verifier error when calling
16779         Address on two dimensional arrays. Fixes #78729.
16780
16781         * mini.h (MonoCompile): Add a 'skip_visibility' field.
16782
16783         * mini.c (method_to_ir): Disable visibility checks if skip_visibility is set on
16784         a method.
16785
16786         * mini-amd64.c (mono_arch_emit_exceptions): Fix assertion introduced by the last change.
16787
16788         * mini.c (mono_runtime_cleanup_handlers): Clean up signal handlers on unix. Fixes
16789         #79130.
16790         
16791         * mini.c (handle_array_new): Applied patch from "briaeros007". Fix
16792         a race condition.
16793         (mini_get_ldelema_ins): Ditto.
16794
16795 2006-08-30  Zoltan Varga  <vargaz@gmail.com>
16796
16797         * mini-amd64.c (mono_arch_emit_exceptions): Align fp constants to 16 bytes.
16798         (mono_arch_output_basic_block): Avoid unaligned accesses in FNEG implementation. 
16799         Fixes #79213.
16800
16801 2006-08-29 Neale Ferguson <neale@sinenomine.net>
16802
16803         * mini-s390.c, mini-s390x.c: Fix VARARG case processing with 0 arguments. Add
16804         mono_arch_get_patch_offset as a dummy entry point to allow successful link. 
16805
16806         * exceptions-s390x.c: Cosmetic change.
16807
16808         * tramp-s390.c: Fix warning.
16809
16810         * cpu-s390.md: Correct length of mul_imm.
16811
16812 Wed Aug 23 19:24:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
16813
16814         * aot-compiler.c: added binary writer with ELF backend
16815         implementation (only on Linux/x86 for now).
16816
16817 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
16818
16819         * Makefile.am: Don't run net 2.0 AOT tests.
16820
16821         * aot-compiler.c (compile_method): Skip methods with tail calls as well.
16822         (mono_compile_assembly): Skip net 2.0 assemblies as well.
16823
16824         * aot-runtime.c (load_patch_info): Fix an uninitialized memory error.
16825
16826 Fri Aug 18 19:38:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
16827
16828         * aot-compiler.c: simplified and refactored the asm-writing code
16829         to allow different backends.
16830
16831 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
16832
16833         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
16834
16835         * aot-compiler.c aot-runtime.c: Reorg the GOT slot allocation code a 
16836         little. Share patches of type TYPE_FROM_HANDLE as well.
16837
16838         * mini.c (mono_patch_info_equal): New helper function.
16839         (mono_patch_info_hash): Ditto.
16840
16841         * aot-compiler.c (emit_method_code): Fix s390 build.
16842
16843         * mini.c (mono_allocate_stack_slots_full): Fix yet another place where byref
16844         is not handled because it is stored as a flag and not as a type ctor. Fixes
16845         #79016.
16846
16847 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
16848
16849         * aot-compiler.c: Fix computation of GOT slot statistics.
16850         
16851         * aot-compiler.c aot-runtime.c: Implement sharing of GOT slots for classes/fields.
16852         Also remove support for not PIC AOT.
16853
16854         * mini.h: Bump AOT file format version.
16855
16856         * objects.cs: Add a test for #78990.
16857
16858         * mini-x86.c (mono_arch_output_basic_block): Applied patch from Peter Dettman
16859         (peter.dettman@iinet.net.au). Fixes #79087.
16860
16861         * basic-long.cs: Add a test for the above.
16862
16863 2006-08-16  Zoltan Varga  <vargaz@gmail.com>
16864
16865         * aot-compiler.c (get_got_offset): Add a cache for GOT entries, not yet used.
16866         
16867         * aot-compiler.c (get_plt_index): Add a cache for wrappers too. Simplify the
16868         code somewhat.
16869
16870 2006-08-15  Zoltan Varga  <vargaz@gmail.com>
16871
16872         * mini.c (mini_init): Fix registration of idiv/imul opcodes which can throw
16873         exceptions.
16874
16875 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
16876
16877         * mini.c: Don't verify COM proxy invoke calls
16878         
16879
16880 2006-08-10  Dick Porter  <dick@ximian.com>
16881
16882         * wapihandles.c (mini_wapi_seminfo): More info, to help track down
16883         which process is holding semaphores locked.
16884
16885 2006-08-08  Zoltan Varga  <vargaz@gmail.com>
16886
16887         * mini-ia64.c mini-amd64.c: Fix #79027.
16888
16889         * mini-sparc.c (mono_arch_call_opcode): Fix the previous patch.
16890
16891         * mini-sparc.c (mono_arch_call_opcode): Fix #79027.
16892
16893         * mini-x86.c (mono_arch_call_opcode): Handle the case where there are no
16894         implicit arguments in a vararg call. Fixes #79027.
16895
16896 2006-08-07  Zoltan Varga  <vargaz@freemail.hu>
16897
16898         * mini.c (mono_get_element_address_signature): Use CDECL calling convention on windows. Fixes #78969.
16899         (mono_get_array_new_va_signature): Ditto.
16900
16901 2006-08-05  Zoltan Varga  <vargaz@gmail.com>
16902
16903         * aot-runtime.c: Call init_plt lazily.
16904
16905         * inssel-long.brg: Fix unsigned long->int conversion.
16906
16907         * aot-runtime.c (init_plt): Remove a redundant make_writable () call.
16908
16909         * aot-compiler.c aot-runtime.c: Reorganize the file structure in the amd64 case so
16910         that most data is now in the .rss/.data section.
16911
16912 2006-08-04  Zoltan Varga  <vargaz@gmail.com>
16913
16914         * aot-compiler.c: Correct the computation of the 'direct-calls' statistic.      
16915
16916         * aot-compiler.c: Print the number of methods without GOT slots as a statistics.
16917
16918         * aot-compiler.c aot-runtime.c tramp-amd64.c: Resurrect amd64 AOT support.
16919
16920         * tramp-amd64.c (mono_arch_patch_callsite): Fix a warning.
16921
16922         * jit-icalls.c (mono_helper_compile_generic_method): Unbox vtypes since this is a
16923         virtual call. Fixes #79010.
16924
16925         * mini.c (mono_method_to_ir): Pass an additional out arg to compile_generic_method 
16926         and use the result as the this argument in the real call.
16927
16928         * generics.2.cs: Add a new test for #79010.
16929         
16930 2006-08-03  Zoltan Varga  <vargaz@gmail.com>
16931
16932         * mini-x86.c: Fix a warning.
16933
16934         * aot-compiler.c: Add a bunch of statistics.
16935
16936         * mini.c (inline_method): Disable inlining in out-of-line bblocks.
16937
16938 2006-08-02  Zoltan Varga  <vargaz@gmail.com>
16939
16940         * mini-arch.h Makefile.am mini-ops.h mini-codegen.c: More alpha updates.
16941
16942 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
16943
16944         * 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>.
16945
16946 2006-07-13  Miguel de Icaza  <miguel@novell.com>
16947
16948         * mini.c (mono_method_to_ir): Obtain the original method in the
16949         CIL stream and use this to perform validation.
16950
16951         Fixed: #78816
16952
16953 2006-07-19  Zoltan Varga  <vargaz@gmail.com>
16954
16955         * mini-x86.c (mono_arch_get_argument_info): Fix a warning.
16956         (mono_arch_call_opcode): Ditto.
16957
16958         * mini.c (mono_method_to_ir): Clear ins_flag at the end of CEE_CALL. Fixes
16959         #78826.
16960
16961         * mini.c (mono_patch_info_dup_mp): New helper function.
16962         
16963         * aot-compiler.c (compile_method): Fix some of the memory allocated during
16964         compilation. Fixes #78827.
16965
16966 2006-07-18  Kornel Pal  <kornelpal@gmail.com>
16967
16968         * declsec.c: Use original security informations for
16969           MONO_WRAPPER_MANAGED_TO_MANAGED.
16970
16971 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
16972
16973         * mini.c: Allow Com Interop methods/classes and
16974         don't verify COM wrapper calls
16975         
16976
16977 2006-07-13  Zoltan Varga  <vargaz@gmail.com>
16978
16979         * inssel-long32.brg: Fix long->i4 checked conversion.
16980
16981         * exceptions.cs: Add a test for the above.
16982
16983 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
16984
16985         * mini-exceptions.c (mono_setup_altstack): Fix a memory leak.
16986
16987         * mini.c: Applied patch from Joachim Ante (joe@otee.dk). Fix some shutdown 
16988         leaks.
16989
16990         * helpers.c (mono_disassemble_code): Avoid using fixed temporary files. Fixes
16991         #78775.
16992
16993 2006-07-03  Zoltan Varga  <vargaz@gmail.com>
16994
16995         * mini.c: Fix solaris/x86 exception handling.
16996
16997         * Makefile.am: Get rid of $(ICU_LIBS).
16998
16999 2006-07-02  Zoltan Varga  <vargaz@gmail.com>
17000
17001         * mini-exceptions.c: Fix handling of unhandled SIGSEGV exceptions on ia64.
17002         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Use MONO_INIT_CONTEXT_FROM_CURRENT.
17003         (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): Ditto.
17004
17005         * mini-ia64.h (MONO_CONTEXT_SET_FUNC): New macro.
17006
17007         * mini-exceptions.c (mono_handle_native_sigsegv): Prevent infinite loops if
17008         this function causes a SIGSEGV.
17009
17010 2006-06-22  Zoltan Varga  <vargaz@gmail.com>
17011
17012         * mini.c: Remove unused solaris/x86 includes.
17013
17014 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
17015
17016         * jit.h: Add G_BEGIN_DECLS/G_END_DECLS.
17017
17018 2006-06-20  Jb Evain  <jbevain@gmail.com>
17019
17020         * cpu-g4.md: fix max length of start_handler instruction.
17021
17022 2006-06-20  Massimiliano Mantione  <massi@ximian.com>
17023         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78656.
17024
17025 2006-06-16  Massimiliano Mantione  <massi@ximian.com>
17026         * ssa.c: Fixed bug 78653 for SSA based deadce.
17027         * mini.h: added MONO_INST_DEFINITION_HAS_SIDE_EFFECTS flag go
17028         MonoInst.flags, used in SSA based deadce.
17029         * aliasing.c: Fixed bug 78653 for "fastpath" deadce.
17030         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78653.
17031
17032 Thu Jun 15 16:52:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
17033
17034         * tramp-ppc.c: don't use malloc () for trampoline code, sometimes
17035         it can end up using non executable memory on ppc64 systems
17036         running ppc32 userspace (fix from Johannes Berg).
17037
17038 2006-06-14  Dick Porter  <dick@ximian.com>
17039
17040         * wapihandles.c: Fix a bunch of signed/unsigned warnings from gcc
17041         4.1.1
17042
17043 2006-06-13  Massimiliano Mantione  <massi@ximian.com>
17044         * mini.c: Made so that inline is locally disabled if it would
17045         trigger a .cctor, because too many apps depend on this behavior
17046         (which seems to be also the one of the MS CLR).
17047
17048 2006-06-13  Zoltan Varga  <vargaz@gmail.com>
17049
17050         * mini-amd64.c (mono_emit_stack_alloc): Fix initialization of localloc'ed memory.
17051         No idea why this worked before.
17052
17053         * branch-opts.c (mono_branch_optimize_exception_target): Avoid branches
17054         which branch to outer exception clauses since they could skip the
17055         inner finally clauses. Fixes #78633.
17056
17057         * exceptions.cs: Add a test for the above.
17058
17059         * mini.c (merge_basic_blocks): Nullify the branch at the end of the first bb.
17060         Fixes #78629.
17061
17062         * iltests.il: Add a test for the above.
17063
17064 2006-06-12  Zoltan Varga  <vargaz@gmail.com>
17065
17066         * mini.c (remove_block_if_useless): Do not remove the bblock immediately
17067         after the end of a try bblock, to prevent asserts in mini_method_compile ().
17068
17069         * iltests.il: Add a test for the above.
17070
17071 2006-06-10  Zoltan Varga  <vargaz@gmail.com>
17072
17073         * mini-ia64.c (mono_arch_lowering_pass): Remove some code duplication.
17074         
17075         * mini-ia64.c inssel-ia64.brg: Implement the new net 2.0 Interlocked.Add
17076         methods as instrinsics.
17077
17078 2006-06-09  Wade Berrier <wberrier@novell.com>
17079
17080         * Makefile.am: Fix sources list for svn rename so that make dist succeeds
17081         (simple-cee-ops.h ssapre-mini-ops.h)
17082
17083 2006-06-09  Neale Ferguson <neale@sinenomine.net>
17084
17085         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on s390/s390x.
17086         * mini-s390x.c, mini-s390.c: Correct ATOMIC operations (incorrect register for CS
17087         instruction).
17088         * mini-s390x.h, mini-s390.h: Simplify MCONTEXT_GET_BP.
17089         * cpu-s390x.md: Fix max. length values for a couple of instructions.
17090
17091 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
17092
17093         * mini-exceptions.c: Minor fix for building mono in Visual Studio.
17094
17095 2006-06-08  Massimiliano Mantione  <massi@ximian.com>
17096
17097         * ssapre-cee-ops.h: Renamed as "simple-cee-ops.h"
17098         * simple-cee-ops.h: Was "ssapre-cee-ops.h" (renamed).
17099         * ssapre-mini-ops.h: Renamed as "simple-mini-ops.h"
17100         * simple-mini-ops.h: Was "ssapre-mini-ops.h" (renamed).
17101         * local-propagation.c: In mono_cprop_invalidate_values use a whitelist
17102         of opcodes, so that bug 78549 should not happen again.
17103         * ssapre.c: Updated to use the renamed files.
17104
17105 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
17106
17107         * mini-amd64.c (mono_arch_output_basic_block): Fix a wrong reg-reg move 
17108         in OP_ATOMIC_EXCHANGE_I4.
17109
17110 2006-06-07  Wade Berrier <wberrier@novell.com>
17111
17112         * tramp-s390.c: Fix s390 build (add missing pointer declarations 
17113         in mono_debugger_create_notification_function)
17114
17115 2006-06-06  Zoltan Varga  <vargaz@gmail.com>
17116
17117         * mini.c (NEW_AOTCONST_TOKEN): Fix amd64 build.
17118         
17119         * mini.c (type_from_stack_type): Disable some changes which do not
17120         seem to work.
17121
17122         * driver.c: Reenable opts.
17123
17124         * mini.h (MonoStackSlot): New structure to keep track of the verification state
17125         of the evaluation stack.
17126         
17127         * mini.h (MonoBasicBlock): Add a 'stack_state' field to keep track of the
17128         evaluation stack trace at entry to the bblock.
17129
17130         * mini.c (merge_stacks): New function to perform verification of stack merges.
17131         Turned off by default.
17132
17133         * mini.c: Fill up ins->klass for instructions whose type is STACK_OBJ or
17134         STACK_MP.
17135         
17136 2006-06-06  Massimiliano Mantione  <massi@ximian.com>
17137
17138         * local-propagation.c: Fixed bug 78549.
17139
17140 2006-06-04  Zoltan Varga  <vargaz@gmail.com>
17141
17142         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on ia64.
17143
17144 2006-06-02  Miguel de Icaza  <miguel@novell.com>
17145
17146         * tramp-sparc.c, tramp-ppc.c, tramp-s390.c, tramp-s390x.c,
17147         tramp-arm.c, tramp-ia64.c
17148         (mono_debugger_create_notification_function): Update signature to
17149         new signature and use new protocol for creating the notification
17150         function.  
17151
17152         Should fix the build.
17153
17154 2006-06-02  Geoff Norton  <gnorton@customerdna.com>
17155
17156         * exceptions-ppc.c (mono_jit_walk_stack)
17157         (ves_icall_get_frame_info): Fix the build
17158
17159 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
17160
17161         * mini.c (mono_set_defaults): Fix the handling of -O=-all.
17162
17163 2006-05-31  Raja R Harinath  <rharinath@novell.com>
17164
17165         * il2tests.2.il: New file for generics CIL tests.  Add test for
17166         #78019.
17167         * Makefile.am: Update.
17168
17169         Fix #78019
17170         * mini.c (mono_method_to_ir): Don't apply box+brtrue optimization
17171         to nullable types.
17172
17173 2006-05-30  Massimiliano Mantione  <massi@ximian.com>
17174
17175         * aliasing.c: Fixed bug 78311.
17176
17177 2006-05-29  Martin Baulig  <martin@ximian.com>
17178
17179         * mini-exceptions.c (mono_find_jit_info): When computing the
17180         native offset, check whether we're actually inside the method's
17181         code; call mono_debug_print_stack_frame() to format the frame.
17182         (ves_icall_System_Exception_get_trace): Call
17183         mono_debug_print_stack_frame() to format the stack frame.
17184         (ves_icall_get_trace): Update to the new debugging API.
17185         (mono_jit_walk_stack_from_ctx): Likewise.
17186         (ves_icall_get_frame_info): Likewise.
17187
17188         * mini.c (get_method_from_ip): Use the new debugging API.
17189         (mono_print_method_from_ip): Likewise.
17190
17191         * exceptions-ppc.c
17192         (mono_jit_walk_stack): Use the new debugging API.
17193         (ves_icall_get_frame_info): Likewise.   
17194
17195 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
17196
17197         * mini-amd64.c (mono_arch_output_basic_block): Fix MONO_PROFILE_COVERAGE.
17198
17199 2006-05-25  Massimiliano Mantione  <massi@ximian.com>
17200
17201         * mini.c: Added "limitator" to inline for debugging.
17202
17203 2006-05-24  Martin Baulig  <martin@ximian.com>
17204
17205         * debug-debugger.c (mono_debugger_init): Create a private,
17206         malloc()-based code manager for the notification function and
17207         intentionally leak it on exit.  This fixes the crash-on-exit race
17208         condition.
17209
17210         * tramp-amd64.c
17211         (mono_debugger_create_notification_function): Added
17212         `MonoCodeManager *' argument.
17213
17214         * tramp-x86.c
17215         (mono_debugger_create_notification_function): Added
17216         `MonoCodeManager *' argument.
17217
17218 2006-05-23  Massimiliano Mantione  <massi@ximian.com>
17219
17220         * aliasing.c: Fixed 64 bit issue.
17221         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
17222         default since all known bugs are fixed (one more time!).
17223
17224 Tue May 23 13:47:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
17225
17226         * mini.c: write barrier support.
17227
17228 2006-05-23  Martin Baulig  <martin@ximian.com>
17229
17230         * debug-debugger.c: Revert Paolo's change.  Add comment and #error
17231         check at the top of the file.
17232
17233 Sun May 21 12:22:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
17234
17235         * debug-debugger.c: fix the build. Again. Hopefully Martin will stop
17236         reverting changes without reason and without changelog entries.
17237
17238 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
17239
17240         * mini-sparc.c (mono_arch_output_basic_block): Add support for large stack offets
17241         to a few opcodes. Fixes #78439.
17242
17243         * mini-sparc.c: Rename mono_sparch_break () to mono_arch_break () to improve
17244         consistency with other archs.
17245
17246         * mini-ia64.c (mono_arch_emit_prolog): Remove debug stuff left in by mistake.
17247
17248 Wed May 17 18:07:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
17249
17250         * debug-debugger.c: fix the build.
17251
17252 2006-05-17  Martin Baulig  <martin@ximian.com>
17253
17254         * debug-debugger.c
17255         (debugger_thread_vtable): Moved here from ../metadata/threads.c.
17256         (debugger_init_threads): Formerly known as mono_debugger_init_threads().
17257         (debugger_finalize_threads): Formaly known as mono_debugger_finalize_threads().
17258         (debugger_attach): Call GC_mono_debugger_add_all_threads().
17259
17260 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
17261
17262         * mini.c (mini_init): Call pthread_attr_destroy () to fix a small memory leak.
17263
17264 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
17265
17266         * mini-x86.c (mono_arch_instrument_epilog): Fix handling of 
17267         MONO_TYPE_GENERICINST.
17268         
17269         * mini-amd64.c (mono_arch_instrument_epilog): Fix handling of 
17270         MONO_TYPE_GENERICINST.
17271
17272 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
17273
17274         * mini-x86.c (mono_arch_get_vcall_slot_addr): Add a missing call sequence. Fixes
17275         #78325.
17276
17277 2006-05-08  Zoltan Varga  <vargaz@gmail.com>
17278
17279         * mini.c (mono_create_jump_trampoline): Allocate MonoJitInfo from the domain
17280         mempool.
17281         (mono_jit_free_method): Remove the method from jump_trampoline_hash as well.
17282
17283 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
17284
17285         * mini.c (mini_cleanup): Applied patch from Joachim Ante (joe@otee.dk). Call
17286         mono_trace_cleanup ().
17287
17288         * iltests.il: Fix problem with the newly added test.
17289
17290         * mini-codegen.c (mono_local_regalloc): When changing the dreg of an instruction
17291         due to register constraints, free up the previous hreg. Fixes #78314.
17292
17293         * iltests.il: Add new test for #78314.  
17294
17295         * mini-x86.c (mono_arch_get_inst_for_method): Use OP_ATOMIC_ADD_NEW_I4 for
17296         Interlocked.Add. Fixes #78312.
17297
17298         * mini-amd64.c (mono_arch_get_inst_for_method): Ditto.
17299         
17300 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
17301
17302         * inssel.brg (mini_emit_virtual_call): Fix a warning.
17303
17304 2006-05-05  Martin Baulig  <martin@ximian.com>
17305
17306         * debug-mini.c (mono_debug_open_block): New method.
17307
17308         * mini-amd64.c
17309         (mono_arch_output_basic_block): Call mono_debug_open_block() at
17310         the beginning of each basic block.
17311
17312         * mini-x86.c
17313         (mono_arch_output_basic_block): Call mono_debug_open_block() at
17314         the beginning of each basic block.
17315
17316 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
17317
17318         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
17319         default until I understand why they break the build on amd64.
17320
17321 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
17322
17323         * mini.c (mini_cleanup): Call mono_cleanup ().
17324
17325         * mini.c (UNVERIFIED): New macro to make it easier to track down verification
17326         errors.
17327
17328 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
17329
17330         * aliasing.c: Fixed shameful cut&paste error that caused JIT crashes.
17331         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
17332         default since all known bugs are fixed, and I cannot reproduce bug
17333         77944... I'm asking Matt Hargett to test again after this commit.
17334
17335 2006-04-28  Massimiliano Mantione  <massi@ximian.com>
17336
17337         * mini-codegen.c: Fixed typo that thrashed inline.
17338
17339 2006-04-28  Zoltan Varga  <vargaz@gmail.com>
17340
17341         * dominators.c (compute_dominators): Avoid using a worklist since
17342         it is not correct in some cases. Instead, iterate over all bblocks as
17343         in the original paper. Fixes --compile-all -O=all System.Xml.dll.
17344
17345 2006-04-28  Miguel de Icaza  <miguel@novell.com>
17346
17347         * mini.c (mono_jit_compile_method_inner): Use
17348         mono_prepare_exception_from_error that resets the value
17349         internally.
17350
17351 2006-04-27  Miguel de Icaza  <miguel@novell.com>
17352
17353         * mini.c: Move the mini_loader_error_to_exception to metadata. 
17354         
17355 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
17356
17357         * aliasing.c: Fixed bug 78210.
17358
17359 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
17360
17361         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
17362         default until all their problems (or the ones they trigger) are fixed.
17363
17364 2006-04-26  Zoltan Varga  <vargaz@gmail.com>
17365
17366         * aot-runtime.c (mono_aot_get_method_from_token_inner): Fix the previous patch.
17367         
17368         * aot-runtime.c (mono_aot_get_method_from_token_inner): Mark the method
17369         as loaded only after resolving patches since that could invoke the same method.
17370
17371         * aot-runtime.c (mono_aot_plt_resolve): Fix ppc etc. builds.
17372
17373         * aot-compiler.c: Refactor mono_aot_compile_aot () into a bunch of smaller
17374         functions.
17375
17376         * aot-runtime.c (init_plt): Use a normal trampoline to transfer code to the
17377         AOT loader.
17378
17379         * aot-compiler.c (emit_plt): Pass the plt offset in %eax instead of on the
17380         stack.
17381
17382         * mini-trampolines.c (mono_aot_plt_trampoline): New trampoline to handle calls
17383         made from AOT code through the PLT table.
17384
17385         * mini-x86.h mini-amd64.h: Define MONO_ARCH_AOT_PLT_OFFSET_REG to the register
17386         holding the plt offset when a call is made to the aot plt trampoline.
17387         
17388 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
17389
17390         * aot-runtime.c aot-compiler.c cpu-amd64.md mini-amd64.c: Update parts of the 
17391         amd64 AOT support.
17392
17393         * Makefile.am (common_sources): Fix build breakage.
17394
17395         * aot-runtime.c aot-compiler.c: Reorganize the AOT code yet again: Make all
17396         calls through a jump table similar to the ELF PLT table. Avoid indirect calls for
17397         intra-assembly calls if possible.
17398         
17399         * tramp-*.c: Add new functions for patching/nullifying PLT entries.
17400
17401         * mini-trampolines.c: Handle PLT entries.
17402
17403         * mini.c: Avoid creating a GOT var for calls.
17404
17405         * jit-icalls.c (helper_ldstr_mscorlib): New helper function for loading strings
17406         from mscorlib code.
17407
17408         * jit-icalls.c (helper_newobj_mscorlib): New helper function to create objects
17409         from mscorlib code.
17410
17411         * mini.c (mono_method_to_ir): Use the new helper functions in throw bblocks in
17412         AOT code.       
17413
17414         * mini.h: Bump AOT file format version.
17415         
17416         * mini.c (get_basic_blocks): Fix the calculation of bb->out_of_line so it
17417         covers more cases.
17418
17419 2006-04-25  Martin Baulig  <martin@ximian.com>
17420
17421         * driver.c: Disable copyprop, consprop and inline when running
17422         inside the debugger.
17423
17424 2006-04-25  Martin Baulig  <martin@ximian.com>
17425
17426         * debug-debugger.h (MonoDebuggerInfo): Replaced `get_thread_id'
17427         with `get_current_thread' and added `detach'.
17428         (MonoDebuggerMetadataInfo): Added `thread_size',
17429         `thread_tid_offset', `thread_stack_ptr_offset' and
17430         `thread_end_stack_offset'.
17431
17432 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
17433
17434         * aot.c Makefile.am: Split aot.c into two new files aot-compiler.c and 
17435         aot-runtime.c.
17436
17437         * inssel.brg (mini_emit_load_intf_reg_vtable): Use a new kind of AOT constant
17438         ADJUSTED_IID to avoid the need for adjusting the IID at runtime.
17439
17440         * mini.h (MonoJumpInfoType): Add MONO_PATCH_INFO_ADJUSTED_IID.
17441
17442         * mini.c (mono_resolve_patch_target): Handle ADJUSTED_IID.
17443
17444         * aot.c: Add support for ADJUSTED_IID.  
17445
17446 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
17447
17448         * aot.c (emit_method_order): Don't align method_order_end.
17449
17450         * inssel.brg (stmt): Fix interface calls in AOT code which got broken by
17451         the interface ID changes.
17452
17453 2006-04-21  Dick Porter  <dick@ximian.com>
17454
17455         * mini.c (mini_thread_cleanup): Clear the JIT TLS data when
17456         cleaning up a thread.  Fixes the new part of bug 77470.
17457
17458 2006-04-20  Geoff Norton  <gnorton@customerdna.com>
17459
17460         * mini-ppc.c: Call mono_jit_thread_attach when transitioning a native
17461         to managed wrapper.
17462                      
17463 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
17464
17465         * mini.h mini.c: Remove mono_type_to_ldind/stind () which are now in marshal.c.
17466         
17467         * mini.c (mono_runtime_install_handlers): Handle SIGABRT similarly to
17468         SIGSEGV. Fixes #78072.
17469
17470         * mini-exceptions.c (mono_handle_native_sigsegv): Add a 'signal' argument,
17471         unregister our SIGABRT handler.
17472
17473 2006-04-19  Massimiliano Mantione  <massi@ximian.com>
17474
17475         * mini.c: Disabled inline where it can alter the call stack in a
17476         way visible from managed code.
17477         * driver.c: enabled inline,consprop,copyprop,treeprop,deadce by
17478         default.
17479
17480 2006-04-16  Zoltan Varga  <vargaz@gmail.com>
17481
17482         * mini-amd64.c (mono_arch_emit_prolog): Attach the thread to the runtime as it is done
17483         on other platforms. Fixes #78089.
17484
17485 2006-04-13  Martin Baulig  <martin@ximian.com>
17486
17487         * driver.c: Also check a `MONO_INSIDE_MDB' environment variable to
17488         determine whether we're inside the debugger.
17489
17490         * debug-debugger.h
17491         (MonoDebuggerMetadataInfo): Added all offsets from `MonoDefaults'.
17492
17493 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
17494
17495         * mini.c (mono_method_to_ir): Handle multiple LEAVE statements inside a single
17496         handler clauses. Fixes #78024.
17497
17498         * mini-sparc.c (mono_arch_output_basic_block): Handle large offsets
17499         in the CALL_MEMBASE opcodes. Fixes #78088.
17500         (mono_arch_get_vcall_slot_addr): Ditto.
17501
17502 2006-04-10  Martin Baulig  <martin@ximian.com>
17503
17504         * debug-debugger.c: The thread handling code has now been moved
17505         into ../metadata/threads.c.
17506
17507 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
17508
17509         * driver.c (mono_main): Fix --with-gc=none build.
17510
17511         * mini-codegen.c (mono_spillvar_offset): Improve alignment.
17512         (mono_spillvar_offset_float): Ditto.
17513         (mono_local_regalloc): Only do the OP_MOVE optimization if ins->dreg is a local
17514         hreg, not when its !global, since on ia64, there is a third category: stacked
17515         registers.      
17516
17517 Mon Apr 10 14:39:49 CEST 2006 Paolo Molaro <lupus@ximian.com>
17518
17519         * mini.c: set MonoInst->klass for load field address and a few other
17520         places.
17521
17522 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
17523
17524         * helpers.c (mono_disassemble_code): Emit debug info on amd64 as well.
17525
17526 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
17527
17528         * dominators.c (compute_dominators): Fix yet another bug which surfaced after
17529         the branch opt changes.
17530
17531 2006-04-06  Dick Porter  <dick@ximian.com>
17532
17533         * wapihandles.c (mini_wapi_semdel): Fix parameters in semctl () call.
17534         
17535         * wapihandles.c (mini_wapi_seminfo): 
17536         * driver.c (mono_main): Add semaphore info option
17537
17538 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
17539
17540         * dominators.c (compute_dominators): Fix a bug which surfaced after the recent
17541         branch optimization changes. Fixes #78009.
17542
17543 Wed Apr 5 16:40:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
17544
17545         * mini.c: ignore accessibility of methods in managed->native wrappers.
17546
17547 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
17548
17549         * mini.c (mini_cleanup): Call print_jit_stats () earlier since it accesses metadata.
17550         
17551         * mini.c (mini_cleanup): Free 'emul_opcode_map' as well.
17552
17553 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
17554
17555         * mini.c: Modify the branch optimizations to preserve the invariant that
17556         the entries inside the in_bb and out_bb arrays are unique.
17557         (mono_unlink_bblock): Avoid creation of new arrays.
17558
17559 2006-04-02  Zoltan Varga  <vargaz@gmail.com>
17560
17561         * mini.c (mono_unlink_bblock): Fix regression caused by previous
17562         change (#77992).
17563
17564 2006-04-01  Zoltan Varga  <vargaz@gmail.com>
17565
17566         * mini.c (optimize_branches): Remove the "optimizations" in
17567         the cbranch1/cbranch2 -> branch cases which were causing several
17568         problems in the past. Fixes #77986.
17569
17570 2006-03-31  Chris Toshok  <toshok@ximian.com>
17571
17572         * driver.c (DEFAULT_OPTIMIZATIONS): back out the new set of
17573         default optimizations :(
17574
17575 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
17576
17577         * inssel-x86.brg mini-codegen.c mini.c: Merge some changes/fixes from linear-il
17578         branch.
17579
17580 2006-03-31  Massimiliano Mantione  <massi@ximian.com>
17581
17582         * local-propagation.c: Added comments to structs and removed
17583         "Mono" prefixes from local tree mover types.
17584
17585 2006-03-30  Zoltan Varga  <vargaz@gmail.com>
17586
17587         * Makefile.am (arch_sources): Define this for each architecture so 
17588         libmono_la_SOURCES is defined in one place.
17589
17590 Wed Mar 29 20:51:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
17591
17592         * driver.c, wapihandles.c, Makefile.am: integrate the io-layer utils
17593         from handles/.
17594
17595 Wed Mar 29 17:16:57 CEST 2006 Paolo Molaro <lupus@ximian.com>
17596
17597         * driver.c: print the GC name supplied by configure.
17598
17599 2006-03-29  Massimiliano Mantione  <massi@ximian.com>
17600
17601         * local-propagation.c: Added tree mover, and moved here all the
17602         local propagation code from mini.c
17603         * mini.c: Added support for treeprop, and moved all the local
17604         propagation code to local-propagation.c
17605         * mini.h: Added support for treeprop
17606         * driver.c: Added support for treeprop, enabled consprop, copyprop,
17607         treeprop, inline and deadce by default
17608         * Makefile.am: Added local-propagation.c
17609
17610 2006-03-25  Zoltan Varga  <vargaz@gmail.com>
17611
17612         * exceptions-sparc.c: Applied patch from David S. Miller  <davem@sunset.davemloft.net>: Implement correct support for sparc/linux.
17613
17614 Fri Mar 24 20:07:19 CET 2006 Paolo Molaro <lupus@ximian.com>
17615
17616         * debug-debugger.c: make it compile without the Boehm GC.
17617
17618 Wed Mar 22 18:25:18 CET 2006 Paolo Molaro <lupus@ximian.com>
17619
17620         * mini.c: fixed issue with mismatch when an icall is registered
17621         with multiple names but same address.
17622
17623 Tue Mar 21 15:59:57 CET 2006 Paolo Molaro <lupus@ximian.com>
17624
17625         * declsec.c, mini-exceptions.c: use write barrier to set reference
17626         fields of managed objects.
17627
17628 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
17629
17630         * mini.c (mono_print_method_from_ip): Recognize JIT trampolines as well.
17631         (can_access_internals): Fix a warning.
17632
17633         * mini.c (print_method_from_ip): Rename this to 
17634         mono_print_method_from_ip so it gets exported.
17635
17636         * trace.c: Deal with strings inside StringBuilder's containing garbage
17637         and fix memory leaks. Fixes #77848.
17638
17639 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
17640
17641         * mini.c (mini_init): Disable the setting of GC_stackbottom on ia64. Hopefully
17642         fixes #77787.
17643
17644 2006-03-16 Neale Ferguson <neale@sinenomine.net>
17645         
17646         * mini-s390.c: Remove OP_X86_TEST_NULL.
17647
17648 Thu Mar 16 17:19:04 CET 2006 Paolo Molaro <lupus@ximian.com>
17649
17650         * mini.c: use the correct GetHashCode() for the moving collector.
17651
17652 2006-03-16  Massimiliano Mantione  <massi@ximian.com>
17653
17654         * liveness.c: Regalloc spill cost tuning.
17655
17656 2006-03-15 Neale Ferguson <neale@sinenomine.net>
17657         
17658         * mini-s390x.h: Correct S390_LONG macro.
17659
17660         * mini-s390x.c: Cleanup unused code.
17661
17662 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
17663
17664         * jit-icalls.h: New file.
17665
17666         * Makefile.am mini.c jit-icalls.c: Use a proper include file for the jit
17667         icalls and include that instead of including jit-icalls.c.
17668
17669         * mini-ppc.c (mono_arch_output_basic_block): Remove references to
17670         OP_X86 opcodes.
17671
17672 Tue Mar 14 20:23:53 CET 2006 Paolo Molaro <lupus@ximian.com>
17673
17674         * mini.c: when checking for member accessibility, also check for
17675         friend assemblies and for explicit interface implementations.
17676
17677 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
17678
17679         * mini-codegen.c (mono_local_regalloc): Remove incorrect g_free () calls.
17680
17681         * cpu-arm.md cpu-g4.md: Remove x86_ opcodes.
17682
17683         * mini-x86.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
17684         common cases are done first.    
17685
17686         * mini-ops.h: Only define platform specific opcodes on the given platform.
17687
17688         * mini.h regalloc.h mini-codegen.c: Merge optimizations from the linear-il
17689         branch.
17690         
17691 2006-03-14  Martin Baulig  <martin@ximian.com>
17692
17693         Revert Paolo's change from r57348:
17694
17695         * mini.h: don't use gboolean for bitfields.
17696         * mini.c: verifier changes for fields and methods accessibility.
17697
17698 2006-03-13  Neale Ferguson <neale@sinenomine.net>
17699
17700         * mini-s390.h, mini-s390x.h: Fix calls to mono_call_inst_add_outarg_reg.
17701
17702         * mini-s390x.c: Fix conv_r_un.
17703
17704         * cpu-s390, cpu-s390x.md: Fix lengths.
17705
17706 Sun Mar 12 17:31:22 CET 2006 Paolo Molaro <lupus@ximian.com>
17707
17708         * mini.c: nested types have access to all the nesting
17709         levels, not just the enclosing types.
17710
17711 Sun Mar 12 16:23:11 CET 2006 Paolo Molaro <lupus@ximian.com>
17712
17713         * mini.c: added a few more verification checks.
17714
17715 2006-03-12  Zoltan Varga  <vargaz@gmail.com>
17716
17717         * liveness.c: Merge optimizations from the linear-il branch.
17718
17719 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
17720
17721         * mini-ia64.c (emit_call): Add a comment.
17722
17723         * tramp-ia64.c (mono_arch_patch_callsite): Handle indirect calls as well.
17724
17725         * tramp-ia64.c: Fix some warnings.
17726
17727 Sat Mar 11 20:15:59 CET 2006 Paolo Molaro <lupus@ximian.com>
17728
17729         * mini.h: don't use gboolean for bitfields.
17730         * mini.c: verifier changes for fields and methods accessibility.
17731
17732 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
17733
17734         * mini.c (mono_icall_get_wrapper): Fix an ia64 bug introduced by the
17735         lazy icall wrapper changes.
17736
17737         * dominators.c: Replace all the dominator algorithms with faster
17738         ones from the linear-il branch.
17739
17740         * inssel-*.brg: Allocate call->out_ireg_args and call->out_freg_args from
17741         the mempool.
17742
17743         * mini-amd64.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
17744         common cases are done first.
17745
17746         * mini-amd64.c: Fix some warnings.
17747
17748         * mini-codegen.c mini-*.c: Allocate call->out_ireg_args and call->out_freg_args
17749         from the mempool.
17750
17751         * mini.c (mono_jit_compile_method_with_opt): Fix a race in the newly
17752         added code.
17753
17754         * mini.h: Add a missing prototype.
17755
17756 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
17757
17758         * mini.c: Compile icall wrappers lazily.
17759
17760         * mini-codegen.c: Use printf instead of g_print since its much faster.
17761
17762         * mini.h (mono_bitset_foreach_bit): Use the faster mono_bitset_find_start ()
17763         function.
17764
17765         * mini.c (optimize_branches): Cache the negative result from 
17766         remove_block_if_useless ().
17767
17768         * mini.c (optimize_branches): Avoid restarting the iteration after each change. 
17769         Also fix some bblock linking issues.
17770
17771         * helpers.c (mono_disassemble_code): Reduce the size of the temporary
17772         assembly files.
17773
17774         * mini.h: Define G_LIKELY/G_UNLIKELY macros for older glib versions.
17775
17776         * mini.h (MonoBasicBlock): Reorganize the fields, putting more frequently
17777         accessed fields first, for better cache behavior.
17778         
17779 Fri Mar 10 18:21:41 CET 2006 Paolo Molaro <lupus@ximian.com>
17780
17781         * mini.c: speedup IList<T> array accesses.
17782
17783 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
17784
17785         * mini.c (mono_method_to_ir): Handle large methods overflowing the 
17786         inline_costs counter. Fixes #77190.
17787
17788 2006-03-06  Zoltan Varga  <vargaz@gmail.com>
17789
17790         * mini-exceptions.c: Call mono_trace_is_enabled () before printing
17791         trace messages. Fixes #77706.
17792
17793 2006-03-04  Martin Baulig  <martin@ximian.com>
17794
17795         * tramp-amd64.c, tramp-x86.c
17796         (mono_debugger_create_notification_function): Use
17797         mono_global_codeman_reserve() to allocate a buffer at runtime and
17798         return it.
17799
17800         * debug-debugger.h (MonoDebuggerInfo): Added `initialize'.
17801
17802         * debug-debugger.c (mono_debugger_init): Dynamically allocate the
17803         notification function at runtime and then call `initialize' in the
17804         `MONO_DEBUGGER__debugger_info' vtable.
17805
17806 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
17807
17808         * iltests.il: Fix a visibility problem.
17809
17810 Wed Mar 1 15:55:25 CET 2006 Paolo Molaro <lupus@ximian.com>
17811
17812         * driver.c, mini.c: add hooks for the counters API.
17813
17814 Wed Mar 1 12:28:04 CET 2006 Paolo Molaro <lupus@ximian.com>
17815
17816         * driver.c: show disabled options.
17817
17818 Wed Mar 1 12:18:51 CET 2006 Paolo Molaro <lupus@ximian.com>
17819
17820         * linear-scan.c: always use cost-driven selection.
17821
17822 2006-02-28  Raja R Harinath  <rharinath@novell.com>
17823
17824         * jit-icalls.c (helper_compile_generic_method): Revert change from
17825         2006-02-24.
17826
17827 Mon Feb 27 18:58:19 GMT 2006 Paolo Molaro <lupus@ximian.com>
17828
17829         * cpu-arm.md, mini-arm.c: implemented MemoryBarrier.
17830
17831 Sat Feb 25 17:39:21 CET 2006 Paolo Molaro <lupus@ximian.com>
17832
17833         * inssel.brg: style fixes, mostly to force the updated monoburg
17834         to run for people using svn.
17835
17836 Sat Feb 25 17:07:42 CET 2006 Paolo Molaro <lupus@ximian.com>
17837
17838         * mini.c: match monoburg changes.
17839
17840 Sat Feb 25 16:04:33 CET 2006 Paolo Molaro <lupus@ximian.com>
17841
17842         * mini.h, mini.c, abcremoval.c, aliasing.c, liveness.c,
17843         ssapre.c, graph.c, ssa.c: put the mono_burg_arity[]
17844         declaration in the header file.
17845
17846 Sat Feb 25 14:19:31 CET 2006 Paolo Molaro <lupus@ximian.com>
17847
17848         * helpers.c: reduce relocations and mem usage.
17849
17850 Sat Feb 25 11:58:16 CET 2006 Paolo Molaro <lupus@ximian.com>
17851
17852         * mini.h, mini-codegen.c: disable logging features if
17853         requested by configure.
17854
17855 Sat Feb 25 11:54:49 CET 2006 Paolo Molaro <lupus@ximian.com>
17856
17857         * mini.c: tiny verifier changes.
17858
17859 Fri Feb 24 18:17:52 CET 2006 Paolo Molaro <lupus@ximian.com>
17860
17861         * mini-ops.h, inssel-x86.brg, tramp-x86.c, mini-x86.c,
17862         cpu-pentium.md: stack alignment changes for osx/x86,
17863         partially from Geoff Norton <gnorton@customerdna.com>.
17864
17865 2006-02-24  Raja R Harinath  <harinath@gmail.com>
17866
17867         * jit-icalls.c (helper_compile_generic_method): Update to changes
17868         in metadata/class.c.
17869
17870 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
17871         
17872         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a missing check.
17873         
17874         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for
17875         interface calls with large offsets.
17876
17877 2006-02-23  Raja R Harinath  <rharinath@novell.com>
17878
17879         * jit-icalls.c (helper_compile_generic_method): Document the
17880         special-case we depend on so that we can inflate the method twice
17881         with the same context with no bad side-effects.
17882
17883 Thu Feb 23 13:45:46 CET 2006 Paolo Molaro <lupus@ximian.com>
17884
17885         * mini-x86.c, mini-amd64.c: fix for case when xen support
17886         is disabled.
17887
17888 Wed Feb 22 19:38:40 CET 2006 Paolo Molaro <lupus@ximian.com>
17889
17890         * mini-x86.c, mini-amd64.c: generate code to access tls items
17891         in a faster way for Xen systems.
17892
17893 Wed Feb 22 10:31:25 CET 2006 Paolo Molaro <lupus@ximian.com>
17894
17895         * exceptions-x86.c, mini-x86.h, driver.c, mini-codegen.c:
17896         updates and compilation fixes for the OSX/x86 port, mostly from
17897         Geoff Norton <gnorton@customerdna.com>.
17898
17899 Tue Feb 21 19:56:55 CET 2006 Paolo Molaro <lupus@ximian.com>
17900
17901         * inssel.brg: faster interface call implementation
17902         to sync with the interface_offsets MonoVTable changes.
17903
17904 Mon Feb 20 10:37:57 CET 2006 Paolo Molaro <lupus@ximian.com>
17905
17906         * mini.c: more verification checks.
17907
17908 Fri Feb 17 19:47:29 CET 2006 Paolo Molaro <lupus@ximian.com>
17909
17910         * mini.c: added a few more verification checks.
17911
17912 2006-02-17      Neale Ferguson <neale@sinenomine.net>
17913
17914         * mini-s390x.c, mini-s390x.h: Check for presence of long displacement
17915         facility on the processor and use it if available.
17916
17917 Fri Feb 17 16:12:52 CET 2006 Paolo Molaro <lupus@ximian.com>
17918
17919         * driver.c, aot.c, mini.c: throw exception if the IL code is
17920         invalid or unverifiable.
17921
17922 2006-02-17  Raja R Harinath  <rharinath@novell.com>
17923
17924         * generics.2.cs (test_0_ldfld_stfld_mro): Use m.struct_field, not
17925         m.StructField.
17926
17927 2006-02-16  Zoltan Varga  <vargaz@gmail.com>
17928
17929         * generics.2.cs: Add some tests for generics ldfld/stfld wrappers.
17930
17931 Wed Feb 15 16:23:17 CET 2006 Paolo Molaro <lupus@ximian.com>
17932
17933         * mini-s390x.c, mini-s390.c, mini.c, mini-amd64.c, mini-arm.c,
17934         mini-ia64.c, mini-sparc.c, mini-x86.c, mini-ppc.c: fixed
17935         handling of instantiated generic valuetypes.
17936
17937 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
17938
17939         * mini-exceptions.c mini-x86.h mini-x86.c: Get rid of 
17940         MONO_INIT_CONTEXT_FROM_CALLER, and use MONO_INIT_CONTEXT_FROM_FUNC
17941         instead.
17942
17943         * generics.2.cs: Revert the nullable reftypes tests.
17944
17945 2006-02-10  Zoltan Varga  <vargaz@gmail.com>
17946
17947         * mini-exceptions.c (MONO_INIT_CONTEXT_FROM_CALLER): Avoid
17948         using __builtin_frame_address (1) as it doesn't work in the presence
17949         of optimizations. Hopefully fixes #77273.
17950
17951         * Makefile.am generics.cs generics.2.cs: Revert the generics.2.cs
17952         -> generics.cs change as it doesn't work with some automake versions.
17953
17954 Thu Feb 9 16:24:44 CET 2006 Paolo Molaro <lupus@ximian.com>
17955
17956         * mini.c: handle systems that sue a different way to
17957         retrieve the stack address of the current thread.
17958
17959 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
17960
17961         * Makefile.am generics.2.cs: Rename this to generics.cs and handle
17962         it specially in the makefile.
17963
17964         * generics.2.cs: Add tests for nullable reference types.
17965
17966 Wed Feb 8 19:33:17 CET 2006 Paolo Molaro <lupus@ximian.com>
17967
17968         * mini.c: always handle the case when mono_jit_init()
17969         is called in a thread different from the main thread,
17970         confusing libgc (bug #77309).
17971
17972 Mon Feb 6 09:01:24 EST 2006 Paolo Molaro <lupus@ximian.com>
17973
17974         * mini-ppc.c: fix handling of exceptions in large methods (bug #74932).
17975
17976 Fri Feb 3 18:51:35 CET 2006 Paolo Molaro <lupus@ximian.com>
17977
17978         * mini.c: change optimize_branches () to use a single loop
17979         and introduce a new optimization to simplify some range checks.
17980
17981 2006-02-03  Martin Baulig  <martin@ximian.com>
17982
17983         * debug-debugger.c (debugger_thread_manager_thread_created): Removed
17984         and merged with debugger_thread_manager_add_thread().
17985         (mono_debugger_main): Call debugger_thread_manager_add_thread() to
17986         inform the debugger about the main thread.
17987
17988 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
17989
17990         * basic.cs: Add test for div.un/rem.un constant folding.
17991
17992 2006-02-03  Neale Ferguson <neale@sinenomine.net>
17993
17994         * cpu-s390x.md: correct int_xor_imm length
17995
17996 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
17997
17998         * generics.2.cs: New test for #77442.
17999
18000         * jit-icalls.c (helper_compile_generic_method): Check for null. Fixes
18001         #77442.
18002
18003 2006-02-02  Martin Baulig  <martin@ximian.com>
18004
18005         * tramp-x86.c, tramp-amd64.c: It's now safe to #include
18006         <mono/metadata/mono-debug-debugger.h>   
18007
18008         * debug-mini.c: Don't #define _IN_THE_MONO_DEBUGGER.
18009
18010 2006-02-02  Martin Baulig  <martin@ximian.com>
18011
18012         * debug-debugger.h: New header file for debug-debugger.c.
18013
18014         * debug-debugger.c: Big API cleanup; don't run the managed Main()
18015         function is a separate thread anymore; add support for attaching.
18016
18017 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
18018
18019         * tramp-x86.c: Fix a warning.
18020
18021 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
18022
18023         * mini-amd64.c (mono_arch_compute_omit_fp): Avoid hitting an assertion
18024         on very large methods.
18025
18026         * aot.c (load_patch_info): Fix a warning.
18027
18028 Mon Jan 30 12:51:10 CET 2006 Paolo Molaro <lupus@ximian.com>
18029
18030         * cpu-pentium.md, mini-x86.c, inssel.brg, inssel-x86.brg,
18031         mini-ops.h: alu membase optimizations.
18032
18033 Fri Jan 27 21:11:08 CET 2006 Paolo Molaro <lupus@ximian.com>
18034
18035         * mini-ops.h, mini.c, inssel.brg, inssel-x86.brg: opcode
18036         to speedup StringBuilder.
18037
18038 2006-01-27  Zoltan Varga  <vargaz@gmail.com>
18039
18040         * dominators.c (mono_compute_natural_loops): Fix detection of
18041         loop body start blocks.
18042
18043         * mini-exceptions.c (mono_print_thread_dump): Fix non x86 builds.
18044
18045 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
18046
18047         * mini.h mini.c mini-exceptions.c: Add thread dump support. Fixes
18048         #75145.
18049
18050 2006-01-25  Massimiliano Mantione  <massi@ximian.com>
18051
18052         * aliasing.c: Fixed aliasing issue on 64 bit archs.
18053
18054 2006-01-25  Martin Baulig  <martin@ximian.com>
18055
18056         * debug-debugger.c: Moved the `MonoDebuggerManager' and
18057         `MonoDebuggerThread' typedefs here from mono-debug-debugger.h and
18058         started to cleanup this file a little bit.
18059
18060 Tue Jan 24 18:20:48 CET 2006 Paolo Molaro <lupus@ximian.com>
18061
18062         * mini.c: optimize a codepath frequently happening in generics code.
18063
18064 2006-01-23  Martin Baulig  <martin@ximian.com>
18065
18066         * Makefile.am: Only compile debug-debugger.c on supported platforms.
18067
18068         * debug-debugger.c: Kill the IO_LAYER() hack and use the io-layer
18069         functions directly.
18070
18071         * driver.c: debug-debugger.c is only available if
18072         `MONO_DEBUGGER_SUPPORTED' is defined.   
18073
18074 2006-01-23  Martin Baulig  <martin@ximian.com>
18075
18076         * debug-debugger.c: Only enable this on platforms where the Mono
18077         Debugger is working (x86 and x86_64).
18078
18079 2006-01-21  Martin Baulig  <martin@ximian.com>
18080
18081         The Mono Debugger is now using the normal `mono' instead of the
18082         `mono-debugger-mini-wrapper' when executing managed code.
18083
18084         * debug-debugger.c: New file; previously known as
18085         debugger/wrapper/wrapper.c.
18086
18087         * debug-mini.c (mono_init_debugger): Removed.
18088
18089         * driver.c (mono_main): Added new `--inside-mdb' command line
18090         argument which is used when running inside the debugger.
18091
18092 2006-01-20  Zoltan Varga  <vargaz@gmail.com>
18093
18094         * liveness.c (mono_analyze_liveness): Remove some unused data
18095         structures.
18096
18097 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
18098
18099         * mini.h: Move mono_bitset_test_fast macro to monobitset.h where it belongs.
18100
18101 2006-01-16  Zoltan Varga  <vargaz@gmail.com>
18102
18103         * mini.h (mono_bitset_test_fast): Disable the 'fast' implementation which
18104         depends on implementation details of monobitset.
18105
18106         * mini.c (mini_get_ldelema_ins): Fix handling of 1 dimensional arrays.
18107         Fixes #77271.
18108
18109 2006-01-15  Zoltan Varga  <vargaz@gmail.com>
18110
18111         * liveness.c: Update after monobitset changes.
18112
18113 2006-01-14  Zoltan Varga  <vargaz@gmail.com>
18114
18115         * mini-amd64.c (mono_arch_compute_omit_fp): Fix a leak.
18116
18117 2006-01-11 Neale Ferguson <neale@sinenomine.net>
18118
18119         * inssel-s390x.brg: Fix reg: OP_LDADDR(OP_S390_LOADARG) register setting.
18120
18121         * mini-s390x.c: Remove warning messages.
18122
18123 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
18124
18125         * mini.c: pass the jitinfo to mono_profiler_method_end_jit.
18126
18127 2006-01-10  Zoltan Varga  <vargaz@gmail.com>
18128
18129         * generics.2.cs: Add ldelem/stelem_any test.
18130
18131 2006-01-10 Neale Ferguson <neale@sinenomine.net>
18132
18133         * mini-s390.c: Fix ATOMIC_ADD_I4 operation.
18134
18135 2006-01-07  Zoltan Varga  <vargaz@gmail.com>
18136
18137         * inssel-long.brg: Fix int->long ovf conversion rules. Fixes #77172.
18138         
18139 2006-01-06  Zoltan Varga  <vargaz@gmail.com>
18140
18141         * generics.2.cs: Reenable vtype tests.
18142
18143         * inssel-x86.brg: Remove an icorrect valuetype rule.
18144
18145 2006-01-06 Neale Ferguson <neale@sinenomine.net>
18146
18147         * mini-s390x.c, inssel-s390x.brg, cpu-s390x.md: Fix ATOMIC_I8 operations. Provide
18148         initial support for OP_ABS.
18149
18150 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18151
18152         * mini-s390x.c (emit_float_to_int): Correct r8 to unsigned int algorithm.
18153
18154 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18155
18156         * mini-s390.c, mini-s390.h, inssel-s390.brg, cpu-s390.md: Fix r8 to unsigned int 
18157         conversion and implement LADD/LSUB.
18158
18159         * exceptions-s390.c: Standardize mono_arch_find_jit_info to match other
18160         architectures.
18161
18162 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18163
18164         * mini-s390x.c, mini-s390x.h: Fix r8 to unsigned int conversion.
18165
18166         * exceptions-s390x.c: Standardize mono_arch_find_jit_info to match other
18167         architectures.
18168
18169 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18170
18171         * mini-s390x.c, mini-s390x.h, mini-s390.c, mini-s390.h: Fix lmf handling when 
18172         localloc is encountered.  Fixes crash in test-183.cs when using gmcs 
18173         (stack walk problem).
18174
18175 2006-01-04  Zoltan Varga  <vargaz@gmail.com>
18176
18177         * aot.c (mono_aot_load_method): Fix a warning.
18178
18179 2006-01-03  Neale Ferguson <neale@sinenomine.net>
18180
18181         * mini-s390x.h, exceptions-s390x.c, inssel-s390x.brg: Fix compiler warnings
18182
18183 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
18184
18185         * iltests.il: Add test for #77148.
18186
18187         * mini.c (mini_get_ldelema_ins): Handle arrays with rank 1 too. Fixes
18188         #77148.
18189
18190 2006-01-03  Neale Ferguson <neale@sinenomine.net>
18191
18192         * mini-s390x.c, inssel-s390x.brg: Remove debug statements
18193
18194 2006-01-03  Neale Ferguson <neale@sinenomine.net>
18195
18196         * mini-s390x.c, mini-s390x.h, exceptions-s390x.c, tramp-s390x.c, inssel-s390x.brg,
18197         cpu-s390x.md, mini-codegen.c, Makefile.am: add 64-bit s390 support to JIT.
18198
18199         * basic-long.cs: Add lconv-to-r4/r8 tests.
18200
18201 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
18202
18203         * mini.c (mono_method_to_ir): Fix DynamicMethod support in some opcodes.
18204
18205         * mini-sparc.c (mono_arch_call_opcode): Use mono_class_value_size ()
18206         here as on other archs.
18207
18208 2005-12-29 Neale Ferguson <neale@sinenomine.net>
18209
18210         * mini-s390.c (mono_arch_get_inst_for_method): Add memory_barrier support.
18211
18212 2005-12-29 Neale Ferguson <neale@sinenomine.net>
18213
18214         * inssel-s390.brg: Correct register assignment; Rework L[ADD|SUB]_OVF[_UN] for s390.
18215         
18216         * cpu-s390.md: Fix lengths of a couple of long instructions; Add memory_barrier.
18217
18218         * mini-s390.c: Fix long add/sub overflow instructions; Fix displacement handling in
18219         instrument_prolog; Add memory_barrier instruction.
18220
18221 2005-12-26  Zoltan Varga  <vargaz@gmail.com>
18222
18223         * exceptions-x86.c mini-x86.h: Fix solaris/x86 exception handling.
18224
18225 2005-12-23  Zoltan Varga  <vargaz@gmail.com>
18226
18227         * tramp-ia64.c (mono_arch_get_unbox_trampoline): Flush icache.
18228
18229         * aliasing.c inssel.brg: Fix warnings.
18230
18231         * inssel-ia64.brg (OP_MEMSET): Fix an optimization which previously
18232         could skip initialization of some parts of memory.
18233
18234         * mini.c mini-ia64.c: Fix warnings.
18235
18236         * inssel-sparc.brg: Add an implementation of lneg which actually works.
18237
18238 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
18239
18240         * aliasing.c (mono_build_aliasing_information): Add a workaround for
18241         a crash seen on sparc.
18242
18243         * mini-sparc.c: Add implementation of Thread.MemoryBarrier.
18244         
18245         * cpu-sparc.md: Add memory_barrier opcode. Remove unused opcodes.
18246
18247 2005-12-21 Neale Ferguson <neale@sinenomine.net>
18248
18249         * mini-ops.h: Add s390_backchain instruction
18250
18251         * inssel-s390.brg: Use backchaining instruction for LOADARG/STKARG operations.
18252
18253         * cpu-s390.md: Add s390_backchain instruction
18254
18255         * mini-s390.c: Significant ABI changes
18256
18257         * mini-s390.h: Cater for zero length structures
18258
18259 2005-12-20 Neale Ferguson <neale@sinenomine.net>
18260
18261         * mini-s390.c: ABI fixes
18262
18263         * inssel-s390.brg: Remove debug statements
18264
18265         * cpu-s390.md: Fix length of ATOMIC_xx operations
18266
18267 2005-12-19  Zoltan Varga  <vargaz@gmail.com>
18268
18269         * basic-float.cs: Add float<->long conversion tests.
18270
18271 2005-12-16 Neale Ferguson <neale@sinenomine.net>
18272
18273         * mini-s390.c: Fix LOCALLOC processing.
18274
18275         * tramp-s390.c (s390_magic_trampoline): Fix base calculation.
18276
18277 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
18278
18279         * iltests.il: Add tests for some opcodes not covered by the other
18280         tests.
18281
18282 2005-12-15 Neale Ferguson <neale@sinenomine.net>
18283
18284         * mini-s390.c: Fix ADDCC/SBB bug revealed by test_0_ulong_regress; Correct 
18285         register loading for Tail processing; Correct trace output.
18286
18287         * inssel-s390.brg: Reimplement LSUB_OVF due to s390 implementation of signed math.
18288
18289         * cpu-s390.md: Correct size of jmp instruction. 
18290
18291 2005-12-13 Neale Ferguson <neale@sinenomine.net>
18292
18293         * mini-s390.c (mono_arch_emit_prolog): Remove some debugging bits.
18294
18295 2005-12-13 Neale Ferguson <neale@sinenomine.net>
18296
18297         * inssel-s390.brg tramp-s390.c cpu-s390.md mini-s390.c mini-s390.h:
18298           Bring s390 up to current level.
18299
18300 2005-12-12  Zltan Varga  <vargaz@gmail.com>
18301
18302         * generics.2.cs: Disable the newly added tests as they do not work yet.
18303         
18304         * generics.2.cs: Add valuetype tests.
18305
18306 2005-12-09  Zoltan Varga  <vargaz@gmail.com>
18307
18308         * basic-long.cs: Add i4->u8 test.
18309
18310         * objects.cs: Add tests for JIT intrinsic.
18311
18312         * mini.c (mini_get_inst_for_method): Resurrect the array Rank/Length
18313         optimizations lost by a mistake.
18314
18315 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
18316
18317         * basic-long.cs: Remove a test moved to objects.cs.
18318
18319         * arrays.cs: Add more array tests.
18320
18321 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
18322
18323         * arrays.cs: Add new tests for multi-dimensional arrays.
18324
18325 2005-12-06  Raja R Harinath  <rharinath@novell.com>
18326
18327         * Makefile.am (test_sources2): Add generics.2.cs.
18328         (EXTRA_DIST): Add test_sources2.
18329
18330 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
18331
18332         Support for boxing and unboxing nullable types as well as the
18333         isinst operation on nullables, per the CLI ammendment.
18334
18335         * inssel.brg (CEE_ISINST): Special case for nullable
18336
18337         * mini.c (handle_unbox_nullable): new method
18338         (handle_box): Special case for nullable types
18339         (mono_method_to_ir): Call handle_unbox_nullable in correct
18340         places.
18341
18342         * generics.2.cs: New test suite
18343
18344         * Makefile.am: Support for regression tests with generics.
18345
18346 2005-12-03  Zoltan Varga  <vargaz@gmail.com>
18347
18348         * mini-amd64.c (emit_load_volatile_arguments): Add loading of arguments
18349         allocated to registers. Fixes #76800.
18350
18351 Thu Dec 1 12:59:40 EST 2005 Paolo Molaro <lupus@ximian.com>
18352
18353         * mini-ppc.c, inssel-ppc.brg: fix ABI issue (pinvoke3.cs).
18354
18355 2005-11-30  Zoltan Varga  <vargaz@gmail.com>
18356
18357         * exceptions.cs: Disable test_0_long_cast () test, since it fails on a lot 
18358         of platforms.
18359
18360 2005-11-29  Zoltan Varga  <vargaz@gmail.com>
18361
18362         * objects.cs basic-calls.cs: Move a test depending on valuetypes to
18363         objects.cs.
18364
18365         * inssel-long32.brg (CEE_CONV_I8): Remove unused labels.
18366         
18367         * inssel-long32.brg (CEE_CONV_I8): Convert this to a branchless version.
18368 Tue Nov 29 05:41:34 EST 2005 Paolo Molaro <lupus@ximian.com>
18369
18370         * mini-ppc.c, cpu-g4.md: ensure a fp register is converted to
18371         single precision before storing to a single precision location.
18372
18373 2005-11-28  Raja R Harinath  <rharinath@novell.com>
18374
18375         * Makefile.am (ILASM): Use profile-dependent location of ilasm.
18376
18377 2005-11-27  Zoltan Varga  <vargaz@gmail.com>
18378
18379         * basic-long.cs basic-calls.cs objects.cs: Move some tests to the
18380         correct files.
18381
18382         * basic.cs: Remove test_0_byte_compares test which was moved to
18383         objects.cs a long time ago.
18384
18385 2005-11-22  Massimiliano Mantione  <massi@ximian.com>
18386
18387         * aliasing.c: Fixed aliasing issue on 64 bit archs.
18388
18389 2005-11-20  Zoltan Varga  <vargaz@gmail.com>
18390
18391         * mini-ia64.c exceptions-ia64.c: Simplify the way filters/finally
18392         handlers are called.
18393
18394         * mini-ia64.c (mono_arch_emit_exceptions): Optimize size of exception
18395         throwing code.
18396
18397          * mini-ia64.c: Add support for the throw->branch exception 
18398         optimization.   
18399
18400         * driver.c (DEFAULT_OPTIMIZATIONS): Add MONO_OPT_EXCEPTION.
18401
18402 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
18403
18404         * mini.c: Enabled "fastpath" deadce :-)
18405         
18406 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
18407
18408         * mini.c: Added "fastpath" deadce (deadce without SSA), and a simple
18409         alias analysis pass to support it.
18410         * mini.h: Likewise.
18411         * ssa.c: Likewise.
18412         * liveness.c: Likewise (liveness computation can use aliasing
18413         information to be more accurate).
18414         * driver.c: Added an "ssa" option go tell the JIT to use SSA, and
18415         moreover made so that "--compile-all" uses the given optimization
18416         flags and not the default ones.
18417         * aliasing.c: Alias analysis (new file).
18418         * aliasing.h: Likewise.
18419         * Makefile.am: added "aliasing.c" and "aliasing.h".
18420         
18421 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
18422
18423         * mini-ops.h: Add missing OP_I opcodes so it is in synch with the
18424         OP_L opcodes.
18425
18426 2005-11-13  Zoltan Varga  <vargaz@gmail.com>
18427
18428         * mini-exceptions.c (mono_handle_exception_internal): Remove the 
18429         fp >= end_of_stack exit condition, as it is not needed, and it might
18430         become true for fp eliminated frames.
18431
18432 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
18433
18434         * mini-x86.c (mono_arch_emit_epilog): Use G_STRUCT_OFFSET instead of hard
18435         coded offsets.
18436
18437 Tue Nov 8 11:28:20 GMT 2005 Paolo Molaro <lupus@ximian.com>
18438
18439         * mini-arm.c: fixed alignment of doubles/longs to match
18440         the C ABI (bug #76635).
18441
18442 Mon Nov 7 16:13:21 CET 2005 Paolo Molaro <lupus@ximian.com>
18443
18444         * aot.c: fix compilation with --enable-minimal=aot.
18445
18446 Fri Nov 4 12:34:15 GMT 2005 Paolo Molaro <lupus@ximian.com>
18447
18448         * mini-arm.c: fixed compatibility with the new
18449         floating point emulator package for compares.
18450
18451 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com?
18452
18453         * mini.c : reverted sig->pinvoke changes (r51396-51397).
18454
18455 2005-11-01  Zoltan Varga  <vargaz@freemail.hu>
18456
18457         * mini-exceptions.c (print_stack_frame): Output to stderr.
18458         (mono_handle_native_sigsegv): Ditto.
18459
18460 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
18461
18462         * mini-amd64.c (mono_arch_output_basic_block): Remove unused
18463         OP_LCONV_TO_OVF_I implementation.
18464
18465         * mini-amd64.c: Add support for the throw->branch exception 
18466         optimization.
18467
18468         * branch-opts.c (mono_branch_optimize_exception_target): Allow the case
18469         when the catch clause catches a more general exception, i.e. Object.
18470
18471 2005-10-30  Zoltan Varga  <vargaz@gmail.com>
18472
18473         * cpu-ia64.md: Remove unused opcodes.
18474
18475         * mini.c (GET_CONTEXT): Simplify this somewhat by removing arch
18476         specific defines for architectures defining USE_SIGACTION.
18477
18478         * mini-ia64.c: Fix some warnings.
18479
18480         * exceptions-ia64.c (mono_arch_ip_from_context): Fix this, the previous
18481         version seemed to skip a frame.
18482
18483 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
18484
18485         * mini.c: Clean up the usage of sig->pinvoke flag. Now
18486         only calls which are made to native code use this flag.
18487
18488 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
18489
18490         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for
18491         varargs methods as well.
18492         
18493         * mini-amd64.c exceptions-amd64.c: Allow fp elimination in methods
18494         which have save_lmf set. Reorganize methods prologs a bit.
18495
18496         * mini-amd64.c (mono_arch_compute_omit_fp): Move the check for the
18497         debugger to the proper place.
18498
18499 2005-10-29  Martin Baulig  <martin@ximian.com>
18500
18501         * mini-amd64.c (debug_omit_fp): Temporarily disable fp elimination
18502         when running inside the debugger until the debugger has support
18503         for it.
18504
18505 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
18506
18507         * mini.h: Fix a warning.
18508
18509 2005-10-24  Miguel de Icaza  <miguel@novell.com>
18510
18511         * mini.c (mono_pmip): Just a wrapper for get_method_from_ip which
18512         we expose publicly, this returns the string.
18513
18514 2005-10-22  Zoltan Varga  <vargaz@freemail.hu>
18515
18516         * exceptions-amd64.c (mono_arch_find_jit_info): Fix some corner cases
18517         with fp elimination.
18518
18519 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
18520
18521         * mini-exceptions.c (mono_handle_native_sigsegv): Try to print a
18522         native stacktrace using the glibc 'backtrace' function if available.
18523
18524 2005-10-20  Zoltan Varga  <vargaz@gmail.com>
18525
18526         * mini.h (MonoDebugOptions): Remove 'abort_on_sigsegv' option.
18527
18528         * mini-exceptions.c (mono_handle_native_sigsegv): New function to 
18529         handle SIGSEGVs received while in native code.
18530
18531         * mini.c (sigsegv_signal_handler): If the SIGSEGV happened in native
18532         code, call mono_handle_native_sigsegv which will abort the runtime
18533         after printing some diagnostics, instead of converting it into a
18534         confusing NullReferenceException.
18535
18536 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
18537
18538         * cpu-pentium.md: Remove unused opcodes.
18539
18540 2005-10-18  Zoltan Varga  <vargaz@freemail.hu>
18541
18542         * mini-amd64.h (MonoLMF): Add rsp field.
18543
18544         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Save the sp reg into
18545         the lmf too.
18546
18547 2005-10-17  Zoltan Varga  <vargaz@gmail.com>
18548
18549         * mini-codegen.c (get_register_spilling): Fix some warnings.
18550
18551 2005-10-16  Zoltan Varga  <vargaz@freemail.hu>
18552
18553         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Add support for fp
18554         elimination during exception handling. Enable fp elimination by
18555         default.
18556
18557         * mini-amd64.h mini-amd64.c: Add preliminary support for frame pointer
18558         elimination.
18559
18560 2005-10-16  Martin Baulig  <martin@ximian.com>
18561
18562         * mini-exceptions.c
18563         (mono_debugger_run_finally): New public method for the debugger.
18564
18565 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
18566
18567         * debug-mini.c (mono_debug_init_method): Fix warning.
18568
18569         * mini.h branch-opts.c (mono_branch_optimize_exception_target): Make
18570         the 'exname' parameter const to fix some warnings.
18571
18572 2005-10-09  Zoltan Varga  <vargaz@freemail.hu>
18573
18574         * mini-exceptions.c (mono_handle_exception_internal): Fix another bug
18575         introduced by the previous patch.
18576
18577 2005-10-08  Zoltan Varga  <vargaz@gmail.com>
18578
18579         * basic-float.cs: Add test for precision of float arithmetic.
18580
18581         * mini-ia64.c (mono_arch_output_basic_block): Convert to/from doubles
18582         when loading/storing single values from/to memory.
18583
18584         * mini.c (mono_jit_compile_method_with_opt): Create the function
18585         pointers in the correct domain.
18586
18587 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
18588
18589         * mini-exceptions.c (mono_handle_exception_internal): Fix bug 
18590         introduced by previous patch.
18591         
18592         * mini-exceptions.c (mono_handle_exception_internal): Handle the case
18593         when out_filter_idx is NULL.
18594
18595         * mini-exceptions.c: Don't run filter clauses twice during exception
18596         handling. Fixes #75755.
18597
18598 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
18599
18600         * aot.c: Add support for ldflda wrappers.
18601
18602         * mini.c (mono_method_to_ir): Use ldflda wrappers for CEE_LDFLDA. Fixes
18603         #75902.
18604
18605 Tue Oct 4 20:23:25 CEST 2005 Paolo Molaro <lupus@ximian.com>
18606
18607         * mini.c, mini.h: do not consider exception handlers blocks when
18608         setting up interface variables.
18609
18610 2005-10-04  Zoltan Varga  <vargaz@freemail.hu>
18611
18612         * aot.c (emit_section_change): Fix emitting of sections on win32. Fixes #76322.
18613
18614 2005-10-03  Zoltan Varga  <vargaz@gmail.com>
18615
18616         * liveness.c (mono_analyze_liveness): Revert parts of r51051 since it
18617         causes a regression.
18618
18619         * mini.c (mini_thread_cleanup): Fix reading of freed memory.
18620
18621 2005-10-02  Zoltan Varga  <vargaz@freemail.hu>
18622
18623         * mini.h (OP_PCONST): Move the definition of OP_PCONST into the rest
18624         of the OP_P definitions.
18625
18626         * TODO: Add a proposal for dealing with the CEE/OP mess.
18627
18628         * mini-amd64.c (mono_arch_output_basic_block): Merge mul_imm 
18629         optimizations from the x86 port.
18630
18631         * cpu-amd64.md: Ditto.
18632
18633         * basic.cs basic-long.cs: Add tests.
18634
18635 Fri Sep 30 20:07:20 CEST 2005 Paolo Molaro <lupus@ximian.com>
18636
18637         * Makefile.am, driver.c, mini-x86.c, mini.c, mini.h, branch-opts.c:
18638         Patrik Torstensson's implementation of my exception-handling
18639         optimization idea, when the exception object is not used
18640         (bug #62150).
18641
18642 Fri Sep 30 19:10:29 CEST 2005 Paolo Molaro <lupus@ximian.com>
18643
18644         * mini-x86.c, cpu-pentium.md: Patrik Torstensson's port
18645         of the mul_imm optimizations from the old jit.
18646
18647 Fri Sep 30 11:37:51 EDT 2005 Paolo Molaro <lupus@ximian.com>
18648
18649         * mini.c, liveness.c: patch by Patrik Torstensson and
18650         Zoltan Varga to improve performance in methods with
18651         exception clauses.
18652
18653 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
18654
18655         * driver.c: Remove 'Globalization' entry from --version.
18656
18657 2005-09-28  Zoltan Varga  <vargaz@gmail.com>
18658
18659         * mini.c (mono_jit_compile_method_inner): Do not load AOT code when
18660         there is a profiler interested in JIT events.
18661
18662         * aot.c: Load profile files produced by the AOT profiling module, and
18663         reorder methods based on the profiling info. Add a 'method_order' table
18664         to the AOT file to make mono_aot_find_jit_info work with the reordered
18665         methods.
18666
18667         * mini.h: Bump AOT file version info.
18668
18669 Wed Sep 28 17:12:48 CEST 2005 Paolo Molaro <lupus@ximian.com>
18670
18671         * mini-arm.h: work around what looks like a gcc bug when optimizations
18672         are enabled.
18673
18674 2005-09-28  Raja R Harinath  <rharinath@novell.com>
18675
18676         * Makefile.am (AM_CFLAGS): Don't use += to append inside
18677         conditionals.  Use ...
18678         (PLATFORM_CFLAGS, ARCH_CFLAGS): ... these.
18679
18680 2005-09-27  Zoltan Varga  <vargaz@freemail.hu>
18681
18682         * mini-amd64.c (mono_arch_call_opcode): Use mono_class_value_size ()
18683         to determine the amount of memory to copy when passing valuetypes.
18684
18685         * inssel-amd64.brg: Remove PUSH(LDIND4) rules since they convert an
18686         4 byte load into a 8 byte load. Fix aligning of size in OP_OUTARG_VT.
18687
18688 2005-09-27  Zoltan Varga  <vargaz@gmail.com>
18689
18690         * mini.h mini.c aot.c: Add infrastructure to collect pagefault 
18691         information about aot.
18692
18693 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
18694
18695         * *.c: Replace the use of {Enter,Leave}CriticalSection with
18696         macros. This will allow a deadlock debugger to easily be plugged
18697         in.
18698
18699 Tue Sep 27 09:32:11 EDT 2005 Paolo Molaro <lupus@ximian.com>
18700
18701         * mini-ppc.c, cpu-g4.md: added memory barrier instruction.
18702
18703 2005-09-27  Raja R Harinath  <rharinath@novell.com>
18704
18705         * Makefile.am (AM_CFLAGS): Rename from INCLUDES.
18706         (AM_CFLAGS) [PLATFORM_WIN32): Append to it, don't set it.
18707         (AM_CFLAGS) [ARM]: Add arch/arm directory from the build tree.
18708         ($(arch_built)) [CROSS_COMPILING]: Error out.
18709
18710 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
18711
18712         * aot.c: Add support for the no_special_static flag for classes.
18713
18714 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
18715
18716         * Reapply reverted patches.
18717
18718         * *: Revert r50174 as well.
18719
18720         * mini-amd64.c cpu-amd64.md inssel-amd64.brg: Revert r50170 as well.
18721
18722 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
18723
18724         * mini-amd64.c: Revert r50342 to see if this fixed buildbot.
18725
18726 2005-09-23  Miguel de Icaza  <miguel@novell.com>
18727
18728         * mini.c (SIG_HANDLER_SIGNATURE): Only dereference info if it is
18729         part of the SIG_HANDLER_SIGNATURE.  
18730
18731 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
18732
18733         * mini.h mini.c: Add a new MONO_DEBUG option to collect metadata pagefault
18734         statistics.
18735
18736         * mini-x86.c (mono_arch_call_opcode): Fix vararg calling convention 
18737         introduced by previous patch.
18738
18739 2005-09-21  Zoltan Varga  <vargaz@gmail.com>
18740
18741         * tramp-x86.c (mono_arch_create_trampoline_code): Restore caller
18742         saved registers too.
18743
18744         * mini-x86.c (mono_arch_allocate_vars): Rewrite this so it works based 
18745         upon the information returned by get_call_info ().
18746         
18747         * mini-x86.c (add_float): Fix stack size calculation.
18748         (mono_arch_call_opcode): Rewrite this so it works based up the
18749         information returned by get_call_info ().
18750         (mono_arch_get_this_vret_args): Ditto.
18751
18752 2005-09-21  Zoltan Varga  <vargaz@freemail.hu>
18753
18754         * mini-amd64.c (mono_arch_emit_this_vret_args): Use the information
18755         in cinfo to determine the registers which need to be used.
18756
18757 2005-09-20  Miguel de Icaza  <miguel@novell.com>
18758
18759         * driver.c (mono_main): Add --server and --desktop flags. 
18760
18761 2005-09-16  Zoltan Varga  <vargaz@gmail.com>
18762
18763         * mini-ia64.h: Make register masks 64 bit. Don't treat argument
18764         registers as global registers.
18765
18766         * inssel-ia64.brg (stmt): Remove OP_OUTARG_REG () rules which are no 
18767         longer needed with the new register allocator.
18768
18769         * mini-ia64.c: Use OP_MOVE instead of OP_SETREG for reg-reg moves.
18770
18771         * cpu-ia64.md: Remove unused opcodes.
18772         
18773         * regalloc.c mini-codegen.c: Make register masks 64 bit on ia64.
18774         
18775 2005-09-16  Zoltan Varga  <vargaz@freemail.hu>
18776
18777         * cpu-amd64.md: Remove unused opcodes.
18778
18779         * inssel-amd64.brg: Remove OP_OUTARG_REG () rules which are no longer
18780         needed with the new register allocator.
18781
18782         * inssel-amd64.brg mini-amd64.c: Use OP_MOVE instead of OP_SETREG for
18783         reg-reg moves.
18784
18785 2005-09-16  Raja R Harinath  <rharinath@novell.com>
18786
18787         * Makefile.am (check-local): Don't invoke semdel-wrapper.
18788
18789 2005-09-16  Martin Baulig  <martin@ximian.com>
18790
18791         * exceptions-amd64.c
18792         (throw_exception): Don't call mono_debugger_throw_exception() if
18793         we're a rethrow - see the FIXME in the code.
18794
18795 2005-09-15  Geoff Norton  <gnorton@customerdna.com>
18796
18797         * mini.c (mono_init_exceptions): This only works on some architectures.
18798         
18799 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
18800
18801         * mini.c (mono_method_to_ir): Add OP_LMUL imm -> OP_LMUL_IMM conversion
18802         on ia64.
18803
18804         * inssel-long.brg mini-ia64.c: Add OP_LMUL_IMM rules.
18805
18806         * mini-ia64.h mini-ia64.c: Remove the altstack support code which is
18807         now in mini-exceptions.c.
18808
18809 2005-09-15  Zoltan Varga  <vargaz@freemail.hu>
18810
18811         * mini-amd64.h mini-am64.c: Remove the altstack support code which is
18812         now in mini-exceptions.c.
18813
18814 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
18815
18816         * exceptions-x86.c: Applied patch from Patrik Torstensson 
18817         <patrik.torstensson@gmail.com>. Add stack overflow handling support for win32.
18818
18819         * mini-exceptions.c mini-x86.c mini.c: Move the altstack setup/teardown
18820         code into mini-exceptions.c. Add some assertions to it.
18821
18822 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
18823
18824         * aot.c (emit_section_change): Applied patch from "The Software Team" 
18825         (<software@solmersa.com>). Fix as errors on windows.
18826
18827 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
18828
18829         * tramp-amd64.c (mono_arch_create_trampoline_code): Fix saving of
18830         method info into the LMF.
18831
18832 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
18833         
18834         * mini-ia64.c: Add proper unwind info for method epilogs.
18835
18836         * exceptions-ia64.c: Add some code to help debugging.
18837         
18838         * mini-ia64.c mini-ia64.h: Add sigaltstack support.
18839
18840         * mini-exceptions.c: Fix warning.
18841
18842 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
18843
18844         * mini.c: Really fix build.
18845
18846         * mini-x86.c mini-amd64.c: Fix build.
18847
18848 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
18849
18850         * mini-ia64.c inssel-ia64.brg: Add InterlockedExchange instrinsics.
18851
18852         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Implement
18853         some Interlocked methods as intrinsics.
18854
18855         * mini.c (mini_get_inst_for_method): Call arch_get_inst_for_method
18856         for Thread methods as well.
18857
18858         * mini-ops.h: Add OP_MEMORY_BARRIER opcode.
18859
18860         * inssel.brg: Add rule for OP_MEMORY_BARRIER.
18861
18862         * mini-ia64.c mini-x86.c mini-amd64.c 
18863         cpu-ia64.md cpu-pentium.md cpu-amd64.md: Add implementation of 
18864         OP_MEMORY_BARRIER.
18865         
18866         * mini.c (mono_init_exceptions): Fix build breakage.
18867
18868 2005-09-10  Zoltan Varga  <vargaz@gmail.com>
18869
18870         * mini-ia64.c exceptions-ia64.c tramp-ia64.c: Remove 'manual' emitting
18871         of instructions. Use the new ia64_unw_op macros for emitting unwind
18872         info.
18873
18874         * mini.c (mono_init_exceptions): Initialize exception handling
18875         related trampolines at startup.
18876
18877 Fri Sep 9 19:30:37 BST 2005 Paolo Molaro <lupus@ximian.com>
18878
18879         * cpu-arm.md, mini-arm.c: fix for dynamic code (Gtk# apps).
18880
18881 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
18882
18883         * mini.c: Handle type loading errors gracefully during compilation and
18884         throw the appropriate exception.
18885
18886 Fri Sep 9 09:49:14 CEST 2005 Paolo Molaro <lupus@ximian.com>
18887
18888         * ldscript.mono, Makefile.am: use anonymous versions in the ldscript
18889         for the mono binary.
18890
18891 2005-09-09  Martin Baulig  <martin@ximian.com>
18892
18893         * mini.c (mono_method_to_ir): Comment out the G_BREAKPOINT()'s for
18894         the release.
18895
18896 Thu Sep 8 14:53:45 BST 2005 Paolo Molaro <lupus@ximian.com>
18897
18898         * mini-arm.h: use emulation for conv.r.un for the release.
18899
18900 Thu Sep 8 11:28:45 BST 2005 Paolo Molaro <lupus@ximian.com>
18901
18902         * mini-arm.c, objects.cs: more fixes and tests for them.
18903
18904 Wed Sep 7 17:14:26 BST 2005 Paolo Molaro <lupus@ximian.com>
18905
18906         * mini-arm.c: align structures to at least 4 bytes to be able
18907         to keep our current optimized memcpy.
18908
18909 Tue Sep 6 22:51:08 BST 2005 Paolo Molaro <lupus@ximian.com>
18910
18911         * mini-arm.c, cpu-arm.md, inssel-arm.brg: bugfixes.
18912
18913 2005-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18914
18915         * mini.c: ignore SIGPIPE.
18916
18917 2005-09-04  Zoltan Varga  <vargaz@gmail.com>
18918
18919         * mini-ia64.c (mono_arch_lowering_pass): Convert 'and_imm 255' to zext1.
18920
18921         * mini-ia64.h mini-ia64.c: Add some minor optimizations.
18922
18923 2005-09-02  Zoltan Varga  <vargaz@gmail.com>
18924
18925         * mini.h: Add prototype for mono_allocate_stack_slots_full.
18926
18927 Thu Sep 1 21:05:26 BST 2005 Paolo Molaro <lupus@ximian.com>
18928
18929         * exceptions-arm.c, mini.c, mini-arm.c, mini-arm.h:
18930         exception handling support.
18931         * mini-arm.c, mini-arm.h: bigendian fixes (partially from a
18932         patch by Brian Koropoff <briank@marakicorp.com>).
18933
18934 Thu Sep 1 10:22:44 EDT 2005 Paolo Molaro <lupus@ximian.com>
18935
18936         * mini.c: revert another 'optimization' which breaks when
18937         items on the eval stack need to be saved at a basic block end
18938         (bug #75940).
18939
18940 Wed Aug 31 17:29:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
18941
18942         * jit-icalls.c: for arrays, ensure we always provide
18943         lower bounds.
18944
18945 2005-08-30  Zoltan Varga  <vargaz@gmail.com>
18946
18947         * mini.c (mono_allocate_stack_slots_full): Fix ia64 build.
18948         
18949         * mini.c (mini_get_inst_for_method): Special case Object:.ctor as well.
18950
18951 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
18952
18953         * mini-ia64.h mini-ia64.c: Implement frame pointer elimination. Keep
18954         arguments in their original register.
18955
18956 2005-08-28  Zoltan Varga  <vargaz@gmail.com>
18957
18958         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Optimize
18959         memset/memcpy.
18960
18961         * mini.c (mono_method_to_ir): Disable the MUL->MUL_IMM optimization
18962         when ssapre is enabled.
18963
18964         * inssel-long.brg: Fix bug in previous patch.
18965
18966         * mini-ia64.c mini-ia64.h mini.c inssel-long.brg: Optimize 
18967         multiplication by a constant.
18968
18969 2005-08-27  Zoltan Varga  <vargaz@gmail.com>
18970
18971         * mini-ia64.c (mono_arch_setup_jit_tls_data): Add support for intel
18972         icc.
18973
18974         * tramp-ia64.c (mono_arch_create_trampoline_code): Use st8.spill for
18975         saving registers.
18976
18977 Fri Aug 26 11:09:28 BST 2005 Paolo Molaro <lupus@ximian.com>
18978
18979         * inssel-arm.brg: apply changes tested by Brian Koropoff
18980         <briank@marakicorp.com>.
18981
18982 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
18983
18984         * mini-x86.c (mono_arch_emit_prolog): Fix calling of mono_jit_thread_attach () under windows.
18985         
18986 2005-08-24  Zoltan Varga  <vargaz@gmail.com>
18987
18988         * mini-codegen.c (mono_local_regalloc): Avoid allocating dreg and sreg1/2
18989         to the same register if dreg is just a base register.
18990         (print_ins): Improve printing of membase opcodes.
18991
18992         * inssel-x86.brg: Add optimized ldind(reg) rules.
18993
18994         * mini-x86.c cpu-pentium.md: Changes required to support the new rules.
18995
18996 Wed Aug 24 19:39:36 CEST 2005 Paolo Molaro <lupus@ximian.com>
18997
18998         * mini.c: when running under valgrind, set the stack bottom for
18999         the GC at the actual approximate stack for the app (fixes running
19000         mono with valgrind).
19001
19002 Tue Aug 23 21:38:50 CEST 2005 Paolo Molaro <lupus@ximian.com>
19003
19004         * mini.c: do no break at the first valuetype to init found
19005         (fixes bug #75791).
19006
19007 Tue Aug 23 16:53:21 BST 2005 Paolo Molaro <lupus@ximian.com>
19008
19009         * cpu-arm.md, mini-arm.c: more fixes and LMF support.
19010
19011 Tue Aug 23 15:11:44 CEST 2005 Paolo Molaro <lupus@ximian.com>
19012
19013         * cpu-g4.md: fixed instruction length exposed by the nemerle compiler.
19014
19015 2005-08-23  Zoltan Varga  <vargaz@freemail.hu>
19016
19017         * inssel-amd64.brg inssel-x86.brg: Fix the fcall rules.
19018
19019 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
19020
19021         * inssel-x86.brg: Fix assert in patch_delegate_trampoline.
19022
19023         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Add some debug
19024         code.
19025
19026         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Add some debug
19027         code.
19028
19029         * mini.c (optimize_branches): Don't quit after 1000 iterations on large
19030         methods.
19031
19032 Mon Aug 22 19:16:29 BST 2005 Paolo Molaro <lupus@ximian.com>
19033
19034         * tramp-arm.c: allocate less memory for the trampoline and fix typo.
19035
19036 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
19037
19038         * mini.c (mono_method_to_ir): Remove instructions inserted after a branch
19039         in the tail recursion optimization.
19040
19041         * mini.h helpers.c (mono_disassemble_code): Emit starts of basic blocks as 
19042         debug info into the assembly file.
19043
19044         * iltests.il: Add test for filter regions.
19045
19046         * mini.c (mono_method_to_ir): Fix handling of nested FILTER clauses. Fix
19047         initial stack of filter regions. Fixes #75755.
19048
19049 Mon Aug 22 17:49:16 BST 2005 Paolo Molaro <lupus@ximian.com>
19050
19051         * mini-arm.c, cpu-arm.c: fixes and support for methods with bigger
19052         stack requirements.
19053
19054 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
19055
19056         * mini.c (mono_create_delegate_trampoline): Fix memory leak. Put back
19057         the check for an already compiled method on non-ia64 platforms.
19058         (mono_create_jump_trampoline): Store the MonoJitInfo structure into the
19059         proper domain.
19060
19061         * mini-x86.h tramp-x86.c: Add support for delegate trampolines.
19062
19063         * inssel-x86.brg: Add some optimized call rules.
19064
19065 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
19066
19067         * mini.c (mono_create_delegate_trampoline): Do not return an already compiled
19068         method here.
19069
19070         * mini.h mini-trampolines.c: Pass the trampoline argument to 
19071         mono_arch_patch_delegate_trampoline.
19072
19073         * mini-ia64.h mini-ia64.c tramp-ia64.c: Add support for delegate trampolines.
19074
19075         * mini-trampolines.c: Fix build.
19076
19077         * mini-amd64.h: Add delegate trampolines.
19078
19079         * mini.h mini.c mini-trampolines.c tramp-amd64.c: Add delegate trampolines.
19080
19081         * inssel-amd64.brg: Add optimized call rules.
19082         
19083         * mini-ia64.c tramp-ia64.c: Improve instruction scheduling.
19084
19085         * inssel-ia64.brg: Add optimized ldind(reg) rules.
19086
19087 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
19088
19089         * mini.c (mono_create_class_init_trampoline): Fix bug caused by last
19090         change.
19091
19092         * mini-ia64.c: Remove LMF fixmes.
19093
19094         * mini-ia64.h: Remove most fields from LMF.
19095
19096         * inssel-ia64.brg (stmt): Fix unaligned access errors.
19097
19098         * mini-trampolines.c: Add support for IA64 function descriptors.
19099
19100         * mini.h mini.c jit-icalls.c exceptions-ia64.cdriver.c: Add support
19101         for IA64 function descriptors.
19102
19103 Sat Aug 20 16:51:44 BST 2005 Paolo Molaro <lupus@ximian.com>
19104
19105         * tramp-arm.c: patch the vtable for virtual calls. Added
19106         support code to register/unregister the LMF.
19107         * mini-arm.c, mini-arm.h: warning fixes, fixes, speedups,
19108         more LMF work.
19109
19110 2005-08-19  Dick Porter  <dick@ximian.com>
19111
19112         * mini.c: Use a gsize to store the thread ID, so it can hold a 64
19113         bit value if needed.
19114
19115 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
19116
19117         * mini.c (mini_get_method): Move handling of wrapper data here.
19118
19119         * mini.c (mono_method_to_ir): Add support for dynamic methods.
19120
19121         * mini.c (mono_method_to_ir): Convert nonvirtual calls to abstract methods into
19122         virtual.
19123
19124         * mini.c (mono_method_to_ir): Emit IR for CEE_NOP as well, so 
19125         bblock->code does not remain empty.
19126
19127 2005-08-17  Zoltan Varga  <vargaz@freemail.hu>
19128
19129         * arrays.cs: Add regression test for #75832.
19130
19131         * inssel-amd64.brg cpu-amd64.md mini-amd64.c: Fix LDELEMA optimization
19132         rules. Fixes #75832.
19133
19134         * mini-ia64.c tramp-ia64.c exceptions-ia64.c: Implement improved
19135         instruction scheduling.
19136
19137 2005-08-12  Zoltan Varga  <vargaz@freemail.hu>
19138
19139         * mini-exceptions.c (ves_icall_get_frame_info): Fix IA64 build.
19140
19141 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
19142
19143         * mini-exceptions.c mini-x86.h: Move VC stuff into macros in mini-x86.h.
19144
19145         * mini-codegen.c: Fix VC build.
19146
19147         * cpu-pentium.md: Increase length of atomic_exhange_i4.
19148
19149 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19150
19151         * mini.h: fix signature for mono_register_opcode_emulation.
19152
19153 2005-08-09  Zoltan Varga  <vargaz@freemail.hu>
19154
19155         * mini.c: Get rid of most of the helper_sig_... constants using
19156         mono_create_icall_signature ().
19157
19158 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
19159
19160         * jit-icalls.c (helper_ldstr): New helper function.
19161
19162         * mini.c (get_basic_blocks): Set out_of_line for bblocks containing a throw.
19163
19164         * mini.c (mono_method_to_ir): If an LDSTR instruction is in a bblock with a
19165         throw, load the string using a helper call instead of creating a string object.
19166
19167         * aot.c: Update after LDSTR changes.
19168
19169         * mini.h: Bump AOT file version.
19170         
19171         * aot.c: Save class size info into the AOT file. Print more statistics during
19172         compilation.
19173
19174         * mini.h: Bump AOT file version.
19175
19176         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
19177         ordering of disasm cases. Fixes #74957.
19178
19179 Thu Aug 4 19:47:24 BST 2005 Paolo Molaro <lupus@ximian.com>
19180
19181         * mini-ops.h, mini-arch.h, inssel.brg, mini.c, mini.h,
19182         jit-icalls.c, mini-codegen.c, Makefile.am: changes in
19183         the generic code needed for the ARM port.
19184
19185 Thu Aug 4 19:42:54 BST 2005 Paolo Molaro <lupus@ximian.com>
19186
19187         * exceptions-arm.c, tramp-arm.c, mini-arm.c, mini-arm.h, cpu-arm.md,
19188         inssel-arm.brg: more ARM features and fixes.
19189
19190 Mon Aug 1 18:37:38 BST 2005 Paolo Molaro <lupus@ximian.com>
19191
19192         * tramp-arm.c, mini-arm.c, cpu-arm.md, inssel-arm.brg: more
19193         ARM port work in progress.
19194
19195 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
19196
19197         * mini-ia64.c (mono_arch_call_opcode): Ongoing IA64 work.
19198
19199         * mini-exceptions.c mini-ia64.h: Ongoing IA64 work.
19200
19201         * mini-ia64.c (ia64_emit_bundle): Ongoing IA64 work.
19202
19203         * inssel.brg (mini_emit_memset): Add support for unaligned access.
19204
19205         * *-ia64.*: Ongoing IA64 work.
19206         
19207         * mini-ia64.c exceptions-ia64.c: Ongoing IA64 work.
19208
19209 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
19210
19211         * TODO: Remove out-of-data todo stuff.
19212
19213         * mini.h mini.c (mono_create_jit_trampoline_from_token): Remove some
19214         dead code.
19215
19216         * aot.c: Save/load MonoCachedClassInfo->has_nested_classes.
19217
19218         * mini.h: Bump corlib version.
19219
19220 2005-07-27  Martin Baulig  <martin@ximian.com>
19221
19222         * mini-codegen.c
19223         (create_copy_ins): Added `const unsigned char *ip' argument; set
19224         `copy->cil_code' from it.
19225
19226 2005-07-27  Martin Baulig  <martin@ximian.com>
19227
19228         * mini-exceptions.c (mono_handle_exception): Don't call
19229         mono_debugger_handle_exception() for filters.
19230
19231 2005-07-27  Zoltan Varga  <vargaz@freemail.hu>
19232
19233         * mini-trampolines.c (mono_aot_trampoline): Handle AppDomain:InvokeInDomain
19234         as well.
19235
19236 2005-07-26  Martin Baulig  <martin@ximian.com>
19237
19238         Committing a patch from Michal Moskal <michal.moskal@gmail.com>.
19239
19240         * mini.c (mono_method_to_ir): In `CEE_CALLI', only use
19241         helper_compile_generic_method() if the method is actually virtual
19242         and non-final.
19243
19244 2005-07-26  Martin Baulig  <martin@ximian.com>
19245
19246         * mini.c
19247         (trampoline_code): Renamed to `mono_trampoline_code' and made it
19248         public; this is now accessed directly by the debugger.
19249         (mono_generic_trampoline_code): Removed.
19250
19251         * debug-mini.c
19252         (mono_debug_init_method): Also add interncalls and wrappers.
19253
19254 2005-07-23  Zoltan Varga  <vargaz@freemail.hu>
19255
19256         * mini-ia64.c mini-ia64.h: Add support for tracing/profiling.
19257
19258 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
19259
19260         * aot.c (mono_aot_get_method_from_token): Fix a potential crash here.
19261
19262 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
19263
19264         * aot.c (load_patch_info): Fix handling of stfld_remote wrapper.
19265
19266 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
19267
19268         * mini-amd64.c (mono_arch_setup_jit_tls_data): Use the nice way of
19269         getting TLS offsets on AMD64 too.
19270
19271 2005-07-20  Kornel Pal <kornelpal@hotmail.com>
19272
19273         * driver.c: Detach console when executing IMAGE_SUBSYSTEM_WINDOWS_GUI on win32
19274
19275 Wed Jul 20 18:05:19 BST 2005 Paolo Molaro <lupus@ximian.com>
19276
19277         * exceptions-arm.c, mini-arm.c, tramp-arm.c, cpu-arm.md,
19278         inssel-arm.brg, mini-arm.h: ARM port work in progress.
19279
19280 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
19281
19282         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix build.
19283
19284         * mini.h mini.c mini-*.h tramp-*.c: Move more cross platform trampoline code
19285         to mini.c.
19286
19287         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Call 
19288         mono_sparc_is_virtual_call ().
19289         
19290         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix warning.
19291
19292         * tramp-sparc.c (mono_arch_create_trampoline_code): Fix order of
19293         trampoline parameters.
19294
19295         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix signature.
19296         
19297         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Rename this
19298         to mono_arch_get_vcall_slot_addr.
19299
19300         * Makefile.am tramp-sparc.c: Update the sparc port to use the generic
19301         trampoline code.
19302
19303         * *-sparc.*: Merge the mini-xp-regalloc branch for sparc.
19304
19305 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
19306
19307         * mini-ia64.h mini-ia64.c: Finish pinvoke support.
19308
19309 2005-07-19  Martin Baulig  <martin@ximian.com>
19310
19311         * exceptions-amd64.c (throw_exception): Call
19312         mono_debugger_throw_exception() here like we're doing it on i386.
19313
19314 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
19315
19316         * mini-ia64.c: Add optimized TLS access support.
19317
19318 2005-07-18  Zoltan Varga  <vargaz@freemail.hu>
19319
19320         * mini-exceptions.c: Ongoing IA64 work.
19321
19322         * mini-ia64.c inssel-long.brg: Ongoing IA64 work.
19323
19324         * mini.c: Use the default optimization set when embedding. Fixes
19325         #75194.
19326
19327 2005-07-11  Zoltan Varga  <vargaz@freemail.hu>
19328
19329         * tramp-amd64.c tramp-ia64.c Makefile.am: Move arch independent parts 
19330         of trampolines to a separate file.
19331
19332         * mini-trampolines.c: New file.
19333
19334         * mini.h tramp-x86.c: Move arch independent parts of trampolines to a 
19335         separate file.
19336         
19337         * tramp-x86.c: Reorganize the trampoline code to be similar to the 
19338         amd64/ia64 code.
19339
19340         * mini-codegen.c: Fix cygwin build.
19341
19342 2005-07-10  Zoltan Varga  <vargaz@freemail.hu>
19343
19344         * mini.c: Add some minor changes needed by the IA64 port.
19345
19346         * *-ia64.*: Ongoing IA64 work.
19347
19348 2005-07-09  Zoltan Varga  <vargaz@freemail.hu>
19349
19350         * tramp-amd64.c mini-amd64.c: Update after latest AOT changes. Split 
19351         trampolines into arch-independent and arch-dependent parts.
19352
19353         * mini-amd64.c (mono_arch_lowering_pass): Fix store_membase_imm -> store_membase_reg rule.
19354
19355 2005-07-08  Zoltan Varga  <vargaz@freemail.hu>
19356
19357         * cpu-amd64.md: Merge the xp-regalloc-branch for amd64.
19358
19359         * mini-ops.h mini-amd64.h mini-amd64.c inssel-amd64.brg Makefile.am: Merge
19360         the xp-regalloc-branch for amd64.
19361
19362         * mini-x86.h mini-x86.c cpu-pentium.md Makefile.am: Merge the
19363         xp-regalloc-branch for x86.
19364
19365 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
19366
19367         * inssel.brg (OP_THROW_OR_NULL): Allways rethrow the abort exception.
19368
19369 2005-07-06  Martin Baulig  <martin@ximian.com>
19370
19371         * mini.c
19372         (mono_jit_compile_method_inner): Call mono_get_inflated_method().
19373         (mono_jit_runtime_invoke): Likewise.
19374
19375 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
19376
19377         * aot.c (mono_compile_assembly): Allocate the GOT in the .bss segment
19378         on x86 too.
19379         
19380         * aot.c: Add new mono_aot_get_method_from_token () function to load AOT methods
19381         without loading their metadata. Reorganize the file format so exception handling+
19382         debug info is kept separate from normal method info. Create MonoJitInfo 
19383         structures for methods lazily.
19384
19385         * tramp-x86.c (x86_aot_trampoline): Use the new from_token method to avoid
19386         loading metadata.
19387         (x86_class_init_trampoline): Patch AOT class init trampolines too.
19388
19389         * mini.c (mini_init): Install the new mono_aot_find_jit_info hook.
19390
19391         * mini.c (mono_method_to_ir): Reduce the number of class init trampoline calls
19392         in AOT code.
19393
19394         * mini.h: Bump AOT file version.
19395
19396 2005-07-04  Zoltan Varga  <vargaz@freemail.hu>
19397
19398         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
19399
19400 2005-07-01  Raja R Harinath  <rharinath@novell.com>
19401
19402         * Makefile.am (check-local): Call semdel-wrapper.
19403
19404 2005-06-29  Zoltan Varga  <vargaz@freemail.hu>
19405
19406         * mini-x86.c: Revert the last change as it seems to break the build..
19407
19408 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
19409
19410         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
19411         
19412         * mini-x86.c (mono_arch_cpu_init): Fix setting of fp precision in the VC build.
19413
19414 2005-06-27  Ben Maurer  <bmaurer@ximian.com>
19415
19416         * mini.c (NEW_AOTCONST): make sure to call mono_get_got_var
19417         outside of the macro, so strange stuff doesn't happen with gcc4
19418         (NEW_AOTCONST_TOKEN): Likewise.
19419
19420 2005-06-28  Martin Baulig  <martin@ximian.com>
19421
19422         * mini.c (mini_class_is_system_array): New static method; use this
19423         instead of `klass->parent == mono_defaults.array_class' everywhere
19424         since this also works for the new generic array class.
19425
19426 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
19427
19428         * inssel.brg: Remove warnings.
19429
19430 2005-06-24  Zoltan Varga  <vargaz@freemail.hu>
19431
19432         * mini-ia64.c: Ongoing IA64 work.
19433
19434         * basic-float.cs: Add float->i1 conversion test.
19435
19436         * iltests.il: Add conv.u4 test.
19437
19438 2005-06-23  Zoltan Varga  <vargaz@freemail.hu>
19439
19440         * inssel-long.brg: Fix bug caused by last change.
19441
19442 2005-06-23  Geoff Norton  <gnorton@customerdna.com>
19443
19444         * mini-x86.h: Add __APPLE__ to the SC_* redefines with the other 
19445         BSDs.  Allows the x86 JIT to work on OSX86
19446
19447 2005-06-22  Zoltan Varga  <vargaz@freemail.hu>
19448
19449         * inssel-long.brg: Use OP_LSHR_UN_IMM instead of OP_SHR_UN_IMM in
19450         u4->i8 conversion.
19451
19452         * mini-ia64.c: Ongoing IA64 work.
19453
19454 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
19455
19456         * mini-ia64.c: Ongoing IA64 work.
19457
19458         * driver.c: Clean up jit_code_hash as well when using --regression.
19459
19460         * inssel-long.brg: Fix long->i4/u4 conversion rules.
19461
19462         * basic-long.cs: Add tests for long->u4 conversion.
19463
19464 2005-06-18  Ben Maurer  <bmaurer@ximian.com>
19465
19466         * mini.c: Take mono_get_domainvar out of macros. This makes sure
19467         that we do not depend on undefined C behavior: the order stuff
19468         gets evaluated within an expression. Fixes mono when compiled on
19469         GCC 4.
19470
19471 2005-06-18  Zoltan Varga  <vargaz@freemail.hu>
19472
19473         * *-ia64.*: Ongoing IA64 work.
19474
19475         * aot.c: Lower memory usage while loading AOT methods.
19476
19477         * tramp-x86.c: Avoid allocating+freeing MonoJitInfo structures.
19478
19479         * mini.h: Bump AOT file format version.
19480
19481 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
19482
19483         * mini.c (mono_method_to_ir): Allow STACK_PTR as input to SWITCH.
19484
19485 2005-06-16  Sebastien Pouliot  <sebastien@ximian.com>
19486
19487         * declsec.c: Fixed APTC to check for FullTrust on caller assembly (and
19488         not on callee assembly). Fixed some comments.
19489
19490 2005-06-16  Zoltan Varga  <vargaz@freemail.hu>
19491
19492         * aot.c (mono_compile_assembly): Mark the "methods" symbol as a function so
19493         it gets proper disassembly.
19494         (emit_method_info): Remove some dead code.
19495
19496         * mini.c (mini_method_compile): Allways allocate the GOT var in
19497         mono_method_to_ir for emulating opcodes.
19498
19499 2005-06-13  Zoltan Varga  <vargaz@freemail.hu>
19500
19501         * mini.c (mono_jit_free_method): Remove the method from the JitInfo table
19502         before freeing the code memory. Fixes #74990.
19503
19504         * objects.cs: Add regression test for #74992.
19505
19506         * liveness.c: Extend live ranges of arguments to the beginning of the
19507         method. Fixes #74992.
19508
19509         * exceptions-ia64.c mini-ia64.h: Modify ip during exception handling
19510         so it points into the faulting instruction.
19511
19512 2005-06-12  Zoltan Varga  <vargaz@freemail.hu>
19513
19514         * jit-icalls.c (mono_imul_ovf): Add exception handling.
19515
19516         * *-ia64.*: Ongoing IA64 work.
19517
19518         * mini.c (mini_init): Fix signature of mono_delegate_ctor.
19519
19520 2005-06-11  Zoltan Varga  <vargaz@freemail.hu>
19521
19522         * mini-ia64.h exceptions-ia64.c: Ongoing IA64 work.
19523
19524         * *-ia64.*: Ongoing IA64 work.
19525
19526 2005-06-10  Zoltan Varga  <vargaz@freemail.hu>
19527
19528         * basic-long.cs: Add tests for add/sub.ovf.
19529
19530         * basic.cs: Add tests for sub.ovf.
19531
19532         * *-ia64.*: Ongoing IA64 work.
19533
19534 2005-06-09  Zoltan Varga  <vargaz@freemail.hu>
19535
19536         * *-ia64.*: Ongoing IA64 work.
19537
19538         * basic.cs: Add conv.ovf.i4.un test.
19539
19540 2005-06-09  Massimiliano Mantione  <massi@ximian.com>
19541
19542         * mini.c: (remove_block_if_useless) Fixed bug 75061.
19543         
19544 2005-06-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19545
19546         * mini.c: no SIGUSR2 on windows. Remove it for PLATFORM_WIN32.
19547
19548 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
19549
19550         * *-ia64.*: Ongoing IA64 work.
19551
19552 2005-06-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19553
19554         * trace.[ch]:
19555         * mini.c: added the ability to toggle trace on/off using SIGUSR2.
19556
19557 2005-06-04  Zoltan Varga  <vargaz@freemail.hu>
19558
19559         * mini-ia64.c mini-ia64.h: Fix cleanup of memory stack.
19560
19561 2005-06-03  Zoltan Varga  <vargaz@freemail.hu>
19562
19563         * mini-amd64.c (emit_call): Fix yet another bug in the near call optimization.
19564
19565         * mini-amd64.c (amd64_patch): Add an assert to check that the destination
19566         of a call is callable by a near call.
19567
19568 2005-05-31  Zoltan Varga  <vargaz@freemail.hu>
19569
19570         * mini-ia64.c: Ongoing IA64 work.
19571
19572 2005-05-29  Zoltan Varga  <vargaz@freemail.hu>
19573
19574         * genmdesc.c: Make the generated array non-static.
19575
19576         * inssel-long.brg: Fix LSHR_IMM rule.
19577
19578         * *-ia64.*: Ongoing IA64 work.
19579
19580         * *-ia64.*: Ongoing IA64 work.
19581
19582 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
19583
19584         * *-ia64.*: Ongoing IA64 work.
19585
19586         * *-ia64.*: Ongoing IA64 work.
19587         
19588         * mini-ia64.c: Ongoing IA64 work.
19589
19590         * *-ia64.* jit-icalls.c mini-codegen.c: Ongoing IA64 work.
19591
19592 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
19593
19594         * objects.cs basic-calls.cs: Move some tests to objects.cs.
19595         
19596         * objects.cs basic-long.cs: Move some tests to objects.cs.
19597
19598 2005-05-26  Zoltan Varga  <vargaz@freemail.hu>
19599
19600         * *-ia64.*: Ongoing IA64 work.
19601
19602         * iltests.il: Add a new test.
19603
19604         * mini.c (mono_method_to_ir): Initialize valuetypes when created using
19605         newobj. Fixes #75042.
19606
19607 2005-05-22  Zoltan Varga  <vargaz@freemail.hu>
19608
19609         * *-ia64.*: Ongoing IA64 work.
19610         
19611         * *-ia64.*: Ongoing IA64 work.
19612         
19613         * *-ia64.*: Ongoing IA64 work.
19614
19615         * basic.cs objects.cs: Move tests accessing static variables as well.
19616
19617         * basic.cs objects.cs: Move test_0_pin_string to objects.cs.
19618
19619 2005-05-21  Zoltan Varga  <vargaz@freemail.hu>
19620
19621         * mini.c (SIG_HANDLER_SIGNATURE): Fix warning.
19622
19623         * driver.c: Always print failed tests.
19624
19625         * mini-codegen.c: Use cfg->frame_reg instead of a macro for the
19626         frame pointer.
19627
19628         * *ia64*: Ongoing IA64 work.
19629
19630 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
19631
19632         * basic.cs: Add tests for add.ovf. Fix warnings.
19633
19634 2005-05-18  Miguel de Icaza  <miguel@novell.com>
19635
19636         * driver.c (mono_main): Avoid crash if no argument is passed to
19637         --break;  Do not use g_error, but f_printf.   And fix all other
19638         ocurrences of the same crash.
19639
19640 2005-05-17  Zoltan Varga  <vargaz@freemail.hu>
19641
19642         * mini.h mini.c: Generalize the existing uses of the MONO_DEBUG env variable
19643         and add a new one: aborting when a SIGSEGV is raised while in unmanaged code.
19644         Fixes #74742.
19645
19646 2005-05-14  Zoltan Varga  <vargaz@freemail.hu>
19647
19648         * *-ia64.*: Add beginnings of IA64 backend.
19649
19650         * Makefile.am mini-arch.h mini-codegen.c: Add IA64 support.     
19651
19652 2005-05-13  Zoltan Varga  <vargaz@freemail.hu>
19653
19654         * inssel-long.brg: Add missing ulong->{i1, i2} checked conversions.
19655         Fixes #74925.
19656
19657         * basic-long.cs exceptions.cs: Add new tests. Fix some warnings.
19658
19659         * mini-amd64.c: Fix a warning.
19660
19661 2005-05-10  Zoltan Varga  <vargaz@freemail.hu>
19662
19663         * mini-amd64.c (mono_arch_output_basic_block): Fix stack space leakage
19664         in float_neg. Fixes #74897.
19665
19666         * mini-amd64.c (emit_call): Fix another near call bug.
19667
19668 2005-05-06  Sebastien Pouliot  <sebastien@ximian.com>
19669
19670         * declsec.c: Keep the appdomain information in the structure. Added a 
19671         missing "return FALSE" for Unmanaged if FullTrust is set (or else the
19672         value gets overwritten).
19673         * declsec.h: Set the default MonoArray for the the stack to 6. Added
19674         an MonoAppDomain member to MonoSecurityFrame.
19675         * mini-exceptions.c: Do not use a glist to keep GC allocated objects
19676         used in the stack walk. Now use a MonoArray which grow (double) when
19677         it gets full.
19678
19679 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
19680
19681         * mini.c: Re-enabled runtime cleanup, since running threads should
19682         now properly stop when exiting.
19683
19684 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
19685
19686         * mini-codegen.c: New file contaning the arch-independent local
19687         register allocator. Not used by any architectures yet.
19688
19689         * mini.h linear-scan.c: Merge some changes from the 
19690         mini-xp-local-regalloc branch.
19691
19692 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
19693
19694         * mini-amd64.c (emit_call): Fix calls to native functions when the
19695         runtime is compiled as a shared library. Fixes #74756.
19696
19697         * mini.c (mono_method_to_ir): Assert if ldsfld and friends are used
19698         on a literal field. Fixes #74751.
19699
19700 2005-04-25  Raja R Harinath  <rharinath@novell.com>
19701
19702         * Makefile.am (RUNTIME): Add MONO_CFG_DIR.
19703
19704 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
19705
19706         * objects.cs: Add missing null casting test.
19707
19708 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
19709
19710         * mini-exceptions.c (mono_find_jit_info): Fix native offset calculation
19711         in wrapper methods. Also rename 'address' variable to 'offset'.
19712
19713 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
19714
19715         * mini.c debug-mini.c aot.c tramp-x86.c driver.c: Fix some gcc 4.0
19716         warnings.
19717         
19718         * Makefile.am (MCS): Use -unsafe instead of --unsafe.
19719
19720         * aot.c: Applied patch from "The Software Team" <software@solmersa.com>. Make AOT compilation
19721         work on windows.
19722
19723 Mon Apr 18 16:20:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
19724
19725         * exceptions-ppc.c: update code to handle stack traces (fixes bug #74452).
19726
19727 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
19728
19729         * mini-x86.c (mono_emit_stack_alloc): Initialize the whole allocated area not
19730         just the last bytes.
19731
19732 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
19733
19734         * aot.c (mono_compile_assembly): Fix warning.
19735
19736         * mini-exceptions.c (ves_icall_get_frame_info): Fix bug introduced
19737         by the _MSC_VER stuff.
19738
19739 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
19740
19741         * inssel-long.brg: Fix #74588.
19742
19743         * cpu-amd64.md: Fix #74591.
19744
19745         * iltests.il: Add new regression tests.
19746
19747 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
19748
19749         * trace.c (mono_trace_enter_method): Print enums as an int, not as a
19750         valuetype.
19751
19752 2005-04-11  Zoltan Varga  <vargaz@freemail.hu>
19753
19754         * mini-x86.c (setup_stack): Unconditionally call pthread_attr_init ().
19755
19756         * exceptions-x86.c mini-x86.h mini-x86.c: Applied some freebsd patches 
19757         from Bill Middleton <flashdict@gmail.com>.
19758
19759 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
19760
19761         * arrays.cs: Add new regression test. Fix warnings.
19762
19763 2005-04-09  Zoltan Varga  <vargaz@freemail.hu>
19764
19765         * mini-amd64.c (mono_arch_output_basic_block): Fix stack alignment
19766         and leakage in CKFINITE.
19767
19768         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Change
19769         this to a null op since it is called on amd64 too.
19770
19771         * exceptions-amd64.c (get_throw_trampoline): Align stack.
19772
19773         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Remove
19774         body since this is not used on amd64.
19775         
19776         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Remove duplicate define.
19777
19778         * mini-amd64.c: Remove obsolete fixmes.
19779
19780         * mini.c (print_method_from_ip): Fix debugging support.
19781
19782 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
19783
19784         * ssapre.c: Fix a subtle bug about availability, and limit SSAPRE
19785         so that expressions that don't give much gain are not reduced.
19786         * ssapre.h: Likewise.
19787
19788 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
19789
19790         * exceptions-x86.c (mono_arch_find_jit_info): Remove last SC_EBP reference.
19791
19792         * mini-x86.c (mono_emit_stack_alloc): Fix localloc under windows.
19793
19794         * mini-x86.h exceptions-x86.c: Hopefully fix compilation on *BSD.
19795
19796 2005-04-01  Zoltan Varga  <vargaz@freemail.hu>
19797
19798         * mini-sparc.c mini-sparc.h: Add asserts when running with sigaltstack.
19799
19800         * exceptions-x86.c (mono_arch_monoctx_to_sigctx): Fix cygwin build.
19801
19802 2005-03-31  Zoltan Varga  <vargaz@freemail.hu>
19803
19804         * mini-x86.c: If sigaltstack support is enabled, perform win32 style
19805         stack touching.
19806
19807         * mini.h (mono_arch_sigctx_to_monoctx): New arch-specific function.
19808
19809         * mini.h (mono_arch_monoctx_to_sigctx): New arch-specific function.
19810
19811         * mini.c: sigaltstack support requires MONO_ARCH_USE_SIGACTION.
19812
19813         * mini-x86.h mini-x86.c exceptions-x86.c: Add support for 
19814         MONO_ARCH_USE_SIGACTION. Fixes #74252.
19815
19816         * mini-x86.h: Enable MONO_ARCH_USE_SIGACTION on linux.
19817
19818         * mini-x86.c: Fix up stack overflow handling.   
19819
19820         * exceptions.cs: Add new regression test.
19821
19822 2005-03-30  Zoltan Varga  <vargaz@freemail.hu>
19823
19824         * mini-x86.c (mono_arch_emit_prolog): Adjust stack after calls to
19825         mono_jit_thread_attach.
19826
19827         * mini.c (mono_method_to_ir): Verify called method is not abstract.
19828
19829 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
19830
19831         * mini.c (mono_method_to_ir): Applied Ben's patch from bug #61441 to
19832         avoid calling constructors using callvirt.
19833
19834         * inssel.brg: Fix #74073.
19835
19836 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
19837
19838         * aot.c, mini.h: Added mono-compiler.h header to allow/ease 
19839         compilation with non-GCC compilers.
19840         * mini-exceptions.c, mini-x86.c|h: Patches to make compilation of mono
19841         possible using VS.NET. Adapted from the work of J Lothian (for VC6).
19842
19843 Tue Mar 29 11:43:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
19844
19845         * inssel.brg, arrays.cs: fix long standing 64 bit issue in access to
19846         klass->interface_offsets (will likely fix bug#74073).
19847
19848 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
19849
19850         * mini-amd64.c (mono_arch_is_int_overflow): Fix rex handling.
19851
19852 2005-03-28  Zoltan Varga  <vargaz@freemail.hu>
19853
19854         * mini-amd64.c (mono_arch_output_basic_block): Fix order of parameters
19855         to amd64_div_reg_size ().
19856         
19857         * mini-amd64.c (mono_arch_emit_exceptions): Emit a near call here too.
19858
19859 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
19860
19861         * cpu-amd64.md (store_membase_reg): Fix length of storer8 opcodes.
19862
19863 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
19864
19865         * driver.c: Turn off automatic command line globbing under windows. Fixes #73763.
19866
19867 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
19868
19869         * mini.c (mono_method_to_ir): Remove debugging stuff left in by mistake.
19870         
19871         * mini.c (mono_precompile_assembly): Load and precompile referenced
19872         assemblies as well. Fixes #74015.
19873
19874 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
19875
19876         * cpu-amd64.md (sin): Fix up maximum lengths of some opcodes.
19877
19878 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
19879
19880         * declsec.c: Skip linkdemand checks for intra-corlib calls. This skips
19881         a lot of checks and (anyway) permissions cannot work until corlib is 
19882         loaded.
19883
19884 Wed Mar 23 14:29:49 CET 2005 Paolo Molaro <lupus@ximian.com>
19885
19886         * mini-ppc.c: fixed ABI issue on sysv/ppc.
19887
19888 Tue Mar 22 19:03:17 CET 2005 Paolo Molaro <lupus@ximian.com>
19889
19890         * tramp-ppc.c, exceptions-ppc.c: added missing icache flush
19891         calls (fixes bug#72824).
19892
19893 Tue Mar 22 16:28:48 CET 2005 Paolo Molaro <lupus@ximian.com>
19894
19895         * mini.c: fix tail recursion elimination (see test in bug#73936).
19896
19897 2005-03-21  Zoltan Varga  <vargaz@freemail.hu>
19898
19899         * mini-amd64.c (mono_arch_output_basic_block): Add inline versions of
19900         some fp functions in sse2 mode.
19901
19902 2005-03-20  Zoltan Varga  <vargaz@freemail.hu>
19903
19904         * mini-x86.c (emit_tls_get): Move tls handling into a separate helper function.
19905
19906 2005-03-19  Zoltan Varga  <vargaz@freemail.hu>
19907
19908         * mini.h mini.c: Add mono_get_jit_tls_key ().
19909
19910         * mini-x86.c: Enable fast TLS support on windows.
19911
19912 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
19913
19914         * declsec.c: Renamed aptc to allowpartiallytrustedcallers.
19915         * mini.c: Check for p/invoke method when generating code. If a
19916         p/invoke method, or it's class, isn't decorated with [Suppress
19917         UnmanagedCodeSecurity] then generate code to call System.Security.
19918         UnmanagedDemand (only if the security manager is active).
19919
19920 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
19921
19922         * tramp-amd64.c (create_specific_trampoline): Revert parts of the 
19923         last change as it seems to cause strange crashes.
19924         
19925 Wed Mar 16 16:24:11 CET 2005 Paolo Molaro <lupus@ximian.com>
19926
19927         * *.c: handle unsafe function pointers where needed.
19928
19929 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
19930
19931         * mini.c (mono_jit_free_method): Remove the fixme too.
19932
19933 2005-03-15  Miguel de Icaza  <miguel@novell.com>
19934
19935         * mini.c: As discussed, make the code actually free the delegate
19936         thunk now, to enable the debugging of delegate problems, use
19937         MONO_DEBUG=1 when running Mono. 
19938
19939         This takes also care of parts of the leaks as seen by Joe.
19940
19941 2005-03-15  Zoltan Varga  <vargaz@freemail.hu>
19942
19943         * mini-amd64.c (mono_arch_setup_jit_tls_data): Enable 
19944         thread_tls_offset calculation.
19945
19946 2005-03-14  Sebastien Pouliot  <sebastien@ximian.com>
19947
19948         * declsec.c: Reworked linkdemand checks for icall. The previous code
19949         was using the declaration code (untrusted) and didn't work as expected
19950         with the CLR 2.0. We're now more compatible with 2.0 than 1.x for this
19951         specific case.
19952
19953 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
19954
19955         * iltests.il: Add new localloc test.
19956
19957         * mini-amd64.c: Handle large stack allocations the same way as on
19958         windows if stack overflow handling is working.
19959         
19960         * mini-amd64.c: Allocate the signal stack using mmap.
19961
19962         * mini.c (sigsegv_signal_handler): Fix reading of context.
19963
19964         * mini-exceptions.c: Fix up stack overflow handling.
19965
19966         * mini-amd64.h mini-amd64.c: Fix up stack overflow handling.
19967
19968         * tramp-amd64.c (create_specific_trampoline): Optimize trampoline size.
19969
19970         * exceptions-amd64.c (mono_amd64_exceptions_init): Remove this.
19971
19972         * mini.h mini.c tramp-*.c: Move common trampoline code to mini.c.
19973
19974         * mini-x86.h mini-x86.c mini-amd64.h mini-amd64.c: Get rid of the
19975         tramp_init functions as they are no longer needed.
19976
19977 2005-03-12  Zoltan Varga  <vargaz@freemail.hu>
19978
19979         * tramp-amd64.c (mono_amd64_tramp_init): Fix typo.
19980         
19981         * tramp-amd64.c (mono_amd64_tramp_init): Init AOT trampoline as well.
19982
19983         * mini-amd64.h mini-amd64.c (mono_amd64_exceptions_init): Remove this.
19984         
19985         * mini.c mini-*.h: Remove OUT_OF_LINE_BBLOCK defines since all arches
19986         support that now.
19987
19988         * mini-ops.h: Add OP_LMUL_IMM.
19989
19990         * mini.c jit-icalls.cmini-amd64.h mini-amd64.c cpu-amd64.md: Implement
19991         long mul/div opcodes as intrinsic.
19992
19993         * mini-amd64.c (emit_call): Handle the case when the callee might be
19994         an AOT method.
19995
19996 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
19997
19998         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Reorder cases to be
19999         extra safe.
20000         
20001         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Fix ordering of cases.
20002
20003         * aot.c (mono_aot_load_method): Get rid of bogus make_writable call.
20004
20005 2005-03-09  Ben Maurer  <bmaurer@ximian.com>
20006
20007         * mini.c (mono_codegen): Don't leak here, to help people running
20008         monogrind.
20009
20010 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
20011
20012         * mini-amd64.c (mono_arch_output_basic_block): Fix int->float 
20013         conversions in sse2 mode.
20014
20015         * basic-float.cs: Add regression test.
20016         
20017         * mini-amd64.c: Reenable sse2.
20018
20019 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
20020
20021         * mini-amd64.c: Disable sse2 until some regressions are fixed.
20022
20023 2005-03-07      Joerg Rosenkranz <joergr@voelcker.com>
20024
20025         * driver.c: Copyright text should include 2005.
20026         
20027 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
20028
20029         * cpu-amd64.md (load_membase): Fix more max lengths.
20030
20031 2005-03-06  Zoltan Varga  <vargaz@freemail.hu>
20032
20033         * cpu-amd64.md (load_membase): Fix max length.
20034
20035         * mini-ops.h: Add OP_F<xx>_MEMBASE opcodes.
20036
20037         * inssel.brg: Add MONO_EMIT_BIALU_MEMBASE macro.
20038
20039         * cpu-amd64.md inssel-amd64.brg mini-amd64.h mini-amd64.brg: Finish SSE2
20040         support and enable it by default. Also add OP_F<xxx>_MEMBASE opcodes.
20041
20042         * basic-float.cs: Add rounding regression test.
20043
20044         * mini-amd64.c (INST_IGNORES_CFLAGS): Add more instructions.
20045
20046 2005-03-04  Neale Ferguson <NealeFerguson@earthlink.net>
20047
20048         * inssel-s390.brg, mini-s390.c: Add support for passing/returning small
20049         structures in registers for pinvoke wrappers.
20050
20051 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
20052
20053         * mini-exceptions.c (ves_icall_get_trace): Return wrapper info as well.
20054
20055 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
20056
20057         * mini.h mini.c mini-x86.c: Pass the domain of the native->managed
20058         wrapper to mono_jit_thread_attach.
20059
20060         * mini.c (mini_jit_thread_attach): New jit icall.
20061
20062         * mini-x86.c (mono_arch_emit_prolog): Attach to the VM in 
20063         native->managed wrappers.
20064
20065         * exceptions.cs: Add new regression test.
20066
20067         * mini.c (optimize_branches): Check regions in the cbranch to throw
20068         block case as well. Fixes #73242.
20069
20070 Tue Mar 1 18:35:27 CET 2005 Paolo Molaro <lupus@ximian.com>
20071
20072         * mini.c: thread safety fixes.
20073
20074 2005-02-27  Zoltan Varga  <vargaz@freemail.hu>
20075
20076         * tramp-amd64.c (amd64_magic_trampoline): Disable the method_ptr
20077         patching stuff, since delegates use jump trampolines so there is
20078         no caller.
20079
20080         * tramp-amd64.c (create_trampoline_code): Pass NULL as 'code' in 
20081         jump trampolines.
20082         
20083         * tramp-amd64.c: Fix build.
20084
20085         * mini-x86.c tramp-x86.c: Moved get_vtable_slot_addr into mini-x86.c and rename
20086         it to mono_arch_.... Add get_delegate_method_ptr implementation for x86.
20087
20088         * mini-amd64.h mini.h mini-amd64.c tramp-amd64.c (mono_amd64_get_vcall_slot_addr):
20089         Rename this to mono_arch....
20090         (mono_amd64_get_delegate_method_ptr_addr): Ditto.
20091
20092         * mini-amd64.c (mono_amd64_get_delegate_method_ptr_addr): New helper function.
20093
20094         * mini-amd64.c (emit_call): If both the caller and the callee is
20095         guaranteed to have 32 bit addresses, emit a normal call.
20096
20097         * tramp-amd64.c: Adapt to changes in mini-amd64.c.
20098
20099         * tramp-amd64.c (amd64_magic_trampoline): Remove patching of trampolines. 
20100         * tramp-amd64.c (amd64_magic_trampoline): Add support for patching the
20101         method_ptr inside delegates.
20102
20103 2005-02-26  Zoltan Varga  <vargaz@freemail.hu>
20104
20105         * mini.c (mono_jit_free_method): Free the method info even if the native code is
20106         invalidated. Fixes #73001.
20107
20108         * mini.c: Add a proper icall wrapper for mono_delegate_ctor.
20109
20110         * mini-x86.c: Only use stdcall for pinvokes on windows.
20111
20112 Thu Feb 24 15:22:30 CET 2005 Paolo Molaro <lupus@ximian.com>
20113
20114         * mini.c, mini.h: make mono_lmf_addr a fast-access thread var.
20115         * mini-x86.c: remove unreliable __thread var offset detection,
20116         use the correct accessors and enable by default.
20117
20118 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
20119
20120         * mini.c (mono_jit_free_method): Fix memory leak.
20121
20122 2005-02-22  Zoltan Varga  <vargaz@freemail.hu>
20123
20124         * mini.c (mono_method_to_ir): Allocate a GOT var for THROW and RETHROW. 
20125
20126 2005-02-21  Zoltan Varga  <vargaz@freemail.hu>
20127
20128         * cpu-amd64.md: Fix lengths of atomic opcodes.
20129
20130 Mon Feb 21 16:52:20 CET 2005 Paolo Molaro <lupus@ximian.com>
20131
20132         * driver.c: try to not imply using ICU is any good.
20133
20134 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
20135
20136         * mini-amd64.c (mono_arch_get_inst_for_method): Implement more 
20137         functions as inline ops.
20138
20139         * mini-ops.h inssel-amd64.brg cpu-amd64.md mini-amd64.c: Implement
20140         some Interlocked functions as inline ops.
20141
20142         * mini.c (move_basic_block_to_end): Fix bug in last patch.
20143
20144         * mini.h (MonoBasicBlock): Reorganize fields a bit.
20145
20146         * mini-ops.h inssel.brg: Add OP_NOT_REACHED.
20147
20148         * mini.c: Add support for OP_NOT_TAKEN.
20149
20150         * mini-amd64.h mini-amd64.c: Add support for passing/returning small 
20151         structures in registers for pinvoke wrappers.
20152
20153         * mini-amd64.c: Fix warnings.
20154
20155 2005-02-19  Zoltan Varga  <vargaz@freemail.hu>
20156
20157         * mini.h (MonoCompile): Add 'ret_var_is_local' field.
20158
20159         * mini.h mini.c (mono_arch_create_vars): Add new arch specific hook.
20160
20161         * mini.c (NEW_RETLOADA): If the ret variable is a local, use its 
20162         address instead of loading the address from it.
20163
20164         * mini-x86.c: Add support for returning small structs in registers
20165         on Win32. Fixes part of #70864.
20166         
20167 2005-02-18  Zoltan Varga  <vargaz@freemail.hu>
20168
20169         * trace.c (get_token): Improve error checking.
20170
20171 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
20172
20173         * jit-icalls.c (mono_ldvirtfn): Explicitly check for a NULL obj here.
20174
20175 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com> 
20176  
20177         * mini.h: Moved MONO_EXCEPTION_* enum to metadata/class-internals.h so
20178         it can be reused for MonoClass.
20179         * mini.c: Renamed MONO_EXCEPTION_SECURITY to MONO_EXCEPTION_SECURITY
20180         _LINKDEMAND.
20181
20182 2005-02-15  Sebastien Pouliot  <sebastien@ximian.com>
20183
20184         * mini.c: Fixed 2 cases where I sent a MonoMethod to managed code 
20185         instead of a MonoReflectionMethod. The method information wasn't used
20186         when displaying SecurityException details (but will be now).
20187
20188 2005-02-15  Atsushi Enomoto  <atsushi@ximian.com>
20189
20190         * Makefile.am : windows build fix.
20191
20192 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
20193
20194         * iltests.il: Add new regression test.
20195
20196         * mini.c (mono_method_to_ir): Allocate a GOT var in CEE_NEWOBJ. Fixes
20197         #72522.
20198
20199 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com> 
20200  
20201         * mini.c: Moved linkdemand check into helper function check_linkdemand
20202         to allow reuse for all intructions (CALL, CALLVIRT, NEWOBJ, JMP, 
20203         LDFTN, LDVIRTFTN).
20204
20205 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com>
20206
20207         * declsec.c: Added statistics counter for different kinds of 
20208         LinkDemands.
20209         * mini.h: Added CAS statistic counters to MonoJitStats. Removed unused
20210         (and commented) declaration.
20211         * mini.c: Added statistics counter for security Demand code 
20212         generation. Added display of security statistics.
20213
20214 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
20215
20216         * declsec.c (mono_declsec_linkdemand_aptc): Applied patch from Robert Jordan (robertj@gmx.net).
20217         Fix compilation errors under gcc-2.95.
20218
20219 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
20220
20221         * mini.c, driver.c: Use the new jit trampoline hashtable
20222
20223 Fri Feb 11 18:47:11 CET 2005 Paolo Molaro <lupus@ximian.com>
20224
20225         * mini.c, jit-icalls.c: use the managed implementation of memcpy, too.
20226
20227 2005-02-11  Martin Baulig  <martin@ximian.com>
20228
20229         * debug-mini.c (mono_debug_close_method): Free the line number array.
20230
20231 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
20232
20233         * aot.c: Break up large methods into smaller ones. Share GOT slots for
20234         icalls.
20235
20236         * mini.h: Bump AOT file format version. 
20237
20238 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
20239
20240         * declsec.c: Added LinkDemand support and it's special cases for ECMA,
20241         APTC and P/Invoke.
20242         * declsec.h: Added macros to get/set lazyly initialized security 
20243         informations about assemblies. Added new enum for different type of
20244         possible LinkDemand violation. Added function to check LinkDemands.
20245         * mini.h: Added a field to MonoCompile to hold any security violation
20246         detected when JITting a method (so it can be thrown later).
20247         * mini.c: Added LinkDemand checks in mono_method_to_ir for CEE_CALL 
20248         and CEE_CALLVIRT. Added code to throw exception at the end of
20249         mini_method_compile (note: the exception is unhandled right now).
20250
20251 Thu Feb 10 15:49:44 CET 2005 Paolo Molaro <lupus@ximian.com>
20252
20253         * mini.c, jit-icalls.c: use the managed implementation of
20254         memset for initobj and memset, to avoid managed <-> unmanaged
20255         transitions.
20256
20257 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
20258
20259         * inssel.brg (mini_emit_virtual_call): Disable the virtual->nonvirtual
20260         optimization if it would need a GOT var.
20261
20262         * basic.cs: Add tests for constant propagation and switch statements.
20263
20264         * ssa.c: Fix out-of-range constant propagation and switch statements.
20265
20266 2005-02-09    <vargaz@freemail.hu>
20267
20268         * inssel-x86.brg (reg): Align the allocation size in the localloc(imm) case too.
20269
20270 2005-02-08  Zoltan Varga  <vargaz@freemail.hu>
20271
20272         * cpu-amd64.md (load_membase): Fix max length of load_membase.
20273
20274 Tue Feb 8 18:21:11 CET 2005 Paolo Molaro <lupus@ximian.com>
20275
20276         * mini.c: update to new signature of mono_class_get_allocation_ftn().
20277
20278 2005-02-06  Neale Ferguson <NealeFerguson@earthlink.net>
20279
20280         * cpu-s390.md,  mini-s390.c: Correct bug with register usage on certain 
20281         arithmetic operations.
20282
20283 Sun Feb 6 07:10:12 EST 2005 Paolo Molaro <lupus@ximian.com>
20284
20285         * mini-ppc.c: add a workaround for broken user code that
20286         DllImports vararg functions with non-vararg signatures.
20287
20288 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
20289
20290         * mini.c (mono_jit_compile_method_inner): Add detection and a 
20291         meaningfull error message for assemblies written in Managed C++.
20292
20293         * tramp-amd64.c mini-amd64.h: Add support for 
20294         create_trampoline_from_token ().
20295
20296         * aot.c mini-x86.c abcremoval.c: Applied patch from
20297         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
20298
20299 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
20300
20301         * mini.h mini.c mini-x86.h tramp-x86.c: Add a new kind of trampoline 
20302         which takes a MonoImage/token as parameter instead of a MonoMethod.
20303
20304         * aot.c: Use the new trampoline for initializing vtables.
20305
20306         * aot.c: Add support for ldfld/stfld_remote wrappers.
20307
20308         * mini-ops.h cpu-pentium.md inssel-x86.brg mini-x86.c: Add optimized
20309         rules for compare <MEM>, IMM.
20310
20311         * mini.h (MONO_AOT_FILE_VERSION): Bump it.
20312
20313         * aot.c: Handle inherited finalizers correctly.
20314
20315 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
20316
20317         * inssel.brg (stmt): Add a missing _setup_... ().
20318
20319         * aot.c: Save some parts of the class state to the AOT file and use it
20320         to recompute that state when a class is initialized.
20321
20322         * mini.c: Install AOT hooks into the runtime.
20323
20324         * mini.h: Bump AOT file format version.
20325         
20326         * mini.c (mono_method_to_ir): Initialize pointer type locals correctly.
20327         Fixes #72148.
20328
20329         * iltests.il: Add new test.
20330
20331 Wed Feb 2 16:53:59 CET 2005 Paolo Molaro <lupus@ximian.com>
20332
20333         * mini.c: fix typo.
20334
20335 Wed Feb 2 16:37:13 CET 2005 Paolo Molaro <lupus@ximian.com>
20336
20337         * mini.c: setup the statistical profiler in the thread attach
20338         callback to cope with the new single thread code.
20339
20340 Wed Feb 2 15:43:58 CET 2005 Paolo Molaro <lupus@ximian.com>
20341
20342         * mini-ppc.c: ensure we have enough room for the profiler
20343         calls (fixed bug#72084).
20344
20345 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
20346
20347         * aot.c: Get rid of the MonoAotMethod structure and the hashtable holding 
20348         it.
20349
20350 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
20351
20352         * driver.c: Re-enabled SSAPRE (two commits, I was just dumb).
20353
20354 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
20355
20356         * ssapre.c: Fixed an issue with down safety (this allows IronPython
20357         to succesfully execute parrotbench).
20358         * ssapre.h: Likewise.
20359
20360 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
20361
20362         * ssa.c: In mono_ssa_rename_vars, forced the creation of a new SSA
20363         variable for stores to method arguments (fixes a SSAPRE issue).
20364
20365 Tue Feb 1 15:52:26 CET 2005 Paolo Molaro <lupus@ximian.com>
20366
20367         * mini.c: handle value types in dup, fixes gen-112.cs.
20368
20369 Tue Feb 1 11:45:19 CET 2005 Paolo Molaro <lupus@ximian.com>
20370
20371         * mini-ppc.c, cpu-g4.md, tramp-ppc.c: use a slower code
20372         sequence for calls in dynamic methods to avoid thunks.
20373
20374 Tue Feb 1 11:44:01 CET 2005 Paolo Molaro <lupus@ximian.com>
20375
20376         * mini.c: correctly remove dynamic methods from the hashtable.
20377
20378 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20379
20380         * driver.c: Disabled SSAPRE until fix the bug that appears
20381         in IronPython's parrotbench.
20382
20383 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
20384
20385         * aot.c (mono_compile_assembly): Get rid of Skip (other) messages.
20386
20387         * mini.c (mono_method_to_ir): Revert the previous change.
20388         
20389         * mini.c (mono_method_to_ir): Do not inline ldfld and stfld wrappers
20390         when AOT compiling.
20391
20392         * tramp-x86.c (x86_magic_trampoline): Avoid calls to 
20393         mono_jit_info_table_find () etc. when running under valgrind.
20394
20395         * inssel.brg: Fix warnings.
20396
20397         * mini-exceptions.c: Fix warnings.
20398
20399 2005-01-31  Martin Baulig  <martin@ximian.com>
20400
20401         * driver.c (compile_all_methods_thread_main): Don't try to compile
20402         generic methods or anything which has type parameters.
20403
20404 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
20405
20406         * aot.c: Avoid costly calls to mono_method_full_name in tracing code and fix memory leaks.
20407
20408         * TestDriver.cs: Add --verbose flags.
20409
20410         * graph.c ssa.c: Fix 64 bit warnings.
20411         
20412         * abcremoval.h ssapre.h abcremoval.c ssapre.c mini.c tramp-amd64.c 
20413         trace.c mini-exceptions.c linear-scan.c inssel-amd64.brg inssel.brg:
20414         Fix 64 bit warnings.
20415
20416         * mini-amd64.c (mono_arch_output_basic_block): Fix uninitialized
20417         variable not spotted by gcc.
20418         
20419         * mini-amd64.c inssel-amd64.brg: Applied patch from  
20420         Willibald Krenn <Willibald.Krenn@gmx.at>. Clean up usage of 
20421         X86_COMPARE_MEMBASE opcodes.
20422
20423         * exceptions-amd64.c (mono_arch_find_jit_info): Fix AMD64 build.
20424
20425 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
20426
20427         * *: MonoMethod->signature might be NULL now. You *MUST* use
20428         mono_method_signature.
20429
20430 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
20431
20432         * driver.c (compile_all_methods_thread_main): Compile the methods
20433         without invoking cctors.
20434
20435 Fri Jan 28 18:28:26 CET 2005 Paolo Molaro <lupus@ximian.com>
20436
20437         * mini.c: remove ben's "optimizations" to dup+stloc (bug #71905).
20438         * basic-calls.cs: test for the above.
20439
20440 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
20441
20442         * mini.c mini-exceptions.c aot.c exceptions-*.c: Update after 
20443         MonoJitInfo changes.
20444
20445 2005-01-27  Zoltan Varga  <vargaz@freemail.hu>
20446
20447         * mini-exceptions.c (mono_handle_exception): Compute the stack trace
20448         eagerly if it contains dynamic methods.
20449         
20450         * mini-exceptions.c (ves_icall_System_Exception_get_trace): New icall.
20451
20452         * mini-exceptions.c (mono_handle_exception): Avoid computing the stack
20453         trace, it is now computed by an icall from trace_ips.
20454         
20455         * mini-exceptions.c: Fix a warning.
20456
20457 Thu Jan 27 13:38:34 CET 2005 Paolo Molaro <lupus@ximian.com>
20458
20459         * mini-exceptions.c: don't bother getting stack trace info if
20460         it's not going to be used.
20461
20462 2005-01-27  Raja R Harinath  <rharinath@novell.com>
20463
20464         * Makefile.am (common_sources): Add ssapre-cee-ops.h and
20465         ssapre-mini-ops.h.
20466
20467 2005-01-26  Zoltan Varga  <vargaz@freemail.hu>
20468
20469         * mini.c (remove_block_if_useless): Only print debug stuff with -v -v.
20470
20471         * aot.c: Avoid calling mono_method_get_header () if not needed.
20472
20473         * mini.h: Bump AOT file format version.
20474         
20475         * mini.c (mono_emit_native_call): Allocate a GOT var here.
20476
20477         * mini.c (mono_print_tree): Print more info for calls.
20478
20479 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
20480
20481         * declsec.h: Remove warning by adding missing include for marshal.h
20482
20483 2005-01-26  Martin Baulig  <martin@ximian.com>
20484
20485         * mini.c (mono_method_to_ir): In CEE_UNBOX_ANY, don't increase
20486         `ip' twice.
20487
20488 2005-01-25  Zoltan Varga  <vargaz@freemail.hu>
20489
20490         * mini-amd64.c (mono_arch_call_opcode): Add missing MONO_SSA_LOAD/STORE
20491         flags.
20492
20493         * ssa.c (mono_ssa_compute): Fix crashes when using AOT.
20494
20495         * aot.c (mono_compile_assembly): Fix a warning.
20496
20497 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com>
20498
20499         * declsec.c: Look for security attributes on the original MonoMethod 
20500         (and not the wrapped one). This fix permissions on icalls.
20501
20502 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
20503
20504         * mini-amd64.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
20505
20506         * mini.c (mono_allocate_stack_slots): Add a fixme.
20507
20508         * mini-x86.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
20509
20510 Sun Jan 23 16:16:48 CET 2005 Paolo Molaro <lupus@ximian.com>
20511
20512         * inssel.brg: optimize casts of sealed types (more
20513         optimizations waiting for fixes in remoting).
20514
20515 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
20516
20517         * inssel.brg (stmt): Add another dummy rule.
20518
20519         * driver.c: Fix warnings.
20520
20521         * driver.c (mono_main): If running under valgrind, instruct glib to use
20522         the system allocation functions so valgrind can track the memory
20523         allocated by the g_... functions.
20524
20525         * inssel.brg (stmt): Add DUMMY rule for OP_DUMMY_STORE.
20526
20527         * mini-ops.h: Add OP_DUMMY_STORE opcode.
20528
20529         * mini.h (MONO_BBLOCK_IS_IN_REGION): New helper macro.
20530
20531         * liveness.c: Handle OP_DUMMY_STORE. Enable register allocation for
20532         variables in try regions.
20533
20534         * mini.c (mini_method_compile): Don't disable optimizations on large
20535         methods when AOT compiling.
20536
20537         * mini.c (mono_allocate_stack_slots): New arch independent method to 
20538         allocate stack slots. Not yet used.
20539
20540 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
20541
20542         * debug-mini.c (mono_debug_close_method): Plug some leaks.
20543
20544 Sat Jan 22 13:41:51 EST 2005 Paolo Molaro <lupus@ximian.com>
20545
20546         * mini-ppc.c: make the branch info relative as the code
20547         buffer can be reallocated.
20548
20549 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
20550
20551         * aot.c: Allow decoding of the new  MONO_PATCH_INFO_DECLSEC.
20552         * driver.c: Removed the AOT/security restriction. Now initialize the
20553         security manager (in metadata) if --security is used.
20554         * mini.c|h: Add the MONO_PATCH_INFO_DECLSEC code to use the index,
20555         rather than the pointer to declarative security, when AOT is used.
20556
20557 Sat Jan 22 09:35:19 EST 2005 Paolo Molaro <lupus@ximian.com>
20558
20559         * mini.h, mini-ppc.h, mini-ppc.c: updated to use out of line
20560         basic blocks, reduced intrinsic exception throwing code size.
20561
20562 2005-01-22  Miguel de Icaza  <miguel@ximian.com>
20563
20564         * driver.c (mini_usage): Reorder the usage screen.
20565
20566 2005-01-21  Zoltan Varga  <vargaz@freemail.hu>
20567
20568         * mini.c (mono_resolve_patch_target): Fix warning.
20569
20570 2005-01-20  Zoltan Varga  <vargaz@freemail.hu>
20571
20572         * mini-x86.c (mono_arch_local_regalloc): Fix bug introduced by
20573         previous patch.
20574
20575         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
20576
20577         * mini-amd64.c (mono_arch_local_regalloc): Revert last patch as it
20578         breaks the amd64 build.
20579
20580         * mini-x86.c (mono_arch_local_regalloc): Fix bug in div/rem 
20581         register allocation. Fixes #71454.
20582
20583         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
20584
20585         * arrays.cs: Add new regression test.   
20586
20587 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20588
20589         * ssapre.c: Turned usage of snprintf to GString.
20590         * ssapre.h: disabled MONO_APPLY_SSAPRE_TO_SINGLE_METHOD
20591         (I left it on by mistake in my previous commit).
20592
20593 Thu Jan 20 12:00:45 CET 2005 Paolo Molaro <lupus@ximian.com>
20594
20595         * mini.c, cfold.c, basic-calls.cs: preserve side effects
20596         on cond branch optimization (fixes bug# 71515).
20597
20598 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20599
20600         * abcremoval.c: Fixed bug 71062.
20601         * abcremoval.h: Likewise.
20602
20603 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20604
20605         * mini.c: Added a new functionality to optimize_branches, the removal
20606         of useless basic blocks, and fixed some problem in the removal of
20607         critical edges; some utility functions added for both purposes.
20608         * ssapre.c: Added complex expression support, and fixed bug 70637.
20609         * ssapre.h: Likewise.
20610         * ssapre-cee-ops.h: Added file with list of "CEE_*" opcodes
20611         enabled in SSAPRE.
20612         * ssapre-mini-ops.h: Likewise, but for "OP_*" opcodes.
20613         * driver.c: Re-enabled SSAPRE.
20614
20615 2005-01-19  Martin Baulig  <martin@ximian.com>
20616
20617         * mini.c (mono_method_to_ir): Call mono_get_inflated_method() on
20618         the result of mono_get_method_constrained().
20619
20620 2005-01-18  Neale Ferguson <NealeFerguson@earthlink.net>
20621
20622         * exceptions-s390.c tramp-s390.c: Allocate code using the global code
20623         manager.
20624
20625 2005-01-18  Geoff Norton  <gnorton@customerdna.com>
20626
20627         * jit-icalls.c (mono_llmult_ovf): Fix other overflow conditions to
20628         be detected.  Fixes #59296.
20629
20630 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
20631
20632         * mini-amd64.c (mono_arch_output_basic_block): Remove some assertions
20633         which can happen. Fixes #71361.
20634
20635 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
20636
20637         * exceptions-sparc.c tramp-sparc.c: Allocate code using the global code
20638         manager.
20639
20640 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
20641
20642         * mini.c (mono_create_jump_trampoline): Revert last change as it causes
20643         appdomain-unload.exe to fail.
20644         
20645         * mini.c: Fix some memory leaks.
20646
20647 Mon Jan 17 16:16:23 CET 2005 Paolo Molaro <lupus@ximian.com>
20648
20649         * inssel.brg: handle the new size of rank, idepth, max_interface_id.
20650         Fixed bug and sped up some codepaths.
20651
20652 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
20653
20654         * mini.c: Fix some memory leaks.
20655
20656         * exceptions.cs basic-long.cs: Add test for checked ulong->int 
20657         conversion.
20658
20659         * inssel-long.brg: Implement long_conv_to_ovf_i4_un. Fixes #71319.
20660
20661         * inssel-long.brg: Fix conv.ovf.i8 when run on an int32. Fixes
20662         #71320.
20663
20664         * iltests.il: Add regression test for #71320.
20665
20666 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
20667
20668         * mini.c (mono_codegen): Fix installation of profiler hooks.
20669
20670         * mini-sparc.c mini-amd64.c: Don't allocate stack space for dead vars.
20671
20672 Sun Jan 16 12:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
20673
20674         * mini.h, mini.c, cfold.c: optimize access to enum
20675         readonly fields, too. Eval conditional branches if possible
20676         to perform unreachable code removal in more cases.
20677
20678 2005-01-15  Zoltan Varga  <vargaz@freemail.hu>
20679
20680         * tramp-amd64.c exceptions-amd64.c: Use the new global code manager.
20681
20682         * mini.c (mono_global_codeman_reserve): New function to allocate code memory from a global
20683         code manager.
20684
20685         * tramp-x86.c mini-x86.c exceptions-x86.c: Allocate all code memory so mono works with
20686         WinXP DEP. Fixes #71244.
20687
20688 2005-01-14  Zoltan Varga  <vargaz@freemail.hu>
20689
20690         * inssel.brg: Allways convert CEE_CONV_OVF_I4 to a move on 64 bit platforms. Fixes #71236.
20691
20692 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
20693
20694         * mini-x86.c (mono_arch_output_basic_block): Fix OP_ATOMIC_ADD_NEW_I4.
20695
20696 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
20697
20698         * mini-exceptions.c exceptions-ppc.c aot.c: Cope with MonoJitInfo 
20699         changes.
20700
20701         * mini.h: Bump AOT version.
20702
20703         * mini.h (MonoCompile): Change exvar to a hash table.
20704
20705         * mini.c: Allocate a separate exvar for each handler block.
20706
20707         * mini.c: Get rid of the computation of filter_lengths, its not needed.
20708
20709         * mini.c inssel.brg: Change OP_THROW_OR_NULL to compare the current
20710         ex var with the pending exception and only throw if the two are equal.
20711         Fixes #68552.
20712         
20713         * exceptions.cs: Add tests for rethrow and nested catch clauses.
20714
20715         * mini-x86.c: Fix warnings.
20716
20717         * Makefile.am (common_sources): Move mini-exceptions.c here as it is
20718         used by all the ports now.
20719
20720         * aot.c: Add write-symbols and save-temps options.
20721
20722 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
20723
20724         * mini-x86.c: Add support for returning structs in registers from pinvoke functions on WIN32.
20725
20726 Mon Jan 10 16:11:16 EST 2005 Neale Ferguson <nealeferguson@earthlink.net>
20727
20728         * mini-ops.h, inssel-s390.brg, cpu-s390.md: Support OP_ATOMIC__xxx 
20729         operations.
20730
20731         * tramp-s390.c: Check vtable slot belongs to the domain.
20732
20733         * mini-exceptions.c, exceptions-s390.c: Standardize exception handling
20734         as per other platforms.
20735
20736         * mini-s390.c, mini-s390.h: Enable out-of-line bblock support.
20737
20738 Mon Jan 10 18:53:05 CET 2005 Paolo Molaro <lupus@ximian.com>
20739
20740         * driver.c: we don't run the Main() code in a subthread anymore.
20741
20742 Mon Jan 10 17:54:16 CET 2005 Paolo Molaro <lupus@ximian.com>
20743
20744         * mini.c: added experimental rtc support in the statistical
20745         profiler: if the user has the permission, more accurate statistics
20746         are gathered. Run with: MONO_RTC=4096 mono --profiler=default:stat ....
20747         The MONO_RTC value must be restricted to what the linux rtc allows:
20748         power of two from 64 to 8192 Hz.
20749
20750 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
20751
20752         * mini-x86.c (mono_arch_emit_exceptions): Fix #71121.
20753
20754 Mon Jan 10 05:20:49 EST 2005 Paolo Molaro <lupus@ximian.com>
20755
20756         * mini-ppc.c: better icache flush for smp.
20757
20758 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
20759
20760         * mini-amd64.c (emit_move_return_value): Fix memory leak.
20761
20762         * mini-x86.c (get_call_info): Add the get_call_info () code from the
20763         amd64 port, not yet used.
20764
20765 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
20766
20767         * mini.c (mono_method_to_ir): Disable inlining of ldfld wrappers with
20768         a struct type.
20769
20770 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
20771
20772         * driver.c: Added --security option to activate the security manager.
20773         Right now this will allow code generation for declarative demands and
20774         is disabled when AOT is specified.
20775         * mini.c: Add code generation for declarative security demands.
20776         * mini.h: Add mono_use_security_manager as an extern gboolean.
20777
20778 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
20779
20780         * aot.c (mono_compile_assembly): Speed up compilation a bit by
20781         emitting more dense assembly code.
20782
20783         * mini-sparc.c mini-sparc.h exceptions-sparc.c: Enable optimized corlib
20784         exception throwing stuff.
20785
20786 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
20787
20788         * mini-sparc.c (mono_arch_emit_exceptions): Fix typo in previous patch. Remove
20789         dead code.
20790
20791         * mini-amd64.c (mono_arch_emit_exceptions): Remove duplicate epilog stuff
20792         left in by mistake.
20793
20794         * driver.c (EXCLUDED_FROM_ALL): Disable SSAPRE until bug #70637 is 
20795         fixed.
20796
20797         * mini-sparc.h mini-sparc.c: Enable out-of-line bblock support.
20798
20799         * tramp-*.c: Only patch vtable slots if the object is in the current
20800         domain. Fixes appdomain-unload.exe.
20801
20802         * mini-amd64.c mini-amd64.h: Enable out-of-line bblock support.
20803         
20804         * mini-amd64.c (mono_arch_local_regalloc): Port regalloc fix from
20805         x86 branch.
20806
20807 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
20808
20809         * mini.c (reverse_branch_op): New helper function.
20810
20811         * mini.c (optimize_branches): Run the new optimization only on 
20812         platforms which support it. Also reverse all kinds of branches.
20813
20814         * mini.h (MonoBasicBlock): Add 'out_of_line' field.
20815
20816         * mini.c (mono_method_to_ir): Set 'out_of_line' for bblocks which have
20817         a throw statement.
20818
20819         * mini.c (optimize_branches): Reverse not-equals branches if the false
20820         bblock is a throw. This happens a lot of time with argument checking in
20821         corlib.
20822
20823         * mini.c (mono_codegen): Add support for placing basic blocks after
20824         the function epilogue.
20825
20826         * mini-x86.c mini-x86.h: Add support for placing basic blocks after the
20827         function epilogue.
20828         
20829 2005-01-05  Miguel de Icaza  <miguel@ximian.com>
20830
20831         * mini.c (setup_stat_profiler): Only set this up if the platform
20832         supports ITIMER_PROF.
20833
20834 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
20835
20836         * mini-x86.c (mono_arch_local_regalloc): Fix a bug introduced by the
20837         previous patch.
20838
20839         * inssel.brg: Fix a warning.
20840
20841 Wed Jan 5 16:40:18 CET 2005 Paolo Molaro <lupus@ximian.com>
20842
20843         * mini.c: added support for statistical profiler 
20844         (run with: --profile=default:stat).
20845
20846 2005-01-04  Zoltan Varga  <vargaz@freemail.hu>
20847
20848         * mini-x86.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Enable this on x86.
20849
20850         * mini-x86.c cpu-pentium.md: More fixes for usage of global registers.
20851
20852         * mini-amd64.c (mono_arch_local_regalloc): Port some regalloc fixes 
20853         related to global registers from the amd64 port.
20854
20855 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
20856
20857         * mini.c (mono_method_to_ir): Handle MONO_CLASSCONST.
20858
20859         * mini-amd64.c (mono_arch_local_regalloc): Fix some regalloc problems
20860         with global registers.
20861         (mono_arch_output_basic_block): Fix SWITCH in the AOT case.
20862
20863         * aot.c (emit_method_code): Fix the 'method emitted as' messages.
20864
20865 2004-12-31  Zoltan Varga  <vargaz@freemail.hu>
20866
20867         * debug-mini.c (encode_value): Fix off-by-one.
20868
20869         * aot.c (encode_value): Likewise.
20870
20871         * mini.c (mono_method_to_ir): Disable AOT for methods containing LDPTR.
20872
20873 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
20874
20875         * mini.c linear-scan.c: Add a workaround for the mcs crash when using 
20876         AOT.
20877
20878         * aot.c (mono_aot_load_method): Free up patch info if no longer needed.
20879         
20880         * aot.c (emit_method_info): Increase size of temp buffer.
20881
20882         * mini-x86.c cpu-pentium.md mini.c: Load fp constants differently in 
20883         the AOT case.
20884
20885 2004-12-28  Zoltan Varga  <vargaz@freemail.hu>
20886
20887         * aot.c (emit_method_info): Fix build.
20888         
20889         * aot.c: Further rework of the AOT file format to reduce the size of
20890         the method info data.
20891
20892         * mini.h: Bump AOT file format version.
20893
20894 2004-12-27  Martin Baulig  <martin@ximian.com>
20895
20896         * mini.c (mini_get_method): New static method; call
20897         mono_get_method_full() and mono_get_inflated_method().
20898         (mono_method_to_ir): Use mini_get_method() instead of
20899         mono_get_method_full(). 
20900
20901 2004-12-26  Patrik Torstensson  <patrik.torstensson@gmail.com>
20902
20903         * mini-x86.c (atomic ops): fixed bug interlocked bug #70784. 
20904
20905 2004-12-25  Zoltan Varga  <vargaz@freemail.hu>
20906
20907         * inssel.brg (ldind_to_load_membase): Handle CEE_LDIND_I8.
20908
20909         * inssel-amd64.brg: Add some optimization rules.
20910
20911 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
20912
20913         * aot.c: Remove the use of MonoGHashTable and other GC stuff. The
20914         standard not GC'd stuff is fine.
20915
20916 2004-12-24  Zoltan Varga  <vargaz@freemail.hu>
20917
20918         * aot.c: Rework the AOT file format to get rid of most of the global
20919         symbols. This reduces the size of the mscorlib.dll.so by 1MB.
20920
20921         * mini.h: Bump AOT file format version.
20922         
20923 2004-12-23  Zoltan Varga  <vargaz@freemail.hu>
20924
20925         * mini.h: Bump AOT file format version.
20926
20927         * aot.c (mono_aot_is_got_entry): New function to determine if an 
20928         address is inside a GOT.
20929
20930         * aot.c mini-x86.c tramp-x86.c: Make all patches use the GOT.
20931
20932         * cpu-pentium.md: Increase the maximum size of some instructions which
20933         might involve a got access.
20934         
20935         * mini.c (get_method_from_ip): Another debug helper function.
20936
20937         * mini.c: Call mono_get_got_var () in a couple places. Handle the case
20938         when got var accesses are created during the decompose phase.
20939
20940         * mini-sparc.c: Change mono_compile_aot to cfg->compile_aot.
20941
20942         * mini.h mini.c mini-x86.c aot.c mini-sparc.c: Add a 'compile_corlib'
20943         argument mini_compile_method and to MonoCompile, and use this to
20944         determine whenever a given method is compiled for AOT. This allows the
20945         other methods compiled during AOT compilation to be free of AOT stuff,
20946         so the backends does not need to add special support for them by
20947         creating a fake GOT etc.
20948
20949         * mini-x86.c (mono_arch_patch_code): Remove fake got stuff as it is no
20950         longer needed.
20951
20952 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
20953
20954         * mini.c (mono_method_to_ir): It turns out that some of the
20955         x-appdomain wrappers are lax with types, so just ignore this for
20956         all wrappers.
20957
20958         * inssel.brg (OP_CHECK_ARRAY_TYPE): Optimize this by only looking
20959         at the vtable->klass. If it is non-shared code we can just use the
20960         vtable.
20961
20962 Tue Dec 21 17:43:06 CET 2004 Paolo Molaro <lupus@ximian.com>
20963
20964         * mini-ppc.c: access MonoDomain from tls, too.
20965
20966 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com>
20967
20968         * declsec.c: Removed unused variable (and related warning ;-)
20969
20970 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
20971
20972         * iltests.il: New test for LDELEMA on an array of ref types.
20973
20974         * mini.c (CEE_LDELEMA): We need to emit OP_CHECK_ARRAY_TYPE for
20975         all ldelema's on reftypes.
20976         (check_call_signature): Remove the OP_CHECK_ARRAY_TYPE from here,
20977         it was the wrong place to put it.
20978
20979         * mini-x86.c (mono_arch_output_basic_block): Just use ecx as the
20980         register to pop to make this cleaner, at the request of Paolo.
20981
20982 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
20983
20984         * mini-ops.h (OP_GETHASHCODE): New op.
20985
20986         * inssel.brg (OP_GETHASHCODE): Emit code for the new opcode
20987
20988         * mini.c (mini_get_inst_for_method): Create the intrinsic hash
20989         operation.
20990
20991         For a microbenchmark, this reduces the cost of Hashtable.get_Item
20992         by 25%.
20993         
20994         * mini-x86.c (mono_arch_output_basic_block): Rather than
20995
20996         add ebp, 4
20997
20998         Emit
20999
21000         pop edx
21001
21002         The first is 3 bytes while the second is 1. This saves 36 kb on
21003         mscorlib, quite a big saving. When bootstraping mcs, I was able to
21004         see a small boost because of icache locality.
21005
21006         * cfold.c (FOLD_BINOPCOMM): Kill add foo, 0
21007
21008 Mon Dec 20 12:19:40 EST 2004 Paolo Molaro <lupus@ximian.com>
21009
21010         * Makefile.am, mini-ppc.h, mini-exceptions.c, exceptions-ppc.c:
21011         started code sharing with the generic code.
21012
21013 Mon Dec 20 11:08:06 EST 2004 Paolo Molaro <lupus@ximian.com>
21014
21015         * mini-ppc.c, cpu-g4.md: added code for direct access to
21016         tls data slots.
21017
21018 Mon Dec 20 10:58:28 EST 2004 Paolo Molaro <lupus@ximian.com>
21019
21020         * mini-ops.h, inssel-x86.brg, cpu-amd64.md, inssel.brg, inssel-amd64.brg,
21021          mini-amd64.c, mini-x86.c, cpu-pentium.md: renamed OP_X86_TLS_GET
21022         to OP_TLS_GET.
21023
21024 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
21025
21026         * declsec.c|h: Added functions to cache the declarative stack modifiers
21027         in MonoJitInfo and to create a security frame from a MonoJitInfo 
21028         structure.
21029         * mini.c: Initialize jinfo->cas_inited to FALSE when MonoJitInfo is
21030         created. Register internal calls for System.Security.SecurityFrame::
21031         _GetSecurityFrame and _GetSecurityStack.
21032         * mini.h: Added definition for new icalls (in mini-exceptions.c) and
21033         the definitions for the new stack walk/callback mechanism.
21034         * mini-exceptions.c: Added internal call GetSecurityFrame (to get the 
21035         first security frame for LinkDemands and InheritanceDemands) and
21036         GetSecurityStack for Demands. Both use the new mono_walk_stack code
21037         from lupus.
21038         * mini-x86.h, mini-amd64.h, mini-sparc.h: Architecture specific stack
21039         walk initialization (lupus).
21040
21041 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
21042
21043         * mini.c (mono_method_to_ir): In CEE_DUP, handle the dup / stloc
21044         idiom.
21045         (handle_loaded_temps): Do not create a temporary variable for
21046         things that we know are temps. They will never be modified.
21047         (mono_spill_call): Set MONO_INST_IS_TEMP
21048         (mono_emulate_opcode): ditto
21049         (emit_tree): ditto
21050         (mono_method_to_ir.CEE_DUP): ditto
21051
21052 2004-12-19  Ben Maurer  <bmaurer@ximian.com>
21053
21054         * mini.c (type_to_eval_stack_type): Make this handle the void type
21055         (mono_emit_call_args): set the call->type with type_to_eval_stack_type
21056         (emit_tree): use ip_in_bb to special case some common idioms
21057         Update all callers to pass in the IP.
21058         (mono_method_to_ir): Make CEE_CALL* do the above as well.
21059
21060         This gives us a nice 2% speedup in mcs bootstrap.
21061
21062         * mini-x86.c (peephole_pass): Peephole pass to make
21063         mov  [foo], eax
21064         push [foo]
21065
21066         into
21067
21068         mov [foo], eax
21069         push eax
21070
21071         * mini.c (ip_in_bb): new method.
21072         (mono_method_to_ir): use this method rather than doing the hash
21073         lookup ourselves.
21074
21075         * linear-scan.c (mono_linear_scan): When expiring actives, you
21076         don't need to keep around variables that expire on this
21077         instruction. This makes it so that:
21078              a = b + 1
21079         will turn into:
21080              store (ebx add (ebx, 1))
21081         which will become
21082              add ebx, 1
21083
21084 2004-12-19  Zoltan Varga  <vargaz@freemail.hu>
21085
21086         * mini.c (mono_method_to_ir): Optimize the common ldobj+stloc 
21087         combination to avoid doing two copies. Fix up problems with previous
21088         patch.
21089
21090         * mini.c: Fix 64 bit warnings.
21091
21092         * mini-x86.c (INST_IGNORES_CFLAGS): Add OP_STOREI4_MEMBASE_REG.
21093
21094 2004-12-17  Zoltan Varga  <vargaz@freemail.hu>
21095
21096         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Port exception handling
21097         changes from the x86 code.
21098
21099         * mini.h: Add prototype for mono_arch_get_throw_corlib_exception ().
21100
21101 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
21102
21103         * mini-x86.c (mono_arch_emit_epilog): Optimize the corlib exception
21104         throwing code to reduce its size, unify the AOT and non-aot code and 
21105         get rid of relocations in the AOT case.
21106
21107         * mini-x86.h mini.c exceptions-x86.c 
21108         (mono_arch_get_throw_corlib_exception): New arch specific function to 
21109         raise corlib exceptions which doesn't require relocations in the 
21110         caller.
21111
21112         * aot.c (emit_method): Handle PATCH_INFO_NONE as well.
21113
21114 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
21115
21116         * mini.c (mono_emit_method_call): Only allocate the got var when it is
21117         needed.
21118
21119         * mini-x86.c (mono_arch_patch_code): Add missing PATCH_INFO_METHOD_REL
21120         in the AOT case.
21121
21122 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
21123
21124         * mini-x86.c, cpu-pentium.md, inssel-x86.brg: Fixed bug
21125         with add function when used from Inc/dec atomic 
21126         functions. Re-enabled optimization on x86.
21127         * mini-ops.h: renamed atomic_add functions to
21128         allow _add to match the Interlocked::Add and
21129         _add_next to match Interlocked::Inc/Dec.
21130
21131 2004-12-15  Massimiliano Mantione  <massi@ximian.com>
21132
21133         * mini.c: Fixed a subtle bug in mono_method_to_ir, about the
21134         linking of BBs to the end BB, and enabled SSAPRE also with
21135         consprop and copyprop (which was prevented by that bug).
21136
21137 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
21138
21139         * mini-x86.c: disabling the Interlocked optimizing code. 
21140
21141 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
21142
21143         * aot.c (load_aot_module): Move reading of got_addr after the AOT
21144         file version check.
21145         
21146 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
21147
21148         * mini-x86.c, inssel-x86.brg, cpu-pentium.md: removed _imm 
21149         interlocked optimization due lack of support on x86, rewrote 
21150         exchange to take into account that base may be in eax.
21151         
21152         xsp works again; activated Interlocked optimizing code.
21153         
21154 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
21155
21156         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
21157
21158 2004-12-13  Zoltan Varga  <vargaz@freemail.hu>
21159
21160         * mini-ops.h: Add new opcodes.
21161
21162         * mini.h: Add new patch types. Add got_var to MonoCompile.
21163
21164         * mini.h mini-x86.c mini-amd64.c aot.c: Rename 
21165         mono_arch_get_aot_patch_offset () to mono_arch_get_patch_offset () and
21166         make it work with all kinds of patchable code.
21167
21168         * inssel.brg inssel-x86.brg: Add new rules dealing with computing the
21169         address of the GOT, and referencing entries in the GOT.
21170
21171         * mini.c: Add code to load the GOT address if needed by an opcode.
21172
21173         * aot.c mini-x86.h mini-x86.c cpu-pentium.md: Add support for position 
21174         independent AOT code on the x86 using an elf-style Global Offset Table.
21175
21176 2004-12-14  Raja R Harinath  <rharinath@novell.com>
21177
21178         * Makefile.am (RUNTIME): Set MONO_SHARED_DIR.
21179
21180 2004-12-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21181
21182         * mini-x86.c: disabling the Interlocked optimizing code. It segfaults
21183         when running xsp.
21184
21185 2004-12-13  Patrik Torstensson  <patrik.torstensson@gmail.com>
21186
21187         * mini-x86.c,mini-ops.h,inssel-x86.brg,cpu-pentium.md: Implementation
21188         of Interlocked:Increment/Decrement/Add as inline ops.
21189         (mini-x86.c (mono_arch_get_inst_for_method and mono_arch_output_basic_block))
21190
21191 2004-12-12  Geoff Norton  <gnorton@customerdna.com>
21192
21193         * exceptions-ppc.c: Reorder code so gcc3.4 can compile it
21194         * mini-ppc.c: Unify mono_arch_patch_code with changes in r37636.
21195
21196 2004-12-12  Duncan Mak  <duncan@ximian.com>
21197
21198         * mini-ppc.c (mono_arch_patch_code): Hopefully made this build
21199         again. `patch_info->table_size' is no longer valid after Zoltan's
21200         commit #37636.
21201
21202 2004-12-12  Martin Baulig  <martin@ximian.com>
21203
21204         * mini.c (mono_method_to_ir): Only call mono_debug_init_method()
21205         if we are the "real" method, ie. not an inlined method inside it.
21206
21207 2004-12-11  Ben Maurer  <bmaurer@ximian.com>
21208
21209         * mini.c (CEE_LDSFLD): Make sure that the vtable has been init'd
21210         before we look in the special fields table. This fixes
21211         ../tests/thread-static-init.cs.
21212
21213 2004-12-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21214
21215         * mini.c: return immediately after setting OP_ARRAY_RANK or CEE_LDLEN
21216         for Array get_Rank and get_Length. Fixes bug #70465.
21217
21218 2004-12-11  Zoltan Varga  <vargaz@freemail.hu>
21219
21220         * mini.h mini.c aot.c: Put the bblock table for a SWITCH patch into a
21221         separate structure to reduce the size of MonoJumpInfo.
21222
21223 Fri Dec 10 18:09:22 CET 2004 Paolo Molaro <lupus@ximian.com>
21224
21225         * mini.c, mini.h, aot.c, driver.c: allow disabling the aot code.
21226
21227 2004-12-10  Patrik Torstensson  <patrik.torstensson@gmail.com>
21228
21229         * mini.c (mini_get_inst_for_method): Changed to allow ports
21230         to return a MonoInst instead of opcode 
21231         (renamed mini_get_opcode_for_method to better reflect the new functionality)
21232         
21233         * mini-[x86|s390|s390x|ppc|sparc].c (mono_arch_get_inst_for_method): 
21234         Allow ports to return a created MonoInst instead of op-code, will enable
21235         new optimizations.
21236         (renamed mini_get_opcode_for_method to better reflected the functionality)
21237
21238 2004-12-09  Zoltan Varga  <vargaz@freemail.hu>
21239
21240         * mini.c (NEW_AOTCONST): Share some code between the different NEW_AOTCONST macros.
21241
21242 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
21243
21244         * mini.c jit-icalls.c: Pass generic_context to mono_ldtoken_wrapper.
21245         Fixes #69985.
21246
21247 2004-12-08  Martin Baulig  <martin@ximian.com>
21248
21249         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use `fsig->signature'
21250         if we're a CEE_CONSTRAINED call.  Fixes gen-118.cs.
21251
21252 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
21253
21254         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_<X>
21255         correctly.
21256
21257         * exceptions.cs: Disable some tests which depend on properties of x86 fp
21258         arithmetic.
21259
21260 2004-12-08  Raja R Harinath  <rharinath@novell.com>
21261
21262         * Makefile.am (CLEANFILES): Add *.exe, *.dll.
21263
21264 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
21265
21266         * mini-sparc.c (mono_arch_output_basic_block): Fix LOCALLOC_IMM
21267         bug introduced by the previous patch.
21268
21269 Tue Dec 7 11:44:39 CET 2004 Paolo Molaro <lupus@ximian.com>
21270
21271         * mini-ppc.c, objectc.cs: handle large structs passed by value
21272         (fixes bug #69972).
21273
21274 Tue Dec 7 10:43:31 CET 2004 Paolo Molaro <lupus@ximian.com>
21275
21276         * mini-ppc.c: OP_ARGLIST implementation from
21277         Geoff Norton  <gnorton@customerdna.com>.
21278
21279 Tue Dec 7 10:14:25 CET 2004 Paolo Molaro <lupus@ximian.com>
21280
21281         * inssel-x86.brg, inssel-ppc.brg: fix reference to register
21282         in stmt: OP_OUTARG_VT (reg) (should fix bug #69785).
21283
21284 Tue Dec 7 10:06:39 CET 2004 Paolo Molaro <lupus@ximian.com>
21285
21286         * exceptions-ppc.c: avoid calling ppc_patch in exception trampolines.
21287
21288 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21289
21290         * inssel-s390.brgi, mini-ops.h, mini-s390.c : Add stubs for support of tls offset
21291         support.
21292
21293 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
21294
21295         * mini-sparc.c: Zero out localled-ed memory.
21296
21297         * iltests.il: Add tests for zeroing out localloc-ed memory.
21298
21299 2004-12-04  Martin Baulig  <martin@ximian.com>
21300
21301         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use the new
21302         mono_method_get_signature_full().       
21303
21304 2004-12-03  Massimiliano Mantione  <massi@ximian.com>
21305
21306         * mini.c: Added removal of critical edges (prerequisite for SSAPRE),
21307         and some utility functions (always for SSAPRE), integrated SSAPRE.
21308         * mini.h: Likewise.
21309         * driver.c: Added ssapre option.
21310         * ssa.c: Small fix on OP_ARG handling.
21311         * ssapre.c, ssapre.h: Added files containing SSAPRE implementation.
21312         * Makefile.am: Likewise.
21313
21314 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
21315
21316         * tramp-x86.c (mono_arch_create_jit_trampoline): Remove code which is
21317         now in the xp code.
21318
21319         * mini.c (mini_init): Register mono_thread_force_interruption_checkpoint
21320         icall.
21321
21322 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21323
21324         * inssel-s390.brg : Add OP_OUTARG_VT (OP_REFANYTYPE (reg)) rule.
21325         
21326         * cpu-s390.md : Increase instruction length of oparglist.
21327
21328         * mini-s390.c : Implement vararg and TYPEDEBYREF support.
21329
21330 2004-11-30  Martin Baulig  <martin@ximian.com>
21331
21332         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, added support for
21333         virtual generic methods.  We call a special helper_compile_generic_method()
21334         icall to retrieve the method from the vtable, inflate and compile
21335         it and then do a CEE_CALLI.  Thanks a lot to Paolo for this idea.
21336
21337         * jit-icalls.c (helper_compile_generic_method): New JIT icall.
21338
21339 2004-11-30  Zoltan Varga  <vargaz@freemail.hu>
21340
21341         * mini-sparc.c: Fix up vararg corner cases. Fixes #70019.
21342
21343 2004-11-29  Zoltan Varga  <vargaz@freemail.hu>
21344
21345         * cpu-sparc.md mini-sparc.c (long_conv_to_ovf_i): Fill missing delay slot.
21346         Fixes #69929.
21347
21348 2004-11-27  Ben Maurer  <bmaurer@ximian.com>
21349
21350         * inssel.brg (CEE_SWITCH): The AOT stuff Zoltan added is only for
21351         platforms with PIC aot.
21352
21353 2004-11-28  Martin Baulig  <martin@ximian.com>
21354
21355         * mini.c (mono_method_to_ir): In CEE_DUP, added handle_stobj().
21356         Fixes gen-112.cs.
21357
21358 2004-11-28  Martin Baulig  <martin@ximian.com>
21359
21360         * mini-x86.c (mono_arch_call_opcode): Use the original type, not
21361         the result of mono_type_get_underlying_type() to check whether
21362         we're byref.
21363
21364 2004-11-26  Martin Baulig  <martin@ximian.com>
21365
21366         * mini.c
21367         (mono_method_to_ir): Use `!method->signature->has_type_parameters'
21368         in the g_assert().
21369
21370 2004-11-26  Zoltan Varga  <vargaz@freemail.hu>
21371
21372         * mini-amd64.c (mono_arch_emit_this_vret_args): Handle this and vret
21373         the same way as the other arguments so they won't get clobbered.
21374
21375         * mini-amd64.c (mono_arch_output_basic_block): Avoid doing virtual 
21376         calls through R11 since it is clobbered by the trampoline code.
21377
21378 2004-11-26  Raja R Harinath  <rharinath@novell.com>
21379
21380         * Makefile.am: Consistently use $(RUNTIME) rather than ./mono to
21381         pick up in-tree mscorlib.dll.
21382
21383 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
21384
21385         * aot.c: Rename MonoAOTModule->cleanup to out_of_date.
21386
21387         * mini-amd64.c aot.c: Switch to PIC relative AOT code. References to 
21388         runtime data/code are now stored in a table similar to the GOT in ELF. 
21389         This allows the code itself to be position independent.
21390
21391         * aot.c: Fix loading of referenced assemblies after the lazy assembly
21392         loading changes.
21393
21394         * aot.c: Attach ELF type (object/function) directives to all global
21395         symbols.
21396
21397         * tramp-amd64.c (amd64_magic_trampoline): Patch RIP relative calls too.
21398
21399         * inssel.brg (SWITCH): Emit an AOT_CONST in the aot case.
21400
21401         * mini-amd64.h: Turn on PIC AOT code.
21402
21403         * mini.h (mono_arch_get_aot_patch_offset): New arch specific function
21404         returning the offset within an OP_AOTCONST instruction where the GOT
21405         offset needs to be added.
21406
21407         * mini.h: Bump AOT file format version.
21408
21409 2004-11-25  Martin Baulig  <martin@ximian.com>
21410
21411         * mini.c (mono_method_to_ir): In CEE_CALL, don't allow calling any
21412         uninflated generic methods.
21413
21414 2004-11-25  Martin Baulig  <martin@ximian.com>
21415
21416         * mini.c (mono_method_to_ir): Don't allow any uninflated generic methods.
21417
21418 2004-11-24  Martin Baulig  <martin@ximian.com>
21419
21420         * minit.c (type_to_eval_stack_type): Set `inst->klass' to the
21421         original klass (this only applies for generic instances).
21422
21423 2004-11-24  Martin Baulig  <martin@ximian.com>
21424
21425         * mini.c (mono_method_to_ir): Use `STACK_OBJ' instead of
21426         `ldind_type [CEE_LDIND_REF]' (which would be beyond the end of
21427         that array).
21428
21429 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
21430
21431         * mini.c (mono_method_to_ir): Disable inlining for methods containing
21432         localloc. Fixes #69678.
21433
21434         * iltests.il (test_0_localloc_inline): Add regression test for #69678.
21435         
21436 2004-11-23  Zoltan Varga  <vargaz@freemail.hu>
21437
21438         * mini-amd64.c (mono_arch_output_basic_block): Set %al to the number of
21439         used SSE registers on pinvoke calls. Fixes #69774.
21440
21441 2004-11-23  Geoff Norton  <gnorton@customerdna.com>
21442
21443         * inssel-ppc.brg, mini-ppc.c: Use mono_class_from_mono_type instead of
21444         vt->inst_vtype->data.klass.  This fixes generic structs and bug #69766
21445
21446 2004-11-23  Raja R Harinath  <rharinath@novell.com>
21447
21448         * Makefile.am (MCS,ILASM): Don't refer to runtime/ directory.
21449         Refer directly to the mcs/ tree.
21450
21451 2004-11-19  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21452
21453         * mini-s390.c, tramp-s390.c, mini-s390.h: Add LMF processing for trampolines.
21454         Check if a trampoline for a synchronized method is required. 
21455
21456 Fri Nov 19 17:34:21 CET 2004 Paolo Molaro <lupus@ximian.com>
21457
21458         * mini-ppc.c, cpu-g4.md: set to zero the memory allocated
21459         with localloc if needed. Throe arithmetric exception in
21460         div an rem if needed. Implement ovf checks in OP_LCONV_TO_OVF_I.
21461         Adapted from a patch by Geoff Norton  <gnorton@customerdna.com>.
21462
21463 2004-11-19  Geoff Norton  <gnorton@customerdna.com>
21464
21465         * mini-ppc.c: Call mono_type_get_underlying_type to unwrap generic
21466         types before switching on type.  Fixes #69622.
21467
21468 2004-11-19  Raja R Harinath  <rharinath@novell.com>
21469
21470         * Makefile.am (check-local): New.  Integrate into 'make check'.
21471         (MCS,RUNTIME): Define using in-tree mono and mcs.
21472         (ILASM): New.
21473         (%.exe): Use $(ILASM).
21474
21475 Fri Nov 19 14:54:07 CET 2004 Paolo Molaro <lupus@ximian.com>
21476
21477         * mini-ppc.c: adjust initial prolog size (bug #69691).
21478
21479 2004-11-18  Zoltan Varga  <vargaz@freemail.hu>
21480
21481         * cpu-pentium.md (localloc): Increase max instruction len. Fixes
21482         #69664.
21483
21484 2004-11-17  Raja R Harinath  <rharinath@novell.com>
21485
21486         * Makefile.am (clean-local): Rename from 'clean'.
21487
21488 2004-11-15  Nelae Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21489
21490         * mini.c, mini-x86.c, mini-amd64.c, exceptions-s390.c: Add siginfo_t parameter
21491         to mono_arch_is_int_overflow. 
21492         * exceptions-s390.c: Add mono_arch_is_int_overflow routine to discern between
21493         SIGFPE events.
21494
21495 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
21496
21497         * declsec.c|h: New files to support declarative security attributes.
21498         Added function to check if a method has (applicable) security.
21499         * mini.c|h: Add check for declarative security attributes in
21500         mono_method_check_inlining.
21501         * Makefile.am: Added declsec.c and declsec.h to the build.
21502
21503 Mon Nov 15 11:53:46 CET 2004 Paolo Molaro <lupus@ximian.com>
21504
21505         * mini.c, mini.h: update to keep dynamic code info per-domain.
21506
21507 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
21508
21509         * mini.c mini-*.h: Get rid of MONO_ARCH_HAVE_RETHROW since all architectures support it now.
21510         (mini_init): Get rid of it from here too.
21511
21512 Thu Nov 11 20:17:17 CET 2004 Paolo Molaro <lupus@ximian.com>
21513
21514         * mini-ppc.c, mini-ppc,h, cpu-g5.md, exceptions-ppc.c:
21515         implemented OP_RETHROW (patch by Geoff Norton
21516         <gnorton@customerdna.com>).
21517
21518 2004-11-10  Geoff Norton  <gnorton@customerdna.com>
21519
21520         * tramp-ppc.c (ppc_magic_trampoline): Don't trampoline methods
21521         between appdomains.  Fixes appdomain-unload on PPC.
21522
21523 2004-10-26  Lluis Sanchez Gual  <lluis@novell.com>
21524
21525         * exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
21526         mini-exceptions.c: handle the new wrapper types.
21527         * mini.c: The CEE_ISINST and CEE_CASTCLASS opcodes now take the
21528         token value as a MonoClass* when compiling a wrapper.
21529         mono_jit_create_remoting_trampoline now takes an additional
21530         MonoRemotingTarget parameter.
21531         
21532 2004-11-10  Martin Baulig  <martin@localhost>
21533
21534         * mini.c (mono_method_to_ir): Use `generic_container->context'
21535         rather than creating a new one.
21536
21537 2004-11-09  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21538
21539         * exceptions-s390.c, mini-s390, cpu-s390.md: Add support for OP_RETHROW.
21540
21541         * inssel-390.md, mini-s390.c: Correct register allocation for globals.
21542
21543 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
21544
21545         * aot.c (mono_aot_init): Add MONO_AOT_CACHE env variable to turn on
21546         the experimental aot cache stuff.
21547
21548 Tue Nov 9 17:30:20 CET 2004 Paolo Molaro <lupus@ximian.com>
21549
21550         * aot.c, mini.c, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
21551         mini-exceptions.c: update to exception clause structure changes.
21552
21553 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
21554
21555         * exceptions-x86.c (throw_exception): Fix warnings.
21556
21557         * mini-x86.h mini-x86.c cpu-pentium.md exceptions-x86.c: Add support 
21558         for OP_RETHROW.
21559
21560 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
21561
21562         * exceptions-sparc.c (get_throw_exception): Really fix this.
21563
21564 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
21565
21566         * tramp-*.c: we no longer support icalls without wrappers, so
21567         a bit of code can be removed here
21568
21569 2004-11-07  Zoltan Varga  <vargaz@freemail.hu>
21570
21571         * exceptions-sparc.c (get_throw_exception): Fix more bugs in previous
21572         patch.
21573
21574         * cpu-sparc.md: Add op_rethrow.
21575
21576         * exceptions-sparc.c (get_throw_exception): Fix bug in previous patch.
21577
21578         * mini-sparc.h mini-sparc.c exceptions-sparc.c: Add support for OP_RETHROW.
21579
21580         * mini.h: Add mono_arch_get_rethrow_exception () arch specific function.
21581         * mini-ops.h: Add OP_RETHROW.
21582
21583         * mini.c inssel.brg: Distinguish between THROW and RETHROW.
21584
21585         * cpu-amd64.c mini-amd64.c exceptions-amd64.c: Add support for OP_RETHROW.
21586
21587 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
21588         
21589         * helpers.c: Change otool arguments from -V -v -t to -v -t on Darwin
21590         Makes the output much easier to read
21591
21592 2004-11-05  Ben Maurer  <bmaurer@ximian.com>
21593
21594         * ssa.c: allocate MonoMethodVar.uses from the mempool. First, this
21595         prevents another huge leak when compiling with ssa. Secondly, the
21596         performance of doing this rather than freeing the lists is much
21597         better. GList does a lock every time you allocate a list link,
21598         so that it can use a memory pool. So, it is better to just use
21599         a memory pool of our own.
21600         
21601         * ssa.c, linear-scan.c: replace g_list_remove_link with
21602         g_list_delete.  The remove one does not free the GList, so we were
21603         leaking memory. On -O=all --compile-all with corlib, this cut down
21604         3 MB of allocations.
21605
21606 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
21607
21608         * tramp-sparc.c (mono_arch_create_jit_trampoline): Fix sparc build.
21609
21610         * tramp-amd64.c (mono_arch_create_jit_trampoline): Fix amd64 build.
21611
21612         * mini.h mini.c tramp-*.c: Moved xp parts of JIT trampoline creation
21613         into a new function mono_create_jit_trampoline ().
21614
21615 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
21616
21617         * trace.c (get_spec): Allow tracing of classes without a namespace.
21618
21619 2004-11-02  Sebastien Pouliot  <sebastien@ximian.com>
21620
21621         * mini.c: Fix pointer overwrite in mini_method_compile.
21622
21623 2004-11-2  Geoff Norton  <gnorton@customerdna.com>
21624
21625         * inssel-ppc.brg (OP_OUTARG_VT (CEE_LDOBJ (base))):
21626         The darwin ABI needs some special handling for 1 and 2 byte structs
21627         Lets use lbz/lhz instead of lwz everywhere.
21628         * mini-ppc.c (calculate_sizes):  The Darwin ABI needs from special handling
21629         for 1 and 2 byte structs and struct which are size >= 3 || size % 4 != 0.
21630         Use stb/sth for the former, and put the latter always on stack instead of in
21631         argument registers.
21632
21633 2004-10-30  Zoltan Varga  <vargaz@freemail.hu>
21634
21635         * trace.c (is_filenamechar): Add '_'.
21636
21637 2004-10-29  Neale Ferguson  <Neale.Ferguson@SoftwareAG-usa.com>
21638
21639         * mini-s390.c: Fix prolog length to allow for large trace requirements.
21640
21641         * exceptions-s390.c: Remove dwarf unwinding stuff that was unused.
21642
21643 2004-10-29  Zoltan Varga  <vargaz@freemail.hu>
21644
21645         * Makefile.am (libgc_libs): Do some automake magic so libmono/mono
21646         depends on libmonogc. Fixes #68805.
21647
21648 2004-10-26  Miguel de Icaza  <miguel@ximian.com>
21649
21650         * mini.c (mono_jit_free_method): Provide extra information for
21651         this error.  Currently this leaks, but will be turned into a
21652         developer option in the future.
21653
21654 2004-10-26  Zoltan Varga  <vargaz@freemail.hu>
21655
21656         * driver.c (mono_main): Applied patch from Willibald Krenn <willibald.krenn@gmx.at>. Make --graph work for icalls and pinvoke methods.
21657
21658 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
21659
21660         * aot.c (mono_aot_load_method): Align PATCH_INFO_R8 on an 8 byte 
21661         boundary. Fixes reading of PATCH_INFO_R4 and R8.
21662         (mono_aot_load_method): Do not allocate MonoAotMethod in the GC heap.
21663
21664 2004-10-24  Zoltan Varga  <vargaz@freemail.hu>
21665
21666         * mini-amd64.c (mono_arch_patch_code): Fix patching of class init
21667         trampolines for AOT code.
21668
21669 2004-10-22    <vargaz@freemail.hu>
21670
21671         * aot.c (mono_compile_assembly): Disable AOT for methods containing calls to methods of
21672         constructed types. Fixes #68136.
21673
21674 2004-10-21  Martin Baulig  <martin@ximian.com>
21675
21676         * exceptions-x86.c (throw_exception): Call mono_debugger_throw_exception();
21677         if it returns true, unwind the stack to the call instruction.
21678
21679 2004-10-21    <vargaz@freemail.hu>
21680
21681         * aot.c: Reorganize the AOT file format to avoid relocations. Fix warnings.
21682
21683         * mini.h: Bump AOT version number.
21684
21685         * objects.cs: Add another test for unbox trampolines.
21686
21687         * tramp-amd64.c (amd64_magic_trampoline): Disable patching of trampolines for 
21688         valuetype methods.
21689
21690 2004-10-20    <vargaz@freemail.hu>
21691
21692         * driver.c: Add SHARED to the set of optimizations tested.
21693
21694         * tramp-amd64.c (amd64_magic_trampoline): Patch trampoline code as well.
21695
21696         * mini.c (mono_method_to_ir): Mark the domainvar as volatile when it is implicitly
21697         used by CEE_NEWARR.
21698
21699         * ssa.c (mono_ssa_deadce): Do not optimize away accesses to volatile variables.
21700
21701 2004-10-20  Martin Baulig  <martin@ximian.com>
21702
21703         * mini-exceptions.c (mono_handle_exception): Call
21704         mono_debugger_handle_exception() to tell the debugger about
21705         catch/finally clauses.
21706
21707 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
21708
21709         * exceptions-amd64.c (mono_arch_find_jit_info): Pop arguments of the stack.
21710
21711         * mini-amd64.c (mono_amd64_get_vcall_slot_addr): Handle extended registers. Fixes
21712         #68447.
21713
21714 2004-10-15  Geoff Norton  <gnorton@customerdna.com>
21715
21716         * mini-ppc.c (calculate_sizes): Marshal valuetypes for pinvoke
21717         methods as their native size, fixed bug #57543, #57545.
21718         * mini-ppc.c (mono_arch_output_basic_block): Use mulli for imm16 types
21719         This saves a temporary register and mullw call down into 1 (minor perf
21720         increase for cases like sum = sum * 5;  This use to translate into:
21721             li r11,5
21722             mullw r28,r28,r11
21723         It now translates to
21724             mulli r28,r28,5
21725
21726 2004-10-15  Zoltan Varga  <vargaz@freemail.hu>
21727
21728         * trace.c (mono_trace_eval): Use mono_method_desc_full_match. Fixes
21729         #68388.
21730
21731 2004-10-11  Martin Baulig  <martin@ximian.com>
21732
21733         * mini.c (mono_method_to_ir): If we're a generic method, get the
21734         MonoGenericContainer from our MonoMethodNormal and create a
21735         MonoGenericContext from it.
21736
21737 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
21738
21739         * inssel-long32.brg (OP_LCONV_TO_OVF_I2): Fix CONV_I1 -> CONV_I2.
21740
21741         * basic-long.cs: Add test for checked i8->i2 cast.
21742
21743 Wed Oct 6 12:40:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
21744
21745         * inssel-ppc.brg: added a couple of speedup rules.
21746
21747 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
21748
21749         * Makefile.am (genmdesc_LDADD): Don't link this against libmetadata
21750         to speed up rebuilds.
21751
21752 2004-10-04  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21753
21754         * mini-s390.c: Minor fix to OP_OR_IMM.
21755
21756 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
21757
21758         * tramp-sparc.c (sparc_magic_trampoline): Handle appdomain stuff
21759         better. Fixes appdomain-unload.exe on sparc.
21760
21761 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
21762
21763         * ssa.c: Fixed casts to unsigned where the value was of 64 bits in
21764         simulate_long_compare, patch by will@exomi.com (Ville-Pertti Keinonen),
21765         see bug 67324.
21766
21767 2004-10-02  Zoltan Varga  <vargaz@freemail.hu>
21768
21769         * jit-icalls.c: Handle a nonexisting trunc function more correctly.
21770
21771 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
21772
21773         * mini.c: Always generate a field read/write wrapper for members
21774         of the class MarshalByRefObject since the actual instance could
21775         be a CBO.
21776
21777 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
21778
21779         * mini.c: Use mono_thread_exit() to stop threads, instead of ExitThread.
21780
21781 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
21782
21783         * driver.c mini.h trace.c: Move the setting of the main assembly into
21784         a separate function called mono_trace_set_assembly () and call it after
21785         actually loading the main assembly. Fixes #66872.
21786
21787 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
21788
21789         * mini-amd64.h mini-amd64.c tramp-amd64.c: Allocate trampoline memory
21790         using the code manager.
21791
21792 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
21793
21794         * tramp-amd64.c mini-amd64.h: Add support for MONO_ARCH_HAVE_INVALIDATE_METHOD.
21795
21796 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
21797
21798         * cpu-amd64.md: Fix bug in previous patch.
21799         
21800         * cpu-amd64.md: Fix instruction lengths of membase opcodes. Fixes
21801         #66650.
21802
21803 Wed Sep 22 19:03:20 CEST 2004 Paolo Molaro <lupus@ximian.com>
21804
21805         * mini.h, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
21806         mini-exceptions.c: updates for changed stack walk interface.
21807
21808 2004-09-21  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21809
21810         * mini-s390.c, cpu-s390.md: Minor changes to OP_ARGLIST handling
21811
21812 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
21813
21814         * mini.c (mono_method_to_ir): Fix LDSTR in dynamic methods. Fixes #66132.
21815
21816 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
21817
21818         * driver.c (mini_regression_list): Do not call mono_assembly_close 
21819         since assemblies can't be unloaded.
21820         
21821 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
21822
21823         * cpu-amd64.md: Fix more instruction lengths.
21824
21825         * cpu-amd64.md: Fix lengths of some instructions.
21826
21827 2004-09-11 Ben Maurer  <bmaurer@users.sourceforge.net>
21828
21829         * inssel.brg: Make the array ldelema check aot friendly.
21830
21831 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
21832
21833         * mini-amd64.c (mono_arch_get_argument_info): Fix stack_unwind test.
21834
21835         * cpu-amd64.md inssel-long.brg inssel-amd64.brg: Small optimizations.
21836
21837 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
21838
21839         * mini-x86.c: Fix build.
21840
21841         * mini-sparc.c mini-x86.c mini-amd64.c: Use the new 
21842         mono_type_get_underlying_type () helper function to simplify code.
21843         
21844 2004-09-09  Martin Baulig  <martin@ximian.com>
21845
21846         * mini-amd64.c: Don't access `type->data.klass' directly, call
21847         mono_class_from_mono_type() instead since the type may be a
21848         generic instance.
21849
21850 2004-09-09  Martin Baulig  <martin@ximian.com>
21851
21852         * mini-amd64.c (get_call_info): Fix support for generic instances.
21853         (add_valuetype): Use mono_class_from_mono_type() to get the class
21854         since we can be a generic instance.
21855
21856 Thu Sep 9 01:43:53 PDT 2004 Paolo Molaro <lupus@ximian.com>
21857
21858         * mini-ppc.c, mini.h, regalloc.c, regalloc.h: powerpc speedups.
21859
21860 2004-09-07 Ben Maurer  <bmaurer@users.sourceforge.net>
21861
21862         * liveness.c: reset spill costs on each scan: bug 62107
21863
21864 2004-09-07  Bernie Solomon  <bernard@ugsolutions.com>
21865
21866         * exceptions-sparc.c (mono_arch_find_jit_info): remove
21867         unnecessary line that doesn't compile
21868
21869 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
21870
21871         * mini.c mini.h mini-x86.h tramp-x86.c: Instead of freeing delegate
21872         trampolines, make them call an error function so people can fix their
21873         code.
21874
21875 2004-09-06  Martin Baulig  <martin@ximian.com>
21876
21877         * mini.c (mono_method_to_ir): When initializing locals, handle a
21878         generic instances like a valuetype if it's a valuetype and like a
21879         class if it's a class.
21880
21881 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
21882
21883         * exceptions-x86.c (mono_arch_find_jit_info): Pop arguments off the
21884         stack. Fixes #64674.
21885
21886         * exceptions.cs: Add test for unwinding of call arguments.
21887
21888 Mon Sep 6 05:50:02 PDT 2004 Paolo Molaro <lupus@ximian.com>
21889
21890         * mini-*.c, mini-ops.h, inssel-long32.brg: introduced
21891         OP_ADDCC_IMM and OP_SUBCC_IMM (add/sub immediate that will
21892         set the carry/borrow flag). The sparc and s390 implementations
21893         can now use optimized versions (and simplify the code). ppc bugfixes.
21894
21895 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
21896
21897         * exceptions-ppc.c (mono_arch_find_jit_info): Fix memory leak.
21898
21899 2004-09-05  Zoltan Varga  <vargaz@freemail.hu>
21900
21901         * inssel-amd64.brg: Remove leftover 32 bit rule.
21902
21903         * mini-amd64.c (mono_arch_instrument_prolog): Fix tracing support.
21904
21905 2004-09-04  Zoltan Varga  <vargaz@freemail.hu>
21906
21907         * mini-exceptions.c (mono_find_jit_info): Refactor common code from
21908         mono_arch_find_jit_info functions into a new function. Fix a memory
21909         leak.
21910
21911         * exceptions-x86.c exceptions-amd64.c exceptions-sparc.c: Remove
21912         refactored code.
21913         
21914 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
21915
21916         * exceptions.cs inssel-long32.brg: Handle the OP_LCONV_TO_OVF_I2 case
21917         as well.
21918         
21919         * exceptions.cs: Add array size tests.
21920
21921         * mini.c: Allocate a separate icall wrapper for each arity of 
21922         mono_array_new_va. Fixes #59509.
21923
21924         * exceptions.cs: Add testcase for 64578.
21925
21926         * inssel-long32.brg: Fix OP_LCONV_TO_OVF_I1 rule. Fixes #64578.
21927
21928         * trace.c (is_filenamechar): Allow 0..9 in strings. Fixes #65094.
21929         
21930 2004-09-02  Martin Baulig  <martin@ximian.com>
21931
21932         * mini.c (mono_method_to_ir): When initializing the locals, call
21933         handle_initobj() on the generic instance itself, not its
21934         underlying type.
21935
21936 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
21937
21938         * mini.h (MonoJitDynamicMethodInfo): New structure, extension of 
21939         MonoJitInfo for dynamic methods.
21940
21941         * mini.c: Rename trampoline_hash_mutex to jit_mutex.
21942
21943         * mini.c: Add support for freeing JIT data for dynamic methods.
21944         
21945 2004-09-01  Martin Baulig  <martin@ximian.com>
21946
21947         * mini-x86.c (is_regsize_var): Added support for generic
21948         instances.
21949         (mono_arch_emit_prolog): Make this compile again, use
21950         `x86_push_imm_template (code)'.
21951
21952 2004-08-30 Ben Maurer  <bmaurer@users.sourceforge.net>
21953
21954         * mini-x86.c: make all push_imm instructions that get
21955         patched always emit the long form
21956
21957 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
21958
21959         * mini.c (mono_create_jump_trampoline): Store the jump trampolines 
21960         in a per-domain hash.
21961
21962         * mini-amd64.c (merge_argument_class_from_type): Handle generic
21963         types.
21964
21965 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
21966
21967         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: Ongoing SSE
21968         work.
21969         
21970         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: More SSE
21971         work.
21972
21973         * mini-amd64.c cpu-amd64.md: Implement checked int<->uint casts.
21974         Beginnings of SSE2 support.
21975
21976         * exceptions.cs: Add more tests for checked int<->uint casts.
21977
21978 2004-08-28  Martin Baulig  <martin@ximian.com>
21979
21980         * mini-x86.c (mono_arch_instrument_epilog): Added support for
21981         generic instances.
21982
21983         * mini.c
21984         (mono_type_to_ldind, mono_type_to_stind, type_to_eval_stack_type):
21985         Handle generic instances recursively.
21986
21987 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
21988
21989         * iltests.il: test for conv.u8 on a constant
21990
21991 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
21992
21993         * inssel-long32.brg: c&p rules for LCONV_x4 (membase) and
21994         LCONV_x4 (shrun_32 (membase)).
21995
21996 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
21997
21998         * inssel-x86.brg: c&p rules for push/setret of long
21999
22000 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
22001
22002         * inssel-x86.brg: c&p rules for compare (base, regvar) and
22003         compare (regvar, base)
22004
22005         * inssel-x86.brg: more burg love
22006
22007         * inssel.brg: more cleanup
22008
22009         * inssel-x86.brg, inssel-long32.brg: burg cleanup.
22010
22011 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
22012
22013         * basic-long.cs, basic-calls.cs: new tests for optimization.
22014
22015 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
22016
22017         * mini-amd64.c (read_tls_offset_from_method): Fix typo in previous
22018         patch.
22019
22020 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
22021
22022         * mini-amd64.c (read_tls_offset_from_method): Add another case.
22023         
22024 2004-08-25  Bernie Solomon  <bernard@ugsolutions.com>
22025
22026         * inssel.brg (mini_emit_memcpy): use 
22027         NO_UNALIGNED_ACCESS to disable memcpy optimization
22028
22029 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
22030
22031         * mini-amd64.c: Handle generic types in various places.
22032
22033         * mini.c (mono_method_to_ir): Handle generic types in init locals.
22034
22035 2004-08-24  Zoltan Varga  <vargaz@freemail.hu>
22036
22037         * mini.c (handle_box): Fix warning.
22038
22039         * mini-amd64.c (mono_arch_local_regalloc): Fix regalloc problem.
22040
22041         * mini-amd64.h: Enable the emit_state optimization.
22042
22043         * mini-ops.h cpu-amd64.md: Add new amd64_test_null opcode.
22044
22045         * mini-amd64.c: Add some new 64 bit peephole opts.
22046
22047         * inssel.brg (mini_emit_memcpy): Optimize for 64 bit architectures.
22048
22049         * cpu-amd64.md: sreg1 of div instructions must be %rax.
22050
22051         * mini-amd64.c: Register allocator fixes.
22052
22053         * mini.c: Add an optimization to emit_state to avoid allocation of new
22054         registers on some platforms.
22055
22056 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
22057
22058         * inssel-x86.brg inssel-amd64: Add yet another missing tree->dreg assignment.
22059
22060         * mini-x86.c (mono_arch_local_regalloc): Fix bug in long register
22061         allocation. Fixes #63085.
22062
22063         * basic-long.cs: Add new regression test.
22064
22065         * mini-amd64.c: Register allocator improvements.
22066
22067 2004-08-21  Zoltan Varga  <vargaz@freemail.hu>
22068
22069         * mini-amd64.c (read_tls_offset_from_method): Add another code
22070         sequence.
22071
22072         * tramp-amd64.c (amd64_class_init_trampoline): Use a more efficient
22073         instruction sequence for nullifying class init trampolines.
22074
22075         * objects.cs: Add new regalloc test.
22076
22077         * mini-amd64.c inssel-amd64.brg: Optimize parameter passing.
22078
22079 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
22080
22081         * mini-amd64.c (mono_arch_call_opcode): Refactor this a little.
22082         
22083         * mini-amd64.c (mono_arch_regalloc_cost): Adjust regalloc costs for
22084         arguments.
22085
22086         * driver.c: Fix profiling after TLS changes.
22087         
22088         * driver.c (mono_main): Set mono_stats.enabled if needed.
22089
22090         * mini.c (handle_alloc): New helper function used by CEE_NEWOBJ and
22091         CEE_BOX.
22092
22093 2004-08-20 Ben Maurer  <bmaurer@users.sourceforge.net>
22094
22095         * mini-x86.c: use a 1 op rather than a 2 op tls access
22096         instruction -> faster.
22097
22098 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
22099
22100         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from
22101         x86 backend.
22102
22103 2004-08-19 Bernie Solomon <bernard@ugsolutions.com>
22104
22105         * exceptions-sparc.c (throw_exception): fix typo
22106
22107 2004-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
22108
22109         * mini-x86.c, cpu-pentium.md, inssel-x86.brg:
22110         set tree->dreg correctly with tls. Allow any
22111         register to be used.
22112
22113         * mini-x86.c (read_tls_offset_from_method): add new code
22114         generation pattern seen with GCC.
22115
22116
22117 Thu Aug 19 17:26:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
22118
22119         * mini-exceptions.c, exceptions-x86.c, exceptions-amd64.c,
22120         exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
22121         exceptions-sparc.c: fix some performance issues in exception
22122         handling and setting of the stack trace for exceptions that were
22123         already thrown.
22124
22125 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
22126
22127         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from 
22128         x86 backend.
22129         
22130         * mini-amd64.c (mono_arch_is_int_overflow): Handle all possible 
22131         registers.
22132
22133 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
22134
22135         This patch inlines tls access, when possible.
22136         
22137         * mini.h: new arch functions for TLS intrinsics.
22138         All platforms updated with a stub.
22139
22140         * mini.c: use the new intrinsics
22141
22142         * mini-x86.c, cpu-pentium.md, inssel-x86.brg, mini-ops.h:
22143         arch specific intrinsic for tls variables
22144
22145 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
22146
22147         * Makefile.am (libmono_la_LDFLAGS): Enable creating of libmono dll
22148         under windows.
22149
22150 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
22151
22152         * mini.c: thread local allocation
22153
22154 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
22155
22156         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Enable.
22157
22158         * Makefile.am: Link against the static version of libmonogc.
22159         
22160         * Makefile.am: Link the static versions of the convenience libraries
22161         into the mono executable.
22162
22163         * mini-x86.h mini-x86.c: Throw the correct exception on integer overflow.
22164
22165 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
22166
22167         * mini.h mini.c mini-amd64.h mini-amd64.c: Throw the correct exception
22168         on integer overflow.
22169
22170         * mini-amd64.c: Reorganize function call code.
22171
22172         * mini-amd64.c (peephole_pass): Merge changes from mini-x86.c.
22173
22174 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
22175
22176         * inssel-x86.brg: use xor eax,eax.
22177         
22178         * basic.cs: new tests
22179
22180 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
22181
22182         * mini-amd64.c (mono_arch_emit_epilog): Use RIP relative addressing
22183         in exception throwing code.
22184         
22185 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
22186
22187         * inssel-x86.brg: use xor esi,esi.
22188
22189 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
22190
22191         * driver.c (mono_main): Call mono_trace_parse_options earlier so it
22192         can trace methods compiled during mini_init () too.
22193
22194         * cpu-amd64.md mini-amd64.c (mono_arch_output_basic_block): Handle 
22195         CEE_CONV_U4.
22196
22197 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
22198
22199         * Makefile.am: static link on x86 (r=zoltan)
22200
22201 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
22202
22203         * tramp-amd64.c (amd64_magic_trampoline): Avoid patching the trampoline
22204         code since it causes some programs to fail.
22205
22206 2004-08-12  Zoltan Varga  <vargaz@freemail.hu>
22207
22208         * mini-amd64.c (bb_is_loop_start): Merge changes from mini-x86.c.
22209
22210 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
22211
22212         * mini.c: ovfops_op_map - add STACK_OBJ case for
22213         CONV_I 
22214         * basic.cs: add test_0_pin_string as test
22215         case for above.
22216
22217 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
22218
22219         * Makefile.am: build C# if srcdir != builddir
22220
22221 Tue Aug 10 19:23:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
22222
22223         * dominators.c, mini.h, mini-x86.c: fix loop alignment with
22224         fall-through blocks.
22225
22226 Tue Aug 10 16:18:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
22227
22228         * driver.c: enable loop by default again and include abcrem in -O=all.
22229
22230 2004-08-08  Zoltan Varga  <vargaz@freemail.hu>
22231
22232         * iltests.il: Add some localloc tests.
22233
22234         * mini.c (mono_method_to_ir): Set stack type of LOCALLOC correctly.
22235
22236         * inssel-amd64.brg inssel-x86.brg: Set dreg of LOCALLOC correctly. 
22237         Fixes #62574.
22238
22239         * inssel-amd64.brg: Add some optimizations.
22240
22241         * mini-amd64.c (mono_arch_setup_jit_tls_data): Add tls offset detection
22242         for gcc-3.4.
22243
22244         * Makefile.am: Statically link mono against libmono on AMD64.
22245         
22246         * mini-amd64.c inssel-amd64.brg: Optimizations.
22247
22248 2004-08-07  Zoltan Varga  <vargaz@freemail.hu>
22249
22250         * mini-amd64.c (mono_arch_emit_prolog): Optimize lmf saving a bit.
22251
22252         * tramp-amd64.c: Patch calling code in trampolines.
22253
22254 2004-08-06  Zoltan Varga  <vargaz@freemail.hu>
22255
22256         * mini-amd64.c: pinvoke struct passing fixes.
22257
22258 2004-08-05  Bernie Solomon  <bernard@ugsolutions.com>
22259
22260         * mini-sparc.c: redo change, make mono_arch_cpu_init call
22261         mono_arch_cpu_optimizazions so sparcv9 is initialized when embedded
22262
22263 2004-08-05  Duncan Mak  <duncan@ximian.com>
22264
22265         * mini.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
22266         CEE_LDELEM_ANY.
22267
22268 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
22269
22270         * mini-amd64.c (emit_move_return_value): Move return value for normal
22271         calls too.
22272
22273 2004-08-05  Martin Baulig  <martin@ximian.com>
22274
22275         * mini.c (ret_type_to_call_opcode): Don't use a `t' variable for
22276         `type->type'; just modify `type' itself when dealing with enums
22277         and generic instances.
22278         (check_call_signature): Make `simple_type' a `MonoType *'.
22279
22280 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
22281
22282         * mini.c: Use OP_PADD to add offsets to addresses.
22283
22284         * mini-amd64.h: Disable SIGSEGV_ON_ALTSTACK.
22285
22286 2004-08-04  Bernie Solomon  <bernard@ugsolutions.com>
22287
22288         * mini-sparc.c (mono_arch_emit_epilog): fix check
22289         for folding last op into restore instruction
22290
22291 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
22292
22293         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Allocate
22294         helper methods using the code manager.
22295         
22296         * exceptions-amd64.c (mono_arch_get_throw_exception): Fix maximum length.
22297
22298         * mini-amd64.c (mono_arch_allocate_vars): Fix tls offset detection.
22299
22300 Tue Aug 3 23:50:00 EST 2004 Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
22301         
22302         * mini-s390x.c mini-s390x.h tramp-s390x.c inssel-s390x.brg
22303           cpu-s390x.md exceptions-s390x.c Makefile.am: S/390 64-bit JIT
22304
22305         * mini-s390.c: fix tail processing
22306
22307 Tue Aug 3 01:35:44 PDT 2004 Paolo Molaro <lupus@ximian.com>
22308
22309         * mini-ppc.c: mul.ovf.un exception name fix.
22310
22311 2004-08-03  Martin Baulig  <martin@ximian.com>
22312
22313         * mini-x86.c (mono_arch_call_opcode): Correctly handle generic
22314         instances; before jumping to `handle_enum', also modify `ptype'.
22315
22316 2004-08-02  Bernie Solomon  <bernard@ugsolutions.com>
22317
22318         * cpu-sparc.md: fcall maximal length too small.
22319
22320 2004-08-02  Zoltan Varga  <vargaz@freemail.hu>
22321
22322         * mini-amd64.c mini.h: Add initial support for passing/returning 
22323         structures to/from pinvoked methods.
22324
22325 Mon Aug 2 11:59:35 PDT 2004 Paolo Molaro <lupus@ximian.com>
22326
22327         * mini-ppc.c: reg allocator fix.
22328
22329 2004-07-31  Zoltan Varga  <vargaz@freemail.hu>
22330
22331         * mini-amd64.c (mono_arch_output_basic_block): Fix OP_X86_PUSH_OBJ.
22332
22333         * inssel.brg: Optimize memset on 64 bit machines.
22334
22335         * mini-amd64.c: Fix some vararg cases.
22336
22337 2004-07-30  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
22338
22339         * mini-s390.c: Corrected macro in emit_float_to_int
22340
22341         * s390-abi.cs: Tests to exercise the s390 ABI
22342
22343 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
22344
22345         * exceptions-amd64.c (mono_arch_find_jit_info): Fix restoring of
22346         caller saved regs.
22347
22348         * basic.cs: Add a test for add.ovf.un.
22349
22350 2004-07-30  Bernie Solomon  <bernard@ugsolutions.com>
22351
22352         * mini-sparc.c: add case for OP_IDIV_UN
22353
22354 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
22355
22356         * mini-amd64.c mini-amd64.h mini.c: Add support for vararg pinvoke calls.
22357         
22358         * mini-amd64.c cpu-amd64.md: Ongoing JIT work.
22359
22360 2004-07-30  Ben Maurer  <bmaurer@ximian.com>
22361
22362         * basic.cs: regression tests.
22363
22364         * inssel-x86.brg: Disable cmp BYTE PTR [eax], imm, it causes various
22365         regressions.
22366
22367 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
22368
22369         * basic.cs: Add a new test.
22370
22371         * mini-amd64.c aot.c cpu-amd64.md: Add support for tracing, profiling 
22372         and AOT. Various fixes and optimizations.
22373
22374         * inssel.brg (CALL_REG): Add 64 bit versions of call_reg rules.
22375
22376 Fri Jul 30 15:49:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
22377
22378         * mini-ppc.c: make sure temp regs are not used for global reg
22379         allocation.
22380
22381 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
22382
22383         * cpu-sparc.md: conv_i8 fix for 64bits
22384
22385         * mini-sparc.c: add cases for OP_IXXX codes for 64bits
22386
22387 2004-07-29  Ben Maurer  <bmaurer@ximian.com>
22388         
22389         * cpu-pentium.md, mini-x86.c, inssel-x86.brg, mini-ops.h:
22390         add opcode for cmp BYTE PTR [eax], imm.
22391
22392         * inssel.brg: Make memcpy and memset takes bases.
22393
22394 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
22395
22396         * *-amd64.*: More AMD64 work.
22397         
22398 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
22399
22400         * cpu-pentium.md, inssel-x86.brg, mini-ops.h, mini-x86.c:
22401         add a compare-not-equal opcode.
22402         
22403 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
22404
22405         * mini.c: Use mono_init_from_assembly instead of mono_init.
22406         
22407 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
22408
22409         * mini.c: Fix opcode mapping for STACK_MP on 64 bit platforms.
22410
22411         * mini.c (CEE_NEWOBJ): Call mono_array_new_va using the correct signature.
22412
22413         * mini.c: Use MONO_ARCH_SIGACTION on AMD64 as well.
22414
22415         * inssel.brg: 64 bit fixes.
22416
22417         * mini.h (MonoCallInst): Add some AMD64 specific data.
22418
22419         * mini.h: Add some OP_P opcodes.
22420
22421 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
22422
22423         * basic.cs: tests for 61797 and 61740
22424
22425 Tue Jul 27 16:05:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
22426
22427         * mini-ppc.c, mini-sparc.c, mini-s390.c: keep track of line
22428         numbers in the debug info (spotted by Geoff Norton, <gnorton@customerdna.com>).
22429
22430 2004-07-24  Zoltan Varga  <vargaz@freemail.hu>
22431
22432         * mini-sparc.c (mono_arch_output_basic_block): Add CEE_CONV_U8/I8.
22433
22434         * *-amd64*.*: Ongoing AMD64 work.
22435
22436 2004-07-23 Zoltan Varga <vargaz@freemail.hu>
22437
22438         * inssel-long.brg: Implement CONV_I8/CONV_U8 in the backends.
22439
22440         * *-amd64*: Ongoing AMD64 work.
22441
22442         * mini-arch.h: Add AMD64 support.
22443
22444         * mini-sparc.c (mono_arch_is_inst_imm): New arch dependent function.
22445
22446         * mini.h: Add new arch dependent function mono_arch_is_inst_imm.
22447
22448         * mini-ops.h: Add new opcodes.
22449
22450         * Makefile.am: Add AMD64 support.
22451
22452         * inssel.brg inssel-long32.brg inssel-long.brg: Move mul/div and shift
22453         rules into the inssel-long*.brg files.
22454
22455         * *-amd64.*: Add beginnings of AMD64 backend.
22456
22457 2004-07-22  Ben Maurer  <bmaurer@ximian.com>
22458
22459         * mini.c (print_dfn): commenting out the code that prints
22460         the cil. With -O=deadce, this makes -v -v crash.
22461         
22462         * cpu-pentium.md: make checkthis have a length of 2
22463
22464 2004-04-21  Bernie Solomon  <bernard@ugsolutions.com>
22465
22466         * mini-sparc.h: fix implementations of __builtin
22467         functions for Sun compiler for V9.
22468
22469 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
22470
22471         * mini.c: use the new stelem.ref wrapper
22472         * exceptions.cs, arrays.cs: new stelem.ref tests
22473
22474 Wed Jul 14 19:08:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
22475
22476         * mini-ppc.c, exceptions-ppc.c: cleanups and fixes (the
22477         new XSP should work with these changes).
22478
22479 2004-07-14  Ben Maurer  <bmaurer@ximain.com>
22480         
22481         * inssel-{long32,x86,}.brg: trivial optimizations.
22482         
22483 Mon Jul 12 20:25:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
22484
22485         * mini.c: load value when emitting box operation in
22486         constrained calls.
22487
22488 2004-07-12  Ben Maurer  <bmaurer@ximian.com>
22489
22490         * mini-x86.c (OP_CHECK_THIS): cmp DWORD PTR [eax], eax
22491         is one byte shorter than cmp DWORD PTR [eax], 0.
22492
22493 Mon Jul 12 17:47:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
22494
22495         * inssel-ppc.brg: arguments on the stack are always
22496         relative to the stack pointer (spotted by Neale Ferguson).
22497
22498 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22499
22500         * exceptions-x86.c: delay appending the method name to the trace until
22501         after mono_jit_info_table_find is called, as this gets the real
22502         MonoMethod.
22503
22504 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
22505
22506         * aot.c: register roots
22507
22508 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
22509
22510         * aot.c : I could just use PLATFORM_WIN32 flag.
22511
22512 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
22513
22514         * aot.c : Reverting the previous fix. This time it broke linux build.
22515
22516 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
22517
22518         * aot.c : quick cygwin build fix. mkdir() with two args does not exist.
22519
22520 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
22521
22522         * mini.c (handle_stack_args): Remove some more debugging code.
22523         
22524         * mini.c (handle_stack_args): Remove debug output left in by mistake.
22525
22526         * driver.c mini.h aot.c: Allow additional options to be specified with
22527         --aot and pass them to mono_compile_assembly.
22528
22529         * aot.c: Add experimental code to AOT compile all loaded assemblies
22530         on demand and save the code into a cache in the filesystem.
22531
22532         * aot.c: Add support for more wrapper methods.
22533         
22534         * mini.c (handle_stack_args): Handle some corner cases. Fixes 
22535         58863.
22536
22537         * cpu-*.md: Remove removed opcodes.
22538
22539         * mini.h mini.c: Move JIT icall handling to icall.c. Replace usage of
22540         CEE_MONO_PROC<x> with CEE_MONO_ICALL. Move registration of marshalling
22541         related icalls to marshal.c.
22542
22543 2004-07-06  Zoltan Varga  <vargaz@freemail.hu>
22544
22545         * mini-ops.h: Add OP_SAVE_LMF and OP_RESTORE_LMF.
22546
22547         * Makefile.am (EXTRA_DIST): Add inssel-long[32].brg.
22548
22549         * inssel.brg: Fix warning. Add rules for SAVE_LMF and RESTORE_LMF.
22550
22551 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
22552         * liveness.c: If liveness is recomputated we need to reset the information
22553         for each variable. This way, if the liveness range has been narrowed
22554         by optimizations that happened after the last computation, we can return
22555         a smaller range.
22556         
22557         For example, if you have
22558         
22559         {
22560                 int i = 0;
22561                 
22562                 // Tons of code that does not affect i
22563                 
22564                 i = foo ();
22565                 ...
22566         }
22567         
22568         i = 0 is dead code and will be removed by SSA. However, when
22569         linear scan gets to the code, i will still appear to be live
22570         throughout the entire block. This prevents good register allocation.
22571
22572 2004-07-06  Martin Baulig  <martin@ximian.com>
22573
22574         * debug-mini.c (mono_debug_init_method): Allow
22575         MONO_WRAPPER_MANAGED_TO_NATIVE wrappers.
22576         (mono_debug_add_icall_wrapper): New method.
22577
22578         * mini.c (mono_icall_get_wrapper): Call mono_debug_add_icall_wrapper().
22579
22580 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
22581
22582         * mini.c (optimize_branches): Fix linking of bblocks in branch->branch
22583         optimization.
22584
22585 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
22586
22587         * aot.c (mono_aot_load_method): Fix loading of debug info.
22588
22589 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
22590
22591         * aot.c: Add logging support.
22592
22593 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
22594
22595         * mini.h: Add prototype for mono_print_method_from_ip.
22596
22597         * mini.c: 64 bit fixes. Use LCOMPARE for comparing longs.
22598
22599         * inssel.brg: 64 bit fixes.
22600
22601         * inssel.brg inssel-long32.brg: Move 32 bit arithmetic rules to 
22602         inssel-long32.brg.
22603
22604         * Makefile.am: Add SPARC64 support.
22605
22606 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
22607
22608         * aot.c: Fix alignment problems on 32 bit platforms.
22609
22610 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
22611
22612         * helpers.c (mono_disassemble_code): Pass -xarch=v9 to assembler on
22613         SPARC64.
22614
22615         * aot.c: Add SPARC64 support. Reorganize patch table to fix alignment
22616         problems.
22617
22618         * mini.h: Bump AOT file version. Some 64 bit fixes.
22619
22620 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
22621
22622         * inssel-sparc.brg: Add new rule to avoid register moves.
22623
22624         * inssel.brg: Add ldind_to_load_membase helper function.
22625
22626 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
22627
22628         * mini.c: OffsetToStringData intrinsic.
22629         
22630 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
22631
22632         * ssa.c: Handle OP_LCOMPARE the same as OP_COMPARE.
22633
22634         * objects.cs exceptions.cs basic.cs basic-long.cs basic-calls.cs: New
22635         regression tests.
22636
22637         * mini-ops.h cpu-sparc.md mini-sparc.h mini-sparc.c exceptions-sparc.c tramp-sparc.c inssel-long.brg: Add SPARC64 support.
22638 Mon Jun 28 18:05:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
22639
22640         * mini.c: reinstated mono_compile_get_interface_var()
22641         on x86, too, since the change breaks the Gtk# build there as well.
22642
22643 Fri Jun 25 17:36:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22644
22645         * driver.c: remove loop from the default optimizations: it seems to
22646         interact badly with some of the other options (see bug #60613).
22647
22648 2004-06-25  Zoltan Varga  <vargaz@freemail.hu>
22649
22650         * mini.c mini-x86.h mini-x86.c: Applied patch from Guenter Feldmann 
22651         (fld@informatik.uni-bremen.de): Add Solaris x86 support.
22652
22653 Tue Jun 22 21:29:11 CEST 2004 Paolo Molaro <lupus@ximian.com>
22654
22655         * mini-ppc.c, cpu-g4.md: small updates to be able to compile
22656         vararg-using methods.
22657
22658 2004-06-21  Martin Baulig  <martin@ximian.com>
22659
22660         * mini/mini-exceptions.c
22661         (mono_handle_exception): Added `gpointer original_ip' argument.
22662         After calling mono_unhandled_exception(), call
22663         mono_debugger_unhandled_exception() and if that returns true,
22664         restore the context and return.
22665
22666 Mon Jun 21 19:26:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
22667
22668         * mini-ppc.c: prefer the use of relative branches so
22669         they won't need to be patched in aot code (patch from Patrick Beard).
22670
22671 Mon Jun 21 19:03:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
22672
22673         * aot.c: patch from Patrick Beard to make the output assembly
22674         more correct for the MacOSX assembler. Small tweak to
22675         generate sane images on Linux/PPC, too.
22676
22677 Fri Jun 18 18:24:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22678
22679         * mini.c, mini.h, mini-ppc.c: handle varargs methods with a special
22680         case until bug #59509 is fixed (shows up in #60332).
22681
22682 Tue Jun 15 16:36:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
22683
22684         * mini.c: make sure the needed wrappers are compiled, too, with
22685         precomp.
22686
22687 Mon Jun 14 18:36:08 CEST 2004 Paolo Molaro <lupus@ximian.com>
22688
22689         * driver.c: remove NPTL reference in --version output.
22690
22691 Sun Jun 13 17:25:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22692
22693         * aot.c: patch from Patrick Beard (pcbeard@mac.com) to
22694         generate valid assembly for the Mach-O assembler.
22695
22696 Sun Jun 13 15:59:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
22697
22698         * driver.c: don't include abcrem in the all optimization specifier
22699         since it slows down jit compilation too much for now.
22700
22701 2004-06-12 Ben Maurer  <bmaurer@users.sourceforge.net>
22702
22703         * mini.c: use BIGMUL only if both operands have the same signage.
22704         * iltests.il: Test for bug 60056. (errors related to signage in
22705         BIGMUL).
22706
22707         r=lupus.
22708
22709 Thu Jun 10 16:06:42 CEST 2004 Paolo Molaro <lupus@ximian.com>
22710
22711         * mini.c, aot.c: memory leak fixes.
22712
22713 Tue Jun 8 16:37:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
22714
22715         * inssel-long32.brg: implemented a few missing ulong cast opcodes.
22716
22717 Tue Jun 8 15:36:30 CEST 2004 Paolo Molaro <lupus@ximian.com>
22718
22719         * Makefile.am: remove the -static hack completely, it links in
22720         statically glib as well.
22721
22722 Sat Jun 5 16:32:33 CEST 2004 Paolo Molaro <lupus@ximian.com>
22723
22724         * iltests.il, mini.c: fixed bug#59580 in branch optimization.
22725         * exceptions.cs: make it compile with new mcs/csc.
22726
22727 2004-06-03 Massimiliano Mantione <massi@ximian.com>
22728         * cpu-pentium.md basic-float.cs Fixed bug on fpu spills (see bug 54467),
22729         and added relevant test case.
22730
22731 Mon May 31 19:41:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
22732
22733         * mini.c revert Zoltan's fix to bug#58863 on ppc, since it causes
22734         regressions in gtk-sharp.
22735
22736 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
22737
22738         * exceptions.cs: New regression tests.
22739
22740         * jit-icalls.c (mono_llmult_ovf): Fix some boundary conditions.
22741
22742 Sat May 29 10:45:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
22743
22744         * mini.c: emit castclass/isinst in their own trees (bug #54209/59057).
22745
22746 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
22747
22748         * mini-sparc.h (MONO_ARCH_NEED_DIV_CHECK): Define this.
22749
22750         * cpu-sparc.md mini-sparc.c: Add overflow detection to div opcodes.
22751
22752 2004-05-28      Patrik Torstensson <totte@hiddenpeaks.com>
22753
22754         * mini.c (mono_jit_runtime_invoke): Init class in this
22755         method instead of trusting mono_jit_compile_method to
22756         do the work (because wrappers can be in object class)
22757
22758 2004-05-27  Zoltan Varga  <vargaz@freemail.hu>
22759
22760         * mini-sparc.c (mono_arch_output_basic_block): Fix sub.imm.
22761
22762         * basic-long.cs: New regression test.
22763
22764 Thu May 27 15:50:52 CEST 2004 Paolo Molaro <lupus@ximian.com>
22765
22766         * cpu-g4.md, mini-ppc.c: fixes to long add/sub ovf opcodes
22767         and div/rem checks.
22768
22769 Thu May 27 12:36:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
22770
22771         * Makefile.am: fix miguel's change to build mono statically against
22772         libmono (track build dependencies).
22773
22774 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
22775
22776         * cfold.c: Some glib versions do not have G_MININT32.
22777
22778 2004-05-26  Massimiliano Mantione  <massi@ximian.com>
22779
22780         * mini-x86.c cpu-pentium.md Makefile.am basic-math.cs: Fixed problem
22781         with precision of tan, atan, sin and cos, and implemented related
22782         regressions tests (fixes bug 54467, but one new problem appeared and
22783         is not fixed yet).
22784
22785 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
22786
22787         * cfold.c (FOLD_BINOPZ): Avoid division by zero.
22788
22789         * exceptions.cs: Add test for constant folding && division by zero.
22790
22791         * driver.c mini.h mini.c mini-x86.c: Revert most of the previous patch
22792         since driver.c is in libmono too, so the optimization was useless.
22793
22794         * driver.c mini.h mini.c mini-x86.c: Moved the mono_lmf_addr TLS 
22795         variable to driver.c so the compiler can emit more efficient code to
22796         access them.
22797
22798 2004-05-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22799
22800         * Makefile.am: don't distribute generated inssel.[ch] files.
22801
22802 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
22803
22804         * mini.c (mono_jit_compile_method_with_opt): Really emit icall wrappers
22805         into the default appdomain. Fixes #58707.
22806
22807         * jit-icalls.c: Remove the broken approximation for truncl, doing
22808         no conversion is better.
22809
22810         * mini.c (handle_stack_args): Avoid reusing variables for stack slots.
22811         Fixes #58863.
22812
22813 Tue May 25 14:33:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
22814
22815         * mini-ops.h, mini-ppc.c, cpu-g4.md, inssel-ppc.brg: eliminate the use
22816         of the mcrxr instruction which is not available on some processors
22817         even if it's documented to be. Implement add and sub overflow correctly
22818         (still not complete for long unsigned). Speed up icalls a bit.
22819
22820 2004-05-25 13:01 CET Patrik Torstenson <totte@hiddenpeaks.com>
22821
22822         * mini.c (mono_jit_compile_method_with_opt): Make sure that
22823         we run .cctor in the current domain instead of target_domain.
22824         
22825         Fixes bug #58558, .cctor not being called in -O=shared.
22826
22827 Tue May 25 12:46:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
22828
22829         * mini-ppc.h, jit-icalls.c: added explicit checks for divide by zero.
22830
22831 2004-05-24 Ben Maurer  <bmaurer@users.sourceforge.net>
22832
22833         * mini-x86.c (EMIT_COND_BRANCH): If an OP_LABEL has an offset
22834         which can be done with an imm8, do it that way.
22835         (mono_arch_output_basic_block): ditto for a jmp
22836         (mono_arch_emit_prolog): Computate maximum offset of a label.
22837
22838 2004-05-24 18:18 CET Patrik Torstenson <totte@hiddenpeaks.com>
22839
22840         * mini-x86.c (mono_arch_local_regalloc): the reg allocator
22841         now tries to allocate prefered physical reg's for virtual
22842         regs. This reduces the number of emited spills/loads with
22843         20-30% on our core assemblies.
22844
22845 Mon May 24 18:21:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
22846
22847         * jit-icalls.c: truncl() is not needed and trunc() is
22848         the correct thing to do anyway (bug #58287).
22849
22850 2004-05-24  Zoltan Varga  <vargaz@freemail.hu>
22851
22852         * mini-sparc.c (mono_arch_flush_icache): Call sync_instruction_memory
22853         if available.
22854
22855 Mon May 24 12:49:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
22856
22857         * driver.c: enable loop optimizations by default.
22858
22859 Mon May 24 11:13:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
22860
22861         * mini-x86.c: fix calc of max loop size when aligning loops start.
22862
22863 2004-05-23  Zoltan Varga  <vargaz@freemail.hu>
22864
22865         * ssa.c (mono_ssa_cprop): Allocate carray dynamically instead of on
22866         the stack.
22867
22868 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
22869
22870         * mini-sparc.c (mono_arch_output_basic_block): ADD_IMM and SUB_IMM
22871         should set carry.
22872
22873         * basic-long.cs: Add tests for add/subtract of immediates with carry.
22874
22875         * mini.c exceptions-x86.c: Remove MONO_USE_EXC_TABLES stuff.
22876         
22877         * mini.c (inline_method): Allways inline some wrappers even if the cost
22878         is too large. Fixes #58785.
22879
22880         * mini.c: Add support for MARSHAL_CONV_FTN_DEL.
22881         
22882 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
22883
22884         * mini-sparc.c exceptions-sparc.c: Applied patch from Mark Crichton
22885         (crichton@gimp.org). Beginning of support for sparc/linux.
22886
22887         * mini-sparc.c: Optimize retrieval of LMF address.
22888
22889 Fri May 21 08:00:12 EDT 2004 Paolo Molaro <lupus@ximian.com>
22890
22891         * exceptions-ppc.c:  handle alloca in methods with clauses.
22892
22893 Fri May 21 07:35:30 EDT 2004 Paolo Molaro <lupus@ximian.com>
22894
22895         * mini-ppc.c: cleanups, off-by-one fixes, avoid recursive thunks.
22896
22897 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
22898
22899         * mini.c: Delegate most of the abort signal work to 
22900           mono_thread_request_interruption, which also handles Stop and Suspend
22901           states.
22902
22903 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
22904
22905         * mini.c mini.h: Allow inlining of icall wrappers if the backend 
22906         supports the save/restore lmf opcodes.
22907
22908 2004-05-19  Zoltan Varga  <vargaz@freemail.hu>
22909
22910         * mini-x86.c (mono_arch_setup_jit_tls_data): Handle code generated
22911         by gcc-3.4 as well.
22912
22913         * mini-x86.h mini-x86.c tramp-x86.c: Optimize lmf restoring code.
22914
22915 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
22916
22917         * mini.h mini.c (mini_method_compile): Only run abc removal pass on 
22918         methods which contain array accesses.
22919
22920         * mini.c (CEE_LDTOKEN): Handle this instruction correctly on bb
22921         boundaries. Fixes #58537.
22922
22923         * iltests.il: Add regression test for #58537.
22924
22925 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
22926
22927         * mini-x86.c (mono_arch_local_regalloc): Last part of
22928         fix for bug #58633 (releasing register to early).
22929
22930 2004-05-18  Miguel de Icaza  <miguel@ximian.com>
22931
22932         * basic-long.cs: Add new regression test.
22933
22934 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
22935
22936         * mini-x86.c (mono_arch_local_regalloc): Avoid releasing a
22937         register too early on the chain.
22938
22939 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
22940
22941         * mini.c (create_helper_signature): Use a helper function to reduce
22942         the code which needs to be written. Also set the calling convention of
22943         icalls on windows. Fixes #57840.
22944
22945 Tue May 18 11:05:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
22946
22947         * mini.h, exceptions-x86.c, exceptions-sparc.c, exceptions-s390.c,
22948         exceptions-ppc.c: added helper function to get the instruction address
22949         from a signal handler context.
22950
22951 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
22952
22953         * helpers.c: use g_get_tmp_dir. Invokes happyness 
22954         from gonzalo.
22955
22956 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
22957
22958         * helpers.c: Add new env variable to pass args to objdump.
22959         Specifically for those of us who love -Mintel. r=miguel, gonzalo.
22960
22961 2004-05-17  Radek Doulik  <rodo@ximian.com>
22962
22963         * Makefile.am (common_sources): added abcremoval.h so it get
22964         disted and daily mono packages on go-mono.com will build again
22965
22966 2004-05-17  Massimiliano Mantione  <massi@ximian.com>
22967
22968         * abcremoval.c: Fixed coding style, added copyright header.
22969
22970         * abcremoval.h: Fixed style and moved prototype to mini.h, added copyright header.
22971
22972         * mini.h: Added prototype for abc removal main function.
22973
22974         * build_relations_propagation_table.pl: Added copyright header.
22975
22976 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
22977
22978         * basic-long.cs: reg test for complex ceq_long bug.
22979
22980 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
22981
22982         * mini-x86.c (mono_arch_local_regalloc): Correctly free 
22983         reg in long and clob case (bug #58343). Fixed/added comments.
22984
22985 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
22986
22987         * mini.c (mono_jit_runtime_invoke): Follow new convention
22988         of calling the invoke method with an function pointer.
22989
22990 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
22991
22992         * ChangeLog: Fix author of memory leak patch.
22993
22994 Fri May 14 15:13:06 CEST 2004 Paolo Molaro <lupus@ximian.com>
22995
22996         * Makefile.am: fix make dist as well...
22997
22998
22999 2004-05-14  Massimiliano Mantione  <massi@ximian.com>
23000
23001         * cfold.c: Made so that conversions from pointer to int4 are no-ops
23002         on archs where pointers are 4 bytes long.
23003
23004         * Makefile.am: Added abcremoval.c source file.
23005
23006         * abcremoval.c: Added abcremoval.c.
23007
23008         * abcremoval.h: Added abcremoval.h.
23009
23010         * build_relations_propagation_table.pl: Added build_relations_propagation_table.pl.
23011
23012         * inssel.brg: Enabled bounds check removal.
23013
23014         * mini.c: Added support for abcrem optimization.
23015
23016         * mini.h: Added abcrem optimization label.
23017
23018         * driver.c: Added support for abcrem optimization.
23019
23020         * propagated_relations_table.def: Added propagated_relations_table.def.
23021
23022 Fri May 14 14:30:13 CEST 2004 Paolo Molaro <lupus@ximian.com>
23023
23024         * mini.c, cfold.c: fix style.
23025
23026 Fri May 14 14:28:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
23027
23028         * mini.c: handle issue with the low-level implementation of
23029         some long opcodes (bug #54209).
23030
23031 2004-05-13 Ben Maurer  <bmaurer@users.sourceforge.net>
23032
23033         * basic.cs: test for my new cmov stuff.
23034
23035 2004-05-13      Patrik Torstensson
23036
23037         * mini-x86.c: added OP_X86_COMPARE_MEMBASE_IMM peephole
23038         opt and added peephole documentation.
23039
23040 Thu May 13 11:41:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
23041
23042         * tramp-ppc.c: rewrote the generic trampoline code.
23043
23044 2004-05-11      Patrik Torstensson
23045
23046         * mini-x86.c: optimize long shl/shr asm code (one less branch)
23047
23048 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
23049
23050         * basic.cs basic-long.cs objects.cs: Make these compile under MS csc.
23051
23052         * mini.h mini.c dominators.c: Applied patch from Derek Woo
23053         (derek@eecg.toronto.edu): Fix memory leaks in loop optimizations.
23054
23055         * mini.c: Add new icalls for AsAny marshalling.
23056
23057 Tue May 11 16:00:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
23058
23059         * tramp-ppc.c, mini-ppc.c: more cleanups.
23060
23061 2004-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23062
23063         * mini.c: no warnings.
23064
23065 Tue May 11 13:59:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
23066
23067         * mini-ppc.c, mini.c: use mono_resolve_patch_target ().
23068
23069 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
23070
23071         * mini.c: In the thread abort signal handler, if the thread is in the
23072         process of being stoped, don't throw the Abort exception, just stop the
23073         thread.
23074
23075 Tue May 11 12:15:24 CEST 2004 Paolo Molaro <lupus@ximian.com>
23076
23077         * tramp-ppc.c: removed old code.
23078
23079 Tue May 11 12:02:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
23080
23081         * mini.h, mini-ppc.c, cfold.c: export mono_is_power_of_two().
23082         do some simple speed optimizations on ppc.
23083
23084 Mon May 10 17:21:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
23085
23086         * mini-ppc.c, cpu-g4.md: fixes to handle large stack frames
23087         and large offsets in load/store.
23088
23089 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
23090
23091         * mini-x86.c (mono_arch_local_regalloc): Remove the previous fix, since
23092         it causes regressions.
23093
23094 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
23095
23096         * mini-sparc.c: Fix vararg support + add beginnings of sigaltstack
23097         support.
23098
23099 Fri May 7 13:25:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
23100
23101         * jit-icalls.c: remove warnings.
23102         * inssel-x86.brg, inssel.brg, mini-x86.c, cfold.c: some simple
23103         speedups for unsafe code.
23104
23105 2004-05-07 Ben Maurer  <bmaurer@users.sourceforge.net>
23106
23107         * inssel.brg: Optimize Stind.[ui][12]. r=zoltan.
23108
23109 2004-05-06  Zoltan Varga  <vargaz@freemail.hu>
23110
23111         * basic-calls.cs: Add new regression test.
23112
23113         * mini.c (mono_runtime_install_handlers): Use SA_ONSTACK since it is
23114         more portable.
23115
23116         * mini.c (mono_method_to_ir): Handle opcode emulation for *_OVF opcodes.
23117
23118         * mini-x86.c (mono_arch_local_regalloc): Free new_dest register when it
23119         is no longer used.
23120
23121 2004-05-06      Patrik Torstensson
23122
23123         * mini-x86.[c|h], inssel-x86.brg, cpu-pentium.md, mini.c: enabled
23124         long reg allocation in any reg (not only eax:edx) and implemented 
23125         long shl/shr ops in asm instead of helpers.
23126
23127 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
23128
23129         * mini-sparc.h: Fix warnings.
23130
23131         * exceptions-sparc.c (mono_arch_find_jit_info): Pop unused lfm off the
23132         stack.
23133
23134         * mini-exceptions.c (mono_handle_exception): Call the filter in a
23135         separate statement for clarity.
23136
23137         * mini-sparc.c: Update status.
23138
23139 2004-05-04  Zoltan Varga  <vargaz@freemail.hu>
23140
23141         * mini-exceptions.c (ves_icall_get_frame_info): Flush register windows
23142         here.
23143
23144 Mon May 3 22:58:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
23145
23146         * inssel-ppc.brg: another small pre-release workaround:
23147         we don't do overflow detection for long_sub_un.
23148
23149 Sun May 2 20:12:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
23150
23151         * mini.c, mini-ops, inssel-long32.brg: speedup ulong >> 32
23152         (also works around a weird ppc bug: 57957).
23153
23154 Sat May 1 16:56:10 EDT 2004 Paolo Molaro <lupus@ximian.com>
23155
23156         * tramp-ppc.c: trampoline fixes.
23157
23158 Fri Apr 30 15:54:26 EDT 2004    Paolo Molaro <lupus@ximian.com>
23159
23160         * mini-ppc.c: fixed typos.
23161
23162 Thu Apr 29 20:15:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
23163
23164         * mini-ppc.c, exceptions-ppc.c: more code saves registers
23165         at the top of the stack. Fixed typos. Use a frame registers
23166         for all the methods with exception clauses.
23167
23168 Thu Apr 29 18:52:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
23169
23170         * exceptions-ppc.c: restore fp registers.
23171
23172 Thu Apr 29 18:26:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
23173
23174         * mini-ppc.c, exceptions-ppc.c: save the registers in reverse
23175         order from the stack top (moved the stack room to save the
23176         return value for trace after the param area). Fixed corruption
23177         in restoring registers on unwind.
23178
23179 Thu Apr 29 16:47:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
23180
23181         * mini-ppc.c, cpu-g4.md: fixed unisgned -> double conversion.
23182
23183 Thu Apr 29 13:50:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
23184
23185         * exceptions-ppc.c, mini-ppc.h, mini-ppc.c: fixed localloc
23186         and prolog/epilog for methods that use it. Allow
23187         enough param area room for varargs methods. Fix miguel's
23188         breakage in exception handling.
23189
23190 Thu Apr 29 12:06:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
23191
23192         * Makefile.am: run genmdesc only on current arch.
23193
23194 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23195
23196         * exceptions-x86.c:
23197         * mini-x86.h: fix the build on windows.
23198
23199 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
23200
23201         * 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.
23202
23203         * exceptions-sparc.c exceptions-ppc.c exceptions-s390.c mini-ppc.h mini-s390.h mini-sparc.h: Fix up ports after changes.
23204
23205         * mini-exceptions.c: New file.
23206         
23207         * mini.c mini-exceptions.c mini-x86.h exceptions-x86.c Makefile.am:
23208         Move some parts of the x86 exception handling code to an 
23209         arch-independent file so it can be shared with other ports.
23210
23211 Tue Apr 27 12:15:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
23212
23213         * trace.c, cpu-g4.md, inssel-ppc.brg, mini-ppc.c: some fixes for FP code.
23214
23215 2004-04-26  David Waite  <mass@akuma.org>
23216
23217         * driver.c: remove comma from end of enumeration declaration
23218
23219 2004-04-26  Jackson Harper  <jackson@ximian.com>
23220
23221         * driver.c: parse config file before loading first assembly. This
23222         allows the user gac to be enabled/disabled. 
23223         
23224 2004-04-23  Miguel de Icaza  <miguel@ximian.com>
23225
23226         * mini-ppc.c (ppc_patch): Replaced the branch code patching with a
23227         simpler mechanism: we do not care what is encoded initially
23228         (branch absolute or relative), we care about the code and its
23229         target.  I kept the old code for reference for now.
23230
23231         The new code tries first to determine if the jump is anywhere in
23232         the -/+32 absolute meg range, if it succeeds, it encodes using the
23233         absolute branch;  If not, it tried to find something in the
23234         relative range, if not, it uses the handle_thunk code. 
23235
23236 Fri Apr 23 14:20:40 EDT 2004 Paolo Molaro <lupus@ximian.com>
23237
23238         * exceptions-ppc.c: use the correct ip register on macosx.
23239
23240 Thu Apr 22 13:23:16 EDT 2004 Paolo Molaro <lupus@ximian.com>
23241
23242         * exceptions.c, mini.c, mini-ppc.h: adapt code to macosx.
23243
23244 Thu Apr 22 18:08:37 CEST 2004 Paolo Molaro <lupus@ximian.com>
23245
23246         * mini-ppc.c, cpu-g4.md: made the branch macros more flexible.
23247         Raise exception on integer divide by zero by hand since the hw
23248         doesn't support it. Handle NaNs in FP compares.
23249
23250 Thu Apr 22 16:10:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
23251
23252         * exceptions-ppc.c, mini-ppc.h, mini.c: simplified some
23253         code reducing duplication between the platforms and enabled
23254         signal exception handling (on linux for now).
23255
23256 Wed Apr 21 12:27:48 EDT 2004 Paolo Molaro <lupus@ximian.com>
23257
23258         * exceptions-ppc.c: more macosx support.
23259
23260 Wed Apr 21 16:38:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
23261
23262         * mini-ppc.h, mini-ppc.c, cpu-g4.md: enable bigmul optimization.
23263
23264 Wed Apr 21 16:20:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
23265
23266         * mini.h, mini-ppc.c, cpu-g4.md: support for implicit exceptions.
23267
23268 2004-04-19 Ben Maurer  <bmaurer@users.sourceforge.net>
23269
23270         * iltests.il: more tests.
23271
23272 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
23273
23274         * mini-*.c (mono_arch_get_allocatable_int_vars): Skip written-only
23275         vars as well.
23276
23277 Mon Apr 19 19:39:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
23278
23279         * mini-ppc.c: some fixes to bootstrap mcs/corlib/etc.
23280
23281 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
23282
23283         * liveness.c: Mark variables as volatile in all basic blocks reachable
23284         from exception clauses.
23285
23286 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
23287
23288         * exceptions.cs (test_0_rethow_stacktrace): Make this work with
23289         inlining.
23290
23291 2004-04-18 Ben Maurer  <bmaurer@users.sourceforge.net>
23292
23293         * iltests.il, basic.cs: more tests for regalloc.
23294
23295 2004-04-17 Ben Maurer  <bmaurer@users.sourceforge.net>
23296
23297         * iltests.il: Some tests for register allocation modifications
23298         I have locally.
23299
23300 2004-04-16  Zoltan Varga  <vargaz@freemail.hu>
23301
23302         * exceptions.cs: Add regression test for bug #56782.
23303
23304         * exceptions-*.c (mono_arch_handle_exception): Do not overwrite the
23305         original stack trace if an exception is rethrown. Fixes #56782. Oh,
23306         the beauty of fixing the same thing in 5 different files...
23307
23308 2004-04-15  Zoltan Varga  <vargaz@freemail.hu>
23309
23310         * mini.c (mono_method_to_ir): Do not compute coverage for inlined
23311         methods.
23312
23313 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
23314
23315         * mini.c: Add support for STRWLPARRAY marshalling convention.
23316
23317 Wed Apr 14 18:15:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
23318
23319         * exceptions-ppc.c: missing fixes in mono_jit_walk_stack (need
23320         to init the context to setup the regs pointer).
23321
23322 Wed Apr 14 17:59:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
23323
23324         * exceptions-ppc.c: more exceptions work.
23325
23326 Wed Apr 14 17:46:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
23327
23328         * mini.c: avoid reusing the same MonoInst on multiple trees: this is
23329         not allowed.
23330
23331 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
23332
23333         * inssel-x86.brg (reg): Add new rules for add, sub and mul that
23334         can use the memory directly.
23335
23336         * cpu-pentium.md: Update documentation from a post from Zoltan. 
23337
23338         add x86_add_membase, x86_sub_membase, x86_mul_membase
23339
23340 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
23341
23342         * mini-ppc.c: Remove unused definitions FLOAT_REGS and
23343         GENERAL_REGS they were also hardcoded for all PPC ports.
23344
23345         (add_general): Use PPC_NUM_REG_ARGS instead of GENERAL_REGS.
23346
23347         Remove hard-coded limit for floating point registers, use
23348         PPC_LAST_FPARG_REG instead in MONO_TYPE_R4 and MONO_TYPE_R8.
23349
23350         Notice that in MacOS X calling conventions you can fit a lot more
23351         floating point values in registers, so I should update the PInvoke
23352         test to excercise the passing of floating point values on the
23353         stack (currently broken).
23354         
23355 2004-04-06  Miguel de Icaza  <miguel@ximian.com>
23356
23357         * tramp-ppc.c (create_trampoline_code): Added
23358         JUMP_TRAMPOLINE_SIZE. 
23359         (ppc_magic_trampoline): Follow the pattern from
23360         x86_magic_trampoline: if code is set to zero, return. 
23361         (create_trampoline_code): Always pass MonoMethod to the jump
23362         trampoline, before it was passing a null.
23363         (mono_arch_create_jump_trampoline): Implement the jump stub, could
23364         share the code with mono_arch_create_jit_trampoline. 
23365
23366         * mini-ppc.c (mono_arch_output_basic_block): CEE_JMP opcode
23367         implemented.
23368         (mono_arch_patch_code): MONO_PATCH_INFO_METHOD_JUMP patch type
23369         implemented.  
23370
23371         * cpu-g4.md: Added length for jmp instruction, the worst case
23372         scenario is 92 bytes (4 mandatory bytes, potential 19 registers
23373         for save_lmf).
23374
23375 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
23376
23377         * aot.c (mono_compile_assembly): Add back unlink removed by mistake.
23378
23379 2004-04-07  Zoltan Varga  <vargaz@freemail.hu>
23380
23381         * mini.c: Only set bblock->real_offset when adding a new bblock, and
23382         before each IL instruction.
23383
23384         * mini.c (CEE_BOX): Fix warnings.
23385
23386 2004-04-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23387
23388         * mini.c: removed a few unused vars and extra whitespace.
23389
23390 2004-04-05 Ben Maurer  <bmaurer@users.sourceforge.net>
23391
23392         * inssel.brg (MONO_EMIT_BOUNDS_CHECK): a new macro to emit bounds
23393         checks.
23394         (MONO_EMIT_BOUNDS_CHECK_IMM): the above, but when you know the
23395         index.
23396         (OP_GETCHR): use the above
23397         (CEE_LDELEMA): use the above.
23398
23399         * inseel-x86.brg (MONO_EMIT_BOUNDS_CHECK): a faster and smaller
23400         version of the generic impl.
23401         (MONO_EMIT_BOUNDS_CHECK_IMM): the same
23402         (CEE_LDELEMA): use the above.
23403
23404 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
23405
23406         * inssel-long32.brg (CEE_CONV_OVF_I8): Sign extend the i4 value to i8.
23407         Fixes #56317.
23408
23409         * iltests.il: Added new regression test for #56317.
23410
23411 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
23412
23413         * mini-x86.c (mono_arch_setup_jit_tls_data): Use pthread_attr_get_np
23414         under NetBSD. Fixes #56450.
23415
23416         * liveness.c (update_gen_kill_set): Fix previous patch.
23417
23418 2004-04-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23419
23420         * mini-x86.h: SA_STACK defined as SA_ONSTACK. Fixed build under NetBSD.
23421
23422 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
23423
23424         * mini.c (mono_method_to_ir): Avoid handle_loaded_temps in
23425         ldsfld and ldsflda.
23426
23427         * inssel-sparc.brg: Add more optimizations.
23428
23429         * mini-sparc.c: Replace multiply/divide with shifts if possible.
23430
23431 2004-04-01  Martin Baulig  <martin@ximian.com>
23432
23433         * mini.c (handle_box): New static function; moved the
23434         implementation of CEE_BOX here.
23435         (mono_method_to_ir): Added `constrained_call' variable.
23436         (mono_method_to_ir:CEE_CONSTRAINED_): Set it.
23437         (mono_method_to_ir:CEE_CALL): If `constrained_call' is set, use
23438         mono_method_get_constrained() to get the method.
23439
23440 2004-04-01  Martin Baulig  <martin@ximian.com>
23441
23442         * mini.c (TYPE_PARAM_TO_TYPE, TYPE_PARAM_TO_CLASS): Removed.
23443         (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): Removed.
23444         (mono_method_to_ir): We don't need these macros anymore since
23445         mono_class_get_full() already takes care of it. 
23446
23447 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23448
23449         * aot.c: set aot_verbose to 0, fixed format string that caused sigsegv,
23450         use @function (as doesn't accept #function here) and check the return
23451         value of system and stop if fails.
23452
23453 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23454
23455         * mini.c: set the timeout to 2s when calling mono_domain_finalize.
23456
23457 2004-03-31  Zoltan Varga  <vargaz@freemail.hu>
23458
23459         * mini-ppc.c (mono_arch_patch_code): Fix ppc build.
23460
23461         * inssel-sparc.brg mini-sparc.c aot.c: Implement AOT support.
23462
23463         * inssel-long32.brg (OP_LNEG): Use ADC instead of ADD here. Fixes
23464         #56223.
23465
23466         * basic-long.cs: Add test for negation of Int64.MinValue.
23467
23468 2004-03-30  Zoltan Varga  <vargaz@freemail.hu>
23469
23470         * mini-sparc.c: Update status.
23471
23472         * mini-sparc.c tramp-sparc.c: Save lmf in trampolines.
23473
23474         * exceptions-sparc.c: Fix return value in filters.
23475
23476         * inssel-sparc.brg: Fix register allocation in some rules.
23477
23478 2004-03-28  Martin Baulig  <martin@ximian.com>
23479
23480         * mini.c (mmono_method_to_ir): In CEE_STELEM, do a handle_stobj()
23481         if neccessary.  
23482
23483 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
23484
23485         * mini-x86.c (mono_arch_patch_code): Fix warnings.
23486         
23487         * mini-x86.c (mono_arch_output_basic_block): Fix CEE_MUL_OVF_UN if 
23488         dreg is not EAX. Thanks to Willibard Krenn for spotting this. Also
23489         remove unused conv_u4 opcode.
23490
23491         * mini-x86.c: Remove valgrind workaround since it slows down things
23492         even when mono is not run under valgrind.
23493
23494 2004-03-26  Zoltan Varga  <vargaz@freemail.hu>
23495
23496         * mini-sparc.c: Update status.
23497
23498         * inssel-sparc.brg: Add some optimizations.
23499
23500         * inssel-sparc.brg mini-sparc.c: Rework branch instructions to allow
23501         future delay slot filling. Add support for varargs, tail calls and JMP.
23502
23503         * inssel.brg mini-ops.h mini.c: Use OP_REFANYTYPE instead of 
23504         CEE_REFANYTYPE, since CEE_REFANYTYPE needs a prefix to be unique.
23505
23506         * inssel.brg: Fix register allocation in OP_ARGLIST.
23507
23508         * inssel.brg: Fix warnings.
23509
23510 2004-03-25  Martin Baulig  <martin@ximian.com>
23511
23512         * mini.c (inflate_generic_field): Removed.
23513         (mini_get_method): Removed, use mono_get_method_full(),
23514         (mini_get_class): Removed, use mono_class_get_full().
23515         (mono_method_to_ir): Pass our generic context to
23516         mono_field_from_token().        
23517
23518 2004-03-25  Martin Baulig  <martin@ximian.com>
23519
23520         * mini.c (mini_get_class): Take a `MonoGenericContext *' instead
23521         of a `MonoMethod *'.
23522         (mini_get_method): Take a `MonoGenericContext *' instead
23523         of a `MonoMethod *'.
23524         (TYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_TYPE): mono_method_to_ir() has
23525         a new local variable called `generic_context' which holds the
23526         current `MonoGenericContext *'; use it to lookup things.
23527
23528 2004-03-24  Martin Baulig  <martin@ximian.com>
23529
23530         * mini.c (mini_get_class): New static method; if we're inside a
23531         generic instance, inflate the class if neccessary.
23532         (mono_method_to_ir): Use mini_get_class() instead of mono_class_get().
23533
23534 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
23535
23536         * iltests.il: New regression test for #55976.
23537
23538         * mini.c (mono_method_to_ir): Empty the stack in endfinally. Fixes
23539         #55976.
23540
23541 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
23542
23543         * exceptions-sparc.c (mono_sparc_handle_exception): Remove debugging
23544         output.
23545
23546 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
23547
23548         * liveness.c: Consider SSA stores as well as loads when making vars
23549         volatile.
23550
23551         * exceptions.cs: New regression tests for register allocation.
23552         
23553 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
23554
23555         * mini-ppc.c, tramp-ppc.c: Added lock for accessing the domain code manager.
23556         * mini.c: Removed domain lock from mono_jit_compile_method_with_opt. Use
23557           domain lock only to protect puntual access to data structures.
23558           Added access lock for sighash, jit_icall_hash_name, 
23559           jit_icall_hash_addr and domain->code_mp.
23560
23561 2004-03-20  Zoltan Varga  <vargaz@freemail.hu>
23562
23563         * driver.c: Print SIGSEGV handling method.
23564
23565         * mini-x86.c (mono_arch_free_jit_tls_data): Add missing ifdef.
23566
23567         * mini.c (setup_jit_tls_data): Handle case when this is called
23568         multiple times for a thread.
23569
23570         * mini-x86.c cpu-pentium.md: Fix floating point branch opcodes so fbxx 
23571         is different from fbxx_un. Fixes #54303. Also use constants instead of
23572         magic numbers in a lot of places.
23573
23574 2004-03-19  Zoltan Varga  <vargaz@freemail.hu>
23575
23576         * exceptions.cs: Fix cctor test when --regression is used.
23577
23578 Thu Mar 18 19:57:56 CET 2004 Paolo Molaro <lupus@ximian.com>
23579
23580         * mini-ppc.c, exceptions-ppc.c: basic exceptions support 
23581         for Linux/ppc.
23582
23583 Thu Mar 18 19:56:19 CET 2004 Paolo Molaro <lupus@ximian.com>
23584
23585         * inssel-ppc.brg: fixed register assignments for some rules.
23586
23587 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
23588
23589         * exceptions.cs: Add test for exceptions in static constructors.
23590
23591         * mini.c (mono_jit_compile_method_with_out): Move the calling of
23592         static constructors outside the domain lock. Fixes #55720.
23593
23594 2004-03-17  Martin Baulig  <martin@ximian.com>
23595
23596         * mini.c (get_generic_field_inst): Removed, this'll never happen.
23597         (inflate_generic_field): Take the `MonoMethod *' instead of the
23598         `MonoClass *' and added support for generic method.
23599         (mono_method_to_ir): In CEE_LDSFLD and CEE_STSFLD, assert we never
23600         have a `field->parent->gen_params', only inflate the field if it's
23601         an open constructed type.
23602
23603 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
23604
23605         * exceptions-x86.c (mono_arch_handle_exception): Allocate a new
23606         exception object instead of the preconstructed ones.
23607
23608 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23609
23610         * mini.c: reverted changed to sigsegv_signal_handler commited
23611         accidentally in the previous patch.
23612
23613 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23614
23615         * mini.c:
23616         (mono_method_to_ir): CEE_CALLVIRT, abort if no method. It hanged when
23617         running --aot with an old assembly.
23618
23619 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
23620
23621         * mini-sparc.c (mono_arch_instrument_epilog): Fix handling of floating
23622         point values.
23623
23624         * mini-sparc.c: Add support for v9 branches with prediction.
23625
23626 2004-03-15  Bernie Solomon  <bernard@ugsolutions.com>
23627
23628         * mini.c (mini_init): #warning is GNUC only
23629
23630         * mini-sparc.h: implement __builtin_frame_address
23631         and __builtin_return_address for Sun C compiler
23632
23633 2004-03-15  Zoltan Varga  <vargaz@freemail.hu>
23634
23635         * exceptions-sparc.c (mono_arch_has_unwind_info): Add missing function.
23636
23637 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
23638
23639         * basic-calls.cs: Add test for unaligned byref long argument passing.
23640
23641         * mini-ops.h: Add sparcv9 compare and branch instructions.
23642
23643         * inssel-sparc.brg mini-sparc.h mini-sparc.c cpu-sparc.md: Use some
23644         v9 instructions if we have a v9 cpu.
23645
23646         * mini-sparc.c (mono_arch_get_global_int_regs): Use unused input
23647         registers for global allocation.
23648
23649         * exceptions-sparc.c: Fixes.
23650         
23651 2004-03-11  Zoltan Varga  <vargaz@freemail.hu>
23652
23653         * liveness.c (mono_analyze_liveness): Optimized version.
23654
23655         * inssel-sparc.brg cpu-sparc.md: Ongoing sparc work.
23656
23657         * mini-sparc.h mini-sparc.c tramp-sparc.c exceptions-sparc.c: Ongoing
23658         sparc work.
23659
23660         * basic-float.cs basic-calls.cs: New regression tests.
23661
23662 2004-03-10  Zoltan Varga  <vargaz@freemail.hu>
23663
23664         * mini-x86.h: Define SIGSEGV_ON_ALTSTACK only if we have a working
23665         sigaltstack implementation.
23666
23667         * mini-x86.c (mono_arch_setup_jit_tls_data): Fix previous patch.
23668         
23669         * mini-x86.c (mono_arch_setup_jit_tls_data): Turn off the sigaltstack
23670         stuff if SIGSEGV_ON_ALTSTACK is not defined.
23671
23672 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
23673
23674         * mini.c: Fix warnings.
23675         
23676         * mini.c (mono_resolve_patch_target): New function which contains the
23677         arch independent part of the patching process.
23678
23679         * mini-x86.c (mono_arch_patch_code): Move arch independent parts of the
23680         patching code to a separate function.
23681
23682 2004-03-09  Bernie Solomon  <bernard@ugsolutions.com>
23683
23684         * mini.c (add_signal_handler): ifdef out on Windows
23685
23686 2004-03-08  Zoltan Varga  <vargaz@freemail.hu>
23687
23688         * mini-sparc.h mini-sparc.c inssel-sparc.brg exceptions-sparc.c 
23689         cpu-sparc.md: Add exception handling support + other fixes.
23690
23691         * driver.c: Print --help output to stdout. Fixes #55261. Also fix
23692         typed GC detection in --version.
23693
23694         * basic.cs exceptions.cs: New regression tests.
23695
23696         * mini.h mini-x86.h mini-ppc.h: Add MonoCompileArch structure where
23697         the arch specific code can store data during a compilation.
23698
23699         * mini-ops.h: Add OP_SETFRET.
23700
23701         * mini.c (mini_get_ldelema_ins): Instead of allways calling the same
23702         function, register a separate icall for each arity, so the icalls can
23703         get a wrapper.
23704         
23705         * mini.c (mono_print_tree): Print negative offsets in a more readable
23706         form.
23707         
23708         * mini.c: Make signal handling work on sparc.
23709         
23710         * mini.c (mini_init): Add emulation for lconv_to_r8_un.
23711
23712         * inssel-long32.brg: Fix OP_LSUB_OVF_UN rule.
23713
23714         * jit-icalls.c: Emulate truncl by aintl on solaris.
23715
23716         * jit-icalls.c (mono_lconv_to_r8_un): New icall emulation function.
23717
23718 2004-03-05  Zoltan Varga  <vargaz@freemail.hu>
23719
23720         * mini.c (mini_init): fconv_to_ovf can raise exceptions.
23721
23722 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
23723
23724         * mini.c: In CEE_ISINST and CEE_CASTCLASS, if the type is an interface or
23725         a MarshalByRef type, inline a method that performs the check, taking into
23726         account that the object can be a proxy. Also implemented tow new opcodes:
23727         CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
23728         * inssel.brg: Implemented two new opcodes, mini-ops.h: OP_CISINST and 
23729         OP_CCASTCLASS, which implement CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
23730
23731 Tue Mar 2 17:23:48 CET 2004 Paolo Molaro <lupus@ximian.com>
23732
23733         * mini-ppc.c: if a relative branch displacement is too big
23734         but it points to and area reachable with an absolute branch, 
23735         avoid the thunks.
23736
23737 Tue Mar 2 16:59:40 CET 2004 Paolo Molaro <lupus@ximian.com>
23738
23739         * mini.c: optimize small copies in cpblk.
23740
23741 2004-03-01  Zoltan Varga  <vargaz@freemail.hu>
23742
23743         * basic-calls.cs basic-float.cs: New regression tests.
23744
23745         * mini-sparc.c inssel-sparc.brg mini-ops.h: Access local variables at 
23746         negative offsets from %fp. Implement localloc. Fix local register 
23747         allocation. Fix the case when the this argument needs to be saved to
23748         the stack. Implement some missing opcodes.
23749
23750 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
23751
23752         * mini.c (mini_method_compile): Reenable global regalloc in methods
23753         with exception handlers.
23754
23755         * linear-scan.c (mono_varlist_sort): Fix warning.
23756
23757         * linear-scan.c (mono_linear_scan): Fix computation of used_regs.
23758
23759         * mini-x86.c (mono_arch_regalloc_cost): Reenable precise computation of
23760         regalloc costs.
23761
23762         * liveness.c: Make all variables uses in exception clauses volatile, to
23763         prevent them from being allocated to registers. Fixes #42136.
23764
23765 2004-02-25  Zoltan Varga  <vargaz@freemail.hu>
23766
23767         * mini-x86.c (mono_arch_regalloc_cost): Revert this change since it
23768         causes regressions.
23769
23770         * mini.h linear-scan.c mini-x86.c mini-sparc.c mini-ppc.c: Add 'cfg'
23771         argument to mono_arch_regalloc_cost.
23772
23773         * mini-x86.c (mono_arch_regalloc_cost): Compute regalloc costs 
23774         precisely.
23775
23776 2004-02-24  Zoltan Varga  <vargaz@freemail.hu>
23777
23778         * mini.h mini-x86.c mini-ppc.c mini-sparc.c linear-scan.c: 
23779         Make the cost of allocating a variable to a register arch dependent.
23780
23781         * basic-calls.cs: Fix compilation of tests.
23782         
23783         * mini.h mini.c tramp-x86.c mini-x86.c: Add mono_running_on_valgrind ()
23784         helper function to cut back on the number of #ifdefs needed.
23785
23786         * mini-ppc.c: Fix compilation.
23787
23788         * basic-calls.cs: New regression tests.
23789
23790         * mini-sparc.c (mono_sparc_is_virtual_call): New helper function.
23791
23792         * tramp-sparc.c (create_specific_trampoline): Use g5 register instead
23793         of l0 since that is callee saved.
23794
23795         * tramp-sparc.c (sparc_magic_trampoline): Apply unbox trampoline only
23796         to virtual calls.
23797
23798         * mini-sparc.c: Ongoing work + flag virtual calls with a special kind 
23799         of delay instruction.
23800
23801         * inssel.brg (OP_CHECK_THIS): Set tree->sreg1 and dreg correctly.
23802
23803         * mini.h (MonoCallInst): Add 'virtual' flag.
23804
23805         * inssel.brg (mini_emit_virtual_call): Set 'virtual' flag.
23806
23807 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
23808
23809         * *.cs: New regression tests.
23810
23811         * mini-sparc.c inssel-sparc.brg: Update after latest changes. Ongoing sparc 
23812         work.
23813
23814         * mini.c (mono_runtime_install_handlers): Fix build.
23815
23816         * mini.h (MonoJitTlsData): Add 'stack_size', 'signal_stack' and
23817         'signal_stack_size' members.
23818
23819         * mini.h mini.c mini-x86.h mini-x86.c: Run sigsegv handlers on an 
23820         alternate signal stack.
23821
23822         * exceptions-x86.c: Add stack overflow handling.
23823
23824         * mini.h mini.c mini-x86.c mini-ppc.c trace.h trace.c: Move tracing 
23825         functions to arch independent code.
23826
23827         * mini.c (mono_print_tree): Print more detailed info for load_membase
23828         opcodes.
23829         
23830 2004-02-23  Martin Baulig  <martin@ximian.com>
23831
23832         * mini.c (mini_get_method): Set `gmethod->generic_inst'.
23833
23834 Sun Feb 22 22:25:19 CET 2004 Paolo Molaro <lupus@ximian.com>
23835
23836         * mini-x86.c: fixed reg allocation for div/rem.
23837
23838 2004-02-22  Miguel de Icaza  <miguel@ximian.com>
23839
23840         * driver.c (mono_main): Report some configuratio options on --version.
23841
23842 Fri Feb 20 11:01:44 PST 2004 Paolo Molaro <lupus@ximian.com>
23843
23844         * mini-ppc.c: fixed clt.un, cgt.un. Optimized calls to functions
23845         low in the address space. Correctly flush memory in thunks where we
23846         output native code.
23847
23848 2004-02-20  Martin Baulig  <martin@ximian.com>
23849
23850         * mini.c (mini_get_method): New static method; inflate all generic
23851         methods and methods in open generic instances.
23852         (mono_method_to_ir): Use mini_get_method() instead of mono_get_method().
23853         (ret_type_to_call_opcode): Added support for MONO_TYPE_GENERICINST.
23854
23855 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
23856
23857         * mini-sparc.c (mono_arch_patch_code): Update after domain->code_mp changes.
23858
23859         * tramp-sparc.c (mono_arch_create_jump_trampoline): Set ji->method.
23860
23861 2004-02-19  Bernie Solomon  <bernard@ugsolutions.com>
23862
23863         * helpers.c (mono_disassemble_code): use Sun's dis if not using gcc
23864
23865         * mini-sparc.c (flushi mono_arch_output_basic_block): make
23866         it compile using Sun's compiler.
23867
23868 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
23869
23870         * 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.
23871
23872         * basic-calls.cs basic-float.cs basic-long.cs objects.cs: New regression tests.
23873
23874 Tue Feb 17 21:41:20 CET 2004 Paolo Molaro <lupus@ximian.com>
23875
23876         * aot.c, mini-x86.c, mini.c: use the code manager instead of a mempool to hold native
23877         code.
23878         * mini-ppc.c: handle calls outside of the allowed range with thunks
23879         allocated using the code manager.
23880         * tramp-ppc.c: use the code manager to hold generated native code.
23881         Fixed the magic trampoline to just patch vtable entries.
23882
23883 2004-02-17  Zoltan Varga  <vargaz@freemail.hu>
23884
23885         * inssel.brg inssel-x86.brg: Move call(immediate) rules to the platform
23886         independent file.
23887
23888 2004-02-16  Zoltan Varga  <vargaz@freemail.hu>
23889
23890         * tramp-ppc.c (mono_arch_create_jump_trampoline): Fix compilation on
23891         PPC.
23892
23893         * mini-x86.c: Call mono_arch_get_lmf_addr instead of mono_get_lmf_addr
23894         if we have a working __thread implementation.
23895
23896         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Remove 
23897         OP_CALL_IMM opcodes, since the CALL opcodes handles immediates as well.
23898
23899 2004-02-15  Zoltan Varga  <vargaz@freemail.hu>
23900
23901         * mini-x86.c: Fix compilation under gcc 2.
23902         
23903 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
23904
23905         * mini.c (mono_codegen): Avoid infinite loop when an icall wrapper
23906         contains a call to the wrapped function.
23907
23908         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Add 
23909         OP_<CALL>_IMM opcodes, and use them under X86.
23910         
23911         * mini.c (mono_jit_find_compiled_method): Fix warning.
23912
23913         * cpu-pentium.md: Fix length of opcodes which use x86_alu_membase_imm.
23914
23915         * jit-icalls.c (mono_ldftn_nosync): New JIT icall.
23916
23917         * tramp-x86.c (mono_arch_create_jump_trampoline): Move arch independent
23918         functionality to mini.c.
23919
23920         * mini.c (mono_create_jump_trampoline): New function to create a jump
23921         trampoline. Return a compiled method instead of a trampoline if it
23922         exists. Add a cache for jump trampolines.
23923
23924         * mini.c (mono_jit_find_compiled_method): New function to return a
23925         compiled method if it exists.
23926
23927         * mini-x86.c: Call mono_create_jump_trampoline instead of 
23928         mono_arch_create_jit_trampoline.
23929
23930         * jit-icalls.c (mono_ldftn): Do not compile the method. Instead, return
23931         a jump trampoline. Fixes #52092.
23932         
23933 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
23934
23935         * debug-mini.c (mono_init_debugger): Remove call to mono_verify_corlib,
23936         which is not up-to-date. Add check_corlib_version () instead.
23937
23938         * mini.c (mini_init): Call mono_thread_attach () so embedders do not 
23939         have to call it.
23940         
23941         * mini.c (mono_runtime_install_handlers): Remove check for valgrind
23942         since newer valgrind versions do not need it.
23943
23944         * mini.c (mono_jit_compile_method_with_opt): New helper function to
23945         compile a method with a given set of optimizations.
23946
23947         * mini.c: Compile icall wrappers on-demand instead of at startup.
23948
23949         * mini-sparc.c mini-ppc.c: Call mono_icall_get_wrapper to obtain the
23950         wrapper for an icall.
23951
23952 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
23953
23954         * mini.c (mono_method_to_ir): Handle switch with non-empty stack. Fixes
23955         #54063.
23956
23957         * iltests.il: Add test for non-empty stack before switch instruction.
23958
23959 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
23960
23961         * mini.c: Add support for new stringbuilder marshalling conventions.
23962
23963         * mini.c (mono_method_to_ir): Fix stack management of generic CEE_BOX.
23964
23965 2004-02-01  Martin Baulig  <martin@ximian.com>
23966
23967         * mini.c (MTYPE_PARAM_TO_TYPE): Method type arguments are stored
23968         in `ginst->mtype_argv'.
23969
23970 2004-01-31  Miguel de Icaza  <miguel@ximian.com>
23971
23972         * mini.c: Add comments, replace CEE_XXX+128 with OP_XXX to
23973         facilitate grepping.
23974
23975 Wed Jan 28 14:04:58 CET 2004 Paolo Molaro <lupus@ximian.com>
23976
23977         * mini.c: fixed buglet in initobj generic implementation for references.
23978
23979 Fri Jan 23 16:10:44 EST 2004 Paolo Molaro <lupus@ximian.com>
23980
23981         * Makefile.am: make the version script conditional.
23982         * jit-icalls.c: handle missing truncl().
23983
23984 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
23985
23986         * exceptions.cs: Add more tests for double->int conversion.
23987
23988         * jit-icalls.c (mono_fconv_ovf_i8): Call truncl before comparison, so
23989         we don't throw exceptions when converting 1.1 to a long. Fixes #53250.
23990
23991 Fri Jan 23 17:12:08 CET 2004 Paolo Molaro <lupus@ximian.com>
23992
23993         * driver.c: make --verbose --version emit an error
23994         if the loaded corlib doesn't match the runtime version.
23995
23996 Mon Jan 19 17:44:50 CET 2004 Paolo Molaro <lupus@ximian.com>
23997
23998         * mini-ppc.h: export ppc_patch().
23999         * mini-ppc.c: call convention fixes. Added assert in ppc_patch().
24000         * tramp-ppc.c: call convention fixes: Linux/PPC support should be
24001         on par or better than on MacOSX.
24002
24003 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
24004
24005         * mini.c tramp-x86.c tramp-sparc.c: Updated after changes to
24006         mono_lookup_pinvoke_call.
24007
24008         * mini-x86.c: Under windows, the default pinvoke calling convention is
24009         stdcall. Fixes #52834.
24010
24011         * mini.c (optimize_branches): Add an upper bound to the number of
24012         iterations to prevent infinite loops on strange loops. Fixes #53003.
24013
24014 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
24015
24016         * inssel.brg: Add vectors<->one dimensional array checking to CASTCLASS
24017         and ISINST. Fixes #52093.
24018
24019         * objects.cs (test_0_vector_array_cast): New tests.
24020         
24021 2004-01-15  Zoltan Varga  <vargaz@freemail.hu>
24022
24023         * jit-icalls.c (helper_stelem_ref_check): New jit icall for array type
24024         checking in Array.Set ().
24025
24026         * mini.c (method_to_ir): Add array type checking in Array.Set (). Fixes
24027         #52590.
24028
24029         * object.cs (test_0_multi_array_cast): New regression test.
24030
24031 Thu Jan 15 16:30:24 CET 2004 Paolo Molaro <lupus@ximian.com>
24032
24033         * exceptions-ppc.c: fix build on Linux/PPC.
24034
24035 2004-01-14  Zoltan Varga  <vargaz@freemail.hu>
24036
24037         * tramp-x86.c (x86_magic_trampoline): Disable code patching when
24038         running under valgrind.
24039         (x86_magic_trampoline): Fix build bustage.
24040
24041         * debug-mini.c: Modify the debug info serialize/deserialize code so it handles
24042         negative values as well. This is needed for the encoding of the line number
24043         info, since sometimes the line numbers are not in increasing order.
24044
24045 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
24046
24047         * cpu-pentium.md (localloc): Increase the size of the localloc 
24048         instruction since it is a loop under Win32.
24049
24050         * debug-mini.c (record_line_number): Get rid of unneccesary memory
24051         allocation.
24052
24053 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
24054
24055         * exceptions-ppc.c exceptions-x86.c exceptions-sparc.c 
24056         tramp-x86.c tramp-ppc.c tramp-sparc.c: Applied patch from 
24057         Max Horn (max@quendi.de). Fix file names in comments.
24058
24059 2004-01-03  Zoltan Varga  <vargaz@freemail.hu>
24060
24061         * ssa.c (mono_ssa_rename_vars): Allocate new_stack on the heap to
24062         avoid stack overflow.
24063         (replace_usage): Avoid uninitialized variable warnings.
24064
24065         * mini.c (mono_method_to_ir): Avoid disabling SSA for array operations
24066         and taking the address of valuetype variables.
24067
24068 2004-01-03  Patrik Torstensson
24069
24070         * mini-x86.c: renamed fpflags to flags in RegTrack, going to be used
24071         for other purposes than FP later on.
24072
24073 2004-01-02  Zoltan Varga  <vargaz@freemail.hu>
24074
24075         * mini.c (mono_method_to_ir): Prevent register allocation for arguments
24076         of tail calls.
24077
24078 Fri Jan 2 13:37:25 CET 2004 Paolo Molaro <lupus@ximian.com>
24079
24080         * mini-ops.h, mini.c, inssel.brg: Object.GetType () speedup.
24081
24082 2003-12-30  Patrik Torstensson <p@rxc.se>
24083
24084         * mini-x86.h: Decreased number of availiable fp regs.
24085         Solves corner cases with FP spilling.
24086
24087 2003-12-23  Patrik Torstensson <p@rxc.se>
24088
24089         * mini-x86.c, mini-ops.h, cpu-pentium.md: Added support
24090         for floating point stack tracking / spilling on x86. 
24091         Fixes bug #49012.
24092         
24093         * basic-float.cs: added float mul overflow test.
24094
24095 2003-12-23  Zoltan Varga  <vargaz@freemail.hu>
24096
24097         * mini.c (mono_method_to_ir): Add workaround for bug #51126.
24098
24099 Sun Dec 21 19:53:16 CET 2003 Paolo Molaro <lupus@ximian.com>
24100
24101         * mini.h, mini-ppc.c, mini-ppc.h: small cleanups and
24102         supports for cond branches that overflow the immediate
24103         overflow offset. mcs can compile simple programs.
24104
24105 Fri Dec 19 21:17:16 CET 2003 Paolo Molaro <lupus@ximian.com>
24106
24107         * exceptions-ppc.c: exception handling support wip:
24108         finally handlers get run on exception.
24109
24110 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
24111
24112         * aot.c (mono_aot_get_method_inner): Avoid loading AOT code while 
24113         profiling.
24114
24115 Fri Dec 19 17:58:28 CET 2003 Paolo Molaro <lupus@ximian.com>
24116
24117         * cpu-g4.md, mini-ppc.c, exceptions-ppc.c, mini-ppc.h:
24118         initial support for stack walking and unwinding.
24119
24120 2003-12-18  Zoltan Varga  <vargaz@freemail.hu>
24121
24122         * driver.c (mono_main): Make corlib-out-of-sync message more 
24123         descriptive. Also remove verify_corlib call.
24124
24125 Wed Dec 17 15:31:41 CET 2003 Paolo Molaro <lupus@ximian.com>
24126
24127         * mini.c: make CEE_NEWARR calls and other emulated opcodes 
24128         not overlap with other call's arguments, too.
24129
24130 Wed Dec 17 12:49:23 CET 2003 Paolo Molaro <lupus@ximian.com>
24131
24132         * mini.h, mini.c, mini-ppc.c, mini-sparc.c, mini-x86.c: 
24133         move to arch-specific code the choice of arch-specific
24134         intrinsics (from Laurent Morichetti (l_m@pacbell.net)).
24135         * mini.c: ensure emulation calls will not interleave
24136         with other calls.
24137
24138 Wed Dec 17 12:27:26 CET 2003 Paolo Molaro <lupus@ximian.com>
24139
24140         * tramp-ppc.c, basic-calls.cs: rework trampolines so that
24141         the magic trampoline stack frame is dropped before executing
24142         the new method.
24143
24144 Mon Dec 15 18:13:57 CET 2003 Paolo Molaro <lupus@ximian.com>
24145
24146         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed some opcode lengths
24147         and integer to fp conversions. Added support for overflowing
24148         arguments on the stack. Reserve a couple more registers as temps.
24149         Added support for aot compilation (as output still needs to be
24150         tweaked, though).
24151
24152 Sat Dec 13 17:49:10 CET 2003 Paolo Molaro <lupus@ximian.com>
24153
24154         * mini-ppc.c, basic-long.cs: fix jumps to known labels.
24155         Don't overwrite return register in some corner cases.
24156
24157 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
24158
24159         * mini.h mini.c driver.c mini-x86.c mini-ppc.c aot.c: Do not run
24160         static constructors when AOT compiling.
24161
24162         * driver.c (mono_main): Call mono_check_corlib_version.
24163
24164 Sat Dec 13 10:31:12 CET 2003 Paolo Molaro <lupus@ximian.com>
24165
24166         * cpu-g4.md, basic.cs: fixed div target register.
24167
24168 Sat Dec 13 09:45:56 CET 2003 Paolo Molaro <lupus@ximian.com>
24169
24170         * mini-ppc.c, basic.cs: shl_imm fix with test.
24171
24172 Fri Dec 12 21:25:14 CET 2003 Paolo Molaro <lupus@ximian.com>
24173
24174         * inssel-ppc.brg, mini-ppc.h, mini-ppc.c: support for passing 
24175         structures by value. Misc fixes.
24176         * objects.cs: more tests.
24177
24178 Fri Dec 12 10:11:49 CET 2003 Paolo Molaro <lupus@ximian.com>
24179
24180         * mini-ppc.c: lconv.ovf.i implemented.
24181
24182 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24183
24184         * mini.c:
24185         (mini_init): don't error out if someone already called g_thread_init.
24186
24187 Tue Dec 9 17:27:14 CET 2003 Paolo Molaro <lupus@ximian.com>
24188
24189         * exceptions-x86.c, exceptions-ppc.c: allow the exception object
24190         to be any type per the spec. Fix abnormal memory usage when
24191         the same object is repeatedly thrown.
24192
24193 Tue Dec 9 15:39:54 CET 2003 Paolo Molaro <lupus@ximian.com>
24194
24195         * mini.c: check for overruns in IL code.
24196
24197 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
24198
24199         * TODO: Add/remove some todo entries.
24200
24201 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
24202
24203         * driver.c (mono_main): Call mono_verify_corlib.
24204
24205 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
24206
24207         * inssel.brg: In CEE_ISINST and CEE_CASTCLASS, removed check for proxy. 
24208         This has been moved to mini.c
24209         * mini.c: in mono_method_to_ir, CEE_ISINST and CEE_CASTCLASS cases, if the
24210         type being casted is marshalbyref it could be a proxy, so instead of
24211         emitting the type check code, emit a call to a runtime method that will
24212         perform the check by calling CanCastTo if needed.
24213
24214 2003-12-06  Zoltan Varga  <vargaz@freemail.hu>
24215
24216         * mini-x86.c (mono_arch_emit_prolog): Fix stack space allocation for
24217         methods with large stack frames under Win32.
24218
24219 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
24220
24221         * Makefile.am: Distribute regression tests.
24222
24223         * mini-x86.c (mono_arch_get_allocatable_int_vars): Sort the var list
24224         at the end instead of inserting each variable into the sorted list.
24225
24226         * linear-scan.c (mono_varlist_sort): New helper function.
24227         
24228 Wed Dec 3 20:46:28 CET 2003 Paolo Molaro <lupus@ximian.com>
24229
24230         * mini.c: ensure arguments and locals are within bounds.
24231
24232 Wed Dec 3 17:59:10 CET 2003 Paolo Molaro <lupus@ximian.com>
24233
24234         * mini-ppc.c, cpu-g4.md, basic.cs, basic-long.cs: more tests and 
24235         related fixes.
24236
24237 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
24238
24239         * mini.c (mono_cprop_copy_values): Fix crash.
24240
24241         * aot.c: Set verbosity back to 0.
24242         
24243 Wed Dec 3 15:42:27 CET 2003 Paolo Molaro <lupus@ximian.com>
24244
24245         * regalloc.c: complete memory leak fix by Laurent Morichetti
24246         (l_m@pacbell.net).
24247
24248 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
24249
24250         * driver.c (main_thread_handler): Revert the previous patch.
24251
24252         * tramp-x86.c (x86_class_init_trampoline): Avoid patching when running
24253         under valgrind.
24254
24255         * mini-x86.c (mono_arch_local_regalloc): Do not allocate transient
24256         memory from the memory pool.
24257
24258         * driver.c (main_thread_handler): Turn on all optimizations when
24259         --aot is used.
24260
24261         * mini.c (mono_find_jit_opcode_emulation): Turn emul_opcode_hash into
24262         an array for better performance.
24263
24264         * regalloc.c (mono_regstate_assign): Fix memory leak.
24265
24266         * debug-mini.c (mono_debug_serialize_debug_info): New function to
24267         serialize the debug info.
24268
24269         * debug-mini.c (mono_debug_add_aot_method): New function to load the
24270         debug info from the serialized representation.
24271
24272         * aot.c: Save debug info into the generated file and load it when 
24273         loading a method.
24274
24275         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
24276
24277 Mon Dec 1 16:54:05 CET 2003 Paolo Molaro <lupus@ximian.com>
24278
24279         * mini-ppc.c, tramp-ppc.c: save FP arguments in the trampoline.
24280         More FP-related fixes.
24281
24282 Sun Nov 30 19:13:52 CET 2003 Paolo Molaro <lupus@ximian.com>
24283
24284         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed finally handlers
24285         and register allocation buglet. Hello world now runs.
24286
24287 Fri Nov 28 23:03:05 CET 2003 Paolo Molaro <lupus@ximian.com>
24288
24289         * cpu-g4.md, inssel-ppc.brg, mini-ppc.c: better long return support.
24290         * tramp-ppc.c: fixed class init trampoline.
24291         * inssel-ppc.brg, mini.c, jit-icalls.c, mini-ppc.h: more emulation.
24292
24293 Fri Nov 28 16:36:29 CET 2003 Paolo Molaro <lupus@ximian.com>
24294
24295         * cpu-g4.md, inssel-ppc.brg, jit-icalls.c, mini-ppc.c, mini-ppc.h,
24296         mini.c: more ppc changes/fixes.
24297
24298 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
24299
24300         * mini.c (mono_method_to_ir): Fix tail calls with valuetype arguments.
24301         Also optimize the case when the arguments are the same in the caller 
24302         and in the callee.
24303
24304         * iltests.il: Add tests for tail calls with valuetype arguments.
24305
24306 Thu Nov 27 21:06:37 CET 2003 Paolo Molaro <lupus@ximian.com>
24307
24308         * mini-ppc.c: fixes for struct return type.
24309
24310 Thu Nov 27 19:02:07 CET 2003 Paolo Molaro <lupus@ximian.com>
24311
24312         * mini.h, mini.c, mini-x86.c, mini-ppc.c, mini-sparc.c: move 
24313         mono_spillvar_offset() to arch-specific code.
24314
24315 Thu Nov 27 18:30:42 CET 2003 Paolo Molaro <lupus@ximian.com>
24316
24317         * mini-ppc.h, mini-ppc.c: handle some different ABI call convention issues.
24318
24319 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
24320
24321         * exceptions-x86.c: Fix stack space leaks.
24322         
24323         * exceptions-x86.c (mono_arch_find_jit_info): Restore callee saved
24324         registers from the lmf if the method has save_lmf set.
24325
24326 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
24327
24328         * tramp-x86.c (x86_magic_trampoline): Avoid patching in the addresses
24329         of icall wrappers into InvokeInDomain, since these are now per-domain.
24330
24331 Wed Nov 26 20:15:04 CET 2003 Paolo Molaro <lupus@ximian.com>
24332
24333         * mini-ppc.h, mini-x86.h, mini.c, inssel-ppc.brg, jit-icalls.c:
24334         make some opcode emulation and intrinsic ops enabled/disabled 
24335         according to the architecture. More fixes.
24336
24337 Wed Nov 26 19:59:09 CET 2003 Paolo Molaro <lupus@ximian.com>
24338
24339         * mini-ppc.c, mini-sparc.c, cpu-g4.md: more bug fixes.
24340
24341 Wed Nov 26 19:18:29 CET 2003 Paolo Molaro <lupus@ximian.com>
24342
24343         * mini.h, inssel.brg, mini-x86.c, mini-ppc.c, mini-sparc.c: move
24344         arch-specific handling for 'this' and struct return type to
24345         arch-specific code.
24346
24347 2003-11-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24348
24349         * aot.c: prevent divide by zero error when reporting (it happened with
24350         Accessibility.dll).
24351
24352 2003-11-25  Zoltan Varga  <vargaz@freemail.hu>
24353
24354         * mini.h (inst_switch): Remove unused macro.
24355
24356 2003-11-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24357
24358         * aot.c:
24359         (load_aot_module): free 'info->methods' and 'info' properly. No more
24360         "free(): invalid pointer blah" messages when you have an old aot
24361         compiled assembly.
24362
24363 2003-11-21  Lluis Sanchez Gual <lluis@ximian.com>
24364
24365         * jit-icalls.c, mini.c: Added support for context static fields.
24366
24367 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
24368
24369         * mini.c (mono_method_blittable): Methods which set LastError are not 
24370         blittable either. Fixes #51108.
24371         
24372 Tue Nov 18 16:41:37 CET 2003 Paolo Molaro <lupus@ximian.com>
24373
24374         * mini.c: flush icache.
24375         * cpu-g4.md, mini-ppc.c, inssel.brg: more fixes. Trace support.
24376
24377 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
24378
24379         * mini.c (mono_type_blittable): OBJECT is not blittable. Fixes #47842.
24380
24381 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
24382
24383         * tramp-x86.c (x86_class_init_trampoline): Make code patching thread
24384         safe on IA32.
24385
24386         * mini-x86.c (mono_arch_call_opcode): Disable AOT for methods with 
24387         vararg calls.
24388
24389         * inssel.brg (CEE_MKREFANY): Fix AOT case.
24390
24391 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
24392
24393         * mini-x86.c (mono_arch_local_regalloc): Fix regalloc for div 
24394         instruction when the result is discarded.
24395
24396         * iltests.il (test_0_div_regalloc): New regression test.
24397
24398         * arrays.cs: Fix compilation error.
24399
24400 Fri Nov 14 21:34:06 CET 2003 Paolo Molaro <lupus@ximian.com>
24401
24402         * inssel-x86.brg, inssel-float.brg, mini-ops.h: move x86-specific
24403         float rules to inssel-x86.brg: sane architectures with FP registers
24404         don't need to implement these rules.
24405
24406 Fri Nov 14 20:52:12 CET 2003 Paolo Molaro <lupus@ximian.com>
24407
24408         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: updates and fixes to the ppc port.
24409
24410 Fri Nov 14 17:58:27 CET 2003 Paolo Molaro <lupus@ximian.com>
24411
24412         * mini.h, inssel-long32.brg: fixed endianess issues in int64
24413         implementation of 32 bit systems.
24414
24415 Thu Nov 13 16:14:41 CET 2003 Paolo Molaro <lupus@ximian.com>
24416
24417         * exceptions-ppc.c: fix build on Linux/ppc from Jeroen@xs4all.nl
24418         (Jeroen Zwartepoorte).
24419
24420 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
24421
24422         * mini.c (mono_method_to_ir): Use CEE_JMP only if the signature of
24423         the caller and the callee matches.
24424         
24425         * mini.c (mono_method_to_ir): Add comment.
24426
24427         * mini-x86.c (mono_arch_output_basic_block): Use mono_signbit, since
24428         signbit is missing on some platforms.
24429
24430 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
24431
24432         * mini.h (mono_arch_setup_jit_tls_data): New arch specific function.
24433
24434         * mini.c (setup_jit_tls_data): Call the new function.
24435         
24436         * mini-x86.c mini-ppc.c mini-sparc.c: Define the new function.
24437
24438         * mini-x86.c: Add experimental support for fast access to the lmf
24439         structure under NPTL/Linux 2.6.x.
24440
24441 2003-11-06  Martin Baulig  <martin@ximian.com>
24442
24443         * ldscript: Make `GC_push_all_stack', `GC_start_blocking',
24444         `GC_end_blocking' and 'gc_thread_vtable' public; they're used by
24445         the debugger.
24446
24447 2003-11-02  Martin Baulig  <martin@ximian.com>
24448
24449         * mini.c (inflate_generic_field): New static method.
24450         (mono_method_to_ir): In CEE_LDFLD and CEE_LDSFLD: if we're a
24451         generic instance and the field is declared in a generic type, call
24452         inflate_generic_field() to inflate it.  Fixes gen-28.cs.
24453
24454 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
24455
24456         * mini.h mini.c (mono_method_same_domain): New function to return
24457         whenever the caller and the callee are in the same domain.
24458
24459         * tramp-x86.c (x86_magic_trampoline): Use the new function.     
24460
24461 2003-10-30  Martin Baulig  <martin@ximian.com>
24462
24463         * mini.c (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): New macros;
24464         similar to TYPE_PARAM_TO_TYPE and TYPE_PARAM_TO_CLASS, but for
24465         method parameters.
24466         (mono_method_to_ir): Added support for MONO_TYPE_MVAR; similar to
24467         MONO_TYPE_VAR, we the actual types from MTYPE_PARAM_TO_CLASS(). 
24468
24469 2003-10-29  Zoltan Varga  <vargaz@freemail.hu>
24470
24471         * mini.c mini-ops.h inssel.brg: Implement undeniable exception 
24472         propagation.
24473
24474         * mini.c (sigusr1_signal_handler): Move creation of the thread abort
24475         object here, so it is in the correct appdomain etc.
24476
24477 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
24478
24479         * mini.c (mono_jit_compile_method_inner): Lookup icalls here if not
24480         already done.
24481         (mono_method_to_ir): Avoid freeing the type created returned from
24482         mono_type_create_from_typespec, since it is put into an internal cache
24483         by the function. Fixes pointer.exe.
24484
24485         * mini.c tramp-x86.c tramp-sparc.c tramp-ppc.c: Use the normal 
24486         trampolines for icalls and pinvokes as well. Fixes #33569.
24487
24488 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
24489
24490         * mini.c: Update after appdomain changes.
24491
24492         * mini.c (mono_jit_compile_method_inner): Allways compile native
24493         method wrappers in the root domain, since there can only be one
24494         instance of them, whose address is stored in method->info.
24495
24496 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
24497
24498         * mini.c (mono_runtime_install_handlers): Get rid of the MONO_VALGRIND
24499         environment variable. Instead detect automatically whenever running
24500         under valgrind using the magic macro RUNNING_ON_VALGRIND from
24501         valgrind.h.
24502
24503 2003-10-16  Miguel de Icaza  <miguel@ximian.com>
24504
24505         * trace.c, trace.h: New files that implement the new trace option
24506         parsing. 
24507
24508         * driver.c: Document new --trace options.
24509
24510         * exceptions-ppc.c, exceptions-x86.c, mini-ppc.c, mini-sparc.c,
24511         mini-x86.c: Apply:
24512
24513         -       if (mono_jit_trace_calls)
24514         +       if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
24515
24516         * mini.h: prototypes.
24517         
24518 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
24519
24520         * mini.c (mono_method_to_ir): Fix initialization of typedbyref locals.
24521
24522         * mini.c inssel.brg: Implement typedefbyref opcodes.
24523
24524         * mini.c (mono_jit_compile_method): Remove unused local variable.
24525
24526         * mini.c (mono_jit_compile_method_inner): Ditto.
24527         
24528 2003-10-12  Zoltan Varga  <vargaz@freemail.hu>
24529
24530         * tramp-x86.c (x86_class_init_trampoline): Fix build.
24531         
24532         * tramp-x86.c (x86_class_init_trampoline): Thread safety fixes.
24533
24534 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
24535
24536         * mini.c (mono_no_aot): Remove unused global variable.
24537
24538         * mini.c: Thread safety fixes.
24539
24540 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
24541
24542         * mini.c (mono_create_class_init_trampoline): Add a lock around
24543         class_init_hash_addr.
24544
24545         * arrays.cs (test_0_newarr_emulation): Add new regression test for
24546         #30073.
24547
24548         * mini.c: Decompose the NEWARR instruction before decomposing its
24549         arguments. Fixes #30073.
24550
24551 2003-10-08  Zoltan Varga  <vargaz@freemail.hu>
24552
24553         * mini-x86.c (mono_arch_emit_epilog): Add support for stdcall calling
24554         convention.
24555
24556 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
24557
24558         * mini.c (mono_method_to_ir): Allow wrapper data for CEE_LDELEMA.
24559
24560         * inssel-x86.brg (OP_LOCALLOC): Fix register assignment for localloc.
24561
24562         * driver.c: Add support for compiling icall wrappers to --compile.
24563
24564 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
24565
24566         * inssel.brg: The empty value in class->interface_offsets is -1, not
24567         0. Fixes #49287.
24568
24569 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
24570
24571         * objects.cs: New test for 'is' operator on an array of interfaces.
24572
24573 Wed Oct 1 19:40:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
24574
24575         * tramp-ppc.c: update trampoline code to support jumps
24576         and class initialization.
24577
24578 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
24579
24580         * mini.c (mono_jit_compile_method): Fix reading of freed memory.
24581
24582         * inssel.brg (OP_UNBOXCAST): Fix #46027.
24583
24584         * inssel.brg (OP_UNBOX): Remove unused rule.
24585
24586         * mini.h mini.c inssel-x86.brg: Allocate one SP variable for each
24587         region instead of one for each method. Fixes #47813.
24588
24589 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
24590
24591         * exceptions.cs (test_0_nested_finally): New regression test for
24592         nested exception handlers.
24593
24594         * mini.c (mono_jit_runtime_invoke): Fix for the previous fix.
24595
24596         * mini.c (mono_method_to_ir): Avoid inlining tail calls.
24597
24598         * mini.c (mono_method_to_ir): Fix tail recursion in the presence of 
24599         inlining.
24600
24601         * mini.c (mono_method_check_inlining): Make the inlining limit 
24602         configurable by an environment variable.
24603         
24604         * mini.c (mono_jit_runtime_invoke): Add Gonzalo's fix for #36545.
24605
24606         * mini.h: Bump AOT file version.
24607
24608         * mini.h mini.c aot.c mini-x86.c: For relocations which refer to a 
24609         token, store the image along with the token, since the token might not 
24610         refer to the same image as the method containing the relocation, 
24611         because of inlining.
24612
24613 2003-09-27  Zoltan Varga  <vargaz@freemail.hu>
24614
24615         * mini.c (mono_precompile_assemblies): New function to compile
24616         all methods in all loaded assemblies.
24617
24618         * mini.h driver.c: Added new optimization flag MONO_OPT_PRECOMP.
24619
24620         * regalloc.h regalloc.c (MonoRegState): Change the type of 
24621         iassign and fassign to int*, since they can contain large negative
24622         values if the register is spilled. Also added some comments. Fixes
24623         #45817.
24624
24625         * exceptions-x86.c (seh_handler): Fix handling of system exceptions
24626         under Win32. Fixes #42964.
24627
24628 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
24629
24630         * mini.h (MONO_PATCH_INFO_WRAPPER): New patch type.
24631
24632         * aot.c: Added support for AOT compiling methods which contain calls
24633         to wrappers. Currently, only remoting-invoke-with-check wrappers are
24634         handled.
24635         
24636         * driver.c (compile_all_methods): Run the compilation in a thread
24637         managed by mono. Fixes #44023.
24638
24639         * mini.c (mono_codegen): Print full method name in verbose output.
24640
24641         * mini-x86.c (mono_arch_patch_code): Fix warning.
24642         
24643         * mini-x86.c (mono_arch_patch_code): Allways create a trampoline for
24644         jumps, since the method we are jumping to might be domain-specific.
24645
24646         * aot.c: Added support for MONO_PATCH_INFO_METHOD_JUMP.
24647
24648 Tue Sep 23 10:50:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
24649
24650         * inssel.brg: string chars are unsigned.
24651
24652 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
24653
24654         * TODO: New todo item.
24655
24656         * tramp-x86.c (x86_class_init_trampoline): New trampoline function
24657         which calls mono_runtime_class_init and patches the call site to
24658         avoid further calls.
24659         (mono_arch_create_class_init_trampoline): New arch specific function 
24660         to create a class init trampoline.
24661         (create_trampoline_code): Generalized so it can create
24662         class init trampolines as well.
24663
24664         * mini.c (helper_sig_class_init_trampoline): New helper variable.
24665         (mono_create_class_init_trampoline): New function to create and cache
24666         class init trampolines.
24667         (mono_find_class_init_trampoline_by_addr): New function to lookup the
24668         vtable given the address of a class init trampoline. Used by the
24669         patching process.
24670         (mono_codegen): Generate a call to a trampoline instead of
24671         mono_runtime_class_init in LDSFLD[A].
24672         (mono_codegen): Add relocations for the new trampoline.
24673         
24674         * mini.h mini-x86.c aot.c: Added a new relocation type: 
24675         MONO_PATCH_INFO_CLASS_INIT.
24676
24677         * mini.h: Bump AOT version number.
24678
24679         * aot.c: Create a copy of the loaded code instead of using the original
24680         so methods which call each other will be close in memory, improving
24681         cache behaviour.
24682         
24683         * exceptions-x86.c (mono_arch_has_unwind_info): Back out the previous
24684         patch since it breaks the regression tests.
24685         
24686         * exceptions-x86.c (mono_arch_has_unwind_info): Added explicit check
24687         for the register saving instruction sequence since the 
24688         frame_state_for function in glibc 2.3.2 don't seem to detect it.
24689
24690 2003-09-14  Zoltan Varga  <vargaz@freemail.hu>
24691
24692         * TODO: Fix todo item && remove another.
24693
24694 2003-09-12  Zoltan Varga  <vargaz@freemail.hu>
24695
24696         * mini-x86.c (mono_arch_patch_code): Fix tail calls broken by a
24697         previous checkin.
24698
24699         * aot.c: Moved the check for MONO_LASTAOT into the initialization
24700         function of the module.
24701
24702         * mini.h mini.c aot.c: Added a new optimization flag OPT_AOT for
24703         turning on/off the usage of AOT code. Got rid of mono_no_aot and the
24704         --no-aot command line option.
24705
24706 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
24707
24708         * helpers.c (mono_disassemble_code): Make this work under cygwin. Patch
24709         by Bernie Solomon (bernard@ugsolutions.com).
24710
24711         * inssel.brg: Refactor the interface offset table related code into
24712         its separate functions and add support for the AOT case.
24713
24714 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
24715
24716         * aot.c (mono_aot_get_method_inner): Fix memory leak.
24717         
24718         * aot.c: Added mono_aot_verbose variable and made all debugging
24719         output depend on the value of this variable.
24720
24721         * aot.c (mono_aot_get_method_inner): Avoid dynamic allocation of
24722         method_label and info_label.
24723
24724         * mini.h mini-x86.c aot.c: Added a new relocation type 
24725         MONO_PATCH_INFO_IID for klass->interface_id.
24726
24727         * mini.h mini.c driver.c aot.c: Changed mono_aot_get_method to return
24728         the MonoJitInfo structure.
24729
24730         * mini.c (mono_jit_compile_method): Avoid using non-shared AOT in
24731         a non-root appdomain in shared mode.
24732
24733 Tue Sep 9 16:33:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
24734
24735         * aot.c: make aot loader less verbose. Remove free of unused variable.
24736
24737 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
24738
24739         * aot.c (mono_aot_get_method_inner): Fix MONO_PATCH_INFO_IMAGE.
24740
24741         * .cvsignore: Added *.dll.
24742
24743         * mini.c (mono_print_tree_nl): New function callable while debugging.
24744
24745         * mini.c (mono_print_code): Export this.
24746
24747         * tramp-x86.c (x86_magic_trampoline): Tell valgrind to recompile the
24748         patched code.
24749
24750 2003-09-05  Zoltan Varga  <vargaz@freemail.hu>
24751
24752         * mini.h (MonoCompile): Added 'jit_info' field.
24753
24754         * mini.c (mini_method_compile): Save the generated MonoJitInfo into
24755         the cfg structure, since it is needed by the AOT compiler.
24756
24757         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
24758
24759         * aot.c: A major rewrite. Changes include:
24760         - save exception tables for methods which have them.
24761         - cache failed lookups in aot_get_method () to avoid the (slow) calls 
24762         to g_module_symbol.
24763         - reworked the file format so it is now much smaller and needs
24764         fewer relocation entries.
24765         
24766 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
24767
24768         * aot.c (load_aot_module): Fix build bustage on platforms without
24769         Boehm GC.
24770
24771 2003-09-04  Martin Baulig  <martin@ximian.com>
24772
24773         * Makefile.am (INCLUDES): Added $(LIBGC_CFLAGS).
24774
24775 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
24776
24777         * TODO: Some new optimization ideas.
24778
24779         * aot.c: Move AOT module loading logic here from mono_assembly_open.
24780
24781         * aot.c: Save the optimization flags used to compile the code into
24782         the AOT module.
24783
24784         * mini.h mini-x86.c mini.c aot.c: Added new types of relocations to
24785         support emitting domain specific code.
24786         
24787         * mini.h mini.c aot.c: Modified the JIT so the generated AOT code is 
24788         no longer domain neutral. It can be made domain neutral by compiling 
24789         with --optimize=shared.
24790
24791         * aot.c (mono_aot_get_method_inner): Allow sharing of AOT methods
24792         between appdomains.
24793
24794         * driver.c mini.h mini.c: New --no-aot debugging option which disables
24795         loading of AOT code.
24796
24797         * inssel-x86.brg: Added missing AOTCONST -> OUTARG_VT rule.
24798         
24799         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling method
24800         if there is no domain neutrality information.
24801
24802 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
24803
24804         * aot.c (mono_compile_assembly): Emit a symbol containing the file 
24805         format version into the generated library.
24806
24807         * mini-x86.c (mono_arch_patch_code): Do not emit the address of the
24808         callee method into the caller since one of them could be shared.
24809
24810         * mini.h mini-x86.c aot.c: Added two new relocations so throwing
24811         system exceptions from AOT code now works.
24812
24813         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling 
24814         method if it is domain neutral and the callee is not.
24815
24816         * graph.c (cfg_emit_one_loop_level): Fix warning.
24817
24818 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
24819
24820         * aot.c (mono_compile_assembly): Oops. Remove debugging cruft from
24821         last checkin.
24822
24823 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
24824
24825         * mini.c (mini_init): Call mono_marshal_init () explicitly since it
24826         is needed  by code which is executed before mono_runtime_init ().
24827         Thanks to Bernie Solomon (bernard@ugsolutions.com) for noticing this.
24828         
24829         * mini.c (mono_thread_abort): Fix warning.
24830         (mono_jit_compile_method): Call static constructor in the AOT case too.
24831
24832         * aot.c (mono_compile_assembly): Fix warning.
24833
24834 2003-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24835
24836         * mini.c: register a SIGINT handler if MONO_DEBUG is defined.
24837
24838 2003-08-28  Zoltan Varga  <vargaz@freemail.hu>
24839
24840         * inssel.brg (OP_UNBOXCAST): Add support for the AOT case.
24841
24842         * cpu-pentium.md: Fix the length of call opcodes so they include the
24843         ESP restoring instruction. Fixes #47968.
24844
24845 2003-08-28  Martin Baulig  <martin@ximian.com>
24846
24847         * mini-x86.c (mono_arch_call_opcode): Added support for
24848         MONO_TYPE_GENERICINST.
24849
24850         * mini.c (check_call_signature): Added support for MONO_TYPE_GENERICINST.       
24851
24852 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
24853
24854         * Makefile.am (BUILT_SOURCES): Fix compilation on platforms without
24855         a JIT. Patch by Bernie Solomon (bernard@ugsolutions.com).
24856
24857         * mini.c jit-icalls.c tramp-x86.c tramp-ppc.c tramp-sparc.c: Get rid of
24858         metadata_section.
24859
24860 2003-08-26  Martin Baulig  <martin@ximian.com>
24861
24862         * mini.c (get_basic_blocks): Added `unsigned char **pos' argument;
24863         when reporting an error, set this to the actual error location.
24864         (mono_method_to_ir): Report the correct error location if
24865         get_basic_blocks() returned an error.
24866
24867 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
24868
24869         * mini.c (mono_type_blittable): OBJECT is not blittable.
24870         (mono_method_blittable): Methods which have marshalling descriptors
24871         are not blittable either. Fixes #47842.
24872
24873 2003-08-22  Zoltan Varga  <vargaz@freemail.hu>
24874
24875         * driver.c mini.c: Use an environment variable instead of a global 
24876         variable. Also fix the build.
24877
24878         * mini.c (mini_init): Call g_thread_init () to make glib thread-safe. 
24879         Fixes #47682. Thanks to Laurent Morichetti (l_m@pacbell.net) for 
24880         reporting this. 
24881
24882         * driver.c mini.c: Added --with-valgrind option to turn off some
24883         code which prevents mono from running under valgrind.
24884
24885         * mini.c (mono_emit_call_args): Fixed warning.
24886
24887         * mini.c (mono_emulate_opcode): Fixed warning.
24888
24889 Thu Aug 21 19:10:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
24890
24891         * inssel.brg: 64bit fixes from Laurent Morichetti <l_m@pacbell.net>.
24892         * linear-scan.c, mini-ppc.h, mini-sparc.h, mini-x86.h, mini.h,
24893         regalloc.c, regalloc.h: specify available registers in arch-specific
24894         code and support floats in the regallocator (patch by Laurent Morichetti 
24895         <l_m@pacbell.net>)
24896
24897 Wed Aug 20 19:02:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
24898
24899         * mini.c: mono_thread_current() can be called only after
24900         mono_runtime_init(): rearrange code to not call it early on.
24901
24902 Wed Aug 20 13:14:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
24903
24904         * mini.c: allocate jump tables in the code mempools.
24905
24906 Wed Aug 20 13:04:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
24907
24908         * mini.c, mini.h: make sure per-thread data allocated by the jit is
24909         freed.
24910
24911 2003-08-10  Miguel de Icaza  <miguel@ximian.com>
24912
24913         * cpu-pentium.md (ldtoken): Change the length for mul.ovf.un from
24914         12 to 16.  This fixes bug #47453.
24915
24916
24917 Thu Aug 7 15:59:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
24918
24919         * mini-ppc.c: fixed indexed load and unsigned compares.
24920
24921 2003-08-06  Lluis Sanchez Gual  <lluis@ximian.com>
24922
24923         * mini.c: reenabled installation of handler for
24924           thread abort signal.
24925
24926 Tue Aug 5 12:21:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
24927
24928         * cprop.c, mini-x86.c, cpu-pentium.md: fix buglets spotted
24929         by Laurent Morichetti <l_m@pacbell.net>. Disabled local cprop
24930         until it's fixed and actually useful.
24931
24932 Mon Aug 4 12:12:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
24933
24934         * inssel-long32.brg: couple more opcodes implemented.
24935
24936 Thu Jul 31 22:43:02 EDT 2003 Mark Crichton <crichton@gimp.org>
24937         
24938         * mini-sparc.c: Even more opcodes implemeted.
24939
24940 Thu Jul 31 19:36:03 EDT 2003 Mark Crichton <crichton@gimp.org>
24941
24942         * mini-sparc.c: More opcodes implemented.
24943
24944 Thu Jul 31 15:16:26 EDT 2003 Mark Crichton <crichton@gimp.org>
24945
24946         * mini-sparc.c: More opcodes implemented.
24947
24948 Wed Jul 30 22:31:02 EDT 2003 Mark Crichton <crichton@gimp.org>
24949
24950         * inssel-sparc.brg: Add some needed rules.  Direct
24951         copy from PPC.
24952         * Makefile.am: Use inssel-sparc.brg
24953         * exceptions-sparc.c: 0xdeadbeef/0xdecafbad to keep
24954         an assert happy for now.
24955
24956 Wed Jul 30 20:44:07 EDT 2003 Mark Crichton <crichton@gimp.org>
24957
24958         * mini-sparc.c: Fixed compile errors.
24959         * exceptions-sparc.c: Same.  We now produce a mono binary 
24960         on sparc-linux.  Yea.
24961
24962 Wed Jul 30 14:10:12 EDT 2003 Mark Crichton <crichton@gimp.org>
24963
24964         * mini-sparc.c: Renamed registers.  Also some macro cleanups.
24965         * exceptions-sparc.c, tramp-sparc.c: Various compile fixes.
24966         They compile, but do not work.
24967
24968 Wed Jul 30 17:52:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
24969
24970         * Makefile.am, cpu-sparc.md, exceptions-sparc.c, mini-sparc.c,
24971         mini-sparc.h, tramp-sparc.c: Beginning of sparc support
24972         from Mark Crichton <crichton@gimp.org> and Christopher Taylor
24973         (ct@gentoo.org).
24974
24975 Tue Jul 29 12:43:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
24976
24977         * mini.c: more opcodes implemented and better support for generics.
24978
24979 Fri Jul 25 18:51:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
24980
24981         * cpu-g4.md, cpu-pentium.md: updates for new instructions.
24982         * mini.c, mini.h: first cut at generics support: some new instructions 
24983         added and changed the behaviour of some of the existing ones.
24984
24985 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
24986
24987         * mini.c: Removed definition of metadata_shared mutex here.
24988
24989 Tue Jul 22 15:21:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
24990
24991         * mini-x86.c: make vararg calls work for instance methods.
24992
24993 Fri Jul 18 19:26:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
24994
24995         * mini.c, mini.h, mini-x86.c, mini-ppc.c: mono_arch_call_opcode()
24996         returns the arguments in a separte list, now.
24997
24998 Fri Jul 18 13:16:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
24999
25000         * aot.c, mini.c: updates for array type representation changes.
25001
25002 Fri Jul 18 11:28:28 CEST 2003 Paolo Molaro <lupus@ximian.com>
25003
25004         * mini.c: register function to perform jit shutdown.
25005
25006 Thu Jul 17 16:02:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25007
25008         * mini.c: use a faster allocator if possible.
25009
25010 Thu Jul 17 16:00:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
25011
25012         * aot.c: some cleanups and portability changes.
25013
25014 Wed Jul 2 11:08:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
25015
25016         * mini.c: use faster allocation for CEE_BOX if possible.
25017
25018 Mon Jun 30 19:16:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
25019
25020         * mini.c, mini-ops.h, inssel.brg, mini-x86.c: optimized access to fields.
25021         Moved inlined mempcy code to its own function so that is can be
25022         reused. Added an inline memset function as well (optimized initobj).
25023         * cpu-pentium.md, inssel-x86.brg: add and use lea_membase.
25024
25025 Fri Jun 27 11:19:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
25026
25027         * mini.c, mini-ops.h, inssel.brg: optimized a couple of Array methods.
25028
25029 Wed Jun 25 13:19:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
25030
25031         * mini.c, mini.h, mini.x86.c, mini-ppc.c: added facility so that
25032         arch code can setup the cpu for CLR execution, if needed.
25033         We use it on x86 to set the precision of FP operations.
25034
25035 Tue Jun 17 19:02:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
25036
25037         * mini.c: disable some optimizations if we can guess they'll cost too
25038         much for a given method.
25039
25040 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
25041
25042         * mini.h mini.c: Rework last patch based on suggestions by Paolo.
25043         
25044 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
25045         * mini.h mini.c mini-x86.c: Added instruction level coverage 
25046         info collection support.
25047
25048 Mon Jun 16 18:13:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
25049
25050         * driver.c, mini-ppc.c, mini-x86.c, mini.c, mini.h: the coverage stuff
25051         is now implemented in the profiling API. Get rid of a couple of
25052         unnecessary global variables.
25053
25054 2003-06-15  Nick Drochak <ndrochak@gol.com>
25055
25056         * basic-long.cs: tests for negative values for bigmul, and unsigned.
25057         * cpu-g4.md: add op_bigmul and op_bigmul_un
25058         * cpu_pentium.md: add op_bigmul_un
25059         * inssel-long32.brg: add rule for unsigned bigmul
25060         * mini-ops.h: define OP_BIGMUL_UN
25061         * mini-x86.c: THE BUG: handle (un)signed properly
25062         * mini.c: choose unsigned opcode if needed.
25063         This set of patches fixes bug #44291
25064
25065 2003-06-13  Dietmar Maurer  <dietmar@ximian.com>
25066
25067         * mini.c (optimize_branches): improved to handle all kinds of
25068         conditional branches.
25069
25070 Wed Jun 11 18:01:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
25071
25072         * mini.c, mini.h, jit-icalls.c: speedup emulation of opcodes that
25073         don't raise exceptions.
25074
25075 Tue Jun 10 19:00:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
25076
25077         * tramp-x86.c, tramp-ppc.c, debug-mini.c: move arch-specific code
25078         to arch-specific files.
25079
25080 2003-06-09  Martin Baulig  <martin@ximian.com>
25081
25082         * Makefile.am (libs): Added $(LIBGC_LIBS).
25083
25084 Mon Jun 9 20:21:47 CEST 2003 Paolo Molaro <lupus@ximian.com>
25085
25086         * cpu-pentium.md, mini-x86.c: fix (well, actually implement) OP_TAN
25087         and OP_ATAN (fixes bug#44293).
25088
25089 Mon Jun 9 19:00:56 CEST 2003 Paolo Molaro <lupus@ximian.com>
25090
25091         * Makefile.am, mini-x86.c: rename cpu description array to
25092         pentium_desc, since some compilers define the 'pentium' preprocessor
25093         symbol.
25094
25095 2003-05-28  Dietmar Maurer  <dietmar@ximian.com>
25096
25097         * mini.c (mini_select_instructions): add explicit branch if the
25098         following block is not the false target of a conditional branch -
25099         we need this with any optimization that reorder or remove bblocks
25100
25101         * mini.c (optimize_branches): bug fixes
25102
25103 2003-06-06  Dietmar Maurer  <dietmar@ximian.com>
25104
25105         * mini.c (mono_method_to_ir): inline static readonly fields
25106
25107         * ssa.c (fold_tree): start cfold support for long (very simple
25108         cases only)
25109
25110         * cfold.c (mono_constant_fold_inst): opt. CEE_CONV_I8 (OP_ICONST)
25111
25112 Fri Jun 6 11:41:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
25113
25114         * inssel.brg: fixed memcpy (bug #44219).
25115
25116 2003-06-05  Dick Porter  <dick@ximian.com>
25117
25118         * driver.c: Set the glib log levels to not abort if g_message
25119         recurses.
25120
25121         g_set_prgname() has to happen before mini_init() so that the
25122         process handle gets the info.
25123         
25124 Thu Jun 5 20:11:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
25125
25126         * driver.c: add intrins to the default optimizations to get wider
25127         exposure.
25128
25129 Wed Jun 4 19:47:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
25130
25131         * mini.h: some large basic blocks will overflow a 16-bit
25132         integers for symbolic registers.
25133
25134 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
25135
25136         * mini-x86.c (mono_arch_output_basic_block): revert previous fprem changes.
25137         (mono_arch_output_basic_block): fix bug 43499 
25138
25139 Wed Jun 4 13:13:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
25140
25141         * mini.c: kill duplicated definition of mono_debug_format.
25142
25143 Wed Jun 4 13:09:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
25144
25145         * mini-x86.c, arrays.cs: fixed register allocation bug.
25146
25147 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
25148
25149         * mini-x86.c (mono_arch_output_basic_block): use IEEE compatible fprem1
25150
25151         * mini.c (mini_get_opcode_for_method): inline IEEERemainder
25152
25153 2003-06-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25154
25155         * mini.c:
25156         (print_method_from_ip): also print source location information if
25157         available.
25158
25159 2003-06-02  Dietmar Maurer  <dietmar@ximian.com>
25160
25161         * mini.c (mono_find_block_region): bug fix in region code
25162         (mini_method_compile): enable removing unreachable code again, but
25163         only in methods without exception clauses.
25164
25165 Fri May 30 18:40:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
25166
25167         * mini.c, mini-ops.h, cpu-pentium.md, inssel.brg, mini-x86.c, mini.h:
25168         Implemented arglist opcode and handling of TypedReference type.
25169         Fixed x86 call convention when a structure is returned.
25170         Minimal support for calling static vararg methods.
25171
25172 2003-05-30  Dietmar Maurer  <dietmar@ximian.com>
25173
25174         * mini.c (mini_method_compile):  always remove unreachable code,
25175         because the code in them may be inconsistent  (access to dead
25176         variables for example).
25177
25178 Thu May 29 11:44:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
25179
25180         * driver.c, debug-mini.c: warning fixes.
25181
25182 Wed May 28 11:19:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
25183
25184         * Makefile.am, jit.h, mini.h: install header for embedding mono.
25185
25186 Tue May 27 17:56:12 CEST 2003 Paolo Molaro <lupus@ximian.com>
25187
25188         * mini.c: thread-static fields are registered in mono_class_vtable(),
25189         so ensure the function is called before checking for them.
25190
25191 2003-05-27  Dietmar Maurer  <dietmar@ximian.com>
25192
25193         * mini.c (optimize_branches): fix for bug 43586
25194
25195         * jit-icalls.c (mono_llmult_ovf): added an additional check for
25196         overflow (fixes Bug #43639)
25197
25198 Tue May 27 11:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25199
25200         * mini.c, objects.cs: allow the use of stobj for primitive types.
25201
25202 Tue May 27 10:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25203
25204         * mini.c: be less strict about argument checking until we support
25205         running the verifier.
25206
25207 2003-05-27  Nick Drochak <ndrochak@gol.com>
25208
25209         * basic-long.cs: tests for (ulong)int * (ulong)int also
25210         * mini.c: use the same trick for (ulong)int * (ulong)int
25211
25212 2003-05-27  Nick Drochak <ndrochak@gol.com>
25213
25214         * basic-long.cs: add regression test for (long)int * (long)int
25215         * cpu-pentium.md: add op_bigmul specification
25216         * inssel-long32.brg: add OP_BIGMUL rule
25217         * mini-ops.h: add OP_BIGMUL
25218         * mini-x86.c: register allocator: handle case where src1 needs to be
25219         in EAX.
25220         * mini.c: substitute special BIGMUL opcode in the tree for 
25221         (long)int * (long)int
25222
25223 Mon May 26 20:20:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
25224
25225         * jit-icalls.c: call the type ctor on field access if needed.
25226
25227 Mon May 26 15:21:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
25228
25229         * mini-ops.h, mini.c, inssel.brg, exceptions.cs: validate arguments passed
25230         to a method (including results of ldelema, bug#43207).
25231
25232 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
25233
25234         * graph.c (cfg_emit_one_loop_level): loop over all blocks. use
25235         colors to show exception handler blocks.
25236
25237         * inssel-x86.brg (OP_OUTARG_VT): dont push zero sized structures
25238         (fix for pinvoke7.cs).
25239
25240 Mon May 26 12:11:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25241
25242         * mini.h, mini.c: ensure correct initialization order for types that
25243         require it. Prepare for lazy compilation of jit icall wrappers.
25244         Provide a name for opcode emulation to reduce unneeded mallocing.
25245
25246 Fri May 23 16:08:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
25247
25248         * mini-x86.c: better register restoring code and profiling
25249         support for tail calls.
25250
25251 Fri May 23 15:30:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25252
25253         * mini.h, driver.c: prepare for leaf methods optimization.
25254
25255 Fri May 23 15:28:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
25256
25257         * mini.c: get targets of branches before converting a method.
25258
25259 2003-05-23  Dietmar Maurer  <dietmar@ximian.com>
25260
25261         * mini.c (optimize_branches): added some experimental code (disbaled) 
25262
25263 2003-05-22  Dietmar Maurer  <dietmar@ximian.com>
25264
25265         * mini.c (optimize_branches): fix branch to branch optimization 
25266
25267         * exceptions-x86.c (mono_arch_handle_exception): bug fix.
25268
25269         * mini-x86.c (mono_arch_output_basic_block): cleanup up exception code
25270
25271         * inssel-x86.brg: added OP_START_HANDLER, CEE_ENDFINALLY, OP_ENDFILTER
25272
25273         * mini-x86.c (mono_arch_allocate_vars): only reserve space for lmf
25274         if needed.
25275
25276 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
25277
25278         * mini.c (mono_method_to_ir): call handle_loaded_temps before inlining.
25279         enable use of interface variables again.
25280
25281         * mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate
25282         I1 to registers because there is no simply way to sign extend 8bit
25283         quantities in caller saved registers on x86.
25284
25285         * inssel-float.brg: set costs of some rules to 2 so
25286         that monobure always select the arch. specific ones if supplied,
25287         regardless of the order we pass the files to monoburg.
25288
25289 Tue May 20 17:19:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
25290
25291         * mini.c, mini-x86.c: since the magic trampoline for jumps
25292         can't patch the code directly, we do it as soon as the
25293         method gets compiled.
25294
25295 Tue May 20 16:02:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
25296
25297         * mini-x86.c, mini.h: introduce a new patching method
25298         to support CEE_JMP and tail calls.
25299         * mini.c: obey tail.call. Don't precompile methods target
25300         of CEE_JMP.
25301         * tramp-x86.c: new trampoline code to handle methods
25302         reached through a jump.
25303
25304 2003-05-20  Dietmar Maurer  <dietmar@ximian.com>
25305
25306         * mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16
25307         bit values to registers
25308
25309 2003-05-19  Dietmar Maurer  <dietmar@ximian.com>
25310
25311         * mini.c (mono_compile_get_interface_var): share interface
25312         variables if possible.
25313
25314 2003-05-16  Martin Baulig  <martin@ximian.com>
25315
25316         * debug-mini.c (mono_init_debugger): New function to initialize
25317         the debugger.  This is not in the debugger since it needs to
25318         access some of mini's internals.
25319
25320 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
25321
25322         * mini.c (mono_method_to_ir): inlining fixes/cleanups
25323
25324 Fri May 16 13:27:23 CEST 2003 Paolo Molaro <lupus@ximian.com>
25325
25326         * mini.c, mini-opts.h, inssel.brg: inline small memcpy
25327         for value type handling.
25328
25329 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
25330
25331         * mini.c (mono_method_to_ir): inline LDFLD/STFLD wrappers
25332         (mono_method_check_inlining): enable inlining of all kinds of wrappers
25333
25334 2003-05-15  Lluis Sanchez Gual  <lluis@ideary.com>
25335
25336         * mini.c: fixed little bug in CEE_NEWOBJ case when calling
25337           the constructor through a proxy.
25338
25339 Thu May 15 17:17:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
25340
25341         * jit-icalls.c, inssel.brg: fixes to array element address
25342         calculations.
25343
25344 2003-05-15  Dietmar Maurer  <dietmar@ximian.com>
25345
25346         * mini-x86.c (is_regsize_var): allocate pointer to registers
25347
25348 Thu May 15 13:04:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
25349
25350         * driver.c: fixed typo, added intrins to the set of optimizations
25351         tested with regressions.
25352
25353 Thu May 15 11:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
25354
25355         * mini-ops.h, mini.c, inssel.brg: optimize access to 2D arrays.
25356         * jit-icalls.c, exceptions.cs: fixed index out of range checks, added
25357         test case.
25358
25359 2003-05-14  Dietmar Maurer  <dietmar@ximian.com>
25360
25361         * inssel.brg: remove some common pop instructions without side effects
25362
25363 Wed May 14 12:40:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
25364
25365         * inssel-x86.brg: fixed thinko in int to double conversions.
25366
25367 Wed May 14 12:01:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
25368
25369         * mini.c, jit-icalls.c: added runtime thread-static variable support.
25370
25371 Tue May 13 22:02:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
25372
25373         * inssel-long32.brg: two more missing instructions.
25374
25375 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
25376
25377         * mini.c (mono_emit_call_args): set the cil_code for all arguments
25378         if not already set.
25379
25380 2003-05-12  Zoltan Varga  <vargaz@freemail.hu>
25381
25382         * mini-x86.c (mono_arch_output_basic_block): Handle negative zero
25383         correctly.
25384
25385         * basic-float.cs: Added tests for negative zero.
25386
25387 Sun May 11 14:56:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
25388
25389         * inssel-long32.brg, basic-long.cs, exceptions.cs: handle
25390         a couple of missing operations for long casts, with test cases.
25391
25392 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25393
25394         * exceptions-x86.c: fixed small leaks in mono_arch_handle_exception.
25395
25396 2003-05-09  Dietmar Maurer  <dietmar@ximian.com>
25397
25398         * mini-x86.c (mono_arch_emit_prolog): avoid reallocs with better
25399         code size estimation.
25400
25401 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
25402
25403         * mini.c (mono_jit_create_remoting_trampoline): make it work with
25404         abstract methods (fix bug 42542)
25405
25406         * aot.c: add ability to handle array types
25407         
25408 2003-05-08  Zoltan Varga  <vargaz@freemail.hu>
25409
25410         * mini.c: Call the _specific versions of the object allocation
25411         functions if possible.
25412
25413 Tue May 6 17:18:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
25414
25415         * driver.c: call setlocale ().
25416
25417 Tue May 6 14:38:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
25418
25419         * mini.h, mini.c, aot.c, debug-mini.c, exceptions.c: build fixes for
25420         windows build.
25421
25422 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
25423
25424         * mini.c (optimize_branches): dont touch code inside exception clauses (fix bug 38136)
25425
25426         * exceptions-x86.c (ves_icall_get_frame_info): also skip remoting
25427         wrappers (fix bug 42122)
25428
25429 2003-05-04  Martin Baulig  <martin@ximian.com>
25430
25431         * mini.h (mono_jit_init, mono_jit_cleanup): Added prototypes.
25432
25433         * driver.c: s/MONO_OPT_SAHRED/MONO_OPT_SHARED/g.
25434         s/mini_set_defaults/mono_set_defaults/g.
25435
25436 2003-05-04  Martin Baulig  <martin@ximian.com>
25437
25438         * driver.c: s/mini_parse_default_optimizations/mono_parse_default_optimizations/g.
25439
25440 Sun May 4 11:48:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25441
25442         * inssel-long32.brg: add missing lreg: OP_LCONV_TO_U8 (lreg) rule
25443         (reported by Don Roberts).
25444
25445 Fri May 2 18:36:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
25446
25447         * mini.c: temporarily work around two bugs for this release.
25448
25449 Fri May 2 17:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
25450
25451         * Makefile.am: avoid linking libmono with GMODULE_LIBS, because
25452         that contains -export-dynamic and it makes using the ld script
25453         useless.
25454         * mini.h, main.c, driver.c: s/mini_main/mono_main/g.
25455
25456 Fri May 2 12:52:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
25457
25458         * mini.h, mini-x86.c, driver.c: disable optimizations not available on a
25459         specific cpu.
25460
25461 Thu May 1 15:28:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
25462
25463         * mini.c: make sure leave calls all the needed finally blocks,
25464         even when the target jumps out of multiple exception clauses.
25465
25466 Thu May 1 15:18:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
25467
25468         * ldscript, Makefile.am: add linker script to reduce the number of
25469         exported symbols (should also fix the issues with libwine defining
25470         some of the same symbols in io-layer).
25471
25472 2003-05-01  Zoltan Varga  <vargaz@freemail.hu>
25473
25474         * driver.c (mini_main): Avoid assertion when no file name is given on 
25475         the command line.
25476
25477 Wed Apr 30 15:33:11 CEST 2003 Paolo Molaro <lupus@ximian.com>
25478
25479         * driver.c: added --version/-V command line option.
25480         Added the inline optimization in the regression tests.
25481
25482 Wed Apr 30 15:16:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
25483
25484         * mini.c, basic-calls.cs: when inlining, save arguments to locals according 
25485         to the type in the method signature (fixes bug#42134).
25486
25487 Wed Apr 30 12:38:44 CEST 2003 Paolo Molaro <lupus@ximian.com>
25488
25489         * mini.c: when inlining, check this is not null only when needed (bug #42135).
25490
25491 Wed Apr 30 11:44:36 CEST 2003 Paolo Molaro <lupus@ximian.com>
25492
25493         * mini-ppc.h, tramp-pcc.c: type fixes from Max Horn <max@quendi.de>.
25494
25495 2003-04-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25496
25497         * driver.c: fixed bug #42100.
25498
25499 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
25500
25501         * mini.c (mono_method_to_ir): UNBOX need to CAST objects first
25502
25503 Mon Apr 28 17:03:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
25504
25505         * mini.c: moved most of the code required to do inlining to its own
25506         function so it can be reused. Inline also ctors if appropriate.
25507
25508 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
25509
25510         * Makefile.am: Link with -export-dynamic so shared libs loaded by
25511         the runtime can call mono API functions.
25512
25513 2003-04-27  Martin Baulig  <martin@ximian.com>
25514
25515         * debug-mini.c (mono_debug_init_method): Added
25516         `guint32 breakpoint_id' argument; if the method has a breakpoint,
25517         send a notification to the debugger.
25518
25519         * mini.c (mono_method_to_ir): Don't insert a breakpoint if we're
25520         running in the Mono Debugger, just pass the breakpoint number to
25521         mono_debug_init_method().
25522
25523         * tramp-x86.c, tramp-ppc.c: Removed the breakpoint trampolines.
25524
25525 Sun Apr 27 13:18:04 CEST 2003 Paolo Molaro <lupus@ximian.com>
25526
25527         * mini.c: allow some more unsafe compares.
25528
25529 Sat Apr 26 11:55:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25530
25531         * mini-x86.c, Makefile.am: make distcheck works (partially from
25532         a patch by Richard Lee <r.h.lee@attbi.com>).
25533         * regset.c, regset.h: removed, they are unused.
25534
25535 2003-04-25  Dick Porter  <dick@ximian.com>
25536
25537         * driver.c: Usage reports the name as 'mono' not 'mini'
25538         * exceptions-x86.c: Build and run on freebsd
25539
25540 Thu Apr 24 17:09:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
25541
25542         * Makefile.am: install the program with the 'mono' name and
25543         the library as libmono instead of mini and libmini.
25544
25545 Thu Apr 24 17:08:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
25546
25547         * driver.c: provide the APIs for the embedding interface of the old jit.
25548
25549 2003-04-23  Dietmar Maurer  <dietmar@ximian.com>
25550
25551         * jit-icalls.c (helper_stelem_ref): impl. (fix bug 41775)
25552
25553 2003-04-23  Martin Baulig  <martin@ximian.com>
25554
25555         * tramp-x86.c, tramp-ppc.c: Reenable the debugger breakpoint interface.
25556
25557         * driver.c: Added `--debug' command line argument to enable
25558         debugging support.
25559
25560 2003-04-23  Martin Baulig  <martin@ximian.com>
25561
25562         * debug.[ch]: Removed.  The code is now in
25563         ../metadata/mono-debug.[ch] and mono-debug-debugger.[ch].
25564
25565         * debug-stabs.c, debug-dwarf2.c: Removed; nobody used this for the
25566         last six months.
25567
25568 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
25569
25570         * mini.c (mono_method_to_ir): set the cil_code address (fix bug 41525)
25571
25572 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25573
25574         * mini.c:
25575         (mini_cleanup): moved mono_runtime_cleanup call after the call to
25576         mono_domain_finalize.
25577         (mini_method_compile): use mono_method_profile* if the the option is
25578         enabled.
25579
25580 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
25581
25582         * tramp-x86.c (mono_arch_create_jit_trampoline): Subsitute synchronized
25583         methods with their wrapper.
25584
25585         * tramp-ppc.c (mono_arch_create_jit_trampoline): Subsitute synchronized
25586         methods with their wrapper.
25587
25588         * jit-icalls.c (mono_ldvirtfn): Subsitute synchronized methods with
25589         their wrapper.
25590
25591         * mini.c (mono_method_to_ir): Subsitute synchronized methods with their
25592         wrapper.
25593
25594         * mini.c (mono_method_check_inlining): Avoid inlining synchronized
25595         methods.
25596
25597 2003-04-17  Dietmar Maurer  <dietmar@ximian.com>
25598
25599         * exceptions-x86.c (mono_arch_handle_exception): fix for bug 36252
25600
25601 2003-04-16  Dietmar Maurer  <dietmar@ximian.com>
25602
25603         * mini.c (mono_compile_create_var): use g_malloc/g_realloc instead
25604         of the mempool. This is slightly faster and uses less memory
25605
25606 Wed Apr 16 12:53:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
25607
25608         * mini.c: avoid O(n) allocation for variables.
25609
25610 Tue Apr 15 19:13:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25611
25612         * mini.c: handle items on the stack after inlining methods.
25613
25614 Tue Apr 15 14:17:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
25615
25616         * mini.c: make the method->opcode optimization dependent
25617         on MONO_OPT_INSTRINS and do it lazily.
25618
25619 Tue Apr 15 14:15:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
25620
25621         * driver.c: print overall results at the end of regression run.
25622
25623 Tue Apr 15 11:18:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
25624
25625         * inssel.brg: don't overwrite symbolic registers.
25626
25627 Mon Apr 14 17:41:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
25628
25629         * inssel-x86.brg: fix conversion from long to float.
25630
25631 2003-04-11  Dietmar Maurer  <dietmar@ximian.com>
25632
25633         * mini.c (mini_init): use an opcode for get_Chars (OP_GETCHR)
25634
25635 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
25636
25637         * mini.c (mono_type_blittable): MONO_TYPE_OBJECT is blittable.
25638
25639         * driver.c: Added --print-vtable option as in the old JIT.
25640
25641 Thu Apr 10 17:43:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
25642
25643         * inssel-long32.brg, exceptions.cs: fix conversions from long, too.
25644
25645 Thu Apr 10 16:27:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
25646
25647         * inssel.brg, basic.cs: fixed checked conversions to byte and short.
25648
25649 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
25650
25651         * mini.c regalloc.c regalloc.h: Fix memory leak.
25652
25653 2003-04-09  Dietmar Maurer  <dietmar@ximian.com>
25654
25655         * aot.c (mono_aot_get_method): register all used strings
25656
25657 Wed Apr 9 15:22:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
25658
25659         * mini.c: always intern strings references with ldstr at compile time.
25660
25661 Tue Apr 8 11:41:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
25662
25663         * Makefile.am: add BUILT_SOURCES.
25664
25665 Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
25666
25667         * driver.c: give a better error message when the assembly to execute
25668         doesn't have an entry point.
25669
25670 2003-04-07  Dietmar Maurer  <dietmar@ximian.com>
25671
25672         * Makefile.am: added hack for automake
25673
25674         * mono/mini/mini.c (mono_save_args): always copy arguments to keep
25675         correct sematics.
25676
25677         * mono/mini/ssa.c (mono_ssa_avoid_copies): don't optimize calls
25678
25679 22003-04-07  Martin Baulig  <martin@ximian.com>
25680
25681         * Makefile.am: Added Makefile.am.
25682
25683         * debugger-main.c: Removed, this is now in the debugger where it
25684         belongs.
25685
25686         * mini.pc.in: Call this package `mini' for the moment.
25687
25688
25689
25690
25691
25692
25693
25694
25695
25696
25697
25698
25699
25700
25701