2010-06-29 Zoltan Varga <vargaz@gmail.com>
[mono.git] / mono / mini / ChangeLog
1 2010-06-29  Zoltan Varga  <vargaz@gmail.com>
2
3         * mini-trampolines.c (mono_vcall_trampoline): Fix a warning.
4
5         * mini-x86.c (mono_arch_get_vcall_slot): Remove most cases as the only caller
6         is now mono_arch_nullify_class_init_trampoline ().
7         (mono_arch_output_basic_block): Remove the special casing from the CALL_MEMBASE
8         opcodes, they are no longer needed.
9         
10         * mini-amd64.c (mono_arch_get_vcall_slot): Remove most cases as the only caller is
11         now mono_arch_nullify_class_init_trampoline ().
12         (mono_arch_output_basic_block): Remove the special casing from the CALL_MEMBASE
13         opcodes, they are no longer needed.
14
15         * mini-trampolines.c (mono_vcall_trampoline): Use the LLVM method of obtaining the
16         vtable on platforms which support it.
17
18         * driver.c: Print the full LLVM version we are compiled against in --version.
19
20         * aot-runtime.c (decode_exception_debug_info): Separate the LLVM and non-LLVM code
21         a bit better. Decode nesting information to fix eh support for llvm+aot.
22
23         * aot-compiler.c (emit_exception_debug_info): Encode nesting information for LLVM
24         methods.
25
26         * mini-llvm.c (mono_llvm_cleanup): Dispose the aot module too.
27
28         * mini-arm.c (get_call_info): Change the managed calling convention so 'this'
29         is always passed as the first argument, before the vtype ret arg. This simplifies
30         get_this_arg_reg () and LLVM integration.
31
32 2010-06-28  Zoltan Varga  <vargaz@gmail.com>
33
34         * mini-trampolines.c mini.c: Rework the virtual call handling code by using a separate
35         vtable trampoline for each vtable slot for both the LLVM and non-LLVM cases. Move
36         most of the vcall specific code to mono_vcall_trampoline () from
37         common_call_trampoline ().
38
39 2010-06-27  Zoltan Varga  <vargaz@gmail.com>
40
41         * mini-trampolines.c (common_call_trampoline): Remove the code which created static
42         rgctx trampolines when called from LLVM, they won't work for dynamic rgctx arguments
43         if the callsite is patched.
44
45         * mini-llvm.c (process_call): Disable calls which need an rgctx arg if not using
46         the llvm branch.
47
48         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Fix the name of
49         the trampoline in the xdebug info.
50
51         * mini-trampolines.c (common_call_trampoline): Make the last change work for LLVM
52         as well.
53
54 2010-06-26  Zoltan Varga  <vargaz@gmail.com>
55
56         * mini-llvm.c: Fix a few problems exposed by make check.
57
58 2010-06-25  Mark Probst  <mark.probst@gmail.com>
59
60         * mini-trampolines.c (common_call_trampoline): An ugly hack to
61         work around a potentially very hard to fix problem with inflating
62         generic methods.
63
64 2010-06-26  Zoltan Varga  <vargaz@gmail.com>
65
66         * method-to-ir.c (mono_emit_wb_aware_memcpy): Remove the workaround as the core
67         problem has been fixes.
68
69 2010-06-25  Zoltan Varga  <vargaz@gmail.com>
70
71         * Makefile.am: Add an 'SGEN' make variable to allow tests to be run with SGEN.
72
73         * mini-gc.c (mini_gc_init_cfg): Use mono_gc_is_moving () instead of HAVE_SGEN_GC.
74         It might be be better to define a MonoGCJitOptions structure later and have the
75         GC return that.
76
77         * mini-darwin.c: Don't undefine pthread_ calls for SGEN, they are no longer defined.
78
79         * Makefile.am: Use libwapi.la for both sgen and non-sgen builds.
80
81         * debugger-agent.c (get_objref): Implement support for sgen.
82
83         * driver.c: Remove the unused gc_wrapper.h include.
84
85         * driver.c (mono_main): Delegate the --desktop mode optimizations to the GC
86         implementation.
87
88 2010-06-25  Zoltan Varga  <vargaz@gmail.com>
89
90         * driver.c (mono_main): Use mono_gc_get_description () to print the GC name.
91
92         * mini-gc.c (mini_gc_init_cfg): New function to initialize GC specific flags
93         in MonoCompile.
94
95         * method-to-ir.c mini.c: Remove usage of HAVE_SGEN_GC and use runtime checks
96         instead.
97
98 2010-06-23  Miguel de Icaza  <miguel@novell.com>
99
100         * Makefile.am: Build the mono-sgen binary a Mono VM with the Sgen
101         GC enabled as well as libmono-sgen-2.0 and libomonosgen-static
102
103         * driver.c: Do not depend on the USED_GC_NAME when using SGen, use
104         it only for Boehm diagnostics.
105
106         * Makefile.am: Make the file a bit more consistent.
107
108         * debug-debugger.c: Wrap the entire file with an #ifdef
109         MONO_DEBUGGER_SUPPORTED to simplify the build.
110
111         * Makefile.am: Fix the opcodes build issue by including the
112         source, not by including the .lo file directly
113
114         Always bring the MDB sources into the build, to drop the
115         dependency on the AM_CONDITIONAL from configure.in as the hard
116         debugger supports Boehm, but not Sgen, this simplifies the build. 
117
118         * Renamed the *.s files into *.S
119
120 2010-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
121
122         * method-to-ir.c (mono_emit_wb_aware_memcpy): Don't emit bitmap
123         wb for now on 64bits systems while issues with valuetype returns
124         are not fixed.
125
126 2010-06-24  Zoltan Varga  <vargaz@gmail.com>
127
128         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add support for using a standard set of
129         passes by calling createStandardFunctionPasses ().
130
131 2010-06-23  Zoltan Varga  <vargaz@gmail.com>
132
133         * mini.h (MONO_INS_HAS_NO_SIDE_EFFECT): Add OP_LDADDR.
134
135 2010-06-22  Zoltan Varga  <vargaz@gmail.com>
136
137         * method-to-ir.c (mono_method_to_ir): Don't mark loads from OP_LDADDR with
138         MONO_INST_FAULT.
139
140         * mini-llvm.c (mono_llvm_emit_method): Recalculate MONO_INST_INDIRECT flags to
141         allow better optimization if the OP_LDADDR which caused the flag to be set was
142         optimized away.
143
144         * exceptions-amd64.c (get_throw_trampoline): Align the stack properly.
145
146         * mini-amd64.c (mono_arch_emit_exceptions): Pass only the type token index, not
147         the type token.
148
149         * mini-llvm.c (emit_entry_bb): Save the this argument only in gshared methods.
150
151         * mini-llvm.c: Fix a couple memory leaks. Get rid of a few #ifdefs.
152
153 2010-06-22  Zoltan Varga  <vargaz@gmail.com>
154
155         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Call patch_callsite ()
156         to handle the code sequence generated for non-near calls. Fixes #616056.
157
158 2010-06-21  Zoltan Varga  <vargaz@gmail.com>
159
160         * exceptions-x86.c (mono_arch_find_jit_info_ext): Adjust eip in the lmf case too.
161
162         * exceptions-x86.c: Add a resume_unwind trampoline for LLVM.
163
164         * mini-llvm.c (exception_cb): For nested clauses, add the same try range to the
165         nesting clause too.
166         (mono_llvm_check_method_supported): Enable llvm for methods with nested clauses.
167         (mono_llvm_emit_method): Instead of calling 'mono_resume_unwind' directly, call a
168         trampoline which saves the context, so changes made to callee saved registers in
169         finally clauses are visible to a nesting catch clause.
170
171         * exceptions-amd64.c: Add a resume_unwind trampoline for LLVM.
172
173         * mini-exceptions.c (mono_handle_exception_internal): Fix support for nested clauses
174         in LLVM compiled code.
175         (mono_handle_exception_internal): Add a 'ctx' argument containing the state after
176         the finally handler has ran.
177
178         * mini.h (ResumeState): New structure containing information required to resume
179         exception handling after executing LLVM compiled finally clauses.
180
181         * exceptions-amd64.c (get_throw_trampoline): Clean up the amd64 throw trampolines a
182         bit, by passing all the registers as one argument.
183
184 2010-06-19  Zoltan Varga  <vargaz@gmail.com>
185
186         * tramp-amd64.c (mono_arch_create_generic_trampoline): Increase the buf len a little,
187         to avoid an assert.
188
189 2010-06-18  Zoltan Varga  <vargaz@gmail.com>
190
191         * aot-compiler.c (emit_klass_info): Mark unloadable classes properly.
192
193         * aot-compiler.c aot-runtime.c: Fix LLVM support.
194
195         * mini-llvm.c: When emitting OP_CALL_HANDLER, avoid branching directly to the landing
196         pad, branch to a new bblock instead.
197
198         * aot-compiler.c (emit_method_code): Use cfg->header instead of the header of
199         orig_method.
200
201         * exceptions-amd64.c (mono_arch_exceptions_init): Fix fullaot support.
202
203         * mini-llvm.c (process_bb): Add support for OP_SQRT when using the LLVM mono branch.
204
205 2010-06-17  Geoff Norton  <gnorton@novell.com>
206
207         * mini-arm.h:
208         * exceptions-arm.c: Move the UCONTEXT macros to mono-sigcontext.h so they
209         can be used by sgen.
210
211 2010-06-17  Zoltan Varga  <vargaz@gmail.com>
212
213         * aot-compiler.c (emit_klass_info): Handle type load exceptions.
214
215         * method-to-ir.c (mono_method_to_ir): Avoid a crash if mono_method_get_header ()
216         fails.
217
218         * exceptions-x86.c (mono_x86_throw_corlib_exception): Negate the decrement of
219         the ip done by throw_exception (), it is not needed for corlib exceptions.
220
221 2010-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
222
223         * method-to-ir.c (mono_emit_wb_aware_memcpy): Simplify this function.
224         Call new jit icall mono_gc_wbarrier_value_copy_bitmap for vt wbarrier
225         of size > 5 words. This support fast barriers for value types up to
226         256/512 bytes which     beyond that the copying itself is the major issue.
227
228         * method-to-ir.c (mini_emit_stobj): The intrinsic version is safe
229         for gsharing, so use it.
230
231         This eliminate all calls to mono_value_copy from managed code in
232         gmcs, fsharp and ipy.
233
234         This gives a 2% perf boost on ipy and 1% on gmcs over previous patches.
235
236         Even thou a lot of mono_value_copy calls were eliminated from fsharp,
237         performance kept
238
239         * mini.c (mini_init): Register new icall.
240
241 2010-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
242
243         * method-to-ir.c (mono_emit_wb_aware_memcpy): Handle nested valuetypes.
244         This eliminates 2% of mono_value_copy calls on ipy and 12% on fsharp.
245
246 2010-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
247
248         * method-to-ir.c (mini_emit_stobj): Don't call mono_value_copy for small
249         value types as the overhead is huge. Manually expand it up to 5 words to
250         avoid code bloat.
251
252         This improves gmcs times by 5% and unmodified binary-tree by 78%. The later
253         is an exception that performance is dominated by mono_value_copy.
254
255         This puts sgen about 5% ahead of boehm in terms of wall-clock on a Core2Quad.
256
257 2010-06-17  Zoltan Varga  <vargaz@gmail.com>
258
259         * mini-llvm.c (process_call): Disable LLVM for calls to generic class init
260         trampolines on x86, since those have their own cconv.
261
262         * exceptions-x86.c (mono_arch_exceptions_init): Implement the llvm throw corlib
263         exception trampolines.
264
265         * tramp-x86.c: Add xdebug info for a few trampolines.
266
267         * mini-llvm.c: Set the name of the arguments.
268
269         * mini-llvm.c (emit_cond_system_exception): Pass the ip of to throw_corlib_trampoline
270         using a block address if using the LLVM mono branch.
271
272         * exceptions-amd64.c (mono_arch_exceptions_init): Add new LLVM throw corlib exception
273         trampolines.
274
275 2010-06-15  Zoltan Varga  <vargaz@gmail.com>
276
277         * mini-ppc.c (mono_arch_get_cie_program): Define this for powerpc too.
278
279         * mini-llvm.c (process_bb): Add a missing CHECK_FAILURE.
280
281         * mini.c (mini_init): Remove some of the llvm restrictions, they are no longer needed.
282
283         * method-to-ir.c (mono_method_to_ir): Enable fast virtual calls when using llvm.
284
285         * mini-trampolines.c (mono_llvm_vcall_trampoline): Rewrite this to use one vtable
286         trampoline per vtable slot index. The slot, along with the 'this' argument is enough
287         to identify the vtable slot address plus the method which needs to be compiled.
288
289         * mini.c (mini_get_vtable_trampoline): Use one vtable trampoline per vtable slot when
290         using llvm.
291
292         * mini-x86.c (get_call_info_internal): Change the managed calling convention so
293         'this' is always passed as the first argument, before the vtype ret arg. This
294         simplifies get_this_arg_reg () and LLVM integration.
295
296         * mini-amd64.c (get_call_info): Fix the handling of MONO_TYPE_TYPEDBYREF after
297         the latest changes.
298
299         * tramp-x86.c (mono_arch_create_generic_trampoline): Emit unwind info for
300         these trampolines.
301
302         * mini-x86.c (mono_arch_get_cie_program): Implement this for x86.
303
304         * mini-llvm.c: Fix compilation with llvm 2.6.
305
306         * mini-amd64.c (CallInfo): Fix the position of the vret_arg_index field.
307
308         * mini-llvm.c (mono_llvm_emit_method): Fix the build if LLVM_MONO_BRANCH is not
309         defined.
310
311         * mini-amd64.c (get_call_info): Change the managed calling convention so 'this'
312         is always passed as the first argument, before the vtype ret arg. This simplifies
313         get_this_arg_reg () and LLVM integration.
314
315 2010-06-14 Rodrigo Kumpera  <rkumpera@novell.com>
316
317         * method-to-ir.c (mono_method_to_ir): Add support for .ctor intrinsics.
318
319         * method-to-ir.c (mini_emit_inst_for_ctor): New function for .ctor intrinsics.
320         For now just call simd intrinsics. This makes "x[0] = new Vector4f (10)" 
321         translate into much nicer code.
322
323 2010-06-14  Zoltan Varga  <vargaz@gmail.com>
324
325         * mini-llvm.c (sig_to_llvm_sig_full): Add a 'sinfo' out argument which returns
326         parameter index information. Use this to simplify a lot of code.
327
328         * unwind.c (mono_unwind_decode_fde): Handle augmentions using a loop.
329
330 2010-06-12  Zoltan Varga  <vargaz@gmail.com>
331
332         * aot-compiler.c (compile_method): Add a 'depth' parameter to add_generic_class too
333         to fix infinite generic recursion. Fixes #612702.
334
335 2010-06-11  Zoltan Varga  <vargaz@gmail.com>
336
337         * object.c: Use a callback to create IMT trampolines, allowing the usage of one
338         imt trampoline per imt slot when using LLVM.
339
340 2010-06-10  Jonathan Pryor  <jpryor@novell.com>
341
342         * mini.c (mini_cleanup): Call mono_runtime_shutdown(). Fixes #438454.
343
344 2010-06-09  Levi Bard  <levi@unity3d.com>
345
346         * debugger-agent.c: Clear unloaded types on appdomain unload.
347
348 2010-06-08  Zoltan Varga  <vargaz@gmail.com>
349
350         * liveness.c (visit_bb): Make the component vregs of long vars volatile as well.
351         Fixes #612206.
352
353         * exceptions.cs: Add a test.
354
355 2010-06-06  Zoltan Varga  <vargaz@gmail.com>
356
357         * mini-llvm.c (mono_llvm_check_method_supported): Only disable llvm for nested clauses.
358
359         * mini.c (mini_method_compile): Move the LLVM checks to a function in mini-llvm.c.
360
361         * mini.c (mono_jit_runtime_invoke): Initialize *exc to NULL before calling the wrapper,
362         so it doesn't have to do it.
363
364         * helpers.c (mono_disassemble_code): Flush stdout, so the output from the spawned
365         process does not mix with ours.
366
367         * mini-llvm.c (mono_llvm_emit_method): Refactor this giant function into smaller
368         ones.
369
370         * mini-llvm.c method-to-ir.c ir-emit.h: When using the llvm mono branch, allow
371         loads/stores which can throw exceptions inside clauses.
372
373 2010-06-05  Zoltan Varga  <vargaz@gmail.com>
374
375         * mini-llvm.c (mono_llvm_emit_method): Fix support for finally clauses with more than
376         one ENDFINALLY.
377
378         * mini.c (mini_init): Register mono_resume_unwind as an icall.
379
380 2010-06-03  Zoltan Varga  <vargaz@gmail.com>
381
382         * dwarfwriter.c: Update after the mono_debug_lookup_locals () changes.
383
384         * debugger-agent.c (method_commands_internal): Ditto. Return scope information for
385         locals.
386
387 2010-06-03  Zoltan Varga  <vargaz@gmail.com>
388
389         * debugger-agent.c (appdomain_unload): Clear all breakpoint instances in the dying
390         appdomain.
391
392 2010-06-02  Zoltan Varga  <vargaz@gmail.com>
393
394         * method-to-ir.c (set_rgctx_arg): New helper function to remove some duplicate code.
395         Use a separate generic class init trampoline for llvm, since it needs a different
396         signature.
397
398         * unwind.c (mono_unwind_decode_fde): Make this decode the mono specific LSDA which
399         includes the location of this/rgctx.
400
401         * mini-llvm.c aot-runtime.c: Enable generic sharing for llvm if using the LLVM mono
402         branch.
403
404 2010-06-01  Zoltan Varga  <vargaz@gmail.com>
405
406         * mini.c (mini_method_compile): Enable llvm+exceptions on LLVM SVN.
407
408         * mini-llvm.c (emit_cond_system_exception): Disable llvm when this occurs in a
409         clause.
410
411 2010-05-31  Zoltan Varga  <vargaz@gmail.com>
412
413         * unwind.c (mono_unwind_decode_fde): The FDE only has an augmention if the CIE
414         says so.
415
416         * aot-runtime.c (decode_eh_frame): Fix an assert condition.
417
418         * aot-compiler.c (patch_to_string): New debugging helper function.
419
420 2010-05-30  Zoltan Varga  <vargaz@gmail.com>
421
422         * exceptions-amd64.c (get_throw_trampoline): Fix the xdebug name of the corlib
423         trampoline.
424
425         * exceptions-x86.c (mono_arch_exceptions_init): Create an llvm rethrow trampoline too.
426
427         * mini-llvm.c (mono_llvm_emit_method): Implement OP_RETHROW.
428
429         * method-to-ir.c (mono_method_to_ir): Emit a OP_NOT_REACHED after a rethrow.
430
431         * mini-llvm.c (emit_call): Compute the containing try clause correctly for nested
432         clauses.
433
434         * mini.c (create_jit_info): Print EH clause info for LLVM too.
435
436 2010-05-28  Mark Probst  <mark.probst@gmail.com>
437
438         * method-to-ir.c (mono_method_to_ir): Emit a write barrier for
439         cpobj with reference types.
440
441 2010-05-28  Mark Probst  <mark.probst@gmail.com>
442
443         * method-to-ir.c (mono_method_to_ir): Only explicitly add the
444         write barrier for reference types.
445
446 2010-05-27  Zoltan Varga  <vargaz@gmail.com>
447
448         * mini-s390x.c (mono_arch_output_basic_block): Applied patch from Aurelien Minvielle
449         . Fix OP_ATOMIC_EXCHANGE_I4 on s390x. Fixes #609023.
450
451 2010-05-31  Martin Baulig  <martin@ximian.com>
452
453         Fix #608271.
454
455         * debugger-agent.c (breakpoints_cleanup): Iterate over `event_requests', call
456         clear_breakpoint() on all breakpoint events and remove them from the list.
457
458 2010-05-27  Martin Baulig  <martin@ximian.com>
459
460         Fix #605698.
461
462         * debugger-agent.c (method_commands, type_commands): Temporarily
463         set the appdomain while executing this method; do all metadata
464         calls in the debuggee's appdomain where user assemblies are loaded.
465
466 2010-05-27  Zoltan Varga  <vargaz@gmail.com>
467
468         * mini-s390x.c (mono_arch_get_delegate_invoke_impls): Fix the s390x build.
469
470 2010-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
471
472         * method-to-ir.c (mono_method_to_ir): Add missing write barrier to stobj.
473
474 2010-05-26  Zoltan Varga  <vargaz@gmail.com>
475
476         * method-to-ir.c: Instead of freeing method headers immediately, save them in a list in
477         MonoCompile, and free them in mono_destroy_compile (), since the MonoType's in them could
478         be referenced even after the header is freed.
479
480         * aot-runtime.c: Remove the half finished support for decoding the .arm_exidx
481         section.
482
483 2010-05-25  Zoltan Varga  <vargaz@gmail.com>
484
485 2010-05-25  Bill Holmes  <billholmes54@gmail.com>
486
487         * genmdesc.c (main): Fixing the detection of the nacl switch.
488
489         Code is contributed under MIT/X11 license.
490
491 2010-05-25  Zoltan Varga  <vargaz@gmail.com>
492
493         * exceptions-amd64.c (mono_arch_find_jit_info_ext): Adjust the ip for LMF frames too.
494
495         * mini-llvm.c aot-compiler.c: More LLVM 2.8 updates.
496
497         * mini.h (LLVM_CHECK_VERSION): New helper macro.
498
499 2010-05-25  Miguel de Icaza  <miguel@novell.com>
500
501         * genmdesc.pl (build_spec): Add support for nacl: keyword also to
502         the Perl program
503
504         * genmdesc.c: Added support for nacl: key on the machine
505         description files to support the extra space required by Google
506         Native Client.
507
508 2010-05-23  Zoltan Varga  <vargaz@gmail.com>
509
510         * mini.c (mono_jit_compile_method_inner): Propagate exceptions in one more place.
511
512 2010-05-23  Zoltan Varga  <vargaz@gmail.com>
513
514         * mini.c (mono_jit_compile_method_inner): Propagate exceptions from
515         mono_runtime_class_init_full ().
516         (mono_jit_runtime_invoke): Ditto. Fixes #608073.
517
518 2010-05-22  Zoltan Varga  <vargaz@gmail.com>
519
520         * mini-llvm.c mini-llvm-cpp.cpp: Update after LLVM 2.8 changes.
521
522 2010-05-21  Zoltan Varga  <vargaz@gmail.com>
523
524         * mini-ppc.c (mono_arch_output_basic_block): Use ins->inst_c1 instead of p1, the
525         two are not the same on ilp32.
526
527 2010-05-21  Zoltan Varga  <vargaz@gmail.com>
528
529         * mini.c (mono_jit_compile_method_inner): Remove a DISABLE_JIT block which was
530         added by mistake.
531
532         * mini-ppc.c: Fix the DISABLE_JIT build.
533
534 2010-05-20  Zoltan Varga  <vargaz@gmail.com>
535
536         * aot-runtime.c (decode_resolve_method_ref): Rename this from decode_method_ref_2.
537         (make_writable): Remove this unused function.
538
539 2010-05-20  Zoltan Varga  <vargaz@gmail.com>
540
541         * aot-compiler.c: Collect all information about a PLT entry into a separate MonoPltEntry
542         structure. Make the labels to plt entries local symbols instead of assembler local
543         labels, since tha latter causes problems for the iphone linker.
544
545 2010-05-19  Zoltan Varga  <vargaz@gmail.com>
546
547         * mini-ppc.c (mono_ppc_is_direct_call_sequence): Handle one more case with ilp32.
548
549 2010-05-17  Zoltan Varga  <vargaz@gmail.com>
550
551         * mini-ppc.c (mono_ppc_is_direct_call_sequence): Handle ilp32.
552         (ppc_patch_full): Ditto.
553
554         * mini-arm.c (mono_arch_build_imt_thunk): Fix the fail_tramp case.
555
556         * method-to-ir.c (mono_method_to_ir): Use fast generic virtual method invocation
557         if gshared is enabled, to avoid asserts in the trampoline code.
558
559         * mini-ia64.c (mono_arch_build_imt_thunk): Implement generalized imt thunks
560         on ia64.
561
562 2010-05-15  Geoff Norton  <gnorton@novell.com>
563
564         * dwarfwriter.c, xdebug.c: Fix a pretty large leak when running in 
565         xdebug mode.
566
567 2010-05-14  Geoff Norton  <gnorton@novell.com>
568
569         * exceptions-x86.c: Fix the alignment of this trampoline so we dont get a 
570         misaligned stack on darwin.
571
572 2010-05-14  Zoltan Varga  <vargaz@gmail.com>
573
574         * mini-arm.c aot-compiler.c: Implement support for generalized imt thunks on
575         arm.
576
577 2010-05-14  Zoltan Varga  <vargaz@gmail.com>
578
579         * xdebug.c: Fix ARM support.
580
581 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
582
583         * exceptions-x86.c (mono_arch_handle_exception): Resume from the signal handler
584         and do most of the work on the normal stack.
585         (mono_x86_get_signal_exception_trampoline): New x86 specific trampoline function.
586
587 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
588
589         * aot-compiler.c: Put non-code data into the .rodata section on linux.
590
591 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
592
593         * exceptions-arm.c (mono_arch_handle_exception): Fix the cross-compile case.
594
595 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
596
597         * exceptions-arm.c (mono_arch_handle_exception): Resume from the signal handler
598         and do most of the work on the normal stack.
599
600 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
601
602         * exceptions-amd64.c (mono_arch_handle_exception): Resume from the signal handler
603         and do most of the work on the normal stack even if sigaltstack is disabled.
604
605 2010-05-12  Zoltan Varga  <vargaz@gmail.com>
606
607         * exceptions-amd64.c (mono_arch_sigctx_to_monoctx): Simplify this now that
608         UCONTEXT_REG_ constants are available on linux as well.
609         (mono_arch_monoctx_to_sigctx): Ditto.
610         (mono_arch_ip_from_context): Ditto.
611
612 2010-05-12  Zoltan Varga  <vargaz@gmail.com>
613
614         * debugger-agent.c (set_breakpoint): Fix setting of pending breakpoints in
615         other domains.
616
617 2010-05-11  Zoltan Varga  <vargaz@gmail.com>
618
619         * aot-compiler.c (emit_plt): Don't align the plt to a pagesize on x86, it is
620         no longer needed.
621
622 2010-05-10  Zoltan Varga  <vargaz@gmail.com>
623
624         * debugger-agent.c (insert_breakpoint): Print a more descriptive error message
625         if a breakpoint cannot be inserted.
626
627 2010-05-08  Zoltan Varga  <vargaz@gmail.com>
628
629         * aot-compiler.c (emit_and_reloc_code): Fix a warning.
630
631 2010-05-07  Zoltan Varga  <vargaz@gmail.com>
632
633         * debugger-agent.c (frame_commands): Return an error instead of asserting if
634         no JIT info is found for the method.
635
636 2010-05-05 Jonathan Chambers  <joncham@gmail.com>
637
638         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Protect against a NULL sigctx
639         in debug printf.
640
641 2010-05-05  Zoltan Varga  <vargaz@gmail.com>
642
643         * mini-amd64.c (mono_arch_get_trampolines): New arch specific function returning
644         a list of arch specific trampolines.
645
646         * aot-compiler.c (emit_trampolines): Use it.
647
648 2010-05-05  Zoltan Varga  <vargaz@gmail.com>
649
650         * tramp-<ARCH>.c exceptions-<ARCH>.c mini-trampolines.c mini-exceptions.c
651         aot-compiler.c: Use the _full trampoline creation functions on all platforms,
652         get rid of the _full from their name.
653
654 2010-05-05  Zoltan Varga  <vargaz@gmail.com>
655
656         * tramp-x86.c (mono_arch_create_generic_trampoline): Call
657         get_nullified_class_init_trampoline to remove some code duplication.
658
659 2010-05-03  Zoltan Varga  <vargaz@gmail.com>
660
661         * mini-x86.c (mono_arch_emit_prolog): Fix full-aot support for thread
662         attach.
663
664 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
665
666         * mini-amd64.c (mono_arch_emit_load_aotconst): New arch-specific function.
667
668         * tramp-amd64.c: Use emit_load_aotconst to remove some code duplication.
669
670         * aot-runtime.c (init_plt): Make the default entries point to the AOT trampoline,
671         there is no need to jump through the first plt entry.
672
673         * aot-runtime.c (mono_aot_get_named_code): Rename to mono_aot_get_trampoline.
674
675         * aot-runtime.c (mono_aot_get_plt_entry): Move the arch specific parts to an
676         arch-specific function.
677         (mono_aot_get_plt_info_offset): Ditto.
678
679         * aot-runtime.c (mono_aot_register_jit_icall): New helper function called from
680         mono_arch_init () to register jit icalls called from full-aot trampolines.
681         (load_function): Get rid of the arch specific #ifdefs, move the relevant code
682         to mini-<ARCH>.c.
683
684         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception_full): Get rid of
685         the specialized throw corlib exception trampoline, use a variant of the normal
686         trampoline along with a new C function which does the call to
687         mono_exception_from_token (), just like on x86.
688
689 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
690
691         * mini-trampolines.c aot-compiler.c tramp-<ARCH>.c exceptions-<ARCH>.c:
692         Reorganize the full aot trampoline creation functions, instead of taking a bunch
693         of out arguments, they will now take a MonoTrampInfo** out argument. Simplify
694         some code in aot-compiler.c because of this. Remove the non-full aot trampoline
695         creation functions on architectures which have the full-aot ones.
696
697 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
698
699         * mini-ppc.c (mono_arch_decompose_long_opts): Fix LNEG.
700
701 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
702
703         * mini-ppc.c (mono_arch_emit_exceptions): Initialize exc_throw_pos/found
704         explicitly, this seems to be required by some gcc versions at -O2.
705
706         * mini-arm.c: Ditto.
707
708 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
709
710         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Fix full-aot support for
711         has_target delegate invokes.
712
713 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
714
715         * mini.h (MonoAotTrampInfo): Rename this to MonoTrampInfo, add patches/unwind
716         info fields.
717
718         * aot-compiler.c (mono_aot_tramp_info_create): Rename to mono_tramp_info_create,
719         add patches/unwind info arguments, move to mini.c.
720
721         * mini-<ARCH>.c aot-compiler.c: Update after the above changes.
722
723 2010-04-30  Zoltan Varga  <vargaz@gmail.com>
724
725         * debugger-agent.c (type_commands): Add a new CMD_TYPE_GET_SOURCE_FILES_2
726         command which returns full path names.
727
728 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
729
730         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline_full): Set the
731         code_size output variable.
732
733         * mini-x86.c (mono_arch_emit_prolog): Compute the GOT addr before calling
734         mono_get_lmf_addr.
735         
736 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
737
738         * mini-x86.c (mono_arch_emit_prolog): Remove a disable_aot which is not needed.
739         (mono_arch_cpu_optimizazions): Make this a no-op when running with full aot.
740         (mono_arch_cpu_enumerate_simd_versions): Ditto.
741
742 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
743
744         * image-writer.c (asm_writer_emit_alignment): Use ilog2 for alignments for the
745         apple assembler.
746
747 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
748
749         * mini-x86.c (mono_arch_emit_prolog): Avoid an assert in full-aot mode.
750
751 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
752
753         * aot-runtime.c (load_function): Use TARGET_X86 instead of __i386__.
754
755 2010-04-28  Zoltan Varga  <vargaz@gmail.com>
756
757         * aot-compiler.c (emit_got_info): Double the buffer size to avoid an assert.
758
759 2010-04-27  Zoltan Varga  <vargaz@gmail.com>
760
761         * dwarfwriter.c (emit_line_number_info): Get rid of the usage of GArray, so
762         line number support works with eglib.
763
764 2010-04-27  Miguel de Icaza  <miguel@novell.com>
765
766         * driver.c, mini.c: Since linking with LLVM makes the default Mono
767         dirty an extra 70kb pages on startup we are now going to choose a
768         different strategy: ship mono and mono-llvm binaries, with the
769         second being the one that links with LLVM and defaults to LLVM
770         being enabled.
771
772 2010-04-27  Zoltan Varga  <vargaz@gmail.com>
773
774         * tramp-x86.c exceptions-x86.c mini-x86.c aot-compiler.c aot-runtime.c: 
775         Implement full-aot support on x86.
776
777         * method-to-ir.c: Always use a got var on x86 too, just like on ppc, because the
778         trampolines depend on it. Use MONO_ARCH_GOT_REG as the got register, instead of
779         the first register returned by get_global_int_regs ().
780
781         * cpu-x86.md: Fix the length of insertx_u1_slow.
782
783         * iltests.il.in: Disable tail call tests when running with full-aot.
784
785 2010-04-26  Zoltan Varga  <vargaz@gmail.com>
786
787         * method-to-ir.c (mono_op_to_op_imm_noemul): Fix a warning.
788
789 2010-04-24  Mark Probst  <mark.probst@gmail.com>
790
791         * mini.c, driver.c: Initialize mono_use_llvm in mono_main(), not
792         in the initializer, because it's non-constant.
793
794 2010-04-23  Miguel de Icaza  <miguel@novell.com>
795
796         * mini.c: Use MONO_USE_LLVM as an environment flag to turn the use
797         of LLVM on by default.   Used for buildbots and other setups.
798
799 2010-04-24  Zoltan Varga  <vargaz@gmail.com>
800
801         * mini.c: Set mono_use_llvm to FALSE even if mono is compiled with LLVM.
802
803 2010-04-23  Kornel Pal  <kornelpal@gmail.com>
804
805         * method-to-ir.c (mono_method_to_ir): Enable inlining of pointer-sized unmanaged
806         initonly static fields when using moving GC.
807
808         Contributed under MIT/X11 license.
809
810 2010-04-23  Geoff Norton  <gnorton@novell.com>
811
812         * mini-amd64.h: Darwin x86_64 support.
813
814 2010-04-20  Jonathan Pryor  <jpryor@novell.com>
815
816         * exceptions-arm.c: Remove platform checks in favor of configure checks.
817
818 2010-04-19  Jonathan Pryor  <jpryor@novell.com>
819
820         * exceptions-arm.c: Add Android support for sigcontext structure.
821
822 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
823
824         * mini.c (mono_jit_compile_method_inner): Implement the check for native func
825         wrappers correctly now that their wrapper info is NULL.
826
827 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
828
829         * mini.c (mono_jit_compile_method_inner): Avoid calling
830         mono_marshal_method_from_wrapper () for native func wrappers. Fixes #597189.
831
832 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
833
834         * genmdesc.c (inst_name): Define this as a copy of mono_inst_name in helpers.c,
835         so the latter can be #ifndef DISABLE_JIT-ed.
836
837         * helpers.c: Comment out the opstr array if DISABLE_JIT is set.
838
839 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
840
841         * method-to-ir.c driver.c: Disable a few more things when DISABLE_JIT is set.
842
843 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
844
845         * mini-llvm.c (emit_entry_bb): Fix support for simd arguments passed on the
846         stack.
847
848 2010-04-15  Zoltan Varga  <vargaz@gmail.com>
849
850         * debugger-agent.c (type_commands): Call mono_class_setup_methods () before
851         calling mono_class_num_methods (). Fixes #592244.
852
853 2010-04-14  Zoltan Varga  <vargaz@gmail.com>
854
855         * mini-x86.c (mono_arch_get_llvm_call_info): Handle empty structures correctly.
856
857         * mini-llvm.c: Disable LLVM for calls with non-default calling conventions.
858
859 2010-04-14  Zoltan Varga  <vargaz@gmail.com>
860
861         * method-to-ir.c (handle_box_inst): Merge into handle_box, simplify the merged
862         version.
863         * (handle_alloc): Ditto.
864         (mono_method_to_ir): Remove the constrained call restriction added by a previous
865         change, its not needed anymore.
866
867 2010-04-12  Zoltan Varga   Kumpera  <rkumpera@novell.com>
868
869         * mini-posix.c (sigusr1_signal_handler): Fix build on
870         non x86/amd64 systems.
871
872 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
873
874         * method-to-ir.c (mono_method_to_ir): Disable generic sharing for constrained
875         calls where the constrained class needs a context. Fixes #595863.
876
877         * iltests.il.in: Add a test.
878
879 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
880
881         * mini.c (mini_method_compile): Disable llvm+methods with clauses again, llvm
882         2.6/SVN seems to have broken support for them.
883
884 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
885
886         * mini-llvm.c: Fix support for LLVM 2.6.
887
888 2010-04-10  Zoltan Varga  <vargaz@gmail.com>
889
890         * debugger-agent.c (thread_commands): Add a GET_ID command to get the
891         MonoInternalThread belonging to the thread.
892
893 Fri Apr 9 15:28:01 CEST 2010 Paolo Molaro <lupus@ximian.com>
894
895         * driver.c, optflags-def.h, ir-emit.h: introduce an unsupported
896         unsafe optimization that will remove bound checks.
897
898 2010-04-08  Kornel Pal  <kornelpal@gmail.com>
899
900         * method-to-ir.c (mini_emit_inst_for_method): Fix a typo that caused
901         CompareExchange not to be inlined for I8.
902
903         Contributed under MIT/X11 license.
904
905 2010-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
906
907         * array.cs: Add tests for cast between primitive array types.
908
909 2010-04-07 Andreia Gaita  <avidigal@novell.com>
910
911         * Makefile.am: create a convenience library for moon to link with
912
913 2010-04-07 Paolo Molaro <lupus@ximian.com>
914
915         * method-to-ir.c: optimize array accesses from generic interfaces.
916
917 2010-04-06  Zoltan Varga  <vargaz@gmail.com>
918
919         * mini-llvm.c: Update after the memset/memcpy intrinsics changes in LLVM SVN.
920
921 2010-04-05 Rodrigo Kumpera  <rkumpera@novell.com>
922
923         * method-to-ir.c (mono_method_to_ir): Handle call to virtual final methods
924         of marshalbyref classes.
925
926         Fixes #515884.
927
928 2010-04-05 Rodrigo Kumpera  <rkumpera@novell.com>
929
930         * aot-compiler.c (emit_exception_debug_info): Encode try holes
931         information.
932
933         * aot-runtime.c (decode_exception_debug_info): Decode try holes
934         information.
935
936         * mini.h: Increase AOT version.
937
938 2010-04-04  Andreas Faerber  <andreas.faerber@web.de>
939
940         * mini-x86.h: Only enable soft debugger when using sigaction or on
941         Windows. Fixes build on Haiku (lacks siginfo_t).
942
943         Code is contributed under MIT/X11 license.
944
945 2010-04-02  Andreas Faerber  <andreas.faerber@web.de>
946
947         * mini.h, mini-x86.h: Suppress sigaction for Haiku, add support for
948         BeOS-style signal handlers.
949
950         Code is contributed under MIT/X11 license.
951         
952 2010-04-02  Zoltan Varga  <vargaz@gmail.com>
953
954         * mini-posix.c (sigusr1_signal_handler): Fix openbsd support.
955
956 2010-04-01 Rodrigo Kumpera  <rkumpera@novell.com>
957
958         * mini-exceptions.c: Fix win32 build.
959
960 2010-04-01  Mark Probst  <mark.probst@gmail.com>
961
962         * mini.c, driver.c: Call mono_gc_base_init() before
963         mono_debug_init().
964
965 2010-04-01  Sebastien Pouliot  <sebastien@ximian.com>
966
967         * method-to-ir.c (ensure_method_is_allowed_to_[access_field|
968         call_method]): Delegate the actual work in security-core-clr.c
969         to ease code sharing.
970
971 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
972
973         * decompose.c (mono_decompose_opcode): Set the cfg exception if the unsupported
974         float conv.ovf.un opcodes are encountered, instead of asserting later.
975         Fixes #566296.
976
977 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
978
979         * decompose.c (mono_decompose_opcode): Add OP_ICONV_TO_U4_UN as a no-op.
980
981         * iltests.il.in: Add a test.
982
983 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
984
985         * mini-amd64.c (mono_arch_emit_call): Fail compilation if an argument is too
986         large. Fixes #567040.
987
988         * method-to-ir.c: Call CHECK_CFG_EXCEPTION after emitting a call.
989
990 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
991
992         * method-to-ir.c (handle_ccastclass): Call save_cast_details (). Fixes
993         #592711.
994
995 2010-03-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
996
997         * mini-trampolines.c: Surround mono_handler_block_guard_trampoline and
998         mono_create_handler_block_trampoline with the proper #ifdef so that it
999         compiles on amd64.
1000
1001 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1002
1003         * mini-exceptions.c: Introduce mono_walk_stack_full, which
1004         allows to select if it's new or old context that is passed to 
1005         the callback.
1006
1007         * mini-exceptions.c (mono_handle_exception_internal): Handle the
1008         case when executing a guarded handler from the EH machinery.
1009
1010         * mini-exceptions.c (mono_install_handler_block_guard): New function
1011         responsible for checking for handler blocks, installing the guard and
1012         clearing abort state.
1013
1014         * mini-posix.c (sigusr1_signal_handler): Call mono_install_handler_block_guard
1015         to check for handler blocks and skip interruption logic if one was found.
1016
1017         * mini-trampolines.c (mono_handler_block_guard_trampoline): Function called
1018         by the handler block guard trampoline. Resumes interruption by raising the
1019         pending ThreadAbortException.
1020
1021         * mini.c (create_jit_info): Calculate the end address of a finally block.
1022
1023         * mini-x86.c (mono_arch_install_handler_block_guard): Patch the return address
1024         of a finally block to a specified address and return the old one.
1025
1026         * tramp-x86.c (mono_arch_create_handler_block_trampoline): The handler block
1027         trampoline patches the original return address and calls the trampoline function.
1028
1029 2010-03-30  Zoltan Varga  <vargaz@gmail.com>
1030
1031         * mini-trampolines.c (mono_aot_trampoline): Remove some dead code.
1032
1033         * aot-runtime.c (mono_aot_patch_plt_entry): New helper function, which only
1034         does the patching if the callee is in the same domain.
1035
1036         * aot-runtime.c mini-trampolines.c: Call mono_aot_patch_plt_entry instead
1037         of mono_arch_patch_plt_entry ().
1038
1039 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1040
1041         * mini.c (create_jit_info): Fix try block hole length encoding.
1042
1043 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
1044
1045         * mini.c (create_jit_info): Emit saner debug spew. Now it doesn't
1046         duplicate information and print offsets instead of absolute addresses.
1047
1048 2010-03-29  Zoltan Varga  <vargaz@gmail.com>
1049
1050         * debugger-agent.c (jit_end): Send type loads for types loaded before the VMStart
1051         event is sent. Fixes #591733.
1052
1053 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
1054
1055         * mini-posix.c (SIG_HANDLER_SIGNATURE): Handle the case when ctx is NULL on
1056         OpenBSD.
1057
1058 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
1059
1060         * debugger-agent.c (mono_debugger_agent_init): Set the GC type of the
1061         thread_to_tls hash table.
1062
1063         * image-writer.c (bin_writer_emit_writeout): Fix the size of the got.plt
1064         section. Fixes #591000.
1065
1066 2010-03-26  Andreas Faerber  <andreas.faerber@web.de>
1067
1068         * Makefile.am (version.h): Check for pure .git directory only,
1069         fixes SVN revision when using git without git-svn.
1070
1071         Contributed under MIT/X11 license.
1072
1073 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
1074
1075         * aot-runtime.c: Apply some openbsd changes from openbsd ports.
1076
1077 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1078
1079         * basic-simd.cs: Test for vector x scalar binary operators.
1080
1081 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1082
1083         * simd-intrincs.c (simd_intrinsic_emit_binary): Support binary
1084         intrinsics with expanded scalar arguments.
1085
1086 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
1087
1088         * mini-exceptions.c (get_exception_catch_class): Non catch clauses
1089         don't have an exception class, so don't decode it. This would crash
1090         with filter clauses.
1091
1092 2010-03-24  U-anarquia\miguel  <miguel@anarquia>
1093
1094         Make sure that trunk builds with DISABLE_JIT, an update to the
1095         PlayStation 3 port.
1096         
1097         * mini.c (mini_get_shared_method): this code seems to be necessary
1098         regardless of whether DISABLE_JIT has been defined.
1099
1100         (mono_jit_compile_method_inner): it seems that this method is
1101         required even in full AOT mode, so ifdef out only the pieces that
1102         try to genrate code (the body of code that applies patches to the
1103         code).  
1104
1105         (mini_method_compile): do not compile when using DISABLE_JIT.
1106
1107         * mini-ppc.c (mono_arch_get_allocatable_int_vars)
1108         (mono_arch_output_basic_block, mono-arch_emit_exceptions): Do not
1109         compile when DISABLE_JIT is set.
1110
1111 2010-03-24  Mark Probst  <mark.probst@gmail.com>
1112
1113         * mini.c (mono_create_tls_get): Only create a TLS operation if the
1114         arch really supports it.
1115
1116 2010-03-24  Mark Probst  <mark.probst@gmail.com>
1117
1118         * mini-x86.c, mini-x86.h, mini.c: CEE_MONO_TLS support for Darwin/x86.
1119
1120 2010-03-23  Neale Ferguson <neale@sinenomine.net>
1121
1122         * exceptions-s390x.c: Add support for
1123         mono_arch_get_throw_corlib_exception and fix throw by name.
1124
1125         * mini-s390x.c: Add IMT support; Fix stack parameter passing
1126         logic (especially for varargs); Correct localloc sizing; Add
1127         mono_arch_get_this_arg_from_call and
1128         mono_arch_get_this_arg_from_call.
1129
1130         * mini-s390x.h: Add support for facility list extraction;
1131         Correct/update MONO_ARCH_xxx settings.
1132
1133         * mini-s390.c: Minor corrections to instruction output for
1134         varargs. No IMT implementation - I think it's time to deprecate
1135         s390 and just leave s390x.
1136
1137         * tramp-s390x.c: Correct creation of trampoline instruction
1138
1139
1140         * cpu-s390x.md: Update some instruction lengths
1141
1142 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
1143
1144         * mini-generic-sharing.c (fill_in_rgctx_template_slot): Remove an assert which
1145         can be hit with partial sharing.
1146
1147         * mini-generic-sharing.c (get_shared_class): Handle partially shared methods
1148         in non-shared classes correctly.
1149         (generic_inst_is_sharable): Allow all primitive types in partial sharing.
1150         Turn on partial sharing.
1151
1152 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
1153
1154         * mini-amd64.h: Put back MONO_ARCH_NOMAP32BIT for OpenBSD which was removed
1155         by mistake.
1156
1157 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
1158
1159         * method-to-ir.c (mono_method_to_ir): Handle the failure of
1160         mono_method_signature ().
1161
1162         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
1163
1164         * mini.c (mini_method_compile): Get the signature of cfg->method early with
1165         error checking, so later calls do not need error checking.
1166
1167 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
1168
1169         * exceptions-amd64.c: Add support for OpenBSD which has no UCONTEXT_GREGS.
1170
1171         * mini-amd64.h: Enable MONO_ARCH_USE_SIGACTION on OpenBSD as well.
1172
1173 2010-03-22 Rodrigo Kumpera  <rkumpera@novell.com>
1174
1175         * mini-exceptions.c (mono_handle_exception_internal): Don't
1176         check try_end for archs different than s390. 
1177
1178         * mini.c (create_jit_info): Don't crash if the finallt block is the
1179         last one.
1180
1181 2010-03-22 Rodrigo Kumpera  <rkumpera@novell.com>
1182
1183         * driver.c (mono_main): Don't free global codeman under linux since
1184         glic now peeks at code on stack for more archs than just amd64.
1185
1186 Mon Mar 22 18:09:09 CET 2010 Paolo Molaro <lupus@ximian.com>
1187
1188         * mini.c, method-to-ir.c: changes to support compressed interface
1189         bitmaps.
1190
1191 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
1192
1193         * mini-x86.h: Applied patch from Robert Nagy (Robert@openbsd.org).
1194         Use sigaction on OpenBSD too.
1195
1196 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
1197
1198         * debugger-agent.c (event_req_matches_assembly): Handle request modifiers too.
1199
1200 2010-03-21  Andreas Faerber  <andreas.faerber@web.de>
1201
1202         * debugger-agent.c: #include sys/select.h for fd_set.
1203
1204         Code is contributed under MIT/X11 license.
1205
1206 2010-03-21  Zoltan Varga  <vargaz@gmail.com>
1207
1208         * mini.c (SIG_HANDLER_SIGNATURE): Fix the build on platforms without sigaction
1209         (openbsd+amd64 ?).
1210
1211 2010-03-21  Zoltan Varga  <vargaz@gmail.com>
1212
1213         * mini-ppc.c (mono_arch_emit_exceptions): Avoid an assert in ppc_patch () for
1214         some large methods with lots of exception handlers. Fixes #440924.
1215
1216 Sat Mar 20 11:56:24 CET 2010 Paolo Molaro <lupus@ximian.com>
1217
1218         * method-to-ir.c: remove code duplication for interface checks.
1219
1220 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
1221
1222         * debugger-agent.c (clear_event_requests_for_assembly): New helper function.
1223         (assembly_unload): Clear all event requests referencing the to-be unloaded
1224         assembly.
1225
1226
1227 Fri Mar 19 16:45:20 CET 2010 Paolo Molaro <lupus@ximian.com>
1228
1229         * mini.h, mini-exceptions.c: restore the state of the stack
1230         guard page permissions.
1231
1232 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
1233
1234         * mini-trampolines.c (common_call_trampoline): Remove the condition guarding the
1235         call site patching code, it doesn't appear to be needed.
1236
1237 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
1238
1239         * mini-generic-sharing.c: Add infrastructure for partial sharing, ie.
1240         sharing generic methods whose type arguments are a mix of reference and
1241         non-reference types. Not yet turned on.
1242
1243         * mini.c (mini_get_shared_method): New helper function to return
1244         the method which will be compiled/registered in the JIT tables when doing
1245         generic sharing.
1246         (mono_domain_lookup_shared_generic): Moved to mini.c from mini-generic-sharing.c,
1247         use mini_get_shared_method ().
1248
1249         * mini.c (mini_method_compile): Register the same method which is compiled when
1250         doing generic sharing.
1251
1252         * mini.c aot-compiler.c aot-runtime.c: Add support for partial sharing.
1253
1254         * generics.cs: Add partial sharing tests.
1255
1256 2010-03-17 Jerry Maine  <crashfourit@gmail.com>
1257
1258         * mini.h : Changed the SIMD_VERSION* enum values to match those in Mono.Simd.AccelMode.
1259                    Add an enum value that or's all possable values together. Add an enum value
1260                    that marks the end of the used bit indexes.
1261
1262         * mini-amd64.c : Make changes to match the changes in mini.h 
1263
1264         * mini-x86.c : Make changes to match the changes in mini.h
1265
1266         * simd-intrinsics.c : Reorder the SimdIntrinsc struct to add more bits to
1267                    simd_version to support more simd versions. Changed the name of
1268                    simd_version to simd_version_flags to make it more intuitive that
1269                    it now contains bit flags. Reordered the *_intrinsics arrays to
1270                    match the changes above. Changed emit_intrinsics() to use the new
1271                    setup mentioned above.
1272
1273         Code is contributed under MIT/X11 license.
1274
1275 2010-03-17 Rodrigo Kumpera  <rkumpera@novell.com>
1276
1277         * mini-*.c (mono_arch_output_basic_block): Record try block holes on all
1278         remaining archs. Alpha and hppa maintainers, please stand up.
1279
1280 2010-03-17  Zoltan Varga  <vargaz@gmail.com>
1281
1282         * mini-ppc.c (mono_arch_build_imt_thunk): Always save and restore r11 since it
1283         is needed even when fail_tramp!=NULL.
1284
1285 2010-03-17  Zoltan Varga  <vargaz@gmail.com>
1286
1287         * debugger-agent.c (insert_breakpoint): Write a log message.
1288
1289 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1290
1291         * iltests.il.in: Add a few tests for LEAVE going over multiple
1292         finally clauses.
1293
1294 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1295
1296          * mini-x86.c (mono_arch_output_basic_block): Record try block holes.
1297
1298 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
1299
1300         * mini.h (MonoBasicBlock): Add native_length field.
1301         * mini.h (MonoCompile): Add try_block_holes field.
1302         * mini.h (MonoInst): Add exception_clause pointer to
1303         the data union.
1304
1305         * mini.c (mono_codegen): Calculate MonoBasicBlock::native_length.
1306         * mini.c (mono_cfg_add_try_hole): New function to register possible
1307         holes in try blocks.
1308         * mini.c (create_jit_info): Fill in the holes information.
1309
1310         * mini-exceptions.c: Verify for holes when checking if an IP is covered
1311         by a try block.
1312
1313         * method-to-ir.c: Add the EH clause to the CALL_HANDLE instruction.
1314
1315 Tue Mar 16 13:16:16 CET 2010 Paolo Molaro <lupus@ximian.com>
1316
1317         * jit-icalls.c: adjusted for the array API changes.
1318
1319 2010-03-16  Zoltan Varga  <vargaz@gmail.com>
1320
1321         * iltests.il.in: Disable the fconv_to_i test on sparc too.
1322
1323 2010-03-16  Zoltan Varga  <vargaz@gmail.com>
1324
1325         * debugger-agent.c: Simplify the way breakpoints are processed by removing
1326         the 'pending' flag. This fixes support for appdomains too.
1327
1328
1329 Mon Mar 15 18:25:49 CET 2010 Paolo Molaro <lupus@ximian.com>
1330
1331         * mini-amd64.c, mini-ia64.c: remove direct access to method->header.
1332
1333 2010-03-12  Zoltan Varga  <vargaz@gmail.com>
1334
1335         * simd-intrinsics.c (simd_intrinsic_emit_getter): Don't emit shuffle opcodes
1336         when using LLVM, LLVM generates it itself when needed.
1337
1338         * mini-llvm-cpp.cpp (mono_llvm_build_aligned_load): New helper function.
1339
1340         * mini-llvm.c: Use an unaligned load for OP_LOADX_MEMBASE. Add zero extension
1341         to some OP_EXTRACT_ opcodes. Fix the naming of some sse intrinsics. Fix
1342         OP_ANDNPS/OP_ANDNPD.
1343
1344 2010-03-11  Zoltan Varga  <vargaz@gmail.com>
1345
1346         * tramp-x86.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code' for
1347         the pc instead of 'buf'. Fix the call to mono_arch_flush_icache ().
1348         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
1349
1350 2010-03-11  Martin Baulig  <martin@ximian.com>
1351
1352         * debugger-agent.c (type_commands): Add NULL check to
1353         `CMD_TYPE_GET_SOURCE_FILES'.
1354
1355 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
1356
1357         * mini-ppc.c (mono_arch_decompose_opts): Fix OP_ICONV_TO_R_UN when cross-compiling.
1358
1359 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
1360
1361         * mini-codegen.c (mono_peephole_ins): Fix the OP_FMOVE optimization. Fixes
1362         #586664.
1363
1364         * iltests.il.in: Add a test.
1365
1366 2010-03-05  Martin Baulig  <martin@ximian.com>
1367
1368         Add support for aborting invocations.
1369
1370         * debugger-agent.c
1371         (InvokeData): Added `InvokeData *last_invoke'.
1372         (DebuggerTlsData): Renamed `invoke' into `pending_invoke' and
1373         added a new `invoke' field to keep the `InvokeData *' throughout
1374         the invocation.
1375         (ErrorCode): Added `ERR_NO_INVOCATION'.
1376         (CmdVM): Added `CMD_VM_ABORT_INVOKE'.
1377         (mono_debugger_agent_handle_exception): Don't report any exception
1378         if an abort was requested.
1379         (invoke_method): Store the `InvokeData *' in `tls->invoke'; reset
1380         a thread abort if necessary.
1381         (vm_commands): Implement `CMD_VM_ABORT_INVOKE'.
1382
1383 2010-03-08  Rodrigo Kumpera  <rkumpera@novell.com>
1384
1385         * method-to-ir.c: Store the initial basic block returned by mono_basic_block_split
1386         so we can release the whole list and not just the first one. Free
1387         it in more places as well.
1388
1389 2010-03-08  Rodrigo Kumpera  <rkumpera@novell.com>
1390
1391         * method-to-ir.c: Revert r153222 as it doesn't belong here.
1392
1393 Mon Mar 8 17:58:26 CET 2010 Paolo Molaro <lupus@ximian.com>
1394
1395         * mini.h, *.c: prepare for MonoMethodHeader to become a transient entity.
1396
1397 Mon Mar 8 17:35:26 CET 2010 Paolo Molaro <lupus@ximian.com>
1398
1399         * driver.c: report also other misc build options.
1400
1401 2010-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
1402
1403         * method-to-ir.c: Generate better code for the NewObject
1404         intrinsic.
1405         
1406 2010-03-07  Zoltan Varga  <vargaz@gmail.com>
1407
1408         * branch-opts.c (mono_if_conversion): Disable one of the cases when deadce
1409         is disabled. Fixes #582322.
1410
1411         * iltests.il.in: Add a test.
1412
1413 2010-03-06  Zoltan Varga  <vargaz@gmail.com>
1414
1415         * tramp-amd64.c (mono_arch_create_monitor_exit_trampoline_full): Delegate
1416         the handling of obj->synchronization == null and owner != current thread to
1417         mono_monitor_exit ().
1418
1419         * tramp-x86.c (mono_arch_create_monitor_exit_trampoline_full): Ditto.
1420
1421
1422 Sat Mar 6 18:14:15 CET 2010 Paolo Molaro <lupus@ximian.com>
1423
1424         * mini.c: change the way emulated opcode info is stored and save about
1425         4 KB of runtime memory.
1426
1427 2010-03-04  David S. Miller  <davem@davemloft.net>
1428
1429        * mini-sparc.h: Always use MONO_ARCH_USE_SIGACTION.  Linux kernels
1430        that don't provide the siginfo in the second signal handler argument
1431        are buggy, and this has been fixed for years.
1432        * mini.h (GET_CONTEXT): Remove __sparc__ special case.
1433        (SIG_HANDLER_SIGNATURE, SIG_HANDLER_PARMS): Likewise.
1434
1435 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
1436
1437         * aot-runtime.c (find_symbol): Fix a leak.
1438         (decode_patch): Ditto.
1439
1440 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
1441
1442         * mini.h (MONO_INST_IS_TEMP): Kill this unused define.
1443
1444 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
1445
1446         * mini.c (mono_resolve_patch_target): Fix an uninitialized variable.
1447
1448 Wed Mar 3 19:19:21 CET 2010 Paolo Molaro <lupus@ximian.com>
1449
1450         * method-to-ir.c: MONO_PROFILE_STRING_ALLOC is dead.
1451
1452 2010-03-03  Rodrigo Kumpera  <rkumpera@novell.com>
1453
1454         * method-to-ir.c (mono_method_to_ir): Don't create a runtime vtable
1455         to check for errors, it's enough to create the metadata open.
1456
1457         Fixes #562150
1458
1459 2010-03-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1460
1461         * trace.c|h:
1462         * mini-exceptions.c: Add support for printing stack traces when handling
1463         exceptions, and when printing exceptions thrown while tracing also print
1464         the exception message.
1465
1466 2010-03-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
1467
1468         * trace.c: We need to parse exclude tokens ('-') before string tokens,
1469         since the exclude token is a valid string character.
1470
1471 2010-03-02  Levi Bard  <levi@unity3d.com>
1472
1473         * debugger-agent.c: Invalidate thread stacks on domain unload.
1474
1475 2010-03-02  Mark Probst  <mark.probst@gmail.com>
1476
1477         * method-to-ir.c: Emit dummy_use for stored reference after write
1478         barriers to make sure the object is pinned if the GC interrupts
1479         before the write barrier is done.
1480
1481 2010-03-02  Zoltan Varga  <vargaz@gmail.com>
1482
1483         * cpu-<ARCH>.md: dummy_use was missing src1:i.
1484
1485 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1486
1487         * debugger-agent.c: Add a log message printing the protocol version.
1488
1489 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1490
1491         * debugger-agent.c: Add a new command to communicate the protocol version used
1492         by the client. This could be used to allow newer runtimes to communicate with
1493         older clients.
1494
1495 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1496
1497         * debugger-agent.c (domain_commands): Add a new command to create a boxed value.
1498
1499 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1500
1501         * debugger-agent.c (type_commands): Fix the setting of fields with a reference
1502         type.
1503
1504 Mon Mar 1 15:20:44 CET 2010 Paolo Molaro <lupus@ximian.com>
1505
1506         * mini-arm.c: make the arm cpu arch configurable with the
1507         MONO_CPU_ARCH env var (for example: "armv4 thumb").
1508         Bug #584198.
1509
1510 Mon Mar 1 14:48:35 CET 2010 Paolo Molaro <lupus@ximian.com>
1511
1512         * mini.c, mini.h, driver.c: added the --jitmap option to enable
1513         support for the perf tool on Linux.
1514
1515 Mon Mar 1 14:43:55 CET 2010 Paolo Molaro <lupus@ximian.com>
1516
1517         * method-to-ir.c: make string.InsertenalSetChar() specialization
1518         effective.
1519
1520 2010-03-01  Robert Jordan  <robertj@gmx.net>
1521
1522         * Makefile.am: fix the non-static build.
1523
1524 2010-02-26  Zoltan Varga  <vargaz@gmail.com>
1525
1526         * mini-generic-sharing.c: Move the contents of ../metadata/generic-sharing.c
1527         here.
1528
1529 2010-02-26  Robert Jordan  <robertj@gmx.net>
1530
1531         * tasklets.c (continuation_store): Return from an error condition
1532         immediately.
1533
1534 2010-02-26  Martin Baulig  <martin@ximian.com>
1535
1536         * debug-debugger.c (MonoDebuggerInfo): Added `abort_runtime_invoke'.
1537
1538         * debug-mini.c
1539         (MonoDebuggerThreadInfo): Added `internal_flags'.
1540         (MonoDebuggerInternalThreadFlags): New enum.
1541         (_mono_debugger_throw_exception): Don't signal the debugger if a
1542         type abort was requested.
1543         (_mono_debugger_unhandled_exception): Likewise.
1544         (mono_debugger_abort_runtime_invoke): New method to abort an invocation.
1545         (mono_debugger_runtime_invoke): If the debugger requested a thread
1546         abort during the invocation, reset it here.
1547
1548 2010-02-26  Martin Baulig  <martin@ximian.com>
1549
1550         * debug-mini.c (MonoDebuggerThreadInfo): Use `MonoInternalThread *'
1551         instead of `MonoThread *'.
1552
1553 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
1554
1555         * aot-runtime.c (mono_aot_find_jit_info): Use a merge sort for sorting the
1556         code offsets table, as it is mostly sorted.
1557
1558 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
1559
1560         * debugger-agent.c (do_invoke_method): Fix invoking of static methods on vtypes.
1561         Fixes #582991.
1562
1563 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
1564
1565         * driver.c (mono_main): Get rid of mono_setup_vtable_in_class_init.
1566
1567 Wed Feb 24 15:58:03 CET 2010 Paolo Molaro <lupus@ximian.com>
1568
1569         * Makefile.am: build the new ABI version of the libmono library.
1570         * debugger-agent.c, mini.c: fix warnings with the new API.
1571         * jit.h: don't depend on glib.h being included.
1572
1573 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
1574
1575         * method-to-ir.c (mono_method_to_ir): Implement AOT support for fast TLS access.
1576
1577 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
1578
1579         * method-to-ir.c (mono_method_to_ir): Implement support for fast access to
1580         ThreadStatic variables.
1581
1582 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
1583
1584         * debugger-agent.c (notify_thread): Skip terminated threads, since their tls
1585         data is not freed yet. Fixes #582460.
1586
1587 2010-02-23  Zoltan Varga  <vargaz@gmail.com>
1588
1589         * debugger-agent.c: Add support for the caught/uncaught flags on exception
1590         event requests. Bump protocol minor version.
1591
1592 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
1593
1594         * decompose.c (mono_decompose_long_opts): Handle OP_LCONV_TO_OVF_I8 here too.
1595
1596 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
1597
1598         * decompose.c (mono_decompose_opcode): Handle OP_LCONV_TO_OVF_I8. Fixes
1599         #581950.
1600
1601         * iltests.il.in: Add a test.
1602
1603 2010-02-22  Rodrigo Kumpera  <rkumpera@novell.com>
1604
1605         * mini.c (inline_method): Check for loader errors.
1606
1607 2010-02-22  Rodrigo Kumpera  <rkumpera@novell.com>
1608
1609         * mini.c (mono_method_check_inlining): Use !mono_method_get_header_summary
1610         instead of mono_method_get_header as it doesn't decode locals
1611         so the called method can have unresolved dependencies that will only
1612         be satisfied after the current method is JIT'd.
1613
1614         Fixes #550968.
1615
1616 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
1617
1618         * basic.cs (test_0_div_opt): Speed this up a bit.
1619
1620 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
1621
1622         * mini-amd64.c: Fix DISABLE_JIT support after the latest changes.
1623
1624         * mini.c (mono_jit_create_remoting_trampoline): Call
1625         mono_create_specific_trampoline () instead of
1626         mono_arch_create_specific_trampoline ().
1627
1628         * mini-trampolines.c tramp-arm.c: Disable more stuff when DISABLE_JIT is set.
1629
1630 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
1631
1632         * unwind.c (mono_unwind_get_cie_program): New function, moved here from
1633         aot-compiler.c, so it can be found even if DISABLE_JIT is set.
1634
1635         * aot-compiler.c xdebug.c: Update callers of mono_arch_unwind_get_cie_program ().
1636
1637         * mini-amd64.c: Fix DISABLE_JIT support.
1638
1639 2010-02-20  Geoff Norton  <gnorton@novell.com>
1640
1641         * aot-runtime.c: Ensure we dont leak a held lock when unwinding exceptions.
1642
1643 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
1644
1645         * debugger-agent.c (mono_debugger_agent_handle_exception): Receive two contexts,
1646         one for the throw and one for the catch. Mark uncaught exceptions by a NULL
1647         CATCH_TXT. Send normal exception events for unhandled exceptions too.
1648         (mono_debugger_agent_handle_unhandled_exception): Remove this, merged into
1649         handle_exception.
1650
1651 2010-02-18  Zoltan Varga  <vargaz@gmail.com>
1652
1653         * exceptions-x86.c (mono_arch_get_restore_context): Changes this so it restores
1654         edx/ecx too. This is needed to support OP_SEQ_POINT.
1655
1656 2010-02-18  Zoltan Varga  <vargaz@gmail.com>
1657
1658         * exceptions-amd64.c (get_throw_trampoline): Add xdebug info.
1659
1660         * method-to-ir.c (mono_method_to_ir): Fix SIZEOF in dynamic methods.
1661
1662 2010-02-16  Zoltan Varga  <vargaz@gmail.com>
1663
1664         * mini-llvm.c aot-compiler.c aot-runtime.c unwind.c: Finish support
1665         LLVM+AOT+exceptions, not enabled yet.
1666
1667 2010-02-15  Zoltan Varga  <vargaz@gmail.com>
1668
1669         * mini.c (SIG_HANDLER_SIGNATURE): Fix the windows build.
1670
1671 2010-02-15  Zoltan Varga  <vargaz@gmail.com>
1672
1673         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Emit
1674         xdebug info for these.
1675
1676         * mini-trampolines.c (common_call_trampoline): Use mini_jit_info_table_find ()
1677         in a few places.
1678
1679         * mini.c (mini_get_vtable_trampoline): Make this take a 'slot_index' argument,
1680         not used yet.
1681
1682 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
1683
1684         * aot-compiler.c (load_profile_files): Update after the profiler changes.
1685
1686 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
1687
1688         * mini.c (mono_jit_compile_method_inner): Avoid passing icall wrappers to
1689         mono_profiler_method_end_jit, since the profiler has no way to process wrappers.
1690
1691         * aot-runtime.c mini.c: Resurrect the aot pagefault profiling stuff, it is useful
1692         for mtouch.
1693
1694 2010-02-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
1695
1696         * debugger-agent.c: handle incomplete reads and EINTR in
1697         recv()/send(). This could have been causing random
1698         disconnections.
1699
1700 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
1701
1702         * aot-runtime.c (decode_exception_debug_info): Fix aot support for sequence
1703         points.
1704
1705         * mini-arm.c (mono_arch_allocate_vars): Allocate the seq point related vars first
1706         so they have small offsets. Fixes #566311.
1707
1708 2010-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
1709
1710         * method-to-ir.c (mono_method_check_inlining): Check for loader errors.
1711
1712 2010-02-11  Zoltan Varga  <vargaz@gmail.com>
1713
1714         * mini-amd64.c: Remove the special casing of byref in a few places now that
1715         mini_type_get_underlying_type () handles it.
1716
1717         * mini-generic-sharing.c (mini_type_get_underlying_type): Handle byref as well
1718         by returning native int. Fixes #577984.
1719
1720 2010-02-11  Zoltan Varga  <vargaz@gmail.com>
1721
1722         * method-to-ir.c (handle_isinst): Factor out the is_complex_isinst check into
1723         a macro.
1724
1725         * mini-llvm.c (exception_cb): Put the clause index into the type info instead
1726         of putting the clause itself.
1727
1728         * mini-arm.c mini.c linear-scan.c: Disable more stuff when DISABLE_JIT is used.
1729
1730 2010-02-09  Zoltan Varga  <vargaz@gmail.com>
1731
1732         * unwind.c (mono_unwind_frame): Use read32 for reading a 32 bit value, since it
1733         might be unaligned.
1734
1735 2010-02-10  Geoff Norton  <gnorton@novell.com>
1736
1737         * aot-compiler.c: Make the number of IMT trampolines configurable as well.
1738
1739 2010-02-08  Zoltan Varga  <vargaz@gmail.com>
1740
1741         * aot-compiler.c (emit_code): Create the ut trampolines here, so they work for
1742         llvm methods too.
1743
1744         * aot-compiler.c (emit_code): Don't add the llvm label prefix to 'methods', since
1745         it is not an LLVM generated symbol.
1746
1747         * mini-llvm.c (emit_entry_bb): Fix the handling of simd types.
1748
1749         * method-to-ir.c (handle_castclass): Turn off the more efficient isinst/castclass
1750         implementation in gshared mode because it causes regressions.
1751
1752         * mini-trampolines.c: Add a stat for the number of calls to trampolines.
1753
1754         * image-writer.c (asm_writer_emit_global): Don't prepend the global prefix, it
1755         should be done by the caller.
1756
1757         * mini-llvm.c (mono_llvm_emit_method): Don't make the debug symbols global.
1758
1759         * aot-compiler.c (emit_code): Add the llvm label prefix before 'methods'.
1760
1761         * mini-exceptions.c (mini_jit_info_table_find): Search the root domain as well,
1762         since mono_jit_info_table_find () doesn't do it anymore.
1763
1764         * mini-generic-sharing.c debugger-agent.c: Call mini_jit_info_table_find ()
1765         instead of mono_jit_info_table_find ().
1766
1767 2010-02-07  Zoltan Varga  <vargaz@gmail.com>
1768
1769         * aot-compiler.c aot-runtime.c: Add support for MONO_WRAPPER_WRITE_BARRIER.
1770
1771         * aot-compiler.c (encode_method_ref): Update after the removal of
1772         mono_gc_get_managed_allocator_type ().
1773
1774         * method-to-ir.c (mono_method_to_ir): Place a seq point just before a RET.
1775         Fixes #564538.
1776
1777 2010-02-06  Zoltan Varga  <vargaz@gmail.com>
1778
1779         * method-to-ir.c (handle_castclass): Use the icall for classes with variant
1780         generic params as well.
1781         (handle_isinst): Ditto.
1782
1783         * method-to-ir.c: Make isninst/castclass checks in gshared code more efficient
1784         instead of always calling an icall.
1785
1786         * aot-compiler.c (emit_llvm_file): Take into account trampolines etc when
1787         computing the size of the got.
1788
1789         * aot-compiler.c (emit_code): Change the way the 'methods' symbol is emitted
1790         when using LLVM. Instead of emitting it as an LLVM method, emit it using
1791         the assembly directive '.set' so it points to the first LLVM emitted method.
1792
1793 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
1794
1795         * mini.c (mini_method_verify): Report the method which failed to verify.
1796
1797 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
1798
1799         * method-to-ir.c (mono_method_to_ir): Use the new basic block formation pass
1800         to avoid JIT'ng dead basic blocks. This is the same behavior as the
1801         runtime MS verifier.
1802
1803 2010-02-04  Zoltan Varga  <vargaz@gmail.com>
1804
1805         * debugger-agent.c (decode_value): Fix decoding of vtype instances. Fixes
1806         #561962.
1807
1808 2010-02-04  Zoltan Varga  <vargaz@gmail.com>
1809
1810         * mini-llvm.c: Init the jit module only when first JITting.
1811
1812         * aot-compiler.c (emit_plt): Fix the naming of plt entries of llvm+darwin.
1813
1814         * mini-llvm.c (get_plt_entry): Make the plt entries have hidden visibility.
1815
1816         * mini-llvm.c (mono_llvm_emit_aot_module): Remove the dummy got after it is
1817         replaced with the real got.
1818
1819         * debugger-agent.c (type_commands): Return the enumness if the type as well.
1820
1821         * image-writer.c: Reduce the amount of #ifdefs a bit.
1822
1823         * aot-compiler.c: Reduce the amount of #ifdefs. Add beginnings of support for
1824         llvm on darwin/arm.
1825
1826         * aot-compiler.c (mono_compile_assembly): Handle asmonly+llvm mode.
1827
1828         * mini-llvm.c (mono_llvm_emit_method): Don't make the 'type_info' symbols
1829         global.
1830
1831 2010-02-02  Zoltan Varga  <vargaz@gmail.com>
1832
1833         * mini-llvm.c (mono_llvm_emit_method): Add support for unaligned loads.
1834         (mono_llvm_emit_method): Fix unaligned stores too.
1835
1836         * mini-amd64.c (mono_arch_emit_prolog): Initialize lmf->rsp in the prolog too
1837         so async stack walks don't crash.
1838
1839 2010-02-02  Zoltan Varga  <vargaz@gmail.com>
1840
1841         * mini-trampolines.c (common_call_trampoline): Fix a problem where the callsite
1842         was not patched if the callee needed an rgctx trampoline.
1843
1844 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
1845
1846         * mini-ppc.c (mono_arch_get_global_int_regs): Reserve r29 for holding the
1847         vtable address in AOT code.
1848
1849 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
1850
1851         * mini-codegen.c: Remove support for CEE_ opcodes which cannot occur in
1852         MonoInst's.
1853
1854 Mon Feb 1 16:29:10 CET 2010 Paolo Molaro <lupus@ximian.com>
1855
1856         * genmdesc.pl: remove dependency on external cpp.
1857
1858 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
1859
1860         * method-to-ir.c (mini_emit_ldelema_1_ins): Avoid emitting an OP_SEXT_I4 when
1861         using LLVM, its not needed, and abcrem can't handle it.
1862
1863 Mon Feb 1 14:29:43 CET 2010 Paolo Molaro <lupus@ximian.com>
1864
1865         * genmdesc.c, genmdesc.pl, cpu-x86.md: introduced templates to make
1866         it easier to group instructions and reduce duplication.
1867
1868 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
1869
1870         * decompose.c: Move the array/soft float decompose routines here from
1871         method-to-ir.c.
1872
1873         * method-to-ir.c: Export a few functions so they can be used from decompose.c.
1874
1875 2010-01-31  Zoltan Varga  <vargaz@gmail.com>
1876
1877         * mini-llvm.c (mono_llvm_emit_method): Add a call to llvm.invariant.start
1878         to tell LLVM that the got is constant, not used yet.
1879
1880         * aot-compiler.c: Pass more optimization flags to llvm's 'opt'.
1881
1882 2010-01-30  Zoltan Varga  <vargaz@gmail.com>
1883
1884         * mini-ppc.c (mono_arch_emit_prolog): Fix full aot support for native to
1885         managed wrappers.
1886
1887 2010-01-30  Zoltan Varga  <vargaz@gmail.com>
1888
1889         * aot-compiler.c (add_wrappers): Commit the hack which generates
1890         native-to-managed wrappers for methods decorated with the MonoPInvokeCallback
1891         custom attribute.
1892
1893 2010-01-29  Zoltan Varga  <vargaz@gmail.com>
1894
1895         * mini.h (MONO_INST_FAULT): New instruction flag for loads which can cause
1896         a fault, only used by the LLVM backend.
1897
1898         * ir-emit.h: Add _FAULT variants of the LOAD_MEMBASE macros. Mark
1899         OP_CHECK_THIS with OP_IMPLICIT_EXCEPTION.
1900
1901         * method-to-ir.c: Use the new LOAD_MEMBASE_FAULT opcodes, get rid of the
1902         calls to MONO_EMIT_NULL_CHECK which is automatically done by the new macros.
1903
1904         * mini-llvm.c: Only generate volatile loads from load instructions which have
1905         the MONO_INST_FAULT flag set.
1906
1907 2010-01-29  Zoltan Varga  <vargaz@gmail.com>
1908
1909         * unwind.c (mono_unwind_decode_fde): Fix the decoding of the LSDA offset on
1910         64 bit platforms.
1911
1912 2010-01-28  Zoltan Varga  <vargaz@gmail.com>
1913
1914         * mini.c (mono_save_seq_point_info): Fix the handling of bblocks without
1915         sequence points. Fixes #571236.
1916
1917 2010-01-28  Zoltan Varga  <vargaz@gmail.com>
1918
1919         * debugger-agent.c (mono_debugger_agent_init): Call appdomain_unload at the
1920         end of the appdomain unload process, after assemblies have been unloaded.
1921         Fixes #574842.
1922
1923 2010-01-27  Zoltan Varga  <vargaz@gmail.com>
1924
1925         * abcremoval.c (process_block): Fix the if (region) check so abcrem actually
1926         works.
1927
1928         * mini-amd64.c: Make the soft debugger work on platforms without MAP_32BIT.
1929         Fixes #573988.
1930
1931 2010-01-26  Zoltan Varga  <vargaz@gmail.com>
1932
1933         * dwarfwriter.c (emit_type): Treat MONO_TYPE_PTR as 'I' not 'I4'.
1934
1935 2010-01-26  Geoff Norton  <gnorton@novell.com>
1936
1937         * aot-compiler.c: Fix a logic error introduced when guarding against enums
1938         with struct marshalability.
1939
1940 2010-01-24  Zoltan Varga  <vargaz@gmail.com>
1941
1942         * mini.c (mini_method_compile): Improve the processing MONO_VERBOSE_METHOD so
1943         it supports class names as well.
1944
1945         * mini.h (MonoCompile): Add a few flags to control JIT behavior which are
1946         needed by the GC map code.
1947
1948         * mini.c (mini_method_compile): Call a function in mini-gc.c to set the new
1949         flags if needed.
1950
1951         * method-to-ir.c (mono_method_to_ir): Emit initialization code for ref variables
1952         if cfg->init_ref_vars is set.
1953
1954         * liveness.c (optimize_initlocals): Disable the initlocals opt for ref vars if
1955         cfg->disable_initlocals_op_refs is set.
1956
1957         * method-to-ir.c (mono_spill_global_vars): Compute more precise live ranges
1958         using liveness info if cfg->compute_precise_live_ranges is set.
1959
1960         * mini-gc.c: Ongoing work. Improve logging and debugging support. Handle
1961         volatile variables correctly. Add comments about the live ranges. Not enabled
1962         yet.
1963
1964 2010-01-24  Zoltan Varga  <vargaz@gmail.com>
1965
1966         * mini.h (MonoDebugOptions): Add an option to init stack frames by writing
1967         0x2a into them in method prologs.
1968
1969         * mini-amd64.c (mono_arch_emit_prolog): Implement it.
1970
1971 2010-01-22  Zoltan Varga  <vargaz@gmail.com>
1972
1973         * mini-llvm-cpp.cpp: Remove uses of dynamic_cast, it no longer works with llvm
1974         classes, since llvm is compiled with -fno-rtti.
1975
1976         * mini.h (COMPILE_SOFT_FLOAT): New macro, similar to COMPILE_LLVM.
1977
1978         * method-to-ir.c ir-emit.h: Use if (COMPILE_SOFT_FLOAT) in a few places since
1979         llvm does not require it.
1980
1981         * aot-runtime.c (load_method): Print the full name of the last aot method.
1982
1983 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
1984
1985         * exceptions-amd64.c (mono_arch_notify_pending_exc): Avoid a crash if the
1986         thread has not fully started yet.
1987
1988 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
1989
1990         * aot-compiler.c (can_marshal_struct): Allow marshalling enums.
1991
1992 2010-01-21  Miguel de Icaza  <miguel@novell.com>
1993
1994         * driver.c: Do not abort if LLVM is not supported, print a
1995         warning and add the information to the Mono JIT information.
1996
1997 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
1998
1999         * ir-emit.h (MONO_EMIT_NULL_CHECK): Don't emit an OP_IMPLICIT_EXCEPTION when
2000         using explicit null checks.
2001
2002 2010-01-20  Zoltan Varga  <vargaz@gmail.com>
2003
2004         * xdebug.c: New file extracted from aot-compiler.c, containing the XDEBUG
2005         related code.
2006
2007         * aot-compiler.c (encode_method_ref): Use mono_marshal_wrapper_info_from_wrapper
2008         () in one place.
2009         (mono_aot_wrapper_name): Remove the special handling of delegate invoke wrappers,
2010         its no longer needed.
2011
2012         * method-to-ir.c (mono_method_to_ir): Fix a warning.
2013
2014         * exceptions-<ARCH>.c: Introduce a MONO_ARCH_HAVE_THROW_EXCEPTION_BY_NAME
2015         define for platforms still using it (s390). Get rid of the
2016         mono_arch_get_throw_exception_by_name () routines on all other platforms.
2017
2018         * exceptions-x86.c: Rework the throw trampolines so there is only one function
2019         which can generate throw/rethrow/corlib trampolines for llvm/not llvm code.
2020
2021         * exceptions-x86.c: Add LLVM specific throw trampolines which doesn't assume
2022         the caller pushed the arguments.
2023
2024         * mini-llvm.c: Enable throwing exceptions on x86.
2025
2026         * mini-posix.c (SIG_HANDLER_SIGNATURE): Avoid
2027         "Thread (nil) may have been prematurely finalized" messages if this is called
2028         on a thread not registered with the runtime.
2029
2030         * mini-exceptions.c (mono_handle_native_sigsegv): Ditto.
2031
2032 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
2033
2034         * jit-icalls.c (mono_array_new_3): New jit icall.
2035
2036         * aot-compiler.c aot-runtime.c: Add support for ElementAddr wrappers.
2037
2038         * arrays.cs: Add a test for 3 dimensional arrays.
2039
2040 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
2041
2042         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Emit xdebug info.
2043         (mono_arch_find_jit_info_ext): Disable the popping of arguments when LLVM is
2044         used.
2045
2046         * mini-llvm.c (emit_cond_system_exception): Abort when an implicit exception is
2047         thrown on x86.
2048
2049         * unwind.c (mono_unwind_decode_fde): Fix an assert on x86.
2050
2051         * mini-x86.h (MONO_CONTEXT_SET_LLVM_EXC_REG): Define this for x86.
2052
2053         * mini-llvm.c: Disable OP_THROW on x86, it doesn't work yet.
2054
2055 2010-01-18  Bill Holmes  <billholmes54@gmail.com>
2056
2057         * debugger-agent.c : Changing the PLATFORM_WIN32 preprocessor check to
2058           HOST_WIN32.  Also including winsock2. to define struct in_addr.
2059
2060         * mini-amd64.h : Changing the PLATFORM_WIN32 preprocessor check to HOST_WIN32.
2061
2062         * mini-x86.h : Changing the PLATFORM_WIN32 preprocessor check to HOST_WIN32.
2063
2064         Code is contributed under MIT/X11 license.
2065
2066 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
2067
2068         * mini.h (MonoCompile): Add 'disable_out_of_line_bblocks' flag.
2069
2070         * branch-opts.c (mono_optimize_branches): Honor the new flag.
2071
2072         * mini.c (mini_method_compile): Set the new flag when running under the
2073         debugger.
2074
2075 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
2076
2077         * mini-gc.c: Change the GC map to use a ref/noref/pin value instead of just
2078         a ref/noref value + a global pin flag, so parts of stack frames can still be
2079         precisely marked even if they include stuff which needs pinning. Improve logging.
2080         Fix many bugs. Not enabled yet.
2081
2082         * gc-test.cs: Add a few tests.
2083
2084         * liveness.c (mono_analyze_liveness): Make the debug output controllable by
2085         the normal -v options. Avoid propagating liveness information through bblocks
2086         which end with a NOT_REACHED opcode.
2087
2088         * mini.c (mono_jit_compile_method_inner): Avoid reading cfg->prof_options
2089         after cfg has been freed.
2090
2091 2010-01-17  Zoltan Varga  <vargaz@gmail.com>
2092
2093         * branch-opts.c (mono_branch_optimize_exception_target): Stop the optimization
2094         if a clause is skipped because it uses the exception object, since it could
2095         have caught the exception.
2096
2097         * exceptions.cs: Add a test.
2098
2099 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2100
2101        * mini-trampolines.c (mono_create_static_rgctx_trampoline): Add an assert.
2102
2103         * aot-runtime.c (mono_aot_get_method): Handle ftnptr's correctly for the
2104         ICollection<T> wrappers.
2105
2106 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2107
2108         * debugger-agent.c (decode_value): Fix the decoding of I/U/PTR.
2109
2110 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2111
2112         * mini-amd64.c (emit_call_body): Always use near calls when AOTing even if
2113         NOMAP32BIT or optimize_for_xen is set.
2114
2115 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
2116
2117         * aot-compiler.c aot-runtime.c: Get rid of mono_aot_str_hash (), use
2118         mono_metadata_str_hash () instead.
2119
2120 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
2121
2122         * ir-emit.h (MONO_EMIT_NEW_ICOMPARE_IMM): Use sizeof (mgreg_t) instead of
2123         sizeof (void*).
2124
2125         * unwind.c (mono_unwind_frame): Use mgreg_t instead of gssize.
2126
2127 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
2128
2129         * ir-emit.h (MONO_EMIT_NEW_CHECK_THIS): Emit an explicit null check if the
2130         flag is set.
2131
2132         * mini-ppc.c (mono_arch_emit_exceptions): Compute the size of the exception
2133         throwing code correctly.
2134
2135         * mini.h (MONO_AOT_FILE_VERSION): Bump this because of the IMT hashing changes.
2136
2137 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
2138
2139         * aot-runtime.c (mono_aot_plt_resolve): Reenable the previous assert for
2140         ftnptrs created by us, handle RGCTX_FETCH correctly.
2141         (mono_aot_get_lazy_fetch_trampoline): Add an ftnptr.
2142
2143         * mini-trampolines.c (mono_create_generic_class_init_trampoline): Remove the
2144         ftnptr added by mono_aot_get_named_code ().
2145
2146 2010-01-14  Zoltan Varga  <vargaz@gmail.com>
2147
2148         * mini-arm.c: Fix a few LLVM problems.
2149
2150         * mini-llvm.c (simd_class_to_llvm_type): Fix compilation on !x86/amd64.
2151
2152 2010-01-13  Mark Probst  <mark.probst@gmail.com>
2153
2154         * method-to-ir.c (mini_emit_stobj): Use EMIT_NEW_CLASSCONST when
2155         AOT compiling.
2156
2157 Wed Jan 13 15:54:53 CET 2010 Paolo Molaro <lupus@ximian.com>
2158
2159         * jit.h, method-to-ir.c: added ability to set the policy for
2160         inserting breakpoints from the break IL instruction or the
2161         Debugger.Break () API call.
2162
2163 2010-01-13  Zoltan Varga  <vargaz@gmail.com>
2164
2165         * aot-runtime.c (load_aot_module): Add more comments to explain why referenced
2166         assemblies need to be eagerly loaded.
2167
2168 2010-01-12  Zoltan Varga  <vargaz@gmail.com>
2169
2170         * dwarfwriter.c (emit_line_number_info): Fix the eglib case so it doesn't crash.
2171
2172 2010-01-11  Zoltan Varga  <vargaz@gmail.com>
2173
2174         * debugger-agent.c (mono_debugger_agent_parse_options): Allow onthrow without
2175         an argument which matches any exception.
2176
2177 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
2178
2179         * method-to-ir.c (mono_emit_method_call_full): Avoid the virt->nonvirt
2180         optimization if the called method is gshared and marshalbyref, since gshared
2181         methods can' have wrappers. Fixes #569390.
2182
2183         * generics.cs: Add a test.
2184
2185 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
2186
2187         * mini-exceptions.c (mono_print_thread_dump_from_ctx): New helper function
2188         callable from gdb.
2189
2190 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
2191
2192         * mini.c (mono_print_method_from_ip): Fix the lookup of trampolines.
2193
2194 2010-01-09  Zoltan Varga  <vargaz@gmail.com>
2195
2196         * debugger-agent.c (transport_connect): comment out freeaddrinfo calls under win32,
2197         since it is not supported in win2000.
2198
2199 2010-01-08  Zoltan Varga  <vargaz@gmail.com>
2200
2201         * aot-runtime.c (load_image): Add a SET_ERROR argument to set the loader
2202         error if loading an assembly fails.
2203         (mono_aot_plt_resolve): Return NULL instead of asserting if loading fails.
2204
2205         * mini-trampolines.c (mono_aot_plt_trampoline): Throw a pending loader error
2206         if exists.
2207
2208         * aot-runtime.c (decode_exception_debug_info): Set jinfo->from_llvm for LLVM
2209         compiled methods.
2210
2211         * mini-llvm-cpp.cpp: Remove the unused ctx variable.
2212
2213         * mini-llvm.c (mono_llvm_emit_method): Add some comments about why aot+clauses
2214         is not supported yet.
2215
2216         * unwind.c (DW_EH_PE_absptr): Add more DW_EH_PE_ constants.
2217
2218 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2219
2220         * method-to-ir.c: All types with variant arguments must fallback to the
2221         slow path. This makes cast of variant delegates work.
2222
2223         * mini-trampolines.c (mono_get_vcall_slot_addr): Add new variance_used out
2224         argument that is set to TRUE is the returned vtable slot is for a variant
2225         interface. Changed a g_print + g_assert_not_reached to a g_error.
2226
2227         * mini-trampilines.c (common_call_trampoline): Handle variant interfaces in
2228         a similar fashion of generic virtual methods.
2229
2230 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2231
2232         * helpers.c (mono_disassemble_code): Fix a g_hash_table warning
2233         when cfg is null.
2234
2235         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Convert a given
2236         method using a variance aware function.
2237
2238         * mini-x86.c: Add support for dumping IMT thunks if DEBUG_IMT is defined.
2239
2240 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
2241
2242         * method-to-ir.c (mono_method_to_ir): Casts to variant interfaces
2243         do an icall for now.
2244
2245 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
2246
2247         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add an ugly hack to fix #564695.
2248         If LLVM decides to set the code model to Large, reset it to Default.
2249
2250 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
2251
2252         * aot-compiler.c (mono_xdebug_flush): Export it so it is present in
2253         stripped binaries as well.
2254
2255 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
2256
2257         * mini-trampolines.c (common_call_trampoline): Add an rgctx trampoline if a shared
2258         method is called from LLVM compiled code, as that code can't pass an rgctx arg.
2259
2260         * mini-llvm.c (mono_llvm_emit_method): Enable calls to methods needing an rgctx
2261         reg.
2262
2263 2010-01-06  Zoltan Varga  <vargaz@gmail.com>
2264
2265         * mini.c (mini_method_compile): Extract the JIT info creation code into a
2266         separate function.
2267
2268         * mini-llvm.c (mono_llvm_emit_method): Pass the info in MonoExceptionClause
2269         as the type info to llvm.eh.selector.
2270         (exception_cb): Use the type info for filling out some fields of
2271         MonoJitExceptionInfo like the flags and the exception class. This is needed
2272         because the LLVM produced exception handling clauses might not match the original
2273         IL clauses, i.e. there might be more than one LLVM clause for one IL clause.
2274
2275         * unwind.c (mono_unwind_decode_fde): Extract the LSDA decoding code into a
2276         separate function. Add an extra argument which returns the type infos
2277         corresponding to the exception clauses.
2278
2279         * mini.c (mini_method_compile): Enable LLVM compilation of methods having
2280         exception handling clauses.
2281
2282 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2283
2284         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call
2285         mono_method_get_vtable_slot () instead of accessing imt_method->slot directly,
2286         to fix an AOT case.
2287
2288 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2289
2290         * mini.c (mono_compile_is_broken): Skip methods from serialization's
2291         internal assembly.
2292
2293 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2294
2295         * mini.c (mini_method_compile): Fix a few memory leaks introduced by the
2296         llvm code.
2297
2298 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
2299
2300         * mini.c (mini_method_compile): Verify the method before calling
2301         mono_compile_create_vars as this might crash since it uses method
2302         information.
2303
2304         Fixes #560196.
2305
2306 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
2307
2308         * method-to-ir.c (mono_method_to_ir): Avoid calling mono_class_vtable () in
2309         one case if AOTing, since the class might not be a concrete class.
2310
2311 2010-01-03  Zoltan Varga  <vargaz@gmail.com>
2312
2313         * mini-codegen.c abcremoval.c: Remove the duplicate g_slist_append_mempool
2314         functions which are now defined in mempool-internals.h.
2315
2316         * mini.c (mini_free_jit_domain_info): Free the seq point hash tables.
2317
2318         * mini-llvm.c (mono_llvm_emit_method): Handle OP_ABS.
2319
2320 2009-12-30  Rodrigo Kumpera  <rkumpera@novell.com>
2321
2322         * mini.c:
2323         * method-to.ir.c:
2324         * mini-*.c: Properly handle generic enums.
2325
2326         Fixes #566294
2327
2328 2009-12-28  Zoltan Varga  <vargaz@gmail.com>
2329
2330         * method-to-ir.c (mono_method_to_ir): Handle the failure of mono_class_vtable ()
2331         in a few more places.
2332
2333 2009-12-27  Zoltan Varga  <vargaz@gmail.com>
2334
2335         * aot-compiler.c (add_wrappers): Don't use dyn runtime invoke for methods with
2336         nullable parameters. Fixes #567351.
2337
2338 2009-12-26  Rodrigo Kumpera  <rkumpera@novell.com>
2339
2340         * mini-trampolines.c (common_call_trampoline): Add assert for NULL resolved generic method.
2341
2342 2009-12-26  Zoltan Varga  <vargaz@gmail.com>
2343
2344         * mini-trampolines.c: Use mono_arch_get_this_arg_from_call () to avoid the slow
2345         mono_get_generic_context_from_code () call.
2346
2347         * mini-<ARCH>.c: Get rid of mono_arch_find_this_arg (), it is no longer used.
2348
2349 2009-12-25  Zoltan Varga  <vargaz@gmail.com>
2350
2351         * aot-runtime.c (decode_klass_ref): Don't call mono_class_init (), its not
2352         needed.
2353
2354 2009-12-24  Sebastien Pouliot  <sebastien@ximian.com>
2355
2356         * method-to-ir.c (mono_method_to_ir): Avoid SIGSEGV when
2357         mono_method_get_signature returns NULL. Fix #567084
2358
2359 2009-12-25  Zoltan Varga  <vargaz@gmail.com>
2360
2361         * aot-runtime.c (find_extra_method): Call mono_aot_wrapper_name only once,
2362         instead of once for each module.
2363
2364 2009-12-22  Zoltan Varga  <vargaz@gmail.com>
2365
2366         * debugger-agent.c (ss_start): Implement step over for the last sequence
2367         point in methods.
2368
2369         * mini.c (mono_save_seq_point_info): Don't link sequence points which don't
2370         have the STEP_LOC flag set.
2371
2372         * aot-runtime.c (decode_klass_ref): Avoid a crash if a decode_klass_ref () call
2373         fails. Fixes #566689.
2374
2375 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
2376
2377         * mini.c (mono_add_seq_point): New helper function.
2378         (mono_save_seq_point_info): New function to save sequence point info, extracted
2379         from mini_method_compile ().
2380
2381         * mini-<ARCH>.c: Call mono_add_seq_point to remember sequence points.
2382
2383         * mini.h (MonoSeqPointInfo): New structure containing information about
2384         the sequence points of a JITted method.
2385         (MonoBasicBlock): Add 'seq_points' and 'last_seq_point' fields. Remove unused
2386         'bucket' field.
2387
2388         * mini.c debugger-agent.c aot-compiler.c aot-runtime.c: Change the way sequence
2389         point information is stored, use a MonoSeqPointInfo structure instead of a
2390         GPtrArray. For each seq point, compute a list of successor seq points.
2391
2392         * debugger-agent.c: Use the successor list to implement step-over more
2393         efficiently: instead of single stepping until a different line/IL offset is
2394         reached, place breakpoints into all successor seq points.
2395
2396         * mini.h: Bump AOT file format version.
2397
2398 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
2399
2400         * Makefile.am (AM_CFLAGS): Include LLVM_CFLAGS.
2401
2402         * mini-llvm.c: Avoid defining the __STDC_... macros if already defined.
2403
2404 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
2405
2406         * exceptions-ppc.c (mono_ppc_set_func_into_sigctx): Fix the cross-compiler
2407         build.
2408
2409 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
2410
2411         * mini-x86.c (mono_arch_get_argument_info): Allocate memory for CallInfo using
2412         alloca as g_malloc is not signal safe.
2413
2414 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
2415
2416         * tramp-x86.c (mono_arch_patch_callsite): Fix the call to
2417         VALGRIND_DISCARD_TRANSLATIONS.
2418
2419         * *.c: Include mono/utils/memcheck.h, and remove #ifdef HAVE_VALGRIND_MEMCHECK_H
2420         checks, they are no longer needed.
2421
2422         * exceptions-ppc.c (mono_ppc_set_func_into_sigctx): New helper function to set
2423         a function into a sigctx which can handle function pointers.
2424
2425         * mini-ppc.c: Implement soft debugger support on ppc64.
2426
2427         * mini-ppc.c: Implement soft debugger support.
2428
2429 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
2430
2431         * mini-llvm.c: Handle OP_LADD_OVF_UN. Place all alloca's into the entry bb.
2432
2433 2009-12-17  Marek Habersack  <mhabersack@novell.com>
2434
2435         * mini.c (mono_get_runtime_build_info): include Mono version in
2436         the returned value.
2437
2438         * driver.c (mono_main): VERSION is now included in the string
2439         returned from mono_get_runtime_build_info()
2440
2441 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
2442
2443         * method-to-ir.c (mono_method_to_ir): Add support for CALLI with unmanaged
2444         signatures. Fixes #565143.
2445
2446         * jit-icalls.c (mono_get_native_calli_wrapper): New JIT icall.
2447
2448 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
2449
2450         * aot-compiler.c (arch_emit_autoreg): Align code to 4 in the ppc case.
2451
2452 2009-12-16 Rodrigo Kumpera  <rkumpera@novell.com>
2453
2454         * mini-x86.h: Forgot to add a 0x to MONO_ARCH_MAX_FRAME_SIZE define
2455         making max stack 10x smaller.
2456
2457 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
2458
2459         * mini.c (mono_resolve_patch_target): Comment out an assert which could be hit.
2460
2461 2009-12-15 Rodrigo Kumpera  <rkumpera@novell.com>
2462
2463         * method-to-ir.c (mini_emit_memcpy): Assert if size is too big.
2464
2465 2009-12-15 Rodrigo Kumpera  <rkumpera@novell.com>
2466
2467         * mini-x86.c (mono_arch_allocate_vars): Fail compilation if the frame size is
2468         bigger than MONO_ARCH_MAX_FRAME_SIZE.
2469
2470         * mini-x86.c (mono_arch_emit_prolog): Handle huge frames.
2471
2472         * mini-x86.h: Define MONO_ARCH_MAX_FRAME_SIZE to be 1Mb.
2473
2474         * mini-amd64.c / mini-amd64.h: Same fixes as of above.
2475
2476         * mini.c (mini_method_compile): Check if mono_arch_allocate_vars failed
2477         the compilation.
2478
2479 2009-12-14  Miguel de Icaza  <miguel@novell.com>
2480
2481         * method-to-ir.c (mono_method_to_ir): CEE_UNUSUED opcodes now
2482         raise an invalid program exception.   
2483
2484         For other opcodes that we might not handle use a g_warning and
2485         raise the exception.   Beats termination.
2486
2487         Fixes #561724
2488
2489 2009-12-14  Zoltan Varga  <vargaz@gmail.com>
2490
2491         * method-to-ir.c (mono_emit_rgctx_method_call_full): Fix a warning.
2492
2493         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix the LLVM support
2494         by merging the LLVM and !MAP_32BIT cases.
2495
2496 2009-12-13 Jonathan Chambers <joncham@gmail.com>
2497
2498         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Handle a NULL
2499         sigctx being passed in, as we have no CONTEXT available in the APC.
2500
2501         (mono_debugger_agent_cleanup): Use explicit cond wait implementation
2502         for now.
2503
2504         Code contributed under MIT/X11 license.
2505
2506 2009-12-13  Zoltan Varga  <vargaz@gmail.com>
2507
2508         * method-to-ir.c mini-llvm.c: Fix support for monitor enter/exit trampolines
2509         in the LLVM backend on AMD64.
2510
2511         * aot-runtime.c (decode_eh_frame): Initialize the clauses from the info in the
2512         FDE.
2513
2514         * unwind.c (mono_unwind_decode_fde): Implement decoding of a couple more formats.
2515
2516         * mini-llvm.c: Export mono_personality for AOT.
2517
2518         * mini.c (mini_method_compile): Fix some problems with llvm+aot+clauses.
2519
2520         * mini-ops.h (OP_IMPLICIT_EXCEPTION): New opcode marking the place where an
2521         implicit exception can occur.
2522
2523         * ir-emit.h (MONO_EMIT_NEW_IMPLICIT_EXCEPTION): New macro to emit an
2524         OP_IMPLICIT_EXCEPTION instruction.
2525
2526         * ir-emit.h (MONO_EMIT_NEW_CHECK_THIS): New macro.
2527
2528         * method-to-ir.c: Use MONO_EMIT_NEW_CHECK_THIS in a few places.
2529
2530         * mini-llvm.c: Handle OP_IMPLICIT_EXCEPTION by disabling llvm if it occurs
2531         inside a protected block.
2532
2533         * mini-llvm.c: Revert the last change, the signature of monitor entry/exit
2534         trampolines doesn't include the argument.
2535
2536         * mini-llvm.c (mono_llvm_emit_method): Enable calls to monitor entry/exit
2537         trampolines on amd64.
2538
2539         * mini-amd64.h (MONO_ARCH_MONITOR_OBJECT_REG): Use MONO_AMD64_ARG_REG1 instead
2540         of RDI.
2541
2542         * mini.c (mini_method_compile): Add some comments as to why LLVM is currently
2543         disabled for methods with clauses.
2544
2545         * mini-llvm.c: Enable support for catch clauses.
2546
2547         * mini-exceptions.c (mono_resume_unwind): New function to resume unwinding at the
2548         end of an LLVM compiled finally clause.
2549         (mono_handle_exception_internal): Save the exception handling state in TLS
2550         before calling an LLVM compiled finally clause, so mono_resume_unwind () can
2551         resume unwinding from that point.
2552
2553         * unwind.c (mono_unwind_get_ops_from_fde): Rename this to
2554         mono_unwind_decode_fde, decode the Language Specific Data Area (LSDA) too,
2555         to obtain the addresses of the exception handling regions.
2556
2557         * mini-llvm.c: Add beginnings of support for exception handling, currently only
2558         finally clauses are supported.
2559
2560         * mini.c (mini_method_compile): Add support for LLVM code with exception
2561         handlers.
2562
2563 2009-12-12  Zoltan Varga  <vargaz@gmail.com>
2564
2565         * mini-llvm.c (mono_llvm_emit_method): Allocate the 'pindexes' array with the
2566         proper size.
2567
2568 2009-12-12  Zoltan Varga  <vargaz@gmail.com>
2569
2570         * debugger-agent.c: Encode the this argument of vtype methods as a struct, not
2571         as a primitive type.
2572
2573 2009-12-11  Zoltan Varga  <vargaz@gmail.com>
2574
2575         * driver.c: Applied patch from Matt McClellan (matt@mc-c.net). Add a check
2576         for 2 parameter sched_setaffinity in older glibc versions. Fixes
2577         #564000.
2578
2579 2009-12-11  Marek Habersack  <mhabersack@novell.com>
2580
2581         * method-to-ir.c (mini_redirect_call): do not redirect the
2582         InternalAllocateStr internal call if string profiling is enabled.
2583
2584 2009-12-10  Zoltan Varga  <vargaz@gmail.com>
2585
2586         * aot-compiler.c (add_wrappers): Avoid generating synchronized wrappers for
2587         generic methods.
2588
2589         * unwind.h: Rename this to mini-unwind.h to avoid conflicts with the gcc
2590         unwind.h header file.
2591
2592         * tramp-x86.c (mono_arch_patch_callsite): Patch the code when using valgrind,
2593         newer valgrind versions seems to handle this fine.
2594
2595 2009-12-09  Zoltan Varga  <vargaz@gmail.com>
2596
2597         * debugger-agent.c (start_runtime_invoke): Fix a crash if this is called
2598         on the debugger thread.
2599
2600 2009-12-08  Zoltan Varga  <vargaz@gmail.com>
2601
2602         * mini-llvm.c (mono_llvm_emit_method): Add more SIMD opcodes.
2603
2604         * mini.c (mono_print_method_from_ip): Fix the lookup of trampolines.
2605
2606         * mini-codegen.c (mono_local_regalloc): Allow non-call opcodes with cloc:c.
2607
2608         * cpu-<ARCH>.md: Make call_handler clob:c.
2609
2610         * mini.c: Reenable SSA for methods with clauses.
2611
2612         * mini.c (mini_method_compile): Disable SSA for now for methods with clauses,
2613         as it causes failures on x86.
2614
2615 2009-12-08  Sebastien Pouliot  <sebastien@ximian.com>
2616
2617         * driver.c: Fail gracefully with --compile-all if mono_method_signature
2618         returns NULL (e.g. a bad assembly).
2619
2620 2009-12-08  Geoff Norton  <gnorton@novell.com>
2621
2622         * debugger-agent.c:  Refactor the mono_runtime_invoke guarding against
2623         stepping out into native code.  There were issues with nested invokes
2624         like .cctors.
2625
2626 2009-12-07  Zoltan Varga  <vargaz@gmail.com>
2627
2628         * mini.c (mini_method_compile): Do the disable_llvm checks early
2629         and avoid the LLVM compile pass if the checks fail.
2630
2631         * mini.c ssa.c abcremoval.c: Enable SSA for methods with exception clauses.
2632
2633         * mini-llvm.c: Put our methods/globals into the 'llvm.used' array, so the
2634         LLVM optimizations don't try to remove them.
2635
2636         * aot-compiler.c (emit_llvm_file): Save the result of opt into a
2637         different file so the original remains.
2638
2639 2009-12-06  Zoltan Varga  <vargaz@gmail.com>
2640
2641         * mini-llvm.c mini.c: Fix alignment issues with SIMD vars.
2642
2643         * aot-runtime.c (decode_arm_exidx): Handle most descriptors created by gas.
2644
2645         * aot-runtime.c (decode_arm_exidx): Refactor this into two functions, add
2646         support for non-inline unwind descriptors.
2647
2648 2009-12-07  Geoff Norton  <gnorton@novell.com>
2649
2650         * debugger-agent.c:  Darwin can colesce signals, so we need to handle
2651         the interrupt_count slightly differently.  Native threads were never
2652         marked as resumed.
2653
2654 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
2655
2656         * aot-runtime.c (decode_arm_exidx): New function to initialize a MonoJitInfo
2657         based on the contents of the ARM .exidx section. Not yet used since llvm doesn't
2658         yet generate this info.
2659
2660         * mini-llvm.c: Fix the conversion of call results if they are unsigned.
2661
2662         * debugger-agent.c (buffer_add_value): Treat I/U as a valuetype, so the
2663         client can distinguish between intptrs and longs.
2664
2665 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
2666
2667         * aot-compiler.c (emit_trampoline): Emit the trampoline info into the global
2668         blob.
2669
2670         * aot-runtime.c (load_function): Update after the change above.
2671
2672         * mini.h: Bump AOT file format version.
2673
2674         * method-to-ir.c (mono_method_to_ir): Disallow the delegate optimization
2675         if the delegate class is dynamic.
2676
2677         * method-to-ir.c (handle_delegate_ctor): Allow the method_code optimization
2678         in gshared code too using the new rgctx info type
2679         MONO_RGCTX_INFO_METHOD_DELEGATE_CODE.
2680
2681 2009-12-04  Geoff Norton  <gnorton@novell.com>
2682
2683         * debugger-agent.c: When doing a func-eval invoke on a suspended runtime,
2684         we need to track the original suspend count so the thread properly
2685         wakes up in resume_thread.
2686
2687 2009-12-04  Zoltan Varga  <vargaz@gmail.com>
2688
2689         * method-to-ir.c (handle_delegate_ctor): Add support for using this from gshared
2690         code.
2691
2692         * generics.cs: Add a test.
2693
2694         * method-to-ir.c (emit_get_rgctx_method): Make this work even if context_used
2695         is 0. Simplify a lot of code using this.
2696
2697         * mini-trampolines.c (mono_delegate_trampoline): Call
2698         mono_create_static_rgctx_trampoline () before saving the final address in
2699         delegate->method_code, to avoid calling it each time a delegate is first called.
2700
2701         * method-to-ir.c (mono_method_to_ir): Allow fast delegate creation for methods
2702         which need static rgctx trampolines.
2703
2704         * mini-trampolines.c (mono_create_static_rgctx_trampoline): Use a cache
2705         keyed on the method+addr pair, since addr could be either the method addr or
2706         an unbox trampoline in the AOT case. Fixes #560246.
2707
2708 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2709
2710         * mini.c (mini_method_compile): Call handle_exception_clauses () in the same
2711         place it was called before too.
2712
2713 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2714
2715         * mini.c (mono_jit_runtime_invoke): Avoid the call to mono_class_setup_vtable ()
2716         if no security manager is present, to speed up the AOT case. Call
2717         mono_class_vtable () full with raise_on_error == TRUE instead.
2718
2719 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2720
2721         * mini.c (mini_method_compile): Call handle_exception_clauses earlier so
2722         the local optimization passes can take its result into account. Fixes
2723         #559876.
2724
2725         * exceptions.cs: Add a test.
2726
2727 2009-01-24  Steven Munroe  <munroesj@us.ibm.com>
2728
2729         This patch is contributed under the terms of the MIT/X11 license
2730
2731         * cpu-ppc64.md (load_memindex): Add loadi8_memindex.
2732
2733 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2734
2735         * mini.h (MonoInst): Remove unused 'ssa_op' field.
2736
2737         * debugger-agent.c: Rework the handling of stack traces of running threads to
2738         avoid crashes if compute_frames () tries to walk the stack of running thread.
2739
2740         * mini.c (mono_print_method_from_ip): Use mini_jit_info_table_find.
2741
2742         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): Set frame->lmf.
2743
2744         * mini.h (StackFrameInfo): Add an 'lmf' field.
2745
2746 2009-12-02  Zoltan Varga  <vargaz@gmail.com>
2747
2748         * debugger-agent.c (suspend_current): Always set really_suspended.
2749
2750         * debugger-agent.c (clear_event_request): Clear method entry/exit requests too.
2751
2752         * exceptions-x86.c (mono_arch_get_restore_context): Restore EAX too.
2753
2754 2009-12-01  Zoltan Varga  <vargaz@gmail.com>
2755
2756         * debugger-agent.c (vm_commands): Don't allow invokes on threads which are not
2757         really suspended.
2758
2759 2009-12-01  Zoltan Varga  <vargaz@gmail.com>
2760
2761         * cpu-ppc64.md (store_memindex): Add storei8_memindex.
2762
2763 2009-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
2764
2765         * mini-trampolines.c: Fix MSVC build.
2766
2767 2009-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
2768
2769         * mini-trampolines.c: Check for mono_method_get_vtable_slot failures.
2770
2771 2009-11-30  Zoltan Varga  <vargaz@gmail.com>
2772
2773         * mini-arm.c (mono_arch_lowering_pass): Fix an assert which is hit when
2774         the instruction following an OP_FCOMPARE is optimized away.
2775
2776 2009-11-30  Zoltan Varga  <vargaz@gmail.com>
2777
2778         * aot-compiler.c (arch_emit_autoreg): Extract the auto-registration code from
2779         emit_autoreg () into this arch-specific function.
2780
2781         * aot-compiler.c (emit_exception_debug_info): Don't emit the length of the
2782         code, it is no longer needed.
2783
2784         * aot-runtime.c (decode_exception_debug_info): Don't read the code length.
2785
2786         * mini.h: Bump AOT file format version.
2787
2788         * aot-runtime.c (mono_aot_find_jit_info): Compute the length of the method
2789         using the sorted_code_offsets array, instead of reading it from the
2790         exception debug info.
2791         (load_method): Call mono_aot_find_jit_info instead of
2792         decode_exception_debug_info ().
2793
2794         * aot-compiler.c (emit_exception_debug_info): Emit whenever the method was
2795         LLVM compiled as a flag.
2796
2797 2009-11-29  Zoltan Varga  <vargaz@gmail.com>
2798
2799         * debugger-agent.c (resume_thread): Fix a warning.
2800
2801         * aot-compiler.c: Add an option to set the number of static rgctx trampolines
2802         generated.
2803
2804 2009-11-28  Zoltan Varga  <vargaz@gmail.com>
2805
2806         * aot-compiler.c aot-runtime.c: Get rid of a few global symbols, move their
2807         contents to MonoAotFileInfo.
2808
2809 2009-11-27  Zoltan Varga  <vargaz@gmail.com>
2810
2811         * aot-compiler.c aot-runtime.c: Reorganize the AOT file format once again.
2812         Put all binary data into a giant blob, similarly to the way .net assemblies
2813         store binary data. Emit offset tables in a compact form to reduce their size.
2814
2815         * mini.h: Bump AOT file format version.
2816
2817         * aot-compiler.c (emit_globals_table): Use temp_prefix instead of .L in a few
2818         places.
2819
2820         * aot-compiler.c (emit_globals_table): Emit a hash table for the globals, to
2821         avoid linear searches at runtime.
2822
2823         * aot-runtime.c (find_symbol): Update this to use the hash.
2824
2825         * mini.h: Bump AOT file format version.
2826
2827 2009-11-26  Zoltan Varga  <vargaz@gmail.com>
2828
2829         * aot-compiler.c (emit_klass_info): Save whenever the class has a generic
2830         container.
2831
2832         * aot-runtime.c (decode_cached_class_info): Set the is_generic_container field
2833         too.
2834
2835         * aot-compiler.c (mono_compile_assembly): Add a 'stats' option to print out
2836         the distribution of got slot types.
2837
2838         * mini.h (MonoDebugOptions): Add 'explicit_null_checks' option.
2839
2840         * method-to-ir.c: Add support for generating explicit null checks.
2841
2842 2009-11-25  Zoltan Varga  <vargaz@gmail.com>
2843
2844         * debugger-agent.c (vm_commands): Implement EXIT by invoking Environment.Exit ()
2845         on a random thread if possible.
2846
2847         * aot-runtime.c (mono_aot_plt_resolve): Clean up the handling of function
2848         descriptors a bit, add comments, handle RGCTX_FETCH/GENERIC_CLASS_INIT_TRAMPOLINE
2849         correctly.
2850
2851         * exceptions-ppc.c (mono_arch_find_jit_info_ext): Use mgreg_t as the type of
2852         regs. Pass the real size of the regs array to mono_unwind_frame ().
2853
2854         * unwind.c (mono_unwind_frame): Remove an incorrect assert, add more correct
2855         ones instead.
2856
2857 2009-11-24  Geoff Norton  <gnorton@novell.com>
2858
2859         * mini-darwin.c: Work around apple bug rdar://7209349  See
2860         http://openradar.appspot.com/7209349 for details.  Synopsis,
2861         CoreFoundation SIGTRAP's if you dlopen it off the main thread if its
2862         never been initialized before.
2863
2864 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
2865
2866         * tramp-arm.c: Use blx instead of mov pc, reg to improve support for thumb.
2867
2868         * mini-arm.c (mono_arm_thumb_supported): New helper function.
2869
2870 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
2871
2872         * cfold.c (mono_constant_fold_ins): Fix a problem in the previous change,
2873         OP_SHL_IMM is not 32 bit.
2874
2875 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
2876
2877         * aot-compiler.c (encode_patch): Fix the encoding of R8 on big-endian systems.
2878
2879 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
2880
2881         * aot-compiler.c: Avoid infinite recursion when generic virtual recursion is
2882         encountered.
2883
2884         * debugger-agent.c (resume_vm): Signal the suspend_cond even if suspend_count
2885         > 0 since some threads can resume if their resume_count is > 0.
2886         (invoke_method): Avoid reading freed memory.
2887
2888         * debugger-agent.c (process_suspend): Extract the suspend code from
2889         process_single_step_inner () to a separate function. Rework the code to prevent
2890         races between this function and thread interrupts.
2891
2892         * debugger-agent.c (suspend_current): Check the resume_count field instead
2893         of resume_one so suspends+resumes during single threaded invokes work
2894         correctly.
2895
2896 2009-11-23  Zoltan Varga  <vargaz@gmail.com>
2897
2898         * aot-compiler.c (emit_llvm_file): Enable some llvm optimizations which seem
2899         to make the generated code smaller.
2900
2901         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Add a code
2902         sequence generated by recent LLVM versions.
2903
2904         * mini-llvm.c: Add support for a few simple cases which weren't supported
2905         before.
2906
2907         * mini-trampolines.c (mono_magic_trampoline): Don't call
2908         mono_arch_get_vcall_slot () when llvm is enabled.
2909
2910         * aot-compiler.c (emit_llvm_file): Add code to run the 'opt' llvm tool.
2911
2912         * mini-trampolines.c (mono_magic_trampoline): Extract the bulk of this function
2913         into a new function called common_call_trampoline () which is used by the
2914         llvm vcall trampoline as well.
2915
2916         * debugger-agent.c: Implement single threaded invokes.
2917
2918         * debugger-agent.c: Revert change which broke the agent on linux.
2919
2920         * method-to-ir.c (inline_method): Prevent infinite recursion. Fixes
2921         #557606.
2922
2923         * generics.cs: Add a test.
2924
2925 2009-11-22  Zoltan Varga  <vargaz@gmail.com>
2926
2927         * debugger-agent.c: Fix the cygwin build.
2928
2929 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
2930
2931         * cprop.c: Remove this unused file.
2932
2933 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
2934
2935         * cfold.c (mono_constant_fold_ins): Fix constant folding of shr_imm. Fixes
2936         #557262.
2937
2938         * basic.cs: Add a test.
2939
2940 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
2941
2942         * method-to-ir.c (mono_method_to_ir): Use mono_use_llvm instead of ENABLE_LLVM
2943         in one more place.
2944
2945 2009-11-20  Zoltan Varga  <vargaz@gmail.com>
2946
2947         * mini.c mini-trampolines.c driver.c: Add a 'mono_use_llvm' flag to control
2948         whenever the runtime uses LLVM code. Add a '--llvm' command line option to set
2949         it. Use this flag to control llvm related code paths instead of #ifdef
2950         ENABLE_LLVM, so a runtime configured without --enable-llvm can use LLVM compiled
2951         AOT code.
2952
2953         * aot-runtime.c aot-compiler.c: Add a 'flag' field to MonoAotFileInfo.
2954
2955         * mini.h: Bump AOT file format version.
2956
2957         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline_full): These
2958         receive their argument in MONO_ARCH_VTABLE_REG, not in the first argument reg.
2959
2960         * debugger-agent.c (create_event_list): Fix a crash if an empty assembly list
2961         was used as an assembly filter.
2962
2963 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
2964
2965         * unwind.c: Fix support for ppc.
2966
2967         * exceptions-ppc.c (mono_arch_find_jit_info): Change this to use dwarf frame
2968         unwind info. Change to the mono_arch_find_jit_info_ext () interface.
2969
2970 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
2971
2972         * mini-ppc.c (mono_arch_emit_prolog): Fix a copy-paste error to fix the ppc64
2973         port.
2974         (mono_arch_cpu_init): Don't set cpu_hw_flags to 0 at the end, this was somehow
2975         added by the ps3 changes.
2976
2977 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
2978
2979         * mini-gc.c: Resurrect this, so at least it compiles.
2980
2981         * debugger-agent.c (assembly_commands): Implement GET_NAME command.
2982
2983 2009-11-18  Zoltan Varga  <vargaz@gmail.com>
2984
2985         * debugger-agent.c (mono_debugger_agent_handle_exception): Pass a MonoJitInfo to
2986         create_event_list () so assembly filters can be used.
2987
2988         * exceptions-ppc.c (mono_arch_find_jit_info): Fix the restoration of registers
2989         from the LMF.
2990
2991 2009-11-17  Zoltan Varga  <vargaz@gmail.com>
2992
2993         * debugger-agent.c (mono_debugger_agent_breakpoint_hit): Fix a warning.
2994         (mono_debugger_agent_thread_interrupt): Make this return FALSE if the agent
2995         is disabled.
2996
2997         * aot-compiler.c (add_generic_instances): Emit instances of common generic
2998         classes for char/bool too.
2999
3000         * debugger-agent.c (DebuggerTlsData): Honor the DISABLE_SOFT_DEBUG option.
3001
3002         * debugger-agent.c (DebuggerTlsData): Add a 'really_suspended' flag, not yet
3003         used.
3004
3005         * debugger-agent.c: Add some definitions to make backporting to 2.6 easier.
3006         Fix warnings.
3007
3008 2009-11-15  Andreas Faerber  <andreas.faerber@web.de>
3009
3010         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Signature fix.
3011         
3012         Code contributed under MIT/X11 license.
3013
3014 2009-11-14  Zoltan Varga  <vargaz@gmail.com>
3015
3016         (mono_debugger_agent_thread_interrupt): Save the context so stacktraces for
3017         threads in native code work.
3018
3019         * debugger-agent.c: Pass the 'flags' argument to VM_INVOKE_METHOD earlier in
3020         the parameter list, so it can be acted upon by vm_commands (). Bump protocol
3021         version.
3022
3023 2009-11-13 Jonathan Chambers <joncham@gmail.com>
3024
3025         * debugger-agent.c: Implementation for Windows platform.
3026
3027         * mini-x86.c: Add support for Windows. Use mono-* synchronization
3028         primitives. Use SEH to implement breakpoints and single stepping.
3029
3030         * mini-x86.h: Enable soft debugger on Windows.
3031
3032         Code contributed under MIT/X11 license.
3033
3034 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
3035
3036         * mini-amd64.c (emit_call_body): Disable usage of near calls when running
3037         under XEN. Fixes #522894.
3038
3039         * patch-info.h: Add LLVM_IMT_TRAMPOLINE.
3040
3041         * mini-llvm.c aot-compiler.c aot-runtime.c mini.c: Add support for making
3042         interface calls in LLVM AOT code.
3043
3044         * aot-compiler.c mini-llvm.c: Abort llvm compilation if a non-encodable patch
3045         is found.
3046
3047         * mini-llvm.c: Add support for OP_VPHI.
3048
3049         * objects.cs: Add a test.
3050
3051 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
3052
3053         * debugger-agent.c (mono_debugger_agent_single_step_event): Avoid a crash if
3054         this is called on the debugger thread.
3055
3056 2009-11-12  Zoltan Varga  <vargaz@gmail.com>
3057
3058         * mini-llvm.c: Add soft-float support.
3059
3060         * method-to-ir.c (mono_decompose_soft_float): Restart after decomposing an
3061         FCALL which returns an R4.
3062
3063         * driver.c (mono_main): Add a missing '\n'.
3064
3065         * mini-trampolines.c (mono_create_llvm_imt_trampoline): Fix the build on
3066         platforms which doesn't support the LLVM IMT trampoline.
3067
3068 2009-11-11  Zoltan Varga  <vargaz@gmail.com>
3069
3070         * mini-llvm.c (mono_llvm_emit_method): Fix LOCALLOC.
3071
3072         * mini-llvm-cpp.cpp: Update to latest LLVM SVN.
3073
3074         * mini-llvm.c (mono_llvm_emit_method): Avoid creating plt entries for
3075         virtual calls.
3076
3077         * aot-runtime.c: Don't define HAVE_DL_ITERATE_PHDR, configure now does that.
3078
3079 2009-11-10  Zoltan Varga  <vargaz@gmail.com>
3080
3081         * aot-compiler.c aot-runtime.c: Change how mono_arch_find_jit_info () works.
3082         Instead of emitting a method_order table, sort the contents of the code_offsets
3083         table and do a binary search in the sorted table. The previous approach doesn't
3084         work with LLVM which emits methods in a arbitrary order.
3085
3086         * aot-runtime.c: Add support for creating MonoJitInfo structures by searching
3087         in the .eh_frame section in ELF files.
3088
3089         * mini.h: Bump corlib file format version.
3090
3091         * mini-llvm.c aot-compiler.c: Add support for AOT to the LLVM back end.
3092
3093         * exceptions-arm.c (mono_arch_get_call_filter_full): Update after the
3094         LDMIA->LDM macro name change.
3095
3096 2009-11-09  Zoltan Varga  <vargaz@gmail.com>
3097
3098         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Fix and enable this for
3099         x86.
3100
3101         * mini-llvm-cpp.cpp (JITMemoryManager): Fix compilation with LLVM 2.7
3102         SVN.
3103
3104         * aot-compiler.c: Ditto.
3105
3106         * mini-arm.c (mono_arch_allocate_vars): Fix the previous change by passing
3107         &align to mini_type_stack_size_full ().
3108
3109         * mini-arm.c (mono_arch_emit_prolog): Implement support for varargs.
3110
3111         * mini-ops.h: Add documentation for the OP_ARGLIST opcode.
3112
3113 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
3114
3115         * mini-arm.c: Compute the stack space used by arguments using
3116         mini_type_stack_size_full ().
3117
3118 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
3119
3120         * optflags-def.h: Remove dead TREEPROP optimization.
3121
3122 2009-11-08  Rodrigo Kumpera  <rkumpera@novell.com>
3123
3124         * mini-ppc.h: Make mono compiler under FreeBSD/ppc64. 
3125
3126         Patch by Justin Hibbits <chmeeedalf@gmail.com>.
3127
3128 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
3129
3130         * driver.c (mono_jit_parse_options): New public API function to parse options
3131         as done by the runtime executable.
3132
3133         * debugger-agent.c (buffer_add_cattrs): Fix reading an uninitialized variable
3134         when handling named arguments.
3135
3136 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
3137
3138         * mini-arm.c: Implement support for returning vtypes in registers, fix support
3139         for passing small vtypes in registers, make the CallInfo structures more
3140         similar to the code on the other platforms.
3141
3142         * mini-arm.c (mono_arch_allocate_vars): Align small vtypes to 4 bytes too since
3143         the code in the prolog requires it.
3144
3145 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
3146
3147         * mini-arm.c debugger-agent.c: Android changes from Koushik K. Dutta
3148         (koush@koushikdutta.com).
3149
3150         * mini-arm.c (handle_thunk): Add a domain argument to control the domain
3151         where the thunk memory should be allocated from. Fixes appdomain unloading
3152         on arm.
3153
3154 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
3155
3156         * mini-arm.c exceptions-arm.c: Make ctx->regs map directly to the 16 hardware
3157         registers, instead of r4..r11,ip,lr. Make restore_context () restore r0..r3 too.
3158
3159 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3160
3161         * mini-amd64.c (mono_arch_output_basic_block): Don't allow OP_SEQ_POINT in
3162         AOT, as it is not implemented yet.
3163
3164         * mini-x86.c (mono_arch_output_basic_block): Ditto.
3165
3166 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
3167
3168         * debugger-agent.c: Fix windows build.
3169
3170 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3171
3172         * debugger-agent.c (debugger_thread): Call mono_set_is_debugger_attached ()
3173         after the client connects/disconnects.
3174
3175         * debugger-agent.c: Add an 'onthrow' option to start the debugger agent
3176         when an exception of a given type is thrown.
3177
3178         * debugger-agent.c: Add a 'onuncaught' option to start the debugger agent
3179         only on an uncaught exception.
3180
3181         * mini-exceptions.c: Notify the debugger agent on an uncaught exception.
3182
3183         * debugger-agent.c: Add a 'launch' option.
3184
3185 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3186
3187         * debugger-agent.c: Add a 'timeout' option.
3188
3189 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3190
3191         * debugger-agent.c: Implement the 'server' and 'suspend' options supported by
3192         the JDWP agent.
3193
3194 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
3195
3196         * debugger-agent.c (set_breakpoint): Emit a log message.
3197
3198 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
3199
3200         * mini-arm.c: Fix the arm build.
3201
3202 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
3203
3204         * aot-compiler.c: don't leak the value returned from
3205         mono_type_full_name().
3206
3207 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
3208
3209         * debugger-agent.c: defer including mono-mutex.h until we know the
3210         agent is supported.
3211
3212 2009-11-04 Jonathan Chambers <joncham@gmail.com>
3213
3214         * debugger-agent.c: Changes to build on windows. Use mono-mutex instead
3215         of pthreads directly.
3216
3217         * mini.c (mono_sigfpe_signal_handler): Changed signature of Windows
3218         exception handlers. Pass info argument.
3219
3220         * mini.h: Adjust signatures of soft debugger functions to pass void*
3221         instead of siginfo_t. Adjust SIG_HANDLER_SIGNATURE on Windows.
3222
3223         * mini-amd64.c (mono_arch_is_single_step_event): Adjust signature to pass void*
3224         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3225         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
3226         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3227
3228         * mini-amd64.h: Adjust MonoW32ExceptionHandler signature.
3229
3230         * mini-x86.c (mono_arch_is_single_step_event): Adjust signature to pass void*
3231         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3232         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
3233         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
3234
3235         * mini-x86.h: Adjust MonoW32ExceptionHandler signature.
3236
3237         * exceptions-x86.c: Adjust W32_SEH_HANDLE_EX for new signature.
3238
3239         * exceptions-amd64.c: Adjust W32_SEH_HANDLE_EX for new signature.
3240
3241         * mono-semaphore.h: Skeleton implementation for Windows.
3242
3243         Code contributed under MIT/X11 license.
3244
3245 2009-11-04 Jonathan Chambers <joncham@gmail.com>
3246
3247         * simd-intrinsics.c (simd_intrinsic_emit_setter): Unfix my fix.
3248
3249         Code contributed under MIT/X11 license.
3250
3251 2009-11-04 Jonathan Chambers <joncham@gmail.com>
3252
3253         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix windows build.
3254
3255         Code contributed under MIT/X11 license.
3256
3257 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
3258
3259         * aot-compiler.c (mono_save_xdebug_info): Bump the threshold for flushing
3260         debug info to 100 because 10 still slows down gdb too much.
3261
3262         * method-to-ir.c (mono_method_to_ir): Avoid rethrowing thread abort exceptions
3263         inside runtime invoke wrappers. This avoids the need to call ResetAbort () on
3264         them in the wrappers.
3265
3266 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
3267
3268         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
3269
3270         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix a warning.
3271
3272         * aot-runtime.c (mono_aot_get_method): Refactor some code into a new helper
3273         function mono_aot_get_array_helper_from_wrapper ().
3274
3275         * aot-compiler.c (add_generic_class): Refactor the code a bit, really emit
3276         array helper methods.
3277
3278 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
3279
3280         * simd-intrinsics.c (load_simd_vreg): Add extra argument to signal if
3281         the value was loaded from memory.
3282
3283         * simd-intrinsics.c (simd_intrinsic_emit_setter): Store back to memory if
3284         the value was loader from there.
3285
3286         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Fail correctly for Shuffle
3287         without constant swizzle.
3288
3289 2009-11-02 Jonathan Chambers <joncham@gmail.com>
3290
3291         * mini-amd64.c: Put soft debugger functions behind a
3292         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
3293
3294         * mini-amd64.h: disable the soft debugger in windows.
3295
3296         Code contributed under MIT/X11 license.
3297
3298 2009-11-02 Jonathan Chambers <joncham@gmail.com>
3299
3300         * mini-x86.c: Put soft debugger functions behind a
3301         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
3302
3303         Code contributed under MIT/X11 license.
3304
3305 2009-11-02 Jonathan Chambers <joncham@gmail.com>
3306
3307         * exceptions-x86.c (win32_handle_stack_overflow): Fix parameters
3308         to mono_arch_find_jit_info_ext.
3309
3310         Code contributed under MIT/X11 license.
3311
3312 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
3313
3314         * debugger-agent.c: Include netinet/in.h to fix the bsd build.
3315
3316         * debugger-agent.c: Add support for filtering events by assemblies.
3317
3318         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Return false if
3319         the agent is not enabled.
3320
3321 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
3322
3323         * exceptions-x86.c: hopefully last change to fix the windows build.
3324         This one courtesy of Jonathan Chambers.
3325
3326 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
3327
3328         * debugger-agent.c: remove unused function.
3329
3330 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
3331
3332         * debugger-agent.c: add #ifdefs for a few header files.
3333         * mini-x86.h: disable the soft debugger in windows.
3334         Step 1 of 2 to make this compile on windows with gcc.
3335
3336 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
3337
3338         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Comment this out for now
3339         as it breaks the build.
3340
3341 2009-07-01  Zoltan Varga  <vargaz@gmail.com>
3342
3343         Merge the soft debugger branch.
3344
3345         * debugger-agent.h debugger-agent.c: New files containing the soft
3346         mode debugger module.
3347
3348         * method-to-ir.c (mono_method_to_ir): Generate OP_SEQ_POINT opcodes
3349         at the appropriate locations.
3350
3351         * mini-<ARCH>.c (mono_arch_output_basic_block): Handle OP_SEQ_POINT
3352         opcode.
3353
3354         * mini-<ARCH>.c: Add new arch-specific functions to set/clear breakpoints,
3355         enable/disable single stepping.
3356
3357         * exceptions-<ARCH>.c (mono_arch_find_jit_info_ext): New stack unwinding api
3358         which returns all information in a StackFrameInfo structure, and can handle the
3359         LMF frames added by the debugger.
3360
3361         * mini-<ARCH>.h (MonoLMFExt): New structure containing additional information
3362         about an LMF frame.
3363
3364         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): New stack
3365         walker function which works on a specific thread and passes a StackFrameInfo
3366         structure to its callback.
3367
3368         * mini.c (mini_init): Initialize the debugger agent.
3369
3370         * aot-compiler.c aot-runtime.c: Add soft-debug support.
3371
3372         * mini-ops.h: Add OP_SEQ_POINT opcode.
3373
3374         * driver.c (mono_main): Add new '--debugger-agent' option for passing
3375         arguments to the debugger agent.
3376
3377 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
3378
3379         * mini.c (mini_method_compile): Disable llvm for methods with an lmf here to
3380         speed things up.
3381
3382         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOCALLOC.
3383
3384         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Implement this for x86.
3385
3386         * mini.c (mini_init): Avoid using the IMT trampoline in the LLVM case.
3387
3388         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add a static rgctx trampoline
3389         if needed.
3390         (mono_create_llvm_imt_trampoline): New function to create a trampoline which
3391         sets the IMT argument and makes a virtual call.
3392
3393         * mini-llvm.c: Enable interface calls using the llvm imt trampoline.
3394
3395 2009-11-01  Zoltan Varga  <vargaz@gmail.com>
3396
3397         * Makefile.am (llvm_sources): Enable the llvm option since it no longer breaks
3398         the windows build.
3399
3400 2009-10-30  Zoltan Varga  <vargaz@gmail.com>
3401
3402         * mini.c (mini_cleanup): Call profiler shutdown before shutting down the
3403         runtime. Fixes #551228.
3404
3405 2009-10-29  Zoltan Varga  <vargaz@gmail.com>
3406
3407         * mini-x86.c (mono_arch_output_basic_block): Fix % 1. Fixes #550970.
3408
3409         * basic.cs: Add a test.
3410
3411         * method-to-ir.c (mono_method_to_ir): Use EMIT_NEW_LOAD_MEMBASE_TYPE to
3412         load vtypes instead if OP_LOADV_MEMBASE in the implementation of
3413         CONSTRAINED. Fixes #550964.
3414
3415         * generics.cs: Add a test.
3416
3417 2009-10-28  Mark Probst  <mark.probst@gmail.com>
3418
3419         * mini-posix.c (add_signal_handler): Use
3420         mono_gc_get_suspend_signal() instead of GC_get_suspend_signal().
3421
3422 2009-10-28 Jerry Maine <crashfourit@gmail.com>
3423
3424         Contributed under the terms of the MIT/X11 license by
3425         Jerry Maine <crashfourit@gail.com>.
3426
3427         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
3428         sse4a for simd intrinsics.
3429
3430         * mini-amd64.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
3431         sse4a for simd intrinsics.
3432
3433 2009-10-27  Zoltan Varga  <vargaz@gmail.com>
3434
3435         * ir-emit.h method-to-ir.c: Change a few _IMM macros to assign to inst_imm
3436         instead of inst_p1 which is not the same on ILP32 platforms.
3437
3438 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
3439
3440         * mini-ppc.c (mono_arch_emit_prolog): Load the current got address,
3441         not the mscorlib one before calling mono_get_lmf_addr.
3442
3443         * tramp-ppc.c (mono_arch_create_trampoline_code_full): Fix the storing
3444         of the ip to the LMF.
3445
3446         * method-to-ir.c (mono_method_to_ir): Fix the handling of the
3447         immediate in the op->op_imm optimization.
3448
3449         * mini-ppc.c: Add a 'vtregs' field to ArgInfo to make the code easier to
3450         understand. VTypes now work, but are not abi compliant, as they are
3451         split into 4 byte parts instead of 8.
3452         (emit_memcpy): Fix the unrolled case to work on the PS3.
3453
3454         * mini-ppc.c (get_delegate_invoke_impl): Fix this for the PS3.
3455
3456         * aot-compiler.c (mono_compile_assembly): Make the autoreg option
3457         the default when static linking.
3458
3459         * mini-ppc.c (mono_arch_emit_prolog): Fix handling of I8 arguments.
3460
3461         * aot-compiler.c: Add an autoreg option to automatically register
3462         statically linked aot modules using ELF .ctors.
3463
3464         * genmdesc.pl: Add __ppc64__ to allowed defines.
3465
3466 2009-10-25  Zoltan Varga  <vargaz@gmail.com>
3467
3468         * mini-posix.c (add_signal_handler): Delay the GC suspend signal while
3469         executing a SIGSEGV handler on an altstack, since libgc can't handle that.
3470
3471 2009-10-24  Mark Probst  <mark.probst@gmail.com>
3472
3473         * exceptions-x86.c (mono_arch_find_jit_info): Fix build.
3474
3475 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
3476
3477         * mini-exceptions.c (mini_jit_info_table_find): Add an 'out_domain' argument
3478         which will contain the domain where the method was found.
3479
3480         * exceptions-<ARCH>.c mini-exceptions.c: Update callers of
3481         mini_jit_info_table_find ().
3482
3483         * aot-compiler.c (xdebug_end_emit): Remove so stray debug code.
3484
3485         * branch-opts.c (mono_if_conversion): Avoid running deadce if it is disabled.
3486
3487 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
3488
3489         * mini-x86.c (mono_arch_emit_prolog): Disable aot for methods with save_lmf
3490         set, its not supported yet.
3491
3492 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
3493
3494         * aot-runtime.c (mono_aot_get_method): Avoid asserting if a array generic
3495         iface wrapper is not found.
3496         (mono_aot_get_method): Ditto for GetGenericValueImpl.
3497
3498 2009-10-21  Zoltan Varga  <vargaz@gmail.com>
3499
3500         * aot-runtime.c (mono_aot_get_method): Fix support for the IList<T> wrappers,
3501         which have a different name.
3502
3503         * aot-runtime.c (mono_aot_get_method): Special case the array generic iface
3504         wrappers and Array.GetGenericValueImpl ().
3505
3506         * aot-compiler.c: Avoid emitting some wrappers which are not needed anymore
3507         because of the change above.
3508
3509         * generics.cs: Add a test for full aot + generic array ifaces.
3510
3511 2009-10-19  Sebastien Pouliot  <sebastien@ximian.com>
3512
3513         * aot-compiler.c (emit_plt): Remove duplicate 'debug_sym' variable 
3514         that hides the previous one.
3515
3516 2009-10-18  Zoltan Varga  <vargaz@gmail.com>
3517
3518         * aot-compiler.c (can_marshal_struct): Allow some System.dll structs to be
3519         marshalled. Fixes #541623.
3520
3521 2009-10-16  Zoltan Varga  <vargaz@gmail.com>
3522
3523         * aot-compiler.c (emit_extra_methods): Remove some asserts which are not needed.
3524
3525 2009-10-15  Zoltan Varga  <vargaz@gmail.com>
3526
3527         * mini.c (mono_op_imm_to_op): Handle OP_AND/OR/XOR_IMM.
3528
3529 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3530
3531         * mini-posix.c (sigprof_signal_handler):
3532         Implemented support for building stat call chans in different ways.
3533
3534 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3535
3536         * mini-exceptions.c (mono_find_jit_info):
3537         Also check that a jit info has been found (fixes a profiler crash).
3538
3539 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3540
3541         * mini.c (mono_codegen):
3542         Call mono_profiler_code_buffer_new with correct code address.
3543
3544 2009-10-14  Zoltan Varga  <vargaz@gmail.com>
3545
3546         * driver.c (mono_main): Change the date in the copyright.
3547
3548 2009-10-14  Mark Probst  <mark.probst@gmail.com>
3549
3550         * method-to-ir.c (mono_method_to_ir): Don't use a managed array
3551         allocator in shared generic code for open classes, because we
3552         can't get those classes' vtables.  We need to make managed
3553         allocators not depend on the vtable at compile-time to solve this.
3554
3555 2009-10-13  Martin Baulig  <martin@ximian.com>
3556
3557         * debug-mini.c (mono_debugger_trampoline_compiled): Add
3558         `const guint8 *trampoline' argument; send both the old and the new
3559         notification.
3560
3561 2009-09-30  Zoltan Varga  <vargaz@gmail.com>
3562
3563         * aot-compiler.c (add_wrappers): Add a runtime invoke wrapper which is used by
3564         mono_runtime_capture_context () without calling mono_runtime_invoke ().
3565         (can_marshal_struct): Skip structures with auto layout.
3566
3567         * tramp-arm.c (GEN_TRAMP_SIZE): Increase this by 4.
3568
3569 2009-10-02  Zoltan Varga  <vargaz@gmail.com>
3570
3571         * mini-sparc.c (mono_arch_emit_setret): Emit long return values using OP_LMOVE.
3572         (mono_arch_create_vars): Instead of allocating a stack slot by hand, allocate
3573         a variable to hold the stack slot used by the int<->float conversion opcodes.
3574
3575         * mini-sparc.c (mono_arch_build_imt_thunk): Implement support for fail_tramp.
3576
3577 2009-10-04  Zoltan Varga  <vargaz@gmail.com>
3578
3579         * aot-compiler.c (add_generic_class): Only add GetGenericValueImpl wrappers
3580         when using full-aot.
3581
3582 2009-10-06  Zoltan Varga  <vargaz@gmail.com>
3583
3584         * aot-compiler.c (add_generic_class): Add an instance of GenericComparer<T> for
3585         each instance of Comparer<T>.
3586
3587         * generics.cs: Add a new test.
3588
3589 2009-10-09  Zoltan Varga  <vargaz@gmail.com>
3590
3591         * driver.c (parse_debug_options): Add a 'gdb' option.
3592
3593         * mini.c (mini_parse_debug_options): Add a 'gdb' option.
3594
3595         * image-writer.c: Add support for emitting the image into a memory buffer.
3596
3597         * dwarfwriter.c: Add support for sharing one IL file between multiple images.
3598
3599         * aot-compiler.c: Add support for registering debug info with GDB using the
3600         new JIT debugging interface in GDB 7.0. It can be turned on by setting
3601         MONO_XDEBUG to 'gdb'.
3602
3603 2009-10-10  Zoltan Varga  <vargaz@gmail.com>
3604
3605         * aot-compiler.c (mono_save_trampoline_xdebug_info): Implement this for the
3606         gdb mode.
3607
3608 2009-10-11  Zoltan Varga  <vargaz@gmail.com>
3609
3610         * aot-compiler.c (mono_save_xdebug_info): Emit a symbol for the method which
3611         can be used to set breakpoints in gdb.
3612
3613         * image-writer.c (bin_writer_emit_writeout): Add support for setting the text
3614         segment to an absolute address.
3615
3616 2009-10-13  Mark Probst  <mark.probst@gmail.com>
3617
3618         * method-to-ir.c: Use the managed array allocator method if
3619         available.
3620
3621 2009-10-13  Bill Holmes  <billholmes54@gmail.com>
3622
3623         * aot-compiler.c : Fix the MSVC builds
3624
3625         Code is contributed under MIT/X11 license.
3626
3627 2009-10-13  Zoltan Varga  <vargaz@gmail.com>
3628
3629         * aot-compiler.c (mono_save_xdebug_info): Group methods into groups of 10 to
3630         avoid registering 1 symbol file per method with gdb.
3631
3632 2009-09-29  Zoltan Varga  <vargaz@gmail.com>
3633
3634         * mini-sparc.c: Fix the handling of enums with base type long.
3635
3636         * mini-sparc.c (mono_arch_output_basic_block): Fix IREM_UN_IMM.
3637
3638         * mini-sparc.c (mono_arch_allocate_vars): Use mono_class_from_mono_type ()
3639         instead of using type->data.klass as the later doesn't work with generics.
3640
3641 2009-09-25  Mark Probst  <mark.probst@gmail.com>
3642
3643         * method-to-ir.c, mini.h, mini-alpha.c, mini-amd64.c, mini-arm.c,
3644         mini-hppa.c, mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c,
3645         mini-s390x.c, mini-sparc.c, mini-x86.c: Thread.get_CurrentThread
3646         works differently now and we don't handle it in the JIT anymore.
3647
3648         * mini.c, mini-exceptions.c, mini-posix.c, debug-debugger.c,
3649         debug-mini.c, tramp-amd64.c, tramp-x86.c: Changes resulting from
3650         the Thread class split.
3651
3652 2009-09-25  Zoltan Varga  <vargaz@gmail.com>
3653
3654         * driver.c: Don't run tests with the obsolete treeprop optimization.
3655
3656         * mini-sparc.c (mono_arch_create_vars): Make the component vars of a long ret
3657         variable volatile. Fixes #541577.
3658
3659         * basic-calls.cs: Add a new test.
3660
3661         * basic-long.cs: Remove tests which are now in basic-calls.cs.
3662
3663 2009-09-24  Zoltan Varga  <vargaz@gmail.com>
3664
3665         * dwarfwriter.c (emit_debug_info_end): Disable this as it doesn't seem to
3666         work/required with recent iphone sdk versions.
3667
3668         * aot-compiler.c (add_wrappers): Generate PtrToStructure wrappers for more
3669         structures.
3670
3671         * decompose.c (mono_decompose_vtype_opts): Avoid reading uninitialized memory
3672         in the VCALL decomposition code.
3673
3674 2009-09-22  Zoltan Varga  <vargaz@gmail.com>
3675
3676         * mini-ia64.c (mono_arch_output_basic_block): Fix ISHR/ISHR_IMM.
3677
3678         * basic.cs: Add a test.
3679
3680         * mini-ia64.c (mono_arch_build_imt_thunk): Implement support the virtual
3681         generic invokes.
3682
3683         * mini-exceptions.c (mini_jit_info_table_find): New helper function which
3684         searches all the domains of the current thread.
3685
3686         * exceptions-<ARCH>.c: Use it. Fixes #539394.
3687
3688 2009-09-21  Zoltan Varga  <vargaz@gmail.com>
3689
3690         * exceptions-arm.c (mono_arm_throw_exception): Set ctx->ebp to fp instead of sp
3691         so catching exceptions thrown in the same method works. Fixes exception17.exe.
3692
3693         * tramp-arm.c (mono_arch_create_trampoline_code_full): Store NULL into lmf->method
3694         for non-jit trampolines.
3695
3696         * mini.c (mono_jit_runtime_invoke): Allow string ctors with dyn runtime invoke.
3697
3698         * aot-compiler.c (add_wrappers): Ditto.
3699
3700         * mini-arm.c: Implement support for passing vtypes and floats, and increase
3701         the size of the param area used by dyn_call to 6 which covers the majority of
3702         methods.
3703
3704         * mini.c aot-compiler.c: Allow dyn_call for string methods except ctors.
3705
3706         * mini-arm.c: Implement support for passing/receiving
3707         longs and receiving floats in the dyn_call code.
3708
3709         * mini-amd64.c: Implement support for receiving vtypes in registers in
3710         the dyn_call code.
3711
3712         * mini.c mini-amd64.c: Implement partial support for passing vtypes in
3713         the dyn_call code.
3714
3715 2009-09-20  Zoltan Varga  <vargaz@gmail.com>
3716
3717         * mini-arm.c (get_call_info): Return more precise information in
3718         ArgInfo->regtype.
3719         (dyn_call_supported): Use the information in CallInfo.
3720
3721         * mini-arm.c: Enable support for returning vtypes in the dyn_call code.
3722
3723         * mini.c mini-amd64.c: Enable support for returning vtypes in the dyn_call
3724         code.
3725
3726         * mini-arm.c: Update after the dyn_call api changes.
3727
3728         * mini.c (mini_create_jit_domain_info): Register a destructor function
3729         for the runtime_invoke_hash.
3730
3731         * mini-amd64.c (mono_arch_get_dyn_call_args): Rename this to
3732         'mono_arch_dyn_call_start'. Pass the pointer to the return value buffer to
3733         this function.
3734         (mono_arch_get_dyn_call_ret): Rename this to 'mono_arch_dyn_call_finish'.
3735         (dyn_call_supported): Simplify this by using get_call_info ().
3736         (mono_arch_dyn_call_free): New destructor function.
3737
3738         * generics.cs: Remove a printf.
3739
3740         * method-to-ir.c (mono_method_to_ir): Allocate some param area for DYN_CALL.
3741
3742         * mini-arm.c: Add support for enum return values and passing a few arguments
3743         on the stack.
3744         
3745         * mini.c (mono_jit_runtime_invoke): Add support for enum return values to
3746         dyn invoke.
3747
3748         * mini-amd64.c (mono_arch_get_dyn_call_ret): Ditto.
3749
3750         * aot-compiler.c (add_wrappers): Add a few restrictions for the use of
3751         the dynamic invoke wrappers.
3752
3753         * mini-arm.c: Implement OP_DYN_CALL for arm.
3754
3755         * aot-compiler.c (add_wrappers): Avoid aot-ing runtime invoke wrappers
3756         supported by the dynamic runtime invoke wrapper.
3757
3758         * aot-compiler.c aot-runtime.c: Add support for encoding the dynamic
3759         runtime invoke wrapper.
3760
3761         * mini.c (mono_jit_runtime_invoke): Use the dynamic runtime invoke wrappers
3762         if possible when running with full-aot.
3763
3764         * mini-ops.h: Add OP_DYN_CALL opcode.
3765
3766         * mini-amd64.c method-to-ir.c: Add infrastructure for making method calls
3767         with dynamic arguments lists similar to libffi.
3768
3769 2009-09-19  Zoltan Varga  <vargaz@gmail.com>
3770
3771         * method-to-ir.c: Fix the previous change on 64 bit platforms.
3772         
3773         * method-to-ir.c: Applied patch from Rodrigo Kumpera. Allow an i8 argument
3774         to NEWARR.
3775
3776         * iltests.il.in: Add a new test.
3777         
3778 2009-09-18  Zoltan Varga  <vargaz@gmail.com>
3779
3780         * aot-compiler.c (add_generic_instances): Add more instances of
3781         GenericEqualityComparer.
3782
3783 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
3784
3785         * mini.c: Add asserts for mono_class_vtable calls that are not meant to fail.
3786
3787 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
3788
3789         * method-to-ir.c: Handle failures from mono_class_vtable. Added some
3790         comments on some functions that now can fail.
3791
3792 2009-09-17  Andrew Jorgensen  <ajorgensen@novell.com>
3793
3794         * Makefile.am: Add Info.plist to EXTRA_DIST
3795
3796 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
3797
3798         * method-to-ir.c (mono_method_to_ir): Allow AOT for CEE_LDTOKEN in
3799         static synchronized wrappers. Fixes #539500.
3800
3801 2009-09-14  Rodrigo Kumpera  <rkumpera@novell.com>
3802
3803         * jit-icalls.c (mono_class_static_field_address): handle vtable failure
3804         properly.
3805
3806 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
3807
3808         * mini-exceptions.c (mono_handle_exception_internal): Store the computed
3809         lmf before calling filter clauses as well. Fixes #539550.
3810
3811         * exceptions.cs: Add a test.
3812         
3813 2009-09-14  Zoltan Varga  <vargaz@gmail.com>
3814
3815         * aot-compiler.c (add_generic_class): Add instances of
3816         Array.GetGenericValueImpl as well.
3817
3818         * Makefile.am (fullaotcheck): Copy and aot more assemblies so linq
3819         can be tested too.
3820
3821         * generics.cs: Add a fullaot linq test.
3822
3823 2009-09-10  Zoltan Varga  <vargaz@gmail.com>
3824
3825         * aot-compiler.c (arch_emit_static_rgctx_trampoline): Don't clobber argument
3826         reg r1 on arm.
3827
3828 2009-09-10  Bill Holmes  <billholmes54@gmail.com>
3829
3830         * mini-trampolines.c (mono_delegate_trampoline) : Call
3831           mono_cominterop_get_invoke if the delegate target object
3832           is a COM object.
3833
3834         Code is contributed under MIT/X11 license.
3835
3836 2009-09-09  Sebastien Pouliot  <sebastien@ximian.com>
3837
3838         * method-to-ir.c: For CoreCLR throw a SecurityException if an 
3839         internal call is defined outside platform code. Reduce code 
3840         duplication with existing [Method|Field]AccessException
3841
3842 2009-09-08  Rodrigo Kumpera  <rkumpera@novell.com>
3843
3844         * mini-x86.c (mono_arch_emit_call): Don't reduce stack usage by 4
3845         if the return value is a small struct passed on regs.
3846
3847 2009-09-09  Zoltan Varga  <vargaz@gmail.com>
3848
3849         * cpu-arm.md mini-arm.c: Remove unused opcodes.
3850
3851         * mini-codegen.c: Enable the cpu description validation for arm.
3852
3853 2009-09-08  Zoltan Varga  <vargaz@gmail.com>
3854
3855         * basic-calls.cs: Move the test_0_float_load_and_store_with_big_offset ()
3856         test which depends on structs to objects.cs.
3857         
3858         * basic-calls.cs: Remove calls to Console.WriteLine and throws, since those
3859         require object model related stuff working.
3860
3861         * cpu-x86.md mini-x86.c: Remove more unused opcodes.
3862
3863         * mini-ops.h: Fix OP_BIGMUL instruction descriptions.
3864
3865         * mini-codegen.c (mono_local_regalloc): Validate the cpu description 
3866         against the instruction metadata in mini-ops.h. amd64 only for now.
3867
3868         * mini-ops.h: Fix some instruction descriptions.
3869
3870         * mini-ops.h mini-x86.c mini-amd64.c cpu-<ARCH>.md: Remove some
3871         unused instructions.
3872
3873 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
3874
3875         * exceptions.cs: Add a new test.
3876
3877 2009-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
3878
3879         * mini-x86.c (needs_stack_frame): OSX requires full frames to keep proper alignment.
3880
3881 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
3882
3883         * mini-llvm.c (mono_llvm_emit_method): Add a few more missing casts,
3884         skip empty phi opcodes.
3885         
3886         * mini-llvm.c (mono_llvm_emit_method): Handle unsigned volatile variables
3887         correctly by zero extending after loads. Skip methods containing calls
3888         to the monitor enter/exit trampolines.
3889
3890         * tramp-x86.c (mono_arch_create_trampoline_code): Align the stack
3891         when calling mono_thread_force_interruption_checkpoint ().
3892
3893         * mini.c (mini_method_compile): Disable llvm when AOT compiling.
3894
3895         * tramp-amd64.c (mono_arch_patch_callsite): Add support for 32 bit ->
3896         64 bit thunks.
3897         (mono_arch_nullify_class_init_trampoline): Read 'buf' instead of 'code'.
3898
3899         * mini-llvm.c (mono_llvm_emit_method): Add a few missing conversions so a 
3900         bootstrap could run.
3901
3902 2009-09-04  Zoltan Varga  <vargaz@gmail.com>
3903
3904         * mini.c (mini_init): Set callbacks.get_runtime_build_info ().
3905
3906 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
3907
3908         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass the start
3909         of the method to
3910         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
3911         LLVM might be very short.
3912
3913         * mini-x86.c (mono_arch_output_basic_block): Maintain stack alignment
3914         in OP_THROW/RETHROW.
3915
3916         * exceptions-x86.c: Rewrite the throw trampolines so they maintain stack
3917         alignment on osx.
3918
3919 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
3920
3921         * mini-amd64.c (mono_arch_get_vcall_slot): Pass the start of the method to
3922         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
3923         LLVM might be very short.
3924
3925 2009-09-01  Zoltan Varga  <vargaz@gmail.com>
3926
3927         * exceptions-x86.c (throw_exception): Fix the previous change by substracting
3928         the alignment for the value of sp.
3929
3930 2009-09-01  Geoff Norton  <gnorton@novell.com>
3931
3932         * mini.c (mono_get_lmf_addr): Fix jit_thread_attach for native to 
3933         managed wrappers in full aot.
3934
3935 2009-08-31  Zoltan Varga  <vargaz@gmail.com>
3936
3937         * exceptions-x86.c (get_throw_exception): Align the stack on osx.
3938
3939 2009-08-28  Zoltan Varga  <vargaz@gmail.com>
3940
3941         * mini-llvm-cpp.cpp mini-llvm.c: Update to latest llvm api.
3942
3943 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
3944
3945         * aot-compiler.c (emit_exception_debug_info): Emit ei->flags too.
3946
3947         * aot-runtime.c (decode_exception_debug_info): Decode ei->flags from the
3948         saved info.
3949
3950         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
3951
3952         * aot-runtime.c aot-compiler.c: Emit exception causes fully so we don't
3953         depend on the info MonoMethodHeader which could be missing in IL stripped
3954         assemblies.
3955
3956 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
3957
3958         * mini-arm.c (add_general): Fix the passing of 64 bit values on darwin, where
3959         they are only 4 byte aligned.
3960
3961 2009-08-21  Zoltan Varga  <vargaz@gmail.com>
3962
3963         * mini-arm.c (mono_arch_allocate_vars): Use FP as the frame pointer as
3964         was done previously, since using SP causes too many problems.
3965
3966         * exceptions-arm.c: Fix the handling of sp/fp so unwinding through
3967         frames without a frame pointer works.
3968
3969         * mini-arm.c (mono_arch_get_global_int_regs): Avoid using V5 as a
3970         global register in methods with calls, since the calls can go through
3971         a static rgctx trampoline which doesn't save it.
3972
3973 2009-08-19  Zoltan Varga  <vargaz@gmail.com>
3974
3975         * mini-arm.c (mono_arch_context_get_int_reg): Handle SP as well.
3976
3977 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
3978
3979         * aot-compiler.c (add_generic_instances): Fix the net 1.1 build.
3980
3981 2009-08-18  Christian Hergert  <chris@dronelabs.com>
3982
3983         * method-to-ir.c: Fix warnings for uninitialized variables.
3984
3985 2009-08-18  Christian Hergert  <chris@dronelabs.com>
3986
3987         * mini-exceptions.c:
3988         * aot-compiler.c: Fix printf warnings.
3989
3990 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
3991
3992         * aot-compiler.c (add_generic_instances): Add string[] wrapper methods.
3993         Add GetGenericValueImpl<string>.
3994         
3995         * aot-compiler.c (add_generic_instances): Add instances of
3996         GenericEqualityComparer<T> for primitive types. Only emit the array
3997         wrappers into the mscorlib image.
3998
3999 2009-08-15  Zoltan Varga  <vargaz@gmail.com>
4000
4001         * aot-runtime.c (load_method): Rename 'aot_module' -> 'amodule'. Allocate
4002         the methods_loaded array using amodule->info->nmethods.
4003
4004         * mini.h (MonoAotFileInfo): Add an 'nmethods' field.
4005         (MONO_AOT_FILE_VERSION): Bump this.
4006
4007         * aot-compiler.c: Emit more generic instances allowing some parts of linq
4008         to work.
4009
4010         * aot-runtime.c (mono_aot_get_unwind_info): Handle the case when the
4011         MonoJitInfo doesn't belong to its methods aot image.
4012
4013 2009-08-14  Zoltan Varga  <vargaz@gmail.com>
4014
4015         * mini-arm.c (mono_arch_allocate_vars): Use SP as the default frame reg.
4016
4017         * mini-arm.c: Fix warnings.
4018         
4019         * mini-arm.c (mono_arm_emit_load_imm): Only emit a movt if needed.
4020
4021         * mini-arm.c (mono_arm_emit_load_imm): Use movt/movw if the cpu
4022         supports it.
4023
4024 2009-08-12  Zoltan Varga  <vargaz@gmail.com>
4025
4026         * aot-compiler.c (arch_emit_imt_thunk): Rework the arm code to
4027         avoid clobbering IP.
4028
4029         * mini-trampolines.c (mono_magic_trampoline): Allocate a local to
4030         hold the trampoline argument, so its initial value is available during
4031         debugging.
4032
4033 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
4034
4035         * exceptions-arm.c:
4036         * exceptions-hppa.c:
4037         * mini.c:
4038         * exceptions-s390x.c:
4039         * exceptions-mips.c:
4040         * exceptions-ppc.c:
4041         * exceptions-sparc.c:
4042         * exceptions-alpha.c:
4043         * aot-runtime.c:
4044         * mini-trampolines.c:
4045         * exceptions-x86.c:
4046         * exceptions-s390.c: add and use #define's instead of sizeof()
4047         for MonoJitInfo and MonoJitInfoTable.
4048
4049 2009-08-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
4050
4051         * tramp-arm.c:
4052         * tramp-amd64.c:
4053         * tramp-ppc.c:
4054         * tramp-x86.c: use a #define instead of sizeof() for a few
4055         structures that use a zero-length array.
4056
4057 2009-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
4058
4059         * method-to-ir.c (mono_method_to_ir/CEE_CONSTRAINED_): Handle the
4060         case when the method is dynamic. Fixes #529238.
4061
4062 2009-08-06  Zoltan Varga  <vargaz@gmail.com>
4063
4064         * mini.c (mono_jit_compile_method_inner): Throw an exception instead
4065         of asserting when a method is JIT compiled in full-aot mode.
4066
4067 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
4068         
4069         Contributed under the terms of the MIT/X11 license by
4070         Jerry Maine <crashfourit@gail.com>.
4071         
4072         * fixed wrong dates in changelog.
4073
4074 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
4075         
4076         Contributed under the terms of the MIT/X11 license by
4077         Jerry Maine <crashfourit@gail.com>.
4078
4079         * basic-simd.cs: added test for packed double square root.
4080         * cpu-amd64.md: added opcode info for packed double square root.
4081         * cpu-x86.md: added opcode info for packed double square root.
4082         * mini-ops.h: added IR opcode for packed double square root.
4083         * mini-x86.c: added IR to native translation code for packed double square root.
4084         * mini-amd64.c: removed todo for packed double square root.
4085         * simd-intrinsics.c: added method to IR opcode converstion for
4086         packed double square root.
4087
4088 2009-08-03 Jerry Maine <crashfourit@gmail.com>
4089
4090         Contributed under the terms of the MIT/X11 license by
4091         Jerry Maine <crashfourit@gail.com>.
4092
4093         * mini-amd64.c: Added a change to help tell the difference as 
4094         to what perpose the xmm register is being used--mainly to help
4095         with debuging.
4096         * mini-amd64.h: Changed callee regs to use 15 out of 16 
4097         (one used for special cases) xmm registers for both fp
4098         and simd ops. Added define to turn on new feature in the regalloc
4099         that allows fp and simd ops to share the xmm regs happily.
4100         * codegen.c: Added code to detect for which perpose an xmm reg is
4101         being used (fp or simd) and to translate back and forth to the
4102         correct logical reg bank (fp or simd) for 'spill load's.
4103
4104 2009-08-03 Jerry Maine <crashfourit@gmail.com>
4105
4106         Contributed under the terms of the MIT/X11 license by
4107         Jerry Maine <crashfourit@gail.com>.
4108
4109         * basic-simd.cs: Added tests for stressing the regalloc when running with
4110         16 simd regs and when simd and fp ops share the same reg bank.
4111
4112 2009-08-01  Mark Probst  <mark.probst@gmail.com>
4113
4114         * method-to-ir.c (mini_emit_stobj): If we call mono_value_copy()
4115         in shared generic code, we might have to look up the class in the
4116         RGCTX.  If we use the class directly, compute its GC descriptor.
4117
4118 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
4119
4120         * mini.c (mono_jit_runtime_invoke): Fix a warning.
4121
4122 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
4123
4124         * mini.c (mono_jit_runtime_invoke): Initialize the class and
4125         check for errors. Fixed the case when the class with the Main
4126         method is broken.
4127
4128 2009-07-31 Jerry Maine <crashfourit@gmail.com>
4129
4130         Contributed under the terms of the MIT/X11 license by
4131         Jerry Maine <crashfourit@gail.com>.
4132
4133         * cpu-amd64.md: Fixed simple bug in machine discrition file.
4134
4135 2009-07-31  Zoltan Varga  <vargaz@gmail.com>
4136
4137         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_IREM_UN_IMM.
4138
4139 2009-08-30  Rodrigo Kumpera  <rkumpera@novell.com>
4140
4141         * method-to-ir.c: Fix naming of stelem and ldelem.
4142
4143 2009-07-30  Zoltan Varga  <vargaz@gmail.com>
4144
4145         * driver.c (main_thread_handler): Check that the assembly loaded
4146         matches the filename when doing AOT.
4147
4148 2009-07-30  Mark Probst  <mark.probst@gmail.com>
4149
4150         * mini.c: get_ip_from_sigctx installer has been removed, so don't
4151         call it anymore.
4152
4153         * mini-x86.h, mini-amd64.h, mini-ppc.h: UCONTEXT macros moved (to
4154         utils/mono-sigcontext.h).
4155
4156         * exceptions-amd64.c: Use the UCONTEXT_GREGS macro instead of an
4157         #ifdef.
4158
4159 2009-07-29  Massimiliano Mantione  <massi@ximian.com>
4160
4161         * mini.c (mono_codegen):
4162         Call profiler hook to keep track of method code buffers.
4163
4164 2009-07-27  Mark Probst  <mark.probst@gmail.com>
4165
4166         * method-to-ir.c: Invoke write barriers for the
4167         Interlocked.(Compare)Exchange JIT intrinsics.
4168
4169 2009-07-26  Raja R Harinath  <harinath@hurrynot.org>
4170
4171         * Makefile.am (version.h): Fix issues when built out of tree.
4172         Remove some redundant 'grep's piped through 'sed's.
4173
4174 Fri Jul 24 17:28:37 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
4175
4176         This patch is contributed under the terms of the MIT/X11 license
4177
4178         * mini-ppc.c (mono_arch_output_basic_block):
4179         (OP_STOREI1_MEMBASE_REG): Handle 32-bit offsets combining addis
4180         for bits 32-47 with signed load/store diplacements for bits
4181         48-63.  Use prefered base/offset order for indexed form.
4182         (OP_STOREI2_MEMBASE_REG, OP_STORE_MEMBASE_REG): Same.
4183         (OP_LOAD_MEMBASE, OP_LOADI4_MEMBASE, OP_LOADU4_MEMBASE,
4184         OP_LOADI1_MEMBASE, OP_LOADU1_MEMBASE, OP_LOADU2_MEMBASE,
4185         OP_LOADI2_MEMBASE): Same.
4186         (OP_STORER8_MEMBASE_REG, OP_LOADR8_MEMBASE,
4187         OP_STORER4_MEMBASE_REG, OP_LOADR4_MEMBASE): Same.
4188         (OP_STOREI1_MEMINDEX): Use prefered base/offset order for
4189         indexed form.
4190         (OP_STOREI2_MEMINDEX, OP_STORE_MEMINDEX): Same.
4191         (OP_LOAD_MEMINDEX, OP_LOADI4_MEMINDEX, OP_LOADU4_MEMINDEX,
4192         OP_LOADU2_MEMINDEX, OP_LOADI2_MEMINDEX, OP_LOADU1_MEMINDEX,
4193         OP_LOADI1_MEMINDEX): Same
4194         (OP_LOADR4_MEMINDEX, OP_LOADR8_MEMINDEX, OP_STORER4_MEMINDEX,
4195         OP_STORER8_MEMINDEX): Same
4196         (OP_JMP): Use addis/addi sequence for int cfg->stack_usage
4197         computations.
4198         (mono_arch_emit_prolog): Handle 32-bit offsets combining addis
4199         for bits 32-47 with signed load/store diplacements for bits
4200         48-63.  Use prefered base/offset order for indexed form.
4201
4202 Fri Jul 24 16:57:12 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
4203
4204 This patch is contributed under the terms of the MIT/X11 license
4205
4206         * mini-ppc.c: Define PPC_MOVE_FPR_GPR and PPC_ISA_64.
4207         (mono_arch_get_vcall_slot): Fx pointer to int cast warning.
4208         (mono_arch_decompose_opts): Make OP_ICONV_TO_R4 and
4209         OP_ICONV_TO_R8 decompose conditional on !PPC_ISA_64.
4210         (mono_arch_output_basic_block) [OP_JMP]: Use ppc_load32 for
4211         cfg->stack_usage to avoid size warnings.
4212         (mono_arch_output_basic_block) [__mono_ppc64__]: Replace
4213         store/load sequence with mffgpr if PPC_MOVE_FPR_GPR is true.
4214         (mono_arch_output_basic_block) [!__mono_ppc64__]: For
4215         OP_ICONV_TO_R4 or OP_ICONV_TO_R8 and PPC_ISA_64 use fcfid
4216         to convert.
4217         (mono_arch_emit_prolog): Move mono_emit_unwind_op_def_cfa 
4218         after code varible is initialized.
4219         Add g_assert ppc_is_imm16 for ainfo->offset. Handle
4220         ainfo->size == 8 when ainfo->offset !ppc_is_imm16.
4221         (mono_arch_emit_epilog): 
4222         Move Use ppc_load32 for cfg->stack_usage to avoid size
4223         warnings.
4224
4225 2009-07-24  Mark Probst  <mark.probst@gmail.com>
4226
4227         * method-to-ir.c: The write barrier doesn't do the store anymore,
4228         so we have always to emit it.  Also, emit the wbarrier after the
4229         store.
4230
4231 2009-07-24  Zoltan Varga  <vargaz@gmail.com>
4232
4233         * mini-arm.c (mono_arch_get_delegate_invoke_impls): Add a trampoline
4234         for argument count 3 too.
4235
4236 2009-07-23  Zoltan Varga  <vargaz@gmail.com>
4237
4238         * mini.c (mono_jit_compile_method_with_opt): Add an 'ex' argument to let
4239         the caller handle the exceptions.
4240         (mono_jit_runtime_invoke): Handle exceptions thrown while compiling the
4241         method. Fixes #524498.
4242
4243 2009-07-22  Geoff Norton  <gnorton@novell.com>
4244
4245         * mini-exceptions.c: Fix build on ia64.
4246
4247 2009-07-22  Mark Probst  <mark.probst@gmail.com>
4248
4249         * mini-exceptions.c (ves_icall_get_frame_info): Use write
4250         barriers.
4251
4252 2009-07-21  Zoltan Varga  <vargaz@gmail.com>
4253
4254         * mini-arm.c (mono_arch_emit_prolog): Fix thread attaching in aot
4255         code.
4256
4257 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
4258
4259         * basic-simd.cs (Main): Pass args to the test driver.
4260
4261 2009-07-20  Geoff Norton  <gnorton@novell.com>
4262
4263         * mini-x86.h: Fix the x86 version guards to use Apple's
4264         properly defined macros.
4265
4266 2009-07-20  Geoff Norton  <gnorton@novell.com>
4267
4268         * mini-x86.c: Fix --trace on darwin-x86 and other systems which require
4269         aligned access.
4270
4271 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
4272
4273         * mini.c (mono_jit_runtime_invoke): Speed this up by adding a hash to
4274         MonoJitDomainInfo which maps MonoMethod's to a structure containing all
4275         the information which is needed for invokes, so only one locking+hash table
4276         lookup is needed.
4277
4278         * aot-compiler.c: Add a 'tool-prefix' option to be used when cross-compiling.
4279         
4280         * aot-compiler.c (add_generic_instances): Emit instances of 
4281         GenericComparer<T> for primitive types.
4282
4283 2009-07-19 Rodrigo Kumpera  <rkumpera@novell.com>
4284
4285         * mini-posix.c: Fix linux build.
4286
4287 2009-07-19  Geoff Norton  <gnorton@novell.com>
4288
4289         * mini.h: Add prototypes for mono_runtime_syscall_fork and
4290         mono_gdb_render_native_backtraces
4291         * mini-darwin.c: Apple's syscall(SYS_fork) is very weird on x86,
4292         so we implement the sane semantics to the runtime here
4293         (mono_gdb_render_native_backtraces).  Apple also uses an ancient gdb
4294         so we need to call it differently (mono_gdb_render_native_backtraces)
4295         * mini-posix.c: Move the old semantics from mini.c to the prototypes
4296         here for default implementations.
4297         * mini.c: Refactor mono_handle_native_sigsegv so that we can properly
4298         support Apple's weird syscall (SYS_fork) implementation and not busy
4299         loop in abort() on native crashes on OSX anymore.
4300
4301 2009-07-18  Zoltan Varga  <vargaz@gmail.com>
4302
4303         * aot-runtime.c (load_method): Change the handling of the
4304         MONO_LASTAOT env variable so MONO_LASTAOT=0 means that no aot methods
4305         are used.
4306
4307         * mini.c (mono_patch_info_equal): Really fix the handling of RGCTX_FETCH.
4308
4309 2009-07-17  Zoltan Varga  <vargaz@gmail.com>
4310
4311         * mini.c (mono_patch_info_equal): Revert the last change for now as it
4312         seems to break the aot tests.
4313         
4314         * mini.c (mono_patch_info_equal): Fix the handling of 
4315         MONO_PATCH_INFO_RGCTX_FETCH.
4316
4317 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
4318
4319         * unwind.c: Use TARGET_AMD64 instead of __x86_64__.
4320
4321         * mini.c (mono_patch_info_hash): Fix the handling of 
4322         MONO_PATCH_INFO_INTERNAL_METHOD.
4323         (mono_patch_info_equal): Ditto.
4324
4325 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
4326
4327         * mini-llvm.c (mono_llvm_emit_method): Use module instead of ctx->module
4328         in a few places.
4329         
4330         * mini-llvm.c: Add some infrastructure for AOT support.
4331
4332 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
4333
4334         * mini-llvm-cpp.c: Update to the latest llvm api.
4335         
4336         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Set the EnablePrettyStackTrace
4337         option to false to prevent llvm from installing signal handlers which
4338         trip up the gc.
4339         
4340 2009-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
4341
4342         * cpu-x86.md:
4343         * cpu-amd64.md: Revert previous change as those instructions
4344         take 2 separate arguments. Remember to read the arch docs more
4345         carefully next time.
4346
4347 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
4348
4349         * mini-llvm-cpp.cpp (mono_llvm_build_alloca): Update to latest llvm api.
4350
4351 Wed Jul 15 17:20:27 CEST 2009 Paolo Molaro <lupus@ximian.com>
4352
4353         * mini-ppc.c: exploit multiple load/store units if available (rest of
4354         the change from Steven Munroe (<munroesj@us.ibm.com>) first patch at 
4355         http://bugzilla.novell.com/show_bug.cgi?id=487846).
4356
4357 Wed Jul 15 16:24:57 CEST 2009 Paolo Molaro <lupus@ximian.com>
4358
4359         * mini-ppc.c: integrate most of Steven Munroe (<munroesj@us.ibm.com>)
4360         first patch at http://bugzilla.novell.com/show_bug.cgi?id=487846.
4361
4362 2009-07-14 Rodrigo Kumpera  <rkumpera@novell.com>
4363
4364         * cpu-x86.md: Fix missing clobbering from trancendental simd
4365         ops.
4366
4367         * cpu-amd64.md: Same.
4368
4369 2009-07-14 Jerry Maine <crashfourit@gmail.com>
4370
4371         Contributed under the terms of the MIT/X11 license by
4372         Jerry Maine <crashfourit@gail.com>.
4373
4374         * basic-simd.cs: Added tests for single and doulble indexers.
4375
4376         * cpu-amd64.md: Added simd opcode information.
4377
4378         * mini-amd64.c: Added IR to native simd generation code.
4379         Added simd register names and function that returns them.
4380
4381         * mini-amd64.h: Added marcos to turn on simd code compilation in
4382         amd64. Added max simd register count marco. Added caller/callee
4383         register mask marcos. Added marcos to use simd register bank.
4384
4385         * mini.h: Added helper marco for shufling dwords and simple
4386         floats.
4387
4388 2009-07-14  Zoltan Varga  <vargaz@gmail.com>
4389
4390         * mini-llvm-cpp.cpp: Update to latest llvm SVN api.
4391
4392         * Makefile.am (mono_LDADD): Pass LLVM_LDFLAGS to the linked.
4393
4394         * unwind.c (mono_unwind_get_ops_from_fde): Make this return
4395         the length of the native code as well.
4396
4397         * basic-simd.cs: Add a test for #521662.
4398
4399 Mon Jul 13 17:58:50 CEST 2009 Paolo Molaro <lupus@ximian.com>
4400
4401         * mini-ppc.c: fixed bug introduced by Steven's TLS changes.
4402
4403 2009-07-13  Mark Probst  <mark.probst@gmail.com>
4404
4405         * mini.c: Register function for getting the IP from a signal
4406         context with metadata.
4407
4408 2009-07-13  Zoltan Varga  <vargaz@gmail.com>
4409
4410         * method-to-ir.c (mono_method_to_ir): When calling a gshared method,
4411         call a generic class init trampoline if needed. Fixes #519336.
4412
4413         * generics.cs: Add a test.
4414         
4415 2009-07-09  Mark Probst  <mark.probst@gmail.com>
4416
4417         * method-to-ir.c: When doing a call which might be remote from
4418         shared generic code to other shared code with open type arguments,
4419         get the remoting invoke wrapper from the RGCTX and do an indirect
4420         call to it.
4421
4422 2009-07-03  Zoltan Varga  <vargaz@gmail.com>
4423
4424         * mini-trampolines.c (get_unbox_trampoline): Add an rgctx trampoline
4425         after the unbox trampoline in the full-aot case.
4426
4427 2009-07-02  jonas echterhoff <jonas@unity3d.com>
4428         
4429         * mini.c: Move initialization of jit_mutex before debugger initialization
4430         
4431         to avoid crashes.
4432         
4433         
4434         * Info.plist: added Info.plist and link flag to enable the mono executable
4435         to access other processes. Requires codesigning of the executable to work.
4436         
4437         * mdb-debug-info32-darwin.s: The same as mdb-debug-info32.s, changed to 
4438         
4439         compile on OS X.
4440         
4441
4442 2009-06-30  Zoltan Varga  <vargaz@gmail.com>
4443
4444         * driver.c (mini_regression): Handle loading errors. Fixes #508869.
4445
4446 2009-06-29  Zoltan Varga  <vargaz@gmail.com>
4447
4448         * mini-exceptions.c (get_generic_context_from_stack_frame): Fix the case
4449         when the generic instance is an instantiation of a subclass of the
4450         methods class. Fixes #517166.
4451
4452 2009-06-26  Zoltan Varga  <vargaz@gmail.com>
4453
4454         * mini-amd64.c (mono_arch_emit_prolog): Fix thread attaching in AOTed
4455         code.
4456
4457         * mini.c (mono_jit_thread_attach): Allow domain to be NULL for calls from
4458         AOTed code.
4459
4460         * CMakeLists.txt: Add minimal support for installation.
4461
4462 2009-06-25  Zoltan Varga  <vargaz@gmail.com>
4463
4464         * aot-compiler.c (emit_and_reloc_code): Factor out the code to
4465         determine whenever a method is directly callable to a separate function.
4466
4467         * mini-<ARCH>.c tramp-<ARCH>.c: Remove needless casts and add new
4468         needed ones as a result of the previous change.
4469
4470         * mini-<ARCH>.c tramp-<ARCH>.c: Use mgreg_t* as the
4471         type of register arrays.
4472
4473         * mini-trampolines.c tramp-<ARCH>.c aot-runtime.c: Use mgreg_t* as the
4474         type of register arrays.
4475
4476 2009-06-24  Jerry Maine  <crashfourit@gmail.com>
4477         
4478         Contributed under the terms of the MIT/X11 license by
4479         Jerry Maine <crashfourit@gail.com>.
4480
4481         * mini-amd64.c: Added code to convert simd IR to native amd64 sse.
4482
4483 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
4484
4485         * aot-compiler.c (emit_plt): Define debug labels for most plt entries.
4486
4487 2009-06-24  Neale Ferguson <neale@sinenomine.net>
4488
4489         * mini-s390x.c: Correct LCONV_TO_Ix and ICONV_TO_Ix routines. Fix leave_method
4490         dump of structure return value. Fix some formatting.
4491         * cpu-s390x.md: Fix lengths of instruction sequences.
4492         * mini-s390.c: Minor formatting changes.
4493
4494 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
4495
4496         * mini-x86.h: Applied patch from Romain Tartiere (romain@blogreen.org).
4497         Use sigaction on freebsd as well.
4498
4499 2009-06-23  Zoltan Varga  <vargaz@gmail.com>
4500
4501         * mini.h: Don't define MONO_ARCH_HAVE_TLS_GET to 0, as some code
4502         uses #ifdef on it.
4503         
4504         * mini.c (mini_init): Revert a change which breaks cross-compilation.
4505
4506 2009-06-22  Mark Probst  <mark.probst@gmail.com>
4507
4508         * mini-ppc.c, cpu-ppc.md: Enable TLS on Darwin/G4.
4509
4510 2009-06-22  Mark Probst  <mark.probst@gmail.com>
4511
4512         * mini.c, mini.h: Tell the runtime whether we support MONO_TLS.
4513
4514 2009-06-20  Martin Baulig  <martin@ximian.com>
4515
4516         * debug-mini.c
4517         (MonoDebuggerThreadFlags): New enum typedef.
4518         (MonoDebuggerThreadInfo): Added `guint32 thread_flags'.
4519         (mono_debugger_thread_created): Added `gpointer func' argument;
4520         initialize the new `thread_flags' field.
4521
4522 2009-06-18  Martin Baulig  <martin@ximian.com>
4523
4524         * debug-debugger.h (MonoDebuggerRuntimeFlags): New enum typedef.
4525         (MonoDebuggerInfo): Renamed the `dummy' field info `runtime_info'.
4526
4527         * debug-debugger.c
4528         (mini_debugger_set_attach_ok): New function; sets the attach-ok
4529         flag in `MONO_DEBUGGER__info.runtime_info'.
4530
4531         * driver.c
4532         (mono_main): Call mini_debugger_set_attach_ok() if generics
4533         sharing is disabled.
4534
4535 2009-06-22  Zoltan Varga  <vargaz@gmail.com>
4536
4537         * aot-compiler.c (add_wrappers): Fix a warning.
4538
4539         * mini-ppc.c tramp-ppc.c exceptions-ppc.c aot-compiler.c: Update after
4540         the ppc load/store macro changes.
4541
4542 2009-06-21  Zoltan Varga  <vargaz@gmail.com>
4543
4544         * tramp-ppc.c (mono_arch_patch_plt_entry): Implement this.
4545
4546         * aot-compiler.c (mono_compile_assembly): Sanitize the plt symbol too,
4547         not just the got symbol.
4548
4549         * mini-ppc.c aot-compiler.c unwind.c: Implement generation of unwind info
4550         on ppc.
4551
4552         * aot-compiler.c unwind.c: Add infrastructure for unwind support on
4553         ppc.
4554         
4555         * aot-compiler.c: Remove some fixmes.
4556
4557         * driver.c (mono_main): Print a helpful message when cross-compiling.
4558
4559         * mini.c (mini_init): Disable signal handlers when cross-compiling.
4560
4561         * method-to-ir.c (initialize_array_data): Do the optimization if the
4562         target byte order is little endian, instead of the host byte order.
4563
4564         * aot-compiler.c: Emit sizes for most symbols, only emit runtime-invoke
4565         wrappers into the mscorlib image, Emit a unique plt symbol for each
4566         image, emit symbols for plt entries.
4567
4568         * image-writer.c (img_writer_emit_symbol_size): New function to emit
4569         a .size directive.
4570         
4571 2009-06-20  Zoltan Varga  <vargaz@gmail.com>
4572
4573         * aot-compiler.c (add_wrappers): Avoid calling 
4574         mono_marshal_get_type_info () since it can assert for some types.
4575
4576         * method-to-ir.c (mono_method_to_ir): Disable aot when some forms of 
4577         ldtoken are used inside wrappers.
4578
4579         * helpers.c: Add support for prefixing tools with the arch name.
4580
4581         * mini.h (OP_LOADR_MEMBASE): New opcodes to load/store pointer sized
4582         quantities when using ilp32.
4583
4584         * mini-codegen.c: Use OP_LOADR_MEMBASE/OP_STORER_MEMBASE for loading/storing
4585         spill slots. Use sizeof(mgreg_t) for the spill slot size.
4586
4587         * image-writer.c: Use .long on ilp32.
4588
4589         * aot-compiler.c: Use 32 bit loads on ilp32.
4590         
4591 2009-06-19  Zoltan Varga  <vargaz@gmail.com>
4592
4593         * tramp-ppc.c (mono_arch_create_trampoline_code): Fix the ppc build.
4594
4595         * mini-ops.h: Use TARGET_POWERPC define for consistency.
4596
4597         * patch-info.h: Add 'MSCORLIB_GOT_ADDR' patch type.
4598
4599         * aot-compiler.c aot-runtime.c: Put the mscorlib got address into the 
4600         second got slot of every aot image.
4601         
4602         * aot-compiler.c aot-runtime.c mini-trampolines.c: Add support for
4603         aot on platforms with function pointers.
4604
4605         * mini-ppc.h mini-ppp.c cpu-ppc.md exceptions-ppc.c tramp-ppc.c: Add
4606         support for aot/full aot on ppc/ppc64.
4607         
4608         * tramp-<ARCH>.c (mono_arch_patch_plt_entry): Add 'got' and 'regs'
4609         arguments which are needed on ppc.
4610
4611         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Add 'regs'
4612         argument.
4613
4614         * mini-trampolines.c aot-runtime.c: Update after the above changes.
4615         
4616         * liveness.c (BITS_PER_CHUNK): Use MONO_BITSET_BITS_PER_CHUNK.
4617
4618         * regalloc2.c (BITS_PER_CHUNK): Ditto.  
4619
4620         * aot-compiler.c (emit_got_info): Fix reading unused memory.
4621
4622         * ir-emit.h (alloc_dreg): Add a 'return -1' to quiet some compilers.
4623
4624 2009-06-17  Geoff Norton  <gnorton@novell.com>
4625
4626         * aot-compiler.c: Ensure we dont try to close a null dwarf writer.
4627
4628 2009-06-17  Zoltan Varga  <vargaz@gmail.com>
4629
4630         * dwarfwriter.c (mono_dwarf_writer_create): Add an 'appending' parameter
4631         to control whenever the dwarf writer is in xdebug or aot mode.
4632         (emit_class_dwarf_info): Use a separate abbrev for structures without
4633         children.
4634
4635         * aot-compiler.c: Pass the appending parameter to 
4636         mono_dwarf_writer_create ().
4637
4638         * branch-opts.c (mono_merge_basic_blocks): Fix the case when bbn
4639         falls through to its next bblock. Fixes #513931.
4640
4641         * iltests.il: Add a test.
4642
4643         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Emit some line number
4644         infor even if emit_line is FALSE, as the apple linker seems to require it.
4645
4646         * image-writer.c (asm_writer_emit_symbol_diff): Call get_label ().
4647
4648         * dwarfwriter.c (emit_cie): Emit a separate symbol for the cie start, as
4649         gcc does.
4650         (emit_fde): Ditto.
4651
4652 2009-06-15  Zoltan Varga  <vargaz@gmail.com>
4653
4654         * exceptions-mips.c (mono_arch_get_throw_exception_by_name): Fix the
4655         mips build.
4656
4657 2009-06-13  Zoltan Varga  <vargaz@gmail.com>
4658
4659         * mini.h (struct MonoBasicBlock): Add 'has_jump_table' and 
4660         'has_call_handler' fields.
4661
4662         * method-to-ir.c (mono_method_to_ir): Set them if needed.
4663
4664         * branch-opts.c (mono_merge_basic_blocks): Avoid iterating through the
4665         first bblock if not needed. Fixes #512790.
4666         
4667 2009-06-11  Zoltan Varga  <vargaz@gmail.com>
4668
4669         * aot-compiler.c (mono_compile_assembly): Fix a warning.
4670         
4671         * aot-compiler.c (add_wrappers): Don't emit remoting-invoke-with-check
4672         wrappers.
4673
4674         * aot-runtime.c (mono_aot_get_method): Use the original method's code for
4675         remoting-invoke-with-check wrappers, which are not needed when running with
4676         full-aot, since it doesn't support remoting.
4677         
4678 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
4679
4680         * aot-compiler.c (emit_got_info): Don't emit offsets for the plt got entries.
4681
4682         * aot-compiler.c aot-runtime.c: Don't emit the first got offset in the
4683         method info, it is not used anymore.
4684
4685         * mini.h: Bump AOT file format version.
4686         
4687         * aot-compiler.c (arch_emit_plt_entry): Make the arm plt entries one
4688         word smaller.
4689
4690         * aot-runtime.c (mono_aot_get_plt_info_offset): Update after the
4691         change above.
4692         
4693         * tramp-arm.c (mono_arch_patch_plt_entry): Ditto.
4694
4695         * mini.h: Bump AOT file format version.
4696         
4697 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
4698
4699         * image-writer.c (asm_writer_emit_symbol_diff): Disable the 
4700         TARGET_ASM_APPLE stuff for now, as it doesn't seem to work on the
4701         iphone.
4702
4703         * mini-arm.c (mono_arch_output_basic_block): Fix the implementation
4704         of CKFINITE and FBGE for VFP.
4705
4706 2009-06-09  Zoltan Varga  <vargaz@gmail.com>
4707
4708         * aot-compiler.c: Don't align code to 16 bytes on arm.
4709         
4710         * aot-compiler.c (emit_method_code): Emit the unbox trampolines right
4711         before the methods they belong to.
4712
4713         * aot-runtime.c (mono_aot_plt_resolve): Avoid creating trampolines in
4714         the full-aot case if possible, since the trampoline will be called right 
4715         away.
4716
4717         * aot-compiler.c (mono_compile_assembly): Decrease the number of full aot
4718         trampolines to 1024 after the change above.
4719
4720         * aot-compiler.c (arch_emit_specific_trampoline): Rework the arm
4721         trampoline to save 8 bytes per trampoline.
4722
4723         * tramp-arm.c (mono_arch_create_trampoline_code_full): Update after the
4724         change above.
4725
4726 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
4727
4728         * aot-compiler.c: Use acfg->temp_prefix instead of .L to prefix labels.
4729
4730 2009-06-08  Martin Baulig  <martin@ximian.com>
4731
4732         * debug-mini.c
4733         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
4734         (_mono_debugger_throw_exception): Don't make this static.
4735         (_mono_debugger_unhandled_exception): Likewise.
4736         (mono_debugger_handle_exception): Moved to mini-exceptions.c
4737
4738         * debug-mini.c
4739         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
4740         (_mono_debugger_throw_exception): Add function prototype.
4741         (_mono_debugger_unhandled_exception): Likewise.
4742
4743         * mini-exceptions.c
4744         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
4745         arg; return the first exception handler if the exception is caught
4746         and we're running inside the debugger.
4747         (mono_debugger_handle_exception): Moved here from debug-mini.c;
4748         improve exception handle inside runtime-invoke, check whether the
4749         exception is actually caught in the method being invoked and not
4750         by the runtime-invoke-wrapper.
4751
4752 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
4753
4754         * image-writer.c: Improve support for the osx assembler.
4755
4756         * dwarfwriter.c: Avoid the usage of subsections if the assembler doesn't
4757         support them.
4758
4759 2009-06-08  Martin Baulig  <martin@ximian.com>
4760
4761         * debug-mini.c
4762         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
4763         (_mono_debugger_throw_exception): Don't make this static.
4764         (_mono_debugger_unhandled_exception): Likewise.
4765         (mono_debugger_handle_exception): Moved to mini-exceptions.c
4766
4767         * debug-mini.c
4768         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
4769         (_mono_debugger_throw_exception): Add function prototype.
4770         (_mono_debugger_unhandled_exception): Likewise.
4771
4772         * mini-exceptions.c
4773         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
4774         arg; return the first exception handler if the exception is caught
4775         and we're running inside the debugger.
4776         (mono_debugger_handle_exception): Moved here from debug-mini.c;
4777         improve exception handle inside runtime-invoke, check whether the
4778         exception is actually caught in the method being invoked and not
4779         by the runtime-invoke-wrapper.
4780
4781 2009-06-07  Zoltan Varga  <vargaz@gmail.com>
4782
4783         * image-writer.c (append_subsection): Don't align subsections of the
4784         debug_line section as a workaround.
4785
4786         * dwarfwriter.c: Emit line number info in the AOT case as well.
4787
4788 2009-06-06  Steven Munroe  <munroesj@us.ibm.com>
4789
4790         This patch is contributed under the terms of the MIT/X11 license
4791
4792        * mini-ppc.c (mono_arch_emit_exceptions): Change assert to
4793        code_len <= code_size
4794
4795 2009-06-06  Zoltan Varga  <vargaz@gmail.com>
4796
4797         * mini-mips.c (mips_emit_exc_by_name): Fix the mips build.
4798
4799 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
4800
4801         * aot-compiler.c aot-runtime.c: Delete references to static rgctx
4802         invoke wrappers, we now use trampolines instead.
4803
4804 2009-06-04  Mark Probst  <mark.probst@gmail.com>
4805
4806         * mini-darwin.c: The exception thread must not be registered with
4807         the GC.
4808
4809 2009-06-04  Mark Probst  <mark.probst@gmail.com>
4810
4811         * mini-gc.c: Disable the code because it makes SGen crash.
4812
4813 2009-06-03  Zoltan Varga  <vargaz@gmail.com>
4814
4815         * aot-compiler.c (mono_compile_assembly): Handle file open errors gracefully
4816         instead of asserting.
4817
4818 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
4819
4820         * aot-compiler.c (mono_compile_assembly): Move the creation of the
4821         output file after the code has been compiled.
4822
4823 2009-05-30  Zoltan Varga  <vargaz@gmail.com>
4824
4825         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Fix 64 bit support.
4826
4827 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
4828
4829         * aot-compiler.c aot-runtime.c: Get rid of the shared/non-shared got
4830         entries distinction to simplify the code.
4831
4832         * mini.h: Bump AOT file format version.
4833         
4834 2009-05-28  Zoltan Varga  <vargaz@gmail.com>
4835
4836         * objects.cs: Fix the signature of one of the tests.
4837
4838         * mini.c (mini_create_ftnptr): New helper function, moved here from
4839         object.c.
4840         (mini_get_addr_from_ftnptr): Ditto.
4841         (mini_init): Install the new helpers.
4842
4843 2009-05-28  Martin Baulig  <martin@ximian.com>
4844
4845         Correctly initialize the debugger when embedding Mono.
4846
4847         * mdb-debug-info32.s, mdb-debug-info64.s: Add a global variable
4848         `MONO_DEBUGGER__using_debugger' to the `.mdb_debug_info' section;
4849         see documentation in mini_debug_running_inside_mdb().
4850
4851         * debug-debugger.c
4852         (mini_debug_running_inside_mdb): New function to check whether
4853         we're running inside mdb.
4854
4855         * mini.c (mini_init): Call mini_debugger_init() if we're running
4856         inside the debugger.
4857
4858         * driver.c (mono_main): Moved the call to mini_debugger_init()
4859         into mini_init() to make this work when embedding Mono.
4860
4861         * debug-debugger.c (mini_debugger_init): Warn about duplicate
4862         calls to mini_debugger_init().
4863
4864         * mini.h: Rename mono_debugger_init() -> mini_debugger_init(),
4865         mono_debugger_main() -> mini_debugger_main() and put them inside a
4866         `MONO_DEBUGGER_SUPPORTED' conditional.
4867
4868 2009-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
4869
4870         * mini-trampolines.c: Kill mono_find_delegate_trampoline_by_addr as
4871         this is no longer in use.
4872         * mini.h: Same.
4873
4874 2009-05-26  Zoltan Varga  <vargaz@gmail.com>
4875
4876         * mini-sparc.c (add_outarg_load): Fix the sparc build.
4877
4878         * aot-compiler.c (emit_method_code): Always write out C style symbols for
4879         methods.
4880
4881 2009-05-27  Martin Baulig  <martin@ximian.com>
4882
4883 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
4884
4885         * mini-x86.c (mono_arch_output_basic_block): Fix the precision of
4886         long_conv_to_r_un to 64 bits.
4887
4888         * cpu-x86.md: Increase the instruction size due to the changes.
4889
4890         * iltests.il.in: Add regression test.
4891
4892         Fixes #467201.
4893
4894 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
4895
4896         * objects.cs: Move the previous test from basic.cs to here.
4897
4898 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
4899
4900         * basic.cs: Add regression test for #506915.
4901
4902 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
4903
4904         * method-to-ir.c (mono_method_to_ir): When doing the ldobj+stobj
4905         optimization we must check the bb of the first byte of stobj as
4906         it's the only one set in cil_offset_to_bb.
4907
4908         Fixes #506915.  
4909
4910 2009-05-25  Zoltan Varga  <vargaz@gmail.com>
4911
4912         * image-writer.c: Fix pointer directive on ppc64.
4913
4914 2009-05-24  Zoltan Varga  <vargaz@gmail.com>
4915
4916         * image-writer.c (asm_writer_emit_section_change): Avoid using
4917         .bss subsections on ppc too.
4918
4919 2009-05-23  Zoltan Varga  <vargaz@gmail.com>
4920
4921         * image-writer.c: Fix the definition of TARGET_ASM_....
4922         
4923         * image-writer.c: Fix the emission of assembler directives in the last
4924         change.
4925
4926         * mini-ppc.c (mono_arch_emit_exceptions): Increase the size of the
4927         exception throwing code to accomodate ppc64.
4928
4929         * tramp-ppc.c (mono_arch_get_nullified_class_init_trampoline): Increase the
4930         size to work on ppc64 too.
4931
4932         * mini-ppc.h (MonoCompileArch): Enable static rgctx trampolines on ppc64
4933         too.
4934
4935         * image-writer.c: Clean up the #ifdef hell a bit by adding defines for
4936         the assembler dialect instead of using platform specific defines.
4937
4938 2009-05-22  Geoff Norton  <gnorton@novell.com>
4939
4940         * mini-arm.c (get_call_info): If a structure is split between the stack
4941         and argument registers, we should not advance the stack pointer by the entire
4942         native size, but just by the amount that spilled.
4943
4944 2009-05-22  Zoltan Varga  <vargaz@gmail.com>
4945
4946         * mini-arm.c (get_call_info): Handle structures with alignment requirements
4947         correctly.
4948
4949 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
4950
4951         * aot-compiler.c (emit_extra_methods): Encode direct runtime invoke
4952         wrappers normally.
4953         
4954         * aot-compiler.c (add_extra_method): Fix up the collection of extra
4955         methods so wrapper don't get added twice.
4956         (add_generic_instances): Don't add methods of arrays.
4957
4958         * generics.cs: Mark one test as !FULLAOT.
4959
4960 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
4961
4962         * mini-x86.c (emit_move_return_value): Remove unused vars.
4963
4964 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
4965
4966         * mini-x86.c (mono_arch_emit_call): The decompose code now supports
4967         decomposing 8 bytes structs into a LCALL.
4968
4969         * mini-x86.c (emit_move_return_value): We no longer push the vtype
4970         pointer for where to store the returned regs.
4971
4972         * decompose.c (mono_decompose_vtype_opts): Fix the comment to properly
4973         state the concern.
4974
4975         Fixes #471747, #471751 and #4734530 (in fact, it's a bunch of dups).
4976
4977 2009-05-20  Miguel de Icaza  <miguel@novell.com>
4978
4979         * aot-runtime.c (mono_aot_init): Use g_getenv to work on systems
4980         without getenv.
4981
4982 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
4983
4984         * aot-compiler.c (add_wrappers): Add StructureToPtr/PtrToStructure wrappers.
4985
4986         * basic.cs: Move the test_2_cprop_bug () test to generics.cs as it involves
4987         generics.
4988
4989 2009-05-20 Rodrigo Kumpera  <rkumpera@novell.com>
4990
4991         * local-propagation.c (mono_local_cprop): Avoid local propagation
4992         across paired add/sub if the first instruction dest reg is it's
4993         source reg. For example:
4994
4995         int_add_imm R12 <- R12 [1] clobbers: 1
4996         int_sub_imm R42 <- R12 [1] clobbers: 1
4997
4998         The cprop pass would wrongly const prop + 1 to int_sub_imm which doesn't
4999         maintain the math identify.
5000
5001         Fixes #505375.
5002
5003 2009-05-20  Andreia Gaita  <avidigal@novell.com>
5004
5005         * Makefile.am: avoid going on the network just to get the revision,
5006         use git log instead
5007
5008 2009-05-19  Massimiliano Mantione  <massi@ximian.com>
5009
5010         Fixed estimate for short branches on amd64 (they were off mark, and
5011         enabling call prolog-epilog instrumentations caused assertions).
5012         * mini.h (struct MonoBasicBlock): added max_length field to hold the
5013         estimate for the maximum length of this basic block.
5014         * mini-amd64.c:
5015         - mono_arch_emit_prolog: compute max_length for each basic block
5016           (instead of max_offset), and inflate size estimate also for entry bb
5017           in case of code instrumentation.
5018         - mono_arch_output_basic_block: get rid of "cpos" (the current
5019           estimated "position" in the code), and always use "offset" instead,
5020           which is accurate; at the beginning of the function quickly recompute
5021           max_offset for all the remaining blocks, starting from the current
5022           cfg->code_len (which is correct, and not estimated) and using the
5023           estimated block lengths computed previously.
5024
5025 2009-05-17  Zoltan Varga  <vargaz@gmail.com>
5026
5027         * exceptions-ppc.c: Remove the caching from the trampoline creation 
5028         functions, it is already done in the caller.
5029
5030         * mini-trampolines.c (mono_llvm_vcall_trampoline): Fix the llvm build.
5031
5032         * mini-ppc.h mini-arm.h mini-x86.h mini-amd64.h: Add 
5033         MONO_ARCH_GSHARED_SUPPORTED define.
5034
5035         * mini.c (mini_init): Use the MONO_ARCH_GSHARED_SUPPORTED define.
5036
5037         * mini-arm.c mini.c: Get rid of the unused mono_arch_fixup_jinfo ()
5038         function.
5039
5040 2009-05-16  Zoltan Varga  <vargaz@gmail.com>
5041
5042         * jit-icalls.c (mono_helper_compile_generic_method): Get rid of the 
5043         call to mono_marshal_get_rgctx_invoke ().
5044
5045         * mini.c method-to-ir.c mini-trampolines.c: Get rid of the usage of
5046         mono_marshal_get_static_rgctx_invoke (), all platforms which support
5047         gshared use the static rgctx trampolines now.
5048         
5049         * mini.c (mini_init): Call mono_set_generic_sharing_supported () if the
5050         platform supports it.
5051
5052 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
5053
5054         * mini-arm.c (mono_arch_allocate_vars): Correctly save R5 when using AOT.
5055
5056         * aot-compiler.c (emit_method_code): Avoid duplicate labels for methods.
5057
5058 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
5059
5060         * mini-ppc.c (mono_arch_emit_exceptions): Nullify the processed patches.
5061
5062         * tramp-ppc.c (mono_arch_nullify_class_init_trampoline): Implement this
5063         for ppc.
5064
5065 2009-05-15  Massimiliano Mantione  <massi@ximian.com>
5066
5067         Made it possible for mono_arch_instrument_epilog to preserve
5068         argument registers, otherwise instrumenting the "epilogue" before
5069         a tail call would clobber them.
5070         * mini.h: Added "mono_arch_instrument_epilog_full" prototype, which
5071         if like mono_arch_instrument_epilog but with an additional parameter
5072         that states if argument registers must be preserved.
5073         * mini.c: implemented mono_arch_instrument_epilog as a call to
5074         mono_arch_instrument_epilog_full without asking to preserve argument
5075         registers (this makes the existing code work as usual).
5076         * mini-amd64.c:
5077         - mono_arch_instrument_epilog: add parameter to transform it into
5078         mono_arch_instrument_epilog_full, and preserve argument registers
5079         when required.
5080         - mono_arch_output_basic_block, OP_TAILCALL case: call
5081         mono_arch_instrument_epilog_full.
5082         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
5083         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-x86.c:
5084         only transformed mono_arch_instrument_epilog into
5085         mono_arch_instrument_epilog_full.
5086
5087 2009-05-15  Geoff Norton  <gnorton@novell.com>
5088
5089         * mini-darwin.c: This works on arm now.
5090
5091 2009-05-14  Geoff Norton  <gnorton@novell.com>
5092
5093         * jit.h, driver.c: Allow full-aot to be decided programatically by the
5094         embedding api.
5095
5096 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
5097
5098         * aot-compiler.c (emit_method_code): Skip a few more characters in the debug
5099         label names.
5100
5101         * mini-trampolines.c (mono_magic_trampoline): Handle static rgctx invoke
5102         wrappers during full aot mode correctly.
5103
5104         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle shared generic
5105         methods correctly.
5106
5107         * aot-compiler.c (mono_aot_method_hash): Use our internal version of
5108         mono_metadata_type_hash ().
5109
5110 2009-05-14  Massimiliano Mantione  <massi@ximian.com>
5111
5112         * mini.h, mini-codegen.c, mini-alpha.c, mini-amd64.c, mini-arm.c,
5113         mini-hppa.h, mini-hppa.c, mini-ia64.c, mini-mips.h, mini-mips.c,
5114         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-886.c:
5115         Removed MONO_INST_BRLABEL from the instruction flags, and the
5116         remaining code that used it, because we do not support branches inside
5117         basic blocks (and branch target labels) anymore.
5118         * Makefile.am: As part of the above cleanup, remove reference to
5119         BURG files which don't exist anymore.
5120
5121 2009-05-14  Zoltan Varga  <vargaz@gmail.com>
5122
5123         * image-writer.c (asm_writer_emit_local_symbol): Make this a nop on
5124         osx.
5125
5126         * mini-mips.c mini-mips.h exceptions-mips.c: Transition the mips backend
5127         to use mono_arch_throw_corlib_exception.
5128
5129         * mini-ppc.c mini-ppc.h exceptions-ppc.c: Use 
5130         mono_arch_throw_corlib_exception for throwing corlib exceptions.
5131
5132         * aot-runtime.c (decode_patch): Allocate the data for R4/R8 from the
5133         domain mempool.
5134
5135         * mini.c (mono_patch_info_dup_mp): Copy the table of switch targets too.
5136
5137         * aot-compiler.c: Emit a local symbol prefixed with the assembly name 
5138         for the got to make debugging easier and to avoid confusing it with the
5139         system got.
5140         
5141         * aot-compiler.c (emit_method_code): Emit a C style symbol for each
5142         method so a breakpoint can be set when using gdb.
5143
5144 2009-05-13  Zoltan Varga  <vargaz@gmail.com>
5145
5146         * aot-compiler.c (mono_aot_method_hash): Implement this properly based
5147         on mono_method_get_imt_slot ().
5148
5149         * aot-runtime.c (find_extra_method_in_amodule): Get rid of the
5150         num_decodes variables.
5151
5152         * aot-compiler.c (mono_aot_method_hash): Revert part of the last
5153         change as it doesn't seem to work.
5154         
5155         * aot-compiler.c (mono_aot_method_hash): Improve the hashing of
5156         wrappers.
5157
5158 2009-05-12  Zoltan Varga  <vargaz@gmail.com>
5159
5160         * aot-compiler.c mini.c mini-amd64.h mini-arm.h: Kill 
5161         MONO_ARCH_FULL_AOT_IMT_SUPPORTED define, both platforms now support imt.
5162
5163         * mini.c (mini_init): Install mono_aot_get_imt_thunk as the IMT thunk
5164         builder when using full aot.
5165
5166         * mini-amd64.c (mono_arch_build_imt_thunk): Don't handle the full-aot case
5167         here, it is already handled.
5168         
5169         * mini-arm.c (mono_arch_emit_imt_argument): Pass the dynamic imt arg
5170         correctly for IMT.
5171
5172         * aot-compiler.c (arch_emit_imt_thunk): Implement this for ARM.
5173
5174         * mini-arm.h: Enable IMT for full aot.
5175         
5176         * aot-compiler.c (mono_compile_assembly): Don't emit imt thunk if the
5177         arch doesn't support it.
5178
5179         * mini.c (mini_init): Don't disable IMT for full aot if the
5180         architecture supports it.
5181
5182         * mini.h (MonoAotTrampoline): New enum containing the different types
5183         of 'numerous' trampolines.
5184         (MONO_AOT_FILE_VERSION): Bump this.
5185
5186         * aot-compiler.c aot-runtime.c: Unify the handling of specific and
5187         static rgctx trampolines. Add support for full-aot IMT thunks.
5188
5189         * mini-amd64.h: Enable IMT for full aot.
5190
5191         * TestDriver.cs: Add a CategoryAttribute class and an --exclude option
5192         to exclude tests belonging to a category.
5193
5194         * generics.cs: Mark some tests with a !FULLAOT category.
5195
5196         * Makefile.am (fullaotcheck): Run tests with --exclude !FULLAOT. Include
5197         generics tests.
5198
5199 2009-05-11  Zoltan Varga  <vargaz@gmail.com>
5200
5201         * aot-compiler.c (emit_and_reloc_code): Move the implementation of
5202         MONO_PATCH_INFO_GOT_OFFSET to a separate arch-specific function.
5203         (emit_plt): Fix a warning.
5204
5205 2009-05-10  Zoltan Varga  <vargaz@gmail.com>
5206
5207         * aot-compiler.c aot-runtime.c: Fix the build by moving is_shared_got_patch
5208         back into aot-compiler.c to a place where the other functions shared by
5209         the runtime and aot compiler are.
5210         
5211         * aot-compiler.c aot-runtime.c: Emit the got addr using a separate symbol,
5212         as done previously, instead of in MonoAotFileInfo, since pointers might have
5213         alignment requirements.
5214
5215         * mini.h: Bump AOT file format version.
5216
5217 2009-05-10  Miguel de Icaza  <miguel@novell.com>
5218
5219         * aot-runtime.c (mono_aot_is_shared_got_patch): Move this routine
5220         that is used at runtime from the aot-compiler.c, this makes it
5221         work on setups that remove the AOT compiler from the output
5222         image. 
5223
5224 2009-05-09  Zoltan Varga  <vargaz@gmail.com>
5225
5226         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Implement this for
5227         PPC.
5228
5229         * mini-ppc.h: Enable static rgctx trampolines for ppc.
5230
5231         * mini-<ARCH>.h: Kill the MONO_ARCH_ENABLE_EMIT_STATE_OPT define.
5232
5233         * decompose.c (mono_decompose_long_opts): Move the ppc/sparc specific 
5234         stuff to mono_arch_decompose_long_opts ().
5235         (mono_decompose_opcode): Remove some dead code.
5236
5237 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
5238
5239         * method-to-ir.c (mono_method_to_ir): Fix boostrap of non amd64 builds
5240         cmethod can be null for quite a some reasons.
5241
5242 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
5243
5244         * method-to-ir.c (mono_method_to_ir): Fix non amd64 builds.
5245
5246 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
5247
5248         * aot-compiler.c (arch_emit_got_access): Fix the aot-not-supported build.
5249
5250 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
5251
5252         * method-to-ir.c (mono_emit_call_args): Add a 'tail' flag argument.
5253         (mono_method_to_ir): Use MONO_ARCH_USE_OP_TAIL_CALL macro to determine
5254         whenever to make tail calls using OP_TAIL_CALL. Enable support for tail
5255         calls returning structures by addr on amd64.
5256
5257         * mini-amd64.h (MONO_ARCH_USE_OP_TAIL_CALL): New arch-specific macro.
5258
5259         * iltests.il.in: Restructure the tail call tests a bit.
5260         
5261 2009-05-07  Zoltan Varga  <vargaz@gmail.com>
5262
5263         * aot-compiler.c (add_wrappers): Add remoting-invoke-with-check wrappers
5264         for virtual methods too.
5265
5266 2009-05-06  Raja R Harinath  <harinath@hurrynot.org>
5267
5268         * method-to-ir.c (mono_method_to_ir): Revert change of 2009-05-02
5269         due to regression in verifying System.dll.
5270
5271 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
5272
5273         * debug-mini.c (mono_debugger_method_has_breakpoint): Allow breakpoints
5274         in dynamic methods.
5275
5276         * dwarfwriter.c (emit_class_dwarf_info): Add support for generic
5277         instances.
5278
5279         * aot-compiler.c aot-runtime.c: Use our own hash function instead of
5280         g_str_hash () which can change.
5281
5282         * driver.c (mini_regression): Disable optimizations not supported by
5283         the cpu. Fixes #500019.
5284
5285         * aot-runtime.c (mono_aot_get_unwind_info): Fix the --enable-minimal=aot
5286         build.
5287
5288 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
5289
5290         * mini-llvm.c (mono_llvm_emit_method): Update the OP_TLS_GET implementation
5291         to the latest LLVM code.
5292
5293 2009-05-05  Zoltan Varga  <vargaz@gmail.com>
5294
5295         * genmdesc.pl (load_opcodes): Fix this after the TARGET_... changes.
5296
5297 2009-05-04  Zoltan Varga  <vargaz@gmail.com>
5298
5299         * mini-llvm.c (mono_llvm_emit_method): Implement TLS support on 
5300         x86/amd64.
5301
5302         * aot-compiler.c (encode_patch_list): Simplify this considerably as we are
5303         no longer saving offsets, so just save the patch types along with the other
5304         info.
5305         * aot-runtime.c (load_patch_info): Update after the changes to 
5306         encode_patch_list ().
5307         (decode_got_entry): Removed, merged into load_patch_info ().
5308         (is_shared_got_patch): Removed, call the same function from
5309         aot-compiler.c.
5310
5311         * mini.h: Bump aot file format version.
5312         
5313         * aot-compiler.c aot-runtime.c: Resurrect static linking support. Kill the
5314         half-finished no-dlsym code.
5315
5316         * aot-runtime.c (load_method): Kill the old and bit-rotten use_loaded_code
5317         option.
5318
5319         * mini-<ARCH>.h mini-trampolines.c aot-runtime.c: Kill the 
5320         MONO_ARCH_HAVE_CREATE_TRAMPOLINE_FROM_TOKEN define.
5321
5322 2009-05-02  Zoltan Varga  <vargaz@gmail.com>
5323
5324         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Increase the
5325         buffer length to work with AOT code.
5326
5327         * method-to-ir.c (mono_method_to_ir): Handle loading errors in the
5328         ldfld/stfld opcodes.
5329
5330         * exceptions-x86.c (mono_arch_get_throw_exception_by_name): Simplify this
5331         as it is not used.
5332
5333         * mini-llvm.c mini-x86.c: Implement 32 bit and x86 support.
5334
5335         * ssa.c (mono_ssa_compute): Don't skip I8 values when using LLVM.
5336
5337         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Update to the latest
5338         LLVM API.
5339
5340         * mini.c (mini_method_compile): Set the from_llvm flag in MonoJitInfo
5341         if needed. Don't decompose long operations when using llvm.
5342
5343 2009-05-01  Zoltan Varga  <vargaz@gmail.com>
5344
5345         * aot-compiler.c aot-runtime.c: Use mono_pagesize () instead of the
5346         PAGESIZE constant.
5347
5348         * aot-runtime.c (load_aot_module): Get rid of another mprotect call.
5349
5350 2009-05-03  Martin Baulig  <martin@ximian.com>
5351
5352         * debug-debugger.c (debugger_insert_source_breakpoint): Don't call
5353         mono_debugger_insert_method_breakpoint() since the class init
5354         handler we're inserting at the top of the method already gives us
5355         a notification.
5356
5357 2009-04-30  Zoltan Varga  <vargaz@gmail.com>
5358
5359         * decompose.c (mono_decompose_long_opts): Move the implementation of LNEG
5360         to mono_arch_decompose_long_opts () for x86 and arm.
5361
5362 2009-04-29  Zoltan Varga  <vargaz@gmail.com>
5363
5364         * mini-codegen.c (mono_regstate_alloc_int): Use __x86_64__ instead of
5365         TARGET_AMD64 here.
5366
5367 2009-04-28  Zoltan Varga  <vargaz@gmail.com>
5368
5369         * *.h *.c: Use TARGET_<ARCH> defines instead of __<arch>__ defines in the
5370         JIT code.
5371
5372 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
5373
5374         * aot-runtime.c (mono_aot_create_specific_trampoline): Add a stat for the
5375         number of trampolines used in full-aot mode.
5376
5377         * aot-compiler.c: Add an ntrampolines option to set the number of 
5378         trampolines emitted in full-aot mode.
5379
5380 2009-04-27  Zoltan Varga  <vargaz@gmail.com>
5381
5382         * mini-llvm.c (mono_llvm_emit_method): Implement OP_CHECK_THIS using
5383         a volatile load. Get rid of get_tempname (), llvm assigns names
5384         automatically.
5385
5386         * mini-llvm-cpp.cpp (mono_llvm_build_volatile_load): New instruction
5387         builder function.
5388
5389         * mini-llvm.c (mono_llvm_emit_method): Don't call LLVMGetParam on
5390         a value.
5391
5392         * abcremoval.c (REPORT_ABC_REMOVAL): Don't output messages at verbose
5393         level 1.
5394
5395         * mini-codegen.c (mono_local_regalloc): Prevent sreg1/dreg to be allocated
5396         to the same register as a fixed sreg2. Fixes #497271.
5397
5398         * iltests.il.in: Add a new test.
5399
5400 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
5401
5402         * mini-amd64.c: Use moves instead of pushes for passing arguments on the
5403         stack, since pushes complicate exception handling.
5404
5405         * exceptions-amd64.c (mono_arch_find_jit_info): Don't pop the arguments of
5406         the stack if they are passed using moves.
5407
5408         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
5409
5410         * method-to-ir.c (mono_method_to_ir): Disable fast virtual generic methods
5411         when using llvm.
5412
5413         * mini-llvm.c (mono_llvm_emit_method): Call jit icall wrappers, not the 
5414         icalls themselves. Convert arguments of FCOMPARE. Convert the destination
5415         of FMOVE if it is an R4.
5416
5417 2009-04-25  Zoltan Varga  <vargaz@gmail.com>
5418
5419         * mini-ops.h: Add OP_LLVM_OUTARG_VT opcode.
5420
5421         * mini.h (LLVMCallInfo): New structure to store calling convention 
5422         information for the LLVM back end similar to the CallInfo structures in 
5423         the back-ends.
5424
5425         * mini-amd64.c (mono_arch_get_llvm_call_info): New arch function to return
5426         call information in a format usable by LLVM.
5427         (mono_arch_emit_call): Move the LLVM handling code to mono_llvm_emit_call ().
5428
5429         * method-to-ir.c (mono_emit_call_args): Emit calls using 
5430         mono_llvm_emit_call () when compiling using LLVM.
5431
5432         * mini-llvm.c: Implement support for passing/receiving valuetypes. Add
5433         comments to all functions. Fix memory leaks. Add a public init/cleanup
5434         function.
5435
5436         * mini.c: Call the llvm init/cleanup functions in mini_init()/cleanup().
5437
5438         * method-to-ir.c (handle_array_new): Disable llvm when calling the vararg
5439         mono_array_new_va () jit icall.
5440         
5441 Fri Apr 24 16:44:08 CEST 2009 Paolo Molaro <lupus@ximian.com>
5442
5443         * Makefile.am, genmdesc.c, genmdesc.pl: tiny refactor to allow
5444         multiple machine description files to be specified.
5445         * mini-ops.h: fixes for cross-compilation.
5446
5447 2009-04-22  Miguel de Icaza  <miguel@novell.com>
5448
5449         * aot-runtime.c (make_writable): Use mono_mprotect to simplify
5450         some porting work.
5451
5452 2009-04-22  Zoltan Varga  <vargaz@gmail.com>
5453
5454         * method-to-ir.c (mono_method_to_ir): Force init_locals to be TRUE
5455         to prevent asserts in various passes. Fixes #497220.
5456
5457 2009-04-21  Zoltan Varga  <vargaz@gmail.com>
5458
5459         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove
5460         a racy assert.
5461
5462         * aot-compiler.c aot-runtime.c: Emit the unwind info into a separate
5463         table to avoid duplicates.
5464
5465         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5466         
5467         * aot-compiler.c (emit_method_code): Avoid writing symbols if the nodebug
5468         option is used.
5469
5470 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
5471
5472         * mini.c (mini_method_verify): Fail fulltrust code if the exception
5473         is for method or field access.
5474
5475 2009-04-20  Zoltan Varga  <vargaz@gmail.com>
5476
5477         * mini-llvm-cpp.cpp (mono_llvm_dump_value): New helper function to print
5478         a Value to stdout.
5479
5480         * mini-llvm.c (mono_llvm_emit_method): Use it.
5481         
5482         * mini-llvm.c (type_to_llvm_type): Fix the mapping of enums.
5483         (mono_llvm_emit_method): Add support for CAS. Fix handling of CSET opcodes
5484         on volatile values.
5485
5486         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add support for 
5487         synchronized methods.
5488
5489         * mini.c (mini_method_compile): Disable LLVM for dynamic methods.
5490
5491         * mini.c (mini_method_compile): Enable ABCREM when running with LLVM.
5492
5493         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOADI4_MEM/
5494         OP_LOADI8_MEM.
5495
5496         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add a MONO_LLVM env variable
5497         allowing some options to be set dynamically.
5498
5499 2009-04-19  Zoltan Varga  <vargaz@gmail.com>
5500
5501         * mini-llvm.c (mono_llvm_emit_method): Handle compares followed by an
5502         unconditional branch.
5503
5504         * mini.h (MonoTrampolineType): Add new trampoline type 
5505         'MONO_TRAMPOLINE_LLVM_VCALL' which handles virtual calls made from LLVM
5506         compiled code.
5507
5508         * mini-trampolines.c (mono_llvm_vcall_trampoline): New C trampoline 
5509         function.
5510
5511         * mini-trampolines.c (mono_create_llvm_vcall_trampoline): New trampoline
5512         creation function.
5513
5514         * mini.c (mini_init): Avoid using the common vtable trampoline when LLVM
5515         is enabled. Instead, use the llvm vcall trampoline.
5516         
5517         * mini-trampolines.c (mono_get_vcall_slot_addr): New helper function.
5518
5519         * mini-trampolines.c tramp-amd64.c tramp-x86.c: Use it.
5520         
5521         * mini-<ARCH>.c: Get rid of the identical mono_arch_get_vcall_slot_addr ()
5522         functions.
5523
5524         * mini-<ARCH>.h mini-trampolines.c mini.c: Get rid of 
5525         MONO_ARCH_COMMON_VTABLE_TRAMPOLINE, it is supported by all archs.
5526
5527         * mini-ia64.c (mono_arch_lowering_pass): Null out the sregs of the
5528         OP_IA64_CSET opcode.
5529
5530         * mini.c: Fix a warning.
5531
5532         * mini-llvm.c (mono_llvm_emit_method): Convert arguments of SWITCH and
5533         THROW to the appropriate llvm type.
5534
5535 2009-04-18  Zoltan Varga  <vargaz@gmail.com>
5536
5537         * mini.c (mini_method_compile): Add statistics for methods JITted
5538         with/without LLVM.
5539
5540 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
5541
5542         * method-to-ir.c: Fix the computation of ins_sreg_counts for ia64
5543         OP_IA64_CMP_<cond>_IMM opcodes.
5544
5545 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
5546
5547         * mini-llvm.c (emit_cond_system_exception): Implement throwing of
5548         corlib exceptions.
5549
5550         * dwarfwriter.c (mono_dwarf_writer_emit_method): Handle --regression
5551         correctly.
5552
5553         * mini-llvm.c (type_to_llvm_type): Avoid accessing t->data.klass for
5554         GENERICINST.
5555
5556 2009-04-17  Atsushi Enomoto  <atsushi@ximian.com>
5557
5558         * mini-exceptions.c : add thread id to EXCEPTION trace message.
5559
5560 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
5561
5562         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Fix AOT
5563         support.
5564
5565         * tramp-x86.c (mono_arch_get_unbox_trampoline): Implement static
5566         rgctx invoke trampolines for x86.
5567
5568         * mini-x86.c (mono_arch_output_basic_block): Add a few nops before
5569         indirect calls to simplify get_vcall_slot_addr (). Fixes #494567.
5570         (mono_arch_get_vcall_slot): Simplify this.
5571
5572 2009-04-16  Zoltan Varga  <vargaz@gmail.com>
5573
5574         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Move the calls to
5575         mono_debug_add_delegate_trampoline () to get_delegate_invoke_impl ().
5576
5577 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
5578
5579         * aot-compiler.c tramp-arm.c mini-arm.c: Implement static rgctx 
5580         trampolines for ARM. Add full-aot support for delegate invokes for ARM.
5581
5582         * mini-trampolines.c (mono_magic_trampoline): Fix the build.
5583
5584         * liveness.c (visit_bb): Remove a needless assert.
5585
5586 2009-04-13  Zoltan Varga  <vargaz@gmail.com>
5587
5588         * mini-trampolines.c (mono_create_delegate_trampoline): Delegate the
5589         full aot support to the arch specific code.
5590
5591         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Add full-aot support.
5592
5593         * aot-compiler.c (emit_trampolines): Emit delegate invoke impl trampolines.
5594
5595         * aot-compiler.c (emit_named_code): Rename this to 'emit_trampoline'.
5596         
5597         * mini-amd64.c (mono_arch_get_delegate_invoke_impls): New function to
5598         collect information about the delegate invoke impl trampolines.
5599
5600         * mini.h (MonoAotTrampInfo): New structure collecting the information needed
5601         to save trampolines during full-aot mode.
5602
5603         * mini-trampolines.c (mono_create_static_rgctx_trampoline): New trampoline
5604         creation function which returns a trampoline which sets the rgctx
5605         argument.
5606         (mono_magic_trampoline): Use the rgctx trampoline instead of an rgctx
5607         wrapper if possible.
5608         (mono_delegate_trampoline): Ditto.
5609
5610         * mini.c (mono_jit_runtime_invoke): Ditto.
5611
5612         * tramp-amd64.c: Add an implemention of static rgctx trampolines for AMD64.
5613         
5614         * aot-compiler.c aot-runtime.c: Add support for static rgctx trampolines.
5615
5616         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5617         
5618 2009-04-12  Zoltan Varga  <vargaz@gmail.com>
5619
5620         * mini-ia64.c (mono_arch_lowering_pass): Use NULLIFY_INS instead of
5621         just setting the opcode to OP_NOP.
5622
5623 2009-04-11  Zoltan Varga  <vargaz@gmail.com>
5624
5625         * mini.c (mini_method_compile): Put the last change inside an 
5626         #ifdef MONO_ARCH_HAVE_LIVERANGE_OPS.
5627         
5628         * mini.c (mini_method_compile): Disable sharing of stack slots/registers
5629         and extend live ranges to cover the whole method when using xdb.
5630
5631         * jit-icalls.c (ldvirtfn_internal): Avoid creating rgctx wrappers here,
5632         do it in the trampolines.
5633
5634         * mini-trampolines.c (mono_magic_trampoline): Add an rgctx wrapper if
5635         needed.
5636
5637         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
5638         
5639         * method-to-ir.c (mono_method_to_ir): Avoid using the fast virtual method
5640         call code in full-aot mode since IMT is disabled there.
5641         (mono_method_to_ir): Inline ldfld wrappers which return structures too, the
5642         new JIT no longer has that restriction.
5643
5644         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5645
5646         * aot-compiler.c (emit_extra_methods): Emit the wrapper method names in
5647         a more compact format.
5648         (mono_aot_wrapper_name): New function to return a unique name for a
5649         wrapper method, also used by the AOT runtime.
5650
5651         * aot-runtime.c (find_extra_method_in_amodule): Update after the changes to
5652         aot-compiler.c.
5653
5654         * aot-compiler.c (add_generic_class): Add the helper methods from T[]
5655         when a ICollection<T> etc is encountered.
5656         (add_generic_instances): Process method arguments/locals too.
5657         (emit_trampolines): Emit unbox trampolines for extra methods too. Shorten
5658         trampoline names.
5659
5660         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle extra methods too.
5661         
5662 2009-04-10  Zoltan Varga  <vargaz@gmail.com>
5663
5664         * aot-compiler.c: Disable the AOT compiler if the JIT is disabled.
5665
5666         * dwarfwriter.c (emit_type): Emit byref to reference types as 'int' for now.
5667
5668         * decompose.c (mono_decompose_opcode): Make this return a MonoInst*
5669         representing the result of the decomposition. Nullify instructions
5670         instead of setting them to OP_NOP since nops can't have registers
5671         set.
5672
5673 2009-04-09  Zoltan Varga  <vargaz@gmail.com>
5674
5675         * aot-compiler.c (mono_compile_assembly): Split this huge function into
5676         smaller parts. Add 'nodebug' option to prevent generation of DWARF debug
5677         info. Strip 'mapping symbols' on ARM.
5678
5679         * iltests.il.in (test_0_fconv_to_i): Disable this on ARM too.
5680         
5681         * genmdesc.pl: Applied patch by Martin Fuzzey (mfuzzey@parkeon.com). Sync
5682         this with the native genmdesc.
5683
5684 2009-04-08  Bill Holmes  <billholmes54@gmail.com>
5685
5686         * aot-runtime.c:  Fixing the MSVC build.
5687
5688         Code is contributed under MIT/X11 license.
5689
5690 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
5691
5692         * mini-llvm.c (mono_llvm_emit_method): Pass i1/i2 arguments as i4 since 
5693         JITted code depends on it.
5694
5695 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
5696
5697         * aot-compiler.c: Use new MonoGenericParam accessors.
5698
5699 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
5700
5701         Reduce memory usage and improve correctness wrt MonoGenericParam
5702         * aot-runtime.c (decode_klass_ref): Simplify generic parameter
5703         handing.  Avoid allocating MonoGenericParams, but use the ones in
5704         the container itself.
5705
5706 2009-04-07  Miguel de Icaza  <miguel@novell.com>
5707
5708         * tasklets.c: Return exceptions in the out argument.
5709
5710 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
5711
5712         * mini-llvm.c (mono_llvm_emit_method): Fix alignment in the LOCALLOC_IMM
5713         opcode. Use pointer types in more places instead of casting them to 
5714         integers.
5715
5716         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Create a pass manager to run
5717         optimizations.
5718         (mono_llvm_optimize_method): New helper function to optimize a method.
5719
5720         * method-to-ir.c (mono_emit_widen_call_res): Extract the call result 
5721         widening code so it could be called from more places.
5722         (mono_method_to_ir): Call mono_emit_widne_call_res () in several more
5723         code paths in the call opcodes.
5724
5725 Mon Apr 6 14:19:54 CEST 2009 Paolo Molaro <lupus@ximian.com>
5726
5727         * exceptions-amd64.c, mini-amd64.h: amd64 support code for continuations.
5728
5729 2009-04-06  Zoltan Varga  <vargaz@gmail.com>
5730
5731         * dwarfwriter.c: Use _ to separate class name 
5732         components as gdb can't handle '.'. Represent reference variables
5733         as 'class <NAME>&'.
5734         
5735         * mini.h (MonoCompile): Add locals_min_stack_offset/locals_max_stack_offset.
5736
5737         * mini-amd64.c (mono_arch_allocate_vars): Save min/max stack offset.
5738         
5739         * mini-gc.c: New file, contains the SGEN GC related parts of the JIT.
5740
5741         * gc-test.cs: New file with GC stack marking tests.
5742         
5743         * mini-arm.c (mono_arch_output_basic_block): Fix int->float conversion of
5744         negative numbers for vfp.
5745
5746         * basic-float.cs: Add a test.
5747         
5748 Mon Apr 6 14:12:10 CEST 2009 Paolo Molaro <lupus@ximian.com>
5749
5750         * exceptions-x86.c, mini-x86.h: x86 support code for continuations.
5751
5752 Mon Apr 6 14:09:53 CEST 2009 Paolo Molaro <lupus@ximian.com>
5753
5754         * tasklets.h, tasklets.c, mini.h, mini.c, Makefile.am: arch-indep
5755         part of tasklet/continuation support.
5756
5757 2009-04-05  Zoltan Varga  <vargaz@gmail.com>
5758
5759         * mini-llvm.c (mono_llvm_emit_method): Move the handling of
5760         amd64 opcodes inside an ifdef.
5761
5762         * dwarfwriter.c: Emit inheritance information for classes, emit fields
5763         of complex types.
5764         
5765         * dwarfwriter.c (emit_type): Emit the class info for classes.
5766
5767 2009-04-04  Zoltan Varga  <vargaz@gmail.com>
5768
5769         * Makefile.am (AM_CXXFLAGS): Add GLIB_CFLAGS to this.
5770
5771         * mini-llvm-cpp.h: New header file for mini-llvm-cpp.cpp.
5772
5773         * mini-llvm.c: Remove unused fields from EmitContext, fix memory leaks.
5774
5775         * ssa.c (mono_ssa_compute): Fix some memory leaks.
5776
5777 2009-04-03  Zoltan Varga  <vargaz@gmail.com>
5778
5779         * mini.c mini-amd64.c method-to-ir.c: Use COMPILE_LLVM in a few more places.
5780
5781         * mini-llvm.c: Update comments.
5782
5783         * mini.h (COMPILE_LLVM): New macro.
5784
5785         * decompose.c (mono_decompose_opcode): Use the COMPILE_LLVM macro.
5786
5787         * ssa.c (mono_ssa_compute): Ditto.
5788         
5789         * unwind.c (mono_unwind_get_ops_from_fde): New helper function to extract
5790         the unwind ops from a DWARF FDE.
5791
5792         * mini-llvm.c: Implement generation of unwind info for LLVM compiled
5793         methods by extracting the dwarf unwind ops from the unwind info generated
5794         by LLVM.
5795         
5796         * mini-llvm.c (mono_llvm_emit_method): Enable support for non-IMT virtual
5797         calls.
5798
5799         * mini-amd64.c (mono_arch_get_vcall_slot): Handle more kinds of the SIB
5800         addressing modes.
5801
5802 2009-04-02  Zoltan Varga  <vargaz@gmail.com>
5803
5804         * Makefile.am (llvm_sources): Enable this.
5805
5806         * mini.c (mini_method_compile): Add support for compiling with LLVM, 
5807         failing back to the JIT if something cannot be handled.
5808
5809         * mini-amd64.c (mono_arch_emit_call): Emit the arguments more simple when
5810         compiling with LLVM.
5811
5812         * decompose.c (mono_decompose_opcode): Avoid decomposing some opcodes when
5813         compiling with LLVM.
5814
5815         * method-to-ir.c (mono_method_to_ir): Avoid decomposing SWITCH when 
5816         compiling with LLVM.
5817
5818         * mini-ops.h: Add a few opcodes needed by LLVM.
5819
5820         * dwarfwriter.c (mono_dwarf_writer_emit_method): Avoid crashes if the method
5821         has no unwind info.
5822
5823         * mini-llvm.c mini-llvm-cpp.cpp: New files containing the experimental llvm
5824         backend.
5825
5826         * mini-arm.c (mono_arch_output_basic_block): Fix the ARM_FPU_NONE build.
5827
5828         * mini-arm.h mini-arm.c cpu-arm.md: Finish VFP support.
5829
5830 2009-04-01  Mark Probst  <mark.probst@gmail.com>
5831
5832         * regalloc.h, mini-codegen.c: Make vassign members gint32 to fix
5833         ridiculously large methods.
5834
5835 2009-03-31  Martin Baulig  <martin@ximian.com>
5836
5837         * debug-debugger.c (debugger_remove_breakpoint): Call
5838         mono_debugger_remove_class_init_callback ().
5839
5840 2009-03-31  Zoltan Varga  <vargaz@gmail.com>
5841
5842         * aot-compiler.c (mono_compile_assembly): Call img_writer_emit_start ()
5843         right before emitting code, not at the start.
5844
5845         * mini.c (mono_postprocess_patches): Extract this into a separate function
5846         from mono_codegen ().
5847
5848         * ssa.c (mono_ssa_compute): Set ins->klass for every PHI node, handle
5849         byref types correctly.
5850
5851 2009-03-30  Zoltan Varga  <vargaz@gmail.com>
5852
5853         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix a crash introduced
5854         by the last change.
5855
5856 2009-03-29  Zoltan Varga  <vargaz@gmail.com>
5857
5858         * mini-amd64.c (mono_arch_output_basic_block): Emit a few nops before 
5859         indirect calls, this avoids problems where get_vcall_slot () would get
5860         confused by the native code for the instruction preceeding the call.
5861         (mono_arch_get_vcall_slot): Simplify this.
5862         (mono_arch_emit_imt_argument): Remove this, it is no longer needed.
5863
5864         * mini-ops.h: Fix the definitions of the OP_IA64 opcodes, since the local
5865         register allocator now seems to depend on them instead of the data in
5866         cpu-<ARCH>.md.
5867
5868         * mini.c (mini_method_compile): Throw the correct type of exception if
5869         mono_method_get_header () fails because of a loading error.
5870
5871 2009-03-28  Zoltan Varga  <vargaz@gmail.com>
5872
5873         * mini.c (mini_method_compile): Clear the loader error if the method
5874         header cannot be decoded.
5875
5876         * mini-trampolines.c (mono_magic_trampoline): Handle generic virtual 
5877         interface methods on proxies correctly.
5878
5879         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix handling of the
5880         this argument for vtype methods. Add precise liveness info for arguments.
5881
5882         * mini-codegen.c (mono_print_ins_index): Print the vreg of the
5883         LIVERANGE_START/END opcodes.
5884
5885         * method-to-ir.c (mono_spill_global_vars): Fix liverange calculation
5886         for arguments and values in registers.
5887
5888 2009-03-27  Zoltan Varga  <vargaz@gmail.com>
5889
5890         * method-to-ir.c (mono_method_to_ir): Disable tail calls for calls which
5891         return a valuetype. Fixes #487518.
5892
5893         * iltests.il: Add a test.
5894         
5895         * aot-compiler.c: Use mono_thread_create () to create helper threads.
5896
5897         * mini-trampolines.c (mono_delegate_trampoline): Handle static delegates
5898         closed over a null reference correctly.
5899
5900 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
5901
5902         * method-to-ir.c (mono_handle_global_vregs): Fix support for ternary ops.
5903
5904 2009-03-25  Mark Probst  <mark.probst@gmail.com>
5905
5906         * mini-codegen.c (mono_local_regalloc): Don't let sregs get
5907         allocated to the same registers as fixed sregs.
5908
5909 2009-03-24  Mark Probst  <mark.probst@gmail.com>
5910
5911         * mini-ops.h: New ternary ATOMIC_CAS ops replace the old
5912         ATOMIC_CAS_IMM ops.
5913
5914         * method-to-ir.c: Handle more cases for
5915         Interlocked.CompareExchange.
5916
5917         * cpu-x86.md, mini-x86.c, mini-x86.h, cpu-amd64.md, mini-amd64.c,
5918         mini-amd64.h, cpu-ppc.md, cpu-ppc64.md, mini-ppc.c, mini-ppc.h:
5919         ATOMIC_CAS implementations for x86, AMD64, PPC and PPC64.
5920
5921 2009-03-23  Zoltan Varga  <vargaz@gmail.com>
5922
5923         * aot-runtime.c (decode_method_ref): Fix a warning.
5924
5925         * unwind.c (mono_unwind_frame): Ditto.  
5926
5927 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
5928
5929         * aot-compiler.c (arch_emit_unbox_trampoline): Fix the binary writer support.
5930         (mono_compile_assembly): Enable the binary writer for full-aot as well.
5931
5932         * image-writer.c (do_reloc): Add support for the JUMP24 relocation,
5933         fix the handling of large values in the ALU_PC_G0_NC relocation.
5934
5935 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
5936
5937         * local-propagation.c method-to-ir.c local-propagation.c: Fix warnings.
5938
5939 2009-03-22  Mark Probst  <mark.probst@gmail.com>
5940
5941         * method-to-ir.c (mono_spill_global_vars): Support for ternary
5942         ops.
5943
5944 2009-03-22  Mark Probst  <mark.probst@gmail.com>
5945
5946         * method-to-ir.c: MINI_OP3 needs a comma.
5947
5948         * method-to-ir.c, mini.h, mini.c: Remove
5949         mono_init_op_sreg_counts ().
5950
5951 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
5952
5953         * mini-arm.c (mono_arch_output_basic_block): Fix aot support in
5954         OP_JMP.
5955         
5956         * mini-arm.c (mono_arch_build_imt_thunk): Disable the !fail_tramp
5957         assertion.
5958
5959         * mini-ops.h: Fix arguments of the MEMINDEX opcodes.
5960
5961         * mini-amd64.c (mono_arch_build_imt_thunk): Simplify the fail handling
5962         code somewhat.
5963
5964 2009-03-21  Mark Probst  <mark.probst@gmail.com>
5965
5966         * cfold.c, cprop.c, decompose.c, genmdesc.c, helpers.c, ir-emit.h,
5967         liveness.c, local-propagation.c, method-to-ir.c, mini-codegen.c,
5968         mini.c, mini.h, simd-intrinsics.c, ssa.c: Support for ternary IR
5969         operations.
5970
5971 2009-03-20  Zoltan Varga  <vargaz@gmail.com>
5972
5973         * driver.c: Change location of gc_wrapper.h.
5974
5975         * method-to-ir.c (mono_find_block_region): Handle try clauses nested
5976         inside finally clauses correctly. Fixes #485721.
5977
5978         * mini.c (mono_find_spvar_for_region): This needs to handle try regions
5979         after the change above.
5980
5981         * exceptions.cs: Add a test.
5982         
5983 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
5984
5985         * unwind.c (mono_unwind_ops_encode): Increase the size of the encode buffer.
5986
5987         * mini-amd64.c (mono_arch_emit_epilog): Remove the encoding of stack size
5988         into cfg->used_int_regs, it is not needed with the dwarf unwinder.
5989         (mono_arch_compute_omit_fp): Remove the emit_epilog () workaround.
5990
5991         * mini-amd64.c (mono_arch_compute_omit_fp): Add another check to avoid hitting
5992         the stack_alloc_size < (1 << 16) assertion in emit_prolog ().
5993
5994 2009-03-19  Sebastien Pouliot  <sebastien@ximian.com>
5995
5996         * method-to-ir.c: Allow CoreCLR to throw FieldAccessException. 
5997         Simplify logic for ensure_method_is_allowed_to_call_method. 
5998         Handle wrappers on callers.
5999
6000 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
6001
6002         * Makefile.am (fullaotcheck): Don't run the generics tests, some of
6003         them don't run yet.
6004
6005         * basic-simd.cs: Fix the names of some test methods.
6006
6007 2009-03-18  Geoff Norton  <gnorton@novell.com>
6008
6009         * mini.c: Only chain sigfpe if it wasn't generated in mangaed code.
6010
6011 2009-03-18  Zoltan Varga  <vargaz@gmail.com>
6012
6013         * dwarfwriter.c (token_handler): Fix a crash caused by the last change.
6014
6015 2009-03-17  Jb Evain  <jbevain@novell.com>
6016
6017         * driver.c: remove now uneeded call to mono_gc_base_init before
6018         mono_profiler_load.
6019
6020 2009-03-17  Jb Evain  <jbevain@novell.com>
6021
6022         * dwarfwriter.c (token_handler): handle more cases.
6023
6024 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com> 
6025
6026         * method-to-ir.c: Remove more dead code (that was required only
6027         because of method_is_safe). Fix compiler warnings.
6028
6029 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com>
6030
6031         * method-to-ir.c: Remove unneeded/useless method_is_safe
6032         http://lists.ximian.com/archives/public/mono-devel-list/2009-March/031404.html
6033
6034 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
6035
6036         * mini.c (mini_method_compile): Print the method been compiled with
6037         verbose level 1 instead of 3 as this helps a lot debugging JIT crashes
6038         for people not familiar with the runtime.
6039
6040 2009-03-17  Zoltan Varga  <vargaz@gmail.com>
6041
6042         * mini-exceptions.c (get_generic_info_from_stack_frame): Avoid returning
6043         a managed object which is later put into a GList. Return its class instead.
6044
6045         * mini.c (mono_allocate_stack_slots_full): Avoid sharing ref and non-ref
6046         stack slots when using sgen.
6047
6048 2009-03-16  Zoltan Varga  <vargaz@gmail.com>
6049
6050         * dwarfwriter.c (emit_line_number_info): Really fix the eglib build.
6051
6052 2009-03-14  Zoltan Varga  <vargaz@gmail.com>
6053
6054         * local-propagation.c (reg_is_softreg_no_fpstack): Use >= instead of
6055         > so it works on the first vreg as well.
6056
6057 2009-03-13  Zoltan Varga  <vargaz@gmail.com>
6058
6059         * dwarfwriter.c (emit_line_number_info): Disable an assert which seems to
6060         trigger randomly.
6061
6062         * aot-compiler.c: Get rid of xdebug_lock (), use the loader lock instead.
6063         
6064         * dwarfwriter.c (emit_line_number_info): Fix eglib build as eglib doesn't
6065         implement GArray.
6066
6067 2009-03-12  Zoltan Varga  <vargaz@gmail.com>
6068
6069         * dwarfwriter.c (emit_line_number_info): Optimize the computation of the
6070         native->IL offset mapping.
6071
6072 2009-03-11  Zoltan Varga  <vargaz@gmail.com>
6073
6074         * mini-amd64.c (mono_arch_output_basic_block): Fix % 1. Fixes #484323.
6075
6076         * basic.cs: Add a test.
6077
6078 2009-03-11  Mark Probst  <mark.probst@gmail.com>
6079
6080         * mini-x86.c (mono_arch_output_basic_block): Use different
6081         registers in case the ones we want to overwrite are used by the
6082         other operand.  Fixes regression in #480807.
6083
6084 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
6085
6086         * aot-compiler.c (mono_compile_assembly): Make the output less verbose.
6087
6088         * dwarfwriter.c (emit_line_number_info): The line number info for
6089         IL code was off by one. Fix that.
6090
6091         * mini-s390x.c: Fix support for vtypes whose addresses are passed on the
6092         stack.
6093
6094 2009-03-09  Mark Probst  <mark.probst@gmail.com>
6095
6096         Contributed under the terms of the MIT/X11 license by Steven
6097         Munroe <munroesj@us.ibm.com>.
6098
6099         * mini-ppc.c: Correct handling of OP_LOADI4_MEMINDEX for ppc64.
6100         Fixes #483462.
6101
6102 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
6103
6104         * dwarfwriter.c (token_handler): Decode method references in non-wrappers
6105         as well.
6106
6107 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
6108
6109         * method-to-ir.c (mono_method_to_ir): Check for type load exceptions in
6110         the delegate ctor handling code. Fixes #482638.
6111         
6112         * method-to-ir.c (mini_emit_memset): Fix the handling of size '3'. Fixes
6113         #481458.
6114
6115         * iltests.il.in: Add a test.
6116         
6117         * mini-darwin.c (mono_chain_signal): Remove this, it is already in
6118         mini-posix.c.
6119
6120 2009-03-05  Mark Probst  <mark.probst@gmail.com>
6121
6122         * mini-trampolines.c (mono_create_jump_trampoline): If the method
6123         is shared generic code, return the trampoline, even if the method
6124         has already been compiled.  Fixes #479763.
6125
6126         * mini.c, mini.h: New function
6127         mono_jit_find_compiled_method_with_jit_info() which is the same as
6128         mono_jit_find_compiled_method() but also returns the jit info.
6129
6130 2009-03-05  Mark Probst  <mark.probst@gmail.com>
6131
6132         * method-to-ir.c (mono_method_to_ir): Only force the vtable var
6133         for methods which actually have one.  For all other methods, make
6134         sure the this argument var is live the whole method.
6135
6136         * mini.c (mini_method_compile): Every shared method has a
6137         this/vtable/mrgctx info.  Fixes #480807.
6138
6139 2009-03-05  Mark Probst  <mark.probst@gmail.com>
6140
6141         * mini-ppc.c (mono_arch_build_imt_thunk): Add support for mixed
6142         generic/imt thunks where some entries branch through the vtable,
6143         while other entries branch directly.
6144
6145 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
6146
6147         * mini-darwin.c (mono_chain_signal): Define this to fix the build.
6148
6149         * mini-windows.c: Ditto.
6150         
6151         * mini.c (mono_jit_runtime_invoke): Speed up the invoking of parameterless
6152         ctors.
6153
6154 2009-03-04  Zoltan Varga  <vargaz@gmail.com>
6155
6156         * dwarfwriter.c (emit_line_number_info): Add some debug code to help track
6157         down an assert.
6158
6159 2009-03-04  Mark Probst  <mark.probst@gmail.com>
6160
6161         * method-to-ir.c: Don't inline methods that use JMP.  Fixes
6162         #481403.
6163
6164 2009-03-04  Mark Probst  <mark.probst@gmail.com>
6165
6166         * exceptions-x86.c: Include debug-mini.h - fixes build.
6167
6168 2009-03-04  Martin Baulig  <martin@ximian.com>
6169
6170         * debug-mini.c: Clean up the exception API and add documentation.
6171         (mono_debugger_handle_exception): New public method; this is
6172         called when throwing an exception or encountering an unhandled one.
6173         (mono_debugger_call_exception_handler): Formerly known as
6174         mono_debugger_handle_exception(); this is used to tell the
6175         debugger that we're about to invoke an exception handler.
6176
6177 2009-03-04  Martin Baulig  <martin@ximian.com>
6178
6179         * debug-mini.c (mono_debugger_runtime_invoke): Moved here from
6180         ../metadata/mono-debug-debugger.c; save and reset exception state.
6181
6182 2009-03-02  Martin Baulig  <martin@ximian.com>
6183
6184         * debug-mini.c: Moved the debugger exception handling here from
6185         ../metadata/mono-debug-debugger.c.
6186
6187         * debug-mini.h
6188         (MonoDebuggerExceptionAction): New exception typedef.
6189
6190         * debug-mini.c
6191         (MonoDebuggerThreadInfo): Added `MonoObject *last_exception'.
6192
6193         * exceptions-amd64.c
6194         (mono_amd64_throw_exception): Use the new debugger exception
6195         handling code.
6196
6197         * mini-exceptions.c
6198         (mono_handle_exception_internal): Don't call
6199         mono_debugger_unhandled_exception() here.
6200
6201 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
6202
6203         * mini.c aot-compiler.c: Update after the changes to 
6204         mono_marshal_get_runtime_invoke ().
6205
6206         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): 
6207         Virtual generic methods might not have method->slot set, work around
6208         that.
6209
6210         * generics.cs: Add a test.
6211
6212 2009-03-02  Geoff Norton  <gnorton@novell.com>
6213
6214         * mini.c:
6215         * driver.c: Allow signal chaining of SIGFPE as well.
6216
6217 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
6218
6219         * mini-trampolines.c (mono_generic_virtual_remoting_trampoline): Update
6220         this since it now receives the method not its generic context in the
6221         IMT reg.
6222
6223         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for mixed
6224         generic/imt thunks where some entries branch through the vtable, while
6225         other entries branch directly.
6226
6227         * mini-x86.c (mono_arch_build_imt_thunk): Ditto.
6228
6229         * method-to-ir.c (mono_method_to_ir): Enable fast virtual generic call 
6230         support for interface methods as well.
6231
6232         * mini-trampolines.c: Add support for virtual generic methods in interfaces
6233         using the normal IMT thunks.
6234
6235         generics.cs: Add new tests.
6236         
6237         * method-to-ir.c (mono_method_to_ir): Pass the method instead of
6238         the generic inst to the generic imt thunks. This fixes AOT support, 
6239         improves consistency with the normal IMT thunks, and makes it easier to
6240         add support for interface generic virtual methods later.
6241
6242         * mini-trampolines.c (mono_magic_trampoline): Ditto.    
6243         
6244 2009-02-28  Zoltan Varga  <vargaz@gmail.com>
6245
6246         * driver.c (mono_set_signal_chaining): New public API function to enable
6247         signal chaining on POSIX platforms.
6248
6249         * mini-posix.c mini.c: Applied a variant of a patch by Simon Rowland 
6250         (si@lindenlab.com) to implement signal chaining. The original patch was
6251         contributed under the MIT X/11 license:
6252         https://bugzilla.novell.com/show_bug.cgi?id=318894
6253
6254 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
6255
6256         * iltests.il.in (test_0_implicit_float_to_double_conversion): Disable this
6257         too until it can be made to run on amd64.
6258
6259 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
6260
6261         * mini-x86.c (mono_arch_get_this_arg_from_call): Avoid expensive calls
6262         to  get_generic_context_from_code () + get_call_info () if possible.
6263
6264 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
6265
6266         * mini-exceptions.c (mono_handle_native_sigsegv): Implement the
6267         suspend-on-sigsegv functionality.
6268
6269         * mini.c (mini_parse_debug_options): Add a new 'suspend-on-sigsegv' option
6270         to suspend when a native SIGSEGV is received. This is useful for debugging
6271         crashes which don't happen under gdb, since a live process contains more
6272         information than a core file.
6273
6274         * mini-exceptions.c (mono_print_thread_dump): Use 
6275         MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX instead of platform defines.
6276
6277         * mini-x86.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): New define.
6278
6279         * mini-amd64.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): Ditto.
6280         
6281         * basic-float.cs: Disable the tests which currently fail on amd64.
6282
6283         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass a non-null 
6284         value to mono_arch_patch_callsite () to fix crashes.
6285         
6286         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix a warning.
6287
6288 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
6289
6290         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Replace the
6291         nop code by patching the call address to point to the nullified class init
6292         trampoline, as the former does not seem to be safe on SMP machines.
6293
6294 2009-02-23  Mark Probst  <mark.probst@gmail.com>
6295
6296         * mini-ops.h: Fix the argument types for a few x86 opcodes where
6297         they were wrong.
6298
6299 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
6300
6301         * basic-float.cs basic-calls.cs: Fix warnings.
6302
6303 2009-02-22  Mark Probst  <mark.probst@gmail.com>
6304
6305         * tramp-ppc.c (mono_arch_create_trampoline_code): Store the
6306         correct frame pointer in the LMF.  Should fix #478394.
6307
6308 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
6309
6310         * Makefile.am (fullaotcheck): Copy Mono.Simd.dll as well.
6311
6312         * image-writer.c: Make the binary writer less verbose.
6313
6314 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
6315
6316         * method-to-ir.c (mono_method_to_ir): Don't assert if string ctors
6317         are called from runtime invoke wrappers.
6318
6319 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
6320
6321         * cpu-ppc.md (store_memindex): Increase the size of this.
6322
6323 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6324
6325         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6326
6327         * cpu-x86.md: Fix the sizes for long_conv_to_r_un and long_conv_to_r_un_2.
6328
6329         * mini-x86.c (mono_arch_output_basic_block): Use only 64bits of precision for
6330         OP_LCONV_TO_R_UN.
6331
6332         Last fix for of #467201.
6333
6334
6335 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6336
6337         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6338
6339         * cpu-x86.md: Fix the sizes for fcall(_reg,_membase), long_conv_to_r4_2
6340         and long_conv_to_r8_2:
6341
6342         Fixed part of #467201.
6343
6344 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6345
6346         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6347
6348         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of int to float
6349         conversion to 32 bits.
6350
6351         * cpu-x86.md: Increase the size of int_conv_to_r4.
6352
6353         * basic-float.cs: Add a test for this.
6354
6355         Fixed part of #467201.
6356
6357 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6358
6359         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6360
6361         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of long to double
6362         conversion to 64 bits.
6363
6364         * basic-float.cs: Add a test for this.
6365
6366         Fixed part of #467201.
6367
6368 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6369
6370         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6371
6372         * mini-x86.c (emit_move_return_value): Don't reduce precision of functions returning float.
6373         This behavior is compatible with MS.
6374
6375         * iltest.il.in: Add a test for this.
6376
6377         Fixed part of #467201.
6378
6379 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
6380
6381         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
6382
6383         * mini-x86.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_R4, it must
6384         change the precision of the value.
6385
6386         * cpu-x86.md: Define len for float_conv_to_r4.
6387
6388         * basic-float.cs: Add a test for this.
6389
6390         Fixed part of #467201.
6391
6392 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
6393
6394         * mini.c: Adjust locking order to the new semantics where the loader lock
6395         comes first.
6396
6397 2009-02-18  Rodrigo Kumpera  <rkumpera@novell.com>
6398
6399         * aot-runtime.c:
6400         * mini-amd64.c:
6401         * mini-arm.c:
6402         * mini-ia64.c:
6403         * mini-mips.c:
6404         * mini-ppc.c:
6405         * mini-sparc.c:
6406         * mini-trampolines.c:
6407         * mini-x86.c:
6408         * mini.c:
6409         * tramp-alpha.c:
6410         * tramp-amd64.c:
6411         * tramp-arm.c:
6412         * tramp-hppa.c:
6413         * tramp-ia64.c:
6414         * tramp-mips.c:
6415         * tramp-ppc.c:
6416         * tramp-s390.c:
6417         * tramp-s390x.c:
6418         * tramp-sparc.c:
6419         * tramp-x86.c: Use mono_domain_code_* functions instead of using MonoDomain::code_mp directly.
6420
6421 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
6422
6423         * mini-codegen.c (mono_local_regalloc): Remove a ! from if (!dest_sreg1)
6424         as it is incorrect.
6425
6426 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
6427
6428         * aot-compiler.c (add_generic_class): Only add rgctx invoke wrappers
6429         for cctors if needed.
6430
6431 2009-02-17  Mark Probst  <mark.probst@gmail.com>
6432
6433         * mini-ppc.c: Fix build on Darwin.
6434
6435 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
6436
6437         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Use 2 as the DWARF
6438         version instead of 3 as valgrind doesn't like version 3.
6439
6440         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
6441
6442         * aot-compiler.c (mono_aot_method_hash): New function to return a hash
6443         usable for hashing methods.
6444         (emit_extra_methods): Use the new hash to avoid putting every method in the
6445         same hash bucket.
6446
6447         * aot-runtime.c (find_extra_method_in_amodule): Use the new hash.
6448
6449         * aot-runtime.c (can_method_ref_match_method): New function to quickly check
6450         whenever a method ref could match a method.
6451         
6452         * aot-runtime.c (load_image): Revert the previous change, it causes an AOT
6453         test to fail.
6454         
6455         * aot-runtime.c (find_extra_method_in_amodule): Add a cache for decoded 
6456         methods refs.
6457
6458         * aot-runtime.c (load_image): Pass our basedir to mono_assembly_load.
6459
6460         * aot-compiler.c (emit_exception_debug_info): Bump the maximum size of
6461         the encoding buffer.
6462
6463         * method-to-ir.c (mono_method_check_inlining): Avoid calling 
6464         mono_method_get_header () on inflated methods as an optimization.
6465
6466 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
6467
6468         * ssa.c (fold_ins): Fix another crash if the instruction following the
6469         switch was optimized away.
6470
6471 2009-02-16  Mark Probst  <mark.probst@gmail.com>
6472
6473         Contributed under the terms of the MIT/X11 license by Steven
6474         Munroe <munroesj@us.ibm.com>.
6475
6476         * mini-ppc.c, mini-ppc.h: Implement TLS for PPC64.
6477
6478 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
6479
6480         * mini.c method-to-ir.c mini-trampolines.c aot-runtime.c: Remove locking
6481         around the mono_domain_alloc calls, it is now done by the functions
6482         themselves.
6483
6484         * aot-compiler.c (compile_method): Only add wrappers referenced by
6485         the method if compiling with full AOT.
6486         (mono_compile_assembly): Error out if --aot=full is specified on
6487         a platform where it is not supported.
6488
6489         * aot-compiler.c (emit_trampolines): Emit generic class init trampolines
6490         on ARM too.
6491
6492         * tramp-arm.c (mono_arch_create_generic_class_init_trampoline_full): Add
6493         AOT support.
6494
6495         * aot-runtime.c (load_named_code): Handle 
6496         mono_arm_throw_exception_by_token.
6497
6498         * mini-arm.h: Add declaration of mono_arm_throw_exception_by_token.
6499
6500         * image-writer.c (asm_writer_emit_pointer_unaligned): Make this really
6501         unaligned.
6502
6503         * Makefile.am (fullaotcheck): Exit if a test fails.
6504
6505         * aot-compiler.c (mono_compile_assembly): Use the ASM writer for full aot
6506         on ARM.
6507         (mono_compile_assembly): Handle the assembler failing.
6508
6509         * image-writer.c (asm_writer_emit_section_change): Handle ARM gas not
6510         accepting subsections of .bss.
6511
6512         * ssa.c (visit_inst): Fix a crash if the instruction following a switch
6513         was optimized away.
6514
6515         * aot-compiler.c: Remove some unused includes.
6516         
6517         * aot-compiler.c (MonoAotCompile): Remove some unused fields which are
6518         now in MonoImageWriter.
6519
6520         * mini-x86.c (mono_arch_get_vcall_slot): Handle yet another
6521         code sequence which matches a non-virtual call. Fixes #472654.
6522
6523 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
6524
6525         * aot-compiler.c: Use xdebug_lock ()/unlock () macros for locking in the
6526         xdebug code.
6527         
6528         * aot-compiler.c: Make the xdebug code not depend on the AOT compiler,
6529         use the image/dwarf writers directly.
6530
6531         * image-writer.c (struct _MonoImageWriter): Remove the unused 'image'
6532         field.
6533
6534         * aot-compiler.c (MonoAotCompile): Remove fields which are now in
6535         MonoDwarfWriter.
6536
6537         * image-writer.h: Fix some typos.
6538
6539         * dwarfwriter.h dwarfwriter.c: New files.
6540         
6541         * aot-compiler.c: Extract the DWARF info writing functionality into a 
6542         separate module.
6543
6544         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add a 'out_unwind_ops'
6545         argument to return unwind info.
6546
6547         * tramp-arm.c (mono_arch_create_trampoline_code_full): Ditto.
6548
6549         * aot-compiler.c: Emit unwind info for trampolines in full-aot mode.
6550         
6551         * aot-runtime.c (decode_method_ref): Add a case for 
6552         MONO_AOT_METHODREF_WRAPPER_NAME.
6553
6554         * mini.h: Add constants for the magic numbers used in encode_method_ref ()
6555         for AOT.
6556
6557         * aot-compiler.c (encode_method_ref): Use the new constants.
6558
6559         * aot-runtime.c (decode_method_ref): Ditto.
6560
6561         * aot-compiler.c (compile_method): For generic icalls, queue the wrapper to
6562         be compiled, not the icall itself.
6563
6564 2009-02-14  Zoltan Varga  <vargaz@gmail.com>
6565
6566         * aot-runtime.c (find_extra_method_in_amodule): Avoid decoding wrapper names
6567         using decode_method_ref ().
6568
6569         * method-to-ir.c (mini_emit_ldelema_1_ins): If the array index is a long,
6570         convert it to an in32. Fixes #475859.
6571
6572         * arrays.cs: Add a test.
6573
6574 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
6575
6576         * mini-s390x.c (mono_arch_output_basic_block): Fix the shift amounts in 
6577         OP_LCONV_TO_U2.
6578
6579         * basic-long.cs: Add a test.
6580
6581 2009-02-12  Mark Probst  <mark.probst@gmail.com>
6582
6583         * mini-x86.c, mini-x86.h: Very simple frame pointer removal.  We
6584         remove the frame pointer in leaf methods which don't receive any
6585         arguments, don't throw exceptions and don't do dynamic stack
6586         allocations.
6587
6588 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
6589
6590         * mini-amd64.c (mono_arch_build_imt_thunk): Fix size calculation after
6591         the fail_tramp changes. Hopefully fixes #475132.
6592
6593 2009-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
6594
6595         * method-to-ir.c (mono_emit_method_call_full): Use mono_metadata_signature_dup_mempool
6596         instead of mono_metadata_signature_dup_full.
6597
6598 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
6599
6600         * ssa.c (fold_ins): Use MONO_IS_JUMP_TABLE () and MONO_JUMP_TABLE_FROM_INS ()
6601         for processing jump tables. Fixes #473787.
6602
6603 2009-02-11  Mark Probst  <mark.probst@gmail.com>
6604
6605         * mini-generic-sharing.c: mini_method_get_context() just calls
6606         mono_method_get_context_general() now.
6607
6608         * mini.c, mini.h: Moved get_object_generic_inst(),
6609         construct_object_context_for_method() and
6610         mono_domain_lookup_shared_generic() to metadata/generic-sharing.c.
6611
6612 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
6613
6614         * branch-opts.c (mono_if_conversion): Handle the case where the merged 
6615         basic block fell through to its successor bblock without a branch. Fixes
6616         #474718.
6617
6618         * iltests.il.in: Add a test.
6619         
6620         * aot-compiler.c (encode_method_ref): Encode methods of array types.
6621         (can_encode_patch): We can now handle arrays of generic parameters and
6622         array methods.
6623
6624         * aot-runtime.c (decode_method_ref_2): Handle methods of array types.
6625
6626         * aot-compiler.c aot-runtime.c: Emit the size of specific trampolines into
6627         the AOT file to avoid some #ifdefs in aot-runtime.c
6628
6629         * mini.h: Bump AOT file format version.
6630
6631 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
6632
6633         * Makefile.am (fullaotcheck): Make this run the tests.
6634
6635         * aot-compiler.c: Make the printing of skipped methods runtime configurable.
6636
6637 2009-02-10  Mark Probst  <mark.probst@gmail.com>
6638
6639         * mini-x86.c (mono_arch_context_get_int_reg): Handle all registers
6640         individually.  Fixes #473482.
6641
6642 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
6643
6644         * mini-arm.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
6645
6646 2009-02-09  Jeffrey Stedfast  <fejj@novell.com>
6647
6648         * aot-compiler.c (arch_emit_plt_entry): Fixed to compile.
6649         (mono_compile_assembly): Hush compile warnings about
6650         uninitialized [tmp_]outfile_name variables in the !use_bin_writer
6651         code path.
6652
6653 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
6654
6655         * exceptions-arm.c (mono_arch_find_jit_info): Fix aot support.
6656
6657         * mini-arm.c: Checkin unwind related changes missing from an earlier commit.
6658
6659         * aot-compiler.c: Fix arm support.
6660
6661         * image-writer.c: Move the R_ARM constants to image-writer.h. Export a
6662         img_writer_emit_unset_mode () function.
6663
6664         * unwind.c (mono_unwind_get_dwarf_data_align): New helper function.
6665         (mono_unwind_get_dwarf_pc_reg): Ditto.
6666
6667         * aot-compiler.c (emit_dwarf_abbrev): Another large reorganization.
6668         Move almost all platform specific code to a set of arch_ functions, 
6669         and document them to ease porting.
6670         
6671         * aot-compiler.c (mono_xdebug_init): Fix xdebug support.
6672
6673         * image-writer.h image-writer.c: New files, extracted from aot-compiler.c.
6674
6675         * aot-compiler.c: Extract the image writing functionality into a separate
6676         module to reduce the size of this file.
6677
6678 2009-02-09  Geoff Norton  <gnorton@novell.com>
6679
6680         * mini-s390.c: Fix the signature of emit_sig_cookie.
6681
6682 2009-02-09  Zoltan Varga  <vargaz@gmail.com>
6683
6684         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_IMAGE.
6685
6686         * aot-runtime.c (is_shared_got_patch): Ditto.
6687
6688         * aot-runtime.c (load_named_code): Cope with the fact that 
6689         decode_got_entry () won't decode the patch fully if its corresponding got
6690         entry is already filled.
6691         
6692         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): 
6693         Initialize *ji.
6694         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
6695
6696         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code'
6697         as the moving pointer instead of 'buf' for consistency with the rest of the
6698         codebase.
6699         (mono_arch_create_monitor_exit_trampoline): Ditto.
6700
6701         * aot-compiler.c (emit_trampolines): Add throw_pending_exception/
6702         generic_class_init trampolines.
6703         (add_generic_class): Extract some code from add_generic_instances () into a
6704         separate function so it can be called from other places too.
6705         (compile_method): Call add_generic_class () for the classes of inflated methods
6706         referenced by the method.
6707         (can_encode_patch): Allow references to generic parameters.
6708
6709         * aot-runtime.c: Add support the patches required by the new trampolines.
6710         
6711         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Add full-aot
6712         support.
6713
6714         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline_full): Add
6715         full-aot support.
6716
6717         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Rename
6718         this from get_throw_pending_exception, make the signature full aot compatible.
6719
6720         * Makefile.am (fullaotcheck): New target to run full-aot tests.
6721
6722         * method-to-ir.c (inline_method): Save/Restore cfg->ret_var_set too.
6723
6724         * exceptions.cs: Add a test.
6725
6726 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
6727
6728         * unwind.c (mono_unwind_frame): Eliminate the data_align_factor argument,
6729         use the DWARF_DATA_ALIGN constant instead.
6730
6731         * exception-<ARCH>.c: Update after the above change.
6732
6733         * exceptions-arm.c (mono_arch_find_jit_info): Transition this to use the
6734         dwarf unwinder.
6735
6736         * mini-arm.c: Enable the dwarf unwinder.
6737
6738         * mini-trampolines.c (mono_magic_trampoline): Use mono_class_get_vtable_entry ()
6739         instead of mono_class_setup_vtable ().
6740
6741 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
6742
6743         * exceptions-x86.c (mono_arch_find_jit_info): Transition this to use the
6744         dwarf unwinder.
6745
6746         * mini-x86.h: Enable the dwarf unwinder.
6747
6748 2009-02-06  Raja R Harinath  <harinath@hurrynot.org>
6749
6750         Fix mcs/tests/test-7.cs
6751         * mini-amd64.c (mono_arch_allocate_vars): Revert change from
6752         2009-02-03.
6753
6754 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
6755
6756         * mini.c (print_jit_stats): Remove some unused statistics.
6757
6758 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
6759
6760         * aot-compiler.c (emit_klass_info): Update after MonoClass changes.
6761
6762 2009-02-05  Mark Probst  <mark.probst@gmail.com>
6763
6764         * jit-icalls.c (mono_helper_compile_generic_method): Don't inflate
6765         the method we get from mono_object_get_virtual_method() because
6766         that function does it properly, now.
6767
6768 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
6769
6770         * unwind.c (mono_unwind_ops_encode): Handle offsets greater than 32 between
6771         opcodes. Fixes #472775.
6772
6773 2009-02-05  Mark Probst  <mark.probst@gmail.com>
6774
6775         * mini-exceptions.c (ves_icall_get_frame_info): Account for the
6776         fact that mono_find_jit_info() sometimes returns the context
6777         corresponding to the jit info in new_ctx.  Fixes #472600.
6778
6779 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
6780
6781         * method-to-ir.c mini-hppa.c mini.c trace.c mini-s390x.c aot-compiler.c
6782         mini-s390.c: Use mono_class_enum_basetype () instead of accessing
6783         klass->enum_basetype directly.
6784
6785         * aot-compiler.c (emit_class_dwarf_info): Add support for all possible
6786         enum subtypes.
6787
6788         * unwind.c: Avoid 0 sized arrays.
6789
6790 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
6791
6792         * mini-exceptions.c (mono_setup_altstack): Use a more reasonable altstack
6793         size on systems with 64k pages. Fixes #471389.
6794
6795 2009-02-04  Mark Probst  <mark.probst@gmail.com>
6796
6797         Contributed under the terms of the MIT/X11 license by Steven
6798         Munroe <munroesj@us.ibm.com>.
6799
6800         * mini-ppc.c (mono_arch_output_basic_block): Generate better code
6801         for LOADI4_MEMBASE.  Use addi instead of addic if it's not
6802         necessary.
6803
6804 2009-02-04  Mark Probst  <mark.probst@gmail.com>
6805
6806         Contributed under the terms of the MIT/X11 license by Steven
6807         Munroe <munroesj@us.ibm.com>.
6808
6809         * exceptions-ppc.c (mono_arch_get_restore_context): Code size
6810         comparison fix.
6811
6812         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline):
6813         The trampoline can be longer on PPC64.
6814
6815 2009-02-04  Mark Probst  <mark.probst@gmail.com>
6816
6817         Contributed under the terms of the MIT/X11 license by Steven
6818         Munroe <munroesj@us.ibm.com>.
6819
6820         * mini-ppc.c: Compiler warning fixes and trivial code
6821         simplifications.
6822
6823 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
6824
6825         * method-to-ir.c (mono_spill_global_vars): Fix problems caused by reading
6826         ins->dreg which could be a hardware register, not a vreg.
6827
6828         * aot-compiler.c (emit_method_dwarf_info): Ditto.
6829         
6830         * mini.h (MonoCompile): Remove vreg_to_var_num array, it is no longer used.
6831         (struct MonoMethodVar): Add a vreg field, holding the vreg of variable.
6832
6833         * mini.c (mono_compile_create_var_for_vreg): Set var->vreg.
6834         
6835         * mini-amd64.c (mono_arch_output_basic_block): Avoid reading cfg->varinfo[..]
6836         ->dreg, that is not the vreg we are looking for.
6837
6838         * mini-amd64.h mini-x86.h: Enable MONO_ARCH_LIVENESS_OPS again.
6839
6840         * mini-x86.c (mono_arch_output_basic_block): Add support for LIVERANGE_START/
6841         LIVERANGE_END.
6842
6843         * method-to-ir.c (mono_spill_global_vars): Add an assert to help track down
6844         strange crashes.
6845
6846 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
6847
6848         * mini-x86.c (mono_arch_emit_prolog): Emit unwind info.
6849
6850         * aot-compiler.c (emit_line_number_info): Fix line number emission when
6851         the line diff is 0.
6852
6853         * aot-compiler.c: Add xdebug support on x86.
6854
6855         * unwind.c: Add x86 support.
6856         
6857         * aot-compiler.c (emit_exception_debug_info): Control the emission of
6858         unwind info using a new MONO_ARCH_HAVE_XP_UNWIND define.
6859
6860         * mini.c (mini_method_compile): Ditto.
6861         
6862         * mini-amd64.c (mono_arch_allocate_vars): Avoid setting cfg->ret->dreg to
6863         the variable index.
6864
6865         * aot-compiler.c: Add emit_push_section ()/emit_pop_section () helper functions
6866         which mimic .push_section/.pop_section in GAS.
6867         
6868         * aot-compiler.c: Emit precise live range information for variables.
6869
6870         * mini-amd64.c (mono_arch_output_basic_block): Add OP_LIVERANGE_START/END.
6871
6872         * method-to-ir.c (mono_spill_global_vars): Compute the instructions marking
6873         the live ranges of variables, and emit OP_LIVERANGE_START/END opcodes for
6874         them.
6875
6876         * mini-ops.h: Add OP_LIVERANGE_START/END opcodes to mark
6877         the live ranges of variables.
6878
6879         * mini.h (struct MonoMethodVar): Add two fields containing the live range
6880         of the variable in terms of native offsets.
6881
6882 2009-02-03  Rodrigo Kumpera  <rkumpera@novell.com>
6883
6884         * arrays.cs: Test for Get/SetValue of array with negate lower bounds.
6885         
6886 2009-02-02  Mark Probst  <mark.probst@gmail.com>
6887
6888         Contributed under the terms of the MIT/X11 license by Steven
6889         Munroe <munroesj@us.ibm.com>.
6890
6891         * exceptions-ppc.c (restore_regs_from_context): Correct operand
6892         order (offset then base reg) for ppc_load_multiple_regs.
6893         (emit_save_saved_regs) Correct operand order for
6894         ppc_store_multiple_regs.
6895         (mono_arch_get_call_filter): Correct operand order for
6896         ppc_load_multiple_regs.
6897
6898         * mini-ppc.c (emit_memcpy): Fix operand order for
6899         ppc_load_reg_update and ppc_store_reg_update.
6900         (mono_arch_output_basic_block): Correct operand order for ppc_lha.
6901         (mono_arch_emit_epilog): Correct operand order for
6902         ppc_load_multiple_regs.
6903
6904         * tramp-ppc.c (mono_arch_create_trampoline_code): Correct operand
6905         order for ppc_store_multiple_regs and ppc_load_multiple_regs.
6906
6907 2009-02-02  Mark Probst  <mark.probst@gmail.com>
6908
6909         * cpu-ppc64.md: Fixed storer4_memindex length.
6910
6911 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
6912
6913         * aot-compiler.c (emit_line_number_info): Optimize the size of the emitted
6914         line number info.
6915         
6916         * aot-compiler.c (emit_line_number_info): Optimize this.
6917
6918 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
6919
6920         * aot-compiler.c: Disassemble tokens in the IL disassembly.
6921         
6922         * aot-compiler.c: Add debug info for methods without debug info by
6923         emitting an IL file and having the line number info referencing that file.
6924
6925         * aot-compiler.c: Optimize the size of the generated line number info.
6926
6927         * aot-compiler.c: Emit line number info in xdebug mode.
6928
6929         * aot-compiler.c (mono_save_xdebug_info): Receive a MonoCompile instead of a
6930         million arguments.
6931
6932 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
6933
6934         * aot-compiler.c (emit_method_dwarf_info): Emit names for local variables.
6935
6936         * driver.c (mono_main): Enable debugging support automatically if XDEBUG
6937         is used.
6938
6939 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
6940
6941         * basic-calls.cs: Test for the weird crash found on arm.
6942         
6943 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
6944
6945         * cpu-arm.md: Increase the size of storer8_membase_reg and
6946         loadr8_membase_reg to 24 bytes to accomodate the extra add.
6947
6948         * mini-arm.c (mono_arch_output_basic_block): Under FPA, when emitting
6949         OP_STORER8_MEMBASE_REG and OP_LOADR8_MEMBASE_REG, add the original
6950         reg to LR otherwise we'll be loading/storing from just the offset.
6951
6952 2009-01-30  Miguel de Icaza  <miguel@novell.com>
6953
6954         Question: if we are storing gint32's inside the "*native_offset",
6955         should we change the signature to "gint32 *native_offset" to
6956         ensure that we do not have type definition problems?
6957         
6958         * mini-exceptions.c (ves_icall_get_frame_info): Cast the gint32 to
6959         an int * as this is what the other function expects, causes
6960         problems with Freescale's compiler that defined int32_t to be a
6961         long and makes int incompatible 
6962
6963 2009-01-30  Miguel de Icaza  <miguel@novell.com>
6964
6965         * Rename generic-sharing.c to mini-generic-sharing.c to avoid the
6966         filename conflict with bjam.
6967
6968 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
6969
6970         * cpu-arm.md: Increase the size of storer8_membase_reg to 20 bytes
6971         as it might use decomposed ops.
6972
6973 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
6974
6975         * jit-icalls.c (mono_imul_ovf): Fix one of the literals.
6976
6977         * mini.c (mini_init): Emulate mul.ovf opcodes if MONO_ARCH_EMULATE_MUL_OVF
6978         is defined.
6979
6980         * mini-arm.h (MONO_ARCH_EMULATE_MUL_OVF): New define.
6981
6982         * mini-arm.c (mono_arch_build_imt_thunk): Rewrite this to allow large vtable
6983         offsets.
6984
6985         * mini-arm.c (mono_arch_context_get_int_reg): Adapt this to the "clever"
6986         way registers are stored in MonoContext on arm.
6987
6988         * unwind.c: Rewrite the handling of the cached_info array to use hazard pointers
6989         instead of locking so mono_get_cached_unwind_info () becomes signal safe.
6990
6991         * mini.c (mini_init): Emuate OP_FCONV_TO_I when using soft float.
6992
6993         * mini-arm.c (emit_load_volatile_arguments): Avoid an unneccesary assert.
6994
6995         * mini.c (mini_init): Register mono_isfinite.
6996
6997         * jit-icalls.c (mono_isfinite): New jit icall.
6998
6999         * method-to-ir.c (mono_decompose_soft_float): Add support for OP_CKFINITE.
7000         
7001         * exceptions-arm.c (mono_arch_find_jit_info): When unwinding using the LMF,
7002         set esp to ARMREG_FP instead of R12, since R12 stores the value of sp for
7003         the parent frame.
7004
7005 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
7006
7007         * exceptions-arm.c (mono_arch_find_jit_info): The frame layout on arm have
7008         separate frame and stack pointers, so we must use FP to find the register
7009         spill area.
7010         The FP reg is retrieved from the MonoContext::regs array.
7011
7012 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
7013
7014         * mini-arm.c (mono_arch_output_basic_block): Emit two cond ops for OP_FBGE
7015         as FPA requires it.
7016
7017 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
7018
7019         * mini-arm.c (mono_arch_emit_setret): Emit OP_FMOVE for methods that
7020         return R4 and R8 when not running under softfloat.
7021
7022         Fixes basic-calls.exe
7023
7024 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
7025
7026         * mini-arm.c: Implement some overflow opcodes.
7027
7028 2009-01-29  Miguel de Icaza  <miguel@novell.com>
7029
7030         * ssa.c: handle another alloca.h
7031
7032         * mini-exceptions.c (mono_handle_native_sigsegv): Do not use
7033         PLATFORM_WIN32 for detecting if we have sigaction.   Instead use
7034         MONO_ARCH_USE_SIGACTION. 
7035
7036         * aot-runtime.c, mini-exceptions.c: Replace platform define with
7037         capability defines.
7038
7039         * method-to-ir.c (mono_method_to_ir): Type cast fix on some platforms.
7040
7041         * mini-ppc.h (MONO_ARCH_USE_SIGACTION): Do not define this for all
7042         PPC targets as sigaction does not exist on all platforms, define
7043         this on a per-platform basis.
7044
7045         Instead of erroring out if the platform is not defined, include
7046         mini-ppc-os.h, and expect that the OS specific setting provides
7047         the required information.   
7048
7049 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
7050
7051         * aot-compiler.c: Fix --enable-minimal=aot.
7052
7053 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
7054
7055         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Fix the
7056         previous change.
7057
7058 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
7059
7060         * exceptions-arm.c: Fix warnings.
7061
7062         * tramp-arm.c aot-compiler.c unwind.h unwind.c: Implement xdebug support for
7063         ARM.
7064
7065         * mini-x86.c: Fix --enable-minimal=jit build.
7066
7067         * mini.c: Really fix --enable-minimal=jit build.
7068         
7069         * mini.c (construct_object_context_for_method): Move this outside
7070         the DISABLE_JIT block to fix the --enable-minimal=jit build.
7071
7072         "Backported" of r124984 from 2.0 branch.
7073         
7074         * aot-compiler.c aot-runtime.c: Add full-aot support delegate BeginInvoke/EndInvoke.
7075
7076         "Backport" of r124977 + r124978 from 2.0 branch.
7077         
7078         * exceptions-arm.c (mono_arm_throw_exception_by_token): New helper function
7079         to avoid calling mono_exception_from_token () from the throw trampoline.
7080         (mono_arch_get_throw_exception_generic): call throw_exception_by_token
7081         for throwing corlib exceptions, this fixes full-aot support for corlib
7082         exceptions.
7083
7084         * aot-compiler.c (compile_method): Make a copy of cfg->locals to fix the build.
7085
7086 2009-01-29  Miguel de Icaza  <miguel@novell.com>
7087
7088         * mini-darwin.c, mini-windows.c, mini-posix.c: Commit the first
7089         part of the changes to split the code in mini into operating
7090         system specific files.
7091
7092         This patch was done by copying mini.c to the respective files to
7093         preserve SVN history.
7094
7095 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
7096
7097         * aot-compiler.c (emit_method_dwarf_info): Add minimal support for locals.
7098
7099 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
7100
7101         * method-to-ir.c (mono_method_to_ir): Avoid generic sharing for calls made to
7102         remoting-invoke-with-check wrappers of shared methods.
7103
7104         * mini.c (print_jit_stats): Print out major gc count/time for libgc too.
7105
7106 2009-01-27  Mark Probst  <mark.probst@gmail.com>
7107
7108         * method-to-ir.c (emit_stloc_ir): Only apply the reg-reg move
7109         optimization if the top of stack is the last instruction in the
7110         bblock.  Otherwise it might have been used after its definition.
7111         Fixes #469742.
7112
7113 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
7114
7115         * mini-trampolines.c (mono_magic_trampoline): Print out the caller
7116         method as well when get_vcall_slot () fails to match a code sequence.
7117
7118         * mini-arm.c: Fix the android build, which doesn't have
7119         __aeabi_read_tp.
7120
7121 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
7122
7123         * mini-s390x.c: Remove a stray declaration of emit_sig_cookie () to fix
7124         the s390x build.
7125
7126 2009-01-26  Rodrigo Kumpera  <rkumpera@novell.com>
7127
7128         * unwind.c (mono_unwind_cleanup): Don't crash if cached_info is NULL.
7129
7130 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
7131
7132         * mini.c (mini_method_compile): Save the unwind info generated by the JIT
7133         and put its id into jinfo->used_regs. This is only used on amd64,
7134         which is currently the only platform generating unwind info.
7135
7136         * exceptions-amd64.c: Instead of unwinding based on a register mask, use
7137         the dwarf unwinder. This is required to correctly handle async exceptions
7138         like thread abort and stack overflows, which can happen while a method
7139         is in the middle of its prolog or epilog.
7140         
7141         * aot-runtime.c (mono_aot_get_unwind_info): New helper function to obtain
7142         the unwind info belonging to an AOTed method.
7143
7144         * aot-compiler.c aot-runtime.c: Save/Load the unwind info emitted by the JIT
7145         into cfg->unwind_ops.
7146         
7147         * unwind.c (mono_unwind_frame): Use <= instead of < for the loop exit check.
7148
7149         * mini.c (mini_init): Call mono_unwind_init ().
7150         (mini_cleanup): Call mono_unwind_cleanup ().
7151
7152         * unwind.c: Add functions for managing a set of unwind info entries, allowing
7153         unwind info to be shared between methods.
7154
7155         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info for the registers
7156         saved in the LMF.
7157
7158         * exceptions-amd64.c (mono_arch_exceptions_init): Call 
7159         get_throw_pending_exception () to avoid initialization races.
7160
7161         * mini-exceptions.c (mono_exceptions_init): Call an arch specific
7162         mono_arch_exceptions_init () function.
7163
7164         * mini.h (MONO_INST_NEW): Remove duplicate setting of cil_code.
7165
7166 2009-01-25  Zoltan Varga  <vargaz@gmail.com>
7167
7168         * mini.c (mono_get_domain_intrinsic): New helper function.
7169         (mono_get_thread_intrinsic): Ditto.
7170
7171         * mini-arm.c mini-ia64.c: Use the new helper functions.
7172         
7173         * method-to-ir.c (mono_method_to_ir): Fix the comment for
7174         the last constrained_call change, since it is needed in the non-AOT
7175         case as well.
7176
7177         * mini-arm.c: Implement OP_TLS_GET on arm eabi linux.
7178         
7179         * mini-arm.c (mono_arch_emit_prolog): Add an inlined version of 
7180         mono_get_lmf_addr () on arm eabi linux.
7181
7182 2009-01-24  Zoltan Varga  <vargaz@gmail.com>
7183
7184         * mini-amd64.c (mono_arch_get_vcall_slot): Handle yet another
7185         code sequence which matches a non-virtual call.
7186
7187 2009-01-23  Mark Probst  <mark.probst@gmail.com>
7188
7189         * mini-ppc.c (mono_arch_context_get_int_reg): Allow access to the
7190         stack pointer (r1).
7191
7192 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
7193
7194         * aot-compiler.c aot-runtime.c: Treat delegate-invoke wrappers similarly to
7195         runtime-invoke wrappers, since they are also shared based on signature.
7196
7197 2009-01-22  Mark Probst  <mark.probst@gmail.com>
7198
7199         * mini-exceptions.c (ves_icall_get_frame_info): Fetch the generic
7200         info from the (correct) context.
7201
7202 2009-01-22  Zoltan Varga  <vargaz@gmail.com>
7203
7204         * unwind.c (mono_unwind_frame): Remove a stray g_free ().
7205         
7206         * unwind.c (mono_unwind_frame): New function to unwind through a frame
7207         using dwarf unwinding info. Not yet used.
7208
7209         * mini.c (mini_init): When using xdebug, disable freeing of domains.
7210
7211 2009-01-21  Mark Probst  <mark.probst@gmail.com>
7212
7213         * mini-ppc.c (mono_arch_delegate_invoke_impl): Return function
7214         descriptors.
7215
7216         * mini-trampolines.c (mono_delegate_trampoline): Remove the PPC64
7217         special case and handle mono_arch_delegate_invoke_impl() returning
7218         function descriptors.
7219
7220         * tramp-ppc.c (mono_arch_create_trampoline_code): Delegate
7221         trampolines return function descriptors, too.
7222
7223 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
7224
7225         * method-to-ir.c (handle_alloc): Avoid generic instances in the
7226         out_of_line optimization.
7227
7228 2009-01-21  Martin Baulig  <martin@ximian.com>
7229
7230         * mini.h
7231         (MonoCompile): Added `disable_deadce_vars' to disable removing
7232         unused variables.
7233
7234         * mini.c
7235         (mini_method_compile): Set `cfg->disable_deadce_vars' when running
7236         inside the debugger.
7237
7238         * liveness.c (mono_analyze_liveness): Don't remove any unused
7239         variables if `cfg->disable_deadce_vars' is set.
7240
7241 2009-01-21  Mark Probst  <mark.probst@gmail.com>
7242
7243         * method-to-ir.c: Only apply exception constructor optimization if
7244         the the method actually belongs to an exception class.  Fixes
7245         #467456.
7246
7247 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
7248
7249         * mini-trampolines.c (mono_delegate_trampoline): Put back the previous
7250         change inside a #ifdef __mono_ppc64__.
7251
7252         * aot-compiler.c (compile_method): Remove the previous limitation.
7253
7254         * method-to-ir.c (method-to-ir.c): Add support for the constrained prefix
7255         on type variables in AOTed code.
7256         
7257         * aot-compiler.c (compile_method): Skip generic methods having type 
7258         constraints on their generic parameters.
7259
7260         * aot-compiler.c (compile_method): Check for methods which cannot be
7261         encoded inside RGCTX_FETCH patches as well.
7262
7263         * mini-exceptions.c (mono_print_thread_dump): Fix the windows
7264         build.
7265
7266 2009-01-20  Mark Probst  <mark.probst@gmail.com>
7267
7268         * method-to-ir.c: Force the vtable variable in shared generic code
7269         for the case that they might show up on a stack trace where they
7270         are needed.
7271
7272         * mini-exceptions.c: Save and use generic sharing info as well as
7273         IP in stack traces to resolve shared generic instantiations.
7274
7275 2009-01-20  Zoltan Varga  <vargaz@gmail.com>
7276
7277         * mini-trampolines.c (mono_delegate_trampoline): Revert the change which
7278         added a mono_get_addr_from_ftnptr () as it breaks the ia64 build.
7279
7280 2009-01-20  Mark Probst  <mark.probst@gmail.com>
7281
7282         * method-to-ir.c: Do generic sharing for array constructors.
7283
7284 2009-01-20  Rodrigo Kumpera  <rkumpera@novell.com>
7285
7286         * mini-exceptions.c (mono_print_thread_dump): Add information
7287         about the thread state using wapi_current_thread_desc.
7288
7289 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
7290
7291         * basic-simd.cs: Tests for the new constructors. 
7292
7293 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
7294
7295         * mini-ops.h: Added OP_EXPAND_*
7296
7297         * cpu-x86.md: Same.
7298
7299         * mini-x86.c (mono_arch_output_basic_block): Same.
7300         
7301         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for single element constructors.
7302
7303 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
7304
7305         * iltests.il.in: Add a test for #467385.
7306
7307 2009-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
7308
7309         * mini.c (mini_thread_cleanup): Don't cleanup TLS storage if the
7310         thread been cleaned up is not the same currently in execution.
7311
7312         Fixes appdomain-unload crashes on windows, osx and linux variants
7313         without the __thread keyword.
7314
7315 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
7316
7317         * mini-arm.c (mono_arch_flush_icache): Applied patch from Koushik Dutta
7318         (koush@koushikdutta.com). Implement this for android.
7319
7320         * helpers.c (mono_disassemble_code): Avoid assembler errors if the id
7321         begins with a digit.
7322
7323         * method-to-ir.c: Call mono_gc_get_write_barrier () instead of
7324         mono_marshal_get_write_barrier ().
7325
7326 2009-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
7327
7328         * decompose.c (mono_decompose_vtype_opts): Fix the decomposition
7329         of OP_VCALL_* ops for 8 bytes vtypes on 32 bits archs and platorms
7330         that pass them on a register pair.
7331
7332         This affects windows, OSX and FreeBSD. The mono/tests/handleref.exe
7333         test was crashing due to that.
7334
7335 Fri Jan 16 15:21:21 CET 2009 Paolo Molaro <lupus@ximian.com>
7336
7337         * exceptions-ppc.c: tweaks from malc (OV-Soft) to fix the size of the
7338         trampoline code. Include ucontext.h only if available.
7339
7340 2009-01-15  Mark Probst  <mark.probst@gmail.com>
7341
7342         * mini.c: mono_domain_lookup_shared_generic() takes an open method
7343         and doesn't check whether it's sharable, like it was before
7344         removing the shared generics hash.  This brings IronPython
7345         performance back to what it was before that change.
7346
7347 2009-01-14  Mark Probst  <mark.probst@gmail.com>
7348
7349         * method-to-ir.c: Handle delegate invocation optimization earlier,
7350         otherwise it would be handled (much more slowly) by the
7351         final/sealed optimization.
7352
7353 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
7354
7355         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes when the current thread or
7356         domain is not set. Fixes #465864.
7357
7358 2009-01-12  Mark Probst  <mark.probst@gmail.com>
7359
7360         * method-to-ir.c: Don't stop sharing of generic methods with catch
7361         clauses - we already handle those.
7362
7363 2009-01-12  Mark Probst  <mark.probst@gmail.com>
7364
7365         * mini.c, mini.h: lookup_generic_method() is now
7366         mono_domain_lookup_shared_generic() and uses the jit_code_hash,
7367         making the shared_generics_hash obsolete.
7368
7369 2009-01-12  Mark Probst  <mark.probst@gmail.com>
7370
7371         * mini-ppc.c, exceptions-ppc.c, cpu-ppc.md, cpu-ppc64.md: Don't
7372         use the red zone.  Make room on the stack first and then use it,
7373         not the other way around.
7374
7375 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
7376
7377         * mini.c (mini_init): Call mono_xdebug_init ().
7378
7379         * aot-compiler.c (mono_xdebug_init): Make this non-static.
7380
7381 2009-01-11  Zoltan Varga  <vargaz@gmail.com>
7382
7383         * TestDriver.cs: Add an --iter argument to run tests multiple times.
7384
7385         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Emit debug info for
7386         trampolines.
7387
7388         * aot-compiler.c (mono_save_trampoline_xdebug_info): New function to emit
7389         debug+unwind info for trampolines.
7390
7391         * mini.c (mono_create_unwind_op): New helper function.
7392
7393         * unwind.h: Add macros for emitting unwind ops without a MonoCompile.
7394
7395 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
7396
7397         * aot-compiler.c: Fix the build.
7398
7399 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
7400
7401         * Makefile.am: Update dtrace-prelink.sh location.
7402
7403 2009-01-08  Zoltan Varga  <vargaz@gmail.com>
7404
7405         * method-to-ir.c (mono_method_to_ir): Fix the check for the mscorlib ldstr 
7406         optimization. Fixes #464520.
7407
7408 2009-01-07  Bill Holmes  <billholmes54@gmail.com>
7409
7410         * mini-amd64.c : Adding code to save/restore non-volatile registers
7411            on Winx64.
7412
7413         * exceptions-amd64.c : Adding code to save/restore non-volatile 
7414           registers on Winx64.
7415
7416         Contributed under MIT/X11 license.
7417
7418 2009-01-07  Zoltan Varga  <vargaz@gmail.com>
7419
7420         * mini-arm.c (mono_arch_flush_icache): Use __GNUC_PREREQ instead of checking
7421         __GNUC_MINOR__ which can break when the major version changes.
7422
7423 2009-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
7424
7425         * basic-simd.cs: Add tests for usage of the sizeof opcode.
7426
7427 2009-01-07  Geoff Norton  <gnorton@novell.com>
7428
7429         * helpers.c:  Allow mono -v -v -v to work on darwin.
7430
7431 2009-01-05  Bill Holmes  <billholmes54@gmail.com>
7432
7433         * mini-amd64.c (mono_arch_get_vcall_slot) : Handle an additional instruction
7434           pattern. 
7435
7436         Contributed under MIT/X11 license.
7437
7438 2009-01-05  Zoltan Varga  <vargaz@gmail.com>
7439
7440         * mini.c (mono_allocate_stack_slots_full2): Use mono_class_from_mono_type
7441         instead of directly accessing type->data.klass. Fixes #462016.
7442         (mono_allocate_stack_slots_full): Ditto.
7443
7444         * mini-arm.c (mono_arch_flush_icache): Applied patch from Riku Voipio 
7445         <novell@kos.to>. Fix cache flush on kernels without OLDABI compat option.
7446
7447         * aot-compiler.c (emit_plt): Fix ARM build.
7448
7449 2009-01-04  Zoltan Varga  <vargaz@gmail.com>
7450
7451         * branch-opts.c (mono_if_conversion): Optimize this using ins->prev.
7452         
7453         * branch-opts.c (mono_if_conversion): Fix an assert introduced by the last
7454         change.
7455
7456         * branch-opts.c (mono_if_conversion): Use branch->inst_true_bb/inst_false_bb
7457         instead of bblock->out_bb [0]/[1], the two might not be the same. Fixes
7458         #463357.
7459
7460         * iltests.il.in: Add a regression test.
7461
7462 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7463
7464         * mini-codegen.c (mono_print_ins_index): Pretty print XPHI and VPHI.
7465
7466 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7467
7468         * basic-simd.cs: Add a regression test for #462457.
7469
7470 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7471
7472         * mini-ops.h: Add a definition of XPHI.
7473
7474         * mini.h (MONO_IS_PHI): Make is aware of simd instrincs. 
7475
7476         * ssa.c (op_phi_to_move): Handle XPHI.
7477
7478         * ssa.c (mono_ssa_compute): Generate a XPHI for simd intrinsics instead of VPHI.
7479
7480         Fixes #462457
7481
7482 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
7483
7484         * method-to-ir.c (mono_emit_rgctx_calli): Fix a warning.
7485
7486 2008-12-31  Geoff Norton  <gnorton@novell.com>
7487
7488         * mini-ppc.c: The prolog size allocated can be too small for darwin
7489         ppc32 under certain circumstances.  Also fix a small logic bug.
7490
7491 2008-12-29  Zoltan Varga  <vargaz@gmail.com>
7492
7493         * mini.c (mono_jit_compile_method_inner): Avoid holding the domain lock
7494         while loading AOT methods.
7495
7496         * mini-exceptions.c: Check jit_tls->class_cast_from instead of class_cast_to
7497         since only the former is nulled out after a successful cast. This prevents
7498         crashes with rethrown exceptions when using --debug=casts.
7499
7500 2008-12-24  Mark Probst  <mark.probst@gmail.com>
7501
7502         * mini.h: New macro for checking whether a method is final,
7503         i.e. whether the method or its class is marked final.
7504
7505         * method-to-ir.c: Use the new macro for all final-checks
7506         consistently.  Fixes the crash in the System.ServiceModel tests.
7507
7508 2008-12-23  Mark Probst  <mark.probst@gmail.com>
7509
7510         * mini-exceptions.c (get_exception_catch_class): Corrected another
7511         overly strict assertion.
7512
7513 2008-12-23  Mark Probst  <mark.probst@gmail.com>
7514
7515         * mini-ppc.c (mono_arch_build_imt_thunk): Save and restore r11.
7516         Clobbering it is not allowed because the caller might use it as
7517         the vtable register in the interface call.
7518
7519 2008-12-19  Mark Probst  <mark.probst@gmail.com>
7520
7521         * mini-exceptions.c (get_exception_catch_class): Corrected an
7522         overly strict assertion.
7523
7524 2008-12-18  Mark Mason  <mmason@upwardaccess.com>
7525         
7526         * method-to-ir.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P or sizeof(gpointer) when appropriate.
7527
7528         * mini.h: Move typedef to mgreg_t up above include of mini-arch.h
7529
7530         * local-propogation.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P when appropriate
7531
7532         * cpu-mips.md: correct lengths for certain long_ opcodes.
7533
7534         * mini-mips.h: Only emulate long operations when SIZEOF_REGISTER==4. Add missing func decl.
7535
7536         * 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().
7537         
7538 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
7539
7540         * exceptions-mips.c (mono_arch_find_jit_info): decode sd instructions as well when looking for registers.
7541         
7542 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
7543         
7544         * mini-mips.c (mono_arch_output_basic_block): OP_JUMP_TABLE stores patch type in inst_c1, not inst_i1.
7545         
7546 2008-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
7547
7548         * branch-opts.c (remove_block_if_useless): Even if BB0 falls through, don't add a br to the
7549         next basic block.
7550         
7551 2008-12-16  Mark Mason  <mmason@upwardaccess.com>
7552
7553         * 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
7554
7555         * 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)
7556         
7557 2008-12-15  Mark Mason  <mmason@upwardaccess.com>
7558         
7559         * trace.c (mono_trace_enter_method): correctly handle arguments smaller than the stack slot size on big endian systems.
7560         
7561 2008-12-14  Zoltan Varga  <vargaz@gmail.com>
7562
7563         * liveness.c (mono_analyze_liveness): Avoid eliminating the 'this' var in
7564         gshared code. Fixes #458947.
7565
7566         * generics.cs: Add a test.
7567
7568 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
7569         
7570         * method-to-ir.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7571         
7572         * mini-mips.c: first pass n32 code generation.
7573
7574         * mini-mips.h: datatypes and defines for n32 support.
7575
7576         * exceptions-mips.c: first pass n32 code generation.
7577         
7578         * tramp-mips.c: first pass n32 code generation.
7579         
7580         * cpu-mips.md: add long_ opcodes.
7581         
7582 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
7583
7584         * liveness.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7585
7586         * cfold.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7587         
7588         * local-propogation.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7589         
7590         * regalloc2.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7591
7592         * mini.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7593
7594         * mini-codegen.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7595
7596         * ssa.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7597
7598         * decompose.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7599
7600         * helpers.c: for mips/n32, don't pass -mips32 to objdump
7601
7602 2008-12-12  Zoltan Varga  <vargaz@gmail.com>
7603
7604         * mini-arm.c tramp-arm.c: Fix calls to mono_arch_flush_icache.
7605
7606 2008-12-12  Andres G. Aragoneses  <aaragoneses@novell.com>
7607
7608         * driver.c: Sync --help-trace with man page (EXPR,EXPR).
7609
7610 2008-12-12  Mark Probst  <mark.probst@gmail.com>
7611
7612         * mini-ppc.h, exceptions-ppc.c, tramp-ppc.c: Create function
7613         descriptors for helper functions directly in front of the code.
7614
7615 2008-12-11  Mark Probst  <mark.probst@gmail.com>
7616
7617         * method-to-ir.c: Removed an unnecessary assertion.
7618
7619 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
7620
7621         * method-to-ir.c: Merge SGEN changes from the old JIT.
7622
7623 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
7624
7625         * driver.c (compile_all_methods_thread_main): Handle failure of
7626         mono_get_method ().
7627
7628 2008-12-10  Mark Probst  <mark.probst@gmail.com>
7629
7630         * mini-ppc.c: Merged with mini-ppc64.c.
7631
7632         * mini-ppc.h: Define PPC_MINIMAL_PARAM_AREA_SIZE on all targets.
7633
7634         * Makefile.am: Use the same sources for PPC and PPC64.
7635
7636         * mini-ppc64.c: Removed.
7637
7638 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
7639
7640         * branch-opts.c (remove_block_if_useless): Extract fall through detection
7641         code to mono_bb_is_fall_through.
7642         
7643         * branch-opts.c (mono_remove_critical_edges): Same.
7644
7645 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
7646
7647         * ssa.c (fold_ins): branch opt can kill dummy switch ops so we can't
7648         expect that an OP_BR_REG will be there.
7649
7650 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
7651
7652         * branch-opts.c (remove_block_if_useless): Use MONO_IS_BRANCH_OP instead of checking
7653         for the many branch ops. The original check miss OP_BR_REG.
7654
7655         Fixes #457574.
7656         
7657 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
7658
7659         * mini-mips.h mini-mips.c exceptions-mips.c tramp-mips.c: first round of changes necessary to eventually support n32.
7660
7661 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
7662
7663         * aot-runtime.c (load_method): Avoid calling decode_exception_debug_info
7664         while holding the aot lock.
7665
7666 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
7667
7668         * mini-mips.c (mono_arch_output_basic_block): use mfc1/lwc1 instead of mfc1d/ldc1
7669         
7670 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
7671
7672         * mini.c (mini_cleanup) : Adding a call to cominterop_release_all_rcws 
7673           to release all runtime callable wrappers held by the runtime.
7674
7675         Contributed under MIT/X11 license.
7676
7677 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
7678
7679         * tramp-amd64.c (mono_arch_create_trampoline_code_full) : Increase the code size for
7680           for Winx64.
7681
7682         Contributed under MIT/X11 license.
7683
7684 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
7685
7686         * aot-runtime.c (decode_exception_debug_info): Acquire the domain
7687         lock when calling mono_domain_alloc (). Hopefully fixes #415608.
7688
7689 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
7690
7691         * cpu-mips.md: fix ckfinite length
7692
7693         * mini-mips.c: at least recognize n32 ABI when used (not yet supported)
7694         (mono_arch_lowering_pass): cleanup, rearrange for clarity
7695         (mono_arch_output_basic_block): implement OP_CKFINITE, add more asserts
7696         
7697 2008-12-08  Mark Mason   <mmason@upwardaccess.com>
7698
7699         * exceptions-mips.c (mono_arch_find_jit_info): init new_ctx with ctx, dont' call setup_context.
7700         
7701 2008-12-08  Geoff Norton  <gnorton@novell.com>
7702
7703         * tramp-amd64.c: r120895 stores RAX, so we need to increase the window
7704         size by 8 bytes as well.
7705
7706 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7707
7708         * basic-simd.cs: Fix method names for Vector16b.
7709         
7710 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7711
7712         * basic-simd.cs: Fix method names for Vector16sb.
7713
7714 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7715
7716         * basic-simd.cs: Fix method names for Vector8us.
7717         
7718 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7719
7720         * basic-simd.cs: Fix method names for Vector8s.
7721         
7722 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7723
7724         * basic-simd.cs: Fix method names for Vector4ui.
7725
7726 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7727
7728         * basic-simd.cs: Fix method names for Vector2l.
7729
7730 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7731
7732         * basic-simd.cs: Fix method names for Vector2d.
7733
7734 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7735
7736         * simd-intrinsics.c (mono_emit_simd_intrinsics): Add support for intrinsics
7737         that are extension methods.
7738
7739 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7740
7741         * basic-simd.cs: Fix method names for Vector4f.
7742
7743 2008-12-08  Zoltan Varga  <vargaz@gmail.com>
7744
7745         * mini-exceptions.c (mono_print_thread_dump): Mark threadpool threads
7746         as such. Fixes #456669.
7747
7748 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
7749
7750         * mini-mips.c (mono_arch_emit_call): narrow float arguments when passing as args.
7751         
7752 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
7753
7754         * mini-mips.c (mono_arch_lowering_pass): don't handle OP_ICONV_TO_R* or OP_R*CONST
7755         (mono_arch_emit_setret): use OP_MIPS_CVTSD to return SP floats
7756         (mono_arch_output_basic_block): simplify FP load/store, handle OP_MIPS_FBLT_UN
7757         (mips_adjust_stackframe): handle FP spills
7758                 
7759         * mini-ops.h: add mips_mtc1_s2
7760         
7761         * cpu-mips.md: add mips_mtc1_s2
7762         
7763 2008-12-07  Zoltan Varga  <vargaz@gmail.com>
7764
7765         * unwind.c: New file, move the unwind info encoding functions here from
7766         aot-compiler.c, so they could be used at runtime too.
7767
7768 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
7769
7770         * mini-mips.c (mono_arch_lowering_pass): handle OP_IMUL_IMM as well
7771         (mono_arch_output_basic_block): fix OP_LOCALLOC code generation
7772         
7773 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
7774
7775         * mini-mips.c: cleanup warnings
7776         (mono_arch_lowering_pass): handle OP_LOCALLOC_IMM
7777         (mips_adjust_stackframe): handle case of taking the address of stack locals
7778         
7779 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
7780
7781         * aot-compiler.c: Implement a few functions missing from the asm writer.
7782         (emit_method_code): Only write symbols for methods when using the bin
7783         writer, since the assembler can't deal with the characters in our method
7784         names.
7785
7786         * aot-compiler.c (is_plt_patch): ICALL_ADDR is also a plt patch.
7787
7788         * method-to-ir.c (mono_method_to_ir): Transform aotconst+calli into a direct
7789         call.
7790
7791         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Rework the code
7792         a bit to also restore %rax.
7793
7794 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7795
7796         * mini-ppc.c: Some simple merges from mini-ppc64.c.
7797
7798 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
7799
7800         * ssa.c (mono_ssa_compute): Only add an implicit reference at start for
7801         arguments.
7802
7803 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7804
7805         * exceptions-ppc.c: Merged with exceptions-ppc64.c.
7806
7807         * mini-ppc.c, mini-ppc.h: Remove PPC_STACK_ALIGNMENT and use
7808         MONO_ARCH_FRAME_ALIGNMENT.  Struct for PPC64 function descriptors.
7809
7810         * exceptions-ppc64.c: Removed.
7811
7812         * Makefile.am: Use exceptions-ppc.c instead of exceptions-ppc64.c.
7813
7814 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7815
7816         * tramp-ppc.c, mini-ppc.c, mini-ppc.h: Merged tramp-ppc.c with
7817         tramp-ppc64.c.
7818
7819         * Makefile.am: Use tramp-ppc.c instead of tramp-ppc64.c.
7820
7821         * tramp-ppc64.c: Removed.
7822
7823 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
7824
7825         * aot-compiler.c (add_generic_instances): Skip non-generic classes in
7826         the TYPESPEC table.
7827
7828 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7829
7830         * mini-ppc.h: Merged mini-ppc64.h with mini-ppc.h.
7831
7832         * exceptions-ppc64.c, tramp-ppc64.c, mini-arch.h, Makefile.am: Use
7833         mini-ppc.h instead of mini-ppc64.h.
7834
7835         * mini-ppc64.h: Removed.
7836
7837 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7838
7839         * mini-mips.c: introduce USE_LDC_SDC: use ldc1/sdc1 to load/store doubles, disabled by default
7840         
7841         * mini-mips.c (mono_arch_emit_outarg_vt): fix offset calculation for memcpy in structure passing.
7842         
7843 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7844
7845         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c:
7846         Removed FIRST/LAST_[GF]REG macros, to make merging PPC64 with PPC
7847         code easier.
7848
7849 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
7850
7851         * basic-simd.cs: Tests for operator == and != on  Vector8us and Vector16b.
7852
7853 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
7854
7855         * simd-intrinsics.c: Add support for operator == and != to Vector8(u)s and Vector16(s)b.
7856
7857 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
7858
7859         * basic-simd.cs: Tests for operator == and != on Vector4f.
7860
7861 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
7862
7863         * simd-intrinsics.c (simd_intrinsic_emit_equality): Adapt to support Vector4f.
7864
7865         * simd-intrinsics.c: Kill useless enum.
7866
7867 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7868
7869         * cpu-mips.md: add long_conv_to_ovf_i4_2
7870         * mini-mips.c: update/add various _OVF_ opcodes to fix test failures
7871
7872 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7873
7874         * mini-mips.c: ifdef protect automatic promotions of R4 to R8.
7875         
7876         * mini-mips.c (mono_arch_emit_setret): handle R4 case with FCONV_TO_R4 instead of FMOVE
7877
7878 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7879
7880         * mini-mips.c (mono_arch_output_basic_block): fix codegen for OP_OR_IMM/OP_IOR_IMM
7881         
7882 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
7883
7884         * basic-simd.cs: Add tests for new methods.
7885
7886 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
7887
7888         * simd-intrinsics.c: Add support for operator == and !=
7889         on Vector4(u)i.
7890
7891         * simd-methods.h: Add SN_op_Inequality and SN_op_Equality.
7892
7893 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
7894
7895         * simd-intrinsics.c: Remove ExtractByteMask intrinsics.
7896
7897 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
7898
7899         * aot-compiler.c (add_wrappers): Add pinvoke wrappers.
7900
7901         * mini.c (mono_resolve_patch_target): Allow pinvoke methods in 
7902         MONO_PATCH_INFO_ICALL_ADDR.
7903
7904         * aot-runtime.c (MonoAotFileInfo): Correct order of fields.
7905
7906         * aot-compiler.c: Resurrect full-aot support.
7907
7908 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7909
7910         * mini-mips.c (mono_arch_lowering_pass): handle OP_COMPARE and OP_ICOMPARE
7911         
7912 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7913
7914         * mini-mips.c (mono_arch_output_basic_block): fix OP_IREM_UN code generation
7915         
7916 2008-12-03  Rodrigo Kumpera  <rkumpera@novell.com>
7917
7918         * basic-simd.cs: Fix tests to work under ppc.
7919         Remove tests for methods that will be removed.
7920
7921 2008-12-03  Mark Probst  <mark.probst@gmail.com>
7922
7923         * method-to-ir.c (mono_method_to_ir): Handle ldtoken of an open
7924         generic type (via a typedef or typeref) correctly.
7925
7926 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
7927
7928         * mini-trampolines.c (mono_magic_trampoline): Add some debugging code to help
7929         diagnose an assertion failure.
7930
7931 2008-12-02  Mark Probst  <mark.probst@gmail.com>
7932
7933         * tramp-ppc64.c (mono_arch_create_rgctx_lazy_fetch_trampoline):
7934         Fix trampoline size.
7935
7936         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: A few floating point
7937         conversion opcodes are implemented natively instead via emulation.
7938
7939 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
7940
7941         * cpu-mips.md: remove mips_xori
7942
7943         * mini-ops.h:  remove mips_xori
7944
7945         * mini-mips.h: replace OP_MIPS_XORI with OP_IXOR
7946
7947         * mini-mips.c (mono_arch_decompose_long_opts): Add ladd_imm, lsub, lsub_imm, lneg, lsub_ovf, lsub_ovf_un.
7948         
7949         * mini-mips.c (mono_arch_lowering_pass, mono_arch_output_basic_block): fix IXOR handling
7950         
7951 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
7952
7953         * cpu-mips.md: fix instruction lengths.
7954
7955         * mini-mips.h: define MONO_ARCH_NO_IOV_CHECK
7956
7957         * mini-mips.c: move most instruction rewriting into decompose_ops. Implement conditional branches and exceptions. Fix jump table patch handling. Implement add/sub OVF.
7958
7959         * mini-ops.h: fix slti / sltiu op profiles.
7960         
7961 2008-12-02  Martin Baulig  <martin@ximian.com>
7962
7963         * method-to-ir.c (mono_method_to_ir): Disable debugging
7964         information for the init locals block to make the debugger stop
7965         after all locals have been initalized.
7966
7967 2008-12-02  Martin Baulig  <martin@ximian.com>
7968
7969         * mini.c (mini_method_compile): Disable MONO_OPT_DEADCE when
7970         running inside the debugger.
7971
7972 2008-12-01  Zoltan Varga  <vargaz@gmail.com>
7973
7974         * mini.c (mini_method_compile): Only run local deadce if MONO_OPT_DEADCE
7975         is enabled.
7976
7977         * method-to-ir.c (mono_method_to_ir): Fix invalid code generated by the 
7978         alu->alu imm optimization which only shows if deadce is disabled.
7979
7980         * aot-compiler.c: Rename the function names for the binary and asm writers
7981         so they can coexist in the same process. Rework the xdebug code to use the
7982         asm writer. This avoids the need to call into the runtime to dump the
7983         debugging info. Add more debugging info for types.
7984
7985         * mini-<ARCH>.h: Kill MONO_ARCH_HAVE_NORMALIZE_OPCODES define.
7986
7987         * genmdesc.c genmdesc.pl mini.h: Don't put the CEE_ opcodes into the
7988         cpu description tables, they can't occur in cpu-<ARCH>.md.
7989
7990         * method-to-ir.c (mono_method_to_ir): Set the type of the value pushed on
7991         the stack in CEE_LDFLDA. Fixes #450542.
7992
7993         * generics.cs: Add a new test.
7994
7995 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
7996
7997         * mini-ops.h: updated MIPS opcodes
7998         * mini-mips.c: decompose long opts
7999         * mini-mips.h: decompose long opts
8000         
8001 2008-11-29  Mark Mason   <mmason@upwardaccess.com>
8002
8003         * cpu-mips.md: fix length on int_rem_un
8004         * mini-mips.c (mips_stackframe_adjust): fix insertion of spillvars region in MIPS stackframes.
8005         
8006 2008-11-29  Zoltan Varga  <vargaz@gmail.com>
8007
8008         * mini.h aot-runtime.c: Fix building with DISABLE_AOT.
8009
8010         * mini-codegen.c (mono_print_ins_index): Handle OP_VOIDCALL_MEMBASE.
8011
8012 2008-11-29  Martin Baulig  <martin@ximian.com>
8013
8014         * mini-exceptions.c (mono_handle_native_sigsegv): Check
8015         mono_debug_using_mono_debugger() in addition to the
8016         `no_gdb_backtrace' flag in the `MonoDebugOptions'.
8017
8018 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
8019
8020         * mini-ops.h: updated more MIPS opcodes
8021         * mini-mips.c: FP compare/branch working again, clean up last of CEE_ -> OP_ mappings
8022         * cpu-mips.md: Added MIPS versions of new FP compare/branch opcodes.
8023         
8024 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8025
8026         * mini-ppc64.c: Patch the RGCTX fetch trampoline correctly.
8027
8028 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
8029
8030         * mini-mips.c (mono_arch_emit_call): adding missing conversion to fp single when passing in integer arg register.
8031         * mini-mips.c (mips_adjust_stackframe): compensate for spill-down logic.
8032         * mini-ops.h: correct selected mips opcode entries
8033         
8034 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8035
8036         * mini-ppc64.c, mini-ppc64.h: Enable generalized IMT thunks and
8037         make them work.
8038
8039 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8040
8041         * mini-ppc64.h, tramp-ppc64.c: Make generic code sharing work.
8042
8043 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
8044
8045         * method-to-ir.c, mini-trampolines.c: protect IMG code with #ifdef MONO_ARCH_HAVE_IMT to fix compile errors.
8046         * mini-mips.c: Fixup stackframe assignments after allocation of spillvars.
8047         * mini-mips.h: disable IMT
8048         * tramp-mips.c (mono_arch_get_vcall_slot): fix offset extraction
8049         
8050 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8051
8052         * mini-ppc64.c, mini-ppc64.h: Don't emulate long ops.
8053
8054 2008-11-28  Mark Probst  <mark.probst@gmail.com>
8055
8056         * mini-ppc64.c, exceptions-ppc64.c: Several fixes.
8057
8058 2008-11-28  Zoltan Varga  <vargaz@gmail.com>
8059
8060         * method-to-ir.c (handle_isinst): Use PCONST instead of ICONST for
8061         consistency.
8062
8063 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
8064
8065         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
8066         for Set/GetVector aligned versions.
8067
8068 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
8069
8070         * basic-simd.cs: Add tests for Get/SetVector.
8071
8072 2008-11-27  Mark Probst  <mark.probst@gmail.com>
8073
8074         * mini.c: Removed g_slist_append_mempool().  Now in
8075         metadata/mempool.c.
8076
8077 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
8078
8079         * simd-intrinsics.c (mono_emit_vector_ldelema): Extract the element
8080         size properly and make the bounds check optional.
8081
8082         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
8083         for SetVector and IsAligned.
8084
8085 2008-11-27  Zoltan Varga  <vargaz@gmail.com>
8086
8087         * mini.c: Remove unused mono_normalize_opcodes () function.
8088
8089 2008-11-26  Mark Probst  <mark.probst@gmail.com>
8090
8091         * method-to-ir.c (mini_emit_inst_for_method): Small fix: we're
8092         using the new atomic add ops now.
8093
8094         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Implemented atomic
8095         add.
8096
8097 2008-11-26  Mark Probst  <mark.probst@gmail.com>
8098
8099         * mini-ppc64.c: Several fixes.
8100
8101 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8102
8103         * cpu-mips.md: added jump_table
8104         * mini-mips.c: added jump_table. Eliminate compare-imm when lowering. Remove dead function.             
8105
8106 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8107
8108         * mini-mips.c, mini-mips.h, tramp-mips.c, cpu-mips.md: Initial upgrade of MIPS port to new IR.
8109
8110 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8111
8112         * mini-ops.h: corrected a handful of MIPS opcodes.
8113
8114 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8115
8116         * aot-compiler.c: MIPS to use ELF writer
8117
8118 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
8119
8120         * mini-codegen.c: remove MIPS specific assert.
8121
8122 2008-11-25  Mark Probst  <mark.probst@gmail.com>
8123
8124         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Several
8125         fixes.  PPC64 now passes most of the runtime regressions.
8126
8127 2008-11-24  Zoltan Varga  <vargaz@gmail.com>
8128
8129         * regalloc2.c: Distinguish between use/def positions. Optimize the creation of
8130         volatile intervals a bit.
8131
8132 2008-11-24  Mark Probst  <mark.probst@gmail.com>
8133
8134         * basic-long.cs: New test case.
8135
8136 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
8137
8138         * mini.c (mini_method_compile): Disable globalra for large methods for 
8139         now.
8140
8141         * regalloc2.c (order_moves): Add fp support.
8142
8143         * branch-opts.c (mono_remove_critical_edges): Split non-critical edges whose
8144         source bblock ends with an OP_BR_REG.
8145
8146         * ratests.cs: Add a new test.
8147
8148 2008-11-23  Mark Probst  <mark.probst@gmail.com>
8149
8150         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c: Disable generic code
8151         sharing.  PPC64 now passes generics.exe.
8152
8153 2008-11-23  Mark Probst  <mark.probst@gmail.com>
8154
8155         * mini-ppc64.c: Several fixes.  PPC64 now runs iltests.exe.
8156
8157 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
8158
8159         * exceptions-x86.c (mono_arch_find_jit_info): Avoid reading uninitialized
8160         memory when mono_jit_info_table_find () can't find the method in the
8161         LMF case.
8162
8163         * aot-compiler.c (mono_save_xdebug_info): Emit complete debug info for
8164         AOTed code too.
8165         
8166         * aot-compiler.c (mono_save_xdebug_info): Make this work with the assembly
8167         writer too.
8168
8169 2008-11-23  Mark Probst  <mark.probst@gmail.com>
8170
8171         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, cpu-ppc64.md:
8172         Several fixes.  PPC64 now runs exceptions.exe and
8173         devirtualization.exe.
8174
8175 2008-11-22  Mark Probst  <mark.probst@gmail.com>
8176
8177         * mini-ppc64.c, tramp-ppc64.c: Small fixes.  PPC64 now runs
8178         arrays.exe and basic-math.exe.
8179
8180 2008-11-22  Mark Probst  <mark.probst@gmail.com>
8181
8182         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c,
8183         cpu-ppc64.md: Several fixes.  PPC64 now runs objects.exe.
8184
8185 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
8186
8187         * simd-intrinsics.c: Add support ArrayExtension intrinsics.
8188
8189 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
8190
8191         * method-to-ir.c: Move bounds checking macros to ir-emit.h
8192
8193         * ir-emit.h: Move macros from method-to-ir.c to here.
8194
8195 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
8196
8197         * mini-ops.h: Correct the long simd ops to use LREG.
8198
8199 2008-11-21  Zoltan Varga  <vargaz@gmail.com>
8200
8201         * mini-ops.h: Correct the dreg type of OP_LOADI8_MEMBASE.
8202         
8203         * mini-ops.h: Correct the dreg type of a few long opcodes.
8204
8205         * mini-amd64.h: Applied patch from Mihai Chelaru <kefren@ngnetworks.ro>.
8206         Add netbsd support.
8207
8208 Fri Nov 21 12:52:23 CET 2008 Paolo Molaro <lupus@ximian.com>
8209
8210         * mini-ppc.c: remove negative stack references in epilog
8211         for platforms that don't support the red zone.
8212
8213 2008-11-21  Mark Probst  <mark.probst@gmail.com>
8214
8215         * mini-ppc64.h, cpu-ppc64.md: Fixed caller/callee saved floating
8216         point regs.  Now PPC64 passes basic-calls.exe.
8217
8218 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8219
8220         * basic-simd.cs: Add tests for accessors of Vector2l.
8221
8222 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8223
8224         * mini-ops.h: Added OP_INSERTX_I8_SLOW,.
8225
8226         * mini-x86.c (mono_arch_decompose_long_opts): Decompose OP_INSERTX_I8_SLOW.
8227         
8228         * simd-intrinsics.c: Add support for Vector2l and Vector2ul.
8229
8230 2008-11-21  Mark Probst  <mark.probst@gmail.com>
8231
8232         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Several fixes.  Now
8233         PPC64 passes basic-long.exe.
8234
8235 2008-11-20  Mark Probst  <mark.probst@gmail.com>
8236
8237         * decompose.c: Decompose carry and overflow add on PPC64 like on
8238         other 64 bit archs.  Don't decompose sub at all on PPC64.
8239
8240         * mini-ppc64.c, exceptions-ppc64.c, tramp-ppc64.c, cpu-ppc64.md:
8241         Several fixes and new opcodes.  Now PPC64 runs (but doesn't pass)
8242         basic-long.exe.
8243
8244 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8245
8246         * basic-simd.cs: Add tests for accessors of Vector2d.
8247
8248 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8249
8250         * mini-ops.h: Added OP_INSERTX_R8_SLOW,.
8251
8252         * cpu-x86.md: Same.
8253
8254         * mini-x86.c (mono_arch_output_basic_block): Same.
8255         
8256         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector2d.
8257
8258 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8259
8260         * basic-simd.cs: Add tests for accessors of Vector4f.
8261
8262 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8263
8264         * mini-ops.h: Added OP_INSERTX_R4_SLOW,.
8265
8266         * cpu-x86.md: Same.
8267
8268         * mini-x86.c (mono_arch_output_basic_block): Same.
8269         
8270         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4f.
8271
8272 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8273
8274         * basic-simd.cs: Add tests for accessors of Vector4i and Vector4ui.
8275
8276 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8277
8278         * mini-ops.h: Added OP_INSERTX_I4_SLOW,.
8279
8280         * cpu-x86.md: Same.
8281
8282         * mini-x86.c (mono_arch_output_basic_block): Same.
8283         
8284         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4i and Vector4ui.
8285
8286 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8287
8288         * cpu-x86.md: Use reasonable sizes for extractx_u2 and insertx_u1_slow.
8289
8290 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8291
8292         * simd-intrinsics.c: Enable setters for Vector16sb.
8293
8294 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
8295
8296         * mini-ops.h: Added OP_EXTRACTX_U2, OP_INSERTX_U1_SLOW.
8297
8298         * cpu-x86.md: Same.
8299
8300         * mini-x86.c (mono_arch_output_basic_block): Same.
8301         
8302         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector16b.
8303
8304 2008-11-19  Rodrigo Kumpera  <rkumpera@novell.com>
8305
8306         * simd-intrinsics.c: Implement setter for Vector8us.
8307
8308 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
8309
8310         * aot-compiler.c (mono_save_xdebug_info): Emit correct location info
8311         for dead variables.
8312
8313 Wed Nov 19 18:27:41 CET 2008 Paolo Molaro <lupus@ximian.com>
8314
8315         * mini-ppc.c: remove references to the red zone in the prolog
8316         (for systems that don't support it).
8317
8318 2008-11-19  Mark Probst  <mark.probst@gmail.com>
8319
8320         * cpu-ppc64.md: Fixed a few instruction lengths.
8321
8322         * mini-ppc64.c: Don't emit SETLRET.  PPC64 passes basic-float.exe,
8323         now.
8324
8325 2008-11-19  Mark Probst  <mark.probst@gmail.com>
8326
8327         * mini-ppc64.c, cpu-ppc64.md: Fixed some opcodes.  PPC64 passes
8328         basic.exe now.
8329
8330 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
8331
8332         * aot-compiler.c (mono_save_xdebug_info): Add more parameter types.
8333
8334 2008-11-18  Rodrigo Kumpera  <rkumpera@novell.com>
8335
8336         * mini-ops.h: Added OP_INSERT_I2.
8337
8338         * cpu-x86.md: Same.
8339
8340         * mini-x86.c (mono_arch_output_basic_block): Same.
8341         
8342         * simd-intrinsics.c: Implement setter for Vector8s.
8343
8344         * simd-methods.h: Add the names of get setters of Vector8s.
8345
8346 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
8347
8348         * aot-compiler.c (mono_save_xdebug_info): Add support for parameters.
8349         
8350         * aot-compiler.c (mono_save_xdebug_info): Add preliminary support for
8351         parameters.
8352
8353         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
8354
8355 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8356
8357         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Changes
8358         for PPC64.  An empty program runs now.
8359
8360 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
8361
8362         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
8363
8364         * aot-compiler.c mini.c mini.h: Add a JIT debugging mode modelled after
8365         a similar mode in Kaffe: When the the MONO_XDEBUG env var is set, debugging
8366         info for JITted code is emitted into a shared library, loadable into gdb.
8367
8368 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8369
8370         * Makefile.am: Changes to build PPC64.
8371
8372         * mini-arch.h: Include mini-ppc64.h on PPC64.
8373
8374 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8375
8376         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Updated with changes
8377         in PPC code up to r119147.
8378
8379 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8380
8381         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
8382         cpu-ppc64.md: Changes for PPC64.
8383
8384         Based on code submitted by andreas.faerber@web.de at
8385         https://bugzilla.novell.com/show_bug.cgi?id=324134 under the
8386         X11/MIT license.
8387
8388 2008-11-18  Mark Probst  <mark.probst@gmail.com>
8389
8390         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
8391         cpu-ppc64.md: Copied from the corresponding PPC files from
8392         r118846.
8393
8394 2008-11-18  Scott Peterson  <lunchtimemama@novell.com>
8395
8396         * mini-ops.h: Added OP_ROUND.
8397
8398         * cpu-x86.md: Added round.
8399
8400         * mini-x86.c: Added support for intrinsicing Math.Round (double).
8401
8402         * basic-math.cs: Added test_0_round to test rounding.
8403
8404         Contributed under MIT/X11 license.
8405
8406 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
8407
8408         * aot-compiler.c : Fix the Winx64 build.
8409
8410         Contributed under MIT/X11 license.
8411
8412 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
8413
8414         * mini-x86.c (mono_arch_output_basic_block): Use movsd instead of monvups
8415         in OP_EXTRACT_R8 to avoid possible stack corruption.
8416
8417 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
8418
8419         * mini-ops.h: Added OP_EXTRACT_R8/I8.
8420
8421         * cpu-x86.md: Added extract_r8.
8422
8423         * mini-x86.c (mono_arch_output_basic_block): Emmit OP_EXTRACT_R8.
8424         
8425         * mini-x86.c: Added mono_arch_decompose_long_opts to break OP_EXTRACT_I8 into
8426         a couple of OP_EXTRACT_I4.
8427
8428         * mini-x86.h: Define MONO_ARCH_HAVE_DECOMPOSE_LONG_OPTS if simd is enabled.
8429
8430         * simd-intrinsics.c: Implement getters for Vector2l/2ul/2d.
8431
8432 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
8433
8434         * simd-intrinsics.c (vector2l_intrinsics): CompareGreaterThan requires sse 4.2
8435         and not 4.1. 
8436
8437 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
8438
8439         * method-to-ir.c (handle_delegate_ctor): Emit the address of the delegate
8440         trampoline as an AOT const of the proper type instead of MONO_PATCH_INFO_ABS.
8441
8442         * mini.c (mono_codegen): Remove the handling of delegate trampolines, they
8443         are not needed any more.
8444
8445         * mini.h: Remove the unused INS_LIST macros.
8446
8447         * mini.c (mini_method_compile): Remove a disable globalra case which is no
8448         longer needed.
8449
8450         * *.h *.c: Remove duplicate MonoInst emission macros, use the ones in
8451         ir-emit.h.
8452
8453         * regalloc.h *.c: Remove references to mono_regstate_next_int (), use
8454         mono_alloc_ireg () instead.
8455
8456         * mini-<ARCH>.c: Include ir-emit.h. Remove duplicate MonoInst emission
8457         macros.
8458
8459         * mini-amd64.c (emit_load_volatile_arguments): Removed, not needed
8460         on amd64.
8461
8462         * aot-runtime.c (load_aot_module): Disable AOT when running under
8463         CAS.
8464
8465         * mini-amd64.h: Change the monitor fastpath defines to check for
8466         !PLATFORM_WIN32 so they work on *bsd too.
8467
8468         * mini.h mini.c mini-hhpa.c: Remove more unused code.
8469
8470         * mini-s390.c mini-s390x.c: Remove !cfg->new_ir code.
8471
8472         * mini.h (MonoCompile): Remove new_ir flag.
8473
8474         * regalloc.h regalloc.c: Remove unused code.
8475
8476         * cpu-*.md: Remove more unused opcodes.
8477
8478         * simple-cee-ops.h simple-mini-ops.h: Removed.
8479
8480         * mini-ops.h *.c cpu-<ARCH>.md: Remove more unused opcodes.
8481         
8482 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
8483
8484         * aliasing.h: Removed.
8485
8486         * *.c: Remove references to aliasing.h and inssel.h.
8487
8488         * mini.c: Remove additional unused functions.
8489
8490         * mini-ops.h cpu-*.md: Remove unused opcodes.
8491
8492 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
8493
8494         Remove the old JIT code.
8495
8496         * inssel*.brg: Removed.
8497
8498         * ssa.c abcremoval.c aliasing.c: Removed.
8499
8500         * ssa2.c: Renamed to ssa.c.
8501
8502         * abcremoval2.c: Renamed to abcremoval.c.
8503
8504         * *.c: Removed all !cfg->new_ir code.
8505
8506         * mini-<ARCH>.c: Removed mono_arch_call_opcode (), 
8507         mono_arch_emit_this_vret_args (), and mono_arch_get_inst_for_method ().
8508
8509         * mini.c: Removed the old mono_method_to_ir () and all the code used by it.
8510         
8511 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
8512
8513         * aot-compiler.c aot-runtime.c: Emit most of the non-table data in a structure
8514         to simplify the code and cut back on the number of global symbols in the AOT
8515         file.
8516         
8517         * aot-compiler.c aot-runtime.c: Get rid of the unused plt_jump_table.
8518
8519 2008-11-15  Zoltan Varga  <vargaz@gmail.com>
8520
8521         * aot-runtime.c aot-compiler.c: Unify the plt_jump_table/plt_info tables
8522         with the got/got_info tables.
8523
8524         * mini.h: Bump AOT file format version.
8525         
8526         * unwind.h: New file, contains definitions for stack unwinding.
8527
8528         * mini.c (mono_emit_unwind_op): New helper function to append an unwind op
8529         to cfg->unwind_ops.
8530         
8531         * aot-compiler.c: Generalize the emitting of unwind information to use the
8532         information in cfg->unwind_ops.
8533
8534         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info.
8535
8536         * aot-compiler.c: Emit dwarf unwind information so gdb can unwind through
8537         AOT method frames. Enable writing symbols for methods by default.
8538
8539 2008-11-14  Rodrigo Kumpera  <rkumpera@novell.com>
8540
8541         * simd-intrinsics.c (simd_intrinsic_emit_getter): Generalize this code
8542         and make it work with vectors of element sizes 1, 2 and 4.
8543
8544         * simd-intrinsics.c: Enable getter for all vectors with element size
8545         1, 2 or 4.
8546
8547         * simd-methods.h: Add the names of other getters.
8548
8549         * mini-ops.h: Added OP_EXTRACT_I2/U2/I1/U1.
8550
8551         * cpu-x86.md: Same.
8552
8553         * mini-x86.c: Same.
8554
8555 Fri Nov 14 15:54:18 CET 2008 Paolo Molaro <lupus@ximian.com>
8556
8557         * mini-ppc.h: portability fix.
8558
8559 Fri Nov 14 15:39:50 CET 2008 Paolo Molaro <lupus@ximian.com>
8560
8561         * mini-ppc.h, mini-ppc.c: avoid using the red zone as some kernels are
8562         buggy and will overwrite it.
8563
8564 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
8565
8566         * aot-compiler.c: Add functionality to emit local symbols to the elf writer.
8567         Use it to emit local symbols for all methods so AOTed methods show up with
8568         their full name in gdb/valgrind output.
8569
8570 Fri Nov 14 12:56:27 CET 2008 Paolo Molaro <lupus@ximian.com>
8571
8572         * mini-ppc.c: portability fixes.
8573
8574 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
8575
8576         * mini-trampolines.c (mono_magic_trampoline): Move the patching of plt
8577         entries out of the if (!generic_shared...) code so it is always done.
8578         (mono_class_init_trampoline): Do the patching when running under valgrind
8579         too, newer versions of valgrind have no problems with it.
8580
8581 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
8582
8583         * aot-compiler.c (emit_writeout): Rework this to make it easier to add
8584         further sections.
8585
8586 2008-11-13  Mark Probst  <mark.probst@gmail.com>
8587
8588         * mini-ppc.c, cpu-ppc.md: Reserve space for the parameter area in
8589         filters.
8590
8591 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8592
8593         * simd-intrinsics.c: Add getter support for Vector4i and Vector4ui. 
8594
8595 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8596
8597         * mini-ops.h: Kill diplicated ops OP_SHUFLEPS.
8598
8599         * cpu-x86.md: Same.
8600
8601         * mini-x86.c: Same.
8602
8603         * simd-intrinsics.c: Same.
8604
8605 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8606
8607         * simd-intrinsics.c: Enable constructor intrinsics for all types.
8608
8609 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8610
8611         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Generalize this method
8612         to work with more Vector types.
8613
8614 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8615
8616         * simd-intrinsics.c (simd_intrinsic_emit_ctor): If the target is already a pointer
8617         store the elemens directly instead of using and intermediate.
8618
8619 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
8620
8621         * mini-amd64.c (emit_call_body): Avoid aligning call sites in AOTed code.
8622
8623         * tramp-x86.c (mono_arch_create_trampoline_code): Rework the return sequence
8624         to preserve %eax for aot plt trampolines.
8625
8626         * aot-compiler.c (compile_method): Don't skip synchronized methods.
8627         (encode_method_ref): Flag synchronized methods so they won't go through
8628         the AOT trampoline.
8629
8630         * aot-compiler.c: Additional work to support AOTing synchronized methods/
8631         wrappers.
8632
8633         * cpu-ia64.md (jmp): Increase max length.
8634
8635 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
8636
8637         * aot-runtime.c (load_method): Avoid calling runtime_class_init () for
8638         open generic classes.
8639
8640         * aot-compiler.c: Enable the ELF writer on ELF platforms.
8641
8642         * method-to-ir.c (mono_method_to_ir2): Revert the last change to the
8643         box+brtrue optimization since it causes test failures on x86.
8644
8645 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
8646
8647         * mini-ops.h: Remove OP_PUSH_R4 and OP_LOADX_STACK.
8648
8649         * cpu-x86.md: Same.
8650
8651         * mini-x86.c: Same.
8652
8653         * mini.h (struct MonoCompile): Add simd_ctor_var to be used as storage
8654         for simd ctor values. 
8655
8656         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Use simd_ctor_var for the constructor
8657         instead of directly pushing the values on stack. This saves about 15 bytes of generated code.
8658
8659 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
8660
8661         * simd-methods.h: Rename SubWithSaturation, ArithmeticRightShift and
8662         LogicalRightShift.
8663
8664         * simd-instrincs.c: Same.
8665
8666         * basic-simd.cs: Same.
8667
8668 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
8669
8670         * ratests.cs: Add more tests.
8671
8672         * regalloc2.c (add_spill_code): Handle more corner cases.
8673
8674 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
8675
8676         * regalloc2.c (INS_POS_INTERVAL): Decrease this to 8 to avoid overflows.
8677         (update_liveness): Avoid holes in the liveness ranges of hregs if they are
8678         both the source an destination of an instruction.
8679
8680 Tue Nov 11 19:30:50 CET 2008 Paolo Molaro <lupus@ximian.com>
8681
8682         * jit-icalls.c, local-propagation.c, mini.c, ssa.c, ssapre.c, trace.c,
8683         wapihandles.c: more portability changes.
8684
8685 Tue Nov 11 18:56:33 CET 2008 Paolo Molaro <lupus@ximian.com>
8686
8687         * aot-compiler.c, aliasing.c, abcremoval.c: portability changes.
8688         * mini.c mini.h, aot-runtime.c: the aot segfault-handling code is not
8689         safe to execute in a signal handler and the kernel provides better
8690         the info in /proc/self/smaps. Avoid the assert on sigaction during
8691         cleanup.
8692
8693 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
8694
8695         * method-to-ir.c (mono_method_to_ir2): In the box+brtrue optimization, only
8696         do the bblock linking hack if it is actually needed.
8697
8698         * Makefile.am (patch-libtool): New helper target to patch libtool to speed
8699         up linking.
8700
8701         * liveness.c (ENABLE_LIVENESS2): Reenable this for 64 bit archs as the
8702         crash problem is fixed.
8703
8704         * branch-opts.c (mono_remove_critical_edges): Link up newly added
8705         bblocks.
8706
8707         * mini.c (mini_method_compile): Compute unreachable bblocks properly even
8708         for catch clauses.
8709         (mini_method_compile): Set the starting value of next_vreg to 
8710         MAX_IREGS + MAX_FREGS when using globalra.
8711
8712         * method-to-ir.c (mono_method_to_ir2): Mark bblocks starting
8713         filter clauses with BB_EXCEPTION_HANDLER.
8714
8715         * regalloc2.c (assign_spill_slots): Set cfg->rgctx_var.
8716
8717 2008-11-10  Mark Probst  <mark.probst@gmail.com>
8718
8719         * mini-x86.c (mono_arch_get_argument_info): Don't align argument
8720         space for stdcall.  Fixes regressions on Win32.
8721
8722 2008-11-10  Zoltan Varga  <vargaz@gmail.com>
8723
8724         * regalloc2.c (handle_reg_constraints): Avoid adding code to unreachable
8725         bblocks.
8726         (linear_scan): Remove an assert which doesn't seem to be needed.
8727
8728         * local-propagation.c (mono_local_deadce): Avoid a call to
8729         MONO_DELETE_INS which would screw up the instruction linking.
8730
8731         * mini.c (mono_decompose_op_imm): Make this work with globalra.
8732
8733         * regalloc2.c: Upgrade to work the current JIT code.
8734
8735 2008-11-09  Zoltan Varga  <vargaz@gmail.com>
8736
8737         * method-to-ir.c (inline_method): Merge more basic blocks to help the AOT
8738         case.
8739
8740         * aot-runtime.c: Remove some dead code.
8741
8742         * tramp-arm.c: Use 'code' as the runnning pointer in code generation for
8743         consistency.
8744         (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Implement aot support.
8745
8746         * aot-runtime.c (load_named_code): Decode the offset of lazy fetch
8747         trampolines using sscanf since atoi doesn't work on large unsigned values.
8748
8749         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): 
8750         Initialize code_size.
8751
8752 2008-11-08  Mark Probst  <mark.probst@gmail.com>
8753
8754         * method-to-ir.c (mini_emit_inst_for_method): Make
8755         Interlocked.CompareExchange work for Int arguments on 32 bit
8756         archs, as well.
8757
8758 2008-11-07  Mark Probst  <mark.probst@gmail.com>
8759
8760         * method-to-ir.c (mono_method_to_ir2): Fixed a funny commit error.
8761
8762 2008-11-06  Bill Holmes  <billholmes54@gmail.com>
8763
8764         * main.c Fix MSVC build.
8765
8766         Contributed under MIT/X11 license.
8767
8768 2008-11-06  Mark Probst  <mark.probst@gmail.com>
8769
8770         * mini-x86.c (mono_arch_allocate_vars): Make sure locals that need
8771         alignment larger than 8 bytes are aligned correctly, too.
8772
8773         * mini.c: Honor the min_align field of MonoClass when laying out
8774         the stack.
8775
8776 2008-11-06  Zoltan Varga  <vargaz@gmail.com>
8777
8778         * method-to-ir.c (mono_method_to_ir2): Fix AOT support for CEE_SWITCH on arm.
8779
8780         * aot-compiler.c (emit_plt): Fix a warning.
8781         
8782         * aot-compiler.c: Implement ARM support in the binary writer.
8783
8784 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
8785
8786         * basic-simd.cs: Add test for getter with byref arg.
8787         Fix the naming of a few tests.
8788         Add missing checks to a test.
8789
8790 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
8791
8792         * aot-compiler.c (emit_plt): Make the arm code work with the binary writer.
8793
8794         * aot-compiler.c aot-runtime.c mini-trampolines.c tramp-amd64.c: Implement
8795         most of the full-aot support for monitor enter/exit trampolines.
8796
8797         * tramp-x86.c tramp_amd64.c: Add AOT compatible variants of the monitor
8798         enter/exit trampoline creation functions.
8799
8800         * Makefile.am: Fix the generation of buildver.h so it is not invoked during
8801         make dist.
8802
8803 Wed Nov 5 16:28:53 CET 2008 Paolo Molaro <lupus@ximian.com>
8804
8805         * mini.h, aot-compiler.c, method-to-ir.c, aot-runtime.c: remove the
8806         incorrectly added MONO_WRAPPER_MONITOR_* (in r117651-r117652) and
8807         implement the needed functionality without adding crap to the runtime.
8808
8809 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
8810
8811         * mini-trampolines.c (mono_create_monitor_enter_trampoline): Fix the
8812         non-x86 builds.
8813
8814         * mini.c (mono_build_date): New global version holding the build date in
8815         string format.
8816         
8817         * Makefile.am (buildver.c): Generate a file containing the build date.
8818
8819         * main.c: Set the build date from the generated file.
8820
8821         * mini.c (mono_get_runtime_build_info): New helper function returning build
8822         information in a string format.
8823         
8824         * driver.c (mono_main): Print the build date in --version.
8825
8826         * aot-compiler.c aot-runtime.c: Embed the build information into the AOT
8827         file when the bind-to-runtime-version option is used.
8828
8829 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
8830
8831         * simd-intrinsics.c: Fix bug when using getters and byref args. 
8832
8833 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
8834
8835         * simd-methods.h: Rename prefetch methods.
8836
8837         * simd-intrinsics.c: Same.      
8838
8839 2008-11-05  Mark Probst  <mark.probst@gmail.com>
8840
8841         * tramp-amd64.c: Enlarge the Monitor.Enter/Exit trampoline code
8842         sizes.
8843
8844 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
8845
8846         * aot-compiler.c: Use the bundled elf header files instead of depending on
8847         the system one.
8848         
8849         * aot-compiler.c (emit_symbol_diff): Allocate memory from the acfg
8850         mempool.
8851
8852         * method-to-ir.c (mono_method_check_inlining): Avoid a getenv () call
8853         on every call.
8854
8855 2008-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
8856
8857         * cpu-x86.md: Add store nta ops.
8858
8859         * mini-ops.h: Same.
8860
8861         * mini-x86.c: Same.
8862
8863         * mini.h: Add an enum for simd prefetch modes.
8864
8865         * simd-methods.h: Refactor the store_aligned code to handle multiple kinds
8866         of store. Use the changed code to support store nta.
8867
8868         * simd-intrinsics.c: Add prefetch ops for all vector types.
8869
8870 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
8871
8872         * aot-compiler.c: Add an option for JIT compiling the methods by multiple 
8873         threads.
8874         
8875         * aot-compiler.c: Use statically allocated buffers for constructing symbol 
8876         names.
8877
8878         * aot-runtime.c aot-compiler.c: Add support for the MONITOR_ENTER/EXIT
8879         trampolines.
8880
8881 2008-11-04  Mark Probst  <mark.probst@gmail.com>
8882
8883         * mini-x86.c: Fixed commit.
8884
8885 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
8886
8887         * aot-compiler.c (emit_plt): Align the plt section only on x86.
8888
8889 2008-11-04  Mark Probst  <mark.probst@gmail.com>
8890
8891         * mini-trampolines.c, mini.h: Two new trampolines: MONITOR_ENTER
8892         and MONITOR_EXIT, for the ASM fastpaths.
8893
8894         * method-to-ir.c: Use the ASM fastpath for Monitor.Enter/Exit if
8895         available.
8896
8897         * mini.c, patch-info.h: Signature and patch infos for
8898         Monitor.Enter/Exit trampolines.
8899
8900         * mini-amd64.c, mini-x86.c: Make emit_tls_get() non-static.
8901
8902         * tramp-amd64.c, tramp-x86.c, mini-amd64.h, mini-amd64.h:
8903         Monitor.Enter/Exit ASM fastpath for Linux.
8904
8905 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
8906
8907         * mini.c (mono_method_to_ir): Fix soft-float support in Array.Get/Set.
8908
8909         * objects.cs: Add a new test.
8910         
8911         * aot-compiler.c: Use mono_100ns_ticks () for computing the profiling info.
8912
8913         * aot-runtime.c (load_method): Run class initialization in the PLT case even
8914         if MONO_LOG_LEVEL is set.
8915
8916         * debug-mini.c (serialize_variable): Fix the encoding of dead variables.
8917
8918         * aot-runtime.c (mono_aot_get_method): Skip out-of-date AOT modules.
8919
8920         * aot-compiler.c (emit_and_reloc_code): Speed this up a little.
8921         
8922         * aot-compiler.c: Change the relocation code to use virtual addresses instead
8923         of file offsets. Align the sections belonging to the data segment to 
8924         PAGESIZE.
8925
8926 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
8927
8928         * aot-compiler.c: Simplify the elf writer by depending on the definitions in
8929         elf.h. Port it to amd64.
8930
8931 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
8932
8933         * driver.c: Enable SIMD by default.
8934
8935 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
8936
8937         * cpu-x86.md: Add prefetch op.
8938
8939         * mini-ops.h: Same.
8940
8941         * mini-x86.c: Same.
8942
8943         * mini.h: Add an enum for simd prefetch modes.
8944
8945         * simd-methods.h: Add prefetch function names.
8946
8947         * simd-intrinsics.c: Add prefetch ops for all vector types.
8948
8949 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
8950
8951         * aot-compiler.c (emit_bytes): Speed this up a little.
8952
8953 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
8954
8955         * aot-compiler.c: Add JIT time etc. statistics.
8956         
8957         * aot-compiler.c (compile_method): Fix the copying of the cfgs array.
8958
8959         * mini.h (MonoCompile): Add 'got_offset' field.
8960
8961         * aot-compiler.c: Store the got offset in MonoCompile, get rid of the
8962         method_got_offsets array.
8963
8964         * aot-compiler.c aot-runtime.c: Add support for the monitor enter/exit
8965         wrappers.
8966
8967         * aot-compiler.c (compile_method): Add generic method instances referenced
8968         by the method to the list of methods to be compiled, this is required so if
8969         A<T> references B<T>, and another assembly references A<int>, then it will
8970         also get a copy of B<int>.
8971
8972         * method-to-ir.c (mini_emit_inst_for_method): Use the proper wrapper type
8973         when checking for monitor enter/exit.
8974
8975 2008-10-30  Mark Probst  <mark.probst@gmail.com>
8976
8977         * method-to-ir.c (mini_emit_inst_for_method): Use the IL fastpaths
8978         for Monitor.Enter and Monitor.Exit if enabled.
8979
8980         * mini-x86.h, mini-amd64.h: Enable the IL fastpaths for Linux and
8981         Solaris.
8982
8983 2008-10-30  Zoltan Varga  <vargaz@gmail.com>
8984
8985         * method-to-ir.c (type_from_op): Convert CEE_CONV_U on OP_ICONV_TO_U instead
8986         of an OP_MOVE. Fixes #440046.
8987
8988         * basic-long.cs: Add a new test.
8989
8990 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
8991
8992         * mini.h: Add synchronization note for the managed counter-part.
8993
8994         * simd-intrinsics.c: Add SimdRuntime.get_AccelMode intrinsic that
8995         returns the simd caps of the current cpu.
8996
8997 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
8998
8999         * basic-simd.cs: Remove Console.WriteLine.
9000
9001 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9002
9003         * basic-simd.cs: New tests for Vector2ul.
9004
9005 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9006
9007         * simd-intrinsics.c: Add new vector type Vector2ul.
9008
9009 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9010
9011         * basic-simd.cs: New tests for Vector2l.
9012
9013 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9014
9015         * cpu-x86.md: Add long version of most packed int ops.
9016
9017         * mini-ops.h: Same.
9018
9019         * mini-x86.h: Same.
9020
9021         * simd-intrinsics.c: Add new vector type Vector2l.
9022
9023 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
9024
9025         * simd-intrinsics.c: Replace SN_op_BitwiseXor with SN_op_ExclusiveOr.
9026
9027         * simd-methods.h: Remove SN_op_BitwiseXor.
9028
9029 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
9030
9031         * mini.c (mono_allocate_stack_slots_full): Align the size of vtypes to their
9032         alignment.
9033
9034 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
9035
9036         * basic-simd.cs: Test for Vector2d.
9037
9038         * basic-simd.cs (test_vector8s_pack_signed_sat): Fixed broken
9039         value.
9040
9041 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
9042
9043         * cpu-x86.md: Add double version of all packed float ops.
9044
9045         * mini-ops.h: Same.
9046
9047         * mini-x86.h: Same.
9048
9049         * simd-intrinsics.c: Add new vector type Vector2d.
9050
9051         * simd-intrinsics.c (vector4f_intrinsics): Fix ordering.
9052
9053         * simd-methods.h: Add Duplicate.
9054
9055 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
9056
9057         * basic-simd.cs: Test for packing with signed saturation.
9058
9059 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
9060
9061         * aot-compiler.c (add_generic_instances): Add all methods of generic instances
9062         found in the TYPESPEC table.
9063
9064 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
9065
9066         * aot-runtime.c (mono_aot_get_method): Log not found methods for extra methods
9067         too.
9068
9069         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
9070
9071         * mini.c (mono_method_to_ir): For MONO_PATCH_INFO_RVA, save field the token
9072         instead of the RVA, since the RVA can be changed by tools like the cil 
9073         stripper.
9074
9075         * method-to-ir.c (mono_method_to_ir2): Ditto.
9076
9077         * debug-mini.c (serialize_variable): Handle ADDRESS_MODE_DEAD.
9078         (deserialize_variable): Ditto.
9079
9080 2008-10-25  Martin Baulig  <martin@ximian.com>
9081
9082         * debug-mini.c (write_variable): Use
9083         `MONO_DEBUG_VAR_ADDRESS_MODE_DEAD' for dead variables.
9084
9085 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9086
9087         * cpu-x86.md: Add unsigned variants of packd and packw.
9088
9089         * mini-ops.h: Same.
9090
9091         * mini-x86.h: Emit the right instruction for packd and packw.
9092         Add unsigned variants of packd and packw.
9093
9094         * simd-intrinsics.c: Packd and packw were used in place of their
9095         unsigned variants. Change that.
9096         Add intrinsics for (Signed)PackWithSignedSaturation.
9097
9098         * simd-methods.h: Add (Signed)PackWithSignedSaturation.
9099
9100 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9101
9102         * simd-intrinsics.c (vector4i_intrinsics): New table of intrinsic type.
9103
9104 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9105
9106         * mini-ops.h: Remove dword packed add/sub with saturation ops.
9107
9108         * cpu-x86.md: Remove dword packed add/sub with saturation ops.
9109
9110         * simd-intrinsics.c (vector4ui_intrinsics): Remove methods without
9111         sse instructions.
9112
9113         * simd-intrinsics.c (vector8s_intrinsics): Fix ordering.
9114
9115 2008-10-24  Mark Probst  <mark.probst@gmail.com>
9116
9117         * method-to-ir.c, mini.c: Special casing for the synchronized
9118         wrapper for the ldtoken+GetTypeFromHandle case.
9119
9120 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
9121
9122         * mini.c (mono_replace_ins): Move this to branch-opts.c.
9123
9124         * mini.c (mono_replace_ins): Propagate has_array_access flag to the newly
9125         created/split bblocks.
9126
9127 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9128
9129         * mini-ops.h: Add packed signed mul high.
9130         
9131         * cpu-x86.md: Same.
9132
9133         * mini-x86.c (mono_arch_output_basic_block): Same.
9134
9135         * simd-methods.h: Add PackWithUnsignedSaturation and ShiftRightLogic.
9136
9137         * simd-intrinsics.c (vector8s_intrinsics): New table of intrinsic type.
9138
9139 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
9140
9141         * basic-simd.cs: Tests for Vector16sb.
9142
9143 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
9144
9145         * inssel.brg (stmt): Fix OP_HARD_NOP rule.
9146
9147 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
9148
9149         * mini-ops.h: Add packed signed min, max and compare greater.
9150         
9151         * cpu-x86.md: Same.
9152
9153         * mini-x86.c (mono_arch_output_basic_block): Same. Add packed add/sub with
9154         saturation.
9155
9156         * simd-methods.h: Add CompareGreaterThan.
9157
9158         * simd-methods.h: Remove CompareEquals.
9159
9160         * simd-intrinsics.c: Add new TODO entry and some cosmetic changes.
9161
9162         * simd-intrinsics.c (vector16sb_intrinsics): New table of intrinsic type.
9163
9164         * simd-intrinsics.c (vector4f_intrinsics): Rename CompareEquals to
9165         CompareEqual.
9166
9167 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
9168
9169         * basic-simd.cs: Fix tests due to change in the API.
9170
9171 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9172
9173         * mini.c method-to-ir.c: Use mono_field_get_name () for accessing field->name.
9174
9175 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9176
9177         * basic-simd.cs: Fix name change in Vector4f::CompareEqual.
9178
9179         * simd-intrinsics.c (simd_intrinsic_emit_store_aligned): Don't use
9180         inst_offset as this has invalid values for LDADDR.
9181
9182 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9183
9184         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
9185
9186         * simd-intrinsics.c (vector4ui_intrinsics): Add SignedPackWithUnsignedSaturation.
9187
9188 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9189
9190         * method-to-ir.c (initialize_array_data): Use mono_field_get_data ()
9191         for accessing field->data.
9192
9193 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9194
9195         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
9196
9197 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
9198
9199         * simd-methods.h: Add SignedPackWithUnsignedSaturation.
9200
9201         * simd-intrinsics.c (vector8us_intrinsics): Add SignedPackWithUnsignedSaturation.
9202
9203 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
9204
9205         * dominators.c (mono_compute_natural_loops): Allocate GList enties
9206         from the cfg mempool.
9207
9208 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
9209
9210         * basic-simd.cs: Tests for new methods in Vector8us.
9211
9212 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
9213
9214         * mini-ops.h: Add multiply and store high.
9215         
9216         * cpu-x86.md: Same.
9217
9218         * mini-x86.c (mono_arch_output_basic_block): Same.
9219
9220         * simd-methods.h: Same.
9221
9222         * simd-intrinsics.c (vector8us_intrinsics): Add MultiplyStoreHigh
9223         and CompareEqual.
9224
9225 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
9226
9227         * method-to-ir.c (mono_emit_method_call_full): Remove a needless call to
9228         mono_class_setup_vtable ().
9229
9230         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Use
9231         mono_class_get_vtable_entry () for accessing klass->vtable.
9232
9233         * aot-runtime.c (load_method): Avoid a crash when using MONO_LOG_LEVEL.
9234
9235         * aot-compiler.c (add_generic_instances): Avoid a crash if a class is not
9236         found.
9237
9238         * method-to-ir.c (mono_save_token_info): Don't save references made from
9239         wrappers.
9240
9241         * aot-compiler.c (add_generic_instances): Add static rgctx wrappers for cctors
9242         of generic instances.
9243
9244         * aot-runtime.c (find_extra_method): Search in all loaded AOT images.
9245
9246 2008-10-19  Mark Probst  <mark.probst@gmail.com>
9247
9248         * cpu-ppc.md, mini-ppc.c: The length of the code generated for
9249         OP_JMP depends on the method signature.  Calculate it properly.
9250
9251 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
9252         
9253         * aot-runtime.c (mono_aot_find_jit_info): Handle extra methods which are
9254         called directly.
9255
9256         * aot-compiler.c (emit_and_reloc_code): Allow direct calling of generic
9257         instances.
9258         (emit_extra_methods): Add another table mapping method indexes to 
9259         offsets in the extra_method_info table.
9260
9261         * mini.h: Bump AOT file format version.
9262         
9263         * aot-runtime.c: Merge most of the code from mono_aot_get_method
9264         and mono_aot_get_method_from_token () into one function.
9265
9266 2008-10-19  Mark Probst  <mark.probst@gmail.com>
9267
9268         * mini-ppc.c (emit_load_volatile_arguments): Inner loop needs a
9269         separate counter.
9270
9271 2008-10-18  Zoltan Varga  <vargaz@gmail.com>
9272
9273         * aot-compiler.c aot-runtime.c: Fix the hash function used for the extra
9274         methods.
9275
9276         * method-to-ir.c (mono_method_to_ir2): Change a !compile_aot assert to
9277         disable_aot.
9278
9279         * mini.c (mono_patch_info_equal): Compare the generic context as well.
9280
9281         * mini.h: Bump aot file format version.
9282
9283         * aot-compiler.c aot-runtime.c: Generalize the wrapper handling code so the
9284         AOT file can contain native code for methods which are not in the METHOD
9285         table. Generate code for non-sharable generic instances of generic methods
9286         found in the METHODSPEC table.
9287         
9288         * method-to-ir.c (mono_method_to_ir2): Remove the aot restriction when
9289         encoding generic type handles.
9290
9291         * ir-emit.h (NEW_AOTCONST_TOKEN): Add a generic_context argument.
9292         (NEW_TYPE_FROM_HANDLE_CONST): Add a generic_context argument.
9293
9294         * ir-emit.h: Rewrite the EMIT_NEW_XXXCONST macros to use the NEW_XXXCONST
9295         macros + MONO_ADD_INS.
9296
9297         * mini.c (mono_jump_info_token_new2): New function which takes a generic
9298         context as well.
9299
9300         * mini.h (MonoJumpInfoToken): Include fields for a generic context.
9301
9302         * mini.h: Bump aot file format version.
9303
9304         * aot-compiler.c aot-runtime.c: Update after changes to MonoJumpInfoToken.
9305
9306 2008-10-17  Mark Probst  <mark.probst@gmail.com>
9307
9308         * mini-x86.h, mini-x86.c, exceptions-x86.c: Align stack on all
9309         platforms, with definable stack alignment value.  Set to 16 now
9310         for all platforms.
9311
9312         * mini.c, mini.h, driver.c: Command line option for disabling
9313         stack alignment.
9314
9315 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
9316
9317         * basic-simd.cs: Tests for new methods in Vector4ui.
9318
9319 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
9320
9321         * mini-ops.h: Add packed int shuffle.
9322         
9323         * cpu-x86.md: Same.
9324
9325         * mini-x86.c (mono_arch_output_basic_block): Same.
9326
9327         * simd-intrinsics.c (vector4ui_intrinsics): Add compare equal,
9328         extract mask, max, min, shuffle.
9329
9330         * simd-intrinsics.c (vector8us_intrinsics): Add max and min.
9331
9332 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
9333
9334         * basic-simd.cs: Tests for new methods in Vector8us.
9335
9336 2008-10-17  Mark Probst  <mark.probst@gmail.com>
9337
9338         * method-to-ir.c (mono_method_to_ir2): "refanytype" produces a
9339         RuntimeTypeHandle, not a TypedReference.
9340
9341 Fri Oct 17 14:40:50 CEST 2008 Paolo Molaro <lupus@ximian.com>
9342
9343         * simd-intrinsics.c: remove relocations.
9344
9345 2008-10-17  Zoltan Varga  <vargaz@gmail.com>
9346
9347         * mini-amd64.c (mono_arch_output_basic_block): Port the IREM_IMM 
9348         optimizations from the x86 backend.
9349
9350 Fri Oct 17 12:00:51 CEST 2008 Paolo Molaro <lupus@ximian.com>
9351
9352         * simd-methods.h, simd-intrinsics.c: debloat method names and
9353         prepare for no relocations.
9354
9355 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9356
9357         * mini-ops.h: Add packed min/equal and sum of absolute differences.
9358         
9359         * cpu-x86.md: Same.
9360
9361         * mini-x86.c (mono_arch_output_basic_block): Same.
9362
9363         * simd-intrinsics.c (vector16b_intrinsics): Add average, compare equal,
9364         extract mask, max, min and sum of absolute differences.
9365
9366         * simd-intrinsics.c: Increase SIMD_INTRINSIC_NAME_MAX due to new huge
9367         method name.
9368
9369 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9370
9371         * basic-simd.cs: Test for the other mono_simd_simplify_indirection bug.
9372         Renamed one test for consistency.
9373
9374 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9375
9376         * simd-intrinsics.c (mono_simd_simplify_indirection): Apply the previous
9377         fix to the code that deal with other blocks.
9378
9379 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9380
9381         * basic-simd.cs: Test for the mono_simd_simplify_indirection bug.
9382
9383 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
9384
9385         * simd-intrinsics.c (mono_simd_simplify_indirection): Simplify the code
9386         that deals with vreg interference. Explicitly check for OP_LDADDR to be
9387         able to process the source reg.
9388
9389 2008-10-16  Martin Baulig  <martin@ximian.com>
9390
9391         * mini-ops.h, cpu-amd64.md, cpu-x86.md: Added new `hard_nop' opcode.
9392
9393         * inssel.brg: Add `OP_HARD_NOP'.
9394
9395         * mini.h (MonoCompile): Added `keep_cil_nops' flag.
9396
9397         * mini.c (mono_method_to_ir): In `CEE_NOP': generate a
9398         `OP_HARD_NOP' instruction when running inside the debugger.
9399
9400         * method-to-ir.c (mono_method_to_ir2): In `CEE_NOP': generate a
9401         `OP_HARD_NOP' instruction when running inside the debugger.
9402
9403 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9404
9405         * simd-intrinsics.c (get_simd_vreg): Using sreg1 of OP_XMOVE
9406         now works. The issue with the regalloc tripping up no longer
9407         happens.
9408
9409         * simd-intrinsics.c (load_simd_vreg): Same.
9410
9411 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9412         
9413         * basic-simd.cs: Tests for new Vector8ui methods.
9414
9415 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9416
9417         * simd-intrinsics.c (get_simd_vreg): Simplify code and test
9418         only for type. This fixes crashes where MonoInst::klass is checked
9419         for ops of type != VTYPE or OBJ.
9420
9421         * simd-intrinsics.c (load_simd_vreg): Same.
9422
9423 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
9424
9425         * mini-ops.h: Add ops for packed shuffle/max/avg and
9426         extract mask.
9427         
9428         * cpu-x86.md: Same.
9429
9430         * mini-x86.c (mono_arch_output_basic_block): Same.
9431
9432         * simd-intrinsics.c (vector8us_intrinsics): Add avg, shuffle and
9433         extract mask.
9434
9435         * simd-intrinsics.c (simd_intrinsic_emit_extract_mask): New function
9436         to emit extract mask op.
9437
9438         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Retrofic this function
9439         to emit word shuffles.
9440
9441 2008-10-15  Mark Probst  <mark.probst@gmail.com>
9442
9443         * mini.c (mono_allocate_stack_slots_full): Align stack frame to
9444         the largest alignment needed by a variable, but at least
9445         sizeof(gpointer).
9446
9447 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9448
9449         * basic-simd.cs: Tests for the fixes in the last commit.
9450
9451 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9452
9453         * simd-intrinsics.c (get_simd_vreg): Drop the is_this_ptr, this function
9454         no longer handles STACK_PTR input.
9455
9456         * simd-intrinsics.c (get_simd_vreg): Don't crash when MonoInst::klass == -1.
9457
9458         * simd-intrinsics.c (load_simd_vreg): New function that works like 
9459         get_simd_vreg   but handles STACK_PTR input.
9460
9461         * simd-intrinsics.c (simd_intrinsic_emit_getter): Use load_simd_vreg
9462         as the input can be an arbitrary pointer.
9463
9464         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Try the
9465         LDADDR local optimization directly otherwise use a store op.
9466
9467 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9468
9469         * basic-simd.cs: Tests for dup low and dup high.
9470
9471 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
9472
9473         * mini-ops.h: Add dup low and dup high ops.
9474         
9475         * cpu-x86.md: Same.
9476
9477         * mini-x86.c (mono_arch_output_basic_block): Same.
9478
9479         * simd-intrinsics.c (vector4f_intrinsics): Same.
9480
9481 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
9482
9483         * basic-simd.cs: Tests for recently added functionality.
9484
9485 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
9486
9487         * mini-ops.h: Add remaining sse1 fp ops.
9488         
9489         * cpu-x86.md: Add remaining sse1 fp ops.
9490
9491         * mini-x86.c (mono_arch_output_basic_block): Same.
9492
9493         * mini.h: Add enum for simd FP compare conditions.
9494
9495         * simd-intrinsics.c (vector4f_intrinsics): Add all new ops.
9496
9497         * simd-intrinsics.c (simd_intrinsic_emit_binary): Set inst_c0 to flags
9498         so the backed can generate the appropriate op.
9499
9500 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
9501         This patch squeese one more byte from the SimdIntrinsc struct.
9502
9503         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions: Use the version number
9504         a a shift amount intead of simply or'ing it.
9505
9506         * mini.h: Change SIMD_VERSION_* values to be sequential intead of masks.
9507
9508         * simd-intrinsics.c (struct SimdIntrinsc): Squeese simd_version and simd_emit_mode into a single
9509         byte so we can have an aditional flags field without increasing struct size.
9510
9511         * simd-intrinsics.c (emit_intrinsics): Use the value of simd_version as a shift amount before checking
9512         against the simd_supported_versions bitmask.
9513
9514         * simd-intrinsics.c: Set SIMD_INTRINSIC_NAME_MAX to an appropriate value.
9515
9516 Mon Oct 13 10:58:10 CEST 2008 Paolo Molaro <lupus@ximian.com>
9517
9518         * mini.c: remove rawbuffer code (the only use here is unsafe because
9519         it takes locks during signal handling and the kernel now provides much
9520         better info in proc/pid/smaps these days).
9521
9522 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
9523
9524         * mini-amd64.c (mono_arch_output_basic_block): Fix the changes to
9525         OP_X86_PUSH_OBJ. Fixes #434620.
9526
9527         * objects.cs: Add a test.
9528         
9529 2008-10-12  Rodrigo Kumpera  <rkumpera@novell.com>
9530
9531         * basic-simd.cs: Remove PackWithUnsignedSaturation tests as it turns out
9532         that the packuswb/packusdw don't work with unsigned numbers for what
9533         would be negative numbers in signed format.
9534
9535         * cpu-x86.md: Add doubleword forms of many ops and packing ones.
9536         Fix the len of fconv_to_r8_x and xconv_r8_to_i4.
9537
9538         * mini-ops.h: Add doubleword forms of many ops and packing ones.
9539
9540         * mini-x86.c: Emit doubleword forms of many ops and packing ones.
9541
9542         * simd-intrinsics.c (SimdIntrinsc): Rename the flags field to simd_version.
9543
9544         * simd-intrinsics.c (vector4f_intrinsics): Use simd_version field for sse3 ops.
9545
9546         * simd-intrinsics.c (vector4u_intrinsics): Rename to vector4ui_intrinsics and
9547         add more ops.
9548
9549         * simd-intrinsics.c (simd_version_name): New function, returns the name of the
9550         version as the enum in mini.h.
9551
9552         * simd-intrinsics.c (emit_intrinsics): Instead of having a special emit mode
9553         for sse3 ops, check the simd_version field if present. This way the code
9554         works with all versions of sse.
9555
9556 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9557
9558         * simd-intrinsics.c: Fixed intrinsic name typo.
9559
9560         * mini.h: Added missing simd exported function.
9561
9562         * basic-simd.cs: Added tests for Vector4ui.
9563         Fixed broken test for Vector16b.
9564
9565 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
9566
9567         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Increase
9568         the max length to 64.
9569
9570 2008-10-10  Mark Probst  <mark.probst@gmail.com>
9571
9572         * method-to-ir.c: Only do the fast virtual generic method call for
9573         non-wrapper methods.
9574
9575         * mini.h, mini-trampolines.c: The new generic virtual remoting
9576         trampoline handles virtual method calls via the vtable (as done by
9577         the fast virtual generic method calls) to remoting proxies.
9578
9579         * mini.c (mono_jit_create_remoting_trampoline): For generic
9580         methods reate a generic virtual remoting trampoline.
9581
9582         * mini-amd64.h: Enable fast virtual generic method calls again.
9583
9584 2008-10-10  Mark Probst  <mark.probst@gmail.com>
9585
9586         * mini-ppc.c: Use SP (r1), not frame_reg (which might be r31) to
9587         restore registers when doing tail calls.
9588
9589 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9590
9591         * simd-intrinsics.c (emit_intrinsics): Vector4u was renamed to
9592         Vector4ui.
9593
9594 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9595
9596         * basic-simd.cs: Add test for Vecto16b.PackWithUnsignedSaturation.
9597
9598 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9599
9600         * simd-intrinsics.c (emit_intrinsics): Retrofit to new type names.
9601
9602 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9603
9604         * basic-simd.cs: Retrofit for API changes.
9605
9606 2008-10-10  Mark Probst  <mark.probst@gmail.com>
9607
9608         * mini-ppc.c: Handle integer stack arguments for tail calls.
9609
9610 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9611
9612         * optflags-def.h: Removed sse3 optimization.
9613
9614         * driver.c: Same.
9615
9616         * mini-x86.c (mono_arch_cpu_optimizazions): Remove detection of
9617         sse3.
9618
9619         * mini-x86.c: Added mono_arch_cpu_enumerate_simd_versions.
9620
9621         * mini.h: Added enumeration with simd versions.
9622
9623         * simd-intrinsics.c (emit_intrinsics): Use the new static var
9624         for detecting SSE3.
9625
9626         * simd-intrinsics.c: Added mono_simd_intrinsics_init.
9627
9628         * mini.c (mini_init): Call mono_simd_intrinsics_init.
9629
9630 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
9631
9632         * basic-simd.cs: Added tests for Vector8u and Vector16u.
9633
9634         * basic-simd.cs: Fixed test naming.
9635
9636 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
9637
9638         * mini-ops.h: Added ops for packed and saturated math, shifts
9639         and packing/unpacking.
9640
9641         * cpu-x86.md: Added descriptors for the above ops.
9642
9643         * mini-x86.c: Added code to emmit the above ops.
9644
9645         * simd-intrinsics.c: Added support for Vector16u and Vector8u.
9646
9647 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
9648
9649         * aot-compiler.c (compile_method): Enable AOT for generic code.
9650
9651         * ir-emit.h (NEW_DOMAINCONST): Use domainvars in AOT code as well.
9652
9653 Wed Oct 8 16:35:43 CEST 2008 Paolo Molaro <lupus@ximian.com>
9654
9655         * mini.c: add a workaround for a common screwup that ends up blamed
9656         to mono (other processes blocking signal delivery).
9657
9658 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9659
9660         * method-to-ir.c (mono_method_to_ir2): Clear ins_flag on all code paths
9661         in the LDFLD/STFLD opcodes. Fixes #432673.
9662
9663         * iltests.il.in: Add a new test.
9664
9665 Tue Oct 7 19:59:07 CEST 2008 Paolo Molaro <lupus@ximian.com>
9666
9667         * mini-arm.c: attach the thread in unmanaged->managed transitions
9668         using delegates (bug #433148).
9669
9670 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
9671
9672        * basic-simd.cs: Use new ShuffleSel constants.
9673
9674 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
9675
9676         * driver.c (opt_sets): Added combinations of simd, sse2 and sse3.
9677
9678         * mini-x86.c (mono_arch_cpu_optimizazions): Detect sse3 and now
9679         only disable simd intrinsics if no sse2 is detected.
9680
9681         * optflags-def.h: Added sse3.
9682
9683         * simd-intrinsics.c: Avoid generated sse3 intrinsics if the optimization
9684         is disabled.
9685
9686 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9687
9688         * aot-compiler.c (add_wrappers): Fix Delegate/MulticastDelegate classes
9689         when adding delegate-invoke wrappers.
9690
9691 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9692
9693         * Makefile.am: Reenable the simd tests.
9694
9695 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
9696
9697         * mini-amd64.c (mono_arch_emit_outarg_vt) : In the ArgValuetypeAddrInIReg case,
9698           add a call to mono_call_inst_add_outarg_reg for the arg->dreg to make sure that no
9699           other vreg is allocated to that hreg.
9700
9701         Contributed under MIT/X11 license.
9702
9703 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9704
9705         * Makefile.am: Disable the simd tests for now as Mono.Simd is not
9706         yet checked in.
9707
9708 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
9709
9710         * basic-simd.cs: New test suite for SIMD intrinsics.
9711
9712         * Makefile.am: Added new tests.
9713
9714 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
9715
9716         * cpu-x86.md: Added new instructions to handle float to int using SSE regs.
9717
9718         * mini-ops.h: Same.
9719
9720         * mini-x86.h: Enable mono_arch_decompose_opts if simd intrinsics are enabled.
9721
9722         * mini-x86.c (mono_arch_decompose_opts): Decompose float to int conversion
9723         using SSE2 aware opcodes.
9724
9725         * mini-x86.c (emit_float_to_int): Disable the SSE2 optimization if OPT_SIMD
9726         is enabled, this code path is only reachable if conversion ops are emmited after
9727         mono_method_to_ir.
9728
9729         * mini.h: Added MonoCompile::fconv_to_r8_x_var to hold the float to int var.
9730
9731         This optimization saves 6 bytes per conversion against the old version.
9732
9733 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
9734
9735         * aot-compiler.c (compile_method): Don't skip methods referencing 
9736         generic methods without a corresponding entry in token_info_hash, since
9737         encode_method_ref () can handle all generic methods now.
9738
9739         * method-to-ir.c (mono_save_token_info): Don't save the token info if a 
9740         generic context is set.
9741         
9742         * method-to-ir.c (mono_method_to_ir2): Put back a disable_aot for
9743         generic sharing of LDTOKEN.
9744
9745 2008-10-06  Mark Probst  <mark.probst@gmail.com>
9746
9747         * mini-amd64.h: Temporarily disabled fast virtual generic method
9748         calls because it breaks the System.Runtime.Remoting tests.
9749
9750 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
9751
9752         * aot-compiler.c (add_wrappers): Add delegate-invoke wrappers.
9753
9754         * method-to-ir.c (check_inline_called_method_name_limit): Return TRUE
9755         so inlining actually works.
9756         (check_inline_caller_method_name_limit): Ditto.
9757
9758 Mon Oct 6 11:04:38 CEST 2008 Paolo Molaro <lupus@ximian.com>
9759
9760         * mini-ppc.c: mono_arch_flush_icache () cast pointer using gsize for
9761         64 bit safety (from Olaf Hering and Andreas Farber).
9762
9763 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
9764         
9765         * mini-trampolines.c (mono_aot_trampoline): Delegate processing to
9766         mono_magic_trampoline () if aot_get_method_from_token () fails. Remove
9767         unused virtual call support code.
9768
9769         * aot-runtime.c (decode_method_ref): Add a 'no_aot_trampoline' out argument.
9770         
9771         * aot-runtime.c (mono_aot_get_method_from_vt_slot): Return NULL for methods
9772         which can't use aot trampolines.
9773         (decode_patch): Don't create aot trampolines for methods which can't use
9774         them.
9775
9776         * aot-compiler.c (encode_method_ref): Add a marker for methods which can't
9777         use aot trampolines.
9778
9779         * mini.h: Bump AOT image format version.
9780         
9781 2008-10-05  Zoltan Varga  <vargaz@gmail.com>
9782
9783         * method-to-ir.c (mono_method_to_ir2): Pass cil_method instead of cmethod
9784         to save_token_info () since cmethod is inflated for constrained calls.
9785
9786         * mini-<ARCH>.h mini-x86.c: Remove some unused defines.
9787
9788 2008-10-04  Andreas Farber  <andreas.faerber@web.de>
9789
9790         * Makefile.am: Add build rules for ppc64.
9791         This avoids the build failing at pedump with unresolved symbols
9792         due to lack of arch_sources. Instead it will now fail earlier
9793         due to lack of cpu-ppc64.md.
9794
9795         Contributed under MIT/X11 license.
9796
9797 2008-10-04  Mark Probst  <mark.probst@gmail.com>
9798
9799         * mini-amd64.c (mono_arch_emit_call): Support stack arguments for
9800         tail calls.
9801
9802         * iltests.il.in: Add test case for tail call with many arguments.
9803
9804 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
9805
9806         * method-to-ir.c (mono_method_to_ir2): Add an !cfg->compile_aot assert
9807         to the fast virtual generic method code until the aot case is fixed.
9808
9809 2008-10-03  Mark Probst  <mark.probst@gmail.com>
9810
9811         * mini-ppc.c, mini-ppc.h: Implement generic virtual method thunks.
9812
9813 2008-10-03  Mark Probst  <mark.probst@gmail.com>
9814
9815         * mini-amd64.c, mini-amd64.h: Implement generic virtual method
9816         thunks.
9817
9818 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
9819         
9820         * simd-intrinsics.c: Forgot to add this one.
9821
9822         * mini-codegen.c: Fix macro in case SIMD is not supported.
9823
9824 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
9825         
9826         This patch land initial JIT support for simd intrinsics.
9827
9828         * mini-x86.h: Added new define to make --enable_minimal work on x86.
9829
9830         * Makefile.am: Added simd-intrinsics.c
9831
9832         * simd-intrinsics.c: New file with simd instrinsic related
9833         code.
9834
9835         * cfold.c (mono_constant_fold_ins2): Fold XZERO.
9836
9837         * cpu-x86.md: Add simd related instructions.
9838
9839         * driver.c: Added MONO_OPT_SIMD to the default set of optimizations.
9840
9841         * driver.c: Added two new --regression variants.
9842
9843         * ir-emit.h (MONO_EMIT_NEW_VZERO): Emit XZERO if the type is a simd intrinsic.
9844
9845         * local-propagation.c (mono_local_cprop2): Eliminate useless XMOVE.
9846
9847         * local-propagation.c (mono_local_deadce): Use new macro MONO_IS_NON_FP_MOVE and
9848         extract some complicated logic to helper functions.
9849
9850         * method-to-ir.c (mono_type_to_regmove): Handle simd intrinsics.
9851
9852         * method-to-ir.c (mini_emit_inst_for_method): Emit simd intrinsics.
9853
9854         * method-to-ir.c (mono_handle_global_vregs): If a simd intrinsic was found, apply
9855         the specialized simplification pass.
9856
9857         * method-to-ir.c (mono_spill_global_vars): Use new macro.
9858
9859         * mini-codegen.c: Added SIMD constants to all regbanks arrays.
9860
9861         * mini-codegen.c: Added reg_bank_table_init to initialize the reg desc -> bank
9862         table.
9863
9864         * mini-codegen.c: Define a version of the reg_bank macro that uses desc_to_reg_type
9865         if MONO_ARCH_NEED_SIMD_BANK is defined.
9866
9867         * mini-ops.h: Added the new simd ops.
9868
9869         * mini-x86.c: Added mono_arch_xregname.
9870
9871         * mini-x86.c (mono_arch_cpu_optimizazions): Disable MONO_OPT_SIMD if SSE3 is not detected.
9872
9873         * mini-x86.c (mono_arch_output_basic_block): Add simd related opcodes.
9874
9875         * mini-x86.h: Define simd related MONO_ARCH macros.
9876
9877         * mini.c (mono_type_to_load_membase): Handle simd intrinsics.
9878
9879         * mini.c (mono_type_to_store_membase): Handle simd intrinsics.
9880
9881         * mini.h: Added new macros MONO_IS_NON_FP_MOVE, MONO_IS_REAL_MOVE, MONO_IS_ZERO and
9882         MONO_CLASS_IS_SIMD to deal with simd related IR.
9883
9884         * mini.h (MonoInst): Added spill_var to the backend union.
9885
9886         * mini.h (MonoCompile): Added uses_simd_intrinsics and iconv_raw_var.
9887
9888         * mini.h: Added forward declarations of the new simd fuctions.
9889
9890         * optflags-def.h: Added new optimization names SIMD.
9891
9892         * regalloc.c (mono_regstate_reset): Set next vreg to be the max value of the 3 reg banks.
9893
9894         * regalloc.h: Added support for working with 3 register banks.
9895
9896         * regalloc.h (MonoRegState): Added xsymbolic field if a third regbank is required.
9897
9898         * ssa2.c (mono_ssa_deadce2): Use new MONO_IS_ZERO macro.
9899
9900 Fri Oct 3 16:03:22 CEST 2008 Paolo Molaro <lupus@ximian.com>
9901
9902         * mini-exceptions.c: remove 64 bit related ifdef clutter.
9903
9904 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
9905
9906         * mini-exceptions.c (mono_handle_soft_stack_ovf): Unprotect two pages
9907         instead of one on 64 bit systems.
9908
9909         * method-to-ir.c: Remove unused includes.
9910
9911 2008-10-02  Zoltan Varga  <vargaz@gmail.com>
9912
9913         * aot-compiler.c (emit_exception_debug_info): Use jinfo->used_regs instead of
9914         cfg->used_int_regs, since the two are different on arm.
9915
9916 2008-10-02  Mark Probst  <mark.probst@gmail.com>
9917
9918         * method-to-ir.c, inssel.brg, mini-trampolines.c: Use
9919         mono_method_get_vtable_index() to get the vtable index.
9920
9921 2008-10-02  Mark Probst  <mark.probst@gmail.com>
9922
9923         * method-to-ir.c (mono_method_to_ir2): Don't create native
9924         wrappers for array methods, because they're never called (and if
9925         they were called they wouldn't work).
9926
9927 2008-10-02  Mark Probst  <mark.probst@gmail.com>
9928
9929         * method-to-ir.c (mono_method_to_ir2): Array methods are
9930         special-cased and must not be invoked indirectly via the (M)RGCTX
9931         when generic sharing is turned on.  Fixes #431413.
9932
9933 2008-10-01  Mark Probst  <mark.probst@gmail.com>
9934
9935         * method-to-ir.c: When generic sharing is active, call
9936         non-interface virtual generic methods via the standard trampoline.
9937
9938         * mini-trampolines.c: Handle virtual generic shared methods.
9939
9940         * mini.h, mini-x86.c, mini-x86.h: New argument for
9941         mono_arch_build_imt_thunk() which is non-NULL for virtual generic
9942         method thunks and which is the trampoline to call if the lookup
9943         fails.  Enable the virtual generic method thunk for x86.
9944
9945         * mini-amd64.c, mini-arm.c, mini-ia64.c, mini-sparc.c,
9946         mini-ppc.c (mono_arch_build_imt_thunk): Add the additional
9947         argument but assert that it's NULL, because these archs don't yet
9948         implement the virtual generic method thunk.  Changes in the IMT
9949         thunk data structures.
9950
9951 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
9952
9953         * aot-compiler.c (emit_globals): Avoid invalid characters in
9954         the static linking symbol.
9955
9956         * objects.cs: Add a test for the range check optimization. Fix warnings.
9957
9958         * branch-opts.c (mono_if_conversion): Add back the 'optimize range checks'
9959         optimization from the current JIT.
9960
9961         * method-to-ir.c (mini_emit_inst_for_method): Decompose String.Length
9962         later in decompose_array_access_opts () to allow more optimizations.
9963
9964         * method-to-ir.c (mono_handle_soft_float): Rename this to 
9965         mono_decompose_soft_float () for consistency.
9966
9967         * mini-ops.h: Fix arguments of OP_STRLEN.
9968
9969         * method-to-ir.c (save_cast_details): Extract the cast details saving code
9970         into a separate function.
9971         (reset_cast_details): Ditto.
9972         (handle_unbox): Save cast details. Fixes #431254.
9973
9974         * method-to-ir.c: Remove some obsolete FIXMEs.
9975
9976 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9977
9978         * ir-emit.h (alloc_dreg): Write a warning before crashing.
9979
9980 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9981
9982         * mini-codegen.c: More work on macros to make them
9983         ready for multiple regbanks.
9984
9985 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9986
9987         * method-to.ir.c (mono_type_to_regmove): Remove static modifier.
9988
9989         * mini.h: Export mono_type_to_regmove. Fix signature of mono_regname_full.
9990
9991 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9992
9993         * mini-codegen.c (mono_spillvar_offset): Proper support for
9994         multiple regbanks.
9995
9996 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
9997
9998         * mini-amd64.c (mono_arch_emit_epilog): Remove some duplicated code from
9999         the stack overflow changes.
10000
10001 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10002
10003         * mini-codegen.c: Make all bank macros depend on reg_bank.
10004
10005         * mini-codegen.c (mono_local_regalloc): Make free mask
10006         initialization regbank aware.
10007
10008 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10009
10010         * mini-codegen.c (mono_local_regalloc): Extract callee
10011         mask selection to a function and make it regbank aware.
10012
10013 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
10014
10015         * mini-codegen.c (mono_local_regalloc): Changed the cloberring
10016         code to deal with many regbanks.
10017
10018 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
10019
10020         * mini-codegen.c: More fp->regbank changes.
10021
10022 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
10023
10024         * mini-codegen.c: Change asserts to use MONO_NUM_REGBANKS instead
10025         of a hardcoded constant.
10026
10027 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
10028
10029         * method-to-ir.c (type_from_stack_type): Fix typo.
10030
10031 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
10032
10033         * mini-ia64.c (emit_move_return_value): Convert float return values to
10034         double.
10035
10036         * objects.cs: Add a new test.
10037         
10038         * mini-ia64.c (mono_arch_allocate_vars): Disable fp elimination for
10039         VARARG methods to fix an assert later.
10040
10041         * mini-mips.h mini-mips.c mini-ops.h cpu-mips.md: Update the mips back
10042         end so it at least compiles.
10043
10044 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
10045
10046         * method-to-ir.c (emit_optimized_ldloca_ir): Fix this.
10047
10048 2008-09-28  Rodrigo Kumpera  <rkumpera@novell.com>
10049
10050         * method-to-ir.c (mono_method_to_ir2): Extract the ldloca + initobj
10051         optimization to a new function (emit_optimized_ldloca_ir) and enable
10052         it for both ldloca and ldloca_s.
10053
10054 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
10055
10056         * method-to-ir.c (mono_method_to_ir2): Remove an unnecessary assert in the
10057         gshared CASTCLASS code.
10058
10059         * driver.c (mono_main): Add a workaround for shutdown crashes seen on
10060         amd64, where the libc stack unwinder encounters stack frames referring to
10061         native code in unmapped memory.
10062
10063         * method-to-ir.c (mini_emit_check_array_type): Add support for generic
10064         sharing.
10065
10066         * generics.cs: Add new test.
10067
10068 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
10069
10070         * mini-arm.h driver.c: Print the fp model when using --version on arm. Also,
10071         add a check that one of the ARM_FPU_ constants is defined.
10072
10073         * mini-exceptions.c (mono_handle_soft_stack_ovf): Really fix the build.
10074         
10075         * mini-exceptions.c: Fix build on non-altstack platforms.
10076
10077         * method-to-ir.c (mono_method_to_ir2): Fix aot support for the
10078         sharing of vtypes.
10079
10080         * ir-emit.h: Add a comment to NEW_PCONST.
10081
10082         * mini-exceptions.c (mono_altstack_restore_prot): Fix a warning.
10083
10084         * mini.h (MonoJitDomainInfo): Move some fields here from MonoDomain.
10085
10086         * mini.c aot-runtime.c method-to-ir.c driver.c mini-trampolines.c: Update
10087         after the changes to MonoJitDomainInfo.
10088
10089 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10090
10091         * mini-ppc.c, tramp-ppc.c, mini-ppc.h: Implement generic code sharing.
10092
10093 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10094
10095         * mini-ppc.c: Compiler warning fixes.
10096
10097 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10098
10099         * mini-ppc.c: Special handling for 1/2 byte structs on Darwin only
10100         for pinvokes.
10101
10102 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10103
10104         * exceptions-ppc.c, mini-ppc.h: Compile
10105         mono_arch_handle_altstack_exception() on Darwin, too.
10106
10107 2008-09-27  Mark Probst  <mark.probst@gmail.com>
10108
10109         * method-to-ir.c (mono_emit_rgctx_method_call_full): Must also
10110         work on archs which don't have generic sharing implemented, only
10111         without the vtable_arg.
10112
10113 2008-09-26  Mark Probst  <mark.probst@gmail.com>
10114
10115         * mini.c: Added comment explaining why delegate ctor icall
10116         wrappers are compiled.
10117
10118 2008-09-26  Mark Probst  <mark.probst@gmail.com>
10119
10120         * mini.c: Don't produce trampolines to delegate ctor icall
10121         wrappers but compile them upfront.
10122
10123 Fri Sep 26 17:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
10124
10125         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: amd64 support code for calling a
10126         runtime-set function when going back to managed code. Currently this
10127         is used to set back the protection on the soft ovf pages and/or to
10128         throw the stack overflow exception that happened in unmanaged code.
10129
10130 Fri Sep 26 16:46:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
10131
10132         * tramp-x86.c, mini-x86.h, mini-x86.c: x86 support code for calling a
10133         runtime-set function when going back to managed code. Currently this
10134         is used to set back the protection on the soft ovf pages and/or to
10135         throw the stack overflow exception that happened in unmanaged code.
10136
10137 Fri Sep 26 16:34:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
10138
10139         * mini.h, mini.c, mini-trampolines.c, mini-exceptions.c: added
10140         the support code for restoring stack protection after stack overflows
10141         that happen in unmanaged code. Don't set the exec permission on the
10142         soft overflow area.
10143
10144 2008-09-26  Zoltan Varga  <vargaz@gmail.com>
10145
10146         * mini-trampolines.c (mono_delegate_trampoline): Add wrappers even if
10147         delegate->method_ptr is set. Fixes #428054.
10148
10149 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
10150
10151         * tests.cs: Rename to ratests.cs.
10152
10153         * method-to-ir.c: Merge the emit_get_rgctx () calls into the 
10154         emit_get_rgctx_... functions.
10155
10156 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10157
10158         * method-to-ir.c: Eliminated macro EMIT_GET_RGCTX.
10159
10160 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10161
10162         * mini-trampolines.c (mono_magic_trampoline): Unwrap wrappers
10163         before asserting that method is sharable.
10164
10165 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10166
10167         * method-to-ir.c, mini.c, jit-icalls.c: New function for checking
10168         whether method needs a static RGCTX wrapper used instead of
10169         complex conditions.
10170
10171         * generic-sharing.c, mini.h: A few functions moved to
10172         metadata/generic-sharing.c.
10173
10174 2008-09-25  Mark Probst  <mark.probst@gmail.com>
10175
10176         * method-to-ir.c, mini.c, mini-exceptions.c, mini-trampolines.c:
10177         Generic code sharing for value types, which essentially means
10178         treating value type methods like static methods.  The RGCTX is
10179         passed in the same way.
10180
10181 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
10182
10183         * method-to-ir.c (mono_method_to_ir2): Avoid an assert in the NEWOBJ
10184         opcode when creating multi-dimensional arrays of open types.
10185
10186         * generic-sharing.c (mono_method_check_context_used): Handle arrays of
10187         open generic types.
10188
10189         * generics.cs: Add a test.
10190
10191         * mini-codegen.c: Use macros everywhere for checking floats instead of == 'f'.
10192
10193 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
10194
10195         * mini.h (MonoCompile): Add 'disable_vreg_to_lvreg' flag.
10196
10197         * mini.c (mini_method_compile): Set it when running under the debugger. 
10198
10199         * method-to-ir.c (mono_handle_global_vregs): Disable global->local
10200         vreg optimization if the flag is set.
10201
10202         * driver.c (mono_main): Add --attach= option to pass options to
10203         the attach agent.
10204
10205         * mini.c (sigquit_signal_handler): Start the attach agent.
10206
10207         * ssapre.c: Disable this to save space since it is not yet ported to
10208         linear IR.
10209
10210         * regalloc2.c: Disable this to save space.
10211
10212         * mini.h (MonoJitStats): Remove unused analyze_stack_repeat.
10213
10214 Wed Sep 24 16:01:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
10215
10216         * decompose.c, method-to-ir.c, mini-codegen.c, regalloc2.c: make
10217         the -v option useful again.
10218
10219 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
10220
10221         * mini-amd64.c (mono_arch_output_basic_block): Add support for
10222         --break-at-bb.
10223
10224         * inssel.brg (mini_emit_castclass): Avoid the szarray!=array checks for
10225         arrays of arrays. Fixes #428406.
10226
10227         * method-to-ir.c (mini_emit_castclass): Ditto.
10228
10229         * objects.cs: Add new test.
10230         
10231 2008-09-23  Rodrigo Kumpera  <rkumpera@novell.com>
10232
10233         * method-to-ir.c (type_to_eval_stack_type): The code path for the new JIT
10234         was wrong at it choked against target_type_is_incompatible for byref types.
10235
10236 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
10237
10238         * mini-codegen.c: Use 'bank' macros instead of 'is_fp' macros in most 
10239         places.
10240
10241 Tue Sep 23 15:31:45 CEST 2008 Paolo Molaro <lupus@ximian.com>
10242
10243         * mini-exceptions.c: update a few more exceptions-related counters.
10244
10245 Tue Sep 23 15:28:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
10246
10247         * aot-runtime.c, method-to-ir.c, mini.c, mini-trampolines.c: use the
10248         new functions to allocate from persistent mempools.
10249
10250 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
10251
10252         * mini.h regalloc.h mini-codegen.c: Generalize the regalloc code to allow 
10253         multiple register banks in the future.
10254
10255         * mini-codegen.c (mono_local_regalloc): Fix a warning.
10256
10257 2008-09-22  Rodrigo Kumpera  <rkumpera@novell.com>
10258
10259         * mini.c (type_to_eval_stack_type): Remove duplicated function.
10260
10261         * method-to-ir.c (type_to_eval_stack_type): Make this version compatible with both JIT.
10262
10263         * mini.h: Export type_to_eval_stack_type.
10264
10265         This function was nearly duplicated in method-to-ir.c and mini.c. The difference
10266         is only ins->klass of byref types.
10267
10268 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
10269
10270         * method-to-ir.c (mini_emit_memset): Use a default alignment of 4.
10271         (mini_emit_memcpy2): Ditto.
10272
10273         * mini-amd64.c: Fix a warning.
10274
10275 2008-09-21  Mark Probst  <mark.probst@gmail.com>
10276
10277         * exceptions-ppc.c (mono_arch_get_call_filter): Fixed stack frame
10278         linking.
10279
10280 2008-09-19  Rodrigo Kumpera  <rkumpera@novell.com>
10281
10282         * method-to-ir.c: Extract stloc micro-optimization to a
10283         function and apply it to all cases.
10284
10285 2008-09-19  Mark Probst  <mark.probst@gmail.com>
10286
10287         * method-to-ir.c: Don't fail generic code sharing in cases we
10288         already support.
10289
10290 2008-09-18  Mark Probst  <mark.probst@gmail.com>
10291
10292         * mini-ppc.c: Handle structs in tailcalls on Darwin.
10293
10294 Tue Sep 16 21:07:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
10295
10296         * *.c, *.md, mini-ops.h: introduced relaxed_nop opcode for spin wait
10297         implementation.
10298
10299 Tue Sep 16 16:39:16 CEST 2008 Paolo Molaro <lupus@ximian.com>
10300
10301         * trace.c: make tracing more useful and correct, with per-thread
10302         id and indent info.
10303
10304 2008-09-15  Mark Probst  <mark.probst@gmail.com>
10305
10306         * mini-ppc.c (mono_arch_emit_call): Convert floats to R4 when
10307         doing a method call and the argument is an R4.
10308
10309 2008-09-14  Zoltan Varga  <vargaz@gmail.com>
10310
10311         * aot-compiler.c (add_wrappers): Do not generate runtime invoke wrappers for
10312         generic methods.
10313
10314 2008-09-13  Mark Probst  <mark.probst@gmail.com>
10315
10316         * mini-ppc.c: Convert result to single for OP_ICONV_TO_R4.
10317
10318 2008-09-12  Zoltan Varga  <vargaz@gmail.com>
10319
10320         * mini.h (MONO_IS_JUMP_TABLE): Handle GOT_ENTRY.
10321         (MONO_JUMP_TABLE_FROM_INS): Ditto.
10322
10323 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
10324
10325         * driver.c: Add a --agent argument (not supported yet) to load managed
10326         agent assemblies before loading the main assembly, similarly to how the
10327         Java VM handles agents.
10328
10329 2008-09-11  Mark Probst  <mark.probst@gmail.com>
10330
10331         * mini-ppc.c (mono_arch_allocate_vars): Use arch-independent
10332         function to do stack layout of local variables.
10333
10334 2008-09-11  Mark Probst  <mark.probst@gmail.com>
10335
10336         * mini-ppc.c (calculate_sizes): Bugfix in sigcookie position
10337         calculation.
10338
10339 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
10340
10341         * method-to-ir.c ssa2.c mini.c mini-amd64.c decompose.c ssa.c abcremoval.c
10342         abcremoval2.c branch-opts.c driver.c dominators.c: Disable parts of the
10343         JIT if DISABLE_JIT is defined.
10344
10345         * Makefile.am: Avoid compiling/linking in inssel.c if DISABLE_JIT is
10346         defined.
10347
10348 2008-09-10  Mark Probst  <mark.probst@gmail.com>
10349
10350         * iltests.il.in: Disable the fconv test on PPC (the result is
10351         undefined according to ECMA).
10352
10353 2008-09-10  Mark Probst  <mark.probst@gmail.com>
10354
10355         * iltests.il.in: Enable tail call tests for PPC.
10356
10357         * mini.h: Add variable for storing incoming valuetype argument
10358         addresses for tail calls.
10359
10360         * mini-ppc.c: Implement valuetype arguments and return values for
10361         tailcalls on Linux.
10362
10363 2008-09-09  Mark Probst  <mark.probst@gmail.com>
10364
10365         * mini-ppc.c: Partially implement tail calls (struct arguments and
10366         return values not supported).
10367
10368         * method-to-ir.c: Enable tail calls on PPC.
10369
10370 2008-09-08  Zoltan Varga  <vargaz@gmail.com>
10371
10372         * aot-compiler.c (emit_wrapper_info): Omit the klass name from
10373         runtime-invoke wrappers to work around the problem of them getting
10374         assigned to a random class.
10375
10376         * aot-runtime.c (mono_aot_get_method): Ditto.
10377         
10378 2008-09-07  Zoltan Varga  <vargaz@gmail.com>
10379
10380         * mini-exceptions.c mini-mips.h mini-s390.h exceptions-mips.c: Kill
10381         the CUSTOM_EXCEPTION_HANDLING and CUSTOM_STACK_WALK defines.
10382
10383 2008-09-07  Mark Probst  <mark.probst@gmail.com>
10384
10385         * method-to-ir.c (mono_method_to_ir2): Disable tail calls for PPC
10386         until they're implemented properly.
10387
10388         * exceptions-ppc.c: Use arch-independent exception-handling code
10389         instead of custom one.
10390
10391         * exceptions-ppc.c, mini-ppc.c, mini-ppc.h: Bug fixes and changes
10392         for Linear IR.
10393
10394         * tramp-ppc.c, mini-ppc.c: Fixed warnings.
10395
10396         * decompose.c, aot-runtime.c, aot-compiler.c: PPC code also
10397         applies when __powerpc__ is defined.
10398
10399 2008-09-06  Zoltan Varga  <vargaz@gmail.com>
10400
10401         * aot-runtime.c (mono_aot_get_method): Add another cache mapping wrapper
10402         methods to their code to avoid computing the full name of wrappers and
10403         doing a lookup in a string hash table.
10404
10405 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
10406
10407         * method-to-ir.c: Remove the CHECK_BBLOCK () stuff it is not needed since
10408         we identify bblocks before method_to_ir () is ran.
10409
10410         * branch-opts.c (mono_optimize_branches): Avoid nullifying the exit bblock.
10411         Also avoid optimizing branches pointing to themselves.
10412
10413         * mini.c (mini_method_compile): Ditto. Fixes #422947.
10414
10415 2008-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
10416
10417         * driver.c (mono_main): Enable the new verifier under core-clr and cas.
10418
10419 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
10420
10421         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Implement this.
10422         (mono_arch_patch_plt_entry): Fix the calculation of the jump_entry.
10423         (mono_arch_get_nullified_class_init_trampoline): Return 'code' instead of
10424         'buf'.
10425
10426         * aot-compiler.c (emit_plt): Fix the arm plt entries, previously they all 
10427         jumped to the same entry in plt_jump_table.
10428
10429 2008-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
10430
10431         * method-to-ir.c (initialize_array_data): Handle field with RVA from
10432         dynamic images.
10433
10434 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
10435
10436         * method-to-ir.c (handle_isinst): Do the assignment at the beginning, so the
10437         other assignment can be if converted. Saves 1.5% on corlib size and fixes
10438         #421807.
10439
10440 2008-08-29  Geoff Norton  <gnorton@novell.com>
10441
10442         * aot-compiler.c: The Mach/ARM compiler doesn't understand the bss
10443         segment, and doesn't properly handle .space as .text.  Fixes
10444         AOT Mach/ARM
10445
10446 2008-08-29  Geoff Norton  <gnorton@novell.com>
10447
10448         * mini.c: Disable the mach exception handler when running on 
10449         ARM
10450
10451 2008-08-29  Geoff Norton  <gnorton@novell.com>
10452
10453         * aot-compiler.c: Patch from Renaldas Zioma to properly register 
10454         globals on Darwin/ARM
10455
10456 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
10457
10458         * mini.c: Avoid not initializing the runtime when doing AOT compilation, 
10459         since too many things depend on it. Instead, call 
10460         mono_runtime_set_no_exec ().
10461         
10462         * mini.c (mono_create_tls_get): Call mono_alloc_preg (cfg) when running with
10463         the new JIT.
10464
10465         * aot-compiler.c: Add an 'asm-only' AOT option.
10466
10467         * mini.c: Avoid initializing the runtime when doing AOT compilation.
10468                 
10469         * aot-compiler.c (compile_method): Disable gshared support for now as it
10470         doesn't yet work.
10471
10472 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
10473
10474         * mini-amd64.h : Fix a compiler warning.
10475
10476         * exceptions-amd64.c (mono_arch_unwindinfo_install_unwind_info) :
10477           Changed to use a callback function to retrieve the unwind info.
10478           This avoids problems observed when code blocks were removed by
10479           unloading an app domain.
10480
10481         * mini-amd64.c (mono_arch_cpu_optimizazions) : Removing the peephole 
10482           and branch excludes for Winx64.  The fix in exceptions-amd64.c allows them
10483           to work properly.
10484
10485         Contributed under MIT/X11 license.
10486
10487 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
10488
10489         * mini-amd64.c (mono_arch_output_basic_block) : Fix the OP_X86_PUSH_OBJ
10490           case to keep the stack aligned to 8.
10491
10492         Contributed under MIT/X11 license.
10493
10494 2008-08-26  Zoltan Varga  <vargaz@gmail.com>
10495
10496         * aot-runtime.c (mono_aot_get_method): Add a cache for wrapper names to
10497         avoid repeated linear searches.
10498
10499 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
10500
10501         * aot-compiler.c (add_wrappers): Avoid calling get_runtime_invoke with
10502         methods it can't handle.
10503         
10504         * aot-compiler.c (add_method): Avoid adding a method twice.
10505         (add_wrappers): Add runtime invoke wrappers for all methods.
10506
10507         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): New
10508         function to create an aot-compatible version of this trampoline.
10509
10510         * aot-compiler.c aot-runtime.c: Add support for AOT rgctx fetch trampolines.
10511
10512 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
10513
10514         * aot-compiler.c (compile_method): Skip wrappers of generic icalls.
10515
10516         * method-to-ir.c (mono_method_to_ir2): Replace an assert in UNBOX_ANY
10517         with a generic sharing failure.
10518
10519         * aot-compiler.c (emit_klass_info): Call mono_class_get_nested_types ().
10520
10521         * method-to-ir.c (mono_method_to_ir2): Rethrow the correct exception in
10522         CEE_RETHROW. Fixes #419634.
10523
10524         * mini.c (mono_method_to_ir): Ditto.
10525
10526         * exceptions.cs: Add a new test.
10527         
10528         * generic-sharing.c (mini_type_stack_size): Always pass TRUE as allow_open
10529         to mono_type_stack_size_internal () since some callers might not pass in
10530         an rgctx.
10531
10532         * mini-x86.c (mono_arch_emit_prolog): Store the rgctx before calling
10533         instrument_prolog. Fixes #419878.
10534
10535         * mini.c (mono_compile_create_var_for_vreg): Make the lvars representing
10536         doubles in soft float mode volatile.
10537
10538 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
10539
10540         * ir-emit.h (NEW_ARGSTORE): Use cfg->args and cfg->arg_types to fix the build.
10541
10542         * method-to-ir.c (mono_save_args): Use ARGSTORE instead of TEMPSTORE
10543         to handle soft float correctly.
10544
10545         * tramp-arm.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Implement
10546         the fast path.
10547
10548         * mini.h (struct MonoCallInst): Add dynamic_imt_arg boolean field.
10549
10550         * exceptions-arm.c (mono_arch_find_jit_info): Set ctx->regs [ARMREG_R11]
10551         to sp, since the generics catch code requires it.
10552
10553         * mini-arm.h (MONO_ARCH_VTABLE_REG): Use R0 for this to avoid needless
10554         copying.
10555
10556         * method-to-ir.c (emit_imt_argument): Pass imt_arg to 
10557         mono_arch_emit_imt_argument ().
10558
10559         * mini-<ARCH>.c (mono_arch_emit_imt_argument): Add an 'imt_arg' argument.
10560
10561         * mini-arm.c tramp-arm.c: Generic sharing updates.
10562
10563 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
10564
10565         * mini-arm.c: Fix the arm build.
10566
10567         * generic-sharing.c (mini_type_get_underlying_type): New helper function
10568         handling enums, generic instances and generic sharing.
10569         (mini_type_stack_size_full): Ditto.
10570
10571         * mini-amd64.c mini-x86.c mini-arm.c: Use the new functions.
10572         
10573         * mini.h (struct): Add 'uses_rgctx_reg' and 'uses_vtable_reg' fields.
10574
10575         * method-to-ir.c: Set the new fields when using RGCTX_REG/VTABLE_REG.
10576
10577         * tramp-arm.c: Implement the rgctx fetch and the generic class init 
10578         trampolines.
10579
10580         * mini-arm.c: Various small generic sharing changes.
10581
10582         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline): Implement
10583         this for x86.
10584         (mono_arch_create_trampoline_code): Remove most of the GENERIC_CLASS_INIT
10585         custom code.
10586
10587         * mini-trampolines.c (mono_create_generic_class_init_trampoline): New
10588         helper function to return a generic class init trampoline.
10589
10590         * method-to-ir.c mini.c: Use it.
10591         
10592         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline): New
10593         arch-specfic function to return a generic class init trampoline.
10594
10595         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Remove most of
10596         the GENERIC_CLASS_INIT custom code.
10597
10598         * method-to-ir.c (mono_method_to_ir2): If RGCTX_REG is not defined, that is
10599         a fatal error, not a sharing failure.
10600
10601         * tramp-<ARCH>.c (mono_arch_get_rgctx_lazy_fetch_offset): Removed, no longer
10602         needed.
10603
10604         * mini-trampolines.c (mono_rgctx_lazy_fetch_trampoline): Get the additional
10605         trampoline argument from MONO_ARCH_VTABLE_REG.
10606
10607         * tramp-x86.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
10608         order of the arguments to the C trampoline: pass 'slot' as the trampoline
10609         argument, and pass the vtable in VTABLE_REG.
10610
10611         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
10612         order of the arguments to the C trampoline: pass 'slot' as the trampoline
10613         argument, and pass the vtable in VTABLE_REG.
10614         (mono_arch_create_trampoline_code_full): Remove some special casing for
10615         the rgctx fetch trampoline.
10616
10617         * mini.c (mono_method_to_ir): Fix the STELEM_ANY+null value optimization.
10618         Fixes #419273.
10619
10620         * iltests.il: Add a test for it.
10621
10622 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
10623
10624         * aot-compiler.c (compile_method): Enable AOT support for generics sharing.
10625
10626         * method-to-ir.c (mono_method_to_ir2): Remove an aot restriction which is
10627         no longer needed.
10628
10629         * mini-trampolines.c (mono_magic_trampoline): Add a sync wrapper here,
10630         use mono_jit_info_table_find () to avoid recursion.
10631         (mono_delegate_trampoline): Add a sync wrapper here.
10632
10633         * method-to-ir.c (mono_method_to_ir2): Don't call mono_ldftn_nosyc
10634         here.
10635
10636         * mini.c (mono_method_to_ir): Ditto.
10637         
10638         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Remove
10639         add_sync_wrapper argument. Don't add a sync wrapper here.
10640         (mono_create_jump_trampoline): Don't add a sync wrapper here.
10641
10642         * jit-icalls.c (mono_ldftn_nosync): Removed, no longer needed.
10643         
10644 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
10645
10646         * exceptions-amd64.c (seh_handler):  For Winx64 adding missing copy 
10647           of nonvolatile registers back from MonoContext to CONTEXT.
10648
10649         Contributed under MIT/X11 license.
10650
10651 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
10652
10653         * mini-amd64.c (mono_arch_get_delegate_invoke_impl):  When shifting the
10654           arguments on Winx64 there are only 4 argument registers.  For this
10655           logic to work the last argument must be pulled from the stack.  
10656
10657         Contributed under MIT/X11 license.
10658
10659 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
10660
10661         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
10662
10663         * aot-runtime.c aot-compiler.c patch-info.h mini.c: Get rid of
10664         MONO_PATCH_INFO_WRAPPER, encode/decode wrapper methods like the others in
10665         encode/decode_method_ref ().
10666
10667         * aot-compiler.c (encode_patch): Handle STATIC_RGCTX_INVOKE wrappers.
10668
10669         * aot-runtime.c (decode_patch): Ditto.  
10670
10671         * mini.c (mono_resolve_patch_target): Handle RGCTX_FETCH sub-patches of type
10672         MONO_PATCH_INFO_METHOD.
10673
10674         * aot-runtime.c (decode_exception_debug_info): Decode the contents of
10675         MonoGenericJitInfo.
10676
10677         * aot-compiler.c (emit_exception_debug_info): Emit the contents of
10678         MonoGenericJitInfo.
10679
10680         * method-to-ir.c (emit_imt_argument): Fix AOT+gshared support.
10681
10682         * mini-amd64.c (add_valuetype): Use a dummy gsctx if we didn't receive
10683         one from the caller.
10684
10685         * aot-runtime.c (decode_generic_inst): New function to decode and
10686         return a interned generic inst.
10687         (decode_klass_ref): Use it.
10688         (decode_method_ref): Ditto.
10689
10690         * aot-compiler.c (emit_exception_debug_info): Save 
10691         jinfo->has_generic_jit_info too.
10692
10693 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
10694
10695         * mini-ia64.c (mono_arch_output_basic_block): Add OP_FCONV_TO_I.
10696
10697         * iltests.il.in: Add a test for fconv_to_i.
10698
10699         * liveness.c: Disable the liveness2 pass for now to save space.
10700
10701         * regalloc2.c: Include mempool-internals.h to fix warnings.
10702
10703         * aot-compiler.c (encode_method_ref): Encode the context of generic
10704         instance methods.
10705
10706         * aot-runtime.c (decode_method_ref): Inflate generic methods using
10707         the context saved in the aot file.
10708
10709         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
10710
10711         * mini-x86.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
10712
10713         * method-to-ir.c (mono_method_to_ir2): When using CEE_JMP, make arguments
10714         volatile so they won't be optimized away.
10715
10716 2008-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
10717
10718         * ssa.c:
10719         * ssa2.c:
10720         * mini.c:
10721         * regalloc2.c:
10722         * dominators.c: Remove duplicated functions that now are in
10723         mempool-internals.h.
10724
10725 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
10726
10727         * aot-compiler.c: Fix warnings.
10728
10729         * aot-runtime.c (decode_klass_ref): Add support for VARs/MVARs.
10730
10731         * aot-compiler.c (encode_klass_ref): Encode is_method too for VARs/MVARs.
10732
10733         * method-to-ir.c (emit_get_rgctx_method): Use MONO_PATCH_INFO_METHODCONST
10734         as the patch type.
10735
10736         * mini.c (mono_resolve_patch_target): Ditto.
10737         
10738         * aot-compiler.c (encode_patch): Add support for RGCTX_FETCH.
10739         (encode_klass_ref): Add support for encoding VARs/MVARs.
10740
10741         * mini.c (mono_patch_info_dup_mp): Handle RGCTX_FETCH.
10742
10743         * aot-runtime.c (decode_patch_info): Rename to 'decode_patch'. Split out
10744         the handling of the got entries into a separate 'decode_got_entry' function.
10745         Add support for RGCTX_FETCH.
10746
10747         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RDI since RAX is
10748         clobbered by the trampoline code.
10749
10750         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RAX since that is
10751         not clobbered by the indirect calling code.
10752
10753 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
10754
10755         * mini-x86.c (mono_arch_patch_code): Handle RGCTX_FETCH/GENERIC_CLASS_INIT
10756         to fix the build.
10757
10758 2008-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
10759
10760         * method-to-ir.c (mono_emit_method_call_full): Alloc the constructor
10761         signature using the compilation mempool otherwise we would leak it.
10762
10763 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
10764
10765         * method-to-ir.c (mono_method_to_ir2): Emit the generic class inits using
10766         mono_emit_abs_call ().
10767
10768         * patch-info.h: Add GENERIC_CLASS_INIT.
10769
10770         * mini.c (mono_resolve_patch_target): Handle GENERIC_CLASS_INIT.
10771
10772         * mini-amd64.c (emit_call_body): Treat abs calls which have a patch info
10773         as their target as a near call.
10774
10775         * mini.c (mono_codegen): Handle patches stored in cfg->abs_patches in the
10776         ABS handling code.
10777         (mono_resolve_patch_target): Add support for MONO_PATCH_INFO_RGCTX_FETCH.
10778
10779         * method-to-ir.c (mono_emit_abs_call): New helper function which emits a
10780         call to a runtime function described by a patch.
10781
10782         * method-to-ir.c: Emit rgctx entry fetches and class init trampolines using
10783         mono_emit_abs_call, this has the advantage that the ABS handling code in
10784         mono_codegen () can handle them both, and can handle other stuff in the
10785         future without additional code.
10786
10787         * mini.h (struct MonoJumpInfoRgctxEntry): New structure describing an rgctx
10788         entry.
10789         (MonoCompile): Add 'abs_patches' hashtable, which contains patches describing
10790         abs addresses.
10791
10792         * mini.h: Add missing bblock related prototypes.
10793
10794         * mini.h (MonoCompile): Remove unused reverse_inst_list and
10795         reverse_inst_list_len fields.
10796
10797         * mini.c: Refactor this file a bit by moving branch optimizations to 
10798         branch-opts.c.
10799
10800         * method-to-ir.c: Merge generic sharing changes missed earlier.
10801
10802         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST.
10803
10804         * aot-runtime.c (decode_patch_info): Refactor the code dealing with the
10805         shared patches. Process METHODCONST as a shared patch.
10806
10807         * liveness.c (mono_analyze_liveness): Disable the liveness2 code for now
10808         as it crashes on the 2.0 mscorlib.
10809
10810         * aot-compiler.c (is_shared_got_patch): Revert the last change as it seems
10811         to cause crashes.
10812         
10813         * aot-compiler.c: Use is_plt_patch () in a few additional places.
10814         (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST, which is generated
10815         by IMT.
10816
10817         * aot-compiler.c: Reorganize the got handling code to be a bit more
10818         understandable.
10819
10820 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
10821
10822         * aot-compiler.c: Make the patch_to_plt_offset hash table use 
10823         mono_patch_info_equals/hash, and use it to massively simplify
10824         get_plt_index ().
10825
10826         * mini.c (mono_patch_info_hash): Simplify this and add support for
10827         more patch types.
10828
10829         * patch-info.h: Rename RGCTX_LAZY_FETCH_TRAMPOLINE to just RGCTX_FETCH.
10830
10831         * mini.c aot-compiler.c aot-runtime.c: Revert the LAZY_FETCH_TRAMPOLINE
10832         handling code, since an offset is not enough to identify a trampoline.
10833
10834         * method-to-ir.c: Remove some g_assert (!cfg->compile_aot) lines.
10835
10836 2008-08-17  Mark Probst  <mark.probst@gmail.com>
10837
10838         * mini.c (mono_op_imm_to_op): Add case for OP_IMUL_IMM.
10839
10840         * method-to-ir.c (mono_method_to_ir2): Decompose OP_CKFINITE.
10841
10842         * mini-ops.h: Argument and result types for OVF_CARRY ops.
10843
10844         * decompose.c: PPC decompositions for various ops.
10845
10846         * cpu-ppc.md, inssel-ppc.brg, mini-ppc.c: PPC changes for Linear IL.
10847
10848 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
10849
10850         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Make this
10851         call the generic trampoline code using a call, instead of a jump, to
10852         remove some special casing from the generic trampoline code.
10853
10854         * mini.c (mono_resolve_patch_target): Handle LAZY_FETCH_TRAMPOLINE.
10855         (mono_codegen): Ditto.
10856
10857         * aot-compiler.c aot-runtime.c: Ditto.
10858
10859         * patch-info.h: Add MONO_PATCH_INFO_RGCTX_LAZY_FETCH_TRAMPOLINE.
10860
10861         * mini-trampolines.c (mono_find_rgctx_lazy_fetch_trampoline_by_addr): New
10862         helper function to find the offset corresponding to a lazy fetch trampoline.
10863
10864         * mini.h (MonoCompile): Add 'orig_method' field to hold the original method
10865         when doing generic sharing.
10866
10867         * aot-compiler.c: Use cfg->orig_method instead of cfg->method in a lot of
10868         places.
10869         
10870         * mini.c (mono_create_rgctx_lazy_fetch_trampoline): Move this to
10871         mini-trampolines.c to be with the other trampoline creation functions.
10872
10873         * method-to-ir.c (mono_emit_method_call): Remove the 'signature' argument
10874         as it is equal to method->signature in most cases, add a 
10875         mono_emit_method_call_full variant which takes a signature and an imt
10876         argument as well.
10877
10878 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
10879
10880         * jit-icalls.c (mono_helper_compile_generic_method): Don't pass the context
10881         to this function, since it could be computed easily from the method 
10882         argument.
10883         (mono_helper_compile_generic_method_wo_context): Removed, not needed any
10884         more.
10885
10886         * method-to-ir.c mini.c: Remove references to 
10887         compile_generic_method_wo_context.
10888
10889         * method-to-ir.c (mono_method_to_ir2): Enable AOT for virtual
10890         generic method calls.
10891         
10892         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_1 for 1
10893         dimensional non-szarrays.
10894
10895         * mini.c (mini_init): Register mono_array_new_1.
10896
10897         * jit-icalls.c (mono_array_new_1): New jit icall.
10898
10899         * mini-trampolines.c (mono_magic_trampoline): For jumps, patch the GOT entries
10900         pointing to the method.
10901
10902         * aot-runtime.c (mono_aot_get_method_from_token): Register GOT slots holding
10903         method addresses belonging to METHOD_JUMP patches in the 
10904         jump_target_got_slot_hash.
10905         (mono_aot_load_method): Ditto.
10906
10907         * aot-compiler.c (compile_method): Allow AOT compilation of methods with
10908         METHOD_JUMP patches.
10909
10910         * mini.c (mini_create_jit_domain_info): New helper function which 
10911         initializes/frees domain->runtime_info.
10912         (mini_free_jit_domain_info): Ditto.
10913         (mini_init): Install the domain hook functions with the runtime.
10914
10915         * mini.h (MonoJitDomainInfo): New structure which stores the domain specific
10916         information maintained by the JIT.
10917
10918         * mini.c (mono_resolve_patch_target): For PATCH_INFO_METHOD_JUMP, move the
10919         insertion into jump_table_hash into mono_codegen (), also implement proper
10920         locking.
10921
10922         * method-to-ir.c (mono_method_to_ir2): Don't disable AOT for CEE_JMP and
10923         tail calls, it is already done by the aot code.
10924         
10925         * method-to-ir.c (mono_method_to_ir2): Handle CEE_JMP using the tail call
10926         mechanism on amd64.
10927
10928         * iltests.il.in: Make the jmp test a bit more complex.
10929
10930         * aot-compiler.c (encode_method_ref): Handle references to normal methods of
10931         generic instances which doesn't have a token.
10932
10933         * aot-runtime.c (decode_method_ref): Ditto.
10934         
10935         * method-to-ir.c (handle_unbox_nullable): Don't disable AOT, the aot code
10936         can handle this case now.
10937         (handle_box): Ditto.
10938
10939 2008-08-15  Geoff Norton  <gnorton@novell.com>
10940
10941         * mini-x86.c: Fix alignment on Apple x86, and re-disable the alignment
10942         debugging check.
10943
10944 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
10945
10946         * method-to-ir.c (mono_method_to_ir2): Allow AOT compilation of methods
10947         calling generic methods.
10948
10949         * aot-compiler.c (encode_patch): Handle MONO_PATCH_INFO_METHOD_RGCTX.
10950
10951         * aot-runtime.c (decode_patch_info): Ditto.
10952
10953         * mini.c (mono_resolve_patch_target): Ditto.
10954         
10955         * patch-info.h: Add METHOD_RGCTX.
10956
10957         * mini-amd64.c (mono_arch_output_basic_block): Optimize LOCALLOC_IMM.
10958
10959 2008-08-14  Zoltan Varga  <vargaz@gmail.com>
10960
10961         * mini-amd64.c (mono_arch_emit_call): Nullify call->vret_var if returning
10962         arguments in registers.
10963
10964         * decompose.c (mono_decompose_vtype_opts): Create a var for the vreg in
10965         OP_VCALL too, don't depend on OP_OUTARG_VTRETADDR doing it.
10966
10967         * mini.c (mini_method_compile): Abort aot compilation for generic
10968         methods if generic sharing is disabled.
10969         
10970         * mini.c (mono_method_to_ir): Disable AOT for virtual calls requiring
10971         an mrgctx.
10972
10973         * method-to-ir.c (mono_method_to_ir2): Disable AOT for virtual calls 
10974         requiring an mrgctx.
10975
10976         * decompose.c (mono_decompose_vtype_opts): Emit the correct sized
10977         store instructions when converting a vcall to a normal call.
10978
10979         * mini.c (sigprof_signal_handler): Call mono_find_jit_info instead of
10980         mono_arch_find_jit_info.
10981
10982 2008-08-13  Zoltan Varga  <vargaz@gmail.com>
10983
10984         * method-to-ir.c (check_inline_called_method_name_limit): Optimize this to
10985         avoid calling mono_method_full_name () for every method even if the
10986         env var is not set.
10987         (check_inline_caller_method_name_limit): Ditto.
10988
10989 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
10990
10991         * driver.c (main_thread_handler): Allow AOT compilation of multiple 
10992         assemblies in one run.
10993
10994         * aot-compiler.c (mono_compile_assembly): Only print out a count of
10995         skipped methods if it is not 0.
10996
10997         * Makefile.am (aotcheck): AOT compile all test assemblies in one run.
10998
10999 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
11000
11001         * mini.c (mono_codegen):  Changing a preprocessor check from WIN64 to
11002           MONO_ARCH_HAVE_UNWIND_TABLE.
11003
11004         Contributed under MIT/X11 license.
11005
11006 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
11007
11008         * mini-amd64.c (mono_arch_cpu_optimizazions):  Remove peephole and branch
11009           from default optimizaton list on Winx64.
11010
11011         * mini-amd64.c (emit_tls_get):  Added Winx64 specific implementation for GetTLS.
11012
11013         * mini-amd64.c (mono_arch_emit_prolog):  Adding an offset on Winx64 to get
11014           the LMF from the MonoJitTlsData structure.
11015
11016         * mini-amd64.c (mono_arch_setup_jit_tls_data):  Added Winx64 implementation.
11017
11018         Contributed under MIT/X11 license.
11019
11020 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
11021
11022         * mini.c (sigsegv_signal_handler): Fix the build.
11023
11024         * mini-amd64.c (emit_call_body): Use image->aot_module instead of 
11025         assembly->aot_module.
11026
11027         * aot-runtime.c: Use image->aot_module instead of searching in the aot_modules
11028         hash table. This simplifies and speeds up a lot of code, and fixes support
11029         for .netmodules.
11030
11031         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes if the thread is not registered
11032         with the runtime.
11033
11034         * mini-exceptions.c: Ditto.
11035         
11036         * exceptions-*c.c (mono_arch_find_jit_info): Remove unused 'trace' and
11037         'native_offset' argument, since these are computed in the 
11038         mono_find_jit_info () function.
11039
11040         * mini-exceptions.c (mono_find_jit_info): Make this non-static, as it
11041         is used by exceptions-ppc.c.
11042
11043         * exceptions-ppc.c: Call mono_find_jit_info () instead of 
11044         mono_arch_find_jit_info ().
11045         
11046         * mini-ppc.h exceptions-ppc.c mini-mips.h mini-mips.c exceptions-mips.c
11047         mini-exceptions.c: Get rid of the CUSTOM_STACK_WALK stuff, use the
11048         generic code in mini-exceptions.c.
11049
11050 2008-08-11  Zoltan Varga  <vargaz@gmail.com>
11051
11052         * mini-ppc.c (mono_arch_flush_register_windows): Add this for ppc.
11053
11054         * aot-runtime.c (mono_aot_get_plt_info_offset): Fix a warning.
11055         
11056         * aot-runtime.c (mono_aot_get_method): Avoid doing all the loading inside
11057         the aot lock, to avoid deadlocks when mono_aot_get_class_from_name () is
11058         called while holding the loader lock. Fixes #415608.
11059         (mono_aot_get_method_from_token_inner): Ditto.
11060
11061 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
11062
11063         * exceptions-ppc.c (mono_jit_walk_stack): Use MONO_INIT_CONTEXT_FROM_CURRENT
11064         to reduce differences between this and the generic implementation in
11065         mini-exceptions.c.
11066         (ves_icall_get_frame_info): Ditto.
11067
11068         * mini-ppc.h (MONO_INIT_CONTEXT_FROM_CURRENT): Define this for ppc too.
11069
11070         * mini-exceptions.c (mono_exceptions_init): Remove an #ifdef which is no
11071         longer neccesarry.
11072
11073         * exceptions-ppc.c (arch_get_call_filter): Rename this to 
11074         mono_arch_get_call_filter () and make it non-static, for consistency with the
11075         other architectures.
11076
11077 2008-08-09  Rodrigo Kumpera  <rkumpera@novell.com>
11078
11079         * mini.c:
11080         * local-propagation.c:
11081         * mini-x86.c: Correct the name of arch defines.
11082
11083 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
11084
11085         * method-to-ir.c (mono_op_to_op_imm_noemul): Correct name of
11086         NO_EMULATE_LONG_SHIFT_OPS define.
11087
11088 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
11089
11090         * method-to-ir.c (mono_method_to_ir2): Remove some code from CEE_MONO_LDPTR
11091         now that aot-ed icall wrappers use CEE_MONO_ICALL_ADDR.
11092
11093         * aot-compiler.c aot-runtime.c: Add support for static aot compilation.
11094         MACH fixes. Merged from the 2.0 branch.
11095
11096         * method-to-ir.c (mono_method_to_ir2): Handle CEE_MONO_ICALL_ADDR.
11097
11098         * mini.c (mono_resolve_patch_target): Error out if an icall is not found.
11099         (mono_method_to_ir): Handle CEE_MONO_ICALL_ADDR.
11100
11101         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Add AOT support.
11102
11103         * method-to-ir.c mini.c driver.c aot-compiler.c: Update after
11104         mono_marshal_get_native_wrapper () signature changes.
11105
11106 2008-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
11107
11108         * jit-icalls.c (mono_fconv_ovf_u8): Work around soft-float double to long
11109         conversion bug under arm.
11110
11111 2008-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
11112
11113         * cpu-arm.md: Increase long_conv_to_ovf_i4_2 max length to 36.
11114
11115         * mini-arm.c (mono_arch_output_basic_block): Implement long to int conversion
11116         with overflow checking.
11117
11118 2008-08-05  Marek Habersack  <mhabersack@novell.com>
11119
11120         * Makefile.am (GENMDESC_PRG): when cross-compiling use full path
11121         to the genmdesc.pl file
11122
11123 2008-08-05  Zoltan Varga  <vargaz@gmail.com>
11124
11125         * ir-emit.h (EMIT_NEW_ARGSTORE): Fix the usage of param_types and
11126         arg_array in the soft-float versions of the LOAD/STORE macros.
11127
11128         * method-to-ir.c (mono_method_to_ir2): Fix a warning in the arm switch
11129         implementation.
11130
11131         * ir-emit.h (NEW_VARLOADA): Handle SOFT_FLOAT correctly.
11132
11133 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
11134
11135         * mini-ia64.c (add_valuetype): Only reserve half parameter slot for each member of
11136         a float HFA. Fixes #413621.
11137
11138 2008-08-02  Gert Driesen  <drieseng@users.sourceforge.net>
11139
11140         * mini-x86.c (mono_arg_get_argument_info): Rename last occurrence of
11141         frame_size to args_size. Fixes build.
11142
11143 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
11144
11145         * mini-x86.c (mono_arch_get_argument_info): Rename frame_size to args_size,
11146         and don't align it to MONO_ARCH_FRAME_ALIGNMENT.
11147
11148         * mini-x86.h: Change MONO_ARCH_FRAME_ALIGNMENT to 8 so doubles stored on
11149         the stack are not unaligned. Fixes #413247.
11150         
11151 Fri Aug 1 18:46:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
11152
11153         * mini.c: update jitted methods performance counters.
11154
11155 Fri Aug 1 16:30:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
11156
11157         * mini-exceptions.c: increase the exceptions thrown performance
11158         counter in mono_handle_exception ().
11159
11160 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
11161
11162         * aot-runtime.c: Use MonoImage's as keys in the aot_modules hash so the aot
11163         can work with netmodules.
11164
11165 2008-07-28  Geoff Norton  <gnorton@novell.com>
11166
11167         * mini-x86.h: Correct the frame alignment on OSX.  Fixes the jit 
11168         regression tests.
11169
11170 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
11171
11172         * mini-x86.c (mono_arch_emit_call): Emi the osx stack alignment at the
11173         correct place.
11174
11175 2008-07-28  Bill Holmes  <billholmes54@gmail.com>
11176
11177         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
11178           The float param registers and other param registers must be the 
11179           same index on Windows x64.
11180
11181         * mini-amd64.c (mono_arch_allocate_vars) : Implementing the 
11182           ArgValuetypeAddrInIReg argument case.  Setting the argument
11183           op to OP_VTARG_ADDR (OP_REGOFFSET)).
11184
11185         * mini-amd64.c (mono_arch_call_opcode) : Winx64 fix.  Use the size
11186           variable computed above as the copy length for arguments of storage
11187           type ArgValuetypeAddrInIReg.
11188
11189         * mini-amd64.c (mono_arch_emit_call) :  Implementing the 
11190           ArgValuetypeAddrInIReg argument case.  This case will rely on
11191           mono_arch_emit_outarg_vt to emit the correct code later in the process.
11192
11193         * mini-amd64.c (mono_arch_emit_call) :  On Winx64 there always needs to be
11194           a 32 byte stack allocation for all calls.  We will omit the adjustment for
11195           jump and tail call instructoins as they do not follow the typical call behavior.
11196
11197         * mini-amd64.c (mono_arch_emit_outarg_vt) :  Implementing the case for
11198           ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
11199           local variable and pass the local variable by reference to the called method.
11200
11201         * mini-amd64.c (mono_arch_emit_prolog, emit_load_volatile_arguments) :
11202           Implementing the ArgValuetypeAddrInIReg argument case.  When the address
11203           of a struct is passed in a register it must be saved with the other
11204           volatile argument on the stack.
11205
11206         * mini-amd64.c (mono_arch_emit_prolog) : Winx64 fix.  When omitting the
11207           frame pointer the stack adjustment value must be saved to the unwind 
11208           info structure.
11209
11210         Contributed under MIT/X11 license.
11211
11212 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
11213
11214         * inssel-x86.brg (stmt): Add missing OP_X86_OUTARG_ALIGN_STACK rule
11215         which got lost in the merge.
11216
11217 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
11218
11219         * method-to-ir.c: Make the helper_sig variables extern to fix the ppc
11220         build.
11221
11222         * mini-amd64.c (emit_call_body): Add a no_patch case missed earlier.
11223         
11224         * mini-amd64.c (emit_call_body): Avoid aligning the call instruction on
11225         icalls, since they won't be patched.
11226
11227         * exceptions-amd64.c (mono_arch_get_restore_context_full): Use a slightly
11228         different code sequence when running under valgrind to prevent some valgrind
11229         errors.
11230
11231         * iltests.il.in: Add new regression test.
11232
11233         * method-to-ir.c (mono_method_to_ir2): Fix handling of inlined methods which
11234         end with a throw.
11235
11236         * method-to-ir.c (mono_method_to_ir2): Use get_vreg_to_inst () instead of
11237         accessing cfg->vreg_to_inst directly to prevent a crash in LDFLD.
11238
11239         * iltests.il.in: Add new test.
11240
11241         * aot-compiler.c: Fix some warnings.
11242
11243         * decompose.c (mono_decompose_long_opts): Implement OP_ICONV_TO_OVF_I8_UN.
11244         Fixes #412494.
11245
11246 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
11247
11248         * driver.c (mono_main): Fix the --gc=none build. Fixes #412482.
11249         (mini_usage_jitdeveloper): Add a missing --wapi option.
11250
11251 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
11252
11253         * mini-codegen.c: Simplify the is_fp macros.
11254         (free_up_ireg): Remove, use free_up_reg instead.
11255         (free_up_reg): Fix the fp case.
11256
11257 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
11258
11259         * cpu-arm.md (loadr8_membase): Increase the length of this as this is not
11260         lowered earlier.
11261
11262         * exceptions-x86.c: Merge some changes which seemed to have got lost
11263         in the linear-ir merge.
11264
11265         * liveness.c: Disable the liveness2 pass on 32 bit platforms.
11266
11267         * method-to-ir.c (mono_handle_global_vregs): Make the component vregs of a
11268         long vreg volatile even if the variable was already created.
11269
11270         * liveness.c (update_liveness2): Avoid eliminating dead definitions of
11271         volatile variables.
11272
11273 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
11274
11275         * cpu-x86.md (fcall_membase): Increase the size of the fcall opcodes.
11276
11277         * mini.c (mono_jit_compile_method_inner): Add support for 
11278         MONO_EXCEPTION_BAD_IMAGE.
11279
11280         * method-to-ir.c (mono_method_to_ir2): Avoid a crash if 
11281         mini_method_get_context () returns NULL. Fixes #356531.
11282
11283         * mini.c (mono_method_to_ir): Ditto.
11284         
11285         * method-to-ir.c (mono_method_to_ir2): Create a variable if needed when
11286         accessing a field of a valuetype in LDFLD/STFLD. Fixes #412399.
11287
11288 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
11289
11290         * method-to-ir.c (mono_method_to_ir2): Initialize an uninitialized variable
11291         in the LDFTN implementation.
11292
11293 2008-07-25  Mark Probst  <mark.probst@gmail.com>
11294
11295         * mini-trampolines.c (mono_magic_trampoline): When sharing generic
11296         code, patch calls to icalls, too, even if they're not in the
11297         shared generic code hash.  Fixes #411962.
11298
11299 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
11300
11301         * cpu-x86.md: Increase the length of the fcall opcodes.
11302
11303         * mini-x86.c (emit_move_return_value): Avoid some precision issues for
11304         calls returning floats.
11305
11306         * method-to-ir.c (mono_method_to_ir2): Remove the generic sharing restrictions
11307         on NEWARR.
11308         
11309         * method-to-ir.c (mono_method_to_ir2): Merge some LDFTN gsharing changes
11310         missed earlier.
11311
11312         * method-to-ir.c (handle_delegate_ctor): Avoid putting dynamic methods
11313         into the domain->method_code_hash.
11314
11315         * aot-compiler.c: Fix win32 build.
11316
11317         * method-to-ir.c (EMIT_GET_RGCTX): Call EMIT_NEW_LDARG in emit_get_rgctx ().
11318         
11319         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_specific in the
11320         gshared NEWARR implementation.
11321
11322         * cpu-sparc.md: Remove duplicate localloc_imm opcode.
11323
11324         * ir-emit.h (NEW_ARGLOAD): Use cfg->args and cfg->arg_types so this macro
11325         can be used outside of method_to_ir.
11326
11327         * mini.h (MonoCompile): Add arg_types field.
11328
11329         * method-to-ir.c (inline_method): Save/Restore cfg->args and cfg->arg_types.
11330         
11331         * method-to-ir.c (mono_method_to_ir2): Set cfg->args and cfg->arg_types to
11332         the values of the local arg_array and param_types array.
11333
11334 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
11335
11336         * method-to-ir.c (mono_method_to_ir2): Allocate a GOT var for NEWOBJ, since
11337         got accesses might only get generated later when NEWOBJ is decomposed.
11338         
11339         * method-to-ir.c (handle_delegate_ctor): Add an optimization to avoid
11340         looking up the native code of the target method when a delegate is called
11341         for the first time.
11342
11343         * mini-trampolines.c (mono_delegate_trampoline): Add the other half of the
11344         optimization.
11345
11346         * debug-debugger.c (MONO_DEBUGGER__debugger_info): Fix a warning.
11347
11348         * aot-runtime.c aot-compiler.c: Add a new option 'no-dlsym' which makes
11349         AOT work on platforms without a working dlsym implementation.
11350
11351         * mini.h: Bump AOT image format version.
11352         
11353 2008-07-24  Mark Probst  <mark.probst@gmail.com>
11354
11355         * mini-exceptions.c: Free a MonoType with
11356         mono_metadata_free_type() instead of g_free().
11357
11358         * aot-runtime.c: Free a MonoType.
11359
11360 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
11361
11362         * method-to-ir.c (mono_method_to_ir2): Add a comment for the box+brtrue
11363         optimization.
11364
11365         * mini-codegen.c (mono_local_regalloc): Remove the remaining items from the
11366         fp stack on x86.
11367
11368 2008-07-23  Massimiliano Mantione  <massi@ximian.com>
11369         * mini.c (sigprof_signal_handler): call the new "runtime initialized"
11370         profiler hook.
11371
11372 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
11373
11374         * method-to-ir.c (mono_method_to_ir2): Set the stack type properly for
11375         NEWOBJ calls on valuetypes.
11376
11377         * iltests.il.in: Add new test.
11378
11379         * mini-x86.c (mono_arch_emit_call): Use mini_type_stack_size ().
11380
11381 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
11382
11383         * mini-exceptions.c: Fix some warnings. Remove one ia64 special case as it
11384         is no longer needed.
11385
11386         * mini-ia64.c (mono_arch_emit_prolog): In native-to-managed wrappers, widen
11387         non register sized integer arguments.
11388         (mono_arch_call_opcode): Add support for ArgInFloatRegR4.
11389         (mono_arch_emit_outarg_vt): Pass a more reasonable alignment to 
11390         emit_memcpy2 ().
11391
11392         * method-to-ir.c (mono_method_to_ir2): Handle the ret_var_is_local case in
11393         CEE_MONO_RETOBJ.
11394         
11395         * method-to-ir.c (ADD_WIDEN_OP): New macro to insert a widening op when
11396         two a binop with different sized arguments is emitted.
11397
11398         * mini.c (mono_bblock_insert_after_ins): Properly link up with the next
11399         instruction in the ins==NULL case.
11400
11401 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
11402
11403         * mini-ops.h: Add OP_X86_OUTARG_ALIGN_STACK.
11404
11405         * mini-x86.c: Fix osx build.
11406
11407         * mini-amd64.c (mono_arch_output_basic_block): Handle varargs in the CALL_REG
11408         opcodes as well.
11409
11410         * method-to-ir.c (mono_spill_global_vars): Avoid fusing a load+store into the
11411         instruction for non int sized variables.
11412
11413         * method-to-ir.c (mono_method_to_ir2): Fix an assert in the LDFLD
11414         implementation.
11415
11416 2008-07-23  Robert Jordan  <robertj@gmx.net>
11417
11418         * method-to-ir.c: Fix MSVC build.
11419
11420 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
11421
11422         * method-to-ir.c (mono_method_to_ir2): When calling native code which returns
11423         a non int sized type, widen it to an int since newer versions of gcc seem to
11424         generate code which needs this.
11425
11426         * ssa2.c abcremoval2.c: Fix warnings.
11427
11428         * *: Merge the Linear IR branch.
11429
11430         The original branch is at trunk/branches/vargaz/mini-linear-il, and
11431         the ChangeLog file there describes all the changes done over the years. 
11432         Further documentation can be found at www.mono-project.com/Linear_IL.
11433
11434 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
11435
11436         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
11437           The float param registers and other param registers must be the 
11438           same index on Windows x64.
11439
11440         Contributed under MIT/X11 license.
11441
11442 2008-07-21  Rodrigo Kumpera  <rkumpera@novell.com>
11443
11444         * mini.c: Make the previous fix GC safe.
11445
11446 2008-07-21  Raja R Harinath  <harinath@hurrynot.org>
11447
11448         * Makefile.am (version.h): Allow a trailing '/' in the repository URL.
11449
11450 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
11451
11452         * mini-amd64.c (get_call_info): Correcting the case for MONO_TYPE_TYPEDBYREF
11453           on Winx64.  This type will not be passed on the stack (ArgOnStack), but 
11454           ArgValuetypeAddrInIReg instead.
11455
11456         Contributed under MIT/X11 license.
11457
11458 2008-07-21  Zoltan Varga  <vargaz@gmail.com>
11459
11460         * mini-codegen.c (get_register_spilling): Fix a warning.
11461
11462 2008-07-17  Rodrigo Kumpera  <rkumpera@novell.com>
11463
11464         * mini.c: Use mono_runtime_class_init_full to avoid leaking memory
11465         for types which the initialization fails. Raises the provided exception
11466         at the right stop after cleanup.
11467
11468 2008-07-16  Zoltan Varga  <vargaz@gmail.com>
11469
11470         * aot-compiler.c: Free most of the memory allocated during compilation.
11471
11472         * mini.c (mini_parse_debug_options): Fix a leak.
11473         
11474         * mini.c (mini_method_compile): Don't add the method to the jit info tables
11475         during aot compilation.
11476
11477 2008-07-14  Zoltan Varga  <vargaz@gmail.com>
11478
11479         * mini.c (mono_method_to_ir): Disable aot for code using CCASTCLASS on x86 as 
11480         it has too much register pressure.
11481
11482 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
11483
11484         * inssel.brg (CEE_CASTCLASS): Remove some dead code.
11485
11486 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
11487
11488         * mini-x86.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
11489         on x86.
11490
11491         * mini-amd64.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
11492         on amd64 similar to the way it is done on arm.
11493
11494         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
11495
11496         * aot-runtime.c (load_aot_module): Rename 'info' to 'amodule' for 
11497         consistency, normalize error messages, avoid loading aot-only modules in
11498         normal mode.
11499
11500         * driver.c (mono_main): Rename --aot-only command line option to --full-aot
11501         for consistency.
11502
11503         * aot-compiler.c aot-runtime.c tramp-arm.c: Implement aot-only support.
11504
11505 2008-07-11  Martin Baulig  <martin@ximian.com>
11506
11507         * debug-debugger.h
11508         (MonoDebuggerInfo): Add `interruption_request'.
11509
11510 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
11511
11512         * aot-compiler.c (emit_plt): Remove some dead code.
11513
11514         * exceptions-arm.c (mono_arch_get_call_filter_full): Initialize ji.
11515
11516         * aot-runtime.c (mono_aot_get_plt_info_offset): New helper function to
11517         return the plt info offset belonging to a given plt entry.
11518
11519         * mini-trampolines.c (mono_aot_plt_trampoline): Use 
11520         mono_aot_get_plt_info_offset.
11521         
11522         * aot-runtime.c aot-compiler.c tramp-arm.c: Change the arm plt code to be
11523         similar to the amd64 code by makeing jumps through a separate jump table 
11524         instead of embedding the jump addresses into the code.
11525
11526 2008-07-11  Zoltan Varga  <vargaz@gmail.com>
11527
11528         * mini.c (mono_method_to_ir): Disable aot for calling ldtoken in a generic
11529         method.
11530
11531 2008-07-10  Martin Baulig  <martin@ximian.com>
11532
11533         * mini.c (mini_method_compile): Disable generics sharing when
11534         running in the debugger.
11535
11536 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
11537
11538         * mini.c (mono_method_to_ir): Create the got var in CEE_REFANYVAL.
11539
11540         * inssel.brg (CEE_CASTCLASS): Avoid reusing temporary registers to prevent
11541         the local register allocator from running out of registers on x86 when 
11542         using aot.
11543
11544 2008-07-10  Bill Holmes  <billholmes54@gmail.com>
11545
11546         * inssel-long.brg For OP_LCONV_TO_OVF_I4 an int cast is needed when 
11547         expressing IntMin for the VS Compiler.  See Compiler Warning (level 2) 
11548         C4146.
11549
11550         Contributed under MIT/X11 license.
11551
11552 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
11553
11554         * aot-compiler.c: Get rid of whitespace in the generated assembly file to
11555         speed up the assembler.
11556
11557 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
11558
11559         * mini-arm.h tramp-arm.c exceptions-arm.c aot-compiler.c: Beginnings of aot-only
11560         support.
11561
11562         * mini.c: Move the soft float handling macros a bit earlier, add 
11563         NEW_TEMPSTORE_SOFT_FLOAT macro, fix warnings, add soft-float support in one
11564         place.
11565
11566         * mini.h: Add prototype for mono_arch_fixup_jinfo.
11567
11568         * mini.c (mini_init): In aot-only mode, set the root domain code manager to
11569         read-only to help catch code allocation requests.
11570         
11571         * mini.c inssel.brg aot-compiler.c: Make the use of IMT runtime configurable,
11572         and turn it off when using --aot-only or when compiling with --aot=full.
11573
11574         * mini.c (mono_resolve_patch_target): In aot-only mode, allocate the
11575         jump table for switches from the normal domain mempool, not the code
11576         manager.
11577
11578         * mini-trampolines.c (get_unbox_trampoline): New function to return an
11579         unbox trampoline which handles aot-only mode too.
11580
11581         * aot-runtime.c (mono_aot_get_unbox_trampoline): New function to lookup
11582         an AOTed unbox trampoline.
11583
11584         * aot-compiler.c (emit_trampolines): Emit unbox trampolines.
11585
11586 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
11587
11588         * wapihandles.c: Fixing MSVC builds.  Include statement changed from <> to
11589         ""
11590
11591         Contributed under MIT/X11 license.
11592
11593 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
11594
11595         * mini.c (mono_codegen):  Allocate space at the end of the code block and store
11596           the unwind information for the method at the end of the allocated block.
11597           
11598         * mini-amd64.h: Added declarations for the unwind routines and adding field to 
11599           MonoCompileArch to hold the unwind info for SEH on Winx64
11600         
11601         * mini-amd64.c (mono_arch_emit_prolog): Calls to the unwind routines added to store
11602           frame pointer info for the method being compiled.
11603           
11604         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception): Added a stack adjustment before
11605           the call to mono_exception_from_token.
11606           
11607         * exceptions-amd64.c: Added mono_arch_unwindinfo* implementations.  This code is responsible
11608           storing the method prolog information in a format that the Winx64 SEH can understand.  This
11609           information is stored a the end of the method block because it is all 32-bit offset based.
11610
11611         Contributed under MIT/X11 license.
11612
11613 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
11614
11615         * mini.h: Remove duplicate definitions of the mini_wapi_ functions.
11616
11617         * wapihandles.c: Fix warnings.
11618
11619         * aot-runtime.c (load_aot_module): Add a missing error message in aot-only
11620         mode.
11621
11622         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Avoid calling 
11623         mono_jit_compile_method in aot-only mode since that calls the type 
11624         initializer.
11625         
11626         * mini-trampolines.c (mono_create_delegate_trampoline): Avoid calling
11627         get_delegate_invoke_impl in aot-only mode.
11628
11629         * mini.c (mono_global_codeman_reserve): Reenable the aot-only check.
11630
11631 2008-07-08  Zoltan Varga  <vargaz@gmail.com>
11632
11633         * trace.c (mono_trace_enter_method): Fix printing of Type instances.
11634
11635         * aot-compiler.c (compile_method): Disable the check for GSHARED since it
11636         is on by default.
11637
11638         * inssel-long.brg (reg): Add a rule for LCALL_REG (OP_I8CONST).
11639
11640         * tramp-amd64.c (mono_arch_nullify_plt_entry): Read the nullified class
11641         init trampoline from the AOT file as well.
11642
11643         * mini-amd64.c (mono_arch_register_lowlevel_calls): Register
11644         mono_amd64_throw_exception as a jit icall since it is needed by the aot-only
11645         code.
11646
11647         * mini.c (mini_init): Move the call to mono_exceptions_init () after 
11648         mono_init.
11649
11650         * exceptions-amd64.c: Add _full variants for the remaining exception code
11651         creation functions as well, allow emission of relocatable code, remove
11652         caching since that is now done by the caller.
11653
11654         * mini-exceptions.c: Add _full variants for the remaining exception code
11655         creation functions as well, add aot-only support.
11656
11657         * aot-compiler.c (compile_method): Allow calls to methods of constructed types
11658         if we can determine a proper token for them.
11659         (add_wrappers): Add a few more wrappers.
11660         (emit_method_code): Remove some dead code.
11661         (emit_trampolines): Emit exception code too.
11662
11663         * mini.c (mono_method_to_ir): Call mono_array_new_2 if possible.
11664
11665         * jit-icalls.c (mono_array_new_2): New jit icall, specialized version of
11666         mono_array_new_va which avoids varargs.
11667
11668         * mini-exceptions.c (mono_exceptions_init): Fix the ppc build.
11669
11670         * mini-trampolines.c: Call mono_create_specific_trampoline () instead of
11671         mono_arch_create_specific_trampoline () in all places.
11672
11673         * aot-compiler.c aot-runtime.c: Refactor the trampoline emitting/loading code
11674         a bit so it can be used for other things as well.
11675         
11676         * mini-exceptions.c (mono_exceptions_init): Initialize throw_exception_by_name
11677         on demand as well.
11678
11679         * exceptions-amd64.c: Rename the caching from the exception code creation
11680         functions, it is done by the caller instead.
11681         
11682         * exceptions-amd64.c: Change the signature of the exception code creation 
11683         functions to allow the creation of relocatable code later.
11684
11685         * mini-exceptions.c: Add a set of functions to query the various 
11686         runtime-generated exception functions.
11687
11688         * mini.c mini-exceptions.c: Use the newly added functions instead of the
11689         mono_arch_.. () functions.
11690         
11691 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
11692
11693         * mini-trampolines.c (mono_aot_get_trampoline_code): Removed, no longer used.
11694
11695         * aot-runtime.c aot-compiler.c: AOT the generic trampolines in aot-only mode.
11696
11697         * mini.c (mini_get_imt_trampoline): Call mono_create_specific_trampoline ().
11698         (mini_get_vtable_trampoline): Ditto.
11699
11700         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Create relocatable
11701         code in the AOT case by returning the code size and a list of relocations to
11702         the caller.
11703
11704         * mini-trampolines.c (mono_create_specific_trampoline): New helper function.
11705
11706 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
11707
11708         * mini-amd64.c:  On Winx64 the calling convention always requires the caller to 
11709           clean the stack.
11710
11711         Contributed under MIT/X11 license.
11712
11713 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
11714
11715         * aot-compiler.c (emit_exception_debug_info): Serialize the debug info first
11716         so the buffer size can be computed correctly. Fixes #404735.
11717
11718         * debug-mini.c (mono_debug_serialize_debug_info): Lookup the debug info
11719         normally as cfg->debug_info is already freed.
11720
11721 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
11722
11723         * mini-amd64.c: For calls returning vtypes in registers, don't store
11724         the return address on the stack, instead allocate a separate local for
11725         it. Fixes #404729.
11726
11727 2008-07-05  Mark Probst  <mark.probst@gmail.com>
11728
11729         * mini-trampolines.c, mini.h: Add an argument to
11730         mono_create_jit_trampoline_in_domain() for turning off the adding
11731         of the sync wrapper.
11732
11733         * mini.c: Use the JIT trampoline without sync instead of
11734         ldftn_nosync in static RGCTX invoke wrappers so that the call can
11735         be patched.
11736
11737 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11738
11739         * driver.c: Turn on GSHARED optimization by default.
11740
11741 2008-07-04  Zoltan Varga  <vargaz@gmail.com>
11742
11743         * mini-trampolines.c mini.c mini.h tramp-<ARCH>.c: Rename MONO_TRAMPOLINE_GENERIC
11744         to MONO_TRAMPOLINE_JIT since it better reflects what it does.
11745
11746         * mini-trampolines.c (mono_get_aot_trampoline_code): New internal function to
11747         create a variant of the generic trampoline code callable from AOTed trampolines.
11748
11749         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add support for generic
11750         trampoline code callable from AOTed trampolines.
11751
11752         * aot-compiler.c aot-runtime.c: Add support for AOTing trampolines.
11753
11754 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11755
11756         * inssel.brg, mini-ops.h: New opcode for doing CHECK_THIS in a
11757         pass-through manner.
11758
11759         * mini.c: Generic method sharing.  Pass MRGCTX to generic methods
11760         and don't fail sharing for them anymore.
11761
11762         * mini-exceptions.c: Handle exceptions in shared generic methods.
11763
11764         * generic-sharing.c: When checking the context of a generic
11765         method, also check its class's context.  Don't treat wrappers as
11766         sharable.
11767
11768         * mini-trampolines.c: Some code factored out to
11769         metadata/generic-sharing.c.  Handle the MRGCTX case.
11770
11771         * jit-icalls.c, jit-icalls.h: ldvirtfn icall for generic sharing -
11772         we must deal with the method being of another instantiation of the
11773         class.  Add static rgctx invoke wrappers to generic methods.
11774
11775 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11776
11777         * mini.c: Provide all jit infos of generic shared methods with a
11778         generic jit info.
11779
11780         * mini-exceptions.c: Handle the new situation that a generic info
11781         might be available, but not info about the this/vtable/mrgctx
11782         variable.
11783
11784 2008-07-03  Mark Probst  <mark.probst@gmail.com>
11785
11786         * mini.c: Don't accept ldftn and ldvirtftn with uninstantiated
11787         generic methods.
11788
11789 2008-07-03  Zoltan Varga  <vargaz@gmail.com>
11790
11791         * dominators.c (check_dominance_frontier): Fix a warning.
11792
11793         * mini.h: Add some missing prototypes.
11794
11795         * ssa.c local-propagation.c debug-debuger.c: Fix warnings.
11796
11797         * driver.c (mono_jit_init_version): Correct the comments since the first
11798         argument should be the name of the root domain, not a filename.
11799
11800         * aot-runtime.c (make_writable): Error out if this is called while running
11801         with --aot-only.
11802         (load_aot_module): Ditto.
11803
11804         * aot-compiler.c: Really fix the computation of method indexes.
11805
11806         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Remove the previous 
11807         optimizations as this is no longer called frequently.
11808
11809         * mini-trampolines.c (mono_create_delegate_trampoline): Precompute the invoke
11810         method and the invoke impl code and pass it to the delegate trampoline instead of
11811         just the delegate class.
11812
11813 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
11814
11815         * aot-compiler.c: Fixup the computation of method indexes.
11816         (add_wrappers): Create the base methods of the runtime invoke wrappers using
11817         the method builder infrastructure.
11818
11819         * aot-runtime.c (decode_exception_debug_info): Don't crash if the method
11820         has no header.
11821
11822         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): In aot-only
11823         mode, load the method right away instead of creating a trampoline.
11824
11825         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Eliminate locking.
11826
11827         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Eliminate locking, speed up
11828         some checks a bit.
11829
11830 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
11831
11832         * aot-runtime.c (decode_patch_info): Don't create trampolines in aot_only mode.
11833         (mono_aot_load_method): Use method_index instead of method->token.
11834
11835         * mini.c (mono_jit_compile_method_inner): Move the aot_only check down, so it
11836         can handle icalls etc. properly.
11837
11838         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
11839
11840         * aot-compiler.c aot-runtime.c: Allow AOTing many wrapper types.
11841
11842         * mini.c (mono_resolve_patch_target): Handle JIT_ICALL_ADDR.
11843         (mono_codegen): Convert calls made by JIT icall wrappers to the icalls into
11844         JIT_ICALL_ADDR patch type.
11845
11846         * patch-info.h: Add JIT_ICALL_ADDR patch type.
11847
11848         * mini.c (mono_method_to_ir): Allow AOTing methods which access the interruption
11849         request flag.
11850         (mono_resolve_patch_target): Handle INTERRUPTION_REQUEST_FLAG.
11851
11852         * patch-info.h: Add INTERRUPTION_REQUEST_FLAG.
11853
11854 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
11855
11856         * mini.c: Use domain->jit_code_hash_lock for controlling access to
11857         domain->jit_code_hash.
11858
11859 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
11860
11861         * mini.c (mini_parse_debug_options): Add 'dont-free-domains' option.
11862
11863 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
11864
11865         * mini-trampolines.c (mono_delegate_trampoline): Don't pass a gsctx to
11866         get_this_arg_from_call, let it compute it when needed.
11867
11868         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'code' argument, compute
11869         gsctx from code only when needed.
11870
11871         * mini-trampolines.c (get_generic_context): Rename this to 
11872         mono_get_generic_context_from_code (), and move it to generic-sharing.c, where
11873         it can be called by the arch backends.
11874
11875         * mini-exceptions.c (mono_print_thread_dump): Allow the argument to be NULL.
11876
11877 2008-06-26  Zoltan Varga  <vargaz@gmail.com>
11878
11879         * driver.c (mono_main): Add experimental --aot-only command line option.
11880
11881         * mini.c: Error out when creating trampolines or JIT compiling if --aot-only is
11882         set.
11883
11884 2008-06-26  Kornel Pal  <kornelpal@gmail.com>
11885
11886         * driver.c (DllMain): Remove mono_module_handle.
11887
11888         Contributed under MIT/X11 license.
11889
11890 2008-06-25  Zoltan Varga  <vargaz@gmail.com>
11891
11892         * aot-compiler.c: Add not-yet-usable 'full' option. Add some infrastructure code
11893         for emitting methods which are not in the source assembly. Detect and report
11894         failure of assembling+linking.
11895         
11896         * aot-compiler.c (emit_klass_info): Call mono_class_setup_vtable ().
11897
11898         * aot-compiler.c: Move the contents of the has_glot_slots array to MonoCompile.
11899
11900 2008-06-24  Rodrigo Kumpera  <rkumpera@novell.com>
11901
11902         * mini.c: Check if stats is enabled so we don't allocate memory when not needed.
11903
11904 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
11905
11906         * mini.h: Remove some obsolete prototypes.
11907
11908         * mini.c: Avoid storing MonoMethod pointers in the JIT stats, store their string format instead.
11909
11910 2008-06-24  Mark Probst  <mark.probst@gmail.com>
11911
11912         * mini.c (get_object_generic_inst): Variable-sized arrays are not
11913         supported by Visual Studio, so use alloca().
11914
11915 2008-06-23  Zoltan Varga  <vargaz@gmail.com>
11916
11917         * mini-ia64.c (add_valuetype): Increase *gr too when passing a HFA to be in sync with the ABi.
11918         Fixes #402585.
11919
11920 2008-06-23  Mark Probst  <mark.probst@gmail.com>
11921
11922         * mini.c: Fail sharing of a generic method if it contains an open
11923         catch clause (because we don't pass MRGCTXs yet).
11924
11925 2008-06-23  Mark Probst  <mark.probst@gmail.com>
11926
11927         * mini.c: When compiling a method with generic sharing, insert the
11928         method instantiated with an all-Object generic context into the
11929         jit info table, instead of the context of the first instantiation
11930         of the method we happen to compile.
11931
11932 2008-06-18  Martin Baulig  <martin@ximian.com>
11933
11934         * debug-debugger.h (MonoDebuggerInfo): Replaced `version' with
11935         `major_version' and `minor_version'.
11936
11937 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11938
11939         * generic-sharing.c, mini.c, mini.h, aot-runtime.c:
11940         mono_method_is_generic_sharable_impl() takes an additional
11941         argument specifying whether to treat type variables as reference
11942         types.
11943
11944 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11945
11946         * mini.h: Removed obsolete prototypes.
11947
11948 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11949
11950         * mini.c: Don't fail generic sharing for initobj and sizeof - we
11951         already handle them.
11952
11953 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11954
11955         * mini.h, mini-trampolines.c, tramp-alpha.c, tramp-amd64.c,
11956         tramp-arm.c, tramp-hppa.c, tramp-ia64.c, tramp-mips.c,
11957         tramp-ppc.c, tramp-s390.c, tramp-s390x.c, tramp-sparc.c,
11958         tramp-x86.c: Added a MonoGenericContext* argument to
11959         mono_arch_get_unbox_trampoline() so that it can call other
11960         functions which require it.
11961
11962 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11963
11964         * mini.h, mini-trampolines.c, mini-amd64.c, mini-x86.c,
11965         mini-alpha.c, mini-arm.c, mini-ia64.c, mini-ppc.c:
11966         mono_arch_get_this_arg_from_call() takes a
11967         MonoGenericSharingContext* as well.
11968
11969 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11970
11971         * mini.c: Factor out code for emitting unbox into emit_unbox() and
11972         implement generic sharing of unbox.
11973
11974 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11975
11976         * mini.c: Don't compute the vtable to determine whether a field is
11977         special static, because it might not work for open types.
11978
11979 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11980
11981         * mini.c: Removed the unused token_type and token_source arguments
11982         from get_runtime_generic_context_ptr().
11983
11984 2008-06-17  Marek Habersack  <mhabersack@novell.com>
11985
11986         * mini.c (ADD_BINOP): fix the build
11987
11988 2008-06-16  Zoltan Varga  <vargaz@gmail.com>
11989
11990         * mini.c (ADD_BINOP): When operating on a native int and an int32, insert
11991         a widening op.
11992
11993 2008-06-16  Mark Probst  <mark.probst@gmail.com>
11994
11995         * mini.h: Removed class relations enum that's not used anymore.
11996
11997 2008-06-16  Mark Probst  <mark.probst@gmail.com>
11998
11999         * tramp-x86.c, tramp-amd64.c: Slot access code for MRGCTXs.
12000
12001         * mini-trampolines.c: Distinguish between RGCTXs and MRGCTXs in
12002         the lazy fetch trampoline access code.
12003
12004 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
12005
12006         * mini-codegen.c (mono_local_regalloc): Add some micro optimizations.
12007
12008 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
12009
12010         * mini.c: Fix some soft-float bugs. Fixes #378735 and #398348.
12011
12012         * mini.h (MONO_INST_LIST_ENTRY): Fix warnings on arm.
12013
12014         * mini.c (mono_method_to_ir): Check call signature for NEWOBJ as well.
12015
12016 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
12017
12018         * mini-x86.c inssel-x86.brg cpu-x86.md: Implement unsigned min/max
12019         intrinsics.
12020
12021         * mini-ops.h: Add MIN/MAX_UN opcodes.
12022
12023         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Implement unsigned min/max
12024         intrinsics.
12025
12026         * basic-math.cs: Add more min/max tests.
12027
12028         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
12029
12030 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12031
12032         * mini.c: Small fix in the prologue of emit_castclass.
12033
12034 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
12035
12036         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
12037
12038         * mini.c (mini_get_inst_for_method): Remove the Min/Max intrinsics, they
12039         do not work even for unsigned types. Fixes #400014.
12040
12041         * basic-math.cs: Add regression tests for unsigned Min/Max.
12042
12043 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12044
12045         * mini.c: Added additional context_used argument to several
12046         functions, which will be needed for sharing generic methods.  Use
12047         GET_RGCTX macro wherever appropriate.  Declare only one
12048         context_used in mono_method_to_ir().
12049
12050 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12051
12052         * mini.c, generic-sharing.c: Removed generic class relations.
12053
12054         * mini.c, tramp-amd64.c, tramp-x86.c: Additional arguments to
12055         functions due to MRGCTX changes.
12056
12057 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12058
12059         * inssel.brg, inssel-long.brg, inssel-long32.brg, mini-ops.h,
12060         graph.c, local-propagation.c, aliasing.c: New opcodes for calls
12061         with calculated IMT.
12062
12063         * mini.c: Generic sharing of calls via generic interfaces.
12064
12065         * jit-icalls.c, jit-icalls.h: Helper function for compiling a
12066         generic method with non-constant MonoGenericContext*.  Instead,
12067         the context is taken out of the method itself.
12068
12069 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12070
12071         * mini.c: Generic sharing of ldvirtftn.
12072
12073 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12074
12075         * mini.c: Generic sharing of ldftn.
12076
12077 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12078
12079         * mini.c: Do pass VTable/RGCTX argument to static generic methods.
12080
12081 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12082
12083         * mini.c: Generic sharing of the special case of ldtoken followed
12084         by a call to GetTypeFromHandle.
12085
12086 2008-06-13  Mark Probst  <mark.probst@gmail.com>
12087
12088         * mini.c: Generic sharing of box for nullable types.
12089
12090 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
12091
12092         * mini-s390x.c (add_stackParm): Fix computation of offsets when arguments
12093         are passed on the stack. Fixes #324807.
12094
12095 2008-06-12  Bill Holmes  <billholmes54@gmail.com>
12096
12097         * mini-amd64.c:add_valuetype: Adding Winx64 code to fill the ArgInfo
12098         for the ArgValuetypeAddrInIReg case.
12099
12100         * mini-amd64.c:mono_arch_allocate_vars:  Adding a case for 
12101         ArgValuetypeAddrInIReg to avoid asserts.  Code needs to be added here.
12102
12103         * mini-amd64.c: mono_arch_call_opcode:  Adding Winx64 code for an ArgInfo of 
12104         type ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
12105         local variable and pass the local variable by reference to the called method.
12106           
12107         * mini-amd64.c: mono_arch_emit_prolog:  Adjust the stack for calls to
12108         mono_jit_thread_attach and mono_get_lmf_addr for Winx64.
12109
12110         Contributed under MIT/X11 license.
12111
12112 2008-06-10  Rodrigo Kumpera  <rkumpera@novell.com>
12113
12114         * debug-mini.c (mono_debug_free_method_jit_info): Moved to metadata/mono-debug.c.
12115
12116         * debug-mini.c (mono_debug_print_vars): Release memory after printing
12117         everything.
12118
12119 2008-06-10  Martin Baulig  <martin@ximian.com>
12120
12121         * debug-mini.c
12122         (mono_debug_close_method): Check whether `cfg->epilogue_begin != NULL'.
12123
12124 2008-06-09  Kornel Pal  <kornelpal@gmail.com>
12125
12126         * main.c: Add and set argv [argc] to NULL to match C specification that fixes
12127         possible error when no arguments are passed.
12128
12129         Contributed under MIT/X11 license.
12130
12131 2008-06-09  Rodrigo Kumpera  <rkumpera@novell.com>
12132
12133         * mini-exceptions.c (ves_icall_get_trace): Skip source locations
12134         where the file name is NULL.
12135
12136 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
12137
12138         * mini.c: Fix s390 build.
12139
12140 2008-06-08  Zoltan Varga  <vargaz@gmail.com>
12141
12142         * trace.c (mono_trace_parse_options): Fix warnings.
12143
12144         * mini-amd64.c: Revert most of the last patch for now as it breaks the build.
12145
12146 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
12147
12148         * mini.c (remove_block_if_useless): Avoid printing the method name.
12149         
12150         * mini.c: Remove needless setting of ins->cil_code which is now done by 
12151         MONO_INST_NEW.
12152
12153         * mini-amd64.c: Add some code to avoid saving callee saved registers in the
12154         LMF. Not yet used.
12155
12156         * tramp-amd64.c (mono_arch_patch_callsite): Tell valgrind to discard the
12157         translated code after it has been patched.
12158
12159 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
12160
12161         * mini-amd64.c (emit_call_body): Align the call displacement to 4 bytes to
12162         avoid problems during code patching on SMP systems.
12163         (emit_call): Avoid adding a patch info which is already added by 
12164         emit_call_body.
12165         (mono_arch_emit_exceptions): Ditto.
12166
12167 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
12168
12169         * tramp-*.c (mono_arch_get_unbox_trampoline): No need to check for ret->byref,
12170         MONO_TYPE_ISSTRUCT already checks for it.
12171
12172 2008-06-05  Bill Holmes  <billholmes54@gmail.com>
12173
12174         * mini-amd64.c:merge_argument_class_from_type: When marshaling 
12175           structs with floats on Winx64 the float registers are not used.  
12176           The integer registers are always used..
12177         * mini-amd64.c:add_valuetype:  When marshaling structs on Winx64 
12178           only one register will be used and only if the size of the struct 
12179           is 1,2,4, or 8 bytes.
12180
12181         * tramp-amd64.c :  Adjusting size used for mono_global_codeman_reserve
12182           to work for Winx64.
12183
12184         Contributed under MIT/X11 license.
12185
12186 2008-06-05  Martin Baulig  <martin@ximian.com>
12187
12188         * debug-debugger.c (debugger_lookup_class): Also call
12189         mono_class_setup_methods() here; we're only called from RTI.
12190
12191 2008-06-05  Andreas Farber  <andreas.faerber@web.de>
12192
12193         * mini.c (mini_init): Add DTrace probes ves-init-{begin,end}.
12194         (mini_method_compile) Add DTrace probes method-compile-{begin,end}.
12195         * Makefile.am (libmono_la_LIBADD,libmono_static_la_LIBADD,mono_LDADD):
12196         Post-process object files and add dtrace-generated object, if necessary.
12197
12198         Contributed under MIT/X11 license.
12199
12200 2008-06-04  Mark Probst  <mark.probst@gmail.com>
12201
12202         * inssel.brg, mini-ops.h: Added opcode for unboxcast with computed
12203         element class.
12204
12205         * mini.c: Generic sharing for unbox.any and castclass.
12206
12207 2008-06-04  Mark Probst  <mark.probst@gmail.com>
12208
12209         * mini.c: Ignore tailcall prefix in shared generic code and when
12210         doing calls which require a vtable/rgctx argument.
12211
12212 2008-06-04  Mark Probst  <mark.probst@gmail.com>
12213
12214         * mini.c: Don't free the JIT info.
12215
12216         * driver.c: Changes in the JIT info table testing code.
12217
12218 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
12219
12220         * tramp-arm.c (mono_arch_create_trampoline_code): Check for thread 
12221         interruption. Fix some warnings.
12222
12223         * tramp-*.c (mono_arch_create_trampoline_code): Call the _force_ variant of
12224         interruption_checkpoint.
12225
12226 Tue Jun 3 13:07:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
12227
12228         * jit.h, mini.h, trace.c, driver.c: introduce an API to enable tracing
12229         from embedding applications.
12230
12231 2008-06-02  William Holmes  <billholmes54@gmail.com>
12232
12233         * mini-amd64.c :  Correcting some of the issues for Winx64 dealing with
12234           reserving 32 bytes on the stack when making calls. 
12235
12236         Contributed under MIT/X11 license.
12237
12238 2008-06-01  Zoltan Varga  <vargaz@gmail.com>
12239
12240         * mini-arm.c (mono_arch_output_basic_block): Merge some small fixes from
12241         the linear IL branch.
12242
12243         * driver.c: Print out more information for --version on arm.
12244
12245 2008-05-30  Zoltan Varga  <vargaz@gmail.com>
12246
12247         * mini-amd64.c (mono_arch_emit_prolog): Increase max_offset when processing
12248         bb_exit instead, since out of line bblocks might not actually be emitted
12249         out-of-line.
12250         
12251         * mini-amd64.c (mono_arch_emit_prolog): Increase bb->max_offset by the
12252         maximum epilog size for out of line bblocks if tracing is enabled.
12253
12254         * iltests.il.in: Merge tests/long-shift.regalloc.il into this file.
12255
12256 2008-05-28  Rodrigo Kumpera  <rkumpera@novell.com>
12257
12258         * arrays.cs: Regression tests for allocating arrays with negative sizes.
12259
12260 2008-05-28  Zoltan Varga  <vargaz@gmail.com>
12261
12262         * mini-x86.h mini-x86.c inssel-x86.brg cpu-x86.md: Add support for
12263         CAS instrinsics. Optimize the implementation of the ATOMIC_EXCHANGE 
12264         opcodes.
12265
12266 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
12267
12268         * mini.c (mini_get_inst_for_method): Add support for CAS instrinsics when
12269         the 'value' to store is a constant.
12270
12271         * mini-ops.h: Add OP_ATOMIC_CAS_IMM opcodes.
12272
12273         * mini-amd64.c (mono_arch_output_basic_block): Optimize the the implementation
12274         of ATOMIC_EXCHANGE opcodes, add support for the CAS opcodes.
12275
12276 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
12277
12278         * mini.c generic-sharing.c jit-icalls.c aot-compiler.c: Use accessor functions
12279         for accessing method->generic_container.
12280
12281 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
12282
12283         * mini.c (mono_method_check_inlining): Avoid creating vtables if possible.
12284         
12285         * mini.c (SIG_HANDLER_SIGNATURE): Fix sparc build too.
12286
12287         * mini.c (SIG_HANDLER_SIGNATURE): Fix IA64 build.
12288
12289         * mini.c (mono_jit_compile_method_inner): Avoid a crash if mono_class_vtable ()
12290         fails.
12291
12292 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
12293
12294         * driver.c (mono_main): Set mono_setup_vtable_in_class_init to FALSE.
12295
12296         * mini.c: Handle the case when mono_class_vtable () fails.
12297
12298 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
12299         * mini.c (sigprof_signal_handler): Support call chains (backtrace) in
12300         the stat profiler.
12301
12302 2008-05-22  Mark Probst  <mark.probst@gmail.com>
12303
12304         * mini.c, jit-icalls.c, jit-icalls.h: Make generic sharing work
12305         together with domain sharing.
12306
12307 2008-05-22  Mark Probst  <mark.probst@gmail.com>
12308
12309         * mini.c: Treat callvirts to final methods like non-virtual calls
12310         when doing generic sharing, i.e. look them up in the runtime
12311         generic context.
12312
12313 2008-05-22  Mark Probst  <mark.probst@gmail.com>
12314
12315         * inssel.brg, mini-ops.h: Added opcodes for mkrefany and refanyval
12316         with computed types (for generic sharing).
12317
12318         * mini.c: Generic sharing for mkrefany and refanyval.
12319
12320 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
12321
12322         * inssel.brg (mini_emit_virtual_call): Avoid constructing a generic vtable if
12323         possible.
12324
12325         * mini-trampolines.c (mono_magic_trampoline): Avoid calling setup_methods () in
12326         the generic sharing code.
12327         
12328         * mini-trampolines.c (mono_magic_trampoline): Call mono_class_setup_methods ()
12329         when needed.
12330
12331 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
12332
12333         * mini.h: Remove the declaration of mono_aot_init_vtable ().
12334
12335 2008-05-21  C.J. Adams-collier <cjac@colliertech.org>
12336
12337         * driver.c: updated copyright date
12338
12339 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
12340
12341         * aot-runtime.c mini.c: Remove the AOT init_vtable stuff as it is no longer
12342         needed.
12343
12344 2008-05-19  Martin Baulig  <martin@ximian.com>
12345
12346         * debug-debugger.h (MonoDebuggerInfo): Add `using_mono_debugger'
12347         pointing to the new `_mono_debug_using_mono_debugger' variable.
12348
12349         * driver.c
12350         (mono_main): Check mono_debug_using_mono_debugger() rather than
12351         the `MONO_INSIDE_MDB' environment variable to check whether we're
12352         inside the debugger.
12353
12354 2008-05-19  Zoltan Varga  <vargaz@gmail.com>
12355
12356         * mini.c (mini_method_compile): Use cfg->args [0] for accessing the this
12357         argument.
12358
12359 2008-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
12360
12361         * declsec.h: Move MONO_SECMAN_FLAG to metadata/metadata-internals.h.
12362
12363         * mini.c: Added mini_assembly_can_skip_verification. This
12364         function checks if the assembly requested to skip verification. 
12365         Fixes part of #387274.
12366
12367 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
12368
12369         * mini.c (mini_get_method): Disable the check for open generic classes when
12370         using generic sharing.
12371
12372         * generics.cs: Add a test for #387034.
12373
12374         * mini.c (mini_get_method): Check whenever the method class is an open generic
12375         type, and return NULL in that case, causing a verification error. Fixes
12376         #384123.
12377
12378 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
12379
12380         * driver.c (mono_main): Revert r102623. The right
12381         thing to do is to enable the verifier under verifiable
12382         unless a --security flag was passed.
12383
12384         We need this non-trivial behavior for --verify-all otherwise
12385         mcs-compileall won't be able to use it. As it needs everything to
12386         be verified under validil.
12387
12388 2008-05-06  Martin Baulig  <martin@ximian.com>
12389
12390         Fix #383749.
12391
12392         * debug-mini.c (mono_debugger_thread_created): Add proper locking.
12393         (mono_debugger_thread_cleanup): Likewise.
12394         (mono_debugger_extended_notification): Likewise.
12395
12396 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
12397
12398         * mini.c (mono_method_to_ir): Verify visibility of call related opcodes
12399         against both inflated and non-inflated methods. We need to check against the
12400         generic definition for cases where the instantiated method is not visible.
12401         We need to check against the inflated types for cases where the instantiation
12402         changes any super type. This fixes #382986.
12403
12404         Note that this doesn't need to be applied to other parts of mono_method_to_ir
12405         that check for visibiliy as generic params only appears as the type subject
12406         of tokens on call opcodes. Field manipulation and ldftn must always
12407         target an exact type.
12408
12409 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
12410
12411         * driver.c (mono_main): Using --verify-all enables the verifier under validil mode
12412         if no related --security flag is passed.
12413
12414 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
12415
12416         * mini-arch.h: Prepare support for ppc64.
12417
12418         Contributed under MIT/X11 license.
12419
12420 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
12421
12422         * aot-runtime.c: Prepare support for ppc64.
12423
12424         Contributed under MIT/X11 license.
12425
12426 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
12427
12428         * mini-ops.h: Prepare support for ppc64.
12429
12430         Contributed under MIT/X11 license.
12431
12432 2008-05-04  Andreas Farber  <andreas.faerber@web.de>
12433
12434         * helpers.c: Add support for OSX/ppc64 and Linux/ppc64 (dis)assemblers.
12435
12436         Contributed under MIT/X11 license.
12437
12438 2008-05-03  Zoltan Varga  <vargaz@gmail.com>
12439
12440         * aot-runtime.c (load_aot_module): Avoid trying to load aot code for dynamic
12441         assemblies, since aot_name is not a full path, causing us to load MS.NET 
12442         assemblies on windows.
12443
12444 ?2008-04-28  Kornel Pal  <kornelpal@gmail.com>
12445
12446         * mini.c (mono_jit_compile_method_inner): Use g_warning instead of g_error
12447         for unsupported METHOD_IMPL_ATTRIBUTE_NATIVE.
12448         * main.c: Use UTF-8 encoded command line instead of Windows default code
12449         page on Windows to support Unicode.
12450         * driver.c (DllMain): New function for mixed-mode assembly support.
12451         * Makefile.am: Add -Wl,--kill-at to libmono_la_LDFLAGS on Windows to
12452         export __stdcall functions without decoration.
12453
12454         Contributed under MIT/X11 license.
12455
12456 2008-04-28  Mark Probst  <mark.probst@gmail.com>
12457
12458         * tramp-amd64.c, mini-amd64.c: Preserve R11 in the trampoline by
12459         saving it very early.
12460
12461 2008-04-28  Mark Probst  <mark.probst@gmail.com>
12462
12463         * mini.h, mini.c: Lots of code for accessing the old RGCTX
12464         deleted.  The only way to access the new RGCTX is via the
12465         trampline.
12466
12467         * mini.c, mini-amd64, mini-x86.c, mini-exceptions.c: Pass the
12468         vtable instead of the RGCTX to static methods.
12469
12470         * mini-tramplines.c, tramp-amd64.c, tramp-x86.c: Trampoline for
12471         accessing the new RGCTX.
12472
12473         * generic-sharing.c: There is no separation between self, type
12474         arguments and other types in the RGCTX anymore.
12475
12476 2008-04-25  Jonathan Chambers <joncham@gmail.com>
12477
12478         * mini-amd64.c (add_general): Remove previous stack adjustment.
12479         (mono_arch_call_opcode): Remove OP_OUTARG_MEMBASE and instead simply
12480         adjust stack pointer after pushing args. Adjust ARGS_OFFSET to account
12481         for 32 bytes of stack space reserved for all calls.
12482         
12483         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Remove.
12484         (OP_AMD64_OUTARG_ALIGN_STACK): Take argument to specify size of stack 
12485         adjustment.
12486         
12487         Code contributed under MIT/X11 license.
12488
12489 2008-04-23  Rodrigo Kumpera  <rkumpera@novell.com>
12490
12491         * mini.c (mini_method_verify): Only verify non-inflated methods, check
12492         against the root definition, peeling out method and type instantiations.
12493         Cache verify success results, code that fails verification is still
12494         checked multiple times.
12495
12496 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
12497
12498         * mini.c (mono_method_to_ir): Avoid inserting write barriers for stores of null.
12499
12500 2008-04-23  Jonathan Chambers <joncham@gmail.com>
12501
12502         * mini-amd64.c (add_general): Always increment stack on Win64.
12503         (mono_arch_call_opcode): Use OP_OUTARG_MEMBASE instead of OP_OUTARG
12504         on Win64.
12505         
12506         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Add OP_OUTARG_MEMBASE for 
12507         stack based argument handling on Win64.
12508         
12509         Code contributed under MIT/X11 license.
12510
12511 2008-04-23  Raja R Harinath  <harinath@hurrynot.org>
12512
12513         * Makefile.am (version.h): Add support for git-svn.
12514
12515 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
12516
12517         * mini-exceptions.c (mono_handle_native_sigsegv): Rework the gdb calling code
12518         so instead of calling g_spawn_command_line_sync, we do everything by hand, 
12519         avoiding allocations and libc functions which might deadlock.
12520         
12521         * mini-exceptions.c (mono_handle_native_sigsegv): Avoid calling gdb if the
12522         'no-gdb-backtrace' option is set.
12523
12524         * mini.c (mini_parse_debug_options): Parse 'no-gdb-backtrace' option.
12525
12526         * mini.h (MonoDebugOptions): Add 'no_gdb_backtrace' option.
12527
12528 2008-04-21  Martin Baulig  <martin@ximian.com>
12529
12530         * debug-debugger.h (MonoDebuggerInfo): Removed `attach', `detach'
12531         and `get_lmf_addr'; `notification_address' is no longer a pointer.
12532
12533 2008-04-21  Martin Baulig  <martin@ximian.com>
12534
12535         * debug-debugger.h (MonoDebuggerInfo): Added `thread_vtable_ptr',
12536         `thread_vtable', `event_handler_ptr' and `event_handler'.
12537
12538 2008-04-21  Martin Baulig  <martin@ximian.com>
12539
12540         * debug-debugger.h (MonoDebuggerInfo): Added `init_code_buffer';
12541         allows delayed initialization of the `executable_code_buffer' when
12542         attaching.
12543
12544 2008-04-21  Martin Baulig  <martin@ximian.com>
12545
12546         * mini.h (mono_debugger_create_notification_function): Removed.
12547         * tramp-*.c (mono_debugger_create_notification_function): Removed.
12548
12549         * mdb-debug-info64.s
12550         (MONO_DEBUGGER__notification_function): Added this in the .text section.
12551
12552         * mdb-debug-info32.s
12553         (MONO_DEBUGGER__notification_function): Added this in the .text section.
12554
12555         * Makefile.am: Fix the mdb-debug-info*.s logic; the debugger
12556         currently only works on x86 and x86_64, so don't create it on ppc.
12557
12558 2008-04-21  Martin Baulig  <martin@ximian.com>
12559
12560         * mini.h (MonoDebugOptions): Added `mdb_optimizations'.
12561
12562         * mini.c
12563         (mini_method_compile): In the fp elimination check, check
12564         `debug_options.mdb_optimizations' in addition to
12565         mono_debug_using_mono_debugger().       
12566
12567         * driver.c (mono_main): Added `--debug=mdb-optimizations' option to
12568         disable some JIT optimizations which are only disabled when
12569         running inside the debugger.
12570         Added `--help-debug' option to describe the debugging options.
12571         (parse_debug_options): New static function to parse the `--debug'
12572         options, so we can easily add more stuff in future.
12573
12574 2008-04-20  Zoltan Varga  <vargaz@gmail.com>
12575
12576         * mini.c (set_exception_type_from_invalid_il): Avoid reading invalid memory when
12577         the method has no body.
12578
12579 2008-04-19  Jonathan Chambers <joncham@gmail.com>
12580
12581         * mini-amd64.c (cpuid): Implement with MSVC intrinsic as inline
12582         assembly is not allowed in MSVC 64-bit compiler. 
12583         (mono_arch_cpu_init): Don't set floating point precision on MSVC build
12584         as we get floating point exceptions everywhere.
12585         
12586         * exceptions-amd64.c (get_throw_trampoline): Push empty args on stack to
12587         correctly align arguments for call to throw_exception.
12588         (prepare_for_guard_pages): Cast to guint64 instead of unsigned long.
12589         
12590         Code contributed under MIT/X11 license.
12591
12592 2008-04-19  Zoltan Varga  <vargaz@gmail.com>
12593
12594         * mini-amd64.c (amd64_patch): Make the check for (%rip) addressing more strict.
12595
12596 2008-04-17  Zoltan Varga  <vargaz@gmail.com>
12597
12598         * inssel.brg (OP_SWITCH): Use (gint64) instead of (long) to cast a large constant.
12599
12600         * mini-amd64.c (NEW_INS): Set cil_code.
12601
12602         * mini.c (mini_method_compile): Move the disabling of fp elimination to here
12603         from mini-amd64.c so all debugger related logic is in one place.
12604
12605         * mini.c: Set cfg->ip to NULL after passes which set it so instructions created
12606         later won't have a random ip assigned to them.
12607
12608 2008-04-16  Zoltan Varga  <vargaz@gmail.com>
12609
12610         * mini-trampolines.c (mono_create_jump_trampoline): Add an assert to check that
12611         the arch specific function initializes code_size.
12612         (mono_create_delegate_trampoline): Ditto.
12613
12614         * mini-mips.h mini-mips.c inssel-mips.brg inssel-long32-mips.brg cpu-mips.md
12615         tramp-mips.c: Resurrect MIPS port and also fix the issues on little-endian
12616         platforms.
12617
12618         * liveness.c (mono_analyze_liveness): Disable the initlocals optimization if 
12619         running under the debugger.
12620
12621         * linear-scan.c (mono_linear_scan): Avoid sharing registers if running under the
12622         debugger.
12623
12624         * mini.c (mini_method_compile): Set a few flags in cfg if running under the
12625         debugger. Also move the disabling of optimizations here from driver.c.
12626         (mono_allocate_stack_slots_full): Avoid sharing stack slots if running under the
12627         debugger.
12628
12629         * mini.h (MonoCompile): Add a few new flags.
12630
12631 2008-04-15  Zoltan Varga  <vargaz@gmail.com>
12632
12633         * mini.c (mono_method_to_ir): Set cfg->ip before processing an IL instruction
12634         so the cil_code field of created MonoInst's is properly set.
12635         (mini_select_instructions): Ditto.
12636
12637         * mini.h (MONO_INST_NEW): Initialize the cil_code field using cfg->ip.
12638         (MONO_INST_NEW_CALL): Ditto.
12639
12640         * mini.c inssel.brg inssel-x86.brg inssel-amd64.brg: Use MONO_INST_NEW ()
12641         in many places so the ins->cil_code field is properly initialized.
12642
12643         * mini.c (mono_bblock_add_inst): Call MONO_ADD_INS () so the logic is in one
12644         place.
12645
12646 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
12647
12648         * mini.c (mini_method_compile): Print a different message when compiling a 
12649         shared method.
12650         
12651         * mini.c (GENERIC_SHARING_FAILURE): Print a failure message when verbose_level
12652         > 1.
12653
12654 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
12655
12656         * mini-amd64.c (mono_arch_output_basic_block): Implement OP_ABS directly using
12657         SSE2 instructions.
12658
12659         * basic-math.cs: Fix warnings. Add a test for Math.Abs ().
12660         
12661 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
12662
12663         * mini.c (handle_stack_args): Make this return void since its return value was
12664         never used. Also set cfg->unverifiable for invalid IL instead of calling
12665         G_BREAKPOINT ().
12666
12667 2008-04-10  Mark Probst  <mark.probst@gmail.com>
12668
12669         * mini.c: Make sure "this" is live in catch clauses with type
12670         variables in shared generic code.
12671
12672 2008-04-08  Mark Probst  <mark.probst@gmail.com>
12673
12674         * mini.c: Replaced uses of MONO_TYPE_IS_REFERENCE with calls to
12675         generic_class_is_reference_type() to ensure the proper behaviour
12676         when sharing generic code and the type in question is a type
12677         argument.
12678
12679 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
12680
12681         * mini-exceptions.c: Applied patch from Mark Spruiell (mes@zeroc.com). Fix
12682         race conditions when printing thread dumps. Fixes #377738.
12683
12684 2008-04-08  Massimiliano Mantione  <massi@ximian.com>
12685         
12686         aliasing.c (update_aliasing_information_on_inst): Fixed a bug which
12687         shows up when both MonoInst arguments can cause aliasig.
12688         There is likely no way in the current JIT to trigger this problem, but
12689         it showed up in the development of generics sharing, when in a new
12690         opcode both args of an OP_GROUP can be aliases (addresses of a local).
12691         When the generics sharing code will be committed, its tests will be
12692         valid also for this bug.
12693
12694 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
12695
12696         * aot-runtime.c (decode_patch_info): Always transform PATCH_INFO_WRAPPER to
12697         PATCH_INFO_METHOD.
12698
12699         * mini.c (mono_resolve_patch_target): Fix a crash in the AOT case if method is
12700         NULL.
12701
12702 2008-04-07  Zoltan Varga  <vargaz@gmail.com>
12703
12704         * mini-exceptions.c (mono_handle_exception_internal): When --debug=casts is used,
12705         use a more detailed exception message for InvalidCastException.
12706
12707         * mini.h (MonoJitTlsData): Add 'class_cast_from' and 'class_cast_to' fields.
12708
12709         * driver.c (mono_main): Add --debug=casts option to turn on better 
12710         InvalidCastException message details.
12711
12712         * mini.c (mini_get_debug_options): New helper function to return the address of
12713         the debug_options variable.
12714
12715         * mini.c (mono_get_jit_tls_intrinsic): New helper function to create a load of
12716         the jit_tls TLS variable.
12717
12718         * mini.c (mono_jit_tls): New TLS variable.
12719
12720         * inssel.brg: Save the details of a cast to a TLS variable when the --debug=casts
12721         option is used.
12722
12723 2008-04-07  Rodrigo Kumpera  <rkumpera@novell.com>
12724
12725         * mini.h: Removed verifer related stuff. This code was moved to verify.c
12726
12727         * mini.c: Removed verifer related stuff, code moved to verify.c.
12728
12729         * driver.c: Using code from verify.c instead of mini.c.
12730
12731 2008-04-05  Zoltan Varga  <vargaz@gmail.com>
12732
12733         * mini.c (check_for_method_verify): Remove the mscorlib comment since it is no
12734         longer valid.
12735
12736 2008-04-04  Rodrigo Kumpera  <rkumpera@novell.com>
12737
12738         * mini.c (check_for_method_verify): Enabling verification of
12739         corlib if mono_verify_all is set. Bugs in the verifier preventing that
12740         have been fixed.
12741
12742 2008-04-04  Zoltan Varga  <vargaz@gmail.com>
12743
12744         * exceptions-amd64.c (throw_exception): Unify the win32/non-win32 cases, save
12745         caller saved registers as well.
12746         
12747         * exceptions-amd64.c (mono_arch_get_restore_context): Restore most caller
12748         saved registers as well.
12749
12750 2008-03-30  Zoltan Varga  <vargaz@gmail.com>
12751
12752         * mini-x86.c cpu-x86.md inssel-x86.brg: Add min/max intrinsics.
12753
12754         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of the non-SSE2 floating point
12755         code.
12756
12757 2008-03-27  Zoltan Varga  <vargaz@gmail.com>
12758
12759         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'gsctx' argument and pass it
12760         to get_call_info.
12761         (get_call_info): Take a gsctx argument instead of 'cfg'.
12762
12763 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
12764
12765         * mini.c (check_for_method_verify): Avoid verifying mscorlib methods even if
12766         mono_verify_all is set.
12767
12768         * driver.c (compile_all_methods_thread_main): Don't exit at the first error.
12769
12770         * mini.c mini.h: Remove the unused and incomplete stack merge verification code.
12771
12772 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
12773
12774         * driver.c (compile_all_methods_thread_main): Error out if compilation fails with
12775         an exception.
12776
12777         * driver.c mini.c mini.h: Add a --verify-all development option to test the
12778         verifier and the code generated by the compiler.
12779
12780 2008-03-25  Mark Probst  <mark.probst@gmail.com>
12781
12782         * mini.c: Generic sharing of the non-nullable case of the box
12783         instruction.
12784
12785 2008-03-24  Zoltan Varga  <vargaz@gmail.com>
12786
12787         * inssel.brg: Fix the build.
12788
12789         * iltests.il.in: Add a test for lconv.ovf.u8.un.
12790
12791 2008-03-24  Rodrigo Kumpera  <rkumpera@novell.com>
12792
12793         * mini.c (mono_method_to_ir): Implement readonly for ldelema and
12794         Array:Address. Fixes #372410.
12795
12796         * iltests.il.in: New tests for readonly prefix.
12797
12798 2008-03-23  Zoltan Varga  <vargaz@gmail.com>
12799
12800         * mini.h mini.c mini-trampolines.c: Move trampoline related code to 
12801         mini-trampolines.c.
12802
12803         * mini.h mini.c mini-exceptions.c: Move mini_init_exceptions () to 
12804         mini-exceptions.c.
12805
12806         * mini-amd64.c mini-s390.c (mono_arch_lowering_pass): Use mono_decompose_op_imm ().
12807         
12808         * mini.c (mono_decompose_op_imm): New helper function.
12809
12810         * mini-s390x.c (calculate_sizes): Rename this to get_call_info for consistency
12811         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
12812         return value.
12813
12814         * mini-s390x.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
12815         mono_arch_output_basic_block. Fix warnings.
12816
12817         * inssel-s390x.brg: Remove the unneccesary OP_LMUL_IMM rule to fix the s390x build
12818         for now.
12819
12820 2008-03-22  Zoltan Varga  <vargaz@gmail.com>
12821
12822         * mini-exceptions.c (ves_icall_get_frame_info): Remove the ia64/s390 workarounds
12823         since the extra frame is now detected automatically inside the loop.
12824
12825         * mini-s390.c (mono_arch_peephole_pass_2): Remove the arch independent peephole 
12826         opts which are now in mono_peephole_ins ().
12827         
12828         * mini-s390.c (mono_arch_output_basic_block): Fix OP_FCALL_MEMBASE.
12829
12830         * mini-exceptions.c (ves_icall_get_frame_info): Skip native-to-managed wrapper
12831         frames and skip duplicate managed-to-native frames. Fixes #367665.
12832
12833         * mini-x86.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
12834         opts which are now in mono_peephole_ins ().
12835         (mono_arch_peephole_pass_2): Ditto.
12836
12837         * mini-codegen.c (mono_peephole_ins): Fix a problem on 32 bit platforms.
12838
12839         * mini-codegen.c (mono_peephole_ins): New helper function containing the
12840         arch independent peephole optimizations.
12841
12842         * mini-amd64.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
12843         opts which are now in mono_peephole_ins ().
12844
12845         * mini-amd64.c (mono_arch_peephole_pass_2): Ditto.
12846         
12847         * mini-s390.c (mono_arch_output_basic_block): Fix build.
12848
12849         * tramp-s390.c (mono_arch_get_vcall_slot): Handle an additional instruction
12850         pattern.
12851
12852         * mini-s390.c (mono_arch_output_basic_block): Handle big offsets in the
12853         CALL_MEMBASE opcodes. Fix setting of the destination in the OP_LCONV_TO_OVF_I
12854         opcode. 
12855
12856 2008-03-21  Zoltan Varga  <vargaz@gmail.com>
12857
12858         * mini-s390.c (calculate_sizes): Rename this to get_call_info for consistency
12859         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
12860         return value.
12861
12862         * mini-s390.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
12863         mono_arch_output_basic_block. Fix warnings.
12864
12865 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
12866
12867         * inssel-long32.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
12868         conv.ovf.u.un.
12869
12870 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
12871
12872         * inssel-long.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
12873         conv.ovf.u.un.
12874
12875         * iltests.il: Add new tests.
12876
12877 2008-03-20  Kornel Pal  <kornelpal@gmail.com>
12878
12879         * mini.c: Removed Windows version macros.
12880
12881 2008-03-20  Mark Probst  <mark.probst@gmail.com>
12882
12883         * generic-sharing.c: Put reflection types in the extensible part
12884         of the runtime generic context.
12885
12886         * mini.c: Generic sharing of the GetTypeHandle special case of the
12887         ldtoken instruction.
12888
12889 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
12890
12891         * mini.h (MONO_BB_FOR_EACH_INS_SAFE): New helper macro.
12892
12893         * mini-<ARCH>.c: Use the new macro instead in the peephole/lowering passes.
12894         
12895         * mini.h (MONO_DEL_INS): Rename to MONO_DELETE_INS and Add a 'bb' argument for 
12896         consistency with the other version on the linear IR branch.
12897
12898         * mini-<ARCH>.c: Update callers of MONO_DEL_INS.
12899
12900         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i/conv.ovf.u.
12901
12902         * iltests.il.in: Add new tests.
12903
12904 2008-03-19  Zoltan Varga  <vargaz@gmail.com>
12905
12906         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i.un/conv.ovf.u.un.
12907
12908         * iltests.il.in: Add new tests.
12909
12910 2008-03-19  Mark Probst  <mark.probst@gmail.com>
12911
12912         * mini.c: Two variables with the same name were declared in
12913         nesting contexts and one wasn't initialized.  Fixed.
12914
12915 2008-03-19  Mark Probst  <mark.probst@gmail.com>
12916
12917         * mini.c: Generic sharing of the initobj instruction.
12918
12919 Tue Mar 18 20:18:02 CET 2008 Paolo Molaro <lupus@ximian.com>
12920
12921         * mini.c: make the test to optimize ldtoken from typeof() more
12922         precise.
12923
12924 2008-03-18  Mark Probst  <mark.probst@gmail.com>
12925
12926         * mini.c: Generic sharing of the initobj instruction for reference
12927         types.
12928
12929 Tue Mar 18 12:39:27 CET 2008 Paolo Molaro <lupus@ximian.com>
12930
12931         * mini.h, mini-amd64.c, mini-x86.c, tramp-amd64.c, tramp-x86.c: change
12932         the mono_breakpoint_clean_code() code to perform bound checks.
12933
12934 Tue Mar 18 11:50:14 CET 2008 Paolo Molaro <lupus@ximian.com>
12935
12936         * mini.h, mini-trampolines.c, tramp-*.c: change the signature of
12937         mono_arch_patch_callsite() to include the start of the managed method
12938         to be able to perform bound checks.
12939
12940 2008-03-17  Mark Probst  <mark.probst@gmail.com>
12941
12942         * mini.c: Generic sharing for the isinst instruction.
12943
12944 2008-03-17  Mark Probst  <mark.probst@gmail.com>
12945
12946         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
12947         inssel-long32-mips.brg: Added opcodes for doing indirect calls
12948         with the runtime generic context argument.
12949
12950         * mini.c: Share calls to several types of unsharable methods by
12951         putting the address of the method code in the runtime generic
12952         context and doing an indirect call.
12953
12954         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
12955         to switches.
12956
12957 2008-03-16  Mark Probst  <mark.probst@gmail.com>
12958
12959         * generic-sharing.c: Change due to a change in the runtime genric
12960         context API.
12961
12962 2008-03-15  Martin Baulig  <martin@ximian.com>
12963
12964         * tramp-x86.c
12965         (mono_arch_nullify_class_init_trampoline): Add call to
12966         mono_breakpoint_clean_code() to make things work when running
12967         inside the debugger.
12968
12969         * tramp-amd64.c
12970         (mono_arch_nullify_class_init_trampoline): Add call to
12971         mono_breakpoint_clean_code() to make things work when running
12972         inside the debugger.
12973
12974 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
12975
12976         * inssel-long.brg (reg): Fix 64 bit build.
12977
12978 2008-03-14  Mark Probst  <mark.probst@gmail.com>
12979
12980         * mini.c, mini.h: Share static generic code by passing it an
12981         implicit argument pointing to the runtime generic context.
12982
12983         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
12984         inssel-long32-mips.brg: New opcodes for calling shared static,
12985         which need to be passed the runtime generic context.
12986
12987         * mini-amd64.c, mini-x86.c: Save the runtime generic context
12988         argument on the stack in the prologue if needed.  New function for
12989         finding the runtime generic context argument from the registers
12990         saved by the trampoline.
12991
12992         * mini-amd64.h, mini-x86.h: Specify which register to use for the
12993         runtime generic context argument.
12994
12995         * tramp-amd64.c: Also restore the register used for the runtime
12996         generic context argument.
12997
12998         * mini-trampoline.c: Resolve shared static calls by consulting the
12999         runtime generic context via the new argument.
13000
13001         * generic-sharing.c: Add an argument to sharability-checking
13002         functions that specifies whether type variables should be treated
13003         as sharable type arguments.
13004
13005         * inssel-x86.brg: Removed a superfluous, buggy rule.
13006
13007         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
13008         to switches.
13009
13010 2008-03-14  Martin Baulig  <martin@ximian.com>
13011
13012         * debug-debugger.c (main_thread_handler): Call
13013         mono_runtime_run_main() without sending any notifications.
13014
13015         * debug-debugger.h (MonoDebuggerInfo): Added `get_method_signature.
13016
13017 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
13018
13019         * mini-trampolines.c (mono_magic_trampoline): Fix build on platforms without IMT.
13020
13021 2008-03-14  Mark Probst  <mark.probst@gmail.com>
13022
13023         * tramp-x86.c: Fixed register restore offsets in the trampoline
13024         code for ECX and EDX.
13025
13026 2008-03-12  Geoff Norton  <gnorton@novell.com>
13027
13028         * mini-arm.h: Add some #defines for locating sp, pc, r4 with
13029         different ucontext_t implementations.
13030         * exceptions-arm.c: Use the above defines to get exceptions working on 
13031         iPhone (based on a patch by Luke Howard lukeh@padl.com)
13032         * mini-arm.c: Implement iPhone icache support (based on a patch by
13033         Luke Howard lukeh@padl.com)
13034
13035 2008-03-12  Mark Probst  <mark.probst@gmail.com>
13036
13037         * mini.c: Enable generic sharing of calls to non-static
13038         non-interface non-generic non-value-type methods.
13039
13040         * mini-trampolines.c: Resolve calls from shared generic code.
13041
13042 2008-03-11  Zoltan Varga  <vargaz@gmail.com>
13043
13044         * Makefile.am il2tests.il iltests.il.in: Delete il2tests, merge it into iltests.
13045
13046         * tramp-amd64.c (mono_arch_create_trampoline_code): Correctly save RBP as well.
13047
13048 Mon Mar 10 11:59:34 CET 2008 Paolo Molaro <lupus@ximian.com>
13049
13050         * mini.c: some fixes for the AOT compiler.
13051
13052 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
13053
13054         * cpu-amd64.md: Add clob:1 to some float opcodes.
13055
13056 2008-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
13057
13058         * mini.h: Added MiniVerifierMode enumeration.
13059
13060         * mini.c: Added mini_verifier_set_mode to control
13061         the usage of the new verifier.
13062
13063         * mini.c (mono_method): Integrated the new verifier.
13064
13065         * driver.c: Extended --security option with validil and
13066         verifiable options to activate the new verifier.
13067
13068 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
13069
13070         * mini.c jit-icalls.h jit-icalls.c: Generalize the exception creation 
13071         optimization to ctors taking 0 or 2 arguments too.
13072
13073         * mini.c (mono_method_to_ir): Optimalize the size of the exception throwing code
13074         a bit.
13075
13076         * jit-icalls.h (mono_create_corlib_exception): New JIT icall.
13077
13078         * mini-amd64.c (mono_arch_emit_prolog): Improve the first_bb optimization a bit.
13079
13080 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
13081
13082         * mini.c (mono_method_to_ir): Apply one of the ldstr optimizations in the
13083         non-aot case as well.
13084
13085         * cpu-amd64.md: Reduce the max size of some frequently used opcodes.
13086
13087         * aot-runtime.c (decode_patch_info): Update this after the ldfld/stfld wrapper
13088         changes.
13089
13090         * aot-compiler.c (encode_patch): Ditto.
13091
13092         * mini.h (G_MININT32): Fix the definition of this.
13093
13094 2008-03-05  Zoltan Varga  <vargaz@gmail.com>
13095
13096         * mini.h: Define G_MININT32/G_MAXINT32 if using an older glib version.
13097
13098         * cfold.c: Remove definition of G_MININT32 which is now in mini.h.
13099
13100 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
13101
13102         * mini-amd64.c (mono_arch_compute_omit_fp): Don't disable fp elimination for 
13103         methods returning vtypes in registers.
13104         (mono_arch_allocate_vars): Ditto.
13105
13106         * mini-amd64.c (mono_arch_get_this_arg_reg): New arch specific helper function.
13107
13108         * tramp-amd64.c (mono_arch_get_unbox_trampoline): Use mono_arch_get_this_arg_reg ().    
13109
13110         * generics.cs: Add a test from the linear IR branch.
13111
13112         * mini-amd64.c (emit_load_volatile_arguments): Handle vtypes passed in regs too.
13113
13114         * mini.c (inline_method): Cache failed inline attempts.
13115
13116 2008-03-04  Mark Probst  <mark.probst@gmail.com>
13117
13118         * mini.c: For shared methods of generic classes put the location
13119         of "this" into the MonoGenericJitInfo.
13120
13121         * mini-x86.c, mini-amd64.c, mini.h: Added function for fetching a
13122         register out of a MonoContext by register number.  Add the generic
13123         sharing context as an argument to mono_arch_find_this_argument().
13124
13125         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
13126         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c: Added stub
13127         for new arch function.
13128
13129         * mini-exception.c: Handle open exception clauses in shared
13130         generic code.
13131
13132         * mini-trampolines.c: Supply additional argument to
13133         mono_arch_find_this_argument().
13134
13135 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
13136
13137         * Makefile.am (regtests): Run the bench.exe tests last.
13138
13139 2008-03-03  Zoltan Varga  <vargaz@gmail.com>
13140
13141         * mini-amd64.c (mono_arch_emit_prolog): Improve the first bblock optimization
13142         a bit.
13143
13144 2008-03-02  Zoltan Varga  <vargaz@gmail.com>
13145
13146         * mini.c (mono_method_to_ir): Allow callvirt on static methods for compatibility
13147         with MS.
13148
13149         * mini-amd64.c (mono_arch_emit_prolog): Fix tracing after the last change.
13150         
13151         * mini-amd64.c (mono_arch_emit_prolog): Avoid saving dead arguments.
13152
13153         * mini.c (mono_method_check_inlining): Avoid disabling inlining for methods
13154         whose class has no cctor.
13155
13156         * liveness.c (mono_analyze_liveness): Mark dead arguments with MONO_INST_IS_DEAD.
13157
13158 2008-03-01  Zoltan Varga  <vargaz@gmail.com>
13159
13160         * mini.c (mono_method_to_ir): Report calling a static method using callvirt as
13161         unverified.
13162
13163 2008-02-29  Zoltan Varga  <vargaz@gmail.com>
13164
13165         * mini-ops.h: Remove OP_SPARC_INARG_VT, add a new OP_VTARG_ADDR opcode instead
13166         to be in sync with the code on the linear IR branch.
13167
13168         * mini-sparc.c inssel-sparc.brg: Use OP_VTARG_ADDR.
13169
13170         * inssel-s390.brg (OP_SETRET (freg)): Set dreg correctly.
13171
13172 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
13173
13174         * mini-mips.c: Use cfg->vret_addr instead of cfg->ret.
13175
13176         * mini-s390x.c: Use cfg->vret_addr instead of cfg->ret.
13177
13178         * mini-s390.c: Use cfg->vret_addr instead of cfg->ret.
13179
13180         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_VARS define.
13181
13182         * mini-<ARCH>.c (mono_arch_create_vars): Define this for all architectures.
13183         
13184         * mini.c (mono_method_to_ir): Avoid invalid memory reads for methods without a
13185         body.
13186
13187 2007-11-14  Yoichi NAKAYAMA  <nakayama@pixela.co.jp>
13188
13189         * inssel-mips.brg (OP_OUTARG_MEMBASE (CEE_LDIND_R4 (base))): Add missing
13190         OP_LOADR4_MEMBASE emission.
13191
13192         * mini-codegen.c (mono_spillvar_offset_int): Remove assertion.
13193         (mono_spillvar_offset_float): Ditto.
13194
13195         * mini-mips.c (mono_arch_emit_prolog): Ditto.
13196
13197         * inssel-long32-mips.brg: Fix wrong branching, reduce redundant code
13198         emission.
13199
13200         * basic-long.cs: Add regression tests for them.
13201
13202         * mini-mips.c (add_float32_arg): Respect o32 calling convention in gr
13203         use.
13204         (mono_arch_allocate_vars): Fix representation of single-precision float
13205         argument.
13206         (mono_arch_output_basic_block): Ditto.
13207
13208         * inssel-mips.brg: Ditto, remove duplicate items.
13209
13210         * mini-mips.c (emit_load_volatile_arguments): New function to handle
13211         arguments of tail calls as on other platforms.
13212         (mono_arch_output_basic_block): Handle tail calls.
13213
13214         * inssel-mips.brg (OP_OUTARG_VT (CEE_LDOBJ (base))): Correct destination
13215         register.
13216
13217         * objects.cs (test_5_pass_static_struct): Add test for it.
13218
13219         Contributed under MIT/X11 license.
13220
13221 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
13222
13223         * Makefile.am: Use gmcs for compiling the regression tests.
13224
13225         * *.2.cs *.2.il: Rename to *.cs and *.il.
13226
13227 2008-02-24  Zoltan Varga  <vargaz@gmail.com>
13228
13229         * regalloc.h: Make the vassign array smaller.
13230
13231         * mini.c (mini_method_compile): Remove an unused field in cfg.
13232
13233         * mini-codegen.c: Add a bunch of micro optimizations.
13234
13235 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
13236
13237         * regalloc.h: Remove some unused fields.
13238
13239 2008-02-22  Zoltan Varga  <vargaz@gmail.com>
13240
13241         * mini-amd64.c (mono_arch_patch_code): Fix a warning.
13242
13243         * ssa.c (mono_ssa_remove): Avoid declaring volatile variables dead.
13244
13245 2008-02-22  Mark Probst  <mark.probst@gmail.com>
13246
13247         * mini.h: New trampoline type (RGCTX_LAZY_FETCH).
13248
13249         * mini-trampolines.c, tramp-amd64.c, tramp-x86.c: RGCTX lazy fetch
13250         trampoline: Fetch an entry from the runtime generic context.  If
13251         it's NULL, jump to the actual trampoline to fill the runtime
13252         generic context.  Otherwise, return it.
13253
13254         * mini.c: Call the lazy fetch trampoline to get entries out of the
13255         runtime generic context.
13256
13257         * tramp-ia64.c, tramp-arm.c, tramp-alpha.c, tramp-s390.c,
13258         tramp-s390x.c, tramp-ppc.c, tramp-hppa.c, tramp-mips.c,
13259         tramp-sparc.c: Stubs for the lazy fetch trampoline.
13260
13261 2008-02-21  Mark Probst  <mark.probst@gmail.com>
13262
13263         * mini.c: Fetch data out of the extensible part of the runtime
13264         generic context instead of calling a helper function.
13265
13266         * generic-sharing.c: Some functions moved into
13267         metadata/generic-sharing.c.  Helper function for fetching other
13268         types now checks and asserts against extensible rgctx (just for
13269         debugging purposes - the helper function isn't called anymore
13270         unless for debugging).
13271
13272 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
13273
13274         * mini-arm.c (mono_arch_output_basic_block): Implement proper argument passing
13275         for tail calls up to the point that the tests in iltests.exe run. Also add a
13276         dummy CKFINITE implementation.
13277         (mono_arch_emit_prolog): Avoid saving the method in the LMF since it is only
13278         needed for trampoline LMF frames.
13279
13280         * exceptions-arm.c (mono_arch_find_jit_info): Only read lmf->method for 
13281         trampoline LMF frames.
13282
13283 2008-02-21  Rodrigo Kumpera  <rkumpera@novell.com>
13284
13285         * mini.c (inline_method): clean any pending loader error when inlining fail.
13286         Otherwise loader errors in mono_method_to_ir leaks and cause spurious errors.
13287
13288 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
13289
13290         * aot-compiler.c (encode_patch): Handle ICALL_ADDR patch type.
13291
13292         * aot-runtime.c (decode_patch_info): Ditto.
13293
13294         * mini.c (mono_resolve_patch_target): Ditto.
13295         
13296         * aot-compiler.c (compile_method): Add some experimental code for AOT compiling
13297         icall wrappers.
13298
13299         * patch-info.h (PATCH_INFO): Add 'ICALL_ADDR' patch type.
13300         
13301         * mini.c (mono_method_to_ir): Convert a CEE_MONO_LDPTR opcode to an AOT constant
13302         if it references an icall address.
13303
13304 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
13305
13306         * cpu-s390x.md: Remove some more unused opcodes.
13307         
13308         * cpu-s390x.md: Remove some unused opcodes.
13309
13310         * mini-ia64.c (mono_arch_lowering_pass): Add some more opcodes. Use
13311         mono_op_imm_to_op ().
13312
13313         * mini-sparc.c (opcode_to_sparc_cond): Use the mono_opcode_to_cond () functions
13314         instead of a switch statement.
13315         
13316         * mini-sparc.c (mono_arch_allocate_vars): Allocate a stack slot for use by
13317         the int<->float conversion opcodes instead of using mono_spillvar_offset_float ().
13318
13319         * mini-codegen.c: Eliminate rassign macro which is no longer needed.
13320         
13321         * mini-codegen.c: Remove unused mono_regstate2_... functions.
13322
13323         * mini-codegen.c (mono_print_ins_index): Avoid printing an index when it is
13324         -1.
13325
13326 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
13327
13328         * driver.c (mono_main): Improve error reporting when an assembly cannot be
13329         opened. Fixes #362607.
13330
13331         * cpu-ia64.md cpu-s390x.md: Remove some unused opcodes.
13332
13333         * iltests.il.in: Add a test for static methods in interfaces.
13334
13335 2008-02-18  Zoltan Varga  <vargaz@gmail.com>
13336
13337         * genmdesc.c (build_table): Fix a crash on older glib versions.
13338
13339         * cpu-sparc.md: Remove some unused opcodes.
13340         
13341         * genmdesc.c: Error out if the .md contains CEE_ opcodes if 
13342         MONO_ARCH_ENABLE_NORMALIZE_OPCODES is defined.
13343
13344         * cpu-amd64.md: Remove some unused opcodes.
13345
13346         * mini.h mini-ops.h mini.c: Define the OP_Ccc opcodes in mini-ops.h normally
13347         like the other opcodes.
13348
13349 2008-02-17  Zoltan Varga  <vargaz@gmail.com>
13350
13351         * mini-ia64.c: Use cfg->vret_addr instead of cfg->ret.
13352
13353         * mini-arm.h mini-arm.c: Use cfg->vret_addr instead of cfg->ret.
13354
13355         * mini-sparc.c: Use cfg->vret_addr instead of cfg->ret. Name the MonoCompile
13356         variables 'cfg' instead of 'm' for consistency.
13357
13358         * mini-x86.c: Use cfg->vret_addr instead of cfg->ret.
13359
13360         * mini.h (MonoCompile): Add new 'vret_addr' field which represents the hidden
13361         argument holding the vtype return address, to avoid the ambigious use of
13362         cfg->ret for this purpose.
13363
13364         * mini.c (NEW_RETLOADA): Use vret_addr if set.
13365
13366         * mini-amd64.c: Use cfg->vret_addr instead of cfg->ret.
13367         
13368         * mini-codegen.c (mono_print_ins): Rename to mono_print_ins_index (), Add a
13369         new mono_print_ins () function which only takes one argument.
13370
13371 2008-02-15  Zoltan Varga  <vargaz@gmail.com>
13372
13373         * mini-s390.h (MONO_OUTPUT_VTR): Use cfg instead of s, avoid assignments to
13374         macro arguments.
13375
13376 2008-02-14  Zoltan Varga  <vargaz@gmail.com>
13377
13378         * mini-ops.h: Get rid of OP_SPARC_LOCALLOC_IMM.
13379
13380         * mini-sparc.c inssel-sparc.brg: Use OP_LOCALLOC_IMM instead of OP_SPARC_LOCALLOC_IMM.
13381
13382         * mini-x86.c: Sync with the version on the linear IR branch by adding new 
13383         opcodes and other small changes.
13384
13385         * mini-ops.h: Add some new opcodes from the linear IR branch.
13386
13387         * mini-ops.h: Get rid of the OP_X86_..._MEMBASE opcodes.
13388
13389         * mini-x86.c inssel-x86.brg cpu-x86.md: Get rid of the confusing _MEMBASE
13390         opcodes, use the REG_MEMBASE opcodes instead.
13391         
13392         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Get rid of the confusing _MEMBASE
13393         opcodes, use the REG_MEMBASE opcodes instead.
13394         
13395         * mini-amd64.c (mono_arch_output_basic_block): Sync with the version on the
13396         linear IR branch.
13397
13398         * mini.c (mono_op_imm_to_op): New helper function.
13399
13400         * mini-ops.h: Add some opcodes from linear IR branch.
13401
13402 2008-02-13  Zoltan Varga  <vargaz@gmail.com>
13403
13404         * mini-alpha.h mini-alpha.c tramp-alpha.c: Alpha port updates from Sergey Tikhonov 
13405         <tsv@solvo.ru>.
13406
13407 2008-02-12  Zoltan Varga  <vargaz@gmail.com>
13408
13409         * mini.c (mono_normalize_opcodes): Always convert CEE_CONV_R4/R8 to 
13410         OP_ICONV_TO_R4/R8.
13411
13412         * mini-ia64.c cpu-ia64.md: Add OP_ICONV_TO_R4/R8.
13413
13414 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
13415
13416         * aot-compiler.c (emit_method_code): Add an assert.
13417
13418         * mini-arm.h mini-arm.c exceptions-arm.c: Modify the exception throwing code and
13419         the IMT code so it is AOT friendly. Enable AOT for methods which call interface
13420         methods.
13421
13422 2008-02-08  Zoltan Varga  <vargaz@gmail.com>
13423
13424         * mini-arm.c (mono_arch_output_basic_block): Fix the ordering of arguments for 
13425         some load/store opcodes so they are consistent. 
13426         (mono_arch_emit_prolog): Simplify some code.
13427
13428         * aot-runtime.c (mono_aot_get_plt_entry): Fix a warning.
13429
13430         * objects.cs: Add tests for large argument offsets on ARM.
13431
13432         * mini-arm.c (mono_arch_emit_prolog): Fix handling of arguments with large 
13433         stack offsets. Fixes #359651.
13434
13435         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R4/R8 properly.
13436
13437         * cpu-s390x.md: Add OP_LCONV_TO_R4/R8.
13438
13439         * cpu-ia64.md mini-ia64.h mini-ia64.c: Get rid of CEE_ opcodes.
13440
13441         * mini-ops.h: Add OP_ICONV_TO_R_UN opcode.
13442
13443         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R_UN too.
13444
13445         * cpu-s390x.md cpu-s390.md mini-s390x.c mini-arm.c cpu-arm.md mini-s390.c: Get
13446         rid of CEE_CONV_R_UN.
13447
13448         * mini-s390x.c mini-s390x.h cpu-s390x.md inssel-s390x.brg: Get rid of CEE_ opcodes.
13449
13450 2008-02-07  Zoltan Varga  <vargaz@gmail.com>
13451
13452         * mini-s390.c mini-s390.h cpu-s390.md: Get rid of CEE_ opcodes.
13453
13454         * mini.c (mono_normalize_opcodes): Add some more opcodes.
13455
13456         * mini-arm.c mini-arm.h cpu-arm.md: Get rid of CEE_ opcodes.
13457
13458         * cpu-amd64.md: Remove some unused opcodes.
13459
13460         * mini-sparc.c mini-sparc.h cpu-sparc.md: Get rid of CEE_ opcodes.
13461
13462         * mini-x86.c mini-x86.h cpu-x86.md: Get rid of CEE_ opcodes.
13463
13464         * mini.c mini-<ARCH>.c: Remove mono_arch_local_regalloc (), instead make 
13465         arch specific functions for its parts. Call the peephole pass after local
13466         regalloc so the prolog can compute a more accurate max_offset.
13467         
13468         * mini.c (mono_normalize_opcodes): New mini pass to convert CEE_ opcodes to
13469         the corresponding OP_I/OP_L opcodes.
13470
13471         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of CEE_ opcodes.
13472
13473         * mini-sparc.c (mono_arch_output_basic_block): Fix the sparc build.
13474
13475 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
13476
13477         * mini-s390.c (mono_arch_get_inst_for_method): Remove the Interlocked cases
13478         as they are handled in mini.c.
13479
13480         * mini-s390x.c (mono_arch_get_inst_for_method): Ditto.
13481         
13482         * mini-<ARCH>.c (mono_arch_get_inst_for_method): Remove the MemoryBarrier
13483         case since it is handled in mini.c.
13484
13485         * cpu-sparc.md (sparc_setfreg_float): Fix the sparc build.
13486
13487         * mini-ops.h: Add new opcodes OP_CALL/OP_CALLVIRT.
13488
13489         * *.c: Use the new opcodes in the IR and back end code.
13490
13491         * mini-ops.h cpu-<ARCH>.md: Correct the name of the bgt_un opcodes.
13492
13493         * mini-amd64.c (emit_call_body): Use a far-call for calling dynamic methods.
13494
13495 2008-02-06  Mark Probst  <mark.probst@gmail.com>
13496
13497         * mini-trampolines.c (mono_generic_class_init_trampoline): Removed
13498         an assert because it has a race condition.
13499
13500 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
13501
13502         * tramp-amd64.c (mono_arch_patch_callsite): Add more diagnostics.
13503
13504         * inssel.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused CEE_RET opcode.
13505
13506         * mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused LDIND/STIND opcodes.
13507
13508         * *.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of OP_SETREG/OP_SETFREG/OP_SETREGIMM,
13509         use OP_MOVE/OP_FMOVE/OP_ICONST instead.
13510
13511 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
13512
13513         * cpu-amd64.md (move): Correct the maximum size of move.
13514
13515 2008-02-05  Mark Probst  <mark.probst@gmail.com>
13516
13517         * tramp-amd64.c, tramp-x86.c, mini-trampolines.c: Added a check in
13518         the generic class init trampoline to return quickly if the class
13519         is already inited.
13520
13521 2008-02-04  Zoltan Varga  <vargaz@gmail.com>
13522
13523         * tramp-amd64.c (mono_arch_patch_callsite): Add some diagnostics to help debug
13524         issues where an 32 bit callsite cannot be patched by a 64 bit address.
13525
13526 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
13527
13528         * generics.2.cs generics-variant-types.2.il: Merge some tests from the linear IR
13529         branch.
13530
13531 2008-01-31  Zoltan Varga  <vargaz@gmail.com>
13532
13533         * objects.cs: Add some soft-float tests.
13534
13535         * mini.c: Fix a couple more soft-float issues.
13536
13537         * helpers.c (mono_disassemble_code): Fix disassembly on ARM.
13538
13539         * mini-amd64.c (peephole_pass): Use IXOR instead of LXOR for zeroing a register to
13540         avoid a REX prefix.
13541
13542 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
13543
13544         * exceptions-x86.c (mono_arch_find_jit_info): Fix stack unwinding when an
13545         exception happens while compiling a virtual method.
13546
13547 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
13548
13549         * mini-sparc.c (mono_arch_emit_epilog): Fix folding of negative return values.
13550         
13551         * mini-sparc.c: Fix build.
13552
13553         * mini-sparc.c (get_call_info): Add support for generic sharing.
13554
13555         * mini-exceptions.c: Add a FIXME.
13556
13557 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
13558
13559         * mini-exceptions.c (mono_handle_exception_internal): Remove the old style
13560         altstack handling code.
13561
13562         * mini-s390.c (mono_arch_emit_exceptions): Really fix a warning.
13563         
13564         * mini-s390.c (mono_arch_emit_exceptions): Fix a warning.
13565
13566         * mini-s390.c: Add support for generic sharing.
13567
13568         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
13569         Fix CAS on s390.
13570         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
13571
13572         * mini-s390x.c (mono_arch_emit_exceptions): Fix a warning.
13573
13574         * mini-s390x.c: Add support for generic sharing.
13575         
13576         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
13577         Fix CAS on ia64.
13578         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
13579
13580         * mini-s390x.c: Use is_imm16 instead of is_uimm16 when checking whenever s390_aghi
13581         can be used since it takes a 16 bit signed immediate.
13582
13583         * inssel-s390x.brg: Fix OP_SETRET.
13584
13585         * mini-s390x.c (mono_arch_output_basic_block): Fix OP_BREAK.
13586
13587         * mini-codegen.c (mono_opcode_to_cond): Fix a warning.
13588
13589         * mini-s390x.c cpu-s390x.md: Implement sext.i4 properly by sign extension.
13590
13591         * mini.c (mono_create_delegate_trampoline): Don't use mono_create_ftpntr here.
13592
13593         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_addr_from_ftnptr
13594         in one place.
13595
13596         * mini-ia64.h mini-ia64.c: Add minimal support for the delegate trampoline 
13597         stuff.
13598
13599         * mini.h inssel-x86.brg inssel-amd64.brg tramp-alpha.c tramp-ia64.c: Get rid
13600         of the unused mono_arch_patch_delegate_trampoline stuff.
13601
13602 2008-01-26  Zoltan Varga  <vargaz@gmail.com>
13603
13604         * basic-long.cs: Move the fp related tests to basic-float.cs.
13605
13606         * mini-ops.h (OP_OUTARG_FREG_R4): New opcode.
13607
13608         * mini-ia64.c inssel-ia64.brg: Implement proper R4 argument passing.
13609
13610         * basic-calls.cs: Add a test for proper float argument passing.
13611
13612         * mini-ia64.h (mono_ia64_context_get_ip): Do not substract 1 from the ip
13613         if the context corresponds to an exception received through a signal.
13614
13615         * exceptions.cs: Add a test for nullref handling at the start of a try
13616         clause.
13617
13618         * mini-ia64.c (mono_arch_call_opcode): Fix ia64 argument passing.
13619
13620         * jit-icalls.c (mono_break): New JIT icall.
13621
13622         * mini-<ARCH>.c: Use mono_break instead of mono_arch_break.
13623
13624         * mini-arm.c (arm_patch): Add support for patching the blx calling sequence.
13625
13626 2008-01-25  Zoltan Varga  <vargaz@gmail.com>
13627
13628         * cpu-*.md: Get rid of unused opcodes.
13629
13630         * cpu-g4.md: Rename this to cpu-ppc.md for consistency with other archs.
13631
13632         * Makefile.am: Move mini-trampolines.c to $(common_sources) since it is now used
13633         by all platforms.
13634
13635         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_SPECIFIC_TRAMPOLINE
13636         define.
13637
13638         * mini-s390x.h tramp-s390x.c Makefile.am: Rework the s390x trampoline code to use
13639         the arch independent trampoline code in mini-trampolines.c.
13640
13641         * aot-runtime.c (mono_aot_init_vtable): Fix a warning.
13642
13643         * mini.c (get_runtime_generic_context_ptr): Fix a warning.
13644
13645         * mini-s390.h: Remove an unused define.
13646         
13647         * mini-s390.h tramp-s390.c Makefile.am: Rework the s390 trampoline code to use
13648         the arch independent trampoline code in mini-trampolines.c.
13649
13650         * mini-arm.c (mono_arch_emit_prolog): Fix build.
13651
13652 2008-01-24  Zoltan Varga  <vargaz@gmail.com>
13653
13654         * mini-sparc.c (mono_arch_output_basic_block): Remove some unecessary code.
13655
13656         * mini-s390.c (mono_arch_emit_prolog): Fix build.
13657
13658         * mini-s390x.c (mono_arch_emit_prolog): Fix build.
13659
13660         * mini-ppc.c (mono_arch_emit_prolog): Fix build.
13661
13662         * cpu-amd64.md: Use smaller sizes for int opcodes.
13663
13664         * *.c: Get rid of the NOT_IMPLEMENTED define which is now in mini.h.
13665
13666         * *.cs: Add some tests from the linear-ir branch. Move structs tests to 
13667         objects.cs.
13668
13669         * driver.c (mono_main): Add a --break-at-bb command line argument for JIT
13670         debugging.
13671
13672         * mini.h *.c: Change cfg->vars to contain the MonoMethodVar entries directly
13673         instead of though a pointer to save an indirection when accessing elements of
13674         the array.
13675
13676         * mini.h (MONO_IS_COND_BRANCH_OP): Move these macros here from mini.c. Fix
13677         some typos.
13678         (NOT_IMPLEMENTED): New helper macro.
13679         (MONO_BB_FOR_EACH_INS): New helper macro to iterate through the instructions
13680         of a bb.
13681
13682         * *.c: Use the new helper macro.
13683
13684 2008-01-21  Zoltan Varga  <vargaz@gmail.com>
13685
13686         * mini-x86.h (MONO_ARCH_AOT_SUPPORTED): Disable AOT for apple x86.
13687
13688 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
13689
13690         * mini-amd64.c (mono_arch_emit_prolog): Optimize the omit fp case to save two
13691         stack slots.
13692
13693 2008-01-18  Zoltan Varga  <vargaz@gmail.com>
13694
13695         * mini-amd64.c (mono_arch_emit_prolog): Disable the new optimization if
13696         profiling is enabled.
13697         
13698         * mini-amd64.c (mono_arch_call_opcode): Emit the save_sp_to_lmf instruction at
13699         the end.
13700         (mono_arch_emit_prolog): Add more first bblock optimizations.
13701
13702         * mini-amd64.c (mono_arch_call_opcode): Keep assignments to the arg registers
13703         in order if possible.
13704         (mono_arch_emit_prolog): Optimize assignments to arg registers in the first
13705         bblock, since the arguments are still in their original registers.
13706
13707         * mini.c (type_from_op): Calling add.ovf on floats is not valid IL code.
13708
13709 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
13710
13711         * mini.c (mono_method_to_ir): Use the no-spilling optimization for CEE_CALLI
13712         as well.
13713
13714         * mini-amd64.c (mono_arch_emit_prolog): Save an instruction if the LMF is at
13715         offset 0.
13716
13717         * mini-amd64.h (MONO_ARCH_HAVE_NOTIFY_PENDING_EXC): Turn on this for amd64.
13718
13719         * exceptions-amd64.c (mono_arch_notify_pending_exc): New function to 
13720         process async exceptions received while in unmanaged code.
13721
13722         * mini.c (mini_init): Install a callback with the runtime which will be called
13723         when a thread receives an async exception while in unmanaged code.
13724
13725         * mini.c driver.c: Update after mono_get_native_wrapper () signature change.
13726
13727         * mini-s390x.c (mono_arch_output_basic_block): Fix s390x build.
13728
13729 2008-01-16  Wade Berrier  <wberrier@novell.com>
13730
13731         * cpu-g4.md:
13732         * cpu-arm.md:
13733         * cpu-s390x.md:
13734         fix build
13735
13736 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
13737
13738         * mini-x86.c (mono_arch_output_basic_block): Remove some gccism which prevents
13739         compilation with sun cc.
13740
13741         * cpu-*.md: Fix the build.
13742
13743         * cpu-x86.md: Fix the length of some load membase opcodes. Fixes #354241.
13744
13745         * mini-amd64.h: Add some comments to the MonoLMF structure.
13746
13747         * mini-ops.h cpu-amd64.c: Add a OP_AMD64_SAVE_SP_TO_LMF opcode.
13748         
13749         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Avoid setting the rip field
13750         in the LMF structure if possible. This saves two instructions in the
13751         managed->native wrappers.
13752
13753         * mini-ops.h *.md: Make some opcodes names uniform by removing the op_ prefix.
13754
13755 2008-01-16  Mark Probst  <mark.probst@gmail.com>
13756
13757         * generic-sharing.c: New type argument lookup code which uses the
13758         runtime generic context template.
13759
13760 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
13761
13762         * mini.c (mono_method_to_ir): Avoid emitting a write barrier when storing NULL.
13763
13764         * mini-arm.c (add_general): Fix arm eabi parameter passing.
13765         (mono_arch_output_basic_block): Fix localloc implementation.
13766
13767         * mini-amd64.c (peephole_pass): Sync store+load optimizations with the x86 version.
13768
13769         * mini-ia64.c (peephole_pass): Fix ia64 build.
13770
13771         * mini-amd64.c (peephole_pass): Fix a warning.
13772         
13773         * mini-amd64.c (mono_arch_allocate_vars): Make sure the LMF is always stored
13774         at a constant offset from sp/fp.
13775
13776         * exceptions-amd64.c (mono_arch_find_jit_info): Compute the LMF address from fp/sp
13777         instead of obtaining it from *lmf in the managed method case.
13778
13779 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
13780
13781         * exceptions-amd64.c (mono_arch_find_jit_info): Remove some duplicate code.
13782
13783 Mon Jan 14 12:33:06 CET 2008  David S. Miller  <davem@davemloft.net>
13784
13785         * mini.h (MonoInstList): New type.
13786         (MONO_INST_LIST_INIT, MONO_INST_LIST_EMPTY,
13787         __MONO_INST_LIST_ADD, MONO_INST_LIST_ADD,
13788         MONO_INST_LIST_ADD_TAIL, __MONO_INST_LIST_DEL,
13789         __MONO_INST_LIST_SPLICE, MONO_INST_LIST_SPLICE,
13790         MONO_INST_LIST_SPLICE_TAIL, MONO_INST_LIST_SPLICE_INIST,
13791         MONO_INST_LIST_SPLICE_TAIL_INIT, mono_container_of,
13792         MONO_INST_LIST_ENTRY, MONO_INST_LIST_FIRST_ENTRY,
13793         MONO_INST_LIST_LAST_ENTRY, MONO_INST_LIST_FOR_EACH,
13794         MONO_INST_LIST_FOR_EACH_PREV, MONO_INST_LIST_FOR_EACH_SAFE,
13795         MONO_INST_LIST_FOR_EACH_PREV_SAFE,
13796         MONO_INST_LIST_FOR_EACH_ENTRY,
13797         MONO_INST_LIST_FOR_EACH_ENTRY_REVERSE,
13798         MONO_INST_LIST_FOR_EACH_ENTRY_SAFE,
13799         mono_inst_list_first, mono_inst_list_last,
13800         mono_inst_list_next, mono_inst_list_prev): New instruction
13801         list handling interfaces.
13802         (MonoBasicBlock): Remove 'last_ins' and 'code', replace with
13803         list head 'ins_list'.
13804         (MonoInst): Replace next pointer with list head 'node'.
13805         (MonoCallInst): Make 'out_args' a MonoInstList.
13806         (MONO_INST_NEW_CALL): Explicitly init ->out_args.
13807         (MonoCompile): Delete reverse_inst_list and
13808         reverse_inst_list_len.
13809         * mini-hppa.c (mono_arch_call_opcode, NEW_INS,
13810         mono_arch_lowering_pass, mono_arch_local_regalloc,
13811         mono_arch_output_basic_block, mono_arch_emit_prolog):
13812         Convert to new instruction lists.
13813         (insert_after_ins): Delete.
13814         * inssel.brg (MONO_EMIT_NEW_BRANCH_BLOCK): Convert to new
13815         instruction lists.
13816         * mini-hppa.h (MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Likewise.
13817         * mini.c (NEW_BBLOCK, ADD_BBLOCK, CHECK_BBLOCK,
13818         split_bblock, mono_add_ins_to_end, mono_emit_call_args,
13819         mono_emulate_opcode, mono_emit_load_got_addr,
13820         inline_method, mono_method_to_ir, mono_print_bb_code,
13821         print_dfn, decompose_pass, nullify_basic_block,
13822         replace_out_block_in_code, remove_block_if_useless,
13823         merge_basic_blocks, move_basic_block_to_end,
13824         try_unsigned_compare, optimize_branches, mono_print_code,
13825         mini_select_instructions, remove_critical_edges): Likewise.
13826         * mini-amd64.c (emit_sig_cookie, mono_arch_call_opcode,
13827         peephole_pass_1, peephole_pass, mono_arch_lowering_pass,
13828         mono_arch_output_basic_block, mono_arch_emit_prolog):
13829         Likewise.
13830         * mini-mips.c (mono_arch_call_opcode, peephole_pass,
13831         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
13832         mono_arch_output_basic_block): Likewise.
13833         (inst_list_prepend, insert_after_ins): Delete.
13834         * mini-mips.h (MONO_EMIT_NEW_BRANCH_NONZERO_LABEL,
13835         MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Convert to new
13836         instruction lists.
13837         * mini-x86.c (emit_sig_cookie, mono_arch_call_opcode,
13838         peephole_pass_1, peephole_pass, mono_arch_output_basic_block,
13839         mono_arch_emit_prolog): Likewise.
13840         * cfold.c (mono_constant_fold): Likewise.
13841         * liveness.c (visit_bb, mono_analyze_liveness,
13842         optimize_initlocals): Likewise.
13843         * ssapre.c (dump_code, process_bb, code_motion): Likewise.
13844         * graph.c (mono_draw_code_cfg): Likewise.
13845         * ssa.c (mono_ssa_rename_vars, mono_ssa_compute,
13846         mono_ssa_remove, mono_ssa_avoid_copies, mono_ssa_create_def_use,
13847         mono_ssa_cprop): Likewise.
13848         * abcremoval (get_relations_from_previous_bb, process_block):
13849         Likewise.
13850         * local-propagation (mono_cprop_invalidate_values,
13851         mono_local_cprop_bb): Likewise.
13852         * mini-s390x.c (mono_arch_call_opcode, emit_sig_cookie,
13853         peephole_pass, mono_arch_output_basic_block,
13854         mono_arch_emit_prolog): Likewise.
13855         * mini-arm.c (mono_arch_call_opcode, peephole_pass,
13856         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
13857         mono_arch_emit_prolog): Likewise.
13858         (insert_after_ins): Delete.
13859         * aliasing.c (print_code_with_aliasing_information,
13860         mono_build_aliasing_information, mono_aliasing_deadce):
13861         Convert to new instruction lists.
13862         * mini-ia64.c (emit_sig_cookie, mono_arch_call_opcode,
13863         peephole_pass, NEW_INS, mono_arch_lowering_pass,
13864         mono_arch_local_regalloc, mono_arch_output_basic_block):
13865         Likewise.
13866         (insert_after_ins): Delete.
13867         * mini-sparc.c (emit_sig_cookie, mono_arch_call_opcode,
13868         peephole_pass, mono_arch_output_basic_block): Convert to
13869         new instruction lists.
13870         * mini-codegen (InstList, inst_list_prepend,
13871         insert_after_ins): Delete.
13872         (insert_before_ins, get_register_force_spilling,
13873         get_register_spilling, free_up_ireg, free_up_reg,
13874         create_copy_ins, create_spilled_store, alloc_int_reg,
13875         alloc_float_reg, alloc_reg, mono_local_regalloc): Convert
13876         to new instruction lists.
13877         * mini-ppc.c (mono_arch_call_opcode, peephole_pass,
13878         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
13879         mono_arch_output_basic_block, mono_arch_emit_prolog): Likewise.
13880         (insert_after_ins): Delete.
13881         * mini-alpha.c (NEW_INS, peephole_pass, mono_arch_lowering_pass,
13882         mono_arch_local_regalloc, mono_arch_output_basic_block,
13883         mono_arch_call_opcode): Convert to new instruction lists.
13884         (insert_after_ins): Delete.
13885         * mini-s390.c (mono_arch_call_opcode, emit_sig_cookie,
13886         peephole_pass, mono_arch_output_basic_block,
13887         mono_arch_emit_prolog): Convert to new instruction lists.
13888
13889 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
13890
13891         * mini-amd64.c (mono_arch_output_basic_block): Use a 4 byte load in OP_CHECK_THIS.
13892
13893         * mini-sparc.c (mono_arch_output_basic_block): Use a byte load in CHECK_THIS.
13894         Fixes #353182.
13895
13896         * Makefile.am (version.h): Make this work with non-bash shells.
13897
13898 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
13899
13900         * mini.c (handle_delegate_ctor): Optimize away setting of NULL target.
13901
13902 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
13903
13904         * mini.c (mono_method_to_ir): Fix possible reading of invalid memory in 
13905         the InitializeArray optimization.
13906
13907 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
13908
13909         * mini.c driver.c: Don't include os/gc_wrapper.h.
13910
13911 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
13912
13913         * mini.c (print_jit_stats): Print GC statistics if available.
13914
13915 2008-01-04  Zoltan Varga  <vargaz@gmail.com>
13916
13917         * mini-amd64.c (mono_arch_allocate_vars): Align argument storage offsets to 8.
13918
13919 2007-12-29  Zoltan Varga  <vargaz@gmail.com>
13920
13921         * mini-ppc.c (mono_arch_get_delegate_invoke_impl): Fix flushing of icache.
13922
13923 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
13924
13925         * mini.c (mini_init): Move the setting of GC_stackbottom to mono_gc_base_init ().
13926         
13927         * mini.c (mini_init): Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
13928
13929         * driver.c (mono_main): Ditto.
13930
13931 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
13932
13933         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_delegate_invoke ().
13934
13935         * aot-compiler.c (emit_klass_info): Avoid emitting info if one of the methods
13936         in the vtable can't be encoded.
13937         (compile_method): Ditto.
13938
13939 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
13940
13941         * mini.c (setup_jit_tls_data): Use the MONO_ARCH_INIT_TOP_LMF_ENTRY macro if
13942         defined.
13943
13944         * mini-amd64.h mini-amd64.c exceptions-amd64.c tramp-amd64.c: Rename lmf->ebp to 
13945         lmf->rbp.
13946
13947         * exceptions-amd64.c (mono_arch_find_jit_info): Fix the detection of whenever
13948         the top LMF entry belongs to the current method.
13949
13950         * mini.c: Update after renaming of mono_thread_get_pending_exception ().
13951
13952 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
13953
13954         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix a warning.
13955         
13956         * tramp-ia64.c (mono_arch_create_trampoline_code): Ditto.
13957
13958         * tramp-sparc.c (mono_arch_create_trampoline_code): Check for thread interruption.
13959
13960         * tramp-amd64.c (mono_arch_create_trampoline_code): Ditto.
13961
13962         * tramp-x86.c (mono_arch_create_trampoline_code): Check for thread interruption.
13963
13964         * cpu-amd64.md mini-amd64.h mini-amd64.c inssel-amd64.brg: Add ulong->double 
13965         implementation.
13966
13967         * basic-float.cs: Add an ulong->double cast test.
13968
13969 2007-12-15  Zoltan Varga  <vargaz@gmail.com>
13970
13971         * mini.c (mono_method_to_ir): Fix a warning.
13972
13973 2007-12-14  Zoltan Varga  <vargaz@gmail.com>
13974
13975         * mini-ops.h: Add OP_SWITCH.
13976
13977         * mini.c graph.c ssa.c aliasing.c mini-<ARCH>.c inssel-<ARCH>.brg: Avoid using
13978         CEE_SWITCH in back-end code, use OP_SWITCH instead.
13979
13980 2007-12-11  Geoff Norton  <gnorton@novell.com>
13981
13982         * mini-s390x.c: Minor change to the MAX() define to allow
13983         it to compile with other gcc versions.
13984
13985 2007-12-11  Geoff Norton  <gnorton@novell.com>
13986
13987         * cpu-s390x.md:
13988         * mini-s390x.c: Implement sext_i4 to fix the build on s390x
13989
13990 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
13991
13992         exceptions-arm.c (mono_arch_get_restore_context): Restore
13993         the frame pointer.
13994
13995         exceptions-arm.c (throw_exception): Save the frame pointer.
13996         This is a partial fix for #323747. Only the client side is
13997         fixed.
13998
13999 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
14000
14001         * mini.c (mono_method_to_ir): Verbose message in CEE_NEWOBJ
14002         was using an unrelated variable to log the class which
14003         needed the cctor to be called. This was crashing on arm.
14004
14005 2007-12-09  Robert Jordan  <robertj@gmx.net>
14006
14007         * mini-x86.c (mono_arch_emit_epilog):
14008         Consider all kinds of 64-bit types. Fixes #323114.
14009
14010 2007-12-08  Zoltan Varga  <vargaz@gmail.com>
14011
14012         * tramp-amd64.c (mono_arch_create_trampoline_code): Clean up the code a bit.
14013
14014 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
14015
14016         * mini-amd64.c (peephole_pass): Add a missing instruction check.
14017
14018 Fri Dec 7 22:08:23 CET 2007 Paolo Molaro <lupus@ximian.com>
14019
14020         * mini.c: run type ctor before allocating an object, not only
14021         when running it's constructor method (fixes at least part of bug #342507).
14022
14023 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
14024         
14025         * mini-trampolines.c (mono_delegate_trampoline): Fix a warning.
14026         
14027         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove a debug printf.
14028         * mini.h mini-amd64.c mini-x86.c: Get rid of the mono_arch_find_vtable () 
14029         function.
14030
14031         * tramp-x86.c tramp-amd64.c mini-trampolines.c: Pass the vtable argument to
14032         mono_generic_class_init_trampoline () the same as it is done with the other
14033         trampolines.
14034
14035         * mini-arm.h mini-arm.c tramp-arm.c inssel-arm.brg cpu-arm.md 
14036         aot-runtime.c aot-compiler.c: Implement AOT support.    
14037
14038 2007-12-07  Mark Probst  <mark.probst@gmail.com>
14039
14040         * mini-trampolines.c (mono_generic_class_init_trampoline): Fixed
14041         build for archs which don't have the vtable trampoline defined
14042         yet.
14043
14044 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
14045
14046         * tramp-x86.c (mono_arch_create_trampoline_code): Fix the build.
14047
14048         * tramp-ppc.c (mono_arch_create_trampoline_code): Use the new helper function.
14049
14050         * mini-trampolines.c (mono_get_trampoline_func): New helper function.
14051
14052         * tramp-<ARCH>.c: Use the new helper function.
14053
14054 2007-12-07  Mark Probst  <mark.probst@gmail.com>
14055
14056         * inssel.brg: Added a pattern for the OP_TRAMPCALL_VTABLE
14057         trampoline call, which takes a vtable argument.
14058
14059         * graph.c, mini-ops.h, local-propagation.c, aliasing.c: Treat
14060         OP_TRAMPCALL_VTABLEs like other calls.
14061
14062         * mini-amd64.c, mini-amd64.h, mini-x86.c, mini-x86.h: Designated a
14063         register to hold the vtable argument to the OP_TRAMPCALL_VTABLE
14064         call.  Implemented a support function which fetches the vtable
14065         from a register set.
14066
14067         * mini.c, mini.h, tramp-amd64.c, tramp-x86.c, mini-trampolines.c:
14068         Implemented a generic class init trampoline, using the
14069         OP_TRAMPCALL_VTABLE opcode.
14070
14071         * mini.c: Implemented static field access when sharing generic
14072         code.  This implies initing the class using the new
14073         OP_TRAMPCALL_VTABLE call.
14074
14075 2007-12-07  Mark Probst  <mark.probst@gmail.com>
14076
14077         * mini.c: Don't compile methods with sharing enabled if their
14078         classes are disabled for sharing.
14079
14080 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
14081
14082         * inssel.brg: Add a missing sign extension to the GETCHR and array access
14083         opcodes. Fixes #346563.
14084
14085         * objects.cs: Add a new test.
14086
14087         * aot-compiler.c (emit_method_code): Put back an #ifdef which is needed.
14088
14089         * mini-<ARCH>.h mini.c aot-compiler.c aot-runtime.c: Get rid of the
14090         HAVE_PIC_AOT define and use AOT_SUPPORTED instead.
14091
14092 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
14093
14094         * mini-arm.h mini-arm.c: Add support for the common vtable trampoline.
14095
14096 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
14097
14098         * mini-arm.c (mono_arch_emit_exceptions): Avoid uninitialized memory in the
14099         code stream.
14100
14101 2007-12-02  Zoltan Varga  <vargaz@gmail.com>
14102
14103         * patch-info.h (PATCH_INFO): Add DELEGATE_TRAMPOLINE.
14104
14105         * mini.c aot-compiler.c aot-runtime.c: Implement the delegate creation 
14106         optimization in the AOT case.
14107         
14108 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
14109
14110         * aot-runtime (mono_aot_get_method_from_vt_slot): Add support for multi-byte method ref encodings.
14111         
14112         * aot-runtime.c (decode_klass_ref): Implement decoding of generic instances.
14113
14114         * aot-compiler.c (encode_klass_ref): Implement proper encoding of generic instances.
14115
14116         * mini.c (mono_method_to_ir): Optimize the common ldftn+create delegate combination.
14117
14118         * mini-trampolines.c (mono_delegate_trampoline): Add some code to handle the case when the delegate
14119         is created by the inlined delegate ctor.
14120
14121         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.  
14122
14123         * mini.c (mono_jit_compile_method_inner): Replace calls to delegate invoke with the trampoline here too.
14124
14125 2007-11-29  Zoltan Varga  <vargaz@gmail.com>
14126
14127         * cpu-x86.md: Fix the length of ckfinite.
14128
14129 2007-11-28  Zoltan Varga  <vargaz@gmail.com>
14130
14131         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.
14132         
14133         * mini-x86.c (mono_arch_output_basic_block): Clean up the fp stack properly in CKFINITE.
14134         (mono_arch_output_basic_block): Get rid of unused last_ins and last_offset.
14135
14136         * mini-x86.c (mono_arch_output_basic_block): Add some micro optimizations.
14137
14138         * mini-x86.c inssel-x86.brg cpu-x86.md: Move the implementation of the 
14139         OP_START_HANDLER/OP_ENDFINALLY/OP_ENDFILTER opcodes to mini-x86.c.
14140
14141 2007-11-28  Martin Baulig  <martin@ximian.com>
14142
14143         * mini-x86.c
14144         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline()
14145         after creating the trampoline.
14146
14147 2007-11-27  Zoltan Varga  <vargaz@gmail.com>
14148
14149         * aot-runtime.c (load_aot_module): Check runtime version if needed.
14150
14151         * aot-compiler.c: Add bind-to-runtime-version for producing AOT files which only load into a runtime with
14152         the same version.
14153
14154         * generic-sharing.c (mono_helper_get_rgctx_other_ptr): Change the signature to take the calling class
14155         instead of the calling method to help AOT.
14156
14157         * mini.c (get_runtime_generic_context_other_ptr): Update after the change.
14158
14159 2007-11-26  Zoltan Varga  <vargaz@gmail.com>
14160
14161         * aot-runtime.c (mono_aot_init_vtable): Simplify this if MONO_ARCH_COMMON_VTABLE_TRAMPOLINE
14162         is defined.
14163
14164 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
14165
14166         * aot-compiler.c (emit_class_name_table): Properly encode generic class names.
14167         
14168         * aot-compiler.c (compile_method): Correct check for generic method definitions.
14169         (encode_method_ref): No need to handle generic method definitions specially.
14170
14171         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
14172
14173         * aot-runtime.c (decode_klass_ref): Clean this up and rename from 
14174         decode_klass_info.
14175
14176         * aot-compiler.c (encode_klass_ref): Clean this up and rename from
14177         encode_klass_info.
14178         (compile_method): Enable generic sharing.
14179
14180 2007-11-22  Zoltan Varga  <vargaz@gmail.com>
14181
14182         * mini.c (get_runtime_generic_context_other_ptr): Disable AOT here.
14183         (mini_method_compile): Add preliminary support for AOTing shared generic code.
14184
14185         * aot-compiler.c (compile_method): Add preliminary support for AOTing shared
14186         generic code.
14187
14188         * mini-trampolines.c: Fix a warning.
14189
14190         * mini.c (get_runtime_generic_context_other_ptr): Use NEW_METHODCONST instead of
14191         NEW_PCONST.
14192         (mono_method_to_ir): Use NEW_DOMAINCONST in one place.
14193         (generic_class_is_reference_type): Remove unused function.
14194
14195         * mini-trampolines.c (mono_magic_trampoline): Avoid loading metadata if possible
14196         in the generic vtable trampoline case.
14197
14198         * aot-runtime.c (mono_aot_init_vtable): Use the generic vtable trampoline.
14199         
14200         * aot-runtime.c (mono_aot_get_method_from_vt_slot): New helper function to
14201         return an AOT method based on a vtable slot.
14202
14203         * aot-compiler.c (compile_method): Avoid AOTing synchronized methods for now.
14204
14205         * mini.c (mini_get_vtable_trampoline): Export this.
14206
14207 2007-11-22  Martin Baulig  <martin@ximian.com>
14208
14209         * debug-debugger.h
14210         (MonoDebuggerInfo): Move `debugger_version' up.
14211
14212 2007-11-22  Martin Baulig  <martin@ximian.com>
14213
14214         * mini-amd64.c
14215         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline().
14216
14217         * mini-trampolines.c
14218         (mono_delegate_trampoline): Call mono_debugger_trampoline_compiled()
14219         after compiling the method.
14220
14221 2007-11-20  Martin Baulig  <martin@ximian.com>
14222
14223         * debug-mini.c
14224         (mono_debugger_insert_method_breakpoint): Moved into mono-debug-debugger.c.
14225         (mono_debugger_remove_breakpoint): Likewise.
14226         (mono_debugger_check_breakpoints): Likewise.
14227
14228         * debug-debugger.c: Implement the new breakpoint interface here.
14229
14230 2007-11-18  Zoltan Varga  <vargaz@gmail.com>
14231
14232         * mini-amd64.c (mono_arch_output_basic_block): Unify the implementation of
14233         CEE_CONV_I1/SEXT_I1 and I2 since they are the same.
14234
14235         * mini-x86.c (mono_arch_output_basic_block): Ditto.     
14236
14237 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
14238
14239         * mini-amd64.c (mono_arch_output_basic_block): Fix a typo.
14240
14241         * mini-x86.c (mono_arch_get_inst_for_method): Remove code which is now in
14242         mini.c.
14243
14244         * mini-ia64.c (mono_arch_get_inst_for_method): Remove code which is now in
14245         mini.c.
14246
14247         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for methods
14248         returning a vtype in a register.
14249
14250         * mini.c (mini_get_inst_for_method): Move the handling of the atomic operations
14251         here from the arch specific code.
14252
14253         * mini-amd64.c (mono_arch_get_inst_for_method): Remove code which is now in
14254         mini.c.
14255
14256         * mini-amd64.c (mono_arch_output_basic_block): Add some micro optimizations.
14257         (mono_arch_emit_prolog): Increment maximum prolog size.
14258
14259         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Move the implementation of the
14260         START_HANDLER/ENDFINALLY/ENDFILTER opcodes to mini-amd64.c.
14261
14262         * mini-x86.c (get_call_info): Receive a MonoCompile instead of a 
14263         MonoGenericSharingContext.
14264
14265         * mini-ia64.c (get_call_info): Receive a MonoCompile instead of a 
14266         MonoGenericSharingContext. Allocate memory from the cfg mempool.
14267
14268 2007-11-15  Mark Probst  <mark.probst@gmail.com>
14269
14270         * mini.c, mini.h, generic-sharing.c: Functions for producing code
14271         which extract fields out of the runtime generic context.  Full
14272         sharing of the NEWARR opcode.
14273
14274 Thu Nov 15 14:20:21 CET 2007 Paolo Molaro <lupus@ximian.com>
14275
14276         * abcremoval.c, mini.c, ssa.c, ssapre.c: updated to implement
14277         --enable-minimal=ssa.
14278
14279 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
14280
14281         * mini-trampolines.c (mono_delegate_trampoline): Update after 
14282         mono_marshal_get_delegate_invoke () signature change.
14283
14284 2007-11-13  Mark Probst  <mark.probst@gmail.com>
14285
14286         * mini.c: Removed the shared context in favor of the generic
14287         sharing context.  Allocate the MonoJitInfo structure with room for
14288         the generic sharing context if it's needed.
14289
14290         * mini.h: Remove MonoGenericSharingContext declaration.  It's in
14291         domain-internals.h now.
14292
14293         * mini-x86.c: Pass the generic sharing context to get_call_info ().
14294
14295         * generic-sharing.c: Several changes for working without a shared
14296         context and instead operating on open types instead.
14297
14298 2007-11-12  David S. Miller  <davem@davemloft.net>
14299
14300        * inssel-sparc.brg: Fix double instruction emit.
14301
14302 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
14303
14304         * mini.c (mono_jit_runtime_invoke): Avoid trying to compile the Array 
14305         Get/Set/Address methods.
14306         
14307         * mini.c debug-debugger.c mini-trampolines.c: Update after 
14308         mono_marshal_get_delegate_invoke signature change.
14309
14310 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
14311
14312         * cpu-arm.md: Increase the max size of OP_THROW to 24 bytes.
14313         This can happens with dynamic methods. Fixes the other bug in #322722.
14314
14315 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
14316
14317         * tramp-arm.c (mono_arch_patch_callsite): Support patching
14318         BX call sequence.
14319
14320         * mini-arm.c (arm_patch): Implement patching of BX call
14321         sequence. Fixes one of the bugs in #322722.
14322
14323 2007-11-03  David S. Miller  <davem@huronp11.davemloft.net>
14324
14325        * mini-sparc.c (mono_arch_flush_icache): Make more efficient
14326        under Linux.  We only need to flush every 32-byte cache line.    
14327
14328 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
14329
14330         * mini.c:
14331         move_basic_block_to_end: Add branches when needed, eventually creating
14332         a new BB.
14333         optimize_branches: added a parameter that tells if it's ok to create
14334         new BBs (doing is "df_visit" has been called is (IMHO) a nightmare),
14335         and avoid calling move_basic_block_to_end when it's not ok.
14336         Fixes bug 318677.
14337
14338 2007-11-07  Mark Probst  <mark.probst@gmail.com>
14339
14340         * mini.c: Abort inlining call to InitializeArray if something
14341         looks wrong.  Let the icall handle it, which now has proper safety
14342         checks.
14343
14344 2007-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
14345
14346         * mini.c (mono_spill_call): add support for soft-float.
14347
14348         * mini.c (mono_method_to_ir): add support for soft-float
14349         to inlined functions that return float.
14350
14351         * mini.c (mono_method_to_ir): add support for soft-float
14352         to cee_stsfld opcode on float fields.
14353
14354 2007-11-05  Geoff Norton  <gnorton@novell.com>
14355
14356         * mini-x86.h: Fix the structure access for X86 Leopard.
14357
14358
14359 2007-11-05  Martin Baulig  <martin@ximian.com>
14360
14361         * mini-trampolines.c
14362         (mono_magic_trampoline): Call mono_debugger_trampoline_compiled()
14363         after compiling the method to notify the debugger.
14364
14365 2007-11-05  Martin Baulig  <martin@ximian.com>
14366
14367         * debug-debugger.h (MonoDebuggerInfo): Use the new breakpoint tables.
14368
14369 2007-11-02  Zoltan Varga  <vargaz@gmail.com>
14370
14371         * mini-sparc.c (EMIT_COND_SYSTEM_EXCEPTION_GENERAL): Applied patch from
14372         David Miller <davem@davemloft.net>. Allow larger offsets in branches.
14373
14374 2007-11-01  Zoltan Varga  <vargaz@gmail.com>
14375
14376         * mini-amd64.c (mono_arch_emit_prolog): Check the domain as well for
14377         native-to-managed wrappers.
14378         
14379 2007-11-01  Geoff Norton  <gnorton@novell.com>
14380
14381         * mini-ppc.h, mini-x86.h:  Handle Leopards renaming of some structure 
14382         members.
14383
14384 Wed Oct 31 20:23:14 CET 2007 Paolo Molaro <lupus@ximian.com>
14385
14386         * mini.c, mini-x86.c: when getting back from unmanaged code
14387         to managed via a marshaled delegate we also need to set the
14388         right domain.
14389
14390 Wed Oct 31 19:53:33 CET 2007 Paolo Molaro <lupus@ximian.com>
14391
14392         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: breakpoint table support
14393         for amd64.
14394
14395 Wed Oct 31 19:29:30 CET 2007 Paolo Molaro <lupus@ximian.com>
14396
14397         * mini.c, mini.h, mini-x86, tramp-x86.c, mini-x86.h: added API to
14398         let the debugger or other external agents to tell the JIT when
14399         a sw breakpoint has been inserted in the code that the JIT needs
14400         to be able to inspect.
14401
14402 2007-10-31  Martin Baulig  <martin@ximian.com>
14403
14404         * debug-debugger.h
14405         (MonoDebuggerInfo): Remove `runtime_class_init'.
14406
14407 2007-10-30  Martin Baulig  <martin@ximian.com>
14408
14409         * debug-mini.h
14410         (mono_debugger_thread_created): Added `MonoThread *' argument.
14411         (mono_debugger_extended_notification): New public method.
14412         (mono_debugger_trampoline_compiled): New public method.
14413
14414         * debug-mini.c
14415         (MonoDebuggerThreadInfo): Added `thread' and
14416         `extended_notifications' fields.
14417
14418         * debug-debugger.c
14419         (debugger_executable_code_buffer): New static variable.
14420
14421         * debug-debugger.h
14422         (MonoDebuggerInfo): Added `executable_code_buffer',
14423         `executable_code_buffer_size', `breakpoint_info_area',
14424         `breakpoint_table' and `breakpoint_table_size'.
14425
14426 2007-10-26  Rodrigo Kumpera  <rkumpera@novell.com>
14427
14428         * mini-arm.c (mono_arch_build_imt_thunk): Take the advantage
14429         that IP  either is an unused value or the vtable pointer. IMT 
14430         calls use vtable + offset now. Reduced by almost half the size
14431         of IMT entries.
14432
14433 2007-10-26  Jonathan Chambers <joncham@gmail.com>
14434
14435         * mini-amd64.c: Begin Win64 port. Use AMD64_ARG_REG#
14436         defines to access param registers. Replace long usage with
14437         gsize as sizeof(long) != sizeof(void*) on Win64.
14438
14439         * mini-amd64.h: Add %rdi and %rsi to MonoLMF structure
14440         on Win64. Fix intrinsic, use _AddressOfReturnAddress
14441         instead of non-existant _GetAddressOfReturnAddress.
14442
14443         * tramp-amd64.c: Use AMD64_ARG_REG#     defines to access 
14444         param registers. Save/restore %rdi and %rsi in MonoLMF.
14445
14446         * exceptions-amd64.c: Use AMD64_ARG_REG# defines to access 
14447         param registers. Modify (throw_exception) signature to take 
14448         %rdi and %rsi on Win64. 
14449
14450         Code is contributed under MIT/X11 license.
14451
14452 Thu Oct 25 23:06:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
14453
14454         * helpers.c: unlink debugging output files.
14455
14456 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
14457
14458         * mini.c: Move mono_create_ftnptr () to object.c.
14459
14460 2007-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
14461
14462         * helpers.c (mono_disassemble_code): MonoCompile parameter is now
14463         optional. This function can now be used to disassemble code generated
14464         outside the JIT such as trampolines and IMT thunks.
14465
14466         * mini-arm.h: defined MONO_ARCH_HAVE_IMT.
14467
14468         * mini-arm.c (decode_vcall_slot_from_ldr): added, extract the
14469         vtable pointer from a ldr instruction.
14470
14471         * mini-arm.c (mono_arch_get_vcall_slot_addr): support the
14472         new IMT call sequence.
14473
14474         * mini-arm.c (mono_arch_output_basic_block): emit the IMT
14475         call sequence for interface invocations.
14476
14477         * mini-arm.c (mono_arch_emit_imt_argument): added, required
14478         for imt support. This function is empty since IMT on ARM requires no
14479         special handling on the IR side.
14480
14481         * mini-arm.c (mono_arch_find_imt_method): added, required for
14482         imt support.
14483
14484         * mini-arm.c (mono_arch_find_this_argument): added, required
14485         for imt support.
14486
14487         * mini-arm.c (arm_emit_value_and_patch_ldr): added, patches
14488         a ldr instruction to load a value stored in the code stream.
14489
14490         * mini-arm.c (mono_arch_build_imt_thunk):added, required
14491         for imt support.
14492
14493
14494 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
14495
14496         * mini.c (mini_init): Install the jump trampoline callback.
14497
14498 Tue Oct 23 17:07:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14499
14500         * mini-trampolines.c: handle synchronized methods with the common
14501         vtable trampoline (bug #335601).
14502
14503 2007-10-17  Zoltan Varga  <vargaz@gmail.com>
14504
14505         * mini-ia64.h mini-amd64.c: Add support for the common vtable trampoline.
14506
14507         * inssel.brg (mini_emit_virtual_call): Fix the computation of ins->inst_offset on
14508         64 bit platforms.
14509
14510         * mini-ia64.h mini-ia64.c: Add support for IMT.
14511
14512         * mini-x86.c (mono_arch_emit_prolog): Increase the size allocated for the
14513         prolog. Fixes #331958.
14514
14515 2007-10-15  Zoltan Varga  <vargaz@gmail.com>
14516
14517         * mini-sparc.h mini-sparc.c: Add support for the common vtable trampoline.
14518
14519 Mon Oct 15 11:18:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14520
14521         * mini-ppc.c, mini-ppc.h: ppc support for the common vtable
14522         trampoline.
14523
14524 Mon Oct 15 10:41:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14525
14526         * mini-amd64.c, mini-amd64.h: amd64 support for the common vtable
14527         trampoline.
14528
14529 Mon Oct 15 10:39:26 CEST 2007 Paolo Molaro <lupus@ximian.com>
14530
14531         * mini-x86.c, mini-x86.h: x86 support for the common vtable
14532         trampoline.
14533
14534 Mon Oct 15 10:37:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
14535
14536         * mini-trampolines.c: changed the magic rampoline to understand
14537         the common vtable trampoline method: the method to invoke is
14538         determined by the vtable displacement of the call.
14539
14540 Mon Oct 15 10:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
14541
14542         * mini.c, mini.h: register the common vtable trampoline if the
14543         architecture supports it.
14544
14545 Mon Oct 15 09:50:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14546
14547         * cpu-amd64.md: use the correct max length for tls_get.
14548
14549 2007-10-14  Zoltan Varga  <vargaz@gmail.com>
14550
14551         * mini.c (mono_method_to_ir): Use mini_get_class in CEE_LDELEM_ANY and
14552         CEE_STELEM_ANY. Fixes #333696.
14553
14554 Thu Oct 11 18:04:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
14555
14556         * exceptions-x86.c: provide more graceful handling of the case where
14557         we followed a bogus function pointer from managed code (bug #332866).
14558
14559 2007-10-11  Mark Probst  <mark.probst@gmail.com>
14560
14561         * mini.h, mini.c: Introduced the MonoGenericSharingContext, which
14562         replaces the generic_shared flag and will carry more information
14563         in the future.
14564
14565         * generic-sharing.c: Added mini_type_stack_size() which allows
14566         allows open types if given a generic sharing context.
14567         mini_get_basic_type_from_generic() takes a
14568         MonoGenericSharingContext* instead of a MonoCompile* now.
14569
14570         * mini-alpha.c, mini-amd64.c, mini-arm.c, mini-hppa.c,
14571         mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c, mini-s390x.c,
14572         mini-sparc.c, mini-x86.c: Trivial changes required by the two
14573         changes above.  Just passing arguments through to the right
14574         places.
14575
14576 Wed Oct 10 19:44:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
14577
14578         * mini-arm.c: unify the call emission to emit_code_seq().
14579
14580 Wed Oct 10 13:05:46 CEST 2007 Paolo Molaro <lupus@ximian.com>
14581
14582         * tramp-arm.c: reduced the trampoline size.
14583
14584 2007-10-10  Mark Probst  <mark.probst@gmail.com>
14585
14586         * generic-sharing.c, mini.h, mini-amd64.c, mini-x86.c: Moved type
14587         variable handling out of arch-specific code.
14588
14589 Wed Oct 10 10:49:28 CEST 2007 Paolo Molaro <lupus@ximian.com>
14590
14591         * mini-arm.c: implemented fast delegate dispatch.
14592
14593 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
14594
14595         * mini-amd64.c (mono_arch_compute_omit_fp): Add more checks to ensure
14596         that fp elimination is turned off if the space required by locals is too
14597         big. Fixes #331958.
14598
14599 Tue Oct 9 21:01:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
14600
14601         * Makefile.am, mini-arm.c, mini-arm.h, tramp-arm.c: ported
14602         ARM to the new style trampoline.
14603
14604 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
14605
14606         * tramp-amd64.c: Rework the specific trampoline code to make it smaller.
14607
14608         * mini-amd64.h mini-amd64.c: Export amd64_patch as mono_amd64_patch.
14609
14610 2007-10-09  Martin Baulig  <martin@ximian.com>
14611
14612         * debug-debugger.h
14613         (MonoDebuggerMetadataInfo): Added `field_info_type_offset' and
14614         `field_info_offset_offset'.     
14615
14616 Tue Oct 9 09:47:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
14617
14618         * mini-ppc.c, mini-ppc.h, mini-ops.h, inssel-ppc.brg, cpu-g4.md:
14619         removed more internal usage of the r11 register and made it available
14620         to the register allocator.
14621
14622 2007-10-08  Mark Probst  <mark.probst@gmail.com>
14623
14624         * mini.c, mini-amd64.c, mini-x86.c: Allow open generic contexts
14625         when sharing generics and treat type variables as references.
14626
14627 Mon Oct 8 10:55:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
14628
14629         * mini-ppc.c: started removing the internal uses of register r11
14630         to eventually allow the register allocator to manage it as an
14631         additional available register.
14632
14633 Mon Oct 8 14:25:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
14634
14635         * tramp-amd64.c: fixed memory corruption in the trampoline generation.
14636
14637 Mon Oct 8 12:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
14638
14639         * tramp-ppc.c, tramp-x86.c: reduce the alignment requirements for
14640         specific trampolines as they are not performance critical as a jump
14641         target (maybe align as before only for AOT code?). This saves about
14642         200 KB of native code on x86 for monodevelop startup.
14643
14644 Mon Oct 8 10:04:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
14645
14646         * tramp-ppc.c: reduce the size of the trampolines, saves 160KB on
14647         monodevelop startup.
14648
14649 2007-10-06  Zoltan Varga  <vargaz@gmail.com>
14650
14651         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Allow signed displacements.
14652
14653         * mini-sparc.h mini-sparc.c: Implement IMT support.
14654
14655         * tramp-sparc.c (mono_arch_create_trampoline_code): Rework the trampoline code so
14656         its smaller and doesn't clobber sparc_g1.
14657
14658         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Update after trampoline changes.
14659
14660 Fri Oct 5 18:28:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
14661
14662         * mini-ppc.c: optimized the size of the IMT thunks a bit.
14663
14664 Fri Oct 5 18:08:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
14665
14666         * mini-ppc.c: implemented fast delegate invocation.
14667
14668 Fri Oct 5 00:01:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
14669
14670         * mini-ppc.h, mini-ppc.c: IMT support for the PPC architecture.
14671
14672 Thu Oct 4 22:04:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
14673
14674         * mini-ppc.c, mini-ppc.h, tramp-ppc.c, Makefile.am: port the PPC
14675         code to the new style trampoline in preparation for IMT support.
14676
14677 Thu Oct 4 19:01:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
14678
14679         * mini-ppc.c, tramp-ppc.c: don't use r13 as it's used by the PPC EABI
14680         systems already. This also reduces the specific trampiline sizes and
14681         prepares for the use of r12 as the IMT identifier register.
14682
14683 Thu Oct 4 16:38:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14684
14685         * mini-mips.h: endianess fix (simplified from a patch by
14686         Thomas Kunze <thommy@tabao.de>, bug #323737).
14687
14688 Thu Oct 4 14:43:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
14689
14690         * exceptions-ppc.c, mini-ppc.h: refactor to use macros
14691         to access ucontext fields and enable netbsd support
14692         (partially from Magnus Henoch <mange@freemail.hu>).
14693
14694 Thu Oct 4 12:35:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14695
14696         * genmdesc.pl: patch from Henryk Plotz <henryk@openmoko.org> to
14697         use the preprocessor from the CPP env var if it is set.
14698
14699 Wed Oct 3 17:11:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
14700
14701         * mini-trampolines.c: fixed an assertion and moved it earlier in the
14702         code, before interface_offset gets used.
14703
14704 2007-10-02  Zoltan Varga  <vargaz@gmail.com>
14705
14706         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call 
14707         mono_class_setup_vtable () before accessing klass->vtable.
14708
14709 2007-10-01  Zoltan Varga  <vargaz@gmail.com>
14710
14711         * aot-compiler.c (get_plt_index): Rework the handling of wrappers to be not so
14712         hackish.
14713
14714 Mon Oct 1 15:00:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14715
14716         * mini.c, mini-trampolines.c, mini.h: enable the lazy filling of the
14717         IMT slots (this saves hundreds of KB of memory in programs like
14718         IronPython and Monodevelop).
14719
14720 Mon Oct 1 14:44:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
14721
14722         * mini.c: print the delegate counter.
14723
14724 Mon Oct 1 14:36:50 CEST 2007 Paolo Molaro <lupus@ximian.com>
14725
14726         * mini-x86.c: make it easier to enable the debugging code for IMT
14727         slots.
14728
14729 2007-09-28  Martin Baulig  <martin@ximian.com>
14730
14731         * debug-debugger.h
14732         (MonoDebuggerMetadataInfo): Add `klass_image_offset',
14733         `mono_method_klass_offset' and `mono_method_token_offset'.
14734
14735 2007-09-20  Mark Probst  <mark.probst@gmail.com>
14736
14737         * mini.c: First generics sharing implementation.  Can only share
14738         in very simple cases.  If sharing doesn't work it falls back to
14739         dedicated compilation.
14740
14741         * mini.h: Flag in MonoCompile to specify whether generic
14742         compilation is shared.  Flags enum for marking which generic inst
14743         of a context is used.  Prototypes for helper functions.
14744
14745         * generic-sharing.c: Helper functions for generic method sharing.
14746
14747         * optflags-def.h: Optimization flag (gshared) for enabling generic
14748         method sharing added.
14749
14750         * Makefile.am: generic-sharing.c added.
14751
14752 2007-09-19 Daniel Nauck <dna@mono-project.de>
14753
14754         * mini.c (mono_thread_abort): fixed typo in r86014. It should be '==' instead of '!='.
14755
14756 2007-09-19  Massimiliano Mantione  <massi@ximian.com>
14757         * mini.c (mono_thread_abort): Correctly handle ThreadAbortException,
14758         fixes bug 325507.
14759
14760 2007-09-19  Martin Baulig  <martin@ximian.com>
14761
14762         * mini.c (mini_cleanup): Only call mono_debugger_cleanup() here;
14763         mono_debug_cleanup() is now part of mono_cleanup().
14764
14765 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
14766
14767         * driver.c (mono_main): Fix a warning.
14768
14769 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
14770
14771         * aot-compiler.c: Optimize various parts when processing large assemblies.
14772         Fixes ##325568.
14773
14774         * mini.c (mono_patch_info_hash): Improve hash function.
14775
14776 2007-09-14  Jonathan Chambers <joncham@gmail.com>
14777
14778         * mini-exceptions.c: Add HAVE_UNISTD_H check around include.
14779         
14780         Code is contributed under MIT/X11 license.
14781
14782 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
14783
14784         * mini.c (mini_init): Fix a leak.
14785
14786         * debug-mini.c (mono_debug_free_method_jit_info): Fix a leak.
14787
14788 Fri Sep 14 12:53:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
14789
14790         * mini.c: redirect string.InternalAllocStr() to the managed allocator.
14791
14792 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
14793
14794         * mini-amd64.c (mono_arch_find_imt_method): Add support for AOT code.
14795
14796 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
14797
14798         * Makefile.am generics-variant-types.2.il generics.cs: Add some generics
14799         variance tests.
14800
14801         * inssel.brg: Reorganize the isinst/castclass code to reduce code duplication.
14802
14803         * mini.c (handle_alloc): Enable managed allocators in AOT code.
14804
14805         * aot-compiler.c (encode_patch): Add support for MONO_WRAPPER_ALLOC.
14806
14807         * aot-runtime.c (decode_patch_info): Ditto.
14808
14809 2007-09-12  Jonathan Chambers <joncham@gmail.com>
14810
14811         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement
14812         static case. Cache delegates in architecture specific code, 
14813         based on number of parameters.
14814         
14815         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Cache delegates
14816         in architecture specific code, based on number of parameters.
14817         
14818         * mini-trampolines.c (mono_delegate_trampoline): Architecture specific 
14819         caching happen in architecture specific code now.
14820         
14821         Code is contributed under MIT/X11 license.
14822
14823 2007-09-12  Jonathan Chambers <joncham@gmail.com>
14824
14825         * mini.h, mini.c, mini-x86.c, mini-amd64.c, mini-hppa.c, mini-mips.c,
14826         mini-s390x.c, mini-arm.c, mini-ia64.c, mini-sparc.c, mini-ppc.c, mini-alpha.c,
14827         mini-s390.c: Add mono_arch_init and mono_arch_cleanup methods.
14828
14829         Code is contributed under MIT/X11 license.
14830
14831 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
14832         * mini.c: (mono_thread_abort) Fixed bug #82416.
14833
14834 Tue Sep 11 16:15:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
14835
14836         * mini.: hook the new managed GC allocation feature into the JIT.
14837
14838 Tue Sep 11 16:14:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
14839
14840         * mini.c: implementation for the new runtime tls opcode.
14841
14842 2007-09-11  Martin Baulig  <martin@ximian.com>
14843
14844         * debug-debugger.h
14845         (MonoDebuggerMetadataInfo): Add `mono_method_flags_offset' and
14846         `mono_method_inflated_offset'.
14847
14848 2007-09-07  Zoltan Varga  <vargaz@gmail.com>
14849
14850         * driver.c mini.h mini.c: Add a new devel command line option for injecting
14851         async exceptions into a method.
14852
14853         * mini-amd64.h mini-amd64.c: Implement injecting of async exceptions for the
14854         purpose of testing whenever the unwinder works at every instruction.
14855
14856 Thu Sep 6 12:42:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
14857
14858         * mini.c: check accessibility of method used in ldftn (fixes
14859         bug #82635).
14860
14861 2007-09-04  Zoltan Varga  <vargaz@gmail.com>
14862
14863         * mini-amd64.c (mono_arch_output_basic_block): Fix a warning.
14864
14865         * inssel.brg: Fix a warning.
14866
14867 2007-09-03  Martin Baulig  <martin@ximian.com>
14868
14869         * debug-debugger.c: `MONO_DEBUGGER_EVENT_INITIALIZE_MANAGED_CODE'
14870         now takes the `main_method' as argument.
14871
14872 2007-09-02  Zoltan Varga  <vargaz@gmail.com>
14873
14874         * cpu-sparc.md (endfilter): Add missing src1:i argument.
14875
14876 2007-08-30  Jonathan Chambers <joncham@gmail.com>
14877
14878         * driver.c: include the cil-coff.h header on Windows.
14879         
14880         Code is contributed under MIT/X11 license.
14881
14882 Thu Aug 30 16:17:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
14883
14884         * mini.c, driver.c: don't include the cil-coff.h header.
14885
14886 Thu Aug 30 14:50:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
14887
14888         * mini.c: flag places that needs fixes fo soft-float support.
14889
14890 Wed Aug 29 18:26:20 CEST 2007 Paolo Molaro <lupus@ximian.com>
14891
14892         * mini.h, inssel-float.brg: fix soft-float constant loads on big
14893         endian systems (partially from Dean Jenkins, bug #81924).
14894
14895 2007-08-28  Mark Probst  <mark.probst@gmail.com>
14896
14897         * mini.c (check_linkdemand): Remove embedded reference object in
14898         call to LinkDemandSecurityException.
14899         (mono_jit_compile_method_inner): Call LinkDemandSecurityException
14900         with an IntPtr instead of a reference object.
14901
14902 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
14903
14904         * mini.c (handle_initobj): Handle alignment properly.
14905
14906         * inssel.brg (mini_emit_memset): Ditto. 
14907
14908         * inssel.brg (mini_emit_memcpy): Ditto. 
14909
14910         * inssel-sparc.brg: Ditto.              
14911
14912         * mini.h mini.c inssel-*.brg: Pass alignment information to OP_MEMCPY/MEMSET.
14913
14914 2007-08-26  Zoltan Varga  <vargaz@gmail.com>
14915
14916         * mini-exceptions.c (mono_handle_exception_internal): Skip the first frame for
14917         exceptions raised in unmanaged code. Fixes part of #82594.
14918
14919 2007-08-24  Mark Probst  <mark.probst@gmail.com>
14920
14921         * mini.c (mono_method_to_ir), declsec.c
14922         (mono_declsec_linkdemand_aptc): Fixed custom attr leaks.
14923
14924 2007-08-22  Martin Baulig  <martin@ximian.com>
14925
14926         * debug-mini.h
14927         (MonoDebuggerThreadInfo): New typedef.
14928         (mono_debugger_thread_table): New global variable.
14929         (mono_debugger_thread_created): New public function.
14930         (mono_debugger_thread_cleanup): New public function.
14931
14932         * debug-debugger.h
14933         (MonoDebuggerInfo):
14934         - removed `get_current_thread' and `lookup_assembly'.
14935         - removed `data_table'.
14936         - added `thread_table'.
14937
14938         * mini.c
14939         (mono_thread_start_cb): Call mono_debugger_thread_created().
14940         (mono_thread_attach_cb): Likewise.
14941         (mini_thread_cleanup): Call mono_debugger_thread_cleanup().
14942         (mini_cleanup): Move mono_debug_cleanup() down, after free'ing the
14943         initial domain.
14944
14945         * driver.c (mono_main): Move mono_debug_init() up, before calling
14946         mini_init(); mono_debug_init_1() and mono_debug_init_2() are gone.
14947
14948 Tue Aug 21 16:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
14949
14950         * mini-x86.c, inssel-x86.brg: group multiple stack adjustments
14951         together when passing several arguments of type double (gives a small
14952         speedup and saves a few bytes of generated code).
14953
14954 2007-08-20  Jb Evain  <jbevain@novell.com>
14955
14956         * mini.c (mono_method_to_ir): fix leak on InvalidProgramException.
14957
14958 2007-08-20  Jb Evain  <jbevain@novell.com>
14959
14960         * mini.c (mono_method_to_ir): throw MethodAccessException
14961         and FieldAccessException instead of InvalidProgramException.
14962
14963 2007-08-20  Mark Probst  <mark.probst@gmail.com>
14964
14965         * mini.c: CoreCLR security checks.
14966
14967         * mini.h: Removed MonoSecurityMode (moved to
14968         metadata/security-manager.h) and mono_security_mode global var
14969         (replaced by set/get functions in security-manager.h).
14970
14971         * driver.c: Added "core-clr-test" security mode for testing.  Used
14972         set-function for setting security mode.
14973
14974 2007-08-17  Mark Probst  <mark.probst@gmail.com>
14975
14976         * mini.c: MonoJitInfo's are freed hazardously now.  Statistics for
14977         the new jit_info_table.
14978
14979         * driver.c: Test code for the new jit_info_table (enabled by the
14980         define MONO_JIT_INFO_TABLE_TEST).
14981
14982 2007-08-14  Zoltan Varga  <vargaz@gmail.com>
14983
14984         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
14985         detection of call <REG> instruction sequence. Fixes build on freebsd.
14986
14987 2007-08-13  Zoltan Varga  <vargaz@gmail.com>
14988
14989         * mini-exceptions.c: Fix a warning.
14990
14991 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
14992
14993         * exceptions-amd64.c (mono_arch_handle_altstack_exception): Enable the new
14994         stack overflow handling code on amd64 too.
14995
14996         * mini-exceptions.c (mono_setup_altstack): Make this use 
14997         mono_thread_get_stack_bounds ().
14998
14999         * mini-x86.h: Disable sigaltstack on solaris x86.
15000
15001 2007-08-10  Zoltan Varga  <vargaz@gmail.com>
15002
15003         * mini-exceptions.c (mono_setup_altstack): Enable this to work on solaris x86.
15004
15005 2007-08-10  Geoff Norton  <gnorton@customerdna.com>
15006
15007         * tramp-x86.c: Remove some unneeded alignment changes on Apple.  Fixes #82387.
15008
15009 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
15010
15011         * mini-exceptions.c (mono_print_thread_dump): Enable this on amd64 too.
15012
15013         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Fix a warning.
15014
15015 2007-08-03  Neale Ferguson <neale@sinenomine.net>
15016
15017         * mini-s390.c (add_general): Adjust offset calculation to take into account of rounding up
15018         due to alignment.
15019
15020 Thu Aug 2 17:36:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
15021
15022         * mini-ppc.c: avoid an invalid encoding of unsigned right shift by 0
15023         to be emitted (bug #82281).
15024
15025 2007-08-01  Martin Baulig  <martin@ximian.com>
15026
15027         Merged the `debugger-dublin' branch.
15028
15029         * debug-debugger.h (MonoDebuggerInfo):
15030         Removed the `old_*' compatibility entries.
15031         Added `debugger_version' and `data_table'.
15032         Renamed `get_method_addr_or_bpt' -> `insert_breakpoint'.
15033         Renamed `remove_method_breakpoint' -> `remove_breakpoint'.
15034
15035         * debug-mini.c
15036         (MiniDebugMethodBreakpointInfo): Add `address_list'.
15037         (mono_debugger_check_breakpoints): Take a `MonoDebugMethodAddress *'
15038         instead of a `gconstpointer'.
15039         (mono_debugger_insert_method_breakpoint): Return a
15040         `MonoDebugMethodAddressList *'.
15041
15042 2007-06-28  Martin Baulig  <martin@ximian.com>
15043
15044         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
15045
15046 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
15047
15048         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Avoid using 
15049         __builtin_frame_address () since it is broken on older gcc versions.
15050
15051 Tue Jul 31 17:34:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
15052
15053         * mini.c, mini.h, mini-exceptions.c: added a bit of documentation
15054         on the stack overflow handling and made the managed stack overflows
15055         catchable in most cases using soft guard pages.
15056         * exceptions-x86.c: added code to restore the protection in the soft
15057         guard pages at the end of exception handling.
15058
15059 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
15060
15061         * mini.c (SIG_HANDLER_SIGNATURE): Fix a warning.
15062
15063 Mon Jul 30 17:43:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
15064
15065         * exceptions-ppc.c, mini-ppc.h: arch-specific stack overflow
15066         exception handling.
15067
15068 Mon Jul 30 17:38:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
15069
15070         * mini-alpha.h, mini-ia64.h, mini-sparc.h: disable the altstack
15071         signal handling support until it has been ported to the new mechanism.
15072         * mini.c: fixed stack overflow detection and use the new
15073         architecture code  to handle signals on the altstack.
15074
15075 Mon Jul 30 17:33:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
15076
15077         * exceptions-amd64.c, mini-amd64.h: amd64 code to handle
15078         stack overflows on the alt stack.
15079
15080 Mon Jul 30 17:29:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
15081
15082         * exceptions-x86.c, mini-x86.h, mini.h: new code to handle
15083         stack overflows on the alt stack.
15084
15085 Mon Jul 30 11:50:06 CEST 2007 Paolo Molaro <lupus@ximian.com>
15086
15087         * exceptions-ppc.c: cleanup preparing for altstack support.
15088
15089 Mon Jul 30 11:31:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
15090
15091         * exceptions-arm.c: cleanup preparing for altstack support.
15092
15093 2007-07-27  Mark Probst  <mark.probst@gmail.com>
15094
15095         * mini.c (print_jit_stats): Output hazard pointer stats.
15096
15097 2007-07-26  Mark Probst  <mark.probst@gmail.com>
15098
15099         * driver.c, mini.c: Replaced security mode flags with a single
15100         enum variable.
15101
15102 Thu Jul 26 20:12:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
15103
15104         * mini.c, mini-exceptions.c: cleanup the sigaltstack code.
15105
15106 2007-07-25  Mark Probst  <mark.probst@gmail.com>
15107
15108         * mini.c, mini.h, driver.c (mono_main): Added command-line flag
15109         (which doesn't do anything yet) for activating Core CLR
15110         (Silverlight) security.
15111
15112 Tue Jul 24 21:16:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
15113
15114         * mini-codegen.c: work around a possible gcc bug on arm.
15115
15116 Tue Jul 24 17:20:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
15117
15118         * driver.c, mini-x86.h, mini-amd64.h: print a nice error
15119         message for platforms that don't support AOT compilation.
15120
15121 Mon Jul 23 10:29:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
15122
15123         * mini.h, mini.c, driver.c: temporary smcs hack.
15124
15125 Mon Jul 23 09:29:34 CEST 2007 Paolo Molaro <lupus@ximian.com>
15126
15127         * mini-arm.h, mini-arm.c: arm EABI fixes.
15128
15129 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
15130
15131         * exceptions-x86.c (mono_arch_find_jit_info): Handle the lmf->method == NULL
15132         case.
15133
15134         * tramp-x86.c (mono_arch_create_trampoline_code): Only set lmf->method for
15135         trampolines taking a method argument.
15136
15137         * mini-x86.h (MonoLMF): Add an 'esp' field plus comments.
15138
15139         * mini-x86.c (mono_arch_emit_prolog): Update after changes to the LMF structure.
15140         * tramp-x86.c (mono_arch_create_trampoline_code): Ditto.
15141
15142         * exceptions-x86.c (mono_arch_get_jit_info): Properly clean up the stack after
15143         JIT compilation throws an exception. Fixes #82050.
15144
15145 2007-07-19  Mark Probst  <mark.probst@gmail.com>
15146
15147         * mini.c: Removed the MonoLoaderErrorKind enum and replaced it
15148         with the MONO_EXCEPTION_ defines.
15149
15150 2007-07-17  Zoltan Varga  <vargaz@gmail.com>
15151
15152         * mini-amd64.c (mono_arch_find_imt_method): Handle mov reg,IMM64 case. Fixes
15153         #82117.
15154         
15155         * mini-amd64.c (mono_arch_find_imt_method): Add some debug code to help find out
15156         the cause of an assertion.
15157
15158 Mon Jul 16 19:31:21 CEST 2007 Paolo Molaro <lupus@ximian.com>
15159
15160         * mini.c, jit-icalls.c: mono_get_inflated_method() is obsolete,
15161         removed.
15162
15163 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
15164
15165         * mini-amd64.c (mono_arch_build_imt_thunk): Remove the non-32bit MonoMethod
15166         assert. Should fix #82103.
15167
15168 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
15169
15170         * mini-exceptions.c (mono_jit_walk_stack_from_ctx): Use MONO_CONTEXT_GET_SP ()
15171         here too. Fixes #82095.
15172
15173         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for non-32bit MonoMethod
15174         addresses.
15175
15176         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a couple asserts.
15177
15178         * mini-amd64.h: Enable IMT for amd64.
15179         
15180         * mini-amd64.c (mono_arch_build_imt_thunk): Optimize IMT thunk size.
15181
15182 2007-07-12  Zoltan Varga  <vargaz@gmail.com>
15183
15184         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for IMT call sequences.
15185
15186 2007-07-12  Mark Probst  <mark.probst@gmail.com>
15187
15188         * mini.c (check_linkdemand, mono_method_to_ir): Abort compilation
15189         as soon as check_linkdemand sets an exception_type.
15190
15191 Thu Jul 12 12:18:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
15192
15193         * mini-x86.c: fixed offsets for IMT call sequence.
15194         * mini-x86.h: enable IMT again.
15195
15196 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
15197
15198         * trace.c (mono_trace_enter_method): Decode MonoType too.
15199
15200         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Handle signed displacements too.
15201
15202         * mini.h mini-x86.h mini-trampolines.c: Change the signature of mono_arch_find_imt_method () to pass the calling code address too.
15203
15204         * mini-amd64.c: Add preliminary IMT implementation.
15205         
15206 Wed Jul 11 18:21:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
15207
15208         * mini-x86.c: adjusted mono_arch_get_vcall_slot_addr () to
15209         understand the new IMT-base interface invocation (thanks to
15210         Daniel Nauck for the report and the remote debugging session).
15211
15212 Wed Jul 11 14:54:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
15213
15214         * mini-x86.c: size and speed optimizations for the IMT bsearch.
15215
15216 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
15217
15218         * Makefile.am (aotcheck): Make this actually use the AOTed code.
15219
15220 Wed Jul 11 12:41:32 CEST 2007 Paolo Molaro <lupus@ximian.com>
15221
15222         * mini-trampolines.c: implement AOT IMT support.
15223         * mini-x86.h: enable IMT support for wider testing.
15224
15225 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
15226
15227         * inssel.brg (emit_imt_argument): Add aot support here.
15228
15229         * aot-runtime.c (decode_patch_info): Fix reading of MONO_PATCH_INFO_METHOD.
15230
15231 Tue Jul 10 17:50:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
15232
15233         * mini-x86.c, mini-x86.h, tramp-x86.c: x86 arch-specific changes
15234         of the IMT implementation, partially from massi, with my
15235         implementation of the bsearch sequence. Disabled by default until
15236         the AOT code is implemented.
15237
15238 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
15239
15240         * cpu-x86.md: The source argument of sext_i1/i2 must by a byte reg.
15241
15242         * inssel-x86.brg: Add reg:ldind.i1(regvar) rules. Fixes #82056.
15243
15244 Tue Jul 10 17:33:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
15245
15246         * inssel.brg, mini.c, mini.h, mini-trampolines.c:
15247         arch-independent IMT JIT code from Massimiliano
15248         Mantione (massi@ximian.com) with small cleanups from me.
15249
15250 Tue Jul 10 13:07:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
15251
15252         * Makefile.am: fix svn invocation to get the svn revision to be
15253         independent of the local language (build fix).
15254
15255 2007-07-09  Mark Probst  <mark.probst@gmail.com>
15256
15257         * mini.c (inline_method): Reset cfg->exception_type if the
15258         inlining is aborted.  Fixes: 82049.
15259
15260 Mon Jul 9 17:26:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
15261
15262         * mini.c: remove assert from exception handling code when exception_ptr
15263         is not set.
15264
15265 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
15266
15267         * mini.c (mono_codegen): Add an assert.
15268
15269         * mini-x86.c (mono_arch_emit_prolog): Allocate space for the profiler method 
15270         enter and leave code.
15271         * mini-amd64.c (mono_arch_emit_prolog): Likewise.
15272
15273 Thu Jul 5 20:12:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
15274
15275         * mini-ppc.c: fixed memory corruption for localloc(0)
15276         (bug #81852).
15277
15278 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
15279         
15280         * mini.c: Fix warnings.
15281
15282 Wed Jul 4 15:30:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
15283
15284         * optflags-def.h, mini-x86.c: added sse2 optimization flag and use it
15285         to emit better double->int conversions.
15286
15287 Tue Jul 3 19:42:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
15288
15289         * mini.c: the provided Min/Max optimizations are valid for unisgned
15290         ints.
15291
15292 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
15293
15294         * 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
15295
15296 2007-06-28  Miguel de Icaza  <miguel@novell.com>
15297
15298         * mini.c (mono_running_on_valgrind): Add support for reporting the
15299         method and  its boundaries to valgrind.
15300
15301 2007-06-28  Martin Baulig  <martin@ximian.com>
15302
15303         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
15304
15305 2007-06-25  Zoltan Varga  <vargaz@gmail.com>
15306
15307         * ssa.c (visit_inst): Add support for OP_BR. Fixes #81946.
15308
15309         * generic.2.cs: Add new test case.
15310
15311 2007-06-25  Martin Baulig  <martin@ximian.com>
15312
15313         Merged the `debugger-dublin' branch.
15314
15315         * debug-mini.c
15316         (mono_debugger_insert_method_breakpoint): New public method.
15317         (mono_debugger_remove_method_breakpoint): Likewise.
15318         (mono_debugger_check_breakpoints): New static method.
15319         (mono_debug_close_method): Call mono_debugger_check_breakpoints().
15320
15321         * debug-debugger.h (MonoDebuggerInfo):
15322         Renamed (to keep backward compatibility in the vtable):
15323         `insert_breakpoint' -> `old_insert_breakpoint'.
15324         `remove_breakpoint' -> `old_remove_breakpoint'.
15325         `create_string' -> `old_create_string'.
15326         `lookup_class' -> `old_lookup_class'.
15327         `lookup_type' -> removed; changed into a dummy field.
15328         `lookup_assembly' -> `old_lookup_assembly'.
15329         Added (same functionality, but different signature):
15330         `create_string', `lookup_class', `lookup_assembly'
15331         Added new:
15332         `get_method_addr_or_bpt', `remove_method_breakpoint',
15333         `runtime_class_init'.
15334
15335         * debug-debugger.c: Merged the `debugger-dublin' branch.
15336
15337 2007-06-23  Zoltan Varga  <vargaz@gmail.com>
15338
15339         * mini-amd64.c (peephole_pass_1): Optimize away moves at the beginning of the bb as
15340         well.
15341         (peephole_pass): Likewise.
15342
15343 Fri Jun 22 09:17:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
15344
15345         * driver.c: hopefully make setaffinity work also for ancient
15346         versions of linux.
15347
15348 2007-06-22  Atsushi Enomoto  <atsushi@ximian.com>
15349
15350         * driver.c : win32 build fix.
15351
15352 Thu Jun 21 19:24:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
15353
15354         * driver.c: check for the MONO_NO_SMP env var and bind to a single
15355         processor if it is set.
15356
15357 2007-06-21  Martin Baulig  <martin@ximian.com>
15358
15359         * debug-mini.h: New file.
15360
15361         * debug-mini.c
15362         (mono_debugger_insert_breakpoint_full): Moved here from
15363         ../metadata/mono-debug-debugger.c.
15364         (mono_debugger_remove_breakpoint): Likewise.
15365         (mono_debugger_breakpoint_callback): Likewise.
15366
15367 2007-06-15  Raja R Harinath  <rharinath@novell.com>
15368
15369         * jit-icalls.c (mono_helper_compile_generic_method): Update to
15370         changes in MonoGenericClass.
15371
15372 2007-06-14  Zoltan Varga  <vargaz@gmail.com>
15373
15374         * mini-codegen.c (mono_opcode_to_type): Fix ia64 build.
15375
15376 2007-06-14  Raja R Harinath  <rharinath@novell.com>
15377
15378         * jit-icalls.c (mono_helper_compile_generic_method): Update to
15379         removal of MonoGenericMethod.
15380
15381 Thu Jun 14 12:42:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
15382
15383         * mini-exceptions.c: hooks for the exception events profiling API.
15384
15385 2007-06-14  Randolph Chung  <tausq@debian.org>
15386
15387         * Makefile.ma: Add hppa target.
15388         * mini-arch.h: Include mini-hppa.h
15389         * cpu-hppa.md, exceptions-hppa.c, inssel-hppa.brg, mini-hppa.c,
15390         mini-hppa.h, tramp-hppa.c: New files for 32-bit HPPA port.
15391         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15392
15393 2007-06-14  Randolph Chung  <tausq@debian.org>
15394
15395         * inssel.brg: Add rules for "chained" compare-branch operations so that
15396         a single compare op can affect multiple branches.  Adjust cost for
15397         OP_CEQ/OP_CGT/OP_CGT_UN/OP_CLT/OP_CLT_UN.
15398         * inssel-long32.brg: Update rules to use compare-branch macros.  Adjust
15399         cost for some rules so that they can more easily be overridden by
15400         per-arch rules (with fixes from lupus).
15401         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15402
15403 2007-06-13  Randolph Chung  <tausq@debian.org>
15404
15405         * mini-ops.h: Reorder branch ops so that they match the order of the
15406         corresponding CEE_* ops.  The code expects them this way.
15407         Add new ops for HPPA target.
15408         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15409
15410 2007-06-13  Randolph Chung  <tausq@debian.org>
15411
15412         * mini-exceptions.c: Handle cases where the stack grows towards
15413         larger addresses.
15414         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
15415
15416 Wed Jun 13 19:13:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
15417
15418         * jit-icalls.c, mini.h, mini.c: added virtual generic invoke
15419         counter.
15420         * driver.c: explain where a non-matching corlib is found.
15421
15422 2007-06-13  Mark Probst  <mark.probst@gmail.com>
15423
15424         * mini.c (print_jit_stats): Output dynamic code allocation stats.
15425
15426 2007-06-10  Sanghyeon Seo <sanxiyn@gmail.com>
15427
15428         * mini-exceptions.c: Generate a method profile leave event during
15429         an exception to ensure that the profiler gets notified.
15430
15431 2007-06-07  Zoltan Varga  <vargaz@gmail.com>
15432
15433         * mini-amd64.c (peephole_pass): Merge some small changes from the linear-ir 
15434         branch.
15435
15436         * cpu-amd64.md: Add long_and/or/xor opcodes.
15437
15438 2007-06-06  Wade Berrier  <wberrier@novell.com>
15439
15440         * cpu-s390x.md (shr_imm): Correct the length of shr_imm instruction.
15441         (./class/lib/monolite/mcs.exe:25498): WARNING **: wrong maximal instruction 
15442         length of instruction shr_imm (expected 8, got 10)
15443
15444 2007-06-06  Zoltan Varga  <vargaz@gmail.com>
15445
15446         * mini-ia64.c (mono_arch_output_basic_block): Really fix the build.
15447
15448 2007-06-06  Mark Probst  <mark.probst@gmail.com>
15449
15450         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
15451         MonoInternalHashTable again (fixed bug in the internal hash table
15452         code).
15453
15454 2007-06-06  Mark Probst  <mark.probst@gmail.com>
15455
15456         * mini.c, driver.c: Reverted the MonoInternalHashTable changes.
15457         Have to figure out what makes it crash the SWF regression.
15458
15459 2007-06-05  Zoltan Varga  <vargaz@gmail.com>
15460
15461         * mini-ia64.c (mono_arch_lowering_pass): Fix ia64 build.
15462
15463 Tue Jun 5 17:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
15464
15465         * mini.c: optimize out the type check when storing null in a
15466         reference array.
15467
15468 2007-06-04  Mark Probst  <mark.probst@gmail.com>
15469
15470         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
15471         MonoInternalHashTable.
15472
15473 Mon Jun 4 11:29:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
15474
15475         * inssel.brg, mini.c, mini-ops.h: optimized Math.Mini/Max
15476         signed integer methods.
15477
15478 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
15479
15480         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case 
15481         permanently since the current approach doesn't work.
15482
15483 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
15484
15485         * inssel.brg (stmt): Only call delegate->invoke_impl if 
15486         MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE is defined.
15487
15488 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
15489
15490         * mini-amd64.c (mono_arch_output_basic_block): Unify div/rem opcodes and handle
15491         the sreg2==rdx case.
15492         
15493         * mini-amd64.c cpu-amd64.md: Correct length of r4const instruction and take into
15494         account if it contains a rex prefix.
15495         (peephole_pass): Handle OP_FMOVE as well.
15496
15497 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
15498
15499         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case for now
15500         as it causes regressions.
15501
15502 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
15503
15504         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement support for the
15505         static case as well.
15506
15507         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix ia64 build.
15508
15509         * mini-x86.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
15510         (mono_arch_get_this_arg_from_call): Ditto.
15511
15512         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Removed.
15513
15514         * inssel.brg (mini_emit_virtual_call): Call delegate->Invoke through the delegate's
15515         invoke_impl field.
15516
15517         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
15518         (mono_arch_get_this_arg_from_call): Ditto.
15519
15520         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Removed.
15521         
15522         * mini-trampolines.c (mono_delegate_trampoline): Complete rewrite. On first call,
15523         try to create optimized invoke code and use that for further invocations. 
15524         Otherwise, use the original mono_marshal_get_delegate_invoke () implementation.
15525
15526         * mini-x86.h mini-ia64.h: Remove MONO_ARCH_HAS_CREATE_DELEGATE_TRAMPOLINE for now.
15527
15528 2007-05-29  Rodrigo Kumpera  <kumpera@gmail.com>
15529
15530         * inssel.brg (mini_emit_virtual_call): Statically dispatch virtual calls to
15531         sealed classes or methods.
15532         *devirtualization.cs: tests for the new optimization
15533
15534 2007-05-29  Zoltan Varga  <vargaz@gmail.com>
15535
15536         * liveness.c (update_gen_kill_set): No need to set VOLATILE flags here, it is done
15537         by the update_volatile () function.
15538
15539 2007-05-27  Zoltan Varga  <vargaz@gmail.com>
15540
15541         * driver.c (mono_main): Call g_thread_init () early since newer glib versions
15542         require it.
15543
15544         * abcremoval.c (mono_perform_abc_removal): Avoid using alloca.
15545
15546 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
15547
15548         * mini.c: Add configure checks for header files.
15549         * mini-x86.c: Add configure checks for header files.
15550         * trace.c: Add configure checks for header files.
15551         * aot-runtime.c: Add configure checks for header files.
15552         * aot-compiler.c: Add configure checks for header files.
15553         * driver.c: Add configure checks for header files.
15554         * mini-codegen.c: Add configure checks for header files.
15555         
15556         Code is contributed under MIT/X11 license.
15557
15558 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
15559
15560         * mini-ia64.c (mono_arch_lowering_pass): Fix the handling of
15561         icompare_imm -128 + op_iclt. Fixes #81703.
15562
15563 2007-05-19  Zoltan Varga  <vargaz@gmail.com>
15564
15565         * mini-codegen.c (mono_local_regalloc): Fix long-shift-regalloc on amd64.
15566
15567 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
15568
15569         * inssel.brg: added "mini_emit_load_intf_bit_reg_vtable", and used it
15570         inside "mini_emit_isninst_iface_cast" and "mini_emit_castclass_iface"
15571         so that all isinst checks now use "interface_bitmap".
15572
15573 2007-05-15  Zoltan Varga  <vargaz@gmail.com>
15574
15575         * cpu-amd64.md (jmp): Fix a warning.
15576
15577         * inssel.brg (CEE_SWITCH): Hopefully fix #80738.
15578
15579         * basic.cs: Add new regression test.
15580
15581         * basic.cs: Remove test which is now in basic-long.cs.
15582
15583         * mini-ia64.c (mono_arch_output_basic_block): Sign extend in CEE_CONV_I8/CEE_CONV_I.
15584
15585         * basic-long.cs: Add new test.
15586         
15587 2007-05-13  Zoltan Varga  <vargaz@gmail.com>
15588
15589         * mini-sparc.c (mono_spillvar_offset_float): Fix sparc build.
15590
15591 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
15592
15593         * cpu-x86.md minix-86.c: Add a peephole_pass_1 () as on amd64.
15594
15595         * mini-x86.c (mono_arch_output_basic_block): Use mono_opcode_to_cond () in a few
15596         places.
15597         
15598         * mini-x86.c (mono_arch_emit_exceptions): Decrease the size of the exception 
15599         throwing code a bit.
15600
15601         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Decrease the size of 
15602         the exception throwing code a bit.
15603
15604         * mini-x86.c (get_call_info): Allocate result from a mempool.
15605
15606 2007-05-11  Zoltan Varga  <vargaz@gmail.com>
15607
15608         * aot-compiler.c (find_typespec_for_class): Fix the assert.
15609
15610         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
15611
15612         * mini.h (MonoCompile): Add 'token_info_hash' field.
15613
15614         * mini.c: Save token->method associations during compilation so the AOT 
15615         compiler can use it.
15616         
15617         * aot-compiler.c aot-runtime.c: Add support for compiling non-generic methods
15618         which reference generic classes and methods.
15619
15620 2007-05-10  Zoltan Varga  <vargaz@gmail.com>
15621
15622         * mini.h mini-<ARCH>.h: Get rid of MONO_ARCH_HAS_XP_LOCAL_REGALLOC.
15623
15624         * aot-compiler.c (compile_method): Fix a typo in a comment.
15625
15626         * aot-runtime.c (decode_cached_class_info): Skip generic types.
15627
15628         * aot-compiler.c: Add minimal support for AOTing generic code by skipping 
15629         everything generic.
15630
15631         * mini.c (mono_method_to_ir): Disable AOT when calling helper_compile_generic_method.
15632
15633 2007-05-09  Zoltan Varga  <vargaz@gmail.com>
15634
15635         * mini.h (MonoCompile): Add 'args' field.
15636
15637         * mini.c (mono_compile_create_vars): Store variables representing the arguments
15638         into cfg->args.
15639
15640         * mini-<ARCH>.c: Use cfg->args for accessing the method arguments.
15641
15642 2007-05-08  Zoltan Varga  <vargaz@gmail.com>
15643
15644         * mini.c (mono_compile_get_interface_var): Remove this unused function.
15645
15646         * mini-ops.h inssel.brg mini-<ARCH>.c: Add a new opcode for ckfinite as well.
15647
15648         * mini-ops.h: Introduce new opcodes used in the IR instead of the original CEE_
15649         opcodes for some opcodes.
15650
15651         * mini.h *.brg *.c: Use the new opcodes.
15652
15653 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
15654
15655         * mini.h: Bumped aot revision.
15656
15657         * inssel.brg: modified code generation of type checks for interfaces
15658         to use the new "MonoClass.interface_bitmap" instead of the old
15659         "MonoClass.interface_offsets".
15660
15661 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
15662
15663         * cpu-amd64.md (jmp): Increase the maximum size of the jmp opcode to 128.
15664
15665 2007-04-29  Zoltan Varga  <vargaz@gmail.com>
15666
15667         * abcremoval.c (summarize_integer_value): Handle OP_LCONV_TO_I4 to fix abcrem on
15668         64 bit platforms.
15669
15670 2007-04-27  Neale Ferguson <neale@sinenomine.net>
15671
15672         * mini-s390x.c: Fix MONO_TYPE_VALUETYPE processing.
15673
15674 2007-04-27  Wade Berrier  <wberrier@novell.com>
15675
15676         * mini-s390x.c: Remove redeclaration of CompRelation and CompType (defined in 
15677         mini.h) to fix build.
15678
15679 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
15680
15681         * mini-amd64.c (peephole_pass_1): Fix and reenable this pass.
15682         
15683         * mini-amd64.c (mono_arch_local_regalloc): Disable the new peephole_pass_1 as it
15684         causes the corlib unit tests to fail.
15685
15686 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
15687
15688         * mini-codegen.c (mono_opcode_to_type): Fix a bug in the previous patch.
15689
15690         * mini-amd64.c (peephole_pass_1): New pass to perform before local regalloc.
15691
15692         * mini-codegen.c (mono_opcode_to_cond): New helper function to convert conditional 
15693         opcodes to the comparison relations.
15694
15695         * mini-codegen.c (mono_opcode_to_type): New helper function to convert conditional 
15696         opcodes to their types.
15697         
15698         * mini-ia64.c mini-amd64.c: Use mono_opcode_to_cond and mono_opcode_to_type.
15699
15700         * mini-amd64.c (get_call_info): Allocate the result from the cfg mempool and cache 
15701         it in cfg->arch.cinfo.
15702
15703         * local-propagation.c (mono_local_cprop_bb): Fix a warning.
15704
15705         * mini.h mini.c branch-opts.c: Change bbhash to be an array and store it in 
15706         cfg->cil_offset_to_bb.
15707
15708 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
15709
15710         * liveness.c (optimize_initlocals): New mini-pass to optimize away dead assignments
15711         created becase of initlocals.
15712
15713 2007-04-23  Zoltan Varga  <vargaz@gmail.com>
15714
15715         * mini-alpha.c cpu-alpha.md: More alpha port work from 
15716         Sergey Tikhonov <tsv@solvo.ru>.
15717
15718 2007-04-21  Andreas Faerber  <andreas.faerber@web.de>
15719
15720         * Makefile.am (BUILT_SOURCES): Fix for automake 1.6.x. Fixes #81417.
15721
15722 2007-04-19  Zoltan Varga  <vargaz@gmail.com>
15723
15724         * cpu-s390.md (break): Correct the length of break instruction.
15725
15726 Thu Apr 19 16:28:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
15727
15728         * mini.c: fix a couple of soft-float issues and comments.
15729
15730 2007-04-15  Miguel de Icaza  <miguel@novell.com>
15731
15732         * trace.c (is_filenamechar): - is also a filename char.
15733
15734 2007-04-15  Neale Ferguson <neale@sinenomine.net>
15735
15736         * mini-s390.c: Correct checking for enum type in return value processing.
15737
15738 2007-04-14  Raja R Harinath  <rharinath@novell.com>
15739
15740         * Makefile.am (BUILT_SOURCES): Add 'version.h'.
15741         (version.h): Makefile is in the build directory.
15742
15743 2007-04-06  Andreas Faerber  <andreas.faerber@web.de>
15744
15745         * mini-amd64.h: fix for assertion failure on Solaris/amd64
15746
15747 2007-04-11  Martin Baulig  <martin@ximian.com>
15748
15749         * mini.c (can_access_member): Fix handling of generic classes;
15750         fixes #81259.
15751
15752 2007-04-10  Zoltan Varga  <vargaz@gmail.com>
15753
15754         * aot-runtime.c (mono_aot_plt_resolve): Fix disabling of AOT. Fixes #81316.
15755
15756 2007-04-05  Zoltan Varga  <vargaz@gmail.com>
15757
15758         * aot-runtime.c: Fix disabling of AOT. Fixes #81316.
15759
15760 Fri Mar 23 20:25:31 CET 2007 Paolo Molaro <lupus@ximian.com>
15761
15762         * mini-codegen.c: make sure the right spill amount is
15763         used for fp or integer registers (fixes the float_sub_spill() on ppc).
15764
15765 Fri Mar 23 19:43:35 CET 2007 Paolo Molaro <lupus@ximian.com>
15766
15767         * mini-ppc.c: fixes for the fp_branch_nan test.
15768
15769 2007-03-23  Zoltan Varga  <vargaz@gmail.com>
15770
15771         * basic.cs: Comment out new test which still fails on ia64.
15772
15773 Fri Mar 23 15:54:23 CET 2007 Paolo Molaro <lupus@ximian.com>
15774
15775         * mini.c: immediate shifted or fix (mono_metadata_user_string assert).
15776
15777 Fri Mar 23 12:53:28 CET 2007 Paolo Molaro <lupus@ximian.com>
15778
15779         * mini-ppc.c, mini-ppc.h: struct passing ABI fix (bug #77968).
15780
15781 2007-03-22  Zoltan Varga  <vargaz@gmail.com>
15782
15783         * cfold.c (FOLD_BINOP): Cast the result to gint32 to prevent overflow problems
15784         on 64 bit machines. Fixes part of #80738.
15785
15786         * basic.cs: Add regression test.
15787
15788 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
15789
15790         * inssel.brg basic.cs: Revert previous change to fix build.
15791
15792         * inssel.brg (SWITCH): Clean out the upper word of the switch value on 64 bit
15793         platforms.
15794         
15795         * inssel.brg (SWITCH): Use an integer comparison. Fixes #80738.
15796
15797         * basic.cs: Add new regression test.
15798
15799 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
15800
15801         * mini-ia64.c (mono_arch_emit_prolog): Fix an assert when a function has too
15802         many arguments.
15803
15804 2007-03-16  Neale Ferguson <neale@sinenomine.net>
15805
15806         * cpu-s390x.md: Correct length of break instruction.
15807
15808 2007-03-16  Neale Ferguson <neale@sinenomine.net>
15809
15810         * mini-s390x.c, cpu-s390x.md: Fix #80507 for s390x.
15811         * mini-s390.c, cpu-s390.md: Fix #80507 for s390.
15812
15813 2007-03-15  Jonathan Chambers  <joncham@gmail.com>
15814
15815         * *.c: Begin WIN64 port.
15816         * mini.c:  Use correct register in profiler.
15817         * mini-amd64.c: No inline assembly on Win64.
15818         * mini-amd64.h: Implement MONO_INIT_CONTEXT_FROM_FUNC for Win64.
15819         Only define MONO_ARCH_USE_SIGACTION on non-windows platforms.
15820         * exceptions-amd64.c: Only need gregs_from_ucontext if MONO_ARCH_USE_SIGACTION
15821         is defined. Implement mono_arch_sigctx_to_monoctx, mono_arch_monoctx_to_sigctx, and
15822         mono_arch_ip_from_context for Win64.
15823         
15824         Contributed under MIT/X11 license.
15825
15826 2007-03-15  Zoltan Varga  <vargaz@gmail.com>
15827
15828         * exceptions-amd64.c (seh_handler): Ditto.
15829
15830         * exceptions-x86.c (seh_handler): Fix a memory leak.
15831
15832 Thu Mar 15 13:47:59 CET 2007 Paolo Molaro <lupus@ximian.com>
15833
15834         * mini-arm.c, mini-mips.c, mini-ppc.c, mini-s390.c,
15835         mini-s390x.c: fixed peephole optimizations to deal
15836         correctly with 1 and 2 byte reload avoidance.
15837
15838 Thu Mar 15 10:17:54 CET 2007 Paolo Molaro <lupus@ximian.com>
15839
15840         * cpu-s390.md, cpu-s390x.md: update localloc length.
15841
15842 Wed Mar 14 21:00:19 CET 2007 Paolo Molaro <lupus@ximian.com>
15843
15844         * cpu-g4.md: added missing descriptions.
15845
15846 2007-03-14  Miguel de Icaza  <miguel@novell.com>
15847
15848         *  Makefile.am: Add support so the tail tests are not executed on
15849         PowerPC as that is a known limitation of the PowerPC port.
15850
15851 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
15852
15853         * runmdesc.bat:  Move to msvc directory.
15854         
15855 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
15856
15857         * runmdesc.bat:  Run executable that was produced by the current
15858         target and sent via an argument.
15859         
15860 2007-03-11  Zoltan Varga  <vargaz@gmail.com>
15861
15862         * mini.c (mono_method_to_ir): Fix box+brtrue optimization. Fixes
15863         #81102.
15864
15865         * generics.2.cs: Add regression test.
15866
15867 2007-03-09  Wade berrier  <wberrier@novell.com>
15868
15869         * mini-ppc.h: Undo typo of MONO_CONTEXT_SET_SP (ppc doesn't define this symbol)
15870
15871 2007-03-09  Zoltan Varga  <vargaz@gmail.com>
15872
15873         * aot-runtime.c (load_aot_module): Load all dependent assemblies eagerly since all
15874         AOT code depends on this.
15875
15876 Thu Mar 8 19:36:13 CET 2007 Paolo Molaro <lupus@ximian.com>
15877
15878         * mini.c: more precise tracking of types in the eval stack
15879         (part of fix for bug #81044).
15880
15881 2007-03-07  Zoltan Varga  <vargaz@gmail.com>
15882
15883         * aot-runtime.c (mono_aot_get_class_from_name): Add a cache.
15884
15885         * aot-compiler.c (encode_patch): Remove an obsolete comment.
15886
15887 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
15888
15889         * mini-exceptions.c (mono_handle_native_sigsegv): Fix a warning.
15890
15891         * mini.c (mono_method_to_ir): Add a workaround for bug #80733.
15892
15893 2007-02-22  Zoltan Varga  <vargaz@gmail.com>
15894
15895         * mini.c (type_from_op): Convert CEE_CONV_U to OP_LCONV_TO_U when the argument is
15896         a pointer on 64 bit systems. Fixes #80190.
15897
15898         * iltests.il: Add new regression test.
15899
15900 Tue Feb 20 11:33:28 CET 2007 Paolo Molaro <lupus@ximian.com>
15901
15902         * mini.c: inline a constant for Environment.IsRunningOnWindows.
15903
15904 2007-02-19  Geoff Norton  <gnorton@customerdna.com>
15905
15906         * trace.c: Remove an erroneous alignemnt check when tracing.
15907           Fixes --trace on OSX86.
15908
15909 Wed Feb 14 19:45:56 CET 2007 Paolo Molaro <lupus@ximian.com>
15910
15911         * mini-$(arch).h: initialize SP in context for all the archs.
15912
15913 2007-02-14  Sebastien Pouliot  <sebastien@ximian.com>
15914
15915         * mini-x86.h: Initialize SP in MONO_INIT_CONTEXT_FROM_FUNC. Fix CAS
15916         regressions in the thread tests.
15917
15918 2007-02-14  Zoltan Varga  <vargaz@gmail.com>
15919
15920         * *-alpha.*: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>:
15921         - fixed implementation of LOCALLOC opcode
15922         - implemented non-un compare for floats
15923         - code cleanup
15924         - implementation of FDIV and CKFINITE opcodes
15925         - fixes for latest mono updates
15926         - additional arch opcodes
15927
15928 Mon Feb 12 11:54:16 CET 2007 Paolo Molaro <lupus@ximian.com>
15929
15930         * Makefile.am: simplify and merge rules for cross-compilation.
15931
15932 2007-02-07  Massimiliano Mantione  <massi@ximian.com>
15933
15934         * local-propagation.c: Actually *apply* the fix for bug 80591...
15935
15936 Tue Feb 6 19:03:19 CET 2007 Paolo Molaro <lupus@ximian.com>
15937
15938         * mini-exceptions.c: backuot part of the last change
15939         (fixes cas tests on amd64 related to GetExecutingAssembly ()).
15940
15941 2007-02-06  Massimiliano Mantione  <massi@ximian.com>
15942         * inssel.brg: Fix bug 59286.
15943
15944
15945 Tue Feb 6 12:23:50 CET 2007 Paolo Molaro <lupus@ximian.com>
15946
15947         * mini-exceptions.c: patch from Zoltan to correctly check for
15948         stack boundaries (using the stack register, not the frame register),
15949         fixes bugs #80724, #79717.
15950
15951 2007-02-03  Zoltan Varga  <vargaz@gmail.com>
15952
15953         * mini-ia64.c inssel-sparc.brg mini-sparc.c cpu-sparc.md: Get rid of OP_SETREG/
15954         OP_SETREGIMM, use OP_MOVE/OP_ICONST instead.
15955
15956         * mini-amd64.c (mono_arch_output_basic_block): Fix ATOMIC_EXCHANGE in the
15957         presence of frame pointer elimination.
15958
15959 2007-02-01  Geoff Norton  <gnorton@customerdna.com>
15960         
15961         * mini-x86.h: NetBSD UCONTEX_REG defines.
15962
15963 2007-02-01  Zoltan Varga  <vargaz@gmail.com>
15964
15965         * inssel-amd64.brg: Fix amd64 build.
15966
15967 Thu Feb 1 14:02:09 CET 2007 Paolo Molaro <lupus@ximian.com>
15968
15969         * mini.h: remove extern to workaround what looks likes gcc bug 26905
15970         on amd64.
15971
15972 2007-01-31  Zoltan Varga  <vargaz@gmail.com>
15973
15974         * mini-codegen.c (mono_is_regsize_var): New helper function usable by the back
15975         ends.
15976
15977         * mini-<ARCH>.c: Use mono_is_regsize_var ().
15978
15979 2007-01-30 Mark Mason <mason@broadcom.com>
15980
15981            * exceptions-mips.c: Lots of exception handling fixes, LMFs now work, some cleanups.
15982            * mini-mips.h: Add LMF magic numbers, and fix context set/get macros.
15983            * mini-mips.c: Cleanups, LMF handling now works, optimize store of zero, implement localloc
15984            beginning support for CEE_JMP [not quite working yet]
15985            * tramp-mips.c: LMF handling now works
15986         
15987 2007-01-30  Zoltan Varga  <vargaz@gmail.com>
15988
15989         * mini-amd64.c (peephole_pass): Optimize code common in initlocals blocks.
15990
15991         * mini.h (NULLIFY_INS): New macro.
15992
15993 Tue Jan 30 16:33:33 CET 2007 Paolo Molaro <lupus@ximian.com>
15994
15995         * mini.c: statistical profiler fix for windows, patch
15996         from Tor Lillqvist (tml@novell.com).
15997
15998 2007-01-30  Massimiliano Mantione  <massi@ximian.com>
15999         * local-propagation.c: Fix bug 80591.
16000
16001 Mon Jan 29 12:14:34 CET 2007 Paolo Molaro <lupus@ximian.com>
16002
16003         * Makefile.am: put back the --export-dynamic option as with
16004         the previous gmodule flags (thanks to Robert Jordan).
16005
16006 2007-01-28  Zoltan Varga  <vargaz@gmail.com>
16007
16008         * mini-sparc.c (peephole_pass): Fix #80622 for sparc as well.
16009
16010         mini.h *.c: Allocate fp vregs from the same pool as the int vregs. Use this to
16011         simplify and speed up the local register allocator. Also rename some fields
16012         like iassign->vassign.
16013         
16014         * regalloc.c: Remove some functions which are no longer used since their
16015         inlined version is in mini-codegen.c.
16016         
16017         * mini-codegen.c: Rename mono_regstate2_ functions to mono_regstate_.
16018
16019         * basic.cs objects.cs iltests.il: Merge tests from the linear IL branch.
16020
16021 2007-01-27  Zoltan Varga  <vargaz@gmail.com>
16022
16023         * mini-amd64.c (peephole_pass): Remove optimizations which omit a 
16024         narrowing. Fixes #80622.
16025
16026         * iltests.il: Add new regresssion test. 
16027
16028 Fri Jan 26 18:31:45 CET 2007 Paolo Molaro <lupus@ximian.com>
16029
16030         * mini.h, mini-trampolines.c, aliasing.c, mini-codegen.c,
16031         debug-debugger.c, debug-debugger.h: warning fixes.
16032         * driver.c: updated copyright year and made it fit in one line.
16033
16034 Fri Jan 26 12:48:39 CET 2007 Paolo Molaro <lupus@ximian.com>
16035
16036         * aot-runtime.c: updated to use mono-dl instead of gmodule.
16037
16038 2007-01-25  Zoltan Varga  <vargaz@gmail.com>
16039
16040         * mini-x86.c (mono_arch_output_basic_block): Fix #80507 for x86.
16041
16042         * mini-amd64.c (mono_arch_output_basic_block): Fix #80507 for amd64.
16043
16044         * iltests.il: Add new test for bug #80507.
16045
16046 Wed Jan 24 19:10:28 CET 2007 Paolo Molaro <lupus@ximian.com>
16047
16048         * mini-arm.h: use soft-float also on vfp for now.
16049
16050 Wed Jan 24 14:54:40 CET 2007 Paolo Molaro <lupus@ximian.com>
16051
16052         * mini.c: fix some more soft-float issues.
16053
16054 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
16055
16056         * mini-sparc.h (MONO_ARCH_FRAME_ALIGNMENT): Fix sparc build.
16057
16058 2007-01-24  Massimiliano Mantione  <massi@ximian.com>
16059         * mini-arch.h, , inssel-amd64.brg, mini-x86.c, inssel-x86.brg,
16060         mini-ia64.c, mini-sparc.c, mini-alpha.c: Introduced
16061         MONO_ARCH_LOCALLOC_ALIGNMEENT to fix bug 80498.
16062
16063 Wed Jan 24 12:04:39 GMT 2007 Paolo Molaro <lupus@ximian.com>
16064
16065         * mini-arm.c: typo fix.
16066
16067 2007-01-23  Neale Ferguson <neale@sinenomine.net>
16068
16069         * mini-s390x.c: Use lgb instructions for I1 type variables instead of lb.
16070
16071 2007-01-21  Zoltan Varga  <vargaz@gmail.com>
16072
16073         * mini.c (mono_allocate_stack_slots_full): Allocate memory from the cfg mempool.
16074         Share stack slots for scalar types. Avoid expensive g_list_free () calls.
16075
16076         * mini-x86.c (mono_arch_allocate_vars): Don't free the result of allocate_stack_slots_full.
16077
16078         * mini-amd64.c mini-ia64.c mini-alpha.c: Ditto. 
16079
16080         * mini.h (MonoJitStats): Add a new JIT statistics: locals_stack_size.
16081         
16082         * inssel.brg: Fix a warning.
16083
16084         * mini.h (MonoBasicBlock): Make bb->dominated a GSList.
16085
16086         * abcremoval.c ssa.c ssapre.c: Update after this change.
16087         
16088         * dominators.c (compute_dominators): Allocate bb->dominated from the cfg mempool.
16089
16090         * dominators.c (df_set): Use mono_bitset_union_fast.    
16091
16092 Sat Jan 20 16:59:01 CET 2007 Paolo Molaro <lupus@ximian.com>
16093
16094         * mini.h, genmdesc.c, genmdesc.pl, mini-${arch}.c, cprop.c,
16095         mini-codegen.c: reduce relocations and memory usage for the cpu
16096         description.
16097
16098 2007-01-20  Zoltan Varga  <vargaz@gmail.com>
16099
16100         * mini-codegen.c (mono_regstate2_alloc_int): Optimize this using bsfq on amd64.
16101
16102         * genmdesc.c genmdesc.pl mini.h: Remove some unused fields from the mdesc tables
16103         to reduce their size.
16104
16105 2007-01-19 Mark Mason <mason@broadcom.com>
16106
16107         * exceptions-mips.c: fix mono_arch_ip_from_context(), increase exception debug support.
16108         * mini-mips.c: more configuration macros, support long conditional branches, additional
16109         asserts, fix epilog instrumentation.
16110         * mini-mips.h: use standard stack walk
16111         * cpu-mips.md: increase size of div, rem and conditional branches
16112         
16113 Fri Jan 19 17:23:32 CET 2007 Paolo Molaro <lupus@ximian.com>
16114
16115         * mini.h, mini-codegen.c, mini-$(arch).h: claenup references
16116         to cpu spec data.
16117
16118 2007-01-19  Zoltan Varga  <vargaz@gmail.com>
16119
16120         * aot-compiler.c (encode_klass_info): Allow classes of the form <Type>[][].
16121         (compile_method): Ditto.
16122
16123         * aot-runtime.c (decode_klass_info): Ditto.
16124
16125         * mini.c (mono_method_to_ir): Call mono_get_got_var () in a place where it is
16126         needed by the code generated by inssel.brg. Also fix a warning.
16127
16128 Thu Jan 18 17:55:22 CET 2007 Paolo Molaro <lupus@ximian.com>
16129
16130         * mini.c: deal with enums that become genericinsts by
16131         being nested in a generic class (bug #79956).
16132
16133 Thu Jan 18 16:52:56 CET 2007 Paolo Molaro <lupus@ximian.com>
16134
16135         * mini.c: match the generic definition to check for
16136         private access with generic types (bug #78431).
16137
16138 Thu Jan 18 11:50:13 CET 2007 Paolo Molaro <lupus@ximian.com>
16139
16140         * genmdesc.pl, Makefile.am: perl implementation of genmdesc,
16141         to make life easier for people cross-compiling that insist on not
16142         using scratchbox.
16143
16144 2007-01-17 Mark Mason <mason@broadcom.com>
16145
16146         * inssel-long.brg: patch to deal with mips missing flags
16147         * inssel-long32-mips.brg: implement overflow checks
16148         * insset-mips.brg: implement overflow checks
16149         * mini-mips.h: implement conditional exception handling
16150         * mini-mips.c: add mips_emit_exc_by_name(), implement conditional exception handling.
16151           Remove unused code, minor cleanups.
16152         * exceptions-mips.c: minor cleanups
16153         * mini-ops.h: add mips conditional exception ops
16154         * cpu-mips.md: add mips conditional exception ops
16155
16156         
16157 Wed Jan 17 19:22:34 CET 2007 Paolo Molaro <lupus@ximian.com>
16158
16159         * inssel.brg: patch from Mark Mason <mason@broadcom.com>
16160         to deal with mips missing of flags.
16161
16162 Tue Jan 16 20:01:01 CET 2007 Paolo Molaro <lupus@ximian.com>
16163
16164         * exceptions-ppc.c: execute fault handlers.
16165
16166 Tue Jan 16 19:54:44 CET 2007 Paolo Molaro <lupus@ximian.com>
16167
16168         * mini-ppc.c: handle missing call locationss with FORCE_INDIR_CALL.
16169
16170 Tue Jan 16 13:14:31 CET 2007 Paolo Molaro <lupus@ximian.com>
16171
16172         * mini.c: handle also floating point values in initialize_array.
16173
16174 Tue Jan 16 12:42:40 CET 2007 Paolo Molaro <lupus@ximian.com>
16175
16176         * mini.c, aot-runtime.c, aot-compiler.c: enable aot compilation of
16177         array initialization and make it conditional on the intrins option.
16178
16179 Tue Jan 16 11:28:45 CET 2007 Paolo Molaro <lupus@ximian.com>
16180
16181         * mini.h, patch-info.h, Makefile.am, aot-compiler.c: reduce
16182         relocations and put the patch info names close to the enum definition.
16183
16184 2007-01-15 Mark Mason <mason@broadcom.com>
16185
16186         * basic.cs, exceptions.cs: break up large tests to increase debugability.
16187
16188 Mon Jan 15 18:57:14 CET 2007 Paolo Molaro <lupus@ximian.com>
16189
16190         * mini.c: optimized RuntimeHelpers::InitializeArray () calls.
16191
16192 2007-01-12  Raja R Harinath  <rharinath@novell.com>
16193
16194         * mini.c (mono_method_to_ir): Use new MonoGenericContext accessor.
16195
16196 Thu Jan 11 11:16:42 CET 2007 Paolo Molaro <lupus@ximian.com>
16197
16198         * Makefile.am: distribute the mips sources.
16199
16200 Wed Jan 10 19:49:33 CET 2007 Paolo Molaro <lupus@ximian.com>
16201
16202         * mini-codegen.h: handle bug #80489 here, by excluding ecx
16203         directly.
16204
16205 Wed Jan 10 19:08:05 CET 2007 Paolo Molaro <lupus@ximian.com>
16206
16207         * cpu-x86.md: back out for now as this triggers other regressions.
16208
16209 Wed Jan 10 18:33:16 CET 2007 Paolo Molaro <lupus@ximian.com>
16210
16211         * cpu-x86.md: force src1 and dest regpair for long shift instructions
16212         to eax:edx, so ecx can't get allocated to them (bug #80489).
16213
16214 Tue Jan 9 12:36:11 CET 2007 Paolo Molaro <lupus@ximian.com>
16215
16216         * mini.c, mini-exceptions.c: enabled running fault handlers
16217         (bug #80469).
16218
16219 2007-01-03  Miguel de Icaza  <miguel@novell.com>
16220
16221         * driver.c: If nothing fail, do not use the string "failed",
16222         because it makes it very annoying to view test result logs on the
16223         web. 
16224
16225 2006-12-30  Miguel de Icaza  <miguel@novell.com>
16226
16227         * debug-debugger.c (mono_debugger_main): Rename "main" to
16228         "main_method" to prevent a warning.
16229
16230         Remove a warning for unused field.
16231
16232 2006-12-28  Martin Baulig  <martin@ximian.com>
16233
16234         * debug-debugger.c
16235         (MONO_DEBUGGER__debugger_info): Add `get_lmf_addr'.
16236
16237 2006-12-22  Martin Baulig  <martin@ximian.com>
16238
16239         * mdb-debug-info32.s, mdb-debug-info64.s: New files.
16240         Put a pointer to the `MONO_DEBUGGER__debugger_info' into a
16241         seperate `.mdb_debug_info' section, so we can access it from the
16242         debugger even if the binary is stripped.
16243
16244         * debug-debug.c: Reference the `MONO_DEBUGGER__debugger_info_ptr'
16245         from the `.mdb_debug_info' here to prevent the linker from
16246         removing that section.
16247
16248         * Makefile.am (mono_debugger_sources): Add mdb-debug-info32.s /
16249         mdb-debug-info64.s.
16250
16251 2006-12-19  Robert Jordan  <robertj@gmx.net>
16252
16253         * mini-x86: enable the code to return small structures in
16254         registers for FreeBSD as well. Fixes bug #80278.
16255         * aot-runtime.c: Include sys/wait.h for WEXITSTATUS/WIFEXITED.
16256
16257 Mon Dec 18 19:47:17 CET 2006 Paolo Molaro <lupus@ximian.com>
16258
16259         * mini-x86.c: align the stack when calling the profiler
16260         function instrumenting the prolog (on OSX).
16261
16262 Thu Dec 14 15:22:43 CET 2006 Paolo Molaro <lupus@ximian.com>
16263
16264         * mini.c: emit a break opcode where Debugger.Break () is called.
16265
16266 2006-12-13  Miguel de Icaza  <miguel@novell.com>
16267
16268         * mini.c (mono_method_to_ir): Provide useful information on this
16269         assert, to prevent others from debugging like I did.
16270
16271 Tue Dec 12 17:01:38 CET 2006 Paolo Molaro <lupus@ximian.com>
16272
16273         * mini.c: enable code which was incorrectly commented
16274         (bug #80235).
16275
16276 Tue Dec 12 16:28:15 CET 2006 Paolo Molaro <lupus@ximian.com>
16277
16278         * mini-x86.c: enable on OSX, too, the code to return small
16279         structures in registers.
16280
16281 Mon Dec 11 19:22:35 CET 2006 Paolo Molaro <lupus@ximian.com>
16282
16283         * mini-x86.c: remove the use of the dynamic code manager here, too.
16284
16285 Mon Dec 11 19:08:33 CET 2006 Paolo Molaro <lupus@ximian.com>
16286
16287         * mini.h, debug-debugger.c, tramp-*.c: fixed 
16288         mono_debugger_create_notification_function() to use
16289         mono_global_codeman_reserve () instead of a dynamic code manager.
16290
16291 Tue Dec 5 17:54:50 CET 2006 Paolo Molaro <lupus@ximian.com>
16292
16293         * mini.c, jit-icalls.h, jit-icalls.c: remove the 
16294         ves_array_element_address() jit icall and use a generated
16295         managed method instead (which is about 4 times faster for a rank 3
16296         array access).
16297
16298 2006-11-29  Mark Mason  <mason@broadcom.com>
16299
16300         * basic-calls.cs: additional tests for passing
16301         structures as function arguments.
16302
16303 2006-11-29  Mark Mason  <mason@broadcom.com>
16304
16305         * mini-mips.h: disable custom exception handling
16306         * mini-mips.c: throw/rethrow should use jalr to call
16307         exception stubs.  Fixed bug with passing structures
16308         by value. More support for tracing floating point
16309         functions.
16310
16311 Wed Nov 29 20:28:17 CET 2006 Paolo Molaro <lupus@ximian.com>
16312
16313         * mini.c: fixed typo in the soft-float ldind.r4 handling
16314         (bug #80086).
16315
16316 Wed Nov 29 11:33:03 CET 2006 Paolo Molaro <lupus@ximian.com>
16317
16318         * mini.c, mini.h, driver.c: added --runtime command line
16319         option to select a different runtime than the autodetected one.
16320         * jit.h: added API for embedders to initialize with a specific
16321         runtime version.
16322
16323 Tue Nov 28 21:24:55 CET 2006 Paolo Molaro <lupus@ximian.com>
16324
16325         * mini.c: handle also boxing of r4 values (bug #80024).
16326
16327 Tue Nov 28 19:45:44 CET 2006 Paolo Molaro <lupus@ximian.com>
16328
16329         * mini-ppc.c: force indirect calls until we reserve
16330         enough address space for all the generated code.
16331
16332 Tue Nov 28 20:04:34 GMT 2006 Paolo Molaro <lupus@ximian.com>
16333
16334         * exceptions-arm.c: workaround bugs in the libc definition
16335         of struct ucontext.
16336
16337 Mon Nov 27 15:13:41 CET 2006 Paolo Molaro <lupus@ximian.com>
16338
16339         * inssel.brg: fixes from me and Mark Mason.
16340
16341 2006-11-23  Dick Porter  <dick@ximian.com>
16342
16343         * wapihandles.c (mini_wapi_seminfo): No need to adjust the counter
16344         semaphore display now we've fixed the initial value
16345
16346 Wed Nov 22 11:04:37 CET 2006 Paolo Molaro <lupus@ximian.com>
16347
16348         * inssel.brg: partially revert the last change to fix the build.
16349
16350 2006-11-21  Mark Mason  <mason@broadcom.com>
16351
16352         * inssel.brg: Add and use compare-and-branch macros to support
16353         architectures that do not have condition code registers (ie. MIPS).
16354         * *-mips.{c,brg,md}: Fix copyright statements
16355
16356 2006-11-20  Mark Mason  <mason@broadcom.com>
16357
16358         * Makefile.am: remove mini-codegen.c from list of MIPS sources
16359         * mini.c: Allow GET_CONTEXT to be specified by the arch port
16360         * mini.h: Added declaration for mono_print_ins()
16361         * mini-codegen.c: added ins_spec initializer for MIPS
16362         * mini-codegen.c (mono_call_inst_add_outarg_reg): added asserts for
16363         vreg to be virtual and hreg to be non-virtual.
16364         * mini-codegen.c (mono_spillvar_offset): assert if MIPS - spilling
16365         is not yet working/implemented correctly.
16366         * mini-codegen.c (print_ins): rename to mono_print_ins(), make
16367         non-static, fixup calls to print_ins() from other parts in the file.
16368
16369 2006-11-20  Mark Mason  <mason@broadcom.com>
16370
16371         * basic-calls.cs: added tests for passing structures as arguments
16372         to calls.
16373
16374 Mon Nov 20 19:40:11 CET 2006 Paolo Molaro <lupus@ximian.com>
16375
16376         * inssel-long32.brg: optimize signed division by power of two.
16377
16378 Mon Nov 20 17:37:58 CET 2006 Paolo Molaro <lupus@ximian.com>
16379
16380         * mini-arm.c: added support for interworking with thumb code
16381         (mono must be still be built using the ARM instruction encoding).
16382
16383 2006-11-19  Miguel de Icaza  <miguel@novell.com>
16384
16385         * mini.c (type_from_op): Separate the conditions for OP_EQ as the
16386         verifier has different rules for it.   Fixes a few verifier issues
16387         in the test suite.
16388
16389         * mini-exceptions.c (mono_handle_native_sigsegv): Put the message
16390         at the end, so people know what happened.
16391
16392 Thu Nov 16 14:07:18 CET 2006 Paolo Molaro <lupus@ximian.com>
16393
16394         * brach-opts.c: in optimize_exception_target() make sure we
16395         are in a catch clause (fixes bug #79871).
16396
16397 Thu Nov 16 12:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
16398
16399         * jit-icalls.c, jit-icalls.h, mini-arm.c, mini.c:
16400         more soft-float support fixes.
16401
16402 Wed Nov 15 18:45:47 GMT 2006 Paolo Molaro <lupus@ximian.com>
16403
16404         * mini-arm.c, inssel-arm.brg: ABI fix for longs and doubles
16405         that are passed half on the stack and half in registers.
16406
16407 Wed Nov 15 17:00:27 CET 2006 Paolo Molaro <lupus@ximian.com>
16408
16409         * mini-ops.h, mini-arch.h, helpers.c, Makefile.am:
16410         more mips integration work from Mark E Mason 
16411         <mark.e.mason@broadcom.com>.
16412
16413 Wed Nov 15 16:34:03 CET 2006 Paolo Molaro <lupus@ximian.com>
16414
16415         * exceptions-mips.c, inssel-mips.brg, mini-mips.h,
16416         cpu-mips.md, inssel-long32-mips.brg, mini-mips.c,
16417         tramp-mips.c: added sources for the mips port, not
16418         integrated in the build yet. Contributed by
16419         Mark E Mason <mark.e.mason@broadcom.com>.
16420
16421 2006-11-14  Neale Ferguson <neale@sinenomine.net>
16422
16423         * mini-s390[x].c (is_regsize_var): Support PTR/FNPTR too.
16424
16425 Tue Nov 14 16:06:37 CET 2006 Paolo Molaro <lupus@ximian.com>
16426
16427         * Makefile.am, inssel-float.brg, inssel-softfloat.brg:
16428         put the soft-float rules in its own file since it seems to
16429         break s390 compilation.
16430
16431 Mon Nov 13 15:54:38 CET 2006 Paolo Molaro <lupus@ximian.com>
16432
16433         * mini-arm.c: fixed wrnings.
16434
16435 Fri Nov 10 19:18:32 CET 2006 Paolo Molaro <lupus@ximian.com>
16436
16437         * mini-arm.c, mini-arm.h, cpu-arm.md, inssel-float.brg,
16438         inssel-arm.brg: ARM support for soft-float.
16439
16440 Fri Nov 10 18:38:15 CET 2006 Paolo Molaro <lupus@ximian.com>
16441
16442         * mini.c, jit-icalls.c, jit-icalls.h: added first cut at handling
16443         loads and stores of 32 bit fp values.
16444
16445 2006-11-10  Zoltan Varga  <vargaz@gmail.com>
16446
16447         * mini-sparc.c (is_regsize_var): Support PTR/FNPTR too.
16448
16449         * tramp-sparc.c (mono_arch_patch_callsite): Fix this function so it actually
16450         works. Fixes #79852 and #79463.
16451
16452 Thu Nov 9 16:56:13 CET 2006 Paolo Molaro <lupus@ximian.com>
16453
16454         * mini.c, mini-codegen.c, jit-icalls.c, jit-icalls.h:
16455         more soft-float support WIP and fixes.
16456
16457 Wed Nov 8 16:40:02 CET 2006 Paolo Molaro <lupus@ximian.com>
16458
16459         * mini-arm.c: some VFP updates.
16460
16461 Tue Nov 7 19:45:51 CET 2006 Paolo Molaro <lupus@ximian.com>
16462
16463         * mini-exceptions.c: 0 is a valid local var offset in some
16464         architectures, don't assert (bug #78508).
16465
16466 Tue Nov 7 18:17:52 GMT 2006 Paolo Molaro <lupus@ximian.com>
16467
16468         * exceptions-arm.c: fixed off by one error in stack walk code.
16469
16470 Tue Nov 7 11:27:26 CET 2006 Paolo Molaro <lupus@ximian.com>
16471
16472         * mini.h, mini.c: more precise tracking of type load exceptions.
16473
16474 2006-11-03  Robert Jordan  <robertj@gmx.net>
16475
16476         * Makefile.am: [WIN32] Add monow.exe target.
16477         * driver.c: [WIN32] Don't detach the console when debugging.
16478         Fixes bug #79797.
16479         
16480 2006-10-30  Miguel de Icaza  <miguel@novell.com>
16481
16482         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Eliminate warning.
16483
16484 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
16485
16486         * aot-compiler.c (emit_method_info): Add a case missed earlier.
16487
16488         * driver.c (mini_regression): Fix --regression with AOT.
16489
16490         * aot-compiler.c (emit_method_info): Fix AOT on amd64.
16491
16492 2006-10-17  Zoltan Varga  <vargaz@gmail.com>
16493
16494         * mini.c (GET_CONTEXT): Correct the definition of this for sparc/linux.
16495
16496         * mini-sparc.h: Don't use sigaction on sparc/linux.
16497
16498         * exceptions-sparc.c: Call mono_arch_flush_icache () in a couple of places.
16499
16500         * mini-sparc.c (mono_sparc_flushw): Call mono_arch_flush_icache ().
16501
16502         * mini-exceptions.c: Add proper include files for getpid ().
16503
16504 2006-10-16  Zoltan Varga  <vargaz@gmail.com>
16505
16506         * aot-runtime.c (mono_aot_get_method): Change this to return the native code
16507         address instead of a MonoJitInfo* to avoid decoding the exception info for the
16508         method.
16509
16510         * aot-runtime.c aot-compiler.c: Use uint16 instead of uint32 entries in the
16511         name cache to reduce its size.
16512
16513         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
16514
16515 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
16516
16517         * mini-x86.c: Save/restore the current LMF structure more efficiently using
16518         the mono_lmf TLS variable.
16519
16520         * exceptions-x86.c (mono_arch_find_jit_info): Only access lmf->method in 
16521         trampoline lmf frames.  
16522
16523         * mini-sparc.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Define this on sparc as well.
16524
16525 2006-10-14  Zoltan Varga  <vargaz@gmail.com>
16526
16527         * mini-amd64.c: Save/restore the current LMF structure more efficiently using
16528         the mono_lmf TLS variable.
16529
16530         * mini-exceptions.c: Access the LMF structure through accessors.
16531
16532         * mini.c: Allow the backends the option for storing the lmf in a dedicated TLS 
16533         variable instead of in jit_tls->lmf.
16534
16535         * mini-x86.c mini-amd64.c: Update after lmf->lmf_addr name change.
16536         
16537         * exceptions-amd64.c (mono_arch_find_jit_info): Only access lmf->method in 
16538         trampoline lmf frames.
16539
16540         * mini-amd64.c (mono_arch_emit_prolog): Do not set lmf->method as it is not needed.
16541
16542 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
16543
16544        * mini.c trace.c mini-x86.c: Revert these too.
16545         
16546        * mini.c trace.c mini-x86.c: Remove warning workarounds after the mono_type_size ()
16547        signature change.
16548
16549 Tue Oct 10 11:35:20 CEST 2006 Paolo Molaro <lupus@ximian.com>
16550
16551         * genmdesc.c: removed now dead code.
16552
16553 2006-10-09  Robert Jordan <robertj@gmx.net>
16554
16555         * mini.c: Disable the CrashReporter on MacOS X; Fixes #74869
16556
16557 Mon Oct 9 17:06:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
16558
16559         * mini.h: do not leave gaps in the opcode values.
16560
16561 Mon Oct 9 16:08:51 CEST 2006 Paolo Molaro <lupus@ximian.com>
16562
16563         * jit-icalls.h: flag functions as internal here, too.
16564
16565 Mon Oct 9 15:58:18 CEST 2006 Paolo Molaro <lupus@ximian.com>
16566
16567         * mini.h, aliasing.h, declsec.h, regalloc.h, trace.h: mark internal
16568         functions with the internal attribute.
16569
16570 Mon Oct 9 15:52:45 CEST 2006 Paolo Molaro <lupus@ximian.com>
16571
16572         * aot-compiler.c: fclose the file descriptor in the profile read loop.
16573
16574 Fri Oct 6 16:01:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
16575
16576         * mini.c, jit-icalls.c, inssel-float.brg: beginnings of support
16577         for soft-float.
16578
16579 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
16580
16581         * mini-x86.c (emit_load_volatile_arguments): New function to handle arguments of
16582         tail calls as on other platforms.
16583
16584         * mini.c (mono_method_to_ir): Fix a few tailcall problems. Fixes #79557.
16585
16586         * iltests.il: Add a few tailcall tests.
16587
16588 Tue Oct 3 16:33:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
16589
16590         * driver.c: fix loop for old compilers (bug #79521).
16591
16592 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
16593
16594         * mini-exceptions.c (ves_icall_get_trace): Remove debug printf.
16595
16596         * aot-runtime.c (mono_aot_get_class_from_name): Avoid a memory allocation.
16597
16598         * aot-compiler.c: Add a new option 'metadata-only' to only emit the cached
16599         metadata without any code.
16600
16601         * mini-exceptions.c (mono_handle_native_sigsegv): Add some code to print out
16602         more precise debugging information using gdb.
16603
16604 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
16605
16606         * inssel-ia64.brg: Make the helper methods static.
16607
16608 Thu Sep 28 16:40:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
16609
16610         * inssel-x86.brg: make the helper methods static.
16611
16612 Thu Sep 28 16:31:32 CEST 2006 Paolo Molaro <lupus@ximian.com>
16613
16614         * inssel-amd64.brg, mini-amd64.c: small cleanup, use inst_call.
16615
16616 Thu Sep 28 15:36:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
16617
16618         * mini.c: updates for monoburg changes.
16619         * inssel.brg: make a few helper functions static as they should.
16620
16621 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
16622
16623         * Makefile.am: Move mini-codegen.c to common_sources.
16624
16625 Wed Sep 27 15:07:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
16626
16627         * mini.h: instroduce inst_call in MonoInst for use in OUTARG
16628         instructions.
16629         * Makefile.am, cpu-g4.md, inssel-ppc.brg, mini-codegen.c, mini-ppc.c,
16630         mini-ppc.h: port to use the common local register allocator.
16631
16632 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
16633
16634         * mini.h: Remove the comment too then.
16635
16636 Tue Sep 26 14:02:58 CEST 2006 Paolo Molaro <lupus@ximian.com>
16637
16638         * mini.h: put back backend.data which is to be used shortly and
16639         doesn't increase the size of MonoInst. If any 64 bit arch aligned
16640         pointers on 4 byte boundaries it'd have much bigger issues running
16641         and you can ifdef it out anyway.
16642
16643 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
16644
16645         * mini.h (MonoInst): Remove backend.data field since it is unused and increases
16646         MonoInst size by 4 bytes on 64 bit machines.
16647
16648 Tue Sep 26 11:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
16649
16650         * *.{c,h,brg}: long due removal of the unused field in MonoInst and
16651         replacement with more meaningful field names. Arch maintainers, please
16652         check the assigned names are good enough for your arch.
16653
16654 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
16655
16656         * cpu-ia64.md mini-ia64.c inssel-ia64.brg mini-ops.h: Get rid of the 
16657         OP_IA64_FETCHADD opcodes, use OP_ATOMIC_ADD_IMM_NEW opcodes instead.
16658
16659 Mon Sep 25 11:05:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
16660
16661         * mini.h, driver.c, optflags-def.h, Makefile.am: reduce runtime
16662         relocations and memory requirements, put the optimization flags
16663         definitions in their own file.
16664
16665 2006-09-24  Zoltan Varga  <vargaz@gmail.com>
16666
16667         * jit-icalls.c (mono_helper_stelem_ref): Remove this unused helper function.
16668
16669         * mini.c (mini_init): Remove reference to mono_helper_stelem_ref.
16670
16671 2006-09-22  Zoltan Varga  <vargaz@gmail.com>
16672
16673         * mini-amd64.c (add_valuetype): Fix an uninitialized memory issue.
16674
16675 Thu Sep 21 19:06:09 CEST 2006 Paolo Molaro <lupus@ximian.com>
16676
16677         * inssel.brg: use the correct function to get the size of an item
16678         in an array, given an element class.
16679         * aot-compiler.c: do not access class->class_size directly.
16680
16681 Thu Sep 21 12:10:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
16682
16683         * mini.h, debug-mini.c: added a debugging function to print
16684         info about local variables and arguments in a jitted method.
16685
16686 2006-09-20  Zoltan Varga  <vargaz@gmail.com>
16687
16688         * mini-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
16689
16690         * exceptions-ia64.c: Fix some problems reported by Bill Seurer <seurer@us.ibm.com>.
16691
16692 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
16693
16694         * mini-ia64.c (mono_arch_call_opcode): Avoid using the same loop index in the
16695         inner and outer loops when passing vtypes.
16696
16697 Tue Sep 19 17:53:40 CEST 2006 Paolo Molaro <lupus@ximian.com>
16698
16699         * mini-ppc.c: take into account the cpu errata for cache flushing
16700         which caused some random errors (bug #79381).
16701
16702 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
16703
16704         * mini-amd64.c (mono_arch_emit_exceptions): Emit the call to 
16705         mono_arch_throw_corlib_exception using emit_call () too. Fixes #79271.
16706
16707 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
16708
16709         * aot-runtime.c (load_aot_module): Return immeditely if the AOT module was already
16710         loaded.
16711
16712         * exceptions-amd64.c (gregs_from_ucontext): Apply another patch from the
16713         freebsd ports tree.
16714
16715         * mini-amd64.c (emit_call): Avoid near calls on freebsd.
16716         (mono_arch_patch_code): Remove the unused handling of MONO_PATCH_INFO_CLASS_INIT.
16717
16718         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix check for 32 bitness of
16719         displacement.
16720
16721 2006-09-13  Zoltan Varga  <vargaz@gmail.com>
16722
16723         * aot-runtime.c (load_aot_module_from_cache): Fix PPC build.
16724
16725 2006-09-12  Zoltan Varga  <vargaz@gmail.com>
16726
16727         * mini.c (UNVERIFIED): Add a 'break-on-unverified' MONO_DEBUG option so this 
16728         macro does not have to be changed during debugging.
16729
16730         * 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>.
16731
16732         * cpu-pentium.md: Rename this to cpu-x86.md for consistency with other platforms.
16733
16734         * Makefile.am mini-x86.c mini-codegen.c: Rename pentium_desc to x86_desc.
16735         
16736         * mini.c (mini_get_ldelema_ins): Allow ldelema2d optimization if 
16737         MONO_ARCH_NO_EMULATE_MUL is defined.
16738
16739         * mini-ia64.h (MONO_ARCH_CALLEE_FREGS): Reserve f33 for use by instructions.
16740
16741         * mini-ia64.h: Define MONO_ARCH_NO_EMULATE_MUL.
16742
16743         * mini-ia64.c: Implement CEE_MUL based on gcc emitted code.
16744
16745         * mini-ia64.c (mono_arch_lowering_pass): Optimize store_membase_imm with offset==0.
16746         
16747 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
16748
16749         * mini-x86.h mini-amd64.h mini-exceptions.c: Move the bsd specific MAP_ANON
16750         stuff to mini-exceptions.c where it is used.
16751
16752         * mini-sparc.c (mono_arch_setup_jit_tls_data): Remove the duplicate altstack
16753         setup code, the real one is in mini-exceptions.c.
16754
16755         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Move all dependencies on the
16756         layout of ucontext_t to helper functions in exceptions-amd64.c, as on x86. Add
16757         some changes from the freebsd ports tree.
16758
16759         * mini-amd64.h exceptions-amd64.c: Fix the amd64 build. Get rid of the SC_
16760         constants.
16761         
16762         * mini-amd64.h: Freebsd has MAP_ANON instead of MAP_ANONYMOUS.
16763
16764 Mon Sep 11 13:18:55 CEST 2006 Paolo Molaro <lupus@ximian.com>
16765
16766         * mini.c: on Linux, check for /proc to be mounted
16767         (bug# 79351, novell bug#201204).
16768
16769 Mon Sep 11 13:10:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
16770
16771         * mini.c: handle cases where pthread_attr_getstack() behaves
16772         incorrectly (bug #78096).
16773
16774 Mon Sep 11 11:31:10 BST 2006 Paolo Molaro <lupus@ximian.com>
16775
16776         * mini-arm.c: support larger stack frames (bug #79272).
16777
16778 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
16779
16780         * aot-runtime.c (mono_aot_get_class_from_name): Remove a debug printf.
16781
16782         * aot-compiler.c: Add a hash table to the AOT file mapping class names to typedef 
16783         tokens.
16784
16785         * aot-runtime.c (mono_aot_get_class_from_name): New function used by 
16786         mono_class_from_name () to find a class from its name.
16787
16788         * mini.c (mini_init): Register mono_aot_get_class_from_name () with the runtime.
16789
16790 2006-09-07  Zoltan Varga  <vargaz@gmail.com>
16791
16792         * mini-amd64.c (emit_call): Avoid strstr () call if possible.
16793
16794 2006-09-05  Kornel Pal  <kornelpal@gmail.com>
16795
16796         * Makefile.am: Renamed mono-1.dll to mono.dll. (-avoid-version)
16797
16798 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
16799
16800         * mini.c (mono_icall_get_wrapper): Fix a race condition on initializing
16801         callinfo->trampoline.
16802
16803         * mini-amd64.c (emit_call): Special case calls to the vararg array icalls. Hopefully
16804         fixes #79271.
16805         (mono_arch_patch_code): Add some debug code to help track down similar failures in the
16806         future.
16807
16808 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
16809
16810         * aot-runtime.c (mono_aot_plt_resolve): Add an assert.
16811
16812 2006-09-02  Zoltan Varga  <vargaz@gmail.com>
16813
16814         * tramp-x86.c (mono_arch_create_specific_trampoline): Don't increase
16815         stats.method_trampolines, it is already done by the generic trampoline code.
16816
16817         * tramp-amd64.c (mono_arch_create_specific_trampoline): Ditto.
16818         
16819 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
16820
16821         * mini.c: Remove some references to mono_compile_aot, and use cfg->compile_aot instead.
16822
16823         * aot-runtime.c: Add some tweaks to the MONO_AOT_CACHE functionality.
16824
16825         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix a FIXME.
16826
16827         * mini.c (print_jit_stats): Print mscorlib mempool size too.
16828         
16829         * mini.c (print_jit_stats): Print new stats.
16830
16831         * *-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
16832
16833 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
16834
16835         * mini.c (mini_get_ldelema_ins): Fix verifier error when calling
16836         Address on two dimensional arrays. Fixes #78729.
16837
16838         * mini.h (MonoCompile): Add a 'skip_visibility' field.
16839
16840         * mini.c (method_to_ir): Disable visibility checks if skip_visibility is set on
16841         a method.
16842
16843         * mini-amd64.c (mono_arch_emit_exceptions): Fix assertion introduced by the last change.
16844
16845         * mini.c (mono_runtime_cleanup_handlers): Clean up signal handlers on unix. Fixes
16846         #79130.
16847         
16848         * mini.c (handle_array_new): Applied patch from "briaeros007". Fix
16849         a race condition.
16850         (mini_get_ldelema_ins): Ditto.
16851
16852 2006-08-30  Zoltan Varga  <vargaz@gmail.com>
16853
16854         * mini-amd64.c (mono_arch_emit_exceptions): Align fp constants to 16 bytes.
16855         (mono_arch_output_basic_block): Avoid unaligned accesses in FNEG implementation. 
16856         Fixes #79213.
16857
16858 2006-08-29 Neale Ferguson <neale@sinenomine.net>
16859
16860         * mini-s390.c, mini-s390x.c: Fix VARARG case processing with 0 arguments. Add
16861         mono_arch_get_patch_offset as a dummy entry point to allow successful link. 
16862
16863         * exceptions-s390x.c: Cosmetic change.
16864
16865         * tramp-s390.c: Fix warning.
16866
16867         * cpu-s390.md: Correct length of mul_imm.
16868
16869 Wed Aug 23 19:24:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
16870
16871         * aot-compiler.c: added binary writer with ELF backend
16872         implementation (only on Linux/x86 for now).
16873
16874 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
16875
16876         * Makefile.am: Don't run net 2.0 AOT tests.
16877
16878         * aot-compiler.c (compile_method): Skip methods with tail calls as well.
16879         (mono_compile_assembly): Skip net 2.0 assemblies as well.
16880
16881         * aot-runtime.c (load_patch_info): Fix an uninitialized memory error.
16882
16883 Fri Aug 18 19:38:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
16884
16885         * aot-compiler.c: simplified and refactored the asm-writing code
16886         to allow different backends.
16887
16888 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
16889
16890         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
16891
16892         * aot-compiler.c aot-runtime.c: Reorg the GOT slot allocation code a 
16893         little. Share patches of type TYPE_FROM_HANDLE as well.
16894
16895         * mini.c (mono_patch_info_equal): New helper function.
16896         (mono_patch_info_hash): Ditto.
16897
16898         * aot-compiler.c (emit_method_code): Fix s390 build.
16899
16900         * mini.c (mono_allocate_stack_slots_full): Fix yet another place where byref
16901         is not handled because it is stored as a flag and not as a type ctor. Fixes
16902         #79016.
16903
16904 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
16905
16906         * aot-compiler.c: Fix computation of GOT slot statistics.
16907         
16908         * aot-compiler.c aot-runtime.c: Implement sharing of GOT slots for classes/fields.
16909         Also remove support for not PIC AOT.
16910
16911         * mini.h: Bump AOT file format version.
16912
16913         * objects.cs: Add a test for #78990.
16914
16915         * mini-x86.c (mono_arch_output_basic_block): Applied patch from Peter Dettman
16916         (peter.dettman@iinet.net.au). Fixes #79087.
16917
16918         * basic-long.cs: Add a test for the above.
16919
16920 2006-08-16  Zoltan Varga  <vargaz@gmail.com>
16921
16922         * aot-compiler.c (get_got_offset): Add a cache for GOT entries, not yet used.
16923         
16924         * aot-compiler.c (get_plt_index): Add a cache for wrappers too. Simplify the
16925         code somewhat.
16926
16927 2006-08-15  Zoltan Varga  <vargaz@gmail.com>
16928
16929         * mini.c (mini_init): Fix registration of idiv/imul opcodes which can throw
16930         exceptions.
16931
16932 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
16933
16934         * mini.c: Don't verify COM proxy invoke calls
16935         
16936
16937 2006-08-10  Dick Porter  <dick@ximian.com>
16938
16939         * wapihandles.c (mini_wapi_seminfo): More info, to help track down
16940         which process is holding semaphores locked.
16941
16942 2006-08-08  Zoltan Varga  <vargaz@gmail.com>
16943
16944         * mini-ia64.c mini-amd64.c: Fix #79027.
16945
16946         * mini-sparc.c (mono_arch_call_opcode): Fix the previous patch.
16947
16948         * mini-sparc.c (mono_arch_call_opcode): Fix #79027.
16949
16950         * mini-x86.c (mono_arch_call_opcode): Handle the case where there are no
16951         implicit arguments in a vararg call. Fixes #79027.
16952
16953 2006-08-07  Zoltan Varga  <vargaz@freemail.hu>
16954
16955         * mini.c (mono_get_element_address_signature): Use CDECL calling convention on windows. Fixes #78969.
16956         (mono_get_array_new_va_signature): Ditto.
16957
16958 2006-08-05  Zoltan Varga  <vargaz@gmail.com>
16959
16960         * aot-runtime.c: Call init_plt lazily.
16961
16962         * inssel-long.brg: Fix unsigned long->int conversion.
16963
16964         * aot-runtime.c (init_plt): Remove a redundant make_writable () call.
16965
16966         * aot-compiler.c aot-runtime.c: Reorganize the file structure in the amd64 case so
16967         that most data is now in the .rss/.data section.
16968
16969 2006-08-04  Zoltan Varga  <vargaz@gmail.com>
16970
16971         * aot-compiler.c: Correct the computation of the 'direct-calls' statistic.      
16972
16973         * aot-compiler.c: Print the number of methods without GOT slots as a statistics.
16974
16975         * aot-compiler.c aot-runtime.c tramp-amd64.c: Resurrect amd64 AOT support.
16976
16977         * tramp-amd64.c (mono_arch_patch_callsite): Fix a warning.
16978
16979         * jit-icalls.c (mono_helper_compile_generic_method): Unbox vtypes since this is a
16980         virtual call. Fixes #79010.
16981
16982         * mini.c (mono_method_to_ir): Pass an additional out arg to compile_generic_method 
16983         and use the result as the this argument in the real call.
16984
16985         * generics.2.cs: Add a new test for #79010.
16986         
16987 2006-08-03  Zoltan Varga  <vargaz@gmail.com>
16988
16989         * mini-x86.c: Fix a warning.
16990
16991         * aot-compiler.c: Add a bunch of statistics.
16992
16993         * mini.c (inline_method): Disable inlining in out-of-line bblocks.
16994
16995 2006-08-02  Zoltan Varga  <vargaz@gmail.com>
16996
16997         * mini-arch.h Makefile.am mini-ops.h mini-codegen.c: More alpha updates.
16998
16999 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
17000
17001         * 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>.
17002
17003 2006-07-13  Miguel de Icaza  <miguel@novell.com>
17004
17005         * mini.c (mono_method_to_ir): Obtain the original method in the
17006         CIL stream and use this to perform validation.
17007
17008         Fixed: #78816
17009
17010 2006-07-19  Zoltan Varga  <vargaz@gmail.com>
17011
17012         * mini-x86.c (mono_arch_get_argument_info): Fix a warning.
17013         (mono_arch_call_opcode): Ditto.
17014
17015         * mini.c (mono_method_to_ir): Clear ins_flag at the end of CEE_CALL. Fixes
17016         #78826.
17017
17018         * mini.c (mono_patch_info_dup_mp): New helper function.
17019         
17020         * aot-compiler.c (compile_method): Fix some of the memory allocated during
17021         compilation. Fixes #78827.
17022
17023 2006-07-18  Kornel Pal  <kornelpal@gmail.com>
17024
17025         * declsec.c: Use original security informations for
17026           MONO_WRAPPER_MANAGED_TO_MANAGED.
17027
17028 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
17029
17030         * mini.c: Allow Com Interop methods/classes and
17031         don't verify COM wrapper calls
17032         
17033
17034 2006-07-13  Zoltan Varga  <vargaz@gmail.com>
17035
17036         * inssel-long32.brg: Fix long->i4 checked conversion.
17037
17038         * exceptions.cs: Add a test for the above.
17039
17040 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
17041
17042         * mini-exceptions.c (mono_setup_altstack): Fix a memory leak.
17043
17044         * mini.c: Applied patch from Joachim Ante (joe@otee.dk). Fix some shutdown 
17045         leaks.
17046
17047         * helpers.c (mono_disassemble_code): Avoid using fixed temporary files. Fixes
17048         #78775.
17049
17050 2006-07-03  Zoltan Varga  <vargaz@gmail.com>
17051
17052         * mini.c: Fix solaris/x86 exception handling.
17053
17054         * Makefile.am: Get rid of $(ICU_LIBS).
17055
17056 2006-07-02  Zoltan Varga  <vargaz@gmail.com>
17057
17058         * mini-exceptions.c: Fix handling of unhandled SIGSEGV exceptions on ia64.
17059         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Use MONO_INIT_CONTEXT_FROM_CURRENT.
17060         (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): Ditto.
17061
17062         * mini-ia64.h (MONO_CONTEXT_SET_FUNC): New macro.
17063
17064         * mini-exceptions.c (mono_handle_native_sigsegv): Prevent infinite loops if
17065         this function causes a SIGSEGV.
17066
17067 2006-06-22  Zoltan Varga  <vargaz@gmail.com>
17068
17069         * mini.c: Remove unused solaris/x86 includes.
17070
17071 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
17072
17073         * jit.h: Add G_BEGIN_DECLS/G_END_DECLS.
17074
17075 2006-06-20  Jb Evain  <jbevain@gmail.com>
17076
17077         * cpu-g4.md: fix max length of start_handler instruction.
17078
17079 2006-06-20  Massimiliano Mantione  <massi@ximian.com>
17080         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78656.
17081
17082 2006-06-16  Massimiliano Mantione  <massi@ximian.com>
17083         * ssa.c: Fixed bug 78653 for SSA based deadce.
17084         * mini.h: added MONO_INST_DEFINITION_HAS_SIDE_EFFECTS flag go
17085         MonoInst.flags, used in SSA based deadce.
17086         * aliasing.c: Fixed bug 78653 for "fastpath" deadce.
17087         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78653.
17088
17089 Thu Jun 15 16:52:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
17090
17091         * tramp-ppc.c: don't use malloc () for trampoline code, sometimes
17092         it can end up using non executable memory on ppc64 systems
17093         running ppc32 userspace (fix from Johannes Berg).
17094
17095 2006-06-14  Dick Porter  <dick@ximian.com>
17096
17097         * wapihandles.c: Fix a bunch of signed/unsigned warnings from gcc
17098         4.1.1
17099
17100 2006-06-13  Massimiliano Mantione  <massi@ximian.com>
17101         * mini.c: Made so that inline is locally disabled if it would
17102         trigger a .cctor, because too many apps depend on this behavior
17103         (which seems to be also the one of the MS CLR).
17104
17105 2006-06-13  Zoltan Varga  <vargaz@gmail.com>
17106
17107         * mini-amd64.c (mono_emit_stack_alloc): Fix initialization of localloc'ed memory.
17108         No idea why this worked before.
17109
17110         * branch-opts.c (mono_branch_optimize_exception_target): Avoid branches
17111         which branch to outer exception clauses since they could skip the
17112         inner finally clauses. Fixes #78633.
17113
17114         * exceptions.cs: Add a test for the above.
17115
17116         * mini.c (merge_basic_blocks): Nullify the branch at the end of the first bb.
17117         Fixes #78629.
17118
17119         * iltests.il: Add a test for the above.
17120
17121 2006-06-12  Zoltan Varga  <vargaz@gmail.com>
17122
17123         * mini.c (remove_block_if_useless): Do not remove the bblock immediately
17124         after the end of a try bblock, to prevent asserts in mini_method_compile ().
17125
17126         * iltests.il: Add a test for the above.
17127
17128 2006-06-10  Zoltan Varga  <vargaz@gmail.com>
17129
17130         * mini-ia64.c (mono_arch_lowering_pass): Remove some code duplication.
17131         
17132         * mini-ia64.c inssel-ia64.brg: Implement the new net 2.0 Interlocked.Add
17133         methods as instrinsics.
17134
17135 2006-06-09  Wade Berrier <wberrier@novell.com>
17136
17137         * Makefile.am: Fix sources list for svn rename so that make dist succeeds
17138         (simple-cee-ops.h ssapre-mini-ops.h)
17139
17140 2006-06-09  Neale Ferguson <neale@sinenomine.net>
17141
17142         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on s390/s390x.
17143         * mini-s390x.c, mini-s390.c: Correct ATOMIC operations (incorrect register for CS
17144         instruction).
17145         * mini-s390x.h, mini-s390.h: Simplify MCONTEXT_GET_BP.
17146         * cpu-s390x.md: Fix max. length values for a couple of instructions.
17147
17148 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
17149
17150         * mini-exceptions.c: Minor fix for building mono in Visual Studio.
17151
17152 2006-06-08  Massimiliano Mantione  <massi@ximian.com>
17153
17154         * ssapre-cee-ops.h: Renamed as "simple-cee-ops.h"
17155         * simple-cee-ops.h: Was "ssapre-cee-ops.h" (renamed).
17156         * ssapre-mini-ops.h: Renamed as "simple-mini-ops.h"
17157         * simple-mini-ops.h: Was "ssapre-mini-ops.h" (renamed).
17158         * local-propagation.c: In mono_cprop_invalidate_values use a whitelist
17159         of opcodes, so that bug 78549 should not happen again.
17160         * ssapre.c: Updated to use the renamed files.
17161
17162 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
17163
17164         * mini-amd64.c (mono_arch_output_basic_block): Fix a wrong reg-reg move 
17165         in OP_ATOMIC_EXCHANGE_I4.
17166
17167 2006-06-07  Wade Berrier <wberrier@novell.com>
17168
17169         * tramp-s390.c: Fix s390 build (add missing pointer declarations 
17170         in mono_debugger_create_notification_function)
17171
17172 2006-06-06  Zoltan Varga  <vargaz@gmail.com>
17173
17174         * mini.c (NEW_AOTCONST_TOKEN): Fix amd64 build.
17175         
17176         * mini.c (type_from_stack_type): Disable some changes which do not
17177         seem to work.
17178
17179         * driver.c: Reenable opts.
17180
17181         * mini.h (MonoStackSlot): New structure to keep track of the verification state
17182         of the evaluation stack.
17183         
17184         * mini.h (MonoBasicBlock): Add a 'stack_state' field to keep track of the
17185         evaluation stack trace at entry to the bblock.
17186
17187         * mini.c (merge_stacks): New function to perform verification of stack merges.
17188         Turned off by default.
17189
17190         * mini.c: Fill up ins->klass for instructions whose type is STACK_OBJ or
17191         STACK_MP.
17192         
17193 2006-06-06  Massimiliano Mantione  <massi@ximian.com>
17194
17195         * local-propagation.c: Fixed bug 78549.
17196
17197 2006-06-04  Zoltan Varga  <vargaz@gmail.com>
17198
17199         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on ia64.
17200
17201 2006-06-02  Miguel de Icaza  <miguel@novell.com>
17202
17203         * tramp-sparc.c, tramp-ppc.c, tramp-s390.c, tramp-s390x.c,
17204         tramp-arm.c, tramp-ia64.c
17205         (mono_debugger_create_notification_function): Update signature to
17206         new signature and use new protocol for creating the notification
17207         function.  
17208
17209         Should fix the build.
17210
17211 2006-06-02  Geoff Norton  <gnorton@customerdna.com>
17212
17213         * exceptions-ppc.c (mono_jit_walk_stack)
17214         (ves_icall_get_frame_info): Fix the build
17215
17216 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
17217
17218         * mini.c (mono_set_defaults): Fix the handling of -O=-all.
17219
17220 2006-05-31  Raja R Harinath  <rharinath@novell.com>
17221
17222         * il2tests.2.il: New file for generics CIL tests.  Add test for
17223         #78019.
17224         * Makefile.am: Update.
17225
17226         Fix #78019
17227         * mini.c (mono_method_to_ir): Don't apply box+brtrue optimization
17228         to nullable types.
17229
17230 2006-05-30  Massimiliano Mantione  <massi@ximian.com>
17231
17232         * aliasing.c: Fixed bug 78311.
17233
17234 2006-05-29  Martin Baulig  <martin@ximian.com>
17235
17236         * mini-exceptions.c (mono_find_jit_info): When computing the
17237         native offset, check whether we're actually inside the method's
17238         code; call mono_debug_print_stack_frame() to format the frame.
17239         (ves_icall_System_Exception_get_trace): Call
17240         mono_debug_print_stack_frame() to format the stack frame.
17241         (ves_icall_get_trace): Update to the new debugging API.
17242         (mono_jit_walk_stack_from_ctx): Likewise.
17243         (ves_icall_get_frame_info): Likewise.
17244
17245         * mini.c (get_method_from_ip): Use the new debugging API.
17246         (mono_print_method_from_ip): Likewise.
17247
17248         * exceptions-ppc.c
17249         (mono_jit_walk_stack): Use the new debugging API.
17250         (ves_icall_get_frame_info): Likewise.   
17251
17252 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
17253
17254         * mini-amd64.c (mono_arch_output_basic_block): Fix MONO_PROFILE_COVERAGE.
17255
17256 2006-05-25  Massimiliano Mantione  <massi@ximian.com>
17257
17258         * mini.c: Added "limitator" to inline for debugging.
17259
17260 2006-05-24  Martin Baulig  <martin@ximian.com>
17261
17262         * debug-debugger.c (mono_debugger_init): Create a private,
17263         malloc()-based code manager for the notification function and
17264         intentionally leak it on exit.  This fixes the crash-on-exit race
17265         condition.
17266
17267         * tramp-amd64.c
17268         (mono_debugger_create_notification_function): Added
17269         `MonoCodeManager *' argument.
17270
17271         * tramp-x86.c
17272         (mono_debugger_create_notification_function): Added
17273         `MonoCodeManager *' argument.
17274
17275 2006-05-23  Massimiliano Mantione  <massi@ximian.com>
17276
17277         * aliasing.c: Fixed 64 bit issue.
17278         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
17279         default since all known bugs are fixed (one more time!).
17280
17281 Tue May 23 13:47:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
17282
17283         * mini.c: write barrier support.
17284
17285 2006-05-23  Martin Baulig  <martin@ximian.com>
17286
17287         * debug-debugger.c: Revert Paolo's change.  Add comment and #error
17288         check at the top of the file.
17289
17290 Sun May 21 12:22:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
17291
17292         * debug-debugger.c: fix the build. Again. Hopefully Martin will stop
17293         reverting changes without reason and without changelog entries.
17294
17295 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
17296
17297         * mini-sparc.c (mono_arch_output_basic_block): Add support for large stack offets
17298         to a few opcodes. Fixes #78439.
17299
17300         * mini-sparc.c: Rename mono_sparch_break () to mono_arch_break () to improve
17301         consistency with other archs.
17302
17303         * mini-ia64.c (mono_arch_emit_prolog): Remove debug stuff left in by mistake.
17304
17305 Wed May 17 18:07:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
17306
17307         * debug-debugger.c: fix the build.
17308
17309 2006-05-17  Martin Baulig  <martin@ximian.com>
17310
17311         * debug-debugger.c
17312         (debugger_thread_vtable): Moved here from ../metadata/threads.c.
17313         (debugger_init_threads): Formerly known as mono_debugger_init_threads().
17314         (debugger_finalize_threads): Formaly known as mono_debugger_finalize_threads().
17315         (debugger_attach): Call GC_mono_debugger_add_all_threads().
17316
17317 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
17318
17319         * mini.c (mini_init): Call pthread_attr_destroy () to fix a small memory leak.
17320
17321 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
17322
17323         * mini-x86.c (mono_arch_instrument_epilog): Fix handling of 
17324         MONO_TYPE_GENERICINST.
17325         
17326         * mini-amd64.c (mono_arch_instrument_epilog): Fix handling of 
17327         MONO_TYPE_GENERICINST.
17328
17329 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
17330
17331         * mini-x86.c (mono_arch_get_vcall_slot_addr): Add a missing call sequence. Fixes
17332         #78325.
17333
17334 2006-05-08  Zoltan Varga  <vargaz@gmail.com>
17335
17336         * mini.c (mono_create_jump_trampoline): Allocate MonoJitInfo from the domain
17337         mempool.
17338         (mono_jit_free_method): Remove the method from jump_trampoline_hash as well.
17339
17340 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
17341
17342         * mini.c (mini_cleanup): Applied patch from Joachim Ante (joe@otee.dk). Call
17343         mono_trace_cleanup ().
17344
17345         * iltests.il: Fix problem with the newly added test.
17346
17347         * mini-codegen.c (mono_local_regalloc): When changing the dreg of an instruction
17348         due to register constraints, free up the previous hreg. Fixes #78314.
17349
17350         * iltests.il: Add new test for #78314.  
17351
17352         * mini-x86.c (mono_arch_get_inst_for_method): Use OP_ATOMIC_ADD_NEW_I4 for
17353         Interlocked.Add. Fixes #78312.
17354
17355         * mini-amd64.c (mono_arch_get_inst_for_method): Ditto.
17356         
17357 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
17358
17359         * inssel.brg (mini_emit_virtual_call): Fix a warning.
17360
17361 2006-05-05  Martin Baulig  <martin@ximian.com>
17362
17363         * debug-mini.c (mono_debug_open_block): New method.
17364
17365         * mini-amd64.c
17366         (mono_arch_output_basic_block): Call mono_debug_open_block() at
17367         the beginning of each basic block.
17368
17369         * mini-x86.c
17370         (mono_arch_output_basic_block): Call mono_debug_open_block() at
17371         the beginning of each basic block.
17372
17373 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
17374
17375         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
17376         default until I understand why they break the build on amd64.
17377
17378 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
17379
17380         * mini.c (mini_cleanup): Call mono_cleanup ().
17381
17382         * mini.c (UNVERIFIED): New macro to make it easier to track down verification
17383         errors.
17384
17385 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
17386
17387         * aliasing.c: Fixed shameful cut&paste error that caused JIT crashes.
17388         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
17389         default since all known bugs are fixed, and I cannot reproduce bug
17390         77944... I'm asking Matt Hargett to test again after this commit.
17391
17392 2006-04-28  Massimiliano Mantione  <massi@ximian.com>
17393
17394         * mini-codegen.c: Fixed typo that thrashed inline.
17395
17396 2006-04-28  Zoltan Varga  <vargaz@gmail.com>
17397
17398         * dominators.c (compute_dominators): Avoid using a worklist since
17399         it is not correct in some cases. Instead, iterate over all bblocks as
17400         in the original paper. Fixes --compile-all -O=all System.Xml.dll.
17401
17402 2006-04-28  Miguel de Icaza  <miguel@novell.com>
17403
17404         * mini.c (mono_jit_compile_method_inner): Use
17405         mono_prepare_exception_from_error that resets the value
17406         internally.
17407
17408 2006-04-27  Miguel de Icaza  <miguel@novell.com>
17409
17410         * mini.c: Move the mini_loader_error_to_exception to metadata. 
17411         
17412 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
17413
17414         * aliasing.c: Fixed bug 78210.
17415
17416 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
17417
17418         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
17419         default until all their problems (or the ones they trigger) are fixed.
17420
17421 2006-04-26  Zoltan Varga  <vargaz@gmail.com>
17422
17423         * aot-runtime.c (mono_aot_get_method_from_token_inner): Fix the previous patch.
17424         
17425         * aot-runtime.c (mono_aot_get_method_from_token_inner): Mark the method
17426         as loaded only after resolving patches since that could invoke the same method.
17427
17428         * aot-runtime.c (mono_aot_plt_resolve): Fix ppc etc. builds.
17429
17430         * aot-compiler.c: Refactor mono_aot_compile_aot () into a bunch of smaller
17431         functions.
17432
17433         * aot-runtime.c (init_plt): Use a normal trampoline to transfer code to the
17434         AOT loader.
17435
17436         * aot-compiler.c (emit_plt): Pass the plt offset in %eax instead of on the
17437         stack.
17438
17439         * mini-trampolines.c (mono_aot_plt_trampoline): New trampoline to handle calls
17440         made from AOT code through the PLT table.
17441
17442         * mini-x86.h mini-amd64.h: Define MONO_ARCH_AOT_PLT_OFFSET_REG to the register
17443         holding the plt offset when a call is made to the aot plt trampoline.
17444         
17445 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
17446
17447         * aot-runtime.c aot-compiler.c cpu-amd64.md mini-amd64.c: Update parts of the 
17448         amd64 AOT support.
17449
17450         * Makefile.am (common_sources): Fix build breakage.
17451
17452         * aot-runtime.c aot-compiler.c: Reorganize the AOT code yet again: Make all
17453         calls through a jump table similar to the ELF PLT table. Avoid indirect calls for
17454         intra-assembly calls if possible.
17455         
17456         * tramp-*.c: Add new functions for patching/nullifying PLT entries.
17457
17458         * mini-trampolines.c: Handle PLT entries.
17459
17460         * mini.c: Avoid creating a GOT var for calls.
17461
17462         * jit-icalls.c (helper_ldstr_mscorlib): New helper function for loading strings
17463         from mscorlib code.
17464
17465         * jit-icalls.c (helper_newobj_mscorlib): New helper function to create objects
17466         from mscorlib code.
17467
17468         * mini.c (mono_method_to_ir): Use the new helper functions in throw bblocks in
17469         AOT code.       
17470
17471         * mini.h: Bump AOT file format version.
17472         
17473         * mini.c (get_basic_blocks): Fix the calculation of bb->out_of_line so it
17474         covers more cases.
17475
17476 2006-04-25  Martin Baulig  <martin@ximian.com>
17477
17478         * driver.c: Disable copyprop, consprop and inline when running
17479         inside the debugger.
17480
17481 2006-04-25  Martin Baulig  <martin@ximian.com>
17482
17483         * debug-debugger.h (MonoDebuggerInfo): Replaced `get_thread_id'
17484         with `get_current_thread' and added `detach'.
17485         (MonoDebuggerMetadataInfo): Added `thread_size',
17486         `thread_tid_offset', `thread_stack_ptr_offset' and
17487         `thread_end_stack_offset'.
17488
17489 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
17490
17491         * aot.c Makefile.am: Split aot.c into two new files aot-compiler.c and 
17492         aot-runtime.c.
17493
17494         * inssel.brg (mini_emit_load_intf_reg_vtable): Use a new kind of AOT constant
17495         ADJUSTED_IID to avoid the need for adjusting the IID at runtime.
17496
17497         * mini.h (MonoJumpInfoType): Add MONO_PATCH_INFO_ADJUSTED_IID.
17498
17499         * mini.c (mono_resolve_patch_target): Handle ADJUSTED_IID.
17500
17501         * aot.c: Add support for ADJUSTED_IID.  
17502
17503 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
17504
17505         * aot.c (emit_method_order): Don't align method_order_end.
17506
17507         * inssel.brg (stmt): Fix interface calls in AOT code which got broken by
17508         the interface ID changes.
17509
17510 2006-04-21  Dick Porter  <dick@ximian.com>
17511
17512         * mini.c (mini_thread_cleanup): Clear the JIT TLS data when
17513         cleaning up a thread.  Fixes the new part of bug 77470.
17514
17515 2006-04-20  Geoff Norton  <gnorton@customerdna.com>
17516
17517         * mini-ppc.c: Call mono_jit_thread_attach when transitioning a native
17518         to managed wrapper.
17519                      
17520 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
17521
17522         * mini.h mini.c: Remove mono_type_to_ldind/stind () which are now in marshal.c.
17523         
17524         * mini.c (mono_runtime_install_handlers): Handle SIGABRT similarly to
17525         SIGSEGV. Fixes #78072.
17526
17527         * mini-exceptions.c (mono_handle_native_sigsegv): Add a 'signal' argument,
17528         unregister our SIGABRT handler.
17529
17530 2006-04-19  Massimiliano Mantione  <massi@ximian.com>
17531
17532         * mini.c: Disabled inline where it can alter the call stack in a
17533         way visible from managed code.
17534         * driver.c: enabled inline,consprop,copyprop,treeprop,deadce by
17535         default.
17536
17537 2006-04-16  Zoltan Varga  <vargaz@gmail.com>
17538
17539         * mini-amd64.c (mono_arch_emit_prolog): Attach the thread to the runtime as it is done
17540         on other platforms. Fixes #78089.
17541
17542 2006-04-13  Martin Baulig  <martin@ximian.com>
17543
17544         * driver.c: Also check a `MONO_INSIDE_MDB' environment variable to
17545         determine whether we're inside the debugger.
17546
17547         * debug-debugger.h
17548         (MonoDebuggerMetadataInfo): Added all offsets from `MonoDefaults'.
17549
17550 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
17551
17552         * mini.c (mono_method_to_ir): Handle multiple LEAVE statements inside a single
17553         handler clauses. Fixes #78024.
17554
17555         * mini-sparc.c (mono_arch_output_basic_block): Handle large offsets
17556         in the CALL_MEMBASE opcodes. Fixes #78088.
17557         (mono_arch_get_vcall_slot_addr): Ditto.
17558
17559 2006-04-10  Martin Baulig  <martin@ximian.com>
17560
17561         * debug-debugger.c: The thread handling code has now been moved
17562         into ../metadata/threads.c.
17563
17564 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
17565
17566         * driver.c (mono_main): Fix --with-gc=none build.
17567
17568         * mini-codegen.c (mono_spillvar_offset): Improve alignment.
17569         (mono_spillvar_offset_float): Ditto.
17570         (mono_local_regalloc): Only do the OP_MOVE optimization if ins->dreg is a local
17571         hreg, not when its !global, since on ia64, there is a third category: stacked
17572         registers.      
17573
17574 Mon Apr 10 14:39:49 CEST 2006 Paolo Molaro <lupus@ximian.com>
17575
17576         * mini.c: set MonoInst->klass for load field address and a few other
17577         places.
17578
17579 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
17580
17581         * helpers.c (mono_disassemble_code): Emit debug info on amd64 as well.
17582
17583 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
17584
17585         * dominators.c (compute_dominators): Fix yet another bug which surfaced after
17586         the branch opt changes.
17587
17588 2006-04-06  Dick Porter  <dick@ximian.com>
17589
17590         * wapihandles.c (mini_wapi_semdel): Fix parameters in semctl () call.
17591         
17592         * wapihandles.c (mini_wapi_seminfo): 
17593         * driver.c (mono_main): Add semaphore info option
17594
17595 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
17596
17597         * dominators.c (compute_dominators): Fix a bug which surfaced after the recent
17598         branch optimization changes. Fixes #78009.
17599
17600 Wed Apr 5 16:40:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
17601
17602         * mini.c: ignore accessibility of methods in managed->native wrappers.
17603
17604 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
17605
17606         * mini.c (mini_cleanup): Call print_jit_stats () earlier since it accesses metadata.
17607         
17608         * mini.c (mini_cleanup): Free 'emul_opcode_map' as well.
17609
17610 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
17611
17612         * mini.c: Modify the branch optimizations to preserve the invariant that
17613         the entries inside the in_bb and out_bb arrays are unique.
17614         (mono_unlink_bblock): Avoid creation of new arrays.
17615
17616 2006-04-02  Zoltan Varga  <vargaz@gmail.com>
17617
17618         * mini.c (mono_unlink_bblock): Fix regression caused by previous
17619         change (#77992).
17620
17621 2006-04-01  Zoltan Varga  <vargaz@gmail.com>
17622
17623         * mini.c (optimize_branches): Remove the "optimizations" in
17624         the cbranch1/cbranch2 -> branch cases which were causing several
17625         problems in the past. Fixes #77986.
17626
17627 2006-03-31  Chris Toshok  <toshok@ximian.com>
17628
17629         * driver.c (DEFAULT_OPTIMIZATIONS): back out the new set of
17630         default optimizations :(
17631
17632 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
17633
17634         * inssel-x86.brg mini-codegen.c mini.c: Merge some changes/fixes from linear-il
17635         branch.
17636
17637 2006-03-31  Massimiliano Mantione  <massi@ximian.com>
17638
17639         * local-propagation.c: Added comments to structs and removed
17640         "Mono" prefixes from local tree mover types.
17641
17642 2006-03-30  Zoltan Varga  <vargaz@gmail.com>
17643
17644         * Makefile.am (arch_sources): Define this for each architecture so 
17645         libmono_la_SOURCES is defined in one place.
17646
17647 Wed Mar 29 20:51:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
17648
17649         * driver.c, wapihandles.c, Makefile.am: integrate the io-layer utils
17650         from handles/.
17651
17652 Wed Mar 29 17:16:57 CEST 2006 Paolo Molaro <lupus@ximian.com>
17653
17654         * driver.c: print the GC name supplied by configure.
17655
17656 2006-03-29  Massimiliano Mantione  <massi@ximian.com>
17657
17658         * local-propagation.c: Added tree mover, and moved here all the
17659         local propagation code from mini.c
17660         * mini.c: Added support for treeprop, and moved all the local
17661         propagation code to local-propagation.c
17662         * mini.h: Added support for treeprop
17663         * driver.c: Added support for treeprop, enabled consprop, copyprop,
17664         treeprop, inline and deadce by default
17665         * Makefile.am: Added local-propagation.c
17666
17667 2006-03-25  Zoltan Varga  <vargaz@gmail.com>
17668
17669         * exceptions-sparc.c: Applied patch from David S. Miller  <davem@sunset.davemloft.net>: Implement correct support for sparc/linux.
17670
17671 Fri Mar 24 20:07:19 CET 2006 Paolo Molaro <lupus@ximian.com>
17672
17673         * debug-debugger.c: make it compile without the Boehm GC.
17674
17675 Wed Mar 22 18:25:18 CET 2006 Paolo Molaro <lupus@ximian.com>
17676
17677         * mini.c: fixed issue with mismatch when an icall is registered
17678         with multiple names but same address.
17679
17680 Tue Mar 21 15:59:57 CET 2006 Paolo Molaro <lupus@ximian.com>
17681
17682         * declsec.c, mini-exceptions.c: use write barrier to set reference
17683         fields of managed objects.
17684
17685 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
17686
17687         * mini.c (mono_print_method_from_ip): Recognize JIT trampolines as well.
17688         (can_access_internals): Fix a warning.
17689
17690         * mini.c (print_method_from_ip): Rename this to 
17691         mono_print_method_from_ip so it gets exported.
17692
17693         * trace.c: Deal with strings inside StringBuilder's containing garbage
17694         and fix memory leaks. Fixes #77848.
17695
17696 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
17697
17698         * mini.c (mini_init): Disable the setting of GC_stackbottom on ia64. Hopefully
17699         fixes #77787.
17700
17701 2006-03-16 Neale Ferguson <neale@sinenomine.net>
17702         
17703         * mini-s390.c: Remove OP_X86_TEST_NULL.
17704
17705 Thu Mar 16 17:19:04 CET 2006 Paolo Molaro <lupus@ximian.com>
17706
17707         * mini.c: use the correct GetHashCode() for the moving collector.
17708
17709 2006-03-16  Massimiliano Mantione  <massi@ximian.com>
17710
17711         * liveness.c: Regalloc spill cost tuning.
17712
17713 2006-03-15 Neale Ferguson <neale@sinenomine.net>
17714         
17715         * mini-s390x.h: Correct S390_LONG macro.
17716
17717         * mini-s390x.c: Cleanup unused code.
17718
17719 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
17720
17721         * jit-icalls.h: New file.
17722
17723         * Makefile.am mini.c jit-icalls.c: Use a proper include file for the jit
17724         icalls and include that instead of including jit-icalls.c.
17725
17726         * mini-ppc.c (mono_arch_output_basic_block): Remove references to
17727         OP_X86 opcodes.
17728
17729 Tue Mar 14 20:23:53 CET 2006 Paolo Molaro <lupus@ximian.com>
17730
17731         * mini.c: when checking for member accessibility, also check for
17732         friend assemblies and for explicit interface implementations.
17733
17734 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
17735
17736         * mini-codegen.c (mono_local_regalloc): Remove incorrect g_free () calls.
17737
17738         * cpu-arm.md cpu-g4.md: Remove x86_ opcodes.
17739
17740         * mini-x86.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
17741         common cases are done first.    
17742
17743         * mini-ops.h: Only define platform specific opcodes on the given platform.
17744
17745         * mini.h regalloc.h mini-codegen.c: Merge optimizations from the linear-il
17746         branch.
17747         
17748 2006-03-14  Martin Baulig  <martin@ximian.com>
17749
17750         Revert Paolo's change from r57348:
17751
17752         * mini.h: don't use gboolean for bitfields.
17753         * mini.c: verifier changes for fields and methods accessibility.
17754
17755 2006-03-13  Neale Ferguson <neale@sinenomine.net>
17756
17757         * mini-s390.h, mini-s390x.h: Fix calls to mono_call_inst_add_outarg_reg.
17758
17759         * mini-s390x.c: Fix conv_r_un.
17760
17761         * cpu-s390, cpu-s390x.md: Fix lengths.
17762
17763 Sun Mar 12 17:31:22 CET 2006 Paolo Molaro <lupus@ximian.com>
17764
17765         * mini.c: nested types have access to all the nesting
17766         levels, not just the enclosing types.
17767
17768 Sun Mar 12 16:23:11 CET 2006 Paolo Molaro <lupus@ximian.com>
17769
17770         * mini.c: added a few more verification checks.
17771
17772 2006-03-12  Zoltan Varga  <vargaz@gmail.com>
17773
17774         * liveness.c: Merge optimizations from the linear-il branch.
17775
17776 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
17777
17778         * mini-ia64.c (emit_call): Add a comment.
17779
17780         * tramp-ia64.c (mono_arch_patch_callsite): Handle indirect calls as well.
17781
17782         * tramp-ia64.c: Fix some warnings.
17783
17784 Sat Mar 11 20:15:59 CET 2006 Paolo Molaro <lupus@ximian.com>
17785
17786         * mini.h: don't use gboolean for bitfields.
17787         * mini.c: verifier changes for fields and methods accessibility.
17788
17789 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
17790
17791         * mini.c (mono_icall_get_wrapper): Fix an ia64 bug introduced by the
17792         lazy icall wrapper changes.
17793
17794         * dominators.c: Replace all the dominator algorithms with faster
17795         ones from the linear-il branch.
17796
17797         * inssel-*.brg: Allocate call->out_ireg_args and call->out_freg_args from
17798         the mempool.
17799
17800         * mini-amd64.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
17801         common cases are done first.
17802
17803         * mini-amd64.c: Fix some warnings.
17804
17805         * mini-codegen.c mini-*.c: Allocate call->out_ireg_args and call->out_freg_args
17806         from the mempool.
17807
17808         * mini.c (mono_jit_compile_method_with_opt): Fix a race in the newly
17809         added code.
17810
17811         * mini.h: Add a missing prototype.
17812
17813 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
17814
17815         * mini.c: Compile icall wrappers lazily.
17816
17817         * mini-codegen.c: Use printf instead of g_print since its much faster.
17818
17819         * mini.h (mono_bitset_foreach_bit): Use the faster mono_bitset_find_start ()
17820         function.
17821
17822         * mini.c (optimize_branches): Cache the negative result from 
17823         remove_block_if_useless ().
17824
17825         * mini.c (optimize_branches): Avoid restarting the iteration after each change. 
17826         Also fix some bblock linking issues.
17827
17828         * helpers.c (mono_disassemble_code): Reduce the size of the temporary
17829         assembly files.
17830
17831         * mini.h: Define G_LIKELY/G_UNLIKELY macros for older glib versions.
17832
17833         * mini.h (MonoBasicBlock): Reorganize the fields, putting more frequently
17834         accessed fields first, for better cache behavior.
17835         
17836 Fri Mar 10 18:21:41 CET 2006 Paolo Molaro <lupus@ximian.com>
17837
17838         * mini.c: speedup IList<T> array accesses.
17839
17840 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
17841
17842         * mini.c (mono_method_to_ir): Handle large methods overflowing the 
17843         inline_costs counter. Fixes #77190.
17844
17845 2006-03-06  Zoltan Varga  <vargaz@gmail.com>
17846
17847         * mini-exceptions.c: Call mono_trace_is_enabled () before printing
17848         trace messages. Fixes #77706.
17849
17850 2006-03-04  Martin Baulig  <martin@ximian.com>
17851
17852         * tramp-amd64.c, tramp-x86.c
17853         (mono_debugger_create_notification_function): Use
17854         mono_global_codeman_reserve() to allocate a buffer at runtime and
17855         return it.
17856
17857         * debug-debugger.h (MonoDebuggerInfo): Added `initialize'.
17858
17859         * debug-debugger.c (mono_debugger_init): Dynamically allocate the
17860         notification function at runtime and then call `initialize' in the
17861         `MONO_DEBUGGER__debugger_info' vtable.
17862
17863 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
17864
17865         * iltests.il: Fix a visibility problem.
17866
17867 Wed Mar 1 15:55:25 CET 2006 Paolo Molaro <lupus@ximian.com>
17868
17869         * driver.c, mini.c: add hooks for the counters API.
17870
17871 Wed Mar 1 12:28:04 CET 2006 Paolo Molaro <lupus@ximian.com>
17872
17873         * driver.c: show disabled options.
17874
17875 Wed Mar 1 12:18:51 CET 2006 Paolo Molaro <lupus@ximian.com>
17876
17877         * linear-scan.c: always use cost-driven selection.
17878
17879 2006-02-28  Raja R Harinath  <rharinath@novell.com>
17880
17881         * jit-icalls.c (helper_compile_generic_method): Revert change from
17882         2006-02-24.
17883
17884 Mon Feb 27 18:58:19 GMT 2006 Paolo Molaro <lupus@ximian.com>
17885
17886         * cpu-arm.md, mini-arm.c: implemented MemoryBarrier.
17887
17888 Sat Feb 25 17:39:21 CET 2006 Paolo Molaro <lupus@ximian.com>
17889
17890         * inssel.brg: style fixes, mostly to force the updated monoburg
17891         to run for people using svn.
17892
17893 Sat Feb 25 17:07:42 CET 2006 Paolo Molaro <lupus@ximian.com>
17894
17895         * mini.c: match monoburg changes.
17896
17897 Sat Feb 25 16:04:33 CET 2006 Paolo Molaro <lupus@ximian.com>
17898
17899         * mini.h, mini.c, abcremoval.c, aliasing.c, liveness.c,
17900         ssapre.c, graph.c, ssa.c: put the mono_burg_arity[]
17901         declaration in the header file.
17902
17903 Sat Feb 25 14:19:31 CET 2006 Paolo Molaro <lupus@ximian.com>
17904
17905         * helpers.c: reduce relocations and mem usage.
17906
17907 Sat Feb 25 11:58:16 CET 2006 Paolo Molaro <lupus@ximian.com>
17908
17909         * mini.h, mini-codegen.c: disable logging features if
17910         requested by configure.
17911
17912 Sat Feb 25 11:54:49 CET 2006 Paolo Molaro <lupus@ximian.com>
17913
17914         * mini.c: tiny verifier changes.
17915
17916 Fri Feb 24 18:17:52 CET 2006 Paolo Molaro <lupus@ximian.com>
17917
17918         * mini-ops.h, inssel-x86.brg, tramp-x86.c, mini-x86.c,
17919         cpu-pentium.md: stack alignment changes for osx/x86,
17920         partially from Geoff Norton <gnorton@customerdna.com>.
17921
17922 2006-02-24  Raja R Harinath  <harinath@gmail.com>
17923
17924         * jit-icalls.c (helper_compile_generic_method): Update to changes
17925         in metadata/class.c.
17926
17927 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
17928         
17929         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a missing check.
17930         
17931         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for
17932         interface calls with large offsets.
17933
17934 2006-02-23  Raja R Harinath  <rharinath@novell.com>
17935
17936         * jit-icalls.c (helper_compile_generic_method): Document the
17937         special-case we depend on so that we can inflate the method twice
17938         with the same context with no bad side-effects.
17939
17940 Thu Feb 23 13:45:46 CET 2006 Paolo Molaro <lupus@ximian.com>
17941
17942         * mini-x86.c, mini-amd64.c: fix for case when xen support
17943         is disabled.
17944
17945 Wed Feb 22 19:38:40 CET 2006 Paolo Molaro <lupus@ximian.com>
17946
17947         * mini-x86.c, mini-amd64.c: generate code to access tls items
17948         in a faster way for Xen systems.
17949
17950 Wed Feb 22 10:31:25 CET 2006 Paolo Molaro <lupus@ximian.com>
17951
17952         * exceptions-x86.c, mini-x86.h, driver.c, mini-codegen.c:
17953         updates and compilation fixes for the OSX/x86 port, mostly from
17954         Geoff Norton <gnorton@customerdna.com>.
17955
17956 Tue Feb 21 19:56:55 CET 2006 Paolo Molaro <lupus@ximian.com>
17957
17958         * inssel.brg: faster interface call implementation
17959         to sync with the interface_offsets MonoVTable changes.
17960
17961 Mon Feb 20 10:37:57 CET 2006 Paolo Molaro <lupus@ximian.com>
17962
17963         * mini.c: more verification checks.
17964
17965 Fri Feb 17 19:47:29 CET 2006 Paolo Molaro <lupus@ximian.com>
17966
17967         * mini.c: added a few more verification checks.
17968
17969 2006-02-17      Neale Ferguson <neale@sinenomine.net>
17970
17971         * mini-s390x.c, mini-s390x.h: Check for presence of long displacement
17972         facility on the processor and use it if available.
17973
17974 Fri Feb 17 16:12:52 CET 2006 Paolo Molaro <lupus@ximian.com>
17975
17976         * driver.c, aot.c, mini.c: throw exception if the IL code is
17977         invalid or unverifiable.
17978
17979 2006-02-17  Raja R Harinath  <rharinath@novell.com>
17980
17981         * generics.2.cs (test_0_ldfld_stfld_mro): Use m.struct_field, not
17982         m.StructField.
17983
17984 2006-02-16  Zoltan Varga  <vargaz@gmail.com>
17985
17986         * generics.2.cs: Add some tests for generics ldfld/stfld wrappers.
17987
17988 Wed Feb 15 16:23:17 CET 2006 Paolo Molaro <lupus@ximian.com>
17989
17990         * mini-s390x.c, mini-s390.c, mini.c, mini-amd64.c, mini-arm.c,
17991         mini-ia64.c, mini-sparc.c, mini-x86.c, mini-ppc.c: fixed
17992         handling of instantiated generic valuetypes.
17993
17994 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
17995
17996         * mini-exceptions.c mini-x86.h mini-x86.c: Get rid of 
17997         MONO_INIT_CONTEXT_FROM_CALLER, and use MONO_INIT_CONTEXT_FROM_FUNC
17998         instead.
17999
18000         * generics.2.cs: Revert the nullable reftypes tests.
18001
18002 2006-02-10  Zoltan Varga  <vargaz@gmail.com>
18003
18004         * mini-exceptions.c (MONO_INIT_CONTEXT_FROM_CALLER): Avoid
18005         using __builtin_frame_address (1) as it doesn't work in the presence
18006         of optimizations. Hopefully fixes #77273.
18007
18008         * Makefile.am generics.cs generics.2.cs: Revert the generics.2.cs
18009         -> generics.cs change as it doesn't work with some automake versions.
18010
18011 Thu Feb 9 16:24:44 CET 2006 Paolo Molaro <lupus@ximian.com>
18012
18013         * mini.c: handle systems that sue a different way to
18014         retrieve the stack address of the current thread.
18015
18016 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
18017
18018         * Makefile.am generics.2.cs: Rename this to generics.cs and handle
18019         it specially in the makefile.
18020
18021         * generics.2.cs: Add tests for nullable reference types.
18022
18023 Wed Feb 8 19:33:17 CET 2006 Paolo Molaro <lupus@ximian.com>
18024
18025         * mini.c: always handle the case when mono_jit_init()
18026         is called in a thread different from the main thread,
18027         confusing libgc (bug #77309).
18028
18029 Mon Feb 6 09:01:24 EST 2006 Paolo Molaro <lupus@ximian.com>
18030
18031         * mini-ppc.c: fix handling of exceptions in large methods (bug #74932).
18032
18033 Fri Feb 3 18:51:35 CET 2006 Paolo Molaro <lupus@ximian.com>
18034
18035         * mini.c: change optimize_branches () to use a single loop
18036         and introduce a new optimization to simplify some range checks.
18037
18038 2006-02-03  Martin Baulig  <martin@ximian.com>
18039
18040         * debug-debugger.c (debugger_thread_manager_thread_created): Removed
18041         and merged with debugger_thread_manager_add_thread().
18042         (mono_debugger_main): Call debugger_thread_manager_add_thread() to
18043         inform the debugger about the main thread.
18044
18045 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
18046
18047         * basic.cs: Add test for div.un/rem.un constant folding.
18048
18049 2006-02-03  Neale Ferguson <neale@sinenomine.net>
18050
18051         * cpu-s390x.md: correct int_xor_imm length
18052
18053 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
18054
18055         * generics.2.cs: New test for #77442.
18056
18057         * jit-icalls.c (helper_compile_generic_method): Check for null. Fixes
18058         #77442.
18059
18060 2006-02-02  Martin Baulig  <martin@ximian.com>
18061
18062         * tramp-x86.c, tramp-amd64.c: It's now safe to #include
18063         <mono/metadata/mono-debug-debugger.h>   
18064
18065         * debug-mini.c: Don't #define _IN_THE_MONO_DEBUGGER.
18066
18067 2006-02-02  Martin Baulig  <martin@ximian.com>
18068
18069         * debug-debugger.h: New header file for debug-debugger.c.
18070
18071         * debug-debugger.c: Big API cleanup; don't run the managed Main()
18072         function is a separate thread anymore; add support for attaching.
18073
18074 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
18075
18076         * tramp-x86.c: Fix a warning.
18077
18078 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
18079
18080         * mini-amd64.c (mono_arch_compute_omit_fp): Avoid hitting an assertion
18081         on very large methods.
18082
18083         * aot.c (load_patch_info): Fix a warning.
18084
18085 Mon Jan 30 12:51:10 CET 2006 Paolo Molaro <lupus@ximian.com>
18086
18087         * cpu-pentium.md, mini-x86.c, inssel.brg, inssel-x86.brg,
18088         mini-ops.h: alu membase optimizations.
18089
18090 Fri Jan 27 21:11:08 CET 2006 Paolo Molaro <lupus@ximian.com>
18091
18092         * mini-ops.h, mini.c, inssel.brg, inssel-x86.brg: opcode
18093         to speedup StringBuilder.
18094
18095 2006-01-27  Zoltan Varga  <vargaz@gmail.com>
18096
18097         * dominators.c (mono_compute_natural_loops): Fix detection of
18098         loop body start blocks.
18099
18100         * mini-exceptions.c (mono_print_thread_dump): Fix non x86 builds.
18101
18102 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
18103
18104         * mini.h mini.c mini-exceptions.c: Add thread dump support. Fixes
18105         #75145.
18106
18107 2006-01-25  Massimiliano Mantione  <massi@ximian.com>
18108
18109         * aliasing.c: Fixed aliasing issue on 64 bit archs.
18110
18111 2006-01-25  Martin Baulig  <martin@ximian.com>
18112
18113         * debug-debugger.c: Moved the `MonoDebuggerManager' and
18114         `MonoDebuggerThread' typedefs here from mono-debug-debugger.h and
18115         started to cleanup this file a little bit.
18116
18117 Tue Jan 24 18:20:48 CET 2006 Paolo Molaro <lupus@ximian.com>
18118
18119         * mini.c: optimize a codepath frequently happening in generics code.
18120
18121 2006-01-23  Martin Baulig  <martin@ximian.com>
18122
18123         * Makefile.am: Only compile debug-debugger.c on supported platforms.
18124
18125         * debug-debugger.c: Kill the IO_LAYER() hack and use the io-layer
18126         functions directly.
18127
18128         * driver.c: debug-debugger.c is only available if
18129         `MONO_DEBUGGER_SUPPORTED' is defined.   
18130
18131 2006-01-23  Martin Baulig  <martin@ximian.com>
18132
18133         * debug-debugger.c: Only enable this on platforms where the Mono
18134         Debugger is working (x86 and x86_64).
18135
18136 2006-01-21  Martin Baulig  <martin@ximian.com>
18137
18138         The Mono Debugger is now using the normal `mono' instead of the
18139         `mono-debugger-mini-wrapper' when executing managed code.
18140
18141         * debug-debugger.c: New file; previously known as
18142         debugger/wrapper/wrapper.c.
18143
18144         * debug-mini.c (mono_init_debugger): Removed.
18145
18146         * driver.c (mono_main): Added new `--inside-mdb' command line
18147         argument which is used when running inside the debugger.
18148
18149 2006-01-20  Zoltan Varga  <vargaz@gmail.com>
18150
18151         * liveness.c (mono_analyze_liveness): Remove some unused data
18152         structures.
18153
18154 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
18155
18156         * mini.h: Move mono_bitset_test_fast macro to monobitset.h where it belongs.
18157
18158 2006-01-16  Zoltan Varga  <vargaz@gmail.com>
18159
18160         * mini.h (mono_bitset_test_fast): Disable the 'fast' implementation which
18161         depends on implementation details of monobitset.
18162
18163         * mini.c (mini_get_ldelema_ins): Fix handling of 1 dimensional arrays.
18164         Fixes #77271.
18165
18166 2006-01-15  Zoltan Varga  <vargaz@gmail.com>
18167
18168         * liveness.c: Update after monobitset changes.
18169
18170 2006-01-14  Zoltan Varga  <vargaz@gmail.com>
18171
18172         * mini-amd64.c (mono_arch_compute_omit_fp): Fix a leak.
18173
18174 2006-01-11 Neale Ferguson <neale@sinenomine.net>
18175
18176         * inssel-s390x.brg: Fix reg: OP_LDADDR(OP_S390_LOADARG) register setting.
18177
18178         * mini-s390x.c: Remove warning messages.
18179
18180 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
18181
18182         * mini.c: pass the jitinfo to mono_profiler_method_end_jit.
18183
18184 2006-01-10  Zoltan Varga  <vargaz@gmail.com>
18185
18186         * generics.2.cs: Add ldelem/stelem_any test.
18187
18188 2006-01-10 Neale Ferguson <neale@sinenomine.net>
18189
18190         * mini-s390.c: Fix ATOMIC_ADD_I4 operation.
18191
18192 2006-01-07  Zoltan Varga  <vargaz@gmail.com>
18193
18194         * inssel-long.brg: Fix int->long ovf conversion rules. Fixes #77172.
18195         
18196 2006-01-06  Zoltan Varga  <vargaz@gmail.com>
18197
18198         * generics.2.cs: Reenable vtype tests.
18199
18200         * inssel-x86.brg: Remove an icorrect valuetype rule.
18201
18202 2006-01-06 Neale Ferguson <neale@sinenomine.net>
18203
18204         * mini-s390x.c, inssel-s390x.brg, cpu-s390x.md: Fix ATOMIC_I8 operations. Provide
18205         initial support for OP_ABS.
18206
18207 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18208
18209         * mini-s390x.c (emit_float_to_int): Correct r8 to unsigned int algorithm.
18210
18211 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18212
18213         * mini-s390.c, mini-s390.h, inssel-s390.brg, cpu-s390.md: Fix r8 to unsigned int 
18214         conversion and implement LADD/LSUB.
18215
18216         * exceptions-s390.c: Standardize mono_arch_find_jit_info to match other
18217         architectures.
18218
18219 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18220
18221         * mini-s390x.c, mini-s390x.h: Fix r8 to unsigned int conversion.
18222
18223         * exceptions-s390x.c: Standardize mono_arch_find_jit_info to match other
18224         architectures.
18225
18226 2006-01-05 Neale Ferguson <neale@sinenomine.net>
18227
18228         * mini-s390x.c, mini-s390x.h, mini-s390.c, mini-s390.h: Fix lmf handling when 
18229         localloc is encountered.  Fixes crash in test-183.cs when using gmcs 
18230         (stack walk problem).
18231
18232 2006-01-04  Zoltan Varga  <vargaz@gmail.com>
18233
18234         * aot.c (mono_aot_load_method): Fix a warning.
18235
18236 2006-01-03  Neale Ferguson <neale@sinenomine.net>
18237
18238         * mini-s390x.h, exceptions-s390x.c, inssel-s390x.brg: Fix compiler warnings
18239
18240 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
18241
18242         * iltests.il: Add test for #77148.
18243
18244         * mini.c (mini_get_ldelema_ins): Handle arrays with rank 1 too. Fixes
18245         #77148.
18246
18247 2006-01-03  Neale Ferguson <neale@sinenomine.net>
18248
18249         * mini-s390x.c, inssel-s390x.brg: Remove debug statements
18250
18251 2006-01-03  Neale Ferguson <neale@sinenomine.net>
18252
18253         * mini-s390x.c, mini-s390x.h, exceptions-s390x.c, tramp-s390x.c, inssel-s390x.brg,
18254         cpu-s390x.md, mini-codegen.c, Makefile.am: add 64-bit s390 support to JIT.
18255
18256         * basic-long.cs: Add lconv-to-r4/r8 tests.
18257
18258 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
18259
18260         * mini.c (mono_method_to_ir): Fix DynamicMethod support in some opcodes.
18261
18262         * mini-sparc.c (mono_arch_call_opcode): Use mono_class_value_size ()
18263         here as on other archs.
18264
18265 2005-12-29 Neale Ferguson <neale@sinenomine.net>
18266
18267         * mini-s390.c (mono_arch_get_inst_for_method): Add memory_barrier support.
18268
18269 2005-12-29 Neale Ferguson <neale@sinenomine.net>
18270
18271         * inssel-s390.brg: Correct register assignment; Rework L[ADD|SUB]_OVF[_UN] for s390.
18272         
18273         * cpu-s390.md: Fix lengths of a couple of long instructions; Add memory_barrier.
18274
18275         * mini-s390.c: Fix long add/sub overflow instructions; Fix displacement handling in
18276         instrument_prolog; Add memory_barrier instruction.
18277
18278 2005-12-26  Zoltan Varga  <vargaz@gmail.com>
18279
18280         * exceptions-x86.c mini-x86.h: Fix solaris/x86 exception handling.
18281
18282 2005-12-23  Zoltan Varga  <vargaz@gmail.com>
18283
18284         * tramp-ia64.c (mono_arch_get_unbox_trampoline): Flush icache.
18285
18286         * aliasing.c inssel.brg: Fix warnings.
18287
18288         * inssel-ia64.brg (OP_MEMSET): Fix an optimization which previously
18289         could skip initialization of some parts of memory.
18290
18291         * mini.c mini-ia64.c: Fix warnings.
18292
18293         * inssel-sparc.brg: Add an implementation of lneg which actually works.
18294
18295 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
18296
18297         * aliasing.c (mono_build_aliasing_information): Add a workaround for
18298         a crash seen on sparc.
18299
18300         * mini-sparc.c: Add implementation of Thread.MemoryBarrier.
18301         
18302         * cpu-sparc.md: Add memory_barrier opcode. Remove unused opcodes.
18303
18304 2005-12-21 Neale Ferguson <neale@sinenomine.net>
18305
18306         * mini-ops.h: Add s390_backchain instruction
18307
18308         * inssel-s390.brg: Use backchaining instruction for LOADARG/STKARG operations.
18309
18310         * cpu-s390.md: Add s390_backchain instruction
18311
18312         * mini-s390.c: Significant ABI changes
18313
18314         * mini-s390.h: Cater for zero length structures
18315
18316 2005-12-20 Neale Ferguson <neale@sinenomine.net>
18317
18318         * mini-s390.c: ABI fixes
18319
18320         * inssel-s390.brg: Remove debug statements
18321
18322         * cpu-s390.md: Fix length of ATOMIC_xx operations
18323
18324 2005-12-19  Zoltan Varga  <vargaz@gmail.com>
18325
18326         * basic-float.cs: Add float<->long conversion tests.
18327
18328 2005-12-16 Neale Ferguson <neale@sinenomine.net>
18329
18330         * mini-s390.c: Fix LOCALLOC processing.
18331
18332         * tramp-s390.c (s390_magic_trampoline): Fix base calculation.
18333
18334 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
18335
18336         * iltests.il: Add tests for some opcodes not covered by the other
18337         tests.
18338
18339 2005-12-15 Neale Ferguson <neale@sinenomine.net>
18340
18341         * mini-s390.c: Fix ADDCC/SBB bug revealed by test_0_ulong_regress; Correct 
18342         register loading for Tail processing; Correct trace output.
18343
18344         * inssel-s390.brg: Reimplement LSUB_OVF due to s390 implementation of signed math.
18345
18346         * cpu-s390.md: Correct size of jmp instruction. 
18347
18348 2005-12-13 Neale Ferguson <neale@sinenomine.net>
18349
18350         * mini-s390.c (mono_arch_emit_prolog): Remove some debugging bits.
18351
18352 2005-12-13 Neale Ferguson <neale@sinenomine.net>
18353
18354         * inssel-s390.brg tramp-s390.c cpu-s390.md mini-s390.c mini-s390.h:
18355           Bring s390 up to current level.
18356
18357 2005-12-12  Zltan Varga  <vargaz@gmail.com>
18358
18359         * generics.2.cs: Disable the newly added tests as they do not work yet.
18360         
18361         * generics.2.cs: Add valuetype tests.
18362
18363 2005-12-09  Zoltan Varga  <vargaz@gmail.com>
18364
18365         * basic-long.cs: Add i4->u8 test.
18366
18367         * objects.cs: Add tests for JIT intrinsic.
18368
18369         * mini.c (mini_get_inst_for_method): Resurrect the array Rank/Length
18370         optimizations lost by a mistake.
18371
18372 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
18373
18374         * basic-long.cs: Remove a test moved to objects.cs.
18375
18376         * arrays.cs: Add more array tests.
18377
18378 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
18379
18380         * arrays.cs: Add new tests for multi-dimensional arrays.
18381
18382 2005-12-06  Raja R Harinath  <rharinath@novell.com>
18383
18384         * Makefile.am (test_sources2): Add generics.2.cs.
18385         (EXTRA_DIST): Add test_sources2.
18386
18387 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
18388
18389         Support for boxing and unboxing nullable types as well as the
18390         isinst operation on nullables, per the CLI ammendment.
18391
18392         * inssel.brg (CEE_ISINST): Special case for nullable
18393
18394         * mini.c (handle_unbox_nullable): new method
18395         (handle_box): Special case for nullable types
18396         (mono_method_to_ir): Call handle_unbox_nullable in correct
18397         places.
18398
18399         * generics.2.cs: New test suite
18400
18401         * Makefile.am: Support for regression tests with generics.
18402
18403 2005-12-03  Zoltan Varga  <vargaz@gmail.com>
18404
18405         * mini-amd64.c (emit_load_volatile_arguments): Add loading of arguments
18406         allocated to registers. Fixes #76800.
18407
18408 Thu Dec 1 12:59:40 EST 2005 Paolo Molaro <lupus@ximian.com>
18409
18410         * mini-ppc.c, inssel-ppc.brg: fix ABI issue (pinvoke3.cs).
18411
18412 2005-11-30  Zoltan Varga  <vargaz@gmail.com>
18413
18414         * exceptions.cs: Disable test_0_long_cast () test, since it fails on a lot 
18415         of platforms.
18416
18417 2005-11-29  Zoltan Varga  <vargaz@gmail.com>
18418
18419         * objects.cs basic-calls.cs: Move a test depending on valuetypes to
18420         objects.cs.
18421
18422         * inssel-long32.brg (CEE_CONV_I8): Remove unused labels.
18423         
18424         * inssel-long32.brg (CEE_CONV_I8): Convert this to a branchless version.
18425 Tue Nov 29 05:41:34 EST 2005 Paolo Molaro <lupus@ximian.com>
18426
18427         * mini-ppc.c, cpu-g4.md: ensure a fp register is converted to
18428         single precision before storing to a single precision location.
18429
18430 2005-11-28  Raja R Harinath  <rharinath@novell.com>
18431
18432         * Makefile.am (ILASM): Use profile-dependent location of ilasm.
18433
18434 2005-11-27  Zoltan Varga  <vargaz@gmail.com>
18435
18436         * basic-long.cs basic-calls.cs objects.cs: Move some tests to the
18437         correct files.
18438
18439         * basic.cs: Remove test_0_byte_compares test which was moved to
18440         objects.cs a long time ago.
18441
18442 2005-11-22  Massimiliano Mantione  <massi@ximian.com>
18443
18444         * aliasing.c: Fixed aliasing issue on 64 bit archs.
18445
18446 2005-11-20  Zoltan Varga  <vargaz@gmail.com>
18447
18448         * mini-ia64.c exceptions-ia64.c: Simplify the way filters/finally
18449         handlers are called.
18450
18451         * mini-ia64.c (mono_arch_emit_exceptions): Optimize size of exception
18452         throwing code.
18453
18454          * mini-ia64.c: Add support for the throw->branch exception 
18455         optimization.   
18456
18457         * driver.c (DEFAULT_OPTIMIZATIONS): Add MONO_OPT_EXCEPTION.
18458
18459 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
18460
18461         * mini.c: Enabled "fastpath" deadce :-)
18462         
18463 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
18464
18465         * mini.c: Added "fastpath" deadce (deadce without SSA), and a simple
18466         alias analysis pass to support it.
18467         * mini.h: Likewise.
18468         * ssa.c: Likewise.
18469         * liveness.c: Likewise (liveness computation can use aliasing
18470         information to be more accurate).
18471         * driver.c: Added an "ssa" option go tell the JIT to use SSA, and
18472         moreover made so that "--compile-all" uses the given optimization
18473         flags and not the default ones.
18474         * aliasing.c: Alias analysis (new file).
18475         * aliasing.h: Likewise.
18476         * Makefile.am: added "aliasing.c" and "aliasing.h".
18477         
18478 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
18479
18480         * mini-ops.h: Add missing OP_I opcodes so it is in synch with the
18481         OP_L opcodes.
18482
18483 2005-11-13  Zoltan Varga  <vargaz@gmail.com>
18484
18485         * mini-exceptions.c (mono_handle_exception_internal): Remove the 
18486         fp >= end_of_stack exit condition, as it is not needed, and it might
18487         become true for fp eliminated frames.
18488
18489 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
18490
18491         * mini-x86.c (mono_arch_emit_epilog): Use G_STRUCT_OFFSET instead of hard
18492         coded offsets.
18493
18494 Tue Nov 8 11:28:20 GMT 2005 Paolo Molaro <lupus@ximian.com>
18495
18496         * mini-arm.c: fixed alignment of doubles/longs to match
18497         the C ABI (bug #76635).
18498
18499 Mon Nov 7 16:13:21 CET 2005 Paolo Molaro <lupus@ximian.com>
18500
18501         * aot.c: fix compilation with --enable-minimal=aot.
18502
18503 Fri Nov 4 12:34:15 GMT 2005 Paolo Molaro <lupus@ximian.com>
18504
18505         * mini-arm.c: fixed compatibility with the new
18506         floating point emulator package for compares.
18507
18508 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com?
18509
18510         * mini.c : reverted sig->pinvoke changes (r51396-51397).
18511
18512 2005-11-01  Zoltan Varga  <vargaz@freemail.hu>
18513
18514         * mini-exceptions.c (print_stack_frame): Output to stderr.
18515         (mono_handle_native_sigsegv): Ditto.
18516
18517 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
18518
18519         * mini-amd64.c (mono_arch_output_basic_block): Remove unused
18520         OP_LCONV_TO_OVF_I implementation.
18521
18522         * mini-amd64.c: Add support for the throw->branch exception 
18523         optimization.
18524
18525         * branch-opts.c (mono_branch_optimize_exception_target): Allow the case
18526         when the catch clause catches a more general exception, i.e. Object.
18527
18528 2005-10-30  Zoltan Varga  <vargaz@gmail.com>
18529
18530         * cpu-ia64.md: Remove unused opcodes.
18531
18532         * mini.c (GET_CONTEXT): Simplify this somewhat by removing arch
18533         specific defines for architectures defining USE_SIGACTION.
18534
18535         * mini-ia64.c: Fix some warnings.
18536
18537         * exceptions-ia64.c (mono_arch_ip_from_context): Fix this, the previous
18538         version seemed to skip a frame.
18539
18540 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
18541
18542         * mini.c: Clean up the usage of sig->pinvoke flag. Now
18543         only calls which are made to native code use this flag.
18544
18545 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
18546
18547         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for
18548         varargs methods as well.
18549         
18550         * mini-amd64.c exceptions-amd64.c: Allow fp elimination in methods
18551         which have save_lmf set. Reorganize methods prologs a bit.
18552
18553         * mini-amd64.c (mono_arch_compute_omit_fp): Move the check for the
18554         debugger to the proper place.
18555
18556 2005-10-29  Martin Baulig  <martin@ximian.com>
18557
18558         * mini-amd64.c (debug_omit_fp): Temporarily disable fp elimination
18559         when running inside the debugger until the debugger has support
18560         for it.
18561
18562 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
18563
18564         * mini.h: Fix a warning.
18565
18566 2005-10-24  Miguel de Icaza  <miguel@novell.com>
18567
18568         * mini.c (mono_pmip): Just a wrapper for get_method_from_ip which
18569         we expose publicly, this returns the string.
18570
18571 2005-10-22  Zoltan Varga  <vargaz@freemail.hu>
18572
18573         * exceptions-amd64.c (mono_arch_find_jit_info): Fix some corner cases
18574         with fp elimination.
18575
18576 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
18577
18578         * mini-exceptions.c (mono_handle_native_sigsegv): Try to print a
18579         native stacktrace using the glibc 'backtrace' function if available.
18580
18581 2005-10-20  Zoltan Varga  <vargaz@gmail.com>
18582
18583         * mini.h (MonoDebugOptions): Remove 'abort_on_sigsegv' option.
18584
18585         * mini-exceptions.c (mono_handle_native_sigsegv): New function to 
18586         handle SIGSEGVs received while in native code.
18587
18588         * mini.c (sigsegv_signal_handler): If the SIGSEGV happened in native
18589         code, call mono_handle_native_sigsegv which will abort the runtime
18590         after printing some diagnostics, instead of converting it into a
18591         confusing NullReferenceException.
18592
18593 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
18594
18595         * cpu-pentium.md: Remove unused opcodes.
18596
18597 2005-10-18  Zoltan Varga  <vargaz@freemail.hu>
18598
18599         * mini-amd64.h (MonoLMF): Add rsp field.
18600
18601         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Save the sp reg into
18602         the lmf too.
18603
18604 2005-10-17  Zoltan Varga  <vargaz@gmail.com>
18605
18606         * mini-codegen.c (get_register_spilling): Fix some warnings.
18607
18608 2005-10-16  Zoltan Varga  <vargaz@freemail.hu>
18609
18610         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Add support for fp
18611         elimination during exception handling. Enable fp elimination by
18612         default.
18613
18614         * mini-amd64.h mini-amd64.c: Add preliminary support for frame pointer
18615         elimination.
18616
18617 2005-10-16  Martin Baulig  <martin@ximian.com>
18618
18619         * mini-exceptions.c
18620         (mono_debugger_run_finally): New public method for the debugger.
18621
18622 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
18623
18624         * debug-mini.c (mono_debug_init_method): Fix warning.
18625
18626         * mini.h branch-opts.c (mono_branch_optimize_exception_target): Make
18627         the 'exname' parameter const to fix some warnings.
18628
18629 2005-10-09  Zoltan Varga  <vargaz@freemail.hu>
18630
18631         * mini-exceptions.c (mono_handle_exception_internal): Fix another bug
18632         introduced by the previous patch.
18633
18634 2005-10-08  Zoltan Varga  <vargaz@gmail.com>
18635
18636         * basic-float.cs: Add test for precision of float arithmetic.
18637
18638         * mini-ia64.c (mono_arch_output_basic_block): Convert to/from doubles
18639         when loading/storing single values from/to memory.
18640
18641         * mini.c (mono_jit_compile_method_with_opt): Create the function
18642         pointers in the correct domain.
18643
18644 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
18645
18646         * mini-exceptions.c (mono_handle_exception_internal): Fix bug 
18647         introduced by previous patch.
18648         
18649         * mini-exceptions.c (mono_handle_exception_internal): Handle the case
18650         when out_filter_idx is NULL.
18651
18652         * mini-exceptions.c: Don't run filter clauses twice during exception
18653         handling. Fixes #75755.
18654
18655 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
18656
18657         * aot.c: Add support for ldflda wrappers.
18658
18659         * mini.c (mono_method_to_ir): Use ldflda wrappers for CEE_LDFLDA. Fixes
18660         #75902.
18661
18662 Tue Oct 4 20:23:25 CEST 2005 Paolo Molaro <lupus@ximian.com>
18663
18664         * mini.c, mini.h: do not consider exception handlers blocks when
18665         setting up interface variables.
18666
18667 2005-10-04  Zoltan Varga  <vargaz@freemail.hu>
18668
18669         * aot.c (emit_section_change): Fix emitting of sections on win32. Fixes #76322.
18670
18671 2005-10-03  Zoltan Varga  <vargaz@gmail.com>
18672
18673         * liveness.c (mono_analyze_liveness): Revert parts of r51051 since it
18674         causes a regression.
18675
18676         * mini.c (mini_thread_cleanup): Fix reading of freed memory.
18677
18678 2005-10-02  Zoltan Varga  <vargaz@freemail.hu>
18679
18680         * mini.h (OP_PCONST): Move the definition of OP_PCONST into the rest
18681         of the OP_P definitions.
18682
18683         * TODO: Add a proposal for dealing with the CEE/OP mess.
18684
18685         * mini-amd64.c (mono_arch_output_basic_block): Merge mul_imm 
18686         optimizations from the x86 port.
18687
18688         * cpu-amd64.md: Ditto.
18689
18690         * basic.cs basic-long.cs: Add tests.
18691
18692 Fri Sep 30 20:07:20 CEST 2005 Paolo Molaro <lupus@ximian.com>
18693
18694         * Makefile.am, driver.c, mini-x86.c, mini.c, mini.h, branch-opts.c:
18695         Patrik Torstensson's implementation of my exception-handling
18696         optimization idea, when the exception object is not used
18697         (bug #62150).
18698
18699 Fri Sep 30 19:10:29 CEST 2005 Paolo Molaro <lupus@ximian.com>
18700
18701         * mini-x86.c, cpu-pentium.md: Patrik Torstensson's port
18702         of the mul_imm optimizations from the old jit.
18703
18704 Fri Sep 30 11:37:51 EDT 2005 Paolo Molaro <lupus@ximian.com>
18705
18706         * mini.c, liveness.c: patch by Patrik Torstensson and
18707         Zoltan Varga to improve performance in methods with
18708         exception clauses.
18709
18710 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
18711
18712         * driver.c: Remove 'Globalization' entry from --version.
18713
18714 2005-09-28  Zoltan Varga  <vargaz@gmail.com>
18715
18716         * mini.c (mono_jit_compile_method_inner): Do not load AOT code when
18717         there is a profiler interested in JIT events.
18718
18719         * aot.c: Load profile files produced by the AOT profiling module, and
18720         reorder methods based on the profiling info. Add a 'method_order' table
18721         to the AOT file to make mono_aot_find_jit_info work with the reordered
18722         methods.
18723
18724         * mini.h: Bump AOT file version info.
18725
18726 Wed Sep 28 17:12:48 CEST 2005 Paolo Molaro <lupus@ximian.com>
18727
18728         * mini-arm.h: work around what looks like a gcc bug when optimizations
18729         are enabled.
18730
18731 2005-09-28  Raja R Harinath  <rharinath@novell.com>
18732
18733         * Makefile.am (AM_CFLAGS): Don't use += to append inside
18734         conditionals.  Use ...
18735         (PLATFORM_CFLAGS, ARCH_CFLAGS): ... these.
18736
18737 2005-09-27  Zoltan Varga  <vargaz@freemail.hu>
18738
18739         * mini-amd64.c (mono_arch_call_opcode): Use mono_class_value_size ()
18740         to determine the amount of memory to copy when passing valuetypes.
18741
18742         * inssel-amd64.brg: Remove PUSH(LDIND4) rules since they convert an
18743         4 byte load into a 8 byte load. Fix aligning of size in OP_OUTARG_VT.
18744
18745 2005-09-27  Zoltan Varga  <vargaz@gmail.com>
18746
18747         * mini.h mini.c aot.c: Add infrastructure to collect pagefault 
18748         information about aot.
18749
18750 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
18751
18752         * *.c: Replace the use of {Enter,Leave}CriticalSection with
18753         macros. This will allow a deadlock debugger to easily be plugged
18754         in.
18755
18756 Tue Sep 27 09:32:11 EDT 2005 Paolo Molaro <lupus@ximian.com>
18757
18758         * mini-ppc.c, cpu-g4.md: added memory barrier instruction.
18759
18760 2005-09-27  Raja R Harinath  <rharinath@novell.com>
18761
18762         * Makefile.am (AM_CFLAGS): Rename from INCLUDES.
18763         (AM_CFLAGS) [PLATFORM_WIN32): Append to it, don't set it.
18764         (AM_CFLAGS) [ARM]: Add arch/arm directory from the build tree.
18765         ($(arch_built)) [CROSS_COMPILING]: Error out.
18766
18767 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
18768
18769         * aot.c: Add support for the no_special_static flag for classes.
18770
18771 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
18772
18773         * Reapply reverted patches.
18774
18775         * *: Revert r50174 as well.
18776
18777         * mini-amd64.c cpu-amd64.md inssel-amd64.brg: Revert r50170 as well.
18778
18779 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
18780
18781         * mini-amd64.c: Revert r50342 to see if this fixed buildbot.
18782
18783 2005-09-23  Miguel de Icaza  <miguel@novell.com>
18784
18785         * mini.c (SIG_HANDLER_SIGNATURE): Only dereference info if it is
18786         part of the SIG_HANDLER_SIGNATURE.  
18787
18788 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
18789
18790         * mini.h mini.c: Add a new MONO_DEBUG option to collect metadata pagefault
18791         statistics.
18792
18793         * mini-x86.c (mono_arch_call_opcode): Fix vararg calling convention 
18794         introduced by previous patch.
18795
18796 2005-09-21  Zoltan Varga  <vargaz@gmail.com>
18797
18798         * tramp-x86.c (mono_arch_create_trampoline_code): Restore caller
18799         saved registers too.
18800
18801         * mini-x86.c (mono_arch_allocate_vars): Rewrite this so it works based 
18802         upon the information returned by get_call_info ().
18803         
18804         * mini-x86.c (add_float): Fix stack size calculation.
18805         (mono_arch_call_opcode): Rewrite this so it works based up the
18806         information returned by get_call_info ().
18807         (mono_arch_get_this_vret_args): Ditto.
18808
18809 2005-09-21  Zoltan Varga  <vargaz@freemail.hu>
18810
18811         * mini-amd64.c (mono_arch_emit_this_vret_args): Use the information
18812         in cinfo to determine the registers which need to be used.
18813
18814 2005-09-20  Miguel de Icaza  <miguel@novell.com>
18815
18816         * driver.c (mono_main): Add --server and --desktop flags. 
18817
18818 2005-09-16  Zoltan Varga  <vargaz@gmail.com>
18819
18820         * mini-ia64.h: Make register masks 64 bit. Don't treat argument
18821         registers as global registers.
18822
18823         * inssel-ia64.brg (stmt): Remove OP_OUTARG_REG () rules which are no 
18824         longer needed with the new register allocator.
18825
18826         * mini-ia64.c: Use OP_MOVE instead of OP_SETREG for reg-reg moves.
18827
18828         * cpu-ia64.md: Remove unused opcodes.
18829         
18830         * regalloc.c mini-codegen.c: Make register masks 64 bit on ia64.
18831         
18832 2005-09-16  Zoltan Varga  <vargaz@freemail.hu>
18833
18834         * cpu-amd64.md: Remove unused opcodes.
18835
18836         * inssel-amd64.brg: Remove OP_OUTARG_REG () rules which are no longer
18837         needed with the new register allocator.
18838
18839         * inssel-amd64.brg mini-amd64.c: Use OP_MOVE instead of OP_SETREG for
18840         reg-reg moves.
18841
18842 2005-09-16  Raja R Harinath  <rharinath@novell.com>
18843
18844         * Makefile.am (check-local): Don't invoke semdel-wrapper.
18845
18846 2005-09-16  Martin Baulig  <martin@ximian.com>
18847
18848         * exceptions-amd64.c
18849         (throw_exception): Don't call mono_debugger_throw_exception() if
18850         we're a rethrow - see the FIXME in the code.
18851
18852 2005-09-15  Geoff Norton  <gnorton@customerdna.com>
18853
18854         * mini.c (mono_init_exceptions): This only works on some architectures.
18855         
18856 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
18857
18858         * mini.c (mono_method_to_ir): Add OP_LMUL imm -> OP_LMUL_IMM conversion
18859         on ia64.
18860
18861         * inssel-long.brg mini-ia64.c: Add OP_LMUL_IMM rules.
18862
18863         * mini-ia64.h mini-ia64.c: Remove the altstack support code which is
18864         now in mini-exceptions.c.
18865
18866 2005-09-15  Zoltan Varga  <vargaz@freemail.hu>
18867
18868         * mini-amd64.h mini-am64.c: Remove the altstack support code which is
18869         now in mini-exceptions.c.
18870
18871 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
18872
18873         * exceptions-x86.c: Applied patch from Patrik Torstensson 
18874         <patrik.torstensson@gmail.com>. Add stack overflow handling support for win32.
18875
18876         * mini-exceptions.c mini-x86.c mini.c: Move the altstack setup/teardown
18877         code into mini-exceptions.c. Add some assertions to it.
18878
18879 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
18880
18881         * aot.c (emit_section_change): Applied patch from "The Software Team" 
18882         (<software@solmersa.com>). Fix as errors on windows.
18883
18884 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
18885
18886         * tramp-amd64.c (mono_arch_create_trampoline_code): Fix saving of
18887         method info into the LMF.
18888
18889 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
18890         
18891         * mini-ia64.c: Add proper unwind info for method epilogs.
18892
18893         * exceptions-ia64.c: Add some code to help debugging.
18894         
18895         * mini-ia64.c mini-ia64.h: Add sigaltstack support.
18896
18897         * mini-exceptions.c: Fix warning.
18898
18899 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
18900
18901         * mini.c: Really fix build.
18902
18903         * mini-x86.c mini-amd64.c: Fix build.
18904
18905 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
18906
18907         * mini-ia64.c inssel-ia64.brg: Add InterlockedExchange instrinsics.
18908
18909         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Implement
18910         some Interlocked methods as intrinsics.
18911
18912         * mini.c (mini_get_inst_for_method): Call arch_get_inst_for_method
18913         for Thread methods as well.
18914
18915         * mini-ops.h: Add OP_MEMORY_BARRIER opcode.
18916
18917         * inssel.brg: Add rule for OP_MEMORY_BARRIER.
18918
18919         * mini-ia64.c mini-x86.c mini-amd64.c 
18920         cpu-ia64.md cpu-pentium.md cpu-amd64.md: Add implementation of 
18921         OP_MEMORY_BARRIER.
18922         
18923         * mini.c (mono_init_exceptions): Fix build breakage.
18924
18925 2005-09-10  Zoltan Varga  <vargaz@gmail.com>
18926
18927         * mini-ia64.c exceptions-ia64.c tramp-ia64.c: Remove 'manual' emitting
18928         of instructions. Use the new ia64_unw_op macros for emitting unwind
18929         info.
18930
18931         * mini.c (mono_init_exceptions): Initialize exception handling
18932         related trampolines at startup.
18933
18934 Fri Sep 9 19:30:37 BST 2005 Paolo Molaro <lupus@ximian.com>
18935
18936         * cpu-arm.md, mini-arm.c: fix for dynamic code (Gtk# apps).
18937
18938 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
18939
18940         * mini.c: Handle type loading errors gracefully during compilation and
18941         throw the appropriate exception.
18942
18943 Fri Sep 9 09:49:14 CEST 2005 Paolo Molaro <lupus@ximian.com>
18944
18945         * ldscript.mono, Makefile.am: use anonymous versions in the ldscript
18946         for the mono binary.
18947
18948 2005-09-09  Martin Baulig  <martin@ximian.com>
18949
18950         * mini.c (mono_method_to_ir): Comment out the G_BREAKPOINT()'s for
18951         the release.
18952
18953 Thu Sep 8 14:53:45 BST 2005 Paolo Molaro <lupus@ximian.com>
18954
18955         * mini-arm.h: use emulation for conv.r.un for the release.
18956
18957 Thu Sep 8 11:28:45 BST 2005 Paolo Molaro <lupus@ximian.com>
18958
18959         * mini-arm.c, objects.cs: more fixes and tests for them.
18960
18961 Wed Sep 7 17:14:26 BST 2005 Paolo Molaro <lupus@ximian.com>
18962
18963         * mini-arm.c: align structures to at least 4 bytes to be able
18964         to keep our current optimized memcpy.
18965
18966 Tue Sep 6 22:51:08 BST 2005 Paolo Molaro <lupus@ximian.com>
18967
18968         * mini-arm.c, cpu-arm.md, inssel-arm.brg: bugfixes.
18969
18970 2005-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18971
18972         * mini.c: ignore SIGPIPE.
18973
18974 2005-09-04  Zoltan Varga  <vargaz@gmail.com>
18975
18976         * mini-ia64.c (mono_arch_lowering_pass): Convert 'and_imm 255' to zext1.
18977
18978         * mini-ia64.h mini-ia64.c: Add some minor optimizations.
18979
18980 2005-09-02  Zoltan Varga  <vargaz@gmail.com>
18981
18982         * mini.h: Add prototype for mono_allocate_stack_slots_full.
18983
18984 Thu Sep 1 21:05:26 BST 2005 Paolo Molaro <lupus@ximian.com>
18985
18986         * exceptions-arm.c, mini.c, mini-arm.c, mini-arm.h:
18987         exception handling support.
18988         * mini-arm.c, mini-arm.h: bigendian fixes (partially from a
18989         patch by Brian Koropoff <briank@marakicorp.com>).
18990
18991 Thu Sep 1 10:22:44 EDT 2005 Paolo Molaro <lupus@ximian.com>
18992
18993         * mini.c: revert another 'optimization' which breaks when
18994         items on the eval stack need to be saved at a basic block end
18995         (bug #75940).
18996
18997 Wed Aug 31 17:29:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
18998
18999         * jit-icalls.c: for arrays, ensure we always provide
19000         lower bounds.
19001
19002 2005-08-30  Zoltan Varga  <vargaz@gmail.com>
19003
19004         * mini.c (mono_allocate_stack_slots_full): Fix ia64 build.
19005         
19006         * mini.c (mini_get_inst_for_method): Special case Object:.ctor as well.
19007
19008 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
19009
19010         * mini-ia64.h mini-ia64.c: Implement frame pointer elimination. Keep
19011         arguments in their original register.
19012
19013 2005-08-28  Zoltan Varga  <vargaz@gmail.com>
19014
19015         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Optimize
19016         memset/memcpy.
19017
19018         * mini.c (mono_method_to_ir): Disable the MUL->MUL_IMM optimization
19019         when ssapre is enabled.
19020
19021         * inssel-long.brg: Fix bug in previous patch.
19022
19023         * mini-ia64.c mini-ia64.h mini.c inssel-long.brg: Optimize 
19024         multiplication by a constant.
19025
19026 2005-08-27  Zoltan Varga  <vargaz@gmail.com>
19027
19028         * mini-ia64.c (mono_arch_setup_jit_tls_data): Add support for intel
19029         icc.
19030
19031         * tramp-ia64.c (mono_arch_create_trampoline_code): Use st8.spill for
19032         saving registers.
19033
19034 Fri Aug 26 11:09:28 BST 2005 Paolo Molaro <lupus@ximian.com>
19035
19036         * inssel-arm.brg: apply changes tested by Brian Koropoff
19037         <briank@marakicorp.com>.
19038
19039 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
19040
19041         * mini-x86.c (mono_arch_emit_prolog): Fix calling of mono_jit_thread_attach () under windows.
19042         
19043 2005-08-24  Zoltan Varga  <vargaz@gmail.com>
19044
19045         * mini-codegen.c (mono_local_regalloc): Avoid allocating dreg and sreg1/2
19046         to the same register if dreg is just a base register.
19047         (print_ins): Improve printing of membase opcodes.
19048
19049         * inssel-x86.brg: Add optimized ldind(reg) rules.
19050
19051         * mini-x86.c cpu-pentium.md: Changes required to support the new rules.
19052
19053 Wed Aug 24 19:39:36 CEST 2005 Paolo Molaro <lupus@ximian.com>
19054
19055         * mini.c: when running under valgrind, set the stack bottom for
19056         the GC at the actual approximate stack for the app (fixes running
19057         mono with valgrind).
19058
19059 Tue Aug 23 21:38:50 CEST 2005 Paolo Molaro <lupus@ximian.com>
19060
19061         * mini.c: do no break at the first valuetype to init found
19062         (fixes bug #75791).
19063
19064 Tue Aug 23 16:53:21 BST 2005 Paolo Molaro <lupus@ximian.com>
19065
19066         * cpu-arm.md, mini-arm.c: more fixes and LMF support.
19067
19068 Tue Aug 23 15:11:44 CEST 2005 Paolo Molaro <lupus@ximian.com>
19069
19070         * cpu-g4.md: fixed instruction length exposed by the nemerle compiler.
19071
19072 2005-08-23  Zoltan Varga  <vargaz@freemail.hu>
19073
19074         * inssel-amd64.brg inssel-x86.brg: Fix the fcall rules.
19075
19076 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
19077
19078         * inssel-x86.brg: Fix assert in patch_delegate_trampoline.
19079
19080         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Add some debug
19081         code.
19082
19083         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Add some debug
19084         code.
19085
19086         * mini.c (optimize_branches): Don't quit after 1000 iterations on large
19087         methods.
19088
19089 Mon Aug 22 19:16:29 BST 2005 Paolo Molaro <lupus@ximian.com>
19090
19091         * tramp-arm.c: allocate less memory for the trampoline and fix typo.
19092
19093 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
19094
19095         * mini.c (mono_method_to_ir): Remove instructions inserted after a branch
19096         in the tail recursion optimization.
19097
19098         * mini.h helpers.c (mono_disassemble_code): Emit starts of basic blocks as 
19099         debug info into the assembly file.
19100
19101         * iltests.il: Add test for filter regions.
19102
19103         * mini.c (mono_method_to_ir): Fix handling of nested FILTER clauses. Fix
19104         initial stack of filter regions. Fixes #75755.
19105
19106 Mon Aug 22 17:49:16 BST 2005 Paolo Molaro <lupus@ximian.com>
19107
19108         * mini-arm.c, cpu-arm.c: fixes and support for methods with bigger
19109         stack requirements.
19110
19111 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
19112
19113         * mini.c (mono_create_delegate_trampoline): Fix memory leak. Put back
19114         the check for an already compiled method on non-ia64 platforms.
19115         (mono_create_jump_trampoline): Store the MonoJitInfo structure into the
19116         proper domain.
19117
19118         * mini-x86.h tramp-x86.c: Add support for delegate trampolines.
19119
19120         * inssel-x86.brg: Add some optimized call rules.
19121
19122 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
19123
19124         * mini.c (mono_create_delegate_trampoline): Do not return an already compiled
19125         method here.
19126
19127         * mini.h mini-trampolines.c: Pass the trampoline argument to 
19128         mono_arch_patch_delegate_trampoline.
19129
19130         * mini-ia64.h mini-ia64.c tramp-ia64.c: Add support for delegate trampolines.
19131
19132         * mini-trampolines.c: Fix build.
19133
19134         * mini-amd64.h: Add delegate trampolines.
19135
19136         * mini.h mini.c mini-trampolines.c tramp-amd64.c: Add delegate trampolines.
19137
19138         * inssel-amd64.brg: Add optimized call rules.
19139         
19140         * mini-ia64.c tramp-ia64.c: Improve instruction scheduling.
19141
19142         * inssel-ia64.brg: Add optimized ldind(reg) rules.
19143
19144 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
19145
19146         * mini.c (mono_create_class_init_trampoline): Fix bug caused by last
19147         change.
19148
19149         * mini-ia64.c: Remove LMF fixmes.
19150
19151         * mini-ia64.h: Remove most fields from LMF.
19152
19153         * inssel-ia64.brg (stmt): Fix unaligned access errors.
19154
19155         * mini-trampolines.c: Add support for IA64 function descriptors.
19156
19157         * mini.h mini.c jit-icalls.c exceptions-ia64.cdriver.c: Add support
19158         for IA64 function descriptors.
19159
19160 Sat Aug 20 16:51:44 BST 2005 Paolo Molaro <lupus@ximian.com>
19161
19162         * tramp-arm.c: patch the vtable for virtual calls. Added
19163         support code to register/unregister the LMF.
19164         * mini-arm.c, mini-arm.h: warning fixes, fixes, speedups,
19165         more LMF work.
19166
19167 2005-08-19  Dick Porter  <dick@ximian.com>
19168
19169         * mini.c: Use a gsize to store the thread ID, so it can hold a 64
19170         bit value if needed.
19171
19172 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
19173
19174         * mini.c (mini_get_method): Move handling of wrapper data here.
19175
19176         * mini.c (mono_method_to_ir): Add support for dynamic methods.
19177
19178         * mini.c (mono_method_to_ir): Convert nonvirtual calls to abstract methods into
19179         virtual.
19180
19181         * mini.c (mono_method_to_ir): Emit IR for CEE_NOP as well, so 
19182         bblock->code does not remain empty.
19183
19184 2005-08-17  Zoltan Varga  <vargaz@freemail.hu>
19185
19186         * arrays.cs: Add regression test for #75832.
19187
19188         * inssel-amd64.brg cpu-amd64.md mini-amd64.c: Fix LDELEMA optimization
19189         rules. Fixes #75832.
19190
19191         * mini-ia64.c tramp-ia64.c exceptions-ia64.c: Implement improved
19192         instruction scheduling.
19193
19194 2005-08-12  Zoltan Varga  <vargaz@freemail.hu>
19195
19196         * mini-exceptions.c (ves_icall_get_frame_info): Fix IA64 build.
19197
19198 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
19199
19200         * mini-exceptions.c mini-x86.h: Move VC stuff into macros in mini-x86.h.
19201
19202         * mini-codegen.c: Fix VC build.
19203
19204         * cpu-pentium.md: Increase length of atomic_exhange_i4.
19205
19206 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19207
19208         * mini.h: fix signature for mono_register_opcode_emulation.
19209
19210 2005-08-09  Zoltan Varga  <vargaz@freemail.hu>
19211
19212         * mini.c: Get rid of most of the helper_sig_... constants using
19213         mono_create_icall_signature ().
19214
19215 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
19216
19217         * jit-icalls.c (helper_ldstr): New helper function.
19218
19219         * mini.c (get_basic_blocks): Set out_of_line for bblocks containing a throw.
19220
19221         * mini.c (mono_method_to_ir): If an LDSTR instruction is in a bblock with a
19222         throw, load the string using a helper call instead of creating a string object.
19223
19224         * aot.c: Update after LDSTR changes.
19225
19226         * mini.h: Bump AOT file version.
19227         
19228         * aot.c: Save class size info into the AOT file. Print more statistics during
19229         compilation.
19230
19231         * mini.h: Bump AOT file version.
19232
19233         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
19234         ordering of disasm cases. Fixes #74957.
19235
19236 Thu Aug 4 19:47:24 BST 2005 Paolo Molaro <lupus@ximian.com>
19237
19238         * mini-ops.h, mini-arch.h, inssel.brg, mini.c, mini.h,
19239         jit-icalls.c, mini-codegen.c, Makefile.am: changes in
19240         the generic code needed for the ARM port.
19241
19242 Thu Aug 4 19:42:54 BST 2005 Paolo Molaro <lupus@ximian.com>
19243
19244         * exceptions-arm.c, tramp-arm.c, mini-arm.c, mini-arm.h, cpu-arm.md,
19245         inssel-arm.brg: more ARM features and fixes.
19246
19247 Mon Aug 1 18:37:38 BST 2005 Paolo Molaro <lupus@ximian.com>
19248
19249         * tramp-arm.c, mini-arm.c, cpu-arm.md, inssel-arm.brg: more
19250         ARM port work in progress.
19251
19252 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
19253
19254         * mini-ia64.c (mono_arch_call_opcode): Ongoing IA64 work.
19255
19256         * mini-exceptions.c mini-ia64.h: Ongoing IA64 work.
19257
19258         * mini-ia64.c (ia64_emit_bundle): Ongoing IA64 work.
19259
19260         * inssel.brg (mini_emit_memset): Add support for unaligned access.
19261
19262         * *-ia64.*: Ongoing IA64 work.
19263         
19264         * mini-ia64.c exceptions-ia64.c: Ongoing IA64 work.
19265
19266 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
19267
19268         * TODO: Remove out-of-data todo stuff.
19269
19270         * mini.h mini.c (mono_create_jit_trampoline_from_token): Remove some
19271         dead code.
19272
19273         * aot.c: Save/load MonoCachedClassInfo->has_nested_classes.
19274
19275         * mini.h: Bump corlib version.
19276
19277 2005-07-27  Martin Baulig  <martin@ximian.com>
19278
19279         * mini-codegen.c
19280         (create_copy_ins): Added `const unsigned char *ip' argument; set
19281         `copy->cil_code' from it.
19282
19283 2005-07-27  Martin Baulig  <martin@ximian.com>
19284
19285         * mini-exceptions.c (mono_handle_exception): Don't call
19286         mono_debugger_handle_exception() for filters.
19287
19288 2005-07-27  Zoltan Varga  <vargaz@freemail.hu>
19289
19290         * mini-trampolines.c (mono_aot_trampoline): Handle AppDomain:InvokeInDomain
19291         as well.
19292
19293 2005-07-26  Martin Baulig  <martin@ximian.com>
19294
19295         Committing a patch from Michal Moskal <michal.moskal@gmail.com>.
19296
19297         * mini.c (mono_method_to_ir): In `CEE_CALLI', only use
19298         helper_compile_generic_method() if the method is actually virtual
19299         and non-final.
19300
19301 2005-07-26  Martin Baulig  <martin@ximian.com>
19302
19303         * mini.c
19304         (trampoline_code): Renamed to `mono_trampoline_code' and made it
19305         public; this is now accessed directly by the debugger.
19306         (mono_generic_trampoline_code): Removed.
19307
19308         * debug-mini.c
19309         (mono_debug_init_method): Also add interncalls and wrappers.
19310
19311 2005-07-23  Zoltan Varga  <vargaz@freemail.hu>
19312
19313         * mini-ia64.c mini-ia64.h: Add support for tracing/profiling.
19314
19315 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
19316
19317         * aot.c (mono_aot_get_method_from_token): Fix a potential crash here.
19318
19319 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
19320
19321         * aot.c (load_patch_info): Fix handling of stfld_remote wrapper.
19322
19323 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
19324
19325         * mini-amd64.c (mono_arch_setup_jit_tls_data): Use the nice way of
19326         getting TLS offsets on AMD64 too.
19327
19328 2005-07-20  Kornel Pal <kornelpal@hotmail.com>
19329
19330         * driver.c: Detach console when executing IMAGE_SUBSYSTEM_WINDOWS_GUI on win32
19331
19332 Wed Jul 20 18:05:19 BST 2005 Paolo Molaro <lupus@ximian.com>
19333
19334         * exceptions-arm.c, mini-arm.c, tramp-arm.c, cpu-arm.md,
19335         inssel-arm.brg, mini-arm.h: ARM port work in progress.
19336
19337 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
19338
19339         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix build.
19340
19341         * mini.h mini.c mini-*.h tramp-*.c: Move more cross platform trampoline code
19342         to mini.c.
19343
19344         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Call 
19345         mono_sparc_is_virtual_call ().
19346         
19347         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix warning.
19348
19349         * tramp-sparc.c (mono_arch_create_trampoline_code): Fix order of
19350         trampoline parameters.
19351
19352         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix signature.
19353         
19354         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Rename this
19355         to mono_arch_get_vcall_slot_addr.
19356
19357         * Makefile.am tramp-sparc.c: Update the sparc port to use the generic
19358         trampoline code.
19359
19360         * *-sparc.*: Merge the mini-xp-regalloc branch for sparc.
19361
19362 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
19363
19364         * mini-ia64.h mini-ia64.c: Finish pinvoke support.
19365
19366 2005-07-19  Martin Baulig  <martin@ximian.com>
19367
19368         * exceptions-amd64.c (throw_exception): Call
19369         mono_debugger_throw_exception() here like we're doing it on i386.
19370
19371 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
19372
19373         * mini-ia64.c: Add optimized TLS access support.
19374
19375 2005-07-18  Zoltan Varga  <vargaz@freemail.hu>
19376
19377         * mini-exceptions.c: Ongoing IA64 work.
19378
19379         * mini-ia64.c inssel-long.brg: Ongoing IA64 work.
19380
19381         * mini.c: Use the default optimization set when embedding. Fixes
19382         #75194.
19383
19384 2005-07-11  Zoltan Varga  <vargaz@freemail.hu>
19385
19386         * tramp-amd64.c tramp-ia64.c Makefile.am: Move arch independent parts 
19387         of trampolines to a separate file.
19388
19389         * mini-trampolines.c: New file.
19390
19391         * mini.h tramp-x86.c: Move arch independent parts of trampolines to a 
19392         separate file.
19393         
19394         * tramp-x86.c: Reorganize the trampoline code to be similar to the 
19395         amd64/ia64 code.
19396
19397         * mini-codegen.c: Fix cygwin build.
19398
19399 2005-07-10  Zoltan Varga  <vargaz@freemail.hu>
19400
19401         * mini.c: Add some minor changes needed by the IA64 port.
19402
19403         * *-ia64.*: Ongoing IA64 work.
19404
19405 2005-07-09  Zoltan Varga  <vargaz@freemail.hu>
19406
19407         * tramp-amd64.c mini-amd64.c: Update after latest AOT changes. Split 
19408         trampolines into arch-independent and arch-dependent parts.
19409
19410         * mini-amd64.c (mono_arch_lowering_pass): Fix store_membase_imm -> store_membase_reg rule.
19411
19412 2005-07-08  Zoltan Varga  <vargaz@freemail.hu>
19413
19414         * cpu-amd64.md: Merge the xp-regalloc-branch for amd64.
19415
19416         * mini-ops.h mini-amd64.h mini-amd64.c inssel-amd64.brg Makefile.am: Merge
19417         the xp-regalloc-branch for amd64.
19418
19419         * mini-x86.h mini-x86.c cpu-pentium.md Makefile.am: Merge the
19420         xp-regalloc-branch for x86.
19421
19422 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
19423
19424         * inssel.brg (OP_THROW_OR_NULL): Allways rethrow the abort exception.
19425
19426 2005-07-06  Martin Baulig  <martin@ximian.com>
19427
19428         * mini.c
19429         (mono_jit_compile_method_inner): Call mono_get_inflated_method().
19430         (mono_jit_runtime_invoke): Likewise.
19431
19432 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
19433
19434         * aot.c (mono_compile_assembly): Allocate the GOT in the .bss segment
19435         on x86 too.
19436         
19437         * aot.c: Add new mono_aot_get_method_from_token () function to load AOT methods
19438         without loading their metadata. Reorganize the file format so exception handling+
19439         debug info is kept separate from normal method info. Create MonoJitInfo 
19440         structures for methods lazily.
19441
19442         * tramp-x86.c (x86_aot_trampoline): Use the new from_token method to avoid
19443         loading metadata.
19444         (x86_class_init_trampoline): Patch AOT class init trampolines too.
19445
19446         * mini.c (mini_init): Install the new mono_aot_find_jit_info hook.
19447
19448         * mini.c (mono_method_to_ir): Reduce the number of class init trampoline calls
19449         in AOT code.
19450
19451         * mini.h: Bump AOT file version.
19452
19453 2005-07-04  Zoltan Varga  <vargaz@freemail.hu>
19454
19455         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
19456
19457 2005-07-01  Raja R Harinath  <rharinath@novell.com>
19458
19459         * Makefile.am (check-local): Call semdel-wrapper.
19460
19461 2005-06-29  Zoltan Varga  <vargaz@freemail.hu>
19462
19463         * mini-x86.c: Revert the last change as it seems to break the build..
19464
19465 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
19466
19467         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
19468         
19469         * mini-x86.c (mono_arch_cpu_init): Fix setting of fp precision in the VC build.
19470
19471 2005-06-27  Ben Maurer  <bmaurer@ximian.com>
19472
19473         * mini.c (NEW_AOTCONST): make sure to call mono_get_got_var
19474         outside of the macro, so strange stuff doesn't happen with gcc4
19475         (NEW_AOTCONST_TOKEN): Likewise.
19476
19477 2005-06-28  Martin Baulig  <martin@ximian.com>
19478
19479         * mini.c (mini_class_is_system_array): New static method; use this
19480         instead of `klass->parent == mono_defaults.array_class' everywhere
19481         since this also works for the new generic array class.
19482
19483 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
19484
19485         * inssel.brg: Remove warnings.
19486
19487 2005-06-24  Zoltan Varga  <vargaz@freemail.hu>
19488
19489         * mini-ia64.c: Ongoing IA64 work.
19490
19491         * basic-float.cs: Add float->i1 conversion test.
19492
19493         * iltests.il: Add conv.u4 test.
19494
19495 2005-06-23  Zoltan Varga  <vargaz@freemail.hu>
19496
19497         * inssel-long.brg: Fix bug caused by last change.
19498
19499 2005-06-23  Geoff Norton  <gnorton@customerdna.com>
19500
19501         * mini-x86.h: Add __APPLE__ to the SC_* redefines with the other 
19502         BSDs.  Allows the x86 JIT to work on OSX86
19503
19504 2005-06-22  Zoltan Varga  <vargaz@freemail.hu>
19505
19506         * inssel-long.brg: Use OP_LSHR_UN_IMM instead of OP_SHR_UN_IMM in
19507         u4->i8 conversion.
19508
19509         * mini-ia64.c: Ongoing IA64 work.
19510
19511 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
19512
19513         * mini-ia64.c: Ongoing IA64 work.
19514
19515         * driver.c: Clean up jit_code_hash as well when using --regression.
19516
19517         * inssel-long.brg: Fix long->i4/u4 conversion rules.
19518
19519         * basic-long.cs: Add tests for long->u4 conversion.
19520
19521 2005-06-18  Ben Maurer  <bmaurer@ximian.com>
19522
19523         * mini.c: Take mono_get_domainvar out of macros. This makes sure
19524         that we do not depend on undefined C behavior: the order stuff
19525         gets evaluated within an expression. Fixes mono when compiled on
19526         GCC 4.
19527
19528 2005-06-18  Zoltan Varga  <vargaz@freemail.hu>
19529
19530         * *-ia64.*: Ongoing IA64 work.
19531
19532         * aot.c: Lower memory usage while loading AOT methods.
19533
19534         * tramp-x86.c: Avoid allocating+freeing MonoJitInfo structures.
19535
19536         * mini.h: Bump AOT file format version.
19537
19538 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
19539
19540         * mini.c (mono_method_to_ir): Allow STACK_PTR as input to SWITCH.
19541
19542 2005-06-16  Sebastien Pouliot  <sebastien@ximian.com>
19543
19544         * declsec.c: Fixed APTC to check for FullTrust on caller assembly (and
19545         not on callee assembly). Fixed some comments.
19546
19547 2005-06-16  Zoltan Varga  <vargaz@freemail.hu>
19548
19549         * aot.c (mono_compile_assembly): Mark the "methods" symbol as a function so
19550         it gets proper disassembly.
19551         (emit_method_info): Remove some dead code.
19552
19553         * mini.c (mini_method_compile): Allways allocate the GOT var in
19554         mono_method_to_ir for emulating opcodes.
19555
19556 2005-06-13  Zoltan Varga  <vargaz@freemail.hu>
19557
19558         * mini.c (mono_jit_free_method): Remove the method from the JitInfo table
19559         before freeing the code memory. Fixes #74990.
19560
19561         * objects.cs: Add regression test for #74992.
19562
19563         * liveness.c: Extend live ranges of arguments to the beginning of the
19564         method. Fixes #74992.
19565
19566         * exceptions-ia64.c mini-ia64.h: Modify ip during exception handling
19567         so it points into the faulting instruction.
19568
19569 2005-06-12  Zoltan Varga  <vargaz@freemail.hu>
19570
19571         * jit-icalls.c (mono_imul_ovf): Add exception handling.
19572
19573         * *-ia64.*: Ongoing IA64 work.
19574
19575         * mini.c (mini_init): Fix signature of mono_delegate_ctor.
19576
19577 2005-06-11  Zoltan Varga  <vargaz@freemail.hu>
19578
19579         * mini-ia64.h exceptions-ia64.c: Ongoing IA64 work.
19580
19581         * *-ia64.*: Ongoing IA64 work.
19582
19583 2005-06-10  Zoltan Varga  <vargaz@freemail.hu>
19584
19585         * basic-long.cs: Add tests for add/sub.ovf.
19586
19587         * basic.cs: Add tests for sub.ovf.
19588
19589         * *-ia64.*: Ongoing IA64 work.
19590
19591 2005-06-09  Zoltan Varga  <vargaz@freemail.hu>
19592
19593         * *-ia64.*: Ongoing IA64 work.
19594
19595         * basic.cs: Add conv.ovf.i4.un test.
19596
19597 2005-06-09  Massimiliano Mantione  <massi@ximian.com>
19598
19599         * mini.c: (remove_block_if_useless) Fixed bug 75061.
19600         
19601 2005-06-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19602
19603         * mini.c: no SIGUSR2 on windows. Remove it for PLATFORM_WIN32.
19604
19605 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
19606
19607         * *-ia64.*: Ongoing IA64 work.
19608
19609 2005-06-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19610
19611         * trace.[ch]:
19612         * mini.c: added the ability to toggle trace on/off using SIGUSR2.
19613
19614 2005-06-04  Zoltan Varga  <vargaz@freemail.hu>
19615
19616         * mini-ia64.c mini-ia64.h: Fix cleanup of memory stack.
19617
19618 2005-06-03  Zoltan Varga  <vargaz@freemail.hu>
19619
19620         * mini-amd64.c (emit_call): Fix yet another bug in the near call optimization.
19621
19622         * mini-amd64.c (amd64_patch): Add an assert to check that the destination
19623         of a call is callable by a near call.
19624
19625 2005-05-31  Zoltan Varga  <vargaz@freemail.hu>
19626
19627         * mini-ia64.c: Ongoing IA64 work.
19628
19629 2005-05-29  Zoltan Varga  <vargaz@freemail.hu>
19630
19631         * genmdesc.c: Make the generated array non-static.
19632
19633         * inssel-long.brg: Fix LSHR_IMM rule.
19634
19635         * *-ia64.*: Ongoing IA64 work.
19636
19637         * *-ia64.*: Ongoing IA64 work.
19638
19639 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
19640
19641         * *-ia64.*: Ongoing IA64 work.
19642
19643         * *-ia64.*: Ongoing IA64 work.
19644         
19645         * mini-ia64.c: Ongoing IA64 work.
19646
19647         * *-ia64.* jit-icalls.c mini-codegen.c: Ongoing IA64 work.
19648
19649 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
19650
19651         * objects.cs basic-calls.cs: Move some tests to objects.cs.
19652         
19653         * objects.cs basic-long.cs: Move some tests to objects.cs.
19654
19655 2005-05-26  Zoltan Varga  <vargaz@freemail.hu>
19656
19657         * *-ia64.*: Ongoing IA64 work.
19658
19659         * iltests.il: Add a new test.
19660
19661         * mini.c (mono_method_to_ir): Initialize valuetypes when created using
19662         newobj. Fixes #75042.
19663
19664 2005-05-22  Zoltan Varga  <vargaz@freemail.hu>
19665
19666         * *-ia64.*: Ongoing IA64 work.
19667         
19668         * *-ia64.*: Ongoing IA64 work.
19669         
19670         * *-ia64.*: Ongoing IA64 work.
19671
19672         * basic.cs objects.cs: Move tests accessing static variables as well.
19673
19674         * basic.cs objects.cs: Move test_0_pin_string to objects.cs.
19675
19676 2005-05-21  Zoltan Varga  <vargaz@freemail.hu>
19677
19678         * mini.c (SIG_HANDLER_SIGNATURE): Fix warning.
19679
19680         * driver.c: Always print failed tests.
19681
19682         * mini-codegen.c: Use cfg->frame_reg instead of a macro for the
19683         frame pointer.
19684
19685         * *ia64*: Ongoing IA64 work.
19686
19687 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
19688
19689         * basic.cs: Add tests for add.ovf. Fix warnings.
19690
19691 2005-05-18  Miguel de Icaza  <miguel@novell.com>
19692
19693         * driver.c (mono_main): Avoid crash if no argument is passed to
19694         --break;  Do not use g_error, but f_printf.   And fix all other
19695         ocurrences of the same crash.
19696
19697 2005-05-17  Zoltan Varga  <vargaz@freemail.hu>
19698
19699         * mini.h mini.c: Generalize the existing uses of the MONO_DEBUG env variable
19700         and add a new one: aborting when a SIGSEGV is raised while in unmanaged code.
19701         Fixes #74742.
19702
19703 2005-05-14  Zoltan Varga  <vargaz@freemail.hu>
19704
19705         * *-ia64.*: Add beginnings of IA64 backend.
19706
19707         * Makefile.am mini-arch.h mini-codegen.c: Add IA64 support.     
19708
19709 2005-05-13  Zoltan Varga  <vargaz@freemail.hu>
19710
19711         * inssel-long.brg: Add missing ulong->{i1, i2} checked conversions.
19712         Fixes #74925.
19713
19714         * basic-long.cs exceptions.cs: Add new tests. Fix some warnings.
19715
19716         * mini-amd64.c: Fix a warning.
19717
19718 2005-05-10  Zoltan Varga  <vargaz@freemail.hu>
19719
19720         * mini-amd64.c (mono_arch_output_basic_block): Fix stack space leakage
19721         in float_neg. Fixes #74897.
19722
19723         * mini-amd64.c (emit_call): Fix another near call bug.
19724
19725 2005-05-06  Sebastien Pouliot  <sebastien@ximian.com>
19726
19727         * declsec.c: Keep the appdomain information in the structure. Added a 
19728         missing "return FALSE" for Unmanaged if FullTrust is set (or else the
19729         value gets overwritten).
19730         * declsec.h: Set the default MonoArray for the the stack to 6. Added
19731         an MonoAppDomain member to MonoSecurityFrame.
19732         * mini-exceptions.c: Do not use a glist to keep GC allocated objects
19733         used in the stack walk. Now use a MonoArray which grow (double) when
19734         it gets full.
19735
19736 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
19737
19738         * mini.c: Re-enabled runtime cleanup, since running threads should
19739         now properly stop when exiting.
19740
19741 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
19742
19743         * mini-codegen.c: New file contaning the arch-independent local
19744         register allocator. Not used by any architectures yet.
19745
19746         * mini.h linear-scan.c: Merge some changes from the 
19747         mini-xp-local-regalloc branch.
19748
19749 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
19750
19751         * mini-amd64.c (emit_call): Fix calls to native functions when the
19752         runtime is compiled as a shared library. Fixes #74756.
19753
19754         * mini.c (mono_method_to_ir): Assert if ldsfld and friends are used
19755         on a literal field. Fixes #74751.
19756
19757 2005-04-25  Raja R Harinath  <rharinath@novell.com>
19758
19759         * Makefile.am (RUNTIME): Add MONO_CFG_DIR.
19760
19761 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
19762
19763         * objects.cs: Add missing null casting test.
19764
19765 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
19766
19767         * mini-exceptions.c (mono_find_jit_info): Fix native offset calculation
19768         in wrapper methods. Also rename 'address' variable to 'offset'.
19769
19770 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
19771
19772         * mini.c debug-mini.c aot.c tramp-x86.c driver.c: Fix some gcc 4.0
19773         warnings.
19774         
19775         * Makefile.am (MCS): Use -unsafe instead of --unsafe.
19776
19777         * aot.c: Applied patch from "The Software Team" <software@solmersa.com>. Make AOT compilation
19778         work on windows.
19779
19780 Mon Apr 18 16:20:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
19781
19782         * exceptions-ppc.c: update code to handle stack traces (fixes bug #74452).
19783
19784 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
19785
19786         * mini-x86.c (mono_emit_stack_alloc): Initialize the whole allocated area not
19787         just the last bytes.
19788
19789 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
19790
19791         * aot.c (mono_compile_assembly): Fix warning.
19792
19793         * mini-exceptions.c (ves_icall_get_frame_info): Fix bug introduced
19794         by the _MSC_VER stuff.
19795
19796 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
19797
19798         * inssel-long.brg: Fix #74588.
19799
19800         * cpu-amd64.md: Fix #74591.
19801
19802         * iltests.il: Add new regression tests.
19803
19804 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
19805
19806         * trace.c (mono_trace_enter_method): Print enums as an int, not as a
19807         valuetype.
19808
19809 2005-04-11  Zoltan Varga  <vargaz@freemail.hu>
19810
19811         * mini-x86.c (setup_stack): Unconditionally call pthread_attr_init ().
19812
19813         * exceptions-x86.c mini-x86.h mini-x86.c: Applied some freebsd patches 
19814         from Bill Middleton <flashdict@gmail.com>.
19815
19816 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
19817
19818         * arrays.cs: Add new regression test. Fix warnings.
19819
19820 2005-04-09  Zoltan Varga  <vargaz@freemail.hu>
19821
19822         * mini-amd64.c (mono_arch_output_basic_block): Fix stack alignment
19823         and leakage in CKFINITE.
19824
19825         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Change
19826         this to a null op since it is called on amd64 too.
19827
19828         * exceptions-amd64.c (get_throw_trampoline): Align stack.
19829
19830         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Remove
19831         body since this is not used on amd64.
19832         
19833         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Remove duplicate define.
19834
19835         * mini-amd64.c: Remove obsolete fixmes.
19836
19837         * mini.c (print_method_from_ip): Fix debugging support.
19838
19839 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
19840
19841         * ssapre.c: Fix a subtle bug about availability, and limit SSAPRE
19842         so that expressions that don't give much gain are not reduced.
19843         * ssapre.h: Likewise.
19844
19845 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
19846
19847         * exceptions-x86.c (mono_arch_find_jit_info): Remove last SC_EBP reference.
19848
19849         * mini-x86.c (mono_emit_stack_alloc): Fix localloc under windows.
19850
19851         * mini-x86.h exceptions-x86.c: Hopefully fix compilation on *BSD.
19852
19853 2005-04-01  Zoltan Varga  <vargaz@freemail.hu>
19854
19855         * mini-sparc.c mini-sparc.h: Add asserts when running with sigaltstack.
19856
19857         * exceptions-x86.c (mono_arch_monoctx_to_sigctx): Fix cygwin build.
19858
19859 2005-03-31  Zoltan Varga  <vargaz@freemail.hu>
19860
19861         * mini-x86.c: If sigaltstack support is enabled, perform win32 style
19862         stack touching.
19863
19864         * mini.h (mono_arch_sigctx_to_monoctx): New arch-specific function.
19865
19866         * mini.h (mono_arch_monoctx_to_sigctx): New arch-specific function.
19867
19868         * mini.c: sigaltstack support requires MONO_ARCH_USE_SIGACTION.
19869
19870         * mini-x86.h mini-x86.c exceptions-x86.c: Add support for 
19871         MONO_ARCH_USE_SIGACTION. Fixes #74252.
19872
19873         * mini-x86.h: Enable MONO_ARCH_USE_SIGACTION on linux.
19874
19875         * mini-x86.c: Fix up stack overflow handling.   
19876
19877         * exceptions.cs: Add new regression test.
19878
19879 2005-03-30  Zoltan Varga  <vargaz@freemail.hu>
19880
19881         * mini-x86.c (mono_arch_emit_prolog): Adjust stack after calls to
19882         mono_jit_thread_attach.
19883
19884         * mini.c (mono_method_to_ir): Verify called method is not abstract.
19885
19886 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
19887
19888         * mini.c (mono_method_to_ir): Applied Ben's patch from bug #61441 to
19889         avoid calling constructors using callvirt.
19890
19891         * inssel.brg: Fix #74073.
19892
19893 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
19894
19895         * aot.c, mini.h: Added mono-compiler.h header to allow/ease 
19896         compilation with non-GCC compilers.
19897         * mini-exceptions.c, mini-x86.c|h: Patches to make compilation of mono
19898         possible using VS.NET. Adapted from the work of J Lothian (for VC6).
19899
19900 Tue Mar 29 11:43:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
19901
19902         * inssel.brg, arrays.cs: fix long standing 64 bit issue in access to
19903         klass->interface_offsets (will likely fix bug#74073).
19904
19905 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
19906
19907         * mini-amd64.c (mono_arch_is_int_overflow): Fix rex handling.
19908
19909 2005-03-28  Zoltan Varga  <vargaz@freemail.hu>
19910
19911         * mini-amd64.c (mono_arch_output_basic_block): Fix order of parameters
19912         to amd64_div_reg_size ().
19913         
19914         * mini-amd64.c (mono_arch_emit_exceptions): Emit a near call here too.
19915
19916 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
19917
19918         * cpu-amd64.md (store_membase_reg): Fix length of storer8 opcodes.
19919
19920 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
19921
19922         * driver.c: Turn off automatic command line globbing under windows. Fixes #73763.
19923
19924 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
19925
19926         * mini.c (mono_method_to_ir): Remove debugging stuff left in by mistake.
19927         
19928         * mini.c (mono_precompile_assembly): Load and precompile referenced
19929         assemblies as well. Fixes #74015.
19930
19931 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
19932
19933         * cpu-amd64.md (sin): Fix up maximum lengths of some opcodes.
19934
19935 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
19936
19937         * declsec.c: Skip linkdemand checks for intra-corlib calls. This skips
19938         a lot of checks and (anyway) permissions cannot work until corlib is 
19939         loaded.
19940
19941 Wed Mar 23 14:29:49 CET 2005 Paolo Molaro <lupus@ximian.com>
19942
19943         * mini-ppc.c: fixed ABI issue on sysv/ppc.
19944
19945 Tue Mar 22 19:03:17 CET 2005 Paolo Molaro <lupus@ximian.com>
19946
19947         * tramp-ppc.c, exceptions-ppc.c: added missing icache flush
19948         calls (fixes bug#72824).
19949
19950 Tue Mar 22 16:28:48 CET 2005 Paolo Molaro <lupus@ximian.com>
19951
19952         * mini.c: fix tail recursion elimination (see test in bug#73936).
19953
19954 2005-03-21  Zoltan Varga  <vargaz@freemail.hu>
19955
19956         * mini-amd64.c (mono_arch_output_basic_block): Add inline versions of
19957         some fp functions in sse2 mode.
19958
19959 2005-03-20  Zoltan Varga  <vargaz@freemail.hu>
19960
19961         * mini-x86.c (emit_tls_get): Move tls handling into a separate helper function.
19962
19963 2005-03-19  Zoltan Varga  <vargaz@freemail.hu>
19964
19965         * mini.h mini.c: Add mono_get_jit_tls_key ().
19966
19967         * mini-x86.c: Enable fast TLS support on windows.
19968
19969 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
19970
19971         * declsec.c: Renamed aptc to allowpartiallytrustedcallers.
19972         * mini.c: Check for p/invoke method when generating code. If a
19973         p/invoke method, or it's class, isn't decorated with [Suppress
19974         UnmanagedCodeSecurity] then generate code to call System.Security.
19975         UnmanagedDemand (only if the security manager is active).
19976
19977 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
19978
19979         * tramp-amd64.c (create_specific_trampoline): Revert parts of the 
19980         last change as it seems to cause strange crashes.
19981         
19982 Wed Mar 16 16:24:11 CET 2005 Paolo Molaro <lupus@ximian.com>
19983
19984         * *.c: handle unsafe function pointers where needed.
19985
19986 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
19987
19988         * mini.c (mono_jit_free_method): Remove the fixme too.
19989
19990 2005-03-15  Miguel de Icaza  <miguel@novell.com>
19991
19992         * mini.c: As discussed, make the code actually free the delegate
19993         thunk now, to enable the debugging of delegate problems, use
19994         MONO_DEBUG=1 when running Mono. 
19995
19996         This takes also care of parts of the leaks as seen by Joe.
19997
19998 2005-03-15  Zoltan Varga  <vargaz@freemail.hu>
19999
20000         * mini-amd64.c (mono_arch_setup_jit_tls_data): Enable 
20001         thread_tls_offset calculation.
20002
20003 2005-03-14  Sebastien Pouliot  <sebastien@ximian.com>
20004
20005         * declsec.c: Reworked linkdemand checks for icall. The previous code
20006         was using the declaration code (untrusted) and didn't work as expected
20007         with the CLR 2.0. We're now more compatible with 2.0 than 1.x for this
20008         specific case.
20009
20010 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
20011
20012         * iltests.il: Add new localloc test.
20013
20014         * mini-amd64.c: Handle large stack allocations the same way as on
20015         windows if stack overflow handling is working.
20016         
20017         * mini-amd64.c: Allocate the signal stack using mmap.
20018
20019         * mini.c (sigsegv_signal_handler): Fix reading of context.
20020
20021         * mini-exceptions.c: Fix up stack overflow handling.
20022
20023         * mini-amd64.h mini-amd64.c: Fix up stack overflow handling.
20024
20025         * tramp-amd64.c (create_specific_trampoline): Optimize trampoline size.
20026
20027         * exceptions-amd64.c (mono_amd64_exceptions_init): Remove this.
20028
20029         * mini.h mini.c tramp-*.c: Move common trampoline code to mini.c.
20030
20031         * mini-x86.h mini-x86.c mini-amd64.h mini-amd64.c: Get rid of the
20032         tramp_init functions as they are no longer needed.
20033
20034 2005-03-12  Zoltan Varga  <vargaz@freemail.hu>
20035
20036         * tramp-amd64.c (mono_amd64_tramp_init): Fix typo.
20037         
20038         * tramp-amd64.c (mono_amd64_tramp_init): Init AOT trampoline as well.
20039
20040         * mini-amd64.h mini-amd64.c (mono_amd64_exceptions_init): Remove this.
20041         
20042         * mini.c mini-*.h: Remove OUT_OF_LINE_BBLOCK defines since all arches
20043         support that now.
20044
20045         * mini-ops.h: Add OP_LMUL_IMM.
20046
20047         * mini.c jit-icalls.cmini-amd64.h mini-amd64.c cpu-amd64.md: Implement
20048         long mul/div opcodes as intrinsic.
20049
20050         * mini-amd64.c (emit_call): Handle the case when the callee might be
20051         an AOT method.
20052
20053 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
20054
20055         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Reorder cases to be
20056         extra safe.
20057         
20058         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Fix ordering of cases.
20059
20060         * aot.c (mono_aot_load_method): Get rid of bogus make_writable call.
20061
20062 2005-03-09  Ben Maurer  <bmaurer@ximian.com>
20063
20064         * mini.c (mono_codegen): Don't leak here, to help people running
20065         monogrind.
20066
20067 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
20068
20069         * mini-amd64.c (mono_arch_output_basic_block): Fix int->float 
20070         conversions in sse2 mode.
20071
20072         * basic-float.cs: Add regression test.
20073         
20074         * mini-amd64.c: Reenable sse2.
20075
20076 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
20077
20078         * mini-amd64.c: Disable sse2 until some regressions are fixed.
20079
20080 2005-03-07      Joerg Rosenkranz <joergr@voelcker.com>
20081
20082         * driver.c: Copyright text should include 2005.
20083         
20084 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
20085
20086         * cpu-amd64.md (load_membase): Fix more max lengths.
20087
20088 2005-03-06  Zoltan Varga  <vargaz@freemail.hu>
20089
20090         * cpu-amd64.md (load_membase): Fix max length.
20091
20092         * mini-ops.h: Add OP_F<xx>_MEMBASE opcodes.
20093
20094         * inssel.brg: Add MONO_EMIT_BIALU_MEMBASE macro.
20095
20096         * cpu-amd64.md inssel-amd64.brg mini-amd64.h mini-amd64.brg: Finish SSE2
20097         support and enable it by default. Also add OP_F<xxx>_MEMBASE opcodes.
20098
20099         * basic-float.cs: Add rounding regression test.
20100
20101         * mini-amd64.c (INST_IGNORES_CFLAGS): Add more instructions.
20102
20103 2005-03-04  Neale Ferguson <NealeFerguson@earthlink.net>
20104
20105         * inssel-s390.brg, mini-s390.c: Add support for passing/returning small
20106         structures in registers for pinvoke wrappers.
20107
20108 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
20109
20110         * mini-exceptions.c (ves_icall_get_trace): Return wrapper info as well.
20111
20112 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
20113
20114         * mini.h mini.c mini-x86.c: Pass the domain of the native->managed
20115         wrapper to mono_jit_thread_attach.
20116
20117         * mini.c (mini_jit_thread_attach): New jit icall.
20118
20119         * mini-x86.c (mono_arch_emit_prolog): Attach to the VM in 
20120         native->managed wrappers.
20121
20122         * exceptions.cs: Add new regression test.
20123
20124         * mini.c (optimize_branches): Check regions in the cbranch to throw
20125         block case as well. Fixes #73242.
20126
20127 Tue Mar 1 18:35:27 CET 2005 Paolo Molaro <lupus@ximian.com>
20128
20129         * mini.c: thread safety fixes.
20130
20131 2005-02-27  Zoltan Varga  <vargaz@freemail.hu>
20132
20133         * tramp-amd64.c (amd64_magic_trampoline): Disable the method_ptr
20134         patching stuff, since delegates use jump trampolines so there is
20135         no caller.
20136
20137         * tramp-amd64.c (create_trampoline_code): Pass NULL as 'code' in 
20138         jump trampolines.
20139         
20140         * tramp-amd64.c: Fix build.
20141
20142         * mini-x86.c tramp-x86.c: Moved get_vtable_slot_addr into mini-x86.c and rename
20143         it to mono_arch_.... Add get_delegate_method_ptr implementation for x86.
20144
20145         * mini-amd64.h mini.h mini-amd64.c tramp-amd64.c (mono_amd64_get_vcall_slot_addr):
20146         Rename this to mono_arch....
20147         (mono_amd64_get_delegate_method_ptr_addr): Ditto.
20148
20149         * mini-amd64.c (mono_amd64_get_delegate_method_ptr_addr): New helper function.
20150
20151         * mini-amd64.c (emit_call): If both the caller and the callee is
20152         guaranteed to have 32 bit addresses, emit a normal call.
20153
20154         * tramp-amd64.c: Adapt to changes in mini-amd64.c.
20155
20156         * tramp-amd64.c (amd64_magic_trampoline): Remove patching of trampolines. 
20157         * tramp-amd64.c (amd64_magic_trampoline): Add support for patching the
20158         method_ptr inside delegates.
20159
20160 2005-02-26  Zoltan Varga  <vargaz@freemail.hu>
20161
20162         * mini.c (mono_jit_free_method): Free the method info even if the native code is
20163         invalidated. Fixes #73001.
20164
20165         * mini.c: Add a proper icall wrapper for mono_delegate_ctor.
20166
20167         * mini-x86.c: Only use stdcall for pinvokes on windows.
20168
20169 Thu Feb 24 15:22:30 CET 2005 Paolo Molaro <lupus@ximian.com>
20170
20171         * mini.c, mini.h: make mono_lmf_addr a fast-access thread var.
20172         * mini-x86.c: remove unreliable __thread var offset detection,
20173         use the correct accessors and enable by default.
20174
20175 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
20176
20177         * mini.c (mono_jit_free_method): Fix memory leak.
20178
20179 2005-02-22  Zoltan Varga  <vargaz@freemail.hu>
20180
20181         * mini.c (mono_method_to_ir): Allocate a GOT var for THROW and RETHROW. 
20182
20183 2005-02-21  Zoltan Varga  <vargaz@freemail.hu>
20184
20185         * cpu-amd64.md: Fix lengths of atomic opcodes.
20186
20187 Mon Feb 21 16:52:20 CET 2005 Paolo Molaro <lupus@ximian.com>
20188
20189         * driver.c: try to not imply using ICU is any good.
20190
20191 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
20192
20193         * mini-amd64.c (mono_arch_get_inst_for_method): Implement more 
20194         functions as inline ops.
20195
20196         * mini-ops.h inssel-amd64.brg cpu-amd64.md mini-amd64.c: Implement
20197         some Interlocked functions as inline ops.
20198
20199         * mini.c (move_basic_block_to_end): Fix bug in last patch.
20200
20201         * mini.h (MonoBasicBlock): Reorganize fields a bit.
20202
20203         * mini-ops.h inssel.brg: Add OP_NOT_REACHED.
20204
20205         * mini.c: Add support for OP_NOT_TAKEN.
20206
20207         * mini-amd64.h mini-amd64.c: Add support for passing/returning small 
20208         structures in registers for pinvoke wrappers.
20209
20210         * mini-amd64.c: Fix warnings.
20211
20212 2005-02-19  Zoltan Varga  <vargaz@freemail.hu>
20213
20214         * mini.h (MonoCompile): Add 'ret_var_is_local' field.
20215
20216         * mini.h mini.c (mono_arch_create_vars): Add new arch specific hook.
20217
20218         * mini.c (NEW_RETLOADA): If the ret variable is a local, use its 
20219         address instead of loading the address from it.
20220
20221         * mini-x86.c: Add support for returning small structs in registers
20222         on Win32. Fixes part of #70864.
20223         
20224 2005-02-18  Zoltan Varga  <vargaz@freemail.hu>
20225
20226         * trace.c (get_token): Improve error checking.
20227
20228 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
20229
20230         * jit-icalls.c (mono_ldvirtfn): Explicitly check for a NULL obj here.
20231
20232 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com> 
20233  
20234         * mini.h: Moved MONO_EXCEPTION_* enum to metadata/class-internals.h so
20235         it can be reused for MonoClass.
20236         * mini.c: Renamed MONO_EXCEPTION_SECURITY to MONO_EXCEPTION_SECURITY
20237         _LINKDEMAND.
20238
20239 2005-02-15  Sebastien Pouliot  <sebastien@ximian.com>
20240
20241         * mini.c: Fixed 2 cases where I sent a MonoMethod to managed code 
20242         instead of a MonoReflectionMethod. The method information wasn't used
20243         when displaying SecurityException details (but will be now).
20244
20245 2005-02-15  Atsushi Enomoto  <atsushi@ximian.com>
20246
20247         * Makefile.am : windows build fix.
20248
20249 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
20250
20251         * iltests.il: Add new regression test.
20252
20253         * mini.c (mono_method_to_ir): Allocate a GOT var in CEE_NEWOBJ. Fixes
20254         #72522.
20255
20256 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com> 
20257  
20258         * mini.c: Moved linkdemand check into helper function check_linkdemand
20259         to allow reuse for all intructions (CALL, CALLVIRT, NEWOBJ, JMP, 
20260         LDFTN, LDVIRTFTN).
20261
20262 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com>
20263
20264         * declsec.c: Added statistics counter for different kinds of 
20265         LinkDemands.
20266         * mini.h: Added CAS statistic counters to MonoJitStats. Removed unused
20267         (and commented) declaration.
20268         * mini.c: Added statistics counter for security Demand code 
20269         generation. Added display of security statistics.
20270
20271 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
20272
20273         * declsec.c (mono_declsec_linkdemand_aptc): Applied patch from Robert Jordan (robertj@gmx.net).
20274         Fix compilation errors under gcc-2.95.
20275
20276 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
20277
20278         * mini.c, driver.c: Use the new jit trampoline hashtable
20279
20280 Fri Feb 11 18:47:11 CET 2005 Paolo Molaro <lupus@ximian.com>
20281
20282         * mini.c, jit-icalls.c: use the managed implementation of memcpy, too.
20283
20284 2005-02-11  Martin Baulig  <martin@ximian.com>
20285
20286         * debug-mini.c (mono_debug_close_method): Free the line number array.
20287
20288 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
20289
20290         * aot.c: Break up large methods into smaller ones. Share GOT slots for
20291         icalls.
20292
20293         * mini.h: Bump AOT file format version. 
20294
20295 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
20296
20297         * declsec.c: Added LinkDemand support and it's special cases for ECMA,
20298         APTC and P/Invoke.
20299         * declsec.h: Added macros to get/set lazyly initialized security 
20300         informations about assemblies. Added new enum for different type of
20301         possible LinkDemand violation. Added function to check LinkDemands.
20302         * mini.h: Added a field to MonoCompile to hold any security violation
20303         detected when JITting a method (so it can be thrown later).
20304         * mini.c: Added LinkDemand checks in mono_method_to_ir for CEE_CALL 
20305         and CEE_CALLVIRT. Added code to throw exception at the end of
20306         mini_method_compile (note: the exception is unhandled right now).
20307
20308 Thu Feb 10 15:49:44 CET 2005 Paolo Molaro <lupus@ximian.com>
20309
20310         * mini.c, jit-icalls.c: use the managed implementation of
20311         memset for initobj and memset, to avoid managed <-> unmanaged
20312         transitions.
20313
20314 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
20315
20316         * inssel.brg (mini_emit_virtual_call): Disable the virtual->nonvirtual
20317         optimization if it would need a GOT var.
20318
20319         * basic.cs: Add tests for constant propagation and switch statements.
20320
20321         * ssa.c: Fix out-of-range constant propagation and switch statements.
20322
20323 2005-02-09    <vargaz@freemail.hu>
20324
20325         * inssel-x86.brg (reg): Align the allocation size in the localloc(imm) case too.
20326
20327 2005-02-08  Zoltan Varga  <vargaz@freemail.hu>
20328
20329         * cpu-amd64.md (load_membase): Fix max length of load_membase.
20330
20331 Tue Feb 8 18:21:11 CET 2005 Paolo Molaro <lupus@ximian.com>
20332
20333         * mini.c: update to new signature of mono_class_get_allocation_ftn().
20334
20335 2005-02-06  Neale Ferguson <NealeFerguson@earthlink.net>
20336
20337         * cpu-s390.md,  mini-s390.c: Correct bug with register usage on certain 
20338         arithmetic operations.
20339
20340 Sun Feb 6 07:10:12 EST 2005 Paolo Molaro <lupus@ximian.com>
20341
20342         * mini-ppc.c: add a workaround for broken user code that
20343         DllImports vararg functions with non-vararg signatures.
20344
20345 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
20346
20347         * mini.c (mono_jit_compile_method_inner): Add detection and a 
20348         meaningfull error message for assemblies written in Managed C++.
20349
20350         * tramp-amd64.c mini-amd64.h: Add support for 
20351         create_trampoline_from_token ().
20352
20353         * aot.c mini-x86.c abcremoval.c: Applied patch from
20354         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
20355
20356 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
20357
20358         * mini.h mini.c mini-x86.h tramp-x86.c: Add a new kind of trampoline 
20359         which takes a MonoImage/token as parameter instead of a MonoMethod.
20360
20361         * aot.c: Use the new trampoline for initializing vtables.
20362
20363         * aot.c: Add support for ldfld/stfld_remote wrappers.
20364
20365         * mini-ops.h cpu-pentium.md inssel-x86.brg mini-x86.c: Add optimized
20366         rules for compare <MEM>, IMM.
20367
20368         * mini.h (MONO_AOT_FILE_VERSION): Bump it.
20369
20370         * aot.c: Handle inherited finalizers correctly.
20371
20372 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
20373
20374         * inssel.brg (stmt): Add a missing _setup_... ().
20375
20376         * aot.c: Save some parts of the class state to the AOT file and use it
20377         to recompute that state when a class is initialized.
20378
20379         * mini.c: Install AOT hooks into the runtime.
20380
20381         * mini.h: Bump AOT file format version.
20382         
20383         * mini.c (mono_method_to_ir): Initialize pointer type locals correctly.
20384         Fixes #72148.
20385
20386         * iltests.il: Add new test.
20387
20388 Wed Feb 2 16:53:59 CET 2005 Paolo Molaro <lupus@ximian.com>
20389
20390         * mini.c: fix typo.
20391
20392 Wed Feb 2 16:37:13 CET 2005 Paolo Molaro <lupus@ximian.com>
20393
20394         * mini.c: setup the statistical profiler in the thread attach
20395         callback to cope with the new single thread code.
20396
20397 Wed Feb 2 15:43:58 CET 2005 Paolo Molaro <lupus@ximian.com>
20398
20399         * mini-ppc.c: ensure we have enough room for the profiler
20400         calls (fixed bug#72084).
20401
20402 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
20403
20404         * aot.c: Get rid of the MonoAotMethod structure and the hashtable holding 
20405         it.
20406
20407 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
20408
20409         * driver.c: Re-enabled SSAPRE (two commits, I was just dumb).
20410
20411 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
20412
20413         * ssapre.c: Fixed an issue with down safety (this allows IronPython
20414         to succesfully execute parrotbench).
20415         * ssapre.h: Likewise.
20416
20417 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
20418
20419         * ssa.c: In mono_ssa_rename_vars, forced the creation of a new SSA
20420         variable for stores to method arguments (fixes a SSAPRE issue).
20421
20422 Tue Feb 1 15:52:26 CET 2005 Paolo Molaro <lupus@ximian.com>
20423
20424         * mini.c: handle value types in dup, fixes gen-112.cs.
20425
20426 Tue Feb 1 11:45:19 CET 2005 Paolo Molaro <lupus@ximian.com>
20427
20428         * mini-ppc.c, cpu-g4.md, tramp-ppc.c: use a slower code
20429         sequence for calls in dynamic methods to avoid thunks.
20430
20431 Tue Feb 1 11:44:01 CET 2005 Paolo Molaro <lupus@ximian.com>
20432
20433         * mini.c: correctly remove dynamic methods from the hashtable.
20434
20435 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20436
20437         * driver.c: Disabled SSAPRE until fix the bug that appears
20438         in IronPython's parrotbench.
20439
20440 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
20441
20442         * aot.c (mono_compile_assembly): Get rid of Skip (other) messages.
20443
20444         * mini.c (mono_method_to_ir): Revert the previous change.
20445         
20446         * mini.c (mono_method_to_ir): Do not inline ldfld and stfld wrappers
20447         when AOT compiling.
20448
20449         * tramp-x86.c (x86_magic_trampoline): Avoid calls to 
20450         mono_jit_info_table_find () etc. when running under valgrind.
20451
20452         * inssel.brg: Fix warnings.
20453
20454         * mini-exceptions.c: Fix warnings.
20455
20456 2005-01-31  Martin Baulig  <martin@ximian.com>
20457
20458         * driver.c (compile_all_methods_thread_main): Don't try to compile
20459         generic methods or anything which has type parameters.
20460
20461 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
20462
20463         * aot.c: Avoid costly calls to mono_method_full_name in tracing code and fix memory leaks.
20464
20465         * TestDriver.cs: Add --verbose flags.
20466
20467         * graph.c ssa.c: Fix 64 bit warnings.
20468         
20469         * abcremoval.h ssapre.h abcremoval.c ssapre.c mini.c tramp-amd64.c 
20470         trace.c mini-exceptions.c linear-scan.c inssel-amd64.brg inssel.brg:
20471         Fix 64 bit warnings.
20472
20473         * mini-amd64.c (mono_arch_output_basic_block): Fix uninitialized
20474         variable not spotted by gcc.
20475         
20476         * mini-amd64.c inssel-amd64.brg: Applied patch from  
20477         Willibald Krenn <Willibald.Krenn@gmx.at>. Clean up usage of 
20478         X86_COMPARE_MEMBASE opcodes.
20479
20480         * exceptions-amd64.c (mono_arch_find_jit_info): Fix AMD64 build.
20481
20482 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
20483
20484         * *: MonoMethod->signature might be NULL now. You *MUST* use
20485         mono_method_signature.
20486
20487 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
20488
20489         * driver.c (compile_all_methods_thread_main): Compile the methods
20490         without invoking cctors.
20491
20492 Fri Jan 28 18:28:26 CET 2005 Paolo Molaro <lupus@ximian.com>
20493
20494         * mini.c: remove ben's "optimizations" to dup+stloc (bug #71905).
20495         * basic-calls.cs: test for the above.
20496
20497 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
20498
20499         * mini.c mini-exceptions.c aot.c exceptions-*.c: Update after 
20500         MonoJitInfo changes.
20501
20502 2005-01-27  Zoltan Varga  <vargaz@freemail.hu>
20503
20504         * mini-exceptions.c (mono_handle_exception): Compute the stack trace
20505         eagerly if it contains dynamic methods.
20506         
20507         * mini-exceptions.c (ves_icall_System_Exception_get_trace): New icall.
20508
20509         * mini-exceptions.c (mono_handle_exception): Avoid computing the stack
20510         trace, it is now computed by an icall from trace_ips.
20511         
20512         * mini-exceptions.c: Fix a warning.
20513
20514 Thu Jan 27 13:38:34 CET 2005 Paolo Molaro <lupus@ximian.com>
20515
20516         * mini-exceptions.c: don't bother getting stack trace info if
20517         it's not going to be used.
20518
20519 2005-01-27  Raja R Harinath  <rharinath@novell.com>
20520
20521         * Makefile.am (common_sources): Add ssapre-cee-ops.h and
20522         ssapre-mini-ops.h.
20523
20524 2005-01-26  Zoltan Varga  <vargaz@freemail.hu>
20525
20526         * mini.c (remove_block_if_useless): Only print debug stuff with -v -v.
20527
20528         * aot.c: Avoid calling mono_method_get_header () if not needed.
20529
20530         * mini.h: Bump AOT file format version.
20531         
20532         * mini.c (mono_emit_native_call): Allocate a GOT var here.
20533
20534         * mini.c (mono_print_tree): Print more info for calls.
20535
20536 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
20537
20538         * declsec.h: Remove warning by adding missing include for marshal.h
20539
20540 2005-01-26  Martin Baulig  <martin@ximian.com>
20541
20542         * mini.c (mono_method_to_ir): In CEE_UNBOX_ANY, don't increase
20543         `ip' twice.
20544
20545 2005-01-25  Zoltan Varga  <vargaz@freemail.hu>
20546
20547         * mini-amd64.c (mono_arch_call_opcode): Add missing MONO_SSA_LOAD/STORE
20548         flags.
20549
20550         * ssa.c (mono_ssa_compute): Fix crashes when using AOT.
20551
20552         * aot.c (mono_compile_assembly): Fix a warning.
20553
20554 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com>
20555
20556         * declsec.c: Look for security attributes on the original MonoMethod 
20557         (and not the wrapped one). This fix permissions on icalls.
20558
20559 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
20560
20561         * mini-amd64.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
20562
20563         * mini.c (mono_allocate_stack_slots): Add a fixme.
20564
20565         * mini-x86.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
20566
20567 Sun Jan 23 16:16:48 CET 2005 Paolo Molaro <lupus@ximian.com>
20568
20569         * inssel.brg: optimize casts of sealed types (more
20570         optimizations waiting for fixes in remoting).
20571
20572 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
20573
20574         * inssel.brg (stmt): Add another dummy rule.
20575
20576         * driver.c: Fix warnings.
20577
20578         * driver.c (mono_main): If running under valgrind, instruct glib to use
20579         the system allocation functions so valgrind can track the memory
20580         allocated by the g_... functions.
20581
20582         * inssel.brg (stmt): Add DUMMY rule for OP_DUMMY_STORE.
20583
20584         * mini-ops.h: Add OP_DUMMY_STORE opcode.
20585
20586         * mini.h (MONO_BBLOCK_IS_IN_REGION): New helper macro.
20587
20588         * liveness.c: Handle OP_DUMMY_STORE. Enable register allocation for
20589         variables in try regions.
20590
20591         * mini.c (mini_method_compile): Don't disable optimizations on large
20592         methods when AOT compiling.
20593
20594         * mini.c (mono_allocate_stack_slots): New arch independent method to 
20595         allocate stack slots. Not yet used.
20596
20597 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
20598
20599         * debug-mini.c (mono_debug_close_method): Plug some leaks.
20600
20601 Sat Jan 22 13:41:51 EST 2005 Paolo Molaro <lupus@ximian.com>
20602
20603         * mini-ppc.c: make the branch info relative as the code
20604         buffer can be reallocated.
20605
20606 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
20607
20608         * aot.c: Allow decoding of the new  MONO_PATCH_INFO_DECLSEC.
20609         * driver.c: Removed the AOT/security restriction. Now initialize the
20610         security manager (in metadata) if --security is used.
20611         * mini.c|h: Add the MONO_PATCH_INFO_DECLSEC code to use the index,
20612         rather than the pointer to declarative security, when AOT is used.
20613
20614 Sat Jan 22 09:35:19 EST 2005 Paolo Molaro <lupus@ximian.com>
20615
20616         * mini.h, mini-ppc.h, mini-ppc.c: updated to use out of line
20617         basic blocks, reduced intrinsic exception throwing code size.
20618
20619 2005-01-22  Miguel de Icaza  <miguel@ximian.com>
20620
20621         * driver.c (mini_usage): Reorder the usage screen.
20622
20623 2005-01-21  Zoltan Varga  <vargaz@freemail.hu>
20624
20625         * mini.c (mono_resolve_patch_target): Fix warning.
20626
20627 2005-01-20  Zoltan Varga  <vargaz@freemail.hu>
20628
20629         * mini-x86.c (mono_arch_local_regalloc): Fix bug introduced by
20630         previous patch.
20631
20632         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
20633
20634         * mini-amd64.c (mono_arch_local_regalloc): Revert last patch as it
20635         breaks the amd64 build.
20636
20637         * mini-x86.c (mono_arch_local_regalloc): Fix bug in div/rem 
20638         register allocation. Fixes #71454.
20639
20640         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
20641
20642         * arrays.cs: Add new regression test.   
20643
20644 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20645
20646         * ssapre.c: Turned usage of snprintf to GString.
20647         * ssapre.h: disabled MONO_APPLY_SSAPRE_TO_SINGLE_METHOD
20648         (I left it on by mistake in my previous commit).
20649
20650 Thu Jan 20 12:00:45 CET 2005 Paolo Molaro <lupus@ximian.com>
20651
20652         * mini.c, cfold.c, basic-calls.cs: preserve side effects
20653         on cond branch optimization (fixes bug# 71515).
20654
20655 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20656
20657         * abcremoval.c: Fixed bug 71062.
20658         * abcremoval.h: Likewise.
20659
20660 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20661
20662         * mini.c: Added a new functionality to optimize_branches, the removal
20663         of useless basic blocks, and fixed some problem in the removal of
20664         critical edges; some utility functions added for both purposes.
20665         * ssapre.c: Added complex expression support, and fixed bug 70637.
20666         * ssapre.h: Likewise.
20667         * ssapre-cee-ops.h: Added file with list of "CEE_*" opcodes
20668         enabled in SSAPRE.
20669         * ssapre-mini-ops.h: Likewise, but for "OP_*" opcodes.
20670         * driver.c: Re-enabled SSAPRE.
20671
20672 2005-01-19  Martin Baulig  <martin@ximian.com>
20673
20674         * mini.c (mono_method_to_ir): Call mono_get_inflated_method() on
20675         the result of mono_get_method_constrained().
20676
20677 2005-01-18  Neale Ferguson <NealeFerguson@earthlink.net>
20678
20679         * exceptions-s390.c tramp-s390.c: Allocate code using the global code
20680         manager.
20681
20682 2005-01-18  Geoff Norton  <gnorton@customerdna.com>
20683
20684         * jit-icalls.c (mono_llmult_ovf): Fix other overflow conditions to
20685         be detected.  Fixes #59296.
20686
20687 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
20688
20689         * mini-amd64.c (mono_arch_output_basic_block): Remove some assertions
20690         which can happen. Fixes #71361.
20691
20692 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
20693
20694         * exceptions-sparc.c tramp-sparc.c: Allocate code using the global code
20695         manager.
20696
20697 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
20698
20699         * mini.c (mono_create_jump_trampoline): Revert last change as it causes
20700         appdomain-unload.exe to fail.
20701         
20702         * mini.c: Fix some memory leaks.
20703
20704 Mon Jan 17 16:16:23 CET 2005 Paolo Molaro <lupus@ximian.com>
20705
20706         * inssel.brg: handle the new size of rank, idepth, max_interface_id.
20707         Fixed bug and sped up some codepaths.
20708
20709 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
20710
20711         * mini.c: Fix some memory leaks.
20712
20713         * exceptions.cs basic-long.cs: Add test for checked ulong->int 
20714         conversion.
20715
20716         * inssel-long.brg: Implement long_conv_to_ovf_i4_un. Fixes #71319.
20717
20718         * inssel-long.brg: Fix conv.ovf.i8 when run on an int32. Fixes
20719         #71320.
20720
20721         * iltests.il: Add regression test for #71320.
20722
20723 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
20724
20725         * mini.c (mono_codegen): Fix installation of profiler hooks.
20726
20727         * mini-sparc.c mini-amd64.c: Don't allocate stack space for dead vars.
20728
20729 Sun Jan 16 12:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
20730
20731         * mini.h, mini.c, cfold.c: optimize access to enum
20732         readonly fields, too. Eval conditional branches if possible
20733         to perform unreachable code removal in more cases.
20734
20735 2005-01-15  Zoltan Varga  <vargaz@freemail.hu>
20736
20737         * tramp-amd64.c exceptions-amd64.c: Use the new global code manager.
20738
20739         * mini.c (mono_global_codeman_reserve): New function to allocate code memory from a global
20740         code manager.
20741
20742         * tramp-x86.c mini-x86.c exceptions-x86.c: Allocate all code memory so mono works with
20743         WinXP DEP. Fixes #71244.
20744
20745 2005-01-14  Zoltan Varga  <vargaz@freemail.hu>
20746
20747         * inssel.brg: Allways convert CEE_CONV_OVF_I4 to a move on 64 bit platforms. Fixes #71236.
20748
20749 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
20750
20751         * mini-x86.c (mono_arch_output_basic_block): Fix OP_ATOMIC_ADD_NEW_I4.
20752
20753 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
20754
20755         * mini-exceptions.c exceptions-ppc.c aot.c: Cope with MonoJitInfo 
20756         changes.
20757
20758         * mini.h: Bump AOT version.
20759
20760         * mini.h (MonoCompile): Change exvar to a hash table.
20761
20762         * mini.c: Allocate a separate exvar for each handler block.
20763
20764         * mini.c: Get rid of the computation of filter_lengths, its not needed.
20765
20766         * mini.c inssel.brg: Change OP_THROW_OR_NULL to compare the current
20767         ex var with the pending exception and only throw if the two are equal.
20768         Fixes #68552.
20769         
20770         * exceptions.cs: Add tests for rethrow and nested catch clauses.
20771
20772         * mini-x86.c: Fix warnings.
20773
20774         * Makefile.am (common_sources): Move mini-exceptions.c here as it is
20775         used by all the ports now.
20776
20777         * aot.c: Add write-symbols and save-temps options.
20778
20779 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
20780
20781         * mini-x86.c: Add support for returning structs in registers from pinvoke functions on WIN32.
20782
20783 Mon Jan 10 16:11:16 EST 2005 Neale Ferguson <nealeferguson@earthlink.net>
20784
20785         * mini-ops.h, inssel-s390.brg, cpu-s390.md: Support OP_ATOMIC__xxx 
20786         operations.
20787
20788         * tramp-s390.c: Check vtable slot belongs to the domain.
20789
20790         * mini-exceptions.c, exceptions-s390.c: Standardize exception handling
20791         as per other platforms.
20792
20793         * mini-s390.c, mini-s390.h: Enable out-of-line bblock support.
20794
20795 Mon Jan 10 18:53:05 CET 2005 Paolo Molaro <lupus@ximian.com>
20796
20797         * driver.c: we don't run the Main() code in a subthread anymore.
20798
20799 Mon Jan 10 17:54:16 CET 2005 Paolo Molaro <lupus@ximian.com>
20800
20801         * mini.c: added experimental rtc support in the statistical
20802         profiler: if the user has the permission, more accurate statistics
20803         are gathered. Run with: MONO_RTC=4096 mono --profiler=default:stat ....
20804         The MONO_RTC value must be restricted to what the linux rtc allows:
20805         power of two from 64 to 8192 Hz.
20806
20807 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
20808
20809         * mini-x86.c (mono_arch_emit_exceptions): Fix #71121.
20810
20811 Mon Jan 10 05:20:49 EST 2005 Paolo Molaro <lupus@ximian.com>
20812
20813         * mini-ppc.c: better icache flush for smp.
20814
20815 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
20816
20817         * mini-amd64.c (emit_move_return_value): Fix memory leak.
20818
20819         * mini-x86.c (get_call_info): Add the get_call_info () code from the
20820         amd64 port, not yet used.
20821
20822 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
20823
20824         * mini.c (mono_method_to_ir): Disable inlining of ldfld wrappers with
20825         a struct type.
20826
20827 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
20828
20829         * driver.c: Added --security option to activate the security manager.
20830         Right now this will allow code generation for declarative demands and
20831         is disabled when AOT is specified.
20832         * mini.c: Add code generation for declarative security demands.
20833         * mini.h: Add mono_use_security_manager as an extern gboolean.
20834
20835 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
20836
20837         * aot.c (mono_compile_assembly): Speed up compilation a bit by
20838         emitting more dense assembly code.
20839
20840         * mini-sparc.c mini-sparc.h exceptions-sparc.c: Enable optimized corlib
20841         exception throwing stuff.
20842
20843 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
20844
20845         * mini-sparc.c (mono_arch_emit_exceptions): Fix typo in previous patch. Remove
20846         dead code.
20847
20848         * mini-amd64.c (mono_arch_emit_exceptions): Remove duplicate epilog stuff
20849         left in by mistake.
20850
20851         * driver.c (EXCLUDED_FROM_ALL): Disable SSAPRE until bug #70637 is 
20852         fixed.
20853
20854         * mini-sparc.h mini-sparc.c: Enable out-of-line bblock support.
20855
20856         * tramp-*.c: Only patch vtable slots if the object is in the current
20857         domain. Fixes appdomain-unload.exe.
20858
20859         * mini-amd64.c mini-amd64.h: Enable out-of-line bblock support.
20860         
20861         * mini-amd64.c (mono_arch_local_regalloc): Port regalloc fix from
20862         x86 branch.
20863
20864 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
20865
20866         * mini.c (reverse_branch_op): New helper function.
20867
20868         * mini.c (optimize_branches): Run the new optimization only on 
20869         platforms which support it. Also reverse all kinds of branches.
20870
20871         * mini.h (MonoBasicBlock): Add 'out_of_line' field.
20872
20873         * mini.c (mono_method_to_ir): Set 'out_of_line' for bblocks which have
20874         a throw statement.
20875
20876         * mini.c (optimize_branches): Reverse not-equals branches if the false
20877         bblock is a throw. This happens a lot of time with argument checking in
20878         corlib.
20879
20880         * mini.c (mono_codegen): Add support for placing basic blocks after
20881         the function epilogue.
20882
20883         * mini-x86.c mini-x86.h: Add support for placing basic blocks after the
20884         function epilogue.
20885         
20886 2005-01-05  Miguel de Icaza  <miguel@ximian.com>
20887
20888         * mini.c (setup_stat_profiler): Only set this up if the platform
20889         supports ITIMER_PROF.
20890
20891 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
20892
20893         * mini-x86.c (mono_arch_local_regalloc): Fix a bug introduced by the
20894         previous patch.
20895
20896         * inssel.brg: Fix a warning.
20897
20898 Wed Jan 5 16:40:18 CET 2005 Paolo Molaro <lupus@ximian.com>
20899
20900         * mini.c: added support for statistical profiler 
20901         (run with: --profile=default:stat).
20902
20903 2005-01-04  Zoltan Varga  <vargaz@freemail.hu>
20904
20905         * mini-x86.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Enable this on x86.
20906
20907         * mini-x86.c cpu-pentium.md: More fixes for usage of global registers.
20908
20909         * mini-amd64.c (mono_arch_local_regalloc): Port some regalloc fixes 
20910         related to global registers from the amd64 port.
20911
20912 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
20913
20914         * mini.c (mono_method_to_ir): Handle MONO_CLASSCONST.
20915
20916         * mini-amd64.c (mono_arch_local_regalloc): Fix some regalloc problems
20917         with global registers.
20918         (mono_arch_output_basic_block): Fix SWITCH in the AOT case.
20919
20920         * aot.c (emit_method_code): Fix the 'method emitted as' messages.
20921
20922 2004-12-31  Zoltan Varga  <vargaz@freemail.hu>
20923
20924         * debug-mini.c (encode_value): Fix off-by-one.
20925
20926         * aot.c (encode_value): Likewise.
20927
20928         * mini.c (mono_method_to_ir): Disable AOT for methods containing LDPTR.
20929
20930 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
20931
20932         * mini.c linear-scan.c: Add a workaround for the mcs crash when using 
20933         AOT.
20934
20935         * aot.c (mono_aot_load_method): Free up patch info if no longer needed.
20936         
20937         * aot.c (emit_method_info): Increase size of temp buffer.
20938
20939         * mini-x86.c cpu-pentium.md mini.c: Load fp constants differently in 
20940         the AOT case.
20941
20942 2004-12-28  Zoltan Varga  <vargaz@freemail.hu>
20943
20944         * aot.c (emit_method_info): Fix build.
20945         
20946         * aot.c: Further rework of the AOT file format to reduce the size of
20947         the method info data.
20948
20949         * mini.h: Bump AOT file format version.
20950
20951 2004-12-27  Martin Baulig  <martin@ximian.com>
20952
20953         * mini.c (mini_get_method): New static method; call
20954         mono_get_method_full() and mono_get_inflated_method().
20955         (mono_method_to_ir): Use mini_get_method() instead of
20956         mono_get_method_full(). 
20957
20958 2004-12-26  Patrik Torstensson  <patrik.torstensson@gmail.com>
20959
20960         * mini-x86.c (atomic ops): fixed bug interlocked bug #70784. 
20961
20962 2004-12-25  Zoltan Varga  <vargaz@freemail.hu>
20963
20964         * inssel.brg (ldind_to_load_membase): Handle CEE_LDIND_I8.
20965
20966         * inssel-amd64.brg: Add some optimization rules.
20967
20968 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
20969
20970         * aot.c: Remove the use of MonoGHashTable and other GC stuff. The
20971         standard not GC'd stuff is fine.
20972
20973 2004-12-24  Zoltan Varga  <vargaz@freemail.hu>
20974
20975         * aot.c: Rework the AOT file format to get rid of most of the global
20976         symbols. This reduces the size of the mscorlib.dll.so by 1MB.
20977
20978         * mini.h: Bump AOT file format version.
20979         
20980 2004-12-23  Zoltan Varga  <vargaz@freemail.hu>
20981
20982         * mini.h: Bump AOT file format version.
20983
20984         * aot.c (mono_aot_is_got_entry): New function to determine if an 
20985         address is inside a GOT.
20986
20987         * aot.c mini-x86.c tramp-x86.c: Make all patches use the GOT.
20988
20989         * cpu-pentium.md: Increase the maximum size of some instructions which
20990         might involve a got access.
20991         
20992         * mini.c (get_method_from_ip): Another debug helper function.
20993
20994         * mini.c: Call mono_get_got_var () in a couple places. Handle the case
20995         when got var accesses are created during the decompose phase.
20996
20997         * mini-sparc.c: Change mono_compile_aot to cfg->compile_aot.
20998
20999         * mini.h mini.c mini-x86.c aot.c mini-sparc.c: Add a 'compile_corlib'
21000         argument mini_compile_method and to MonoCompile, and use this to
21001         determine whenever a given method is compiled for AOT. This allows the
21002         other methods compiled during AOT compilation to be free of AOT stuff,
21003         so the backends does not need to add special support for them by
21004         creating a fake GOT etc.
21005
21006         * mini-x86.c (mono_arch_patch_code): Remove fake got stuff as it is no
21007         longer needed.
21008
21009 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
21010
21011         * mini.c (mono_method_to_ir): It turns out that some of the
21012         x-appdomain wrappers are lax with types, so just ignore this for
21013         all wrappers.
21014
21015         * inssel.brg (OP_CHECK_ARRAY_TYPE): Optimize this by only looking
21016         at the vtable->klass. If it is non-shared code we can just use the
21017         vtable.
21018
21019 Tue Dec 21 17:43:06 CET 2004 Paolo Molaro <lupus@ximian.com>
21020
21021         * mini-ppc.c: access MonoDomain from tls, too.
21022
21023 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com>
21024
21025         * declsec.c: Removed unused variable (and related warning ;-)
21026
21027 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
21028
21029         * iltests.il: New test for LDELEMA on an array of ref types.
21030
21031         * mini.c (CEE_LDELEMA): We need to emit OP_CHECK_ARRAY_TYPE for
21032         all ldelema's on reftypes.
21033         (check_call_signature): Remove the OP_CHECK_ARRAY_TYPE from here,
21034         it was the wrong place to put it.
21035
21036         * mini-x86.c (mono_arch_output_basic_block): Just use ecx as the
21037         register to pop to make this cleaner, at the request of Paolo.
21038
21039 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
21040
21041         * mini-ops.h (OP_GETHASHCODE): New op.
21042
21043         * inssel.brg (OP_GETHASHCODE): Emit code for the new opcode
21044
21045         * mini.c (mini_get_inst_for_method): Create the intrinsic hash
21046         operation.
21047
21048         For a microbenchmark, this reduces the cost of Hashtable.get_Item
21049         by 25%.
21050         
21051         * mini-x86.c (mono_arch_output_basic_block): Rather than
21052
21053         add ebp, 4
21054
21055         Emit
21056
21057         pop edx
21058
21059         The first is 3 bytes while the second is 1. This saves 36 kb on
21060         mscorlib, quite a big saving. When bootstraping mcs, I was able to
21061         see a small boost because of icache locality.
21062
21063         * cfold.c (FOLD_BINOPCOMM): Kill add foo, 0
21064
21065 Mon Dec 20 12:19:40 EST 2004 Paolo Molaro <lupus@ximian.com>
21066
21067         * Makefile.am, mini-ppc.h, mini-exceptions.c, exceptions-ppc.c:
21068         started code sharing with the generic code.
21069
21070 Mon Dec 20 11:08:06 EST 2004 Paolo Molaro <lupus@ximian.com>
21071
21072         * mini-ppc.c, cpu-g4.md: added code for direct access to
21073         tls data slots.
21074
21075 Mon Dec 20 10:58:28 EST 2004 Paolo Molaro <lupus@ximian.com>
21076
21077         * mini-ops.h, inssel-x86.brg, cpu-amd64.md, inssel.brg, inssel-amd64.brg,
21078          mini-amd64.c, mini-x86.c, cpu-pentium.md: renamed OP_X86_TLS_GET
21079         to OP_TLS_GET.
21080
21081 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
21082
21083         * declsec.c|h: Added functions to cache the declarative stack modifiers
21084         in MonoJitInfo and to create a security frame from a MonoJitInfo 
21085         structure.
21086         * mini.c: Initialize jinfo->cas_inited to FALSE when MonoJitInfo is
21087         created. Register internal calls for System.Security.SecurityFrame::
21088         _GetSecurityFrame and _GetSecurityStack.
21089         * mini.h: Added definition for new icalls (in mini-exceptions.c) and
21090         the definitions for the new stack walk/callback mechanism.
21091         * mini-exceptions.c: Added internal call GetSecurityFrame (to get the 
21092         first security frame for LinkDemands and InheritanceDemands) and
21093         GetSecurityStack for Demands. Both use the new mono_walk_stack code
21094         from lupus.
21095         * mini-x86.h, mini-amd64.h, mini-sparc.h: Architecture specific stack
21096         walk initialization (lupus).
21097
21098 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
21099
21100         * mini.c (mono_method_to_ir): In CEE_DUP, handle the dup / stloc
21101         idiom.
21102         (handle_loaded_temps): Do not create a temporary variable for
21103         things that we know are temps. They will never be modified.
21104         (mono_spill_call): Set MONO_INST_IS_TEMP
21105         (mono_emulate_opcode): ditto
21106         (emit_tree): ditto
21107         (mono_method_to_ir.CEE_DUP): ditto
21108
21109 2004-12-19  Ben Maurer  <bmaurer@ximian.com>
21110
21111         * mini.c (type_to_eval_stack_type): Make this handle the void type
21112         (mono_emit_call_args): set the call->type with type_to_eval_stack_type
21113         (emit_tree): use ip_in_bb to special case some common idioms
21114         Update all callers to pass in the IP.
21115         (mono_method_to_ir): Make CEE_CALL* do the above as well.
21116
21117         This gives us a nice 2% speedup in mcs bootstrap.
21118
21119         * mini-x86.c (peephole_pass): Peephole pass to make
21120         mov  [foo], eax
21121         push [foo]
21122
21123         into
21124
21125         mov [foo], eax
21126         push eax
21127
21128         * mini.c (ip_in_bb): new method.
21129         (mono_method_to_ir): use this method rather than doing the hash
21130         lookup ourselves.
21131
21132         * linear-scan.c (mono_linear_scan): When expiring actives, you
21133         don't need to keep around variables that expire on this
21134         instruction. This makes it so that:
21135              a = b + 1
21136         will turn into:
21137              store (ebx add (ebx, 1))
21138         which will become
21139              add ebx, 1
21140
21141 2004-12-19  Zoltan Varga  <vargaz@freemail.hu>
21142
21143         * mini.c (mono_method_to_ir): Optimize the common ldobj+stloc 
21144         combination to avoid doing two copies. Fix up problems with previous
21145         patch.
21146
21147         * mini.c: Fix 64 bit warnings.
21148
21149         * mini-x86.c (INST_IGNORES_CFLAGS): Add OP_STOREI4_MEMBASE_REG.
21150
21151 2004-12-17  Zoltan Varga  <vargaz@freemail.hu>
21152
21153         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Port exception handling
21154         changes from the x86 code.
21155
21156         * mini.h: Add prototype for mono_arch_get_throw_corlib_exception ().
21157
21158 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
21159
21160         * mini-x86.c (mono_arch_emit_epilog): Optimize the corlib exception
21161         throwing code to reduce its size, unify the AOT and non-aot code and 
21162         get rid of relocations in the AOT case.
21163
21164         * mini-x86.h mini.c exceptions-x86.c 
21165         (mono_arch_get_throw_corlib_exception): New arch specific function to 
21166         raise corlib exceptions which doesn't require relocations in the 
21167         caller.
21168
21169         * aot.c (emit_method): Handle PATCH_INFO_NONE as well.
21170
21171 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
21172
21173         * mini.c (mono_emit_method_call): Only allocate the got var when it is
21174         needed.
21175
21176         * mini-x86.c (mono_arch_patch_code): Add missing PATCH_INFO_METHOD_REL
21177         in the AOT case.
21178
21179 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
21180
21181         * mini-x86.c, cpu-pentium.md, inssel-x86.brg: Fixed bug
21182         with add function when used from Inc/dec atomic 
21183         functions. Re-enabled optimization on x86.
21184         * mini-ops.h: renamed atomic_add functions to
21185         allow _add to match the Interlocked::Add and
21186         _add_next to match Interlocked::Inc/Dec.
21187
21188 2004-12-15  Massimiliano Mantione  <massi@ximian.com>
21189
21190         * mini.c: Fixed a subtle bug in mono_method_to_ir, about the
21191         linking of BBs to the end BB, and enabled SSAPRE also with
21192         consprop and copyprop (which was prevented by that bug).
21193
21194 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
21195
21196         * mini-x86.c: disabling the Interlocked optimizing code. 
21197
21198 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
21199
21200         * aot.c (load_aot_module): Move reading of got_addr after the AOT
21201         file version check.
21202         
21203 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
21204
21205         * mini-x86.c, inssel-x86.brg, cpu-pentium.md: removed _imm 
21206         interlocked optimization due lack of support on x86, rewrote 
21207         exchange to take into account that base may be in eax.
21208         
21209         xsp works again; activated Interlocked optimizing code.
21210         
21211 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
21212
21213         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
21214
21215 2004-12-13  Zoltan Varga  <vargaz@freemail.hu>
21216
21217         * mini-ops.h: Add new opcodes.
21218
21219         * mini.h: Add new patch types. Add got_var to MonoCompile.
21220
21221         * mini.h mini-x86.c mini-amd64.c aot.c: Rename 
21222         mono_arch_get_aot_patch_offset () to mono_arch_get_patch_offset () and
21223         make it work with all kinds of patchable code.
21224
21225         * inssel.brg inssel-x86.brg: Add new rules dealing with computing the
21226         address of the GOT, and referencing entries in the GOT.
21227
21228         * mini.c: Add code to load the GOT address if needed by an opcode.
21229
21230         * aot.c mini-x86.h mini-x86.c cpu-pentium.md: Add support for position 
21231         independent AOT code on the x86 using an elf-style Global Offset Table.
21232
21233 2004-12-14  Raja R Harinath  <rharinath@novell.com>
21234
21235         * Makefile.am (RUNTIME): Set MONO_SHARED_DIR.
21236
21237 2004-12-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21238
21239         * mini-x86.c: disabling the Interlocked optimizing code. It segfaults
21240         when running xsp.
21241
21242 2004-12-13  Patrik Torstensson  <patrik.torstensson@gmail.com>
21243
21244         * mini-x86.c,mini-ops.h,inssel-x86.brg,cpu-pentium.md: Implementation
21245         of Interlocked:Increment/Decrement/Add as inline ops.
21246         (mini-x86.c (mono_arch_get_inst_for_method and mono_arch_output_basic_block))
21247
21248 2004-12-12  Geoff Norton  <gnorton@customerdna.com>
21249
21250         * exceptions-ppc.c: Reorder code so gcc3.4 can compile it
21251         * mini-ppc.c: Unify mono_arch_patch_code with changes in r37636.
21252
21253 2004-12-12  Duncan Mak  <duncan@ximian.com>
21254
21255         * mini-ppc.c (mono_arch_patch_code): Hopefully made this build
21256         again. `patch_info->table_size' is no longer valid after Zoltan's
21257         commit #37636.
21258
21259 2004-12-12  Martin Baulig  <martin@ximian.com>
21260
21261         * mini.c (mono_method_to_ir): Only call mono_debug_init_method()
21262         if we are the "real" method, ie. not an inlined method inside it.
21263
21264 2004-12-11  Ben Maurer  <bmaurer@ximian.com>
21265
21266         * mini.c (CEE_LDSFLD): Make sure that the vtable has been init'd
21267         before we look in the special fields table. This fixes
21268         ../tests/thread-static-init.cs.
21269
21270 2004-12-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21271
21272         * mini.c: return immediately after setting OP_ARRAY_RANK or CEE_LDLEN
21273         for Array get_Rank and get_Length. Fixes bug #70465.
21274
21275 2004-12-11  Zoltan Varga  <vargaz@freemail.hu>
21276
21277         * mini.h mini.c aot.c: Put the bblock table for a SWITCH patch into a
21278         separate structure to reduce the size of MonoJumpInfo.
21279
21280 Fri Dec 10 18:09:22 CET 2004 Paolo Molaro <lupus@ximian.com>
21281
21282         * mini.c, mini.h, aot.c, driver.c: allow disabling the aot code.
21283
21284 2004-12-10  Patrik Torstensson  <patrik.torstensson@gmail.com>
21285
21286         * mini.c (mini_get_inst_for_method): Changed to allow ports
21287         to return a MonoInst instead of opcode 
21288         (renamed mini_get_opcode_for_method to better reflect the new functionality)
21289         
21290         * mini-[x86|s390|s390x|ppc|sparc].c (mono_arch_get_inst_for_method): 
21291         Allow ports to return a created MonoInst instead of op-code, will enable
21292         new optimizations.
21293         (renamed mini_get_opcode_for_method to better reflected the functionality)
21294
21295 2004-12-09  Zoltan Varga  <vargaz@freemail.hu>
21296
21297         * mini.c (NEW_AOTCONST): Share some code between the different NEW_AOTCONST macros.
21298
21299 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
21300
21301         * mini.c jit-icalls.c: Pass generic_context to mono_ldtoken_wrapper.
21302         Fixes #69985.
21303
21304 2004-12-08  Martin Baulig  <martin@ximian.com>
21305
21306         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use `fsig->signature'
21307         if we're a CEE_CONSTRAINED call.  Fixes gen-118.cs.
21308
21309 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
21310
21311         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_<X>
21312         correctly.
21313
21314         * exceptions.cs: Disable some tests which depend on properties of x86 fp
21315         arithmetic.
21316
21317 2004-12-08  Raja R Harinath  <rharinath@novell.com>
21318
21319         * Makefile.am (CLEANFILES): Add *.exe, *.dll.
21320
21321 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
21322
21323         * mini-sparc.c (mono_arch_output_basic_block): Fix LOCALLOC_IMM
21324         bug introduced by the previous patch.
21325
21326 Tue Dec 7 11:44:39 CET 2004 Paolo Molaro <lupus@ximian.com>
21327
21328         * mini-ppc.c, objectc.cs: handle large structs passed by value
21329         (fixes bug #69972).
21330
21331 Tue Dec 7 10:43:31 CET 2004 Paolo Molaro <lupus@ximian.com>
21332
21333         * mini-ppc.c: OP_ARGLIST implementation from
21334         Geoff Norton  <gnorton@customerdna.com>.
21335
21336 Tue Dec 7 10:14:25 CET 2004 Paolo Molaro <lupus@ximian.com>
21337
21338         * inssel-x86.brg, inssel-ppc.brg: fix reference to register
21339         in stmt: OP_OUTARG_VT (reg) (should fix bug #69785).
21340
21341 Tue Dec 7 10:06:39 CET 2004 Paolo Molaro <lupus@ximian.com>
21342
21343         * exceptions-ppc.c: avoid calling ppc_patch in exception trampolines.
21344
21345 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21346
21347         * inssel-s390.brgi, mini-ops.h, mini-s390.c : Add stubs for support of tls offset
21348         support.
21349
21350 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
21351
21352         * mini-sparc.c: Zero out localled-ed memory.
21353
21354         * iltests.il: Add tests for zeroing out localloc-ed memory.
21355
21356 2004-12-04  Martin Baulig  <martin@ximian.com>
21357
21358         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use the new
21359         mono_method_get_signature_full().       
21360
21361 2004-12-03  Massimiliano Mantione  <massi@ximian.com>
21362
21363         * mini.c: Added removal of critical edges (prerequisite for SSAPRE),
21364         and some utility functions (always for SSAPRE), integrated SSAPRE.
21365         * mini.h: Likewise.
21366         * driver.c: Added ssapre option.
21367         * ssa.c: Small fix on OP_ARG handling.
21368         * ssapre.c, ssapre.h: Added files containing SSAPRE implementation.
21369         * Makefile.am: Likewise.
21370
21371 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
21372
21373         * tramp-x86.c (mono_arch_create_jit_trampoline): Remove code which is
21374         now in the xp code.
21375
21376         * mini.c (mini_init): Register mono_thread_force_interruption_checkpoint
21377         icall.
21378
21379 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21380
21381         * inssel-s390.brg : Add OP_OUTARG_VT (OP_REFANYTYPE (reg)) rule.
21382         
21383         * cpu-s390.md : Increase instruction length of oparglist.
21384
21385         * mini-s390.c : Implement vararg and TYPEDEBYREF support.
21386
21387 2004-11-30  Martin Baulig  <martin@ximian.com>
21388
21389         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, added support for
21390         virtual generic methods.  We call a special helper_compile_generic_method()
21391         icall to retrieve the method from the vtable, inflate and compile
21392         it and then do a CEE_CALLI.  Thanks a lot to Paolo for this idea.
21393
21394         * jit-icalls.c (helper_compile_generic_method): New JIT icall.
21395
21396 2004-11-30  Zoltan Varga  <vargaz@freemail.hu>
21397
21398         * mini-sparc.c: Fix up vararg corner cases. Fixes #70019.
21399
21400 2004-11-29  Zoltan Varga  <vargaz@freemail.hu>
21401
21402         * cpu-sparc.md mini-sparc.c (long_conv_to_ovf_i): Fill missing delay slot.
21403         Fixes #69929.
21404
21405 2004-11-27  Ben Maurer  <bmaurer@ximian.com>
21406
21407         * inssel.brg (CEE_SWITCH): The AOT stuff Zoltan added is only for
21408         platforms with PIC aot.
21409
21410 2004-11-28  Martin Baulig  <martin@ximian.com>
21411
21412         * mini.c (mono_method_to_ir): In CEE_DUP, added handle_stobj().
21413         Fixes gen-112.cs.
21414
21415 2004-11-28  Martin Baulig  <martin@ximian.com>
21416
21417         * mini-x86.c (mono_arch_call_opcode): Use the original type, not
21418         the result of mono_type_get_underlying_type() to check whether
21419         we're byref.
21420
21421 2004-11-26  Martin Baulig  <martin@ximian.com>
21422
21423         * mini.c
21424         (mono_method_to_ir): Use `!method->signature->has_type_parameters'
21425         in the g_assert().
21426
21427 2004-11-26  Zoltan Varga  <vargaz@freemail.hu>
21428
21429         * mini-amd64.c (mono_arch_emit_this_vret_args): Handle this and vret
21430         the same way as the other arguments so they won't get clobbered.
21431
21432         * mini-amd64.c (mono_arch_output_basic_block): Avoid doing virtual 
21433         calls through R11 since it is clobbered by the trampoline code.
21434
21435 2004-11-26  Raja R Harinath  <rharinath@novell.com>
21436
21437         * Makefile.am: Consistently use $(RUNTIME) rather than ./mono to
21438         pick up in-tree mscorlib.dll.
21439
21440 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
21441
21442         * aot.c: Rename MonoAOTModule->cleanup to out_of_date.
21443
21444         * mini-amd64.c aot.c: Switch to PIC relative AOT code. References to 
21445         runtime data/code are now stored in a table similar to the GOT in ELF. 
21446         This allows the code itself to be position independent.
21447
21448         * aot.c: Fix loading of referenced assemblies after the lazy assembly
21449         loading changes.
21450
21451         * aot.c: Attach ELF type (object/function) directives to all global
21452         symbols.
21453
21454         * tramp-amd64.c (amd64_magic_trampoline): Patch RIP relative calls too.
21455
21456         * inssel.brg (SWITCH): Emit an AOT_CONST in the aot case.
21457
21458         * mini-amd64.h: Turn on PIC AOT code.
21459
21460         * mini.h (mono_arch_get_aot_patch_offset): New arch specific function
21461         returning the offset within an OP_AOTCONST instruction where the GOT
21462         offset needs to be added.
21463
21464         * mini.h: Bump AOT file format version.
21465
21466 2004-11-25  Martin Baulig  <martin@ximian.com>
21467
21468         * mini.c (mono_method_to_ir): In CEE_CALL, don't allow calling any
21469         uninflated generic methods.
21470
21471 2004-11-25  Martin Baulig  <martin@ximian.com>
21472
21473         * mini.c (mono_method_to_ir): Don't allow any uninflated generic methods.
21474
21475 2004-11-24  Martin Baulig  <martin@ximian.com>
21476
21477         * minit.c (type_to_eval_stack_type): Set `inst->klass' to the
21478         original klass (this only applies for generic instances).
21479
21480 2004-11-24  Martin Baulig  <martin@ximian.com>
21481
21482         * mini.c (mono_method_to_ir): Use `STACK_OBJ' instead of
21483         `ldind_type [CEE_LDIND_REF]' (which would be beyond the end of
21484         that array).
21485
21486 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
21487
21488         * mini.c (mono_method_to_ir): Disable inlining for methods containing
21489         localloc. Fixes #69678.
21490
21491         * iltests.il (test_0_localloc_inline): Add regression test for #69678.
21492         
21493 2004-11-23  Zoltan Varga  <vargaz@freemail.hu>
21494
21495         * mini-amd64.c (mono_arch_output_basic_block): Set %al to the number of
21496         used SSE registers on pinvoke calls. Fixes #69774.
21497
21498 2004-11-23  Geoff Norton  <gnorton@customerdna.com>
21499
21500         * inssel-ppc.brg, mini-ppc.c: Use mono_class_from_mono_type instead of
21501         vt->inst_vtype->data.klass.  This fixes generic structs and bug #69766
21502
21503 2004-11-23  Raja R Harinath  <rharinath@novell.com>
21504
21505         * Makefile.am (MCS,ILASM): Don't refer to runtime/ directory.
21506         Refer directly to the mcs/ tree.
21507
21508 2004-11-19  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21509
21510         * mini-s390.c, tramp-s390.c, mini-s390.h: Add LMF processing for trampolines.
21511         Check if a trampoline for a synchronized method is required. 
21512
21513 Fri Nov 19 17:34:21 CET 2004 Paolo Molaro <lupus@ximian.com>
21514
21515         * mini-ppc.c, cpu-g4.md: set to zero the memory allocated
21516         with localloc if needed. Throe arithmetric exception in
21517         div an rem if needed. Implement ovf checks in OP_LCONV_TO_OVF_I.
21518         Adapted from a patch by Geoff Norton  <gnorton@customerdna.com>.
21519
21520 2004-11-19  Geoff Norton  <gnorton@customerdna.com>
21521
21522         * mini-ppc.c: Call mono_type_get_underlying_type to unwrap generic
21523         types before switching on type.  Fixes #69622.
21524
21525 2004-11-19  Raja R Harinath  <rharinath@novell.com>
21526
21527         * Makefile.am (check-local): New.  Integrate into 'make check'.
21528         (MCS,RUNTIME): Define using in-tree mono and mcs.
21529         (ILASM): New.
21530         (%.exe): Use $(ILASM).
21531
21532 Fri Nov 19 14:54:07 CET 2004 Paolo Molaro <lupus@ximian.com>
21533
21534         * mini-ppc.c: adjust initial prolog size (bug #69691).
21535
21536 2004-11-18  Zoltan Varga  <vargaz@freemail.hu>
21537
21538         * cpu-pentium.md (localloc): Increase max instruction len. Fixes
21539         #69664.
21540
21541 2004-11-17  Raja R Harinath  <rharinath@novell.com>
21542
21543         * Makefile.am (clean-local): Rename from 'clean'.
21544
21545 2004-11-15  Nelae Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21546
21547         * mini.c, mini-x86.c, mini-amd64.c, exceptions-s390.c: Add siginfo_t parameter
21548         to mono_arch_is_int_overflow. 
21549         * exceptions-s390.c: Add mono_arch_is_int_overflow routine to discern between
21550         SIGFPE events.
21551
21552 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
21553
21554         * declsec.c|h: New files to support declarative security attributes.
21555         Added function to check if a method has (applicable) security.
21556         * mini.c|h: Add check for declarative security attributes in
21557         mono_method_check_inlining.
21558         * Makefile.am: Added declsec.c and declsec.h to the build.
21559
21560 Mon Nov 15 11:53:46 CET 2004 Paolo Molaro <lupus@ximian.com>
21561
21562         * mini.c, mini.h: update to keep dynamic code info per-domain.
21563
21564 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
21565
21566         * mini.c mini-*.h: Get rid of MONO_ARCH_HAVE_RETHROW since all architectures support it now.
21567         (mini_init): Get rid of it from here too.
21568
21569 Thu Nov 11 20:17:17 CET 2004 Paolo Molaro <lupus@ximian.com>
21570
21571         * mini-ppc.c, mini-ppc,h, cpu-g5.md, exceptions-ppc.c:
21572         implemented OP_RETHROW (patch by Geoff Norton
21573         <gnorton@customerdna.com>).
21574
21575 2004-11-10  Geoff Norton  <gnorton@customerdna.com>
21576
21577         * tramp-ppc.c (ppc_magic_trampoline): Don't trampoline methods
21578         between appdomains.  Fixes appdomain-unload on PPC.
21579
21580 2004-10-26  Lluis Sanchez Gual  <lluis@novell.com>
21581
21582         * exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
21583         mini-exceptions.c: handle the new wrapper types.
21584         * mini.c: The CEE_ISINST and CEE_CASTCLASS opcodes now take the
21585         token value as a MonoClass* when compiling a wrapper.
21586         mono_jit_create_remoting_trampoline now takes an additional
21587         MonoRemotingTarget parameter.
21588         
21589 2004-11-10  Martin Baulig  <martin@localhost>
21590
21591         * mini.c (mono_method_to_ir): Use `generic_container->context'
21592         rather than creating a new one.
21593
21594 2004-11-09  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21595
21596         * exceptions-s390.c, mini-s390, cpu-s390.md: Add support for OP_RETHROW.
21597
21598         * inssel-390.md, mini-s390.c: Correct register allocation for globals.
21599
21600 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
21601
21602         * aot.c (mono_aot_init): Add MONO_AOT_CACHE env variable to turn on
21603         the experimental aot cache stuff.
21604
21605 Tue Nov 9 17:30:20 CET 2004 Paolo Molaro <lupus@ximian.com>
21606
21607         * aot.c, mini.c, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
21608         mini-exceptions.c: update to exception clause structure changes.
21609
21610 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
21611
21612         * exceptions-x86.c (throw_exception): Fix warnings.
21613
21614         * mini-x86.h mini-x86.c cpu-pentium.md exceptions-x86.c: Add support 
21615         for OP_RETHROW.
21616
21617 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
21618
21619         * exceptions-sparc.c (get_throw_exception): Really fix this.
21620
21621 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
21622
21623         * tramp-*.c: we no longer support icalls without wrappers, so
21624         a bit of code can be removed here
21625
21626 2004-11-07  Zoltan Varga  <vargaz@freemail.hu>
21627
21628         * exceptions-sparc.c (get_throw_exception): Fix more bugs in previous
21629         patch.
21630
21631         * cpu-sparc.md: Add op_rethrow.
21632
21633         * exceptions-sparc.c (get_throw_exception): Fix bug in previous patch.
21634
21635         * mini-sparc.h mini-sparc.c exceptions-sparc.c: Add support for OP_RETHROW.
21636
21637         * mini.h: Add mono_arch_get_rethrow_exception () arch specific function.
21638         * mini-ops.h: Add OP_RETHROW.
21639
21640         * mini.c inssel.brg: Distinguish between THROW and RETHROW.
21641
21642         * cpu-amd64.c mini-amd64.c exceptions-amd64.c: Add support for OP_RETHROW.
21643
21644 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
21645         
21646         * helpers.c: Change otool arguments from -V -v -t to -v -t on Darwin
21647         Makes the output much easier to read
21648
21649 2004-11-05  Ben Maurer  <bmaurer@ximian.com>
21650
21651         * ssa.c: allocate MonoMethodVar.uses from the mempool. First, this
21652         prevents another huge leak when compiling with ssa. Secondly, the
21653         performance of doing this rather than freeing the lists is much
21654         better. GList does a lock every time you allocate a list link,
21655         so that it can use a memory pool. So, it is better to just use
21656         a memory pool of our own.
21657         
21658         * ssa.c, linear-scan.c: replace g_list_remove_link with
21659         g_list_delete.  The remove one does not free the GList, so we were
21660         leaking memory. On -O=all --compile-all with corlib, this cut down
21661         3 MB of allocations.
21662
21663 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
21664
21665         * tramp-sparc.c (mono_arch_create_jit_trampoline): Fix sparc build.
21666
21667         * tramp-amd64.c (mono_arch_create_jit_trampoline): Fix amd64 build.
21668
21669         * mini.h mini.c tramp-*.c: Moved xp parts of JIT trampoline creation
21670         into a new function mono_create_jit_trampoline ().
21671
21672 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
21673
21674         * trace.c (get_spec): Allow tracing of classes without a namespace.
21675
21676 2004-11-02  Sebastien Pouliot  <sebastien@ximian.com>
21677
21678         * mini.c: Fix pointer overwrite in mini_method_compile.
21679
21680 2004-11-2  Geoff Norton  <gnorton@customerdna.com>
21681
21682         * inssel-ppc.brg (OP_OUTARG_VT (CEE_LDOBJ (base))):
21683         The darwin ABI needs some special handling for 1 and 2 byte structs
21684         Lets use lbz/lhz instead of lwz everywhere.
21685         * mini-ppc.c (calculate_sizes):  The Darwin ABI needs from special handling
21686         for 1 and 2 byte structs and struct which are size >= 3 || size % 4 != 0.
21687         Use stb/sth for the former, and put the latter always on stack instead of in
21688         argument registers.
21689
21690 2004-10-30  Zoltan Varga  <vargaz@freemail.hu>
21691
21692         * trace.c (is_filenamechar): Add '_'.
21693
21694 2004-10-29  Neale Ferguson  <Neale.Ferguson@SoftwareAG-usa.com>
21695
21696         * mini-s390.c: Fix prolog length to allow for large trace requirements.
21697
21698         * exceptions-s390.c: Remove dwarf unwinding stuff that was unused.
21699
21700 2004-10-29  Zoltan Varga  <vargaz@freemail.hu>
21701
21702         * Makefile.am (libgc_libs): Do some automake magic so libmono/mono
21703         depends on libmonogc. Fixes #68805.
21704
21705 2004-10-26  Miguel de Icaza  <miguel@ximian.com>
21706
21707         * mini.c (mono_jit_free_method): Provide extra information for
21708         this error.  Currently this leaks, but will be turned into a
21709         developer option in the future.
21710
21711 2004-10-26  Zoltan Varga  <vargaz@freemail.hu>
21712
21713         * driver.c (mono_main): Applied patch from Willibald Krenn <willibald.krenn@gmx.at>. Make --graph work for icalls and pinvoke methods.
21714
21715 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
21716
21717         * aot.c (mono_aot_load_method): Align PATCH_INFO_R8 on an 8 byte 
21718         boundary. Fixes reading of PATCH_INFO_R4 and R8.
21719         (mono_aot_load_method): Do not allocate MonoAotMethod in the GC heap.
21720
21721 2004-10-24  Zoltan Varga  <vargaz@freemail.hu>
21722
21723         * mini-amd64.c (mono_arch_patch_code): Fix patching of class init
21724         trampolines for AOT code.
21725
21726 2004-10-22    <vargaz@freemail.hu>
21727
21728         * aot.c (mono_compile_assembly): Disable AOT for methods containing calls to methods of
21729         constructed types. Fixes #68136.
21730
21731 2004-10-21  Martin Baulig  <martin@ximian.com>
21732
21733         * exceptions-x86.c (throw_exception): Call mono_debugger_throw_exception();
21734         if it returns true, unwind the stack to the call instruction.
21735
21736 2004-10-21    <vargaz@freemail.hu>
21737
21738         * aot.c: Reorganize the AOT file format to avoid relocations. Fix warnings.
21739
21740         * mini.h: Bump AOT version number.
21741
21742         * objects.cs: Add another test for unbox trampolines.
21743
21744         * tramp-amd64.c (amd64_magic_trampoline): Disable patching of trampolines for 
21745         valuetype methods.
21746
21747 2004-10-20    <vargaz@freemail.hu>
21748
21749         * driver.c: Add SHARED to the set of optimizations tested.
21750
21751         * tramp-amd64.c (amd64_magic_trampoline): Patch trampoline code as well.
21752
21753         * mini.c (mono_method_to_ir): Mark the domainvar as volatile when it is implicitly
21754         used by CEE_NEWARR.
21755
21756         * ssa.c (mono_ssa_deadce): Do not optimize away accesses to volatile variables.
21757
21758 2004-10-20  Martin Baulig  <martin@ximian.com>
21759
21760         * mini-exceptions.c (mono_handle_exception): Call
21761         mono_debugger_handle_exception() to tell the debugger about
21762         catch/finally clauses.
21763
21764 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
21765
21766         * exceptions-amd64.c (mono_arch_find_jit_info): Pop arguments of the stack.
21767
21768         * mini-amd64.c (mono_amd64_get_vcall_slot_addr): Handle extended registers. Fixes
21769         #68447.
21770
21771 2004-10-15  Geoff Norton  <gnorton@customerdna.com>
21772
21773         * mini-ppc.c (calculate_sizes): Marshal valuetypes for pinvoke
21774         methods as their native size, fixed bug #57543, #57545.
21775         * mini-ppc.c (mono_arch_output_basic_block): Use mulli for imm16 types
21776         This saves a temporary register and mullw call down into 1 (minor perf
21777         increase for cases like sum = sum * 5;  This use to translate into:
21778             li r11,5
21779             mullw r28,r28,r11
21780         It now translates to
21781             mulli r28,r28,5
21782
21783 2004-10-15  Zoltan Varga  <vargaz@freemail.hu>
21784
21785         * trace.c (mono_trace_eval): Use mono_method_desc_full_match. Fixes
21786         #68388.
21787
21788 2004-10-11  Martin Baulig  <martin@ximian.com>
21789
21790         * mini.c (mono_method_to_ir): If we're a generic method, get the
21791         MonoGenericContainer from our MonoMethodNormal and create a
21792         MonoGenericContext from it.
21793
21794 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
21795
21796         * inssel-long32.brg (OP_LCONV_TO_OVF_I2): Fix CONV_I1 -> CONV_I2.
21797
21798         * basic-long.cs: Add test for checked i8->i2 cast.
21799
21800 Wed Oct 6 12:40:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
21801
21802         * inssel-ppc.brg: added a couple of speedup rules.
21803
21804 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
21805
21806         * Makefile.am (genmdesc_LDADD): Don't link this against libmetadata
21807         to speed up rebuilds.
21808
21809 2004-10-04  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21810
21811         * mini-s390.c: Minor fix to OP_OR_IMM.
21812
21813 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
21814
21815         * tramp-sparc.c (sparc_magic_trampoline): Handle appdomain stuff
21816         better. Fixes appdomain-unload.exe on sparc.
21817
21818 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
21819
21820         * ssa.c: Fixed casts to unsigned where the value was of 64 bits in
21821         simulate_long_compare, patch by will@exomi.com (Ville-Pertti Keinonen),
21822         see bug 67324.
21823
21824 2004-10-02  Zoltan Varga  <vargaz@freemail.hu>
21825
21826         * jit-icalls.c: Handle a nonexisting trunc function more correctly.
21827
21828 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
21829
21830         * mini.c: Always generate a field read/write wrapper for members
21831         of the class MarshalByRefObject since the actual instance could
21832         be a CBO.
21833
21834 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
21835
21836         * mini.c: Use mono_thread_exit() to stop threads, instead of ExitThread.
21837
21838 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
21839
21840         * driver.c mini.h trace.c: Move the setting of the main assembly into
21841         a separate function called mono_trace_set_assembly () and call it after
21842         actually loading the main assembly. Fixes #66872.
21843
21844 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
21845
21846         * mini-amd64.h mini-amd64.c tramp-amd64.c: Allocate trampoline memory
21847         using the code manager.
21848
21849 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
21850
21851         * tramp-amd64.c mini-amd64.h: Add support for MONO_ARCH_HAVE_INVALIDATE_METHOD.
21852
21853 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
21854
21855         * cpu-amd64.md: Fix bug in previous patch.
21856         
21857         * cpu-amd64.md: Fix instruction lengths of membase opcodes. Fixes
21858         #66650.
21859
21860 Wed Sep 22 19:03:20 CEST 2004 Paolo Molaro <lupus@ximian.com>
21861
21862         * mini.h, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
21863         mini-exceptions.c: updates for changed stack walk interface.
21864
21865 2004-09-21  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21866
21867         * mini-s390.c, cpu-s390.md: Minor changes to OP_ARGLIST handling
21868
21869 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
21870
21871         * mini.c (mono_method_to_ir): Fix LDSTR in dynamic methods. Fixes #66132.
21872
21873 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
21874
21875         * driver.c (mini_regression_list): Do not call mono_assembly_close 
21876         since assemblies can't be unloaded.
21877         
21878 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
21879
21880         * cpu-amd64.md: Fix more instruction lengths.
21881
21882         * cpu-amd64.md: Fix lengths of some instructions.
21883
21884 2004-09-11 Ben Maurer  <bmaurer@users.sourceforge.net>
21885
21886         * inssel.brg: Make the array ldelema check aot friendly.
21887
21888 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
21889
21890         * mini-amd64.c (mono_arch_get_argument_info): Fix stack_unwind test.
21891
21892         * cpu-amd64.md inssel-long.brg inssel-amd64.brg: Small optimizations.
21893
21894 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
21895
21896         * mini-x86.c: Fix build.
21897
21898         * mini-sparc.c mini-x86.c mini-amd64.c: Use the new 
21899         mono_type_get_underlying_type () helper function to simplify code.
21900         
21901 2004-09-09  Martin Baulig  <martin@ximian.com>
21902
21903         * mini-amd64.c: Don't access `type->data.klass' directly, call
21904         mono_class_from_mono_type() instead since the type may be a
21905         generic instance.
21906
21907 2004-09-09  Martin Baulig  <martin@ximian.com>
21908
21909         * mini-amd64.c (get_call_info): Fix support for generic instances.
21910         (add_valuetype): Use mono_class_from_mono_type() to get the class
21911         since we can be a generic instance.
21912
21913 Thu Sep 9 01:43:53 PDT 2004 Paolo Molaro <lupus@ximian.com>
21914
21915         * mini-ppc.c, mini.h, regalloc.c, regalloc.h: powerpc speedups.
21916
21917 2004-09-07 Ben Maurer  <bmaurer@users.sourceforge.net>
21918
21919         * liveness.c: reset spill costs on each scan: bug 62107
21920
21921 2004-09-07  Bernie Solomon  <bernard@ugsolutions.com>
21922
21923         * exceptions-sparc.c (mono_arch_find_jit_info): remove
21924         unnecessary line that doesn't compile
21925
21926 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
21927
21928         * mini.c mini.h mini-x86.h tramp-x86.c: Instead of freeing delegate
21929         trampolines, make them call an error function so people can fix their
21930         code.
21931
21932 2004-09-06  Martin Baulig  <martin@ximian.com>
21933
21934         * mini.c (mono_method_to_ir): When initializing locals, handle a
21935         generic instances like a valuetype if it's a valuetype and like a
21936         class if it's a class.
21937
21938 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
21939
21940         * exceptions-x86.c (mono_arch_find_jit_info): Pop arguments off the
21941         stack. Fixes #64674.
21942
21943         * exceptions.cs: Add test for unwinding of call arguments.
21944
21945 Mon Sep 6 05:50:02 PDT 2004 Paolo Molaro <lupus@ximian.com>
21946
21947         * mini-*.c, mini-ops.h, inssel-long32.brg: introduced
21948         OP_ADDCC_IMM and OP_SUBCC_IMM (add/sub immediate that will
21949         set the carry/borrow flag). The sparc and s390 implementations
21950         can now use optimized versions (and simplify the code). ppc bugfixes.
21951
21952 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
21953
21954         * exceptions-ppc.c (mono_arch_find_jit_info): Fix memory leak.
21955
21956 2004-09-05  Zoltan Varga  <vargaz@freemail.hu>
21957
21958         * inssel-amd64.brg: Remove leftover 32 bit rule.
21959
21960         * mini-amd64.c (mono_arch_instrument_prolog): Fix tracing support.
21961
21962 2004-09-04  Zoltan Varga  <vargaz@freemail.hu>
21963
21964         * mini-exceptions.c (mono_find_jit_info): Refactor common code from
21965         mono_arch_find_jit_info functions into a new function. Fix a memory
21966         leak.
21967
21968         * exceptions-x86.c exceptions-amd64.c exceptions-sparc.c: Remove
21969         refactored code.
21970         
21971 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
21972
21973         * exceptions.cs inssel-long32.brg: Handle the OP_LCONV_TO_OVF_I2 case
21974         as well.
21975         
21976         * exceptions.cs: Add array size tests.
21977
21978         * mini.c: Allocate a separate icall wrapper for each arity of 
21979         mono_array_new_va. Fixes #59509.
21980
21981         * exceptions.cs: Add testcase for 64578.
21982
21983         * inssel-long32.brg: Fix OP_LCONV_TO_OVF_I1 rule. Fixes #64578.
21984
21985         * trace.c (is_filenamechar): Allow 0..9 in strings. Fixes #65094.
21986         
21987 2004-09-02  Martin Baulig  <martin@ximian.com>
21988
21989         * mini.c (mono_method_to_ir): When initializing the locals, call
21990         handle_initobj() on the generic instance itself, not its
21991         underlying type.
21992
21993 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
21994
21995         * mini.h (MonoJitDynamicMethodInfo): New structure, extension of 
21996         MonoJitInfo for dynamic methods.
21997
21998         * mini.c: Rename trampoline_hash_mutex to jit_mutex.
21999
22000         * mini.c: Add support for freeing JIT data for dynamic methods.
22001         
22002 2004-09-01  Martin Baulig  <martin@ximian.com>
22003
22004         * mini-x86.c (is_regsize_var): Added support for generic
22005         instances.
22006         (mono_arch_emit_prolog): Make this compile again, use
22007         `x86_push_imm_template (code)'.
22008
22009 2004-08-30 Ben Maurer  <bmaurer@users.sourceforge.net>
22010
22011         * mini-x86.c: make all push_imm instructions that get
22012         patched always emit the long form
22013
22014 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
22015
22016         * mini.c (mono_create_jump_trampoline): Store the jump trampolines 
22017         in a per-domain hash.
22018
22019         * mini-amd64.c (merge_argument_class_from_type): Handle generic
22020         types.
22021
22022 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
22023
22024         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: Ongoing SSE
22025         work.
22026         
22027         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: More SSE
22028         work.
22029
22030         * mini-amd64.c cpu-amd64.md: Implement checked int<->uint casts.
22031         Beginnings of SSE2 support.
22032
22033         * exceptions.cs: Add more tests for checked int<->uint casts.
22034
22035 2004-08-28  Martin Baulig  <martin@ximian.com>
22036
22037         * mini-x86.c (mono_arch_instrument_epilog): Added support for
22038         generic instances.
22039
22040         * mini.c
22041         (mono_type_to_ldind, mono_type_to_stind, type_to_eval_stack_type):
22042         Handle generic instances recursively.
22043
22044 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
22045
22046         * iltests.il: test for conv.u8 on a constant
22047
22048 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
22049
22050         * inssel-long32.brg: c&p rules for LCONV_x4 (membase) and
22051         LCONV_x4 (shrun_32 (membase)).
22052
22053 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
22054
22055         * inssel-x86.brg: c&p rules for push/setret of long
22056
22057 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
22058
22059         * inssel-x86.brg: c&p rules for compare (base, regvar) and
22060         compare (regvar, base)
22061
22062         * inssel-x86.brg: more burg love
22063
22064         * inssel.brg: more cleanup
22065
22066         * inssel-x86.brg, inssel-long32.brg: burg cleanup.
22067
22068 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
22069
22070         * basic-long.cs, basic-calls.cs: new tests for optimization.
22071
22072 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
22073
22074         * mini-amd64.c (read_tls_offset_from_method): Fix typo in previous
22075         patch.
22076
22077 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
22078
22079         * mini-amd64.c (read_tls_offset_from_method): Add another case.
22080         
22081 2004-08-25  Bernie Solomon  <bernard@ugsolutions.com>
22082
22083         * inssel.brg (mini_emit_memcpy): use 
22084         NO_UNALIGNED_ACCESS to disable memcpy optimization
22085
22086 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
22087
22088         * mini-amd64.c: Handle generic types in various places.
22089
22090         * mini.c (mono_method_to_ir): Handle generic types in init locals.
22091
22092 2004-08-24  Zoltan Varga  <vargaz@freemail.hu>
22093
22094         * mini.c (handle_box): Fix warning.
22095
22096         * mini-amd64.c (mono_arch_local_regalloc): Fix regalloc problem.
22097
22098         * mini-amd64.h: Enable the emit_state optimization.
22099
22100         * mini-ops.h cpu-amd64.md: Add new amd64_test_null opcode.
22101
22102         * mini-amd64.c: Add some new 64 bit peephole opts.
22103
22104         * inssel.brg (mini_emit_memcpy): Optimize for 64 bit architectures.
22105
22106         * cpu-amd64.md: sreg1 of div instructions must be %rax.
22107
22108         * mini-amd64.c: Register allocator fixes.
22109
22110         * mini.c: Add an optimization to emit_state to avoid allocation of new
22111         registers on some platforms.
22112
22113 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
22114
22115         * inssel-x86.brg inssel-amd64: Add yet another missing tree->dreg assignment.
22116
22117         * mini-x86.c (mono_arch_local_regalloc): Fix bug in long register
22118         allocation. Fixes #63085.
22119
22120         * basic-long.cs: Add new regression test.
22121
22122         * mini-amd64.c: Register allocator improvements.
22123
22124 2004-08-21  Zoltan Varga  <vargaz@freemail.hu>
22125
22126         * mini-amd64.c (read_tls_offset_from_method): Add another code
22127         sequence.
22128
22129         * tramp-amd64.c (amd64_class_init_trampoline): Use a more efficient
22130         instruction sequence for nullifying class init trampolines.
22131
22132         * objects.cs: Add new regalloc test.
22133
22134         * mini-amd64.c inssel-amd64.brg: Optimize parameter passing.
22135
22136 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
22137
22138         * mini-amd64.c (mono_arch_call_opcode): Refactor this a little.
22139         
22140         * mini-amd64.c (mono_arch_regalloc_cost): Adjust regalloc costs for
22141         arguments.
22142
22143         * driver.c: Fix profiling after TLS changes.
22144         
22145         * driver.c (mono_main): Set mono_stats.enabled if needed.
22146
22147         * mini.c (handle_alloc): New helper function used by CEE_NEWOBJ and
22148         CEE_BOX.
22149
22150 2004-08-20 Ben Maurer  <bmaurer@users.sourceforge.net>
22151
22152         * mini-x86.c: use a 1 op rather than a 2 op tls access
22153         instruction -> faster.
22154
22155 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
22156
22157         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from
22158         x86 backend.
22159
22160 2004-08-19 Bernie Solomon <bernard@ugsolutions.com>
22161
22162         * exceptions-sparc.c (throw_exception): fix typo
22163
22164 2004-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
22165
22166         * mini-x86.c, cpu-pentium.md, inssel-x86.brg:
22167         set tree->dreg correctly with tls. Allow any
22168         register to be used.
22169
22170         * mini-x86.c (read_tls_offset_from_method): add new code
22171         generation pattern seen with GCC.
22172
22173
22174 Thu Aug 19 17:26:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
22175
22176         * mini-exceptions.c, exceptions-x86.c, exceptions-amd64.c,
22177         exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
22178         exceptions-sparc.c: fix some performance issues in exception
22179         handling and setting of the stack trace for exceptions that were
22180         already thrown.
22181
22182 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
22183
22184         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from 
22185         x86 backend.
22186         
22187         * mini-amd64.c (mono_arch_is_int_overflow): Handle all possible 
22188         registers.
22189
22190 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
22191
22192         This patch inlines tls access, when possible.
22193         
22194         * mini.h: new arch functions for TLS intrinsics.
22195         All platforms updated with a stub.
22196
22197         * mini.c: use the new intrinsics
22198
22199         * mini-x86.c, cpu-pentium.md, inssel-x86.brg, mini-ops.h:
22200         arch specific intrinsic for tls variables
22201
22202 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
22203
22204         * Makefile.am (libmono_la_LDFLAGS): Enable creating of libmono dll
22205         under windows.
22206
22207 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
22208
22209         * mini.c: thread local allocation
22210
22211 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
22212
22213         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Enable.
22214
22215         * Makefile.am: Link against the static version of libmonogc.
22216         
22217         * Makefile.am: Link the static versions of the convenience libraries
22218         into the mono executable.
22219
22220         * mini-x86.h mini-x86.c: Throw the correct exception on integer overflow.
22221
22222 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
22223
22224         * mini.h mini.c mini-amd64.h mini-amd64.c: Throw the correct exception
22225         on integer overflow.
22226
22227         * mini-amd64.c: Reorganize function call code.
22228
22229         * mini-amd64.c (peephole_pass): Merge changes from mini-x86.c.
22230
22231 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
22232
22233         * inssel-x86.brg: use xor eax,eax.
22234         
22235         * basic.cs: new tests
22236
22237 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
22238
22239         * mini-amd64.c (mono_arch_emit_epilog): Use RIP relative addressing
22240         in exception throwing code.
22241         
22242 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
22243
22244         * inssel-x86.brg: use xor esi,esi.
22245
22246 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
22247
22248         * driver.c (mono_main): Call mono_trace_parse_options earlier so it
22249         can trace methods compiled during mini_init () too.
22250
22251         * cpu-amd64.md mini-amd64.c (mono_arch_output_basic_block): Handle 
22252         CEE_CONV_U4.
22253
22254 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
22255
22256         * Makefile.am: static link on x86 (r=zoltan)
22257
22258 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
22259
22260         * tramp-amd64.c (amd64_magic_trampoline): Avoid patching the trampoline
22261         code since it causes some programs to fail.
22262
22263 2004-08-12  Zoltan Varga  <vargaz@freemail.hu>
22264
22265         * mini-amd64.c (bb_is_loop_start): Merge changes from mini-x86.c.
22266
22267 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
22268
22269         * mini.c: ovfops_op_map - add STACK_OBJ case for
22270         CONV_I 
22271         * basic.cs: add test_0_pin_string as test
22272         case for above.
22273
22274 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
22275
22276         * Makefile.am: build C# if srcdir != builddir
22277
22278 Tue Aug 10 19:23:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
22279
22280         * dominators.c, mini.h, mini-x86.c: fix loop alignment with
22281         fall-through blocks.
22282
22283 Tue Aug 10 16:18:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
22284
22285         * driver.c: enable loop by default again and include abcrem in -O=all.
22286
22287 2004-08-08  Zoltan Varga  <vargaz@freemail.hu>
22288
22289         * iltests.il: Add some localloc tests.
22290
22291         * mini.c (mono_method_to_ir): Set stack type of LOCALLOC correctly.
22292
22293         * inssel-amd64.brg inssel-x86.brg: Set dreg of LOCALLOC correctly. 
22294         Fixes #62574.
22295
22296         * inssel-amd64.brg: Add some optimizations.
22297
22298         * mini-amd64.c (mono_arch_setup_jit_tls_data): Add tls offset detection
22299         for gcc-3.4.
22300
22301         * Makefile.am: Statically link mono against libmono on AMD64.
22302         
22303         * mini-amd64.c inssel-amd64.brg: Optimizations.
22304
22305 2004-08-07  Zoltan Varga  <vargaz@freemail.hu>
22306
22307         * mini-amd64.c (mono_arch_emit_prolog): Optimize lmf saving a bit.
22308
22309         * tramp-amd64.c: Patch calling code in trampolines.
22310
22311 2004-08-06  Zoltan Varga  <vargaz@freemail.hu>
22312
22313         * mini-amd64.c: pinvoke struct passing fixes.
22314
22315 2004-08-05  Bernie Solomon  <bernard@ugsolutions.com>
22316
22317         * mini-sparc.c: redo change, make mono_arch_cpu_init call
22318         mono_arch_cpu_optimizazions so sparcv9 is initialized when embedded
22319
22320 2004-08-05  Duncan Mak  <duncan@ximian.com>
22321
22322         * mini.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
22323         CEE_LDELEM_ANY.
22324
22325 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
22326
22327         * mini-amd64.c (emit_move_return_value): Move return value for normal
22328         calls too.
22329
22330 2004-08-05  Martin Baulig  <martin@ximian.com>
22331
22332         * mini.c (ret_type_to_call_opcode): Don't use a `t' variable for
22333         `type->type'; just modify `type' itself when dealing with enums
22334         and generic instances.
22335         (check_call_signature): Make `simple_type' a `MonoType *'.
22336
22337 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
22338
22339         * mini.c: Use OP_PADD to add offsets to addresses.
22340
22341         * mini-amd64.h: Disable SIGSEGV_ON_ALTSTACK.
22342
22343 2004-08-04  Bernie Solomon  <bernard@ugsolutions.com>
22344
22345         * mini-sparc.c (mono_arch_emit_epilog): fix check
22346         for folding last op into restore instruction
22347
22348 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
22349
22350         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Allocate
22351         helper methods using the code manager.
22352         
22353         * exceptions-amd64.c (mono_arch_get_throw_exception): Fix maximum length.
22354
22355         * mini-amd64.c (mono_arch_allocate_vars): Fix tls offset detection.
22356
22357 Tue Aug 3 23:50:00 EST 2004 Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
22358         
22359         * mini-s390x.c mini-s390x.h tramp-s390x.c inssel-s390x.brg
22360           cpu-s390x.md exceptions-s390x.c Makefile.am: S/390 64-bit JIT
22361
22362         * mini-s390.c: fix tail processing
22363
22364 Tue Aug 3 01:35:44 PDT 2004 Paolo Molaro <lupus@ximian.com>
22365
22366         * mini-ppc.c: mul.ovf.un exception name fix.
22367
22368 2004-08-03  Martin Baulig  <martin@ximian.com>
22369
22370         * mini-x86.c (mono_arch_call_opcode): Correctly handle generic
22371         instances; before jumping to `handle_enum', also modify `ptype'.
22372
22373 2004-08-02  Bernie Solomon  <bernard@ugsolutions.com>
22374
22375         * cpu-sparc.md: fcall maximal length too small.
22376
22377 2004-08-02  Zoltan Varga  <vargaz@freemail.hu>
22378
22379         * mini-amd64.c mini.h: Add initial support for passing/returning 
22380         structures to/from pinvoked methods.
22381
22382 Mon Aug 2 11:59:35 PDT 2004 Paolo Molaro <lupus@ximian.com>
22383
22384         * mini-ppc.c: reg allocator fix.
22385
22386 2004-07-31  Zoltan Varga  <vargaz@freemail.hu>
22387
22388         * mini-amd64.c (mono_arch_output_basic_block): Fix OP_X86_PUSH_OBJ.
22389
22390         * inssel.brg: Optimize memset on 64 bit machines.
22391
22392         * mini-amd64.c: Fix some vararg cases.
22393
22394 2004-07-30  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
22395
22396         * mini-s390.c: Corrected macro in emit_float_to_int
22397
22398         * s390-abi.cs: Tests to exercise the s390 ABI
22399
22400 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
22401
22402         * exceptions-amd64.c (mono_arch_find_jit_info): Fix restoring of
22403         caller saved regs.
22404
22405         * basic.cs: Add a test for add.ovf.un.
22406
22407 2004-07-30  Bernie Solomon  <bernard@ugsolutions.com>
22408
22409         * mini-sparc.c: add case for OP_IDIV_UN
22410
22411 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
22412
22413         * mini-amd64.c mini-amd64.h mini.c: Add support for vararg pinvoke calls.
22414         
22415         * mini-amd64.c cpu-amd64.md: Ongoing JIT work.
22416
22417 2004-07-30  Ben Maurer  <bmaurer@ximian.com>
22418
22419         * basic.cs: regression tests.
22420
22421         * inssel-x86.brg: Disable cmp BYTE PTR [eax], imm, it causes various
22422         regressions.
22423
22424 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
22425
22426         * basic.cs: Add a new test.
22427
22428         * mini-amd64.c aot.c cpu-amd64.md: Add support for tracing, profiling 
22429         and AOT. Various fixes and optimizations.
22430
22431         * inssel.brg (CALL_REG): Add 64 bit versions of call_reg rules.
22432
22433 Fri Jul 30 15:49:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
22434
22435         * mini-ppc.c: make sure temp regs are not used for global reg
22436         allocation.
22437
22438 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
22439
22440         * cpu-sparc.md: conv_i8 fix for 64bits
22441
22442         * mini-sparc.c: add cases for OP_IXXX codes for 64bits
22443
22444 2004-07-29  Ben Maurer  <bmaurer@ximian.com>
22445         
22446         * cpu-pentium.md, mini-x86.c, inssel-x86.brg, mini-ops.h:
22447         add opcode for cmp BYTE PTR [eax], imm.
22448
22449         * inssel.brg: Make memcpy and memset takes bases.
22450
22451 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
22452
22453         * *-amd64.*: More AMD64 work.
22454         
22455 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
22456
22457         * cpu-pentium.md, inssel-x86.brg, mini-ops.h, mini-x86.c:
22458         add a compare-not-equal opcode.
22459         
22460 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
22461
22462         * mini.c: Use mono_init_from_assembly instead of mono_init.
22463         
22464 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
22465
22466         * mini.c: Fix opcode mapping for STACK_MP on 64 bit platforms.
22467
22468         * mini.c (CEE_NEWOBJ): Call mono_array_new_va using the correct signature.
22469
22470         * mini.c: Use MONO_ARCH_SIGACTION on AMD64 as well.
22471
22472         * inssel.brg: 64 bit fixes.
22473
22474         * mini.h (MonoCallInst): Add some AMD64 specific data.
22475
22476         * mini.h: Add some OP_P opcodes.
22477
22478 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
22479
22480         * basic.cs: tests for 61797 and 61740
22481
22482 Tue Jul 27 16:05:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
22483
22484         * mini-ppc.c, mini-sparc.c, mini-s390.c: keep track of line
22485         numbers in the debug info (spotted by Geoff Norton, <gnorton@customerdna.com>).
22486
22487 2004-07-24  Zoltan Varga  <vargaz@freemail.hu>
22488
22489         * mini-sparc.c (mono_arch_output_basic_block): Add CEE_CONV_U8/I8.
22490
22491         * *-amd64*.*: Ongoing AMD64 work.
22492
22493 2004-07-23 Zoltan Varga <vargaz@freemail.hu>
22494
22495         * inssel-long.brg: Implement CONV_I8/CONV_U8 in the backends.
22496
22497         * *-amd64*: Ongoing AMD64 work.
22498
22499         * mini-arch.h: Add AMD64 support.
22500
22501         * mini-sparc.c (mono_arch_is_inst_imm): New arch dependent function.
22502
22503         * mini.h: Add new arch dependent function mono_arch_is_inst_imm.
22504
22505         * mini-ops.h: Add new opcodes.
22506
22507         * Makefile.am: Add AMD64 support.
22508
22509         * inssel.brg inssel-long32.brg inssel-long.brg: Move mul/div and shift
22510         rules into the inssel-long*.brg files.
22511
22512         * *-amd64.*: Add beginnings of AMD64 backend.
22513
22514 2004-07-22  Ben Maurer  <bmaurer@ximian.com>
22515
22516         * mini.c (print_dfn): commenting out the code that prints
22517         the cil. With -O=deadce, this makes -v -v crash.
22518         
22519         * cpu-pentium.md: make checkthis have a length of 2
22520
22521 2004-04-21  Bernie Solomon  <bernard@ugsolutions.com>
22522
22523         * mini-sparc.h: fix implementations of __builtin
22524         functions for Sun compiler for V9.
22525
22526 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
22527
22528         * mini.c: use the new stelem.ref wrapper
22529         * exceptions.cs, arrays.cs: new stelem.ref tests
22530
22531 Wed Jul 14 19:08:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
22532
22533         * mini-ppc.c, exceptions-ppc.c: cleanups and fixes (the
22534         new XSP should work with these changes).
22535
22536 2004-07-14  Ben Maurer  <bmaurer@ximain.com>
22537         
22538         * inssel-{long32,x86,}.brg: trivial optimizations.
22539         
22540 Mon Jul 12 20:25:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
22541
22542         * mini.c: load value when emitting box operation in
22543         constrained calls.
22544
22545 2004-07-12  Ben Maurer  <bmaurer@ximian.com>
22546
22547         * mini-x86.c (OP_CHECK_THIS): cmp DWORD PTR [eax], eax
22548         is one byte shorter than cmp DWORD PTR [eax], 0.
22549
22550 Mon Jul 12 17:47:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
22551
22552         * inssel-ppc.brg: arguments on the stack are always
22553         relative to the stack pointer (spotted by Neale Ferguson).
22554
22555 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22556
22557         * exceptions-x86.c: delay appending the method name to the trace until
22558         after mono_jit_info_table_find is called, as this gets the real
22559         MonoMethod.
22560
22561 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
22562
22563         * aot.c: register roots
22564
22565 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
22566
22567         * aot.c : I could just use PLATFORM_WIN32 flag.
22568
22569 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
22570
22571         * aot.c : Reverting the previous fix. This time it broke linux build.
22572
22573 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
22574
22575         * aot.c : quick cygwin build fix. mkdir() with two args does not exist.
22576
22577 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
22578
22579         * mini.c (handle_stack_args): Remove some more debugging code.
22580         
22581         * mini.c (handle_stack_args): Remove debug output left in by mistake.
22582
22583         * driver.c mini.h aot.c: Allow additional options to be specified with
22584         --aot and pass them to mono_compile_assembly.
22585
22586         * aot.c: Add experimental code to AOT compile all loaded assemblies
22587         on demand and save the code into a cache in the filesystem.
22588
22589         * aot.c: Add support for more wrapper methods.
22590         
22591         * mini.c (handle_stack_args): Handle some corner cases. Fixes 
22592         58863.
22593
22594         * cpu-*.md: Remove removed opcodes.
22595
22596         * mini.h mini.c: Move JIT icall handling to icall.c. Replace usage of
22597         CEE_MONO_PROC<x> with CEE_MONO_ICALL. Move registration of marshalling
22598         related icalls to marshal.c.
22599
22600 2004-07-06  Zoltan Varga  <vargaz@freemail.hu>
22601
22602         * mini-ops.h: Add OP_SAVE_LMF and OP_RESTORE_LMF.
22603
22604         * Makefile.am (EXTRA_DIST): Add inssel-long[32].brg.
22605
22606         * inssel.brg: Fix warning. Add rules for SAVE_LMF and RESTORE_LMF.
22607
22608 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
22609         * liveness.c: If liveness is recomputated we need to reset the information
22610         for each variable. This way, if the liveness range has been narrowed
22611         by optimizations that happened after the last computation, we can return
22612         a smaller range.
22613         
22614         For example, if you have
22615         
22616         {
22617                 int i = 0;
22618                 
22619                 // Tons of code that does not affect i
22620                 
22621                 i = foo ();
22622                 ...
22623         }
22624         
22625         i = 0 is dead code and will be removed by SSA. However, when
22626         linear scan gets to the code, i will still appear to be live
22627         throughout the entire block. This prevents good register allocation.
22628
22629 2004-07-06  Martin Baulig  <martin@ximian.com>
22630
22631         * debug-mini.c (mono_debug_init_method): Allow
22632         MONO_WRAPPER_MANAGED_TO_NATIVE wrappers.
22633         (mono_debug_add_icall_wrapper): New method.
22634
22635         * mini.c (mono_icall_get_wrapper): Call mono_debug_add_icall_wrapper().
22636
22637 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
22638
22639         * mini.c (optimize_branches): Fix linking of bblocks in branch->branch
22640         optimization.
22641
22642 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
22643
22644         * aot.c (mono_aot_load_method): Fix loading of debug info.
22645
22646 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
22647
22648         * aot.c: Add logging support.
22649
22650 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
22651
22652         * mini.h: Add prototype for mono_print_method_from_ip.
22653
22654         * mini.c: 64 bit fixes. Use LCOMPARE for comparing longs.
22655
22656         * inssel.brg: 64 bit fixes.
22657
22658         * inssel.brg inssel-long32.brg: Move 32 bit arithmetic rules to 
22659         inssel-long32.brg.
22660
22661         * Makefile.am: Add SPARC64 support.
22662
22663 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
22664
22665         * aot.c: Fix alignment problems on 32 bit platforms.
22666
22667 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
22668
22669         * helpers.c (mono_disassemble_code): Pass -xarch=v9 to assembler on
22670         SPARC64.
22671
22672         * aot.c: Add SPARC64 support. Reorganize patch table to fix alignment
22673         problems.
22674
22675         * mini.h: Bump AOT file version. Some 64 bit fixes.
22676
22677 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
22678
22679         * inssel-sparc.brg: Add new rule to avoid register moves.
22680
22681         * inssel.brg: Add ldind_to_load_membase helper function.
22682
22683 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
22684
22685         * mini.c: OffsetToStringData intrinsic.
22686         
22687 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
22688
22689         * ssa.c: Handle OP_LCOMPARE the same as OP_COMPARE.
22690
22691         * objects.cs exceptions.cs basic.cs basic-long.cs basic-calls.cs: New
22692         regression tests.
22693
22694         * mini-ops.h cpu-sparc.md mini-sparc.h mini-sparc.c exceptions-sparc.c tramp-sparc.c inssel-long.brg: Add SPARC64 support.
22695 Mon Jun 28 18:05:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
22696
22697         * mini.c: reinstated mono_compile_get_interface_var()
22698         on x86, too, since the change breaks the Gtk# build there as well.
22699
22700 Fri Jun 25 17:36:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22701
22702         * driver.c: remove loop from the default optimizations: it seems to
22703         interact badly with some of the other options (see bug #60613).
22704
22705 2004-06-25  Zoltan Varga  <vargaz@freemail.hu>
22706
22707         * mini.c mini-x86.h mini-x86.c: Applied patch from Guenter Feldmann 
22708         (fld@informatik.uni-bremen.de): Add Solaris x86 support.
22709
22710 Tue Jun 22 21:29:11 CEST 2004 Paolo Molaro <lupus@ximian.com>
22711
22712         * mini-ppc.c, cpu-g4.md: small updates to be able to compile
22713         vararg-using methods.
22714
22715 2004-06-21  Martin Baulig  <martin@ximian.com>
22716
22717         * mini/mini-exceptions.c
22718         (mono_handle_exception): Added `gpointer original_ip' argument.
22719         After calling mono_unhandled_exception(), call
22720         mono_debugger_unhandled_exception() and if that returns true,
22721         restore the context and return.
22722
22723 Mon Jun 21 19:26:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
22724
22725         * mini-ppc.c: prefer the use of relative branches so
22726         they won't need to be patched in aot code (patch from Patrick Beard).
22727
22728 Mon Jun 21 19:03:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
22729
22730         * aot.c: patch from Patrick Beard to make the output assembly
22731         more correct for the MacOSX assembler. Small tweak to
22732         generate sane images on Linux/PPC, too.
22733
22734 Fri Jun 18 18:24:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22735
22736         * mini.c, mini.h, mini-ppc.c: handle varargs methods with a special
22737         case until bug #59509 is fixed (shows up in #60332).
22738
22739 Tue Jun 15 16:36:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
22740
22741         * mini.c: make sure the needed wrappers are compiled, too, with
22742         precomp.
22743
22744 Mon Jun 14 18:36:08 CEST 2004 Paolo Molaro <lupus@ximian.com>
22745
22746         * driver.c: remove NPTL reference in --version output.
22747
22748 Sun Jun 13 17:25:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22749
22750         * aot.c: patch from Patrick Beard (pcbeard@mac.com) to
22751         generate valid assembly for the Mach-O assembler.
22752
22753 Sun Jun 13 15:59:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
22754
22755         * driver.c: don't include abcrem in the all optimization specifier
22756         since it slows down jit compilation too much for now.
22757
22758 2004-06-12 Ben Maurer  <bmaurer@users.sourceforge.net>
22759
22760         * mini.c: use BIGMUL only if both operands have the same signage.
22761         * iltests.il: Test for bug 60056. (errors related to signage in
22762         BIGMUL).
22763
22764         r=lupus.
22765
22766 Thu Jun 10 16:06:42 CEST 2004 Paolo Molaro <lupus@ximian.com>
22767
22768         * mini.c, aot.c: memory leak fixes.
22769
22770 Tue Jun 8 16:37:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
22771
22772         * inssel-long32.brg: implemented a few missing ulong cast opcodes.
22773
22774 Tue Jun 8 15:36:30 CEST 2004 Paolo Molaro <lupus@ximian.com>
22775
22776         * Makefile.am: remove the -static hack completely, it links in
22777         statically glib as well.
22778
22779 Sat Jun 5 16:32:33 CEST 2004 Paolo Molaro <lupus@ximian.com>
22780
22781         * iltests.il, mini.c: fixed bug#59580 in branch optimization.
22782         * exceptions.cs: make it compile with new mcs/csc.
22783
22784 2004-06-03 Massimiliano Mantione <massi@ximian.com>
22785         * cpu-pentium.md basic-float.cs Fixed bug on fpu spills (see bug 54467),
22786         and added relevant test case.
22787
22788 Mon May 31 19:41:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
22789
22790         * mini.c revert Zoltan's fix to bug#58863 on ppc, since it causes
22791         regressions in gtk-sharp.
22792
22793 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
22794
22795         * exceptions.cs: New regression tests.
22796
22797         * jit-icalls.c (mono_llmult_ovf): Fix some boundary conditions.
22798
22799 Sat May 29 10:45:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
22800
22801         * mini.c: emit castclass/isinst in their own trees (bug #54209/59057).
22802
22803 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
22804
22805         * mini-sparc.h (MONO_ARCH_NEED_DIV_CHECK): Define this.
22806
22807         * cpu-sparc.md mini-sparc.c: Add overflow detection to div opcodes.
22808
22809 2004-05-28      Patrik Torstensson <totte@hiddenpeaks.com>
22810
22811         * mini.c (mono_jit_runtime_invoke): Init class in this
22812         method instead of trusting mono_jit_compile_method to
22813         do the work (because wrappers can be in object class)
22814
22815 2004-05-27  Zoltan Varga  <vargaz@freemail.hu>
22816
22817         * mini-sparc.c (mono_arch_output_basic_block): Fix sub.imm.
22818
22819         * basic-long.cs: New regression test.
22820
22821 Thu May 27 15:50:52 CEST 2004 Paolo Molaro <lupus@ximian.com>
22822
22823         * cpu-g4.md, mini-ppc.c: fixes to long add/sub ovf opcodes
22824         and div/rem checks.
22825
22826 Thu May 27 12:36:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
22827
22828         * Makefile.am: fix miguel's change to build mono statically against
22829         libmono (track build dependencies).
22830
22831 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
22832
22833         * cfold.c: Some glib versions do not have G_MININT32.
22834
22835 2004-05-26  Massimiliano Mantione  <massi@ximian.com>
22836
22837         * mini-x86.c cpu-pentium.md Makefile.am basic-math.cs: Fixed problem
22838         with precision of tan, atan, sin and cos, and implemented related
22839         regressions tests (fixes bug 54467, but one new problem appeared and
22840         is not fixed yet).
22841
22842 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
22843
22844         * cfold.c (FOLD_BINOPZ): Avoid division by zero.
22845
22846         * exceptions.cs: Add test for constant folding && division by zero.
22847
22848         * driver.c mini.h mini.c mini-x86.c: Revert most of the previous patch
22849         since driver.c is in libmono too, so the optimization was useless.
22850
22851         * driver.c mini.h mini.c mini-x86.c: Moved the mono_lmf_addr TLS 
22852         variable to driver.c so the compiler can emit more efficient code to
22853         access them.
22854
22855 2004-05-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22856
22857         * Makefile.am: don't distribute generated inssel.[ch] files.
22858
22859 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
22860
22861         * mini.c (mono_jit_compile_method_with_opt): Really emit icall wrappers
22862         into the default appdomain. Fixes #58707.
22863
22864         * jit-icalls.c: Remove the broken approximation for truncl, doing
22865         no conversion is better.
22866
22867         * mini.c (handle_stack_args): Avoid reusing variables for stack slots.
22868         Fixes #58863.
22869
22870 Tue May 25 14:33:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
22871
22872         * mini-ops.h, mini-ppc.c, cpu-g4.md, inssel-ppc.brg: eliminate the use
22873         of the mcrxr instruction which is not available on some processors
22874         even if it's documented to be. Implement add and sub overflow correctly
22875         (still not complete for long unsigned). Speed up icalls a bit.
22876
22877 2004-05-25 13:01 CET Patrik Torstenson <totte@hiddenpeaks.com>
22878
22879         * mini.c (mono_jit_compile_method_with_opt): Make sure that
22880         we run .cctor in the current domain instead of target_domain.
22881         
22882         Fixes bug #58558, .cctor not being called in -O=shared.
22883
22884 Tue May 25 12:46:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
22885
22886         * mini-ppc.h, jit-icalls.c: added explicit checks for divide by zero.
22887
22888 2004-05-24 Ben Maurer  <bmaurer@users.sourceforge.net>
22889
22890         * mini-x86.c (EMIT_COND_BRANCH): If an OP_LABEL has an offset
22891         which can be done with an imm8, do it that way.
22892         (mono_arch_output_basic_block): ditto for a jmp
22893         (mono_arch_emit_prolog): Computate maximum offset of a label.
22894
22895 2004-05-24 18:18 CET Patrik Torstenson <totte@hiddenpeaks.com>
22896
22897         * mini-x86.c (mono_arch_local_regalloc): the reg allocator
22898         now tries to allocate prefered physical reg's for virtual
22899         regs. This reduces the number of emited spills/loads with
22900         20-30% on our core assemblies.
22901
22902 Mon May 24 18:21:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
22903
22904         * jit-icalls.c: truncl() is not needed and trunc() is
22905         the correct thing to do anyway (bug #58287).
22906
22907 2004-05-24  Zoltan Varga  <vargaz@freemail.hu>
22908
22909         * mini-sparc.c (mono_arch_flush_icache): Call sync_instruction_memory
22910         if available.
22911
22912 Mon May 24 12:49:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
22913
22914         * driver.c: enable loop optimizations by default.
22915
22916 Mon May 24 11:13:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
22917
22918         * mini-x86.c: fix calc of max loop size when aligning loops start.
22919
22920 2004-05-23  Zoltan Varga  <vargaz@freemail.hu>
22921
22922         * ssa.c (mono_ssa_cprop): Allocate carray dynamically instead of on
22923         the stack.
22924
22925 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
22926
22927         * mini-sparc.c (mono_arch_output_basic_block): ADD_IMM and SUB_IMM
22928         should set carry.
22929
22930         * basic-long.cs: Add tests for add/subtract of immediates with carry.
22931
22932         * mini.c exceptions-x86.c: Remove MONO_USE_EXC_TABLES stuff.
22933         
22934         * mini.c (inline_method): Allways inline some wrappers even if the cost
22935         is too large. Fixes #58785.
22936
22937         * mini.c: Add support for MARSHAL_CONV_FTN_DEL.
22938         
22939 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
22940
22941         * mini-sparc.c exceptions-sparc.c: Applied patch from Mark Crichton
22942         (crichton@gimp.org). Beginning of support for sparc/linux.
22943
22944         * mini-sparc.c: Optimize retrieval of LMF address.
22945
22946 Fri May 21 08:00:12 EDT 2004 Paolo Molaro <lupus@ximian.com>
22947
22948         * exceptions-ppc.c:  handle alloca in methods with clauses.
22949
22950 Fri May 21 07:35:30 EDT 2004 Paolo Molaro <lupus@ximian.com>
22951
22952         * mini-ppc.c: cleanups, off-by-one fixes, avoid recursive thunks.
22953
22954 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
22955
22956         * mini.c: Delegate most of the abort signal work to 
22957           mono_thread_request_interruption, which also handles Stop and Suspend
22958           states.
22959
22960 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
22961
22962         * mini.c mini.h: Allow inlining of icall wrappers if the backend 
22963         supports the save/restore lmf opcodes.
22964
22965 2004-05-19  Zoltan Varga  <vargaz@freemail.hu>
22966
22967         * mini-x86.c (mono_arch_setup_jit_tls_data): Handle code generated
22968         by gcc-3.4 as well.
22969
22970         * mini-x86.h mini-x86.c tramp-x86.c: Optimize lmf restoring code.
22971
22972 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
22973
22974         * mini.h mini.c (mini_method_compile): Only run abc removal pass on 
22975         methods which contain array accesses.
22976
22977         * mini.c (CEE_LDTOKEN): Handle this instruction correctly on bb
22978         boundaries. Fixes #58537.
22979
22980         * iltests.il: Add regression test for #58537.
22981
22982 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
22983
22984         * mini-x86.c (mono_arch_local_regalloc): Last part of
22985         fix for bug #58633 (releasing register to early).
22986
22987 2004-05-18  Miguel de Icaza  <miguel@ximian.com>
22988
22989         * basic-long.cs: Add new regression test.
22990
22991 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
22992
22993         * mini-x86.c (mono_arch_local_regalloc): Avoid releasing a
22994         register too early on the chain.
22995
22996 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
22997
22998         * mini.c (create_helper_signature): Use a helper function to reduce
22999         the code which needs to be written. Also set the calling convention of
23000         icalls on windows. Fixes #57840.
23001
23002 Tue May 18 11:05:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
23003
23004         * mini.h, exceptions-x86.c, exceptions-sparc.c, exceptions-s390.c,
23005         exceptions-ppc.c: added helper function to get the instruction address
23006         from a signal handler context.
23007
23008 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
23009
23010         * helpers.c: use g_get_tmp_dir. Invokes happyness 
23011         from gonzalo.
23012
23013 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
23014
23015         * helpers.c: Add new env variable to pass args to objdump.
23016         Specifically for those of us who love -Mintel. r=miguel, gonzalo.
23017
23018 2004-05-17  Radek Doulik  <rodo@ximian.com>
23019
23020         * Makefile.am (common_sources): added abcremoval.h so it get
23021         disted and daily mono packages on go-mono.com will build again
23022
23023 2004-05-17  Massimiliano Mantione  <massi@ximian.com>
23024
23025         * abcremoval.c: Fixed coding style, added copyright header.
23026
23027         * abcremoval.h: Fixed style and moved prototype to mini.h, added copyright header.
23028
23029         * mini.h: Added prototype for abc removal main function.
23030
23031         * build_relations_propagation_table.pl: Added copyright header.
23032
23033 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
23034
23035         * basic-long.cs: reg test for complex ceq_long bug.
23036
23037 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
23038
23039         * mini-x86.c (mono_arch_local_regalloc): Correctly free 
23040         reg in long and clob case (bug #58343). Fixed/added comments.
23041
23042 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
23043
23044         * mini.c (mono_jit_runtime_invoke): Follow new convention
23045         of calling the invoke method with an function pointer.
23046
23047 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
23048
23049         * ChangeLog: Fix author of memory leak patch.
23050
23051 Fri May 14 15:13:06 CEST 2004 Paolo Molaro <lupus@ximian.com>
23052
23053         * Makefile.am: fix make dist as well...
23054
23055
23056 2004-05-14  Massimiliano Mantione  <massi@ximian.com>
23057
23058         * cfold.c: Made so that conversions from pointer to int4 are no-ops
23059         on archs where pointers are 4 bytes long.
23060
23061         * Makefile.am: Added abcremoval.c source file.
23062
23063         * abcremoval.c: Added abcremoval.c.
23064
23065         * abcremoval.h: Added abcremoval.h.
23066
23067         * build_relations_propagation_table.pl: Added build_relations_propagation_table.pl.
23068
23069         * inssel.brg: Enabled bounds check removal.
23070
23071         * mini.c: Added support for abcrem optimization.
23072
23073         * mini.h: Added abcrem optimization label.
23074
23075         * driver.c: Added support for abcrem optimization.
23076
23077         * propagated_relations_table.def: Added propagated_relations_table.def.
23078
23079 Fri May 14 14:30:13 CEST 2004 Paolo Molaro <lupus@ximian.com>
23080
23081         * mini.c, cfold.c: fix style.
23082
23083 Fri May 14 14:28:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
23084
23085         * mini.c: handle issue with the low-level implementation of
23086         some long opcodes (bug #54209).
23087
23088 2004-05-13 Ben Maurer  <bmaurer@users.sourceforge.net>
23089
23090         * basic.cs: test for my new cmov stuff.
23091
23092 2004-05-13      Patrik Torstensson
23093
23094         * mini-x86.c: added OP_X86_COMPARE_MEMBASE_IMM peephole
23095         opt and added peephole documentation.
23096
23097 Thu May 13 11:41:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
23098
23099         * tramp-ppc.c: rewrote the generic trampoline code.
23100
23101 2004-05-11      Patrik Torstensson
23102
23103         * mini-x86.c: optimize long shl/shr asm code (one less branch)
23104
23105 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
23106
23107         * basic.cs basic-long.cs objects.cs: Make these compile under MS csc.
23108
23109         * mini.h mini.c dominators.c: Applied patch from Derek Woo
23110         (derek@eecg.toronto.edu): Fix memory leaks in loop optimizations.
23111
23112         * mini.c: Add new icalls for AsAny marshalling.
23113
23114 Tue May 11 16:00:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
23115
23116         * tramp-ppc.c, mini-ppc.c: more cleanups.
23117
23118 2004-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23119
23120         * mini.c: no warnings.
23121
23122 Tue May 11 13:59:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
23123
23124         * mini-ppc.c, mini.c: use mono_resolve_patch_target ().
23125
23126 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
23127
23128         * mini.c: In the thread abort signal handler, if the thread is in the
23129         process of being stoped, don't throw the Abort exception, just stop the
23130         thread.
23131
23132 Tue May 11 12:15:24 CEST 2004 Paolo Molaro <lupus@ximian.com>
23133
23134         * tramp-ppc.c: removed old code.
23135
23136 Tue May 11 12:02:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
23137
23138         * mini.h, mini-ppc.c, cfold.c: export mono_is_power_of_two().
23139         do some simple speed optimizations on ppc.
23140
23141 Mon May 10 17:21:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
23142
23143         * mini-ppc.c, cpu-g4.md: fixes to handle large stack frames
23144         and large offsets in load/store.
23145
23146 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
23147
23148         * mini-x86.c (mono_arch_local_regalloc): Remove the previous fix, since
23149         it causes regressions.
23150
23151 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
23152
23153         * mini-sparc.c: Fix vararg support + add beginnings of sigaltstack
23154         support.
23155
23156 Fri May 7 13:25:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
23157
23158         * jit-icalls.c: remove warnings.
23159         * inssel-x86.brg, inssel.brg, mini-x86.c, cfold.c: some simple
23160         speedups for unsafe code.
23161
23162 2004-05-07 Ben Maurer  <bmaurer@users.sourceforge.net>
23163
23164         * inssel.brg: Optimize Stind.[ui][12]. r=zoltan.
23165
23166 2004-05-06  Zoltan Varga  <vargaz@freemail.hu>
23167
23168         * basic-calls.cs: Add new regression test.
23169
23170         * mini.c (mono_runtime_install_handlers): Use SA_ONSTACK since it is
23171         more portable.
23172
23173         * mini.c (mono_method_to_ir): Handle opcode emulation for *_OVF opcodes.
23174
23175         * mini-x86.c (mono_arch_local_regalloc): Free new_dest register when it
23176         is no longer used.
23177
23178 2004-05-06      Patrik Torstensson
23179
23180         * mini-x86.[c|h], inssel-x86.brg, cpu-pentium.md, mini.c: enabled
23181         long reg allocation in any reg (not only eax:edx) and implemented 
23182         long shl/shr ops in asm instead of helpers.
23183
23184 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
23185
23186         * mini-sparc.h: Fix warnings.
23187
23188         * exceptions-sparc.c (mono_arch_find_jit_info): Pop unused lfm off the
23189         stack.
23190
23191         * mini-exceptions.c (mono_handle_exception): Call the filter in a
23192         separate statement for clarity.
23193
23194         * mini-sparc.c: Update status.
23195
23196 2004-05-04  Zoltan Varga  <vargaz@freemail.hu>
23197
23198         * mini-exceptions.c (ves_icall_get_frame_info): Flush register windows
23199         here.
23200
23201 Mon May 3 22:58:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
23202
23203         * inssel-ppc.brg: another small pre-release workaround:
23204         we don't do overflow detection for long_sub_un.
23205
23206 Sun May 2 20:12:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
23207
23208         * mini.c, mini-ops, inssel-long32.brg: speedup ulong >> 32
23209         (also works around a weird ppc bug: 57957).
23210
23211 Sat May 1 16:56:10 EDT 2004 Paolo Molaro <lupus@ximian.com>
23212
23213         * tramp-ppc.c: trampoline fixes.
23214
23215 Fri Apr 30 15:54:26 EDT 2004    Paolo Molaro <lupus@ximian.com>
23216
23217         * mini-ppc.c: fixed typos.
23218
23219 Thu Apr 29 20:15:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
23220
23221         * mini-ppc.c, exceptions-ppc.c: more code saves registers
23222         at the top of the stack. Fixed typos. Use a frame registers
23223         for all the methods with exception clauses.
23224
23225 Thu Apr 29 18:52:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
23226
23227         * exceptions-ppc.c: restore fp registers.
23228
23229 Thu Apr 29 18:26:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
23230
23231         * mini-ppc.c, exceptions-ppc.c: save the registers in reverse
23232         order from the stack top (moved the stack room to save the
23233         return value for trace after the param area). Fixed corruption
23234         in restoring registers on unwind.
23235
23236 Thu Apr 29 16:47:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
23237
23238         * mini-ppc.c, cpu-g4.md: fixed unisgned -> double conversion.
23239
23240 Thu Apr 29 13:50:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
23241
23242         * exceptions-ppc.c, mini-ppc.h, mini-ppc.c: fixed localloc
23243         and prolog/epilog for methods that use it. Allow
23244         enough param area room for varargs methods. Fix miguel's
23245         breakage in exception handling.
23246
23247 Thu Apr 29 12:06:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
23248
23249         * Makefile.am: run genmdesc only on current arch.
23250
23251 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23252
23253         * exceptions-x86.c:
23254         * mini-x86.h: fix the build on windows.
23255
23256 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
23257
23258         * 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.
23259
23260         * exceptions-sparc.c exceptions-ppc.c exceptions-s390.c mini-ppc.h mini-s390.h mini-sparc.h: Fix up ports after changes.
23261
23262         * mini-exceptions.c: New file.
23263         
23264         * mini.c mini-exceptions.c mini-x86.h exceptions-x86.c Makefile.am:
23265         Move some parts of the x86 exception handling code to an 
23266         arch-independent file so it can be shared with other ports.
23267
23268 Tue Apr 27 12:15:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
23269
23270         * trace.c, cpu-g4.md, inssel-ppc.brg, mini-ppc.c: some fixes for FP code.
23271
23272 2004-04-26  David Waite  <mass@akuma.org>
23273
23274         * driver.c: remove comma from end of enumeration declaration
23275
23276 2004-04-26  Jackson Harper  <jackson@ximian.com>
23277
23278         * driver.c: parse config file before loading first assembly. This
23279         allows the user gac to be enabled/disabled. 
23280         
23281 2004-04-23  Miguel de Icaza  <miguel@ximian.com>
23282
23283         * mini-ppc.c (ppc_patch): Replaced the branch code patching with a
23284         simpler mechanism: we do not care what is encoded initially
23285         (branch absolute or relative), we care about the code and its
23286         target.  I kept the old code for reference for now.
23287
23288         The new code tries first to determine if the jump is anywhere in
23289         the -/+32 absolute meg range, if it succeeds, it encodes using the
23290         absolute branch;  If not, it tried to find something in the
23291         relative range, if not, it uses the handle_thunk code. 
23292
23293 Fri Apr 23 14:20:40 EDT 2004 Paolo Molaro <lupus@ximian.com>
23294
23295         * exceptions-ppc.c: use the correct ip register on macosx.
23296
23297 Thu Apr 22 13:23:16 EDT 2004 Paolo Molaro <lupus@ximian.com>
23298
23299         * exceptions.c, mini.c, mini-ppc.h: adapt code to macosx.
23300
23301 Thu Apr 22 18:08:37 CEST 2004 Paolo Molaro <lupus@ximian.com>
23302
23303         * mini-ppc.c, cpu-g4.md: made the branch macros more flexible.
23304         Raise exception on integer divide by zero by hand since the hw
23305         doesn't support it. Handle NaNs in FP compares.
23306
23307 Thu Apr 22 16:10:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
23308
23309         * exceptions-ppc.c, mini-ppc.h, mini.c: simplified some
23310         code reducing duplication between the platforms and enabled
23311         signal exception handling (on linux for now).
23312
23313 Wed Apr 21 12:27:48 EDT 2004 Paolo Molaro <lupus@ximian.com>
23314
23315         * exceptions-ppc.c: more macosx support.
23316
23317 Wed Apr 21 16:38:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
23318
23319         * mini-ppc.h, mini-ppc.c, cpu-g4.md: enable bigmul optimization.
23320
23321 Wed Apr 21 16:20:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
23322
23323         * mini.h, mini-ppc.c, cpu-g4.md: support for implicit exceptions.
23324
23325 2004-04-19 Ben Maurer  <bmaurer@users.sourceforge.net>
23326
23327         * iltests.il: more tests.
23328
23329 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
23330
23331         * mini-*.c (mono_arch_get_allocatable_int_vars): Skip written-only
23332         vars as well.
23333
23334 Mon Apr 19 19:39:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
23335
23336         * mini-ppc.c: some fixes to bootstrap mcs/corlib/etc.
23337
23338 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
23339
23340         * liveness.c: Mark variables as volatile in all basic blocks reachable
23341         from exception clauses.
23342
23343 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
23344
23345         * exceptions.cs (test_0_rethow_stacktrace): Make this work with
23346         inlining.
23347
23348 2004-04-18 Ben Maurer  <bmaurer@users.sourceforge.net>
23349
23350         * iltests.il, basic.cs: more tests for regalloc.
23351
23352 2004-04-17 Ben Maurer  <bmaurer@users.sourceforge.net>
23353
23354         * iltests.il: Some tests for register allocation modifications
23355         I have locally.
23356
23357 2004-04-16  Zoltan Varga  <vargaz@freemail.hu>
23358
23359         * exceptions.cs: Add regression test for bug #56782.
23360
23361         * exceptions-*.c (mono_arch_handle_exception): Do not overwrite the
23362         original stack trace if an exception is rethrown. Fixes #56782. Oh,
23363         the beauty of fixing the same thing in 5 different files...
23364
23365 2004-04-15  Zoltan Varga  <vargaz@freemail.hu>
23366
23367         * mini.c (mono_method_to_ir): Do not compute coverage for inlined
23368         methods.
23369
23370 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
23371
23372         * mini.c: Add support for STRWLPARRAY marshalling convention.
23373
23374 Wed Apr 14 18:15:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
23375
23376         * exceptions-ppc.c: missing fixes in mono_jit_walk_stack (need
23377         to init the context to setup the regs pointer).
23378
23379 Wed Apr 14 17:59:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
23380
23381         * exceptions-ppc.c: more exceptions work.
23382
23383 Wed Apr 14 17:46:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
23384
23385         * mini.c: avoid reusing the same MonoInst on multiple trees: this is
23386         not allowed.
23387
23388 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
23389
23390         * inssel-x86.brg (reg): Add new rules for add, sub and mul that
23391         can use the memory directly.
23392
23393         * cpu-pentium.md: Update documentation from a post from Zoltan. 
23394
23395         add x86_add_membase, x86_sub_membase, x86_mul_membase
23396
23397 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
23398
23399         * mini-ppc.c: Remove unused definitions FLOAT_REGS and
23400         GENERAL_REGS they were also hardcoded for all PPC ports.
23401
23402         (add_general): Use PPC_NUM_REG_ARGS instead of GENERAL_REGS.
23403
23404         Remove hard-coded limit for floating point registers, use
23405         PPC_LAST_FPARG_REG instead in MONO_TYPE_R4 and MONO_TYPE_R8.
23406
23407         Notice that in MacOS X calling conventions you can fit a lot more
23408         floating point values in registers, so I should update the PInvoke
23409         test to excercise the passing of floating point values on the
23410         stack (currently broken).
23411         
23412 2004-04-06  Miguel de Icaza  <miguel@ximian.com>
23413
23414         * tramp-ppc.c (create_trampoline_code): Added
23415         JUMP_TRAMPOLINE_SIZE. 
23416         (ppc_magic_trampoline): Follow the pattern from
23417         x86_magic_trampoline: if code is set to zero, return. 
23418         (create_trampoline_code): Always pass MonoMethod to the jump
23419         trampoline, before it was passing a null.
23420         (mono_arch_create_jump_trampoline): Implement the jump stub, could
23421         share the code with mono_arch_create_jit_trampoline. 
23422
23423         * mini-ppc.c (mono_arch_output_basic_block): CEE_JMP opcode
23424         implemented.
23425         (mono_arch_patch_code): MONO_PATCH_INFO_METHOD_JUMP patch type
23426         implemented.  
23427
23428         * cpu-g4.md: Added length for jmp instruction, the worst case
23429         scenario is 92 bytes (4 mandatory bytes, potential 19 registers
23430         for save_lmf).
23431
23432 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
23433
23434         * aot.c (mono_compile_assembly): Add back unlink removed by mistake.
23435
23436 2004-04-07  Zoltan Varga  <vargaz@freemail.hu>
23437
23438         * mini.c: Only set bblock->real_offset when adding a new bblock, and
23439         before each IL instruction.
23440
23441         * mini.c (CEE_BOX): Fix warnings.
23442
23443 2004-04-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23444
23445         * mini.c: removed a few unused vars and extra whitespace.
23446
23447 2004-04-05 Ben Maurer  <bmaurer@users.sourceforge.net>
23448
23449         * inssel.brg (MONO_EMIT_BOUNDS_CHECK): a new macro to emit bounds
23450         checks.
23451         (MONO_EMIT_BOUNDS_CHECK_IMM): the above, but when you know the
23452         index.
23453         (OP_GETCHR): use the above
23454         (CEE_LDELEMA): use the above.
23455
23456         * inseel-x86.brg (MONO_EMIT_BOUNDS_CHECK): a faster and smaller
23457         version of the generic impl.
23458         (MONO_EMIT_BOUNDS_CHECK_IMM): the same
23459         (CEE_LDELEMA): use the above.
23460
23461 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
23462
23463         * inssel-long32.brg (CEE_CONV_OVF_I8): Sign extend the i4 value to i8.
23464         Fixes #56317.
23465
23466         * iltests.il: Added new regression test for #56317.
23467
23468 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
23469
23470         * mini-x86.c (mono_arch_setup_jit_tls_data): Use pthread_attr_get_np
23471         under NetBSD. Fixes #56450.
23472
23473         * liveness.c (update_gen_kill_set): Fix previous patch.
23474
23475 2004-04-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23476
23477         * mini-x86.h: SA_STACK defined as SA_ONSTACK. Fixed build under NetBSD.
23478
23479 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
23480
23481         * mini.c (mono_method_to_ir): Avoid handle_loaded_temps in
23482         ldsfld and ldsflda.
23483
23484         * inssel-sparc.brg: Add more optimizations.
23485
23486         * mini-sparc.c: Replace multiply/divide with shifts if possible.
23487
23488 2004-04-01  Martin Baulig  <martin@ximian.com>
23489
23490         * mini.c (handle_box): New static function; moved the
23491         implementation of CEE_BOX here.
23492         (mono_method_to_ir): Added `constrained_call' variable.
23493         (mono_method_to_ir:CEE_CONSTRAINED_): Set it.
23494         (mono_method_to_ir:CEE_CALL): If `constrained_call' is set, use
23495         mono_method_get_constrained() to get the method.
23496
23497 2004-04-01  Martin Baulig  <martin@ximian.com>
23498
23499         * mini.c (TYPE_PARAM_TO_TYPE, TYPE_PARAM_TO_CLASS): Removed.
23500         (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): Removed.
23501         (mono_method_to_ir): We don't need these macros anymore since
23502         mono_class_get_full() already takes care of it. 
23503
23504 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23505
23506         * aot.c: set aot_verbose to 0, fixed format string that caused sigsegv,
23507         use @function (as doesn't accept #function here) and check the return
23508         value of system and stop if fails.
23509
23510 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23511
23512         * mini.c: set the timeout to 2s when calling mono_domain_finalize.
23513
23514 2004-03-31  Zoltan Varga  <vargaz@freemail.hu>
23515
23516         * mini-ppc.c (mono_arch_patch_code): Fix ppc build.
23517
23518         * inssel-sparc.brg mini-sparc.c aot.c: Implement AOT support.
23519
23520         * inssel-long32.brg (OP_LNEG): Use ADC instead of ADD here. Fixes
23521         #56223.
23522
23523         * basic-long.cs: Add test for negation of Int64.MinValue.
23524
23525 2004-03-30  Zoltan Varga  <vargaz@freemail.hu>
23526
23527         * mini-sparc.c: Update status.
23528
23529         * mini-sparc.c tramp-sparc.c: Save lmf in trampolines.
23530
23531         * exceptions-sparc.c: Fix return value in filters.
23532
23533         * inssel-sparc.brg: Fix register allocation in some rules.
23534
23535 2004-03-28  Martin Baulig  <martin@ximian.com>
23536
23537         * mini.c (mmono_method_to_ir): In CEE_STELEM, do a handle_stobj()
23538         if neccessary.  
23539
23540 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
23541
23542         * mini-x86.c (mono_arch_patch_code): Fix warnings.
23543         
23544         * mini-x86.c (mono_arch_output_basic_block): Fix CEE_MUL_OVF_UN if 
23545         dreg is not EAX. Thanks to Willibard Krenn for spotting this. Also
23546         remove unused conv_u4 opcode.
23547
23548         * mini-x86.c: Remove valgrind workaround since it slows down things
23549         even when mono is not run under valgrind.
23550
23551 2004-03-26  Zoltan Varga  <vargaz@freemail.hu>
23552
23553         * mini-sparc.c: Update status.
23554
23555         * inssel-sparc.brg: Add some optimizations.
23556
23557         * inssel-sparc.brg mini-sparc.c: Rework branch instructions to allow
23558         future delay slot filling. Add support for varargs, tail calls and JMP.
23559
23560         * inssel.brg mini-ops.h mini.c: Use OP_REFANYTYPE instead of 
23561         CEE_REFANYTYPE, since CEE_REFANYTYPE needs a prefix to be unique.
23562
23563         * inssel.brg: Fix register allocation in OP_ARGLIST.
23564
23565         * inssel.brg: Fix warnings.
23566
23567 2004-03-25  Martin Baulig  <martin@ximian.com>
23568
23569         * mini.c (inflate_generic_field): Removed.
23570         (mini_get_method): Removed, use mono_get_method_full(),
23571         (mini_get_class): Removed, use mono_class_get_full().
23572         (mono_method_to_ir): Pass our generic context to
23573         mono_field_from_token().        
23574
23575 2004-03-25  Martin Baulig  <martin@ximian.com>
23576
23577         * mini.c (mini_get_class): Take a `MonoGenericContext *' instead
23578         of a `MonoMethod *'.
23579         (mini_get_method): Take a `MonoGenericContext *' instead
23580         of a `MonoMethod *'.
23581         (TYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_TYPE): mono_method_to_ir() has
23582         a new local variable called `generic_context' which holds the
23583         current `MonoGenericContext *'; use it to lookup things.
23584
23585 2004-03-24  Martin Baulig  <martin@ximian.com>
23586
23587         * mini.c (mini_get_class): New static method; if we're inside a
23588         generic instance, inflate the class if neccessary.
23589         (mono_method_to_ir): Use mini_get_class() instead of mono_class_get().
23590
23591 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
23592
23593         * iltests.il: New regression test for #55976.
23594
23595         * mini.c (mono_method_to_ir): Empty the stack in endfinally. Fixes
23596         #55976.
23597
23598 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
23599
23600         * exceptions-sparc.c (mono_sparc_handle_exception): Remove debugging
23601         output.
23602
23603 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
23604
23605         * liveness.c: Consider SSA stores as well as loads when making vars
23606         volatile.
23607
23608         * exceptions.cs: New regression tests for register allocation.
23609         
23610 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
23611
23612         * mini-ppc.c, tramp-ppc.c: Added lock for accessing the domain code manager.
23613         * mini.c: Removed domain lock from mono_jit_compile_method_with_opt. Use
23614           domain lock only to protect puntual access to data structures.
23615           Added access lock for sighash, jit_icall_hash_name, 
23616           jit_icall_hash_addr and domain->code_mp.
23617
23618 2004-03-20  Zoltan Varga  <vargaz@freemail.hu>
23619
23620         * driver.c: Print SIGSEGV handling method.
23621
23622         * mini-x86.c (mono_arch_free_jit_tls_data): Add missing ifdef.
23623
23624         * mini.c (setup_jit_tls_data): Handle case when this is called
23625         multiple times for a thread.
23626
23627         * mini-x86.c cpu-pentium.md: Fix floating point branch opcodes so fbxx 
23628         is different from fbxx_un. Fixes #54303. Also use constants instead of
23629         magic numbers in a lot of places.
23630
23631 2004-03-19  Zoltan Varga  <vargaz@freemail.hu>
23632
23633         * exceptions.cs: Fix cctor test when --regression is used.
23634
23635 Thu Mar 18 19:57:56 CET 2004 Paolo Molaro <lupus@ximian.com>
23636
23637         * mini-ppc.c, exceptions-ppc.c: basic exceptions support 
23638         for Linux/ppc.
23639
23640 Thu Mar 18 19:56:19 CET 2004 Paolo Molaro <lupus@ximian.com>
23641
23642         * inssel-ppc.brg: fixed register assignments for some rules.
23643
23644 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
23645
23646         * exceptions.cs: Add test for exceptions in static constructors.
23647
23648         * mini.c (mono_jit_compile_method_with_out): Move the calling of
23649         static constructors outside the domain lock. Fixes #55720.
23650
23651 2004-03-17  Martin Baulig  <martin@ximian.com>
23652
23653         * mini.c (get_generic_field_inst): Removed, this'll never happen.
23654         (inflate_generic_field): Take the `MonoMethod *' instead of the
23655         `MonoClass *' and added support for generic method.
23656         (mono_method_to_ir): In CEE_LDSFLD and CEE_STSFLD, assert we never
23657         have a `field->parent->gen_params', only inflate the field if it's
23658         an open constructed type.
23659
23660 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
23661
23662         * exceptions-x86.c (mono_arch_handle_exception): Allocate a new
23663         exception object instead of the preconstructed ones.
23664
23665 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23666
23667         * mini.c: reverted changed to sigsegv_signal_handler commited
23668         accidentally in the previous patch.
23669
23670 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23671
23672         * mini.c:
23673         (mono_method_to_ir): CEE_CALLVIRT, abort if no method. It hanged when
23674         running --aot with an old assembly.
23675
23676 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
23677
23678         * mini-sparc.c (mono_arch_instrument_epilog): Fix handling of floating
23679         point values.
23680
23681         * mini-sparc.c: Add support for v9 branches with prediction.
23682
23683 2004-03-15  Bernie Solomon  <bernard@ugsolutions.com>
23684
23685         * mini.c (mini_init): #warning is GNUC only
23686
23687         * mini-sparc.h: implement __builtin_frame_address
23688         and __builtin_return_address for Sun C compiler
23689
23690 2004-03-15  Zoltan Varga  <vargaz@freemail.hu>
23691
23692         * exceptions-sparc.c (mono_arch_has_unwind_info): Add missing function.
23693
23694 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
23695
23696         * basic-calls.cs: Add test for unaligned byref long argument passing.
23697
23698         * mini-ops.h: Add sparcv9 compare and branch instructions.
23699
23700         * inssel-sparc.brg mini-sparc.h mini-sparc.c cpu-sparc.md: Use some
23701         v9 instructions if we have a v9 cpu.
23702
23703         * mini-sparc.c (mono_arch_get_global_int_regs): Use unused input
23704         registers for global allocation.
23705
23706         * exceptions-sparc.c: Fixes.
23707         
23708 2004-03-11  Zoltan Varga  <vargaz@freemail.hu>
23709
23710         * liveness.c (mono_analyze_liveness): Optimized version.
23711
23712         * inssel-sparc.brg cpu-sparc.md: Ongoing sparc work.
23713
23714         * mini-sparc.h mini-sparc.c tramp-sparc.c exceptions-sparc.c: Ongoing
23715         sparc work.
23716
23717         * basic-float.cs basic-calls.cs: New regression tests.
23718
23719 2004-03-10  Zoltan Varga  <vargaz@freemail.hu>
23720
23721         * mini-x86.h: Define SIGSEGV_ON_ALTSTACK only if we have a working
23722         sigaltstack implementation.
23723
23724         * mini-x86.c (mono_arch_setup_jit_tls_data): Fix previous patch.
23725         
23726         * mini-x86.c (mono_arch_setup_jit_tls_data): Turn off the sigaltstack
23727         stuff if SIGSEGV_ON_ALTSTACK is not defined.
23728
23729 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
23730
23731         * mini.c: Fix warnings.
23732         
23733         * mini.c (mono_resolve_patch_target): New function which contains the
23734         arch independent part of the patching process.
23735
23736         * mini-x86.c (mono_arch_patch_code): Move arch independent parts of the
23737         patching code to a separate function.
23738
23739 2004-03-09  Bernie Solomon  <bernard@ugsolutions.com>
23740
23741         * mini.c (add_signal_handler): ifdef out on Windows
23742
23743 2004-03-08  Zoltan Varga  <vargaz@freemail.hu>
23744
23745         * mini-sparc.h mini-sparc.c inssel-sparc.brg exceptions-sparc.c 
23746         cpu-sparc.md: Add exception handling support + other fixes.
23747
23748         * driver.c: Print --help output to stdout. Fixes #55261. Also fix
23749         typed GC detection in --version.
23750
23751         * basic.cs exceptions.cs: New regression tests.
23752
23753         * mini.h mini-x86.h mini-ppc.h: Add MonoCompileArch structure where
23754         the arch specific code can store data during a compilation.
23755
23756         * mini-ops.h: Add OP_SETFRET.
23757
23758         * mini.c (mini_get_ldelema_ins): Instead of allways calling the same
23759         function, register a separate icall for each arity, so the icalls can
23760         get a wrapper.
23761         
23762         * mini.c (mono_print_tree): Print negative offsets in a more readable
23763         form.
23764         
23765         * mini.c: Make signal handling work on sparc.
23766         
23767         * mini.c (mini_init): Add emulation for lconv_to_r8_un.
23768
23769         * inssel-long32.brg: Fix OP_LSUB_OVF_UN rule.
23770
23771         * jit-icalls.c: Emulate truncl by aintl on solaris.
23772
23773         * jit-icalls.c (mono_lconv_to_r8_un): New icall emulation function.
23774
23775 2004-03-05  Zoltan Varga  <vargaz@freemail.hu>
23776
23777         * mini.c (mini_init): fconv_to_ovf can raise exceptions.
23778
23779 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
23780
23781         * mini.c: In CEE_ISINST and CEE_CASTCLASS, if the type is an interface or
23782         a MarshalByRef type, inline a method that performs the check, taking into
23783         account that the object can be a proxy. Also implemented tow new opcodes:
23784         CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
23785         * inssel.brg: Implemented two new opcodes, mini-ops.h: OP_CISINST and 
23786         OP_CCASTCLASS, which implement CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
23787
23788 Tue Mar 2 17:23:48 CET 2004 Paolo Molaro <lupus@ximian.com>
23789
23790         * mini-ppc.c: if a relative branch displacement is too big
23791         but it points to and area reachable with an absolute branch, 
23792         avoid the thunks.
23793
23794 Tue Mar 2 16:59:40 CET 2004 Paolo Molaro <lupus@ximian.com>
23795
23796         * mini.c: optimize small copies in cpblk.
23797
23798 2004-03-01  Zoltan Varga  <vargaz@freemail.hu>
23799
23800         * basic-calls.cs basic-float.cs: New regression tests.
23801
23802         * mini-sparc.c inssel-sparc.brg mini-ops.h: Access local variables at 
23803         negative offsets from %fp. Implement localloc. Fix local register 
23804         allocation. Fix the case when the this argument needs to be saved to
23805         the stack. Implement some missing opcodes.
23806
23807 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
23808
23809         * mini.c (mini_method_compile): Reenable global regalloc in methods
23810         with exception handlers.
23811
23812         * linear-scan.c (mono_varlist_sort): Fix warning.
23813
23814         * linear-scan.c (mono_linear_scan): Fix computation of used_regs.
23815
23816         * mini-x86.c (mono_arch_regalloc_cost): Reenable precise computation of
23817         regalloc costs.
23818
23819         * liveness.c: Make all variables uses in exception clauses volatile, to
23820         prevent them from being allocated to registers. Fixes #42136.
23821
23822 2004-02-25  Zoltan Varga  <vargaz@freemail.hu>
23823
23824         * mini-x86.c (mono_arch_regalloc_cost): Revert this change since it
23825         causes regressions.
23826
23827         * mini.h linear-scan.c mini-x86.c mini-sparc.c mini-ppc.c: Add 'cfg'
23828         argument to mono_arch_regalloc_cost.
23829
23830         * mini-x86.c (mono_arch_regalloc_cost): Compute regalloc costs 
23831         precisely.
23832
23833 2004-02-24  Zoltan Varga  <vargaz@freemail.hu>
23834
23835         * mini.h mini-x86.c mini-ppc.c mini-sparc.c linear-scan.c: 
23836         Make the cost of allocating a variable to a register arch dependent.
23837
23838         * basic-calls.cs: Fix compilation of tests.
23839         
23840         * mini.h mini.c tramp-x86.c mini-x86.c: Add mono_running_on_valgrind ()
23841         helper function to cut back on the number of #ifdefs needed.
23842
23843         * mini-ppc.c: Fix compilation.
23844
23845         * basic-calls.cs: New regression tests.
23846
23847         * mini-sparc.c (mono_sparc_is_virtual_call): New helper function.
23848
23849         * tramp-sparc.c (create_specific_trampoline): Use g5 register instead
23850         of l0 since that is callee saved.
23851
23852         * tramp-sparc.c (sparc_magic_trampoline): Apply unbox trampoline only
23853         to virtual calls.
23854
23855         * mini-sparc.c: Ongoing work + flag virtual calls with a special kind 
23856         of delay instruction.
23857
23858         * inssel.brg (OP_CHECK_THIS): Set tree->sreg1 and dreg correctly.
23859
23860         * mini.h (MonoCallInst): Add 'virtual' flag.
23861
23862         * inssel.brg (mini_emit_virtual_call): Set 'virtual' flag.
23863
23864 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
23865
23866         * *.cs: New regression tests.
23867
23868         * mini-sparc.c inssel-sparc.brg: Update after latest changes. Ongoing sparc 
23869         work.
23870
23871         * mini.c (mono_runtime_install_handlers): Fix build.
23872
23873         * mini.h (MonoJitTlsData): Add 'stack_size', 'signal_stack' and
23874         'signal_stack_size' members.
23875
23876         * mini.h mini.c mini-x86.h mini-x86.c: Run sigsegv handlers on an 
23877         alternate signal stack.
23878
23879         * exceptions-x86.c: Add stack overflow handling.
23880
23881         * mini.h mini.c mini-x86.c mini-ppc.c trace.h trace.c: Move tracing 
23882         functions to arch independent code.
23883
23884         * mini.c (mono_print_tree): Print more detailed info for load_membase
23885         opcodes.
23886         
23887 2004-02-23  Martin Baulig  <martin@ximian.com>
23888
23889         * mini.c (mini_get_method): Set `gmethod->generic_inst'.
23890
23891 Sun Feb 22 22:25:19 CET 2004 Paolo Molaro <lupus@ximian.com>
23892
23893         * mini-x86.c: fixed reg allocation for div/rem.
23894
23895 2004-02-22  Miguel de Icaza  <miguel@ximian.com>
23896
23897         * driver.c (mono_main): Report some configuratio options on --version.
23898
23899 Fri Feb 20 11:01:44 PST 2004 Paolo Molaro <lupus@ximian.com>
23900
23901         * mini-ppc.c: fixed clt.un, cgt.un. Optimized calls to functions
23902         low in the address space. Correctly flush memory in thunks where we
23903         output native code.
23904
23905 2004-02-20  Martin Baulig  <martin@ximian.com>
23906
23907         * mini.c (mini_get_method): New static method; inflate all generic
23908         methods and methods in open generic instances.
23909         (mono_method_to_ir): Use mini_get_method() instead of mono_get_method().
23910         (ret_type_to_call_opcode): Added support for MONO_TYPE_GENERICINST.
23911
23912 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
23913
23914         * mini-sparc.c (mono_arch_patch_code): Update after domain->code_mp changes.
23915
23916         * tramp-sparc.c (mono_arch_create_jump_trampoline): Set ji->method.
23917
23918 2004-02-19  Bernie Solomon  <bernard@ugsolutions.com>
23919
23920         * helpers.c (mono_disassemble_code): use Sun's dis if not using gcc
23921
23922         * mini-sparc.c (flushi mono_arch_output_basic_block): make
23923         it compile using Sun's compiler.
23924
23925 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
23926
23927         * 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.
23928
23929         * basic-calls.cs basic-float.cs basic-long.cs objects.cs: New regression tests.
23930
23931 Tue Feb 17 21:41:20 CET 2004 Paolo Molaro <lupus@ximian.com>
23932
23933         * aot.c, mini-x86.c, mini.c: use the code manager instead of a mempool to hold native
23934         code.
23935         * mini-ppc.c: handle calls outside of the allowed range with thunks
23936         allocated using the code manager.
23937         * tramp-ppc.c: use the code manager to hold generated native code.
23938         Fixed the magic trampoline to just patch vtable entries.
23939
23940 2004-02-17  Zoltan Varga  <vargaz@freemail.hu>
23941
23942         * inssel.brg inssel-x86.brg: Move call(immediate) rules to the platform
23943         independent file.
23944
23945 2004-02-16  Zoltan Varga  <vargaz@freemail.hu>
23946
23947         * tramp-ppc.c (mono_arch_create_jump_trampoline): Fix compilation on
23948         PPC.
23949
23950         * mini-x86.c: Call mono_arch_get_lmf_addr instead of mono_get_lmf_addr
23951         if we have a working __thread implementation.
23952
23953         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Remove 
23954         OP_CALL_IMM opcodes, since the CALL opcodes handles immediates as well.
23955
23956 2004-02-15  Zoltan Varga  <vargaz@freemail.hu>
23957
23958         * mini-x86.c: Fix compilation under gcc 2.
23959         
23960 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
23961
23962         * mini.c (mono_codegen): Avoid infinite loop when an icall wrapper
23963         contains a call to the wrapped function.
23964
23965         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Add 
23966         OP_<CALL>_IMM opcodes, and use them under X86.
23967         
23968         * mini.c (mono_jit_find_compiled_method): Fix warning.
23969
23970         * cpu-pentium.md: Fix length of opcodes which use x86_alu_membase_imm.
23971
23972         * jit-icalls.c (mono_ldftn_nosync): New JIT icall.
23973
23974         * tramp-x86.c (mono_arch_create_jump_trampoline): Move arch independent
23975         functionality to mini.c.
23976
23977         * mini.c (mono_create_jump_trampoline): New function to create a jump
23978         trampoline. Return a compiled method instead of a trampoline if it
23979         exists. Add a cache for jump trampolines.
23980
23981         * mini.c (mono_jit_find_compiled_method): New function to return a
23982         compiled method if it exists.
23983
23984         * mini-x86.c: Call mono_create_jump_trampoline instead of 
23985         mono_arch_create_jit_trampoline.
23986
23987         * jit-icalls.c (mono_ldftn): Do not compile the method. Instead, return
23988         a jump trampoline. Fixes #52092.
23989         
23990 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
23991
23992         * debug-mini.c (mono_init_debugger): Remove call to mono_verify_corlib,
23993         which is not up-to-date. Add check_corlib_version () instead.
23994
23995         * mini.c (mini_init): Call mono_thread_attach () so embedders do not 
23996         have to call it.
23997         
23998         * mini.c (mono_runtime_install_handlers): Remove check for valgrind
23999         since newer valgrind versions do not need it.
24000
24001         * mini.c (mono_jit_compile_method_with_opt): New helper function to
24002         compile a method with a given set of optimizations.
24003
24004         * mini.c: Compile icall wrappers on-demand instead of at startup.
24005
24006         * mini-sparc.c mini-ppc.c: Call mono_icall_get_wrapper to obtain the
24007         wrapper for an icall.
24008
24009 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
24010
24011         * mini.c (mono_method_to_ir): Handle switch with non-empty stack. Fixes
24012         #54063.
24013
24014         * iltests.il: Add test for non-empty stack before switch instruction.
24015
24016 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
24017
24018         * mini.c: Add support for new stringbuilder marshalling conventions.
24019
24020         * mini.c (mono_method_to_ir): Fix stack management of generic CEE_BOX.
24021
24022 2004-02-01  Martin Baulig  <martin@ximian.com>
24023
24024         * mini.c (MTYPE_PARAM_TO_TYPE): Method type arguments are stored
24025         in `ginst->mtype_argv'.
24026
24027 2004-01-31  Miguel de Icaza  <miguel@ximian.com>
24028
24029         * mini.c: Add comments, replace CEE_XXX+128 with OP_XXX to
24030         facilitate grepping.
24031
24032 Wed Jan 28 14:04:58 CET 2004 Paolo Molaro <lupus@ximian.com>
24033
24034         * mini.c: fixed buglet in initobj generic implementation for references.
24035
24036 Fri Jan 23 16:10:44 EST 2004 Paolo Molaro <lupus@ximian.com>
24037
24038         * Makefile.am: make the version script conditional.
24039         * jit-icalls.c: handle missing truncl().
24040
24041 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
24042
24043         * exceptions.cs: Add more tests for double->int conversion.
24044
24045         * jit-icalls.c (mono_fconv_ovf_i8): Call truncl before comparison, so
24046         we don't throw exceptions when converting 1.1 to a long. Fixes #53250.
24047
24048 Fri Jan 23 17:12:08 CET 2004 Paolo Molaro <lupus@ximian.com>
24049
24050         * driver.c: make --verbose --version emit an error
24051         if the loaded corlib doesn't match the runtime version.
24052
24053 Mon Jan 19 17:44:50 CET 2004 Paolo Molaro <lupus@ximian.com>
24054
24055         * mini-ppc.h: export ppc_patch().
24056         * mini-ppc.c: call convention fixes. Added assert in ppc_patch().
24057         * tramp-ppc.c: call convention fixes: Linux/PPC support should be
24058         on par or better than on MacOSX.
24059
24060 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
24061
24062         * mini.c tramp-x86.c tramp-sparc.c: Updated after changes to
24063         mono_lookup_pinvoke_call.
24064
24065         * mini-x86.c: Under windows, the default pinvoke calling convention is
24066         stdcall. Fixes #52834.
24067
24068         * mini.c (optimize_branches): Add an upper bound to the number of
24069         iterations to prevent infinite loops on strange loops. Fixes #53003.
24070
24071 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
24072
24073         * inssel.brg: Add vectors<->one dimensional array checking to CASTCLASS
24074         and ISINST. Fixes #52093.
24075
24076         * objects.cs (test_0_vector_array_cast): New tests.
24077         
24078 2004-01-15  Zoltan Varga  <vargaz@freemail.hu>
24079
24080         * jit-icalls.c (helper_stelem_ref_check): New jit icall for array type
24081         checking in Array.Set ().
24082
24083         * mini.c (method_to_ir): Add array type checking in Array.Set (). Fixes
24084         #52590.
24085
24086         * object.cs (test_0_multi_array_cast): New regression test.
24087
24088 Thu Jan 15 16:30:24 CET 2004 Paolo Molaro <lupus@ximian.com>
24089
24090         * exceptions-ppc.c: fix build on Linux/PPC.
24091
24092 2004-01-14  Zoltan Varga  <vargaz@freemail.hu>
24093
24094         * tramp-x86.c (x86_magic_trampoline): Disable code patching when
24095         running under valgrind.
24096         (x86_magic_trampoline): Fix build bustage.
24097
24098         * debug-mini.c: Modify the debug info serialize/deserialize code so it handles
24099         negative values as well. This is needed for the encoding of the line number
24100         info, since sometimes the line numbers are not in increasing order.
24101
24102 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
24103
24104         * cpu-pentium.md (localloc): Increase the size of the localloc 
24105         instruction since it is a loop under Win32.
24106
24107         * debug-mini.c (record_line_number): Get rid of unneccesary memory
24108         allocation.
24109
24110 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
24111
24112         * exceptions-ppc.c exceptions-x86.c exceptions-sparc.c 
24113         tramp-x86.c tramp-ppc.c tramp-sparc.c: Applied patch from 
24114         Max Horn (max@quendi.de). Fix file names in comments.
24115
24116 2004-01-03  Zoltan Varga  <vargaz@freemail.hu>
24117
24118         * ssa.c (mono_ssa_rename_vars): Allocate new_stack on the heap to
24119         avoid stack overflow.
24120         (replace_usage): Avoid uninitialized variable warnings.
24121
24122         * mini.c (mono_method_to_ir): Avoid disabling SSA for array operations
24123         and taking the address of valuetype variables.
24124
24125 2004-01-03  Patrik Torstensson
24126
24127         * mini-x86.c: renamed fpflags to flags in RegTrack, going to be used
24128         for other purposes than FP later on.
24129
24130 2004-01-02  Zoltan Varga  <vargaz@freemail.hu>
24131
24132         * mini.c (mono_method_to_ir): Prevent register allocation for arguments
24133         of tail calls.
24134
24135 Fri Jan 2 13:37:25 CET 2004 Paolo Molaro <lupus@ximian.com>
24136
24137         * mini-ops.h, mini.c, inssel.brg: Object.GetType () speedup.
24138
24139 2003-12-30  Patrik Torstensson <p@rxc.se>
24140
24141         * mini-x86.h: Decreased number of availiable fp regs.
24142         Solves corner cases with FP spilling.
24143
24144 2003-12-23  Patrik Torstensson <p@rxc.se>
24145
24146         * mini-x86.c, mini-ops.h, cpu-pentium.md: Added support
24147         for floating point stack tracking / spilling on x86. 
24148         Fixes bug #49012.
24149         
24150         * basic-float.cs: added float mul overflow test.
24151
24152 2003-12-23  Zoltan Varga  <vargaz@freemail.hu>
24153
24154         * mini.c (mono_method_to_ir): Add workaround for bug #51126.
24155
24156 Sun Dec 21 19:53:16 CET 2003 Paolo Molaro <lupus@ximian.com>
24157
24158         * mini.h, mini-ppc.c, mini-ppc.h: small cleanups and
24159         supports for cond branches that overflow the immediate
24160         overflow offset. mcs can compile simple programs.
24161
24162 Fri Dec 19 21:17:16 CET 2003 Paolo Molaro <lupus@ximian.com>
24163
24164         * exceptions-ppc.c: exception handling support wip:
24165         finally handlers get run on exception.
24166
24167 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
24168
24169         * aot.c (mono_aot_get_method_inner): Avoid loading AOT code while 
24170         profiling.
24171
24172 Fri Dec 19 17:58:28 CET 2003 Paolo Molaro <lupus@ximian.com>
24173
24174         * cpu-g4.md, mini-ppc.c, exceptions-ppc.c, mini-ppc.h:
24175         initial support for stack walking and unwinding.
24176
24177 2003-12-18  Zoltan Varga  <vargaz@freemail.hu>
24178
24179         * driver.c (mono_main): Make corlib-out-of-sync message more 
24180         descriptive. Also remove verify_corlib call.
24181
24182 Wed Dec 17 15:31:41 CET 2003 Paolo Molaro <lupus@ximian.com>
24183
24184         * mini.c: make CEE_NEWARR calls and other emulated opcodes 
24185         not overlap with other call's arguments, too.
24186
24187 Wed Dec 17 12:49:23 CET 2003 Paolo Molaro <lupus@ximian.com>
24188
24189         * mini.h, mini.c, mini-ppc.c, mini-sparc.c, mini-x86.c: 
24190         move to arch-specific code the choice of arch-specific
24191         intrinsics (from Laurent Morichetti (l_m@pacbell.net)).
24192         * mini.c: ensure emulation calls will not interleave
24193         with other calls.
24194
24195 Wed Dec 17 12:27:26 CET 2003 Paolo Molaro <lupus@ximian.com>
24196
24197         * tramp-ppc.c, basic-calls.cs: rework trampolines so that
24198         the magic trampoline stack frame is dropped before executing
24199         the new method.
24200
24201 Mon Dec 15 18:13:57 CET 2003 Paolo Molaro <lupus@ximian.com>
24202
24203         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed some opcode lengths
24204         and integer to fp conversions. Added support for overflowing
24205         arguments on the stack. Reserve a couple more registers as temps.
24206         Added support for aot compilation (as output still needs to be
24207         tweaked, though).
24208
24209 Sat Dec 13 17:49:10 CET 2003 Paolo Molaro <lupus@ximian.com>
24210
24211         * mini-ppc.c, basic-long.cs: fix jumps to known labels.
24212         Don't overwrite return register in some corner cases.
24213
24214 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
24215
24216         * mini.h mini.c driver.c mini-x86.c mini-ppc.c aot.c: Do not run
24217         static constructors when AOT compiling.
24218
24219         * driver.c (mono_main): Call mono_check_corlib_version.
24220
24221 Sat Dec 13 10:31:12 CET 2003 Paolo Molaro <lupus@ximian.com>
24222
24223         * cpu-g4.md, basic.cs: fixed div target register.
24224
24225 Sat Dec 13 09:45:56 CET 2003 Paolo Molaro <lupus@ximian.com>
24226
24227         * mini-ppc.c, basic.cs: shl_imm fix with test.
24228
24229 Fri Dec 12 21:25:14 CET 2003 Paolo Molaro <lupus@ximian.com>
24230
24231         * inssel-ppc.brg, mini-ppc.h, mini-ppc.c: support for passing 
24232         structures by value. Misc fixes.
24233         * objects.cs: more tests.
24234
24235 Fri Dec 12 10:11:49 CET 2003 Paolo Molaro <lupus@ximian.com>
24236
24237         * mini-ppc.c: lconv.ovf.i implemented.
24238
24239 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24240
24241         * mini.c:
24242         (mini_init): don't error out if someone already called g_thread_init.
24243
24244 Tue Dec 9 17:27:14 CET 2003 Paolo Molaro <lupus@ximian.com>
24245
24246         * exceptions-x86.c, exceptions-ppc.c: allow the exception object
24247         to be any type per the spec. Fix abnormal memory usage when
24248         the same object is repeatedly thrown.
24249
24250 Tue Dec 9 15:39:54 CET 2003 Paolo Molaro <lupus@ximian.com>
24251
24252         * mini.c: check for overruns in IL code.
24253
24254 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
24255
24256         * TODO: Add/remove some todo entries.
24257
24258 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
24259
24260         * driver.c (mono_main): Call mono_verify_corlib.
24261
24262 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
24263
24264         * inssel.brg: In CEE_ISINST and CEE_CASTCLASS, removed check for proxy. 
24265         This has been moved to mini.c
24266         * mini.c: in mono_method_to_ir, CEE_ISINST and CEE_CASTCLASS cases, if the
24267         type being casted is marshalbyref it could be a proxy, so instead of
24268         emitting the type check code, emit a call to a runtime method that will
24269         perform the check by calling CanCastTo if needed.
24270
24271 2003-12-06  Zoltan Varga  <vargaz@freemail.hu>
24272
24273         * mini-x86.c (mono_arch_emit_prolog): Fix stack space allocation for
24274         methods with large stack frames under Win32.
24275
24276 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
24277
24278         * Makefile.am: Distribute regression tests.
24279
24280         * mini-x86.c (mono_arch_get_allocatable_int_vars): Sort the var list
24281         at the end instead of inserting each variable into the sorted list.
24282
24283         * linear-scan.c (mono_varlist_sort): New helper function.
24284         
24285 Wed Dec 3 20:46:28 CET 2003 Paolo Molaro <lupus@ximian.com>
24286
24287         * mini.c: ensure arguments and locals are within bounds.
24288
24289 Wed Dec 3 17:59:10 CET 2003 Paolo Molaro <lupus@ximian.com>
24290
24291         * mini-ppc.c, cpu-g4.md, basic.cs, basic-long.cs: more tests and 
24292         related fixes.
24293
24294 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
24295
24296         * mini.c (mono_cprop_copy_values): Fix crash.
24297
24298         * aot.c: Set verbosity back to 0.
24299         
24300 Wed Dec 3 15:42:27 CET 2003 Paolo Molaro <lupus@ximian.com>
24301
24302         * regalloc.c: complete memory leak fix by Laurent Morichetti
24303         (l_m@pacbell.net).
24304
24305 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
24306
24307         * driver.c (main_thread_handler): Revert the previous patch.
24308
24309         * tramp-x86.c (x86_class_init_trampoline): Avoid patching when running
24310         under valgrind.
24311
24312         * mini-x86.c (mono_arch_local_regalloc): Do not allocate transient
24313         memory from the memory pool.
24314
24315         * driver.c (main_thread_handler): Turn on all optimizations when
24316         --aot is used.
24317
24318         * mini.c (mono_find_jit_opcode_emulation): Turn emul_opcode_hash into
24319         an array for better performance.
24320
24321         * regalloc.c (mono_regstate_assign): Fix memory leak.
24322
24323         * debug-mini.c (mono_debug_serialize_debug_info): New function to
24324         serialize the debug info.
24325
24326         * debug-mini.c (mono_debug_add_aot_method): New function to load the
24327         debug info from the serialized representation.
24328
24329         * aot.c: Save debug info into the generated file and load it when 
24330         loading a method.
24331
24332         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
24333
24334 Mon Dec 1 16:54:05 CET 2003 Paolo Molaro <lupus@ximian.com>
24335
24336         * mini-ppc.c, tramp-ppc.c: save FP arguments in the trampoline.
24337         More FP-related fixes.
24338
24339 Sun Nov 30 19:13:52 CET 2003 Paolo Molaro <lupus@ximian.com>
24340
24341         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed finally handlers
24342         and register allocation buglet. Hello world now runs.
24343
24344 Fri Nov 28 23:03:05 CET 2003 Paolo Molaro <lupus@ximian.com>
24345
24346         * cpu-g4.md, inssel-ppc.brg, mini-ppc.c: better long return support.
24347         * tramp-ppc.c: fixed class init trampoline.
24348         * inssel-ppc.brg, mini.c, jit-icalls.c, mini-ppc.h: more emulation.
24349
24350 Fri Nov 28 16:36:29 CET 2003 Paolo Molaro <lupus@ximian.com>
24351
24352         * cpu-g4.md, inssel-ppc.brg, jit-icalls.c, mini-ppc.c, mini-ppc.h,
24353         mini.c: more ppc changes/fixes.
24354
24355 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
24356
24357         * mini.c (mono_method_to_ir): Fix tail calls with valuetype arguments.
24358         Also optimize the case when the arguments are the same in the caller 
24359         and in the callee.
24360
24361         * iltests.il: Add tests for tail calls with valuetype arguments.
24362
24363 Thu Nov 27 21:06:37 CET 2003 Paolo Molaro <lupus@ximian.com>
24364
24365         * mini-ppc.c: fixes for struct return type.
24366
24367 Thu Nov 27 19:02:07 CET 2003 Paolo Molaro <lupus@ximian.com>
24368
24369         * mini.h, mini.c, mini-x86.c, mini-ppc.c, mini-sparc.c: move 
24370         mono_spillvar_offset() to arch-specific code.
24371
24372 Thu Nov 27 18:30:42 CET 2003 Paolo Molaro <lupus@ximian.com>
24373
24374         * mini-ppc.h, mini-ppc.c: handle some different ABI call convention issues.
24375
24376 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
24377
24378         * exceptions-x86.c: Fix stack space leaks.
24379         
24380         * exceptions-x86.c (mono_arch_find_jit_info): Restore callee saved
24381         registers from the lmf if the method has save_lmf set.
24382
24383 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
24384
24385         * tramp-x86.c (x86_magic_trampoline): Avoid patching in the addresses
24386         of icall wrappers into InvokeInDomain, since these are now per-domain.
24387
24388 Wed Nov 26 20:15:04 CET 2003 Paolo Molaro <lupus@ximian.com>
24389
24390         * mini-ppc.h, mini-x86.h, mini.c, inssel-ppc.brg, jit-icalls.c:
24391         make some opcode emulation and intrinsic ops enabled/disabled 
24392         according to the architecture. More fixes.
24393
24394 Wed Nov 26 19:59:09 CET 2003 Paolo Molaro <lupus@ximian.com>
24395
24396         * mini-ppc.c, mini-sparc.c, cpu-g4.md: more bug fixes.
24397
24398 Wed Nov 26 19:18:29 CET 2003 Paolo Molaro <lupus@ximian.com>
24399
24400         * mini.h, inssel.brg, mini-x86.c, mini-ppc.c, mini-sparc.c: move
24401         arch-specific handling for 'this' and struct return type to
24402         arch-specific code.
24403
24404 2003-11-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24405
24406         * aot.c: prevent divide by zero error when reporting (it happened with
24407         Accessibility.dll).
24408
24409 2003-11-25  Zoltan Varga  <vargaz@freemail.hu>
24410
24411         * mini.h (inst_switch): Remove unused macro.
24412
24413 2003-11-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24414
24415         * aot.c:
24416         (load_aot_module): free 'info->methods' and 'info' properly. No more
24417         "free(): invalid pointer blah" messages when you have an old aot
24418         compiled assembly.
24419
24420 2003-11-21  Lluis Sanchez Gual <lluis@ximian.com>
24421
24422         * jit-icalls.c, mini.c: Added support for context static fields.
24423
24424 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
24425
24426         * mini.c (mono_method_blittable): Methods which set LastError are not 
24427         blittable either. Fixes #51108.
24428         
24429 Tue Nov 18 16:41:37 CET 2003 Paolo Molaro <lupus@ximian.com>
24430
24431         * mini.c: flush icache.
24432         * cpu-g4.md, mini-ppc.c, inssel.brg: more fixes. Trace support.
24433
24434 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
24435
24436         * mini.c (mono_type_blittable): OBJECT is not blittable. Fixes #47842.
24437
24438 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
24439
24440         * tramp-x86.c (x86_class_init_trampoline): Make code patching thread
24441         safe on IA32.
24442
24443         * mini-x86.c (mono_arch_call_opcode): Disable AOT for methods with 
24444         vararg calls.
24445
24446         * inssel.brg (CEE_MKREFANY): Fix AOT case.
24447
24448 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
24449
24450         * mini-x86.c (mono_arch_local_regalloc): Fix regalloc for div 
24451         instruction when the result is discarded.
24452
24453         * iltests.il (test_0_div_regalloc): New regression test.
24454
24455         * arrays.cs: Fix compilation error.
24456
24457 Fri Nov 14 21:34:06 CET 2003 Paolo Molaro <lupus@ximian.com>
24458
24459         * inssel-x86.brg, inssel-float.brg, mini-ops.h: move x86-specific
24460         float rules to inssel-x86.brg: sane architectures with FP registers
24461         don't need to implement these rules.
24462
24463 Fri Nov 14 20:52:12 CET 2003 Paolo Molaro <lupus@ximian.com>
24464
24465         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: updates and fixes to the ppc port.
24466
24467 Fri Nov 14 17:58:27 CET 2003 Paolo Molaro <lupus@ximian.com>
24468
24469         * mini.h, inssel-long32.brg: fixed endianess issues in int64
24470         implementation of 32 bit systems.
24471
24472 Thu Nov 13 16:14:41 CET 2003 Paolo Molaro <lupus@ximian.com>
24473
24474         * exceptions-ppc.c: fix build on Linux/ppc from Jeroen@xs4all.nl
24475         (Jeroen Zwartepoorte).
24476
24477 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
24478
24479         * mini.c (mono_method_to_ir): Use CEE_JMP only if the signature of
24480         the caller and the callee matches.
24481         
24482         * mini.c (mono_method_to_ir): Add comment.
24483
24484         * mini-x86.c (mono_arch_output_basic_block): Use mono_signbit, since
24485         signbit is missing on some platforms.
24486
24487 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
24488
24489         * mini.h (mono_arch_setup_jit_tls_data): New arch specific function.
24490
24491         * mini.c (setup_jit_tls_data): Call the new function.
24492         
24493         * mini-x86.c mini-ppc.c mini-sparc.c: Define the new function.
24494
24495         * mini-x86.c: Add experimental support for fast access to the lmf
24496         structure under NPTL/Linux 2.6.x.
24497
24498 2003-11-06  Martin Baulig  <martin@ximian.com>
24499
24500         * ldscript: Make `GC_push_all_stack', `GC_start_blocking',
24501         `GC_end_blocking' and 'gc_thread_vtable' public; they're used by
24502         the debugger.
24503
24504 2003-11-02  Martin Baulig  <martin@ximian.com>
24505
24506         * mini.c (inflate_generic_field): New static method.
24507         (mono_method_to_ir): In CEE_LDFLD and CEE_LDSFLD: if we're a
24508         generic instance and the field is declared in a generic type, call
24509         inflate_generic_field() to inflate it.  Fixes gen-28.cs.
24510
24511 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
24512
24513         * mini.h mini.c (mono_method_same_domain): New function to return
24514         whenever the caller and the callee are in the same domain.
24515
24516         * tramp-x86.c (x86_magic_trampoline): Use the new function.     
24517
24518 2003-10-30  Martin Baulig  <martin@ximian.com>
24519
24520         * mini.c (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): New macros;
24521         similar to TYPE_PARAM_TO_TYPE and TYPE_PARAM_TO_CLASS, but for
24522         method parameters.
24523         (mono_method_to_ir): Added support for MONO_TYPE_MVAR; similar to
24524         MONO_TYPE_VAR, we the actual types from MTYPE_PARAM_TO_CLASS(). 
24525
24526 2003-10-29  Zoltan Varga  <vargaz@freemail.hu>
24527
24528         * mini.c mini-ops.h inssel.brg: Implement undeniable exception 
24529         propagation.
24530
24531         * mini.c (sigusr1_signal_handler): Move creation of the thread abort
24532         object here, so it is in the correct appdomain etc.
24533
24534 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
24535
24536         * mini.c (mono_jit_compile_method_inner): Lookup icalls here if not
24537         already done.
24538         (mono_method_to_ir): Avoid freeing the type created returned from
24539         mono_type_create_from_typespec, since it is put into an internal cache
24540         by the function. Fixes pointer.exe.
24541
24542         * mini.c tramp-x86.c tramp-sparc.c tramp-ppc.c: Use the normal 
24543         trampolines for icalls and pinvokes as well. Fixes #33569.
24544
24545 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
24546
24547         * mini.c: Update after appdomain changes.
24548
24549         * mini.c (mono_jit_compile_method_inner): Allways compile native
24550         method wrappers in the root domain, since there can only be one
24551         instance of them, whose address is stored in method->info.
24552
24553 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
24554
24555         * mini.c (mono_runtime_install_handlers): Get rid of the MONO_VALGRIND
24556         environment variable. Instead detect automatically whenever running
24557         under valgrind using the magic macro RUNNING_ON_VALGRIND from
24558         valgrind.h.
24559
24560 2003-10-16  Miguel de Icaza  <miguel@ximian.com>
24561
24562         * trace.c, trace.h: New files that implement the new trace option
24563         parsing. 
24564
24565         * driver.c: Document new --trace options.
24566
24567         * exceptions-ppc.c, exceptions-x86.c, mini-ppc.c, mini-sparc.c,
24568         mini-x86.c: Apply:
24569
24570         -       if (mono_jit_trace_calls)
24571         +       if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
24572
24573         * mini.h: prototypes.
24574         
24575 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
24576
24577         * mini.c (mono_method_to_ir): Fix initialization of typedbyref locals.
24578
24579         * mini.c inssel.brg: Implement typedefbyref opcodes.
24580
24581         * mini.c (mono_jit_compile_method): Remove unused local variable.
24582
24583         * mini.c (mono_jit_compile_method_inner): Ditto.
24584         
24585 2003-10-12  Zoltan Varga  <vargaz@freemail.hu>
24586
24587         * tramp-x86.c (x86_class_init_trampoline): Fix build.
24588         
24589         * tramp-x86.c (x86_class_init_trampoline): Thread safety fixes.
24590
24591 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
24592
24593         * mini.c (mono_no_aot): Remove unused global variable.
24594
24595         * mini.c: Thread safety fixes.
24596
24597 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
24598
24599         * mini.c (mono_create_class_init_trampoline): Add a lock around
24600         class_init_hash_addr.
24601
24602         * arrays.cs (test_0_newarr_emulation): Add new regression test for
24603         #30073.
24604
24605         * mini.c: Decompose the NEWARR instruction before decomposing its
24606         arguments. Fixes #30073.
24607
24608 2003-10-08  Zoltan Varga  <vargaz@freemail.hu>
24609
24610         * mini-x86.c (mono_arch_emit_epilog): Add support for stdcall calling
24611         convention.
24612
24613 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
24614
24615         * mini.c (mono_method_to_ir): Allow wrapper data for CEE_LDELEMA.
24616
24617         * inssel-x86.brg (OP_LOCALLOC): Fix register assignment for localloc.
24618
24619         * driver.c: Add support for compiling icall wrappers to --compile.
24620
24621 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
24622
24623         * inssel.brg: The empty value in class->interface_offsets is -1, not
24624         0. Fixes #49287.
24625
24626 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
24627
24628         * objects.cs: New test for 'is' operator on an array of interfaces.
24629
24630 Wed Oct 1 19:40:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
24631
24632         * tramp-ppc.c: update trampoline code to support jumps
24633         and class initialization.
24634
24635 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
24636
24637         * mini.c (mono_jit_compile_method): Fix reading of freed memory.
24638
24639         * inssel.brg (OP_UNBOXCAST): Fix #46027.
24640
24641         * inssel.brg (OP_UNBOX): Remove unused rule.
24642
24643         * mini.h mini.c inssel-x86.brg: Allocate one SP variable for each
24644         region instead of one for each method. Fixes #47813.
24645
24646 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
24647
24648         * exceptions.cs (test_0_nested_finally): New regression test for
24649         nested exception handlers.
24650
24651         * mini.c (mono_jit_runtime_invoke): Fix for the previous fix.
24652
24653         * mini.c (mono_method_to_ir): Avoid inlining tail calls.
24654
24655         * mini.c (mono_method_to_ir): Fix tail recursion in the presence of 
24656         inlining.
24657
24658         * mini.c (mono_method_check_inlining): Make the inlining limit 
24659         configurable by an environment variable.
24660         
24661         * mini.c (mono_jit_runtime_invoke): Add Gonzalo's fix for #36545.
24662
24663         * mini.h: Bump AOT file version.
24664
24665         * mini.h mini.c aot.c mini-x86.c: For relocations which refer to a 
24666         token, store the image along with the token, since the token might not 
24667         refer to the same image as the method containing the relocation, 
24668         because of inlining.
24669
24670 2003-09-27  Zoltan Varga  <vargaz@freemail.hu>
24671
24672         * mini.c (mono_precompile_assemblies): New function to compile
24673         all methods in all loaded assemblies.
24674
24675         * mini.h driver.c: Added new optimization flag MONO_OPT_PRECOMP.
24676
24677         * regalloc.h regalloc.c (MonoRegState): Change the type of 
24678         iassign and fassign to int*, since they can contain large negative
24679         values if the register is spilled. Also added some comments. Fixes
24680         #45817.
24681
24682         * exceptions-x86.c (seh_handler): Fix handling of system exceptions
24683         under Win32. Fixes #42964.
24684
24685 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
24686
24687         * mini.h (MONO_PATCH_INFO_WRAPPER): New patch type.
24688
24689         * aot.c: Added support for AOT compiling methods which contain calls
24690         to wrappers. Currently, only remoting-invoke-with-check wrappers are
24691         handled.
24692         
24693         * driver.c (compile_all_methods): Run the compilation in a thread
24694         managed by mono. Fixes #44023.
24695
24696         * mini.c (mono_codegen): Print full method name in verbose output.
24697
24698         * mini-x86.c (mono_arch_patch_code): Fix warning.
24699         
24700         * mini-x86.c (mono_arch_patch_code): Allways create a trampoline for
24701         jumps, since the method we are jumping to might be domain-specific.
24702
24703         * aot.c: Added support for MONO_PATCH_INFO_METHOD_JUMP.
24704
24705 Tue Sep 23 10:50:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
24706
24707         * inssel.brg: string chars are unsigned.
24708
24709 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
24710
24711         * TODO: New todo item.
24712
24713         * tramp-x86.c (x86_class_init_trampoline): New trampoline function
24714         which calls mono_runtime_class_init and patches the call site to
24715         avoid further calls.
24716         (mono_arch_create_class_init_trampoline): New arch specific function 
24717         to create a class init trampoline.
24718         (create_trampoline_code): Generalized so it can create
24719         class init trampolines as well.
24720
24721         * mini.c (helper_sig_class_init_trampoline): New helper variable.
24722         (mono_create_class_init_trampoline): New function to create and cache
24723         class init trampolines.
24724         (mono_find_class_init_trampoline_by_addr): New function to lookup the
24725         vtable given the address of a class init trampoline. Used by the
24726         patching process.
24727         (mono_codegen): Generate a call to a trampoline instead of
24728         mono_runtime_class_init in LDSFLD[A].
24729         (mono_codegen): Add relocations for the new trampoline.
24730         
24731         * mini.h mini-x86.c aot.c: Added a new relocation type: 
24732         MONO_PATCH_INFO_CLASS_INIT.
24733
24734         * mini.h: Bump AOT version number.
24735
24736         * aot.c: Create a copy of the loaded code instead of using the original
24737         so methods which call each other will be close in memory, improving
24738         cache behaviour.
24739         
24740         * exceptions-x86.c (mono_arch_has_unwind_info): Back out the previous
24741         patch since it breaks the regression tests.
24742         
24743         * exceptions-x86.c (mono_arch_has_unwind_info): Added explicit check
24744         for the register saving instruction sequence since the 
24745         frame_state_for function in glibc 2.3.2 don't seem to detect it.
24746
24747 2003-09-14  Zoltan Varga  <vargaz@freemail.hu>
24748
24749         * TODO: Fix todo item && remove another.
24750
24751 2003-09-12  Zoltan Varga  <vargaz@freemail.hu>
24752
24753         * mini-x86.c (mono_arch_patch_code): Fix tail calls broken by a
24754         previous checkin.
24755
24756         * aot.c: Moved the check for MONO_LASTAOT into the initialization
24757         function of the module.
24758
24759         * mini.h mini.c aot.c: Added a new optimization flag OPT_AOT for
24760         turning on/off the usage of AOT code. Got rid of mono_no_aot and the
24761         --no-aot command line option.
24762
24763 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
24764
24765         * helpers.c (mono_disassemble_code): Make this work under cygwin. Patch
24766         by Bernie Solomon (bernard@ugsolutions.com).
24767
24768         * inssel.brg: Refactor the interface offset table related code into
24769         its separate functions and add support for the AOT case.
24770
24771 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
24772
24773         * aot.c (mono_aot_get_method_inner): Fix memory leak.
24774         
24775         * aot.c: Added mono_aot_verbose variable and made all debugging
24776         output depend on the value of this variable.
24777
24778         * aot.c (mono_aot_get_method_inner): Avoid dynamic allocation of
24779         method_label and info_label.
24780
24781         * mini.h mini-x86.c aot.c: Added a new relocation type 
24782         MONO_PATCH_INFO_IID for klass->interface_id.
24783
24784         * mini.h mini.c driver.c aot.c: Changed mono_aot_get_method to return
24785         the MonoJitInfo structure.
24786
24787         * mini.c (mono_jit_compile_method): Avoid using non-shared AOT in
24788         a non-root appdomain in shared mode.
24789
24790 Tue Sep 9 16:33:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
24791
24792         * aot.c: make aot loader less verbose. Remove free of unused variable.
24793
24794 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
24795
24796         * aot.c (mono_aot_get_method_inner): Fix MONO_PATCH_INFO_IMAGE.
24797
24798         * .cvsignore: Added *.dll.
24799
24800         * mini.c (mono_print_tree_nl): New function callable while debugging.
24801
24802         * mini.c (mono_print_code): Export this.
24803
24804         * tramp-x86.c (x86_magic_trampoline): Tell valgrind to recompile the
24805         patched code.
24806
24807 2003-09-05  Zoltan Varga  <vargaz@freemail.hu>
24808
24809         * mini.h (MonoCompile): Added 'jit_info' field.
24810
24811         * mini.c (mini_method_compile): Save the generated MonoJitInfo into
24812         the cfg structure, since it is needed by the AOT compiler.
24813
24814         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
24815
24816         * aot.c: A major rewrite. Changes include:
24817         - save exception tables for methods which have them.
24818         - cache failed lookups in aot_get_method () to avoid the (slow) calls 
24819         to g_module_symbol.
24820         - reworked the file format so it is now much smaller and needs
24821         fewer relocation entries.
24822         
24823 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
24824
24825         * aot.c (load_aot_module): Fix build bustage on platforms without
24826         Boehm GC.
24827
24828 2003-09-04  Martin Baulig  <martin@ximian.com>
24829
24830         * Makefile.am (INCLUDES): Added $(LIBGC_CFLAGS).
24831
24832 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
24833
24834         * TODO: Some new optimization ideas.
24835
24836         * aot.c: Move AOT module loading logic here from mono_assembly_open.
24837
24838         * aot.c: Save the optimization flags used to compile the code into
24839         the AOT module.
24840
24841         * mini.h mini-x86.c mini.c aot.c: Added new types of relocations to
24842         support emitting domain specific code.
24843         
24844         * mini.h mini.c aot.c: Modified the JIT so the generated AOT code is 
24845         no longer domain neutral. It can be made domain neutral by compiling 
24846         with --optimize=shared.
24847
24848         * aot.c (mono_aot_get_method_inner): Allow sharing of AOT methods
24849         between appdomains.
24850
24851         * driver.c mini.h mini.c: New --no-aot debugging option which disables
24852         loading of AOT code.
24853
24854         * inssel-x86.brg: Added missing AOTCONST -> OUTARG_VT rule.
24855         
24856         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling method
24857         if there is no domain neutrality information.
24858
24859 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
24860
24861         * aot.c (mono_compile_assembly): Emit a symbol containing the file 
24862         format version into the generated library.
24863
24864         * mini-x86.c (mono_arch_patch_code): Do not emit the address of the
24865         callee method into the caller since one of them could be shared.
24866
24867         * mini.h mini-x86.c aot.c: Added two new relocations so throwing
24868         system exceptions from AOT code now works.
24869
24870         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling 
24871         method if it is domain neutral and the callee is not.
24872
24873         * graph.c (cfg_emit_one_loop_level): Fix warning.
24874
24875 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
24876
24877         * aot.c (mono_compile_assembly): Oops. Remove debugging cruft from
24878         last checkin.
24879
24880 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
24881
24882         * mini.c (mini_init): Call mono_marshal_init () explicitly since it
24883         is needed  by code which is executed before mono_runtime_init ().
24884         Thanks to Bernie Solomon (bernard@ugsolutions.com) for noticing this.
24885         
24886         * mini.c (mono_thread_abort): Fix warning.
24887         (mono_jit_compile_method): Call static constructor in the AOT case too.
24888
24889         * aot.c (mono_compile_assembly): Fix warning.
24890
24891 2003-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24892
24893         * mini.c: register a SIGINT handler if MONO_DEBUG is defined.
24894
24895 2003-08-28  Zoltan Varga  <vargaz@freemail.hu>
24896
24897         * inssel.brg (OP_UNBOXCAST): Add support for the AOT case.
24898
24899         * cpu-pentium.md: Fix the length of call opcodes so they include the
24900         ESP restoring instruction. Fixes #47968.
24901
24902 2003-08-28  Martin Baulig  <martin@ximian.com>
24903
24904         * mini-x86.c (mono_arch_call_opcode): Added support for
24905         MONO_TYPE_GENERICINST.
24906
24907         * mini.c (check_call_signature): Added support for MONO_TYPE_GENERICINST.       
24908
24909 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
24910
24911         * Makefile.am (BUILT_SOURCES): Fix compilation on platforms without
24912         a JIT. Patch by Bernie Solomon (bernard@ugsolutions.com).
24913
24914         * mini.c jit-icalls.c tramp-x86.c tramp-ppc.c tramp-sparc.c: Get rid of
24915         metadata_section.
24916
24917 2003-08-26  Martin Baulig  <martin@ximian.com>
24918
24919         * mini.c (get_basic_blocks): Added `unsigned char **pos' argument;
24920         when reporting an error, set this to the actual error location.
24921         (mono_method_to_ir): Report the correct error location if
24922         get_basic_blocks() returned an error.
24923
24924 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
24925
24926         * mini.c (mono_type_blittable): OBJECT is not blittable.
24927         (mono_method_blittable): Methods which have marshalling descriptors
24928         are not blittable either. Fixes #47842.
24929
24930 2003-08-22  Zoltan Varga  <vargaz@freemail.hu>
24931
24932         * driver.c mini.c: Use an environment variable instead of a global 
24933         variable. Also fix the build.
24934
24935         * mini.c (mini_init): Call g_thread_init () to make glib thread-safe. 
24936         Fixes #47682. Thanks to Laurent Morichetti (l_m@pacbell.net) for 
24937         reporting this. 
24938
24939         * driver.c mini.c: Added --with-valgrind option to turn off some
24940         code which prevents mono from running under valgrind.
24941
24942         * mini.c (mono_emit_call_args): Fixed warning.
24943
24944         * mini.c (mono_emulate_opcode): Fixed warning.
24945
24946 Thu Aug 21 19:10:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
24947
24948         * inssel.brg: 64bit fixes from Laurent Morichetti <l_m@pacbell.net>.
24949         * linear-scan.c, mini-ppc.h, mini-sparc.h, mini-x86.h, mini.h,
24950         regalloc.c, regalloc.h: specify available registers in arch-specific
24951         code and support floats in the regallocator (patch by Laurent Morichetti 
24952         <l_m@pacbell.net>)
24953
24954 Wed Aug 20 19:02:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
24955
24956         * mini.c: mono_thread_current() can be called only after
24957         mono_runtime_init(): rearrange code to not call it early on.
24958
24959 Wed Aug 20 13:14:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
24960
24961         * mini.c: allocate jump tables in the code mempools.
24962
24963 Wed Aug 20 13:04:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
24964
24965         * mini.c, mini.h: make sure per-thread data allocated by the jit is
24966         freed.
24967
24968 2003-08-10  Miguel de Icaza  <miguel@ximian.com>
24969
24970         * cpu-pentium.md (ldtoken): Change the length for mul.ovf.un from
24971         12 to 16.  This fixes bug #47453.
24972
24973
24974 Thu Aug 7 15:59:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
24975
24976         * mini-ppc.c: fixed indexed load and unsigned compares.
24977
24978 2003-08-06  Lluis Sanchez Gual  <lluis@ximian.com>
24979
24980         * mini.c: reenabled installation of handler for
24981           thread abort signal.
24982
24983 Tue Aug 5 12:21:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
24984
24985         * cprop.c, mini-x86.c, cpu-pentium.md: fix buglets spotted
24986         by Laurent Morichetti <l_m@pacbell.net>. Disabled local cprop
24987         until it's fixed and actually useful.
24988
24989 Mon Aug 4 12:12:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
24990
24991         * inssel-long32.brg: couple more opcodes implemented.
24992
24993 Thu Jul 31 22:43:02 EDT 2003 Mark Crichton <crichton@gimp.org>
24994         
24995         * mini-sparc.c: Even more opcodes implemeted.
24996
24997 Thu Jul 31 19:36:03 EDT 2003 Mark Crichton <crichton@gimp.org>
24998
24999         * mini-sparc.c: More opcodes implemented.
25000
25001 Thu Jul 31 15:16:26 EDT 2003 Mark Crichton <crichton@gimp.org>
25002
25003         * mini-sparc.c: More opcodes implemented.
25004
25005 Wed Jul 30 22:31:02 EDT 2003 Mark Crichton <crichton@gimp.org>
25006
25007         * inssel-sparc.brg: Add some needed rules.  Direct
25008         copy from PPC.
25009         * Makefile.am: Use inssel-sparc.brg
25010         * exceptions-sparc.c: 0xdeadbeef/0xdecafbad to keep
25011         an assert happy for now.
25012
25013 Wed Jul 30 20:44:07 EDT 2003 Mark Crichton <crichton@gimp.org>
25014
25015         * mini-sparc.c: Fixed compile errors.
25016         * exceptions-sparc.c: Same.  We now produce a mono binary 
25017         on sparc-linux.  Yea.
25018
25019 Wed Jul 30 14:10:12 EDT 2003 Mark Crichton <crichton@gimp.org>
25020
25021         * mini-sparc.c: Renamed registers.  Also some macro cleanups.
25022         * exceptions-sparc.c, tramp-sparc.c: Various compile fixes.
25023         They compile, but do not work.
25024
25025 Wed Jul 30 17:52:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25026
25027         * Makefile.am, cpu-sparc.md, exceptions-sparc.c, mini-sparc.c,
25028         mini-sparc.h, tramp-sparc.c: Beginning of sparc support
25029         from Mark Crichton <crichton@gimp.org> and Christopher Taylor
25030         (ct@gentoo.org).
25031
25032 Tue Jul 29 12:43:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25033
25034         * mini.c: more opcodes implemented and better support for generics.
25035
25036 Fri Jul 25 18:51:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
25037
25038         * cpu-g4.md, cpu-pentium.md: updates for new instructions.
25039         * mini.c, mini.h: first cut at generics support: some new instructions 
25040         added and changed the behaviour of some of the existing ones.
25041
25042 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
25043
25044         * mini.c: Removed definition of metadata_shared mutex here.
25045
25046 Tue Jul 22 15:21:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
25047
25048         * mini-x86.c: make vararg calls work for instance methods.
25049
25050 Fri Jul 18 19:26:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
25051
25052         * mini.c, mini.h, mini-x86.c, mini-ppc.c: mono_arch_call_opcode()
25053         returns the arguments in a separte list, now.
25054
25055 Fri Jul 18 13:16:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
25056
25057         * aot.c, mini.c: updates for array type representation changes.
25058
25059 Fri Jul 18 11:28:28 CEST 2003 Paolo Molaro <lupus@ximian.com>
25060
25061         * mini.c: register function to perform jit shutdown.
25062
25063 Thu Jul 17 16:02:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25064
25065         * mini.c: use a faster allocator if possible.
25066
25067 Thu Jul 17 16:00:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
25068
25069         * aot.c: some cleanups and portability changes.
25070
25071 Wed Jul 2 11:08:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
25072
25073         * mini.c: use faster allocation for CEE_BOX if possible.
25074
25075 Mon Jun 30 19:16:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
25076
25077         * mini.c, mini-ops.h, inssel.brg, mini-x86.c: optimized access to fields.
25078         Moved inlined mempcy code to its own function so that is can be
25079         reused. Added an inline memset function as well (optimized initobj).
25080         * cpu-pentium.md, inssel-x86.brg: add and use lea_membase.
25081
25082 Fri Jun 27 11:19:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
25083
25084         * mini.c, mini-ops.h, inssel.brg: optimized a couple of Array methods.
25085
25086 Wed Jun 25 13:19:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
25087
25088         * mini.c, mini.h, mini.x86.c, mini-ppc.c: added facility so that
25089         arch code can setup the cpu for CLR execution, if needed.
25090         We use it on x86 to set the precision of FP operations.
25091
25092 Tue Jun 17 19:02:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
25093
25094         * mini.c: disable some optimizations if we can guess they'll cost too
25095         much for a given method.
25096
25097 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
25098
25099         * mini.h mini.c: Rework last patch based on suggestions by Paolo.
25100         
25101 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
25102         * mini.h mini.c mini-x86.c: Added instruction level coverage 
25103         info collection support.
25104
25105 Mon Jun 16 18:13:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
25106
25107         * driver.c, mini-ppc.c, mini-x86.c, mini.c, mini.h: the coverage stuff
25108         is now implemented in the profiling API. Get rid of a couple of
25109         unnecessary global variables.
25110
25111 2003-06-15  Nick Drochak <ndrochak@gol.com>
25112
25113         * basic-long.cs: tests for negative values for bigmul, and unsigned.
25114         * cpu-g4.md: add op_bigmul and op_bigmul_un
25115         * cpu_pentium.md: add op_bigmul_un
25116         * inssel-long32.brg: add rule for unsigned bigmul
25117         * mini-ops.h: define OP_BIGMUL_UN
25118         * mini-x86.c: THE BUG: handle (un)signed properly
25119         * mini.c: choose unsigned opcode if needed.
25120         This set of patches fixes bug #44291
25121
25122 2003-06-13  Dietmar Maurer  <dietmar@ximian.com>
25123
25124         * mini.c (optimize_branches): improved to handle all kinds of
25125         conditional branches.
25126
25127 Wed Jun 11 18:01:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
25128
25129         * mini.c, mini.h, jit-icalls.c: speedup emulation of opcodes that
25130         don't raise exceptions.
25131
25132 Tue Jun 10 19:00:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
25133
25134         * tramp-x86.c, tramp-ppc.c, debug-mini.c: move arch-specific code
25135         to arch-specific files.
25136
25137 2003-06-09  Martin Baulig  <martin@ximian.com>
25138
25139         * Makefile.am (libs): Added $(LIBGC_LIBS).
25140
25141 Mon Jun 9 20:21:47 CEST 2003 Paolo Molaro <lupus@ximian.com>
25142
25143         * cpu-pentium.md, mini-x86.c: fix (well, actually implement) OP_TAN
25144         and OP_ATAN (fixes bug#44293).
25145
25146 Mon Jun 9 19:00:56 CEST 2003 Paolo Molaro <lupus@ximian.com>
25147
25148         * Makefile.am, mini-x86.c: rename cpu description array to
25149         pentium_desc, since some compilers define the 'pentium' preprocessor
25150         symbol.
25151
25152 2003-05-28  Dietmar Maurer  <dietmar@ximian.com>
25153
25154         * mini.c (mini_select_instructions): add explicit branch if the
25155         following block is not the false target of a conditional branch -
25156         we need this with any optimization that reorder or remove bblocks
25157
25158         * mini.c (optimize_branches): bug fixes
25159
25160 2003-06-06  Dietmar Maurer  <dietmar@ximian.com>
25161
25162         * mini.c (mono_method_to_ir): inline static readonly fields
25163
25164         * ssa.c (fold_tree): start cfold support for long (very simple
25165         cases only)
25166
25167         * cfold.c (mono_constant_fold_inst): opt. CEE_CONV_I8 (OP_ICONST)
25168
25169 Fri Jun 6 11:41:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
25170
25171         * inssel.brg: fixed memcpy (bug #44219).
25172
25173 2003-06-05  Dick Porter  <dick@ximian.com>
25174
25175         * driver.c: Set the glib log levels to not abort if g_message
25176         recurses.
25177
25178         g_set_prgname() has to happen before mini_init() so that the
25179         process handle gets the info.
25180         
25181 Thu Jun 5 20:11:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
25182
25183         * driver.c: add intrins to the default optimizations to get wider
25184         exposure.
25185
25186 Wed Jun 4 19:47:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
25187
25188         * mini.h: some large basic blocks will overflow a 16-bit
25189         integers for symbolic registers.
25190
25191 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
25192
25193         * mini-x86.c (mono_arch_output_basic_block): revert previous fprem changes.
25194         (mono_arch_output_basic_block): fix bug 43499 
25195
25196 Wed Jun 4 13:13:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
25197
25198         * mini.c: kill duplicated definition of mono_debug_format.
25199
25200 Wed Jun 4 13:09:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
25201
25202         * mini-x86.c, arrays.cs: fixed register allocation bug.
25203
25204 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
25205
25206         * mini-x86.c (mono_arch_output_basic_block): use IEEE compatible fprem1
25207
25208         * mini.c (mini_get_opcode_for_method): inline IEEERemainder
25209
25210 2003-06-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25211
25212         * mini.c:
25213         (print_method_from_ip): also print source location information if
25214         available.
25215
25216 2003-06-02  Dietmar Maurer  <dietmar@ximian.com>
25217
25218         * mini.c (mono_find_block_region): bug fix in region code
25219         (mini_method_compile): enable removing unreachable code again, but
25220         only in methods without exception clauses.
25221
25222 Fri May 30 18:40:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
25223
25224         * mini.c, mini-ops.h, cpu-pentium.md, inssel.brg, mini-x86.c, mini.h:
25225         Implemented arglist opcode and handling of TypedReference type.
25226         Fixed x86 call convention when a structure is returned.
25227         Minimal support for calling static vararg methods.
25228
25229 2003-05-30  Dietmar Maurer  <dietmar@ximian.com>
25230
25231         * mini.c (mini_method_compile):  always remove unreachable code,
25232         because the code in them may be inconsistent  (access to dead
25233         variables for example).
25234
25235 Thu May 29 11:44:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
25236
25237         * driver.c, debug-mini.c: warning fixes.
25238
25239 Wed May 28 11:19:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
25240
25241         * Makefile.am, jit.h, mini.h: install header for embedding mono.
25242
25243 Tue May 27 17:56:12 CEST 2003 Paolo Molaro <lupus@ximian.com>
25244
25245         * mini.c: thread-static fields are registered in mono_class_vtable(),
25246         so ensure the function is called before checking for them.
25247
25248 2003-05-27  Dietmar Maurer  <dietmar@ximian.com>
25249
25250         * mini.c (optimize_branches): fix for bug 43586
25251
25252         * jit-icalls.c (mono_llmult_ovf): added an additional check for
25253         overflow (fixes Bug #43639)
25254
25255 Tue May 27 11:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25256
25257         * mini.c, objects.cs: allow the use of stobj for primitive types.
25258
25259 Tue May 27 10:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25260
25261         * mini.c: be less strict about argument checking until we support
25262         running the verifier.
25263
25264 2003-05-27  Nick Drochak <ndrochak@gol.com>
25265
25266         * basic-long.cs: tests for (ulong)int * (ulong)int also
25267         * mini.c: use the same trick for (ulong)int * (ulong)int
25268
25269 2003-05-27  Nick Drochak <ndrochak@gol.com>
25270
25271         * basic-long.cs: add regression test for (long)int * (long)int
25272         * cpu-pentium.md: add op_bigmul specification
25273         * inssel-long32.brg: add OP_BIGMUL rule
25274         * mini-ops.h: add OP_BIGMUL
25275         * mini-x86.c: register allocator: handle case where src1 needs to be
25276         in EAX.
25277         * mini.c: substitute special BIGMUL opcode in the tree for 
25278         (long)int * (long)int
25279
25280 Mon May 26 20:20:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
25281
25282         * jit-icalls.c: call the type ctor on field access if needed.
25283
25284 Mon May 26 15:21:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
25285
25286         * mini-ops.h, mini.c, inssel.brg, exceptions.cs: validate arguments passed
25287         to a method (including results of ldelema, bug#43207).
25288
25289 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
25290
25291         * graph.c (cfg_emit_one_loop_level): loop over all blocks. use
25292         colors to show exception handler blocks.
25293
25294         * inssel-x86.brg (OP_OUTARG_VT): dont push zero sized structures
25295         (fix for pinvoke7.cs).
25296
25297 Mon May 26 12:11:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25298
25299         * mini.h, mini.c: ensure correct initialization order for types that
25300         require it. Prepare for lazy compilation of jit icall wrappers.
25301         Provide a name for opcode emulation to reduce unneeded mallocing.
25302
25303 Fri May 23 16:08:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
25304
25305         * mini-x86.c: better register restoring code and profiling
25306         support for tail calls.
25307
25308 Fri May 23 15:30:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
25309
25310         * mini.h, driver.c: prepare for leaf methods optimization.
25311
25312 Fri May 23 15:28:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
25313
25314         * mini.c: get targets of branches before converting a method.
25315
25316 2003-05-23  Dietmar Maurer  <dietmar@ximian.com>
25317
25318         * mini.c (optimize_branches): added some experimental code (disbaled) 
25319
25320 2003-05-22  Dietmar Maurer  <dietmar@ximian.com>
25321
25322         * mini.c (optimize_branches): fix branch to branch optimization 
25323
25324         * exceptions-x86.c (mono_arch_handle_exception): bug fix.
25325
25326         * mini-x86.c (mono_arch_output_basic_block): cleanup up exception code
25327
25328         * inssel-x86.brg: added OP_START_HANDLER, CEE_ENDFINALLY, OP_ENDFILTER
25329
25330         * mini-x86.c (mono_arch_allocate_vars): only reserve space for lmf
25331         if needed.
25332
25333 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
25334
25335         * mini.c (mono_method_to_ir): call handle_loaded_temps before inlining.
25336         enable use of interface variables again.
25337
25338         * mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate
25339         I1 to registers because there is no simply way to sign extend 8bit
25340         quantities in caller saved registers on x86.
25341
25342         * inssel-float.brg: set costs of some rules to 2 so
25343         that monobure always select the arch. specific ones if supplied,
25344         regardless of the order we pass the files to monoburg.
25345
25346 Tue May 20 17:19:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
25347
25348         * mini.c, mini-x86.c: since the magic trampoline for jumps
25349         can't patch the code directly, we do it as soon as the
25350         method gets compiled.
25351
25352 Tue May 20 16:02:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
25353
25354         * mini-x86.c, mini.h: introduce a new patching method
25355         to support CEE_JMP and tail calls.
25356         * mini.c: obey tail.call. Don't precompile methods target
25357         of CEE_JMP.
25358         * tramp-x86.c: new trampoline code to handle methods
25359         reached through a jump.
25360
25361 2003-05-20  Dietmar Maurer  <dietmar@ximian.com>
25362
25363         * mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16
25364         bit values to registers
25365
25366 2003-05-19  Dietmar Maurer  <dietmar@ximian.com>
25367
25368         * mini.c (mono_compile_get_interface_var): share interface
25369         variables if possible.
25370
25371 2003-05-16  Martin Baulig  <martin@ximian.com>
25372
25373         * debug-mini.c (mono_init_debugger): New function to initialize
25374         the debugger.  This is not in the debugger since it needs to
25375         access some of mini's internals.
25376
25377 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
25378
25379         * mini.c (mono_method_to_ir): inlining fixes/cleanups
25380
25381 Fri May 16 13:27:23 CEST 2003 Paolo Molaro <lupus@ximian.com>
25382
25383         * mini.c, mini-opts.h, inssel.brg: inline small memcpy
25384         for value type handling.
25385
25386 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
25387
25388         * mini.c (mono_method_to_ir): inline LDFLD/STFLD wrappers
25389         (mono_method_check_inlining): enable inlining of all kinds of wrappers
25390
25391 2003-05-15  Lluis Sanchez Gual  <lluis@ideary.com>
25392
25393         * mini.c: fixed little bug in CEE_NEWOBJ case when calling
25394           the constructor through a proxy.
25395
25396 Thu May 15 17:17:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
25397
25398         * jit-icalls.c, inssel.brg: fixes to array element address
25399         calculations.
25400
25401 2003-05-15  Dietmar Maurer  <dietmar@ximian.com>
25402
25403         * mini-x86.c (is_regsize_var): allocate pointer to registers
25404
25405 Thu May 15 13:04:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
25406
25407         * driver.c: fixed typo, added intrins to the set of optimizations
25408         tested with regressions.
25409
25410 Thu May 15 11:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
25411
25412         * mini-ops.h, mini.c, inssel.brg: optimize access to 2D arrays.
25413         * jit-icalls.c, exceptions.cs: fixed index out of range checks, added
25414         test case.
25415
25416 2003-05-14  Dietmar Maurer  <dietmar@ximian.com>
25417
25418         * inssel.brg: remove some common pop instructions without side effects
25419
25420 Wed May 14 12:40:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
25421
25422         * inssel-x86.brg: fixed thinko in int to double conversions.
25423
25424 Wed May 14 12:01:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
25425
25426         * mini.c, jit-icalls.c: added runtime thread-static variable support.
25427
25428 Tue May 13 22:02:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
25429
25430         * inssel-long32.brg: two more missing instructions.
25431
25432 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
25433
25434         * mini.c (mono_emit_call_args): set the cil_code for all arguments
25435         if not already set.
25436
25437 2003-05-12  Zoltan Varga  <vargaz@freemail.hu>
25438
25439         * mini-x86.c (mono_arch_output_basic_block): Handle negative zero
25440         correctly.
25441
25442         * basic-float.cs: Added tests for negative zero.
25443
25444 Sun May 11 14:56:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
25445
25446         * inssel-long32.brg, basic-long.cs, exceptions.cs: handle
25447         a couple of missing operations for long casts, with test cases.
25448
25449 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25450
25451         * exceptions-x86.c: fixed small leaks in mono_arch_handle_exception.
25452
25453 2003-05-09  Dietmar Maurer  <dietmar@ximian.com>
25454
25455         * mini-x86.c (mono_arch_emit_prolog): avoid reallocs with better
25456         code size estimation.
25457
25458 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
25459
25460         * mini.c (mono_jit_create_remoting_trampoline): make it work with
25461         abstract methods (fix bug 42542)
25462
25463         * aot.c: add ability to handle array types
25464         
25465 2003-05-08  Zoltan Varga  <vargaz@freemail.hu>
25466
25467         * mini.c: Call the _specific versions of the object allocation
25468         functions if possible.
25469
25470 Tue May 6 17:18:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
25471
25472         * driver.c: call setlocale ().
25473
25474 Tue May 6 14:38:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
25475
25476         * mini.h, mini.c, aot.c, debug-mini.c, exceptions.c: build fixes for
25477         windows build.
25478
25479 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
25480
25481         * mini.c (optimize_branches): dont touch code inside exception clauses (fix bug 38136)
25482
25483         * exceptions-x86.c (ves_icall_get_frame_info): also skip remoting
25484         wrappers (fix bug 42122)
25485
25486 2003-05-04  Martin Baulig  <martin@ximian.com>
25487
25488         * mini.h (mono_jit_init, mono_jit_cleanup): Added prototypes.
25489
25490         * driver.c: s/MONO_OPT_SAHRED/MONO_OPT_SHARED/g.
25491         s/mini_set_defaults/mono_set_defaults/g.
25492
25493 2003-05-04  Martin Baulig  <martin@ximian.com>
25494
25495         * driver.c: s/mini_parse_default_optimizations/mono_parse_default_optimizations/g.
25496
25497 Sun May 4 11:48:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25498
25499         * inssel-long32.brg: add missing lreg: OP_LCONV_TO_U8 (lreg) rule
25500         (reported by Don Roberts).
25501
25502 Fri May 2 18:36:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
25503
25504         * mini.c: temporarily work around two bugs for this release.
25505
25506 Fri May 2 17:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
25507
25508         * Makefile.am: avoid linking libmono with GMODULE_LIBS, because
25509         that contains -export-dynamic and it makes using the ld script
25510         useless.
25511         * mini.h, main.c, driver.c: s/mini_main/mono_main/g.
25512
25513 Fri May 2 12:52:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
25514
25515         * mini.h, mini-x86.c, driver.c: disable optimizations not available on a
25516         specific cpu.
25517
25518 Thu May 1 15:28:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
25519
25520         * mini.c: make sure leave calls all the needed finally blocks,
25521         even when the target jumps out of multiple exception clauses.
25522
25523 Thu May 1 15:18:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
25524
25525         * ldscript, Makefile.am: add linker script to reduce the number of
25526         exported symbols (should also fix the issues with libwine defining
25527         some of the same symbols in io-layer).
25528
25529 2003-05-01  Zoltan Varga  <vargaz@freemail.hu>
25530
25531         * driver.c (mini_main): Avoid assertion when no file name is given on 
25532         the command line.
25533
25534 Wed Apr 30 15:33:11 CEST 2003 Paolo Molaro <lupus@ximian.com>
25535
25536         * driver.c: added --version/-V command line option.
25537         Added the inline optimization in the regression tests.
25538
25539 Wed Apr 30 15:16:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
25540
25541         * mini.c, basic-calls.cs: when inlining, save arguments to locals according 
25542         to the type in the method signature (fixes bug#42134).
25543
25544 Wed Apr 30 12:38:44 CEST 2003 Paolo Molaro <lupus@ximian.com>
25545
25546         * mini.c: when inlining, check this is not null only when needed (bug #42135).
25547
25548 Wed Apr 30 11:44:36 CEST 2003 Paolo Molaro <lupus@ximian.com>
25549
25550         * mini-ppc.h, tramp-pcc.c: type fixes from Max Horn <max@quendi.de>.
25551
25552 2003-04-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25553
25554         * driver.c: fixed bug #42100.
25555
25556 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
25557
25558         * mini.c (mono_method_to_ir): UNBOX need to CAST objects first
25559
25560 Mon Apr 28 17:03:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
25561
25562         * mini.c: moved most of the code required to do inlining to its own
25563         function so it can be reused. Inline also ctors if appropriate.
25564
25565 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
25566
25567         * Makefile.am: Link with -export-dynamic so shared libs loaded by
25568         the runtime can call mono API functions.
25569
25570 2003-04-27  Martin Baulig  <martin@ximian.com>
25571
25572         * debug-mini.c (mono_debug_init_method): Added
25573         `guint32 breakpoint_id' argument; if the method has a breakpoint,
25574         send a notification to the debugger.
25575
25576         * mini.c (mono_method_to_ir): Don't insert a breakpoint if we're
25577         running in the Mono Debugger, just pass the breakpoint number to
25578         mono_debug_init_method().
25579
25580         * tramp-x86.c, tramp-ppc.c: Removed the breakpoint trampolines.
25581
25582 Sun Apr 27 13:18:04 CEST 2003 Paolo Molaro <lupus@ximian.com>
25583
25584         * mini.c: allow some more unsafe compares.
25585
25586 Sat Apr 26 11:55:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25587
25588         * mini-x86.c, Makefile.am: make distcheck works (partially from
25589         a patch by Richard Lee <r.h.lee@attbi.com>).
25590         * regset.c, regset.h: removed, they are unused.
25591
25592 2003-04-25  Dick Porter  <dick@ximian.com>
25593
25594         * driver.c: Usage reports the name as 'mono' not 'mini'
25595         * exceptions-x86.c: Build and run on freebsd
25596
25597 Thu Apr 24 17:09:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
25598
25599         * Makefile.am: install the program with the 'mono' name and
25600         the library as libmono instead of mini and libmini.
25601
25602 Thu Apr 24 17:08:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
25603
25604         * driver.c: provide the APIs for the embedding interface of the old jit.
25605
25606 2003-04-23  Dietmar Maurer  <dietmar@ximian.com>
25607
25608         * jit-icalls.c (helper_stelem_ref): impl. (fix bug 41775)
25609
25610 2003-04-23  Martin Baulig  <martin@ximian.com>
25611
25612         * tramp-x86.c, tramp-ppc.c: Reenable the debugger breakpoint interface.
25613
25614         * driver.c: Added `--debug' command line argument to enable
25615         debugging support.
25616
25617 2003-04-23  Martin Baulig  <martin@ximian.com>
25618
25619         * debug.[ch]: Removed.  The code is now in
25620         ../metadata/mono-debug.[ch] and mono-debug-debugger.[ch].
25621
25622         * debug-stabs.c, debug-dwarf2.c: Removed; nobody used this for the
25623         last six months.
25624
25625 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
25626
25627         * mini.c (mono_method_to_ir): set the cil_code address (fix bug 41525)
25628
25629 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25630
25631         * mini.c:
25632         (mini_cleanup): moved mono_runtime_cleanup call after the call to
25633         mono_domain_finalize.
25634         (mini_method_compile): use mono_method_profile* if the the option is
25635         enabled.
25636
25637 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
25638
25639         * tramp-x86.c (mono_arch_create_jit_trampoline): Subsitute synchronized
25640         methods with their wrapper.
25641
25642         * tramp-ppc.c (mono_arch_create_jit_trampoline): Subsitute synchronized
25643         methods with their wrapper.
25644
25645         * jit-icalls.c (mono_ldvirtfn): Subsitute synchronized methods with
25646         their wrapper.
25647
25648         * mini.c (mono_method_to_ir): Subsitute synchronized methods with their
25649         wrapper.
25650
25651         * mini.c (mono_method_check_inlining): Avoid inlining synchronized
25652         methods.
25653
25654 2003-04-17  Dietmar Maurer  <dietmar@ximian.com>
25655
25656         * exceptions-x86.c (mono_arch_handle_exception): fix for bug 36252
25657
25658 2003-04-16  Dietmar Maurer  <dietmar@ximian.com>
25659
25660         * mini.c (mono_compile_create_var): use g_malloc/g_realloc instead
25661         of the mempool. This is slightly faster and uses less memory
25662
25663 Wed Apr 16 12:53:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
25664
25665         * mini.c: avoid O(n) allocation for variables.
25666
25667 Tue Apr 15 19:13:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25668
25669         * mini.c: handle items on the stack after inlining methods.
25670
25671 Tue Apr 15 14:17:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
25672
25673         * mini.c: make the method->opcode optimization dependent
25674         on MONO_OPT_INSTRINS and do it lazily.
25675
25676 Tue Apr 15 14:15:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
25677
25678         * driver.c: print overall results at the end of regression run.
25679
25680 Tue Apr 15 11:18:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
25681
25682         * inssel.brg: don't overwrite symbolic registers.
25683
25684 Mon Apr 14 17:41:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
25685
25686         * inssel-x86.brg: fix conversion from long to float.
25687
25688 2003-04-11  Dietmar Maurer  <dietmar@ximian.com>
25689
25690         * mini.c (mini_init): use an opcode for get_Chars (OP_GETCHR)
25691
25692 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
25693
25694         * mini.c (mono_type_blittable): MONO_TYPE_OBJECT is blittable.
25695
25696         * driver.c: Added --print-vtable option as in the old JIT.
25697
25698 Thu Apr 10 17:43:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
25699
25700         * inssel-long32.brg, exceptions.cs: fix conversions from long, too.
25701
25702 Thu Apr 10 16:27:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
25703
25704         * inssel.brg, basic.cs: fixed checked conversions to byte and short.
25705
25706 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
25707
25708         * mini.c regalloc.c regalloc.h: Fix memory leak.
25709
25710 2003-04-09  Dietmar Maurer  <dietmar@ximian.com>
25711
25712         * aot.c (mono_aot_get_method): register all used strings
25713
25714 Wed Apr 9 15:22:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
25715
25716         * mini.c: always intern strings references with ldstr at compile time.
25717
25718 Tue Apr 8 11:41:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
25719
25720         * Makefile.am: add BUILT_SOURCES.
25721
25722 Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
25723
25724         * driver.c: give a better error message when the assembly to execute
25725         doesn't have an entry point.
25726
25727 2003-04-07  Dietmar Maurer  <dietmar@ximian.com>
25728
25729         * Makefile.am: added hack for automake
25730
25731         * mono/mini/mini.c (mono_save_args): always copy arguments to keep
25732         correct sematics.
25733
25734         * mono/mini/ssa.c (mono_ssa_avoid_copies): don't optimize calls
25735
25736 22003-04-07  Martin Baulig  <martin@ximian.com>
25737
25738         * Makefile.am: Added Makefile.am.
25739
25740         * debugger-main.c: Removed, this is now in the debugger where it
25741         belongs.
25742
25743         * mini.pc.in: Call this package `mini' for the moment.
25744
25745
25746
25747
25748
25749
25750
25751
25752
25753
25754
25755
25756
25757
25758